ITK  6.0.0
Insight Toolkit
itkQuadEdgeMeshEulerOperatorJoinVertexFunction.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 itkQuadEdgeMeshEulerOperatorJoinVertexFunction_h
19#define itkQuadEdgeMeshEulerOperatorJoinVertexFunction_h
20
22
23#include <stack>
24
25namespace itk
26{
56template <typename TMesh, typename TQEType>
58 : public QuadEdgeMeshFunctionBase<TMesh, TQEType *>
59{
60public:
61 ITK_DISALLOW_COPY_AND_MOVE(QuadEdgeMeshEulerOperatorJoinVertexFunction);
62
68
69 itkNewMacro(Self);
71 itkOverrideGetNameOfClassMacro(QuadEdgeMeshEulerOperatorJoinVertexFunction);
72
74 using QEType = TQEType;
75
76 using typename Superclass::MeshType;
77 using typename Superclass::OutputType;
78
79 using PointIdentifier = typename MeshType::PointIdentifier;
80 using CellIdentifier = typename MeshType::CellIdentifier;
81 using FaceRefType = typename MeshType::FaceRefType;
82
84 virtual OutputType
86
88 {
89 STANDARD_CONFIG = 0,
99 EDGE_JOINING_DIFFERENT_BORDERS // 10
100 };
101
102 itkGetConstMacro(OldPointID, PointIdentifier);
103 itkGetConstMacro(EdgeStatus, EdgeStatusType);
104
105protected:
108
109 void
110 PrintSelf(std::ostream & os, Indent indent) const override;
111
112 PointIdentifier m_OldPointID{};
113
114 EdgeStatusType m_EdgeStatus{};
115
122 PointIdentifier
124
131 bool
133
142 bool
143 IsFaceIsolated(QEType * e, const bool iWasLeftFace, std::stack<TQEType *> & oToBeDeleted);
144
145 bool
147
148 bool
150
151 bool
153
155 CheckStatus(QEType * e, std::stack<TQEType *> & oToBeDeleted);
156
157 QEType *
159
160 QEType *
162
163 QEType *
164 ProcessIsolatedFace(QEType * e, std::stack<QEType *> & EdgesToBeDeleted);
165};
166} // end namespace itk
167
168#include "itkQuadEdgeMeshEulerOperatorJoinVertexFunction.hxx"
169
170#endif
Control indentation during Print() invocation.
Definition: itkIndent.h:50
Light weight base class for most itk classes.
Collapse a given edge by joining its dest and its org.
PointIdentifier CommonVertexNeighboor(QEType *e)
void PrintSelf(std::ostream &os, Indent indent) const override
QEType * ProcessIsolatedFace(QEType *e, std::stack< QEType * > &EdgesToBeDeleted)
bool IsFaceIsolated(QEType *e, const bool iWasLeftFace, std::stack< TQEType * > &oToBeDeleted)
~QuadEdgeMeshEulerOperatorJoinVertexFunction() override=default
EdgeStatusType CheckStatus(QEType *e, std::stack< TQEType * > &oToBeDeleted)
Base class for mesh function object modifiers.
static constexpr double e
Definition: itkMath.h:56
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....