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 = nullptr) { return (FrontIterator(this, true, seed)); } \
37 virtual ConstFrontIterator BeginFront(QEPrimalType * seed) const { return (ConstFrontIterator(this, true, seed)); } \
39 virtual FrontIterator EndFront() { return (FrontIterator(this, false)); } \
41 virtual ConstFrontIterator EndFront() const { return (ConstFrontIterator(this, false)); } \
43 virtual FrontDualIterator BeginDualFront(QEDualType * seed = (QEDualType *)0) \
45 return (FrontDualIterator(this, true, seed)); \
48 virtual ConstFrontDualIterator BeginDualFront(QEDualType * seed) const \
50 return (ConstFrontDualIterator(this, true, seed)); \
53 virtual FrontDualIterator EndDualFront() { return (FrontDualIterator(this, false)); } \
55 virtual ConstFrontDualIterator EndDualFront() const { return (ConstFrontDualIterator(this, false)); } \
57 ITK_MACROEND_NOOP_STATEMENT
74template <
typename TMesh,
typename TQE>
118 return (m_Edge == r.
m_Edge);
127 return (m_Cost < r.
m_Cost);
184 return (this->
operator++());
235template <
typename TMesh,
typename TQE>
255 return (this->m_CurrentEdge);
266template <
typename TMesh,
typename TQE =
typename TMesh::QEType>
281 bool itkNotUsed(start) =
true,
298 return (this->m_CurrentEdge);
303#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.
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
QuadEdgeMeshFrontBaseIterator(MeshType *mesh=nullptr, bool start=true, QEType *seed=nullptr)
Non const quad edge front iterator.
QuadEdgeMeshFrontIterator(MeshType *mesh=(MeshType *) 0, bool start=true, QEType *seed=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)