core/vil1/vil1_memory_image_of_format.txx

Go to the documentation of this file.
00001 // This is core/vil1/vil1_memory_image_of_format.txx
00002 #ifndef vil1_memory_image_of_format_h_
00003 #define vil1_memory_image_of_format_h_
00004 //:
00005 // \file
00006 // \author Andrew W. Fitzgibbon, Oxford RRG
00007 // \date 21 Feb 2000
00008 // fsm: moved from vil1_memory_image_of.txx to allow clients to specialize
00009 // the traits after the standard ones in here, but before first use in
00010 // there.
00011 //
00012 //-----------------------------------------------------------------------------
00013 
00014 #include <vcl_climits.h>  // for CHAR_BIT, number of bits in a char.
00015 #include <vcl_complex_fwd.h>
00016 
00017 #include <vil1/vil1_memory_image.h>
00018 #include <vil1/vil1_rgb.h>
00019 #include <vil1/vil1_rgba.h>
00020 
00021 #include <vxl_config.h>
00022 
00023 //: Map from Types to image formats
00024 template <class T>
00025 struct vil1_memory_image_of_format : public vil1_memory_image_format
00026 {
00027  protected:
00028   // A protection error here means you haven't derived
00029   // the vil1_memory_image_format<T> for a vil1_memory_image_of<T>
00030   vil1_memory_image_of_format();
00031 };
00032 
00033 VCL_DEFINE_SPECIALIZATION
00034 struct vil1_memory_image_of_format<float> : public vil1_memory_image_format
00035 {
00036   vil1_memory_image_of_format()
00037   {
00038     components = 1;
00039     bits_per_component = sizeof(float)*CHAR_BIT;
00040     component_format = VIL1_COMPONENT_FORMAT_IEEE_FLOAT;
00041   }
00042 };
00043 
00044 VCL_DEFINE_SPECIALIZATION
00045 struct vil1_memory_image_of_format<double> : public vil1_memory_image_format
00046 {
00047   vil1_memory_image_of_format()
00048   {
00049     components = 1;
00050     bits_per_component = sizeof(double)*CHAR_BIT;
00051     component_format = VIL1_COMPONENT_FORMAT_IEEE_FLOAT;
00052   }
00053 };
00054 
00055 VCL_DEFINE_SPECIALIZATION
00056 struct vil1_memory_image_of_format<vcl_complex<float> > : public vil1_memory_image_format
00057 {
00058   vil1_memory_image_of_format()
00059   {
00060     components = 2;
00061     bits_per_component = 32;
00062     component_format = VIL1_COMPONENT_FORMAT_IEEE_FLOAT;
00063   }
00064 };
00065 
00066 VCL_DEFINE_SPECIALIZATION
00067 struct vil1_memory_image_of_format<vcl_complex<double> > : public vil1_memory_image_format
00068 {
00069   vil1_memory_image_of_format()
00070   {
00071     components = 2;
00072     bits_per_component = 64;
00073     component_format = VIL1_COMPONENT_FORMAT_IEEE_FLOAT;
00074   }
00075 };
00076 
00077 VCL_DEFINE_SPECIALIZATION
00078 struct vil1_memory_image_of_format<signed char> : public vil1_memory_image_format
00079 {
00080   vil1_memory_image_of_format()
00081   {
00082     components = 1;
00083     bits_per_component = CHAR_BIT;
00084     component_format = VIL1_COMPONENT_FORMAT_SIGNED_INT;
00085   }
00086 };
00087 
00088 VCL_DEFINE_SPECIALIZATION
00089 struct vil1_memory_image_of_format<bool> : public vil1_memory_image_format
00090 {
00091   vil1_memory_image_of_format()
00092   {
00093     components = 1;
00094     bits_per_component = sizeof(bool)*CHAR_BIT; // ugh! this is 32 on gcc -- fsm.
00095     component_format = VIL1_COMPONENT_FORMAT_UNSIGNED_INT;
00096   }
00097 };
00098 
00099 VCL_DEFINE_SPECIALIZATION
00100 struct vil1_memory_image_of_format<unsigned char> : public vil1_memory_image_format
00101 {
00102   vil1_memory_image_of_format()
00103   {
00104     components = 1;
00105     bits_per_component = CHAR_BIT;
00106     component_format = VIL1_COMPONENT_FORMAT_UNSIGNED_INT;
00107   }
00108 };
00109 
00110 VCL_DEFINE_SPECIALIZATION
00111 struct vil1_memory_image_of_format<unsigned short> : public vil1_memory_image_format
00112 {
00113   vil1_memory_image_of_format()
00114   {
00115     components = 1;
00116     bits_per_component = sizeof(short)*CHAR_BIT;
00117     component_format = VIL1_COMPONENT_FORMAT_UNSIGNED_INT;
00118   }
00119 };
00120 
00121 VCL_DEFINE_SPECIALIZATION
00122 struct vil1_memory_image_of_format<signed short> : public vil1_memory_image_format
00123 {
00124   vil1_memory_image_of_format()
00125   {
00126     components = 1;
00127     bits_per_component = sizeof(short)*CHAR_BIT;
00128     component_format = VIL1_COMPONENT_FORMAT_SIGNED_INT;
00129   }
00130 };
00131 
00132 VCL_DEFINE_SPECIALIZATION
00133 struct vil1_memory_image_of_format<signed int> : public vil1_memory_image_format
00134 {
00135   vil1_memory_image_of_format()
00136   {
00137     components = 1;
00138     bits_per_component = sizeof(int)*CHAR_BIT;
00139     component_format = VIL1_COMPONENT_FORMAT_SIGNED_INT;
00140   }
00141 };
00142 
00143 VCL_DEFINE_SPECIALIZATION
00144 struct vil1_memory_image_of_format<unsigned int> : public vil1_memory_image_format
00145 {
00146   vil1_memory_image_of_format()
00147   {
00148     components = 1;
00149     bits_per_component = sizeof(int)*CHAR_BIT;
00150     component_format = VIL1_COMPONENT_FORMAT_UNSIGNED_INT;
00151   }
00152 };
00153 
00154 VCL_DEFINE_SPECIALIZATION
00155 struct vil1_memory_image_of_format<vil1_rgb<unsigned char> > : public vil1_memory_image_format
00156 {
00157   vil1_memory_image_of_format()
00158   {
00159     components = 3;
00160     bits_per_component = CHAR_BIT;
00161     component_format = VIL1_COMPONENT_FORMAT_UNSIGNED_INT;
00162   }
00163 };
00164 
00165 VCL_DEFINE_SPECIALIZATION
00166 struct vil1_memory_image_of_format<vil1_rgb<vxl_uint_16> > : public vil1_memory_image_format
00167 {
00168   vil1_memory_image_of_format()
00169   {
00170     components = 3;
00171     bits_per_component = 16;
00172     component_format = VIL1_COMPONENT_FORMAT_UNSIGNED_INT;
00173   }
00174 };
00175 
00176 VCL_DEFINE_SPECIALIZATION
00177 struct vil1_memory_image_of_format<vil1_rgb<float> > : public vil1_memory_image_format
00178 {
00179   vil1_memory_image_of_format()
00180   {
00181     components = 3;
00182     bits_per_component = 32;
00183     component_format = VIL1_COMPONENT_FORMAT_IEEE_FLOAT;
00184   }
00185 };
00186 
00187 VCL_DEFINE_SPECIALIZATION
00188 struct vil1_memory_image_of_format<vil1_rgba<float> > : public vil1_memory_image_format
00189 {
00190   vil1_memory_image_of_format()
00191   {
00192     components = 4;
00193     bits_per_component = 32;
00194     component_format = VIL1_COMPONENT_FORMAT_IEEE_FLOAT;
00195   }
00196 };
00197 
00198 VCL_DEFINE_SPECIALIZATION
00199 struct vil1_memory_image_of_format<vil1_rgb<double> > : public vil1_memory_image_format
00200 {
00201   vil1_memory_image_of_format()
00202   {
00203     components = 3;
00204     bits_per_component = 64;
00205     component_format = VIL1_COMPONENT_FORMAT_IEEE_FLOAT;
00206   }
00207 };
00208 
00209 #endif // vil1_memory_image_of_format_h_

Generated on Sat Nov 22 05:08:29 2008 for core/vil1 by  doxygen 1.5.1