\hypertarget{a01462}{\section{View\+Object\+Marker Class Reference}
\label{a01462}\index{View\+Object\+Marker@{View\+Object\+Marker}}
}


{\ttfamily \#include $<$Open\+Flipper/\+Base\+Plugin/\+View\+Object\+Marker.\+hh$>$}

Inheritance diagram for View\+Object\+Marker\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=1.493333cm]{a01462}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{a01462_aedbd8526c1091583379077c5a014074e}{Type} \{ \hyperlink{a01462_aedbd8526c1091583379077c5a014074ea5f685c09413b28065881e96795300be5}{Per\+Number}, 
\hyperlink{a01462_aedbd8526c1091583379077c5a014074ea8901e523bcf53e8283d64ed8c9650132}{Per\+Bit}
 \}
\begin{DoxyCompactList}\small\item\em Blending type for this marker. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01462_abd9535830cdffeddaafdd4a5f1196997}{virtual \hyperlink{a01462_abd9535830cdffeddaafdd4a5f1196997}{$\sim$\+View\+Object\+Marker} ()}\label{a01462_abd9535830cdffeddaafdd4a5f1196997}

\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
\hypertarget{a01462_aa6c6f29f9728de9ba050b29e9f6b5738}{virtual \hyperlink{a01462_aedbd8526c1091583379077c5a014074e}{Type} {\bfseries type} ()}\label{a01462_aa6c6f29f9728de9ba050b29e9f6b5738}

\item 
virtual bool \hyperlink{a01462_afa76195409c856fb9a3aa691908c0984}{stencil\+Ref\+For\+Object} (\hyperlink{a00330}{Base\+Object\+Data} $\ast$\+\_\+obj, G\+Luint \&\+\_\+reference)=0
\item 
virtual bool \hyperlink{a01462_a5fa8a0c5cfc2ab5e93b57a5aa2a4b878}{blend\+For\+Stencil\+Ref\+Number} (G\+Luint \+\_\+reference, G\+Lenum \&\+\_\+src, G\+Lenum \&\+\_\+dst, \hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} \&\+\_\+color)
\item 
virtual bool \hyperlink{a01462_a0625b910c4cf5205fcc3382553219835}{blend\+For\+Stencil\+Ref\+Bit} (G\+Luint \+\_\+refbit, G\+Lenum \&\+\_\+src, G\+Lenum \&\+\_\+dst, \hyperlink{a03336_a4850d8bd22bf3ccf7088b80adc17c989}{A\+C\+G\+::\+Vec4f} \&\+\_\+color)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Abstract base class to mark objects with help of the stencil buffer

This system allows to blend the rendered object with a color, to visualize different object properties/states.

The \hyperlink{a01462}{View\+Object\+Marker} class can be activated for a examiner. The examiner will then call stencil\+Ref\+For\+Object for each object. If stencil\+Ref\+For\+Object returns \char`\"{}true\char`\"{} then the object \+\_\+obj will be painted with the stencil buffer reference \+\_\+reference (has to be != 0).

There are 2 operation modes

Per\+Number\+: The examiner will call blend\+For\+Stencil\+Ref\+Number for each of the returned references of stencil\+Ref\+For\+Object to ask for the blend values.

Per\+Bit\+: The examiner will call blend\+For\+Stencil\+Ref\+Number\+Bit for each of the bits in the returned references of stencil\+Ref\+For\+Object to ask for the blend values.

Per\+Bit handling allows to blend the object multiple times with different blend values, to visualize multiple properties at once, but is limited to the number of bits available in the stencil buffer (usually 8). 

Definition at line 91 of file View\+Object\+Marker.\+hh.



\subsection{Member Enumeration Documentation}
\hypertarget{a01462_aedbd8526c1091583379077c5a014074e}{\index{View\+Object\+Marker@{View\+Object\+Marker}!Type@{Type}}
\index{Type@{Type}!View\+Object\+Marker@{View\+Object\+Marker}}
\subsubsection[{Type}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf View\+Object\+Marker\+::\+Type}}}\label{a01462_aedbd8526c1091583379077c5a014074e}


Blending type for this marker. 

\begin{Desc}
\item[Enumerator]\par
\begin{description}
\index{Per\+Number@{Per\+Number}!View\+Object\+Marker@{View\+Object\+Marker}}\index{View\+Object\+Marker@{View\+Object\+Marker}!Per\+Number@{Per\+Number}}\item[{\em 
\hypertarget{a01462_aedbd8526c1091583379077c5a014074ea5f685c09413b28065881e96795300be5}{Per\+Number}\label{a01462_aedbd8526c1091583379077c5a014074ea5f685c09413b28065881e96795300be5}
}]Mark per returned reference. \index{Per\+Bit@{Per\+Bit}!View\+Object\+Marker@{View\+Object\+Marker}}\index{View\+Object\+Marker@{View\+Object\+Marker}!Per\+Bit@{Per\+Bit}}\item[{\em 
\hypertarget{a01462_aedbd8526c1091583379077c5a014074ea8901e523bcf53e8283d64ed8c9650132}{Per\+Bit}\label{a01462_aedbd8526c1091583379077c5a014074ea8901e523bcf53e8283d64ed8c9650132}
}]Mark per returned reference bits. \end{description}
\end{Desc}


Definition at line 99 of file View\+Object\+Marker.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a01462_a0625b910c4cf5205fcc3382553219835}{\index{View\+Object\+Marker@{View\+Object\+Marker}!blend\+For\+Stencil\+Ref\+Bit@{blend\+For\+Stencil\+Ref\+Bit}}
\index{blend\+For\+Stencil\+Ref\+Bit@{blend\+For\+Stencil\+Ref\+Bit}!View\+Object\+Marker@{View\+Object\+Marker}}
\subsubsection[{blend\+For\+Stencil\+Ref\+Bit}]{\setlength{\rightskip}{0pt plus 5cm}virtual bool View\+Object\+Marker\+::blend\+For\+Stencil\+Ref\+Bit (
\begin{DoxyParamCaption}
\item[{G\+Luint}]{\+\_\+refbit, }
\item[{G\+Lenum \&}]{\+\_\+src, }
\item[{G\+Lenum \&}]{\+\_\+dst, }
\item[{{\bf A\+C\+G\+::\+Vec4f} \&}]{\+\_\+color}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01462_a0625b910c4cf5205fcc3382553219835}
Per reference bit blending values 
\begin{DoxyParams}{Parameters}
{\em \+\_\+refbit} & stencil reference bit for blending \\
\hline
{\em \+\_\+src} & sfactor parameter for \hyperlink{a00643_a9270e5af917bbddd42603c9d864186d6}{A\+C\+G\+::\+G\+L\+State\+::blend\+Func} function \\
\hline
{\em \+\_\+dst} & dfactor parameter for \hyperlink{a00643_a9270e5af917bbddd42603c9d864186d6}{A\+C\+G\+::\+G\+L\+State\+::blend\+Func} function \\
\hline
{\em \+\_\+color} & color used for blending \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
should blending be performed for this reference 
\end{DoxyReturn}


Definition at line 134 of file View\+Object\+Marker.\+hh.

\hypertarget{a01462_a5fa8a0c5cfc2ab5e93b57a5aa2a4b878}{\index{View\+Object\+Marker@{View\+Object\+Marker}!blend\+For\+Stencil\+Ref\+Number@{blend\+For\+Stencil\+Ref\+Number}}
\index{blend\+For\+Stencil\+Ref\+Number@{blend\+For\+Stencil\+Ref\+Number}!View\+Object\+Marker@{View\+Object\+Marker}}
\subsubsection[{blend\+For\+Stencil\+Ref\+Number}]{\setlength{\rightskip}{0pt plus 5cm}virtual bool View\+Object\+Marker\+::blend\+For\+Stencil\+Ref\+Number (
\begin{DoxyParamCaption}
\item[{G\+Luint}]{\+\_\+reference, }
\item[{G\+Lenum \&}]{\+\_\+src, }
\item[{G\+Lenum \&}]{\+\_\+dst, }
\item[{{\bf A\+C\+G\+::\+Vec4f} \&}]{\+\_\+color}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01462_a5fa8a0c5cfc2ab5e93b57a5aa2a4b878}
Per reference number blending values 
\begin{DoxyParams}{Parameters}
{\em \+\_\+reference} & stencil reference for blending \\
\hline
{\em \+\_\+src} & sfactor parameter for \hyperlink{a00643_a9270e5af917bbddd42603c9d864186d6}{A\+C\+G\+::\+G\+L\+State\+::blend\+Func} function \\
\hline
{\em \+\_\+dst} & dfactor parameter for \hyperlink{a00643_a9270e5af917bbddd42603c9d864186d6}{A\+C\+G\+::\+G\+L\+State\+::blend\+Func} function \\
\hline
{\em \+\_\+color} & color used for blending \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
should blending be berformed for this reference 
\end{DoxyReturn}


Reimplemented in \hyperlink{a01147_ae4ccad75d52dbdf224988fcfea493779}{Selection\+Object\+Marker}, \hyperlink{a01147_ae4ccad75d52dbdf224988fcfea493779}{Selection\+Object\+Marker}, \hyperlink{a00489_af0be89ea4b0fa7ca7d6254866fba3409}{Default\+Object\+Marker}, \hyperlink{a00861_a020142cbef9f9994c1bbaf4b58ff28e0}{Move\+Object\+Marker}, and \hyperlink{a01186_af23a25bd75d6154399557bc58d54f4fd}{Skeleton\+Marker}.



Definition at line 125 of file View\+Object\+Marker.\+hh.

\hypertarget{a01462_afa76195409c856fb9a3aa691908c0984}{\index{View\+Object\+Marker@{View\+Object\+Marker}!stencil\+Ref\+For\+Object@{stencil\+Ref\+For\+Object}}
\index{stencil\+Ref\+For\+Object@{stencil\+Ref\+For\+Object}!View\+Object\+Marker@{View\+Object\+Marker}}
\subsubsection[{stencil\+Ref\+For\+Object}]{\setlength{\rightskip}{0pt plus 5cm}virtual bool View\+Object\+Marker\+::stencil\+Ref\+For\+Object (
\begin{DoxyParamCaption}
\item[{{\bf Base\+Object\+Data} $\ast$}]{\+\_\+obj, }
\item[{G\+Luint \&}]{\+\_\+reference}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [pure virtual]}}}\label{a01462_afa76195409c856fb9a3aa691908c0984}
Get stencil reference for object 
\begin{DoxyParams}{Parameters}
{\em \+\_\+obj} & Object \\
\hline
{\em \+\_\+reference} & stencil reference for object painting \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
should the reference be used 
\end{DoxyReturn}


Implemented in \hyperlink{a01147_a9cff4b59049020f9a70c98071441683f}{Selection\+Object\+Marker}, \hyperlink{a01147_a9cff4b59049020f9a70c98071441683f}{Selection\+Object\+Marker}, \hyperlink{a00489_a1e552aa77ab2c5301d52e18ebc11bbaa}{Default\+Object\+Marker}, \hyperlink{a00861_a118b1bcad34c40e91a0abe46073d366f}{Move\+Object\+Marker}, and \hyperlink{a01186_aa66b86e41743f81bfe0591cee56a38c5}{Skeleton\+Marker}.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
Open\+Flipper/common/View\+Object\+Marker.\+hh\end{DoxyCompactItemize}
