\hypertarget{a01975}{\section{libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Core/\+Mesh/\+Traits.hh File Reference}
\label{a01975}\index{libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Core/\+Mesh/\+Traits.\+hh@{libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Core/\+Mesh/\+Traits.\+hh}}
}
{\ttfamily \#include $<$Open\+Mesh/\+Core/\+System/config.\+h$>$}\\*
{\ttfamily \#include $<$Open\+Mesh/\+Core/\+Geometry/\+Vector\+T.\+hh$>$}\\*
{\ttfamily \#include $<$Open\+Mesh/\+Core/\+Mesh/\+Attributes.\+hh$>$}\\*
{\ttfamily \#include $<$Open\+Mesh/\+Core/\+Mesh/\+Handles.\+hh$>$}\\*
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{a00492}{Open\+Mesh\+::\+Default\+Traits}
\item 
struct \hyperlink{a00805}{Open\+Mesh\+::\+Merge\+Traits$<$ \+\_\+\+Traits1, \+\_\+\+Traits2 $>$}
\end{DoxyCompactItemize}
\subsection*{Namespaces}
\begin{DoxyCompactItemize}
\item 
 \hyperlink{a03368}{Open\+Mesh}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01975_a427ff443d5e47c76b9c45a29213e63db}{\#define \hyperlink{a01975_a427ff443d5e47c76b9c45a29213e63db}{Vertex\+Attributes}(\+\_\+i)~enum \{ Vertex\+Attributes = \+\_\+i \}}\label{a01975_a427ff443d5e47c76b9c45a29213e63db}

\begin{DoxyCompactList}\small\item\em Macro for defining the vertex attributes. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\hypertarget{a01975_a72688ff15a275a41a98159ce72eaab4f}{\#define \hyperlink{a01975_a72688ff15a275a41a98159ce72eaab4f}{Halfedge\+Attributes}(\+\_\+i)~enum \{ Halfedge\+Attributes = \+\_\+i \}}\label{a01975_a72688ff15a275a41a98159ce72eaab4f}

\begin{DoxyCompactList}\small\item\em Macro for defining the halfedge attributes. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\hypertarget{a01975_a8126b6d66b0b65c5e23e8856c6092c28}{\#define \hyperlink{a01975_a8126b6d66b0b65c5e23e8856c6092c28}{Edge\+Attributes}(\+\_\+i)~enum \{ Edge\+Attributes = \+\_\+i \}}\label{a01975_a8126b6d66b0b65c5e23e8856c6092c28}

\begin{DoxyCompactList}\small\item\em Macro for defining the edge attributes. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\hypertarget{a01975_a75f0d731abf2489208086aac5147eefc}{\#define \hyperlink{a01975_a75f0d731abf2489208086aac5147eefc}{Face\+Attributes}(\+\_\+i)~enum \{ Face\+Attributes = \+\_\+i \}}\label{a01975_a75f0d731abf2489208086aac5147eefc}

\begin{DoxyCompactList}\small\item\em Macro for defining the face attributes. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\hypertarget{a01975_aa5146d858418fcb93715406a6ce8e30f}{\#define \hyperlink{a01975_aa5146d858418fcb93715406a6ce8e30f}{Vertex\+Traits}~template $<$class Base, class Refs$>$ struct Vertex\+T \+: public Base}\label{a01975_aa5146d858418fcb93715406a6ce8e30f}

\begin{DoxyCompactList}\small\item\em Macro for defining the vertex traits. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\hypertarget{a01975_a223434df0f07f8e05b89324094fc1de8}{\#define \hyperlink{a01975_a223434df0f07f8e05b89324094fc1de8}{Halfedge\+Traits}~template $<$class Base, class Refs$>$ struct Halfedge\+T \+: public Base}\label{a01975_a223434df0f07f8e05b89324094fc1de8}

\begin{DoxyCompactList}\small\item\em Macro for defining the halfedge traits. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\hypertarget{a01975_adbd10edc9787f8347769a11391896d9e}{\#define \hyperlink{a01975_adbd10edc9787f8347769a11391896d9e}{Edge\+Traits}~template $<$class Base, class Refs$>$ struct Edge\+T \+: public Base}\label{a01975_adbd10edc9787f8347769a11391896d9e}

\begin{DoxyCompactList}\small\item\em Macro for defining the edge traits. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\hypertarget{a01975_a48a58bb27b065ea6b5f6e973756f1800}{\#define \hyperlink{a01975_a48a58bb27b065ea6b5f6e973756f1800}{Face\+Traits}~template $<$class Base, class Refs$>$ struct Face\+T \+: public Base}\label{a01975_a48a58bb27b065ea6b5f6e973756f1800}

\begin{DoxyCompactList}\small\item\em Macro for defining the face traits. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\#define \hyperlink{a01975_a746c83f2828928d4e7c4de0b2613e396}{O\+M\+\_\+\+Merge\+\_\+\+Traits}(\+\_\+\+S1, \+\_\+\+S2, \+\_\+\+D)~typedef \hyperlink{a00805}{Open\+Mesh\+::\+Merge\+Traits}$<$\+\_\+\+S1, \+\_\+\+S2$>$\+::Result \+\_\+\+D;
\item 
\#define \hyperlink{a01975_a97a9676df79fe2881136f983f3cf3b05}{O\+M\+\_\+\+Merge\+\_\+\+Traits\+\_\+\+In\+\_\+\+Template}(\+\_\+\+S1, \+\_\+\+S2, \+\_\+\+D)~typedef typename \hyperlink{a00805}{Open\+Mesh\+::\+Merge\+Traits}$<$\+\_\+\+S1, \+\_\+\+S2$>$\+::Result \+\_\+\+D;
\end{DoxyCompactItemize}


\subsection{Detailed Description}
This file defines the default traits and some convenience macros. 

Definition in file \hyperlink{a01975_source}{Traits.\+hh}.



\subsection{Macro Definition Documentation}
\hypertarget{a01975_a746c83f2828928d4e7c4de0b2613e396}{\index{Core/\+Mesh/\+Traits.\+hh@{Core/\+Mesh/\+Traits.\+hh}!O\+M\+\_\+\+Merge\+\_\+\+Traits@{O\+M\+\_\+\+Merge\+\_\+\+Traits}}
\index{O\+M\+\_\+\+Merge\+\_\+\+Traits@{O\+M\+\_\+\+Merge\+\_\+\+Traits}!Core/\+Mesh/\+Traits.\+hh@{Core/\+Mesh/\+Traits.\+hh}}
\subsubsection[{O\+M\+\_\+\+Merge\+\_\+\+Traits}]{\setlength{\rightskip}{0pt plus 5cm}\#define O\+M\+\_\+\+Merge\+\_\+\+Traits(
\begin{DoxyParamCaption}
\item[{}]{\+\_\+\+S1, }
\item[{}]{\+\_\+\+S2, }
\item[{}]{\+\_\+\+D}
\end{DoxyParamCaption}
)~typedef {\bf Open\+Mesh\+::\+Merge\+Traits}$<$\+\_\+\+S1, \+\_\+\+S2$>$\+::Result \+\_\+\+D;}}\label{a01975_a746c83f2828928d4e7c4de0b2613e396}
Macro for merging two traits classes \+\_\+\+S1 and \+\_\+\+S2 into one traits class \+\_\+\+D. Note that in case of ambiguities class \+\_\+\+S1 overrides \+\_\+\+S2, especially the point/normal/color/texcoord type to be used is taken from \+\_\+\+S1\+::\+Point / \+\_\+\+S1\+::\+Normal / \+\_\+\+S1\+::\+Color / \+\_\+\+S1\+::\+Tex\+Coord 

Definition at line 228 of file Traits.\+hh.

\hypertarget{a01975_a97a9676df79fe2881136f983f3cf3b05}{\index{Core/\+Mesh/\+Traits.\+hh@{Core/\+Mesh/\+Traits.\+hh}!O\+M\+\_\+\+Merge\+\_\+\+Traits\+\_\+\+In\+\_\+\+Template@{O\+M\+\_\+\+Merge\+\_\+\+Traits\+\_\+\+In\+\_\+\+Template}}
\index{O\+M\+\_\+\+Merge\+\_\+\+Traits\+\_\+\+In\+\_\+\+Template@{O\+M\+\_\+\+Merge\+\_\+\+Traits\+\_\+\+In\+\_\+\+Template}!Core/\+Mesh/\+Traits.\+hh@{Core/\+Mesh/\+Traits.\+hh}}
\subsubsection[{O\+M\+\_\+\+Merge\+\_\+\+Traits\+\_\+\+In\+\_\+\+Template}]{\setlength{\rightskip}{0pt plus 5cm}\#define O\+M\+\_\+\+Merge\+\_\+\+Traits\+\_\+\+In\+\_\+\+Template(
\begin{DoxyParamCaption}
\item[{}]{\+\_\+\+S1, }
\item[{}]{\+\_\+\+S2, }
\item[{}]{\+\_\+\+D}
\end{DoxyParamCaption}
)~typedef typename {\bf Open\+Mesh\+::\+Merge\+Traits}$<$\+\_\+\+S1, \+\_\+\+S2$>$\+::Result \+\_\+\+D;}}\label{a01975_a97a9676df79fe2881136f983f3cf3b05}
Macro for merging two traits classes \+\_\+\+S1 and \+\_\+\+S2 into one traits class \+\_\+\+D. Same as O\+M\+\_\+\+Merge\+\_\+\+Traits, but this can be used inside template classes. 

Definition at line 236 of file Traits.\+hh.

