Boost GIL


concepts/image.hpp
1 //
2 // Copyright 2005-2007 Adobe Systems Incorporated
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 #ifndef BOOST_GIL_CONCEPTS_IMAGE_HPP
9 #define BOOST_GIL_CONCEPTS_IMAGE_HPP
10 
11 #include <boost/gil/concepts/basic.hpp>
12 #include <boost/gil/concepts/concept_check.hpp>
13 #include <boost/gil/concepts/fwd.hpp>
14 #include <boost/gil/concepts/image_view.hpp>
15 #include <boost/gil/concepts/point.hpp>
16 #include <boost/gil/detail/mp11.hpp>
17 
18 #include <type_traits>
19 
20 #if defined(BOOST_CLANG)
21 #pragma clang diagnostic push
22 #pragma clang diagnostic ignored "-Wunknown-pragmas"
23 #pragma clang diagnostic ignored "-Wunused-local-typedefs"
24 #endif
25 
26 #if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
27 #pragma GCC diagnostic push
28 #pragma GCC diagnostic ignored "-Wunused-local-typedefs"
29 #endif
30 
31 namespace boost { namespace gil {
32 
56 template <typename Image>
58 {
59  void constraints()
60  {
61  gil_function_requires<Regular<Image>>();
62 
63  using view_t = typename Image::view_t;
64  gil_function_requires<MutableRandomAccessNDImageViewConcept<view_t>>();
65 
66  using const_view_t = typename Image::const_view_t;
67  using pixel_t = typename Image::value_type;
68  using point_t = typename Image::point_t;
69  gil_function_requires<PointNDConcept<point_t>>();
70 
71  const_view_t cv = const_view(image);
72  ignore_unused_variable_warning(cv);
73  view_t v = view(image);
74  ignore_unused_variable_warning(v);
75 
76  pixel_t fill_value;
77  point_t pt = image.dimensions();
78  Image image1(pt);
79  Image image2(pt, 1);
80  Image image3(pt, fill_value, 1);
81  image.recreate(pt);
82  image.recreate(pt, 1);
83  image.recreate(pt, fill_value, 1);
84  }
85  Image image;
86 };
87 
88 
108 template <typename Image>
110 {
111  void constraints()
112  {
113  gil_function_requires<RandomAccessNDImageConcept<Image>>();
114  using x_coord_t = typename Image::x_coord_t;
115  using y_coord_t = typename Image::y_coord_t;
116  using value_t = typename Image::value_type;
117 
118  gil_function_requires<MutableRandomAccess2DImageViewConcept<typename Image::view_t>>();
119 
120  x_coord_t w=image.width();
121  y_coord_t h=image.height();
122  value_t fill_value;
123  Image im1(w,h);
124  Image im2(w,h,1);
125  Image im3(w,h,fill_value,1);
126  image.recreate(w,h);
127  image.recreate(w,h,1);
128  image.recreate(w,h,fill_value,1);
129  }
130  Image image;
131 };
132 
143 template <typename Image>
145 {
146  void constraints()
147  {
148  gil_function_requires<RandomAccess2DImageConcept<Image>>();
149  gil_function_requires<MutableImageViewConcept<typename Image::view_t>>();
150  using coord_t = typename Image::coord_t;
151  static_assert(num_channels<Image>::value == mp11::mp_size<typename color_space_type<Image>::type>::value, "");
152 
153  static_assert(std::is_same<coord_t, typename Image::x_coord_t>::value, "");
154  static_assert(std::is_same<coord_t, typename Image::y_coord_t>::value, "");
155  }
156  Image image;
157 };
158 
159 }} // namespace boost::gil
160 
161 #if defined(BOOST_CLANG)
162 #pragma clang diagnostic pop
163 #endif
164 
165 #if defined(BOOST_GCC) && (BOOST_GCC >= 40900)
166 #pragma GCC diagnostic pop
167 #endif
168 
169 #endif
container interface over image view. Models ImageConcept, PixelBasedConcept
Definition: image.hpp:43
auto const_view(const image< Pixel, IsPlanar, Alloc > &img) -> typename image< Pixel, IsPlanar, Alloc >::const_view_t const
Returns the constant-pixel view of an image.
Definition: image.hpp:573
auto view(image< Pixel, IsPlanar, Alloc > &img) -> typename image< Pixel, IsPlanar, Alloc >::view_t const &
Returns the non-constant-pixel view of an image.
Definition: image.hpp:565
defined(BOOST_NO_CXX17_HDR_MEMORY_RESOURCE)
Definition: algorithm.hpp:36
2-dimensional image whose value type models PixelValueConcept
Definition: concepts/image.hpp:145
2-dimensional container of values
Definition: concepts/image.hpp:110
N-dimensional container of values.
Definition: concepts/image.hpp:58
Returns the number of channels of a pixel-based GIL construct.
Definition: pixel.hpp:54