add BoxBlur plugin and expand on Allow Keyframe Spanning
[goodguy/cin-manual-latex.git] / parts / Plugins.tex
index a52a8ef715bd0c80a88432f07527fd0864f71688..74023261a74288f254bcc8852de50470bf8e8448 100644 (file)
@@ -31,10 +31,10 @@ Note that when you change the plugin icons, your session will automatically save
     \node (img1) [yshift=0cm, xshift=0cm, rotate=0] {\includegraphics[width=0.5\linewidth]{plugin-icons.png}};
     \node [yshift=-6mm, xshift=-1cm,anchor=east] at (img1.north west) (Preferences) {Preferences Window};
     \node [yshift=-14mm, xshift=-1cm,anchor=east] at (img1.north west) (Tab) {Tab section};
-    \node [yshift=-35mm, xshift=-1cm,anchor=east] at (img1.north west) (Icon) {Plugin icon choices};
+    \node [yshift=-34mm, xshift=-1cm,anchor=east] at (img1.north west) (Icon) {Plugin icon choices};
     \draw [->, line width=1mm] (Preferences) edge  ([yshift=-6mm] img1.north west);
     \draw [->, line width=1mm] (Tab) edge  ([yshift=-14mm] img1.north west);
-    \draw [->, line width=1mm] (Icon) edge    ([yshift=-35mm] img1.north west);
+    \draw [->, line width=1mm] (Icon) edge    ([yshift=-34mm] img1.north west);
     \end{tikzpicture}
     \caption{Screencast showing the screen to change your plugin icons set}
     \label{fig:plugin-icons}
@@ -135,11 +135,11 @@ A Presets button on the plugin bar to the left of the Controls and On/Off button
     \begin{tikzpicture}[scale=1, transform shape]
     \node (img1) [yshift=0cm, xshift=0cm, rotate=0] {\includegraphics[width=0.6\linewidth]{preset02.png}};
     \node [yshift=-20mm, xshift=-1cm,anchor=east] at (img1.north west) (Green) {A user preset Green};
-    \node [yshift=-68mm, xshift=-1cm,anchor=south east,text width=10em, inner ysep=-3mm] at (img1.north west) (Textbox) {Textbox to type in the title for the chosen preset or name for a new preset.};
-    \node [yshift=-80mm, xshift=-1cm,anchor=north east,text width=10em,inner ysep=-3mm] at (img1.north west) (Save) {Use the Delete, Save or Apply button for operation.};
+    \node [yshift=-67mm, xshift=-1cm,anchor=south east,text width=10em, inner ysep=-3mm] at (img1.north west) (Textbox) {Textbox to type in the title for the chosen preset or name for a new preset.};
+    \node [yshift=-79mm, xshift=-1cm,anchor=north east,text width=10em,inner ysep=-3mm] at (img1.north west) (Save) {Use the Delete, Save or Apply button for operation.};
     \draw [->, line width=1mm] (Green) edge  ([yshift=-20mm] img1.north west);
-    \draw [->, line width=1mm] (Textbox.south east) --  ([yshift=-68mm] img1.north west);
-    \draw [->, line width=1mm] (Save.north east) --    ([yshift=-80mm] img1.north west);
+    \draw [->, line width=1mm] (Textbox.south east) --  ([yshift=-67mm] img1.north west);
+    \draw [->, line width=1mm] (Save.north east) --    ([yshift=-79mm] img1.north west);
     \end{tikzpicture}
     \caption{Screencast shows 4 Factory presets as preceded by an *.}
     \label{fig:preset02}
@@ -1030,6 +1030,36 @@ This is a Gaussian type blur. Other blur plugins -- \textit{Linear}, \textit{Mot
     \item[Blur alpha, red, green, blue] specifies which color channels is to be blurred.
 \end{description}
 
+\subsection{BoxBlur}%
+\label{sub:boxblur}
+Based on ffmpeg’s boxblur, this is a very fast algorithm which can be used to blur horizontal,
+vertical, and at a power level.  Simplest usage is to just blur the entire image but with
+the following parameters, you can create a specific rectangular section to blur instead.  
+
+\begin{description}
+    \item[X/Y:] point coordinates of a rectangular box to be blurred. X and Y of 0 are in the
+upper left hand corner.  Default to be blurred is the entire image.
+    \item[Drag:] is used when you want to create just a rectangular area to be blurred rather
+than the enire image. If you used keyframes to cover a moving area and had left the Drag box
+enabled, you can remove the drag box with \textit{Allow keyframe spanning} whose use is
+described in \nameref{sec:allow_keyframes_spanning}.
+    \item[W/H] the values in these 2 boxes specify the width and height of the drag area box
+measured in pixels as shown in the compositor window. You can set these manually and if you
+can not see the location of your box, set them to zero because $0$ sets it to the same as the
+width/height of the project.
+    \item[Horiz:] slider goes from $0\, to\, 100$. Increasing this \textit{horizontal} number,
+increases the blurriness in the horizontal direction. The default value is 2. You can also use
+the mouse wheel to scroll the slider.  There is a clear button on the right to set the value to 0.
+    \item[Vert:] slider goes from $0\, to\, 100$. Increasing this \textit{vertical} number,
+increases the blurriness in the vertical direction.  The default value is 2. You can also use
+the mouse wheel to scroll the slider. There is a clear button on the right to set the value to 0.
+    \item[Power:] the way \textit{Power} works is like stacking up the blur multiple times.
+For example, a power of 3 would be like blurring once, then blurring that again, and finally
+blurring that a third time. The slider varies from 1 to 10 with 2 being the default value. There
+is a clear button on the right to set the value to 1.
+    \item[Reset:] button to revert to the default values and turn off Drag if it is on.
+\end{description}
+
 \subsection{Brightness/Contrast}%
 \label{sub:brightness_contrast}
 
@@ -1271,7 +1301,7 @@ To start, if not already checked, turn on drag. In the composer window select an
     \item[X, Y:] points coordinate.
     \item[Buttons:] \textit{New} to create a new point, \textit{Up/Dn} to move highlighted point up or down \textit{Del} to delete the highlighted point.
     \item[Threshold:] slider goes from $0\, to\, 1$. Increasing the threshold, increases the area to be filled or masked. You can also use the mouse wheel to scroll the slider.
-    \item[Drag:] for ease of use.
+    \item[Drag:] for ease of use. If you need to clear the Drag enabled, you can easily do this with \textit{Allow keyframe spanning} whose use is described in \nameref{sec:allow_keyframes_spanning}.
     \item[Reset:] button to revert to only the default middle point with all others being deleted.
     \item[ListBox:] "E" for Enabled with $*$ marking that; "X" is the point’s $x$ coordinate; "Y" is the point’s $y$ coordinate; "T" is the threshold value of $X,Y$ point; \textit{Tag} represents the \# of the selected
     point.
@@ -2386,7 +2416,7 @@ There is no \textit{undo} recorded between gui updates. It is recommended that y
 
 \begin{center}
        \small
-       \begin{longtable}{{m{15em}m{13em}m{12em}}}
+       \begin{longtable}{{m{12em}m{13em}m{12em}}}
                \caption{Sketcher controls}
                \label{tabular:sketcher_controls} \\ % note that double backslash is mandatory here
                \toprule
@@ -2442,7 +2472,7 @@ There is no \textit{undo} recorded between gui updates. It is recommended that y
 \begin{description}
        \item[Anti-Aliasing] You can set Off; On or Double. Default is On.
     \item[Color] refers to the current curve pen color. Click on the \textit{Color rectangle} to bring up the Color window to change any of the color values, including alpha.
-    \item[Drag] check to create curves and to be able to see any Off type curves. Uncheck for render/viewing.
+    \item[Drag] check to create curves and to be able to see any Off type curves. Uncheck for render/viewing.  If you need to clear the Drag enabled, you can easily do this with \textit{Allow keyframe spanning} whose use is described in \nameref{sec:allow_keyframes_spanning}.
     \item[Reset] -- in the \textit{Curve section}, all of the curve lines will be deleted except for an empty default curve;
     -- in the \textit{Point section}, all points for the highlighted curve in the Curve section will be deleted.
     \item[Width] integer width of line; width of $1$ is the default; width of $0$ is the smallest size of $1$ pixel.
@@ -2585,7 +2615,7 @@ If the video is displayed on a consumer TV, the outer border is going to be crop
 \begin{description}
     \item[Drag] initial default checkbox is \textit{off} so that the Title plugin will work as it always has.
     \begin{description}
-        \item[Anchors] When you turn on the Drag feature, nine different anchors/handles will appear on compositor window. The \textit{middle anchor} allows you to drag your title wherever you want in the compositor window ($X, Y$ coordinates). The other 8 handles, drawn as arrows in each corner and in the middle of each side, let you change the size of the drag area box so that your title is within that area if it fits and as it is directed.
+        \item[Anchors] When you turn on the Drag feature, nine different anchors/handles will appear on compositor window. The \textit{middle anchor} allows you to drag your title wherever you want in the compositor window ($X, Y$ coordinates). The other 8 handles, drawn as arrows in each corner and in the middle of each side, let you change the size of the drag area box so that your title is within that area if it fits and as it is directed.  If you need to clear the Drag enabled, you can easily do this with \textit{Allow keyframe spanning} whose use is described in \nameref{sec:allow_keyframes_spanning}.
         \item[W/H] the values in these 2 boxes specify the size of the drag area box measured in pixels as shown in the compositor window. You can set these manually and if you can't see the location of your box or find your handles, set them to zero because $0$ sets it to the same as the width/height of the media.
         The Drag effect ignores all boundaries, including the \textit{Title Safe Region} of the Compositor so that if you drag your titles off the screen, it will look like they disappeared completely. Reset X and Y to reasonable values to have it reappear. The Title \textit{text}, \textit{background}, and \textit{pngs} are applied on a single layer so that they will drag together as an entity. All of the Title capabilities work in conjunction with dragging so if you want to justify the title, you can still use the \textit{Left/Center/Right/Top/Mid/Bottom} within the drag area. Be sure to turn off Drag when rendering or the box will show in the video; keep in mind that drag bars do not appear until there is some text in the text box and you can not actually drag until the Title window controls are available.
     \end{description}
@@ -2785,7 +2815,7 @@ Tracer creates an outline around an object after a few points are designated, so
        \item[Invert] to change the mask to outside.
        \item[Feather] to sort of blur the edges (inward and outward). Feather influences the softness of the edge. The higher the number Feather is set to, the softer the edges become.
        \item[Radius] for varying the size a little. Radius extends the area further in or out to cover more or less area.
-       \item[Drag] to enable or disable moving.
+       \item[Drag] to enable or disable moving.  If you need to clear the Drag enabled, you can easily do this with \textit{Allow keyframe spanning} whose use is described in \nameref{sec:allow_keyframes_spanning}.
        \item[Draw] to draw the outline for visual.
        \item[Fill] to black out the object (no alpha); figure~\ref{fig:tracer-02}.
        \item[Mouse wheel] rotate the outline, centered on cursor. Note that this rotates the outline around the nearest point. The slower you scroll, the more precise the the result. If you scroll faster, an accelerator kicks in that allows you to make complete rotations more quickly.
@@ -2975,6 +3005,14 @@ Only for Nvidia GPU and Cuda SDK
 \label{sub:mandelbrot}
 
 Produce fractal figures (figure~\ref{fig:mandelbrot}). Use case:
+
+\begin{figure}[hbtp]
+       \centering
+       \includegraphics[width=0.8\linewidth]{mandelbrot.png}
+       \caption{Mandelbrot Cuda plugin}
+       \label{fig:mandelbrot}
+\end{figure}
+
 \begin{enumerate}
        \item add the Mandelbrot Cuda video effect to the timeline
        \item you must enable Drag in the plugin popup menu
@@ -2983,13 +3021,6 @@ Produce fractal figures (figure~\ref{fig:mandelbrot}). Use case:
        \item so now when you play the video from the beginning because you have keyframes, the fractal will be animated between keyframes.
 \end{enumerate}
 
-\begin{figure}[hbtp]
-       \centering
-       \includegraphics[width=0.9\linewidth]{mandelbrot.png}
-       \caption{Mandelbrot Cuda plugin}
-       \label{fig:mandelbrot}
-\end{figure}
-
 \subsection{N\_Body}%
 \label{sub:n_body}
 
@@ -3032,8 +3063,8 @@ time is significant. For these reasons, \textit{findobject} and the other 5 plug
 included in System build packages.  We recommend using the static library build which has the OpenCV
 plugins included for consistency and to avoid problems.
 
-\subsection{Using OpenCV Plugins from the Automatic Builds}%
-\label{sub:using_opencv_automatic_builds}
+\subsection{Adding OpenCV Plugins to the System Package Builds}%
+\label{sub:adding_opencv_to_system_builds}
 
 The OpenCV plugins are built only in the 64-bit tarball builds, both static and dynamic, but due
 to size these plugins are not included with pkgs, i.e. the System builds. However it is relatively
@@ -3051,7 +3082,7 @@ cin/plugins/opencv/stylizeobj.plugin
 
 \begin{enumerate}
     \item do your package install of the current build for your distro as usual
-    \item look in {\small \url{https://cinelerra-gg.org/download/tars}} to see your distro name's static tar;
+    \item look in {\small \url{https://cinelerra-gg.org/download/tars}} to see your distro name's static tar
     \item download the corresponding distro static tarball;
     for example for arch:
 \end{enumerate}
@@ -3059,25 +3090,24 @@ cin/plugins/opencv/stylizeobj.plugin
     {\small \url{https://cinelerra-gg.org/download/tars/cinelerra-5.1-arch-{date}-x86_64-static.txz}}
 
 \begin{enumerate}[resume]
-    \item create a temporary directory on your computer;
-    \item \texttt{cd} that-directory;
-    \item \texttt{tar -xf} location-of-the-tarball-you-downloaded;
-    \item \texttt{cp plugins/*obj.plugin <see below for your location>/.} (note the period on the end!)
-    \item Start \CGG{} and look for the six plugins in Video Effects;
+    \item create a temporary directory on your computer
+    \item \texttt{cd} that-directory
+    \item \texttt{tar -xf} location-of-the-tarball-you-downloaded
+    \item \texttt{cp plugins/*obj.plugin <see below for your location>/.} (note the period on the end)
+    \item Start \CGG{} and look for the six plugins in Video Effects
     \item To reverse this, simply delete the six plugin files (for example:
 
     \texttt{rm /usr/lib*/cin*/*obj.plugin}).
 \end{enumerate}
 
-location for most User installs, this is:
-
-\texttt{<cinlib\_path>/plugins/}
+The location for most User installs is:
 
-Location for some System installs, this is:
+\hspace{4em}\texttt{<cinlib\_path>/plugins/}
 
-\texttt{/usr/lib/cin/plugins/} (most ubuntu distros)
+Location for some System installs is:
 
-\texttt{/usr/lib64/cin/plugins/} (Leap distro)
+\hspace{4em}\texttt{/usr/lib/cin/plugins/} (most ubuntu distros)\\
+\hspace{4em}\texttt{/usr/lib64/cin/plugins/} (Leap distro)
 
 \subsection{How to Build OpenCV Plugins}%
 \label{sub:how_build_opencv_plugins}
@@ -3088,6 +3118,32 @@ and build OpenCV into the thirdparty library build area if needed (it does not r
 previously).  Network access is required to obtain the OpenCV source, at least once. You will
 need a minimum of $4\, GB$ in the thirdparty build directory and more time to compile.
 
+\subsubsection*{Build using stable tarballs}%
+\label{ssub:stable_tars}
+
+Instead of using the latest git version, there is a custom archive source tarball on the
+website already created to build and test OpenCV versions.  The reason for this is that OpenCV
+is quite volatile, and may or may not work on any given day so this is an already tested version
+that is considered to be more stable.  A build using the tarball requires that your
+system have \textit{wget} already installed to initially download the prepared source tar. 
+There are currently 2 tarballs of stable versions on the website used for user builds.
+The 20180401 version:\newline
+{\small \url{ https://cinelerra-gg.org/download/opencv/opencv-20180401.tgz}}\newline
+works with older version of cmake, and 20200308 is the current 4.2 release:\newline
+{\small \url{https://cinelerra-gg.org/download/opencv/opencv-20200306.tgz}}
+
+To build using the tarballs on the website, use this bld.sh procedure (you may want to run "make
+clean" first):
+\begin{lstlisting}[style=sh]
+#!/bin/bash
+( ./autogen.sh
+  ./configure --with-single-user --with-booby \
+    --with-opencv=sta,tar=http://cinelerra-gg.org/download/opencv/opencv-20200306.tgz
+  make && make install ) 2>&1 | tee log
+mv Makefile Makefile.cfg
+cp Makefile.devel Makefile
+\end{lstlisting}
+
 \subsubsection*{Build using current git version}%
 \label{ssub:current_git}
 
@@ -3161,32 +3217,6 @@ running locally on the build system.  for example:\newline
      \item systemctl start httpd
 \end{enumerate}
 
-\subsubsection*{Build using stable tarballs}%
-\label{ssub:stable_tars}
-
-Instead of using the latest git version, there is a custom archive source tarball on the
-website already created to build and test OpenCV versions.  The reason for this is that OpenCV
-is quite volatile, and may or may not work on any given day so this is an already tested version
-that is considered to be more stable.  A build using the tarball requires that your
-system have \textit{wget} already installed to initially download the prepared source tar. 
-There are currently 2 tarballs of stable versions on the website used for user builds.
-The 20180401 version:\newline
-{\small \url{ https://cinelerra-gg.org/download/opencv/opencv-20180401.tgz}}\newline
-works with older version of cmake, and 20200308 is the current 4.2 release:\newline
-{\small \url{https://cinelerra-gg.org/download/opencv/opencv-20200306.tgz}}
-
-To build using the tarballs on the website, use this bld.sh procedure (you may want to run "make
-clean" first):
-\begin{lstlisting}[style=sh]
-#!/bin/bash
-( ./autogen.sh
-  ./configure --with-single-user --with-booby \
-    --with-opencv=sta,tar=http://cinelerra-gg.org/download/opencv/opencv-20200306.tgz
-  make && make install ) 2>&1 | tee log
-mv Makefile Makefile.cfg
-cp Makefile.devel Makefile
-\end{lstlisting}
-
 \subsection{Description of Find Object Plugin}%
 \label{sub:description_findobj_plugin}