]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /* |
2 | Copyright 2005-2007 Adobe Systems Incorporated | |
3 | ||
4 | Use, modification and distribution are subject to the Boost Software License, | |
5 | Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at | |
6 | http://www.boost.org/LICENSE_1_0.txt). | |
7 | ||
8 | See http://opensource.adobe.com/gil for most recent version including documentation. | |
9 | */ | |
10 | ||
11 | /*************************************************************************************************/ | |
12 | ||
13 | #ifndef GIL_TYPEDEFS_H | |
14 | #define GIL_TYPEDEFS_H | |
15 | ||
16 | //////////////////////////////////////////////////////////////////////////////////////// | |
17 | /// \file | |
18 | /// \brief Useful typedefs | |
19 | /// \author Lubomir Bourdev and Hailin Jin \n | |
20 | /// Adobe Systems Incorporated | |
21 | /// \date 2005-2007 \n Last updated on March 8, 2006 | |
22 | /// | |
23 | //////////////////////////////////////////////////////////////////////////////////////// | |
24 | ||
25 | #include "gil_config.hpp" | |
26 | #include <boost/cstdint.hpp> | |
27 | #include "gray.hpp" | |
28 | #include "rgb.hpp" | |
29 | #include "rgba.hpp" | |
30 | #include "cmyk.hpp" | |
31 | #include "device_n.hpp" | |
32 | #include <memory> | |
33 | ||
34 | // CS = 'bgr' LAYOUT='bgr_layout_t' | |
35 | #define GIL_DEFINE_BASE_TYPEDEFS_INTERNAL(T,CS,LAYOUT) \ | |
36 | template <typename, typename> struct pixel; \ | |
37 | template <typename, typename> struct planar_pixel_reference; \ | |
38 | template <typename, typename> struct planar_pixel_iterator; \ | |
39 | template <typename> class memory_based_step_iterator; \ | |
40 | template <typename> class point2; \ | |
41 | template <typename> class memory_based_2d_locator; \ | |
42 | template <typename> class image_view; \ | |
43 | template <typename, bool, typename> class image; \ | |
44 | typedef pixel<bits##T, LAYOUT > CS##T##_pixel_t; \ | |
45 | typedef const pixel<bits##T, LAYOUT > CS##T##c_pixel_t; \ | |
46 | typedef pixel<bits##T, LAYOUT >& CS##T##_ref_t; \ | |
47 | typedef const pixel<bits##T, LAYOUT >& CS##T##c_ref_t; \ | |
48 | typedef CS##T##_pixel_t* CS##T##_ptr_t; \ | |
49 | typedef CS##T##c_pixel_t* CS##T##c_ptr_t; \ | |
50 | typedef memory_based_step_iterator<CS##T##_ptr_t> CS##T##_step_ptr_t; \ | |
51 | typedef memory_based_step_iterator<CS##T##c_ptr_t> CS##T##c_step_ptr_t; \ | |
52 | typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##_ptr_t> > CS##T##_loc_t; \ | |
53 | typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##c_ptr_t> > CS##T##c_loc_t; \ | |
54 | typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##_step_ptr_t> > CS##T##_step_loc_t; \ | |
55 | typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##c_step_ptr_t> > CS##T##c_step_loc_t; \ | |
56 | typedef image_view<CS##T##_loc_t> CS##T##_view_t; \ | |
57 | typedef image_view<CS##T##c_loc_t> CS##T##c_view_t; \ | |
58 | typedef image_view<CS##T##_step_loc_t> CS##T##_step_view_t; \ | |
59 | typedef image_view<CS##T##c_step_loc_t> CS##T##c_step_view_t; \ | |
60 | typedef image<CS##T##_pixel_t,false,std::allocator<unsigned char> > CS##T##_image_t; | |
61 | ||
62 | // CS = 'bgr' CS_FULL = 'rgb_t' LAYOUT='bgr_layout_t' | |
63 | #define GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(T,CS,CS_FULL,LAYOUT) \ | |
64 | GIL_DEFINE_BASE_TYPEDEFS_INTERNAL(T,CS,LAYOUT) \ | |
65 | typedef planar_pixel_reference<bits##T&,CS_FULL > CS##T##_planar_ref_t; \ | |
66 | typedef planar_pixel_reference<const bits##T&,CS_FULL > CS##T##c_planar_ref_t; \ | |
67 | typedef planar_pixel_iterator<bits##T*,CS_FULL > CS##T##_planar_ptr_t; \ | |
68 | typedef planar_pixel_iterator<const bits##T*,CS_FULL > CS##T##c_planar_ptr_t; \ | |
69 | typedef memory_based_step_iterator<CS##T##_planar_ptr_t> CS##T##_planar_step_ptr_t; \ | |
70 | typedef memory_based_step_iterator<CS##T##c_planar_ptr_t> CS##T##c_planar_step_ptr_t; \ | |
71 | typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##_planar_ptr_t> > CS##T##_planar_loc_t; \ | |
72 | typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##c_planar_ptr_t> > CS##T##c_planar_loc_t; \ | |
73 | typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##_planar_step_ptr_t> > CS##T##_planar_step_loc_t; \ | |
74 | typedef memory_based_2d_locator<memory_based_step_iterator<CS##T##c_planar_step_ptr_t> > CS##T##c_planar_step_loc_t; \ | |
75 | typedef image_view<CS##T##_planar_loc_t> CS##T##_planar_view_t; \ | |
76 | typedef image_view<CS##T##c_planar_loc_t> CS##T##c_planar_view_t; \ | |
77 | typedef image_view<CS##T##_planar_step_loc_t> CS##T##_planar_step_view_t; \ | |
78 | typedef image_view<CS##T##c_planar_step_loc_t> CS##T##c_planar_step_view_t;\ | |
79 | typedef image<CS##T##_pixel_t,true,std::allocator<unsigned char> > CS##T##_planar_image_t; | |
80 | ||
81 | #define GIL_DEFINE_BASE_TYPEDEFS(T,CS) \ | |
82 | GIL_DEFINE_BASE_TYPEDEFS_INTERNAL(T,CS,CS##_layout_t) | |
83 | ||
84 | #define GIL_DEFINE_ALL_TYPEDEFS(T,CS) \ | |
85 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(T,CS,CS##_t,CS##_layout_t) | |
86 | ||
87 | namespace boost { namespace gil { | |
88 | ||
89 | // forward declarations | |
90 | template <typename B, typename Mn, typename Mx> struct scoped_channel_value; | |
91 | struct float_zero; | |
92 | struct float_one; | |
93 | typedef scoped_channel_value<float,float_zero,float_one> bits32f; | |
94 | typedef uint8_t bits8; | |
95 | typedef uint16_t bits16; | |
96 | typedef uint32_t bits32; | |
97 | typedef int8_t bits8s; | |
98 | typedef int16_t bits16s; | |
99 | typedef int32_t bits32s; | |
100 | ||
101 | GIL_DEFINE_BASE_TYPEDEFS(8, gray) | |
102 | GIL_DEFINE_BASE_TYPEDEFS(8s, gray) | |
103 | GIL_DEFINE_BASE_TYPEDEFS(16, gray) | |
104 | GIL_DEFINE_BASE_TYPEDEFS(16s,gray) | |
105 | GIL_DEFINE_BASE_TYPEDEFS(32 ,gray) | |
106 | GIL_DEFINE_BASE_TYPEDEFS(32s,gray) | |
107 | GIL_DEFINE_BASE_TYPEDEFS(32f,gray) | |
108 | GIL_DEFINE_BASE_TYPEDEFS(8, bgr) | |
109 | GIL_DEFINE_BASE_TYPEDEFS(8s, bgr) | |
110 | GIL_DEFINE_BASE_TYPEDEFS(16, bgr) | |
111 | GIL_DEFINE_BASE_TYPEDEFS(16s,bgr) | |
112 | GIL_DEFINE_BASE_TYPEDEFS(32 ,bgr) | |
113 | GIL_DEFINE_BASE_TYPEDEFS(32s,bgr) | |
114 | GIL_DEFINE_BASE_TYPEDEFS(32f,bgr) | |
115 | GIL_DEFINE_BASE_TYPEDEFS(8, argb) | |
116 | GIL_DEFINE_BASE_TYPEDEFS(8s, argb) | |
117 | GIL_DEFINE_BASE_TYPEDEFS(16, argb) | |
118 | GIL_DEFINE_BASE_TYPEDEFS(16s,argb) | |
119 | GIL_DEFINE_BASE_TYPEDEFS(32, argb) | |
120 | GIL_DEFINE_BASE_TYPEDEFS(32s,argb) | |
121 | GIL_DEFINE_BASE_TYPEDEFS(32f,argb) | |
122 | GIL_DEFINE_BASE_TYPEDEFS(8, abgr) | |
123 | GIL_DEFINE_BASE_TYPEDEFS(8s, abgr) | |
124 | GIL_DEFINE_BASE_TYPEDEFS(16, abgr) | |
125 | GIL_DEFINE_BASE_TYPEDEFS(16s,abgr) | |
126 | GIL_DEFINE_BASE_TYPEDEFS(32 ,abgr) | |
127 | GIL_DEFINE_BASE_TYPEDEFS(32s,abgr) | |
128 | GIL_DEFINE_BASE_TYPEDEFS(32f,abgr) | |
129 | GIL_DEFINE_BASE_TYPEDEFS(8, bgra) | |
130 | GIL_DEFINE_BASE_TYPEDEFS(8s, bgra) | |
131 | GIL_DEFINE_BASE_TYPEDEFS(16, bgra) | |
132 | GIL_DEFINE_BASE_TYPEDEFS(16s,bgra) | |
133 | GIL_DEFINE_BASE_TYPEDEFS(32 ,bgra) | |
134 | GIL_DEFINE_BASE_TYPEDEFS(32s,bgra) | |
135 | GIL_DEFINE_BASE_TYPEDEFS(32f,bgra) | |
136 | ||
137 | GIL_DEFINE_ALL_TYPEDEFS(8, rgb) | |
138 | GIL_DEFINE_ALL_TYPEDEFS(8s, rgb) | |
139 | GIL_DEFINE_ALL_TYPEDEFS(16, rgb) | |
140 | GIL_DEFINE_ALL_TYPEDEFS(16s,rgb) | |
141 | GIL_DEFINE_ALL_TYPEDEFS(32 ,rgb) | |
142 | GIL_DEFINE_ALL_TYPEDEFS(32s,rgb) | |
143 | GIL_DEFINE_ALL_TYPEDEFS(32f,rgb) | |
144 | GIL_DEFINE_ALL_TYPEDEFS(8, rgba) | |
145 | GIL_DEFINE_ALL_TYPEDEFS(8s, rgba) | |
146 | GIL_DEFINE_ALL_TYPEDEFS(16, rgba) | |
147 | GIL_DEFINE_ALL_TYPEDEFS(16s,rgba) | |
148 | GIL_DEFINE_ALL_TYPEDEFS(32 ,rgba) | |
149 | GIL_DEFINE_ALL_TYPEDEFS(32s,rgba) | |
150 | GIL_DEFINE_ALL_TYPEDEFS(32f,rgba) | |
151 | GIL_DEFINE_ALL_TYPEDEFS(8, cmyk) | |
152 | GIL_DEFINE_ALL_TYPEDEFS(8s, cmyk) | |
153 | GIL_DEFINE_ALL_TYPEDEFS(16, cmyk) | |
154 | GIL_DEFINE_ALL_TYPEDEFS(16s,cmyk) | |
155 | GIL_DEFINE_ALL_TYPEDEFS(32 ,cmyk) | |
156 | GIL_DEFINE_ALL_TYPEDEFS(32s,cmyk) | |
157 | GIL_DEFINE_ALL_TYPEDEFS(32f,cmyk) | |
158 | ||
159 | ||
160 | template <int N> struct devicen_t; | |
161 | template <int N> struct devicen_layout_t; | |
162 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8, dev2n, devicen_t<2>, devicen_layout_t<2>) | |
163 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8s, dev2n, devicen_t<2>, devicen_layout_t<2>) | |
164 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16, dev2n, devicen_t<2>, devicen_layout_t<2>) | |
165 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16s,dev2n, devicen_t<2>, devicen_layout_t<2>) | |
166 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32 ,dev2n, devicen_t<2>, devicen_layout_t<2>) | |
167 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32s,dev2n, devicen_t<2>, devicen_layout_t<2>) | |
168 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32f,dev2n, devicen_t<2>, devicen_layout_t<2>) | |
169 | ||
170 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8, dev3n, devicen_t<3>, devicen_layout_t<3>) | |
171 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8s, dev3n, devicen_t<3>, devicen_layout_t<3>) | |
172 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16, dev3n, devicen_t<3>, devicen_layout_t<3>) | |
173 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16s,dev3n, devicen_t<3>, devicen_layout_t<3>) | |
174 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32 ,dev3n, devicen_t<3>, devicen_layout_t<3>) | |
175 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32s,dev3n, devicen_t<3>, devicen_layout_t<3>) | |
176 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32f,dev3n, devicen_t<3>, devicen_layout_t<3>) | |
177 | ||
178 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8, dev4n, devicen_t<4>, devicen_layout_t<4>) | |
179 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8s, dev4n, devicen_t<4>, devicen_layout_t<4>) | |
180 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16, dev4n, devicen_t<4>, devicen_layout_t<4>) | |
181 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16s,dev4n, devicen_t<4>, devicen_layout_t<4>) | |
182 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32 ,dev4n, devicen_t<4>, devicen_layout_t<4>) | |
183 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32s,dev4n, devicen_t<4>, devicen_layout_t<4>) | |
184 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32f,dev4n, devicen_t<4>, devicen_layout_t<4>) | |
185 | ||
186 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8, dev5n, devicen_t<5>, devicen_layout_t<5>) | |
187 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(8s, dev5n, devicen_t<5>, devicen_layout_t<5>) | |
188 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16, dev5n, devicen_t<5>, devicen_layout_t<5>) | |
189 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(16s,dev5n, devicen_t<5>, devicen_layout_t<5>) | |
190 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32 ,dev5n, devicen_t<5>, devicen_layout_t<5>) | |
191 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32s,dev5n, devicen_t<5>, devicen_layout_t<5>) | |
192 | GIL_DEFINE_ALL_TYPEDEFS_INTERNAL(32f,dev5n, devicen_t<5>, devicen_layout_t<5>) | |
193 | ||
194 | } } // namespace boost::gil | |
195 | ||
196 | #endif |