ITK  6.0.0
Insight Toolkit
itkQuadEdgeMeshEulerOperatorFlipEdgeFunction.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * https://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef itkQuadEdgeMeshEulerOperatorFlipEdgeFunction_h
19 #define itkQuadEdgeMeshEulerOperatorFlipEdgeFunction_h
20 
22 #include "ITKQuadEdgeMeshExport.h"
23 
24 namespace itk
25 {
33 {
34 public:
39  enum class EdgeStatusType : uint8_t
40  {
41  STANDARD_CONFIG = 0,
42  EDGE_NULL,
43  MESH_NULL,
48  };
49 };
50 // Define how to print enumerations
51 extern ITKQuadEdgeMesh_EXPORT std::ostream &
53 
67 template <typename TMesh, typename TQEType>
68 class ITK_TEMPLATE_EXPORT QuadEdgeMeshEulerOperatorFlipEdgeFunction : public QuadEdgeMeshFunctionBase<TMesh, TQEType *>
69 {
70 public:
71  ITK_DISALLOW_COPY_AND_MOVE(QuadEdgeMeshEulerOperatorFlipEdgeFunction);
72 
78 
79  itkNewMacro(Self);
81  itkOverrideGetNameOfClassMacro(QuadEdgeMeshEulerOperatorFlipEdgeFunction);
82 
84  using QEType = TQEType;
85 
86  using typename Superclass::MeshType;
87  using typename Superclass::OutputType;
88 
90 #if !defined(ITK_LEGACY_REMOVE)
91  // We need to expose the enum values at the class level
92  // for backwards compatibility
93  static constexpr EdgeStatusEnum STANDARD_CONFIG = EdgeStatusEnum::STANDARD_CONFIG;
94  static constexpr EdgeStatusEnum EDGE_NULL = EdgeStatusEnum::EDGE_NULL;
95  static constexpr EdgeStatusEnum MESH_NULL = EdgeStatusEnum::MESH_NULL;
96  static constexpr EdgeStatusEnum NON_INTERNAL_EDGE = EdgeStatusEnum::NON_INTERNAL_EDGE;
97  static constexpr EdgeStatusEnum NON_TRIANGULAR_RIGHT_FACE = EdgeStatusEnum::NON_TRIANGULAR_RIGHT_FACE;
98  static constexpr EdgeStatusEnum NON_TRIANGULAR_LEFT_FACE = EdgeStatusEnum::NON_TRIANGULAR_LEFT_FACE;
99  static constexpr EdgeStatusEnum EXISTING_OPPOSITE_EDGE = EdgeStatusEnum::EXISTING_OPPOSITE_EDGE;
100 #endif
101 
102  virtual OutputType
103  Evaluate(QEType * h);
104 
105  // itkGetConstMacro( EdgeStatus, EdgeStatusType );
106 
107 protected:
109  ~QuadEdgeMeshEulerOperatorFlipEdgeFunction() override = default;
110 
111  void
112  PrintSelf(std::ostream & os, Indent indent) const override;
113 
114  EdgeStatusEnum m_EdgeStatus{ EdgeStatusEnum::STANDARD_CONFIG };
115 
116  void
117  CheckStatus(QEType * h);
118 
119  OutputType
120  Process(QEType * h);
121 };
122 } // end namespace itk
123 
124 #include "itkQuadEdgeMeshEulerOperatorFlipEdgeFunction.hxx"
125 
126 #endif
itk::QuadEdgeMeshEulerOperatorFlipEdgeFunctionEnums::EdgeStatusType::MESH_NULL
itk::QuadEdgeMeshEulerOperatorFlipEdgeFunctionEnums::EdgeStatusType
EdgeStatusType
Definition: itkQuadEdgeMeshEulerOperatorFlipEdgeFunction.h:39
itk::QuadEdgeMeshEulerOperatorFlipEdgeFunctionEnums::EdgeStatusType::NON_TRIANGULAR_LEFT_FACE
itk::QuadEdgeMeshFunctionBase
Base class for mesh function object modifiers.
Definition: itkQuadEdgeMeshFunctionBase.h:55
itk::operator<<
ITKCommon_EXPORT std::ostream & operator<<(std::ostream &out, typename AnatomicalOrientation::CoordinateEnum value)
itk::SmartPointer< Self >
itk::Indent
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itk::QuadEdgeMeshEulerOperatorFlipEdgeFunctionEnums
Contains enumerations for QuadEdgeMeshEulerOperatorFlipEdgeFunction class.
Definition: itkQuadEdgeMeshEulerOperatorFlipEdgeFunction.h:32
itk::QuadEdgeMeshEulerOperatorFlipEdgeFunctionEnums::EdgeStatusType::NON_TRIANGULAR_RIGHT_FACE
itk::LightObject
Light weight base class for most itk classes.
Definition: itkLightObject.h:55
itk::QuadEdgeMeshEulerOperatorFlipEdgeFunction
Flip an edge.
Definition: itkQuadEdgeMeshEulerOperatorFlipEdgeFunction.h:68
itkQuadEdgeMeshFunctionBase.h
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnatomicalOrientation.h:29
itk::QuadEdgeMeshEulerOperatorFlipEdgeFunctionEnums::EdgeStatusType::NON_INTERNAL_EDGE
itk::QuadEdgeMeshEulerOperatorFlipEdgeFunctionEnums::EdgeStatusType::EXISTING_OPPOSITE_EDGE
itk::QuadEdgeMeshEulerOperatorFlipEdgeFunctionEnums::EdgeStatusType::EDGE_NULL
itk::QuadEdgeMeshEulerOperatorFlipEdgeFunction::QEType
TQEType QEType
Definition: itkQuadEdgeMeshEulerOperatorFlipEdgeFunction.h:84
itk::QuadEdgeMeshFunctionBase< TMesh, TQEType * >::OutputType
TQEType * OutputType
Definition: itkQuadEdgeMeshFunctionBase.h:74
itk::QuadEdgeMeshEulerOperatorFlipEdgeFunctionEnums::EdgeStatusType::STANDARD_CONFIG