Imported Upstream version 1.71.0
[platform/upstream/boost.git] / libs / gil / test / core / pixel / is_planar.cpp
1 //
2 // Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
3 //
4 // Distributed under the Boost Software License, Version 1.0
5 // See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt
7 //
8 #include <boost/gil/pixel.hpp>
9 #include <boost/gil/planar_pixel_iterator.hpp>
10 #include <boost/gil/typedefs.hpp>
11
12 #include <boost/mp11.hpp>
13
14 namespace gil = boost::gil;
15 using namespace boost::mp11;
16
17 int main()
18 {
19     using non_planar_pixels = mp_list
20     <
21         gil::gray8_pixel_t,
22         gil::gray8c_pixel_t,
23         gil::gray8s_pixel_t,
24         gil::gray8sc_pixel_t,
25         gil::gray16_pixel_t,
26         gil::gray16c_pixel_t,
27         gil::gray16s_pixel_t,
28         gil::gray16sc_pixel_t,
29         gil::gray16_pixel_t,
30         gil::gray32_pixel_t,
31         gil::gray32c_pixel_t,
32         gil::gray32f_pixel_t,
33         gil::gray32fc_pixel_t,
34         gil::gray32s_pixel_t,
35         gil::gray32sc_pixel_t,
36         gil::bgr8_pixel_t,
37         gil::bgr8c_pixel_t,
38         gil::bgr8s_pixel_t,
39         gil::bgr8sc_pixel_t,
40         gil::bgr16_pixel_t,
41         gil::bgr16c_pixel_t,
42         gil::bgr16s_pixel_t,
43         gil::bgr16sc_pixel_t,
44         gil::bgr32_pixel_t,
45         gil::bgr32c_pixel_t,
46         gil::bgr32f_pixel_t,
47         gil::bgr32fc_pixel_t,
48         gil::bgr32s_pixel_t,
49         gil::bgr32sc_pixel_t,
50         gil::rgb8_pixel_t,
51         gil::rgb8c_pixel_t,
52         gil::rgb8s_pixel_t,
53         gil::rgb8sc_pixel_t,
54         gil::rgb16_pixel_t,
55         gil::rgb16c_pixel_t,
56         gil::rgb16s_pixel_t,
57         gil::rgb16sc_pixel_t,
58         gil::rgb32_pixel_t,
59         gil::rgb32c_pixel_t,
60         gil::rgb32f_pixel_t,
61         gil::rgb32fc_pixel_t,
62         gil::rgb32s_pixel_t,
63         gil::rgb32sc_pixel_t,
64         gil::abgr8_pixel_t,
65         gil::abgr8c_pixel_t,
66         gil::abgr8s_pixel_t,
67         gil::abgr8sc_pixel_t,
68         gil::abgr16_pixel_t,
69         gil::abgr16c_pixel_t,
70         gil::abgr16s_pixel_t,
71         gil::abgr16sc_pixel_t,
72         gil::abgr32_pixel_t,
73         gil::abgr32c_pixel_t,
74         gil::abgr32f_pixel_t,
75         gil::abgr32fc_pixel_t,
76         gil::abgr32s_pixel_t,
77         gil::abgr32sc_pixel_t,
78         gil::bgra8_pixel_t,
79         gil::bgra8c_pixel_t,
80         gil::bgra8s_pixel_t,
81         gil::bgra8sc_pixel_t,
82         gil::bgra16_pixel_t,
83         gil::bgra16c_pixel_t,
84         gil::bgra16s_pixel_t,
85         gil::bgra16sc_pixel_t,
86         gil::bgra32_pixel_t,
87         gil::bgra32c_pixel_t,
88         gil::bgra32f_pixel_t,
89         gil::bgra32fc_pixel_t,
90         gil::bgra32s_pixel_t,
91         gil::bgra32sc_pixel_t,
92         gil::cmyk8_pixel_t,
93         gil::cmyk8c_pixel_t,
94         gil::cmyk8s_pixel_t,
95         gil::cmyk8sc_pixel_t,
96         gil::cmyk16_pixel_t,
97         gil::cmyk16c_pixel_t,
98         gil::cmyk16s_pixel_t,
99         gil::cmyk16sc_pixel_t,
100         gil::cmyk32_pixel_t,
101         gil::cmyk32c_pixel_t,
102         gil::cmyk32f_pixel_t,
103         gil::cmyk32fc_pixel_t,
104         gil::cmyk32s_pixel_t,
105         gil::cmyk32sc_pixel_t,
106         gil::rgba8_pixel_t,
107         gil::rgba8c_pixel_t,
108         gil::rgba8s_pixel_t,
109         gil::rgba8sc_pixel_t,
110         gil::rgba16_pixel_t,
111         gil::rgba16c_pixel_t,
112         gil::rgba16s_pixel_t,
113         gil::rgba16sc_pixel_t,
114         gil::rgba32_pixel_t,
115         gil::rgba32c_pixel_t,
116         gil::rgba32f_pixel_t,
117         gil::rgba32fc_pixel_t,
118         gil::rgba32s_pixel_t,
119         gil::rgba32sc_pixel_t
120     >;
121
122     static_assert(
123         std::is_same
124         <
125             mp_all_of<non_planar_pixels, gil::is_planar>,
126             std::false_type
127         >::value,
128         "is_planar yields true for non-planar pixel type");
129
130     static_assert(
131         std::is_same
132         <
133             mp_none_of<non_planar_pixels, gil::is_planar>,
134             std::true_type
135         >::value,
136         "is_planar yields true for non-planar pixel type");
137 }