00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkQuadEdgeMeshExtendedTraits_h
00019 #define __itkQuadEdgeMeshExtendedTraits_h
00020
00021 #include "itkQuadEdgeCellTraitsInfo.h"
00022 #include <itkMapContainer.h>
00023 #include <set>
00024
00025 namespace itk
00026 {
00027
00061 template<
00062 typename TPixelType = float,
00063 unsigned int VPointDimension = 3,
00064 unsigned int VMaxTopologicalDimension = VPointDimension,
00065 typename TCoordRep = float,
00066 typename TInterpolationWeightType = float,
00067 typename TCellPixelType = TPixelType,
00068 typename TPData = bool,
00069 typename TDData = bool
00070 >
00071 class QuadEdgeMeshExtendedTraits
00072 {
00073 public:
00074 typedef QuadEdgeMeshExtendedTraits Self;
00075
00077 typedef TCoordRep CoordRepType;
00078 typedef TPixelType PixelType;
00079 typedef TPData PrimalDataType;
00080 typedef TDData DualDataType;
00081 typedef TCellPixelType CellPixelType;
00082
00084 itkStaticConstMacro( PointDimension, unsigned int, VPointDimension );
00085 itkStaticConstMacro( MaxTopologicalDimension, unsigned int,
00086 VPointDimension );
00088
00089 typedef TInterpolationWeightType InterpolationWeightType;
00090
00093 typedef unsigned long PointIdentifier;
00094
00097 typedef unsigned long CellIdentifier;
00098
00102 typedef unsigned long CellFeatureIdentifier;
00103
00106 typedef std::set< CellIdentifier > UsingCellsContainer;
00107
00110 typedef std::set< CellIdentifier > PointCellLinksContainer;
00111
00113 typedef GeometricalQuadEdge<
00114 PointIdentifier, CellIdentifier,
00115 PrimalDataType, DualDataType > QEPrimal;
00116 typedef typename QEPrimal::DualType QEDual;
00117 typedef typename QEPrimal::OriginRefType VertexRefType;
00118 typedef typename QEPrimal::DualOriginRefType FaceRefType;
00119
00123 typedef QuadEdgeMeshPoint<
00124 CoordRepType, VPointDimension, QEPrimal > PointType;
00125
00126 typedef Point< CoordRepType, VPointDimension > PointHashType;
00127
00130 typedef MapContainer< PointIdentifier, PointType > PointsContainer;
00131
00133 typedef QuadEdgeMeshCellTraitsInfo<
00134 VPointDimension, CoordRepType,
00135 InterpolationWeightType, PointIdentifier,
00136 CellIdentifier, CellFeatureIdentifier,
00137 PointType, PointsContainer,
00138 UsingCellsContainer, QEPrimal > CellTraits;
00139
00141 typedef CellInterface< CellPixelType, CellTraits > CellType;
00142 typedef typename CellType::CellAutoPointer CellAutoPointer;
00143
00145 typedef MapContainer< PointIdentifier,
00146 PointCellLinksContainer > CellLinksContainer;
00147 typedef MapContainer< CellIdentifier, CellType* > CellsContainer;
00148 typedef MapContainer< PointIdentifier, PixelType > PointDataContainer;
00149 typedef MapContainer< CellIdentifier, CellPixelType > CellDataContainer;
00150
00152 typedef typename PointType::VectorType VectorType;
00153 };
00154
00155 }
00156
00157 #endif
00158
00159
00160