\hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT}{}\section{Open\+Mesh\+:\+:Decimater\+:\+:Mod\+Prog\+MeshT$<$ MeshT $>$ Class Template Reference}
\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT}\index{Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+Mesh\+T$<$ Mesh\+T $>$@{Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+Mesh\+T$<$ Mesh\+T $>$}}


{\ttfamily \#include $<$Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Decimater/\+Mod\+Prog\+Mesh\+T.\+hh$>$}

Inheritance diagram for Open\+Mesh\+:\+:Decimater\+:\+:Mod\+Prog\+MeshT$<$ MeshT $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classOpenMesh_1_1Decimater_1_1ModProgMeshT}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structOpenMesh_1_1Decimater_1_1ModProgMeshT_1_1Info}{Info}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_abee243096a68fd0eea4dc1307dd1d16c}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_abee243096a68fd0eea4dc1307dd1d16c}} 
typedef std\+::vector$<$ \hyperlink{structOpenMesh_1_1Decimater_1_1ModProgMeshT_1_1Info}{Info} $>$ \hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT_abee243096a68fd0eea4dc1307dd1d16c}{Info\+List}
\begin{DoxyCompactList}\small\item\em Type of the list storing the progressive mesh info \hyperlink{structOpenMesh_1_1Decimater_1_1ModProgMeshT_1_1Info}{Info}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_aa8d90fe58dc2a78651ba62c2c5646867}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_aa8d90fe58dc2a78651ba62c2c5646867}} 
{\bfseries D\+E\+C\+I\+M\+A\+T\+I\+N\+G\+\_\+\+M\+O\+D\+U\+LE} (\hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT}{Mod\+Prog\+MeshT}, MeshT, Prog\+Mesh)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_ad195363a5b1d1a5a6924b01344236d4d}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_ad195363a5b1d1a5a6924b01344236d4d}} 
\hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT_ad195363a5b1d1a5a6924b01344236d4d}{Mod\+Prog\+MeshT} (MeshT \&\+\_\+mesh)
\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_ac0304c26583a7c7be2fd873c48388d78}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_ac0304c26583a7c7be2fd873c48388d78}} 
\hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT_ac0304c26583a7c7be2fd873c48388d78}{$\sim$\+Mod\+Prog\+MeshT} ()
\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_ad693faea9adec1402aa2895dd1670291}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_ad693faea9adec1402aa2895dd1670291}} 
const \hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT_abee243096a68fd0eea4dc1307dd1d16c}{Info\+List} \& {\bfseries pmi} () const
\item 
void \hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT_abaa99713a4e23cacb75b30ed6cb80a32}{postprocess\+\_\+collapse} (const \hyperlink{structOpenMesh_1_1Decimater_1_1CollapseInfoT}{Collapse\+Info} \&\+\_\+ci) override
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a394b9d3f9db7f71b28544db09bf7be86}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a394b9d3f9db7f71b28544db09bf7be86}} 
bool {\bfseries is\+\_\+binary} (void) const
\item 
bool \hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a52f38ce6a1dafe179fa76b33e7addf17}{write} (const std\+::string \&\+\_\+ofname)
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a369dd9d0271dc549ee65fb2f0764f19d}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a369dd9d0271dc549ee65fb2f0764f19d}} 
const \hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT_abee243096a68fd0eea4dc1307dd1d16c}{Info\+List} \& \hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a369dd9d0271dc549ee65fb2f0764f19d}{infolist} () const
\begin{DoxyCompactList}\small\item\em Reference to collected information. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a68d735d7137a231cdedd664731cd98e5}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a68d735d7137a231cdedd664731cd98e5}} 
void {\bfseries set\+\_\+binary} (bool \+\_\+b)
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a2414e251d3f35d718feec81a94851eea}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a2414e251d3f35d718feec81a94851eea}} 
\hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT_abee243096a68fd0eea4dc1307dd1d16c}{Info\+List} {\bfseries pmi\+\_\+}
\item 
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a8a89ff798128c4630b290784a27373ee}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a8a89ff798128c4630b290784a27373ee}} 
\hyperlink{structOpenMesh_1_1VPropHandleT}{V\+Prop\+HandleT}$<$ size\+\_\+t $>$ {\bfseries idx\+\_\+}
\end{DoxyCompactItemize}
\subsection*{Additional Inherited Members}


\subsection{Detailed Description}
\subsubsection*{template$<$class MeshT$>$\newline
class Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+Mesh\+T$<$ Mesh\+T $>$}

Collect progressive mesh information while decimating.

The progressive mesh data is stored in an internal structure, which can be evaluated after the decimation process and (!) before calling the garbage collection of the decimated mesh. 

Definition at line 80 of file Mod\+Prog\+Mesh\+T.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_abaa99713a4e23cacb75b30ed6cb80a32}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_abaa99713a4e23cacb75b30ed6cb80a32}} 
\index{Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+MeshT@{Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+MeshT}!postprocess\+\_\+collapse@{postprocess\+\_\+collapse}}
\index{postprocess\+\_\+collapse@{postprocess\+\_\+collapse}!Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+MeshT@{Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+MeshT}}
\subsubsection{\texorpdfstring{postprocess\+\_\+collapse()}{postprocess\_collapse()}}
{\footnotesize\ttfamily template$<$class MeshT$>$ \\
void \hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT}{Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+MeshT}$<$ MeshT $>$\+::postprocess\+\_\+collapse (\begin{DoxyParamCaption}\item[{const \hyperlink{structOpenMesh_1_1Decimater_1_1CollapseInfoT}{Collapse\+Info} \&}]{\+\_\+ci }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}}

Stores collapse information in a queue. \begin{DoxySeeAlso}{See also}
\hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a369dd9d0271dc549ee65fb2f0764f19d}{infolist()} 
\end{DoxySeeAlso}


Reimplemented from \hyperlink{classOpenMesh_1_1Decimater_1_1ModBaseT_a9b79ddfa2e7771572dd558c928edcdeb}{Open\+Mesh\+::\+Decimater\+::\+Mod\+Base\+T$<$ Mesh\+T $>$}.



Definition at line 133 of file Mod\+Prog\+Mesh\+T.\+hh.

\mbox{\Hypertarget{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a52f38ce6a1dafe179fa76b33e7addf17}\label{classOpenMesh_1_1Decimater_1_1ModProgMeshT_a52f38ce6a1dafe179fa76b33e7addf17}} 
\index{Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+MeshT@{Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+MeshT}!write@{write}}
\index{write@{write}!Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+MeshT@{Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+MeshT}}
\subsubsection{\texorpdfstring{write()}{write()}}
{\footnotesize\ttfamily template$<$class MeshT $>$ \\
bool \hyperlink{classOpenMesh_1_1Decimater_1_1ModProgMeshT}{Open\+Mesh\+::\+Decimater\+::\+Mod\+Prog\+MeshT}$<$ MeshT $>$\+::write (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{\+\_\+ofname }\end{DoxyParamCaption})}

Write progressive mesh data to a file in proprietary binary format .pm.

The methods uses the collected data to write a progressive mesh file. It\textquotesingle{}s a binary format with little endian byte ordering\+:


\begin{DoxyItemize}
\item The first 8 bytes contain the word \char`\"{}\+Prog\+Mesh\char`\"{}.
\item 32-\/bit int for the number of vertices {\ttfamily NV} in the base mesh.
\item 32-\/bit int for the number of faces in the base mesh.
\item 32-\/bit int for the number of halfedge collapses (now vertex splits)
\item Positions of vertices of the base mesh (32-\/bit float triplets).~\newline
 {\ttfamily }\mbox{[}x,y,z\mbox{]}\mbox{[}x,y,z\mbox{]}...
\item Triplets of indices (32-\/bit int) for each triangle (index in the list of vertices of the base mesh defined by the positions.~\newline
 {\ttfamily }\mbox{[}v0,v1,v2\mbox{]}\mbox{[}v0,v1,v2\mbox{]}...
\item For each collapse/split a detail information package made of 3 32-\/bit floats for the positions of vertex {\ttfamily v0}, and 3 32-\/bit int indices for {\ttfamily v1}, {\ttfamily vl}, and {\ttfamily vr}. The index for {\ttfamily vl} or {\ttfamily vr} might be -\/1, if the face on this side of the edge does not exists.
\end{DoxyItemize}

\begin{DoxyRemark}{Remarks}
Write file before calling the garbage collection of the mesh. 
\end{DoxyRemark}

\begin{DoxyParams}{Parameters}
{\em \+\_\+ofname} & Name of the file, where to write the progressive mesh \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily true} on success of the operation, else {\ttfamily false}. 
\end{DoxyReturn}


Definition at line 82 of file Mod\+Prog\+Mesh\+T\+\_\+impl.\+hh.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Decimater/\hyperlink{ModProgMeshT_8hh}{Mod\+Prog\+Mesh\+T.\+hh}\item 
Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Tools/\+Decimater/\hyperlink{ModProgMeshT__impl_8hh}{Mod\+Prog\+Mesh\+T\+\_\+impl.\+hh}\end{DoxyCompactItemize}
