18 #ifndef itkQuadEdgeMeshLineCell_h
19 #define itkQuadEdgeMeshLineCell_h
40 template <
typename TCellInterface>
42 :
public TCellInterface
43 ,
public TCellInterface::CellTraits::QuadEdgeType
58 using typename Superclass::PixelType;
59 using CellType =
typename Superclass::CellType;
60 using typename Superclass::CellAutoPointer;
61 using typename Superclass::CellConstAutoPointer;
62 using typename Superclass::CellRawPointer;
63 using typename Superclass::CellConstRawPointer;
65 using typename Superclass::CoordRepType;
66 using typename Superclass::InterpolationWeightType;
67 using typename Superclass::PointIdentifier;
68 using typename Superclass::CellIdentifier;
69 using typename Superclass::CellFeatureIdentifier;
72 using typename Superclass::PointsContainer;
73 using typename Superclass::UsingCellsContainer;
74 using typename Superclass::ParametricCoordArrayType;
75 using typename Superclass::ShapeFunctionsArrayType;
76 static constexpr
unsigned int PointDimension = Superclass::PointDimension;
77 static constexpr
unsigned int CellDimension = 2;
89 using QEType =
typename CellTraits::QuadEdgeType;
94 using QEDual =
typename QEType::DualType;
104 return (m_QuadEdgeGeom);
115 SetIdent(CellIdentifier cid);
122 Accept(CellIdentifier cellId, MultiVisitor * mv)
override;
125 GetType()
const override;
135 GetDimension()
const override;
138 GetNumberOfPoints()
const override;
141 GetNumberOfBoundaryFeatures(
int dimension)
const override;
144 GetBoundaryFeature(
int dimension, CellFeatureIdentifier cellId, CellAutoPointer & cell)
override;
150 cell.TakeOwnership(
new Self);
151 cell->SetPointId(0, this->GetQEGeom()->GetOrigin());
152 cell->SetPointId(1, this->GetQEGeom()->GetDestination());
161 SetPointIds(PointIdConstIterator first)
override;
164 SetPointIds(PointIdConstIterator first, PointIdConstIterator last)
override;
167 SetPointId(
int localId, PointIdentifier pId)
override;
172 SynchronizePointsAPI();
173 return &m_PointIds[0];
179 SynchronizePointsAPI();
180 return (&m_PointIds[1] + 1);
186 SynchronizePointsAPI();
187 return &m_PointIds[0];
193 SynchronizePointsAPI();
194 return &m_PointIds[0];
200 SynchronizePointsAPI();
201 return (&m_PointIds[1] + 1);
208 m_PointIds[0] = GetQEGeom()->GetOrigin();
209 m_PointIds[1] = GetQEGeom()->GetDestination();
215 InternalSetPointIds(PointIdInternalConstIterator first);
218 InternalSetPointIds(PointIdInternalConstIterator first, PointIdInternalConstIterator last);
220 virtual PointIdInternalIterator
221 InternalPointIdsBegin();
223 virtual PointIdInternalIterator
224 InternalPointIdsEnd();
226 virtual PointIdInternalConstIterator
227 InternalGetPointIds()
const;
229 virtual PointIdInternalConstIterator
230 InternalPointIdsBegin()
const;
232 virtual PointIdInternalConstIterator
233 InternalPointIdsEnd()
const;
240 CellIdentifier m_Identifier{};
242 mutable PointIdentifier m_PointIds[2]{};
246 #ifndef ITK_MANUAL_INSTANTIATION
247 # include "itkQuadEdgeMeshLineCell.hxx"