00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkQuadEdgeMeshTraits_h
00019 #define __itkQuadEdgeMeshTraits_h
00020
00021 #include <set>
00022 #include <itkCellInterface.h>
00023 #include <itkMapContainer.h>
00024 #include "itkQuadEdgeMeshPoint.h"
00025 #include "itkGeometricalQuadEdge.h"
00026 #include "itkQuadEdgeCellTraitsInfo.h"
00027
00028 namespace itk
00029 {
00044 template< typename TPixel, unsigned int VPointDimension,
00045 typename TPData, typename TDData,
00046 typename TCoordRep=float, typename TInterpolationWeight=float >
00047 class QuadEdgeMeshTraits
00048 {
00049 public:
00051 typedef QuadEdgeMeshTraits Self;
00052 typedef TPixel PixelType;
00053 typedef TPixel CellPixelType;
00054 typedef TCoordRep CoordRepType;
00055 typedef TInterpolationWeight InterpolationWeightType;
00056
00057 itkStaticConstMacro( PointDimension, unsigned int, VPointDimension );
00058 itkStaticConstMacro( MaxTopologicalDimension, unsigned int,
00059 VPointDimension );
00060
00061 typedef unsigned long PointIdentifier;
00062 typedef unsigned long CellIdentifier;
00063 typedef unsigned char CellFeatureIdentifier;
00064
00065 typedef std::set< CellIdentifier > UsingCellsContainer;
00066 typedef std::set< CellIdentifier > PointCellLinksContainer;
00067
00069 typedef TPData PrimalDataType;
00070 typedef TDData DualDataType;
00071 typedef GeometricalQuadEdge< PointIdentifier, CellIdentifier,
00072 PrimalDataType, DualDataType > QEPrimal;
00073
00074 typedef typename QEPrimal::DualType QEDual;
00077 typedef typename QEPrimal::OriginRefType VertexRefType;
00078 typedef typename QEPrimal::DualOriginRefType FaceRefType;
00079
00082 typedef Point< CoordRepType, VPointDimension > PointHashType;
00083
00085 typedef QuadEdgeMeshPoint<
00086 CoordRepType, VPointDimension, QEPrimal > PointType;
00087 typedef MapContainer< PointIdentifier, PointType > PointsContainer;
00088
00090 typedef QuadEdgeMeshCellTraitsInfo<
00091 VPointDimension, CoordRepType,
00092 InterpolationWeightType, PointIdentifier,
00093 CellIdentifier, CellFeatureIdentifier,
00094 PointType, PointsContainer,
00095 UsingCellsContainer, QEPrimal > CellTraits;
00096 typedef CellInterface< CellPixelType, CellTraits > CellType;
00097 typedef typename CellType::CellAutoPointer CellAutoPointer;
00098
00100 typedef MapContainer< PointIdentifier,
00101 PointCellLinksContainer > CellLinksContainer;
00102 typedef MapContainer< CellIdentifier, CellType* > CellsContainer;
00103 typedef MapContainer< PointIdentifier, PixelType > PointDataContainer;
00104 typedef MapContainer< CellIdentifier, CellPixelType > CellDataContainer;
00105
00107 typedef typename PointType::VectorType VectorType;
00108 };
00109
00110 }
00111
00112 #endif
00113