00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkQuadEdgeMeshTopologyChecker_h
00019 #define __itkQuadEdgeMeshTopologyChecker_h
00020
00021
00022 namespace itk
00023 {
00024
00039 template< class TMesh >
00040 class ITK_EXPORT QuadEdgeMeshTopologyChecker : public Object
00041 {
00042 public:
00043
00044 typedef QuadEdgeMeshTopologyChecker Self;
00045 typedef Object Superclass;
00046 typedef SmartPointer< Self > Pointer;
00047 typedef SmartPointer< const Self > ConstPointer;
00048
00049 typedef TMesh MeshType;
00050
00051 public:
00052 itkNewMacro( Self );
00053 itkTypeMacro( QuadEdgeMeshTopologyChecker, Object );
00054
00055 itkSetConstObjectMacro( Mesh, MeshType );
00056
00057
00058 typedef unsigned long IdentifierType;
00059
00060 itkSetMacro( ExpectedNumberOfPoints, IdentifierType );
00061 itkSetMacro( ExpectedNumberOfEdges, IdentifierType );
00062 itkSetMacro( ExpectedNumberOfFaces, IdentifierType );
00063 itkSetMacro( ExpectedNumberOfBoundaries, IdentifierType );
00064 itkSetMacro( ExpectedGenus, IdentifierType );
00065
00066 bool ValidateEulerCharacteristic() const;
00067
00068 protected:
00069 QuadEdgeMeshTopologyChecker();
00070 void PrintSelf(std::ostream& os, Indent indent) const;
00071
00072 private:
00073 QuadEdgeMeshTopologyChecker( const Self& );
00074 void operator=( const Self& );
00075
00076 typedef typename MeshType::ConstPointer MeshPointer;
00077
00078 MeshPointer m_Mesh;
00079
00080 IdentifierType m_ExpectedNumberOfPoints;
00081 IdentifierType m_ExpectedNumberOfEdges;
00082 IdentifierType m_ExpectedNumberOfFaces;
00083 IdentifierType m_ExpectedNumberOfBoundaries;
00084 IdentifierType m_ExpectedGenus;
00085 };
00086
00087 }
00088
00089 #ifndef ITK_MANUAL_INSTANTIATION
00090 #include "itkQuadEdgeMeshTopologyChecker.txx"
00091 #endif
00092
00093 #endif
00094