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 int8_t
128 GetPixelAsInt8(const std::vector<uint32_t> & idx) const = 0;
129 virtual uint8_t
130 GetPixelAsUInt8(const std::vector<uint32_t> & idx) const = 0;
131 virtual int16_t
132 GetPixelAsInt16(const std::vector<uint32_t> & idx) const = 0;
133 virtual uint16_t
134 GetPixelAsUInt16(const std::vector<uint32_t> & idx) const = 0;
135 virtual int32_t
136 GetPixelAsInt32(const std::vector<uint32_t> & idx) const = 0;
137 virtual uint32_t
138 GetPixelAsUInt32(const std::vector<uint32_t> & idx) const = 0;
139 virtual int64_t
140 GetPixelAsInt64(const std::vector<uint32_t> & idx) const = 0;
141 virtual uint64_t
142 GetPixelAsUInt64(const std::vector<uint32_t> & idx) const = 0;
143 virtual float
144 GetPixelAsFloat(const std::vector<uint32_t> & idx) const = 0;
145 virtual double
146 GetPixelAsDouble(const std::vector<uint32_t> & idx) const = 0;
147
148 virtual std::vector<int8_t>
149 GetPixelAsVectorInt8(const std::vector<uint32_t> & idx) const = 0;
150 virtual std::vector<uint8_t>
151 GetPixelAsVectorUInt8(const std::vector<uint32_t> & idx) const = 0;
152 virtual std::vector<int16_t>
153 GetPixelAsVectorInt16(const std::vector<uint32_t> & idx) const = 0;
154 virtual std::vector<uint16_t>
155 GetPixelAsVectorUInt16(const std::vector<uint32_t> & idx) const = 0;
156 virtual std::vector<int32_t>
157 GetPixelAsVectorInt32(const std::vector<uint32_t> & idx) const = 0;
158 virtual std::vector<uint32_t>
159 GetPixelAsVectorUInt32(const std::vector<uint32_t> & idx) const = 0;
160 virtual std::vector<int64_t>
161 GetPixelAsVectorInt64(const std::vector<uint32_t> & idx) const = 0;
162 virtual std::vector<uint64_t>
163 GetPixelAsVectorUInt64(const std::vector<uint32_t> & idx) const = 0;
164 virtual std::vector<float>
165 GetPixelAsVectorFloat32(const std::vector<uint32_t> & idx) const = 0;
166 virtual std::vector<double>
167 GetPixelAsVectorFloat64(const std::vector<uint32_t> & idx) const = 0;
168
169 virtual std::complex<float>
170 GetPixelAsComplexFloat32(const std::vector<uint32_t> & idx) const = 0;
171 virtual std::complex<double>
172 GetPixelAsComplexFloat64(const std::vector<uint32_t> & idx) const = 0;
173
174 virtual void
175 SetPixelAsInt8(const std::vector<uint32_t> & idx, int8_t v) = 0;
176 virtual void
177 SetPixelAsUInt8(const std::vector<uint32_t> & idx, uint8_t v) = 0;
178 virtual void
179 SetPixelAsInt16(const std::vector<uint32_t> & idx, int16_t v) = 0;
180 virtual void
181 SetPixelAsUInt16(const std::vector<uint32_t> & idx, uint16_t v) = 0;
182 virtual void
183 SetPixelAsInt32(const std::vector<uint32_t> & idx, int32_t v) = 0;
184 virtual void
185 SetPixelAsUInt32(const std::vector<uint32_t> & idx, uint32_t v) = 0;
186 virtual void
187 SetPixelAsInt64(const std::vector<uint32_t> & idx, int64_t v) = 0;
188 virtual void
189 SetPixelAsUInt64(const std::vector<uint32_t> & idx, uint64_t v) = 0;
190 virtual void
191 SetPixelAsFloat(const std::vector<uint32_t> & idx, float v) = 0;
192 virtual void
193 SetPixelAsDouble(const std::vector<uint32_t> & idx, double v) = 0;
194
195 virtual void
196 SetPixelAsVectorInt8(const std::vector<uint32_t> & idx, const std::vector<int8_t> & v) = 0;
197 virtual void
198 SetPixelAsVectorUInt8(const std::vector<uint32_t> & idx, const std::vector<uint8_t> & v) = 0;
199 virtual void
200 SetPixelAsVectorInt16(const std::vector<uint32_t> & idx, const std::vector<int16_t> & v) = 0;
201 virtual void
202 SetPixelAsVectorUInt16(const std::vector<uint32_t> & idx, const std::vector<uint16_t> & v) = 0;
203 virtual void
204 SetPixelAsVectorInt32(const std::vector<uint32_t> & idx, const std::vector<int32_t> & v) = 0;
205 virtual void
206 SetPixelAsVectorUInt32(const std::vector<uint32_t> & idx, const std::vector<uint32_t> & v) = 0;
207 virtual void
208 SetPixelAsVectorInt64(const std::vector<uint32_t> & idx, const std::vector<int64_t> & v) = 0;
209 virtual void
210 SetPixelAsVectorUInt64(const std::vector<uint32_t> & idx, const std::vector<uint64_t> & v) = 0;
211 virtual void
212 SetPixelAsVectorFloat32(const std::vector<uint32_t> & idx, const std::vector<float> & v) = 0;
213 virtual void
214 SetPixelAsVectorFloat64(const std::vector<uint32_t> & idx, const std::vector<double> & v) = 0;
215
216 virtual void
217 SetPixelAsComplexFloat32(const std::vector<uint32_t> & idx, const std::complex<float> v) = 0;
218 virtual void
219 SetPixelAsComplexFloat64(const std::vector<uint32_t> & idx, const std::complex<double> v) = 0;
220
221
222 virtual int8_t *
224 virtual uint8_t *
226 virtual int16_t *
228 virtual uint16_t *
230 virtual int32_t *
232 virtual uint32_t *
234 virtual int64_t *
236 virtual uint64_t *
238 virtual float *
240 virtual double *
242 virtual void *
244
245 virtual const int8_t *
246 GetBufferAsInt8() const = 0;
247 virtual const uint8_t *
248 GetBufferAsUInt8() const = 0;
249 virtual const int16_t *
250 GetBufferAsInt16() const = 0;
251 virtual const uint16_t *
252 GetBufferAsUInt16() const = 0;
253 virtual const int32_t *
254 GetBufferAsInt32() const = 0;
255 virtual const uint32_t *
256 GetBufferAsUInt32() const = 0;
257 virtual const int64_t *
258 GetBufferAsInt64() const = 0;
259 virtual const uint64_t *
260 GetBufferAsUInt64() const = 0;
261 virtual const float *
262 GetBufferAsFloat() const = 0;
263 virtual const double *
264 GetBufferAsDouble() const = 0;
265 virtual const void *
266 GetBufferAsVoid() const = 0;
267};
268
269} // namespace itk::simple
270
271
272#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 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