So why use a Profiler? Because it is the ``ls'' for executable functions!!
-\section{How to create your own theme}
+\section{How to Create a new Theme}
\label{sec:how_create_theme}
-A Theme is a base class object that is created and customized as \textit{ThemeName}.
+A \textit{Theme} is a base class object that is created and customized as \textit{ThemeName}.
It is constructed during program initialization in a theme plugin
\texttt{PluginTClient},
-defined in a \texttt{plugins/theme\_name} source directory.
+defined in \texttt{plugins/theme\_name} source directory.
\texttt{theme\_name.C} and \texttt{theme\_name.h} are derived \textit{Theme} class object constructors.
-A Theme is constructed during initialization in \texttt{init\_theme} (\texttt{mwindow.C}). The theme plugin is accessed using the \textit{name} from preferences, and that theme plugin is loaded, and it contains the code to construct that theme. A Theme object has functions and data that \CGG{} uses to do a variety of customizations, such as \texttt{default\_window\_positions}, and it can modify GUI defaults, like \\
-\texttt{default\_text\_color}, when it is initialized.
+A \textit{Theme} is constructed during initialization in \texttt{init\_theme} (\texttt{mwindow.C}). The theme plugin is accessed using the \textit{name} from preferences and then the theme plugin is loaded which contains the code to construct the theme. A \textit{Theme} object has functions and data that \CGG{} uses to do a variety of customizations, such as \texttt{default\_window\_positions}, and it can modify GUI defaults like \\
+\texttt{default\_text\_color} when it is initialized.
-The theme plugin contains a \textit{new\_theme} function, that allocates and constructs a
-\textit{ThemeName} object, with a base classes of \textit{BC\_Theme} (gui setup), \textit{Theme} (\CGG{} defaults), and \textit{ThemeName}, with definitions and overrides that create the custom theme. To create a new theme, a new plugin is needed:
+The theme plugin contains a \textit{new\_theme} function that allocates and constructs a
+\textit{ThemeName} object with base classes of \textit{BC\_Theme} (gui setup), \textit{Theme} (\CGG{} defaults), and \textit{ThemeName}, with definitions and overrides that create the custom theme. To create a new theme, a new plugin is needed:
\begin{lstlisting}[numbers=none]
#include "header files.h"
When a theme is constructed by \texttt{NameMain::new\_theme()}, it sets a pointer to a
block of data created in the plugin build that contains all of the png data
-files in the \texttt{plugins/theme\_name/data} directory. These images may define or override the appearance of gui images, such as \textit{ok.png} (the ok button). There are usually a large number of images that need to be defined. The theme plugin adds them to the theme image data in the \texttt{theme $\rightarrow$ initialize()} function. The best list of theme image setup is probably in SUV (\texttt{plugins/theme\_suv/suv.})
+files in the \texttt{plugins/theme\_name/data} directory. These images may define or override the appearance of gui images, such as \textit{ok.png} (the ok button). There are usually a large number of images that need to be defined. The theme plugin adds them to the theme image data in the \texttt{theme $\rightarrow$ initialize()} function. The best list of theme image setup is probably in SUV (\texttt{plugins/theme\_suv/suv}).
The easy way to create a new theme is to copy an existing theme and change
-its name to \textit{ThemeName}, and be sure to \texttt{change plugin\_title()} to the new name, then tweak the definitions until you are happy with the results. The file
-names and Makefile also need to be updated to the new theme \textit{name}. The source
-can by manually rebuilt by invoking make in the \texttt{plugins/theme\_name}
+its name to \textit{ThemeName}, change \texttt{plugin\_title()} to the new name, and then tweak the definitions until you are happy with the results. The file
+names and Makefile also need to be updated to the new theme name. The source
+can by manually rebuilt by invoking \textit{make} in the \texttt{plugins/theme\_name}
directory.
-Once it is built into the plugin library, it will be discovered by the plugin probe,
-and it will become an available theme in the \textit{Preferences}.
+Once the new theme is built into the plugin library, it will automatically be discovered by the plugin probe
+and it will become an available theme in \textit{Preferences}.
If you are ready to add it to the main build, then \textit{theme\_name} should be
-included in the DIRS targets of the \texttt{plugins/Makefile}, and the \texttt{plugin\_defs} needs \textit{theme\_name} in the themes list.
+included in the DIRS targets of the \texttt{plugins/Makefile}, and \texttt{plugin\_defs} needs \textit{theme\_name} in the themes list.
Themes usually require considerable time to create from scratch. For
example, the SUV theme has over 800 lines in the initialize function, and has over
there is a large light or color variation within a range of a few frames,
you spend a lot of time correcting each frame when it would be better to
just get an average value to use. If you want, then you can make a LUT for
-that set of frames instead of each frame. A practical case may be the shooting of a room illuminated by a lamp and then with the light off. We can choose only the range of illuminated frames and then we will have the whole shot illuminated. Or we can choose only the dark frames and so we will have all the dark shot.
+that set of frames instead of each frame.
It works by selecting the area on the timeline for
which you would like to see the Histogram averaged and then click on the
\textit{Frames} button in the Histogram plugin.
The parameters are:
-\textit{Linear to Log} slider: frequency in Linear range to Log range; default is
-50\%, but if you want it to be the same as the Videoscope or Histogram Bezier, set the slider
-all the way to Log. The variation is by 10\% steps. Linear generally represents what
-the eye sees in the real world. Log is an exponential look where the small numbers are
-represented more - that is, the leading digit.
+\textit{Linear to Log} slider: frequency in Linear range to Log range; default is 50\%, but if you want it to be the same as the Videoscope or Histogram Bezier, set the slider all the way to Log. The variation is by 10\% steps. Linear generally represents what the eye sees in the real world. Log is an exponential look where the small numbers are represented more - that is, the leading digit.
\textit{Frames} button: if a Selection is set on the timeline, the number of frames
will be calculated and shown in the box next to it.
\textit{Frame Count box}: type in the number of frames you want to be looked at
To save time the motion result can be saved in a file for later reuse, recalled from a previous calculation, or discarded. The motion tracker has a notion of $2$ tracks, the \textit{master} layer and the \textit{target} layer. The \textit{master} layer is where the comparison between $2$ frames takes place. The \textit{target} layer is where motion is applied either to track or compensate for the motion in the \textit{master} layer (figure~\ref{fig:motion}).
\begin{figure}[ht]
- \centering
+ \centering
\includegraphics[width=0.9\linewidth]{motion.png}
\caption{Motion plugin GUI}
\label{fig:motion}
\subsection{Motion 2 Point}%
\label{sub:motion_2_point}
-Motion stabilization using 2 pass tracking. For theory and explanations refer to the \hyperref[sub:motion]{Motion} plugin.
+Motion plugin using 2 \textit{Match box} for tracking. For theory and explanations refer to the \hyperref[sub:motion]{Motion} plugin.
\subsection{Motion Blur}%
\label{sub:motion_blur}