18#ifndef itkQuadEdgeMesh_h
19#define itkQuadEdgeMesh_h
50template <
typename TPixel,
51 unsigned int VDimension,
137 using QEType =
typename Traits::QEPrimal;
155#ifndef ITK_FUTURE_LEGACY_REMOVE
156 using EdgeListPointerType [[deprecated(
"Please just use `EdgeListType *` instead!")]] =
EdgeListType *;
172#if !defined(ITK_WRAPPING_PARSER)
197 const CellsContainer *
234#if !defined(ITK_WRAPPING_PARSER)
241 BoundaryAssignmentsContainerPointer
248 const BoundaryAssignmentsContainerPointer
298 std::set<CellIdentifier> * itkNotUsed(cellSet))
477#ifndef ITK_MANUAL_INSTANTIATION
478# include "itkQuadEdgeMesh.hxx"
Base class for all data objects in ITK.
typename MeshTraits::CellDataContainer CellDataContainer
typename PointsContainer::Pointer PointsContainerPointer
typename CellLinksContainer::Pointer CellLinksContainerPointer
typename MeshTraits::CellFeatureIdentifier CellFeatureIdentifier
typename CellDataContainer::ConstIterator CellDataContainerIterator
typename MeshTraits::PointCellLinksContainer PointCellLinksContainer
CellInterface< CellPixelType, CellTraits > CellType
CellFeatureIdentifier CellFeatureCount
typename BoundingBoxType::Pointer BoundingBoxPointer
typename PointsContainer::Iterator PointsContainerIterator
MapContainer< BoundaryAssignmentIdentifier, CellIdentifier > BoundaryAssignmentsContainer
typename MeshTraits::PointHashType PointHashType
typename MeshTraits::PointIdentifier PointIdentifier
typename CellsContainer::Pointer CellsContainerPointer
typename CellDataContainer::Pointer CellDataContainerPointer
typename CellLinksContainer::ConstIterator CellLinksContainerIterator
typename PointCellLinksContainer::const_iterator PointCellLinksContainerIterator
typename MeshTraits::CellIdentifier CellIdentifier
typename PointDataContainer::Pointer PointDataContainerPointer
typename MeshTraits::CellPixelType CellPixelType
typename CellsContainer::ConstIterator CellsContainerConstIterator
typename MeshTraits::CellsContainer CellsContainer
typename CellType::CellAutoPointer CellAutoPointer
typename MeshTraits::CoordinateType CoordinateType
typename CellType::MultiVisitor CellMultiVisitorType
typename MeshTraits::PointsContainer PointsContainer
typename MeshTraits::CellLinksContainer CellLinksContainer
typename MeshTraits::InterpolationWeightType InterpolationWeightType
BoundingBox< PointIdentifier, Self::PointDimension, CoordinateType, PointsContainer > BoundingBoxType
typename PointDataContainer::ConstIterator PointDataContainerIterator
typename CellsContainer::Iterator CellsContainerIterator
std::vector< BoundaryAssignmentsContainerPointer > BoundaryAssignmentsContainerVector
typename BoundaryAssignmentsContainer::Pointer BoundaryAssignmentsContainerPointer
typename MeshTraits::CellTraits CellTraits
typename MeshTraits::PointDataContainer PointDataContainer
typename MeshTraits::PointType PointType
typename PointsContainer::ConstIterator PointsContainerConstIterator
bool GetPoint(PointIdentifier, PointType *) const
Class that connects the QuadEdgeMesh with the Mesh.
Class holding the traits of the QuadEdgeMesh.
void BuildCellLinks() const
typename CellTraits::PointIdInternalIterator PointIdInternalIterator
void SetBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellIdentifier boundaryId)
void SetCell(CellIdentifier cId, CellAutoPointer &cell)
CellIdentifier GetNumberOfEdges() const
virtual QEPrimal * FindEdge(const PointIdentifier &pid0) const
const BoundaryAssignmentsContainerPointer GetBoundaryAssignments(int dimension) const
virtual QEPrimal * GetEdge(const CellIdentifier &eid) const
virtual void AddFace(QEPrimal *entry)
bool GetAssignedCellBoundaryIfOneExists(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellAutoPointer &cellAP) const
CellIdentifier ComputeNumberOfFaces() const
virtual void DeleteEdge(const PointIdentifier &orgPid, const PointIdentifier &destPid)
virtual QEPrimal * FindEdge(const PointIdentifier &pid0, const PointIdentifier &pid1) const
const CellsContainer * GetEdgeCells() const
virtual QEPrimal * AddFaceTriangle(const PointIdentifier &aPid, const PointIdentifier &bPid, const PointIdentifier &cPid)
virtual VectorType GetVector(const PointIdentifier &pid) const
CoordinateType[Self::PointDimension] CoordRepArrayType
virtual void DeletePoint(const PointIdentifier &pid)
virtual void LightWeightDeleteEdge(EdgeCellType *edgeCell)
typename Traits::VertexRefType VertexRefType
void SetBoundaryAssignments(int dimension, BoundaryAssignmentsContainer *container)
virtual void DeleteFace(FaceRefType faceToDelete)
CellsContainerPointer m_EdgeCellsContainer
bool RemoveBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId)
typename Traits::QEPrimal QEType
CellIdentifier m_NumberOfEdges
bool GetCellBoundaryFeature(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellAutoPointer &cellAP) const
std::vector< PointIdentifier > PointIdList
virtual QEPrimal * AddFaceWithSecurePointList(const PointIdList &points, bool CheckEdges)
SmartPointer< const Self > ConstPointer
typename Traits::PrimalDataType PrimalDataType
CellIdentifier m_NumberOfFaces
CellsContainer * GetEdgeCells()
virtual CellIdentifier FindFirstUnusedCellIndex()
CellIdentifier GetNumberOfFaces() const
CellIdentifier GetCellBoundaryFeatureNeighbors(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, std::set< CellIdentifier > *cellSet)
Mesh< TPixel, VDimension, Traits > Superclass
void SetEdgeCell(CellIdentifier cellId, CellAutoPointer &cellPointer)
virtual void PushOnContainer(EdgeCellType *newEdge)
typename CellTraits::PointIdIterator PointIdIterator
virtual QEPrimal * AddFace(const PointIdList &points)
virtual PointIdentifier AddPoint(const PointType &p)
BoundaryAssignmentsContainerPointer GetBoundaryAssignments(int dimension)
typename Traits::DualDataType DualDataType
static constexpr unsigned int MaxTopologicalDimension
virtual PointIdentifier FindFirstUnusedPointIndex()
void Graft(const DataObject *data) override
bool GetBoundaryAssignment(int dimension, CellIdentifier cellId, CellFeatureIdentifier featureId, CellIdentifier *boundaryId)
std::list< QEPrimal * > EdgeListType
virtual PointType GetPoint(const PointIdentifier &pid) const
virtual void LightWeightDeleteEdge(QEPrimal *e)
CellIdentifier ComputeNumberOfEdges() const
itk::MeshEnums::MeshClassCellsAllocationMethod MeshClassCellsAllocationMethodEnum
virtual QEPrimal * AddFaceWithSecurePointList(const PointIdList &points)
PointIdentifier ComputeNumberOfPoints() const
std::queue< CellIdentifier > FreeCellIndexesType
std::queue< PointIdentifier > FreePointIndexesType
PointIdentifier Splice(QEPrimal *a, QEPrimal *b)
static const PointIdentifier m_NoPoint
typename Traits::QEPrimal QEPrimal
virtual void DeleteEdge(QEPrimal *e)
FreeCellIndexesType m_FreeCellIndexes
void Initialize() override
QuadEdgeMeshLineCell< CellType > EdgeCellType
typename Traits::VectorType VectorType
virtual void ClearCellsContainer()
virtual QEPrimal * AddEdge(const PointIdentifier &orgPid, const PointIdentifier &destPid)
FreePointIndexesType m_FreePointIndexes
static const CellIdentifier m_NoFace
void ClearFreePointAndCellIndexesLists()
typename Traits::FaceRefType FaceRefType
void SetEdgeCells(CellsContainer *edgeCells)
virtual QEPrimal * AddEdgeWithSecurePointList(const PointIdentifier &orgPid, const PointIdentifier &destPid)
typename Traits::QEDual QEDual
static constexpr unsigned int PointDimension
CellIdentifier GetCellNeighbors(CellIdentifier cellId, std::set< CellIdentifier > *cellSet)
virtual QEPrimal * GetEdge() const
CoordinateType ComputeEdgeLength(QEPrimal *e)
Compute the euclidean length of argument edge.
SmartPointer< Self > Pointer
virtual EdgeCellType * FindEdgeCell(const PointIdentifier &pid0, const PointIdentifier &pid1) const
void CopyInformation(const DataObject *data) override
QuadEdgeMeshPolygonCell< CellType > PolygonCellType
bool RequestedRegionIsOutsideOfTheBufferedRegion() override
itkQEDefineFrontIteratorMethodsMacro(Self)
bool GetPoint(PointIdentifier pid, PointType *pt) const
Implements transparent reference counting.
MeshClassCellsAllocationMethod
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....