ITK  6.0.0
Insight Toolkit
itkPointSetBase.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/*=========================================================================
19 *
20 * Portions of this file are subject to the VTK Toolkit Version 3 copyright.
21 *
22 * Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
23 *
24 * For complete copyright, license and disclaimer of warranty information
25 * please refer to the NOTICE file at the top of the ITK source tree.
26 *
27 *=========================================================================*/
28#ifndef itkPointSetBase_h
29#define itkPointSetBase_h
30
31#include "itkDataObject.h"
32#include "itkVectorContainer.h"
33#include <vector>
34
35namespace itk
36{
37
55template <typename TPointsContainer>
56class ITK_TEMPLATE_EXPORT PointSetBase : public DataObject
57{
58public:
59 ITK_DISALLOW_COPY_AND_MOVE(PointSetBase);
60
66
68 itkOverrideGetNameOfClassMacro(PointSetBase);
69
71
73 using PointType = typename TPointsContainer::Element;
74 using CoordinateType = typename PointType::CoordinateType;
75#ifndef ITK_FUTURE_LEGACY_REMOVE
76 using CoordRepType ITK_FUTURE_DEPRECATED(
77 "ITK 6 discourages using `CoordRepType`. Please use `CoordinateType` instead!") = CoordinateType;
78#endif
79 using PointIdentifier = typename TPointsContainer::ElementIdentifier;
80 using PointsContainer = TPointsContainer;
81
85
87 static constexpr unsigned int PointDimension = PointType::PointDimension;
88
92
94 using PointsContainerConstIterator = typename PointsContainer::ConstIterator;
95 using PointsContainerIterator = typename PointsContainer::Iterator;
96
98 using RegionType = long;
99
102 itkGetConstMacro(MaximumNumberOfRegions, RegionType);
103
104protected:
107 PointsContainerPointer m_PointsContainer{};
108
109public:
113 void
114 PassStructure(Self * inputPointSet);
115
119 void
120 Initialize() override;
121
123 static constexpr unsigned int
125 {
126 return PointDimension;
127 }
128
130 PointIdentifier
132
134 void
136
139 void
141
143 void
144 SetPointsByCoordinates(const std::vector<CoordinateType> & coordinates);
145
149
151 const PointsContainer *
152 GetPoints() const;
153
158
165 bool
167
170
172 void
174
175 void
177
178 void
179 CopyInformation(const DataObject * data) override;
180
181 bool
183
184 bool
186
191 void
192 SetRequestedRegion(const DataObject * data) override;
193
195 virtual void
197
198 itkGetConstMacro(RequestedRegion, RegionType);
199
201 virtual void
203
204 itkGetConstMacro(BufferedRegion, RegionType);
205
206protected:
208 PointSetBase() = default;
209
211 ~PointSetBase() override = 0;
212
213 void
214 PrintSelf(std::ostream & os, Indent indent) const override;
215
217 InternalClone() const override;
218
219 // If the RegionType is ITK_UNSTRUCTURED_REGION, then the following
220 // variables represent the maximum number of region that the data
221 // object can be broken into, which region out of how many is
222 // currently in the buffered region, and the number of regions and
223 // the specific region requested for the update. Data objects that
224 // do not support any division of the data can simply leave the
225 // MaximumNumberOfRegions as 1. The RequestedNumberOfRegions and
226 // RequestedRegion are used to define the currently requested
227 // region. The LargestPossibleRegion is always requested region = 0
228 // and number of regions = 1;
229 RegionType m_MaximumNumberOfRegions{ 1 };
230 RegionType m_NumberOfRegions{ 1 };
231 RegionType m_RequestedNumberOfRegions{};
232 RegionType m_BufferedRegion{ -1 };
233 RegionType m_RequestedRegion{ -1 };
234};
235} // end namespace itk
236
237#ifndef ITK_MANUAL_INSTANTIATION
238# include "itkPointSetBase.hxx"
239#endif
240
241#endif
Base class for all data objects in ITK.
Control indentation during Print() invocation.
Definition: itkIndent.h:50
Base class for most ITK classes.
Definition: itkObject.h:62
A superclass of PointSet supports point (geometric coordinate and attribute) definition.
virtual void SetBufferedRegion(const RegionType &region)
void SetRequestedRegionToLargestPossibleRegion() override
void Initialize() override
void SetPoints(PointsVectorContainer *)
void CopyInformation(const DataObject *data) override
typename PointsVectorContainer::Pointer PointsVectorContainerPointer
typename PointsContainer::Iterator PointsContainerIterator
typename PointsContainer::ConstIterator PointsContainerConstIterator
void UpdateOutputInformation() override
void SetRequestedRegion(const DataObject *data) override
typename PointType::CoordinateType CoordinateType
typename TPointsContainer::ElementIdentifier PointIdentifier
typename PointsContainer::Pointer PointsContainerPointer
static constexpr unsigned int GetPointDimension()
LightObject::Pointer InternalClone() const override
typename TPointsContainer::Element PointType
TPointsContainer PointsContainer
bool GetPoint(PointIdentifier, PointType *) const
virtual void SetRequestedRegion(const RegionType &region)
const PointsContainer * GetPoints() const
PointSetBase()=default
bool VerifyRequestedRegion() override
PointsContainer * GetPoints()
typename itk::VectorContainer< PointIdentifier, CoordinateType > PointsVectorContainer
void PrintSelf(std::ostream &os, Indent indent) const override
PointIdentifier GetNumberOfPoints() const
void SetPointsByCoordinates(const std::vector< CoordinateType > &coordinates)
void SetPoint(PointIdentifier, PointType)
void SetPoints(PointsContainer *)
~PointSetBase() override=0
bool RequestedRegionIsOutsideOfTheBufferedRegion() override
void PassStructure(Self *inputPointSet)
PointType GetPoint(PointIdentifier) const
typename PointsContainer::ConstPointer PointsContainerConstPointer
Define a front-end to the STL "vector" container that conforms to the IndexedContainerInterface.
SmartPointer< const Self > ConstPointer
SmartPointer< Self > Pointer
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
class ITK_FORWARD_EXPORT DataObject
Definition: itkDataObject.h:42