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;
249 #if !defined( CABLE_CONFIGURATION )
256 virtual bool RequestedRegionIsOutsideOfTheBufferedRegion()
261 virtual void Initialize();
264 virtual void Clear();
269 { m_EdgeCellsContainer = edgeCells; }
271 { m_EdgeCellsContainer->InsertElement( cellId, cellPointer.ReleaseOwnership() ); }
284 void SqueezePointsIds();
289 #if !defined( CABLE_CONFIGURATION )
291 void SetBoundaryAssignments(
int dimension,
371 std::set< CellIdentifier > *cellSet)
383 std::set< CellIdentifier > * itkNotUsed(cellSet))
389 bool GetAssignedCellBoundaryIfOneExists(
int dimension,
403 void SetCell(CellIdentifier cId, CellAutoPointer & cell);
406 virtual PointIdentifier FindFirstUnusedPointIndex();
408 virtual CellIdentifier FindFirstUnusedCellIndex();
410 virtual void PushOnContainer(EdgeCellType *newEdge);
413 virtual PointIdentifier AddPoint(
const PointType & p);
416 virtual QEPrimal * AddEdge(
const PointIdentifier & orgPid,
417 const PointIdentifier & destPid);
419 virtual QEPrimal * AddEdgeWithSecurePointList(
const PointIdentifier & orgPid,
420 const PointIdentifier & destPid);
423 virtual void AddFace(QEPrimal *
e);
429 virtual QEPrimal * AddFace(
const PointIdList & points);
431 virtual QEPrimal * AddFaceWithSecurePointList(
const PointIdList & points);
433 virtual QEPrimal * AddFaceWithSecurePointList(
const PointIdList & points,
437 virtual QEPrimal * AddFaceTriangle(
const PointIdentifier & aPid,
438 const PointIdentifier & bPid,
439 const PointIdentifier & cPid);
442 virtual void DeletePoint(
const PointIdentifier & pid);
444 virtual void DeleteEdge(
const PointIdentifier & orgPid,
445 const PointIdentifier & destPid);
447 virtual void DeleteEdge(QEPrimal *
e);
449 virtual void LightWeightDeleteEdge(EdgeCellType *
e);
451 virtual void LightWeightDeleteEdge(QEPrimal *
e);
453 virtual void DeleteFace(FaceRefType faceToDelete);
458 return ( Superclass::GetPoint(pid, pt) );
461 virtual PointType GetPoint(
const PointIdentifier & pid)
const;
463 virtual VectorType GetVector(
const PointIdentifier & pid)
const;
465 virtual QEPrimal * GetEdge()
const;
467 virtual QEPrimal * GetEdge(
const CellIdentifier & eid)
const;
469 virtual QEPrimal * FindEdge(
const PointIdentifier & pid0)
const;
471 virtual QEPrimal * FindEdge(
const PointIdentifier & pid0,
472 const PointIdentifier & pid1)
const;
474 virtual EdgeCellType * FindEdgeCell(
const PointIdentifier & pid0,
475 const PointIdentifier & pid1)
const;
478 CoordRepType ComputeEdgeLength(QEPrimal *
e);
480 PointIdentifier ComputeNumberOfPoints()
const;
482 CellIdentifier ComputeNumberOfFaces()
const;
484 CellIdentifier ComputeNumberOfEdges()
const;
486 PointIdentifier Splice(QEPrimal *a, QEPrimal *b);
488 #ifdef ITK_USE_CONCEPT_CHECKING
495 void ClearFreePointAndCellIndexesLists()
497 while ( !this->m_FreePointIndexes.empty() )
499 this->m_FreePointIndexes.pop();
501 while ( !this->m_FreeCellIndexes.empty() )
503 this->m_FreeCellIndexes.pop();
516 virtual void ClearCellsContainer();
521 void operator=(
const Self &);
531 #ifndef ITK_MANUAL_INSTANTIATION
532 #include "itkQuadEdgeMesh.hxx"