19 #ifndef itkMeshConvertPixelTraits_h 20 #define itkMeshConvertPixelTraits_h 21 #include "ITKIOMeshExport.h" 45 template<
typename PixelType>
54 {
return PixelType::GetNumberOfComponents();}
57 {
return PixelType::GetNumberOfComponents();}
61 {
return pixel.GetNthComponent(c); }
65 { pixel.SetNthComponent(c, v); }
69 {
return pixel.GetScalarValue(); }
73 #define ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(type) \ 75 class MeshConvertPixelTraits<type> \ 78 typedef type ComponentType; \ 79 static unsigned int GetNumberOfComponents() \ 83 static unsigned int GetNumberOfComponents(const type& itkNotUsed(pixel))\ 87 static ComponentType GetNthComponent(int itkNotUsed(c), const type& pixel)\ 91 static void SetNthComponent(int , type& pixel, const ComponentType& v) \ 95 static type GetScalarValue(const type& pixel) \ 114 #undef ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL 120 #define ITK_MESH_DEFAULTCONVERTTRAITS_OFFSET_TYPE(dimension) \ 122 class MeshConvertPixelTraits< Offset<dimension> > \ 125 typedef Offset<dimension> TargetType; \ 126 typedef TargetType::OffsetValueType ComponentType; \ 127 static unsigned int GetNumberOfComponents() \ 131 static unsigned int GetNumberOfComponents(const TargetType& itkNotUsed(pixel)) \ 135 static ComponentType GetNthComponent(int c, const TargetType& pixel) \ 139 static void SetNthComponent(int i, TargetType & pixel, const ComponentType& v) \ 143 static ComponentType GetScalarValue(const TargetType& pixel) \ 161 #define ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(type,componenttype, dimension) \ 163 class MeshConvertPixelTraits< type< componenttype, dimension> > \ 166 typedef type< componenttype, dimension > TargetType; \ 167 typedef componenttype ComponentType; \ 168 static unsigned int GetNumberOfComponents() \ 172 static unsigned int GetNumberOfComponents(const TargetType& itkNotUsed(pixel)) \ 176 static ComponentType GetNthComponent(int c, const TargetType& pixel) \ 180 static void SetNthComponent(int i, TargetType & pixel, const ComponentType& v) \ 184 static ComponentType GetScalarValue(const TargetType& pixel) \ 196 #define ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, Type) \ 197 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(ArrayType,Type,1) \ 198 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(ArrayType,Type,2) \ 199 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(ArrayType,Type,3) \ 200 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(ArrayType,Type,4) \ 201 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(ArrayType,Type,5) \ 202 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(ArrayType,Type,6) 204 #define ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_TYPES_MACRO(ArrayType) \ 205 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, char); \ 206 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, signed char); \ 207 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, unsigned char); \ 208 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, short); \ 209 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, unsigned short); \ 210 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, int); \ 211 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, unsigned int); \ 212 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, long); \ 213 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, unsigned long); \ 214 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, float); \ 215 ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_MACRO(ArrayType, double); 232 #define ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE(type,componenttype,rows,cols) \ 234 class MeshConvertPixelTraits< type< componenttype, rows, cols > > \ 237 typedef type< componenttype, rows, cols > TargetType; \ 238 typedef componenttype ComponentType; \ 239 static unsigned int GetNumberOfComponents() \ 241 return rows * cols; \ 243 static unsigned int GetNumberOfComponents(const TargetType& itkNotUsed(pixel)) \ 245 return rows * cols; \ 247 static ComponentType GetNthComponent(int c, const TargetType& pixel) \ 249 const unsigned int row = c / cols; \ 250 const unsigned int col = c % cols; \ 251 return pixel[row][col]; \ 253 static void SetNthComponent(int i, TargetType & pixel, const ComponentType& v) \ 255 const unsigned int row = i / cols; \ 256 const unsigned int col = i % cols; \ 257 pixel[row][col] = v; \ 259 static ComponentType GetScalarValue(const TargetType& pixel) \ 261 return pixel[0][0]; \ 270 #define ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, Type) \ 271 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE(ArrayType,Type,1,1) \ 272 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE(ArrayType,Type,2,2) \ 273 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE(ArrayType,Type,3,3) \ 274 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE(ArrayType,Type,4,4) \ 275 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE(ArrayType,Type,5,5) \ 276 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE(ArrayType,Type,6,6) 278 #define ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_TYPES_MACRO(ArrayType) \ 279 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, char); \ 280 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, signed char); \ 281 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, unsigned char); \ 282 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, short); \ 283 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, unsigned short); \ 284 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, int); \ 285 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, unsigned int); \ 286 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, long); \ 287 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, unsigned long); \ 288 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, float); \ 289 ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_MACRO(ArrayType, double); 306 #define ITK_MESH_DEFAULTCONVERTTRAITS_COMPLEX_TYPE( componenttype ) \ 308 class MeshConvertPixelTraits< ::std::complex< componenttype > > \ 311 typedef ::std::complex< componenttype> TargetType; \ 312 typedef componenttype ComponentType; \ 313 static unsigned int GetNumberOfComponents() \ 317 static unsigned int GetNumberOfComponents(const TargetType & itkNotUsed(pixel)) \ 321 static ComponentType GetNthComponent(int i, TargetType & pixel) \ 325 return pixel.imag(); \ 329 return pixel.real(); \ 332 static void SetNthComponent(int i, TargetType & pixel, const ComponentType& v) \ 336 pixel = TargetType( v, pixel.imag() ); \ 340 pixel = TargetType( pixel.real(), v ); \ 343 static ComponentType GetScalarValue(const TargetType& pixel) \ 345 return std::norm(pixel); \ 352 #define ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(type,componenttype) \ 354 class MeshConvertPixelTraits< type< componenttype> > \ 357 typedef type< componenttype > TargetType; \ 358 typedef componenttype ComponentType; \ 359 static unsigned int GetNumberOfComponents() \ 363 static unsigned int GetNumberOfComponents(const TargetType& pixel) \ 365 return pixel.Size(); \ 367 static ComponentType GetNthComponent(int c, const TargetType& pixel) \ 371 static void SetNthComponent(int i, TargetType & pixel, const ComponentType& v) \ 375 static ComponentType GetScalarValue(const TargetType& pixel) \ 381 #define ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE_ALL_TYPES_MACRO(ArrayType) \ 382 ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(ArrayType, char); \ 383 ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(ArrayType, signed char); \ 384 ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(ArrayType, unsigned char); \ 385 ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(ArrayType, short); \ 386 ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(ArrayType, unsigned short); \ 387 ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(ArrayType, int); \ 388 ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(ArrayType, unsigned int); \ 389 ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(ArrayType, long); \ 390 ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(ArrayType, unsigned long); \ 391 ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(ArrayType, float); \ 392 ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE(ArrayType, double);
static unsigned int GetNumberOfComponents(const PixelType &)
Traits class used to by ConvertPixels to convert blocks of pixels.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes...
ITK_MESH_DEFAULTCONVERTTRAITS_COMPLEX_TYPE(float)
#define ITK_MESH_DEFAULTCONVERTTRAITS_OFFSET_TYPE(dimension)
ITK_MESH_DEFAULTCONVERTTRAITS_ARRAY_TYPE_ALL_TYPES_MACRO(Array)
static ComponentType GetNthComponent(int c, const PixelType &pixel)
ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(float) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(double) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(int) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(char) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(short) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned int) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(signed char) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned char) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned short) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(long) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned long) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(long long) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned long long) ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(bool) template< unsigned int VDimension > class DefaultConvertPixelTraits< Offset< VDimension > >
ITK_MESH_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE_ALL_TYPES_MACRO(Vector)
static void SetNthComponent(int c, PixelType &pixel, const ComponentType &v)
ITK_MESH_DEFAULTCONVERTTRAITS_MATRIX_TYPE_ALL_TYPES_MACRO(Matrix)
static ComponentType GetScalarValue(const PixelType &pixel)
static unsigned int GetNumberOfComponents()
PixelType::ComponentType ComponentType