diff --git a/Documentation/sources/Guide/ofxExample1_Basics.rst b/Documentation/sources/Guide/ofxExample1_Basics.rst index 1b5728e1..622f5fea 100644 --- a/Documentation/sources/Guide/ofxExample1_Basics.rst +++ b/Documentation/sources/Guide/ofxExample1_Basics.rst @@ -6,7 +6,7 @@ with a host application, and goes into the fundamentals of the API. An example plugin will be used to illustrate how all the machinery works, and its source can be found in the C++ file -`there `__. +`there `__. This plugin is a *no-op* image effect and does absolutely nothing to images, it is there purely to show you the basics of how a host and plugin work together. I’ll embed @@ -84,7 +84,7 @@ wants to keep them. From our example, we have the following… -`basics.cpp `__ +`basics.cpp `__ .. code:: c++ @@ -135,7 +135,7 @@ identify the plugin, what it does, and what version it is. These are: Our example plugin’s ``OfxPlugin`` struct looks like… -`basics.cpp `__ +`basics.cpp `__ .. code:: c++ @@ -221,7 +221,7 @@ called, but notice what it does… .. _LoadActionExample: -`basics.cpp `__ +`basics.cpp `__ .. code:: c++ @@ -281,7 +281,7 @@ Properties can be of the following fundamental types… So for in our example we have…. -`basics.cpp `__ +`basics.cpp `__ .. code:: c++ @@ -353,7 +353,7 @@ well defined default for that action. So looking at our example we can see its main entry point: -`basics.cpp `__ +`basics.cpp `__ .. code:: c++ @@ -469,7 +469,7 @@ describe itself. This is done with the :c:macro:`kOfxActionDescribe` action. Fro our example plugin, here is the function called by our main entry point in response to the describe action. -`basics.cpp `__ +`basics.cpp `__ .. code:: c++ @@ -535,7 +535,7 @@ in context action… them to show up in the same plugin group [4]_ in the user interface. -`basics.cpp `__ +`basics.cpp `__ .. code:: c++ @@ -623,7 +623,7 @@ typically a hook to deeper plugin side data structures. that wants to write to the instance data after instance creation do so in a safe manner (e.g. by semaphore lock). -`basics.cpp `__ +`basics.cpp `__ .. code:: c++ @@ -683,7 +683,7 @@ to its inputs, for example a blur effect with the blur size of zero. In such a case the host can simply ignore the plugin and use its source images directly. And here is the code that does that: -`basics.cpp `__ +`basics.cpp `__ .. code:: c++ diff --git a/Documentation/sources/Guide/ofxExample2_Invert.rst b/Documentation/sources/Guide/ofxExample2_Invert.rst index 7467d4d1..2e238174 100644 --- a/Documentation/sources/Guide/ofxExample2_Invert.rst +++ b/Documentation/sources/Guide/ofxExample2_Invert.rst @@ -4,7 +4,7 @@ This guide will take you through the fundamentals of processing images in OFX. An example plugin will be used to illustrate how it all works and its source can be found in the C++ file -`invert.cpp `_. +`invert.cpp `_. This plugin takes an image and inverts it (or rather calculates the complement of each component). Ideally you should have read the guide to the :ref:`basic machinery of an OFX @@ -21,7 +21,7 @@ total [1]_ and set very few switches. From the source, here is the main entry routine that traps those actions... -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -70,7 +70,7 @@ Describing Our Plugin We have the standard two step description process for this plugin. -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -172,7 +172,7 @@ output image. If not set, it is up to the plugin to launch the appropriate number of threads and divide the processing appropriately across them. -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -361,7 +361,7 @@ address of a pixel in the image? Well you use the following information: The code snippet below shows you how to use all that to find the address of a pixel whose coordinates are on the image plane. -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -430,7 +430,7 @@ hosts and plugins. Anyway, here is code from our example using the property mechanism to get the required data from an image… -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -483,7 +483,7 @@ As stated above, the render action is the one used to get a plugin to actually process images. I’ll go through it in stages rather than have one big listing. -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -528,7 +528,7 @@ render window to fill in of the larger output image. that the plugin does not rely on any implicit state, such as time, everything is explicit. -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -543,7 +543,7 @@ render window to fill in of the larger output image. This next snippet fetches two clip handles by name from the instance, using the image effect suite. [2]_ -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -571,7 +571,7 @@ We will be given back two property set handles which represent our images. If the call failed (which could be for a variety of good reasons) we give up with a ``throw``. -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -602,7 +602,7 @@ and output images will always have the same number of components and the same data types. Which is why we aren’t checking for the source for its pixel information. -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -630,7 +630,7 @@ correctly instantiate our templated function which will do the grunt work of iterating over pixels. Note also that it is passing the nominal maximum value of the data type as a template argument. -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -676,7 +676,7 @@ status. Now for our pixel pushing code. [3]_ -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ @@ -721,7 +721,7 @@ The first thing it does is to pull out the bounds, rowbytes and destination pointer of our two images. We can now iterate over the render window and set pixels in the output image. -`invert.cpp `__ +`invert.cpp `__ .. code:: c++ diff --git a/Documentation/sources/Guide/ofxExample3_Gain.rst b/Documentation/sources/Guide/ofxExample3_Gain.rst index ffaeebc1..88ed3608 100644 --- a/Documentation/sources/Guide/ofxExample3_Gain.rst +++ b/Documentation/sources/Guide/ofxExample3_Gain.rst @@ -4,7 +4,7 @@ This guide will take you through the basics of creating and using parameters in OFX. An example plugin will be used to illustrate how it all works and its source can be found in the C++ file -`gain.cpp `_. +`gain.cpp `_. This plugin takes an image and multiplies the pixel by the value held in a user visible parameter. Ideally you should have read the guide to the :ref:`basic image @@ -82,7 +82,7 @@ Now seeing as we are going to be playing with parameters, our plugin will need a new suite, the parameters suite, and our load action now looks like: -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -136,7 +136,7 @@ is exactly the same as in the last example. What’s new is the bit where we describe parameters. I’ll show the describe in context action in several small chunks to take you through it. -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -179,7 +179,7 @@ new parameter’s property set handle. Each parameter has a set of properties we use to refine its behaviour, most of which have sensible defaults. -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -197,7 +197,7 @@ hairs over the image and so on. In this case we are saying that our double parameter represents a scaling value. OFX has more kinds of double parameter which you can use to best for your effect. -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -214,7 +214,7 @@ This section sets a default value for our parameter and a logical a minimum value below which it cannot go. Note it does not set a maximum value, so the parameter should not be clamped to any upper value ever. -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -236,7 +236,7 @@ values between 0.0 and 10.0 for our gain param, but the parameter could be set to a million via other means, eg: typing in a UI number box, animation, scripting whatever. -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -255,7 +255,7 @@ the parameter. It defaults to the name of the param, but it can be entirely different. Finally we set a hint string to be used for the parameter. -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -312,7 +312,7 @@ you can always grab parameters from an instance by name at any time. But to make our code a bit cleaner and to show an example of instance data being used, we are going to trap create instance. -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -333,7 +333,7 @@ handles, we are going to cache away handles to our clips and parameters in a simple struct. Note that these handles are valid for the duration of the instance. -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -378,7 +378,7 @@ in the instance’s property set. It then fetches handles to the two clips and two parameters by name and caches those into the newly created struct. -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -401,7 +401,7 @@ overloaded and there is another version that take an Of course we now need to trap the destroy instance action to delete our instance data, otherwise we will get memory leaks. -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -425,7 +425,7 @@ So we’ve define our parameters, we’ve got handles to the instance of them, but we will want to grab the value of the parameters to actually use them at render time. -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ @@ -465,7 +465,7 @@ similar to a C scanf function. And finally here is a snippet of the templated pixel pushing code where we do the actual processing using our parameter values; -`gain.cpp `__ +`gain.cpp `__ .. code:: c++ diff --git a/Documentation/sources/Guide/ofxExample4_Saturation.rst b/Documentation/sources/Guide/ofxExample4_Saturation.rst index 2ca3598e..09a18bf2 100644 --- a/Documentation/sources/Guide/ofxExample4_Saturation.rst +++ b/Documentation/sources/Guide/ofxExample4_Saturation.rst @@ -4,7 +4,7 @@ This guide will take you through the basics of creating effects that can be used in more than one context, as well as how to make a multi-input effect. Its source can be found in the C++ file -`saturation.cpp `_. +`saturation.cpp `_. This plugin takes an RGB or RGBA image and increases or decreases the saturation by a parameter. It can be used in two contexts, firstly as a simple filter, secondly as a @@ -60,7 +60,7 @@ Our basic describe action is pretty much the same as all the other examples, but with one minor difference, we set two contexts in which the effect can be used in. -`saturation.cpp `__ +`saturation.cpp `__ :: @@ -87,7 +87,7 @@ In the case of the general context, the default behaviour might not work the way you want, and you may have to trap other actions. Fortunately the defaults work for us as will. -`saturation.cpp `__ +`saturation.cpp `__ .. code:: c++ @@ -216,7 +216,7 @@ Create Instance This is pretty familiar, though we have a slight change to handle the mask input. -`saturation.cpp `__ +`saturation.cpp `__ .. code:: c++ @@ -279,7 +279,7 @@ are now fetching a third image, for the mask image, and we are prepared for this to fail and keep going as we may be in the filter context, or we may be in the general context but the clip is not connected. -`saturation.cpp `__ +`saturation.cpp `__ .. code:: c++ @@ -381,7 +381,7 @@ common average. The tweak we add is to modulate the amount of the effect by looking at the pixel values of the mask input if we have one. Again this is not meant to be fast code, just illustrative. -`saturation.cpp `__ +`saturation.cpp `__ .. code:: c++ @@ -473,7 +473,7 @@ You may have noticed I’ve gone and created an ``Image`` class. I got bored of passing around various pointers and bounds and strides in my code and decided to tidy it up. -`saturation.cpp `__ +`saturation.cpp `__ .. code:: c++ diff --git a/README.md b/README.md index caa5aab6..dd1f6339 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ The authoritative source for information about OFX is http://openeffects.org/ * [OpenFX Documentation](https://openfx.readthedocs.io/en/latest) - start here * [OpenFX Documentation: Reference](https://openfx.readthedocs.io/en/latest/Reference) * [Programming Guide By Example](https://openfx.readthedocs.io/en/latest/Guide) -* [OpenFX Wiki](https://wiki.aswf.io/pages/viewpage.action?pageId=49844871) +* [OpenFX Wiki](https://lf-aswf.atlassian.net/wiki/spaces/OFX/overview) Here are some [Ways to get involved](https://tac.aswf.io/engagement/#OpenFX) with OpenFX. diff --git a/release-notes.md b/release-notes.md index 09c841c9..0a0c2bd1 100644 --- a/release-notes.md +++ b/release-notes.md @@ -4,12 +4,11 @@ This is the release 1.5.1 of OFX, the Open Effects image-processing plug-in stan Documentation and more info can be found at: -* [The OpenFX website](http://openeffects.org) -* [OFX Programming Guide By Example](https://github.com/AcademySoftwareFoundation/openfx/tree/main/Guide) -* [OFX API v. 1.4 Reference](http://openeffects.org/documentation/api_doc) -* [OFX API Programming Guide](http://openeffects.org/documentation/guide) -* [OFX API Programming Reference](http://openeffects.org/documentation/reference) -* [OFX Discussion Google Group](https://groups.google.com/forum/#!forum/ofx-discussion) +* [The OpenFX website](https://openeffects.org) +* [OpenFX Documentation](https://openfx.readthedocs.io/en/latest) - start here +* [OpenFX Documentation: Reference](https://openfx.readthedocs.io/en/latest/Reference) +* [OFX Programming Guide By Example](https://openfx.readthedocs.io/en/latest/Guide) +* [OpenFX Wiki](https://lf-aswf.atlassian.net/wiki/spaces/OFX/overview) # Release Notes - 1.5.1