typedefs.hppGo 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 1.5.6 |