typedefs.hpp

Go to the documentation of this file.
00001 /*
00002     Copyright 2005-2007 Adobe Systems Incorporated
00003    
00004     Use, modification and distribution are subject to the Boost Software License,
00005     Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
00006     http://www.boost.org/LICENSE_1_0.txt).
00007 
00008     See http://opensource.adobe.com/gil for most recent version including documentation.
00009 */
00010 
00011 /*************************************************************************************************/
00012 
00013 #ifndef GIL_TYPEDEFS_H
00014 #define GIL_TYPEDEFS_H
00015 
00024 
00025 #include "gil_config.hpp"
00026 #include <boost/cstdint.hpp>
00027 #include "gray.hpp"
00028 #include "rgb.hpp"
00029 #include "rgba.hpp"
00030 #include "cmyk.hpp"
00031 #include "device_n.hpp"
00032 #include <memory>
00033 
00034 // CS = 'bgr' LAYOUT='bgr_layout_t'
00035 #define GIL_DEFINE_BASE_TYPEDEFS_INTERNAL(T,CS,LAYOUT)                                              \
00036     template <typename, typename>    struct pixel;                                                \
00037     template <typename, typename>    struct planar_pixel_reference;                                            \
00038     template <typename, typename>    struct planar_pixel_iterator;                                            \
00039     template <typename>                class memory_based_step_iterator;                                    \
00040     template <typename>                class point2;                                                \
00041     template <typename>                class memory_based_2d_locator;                                    \
00042     template <typename>                class image_view;                                            \
00043     template <typename, bool, typename>    class image;                                                \
00044     typedef pixel<bits##T, LAYOUT >                        CS##T##_pixel_t;        \
00045     typedef const pixel<bits##T, LAYOUT >                   CS##T##c_pixel_t;        \
00046     typedef pixel<bits##T, LAYOUT >&                      CS##T##_ref_t;            \
00047     typedef const pixel<bits##T, LAYOUT >&                CS##T##c_ref_t;            \
00048     typedef CS##T##_pixel_t*                                               CS##T##_ptr_t;            \
00049     typedef CS##T##c_pixel_t*                                               CS##T##c_ptr_t;            \
00050     typedef memory_based_step_iterator<CS##T##_ptr_t>                               CS##T##_step_ptr_t;        \
00051     typedef memory_based_step_iterator<CS##T##c_ptr_t>                               CS##T##c_step_ptr_t;    \
00052     typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##_ptr_t> >       CS##T##_loc_t;            \
00053     typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##c_ptr_t> >       CS##T##c_loc_t;            \
00054     typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##_step_ptr_t> >  CS##T##_step_loc_t;        \
00055     typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##c_step_ptr_t> > CS##T##c_step_loc_t;    \
00056     typedef image_view<CS##T##_loc_t>                                        CS##T##_view_t;            \
00057     typedef image_view<CS##T##c_loc_t>                                        CS##T##c_view_t;        \
00058     typedef image_view<CS##T##_step_loc_t>                                    CS##T##_step_view_t;    \
00059     typedef image_view<CS##T##c_step_loc_t>                                   CS##T##c_step_view_t;    \
00060     typedef image<CS##T##_pixel_t,false,std::allocator<unsigned char> >           CS##T##_image_t;
00061 
00062 // CS = 'bgr' CS_FULL = 'rgb_t' LAYOUT='bgr_layout_t'
00063 #define GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(T,CS,CS_FULL,LAYOUT)                                                                \
00064     GIL_DEFINE_BASE_TYPEDEFS_INTERNAL(T,CS,LAYOUT)                                                                    \
00065     typedef planar_pixel_reference<bits##T&,CS_FULL >                                          CS##T##_planar_ref_t;        \
00066     typedef planar_pixel_reference<const bits##T&,CS_FULL >                                      CS##T##c_planar_ref_t;        \
00067     typedef planar_pixel_iterator<bits##T*,CS_FULL >                                          CS##T##_planar_ptr_t;        \
00068     typedef planar_pixel_iterator<const bits##T*,CS_FULL >                                      CS##T##c_planar_ptr_t;        \
00069     typedef memory_based_step_iterator<CS##T##_planar_ptr_t>                              CS##T##_planar_step_ptr_t;    \
00070     typedef memory_based_step_iterator<CS##T##c_planar_ptr_t>                              CS##T##c_planar_step_ptr_t;    \
00071     typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##_planar_ptr_t> >          CS##T##_planar_loc_t;        \
00072     typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##c_planar_ptr_t> >      CS##T##c_planar_loc_t;        \
00073     typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##_planar_step_ptr_t> >  CS##T##_planar_step_loc_t;    \
00074     typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##c_planar_step_ptr_t> > CS##T##c_planar_step_loc_t;    \
00075     typedef image_view<CS##T##_planar_loc_t>                                      CS##T##_planar_view_t;        \
00076     typedef image_view<CS##T##c_planar_loc_t>                                      CS##T##c_planar_view_t;        \
00077     typedef image_view<CS##T##_planar_step_loc_t>                                  CS##T##_planar_step_view_t;    \
00078     typedef image_view<CS##T##c_planar_step_loc_t>                                  CS##T##c_planar_step_view_t;\
00079     typedef image<CS##T##_pixel_t,true,std::allocator<unsigned char> >              CS##T##_planar_image_t;    
00080 
00081 #define GIL_DEFINE_BASE_TYPEDEFS(T,CS)        \
00082     GIL_DEFINE_BASE_TYPEDEFS_INTERNAL(T,CS,CS##_layout_t)
00083 
00084 #define GIL_DEFINE_ALL_TYPEDEFS(T,CS)         \
00085     GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(T,CS,CS##_t,CS##_layout_t)
00086 
00087 namespace boost { namespace gil {
00088 
00089 // forward declarations
00090 template <typename B, typename Mn, typename Mx> struct scoped_channel_value;
00091 struct float_zero;
00092 struct float_one;
00093 typedef scoped_channel_value<float,float_zero,float_one> bits32f;
00094 typedef uint8_t  bits8;
00095 typedef uint16_t bits16;
00096 typedef uint32_t bits32;
00097 typedef int8_t   bits8s;
00098 typedef int16_t  bits16s;
00099 typedef int32_t  bits32s;
00100 
00101 GIL_DEFINE_BASE_TYPEDEFS(8,  gray)
00102 GIL_DEFINE_BASE_TYPEDEFS(8s, gray)
00103 GIL_DEFINE_BASE_TYPEDEFS(16, gray)
00104 GIL_DEFINE_BASE_TYPEDEFS(16s,gray)
00105 GIL_DEFINE_BASE_TYPEDEFS(32 ,gray)
00106 GIL_DEFINE_BASE_TYPEDEFS(32s,gray)
00107 GIL_DEFINE_BASE_TYPEDEFS(32f,gray)
00108 GIL_DEFINE_BASE_TYPEDEFS(8,  bgr)
00109 GIL_DEFINE_BASE_TYPEDEFS(8s, bgr)
00110 GIL_DEFINE_BASE_TYPEDEFS(16, bgr)
00111 GIL_DEFINE_BASE_TYPEDEFS(16s,bgr)
00112 GIL_DEFINE_BASE_TYPEDEFS(32 ,bgr)
00113 GIL_DEFINE_BASE_TYPEDEFS(32s,bgr)
00114 GIL_DEFINE_BASE_TYPEDEFS(32f,bgr)
00115 GIL_DEFINE_BASE_TYPEDEFS(8,  argb)
00116 GIL_DEFINE_BASE_TYPEDEFS(8s, argb)
00117 GIL_DEFINE_BASE_TYPEDEFS(16, argb)
00118 GIL_DEFINE_BASE_TYPEDEFS(16s,argb)
00119 GIL_DEFINE_BASE_TYPEDEFS(32, argb)
00120 GIL_DEFINE_BASE_TYPEDEFS(32s,argb)
00121 GIL_DEFINE_BASE_TYPEDEFS(32f,argb)
00122 GIL_DEFINE_BASE_TYPEDEFS(8,  abgr)
00123 GIL_DEFINE_BASE_TYPEDEFS(8s, abgr)
00124 GIL_DEFINE_BASE_TYPEDEFS(16, abgr)
00125 GIL_DEFINE_BASE_TYPEDEFS(16s,abgr)
00126 GIL_DEFINE_BASE_TYPEDEFS(32 ,abgr)
00127 GIL_DEFINE_BASE_TYPEDEFS(32s,abgr)
00128 GIL_DEFINE_BASE_TYPEDEFS(32f,abgr)
00129 GIL_DEFINE_BASE_TYPEDEFS(8,  bgra)
00130 GIL_DEFINE_BASE_TYPEDEFS(8s, bgra)
00131 GIL_DEFINE_BASE_TYPEDEFS(16, bgra)
00132 GIL_DEFINE_BASE_TYPEDEFS(16s,bgra)
00133 GIL_DEFINE_BASE_TYPEDEFS(32 ,bgra)
00134 GIL_DEFINE_BASE_TYPEDEFS(32s,bgra)
00135 GIL_DEFINE_BASE_TYPEDEFS(32f,bgra)
00136 
00137 GIL_DEFINE_ALL_TYPEDEFS(8,  rgb)
00138 GIL_DEFINE_ALL_TYPEDEFS(8s, rgb)
00139 GIL_DEFINE_ALL_TYPEDEFS(16, rgb)
00140 GIL_DEFINE_ALL_TYPEDEFS(16s,rgb)
00141 GIL_DEFINE_ALL_TYPEDEFS(32 ,rgb)
00142 GIL_DEFINE_ALL_TYPEDEFS(32s,rgb)
00143 GIL_DEFINE_ALL_TYPEDEFS(32f,rgb)
00144 GIL_DEFINE_ALL_TYPEDEFS(8,  rgba)
00145 GIL_DEFINE_ALL_TYPEDEFS(8s, rgba)
00146 GIL_DEFINE_ALL_TYPEDEFS(16, rgba)
00147 GIL_DEFINE_ALL_TYPEDEFS(16s,rgba)
00148 GIL_DEFINE_ALL_TYPEDEFS(32 ,rgba)
00149 GIL_DEFINE_ALL_TYPEDEFS(32s,rgba)
00150 GIL_DEFINE_ALL_TYPEDEFS(32f,rgba)
00151 GIL_DEFINE_ALL_TYPEDEFS(8,  cmyk)
00152 GIL_DEFINE_ALL_TYPEDEFS(8s, cmyk)
00153 GIL_DEFINE_ALL_TYPEDEFS(16, cmyk)
00154 GIL_DEFINE_ALL_TYPEDEFS(16s,cmyk)
00155 GIL_DEFINE_ALL_TYPEDEFS(32 ,cmyk)
00156 GIL_DEFINE_ALL_TYPEDEFS(32s,cmyk)
00157 GIL_DEFINE_ALL_TYPEDEFS(32f,cmyk)
00158 
00159 
00160 template <int N> struct devicen_t;
00161 template <int N> struct devicen_layout_t;
00162 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8,  dev2n, devicen_t<2>, devicen_layout_t<2>)
00163 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8s, dev2n, devicen_t<2>, devicen_layout_t<2>)
00164 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16, dev2n, devicen_t<2>, devicen_layout_t<2>)
00165 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16s,dev2n, devicen_t<2>, devicen_layout_t<2>)
00166 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32 ,dev2n, devicen_t<2>, devicen_layout_t<2>)
00167 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32s,dev2n, devicen_t<2>, devicen_layout_t<2>)
00168 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32f,dev2n, devicen_t<2>, devicen_layout_t<2>)
00169 
00170 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8,  dev3n, devicen_t<3>, devicen_layout_t<3>)
00171 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8s, dev3n, devicen_t<3>, devicen_layout_t<3>)
00172 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16, dev3n, devicen_t<3>, devicen_layout_t<3>)
00173 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16s,dev3n, devicen_t<3>, devicen_layout_t<3>)
00174 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32 ,dev3n, devicen_t<3>, devicen_layout_t<3>)
00175 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32s,dev3n, devicen_t<3>, devicen_layout_t<3>)
00176 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32f,dev3n, devicen_t<3>, devicen_layout_t<3>)
00177 
00178 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8,  dev4n, devicen_t<4>, devicen_layout_t<4>)
00179 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8s, dev4n, devicen_t<4>, devicen_layout_t<4>)
00180 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16, dev4n, devicen_t<4>, devicen_layout_t<4>)
00181 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16s,dev4n, devicen_t<4>, devicen_layout_t<4>)
00182 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32 ,dev4n, devicen_t<4>, devicen_layout_t<4>)
00183 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32s,dev4n, devicen_t<4>, devicen_layout_t<4>)
00184 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32f,dev4n, devicen_t<4>, devicen_layout_t<4>)
00185 
00186 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8,  dev5n, devicen_t<5>, devicen_layout_t<5>)
00187 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8s, dev5n, devicen_t<5>, devicen_layout_t<5>)
00188 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16, dev5n, devicen_t<5>, devicen_layout_t<5>)
00189 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16s,dev5n, devicen_t<5>, devicen_layout_t<5>)
00190 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32 ,dev5n, devicen_t<5>, devicen_layout_t<5>)
00191 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32s,dev5n, devicen_t<5>, devicen_layout_t<5>)
00192 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32f,dev5n, devicen_t<5>, devicen_layout_t<5>)
00193 
00194 } }  // namespace boost::gil
00195 
00196 #endif

Generated on Sat May 2 13:50:15 2009 for Generic Image Library by  doxygen 1.5.6