18 #ifndef itkQuadEdgeMeshDecimationCriteria_h
19 #define itkQuadEdgeMeshDecimationCriteria_h
31 template<
typename TMesh,
33 typename TMeasure = double,
34 typename TPriorityQueueWrapper =
35 MinPriorityQueueElementWrapper<
typename TMesh::QEType *,
36 std::pair< bool, TMeasure > > >
52 using PriorityType =
typename PriorityQueueWrapperType::ElementPriorityType;
66 itkGetConstMacro(TopologicalChange,
bool);
67 itkSetMacro(TopologicalChange,
bool);
79 this->
m_MeasureBound = itk::NumericTraits< MeasureType >::ZeroValue();
86 os << indent <<
"TopologicalChange: "
89 os << indent <<
"SizeCriterion: "
92 os << indent <<
"NumberOfElements: "
95 os << indent <<
"MeasureBound: "
117 template<
typename TMesh,
119 typename TMeasure = double,
120 typename TPriorityQueueWrapper =
122 std::pair< bool, TMeasure > > >
125 TMeasure, TPriorityQueueWrapper >
132 TMesh, TElement, TMeasure, TPriorityQueueWrapper >;
167 template<
typename TMesh,
169 typename TMeasure = double,
170 typename TPriorityQueueWrapper =
171 MinPriorityQueueElementWrapper<
typename TMesh::QEType *,
172 std::pair< bool, TMeasure > > >
175 TMeasure, TPriorityQueueWrapper >
182 TMeasure, TPriorityQueueWrapper >;
199 const MeasureType & itkNotUsed(iValue) )
const override
218 template<
typename TMesh,
220 typename TMeasure = double,
221 typename TPriorityQueueWrapper =
222 MinPriorityQueueElementWrapper<
typename TMesh::QEType *,
223 std::pair< bool, TMeasure > > >
226 TMeasure, TPriorityQueueWrapper >
233 TMeasure, TPriorityQueueWrapper >;
269 template<
typename TMesh,
271 typename TMeasure = double,
272 typename TPriorityQueueWrapper =
273 MaxPriorityQueueElementWrapper<
typename TMesh::QEType *,
274 std::pair< bool, TMeasure > > >
277 TMeasure, TPriorityQueueWrapper >
284 TMeasure, TPriorityQueueWrapper >;
void operator=(const Self &)=delete
NumberOfFacesCriterion Self
Light weight base class for most itk classes.
bool is_satisfied(MeshType *iMesh, const ElementType &, const MeasureType &) const override
void SetNumberOfElements(const SizeValueType &numberOfElements)
MinMeasureBoundCriterion()=default
bool is_satisfied(MeshType *, const ElementType &, const MeasureType &iValue) const override
unsigned long SizeValueType
~QuadEdgeMeshDecimationCriterion() override=default
SizeValueType m_NumberOfElements
typename MeshType::CellsContainerConstIterator CellsContainerConstIterator
void operator=(const Self &)=delete
typename MeshType::CellsContainerConstIterator CellsContainerConstIterator
~MinMeasureBoundCriterion()=default
QuadEdgeMeshDecimationCriterion()
MinMeasureBoundCriterion Self
void operator=(const Self &)=delete
NumberOfFacesCriterion()=default
typename PriorityQueueWrapperType::ElementPriorityType PriorityType
void SetMeasureBound(const MeasureType &bound)
MaxMeasureBoundCriterion Self
MaxMeasureBoundCriterion()
void PrintSelf(std::ostream &os, Indent indent) const override
MeasureType m_MeasureBound
SizeValueType IdentifierType
bool is_satisfied(MeshType *iMesh, const ElementType &, const MeasureType &) const
void PrintSelf(std::ostream &os, Indent indent) const override
virtual bool is_satisfied(MeshType *iMesh, const ElementType &iElement, const MeasureType &iValue) const =0
NumberOfPointsCriterion Self
~MaxMeasureBoundCriterion() override=default
TPriorityQueueWrapper PriorityQueueWrapperType
void operator=(const Self &)=delete
bool is_satisfied(MeshType *, const ElementType &, const MeasureType &iValue) const
Control indentation during Print() invocation.
~NumberOfFacesCriterion() override=default
NumberOfPointsCriterion()=default
void operator=(const Self &)=delete
Base class for most ITK classes.
typename MeshType::CellsContainerConstIterator CellsContainerConstIterator
~NumberOfPointsCriterion()=default