18#ifndef itkQuadEdgeMeshFrontIterator_h
19#define itkQuadEdgeMeshFrontIterator_h
24#define itkQEDefineFrontIteratorMethodsMacro(MeshTypeArg) \
28 using QEDualType = typename MeshTypeArg::QEDual; \
29 using QEPrimalType = typename MeshTypeArg::QEPrimal; \
30 using FrontDualIterator = QuadEdgeMeshFrontIterator<MeshTypeArg, QEDualType>; \
31 using ConstFrontDualIterator = QuadEdgeMeshConstFrontIterator<MeshTypeArg, QEDualType>; \
32 using FrontIterator = QuadEdgeMeshFrontIterator<MeshTypeArg, QEPrimalType>; \
33 using ConstFrontIterator = QuadEdgeMeshConstFrontIterator<MeshTypeArg, QEPrimalType>; \
35 virtual FrontIterator BeginFront(QEPrimalType * seed = (QEPrimalType *)nullptr) \
37 return (FrontIterator(this, true, seed)); \
40 virtual ConstFrontIterator BeginFront(QEPrimalType * seed) const { return (ConstFrontIterator(this, true, seed)); } \
42 virtual FrontIterator EndFront() { return (FrontIterator(this, false)); } \
44 virtual ConstFrontIterator EndFront() const { return (ConstFrontIterator(this, false)); } \
46 virtual FrontDualIterator BeginDualFront(QEDualType * seed = (QEDualType *)0) \
48 return (FrontDualIterator(this, true, seed)); \
51 virtual ConstFrontDualIterator BeginDualFront(QEDualType * seed) const \
53 return (ConstFrontDualIterator(this, true, seed)); \
56 virtual FrontDualIterator EndDualFront() { return (FrontDualIterator(this, false)); } \
58 virtual ConstFrontDualIterator EndDualFront() const { return (ConstFrontDualIterator(this, false)); } \
60 ITK_MACROEND_NOOP_STATEMENT
77template <
typename TMesh,
typename TQE>
121 return (m_Edge == r.
m_Edge);
130 return (m_Cost < r.
m_Cost);
189 return (this->
operator++());
240template <
typename TMesh,
typename TQE>
260 return (this->m_CurrentEdge);
271template <
typename TMesh,
typename TQE =
typename TMesh::QEType>
286 bool itkNotUsed(start) =
true,
303 return (this->m_CurrentEdge);
308#include "itkQuadEdgeMeshFrontIterator.hxx"
A wrapper of the STL "map" container.
Const quad edge mesh front iterator.
const QEType * Value() const
~QuadEdgeMeshConstFrontIterator() override=default
QuadEdgeMeshConstFrontIterator(const MeshType *=(MeshType *) 0, bool=true, QEType *=(QEType *) nullptr)
Self & operator=(const NoConstType &r)
Atomic information associated to each edge of the front.
FrontAtom & operator=(const FrontAtom &r)
ITK_UNEQUAL_OPERATOR_MEMBER_FUNCTION(FrontAtom)
virtual ~FrontAtom()=default
bool operator==(const FrontAtom &r) const
FrontAtom(QEType *e=(QEType *) 0, const CoordRepType c=0)
Front iterator on Mesh class.
QuadEdgeMeshFrontBaseIterator(MeshType *mesh=(MeshType *) nullptr, bool start=true, QEType *seed=(QEType *) nullptr)
typename FrontType::iterator FrontTypeIterator
typename MeshType::CoordRepType CoordRepType
IsVisitedPointerType m_IsPointVisited
std::list< FrontAtom > FrontType
typename IsVisitedContainerType::Pointer IsVisitedPointerType
QEType * FindDefaultSeed()
typename QEType::OriginRefType QEOriginType
ITK_UNEQUAL_OPERATOR_MEMBER_FUNCTION(Self)
bool operator==(const Self &r) const
MeshType * GetMesh() const
virtual CoordRepType GetCost(QEType *)
virtual ~QuadEdgeMeshFrontBaseIterator()
Self & operator=(const Self &r)
FrontType * FrontTypePointer
Non const quad edge front iterator.
QuadEdgeMeshFrontIterator(MeshType *mesh=(MeshType *) 0, bool start=true, QEType *seed=(QEType *) nullptr)
~QuadEdgeMeshFrontIterator() override=default
SmartPointer< Self > Pointer
static constexpr double e
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
bool operator<(const Index< VDimension > &one, const Index< VDimension > &two)