Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itkDefaultConvertPixelTraits.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkDefaultConvertPixelTraits.h,v $ 00005 Language: C++ 00006 Date: $Date: 2003/09/10 14:29:32 $ 00007 Version: $Revision: 1.12 $ 00008 00009 Copyright (c) Insight Software Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #ifndef __itkDefaultConvertPixelTraits_h 00019 #define __itkDefaultConvertPixelTraits_h 00020 00021 #include "itkOffset.h" 00022 #include "itkCovariantVector.h" 00023 #include "itkVector.h" 00024 #include "itkPoint.h" 00025 00026 namespace itk 00027 { 00028 00038 template<typename PixelType> 00039 class DefaultConvertPixelTraits 00040 { 00041 public: 00043 typedef typename PixelType::ComponentType ComponentType; 00044 00046 static unsigned int GetNumberOfComponents() 00047 { return PixelType::GetNumberOfComponents();} 00048 00050 static ComponentType GetNthComponent(int c, const PixelType& pixel) 00051 { return pixel.GetNthComponent(c); } 00052 00054 static void SetNthComponent(int c, PixelType& pixel, const ComponentType& v) 00055 { pixel.SetNthComponent(c, v); } 00056 00058 static ComponentType GetScalarValue(const PixelType& pixel) 00059 { return pixel.GetScalarValue(); } 00060 00061 }; 00062 00063 #define ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(type) \ 00064 template<> \ 00065 class DefaultConvertPixelTraits<type> \ 00066 { \ 00067 public: \ 00068 typedef type ComponentType; \ 00069 static unsigned int GetNumberOfComponents() \ 00070 { \ 00071 return 1; \ 00072 } \ 00073 static void SetNthComponent(int , type& pixel, const ComponentType& v) \ 00074 { \ 00075 pixel = v; \ 00076 } \ 00077 static type GetScalarValue(const type& pixel) \ 00078 { \ 00079 return pixel; \ 00080 } \ 00081 }; 00082 00083 00084 ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(float) 00085 ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(double) 00086 ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(int) 00087 ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(char) 00088 ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(short) 00089 ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned int) 00090 ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned char) 00091 ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned short) 00092 ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(long) 00093 ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL(unsigned long) 00094 00095 #undef ITK_DEFAULTCONVERTTRAITS_NATIVE_SPECIAL 00096 00097 00098 00099 00100 // 00101 // Default traits for the Offset<> pixel type 00102 // 00103 00104 #define ITK_DEFAULTCONVERTTRAITS_OFFSET_TYPE(dimension) \ 00105 template<> \ 00106 class DefaultConvertPixelTraits< Offset<dimension> > \ 00107 { \ 00108 public: \ 00109 typedef Offset<dimension> TargetType; \ 00110 typedef TargetType::OffsetValueType ComponentType; \ 00111 static unsigned int GetNumberOfComponents() \ 00112 { \ 00113 return dimension; \ 00114 } \ 00115 static void SetNthComponent(int i, TargetType & pixel, const ComponentType& v) \ 00116 { \ 00117 pixel[i] = v; \ 00118 } \ 00119 static ComponentType GetScalarValue(const TargetType& pixel) \ 00120 { \ 00121 return pixel[0]; \ 00122 } \ 00123 }; \ 00124 00125 00126 // Define traits for Offset<> from dimensions 1 to 5 00127 ITK_DEFAULTCONVERTTRAITS_OFFSET_TYPE(1) 00128 ITK_DEFAULTCONVERTTRAITS_OFFSET_TYPE(2) 00129 ITK_DEFAULTCONVERTTRAITS_OFFSET_TYPE(3) 00130 ITK_DEFAULTCONVERTTRAITS_OFFSET_TYPE(4) 00131 ITK_DEFAULTCONVERTTRAITS_OFFSET_TYPE(5) 00132 00133 00134 00135 00136 // 00137 // Default traits for the pixel types deriving from FixedArray<> 00138 // 00139 00140 #define ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(type,componenttype, dimension) \ 00141 template<> \ 00142 class DefaultConvertPixelTraits< type< componenttype, dimension> > \ 00143 { \ 00144 public: \ 00145 typedef type< componenttype, dimension > TargetType; \ 00146 typedef componenttype ComponentType; \ 00147 static unsigned int GetNumberOfComponents() \ 00148 { \ 00149 return dimension; \ 00150 } \ 00151 static void SetNthComponent(int i, TargetType & pixel, const ComponentType& v) \ 00152 { \ 00153 pixel[i] = v; \ 00154 } \ 00155 static ComponentType GetScalarValue(const TargetType& pixel) \ 00156 { \ 00157 return pixel[0]; \ 00158 } \ 00159 }; \ 00160 00161 00162 00163 00164 00165 // 00166 // 00167 // Define traits for Classed deriving from FixedArray from dimensions 1 to 6 00168 // These classes include: Vector, CovariantVector and Point. 00169 // 00170 // 00171 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Vector,float,1) 00172 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Vector,float,2) 00173 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Vector,float,3) 00174 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Vector,float,4) 00175 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Vector,float,5) 00176 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Vector,float,6) 00177 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Vector,double,2) 00178 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Vector,double,3) 00179 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Vector,double,4) 00180 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Vector,double,5) 00181 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Vector,double,6) 00182 00183 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Point,float,1) 00184 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Point,float,2) 00185 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Point,float,3) 00186 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Point,float,4) 00187 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Point,float,5) 00188 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Point,float,6) 00189 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Point,double,2) 00190 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Point,double,3) 00191 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Point,double,4) 00192 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Point,double,5) 00193 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(Point,double,6) 00194 00195 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(CovariantVector,float,1) 00196 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(CovariantVector,float,2) 00197 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(CovariantVector,float,3) 00198 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(CovariantVector,float,4) 00199 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(CovariantVector,float,5) 00200 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(CovariantVector,float,6) 00201 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(CovariantVector,double,2) 00202 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(CovariantVector,double,3) 00203 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(CovariantVector,double,4) 00204 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(CovariantVector,double,5) 00205 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(CovariantVector,double,6) 00206 00207 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(FixedArray,float,1) 00208 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(FixedArray,float,2) 00209 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(FixedArray,float,3) 00210 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(FixedArray,float,4) 00211 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(FixedArray,float,5) 00212 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(FixedArray,float,6) 00213 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(FixedArray,double,2) 00214 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(FixedArray,double,3) 00215 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(FixedArray,double,4) 00216 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(FixedArray,double,5) 00217 ITK_DEFAULTCONVERTTRAITS_FIXEDARRAY_TYPE(FixedArray,double,6) 00218 00219 // 00220 // End of Traits for the classes deriving from FixedArray. 00221 // 00222 // 00223 00224 00225 00226 } // end namespace itk 00227 00228 00229 #endif

Generated at Sat Mar 31 02:16:56 2007 for ITK by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2000