9 #ifndef BOOST_GIL_TYPEDEFS_HPP 10 #define BOOST_GIL_TYPEDEFS_HPP 12 #include <boost/gil/cmyk.hpp> 13 #include <boost/gil/device_n.hpp> 14 #include <boost/gil/gray.hpp> 15 #include <boost/gil/point.hpp> 16 #include <boost/gil/rgb.hpp> 17 #include <boost/gil/rgba.hpp> 24 #define GIL_DEFINE_BASE_TYPEDEFS_INTERNAL(B, CM, CS, LAYOUT) \ 25 template <typename, typename> struct pixel; \ 26 template <typename, typename> struct planar_pixel_reference; \ 27 template <typename, typename> struct planar_pixel_iterator; \ 28 template <typename> class memory_based_step_iterator; \ 29 template <typename> class point; \ 30 template <typename> class memory_based_2d_locator; \ 31 template <typename> class image_view; \ 32 template <typename, bool, typename> class image; \ 33 using CS##B##_pixel_t = pixel<CM, LAYOUT>; \ 34 using CS##B##c_pixel_t = pixel<CM, LAYOUT> const; \ 35 using CS##B##_ref_t = pixel<CM, LAYOUT>&; \ 36 using CS##B##c_ref_t = pixel<CM, LAYOUT> const&; \ 37 using CS##B##_ptr_t = CS##B##_pixel_t*; \ 38 using CS##B##c_ptr_t = CS##B##c_pixel_t*; \ 39 using CS##B##_step_ptr_t = memory_based_step_iterator<CS##B##_ptr_t>; \ 40 using CS##B##c_step_ptr_t = memory_based_step_iterator<CS##B##c_ptr_t>; \ 42 = memory_based_2d_locator<memory_based_step_iterator<CS##B##_ptr_t>>; \ 43 using CS##B##c_loc_t \ 44 = memory_based_2d_locator<memory_based_step_iterator<CS##B##c_ptr_t>>; \ 45 using CS##B##_step_loc_t \ 46 = memory_based_2d_locator<memory_based_step_iterator<CS##B##_step_ptr_t>>; \ 47 using CS##B##c_step_loc_t \ 48 = memory_based_2d_locator<memory_based_step_iterator<CS##B##c_step_ptr_t>>; \ 49 using CS##B##_view_t = image_view<CS##B##_loc_t>; \ 50 using CS##B##c_view_t = image_view<CS##B##c_loc_t>; \ 51 using CS##B##_step_view_t = image_view<CS##B##_step_loc_t>; \ 52 using CS##B##c_step_view_t = image_view<CS##B##c_step_loc_t>; \ 53 using CS##B##_image_t = image<CS##B##_pixel_t, false, std::allocator<unsigned char>>; 56 #define GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(B, CM, CS, CS_FULL, LAYOUT) \ 57 GIL_DEFINE_BASE_TYPEDEFS_INTERNAL(B, CM, CS, LAYOUT) \ 58 using CS##B##_planar_ref_t = planar_pixel_reference<CM&, CS_FULL>; \ 59 using CS##B##c_planar_ref_t = planar_pixel_reference<CM const&, CS_FULL>; \ 60 using CS##B##_planar_ptr_t = planar_pixel_iterator<CM*, CS_FULL>; \ 61 using CS##B##c_planar_ptr_t = planar_pixel_iterator<CM const*, CS_FULL>; \ 62 using CS##B##_planar_step_ptr_t = memory_based_step_iterator<CS##B##_planar_ptr_t>; \ 63 using CS##B##c_planar_step_ptr_t \ 64 = memory_based_step_iterator<CS##B##c_planar_ptr_t>; \ 65 using CS##B##_planar_loc_t \ 66 = memory_based_2d_locator<memory_based_step_iterator<CS##B##_planar_ptr_t>>; \ 67 using CS##B##c_planar_loc_t \ 68 = memory_based_2d_locator<memory_based_step_iterator<CS##B##c_planar_ptr_t>>; \ 69 using CS##B##_planar_step_loc_t \ 70 = memory_based_2d_locator<memory_based_step_iterator<CS##B##_planar_step_ptr_t>>; \ 71 using CS##B##c_planar_step_loc_t \ 72 = memory_based_2d_locator<memory_based_step_iterator<CS##B##c_planar_step_ptr_t>>; \ 73 using CS##B##_planar_view_t = image_view<CS##B##_planar_loc_t>; \ 74 using CS##B##c_planar_view_t = image_view<CS##B##c_planar_loc_t>; \ 75 using CS##B##_planar_step_view_t = image_view<CS##B##_planar_step_loc_t>; \ 76 using CS##B##c_planar_step_view_t = image_view<CS##B##c_planar_step_loc_t>; \ 77 using CS##B##_planar_image_t \ 78 = image<CS##B##_pixel_t, true, std::allocator<unsigned char>>; 80 #define GIL_DEFINE_BASE_TYPEDEFS(B, CM, CS) \ 81 GIL_DEFINE_BASE_TYPEDEFS_INTERNAL(B, CM, CS, CS##_layout_t) 83 #define GIL_DEFINE_ALL_TYPEDEFS(B, CM, CS) \ 84 GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(B, CM, CS, CS##_t, CS##_layout_t) 87 namespace boost {
namespace gil {
90 template <
typename B,
typename Mn,
typename Mx>
struct scoped_channel_value;
91 template <
typename T>
struct float_point_zero;
92 template <
typename T>
struct float_point_one;
124 using float32_t = scoped_channel_value<float, float_point_zero<float>, float_point_one<float>>;
128 using float64_t = scoped_channel_value<double, float_point_zero<double>, float_point_one<double>>;
130 GIL_DEFINE_BASE_TYPEDEFS(8, uint8_t, gray)
131 GIL_DEFINE_BASE_TYPEDEFS(8s, int8_t, gray)
132 GIL_DEFINE_BASE_TYPEDEFS(16, uint16_t, gray)
133 GIL_DEFINE_BASE_TYPEDEFS(16s, int16_t, gray)
134 GIL_DEFINE_BASE_TYPEDEFS(32, uint32_t, gray)
135 GIL_DEFINE_BASE_TYPEDEFS(32s, int32_t, gray)
136 GIL_DEFINE_BASE_TYPEDEFS(32f,
float32_t, gray)
138 GIL_DEFINE_BASE_TYPEDEFS(8, uint8_t, bgr)
139 GIL_DEFINE_BASE_TYPEDEFS(8s, int8_t, bgr)
140 GIL_DEFINE_BASE_TYPEDEFS(16, uint16_t, bgr)
141 GIL_DEFINE_BASE_TYPEDEFS(16s, int16_t, bgr)
142 GIL_DEFINE_BASE_TYPEDEFS(32, uint32_t, bgr)
143 GIL_DEFINE_BASE_TYPEDEFS(32s, int32_t, bgr)
144 GIL_DEFINE_BASE_TYPEDEFS(32f,
float32_t, bgr)
146 GIL_DEFINE_BASE_TYPEDEFS(8, uint8_t, argb)
147 GIL_DEFINE_BASE_TYPEDEFS(8s, int8_t, argb)
148 GIL_DEFINE_BASE_TYPEDEFS(16, uint16_t, argb)
149 GIL_DEFINE_BASE_TYPEDEFS(16s, int16_t, argb)
150 GIL_DEFINE_BASE_TYPEDEFS(32, uint32_t, argb)
151 GIL_DEFINE_BASE_TYPEDEFS(32s, int32_t, argb)
152 GIL_DEFINE_BASE_TYPEDEFS(32f,
float32_t, argb)
154 GIL_DEFINE_BASE_TYPEDEFS(8, uint8_t, abgr)
155 GIL_DEFINE_BASE_TYPEDEFS(8s, int8_t, abgr)
156 GIL_DEFINE_BASE_TYPEDEFS(16, uint16_t, abgr)
157 GIL_DEFINE_BASE_TYPEDEFS(16s, int16_t, abgr)
158 GIL_DEFINE_BASE_TYPEDEFS(32, uint32_t, abgr)
159 GIL_DEFINE_BASE_TYPEDEFS(32s, int32_t, abgr)
160 GIL_DEFINE_BASE_TYPEDEFS(32f,
float32_t, abgr)
162 GIL_DEFINE_BASE_TYPEDEFS(8, uint8_t, bgra)
163 GIL_DEFINE_BASE_TYPEDEFS(8s, int8_t, bgra)
164 GIL_DEFINE_BASE_TYPEDEFS(16, uint16_t, bgra)
165 GIL_DEFINE_BASE_TYPEDEFS(16s, int16_t, bgra)
166 GIL_DEFINE_BASE_TYPEDEFS(32, uint32_t, bgra)
167 GIL_DEFINE_BASE_TYPEDEFS(32s, int32_t, bgra)
168 GIL_DEFINE_BASE_TYPEDEFS(32f,
float32_t, bgra)
170 GIL_DEFINE_ALL_TYPEDEFS(8, uint8_t, rgb)
171 GIL_DEFINE_ALL_TYPEDEFS(8s, int8_t, rgb)
172 GIL_DEFINE_ALL_TYPEDEFS(16, uint16_t, rgb)
173 GIL_DEFINE_ALL_TYPEDEFS(16s, int16_t, rgb)
174 GIL_DEFINE_ALL_TYPEDEFS(32, uint32_t, rgb)
175 GIL_DEFINE_ALL_TYPEDEFS(32s, int32_t, rgb)
176 GIL_DEFINE_ALL_TYPEDEFS(32f,
float32_t, rgb)
178 GIL_DEFINE_ALL_TYPEDEFS(8, uint8_t, rgba)
179 GIL_DEFINE_ALL_TYPEDEFS(8s, int8_t, rgba)
180 GIL_DEFINE_ALL_TYPEDEFS(16, uint16_t, rgba)
181 GIL_DEFINE_ALL_TYPEDEFS(16s, int16_t, rgba)
182 GIL_DEFINE_ALL_TYPEDEFS(32, uint32_t, rgba)
183 GIL_DEFINE_ALL_TYPEDEFS(32s, int32_t, rgba)
184 GIL_DEFINE_ALL_TYPEDEFS(32f,
float32_t, rgba)
186 GIL_DEFINE_ALL_TYPEDEFS(8, uint8_t, cmyk)
187 GIL_DEFINE_ALL_TYPEDEFS(8s, int8_t, cmyk)
188 GIL_DEFINE_ALL_TYPEDEFS(16, uint16_t, cmyk)
189 GIL_DEFINE_ALL_TYPEDEFS(16s, int16_t, cmyk)
190 GIL_DEFINE_ALL_TYPEDEFS(32, uint32_t, cmyk)
191 GIL_DEFINE_ALL_TYPEDEFS(32s, int32_t, cmyk)
192 GIL_DEFINE_ALL_TYPEDEFS(32f,
float32_t, cmyk)
scoped_channel_value< float, float_point_zero< float >, float_point_one< float > > float32_t
32-bit floating point channel type with range [0.0f ... 1.0f]. Models ChannelValueConcept
Definition: typedefs.hpp:124
scoped_channel_value< double, float_point_zero< double >, float_point_one< double > > float64_t
64-bit floating point channel type with range [0.0f ... 1.0f]. Models ChannelValueConcept
Definition: typedefs.hpp:128
Unnamed color space of 1, 3, 4, or 5 channels.
Definition: device_n.hpp:33
unnamed color layout of up to five channels
Definition: device_n.hpp:56