2 // Copyright 2018 Mateusz Loskot <mateusz at loskot dot net>
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
8 // FIXME: Avoid Clang's flooding of non-disableable warnings like:
9 // "T does not declare any constructor to initialize its non-modifiable members"
10 // when compiling with concepts check enabled.
11 // See https://bugs.llvm.org/show_bug.cgi?id=41759
12 #if !defined(BOOST_GIL_USE_CONCEPT_CHECK) && !defined(__clang__)
13 #error Compile with BOOST_GIL_USE_CONCEPT_CHECK defined
15 // FIXME: There are missing headers internally, leading to incomplete types
17 #include <boost/gil/image_view.hpp>
18 #include <boost/gil/planar_pixel_reference.hpp>
19 #include <boost/gil/typedefs.hpp>
21 #include <boost/gil.hpp>
24 namespace gil = boost::gil;
26 template <typename View>
29 boost::function_requires<gil::ImageViewConcept<View>>();
30 boost::function_requires<gil::CollectionImageViewConcept<View>>();
31 boost::function_requires<gil::ForwardCollectionImageViewConcept<View>>();
32 boost::function_requires<gil::ReversibleCollectionImageViewConcept<View>>();
35 template <typename View>
36 void test_view_planar()
38 boost::function_requires<gil::ImageViewConcept<View>>();
39 boost::function_requires<gil::CollectionImageViewConcept<View>>();
44 test_view<gil::gray8_view_t>();
45 test_view<gil::gray8c_view_t>();
47 test_view<gil::abgr8_view_t>();
48 test_view<gil::abgr8_step_view_t>();
49 test_view<gil::abgr8c_view_t>();
50 test_view<gil::abgr8c_step_view_t>();
52 test_view<gil::argb8_view_t>();
53 test_view<gil::argb8_step_view_t>();
54 test_view<gil::argb8c_view_t>();
55 test_view<gil::argb8c_step_view_t>();
57 test_view<gil::bgr8_view_t>();
58 test_view<gil::bgr8_step_view_t>();
59 test_view<gil::bgr8c_view_t>();
60 test_view<gil::bgr8c_step_view_t>();
62 test_view<gil::bgra8_view_t>();
63 test_view<gil::bgra8_step_view_t>();
64 test_view<gil::bgra8c_view_t>();
65 test_view<gil::bgra8c_step_view_t>();
67 test_view<gil::rgb8_view_t>();
68 test_view<gil::rgb8_step_view_t>();
69 test_view<gil::rgb8c_view_t>();
70 test_view<gil::rgb8c_step_view_t>();
71 test_view_planar<gil::rgb8_planar_view_t>();
72 test_view_planar<gil::rgb8_planar_step_view_t>();
73 test_view_planar<gil::rgb8c_planar_view_t>();
74 test_view_planar<gil::rgb8c_planar_step_view_t>();
76 test_view<gil::rgba8_view_t>();
77 test_view<gil::rgba8_step_view_t>();
78 test_view<gil::rgba8c_view_t>();
79 test_view<gil::rgba8c_step_view_t>();
80 test_view_planar<gil::rgba8_planar_view_t>();
81 test_view_planar<gil::rgba8_planar_step_view_t>();
82 test_view_planar<gil::rgba8c_planar_view_t>();
83 test_view_planar<gil::rgba8c_planar_step_view_t>();
85 test_view<gil::cmyk8_view_t>();
86 test_view<gil::cmyk8_step_view_t>();
87 test_view<gil::cmyk8c_view_t>();
88 test_view<gil::cmyk8c_step_view_t>();
90 test_view_planar<gil::cmyk8_planar_view_t>();
91 test_view_planar<gil::cmyk8_planar_step_view_t>();
92 test_view_planar<gil::cmyk8c_planar_view_t>();
93 test_view_planar<gil::cmyk8c_planar_step_view_t>();