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:336
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