SimpleITK  
sitkPimpleImageBase.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 * http://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 sitkPimpleImageBase_h
19#define sitkPimpleImageBase_h
20
21#include <vector>
22#include "sitkPixelIDTokens.h"
24
25namespace itk::simple
26{
27
39{
40public:
41 virtual ~PimpleImageBase() = default;
42
43 virtual std::unique_ptr<PimpleImageBase>
44 ProxyCopy() = 0;
45
46 virtual PixelIDValueEnum
47 GetPixelID() const = 0;
48 virtual unsigned int
49 GetDimension() const = 0;
50 virtual uint64_t
51 GetNumberOfPixels() const = 0;
52 virtual unsigned int
54
55 virtual std::unique_ptr<PimpleImageBase>
56 ShallowCopy() const = 0;
57 virtual std::unique_ptr<PimpleImageBase>
58 DeepCopy() const = 0;
59 virtual itk::DataObject *
61 virtual const itk::DataObject *
62 GetDataBase() const = 0;
63
64 virtual unsigned int
65 GetWidth() const
66 {
67 return this->GetSize(0);
68 }
69 virtual unsigned int
70 GetHeight() const
71 {
72 return this->GetSize(1);
73 }
74 virtual unsigned int
75 GetDepth() const
76 {
77 return this->GetSize(2);
78 }
79
80 virtual std::vector<unsigned int>
81 GetSize() const = 0;
82 virtual unsigned int
83 GetSize(unsigned int dimension) const = 0;
84
85 virtual bool
87 double coordinateTolerance,
88 double directionTolerance) const = 0;
89
90 virtual bool
92 double coordinateTolerance,
93 double directionTolerance) const = 0;
94
95 virtual std::vector<double>
96 GetOrigin() const = 0;
97 virtual void
98 SetOrigin(const std::vector<double> & orgn) = 0;
99 virtual std::vector<double>
100 GetSpacing() const = 0;
101 virtual void
102 SetSpacing(const std::vector<double> & spc) = 0;
103
104 virtual std::vector<double>
105 GetDirection() const = 0;
106 virtual void
107 SetDirection(const std::vector<double> & direction) = 0;
108
109 virtual std::vector<int64_t>
110 TransformPhysicalPointToIndex(const std::vector<double> & pt) const = 0;
111 virtual std::vector<double>
112 TransformIndexToPhysicalPoint(const std::vector<int64_t> & idx) const = 0;
113 virtual std::vector<double>
114 TransformPhysicalPointToContinuousIndex(const std::vector<double> & pt) const = 0;
115 virtual std::vector<double>
116 TransformContinuousIndexToPhysicalPoint(const std::vector<double> & idx) const = 0;
117
118 virtual std::vector<double>
119 EvaluateAtContinuousIndex(const std::vector<double> & index, InterpolatorEnum interp) const = 0;
120
121 virtual std::string
122 ToString() const = 0;
123
124 virtual int
126
127 virtual bool
129
130 virtual int8_t
131 GetPixelAsInt8(const std::vector<uint32_t> & idx) const = 0;
132 virtual uint8_t
133 GetPixelAsUInt8(const std::vector<uint32_t> & idx) const = 0;
134 virtual int16_t
135 GetPixelAsInt16(const std::vector<uint32_t> & idx) const = 0;
136 virtual uint16_t
137 GetPixelAsUInt16(const std::vector<uint32_t> & idx) const = 0;
138 virtual int32_t
139 GetPixelAsInt32(const std::vector<uint32_t> & idx) const = 0;
140 virtual uint32_t
141 GetPixelAsUInt32(const std::vector<uint32_t> & idx) const = 0;
142 virtual int64_t
143 GetPixelAsInt64(const std::vector<uint32_t> & idx) const = 0;
144 virtual uint64_t
145 GetPixelAsUInt64(const std::vector<uint32_t> & idx) const = 0;
146 virtual float
147 GetPixelAsFloat(const std::vector<uint32_t> & idx) const = 0;
148 virtual double
149 GetPixelAsDouble(const std::vector<uint32_t> & idx) const = 0;
150
151 virtual std::vector<int8_t>
152 GetPixelAsVectorInt8(const std::vector<uint32_t> & idx) const = 0;
153 virtual std::vector<uint8_t>
154 GetPixelAsVectorUInt8(const std::vector<uint32_t> & idx) const = 0;
155 virtual std::vector<int16_t>
156 GetPixelAsVectorInt16(const std::vector<uint32_t> & idx) const = 0;
157 virtual std::vector<uint16_t>
158 GetPixelAsVectorUInt16(const std::vector<uint32_t> & idx) const = 0;
159 virtual std::vector<int32_t>
160 GetPixelAsVectorInt32(const std::vector<uint32_t> & idx) const = 0;
161 virtual std::vector<uint32_t>
162 GetPixelAsVectorUInt32(const std::vector<uint32_t> & idx) const = 0;
163 virtual std::vector<int64_t>
164 GetPixelAsVectorInt64(const std::vector<uint32_t> & idx) const = 0;
165 virtual std::vector<uint64_t>
166 GetPixelAsVectorUInt64(const std::vector<uint32_t> & idx) const = 0;
167 virtual std::vector<float>
168 GetPixelAsVectorFloat32(const std::vector<uint32_t> & idx) const = 0;
169 virtual std::vector<double>
170 GetPixelAsVectorFloat64(const std::vector<uint32_t> & idx) const = 0;
171
172 virtual std::complex<float>
173 GetPixelAsComplexFloat32(const std::vector<uint32_t> & idx) const = 0;
174 virtual std::complex<double>
175 GetPixelAsComplexFloat64(const std::vector<uint32_t> & idx) const = 0;
176
177 virtual void
178 SetPixelAsInt8(const std::vector<uint32_t> & idx, int8_t v) = 0;
179 virtual void
180 SetPixelAsUInt8(const std::vector<uint32_t> & idx, uint8_t v) = 0;
181 virtual void
182 SetPixelAsInt16(const std::vector<uint32_t> & idx, int16_t v) = 0;
183 virtual void
184 SetPixelAsUInt16(const std::vector<uint32_t> & idx, uint16_t v) = 0;
185 virtual void
186 SetPixelAsInt32(const std::vector<uint32_t> & idx, int32_t v) = 0;
187 virtual void
188 SetPixelAsUInt32(const std::vector<uint32_t> & idx, uint32_t v) = 0;
189 virtual void
190 SetPixelAsInt64(const std::vector<uint32_t> & idx, int64_t v) = 0;
191 virtual void
192 SetPixelAsUInt64(const std::vector<uint32_t> & idx, uint64_t v) = 0;
193 virtual void
194 SetPixelAsFloat(const std::vector<uint32_t> & idx, float v) = 0;
195 virtual void
196 SetPixelAsDouble(const std::vector<uint32_t> & idx, double v) = 0;
197
198 virtual void
199 SetPixelAsVectorInt8(const std::vector<uint32_t> & idx, const std::vector<int8_t> & v) = 0;
200 virtual void
201 SetPixelAsVectorUInt8(const std::vector<uint32_t> & idx, const std::vector<uint8_t> & v) = 0;
202 virtual void
203 SetPixelAsVectorInt16(const std::vector<uint32_t> & idx, const std::vector<int16_t> & v) = 0;
204 virtual void
205 SetPixelAsVectorUInt16(const std::vector<uint32_t> & idx, const std::vector<uint16_t> & v) = 0;
206 virtual void
207 SetPixelAsVectorInt32(const std::vector<uint32_t> & idx, const std::vector<int32_t> & v) = 0;
208 virtual void
209 SetPixelAsVectorUInt32(const std::vector<uint32_t> & idx, const std::vector<uint32_t> & v) = 0;
210 virtual void
211 SetPixelAsVectorInt64(const std::vector<uint32_t> & idx, const std::vector<int64_t> & v) = 0;
212 virtual void
213 SetPixelAsVectorUInt64(const std::vector<uint32_t> & idx, const std::vector<uint64_t> & v) = 0;
214 virtual void
215 SetPixelAsVectorFloat32(const std::vector<uint32_t> & idx, const std::vector<float> & v) = 0;
216 virtual void
217 SetPixelAsVectorFloat64(const std::vector<uint32_t> & idx, const std::vector<double> & v) = 0;
218
219 virtual void
220 SetPixelAsComplexFloat32(const std::vector<uint32_t> & idx, const std::complex<float> v) = 0;
221 virtual void
222 SetPixelAsComplexFloat64(const std::vector<uint32_t> & idx, const std::complex<double> v) = 0;
223
224
225 virtual int8_t *
227 virtual uint8_t *
229 virtual int16_t *
231 virtual uint16_t *
233 virtual int32_t *
235 virtual uint32_t *
237 virtual int64_t *
239 virtual uint64_t *
241 virtual float *
243 virtual double *
245 virtual void *
247
248 virtual const int8_t *
249 GetBufferAsInt8() const = 0;
250 virtual const uint8_t *
251 GetBufferAsUInt8() const = 0;
252 virtual const int16_t *
253 GetBufferAsInt16() const = 0;
254 virtual const uint16_t *
255 GetBufferAsUInt16() const = 0;
256 virtual const int32_t *
257 GetBufferAsInt32() const = 0;
258 virtual const uint32_t *
259 GetBufferAsUInt32() const = 0;
260 virtual const int64_t *
261 GetBufferAsInt64() const = 0;
262 virtual const uint64_t *
263 GetBufferAsUInt64() const = 0;
264 virtual const float *
265 GetBufferAsFloat() const = 0;
266 virtual const double *
267 GetBufferAsDouble() const = 0;
268 virtual const void *
269 GetBufferAsVoid() const = 0;
270};
271
272} // namespace itk::simple
273
274
275#endif // sitkPimpleImageBase_h
Private implementation idiom image base class.
virtual const float * GetBufferAsFloat() const =0
virtual unsigned int GetWidth() const
virtual uint64_t GetPixelAsUInt64(const std::vector< uint32_t > &idx) const =0
virtual unsigned int GetHeight() const
virtual int64_t GetPixelAsInt64(const std::vector< uint32_t > &idx) const =0
virtual const uint32_t * GetBufferAsUInt32() const =0
virtual std::vector< int16_t > GetPixelAsVectorInt16(const std::vector< uint32_t > &idx) const =0
virtual uint64_t GetNumberOfPixels() const =0
virtual bool IsCongruentImageGeometry(const PimpleImageBase *otherImage, double coordinateTolerance, double directionTolerance) const =0
virtual uint8_t GetPixelAsUInt8(const std::vector< uint32_t > &idx) const =0
virtual int GetReferenceCountOfImage() const =0
virtual void SetPixelAsUInt64(const std::vector< uint32_t > &idx, uint64_t v)=0
virtual std::unique_ptr< PimpleImageBase > ShallowCopy() const =0
virtual const uint8_t * GetBufferAsUInt8() const =0
virtual std::vector< double > GetPixelAsVectorFloat64(const std::vector< uint32_t > &idx) const =0
virtual std::vector< int64_t > GetPixelAsVectorInt64(const std::vector< uint32_t > &idx) const =0
virtual int32_t * GetBufferAsInt32()=0
virtual uint16_t GetPixelAsUInt16(const std::vector< uint32_t > &idx) const =0
virtual std::vector< uint8_t > GetPixelAsVectorUInt8(const std::vector< uint32_t > &idx) const =0
virtual std::complex< float > GetPixelAsComplexFloat32(const std::vector< uint32_t > &idx) const =0
virtual void SetOrigin(const std::vector< double > &orgn)=0
virtual void SetSpacing(const std::vector< double > &spc)=0
virtual void SetPixelAsInt8(const std::vector< uint32_t > &idx, int8_t v)=0
virtual uint32_t * GetBufferAsUInt32()=0
virtual const uint16_t * GetBufferAsUInt16() const =0
virtual unsigned int GetNumberOfComponentsPerPixel() const =0
virtual std::unique_ptr< PimpleImageBase > ProxyCopy()=0
virtual const int8_t * GetBufferAsInt8() const =0
virtual void SetPixelAsVectorFloat64(const std::vector< uint32_t > &idx, const std::vector< double > &v)=0
virtual uint32_t GetPixelAsUInt32(const std::vector< uint32_t > &idx) const =0
virtual double * GetBufferAsDouble()=0
virtual void SetPixelAsVectorUInt64(const std::vector< uint32_t > &idx, const std::vector< uint64_t > &v)=0
virtual void SetDirection(const std::vector< double > &direction)=0
virtual std::vector< uint32_t > GetPixelAsVectorUInt32(const std::vector< uint32_t > &idx) const =0
virtual void SetPixelAsVectorUInt32(const std::vector< uint32_t > &idx, const std::vector< uint32_t > &v)=0
virtual void SetPixelAsComplexFloat32(const std::vector< uint32_t > &idx, const std::complex< float > v)=0
virtual void SetPixelAsInt16(const std::vector< uint32_t > &idx, int16_t v)=0
virtual std::vector< double > TransformPhysicalPointToContinuousIndex(const std::vector< double > &pt) const =0
virtual void SetPixelAsInt32(const std::vector< uint32_t > &idx, int32_t v)=0
virtual float * GetBufferAsFloat()=0
virtual void SetPixelAsFloat(const std::vector< uint32_t > &idx, float v)=0
virtual void SetPixelAsComplexFloat64(const std::vector< uint32_t > &idx, const std::complex< double > v)=0
virtual std::vector< double > TransformContinuousIndexToPhysicalPoint(const std::vector< double > &idx) const =0
virtual uint64_t * GetBufferAsUInt64()=0
virtual unsigned int GetDepth() const
virtual void SetPixelAsUInt32(const std::vector< uint32_t > &idx, uint32_t v)=0
virtual std::unique_ptr< PimpleImageBase > DeepCopy() const =0
virtual void SetPixelAsVectorInt16(const std::vector< uint32_t > &idx, const std::vector< int16_t > &v)=0
virtual uint16_t * GetBufferAsUInt16()=0
virtual int16_t GetPixelAsInt16(const std::vector< uint32_t > &idx) const =0
virtual void SetPixelAsVectorFloat32(const std::vector< uint32_t > &idx, const std::vector< float > &v)=0
virtual const int32_t * GetBufferAsInt32() const =0
virtual bool GetContainerManageMemory() const =0
virtual std::vector< double > GetSpacing() const =0
virtual const uint64_t * GetBufferAsUInt64() const =0
virtual int8_t * GetBufferAsInt8()=0
virtual bool IsSameImageGeometryAs(const PimpleImageBase *otherImage, double coordinateTolerance, double directionTolerance) const =0
virtual PixelIDValueEnum GetPixelID() const =0
virtual double GetPixelAsDouble(const std::vector< uint32_t > &idx) const =0
virtual std::vector< int32_t > GetPixelAsVectorInt32(const std::vector< uint32_t > &idx) const =0
virtual void SetPixelAsVectorUInt16(const std::vector< uint32_t > &idx, const std::vector< uint16_t > &v)=0
virtual uint8_t * GetBufferAsUInt8()=0
virtual const int16_t * GetBufferAsInt16() const =0
virtual std::vector< double > GetDirection() const =0
virtual const double * GetBufferAsDouble() const =0
virtual ~PimpleImageBase()=default
virtual std::vector< float > GetPixelAsVectorFloat32(const std::vector< uint32_t > &idx) const =0
virtual float GetPixelAsFloat(const std::vector< uint32_t > &idx) const =0
virtual std::vector< unsigned int > GetSize() const =0
virtual std::vector< int64_t > TransformPhysicalPointToIndex(const std::vector< double > &pt) const =0
virtual void SetPixelAsUInt16(const std::vector< uint32_t > &idx, uint16_t v)=0
virtual void SetPixelAsVectorInt8(const std::vector< uint32_t > &idx, const std::vector< int8_t > &v)=0
virtual std::complex< double > GetPixelAsComplexFloat64(const std::vector< uint32_t > &idx) const =0
virtual unsigned int GetSize(unsigned int dimension) const =0
virtual void SetPixelAsDouble(const std::vector< uint32_t > &idx, double v)=0
virtual std::vector< double > GetOrigin() const =0
virtual std::vector< uint16_t > GetPixelAsVectorUInt16(const std::vector< uint32_t > &idx) const =0
virtual void SetPixelAsUInt8(const std::vector< uint32_t > &idx, uint8_t v)=0
virtual itk::DataObject * GetDataBase()=0
virtual std::string ToString() const =0
virtual int64_t * GetBufferAsInt64()=0
virtual void SetPixelAsVectorInt32(const std::vector< uint32_t > &idx, const std::vector< int32_t > &v)=0
virtual void SetPixelAsVectorUInt8(const std::vector< uint32_t > &idx, const std::vector< uint8_t > &v)=0
virtual unsigned int GetDimension() const =0
virtual std::vector< double > TransformIndexToPhysicalPoint(const std::vector< int64_t > &idx) const =0
virtual void SetPixelAsVectorInt64(const std::vector< uint32_t > &idx, const std::vector< int64_t > &v)=0
virtual const void * GetBufferAsVoid() const =0
virtual int32_t GetPixelAsInt32(const std::vector< uint32_t > &idx) const =0
virtual int8_t GetPixelAsInt8(const std::vector< uint32_t > &idx) const =0
virtual void * GetBufferAsVoid()=0
virtual void SetPixelAsInt64(const std::vector< uint32_t > &idx, int64_t v)=0
virtual const itk::DataObject * GetDataBase() const =0
virtual const int64_t * GetBufferAsInt64() const =0
virtual int16_t * GetBufferAsInt16()=0
virtual std::vector< int8_t > GetPixelAsVectorInt8(const std::vector< uint32_t > &idx) const =0
virtual std::vector< double > EvaluateAtContinuousIndex(const std::vector< double > &index, InterpolatorEnum interp) const =0
virtual std::vector< uint64_t > GetPixelAsVectorUInt64(const std::vector< uint32_t > &idx) const =0
PixelIDValueEnum
Enumerated values of pixelIDs.
#define SITKCommon_HIDDEN
Definition sitkCommon.h:44