ITK  5.4.0
Insight Toolkit
itkLineCell.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18#ifndef itkLineCell_h
19#define itkLineCell_h
20
21#include "itkVertexCell.h"
22#include "itkMakeFilled.h"
23
24#include <array>
25
26namespace itk
27{
44template <typename TCellInterface>
45class ITK_TEMPLATE_EXPORT LineCell : public TCellInterface
46{
47public:
48 ITK_DISALLOW_COPY_AND_MOVE(LineCell);
49
52 itkCellInheritedTypedefs(TCellInterface);
56 itkOverrideGetNameOfClassMacro(LineCell);
57
60 using VertexAutoPointer = typename VertexType::SelfAutoPointer;
61
63 static constexpr unsigned int NumberOfPoints = 2;
64 static constexpr unsigned int NumberOfVertices = 2;
65 static constexpr unsigned int CellDimension = 1;
66
69 GetType() const override
70 {
72 }
73 void
74 MakeCopy(CellAutoPointer &) const override;
77 unsigned int
78 GetDimension() const override;
79
80 unsigned int
81 GetNumberOfPoints() const override;
82
83 CellFeatureCount
84 GetNumberOfBoundaryFeatures(int dimension) const override;
85
86 bool
87 GetBoundaryFeature(int dimension, CellFeatureIdentifier, CellAutoPointer &) override;
88 void
89 SetPointIds(PointIdConstIterator first) override;
90
91 void
92 SetPointIds(PointIdConstIterator first, PointIdConstIterator last) override;
93
94 void
95 SetPointId(int localId, PointIdentifier) override;
96 PointIdIterator
97 PointIdsBegin() override;
98
99 PointIdConstIterator
100 PointIdsBegin() const override;
101
102 PointIdIterator
103 PointIdsEnd() override;
104
105 PointIdConstIterator
106 PointIdsEnd() const override;
107
109 virtual CellFeatureCount
111
112 virtual bool
113 GetVertex(CellFeatureIdentifier, VertexAutoPointer &);
114
117
118 LineCell() = default;
119
120 ~LineCell() override = default;
121
122protected:
124 std::array<PointIdentifier, NumberOfPoints> m_PointIds{ MakeFilled<std::array<PointIdentifier, NumberOfPoints>>(
126};
127} // end namespace itk
128
129#ifndef ITK_MANUAL_INSTANTIATION
130# include "itkLineCell.hxx"
131#endif
132
133#endif
Represents a line segment for a Mesh.
Definition: itkLineCell.h:46
void MakeCopy(CellAutoPointer &) const override
PointIdConstIterator PointIdsBegin() const override
CellFeatureCount GetNumberOfBoundaryFeatures(int dimension) const override
itkCellInheritedTypedefs(TCellInterface)
LineCell()=default
virtual CellFeatureCount GetNumberOfVertices() const
typename VertexType::SelfAutoPointer VertexAutoPointer
Definition: itkLineCell.h:60
itkCellCommonTypedefs(LineCell)
virtual bool GetVertex(CellFeatureIdentifier, VertexAutoPointer &)
unsigned int GetDimension() const override
void SetPointIds(PointIdConstIterator first, PointIdConstIterator last) override
void SetPointIds(PointIdConstIterator first) override
itkCellVisitMacro(CellGeometryEnum::LINE_CELL)
PointIdConstIterator PointIdsEnd() const override
unsigned int GetNumberOfPoints() const override
~LineCell() override=default
void SetPointId(int localId, PointIdentifier) override
PointIdIterator PointIdsEnd() override
bool GetBoundaryFeature(int dimension, CellFeatureIdentifier, CellAutoPointer &) override
CellGeometryEnum GetType() const override
Definition: itkLineCell.h:69
PointIdIterator PointIdsBegin() override
static constexpr T max(const T &)
Represents a single vertex for a Mesh.
Definition: itkVertexCell.h:43
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....