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 
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:342
 
defined(BOOST_NO_CXX17_HDR_MEMORY_RESOURCE)
Definition: algorithm.hpp:36
 
Homogeneous pixel concept.
Definition: concepts/pixel.hpp:124
 
Homogeneous pixel concept that is a Regular type.
Definition: concepts/pixel.hpp:189
 
Homogeneous pixel concept that allows for changing its channels.
Definition: concepts/pixel.hpp:149
 
Pixel concept that allows for changing its channels.
Definition: concepts/pixel.hpp:102
 
Pixel concept - A color base whose elements are channels.
Definition: concepts/pixel.hpp:64
 
Pixel convertible concept Convertibility is non-symmetric and implies that one pixel can be converted...
Definition: concepts/pixel.hpp:278
 
Pixel concept that is a Regular type.
Definition: concepts/pixel.hpp:171
 
Concept for pixel compatibility Pixels are compatible if their channels and color space types are com...
Definition: concepts/pixel.hpp:257
 
Specifies the element type of a homogeneous color base.
Definition: color_base_algorithm.hpp:225
 
Returns whether two pixels are compatible Pixels are compatible if their channels and color space typ...
Definition: concepts/pixel.hpp:239