00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkQuadEdgeMeshEulerOperatorFlipEdgeFunction_h
00018 #define __itkQuadEdgeMeshEulerOperatorFlipEdgeFunction_h
00019
00020 #include "itkQuadEdgeMeshFunctionBase.h"
00021
00022 namespace itk
00023 {
00037 template < class TMesh, class TQEType >
00038 class ITK_EXPORT QuadEdgeMeshEulerOperatorFlipEdgeFunction :
00039 public QuadEdgeMeshFunctionBase< TMesh, TQEType* >
00040 {
00041 public:
00042
00044 typedef QuadEdgeMeshEulerOperatorFlipEdgeFunction Self;
00045 typedef QuadEdgeMeshFunctionBase< TMesh, TQEType* > Superclass;
00046 typedef SmartPointer< Self > Pointer;
00047 typedef SmartPointer< const Self > ConstPointer;
00048
00049 itkNewMacro( Self );
00051 itkTypeMacro( QuadEdgeMeshEulerOperatorFlipEdgeFunction,
00052 QuadEdgeMeshFunctionBase );
00053
00055 typedef TQEType QEType;
00056
00057 typedef typename Superclass::MeshType MeshType;
00058 typedef typename Superclass::OutputType OutputType;
00059
00060 enum EdgeStatusType
00061 {
00062 STANDARD_CONFIG = 0,
00063 EDGE_NULL,
00064 MESH_NULL,
00065 NON_INTERNAL_EDGE,
00066 NON_TRIANGULAR_RIGHT_FACE,
00067 NON_TRIANGULAR_LEFT_FACE,
00068 EXISTING_OPPOSITE_EDGE
00069 };
00070
00072 virtual OutputType Evaluate( QEType* h );
00073
00074 itkGetMacro( EdgeStatus, EdgeStatusType );
00075
00076 protected:
00077 QuadEdgeMeshEulerOperatorFlipEdgeFunction();
00078 ~QuadEdgeMeshEulerOperatorFlipEdgeFunction(){}
00079
00080 void PrintSelf(std::ostream& os, Indent indent) const;
00081 EdgeStatusType m_EdgeStatus;
00082
00083 void CheckStatus( QEType* h );
00084
00085 OutputType Process( QEType* h );
00086
00087 private:
00088
00089 QuadEdgeMeshEulerOperatorFlipEdgeFunction(const Self& );
00090
00091 void operator=(const Self& );
00092
00093 };
00094
00095 }
00096
00097 #include "itkQuadEdgeMeshEulerOperatorFlipEdgeFunction.txx"
00098
00099 #endif
00100
00101
00102