18 #ifndef itkQuadEdgeMeshFrontIterator_h
19 #define itkQuadEdgeMeshFrontIterator_h
24 #define itkQEDefineFrontIteratorMethodsMacro(MeshTypeArg) \
28 typedef typename MeshTypeArg::QEDual QEDualType; \
29 typedef typename MeshTypeArg::QEPrimal QEPrimalType; \
30 typedef QuadEdgeMeshFrontIterator< MeshTypeArg, \
31 QEDualType > FrontDualIterator; \
32 typedef QuadEdgeMeshConstFrontIterator< MeshTypeArg, \
34 ConstFrontDualIterator; \
35 typedef QuadEdgeMeshFrontIterator< MeshTypeArg, \
36 QEPrimalType > FrontIterator; \
37 typedef QuadEdgeMeshConstFrontIterator< MeshTypeArg, \
41 virtual FrontIterator BeginFront(QEPrimalType * seed = (QEPrimalType *)0) \
43 return ( FrontIterator(this, true, seed) ); \
46 virtual ConstFrontIterator BeginFront(QEPrimalType * seed) const \
47 { return ( ConstFrontIterator(this, true, seed) ); } \
49 virtual FrontIterator EndFront() \
51 return ( FrontIterator(this, false) ); \
54 virtual ConstFrontIterator EndFront() const \
55 { return ( ConstFrontIterator(this, false) ); } \
57 virtual FrontDualIterator BeginDualFront(QEDualType * seed = (QEDualType *)0) \
59 return ( FrontDualIterator(this, true, seed) ); \
62 virtual ConstFrontDualIterator BeginDualFront(QEDualType * seed) const \
63 { return ( ConstFrontDualIterator(this, true, seed) ); } \
65 virtual FrontDualIterator EndDualFront() \
67 return ( FrontDualIterator(this, false) ); \
70 virtual ConstFrontDualIterator EndDualFront() const \
71 { return ( ConstFrontDualIterator(this, false) ); }
88 template<
typename TMesh,
typename TQE >
124 {
return ( m_Edge == r.
m_Edge ); }
126 {
return ( m_Edge != r.
m_Edge ); }
128 {
return ( m_Cost < r.
m_Cost ); }
174 return ( m_Start == r.
m_Start );
179 return ( m_Start == r.
m_Start );
184 return ( !( this->
operator==(r) ) );
189 return ( !( this->
operator==(r) ) );
202 QEType * FindDefaultSeed();
235 template<
typename TMesh,
typename TQE >
264 template<
typename TMesh,
typename TQE =
typename TMesh::QEType >
302 #include "itkQuadEdgeMeshFrontIterator.hxx"
bool operator!=(const Self &r) const
bool operator!=(const FrontAtom &r) const
bool operator==(const FrontAtom &r) const
Self & operator=(const NoConstType &r)
IsVisitedContainerType::Pointer IsVisitedPointerType
Superclass::MeshType MeshType
A wrapper of the STL "map" container.
MapContainer< QEOriginType, bool > IsVisitedContainerType
Self & operator=(const Self &r)
MeshType * GetMesh() const
bool operator==(const Self &r) const
const QEType * Value() const
QuadEdgeMeshFrontIterator Self
QuadEdgeMeshConstFrontIterator Self
IsVisitedPointerType m_IsPointVisited
bool operator<(const FrontAtom &r) const
FrontAtom(QEType *e=(QEType *) 0, const CoordRepType c=0)
QuadEdgeMeshFrontIterator< MeshType, QEType > NoConstType
Front iterator on Mesh class.
Superclass::QEType QEType
Const quad edge mesh front iterator.
QuadEdgeMeshConstFrontIterator(const MeshType *mesh=(MeshType *) 0, bool start=true, QEType *seed=(QEType *) 0)
QuadEdgeMeshFrontBaseIterator< TMesh, TQE > Superclass
MeshType::CoordRepType CoordRepType
QuadEdgeMeshFrontBaseIterator Self
Superclass::MeshType MeshType
virtual ~QuadEdgeMeshFrontIterator()
Superclass::QEType QEType
QuadEdgeMeshFrontIterator(MeshType *mesh=(MeshType *) 0, bool start=true, QEType *seed=(QEType *) 0)
Atomic information associated to each edge of the front.
QEType::OriginRefType QEOriginType
static ITK_CONSTEXPR_VAR double e
The base of the natural logarithm or Euler's number
QuadEdgeMeshFrontBaseIterator< TMesh, TQE > Superclass
Non const quad edge front iterator.
FrontAtom & operator=(const FrontAtom &r)
virtual CoordRepType GetCost(QEType *edge)
FrontType * FrontTypePointer
FrontType::iterator FrontTypeIterator
virtual ~QuadEdgeMeshConstFrontIterator()
std::list< FrontAtom > FrontType