8 #ifndef BOOST_GIL_CONCEPTS_PIXEL_HPP 9 #define BOOST_GIL_CONCEPTS_PIXEL_HPP 11 #include <boost/gil/concepts/basic.hpp> 12 #include <boost/gil/concepts/channel.hpp> 13 #include <boost/gil/concepts/color.hpp> 14 #include <boost/gil/concepts/color_base.hpp> 15 #include <boost/gil/concepts/concept_check.hpp> 16 #include <boost/gil/concepts/fwd.hpp> 17 #include <boost/gil/concepts/pixel_based.hpp> 18 #include <boost/gil/concepts/detail/type_traits.hpp> 19 #include <boost/gil/detail/mp11.hpp> 22 #include <type_traits> 24 #if defined(BOOST_CLANG) 25 #pragma clang diagnostic push 26 #pragma clang diagnostic ignored "-Wunknown-pragmas" 27 #pragma clang diagnostic ignored "-Wunused-local-typedefs" 30 #if defined(BOOST_GCC) && (BOOST_GCC >= 40900) 31 #pragma GCC diagnostic push 32 #pragma GCC diagnostic ignored "-Wunused-local-typedefs" 35 namespace boost {
namespace gil {
67 gil_function_requires<ColorBaseConcept<P>>();
68 gil_function_requires<PixelBasedConcept<P>>();
70 static_assert(is_pixel<P>::value,
"");
71 static const bool is_mutable = P::is_mutable;
72 ignore_unused_variable_warning(is_mutable);
74 using value_type =
typename P::value_type;
78 using reference =
typename P::reference;
81 typename detail::remove_const_and_reference<reference>::type
84 using const_reference =
typename P::const_reference;
87 typename detail::remove_const_and_reference<const_reference>::type
100 template <
typename P>
105 gil_function_requires<PixelConcept<P>>();
106 static_assert(P::is_mutable,
"");
122 template <
typename P>
127 gil_function_requires<PixelConcept<P>>();
128 gil_function_requires<HomogeneousColorBaseConcept<P>>();
129 gil_function_requires<HomogeneousPixelBasedConcept<P>>();
147 template <
typename P>
152 gil_function_requires<HomogeneousPixelConcept<P>>();
153 gil_function_requires<MutableHomogeneousColorBaseConcept<P>>();
169 template <
typename P>
174 gil_function_requires<PixelConcept<P>>();
175 gil_function_requires<Regular<P>>();
187 template <
typename P>
192 gil_function_requires<HomogeneousPixelConcept<P>>();
193 gil_function_requires<Regular<P>>();
194 static_assert(std::is_same<P, typename P::value_type>::value,
"");
200 template <
typename P1,
typename P2,
int K>
201 struct channels_are_pairwise_compatible
204 channels_are_pairwise_compatible<P1, P2, K - 1>,
205 channels_are_compatible
207 typename kth_semantic_element_reference_type<P1, K>::type,
208 typename kth_semantic_element_reference_type<P2, K>::type
214 template <
typename P1,
typename P2>
215 struct channels_are_pairwise_compatible<P1, P2, -1> : std::true_type {};
225 template <
typename P1,
typename P2>
229 typename color_spaces_are_compatible
231 typename color_space_type<P1>::type,
232 typename color_space_type<P2>::type
234 detail::channels_are_pairwise_compatible
236 P1, P2, num_channels<P1>::value - 1
255 template <
typename P1,
typename P2>
276 template <
typename SrcP,
typename DstP>
281 gil_function_requires<PixelConcept<SrcP>>();
282 gil_function_requires<MutablePixelConcept<DstP>>();
291 #if defined(BOOST_CLANG) 292 #pragma clang diagnostic pop 295 #if defined(BOOST_GCC) && (BOOST_GCC >= 40900) 296 #pragma GCC diagnostic pop Homogeneous pixel concept that allows for changing its channels.
Definition: concepts/pixel.hpp:148
Concept for pixel compatibility Pixels are compatible if their channels and color space types are com...
Definition: concepts/pixel.hpp:256
Pixel concept that is a Regular type.
Definition: concepts/pixel.hpp:170
Specifies the element type of a homogeneous color base.
Definition: color_base_algorithm.hpp:221
Homogeneous pixel concept that is a Regular type.
Definition: concepts/pixel.hpp:188
Homogeneous pixel concept.
Definition: concepts/pixel.hpp:123
Pixel concept that allows for changing its channels.
Definition: concepts/pixel.hpp:101
Pixel convertible concept Convertibility is non-symmetric and implies that one pixel can be converted...
Definition: concepts/pixel.hpp:277
void color_convert(const SrcP &src, DstP &dst)
helper function for converting one pixel to another using GIL default color-converters where ScrP mod...
Definition: color_convert.hpp:309
Returns whether two pixels are compatible Pixels are compatible if their channels and color space typ...
Definition: concepts/pixel.hpp:226
Pixel concept - A color base whose elements are channels.
Definition: concepts/pixel.hpp:63