18 #ifndef itkQuadEdgeMeshLineCell_h
19 #define itkQuadEdgeMeshLineCell_h
39 template <
typename TCellInterface>
41 :
public TCellInterface
42 ,
public TCellInterface::CellTraits::QuadEdgeType
57 using typename Superclass::PixelType;
58 using CellType =
typename Superclass::CellType;
59 using typename Superclass::CellAutoPointer;
60 using typename Superclass::CellConstAutoPointer;
61 using typename Superclass::CellRawPointer;
62 using typename Superclass::CellConstRawPointer;
64 using typename Superclass::CoordRepType;
65 using typename Superclass::InterpolationWeightType;
66 using typename Superclass::PointIdentifier;
67 using typename Superclass::CellIdentifier;
68 using typename Superclass::CellFeatureIdentifier;
71 using typename Superclass::PointsContainer;
72 using typename Superclass::UsingCellsContainer;
73 using typename Superclass::ParametricCoordArrayType;
74 using typename Superclass::ShapeFunctionsArrayType;
75 static constexpr
unsigned int PointDimension = Superclass::PointDimension;
76 static constexpr
unsigned int CellDimension = 2;
88 using QEType =
typename CellTraits::QuadEdgeType;
93 using QEDual =
typename QEType::DualType;
103 return (m_QuadEdgeGeom);
114 SetIdent(CellIdentifier cid);
121 Accept(CellIdentifier cellId, MultiVisitor * mv)
override;
124 GetType()
const override;
134 GetDimension()
const override;
137 GetNumberOfPoints()
const override;
140 GetNumberOfBoundaryFeatures(
int dimension)
const override;
143 GetBoundaryFeature(
int dimension, CellFeatureIdentifier cellId, CellAutoPointer & cell)
override;
149 cell.TakeOwnership(
new Self);
150 cell->SetPointId(0, this->GetQEGeom()->GetOrigin());
151 cell->SetPointId(1, this->GetQEGeom()->GetDestination());
160 SetPointIds(PointIdConstIterator first)
override;
163 SetPointIds(PointIdConstIterator first, PointIdConstIterator last)
override;
166 SetPointId(
int localId, PointIdentifier pId)
override;
171 SynchronizePointsAPI();
172 return &m_PointIds[0];
178 SynchronizePointsAPI();
179 return (&m_PointIds[1] + 1);
185 SynchronizePointsAPI();
186 return &m_PointIds[0];
192 SynchronizePointsAPI();
193 return &m_PointIds[0];
199 SynchronizePointsAPI();
200 return (&m_PointIds[1] + 1);
207 m_PointIds[0] = GetQEGeom()->GetOrigin();
208 m_PointIds[1] = GetQEGeom()->GetDestination();
214 InternalSetPointIds(PointIdInternalConstIterator first);
217 InternalSetPointIds(PointIdInternalConstIterator first, PointIdInternalConstIterator last);
219 virtual PointIdInternalIterator
220 InternalPointIdsBegin();
222 virtual PointIdInternalIterator
223 InternalPointIdsEnd();
225 virtual PointIdInternalConstIterator
226 InternalGetPointIds()
const;
228 virtual PointIdInternalConstIterator
229 InternalPointIdsBegin()
const;
231 virtual PointIdInternalConstIterator
232 InternalPointIdsEnd()
const;
239 CellIdentifier m_Identifier{};
241 mutable PointIdentifier m_PointIds[2]{};
245 #ifndef ITK_MANUAL_INSTANTIATION
246 # include "itkQuadEdgeMeshLineCell.hxx"