00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkNumericTraitsRGBAPixel_h
00018 #define __itkNumericTraitsRGBAPixel_h
00019
00020 #include "itkNumericTraits.h"
00021 #include "itkRGBAPixel.h"
00022
00023
00024 namespace itk
00025 {
00026
00027
00028
00029
00030
00031
00032 #define itkNumericTraitsRGBAPixelMacro(T) \
00033 template < _TEMPLATE_ARGUMENT_ > \
00034 class NumericTraits<RGBAPixel< T > > \
00035 { \
00036 public: \
00037 typedef T ValueType; \
00038 \
00039 typedef _TYPENAME_ NumericTraits<T>::AbsType ElementAbsType; \
00040 typedef _TYPENAME_ NumericTraits<T>::AccumulateType ElementAccumulateType; \
00041 typedef _TYPENAME_ NumericTraits<T>::FloatType ElementFloatType; \
00042 typedef _TYPENAME_ NumericTraits<T>::PrintType ElementPrintType; \
00043 typedef _TYPENAME_ NumericTraits<T>::RealType ElementRealType; \
00044 \
00045 typedef RGBAPixel<T> Self; \
00046 \
00047 typedef RGBAPixel<ElementAbsType> AbsType; \
00048 typedef RGBAPixel<ElementAccumulateType> AccumulateType; \
00049 typedef RGBAPixel<ElementFloatType> FloatType; \
00050 typedef Self PrintType; \
00051 typedef RGBAPixel<ElementRealType> RealType; \
00052 \
00053 typedef ElementRealType ScalarRealType; \
00054 \
00055 static const RealType max( const Self & a ) \
00056 { \
00057 RealType b(a.Size()); \
00058 b.Fill( NumericTraits< T >::max() ); \
00059 return b; \
00060 } \
00061 static const RealType min( const Self & a ) \
00062 { \
00063 RealType b(a.Size()); \
00064 b.Fill( NumericTraits< T >::min() ); \
00065 return b; \
00066 } \
00067 static const Self ZeroValue() \
00068 { \
00069 Self b; \
00070 b.Fill( NumericTraits< T >::Zero ); \
00071 return b; \
00072 } \
00073 static const Self OneValue() \
00074 { \
00075 Self b; \
00076 b.Fill( NumericTraits< T >::One ); \
00077 return b; \
00078 } \
00079 static const Self ITKCommon_EXPORT Zero; \
00080 static const Self ITKCommon_EXPORT One; \
00081 };
00082
00083
00084
00085
00086
00087
00088
00089
00090 #if defined( _MSC_VER ) && ( _MSC_VER < 1310 )
00091
00092
00093 #define _TYPENAME_
00094 #define _TEMPLATE_ARGUMENT_
00095
00096
00097
00098
00099 itkNumericTraitsRGBAPixelMacro( char );
00100 itkNumericTraitsRGBAPixelMacro( unsigned char );
00101 itkNumericTraitsRGBAPixelMacro( short );
00102 itkNumericTraitsRGBAPixelMacro( unsigned short );
00103 itkNumericTraitsRGBAPixelMacro( int );
00104 itkNumericTraitsRGBAPixelMacro( unsigned int );
00105 itkNumericTraitsRGBAPixelMacro( long );
00106 itkNumericTraitsRGBAPixelMacro( unsigned long );
00107 itkNumericTraitsRGBAPixelMacro( float );
00108 itkNumericTraitsRGBAPixelMacro( double );
00109
00110 #else
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124 #define _TYPENAME_ typename
00125 #define _TEMPLATE_ARGUMENT_ class T
00126
00127
00128
00129
00130 itkNumericTraitsRGBAPixelMacro( T );
00131
00132 #endif
00133
00134
00135
00136
00137
00138
00139
00140 #undef _TYPENAME_
00141 #undef _TEMPLATE_ARGUMENT_
00142
00143
00144 }
00145
00146 #endif // __itkNumericTraitsRGBAPixel_h
00147
00148