18 #ifndef __itkQuadEdgeMesh_h
19 #define __itkQuadEdgeMesh_h
21 #include "vcl_cstdarg.h"
112 template<
typename TPixel,
unsigned int VDimension,
113 typename TTraits = QuadEdgeMeshTraits< TPixel, VDimension, bool, bool > >
129 itkStaticConstMacro(PointDimension,
unsigned int,
130 Traits::PointDimension);
131 itkStaticConstMacro(MaxTopologicalDimension,
unsigned int,
132 Traits::MaxTopologicalDimension);
150 itkGetStaticConstMacro(PointDimension)];
154 typedef typename Superclass::PointDataContainerPointer
156 typedef typename Superclass::PointDataContainerIterator
158 typedef typename Superclass::PointsContainerConstIterator
160 typedef typename Superclass::PointsContainerIterator
173 typedef typename Superclass::CellsContainerConstIterator
175 typedef typename Superclass::CellsContainerIterator
179 typedef typename Superclass::CellLinksContainerPointer
181 typedef typename Superclass::CellLinksContainerIterator
186 typedef typename Superclass::CellDataContainerPointer
188 typedef typename Superclass::CellDataContainerIterator
192 typedef typename Superclass::PointCellLinksContainer
194 typedef typename Superclass::PointCellLinksContainerIterator
198 typedef typename Superclass::BoundaryAssignmentsContainer
200 typedef typename Superclass::BoundaryAssignmentsContainerPointer
202 typedef typename Superclass::BoundaryAssignmentsContainerVector
209 typedef typename Superclass::InterpolationWeightType
217 typedef typename Traits::QEPrimal
QEType;
250 #if !defined( CABLE_CONFIGURATION )
258 virtual bool RequestedRegionIsOutsideOfTheBufferedRegion()
263 virtual void Initialize();
266 virtual void Clear();
271 { m_EdgeCellsContainer = edgeCells; }
273 { m_EdgeCellsContainer->InsertElement( cellId, cellPointer.ReleaseOwnership() ); }
286 void SqueezePointsIds();
291 #if !defined( CABLE_CONFIGURATION )
293 void SetBoundaryAssignments(
int dimension,
373 std::set< CellIdentifier > *cellSet)
385 std::set< CellIdentifier > * itkNotUsed(cellSet))
391 bool GetAssignedCellBoundaryIfOneExists(
int dimension,
405 void SetCell(CellIdentifier cId, CellAutoPointer & cell);
408 virtual PointIdentifier FindFirstUnusedPointIndex();
410 virtual CellIdentifier FindFirstUnusedCellIndex();
412 virtual void PushOnContainer(EdgeCellType *newEdge);
415 virtual PointIdentifier AddPoint(
const PointType & p);
418 virtual QEPrimal * AddEdge(
const PointIdentifier & orgPid,
419 const PointIdentifier & destPid);
421 virtual QEPrimal * AddEdgeWithSecurePointList(
const PointIdentifier & orgPid,
422 const PointIdentifier & destPid);
425 virtual void AddFace(QEPrimal *
e);
431 virtual QEPrimal * AddFace(
const PointIdList & points);
433 virtual QEPrimal * AddFaceWithSecurePointList(
const PointIdList & points);
435 virtual QEPrimal * AddFaceWithSecurePointList(
const PointIdList & points,
439 virtual QEPrimal * AddFaceTriangle(
const PointIdentifier & aPid,
440 const PointIdentifier & bPid,
441 const PointIdentifier & cPid);
444 virtual void DeletePoint(
const PointIdentifier & pid);
446 virtual void DeleteEdge(
const PointIdentifier & orgPid,
447 const PointIdentifier & destPid);
449 virtual void DeleteEdge(QEPrimal *
e);
451 virtual void LightWeightDeleteEdge(EdgeCellType *
e);
453 virtual void LightWeightDeleteEdge(QEPrimal *
e);
455 virtual void DeleteFace(FaceRefType faceToDelete);
460 return ( Superclass::GetPoint(pid, pt) );
463 virtual PointType GetPoint(
const PointIdentifier & pid)
const;
465 virtual VectorType GetVector(
const PointIdentifier & pid)
const;
467 virtual QEPrimal * GetEdge()
const;
469 virtual QEPrimal * GetEdge(
const CellIdentifier & eid)
const;
471 virtual QEPrimal * FindEdge(
const PointIdentifier & pid0)
const;
473 virtual QEPrimal * FindEdge(
const PointIdentifier & pid0,
474 const PointIdentifier & pid1)
const;
476 virtual EdgeCellType * FindEdgeCell(
const PointIdentifier & pid0,
477 const PointIdentifier & pid1)
const;
480 CoordRepType ComputeEdgeLength(QEPrimal *
e);
482 PointIdentifier ComputeNumberOfPoints()
const;
484 CellIdentifier ComputeNumberOfFaces()
const;
486 CellIdentifier ComputeNumberOfEdges()
const;
488 PointIdentifier Splice(QEPrimal *a, QEPrimal *b);
490 #ifdef ITK_USE_CONCEPT_CHECKING
497 void ClearFreePointAndCellIndexesLists()
499 while ( !this->m_FreePointIndexes.empty() )
501 this->m_FreePointIndexes.pop();
503 while ( !this->m_FreeCellIndexes.empty() )
505 this->m_FreeCellIndexes.pop();
519 virtual void ClearCellsContainer();
525 void operator=(
const Self &);
536 #ifndef ITK_MANUAL_INSTANTIATION
537 #include "itkQuadEdgeMesh.hxx"