\hypertarget{Core_2Mesh_2Traits_8hh}{}\section{Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Core/\+Mesh/\+Traits.hh File Reference}
\label{Core_2Mesh_2Traits_8hh}\index{Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Core/\+Mesh/\+Traits.\+hh@{Open\+Flipper/libs\+\_\+required/\+Open\+Mesh/src/\+Open\+Mesh/\+Core/\+Mesh/\+Traits.\+hh}}
{\ttfamily \#include $<$Open\+Mesh/\+Core/\+System/config.\+h$>$}\newline
{\ttfamily \#include $<$Open\+Mesh/\+Core/\+Geometry/\+Vector\+T.\+hh$>$}\newline
{\ttfamily \#include $<$Open\+Mesh/\+Core/\+Mesh/\+Attributes.\+hh$>$}\newline
{\ttfamily \#include $<$Open\+Mesh/\+Core/\+Mesh/\+Handles.\+hh$>$}\newline
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{structOpenMesh_1_1DefaultTraits}{Open\+Mesh\+::\+Default\+Traits}
\item 
class \hyperlink{structOpenMesh_1_1DefaultTraitsDouble}{Open\+Mesh\+::\+Default\+Traits\+Double}
\item 
struct \hyperlink{structOpenMesh_1_1MergeTraits}{Open\+Mesh\+::\+Merge\+Traits$<$ \+\_\+\+Traits1, \+\_\+\+Traits2 $>$}
\end{DoxyCompactItemize}
\subsection*{Namespaces}
\begin{DoxyCompactItemize}
\item 
 \hyperlink{namespaceOpenMesh}{Open\+Mesh}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{Core_2Mesh_2Traits_8hh_a427ff443d5e47c76b9c45a29213e63db}\label{Core_2Mesh_2Traits_8hh_a427ff443d5e47c76b9c45a29213e63db}} 
\#define \hyperlink{Core_2Mesh_2Traits_8hh_a427ff443d5e47c76b9c45a29213e63db}{Vertex\+Attributes}(\+\_\+i)~enum \{ Vertex\+Attributes = \+\_\+i \}
\begin{DoxyCompactList}\small\item\em Macro for defining the vertex attributes. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{Core_2Mesh_2Traits_8hh_a72688ff15a275a41a98159ce72eaab4f}\label{Core_2Mesh_2Traits_8hh_a72688ff15a275a41a98159ce72eaab4f}} 
\#define \hyperlink{Core_2Mesh_2Traits_8hh_a72688ff15a275a41a98159ce72eaab4f}{Halfedge\+Attributes}(\+\_\+i)~enum \{ Halfedge\+Attributes = \+\_\+i \}
\begin{DoxyCompactList}\small\item\em Macro for defining the halfedge attributes. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{Core_2Mesh_2Traits_8hh_a8126b6d66b0b65c5e23e8856c6092c28}\label{Core_2Mesh_2Traits_8hh_a8126b6d66b0b65c5e23e8856c6092c28}} 
\#define \hyperlink{Core_2Mesh_2Traits_8hh_a8126b6d66b0b65c5e23e8856c6092c28}{Edge\+Attributes}(\+\_\+i)~enum \{ Edge\+Attributes = \+\_\+i \}
\begin{DoxyCompactList}\small\item\em Macro for defining the edge attributes. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{Core_2Mesh_2Traits_8hh_a75f0d731abf2489208086aac5147eefc}\label{Core_2Mesh_2Traits_8hh_a75f0d731abf2489208086aac5147eefc}} 
\#define \hyperlink{Core_2Mesh_2Traits_8hh_a75f0d731abf2489208086aac5147eefc}{Face\+Attributes}(\+\_\+i)~enum \{ Face\+Attributes = \+\_\+i \}
\begin{DoxyCompactList}\small\item\em Macro for defining the face attributes. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{Core_2Mesh_2Traits_8hh_aa5146d858418fcb93715406a6ce8e30f}\label{Core_2Mesh_2Traits_8hh_aa5146d858418fcb93715406a6ce8e30f}} 
\#define \hyperlink{Core_2Mesh_2Traits_8hh_aa5146d858418fcb93715406a6ce8e30f}{Vertex\+Traits}~template $<$class Base, class Refs$>$ struct VertexT \+: public Base
\begin{DoxyCompactList}\small\item\em Macro for defining the vertex traits. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{Core_2Mesh_2Traits_8hh_a223434df0f07f8e05b89324094fc1de8}\label{Core_2Mesh_2Traits_8hh_a223434df0f07f8e05b89324094fc1de8}} 
\#define \hyperlink{Core_2Mesh_2Traits_8hh_a223434df0f07f8e05b89324094fc1de8}{Halfedge\+Traits}~template $<$class Base, class Refs$>$ struct HalfedgeT \+: public Base
\begin{DoxyCompactList}\small\item\em Macro for defining the halfedge traits. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{Core_2Mesh_2Traits_8hh_adbd10edc9787f8347769a11391896d9e}\label{Core_2Mesh_2Traits_8hh_adbd10edc9787f8347769a11391896d9e}} 
\#define \hyperlink{Core_2Mesh_2Traits_8hh_adbd10edc9787f8347769a11391896d9e}{Edge\+Traits}~template $<$class Base, class Refs$>$ struct EdgeT \+: public Base
\begin{DoxyCompactList}\small\item\em Macro for defining the edge traits. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{Core_2Mesh_2Traits_8hh_a48a58bb27b065ea6b5f6e973756f1800}\label{Core_2Mesh_2Traits_8hh_a48a58bb27b065ea6b5f6e973756f1800}} 
\#define \hyperlink{Core_2Mesh_2Traits_8hh_a48a58bb27b065ea6b5f6e973756f1800}{Face\+Traits}~template $<$class Base, class Refs$>$ struct FaceT \+: public Base
\begin{DoxyCompactList}\small\item\em Macro for defining the face traits. See \hyperlink{mesh_type}{Specifying your My\+Mesh}. \end{DoxyCompactList}\item 
\#define \hyperlink{Core_2Mesh_2Traits_8hh_a746c83f2828928d4e7c4de0b2613e396}{O\+M\+\_\+\+Merge\+\_\+\+Traits}(\+\_\+\+S1,  \+\_\+\+S2,  \+\_\+D)~typedef \hyperlink{structOpenMesh_1_1MergeTraits}{Open\+Mesh\+::\+Merge\+Traits}$<$\+\_\+\+S1, \+\_\+\+S2$>$\+::Result \+\_\+D;
\item 
\#define \hyperlink{Core_2Mesh_2Traits_8hh_a97a9676df79fe2881136f983f3cf3b05}{O\+M\+\_\+\+Merge\+\_\+\+Traits\+\_\+\+In\+\_\+\+Template}(\+\_\+\+S1,  \+\_\+\+S2,  \+\_\+D)~typedef typename \hyperlink{structOpenMesh_1_1MergeTraits}{Open\+Mesh\+::\+Merge\+Traits}$<$\+\_\+\+S1, \+\_\+\+S2$>$\+::Result \+\_\+D;
\end{DoxyCompactItemize}


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

\subsection{Macro Definition Documentation}
\mbox{\Hypertarget{Core_2Mesh_2Traits_8hh_a746c83f2828928d4e7c4de0b2613e396}\label{Core_2Mesh_2Traits_8hh_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{\texorpdfstring{O\+M\+\_\+\+Merge\+\_\+\+Traits}{OM\_Merge\_Traits}}
{\footnotesize\ttfamily \#define O\+M\+\_\+\+Merge\+\_\+\+Traits(\begin{DoxyParamCaption}\item[{}]{\+\_\+\+S1,  }\item[{}]{\+\_\+\+S2,  }\item[{}]{\+\_\+D }\end{DoxyParamCaption})~typedef \hyperlink{structOpenMesh_1_1MergeTraits}{Open\+Mesh\+::\+Merge\+Traits}$<$\+\_\+\+S1, \+\_\+\+S2$>$\+::Result \+\_\+D;}

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 241 of file Traits.\+hh.

\mbox{\Hypertarget{Core_2Mesh_2Traits_8hh_a97a9676df79fe2881136f983f3cf3b05}\label{Core_2Mesh_2Traits_8hh_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{\texorpdfstring{O\+M\+\_\+\+Merge\+\_\+\+Traits\+\_\+\+In\+\_\+\+Template}{OM\_Merge\_Traits\_In\_Template}}
{\footnotesize\ttfamily \#define O\+M\+\_\+\+Merge\+\_\+\+Traits\+\_\+\+In\+\_\+\+Template(\begin{DoxyParamCaption}\item[{}]{\+\_\+\+S1,  }\item[{}]{\+\_\+\+S2,  }\item[{}]{\+\_\+D }\end{DoxyParamCaption})~typedef typename \hyperlink{structOpenMesh_1_1MergeTraits}{Open\+Mesh\+::\+Merge\+Traits}$<$\+\_\+\+S1, \+\_\+\+S2$>$\+::Result \+\_\+D;}

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 249 of file Traits.\+hh.

