rgba.hpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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_RGBA_HPP
  9. #define BOOST_GIL_RGBA_HPP
  10. #include <boost/gil/planar_pixel_iterator.hpp>
  11. #include <boost/gil/rgb.hpp>
  12. #include <boost/mpl/contains.hpp>
  13. #include <boost/mpl/vector.hpp>
  14. #include <cstddef>
  15. namespace boost { namespace gil {
  16. /// \ingroup ColorNameModel
  17. /// \brief Alpha
  18. struct alpha_t {};
  19. /// \ingroup ColorSpaceModel
  20. using rgba_t = mpl::vector4<red_t,green_t,blue_t,alpha_t>;
  21. /// \ingroup LayoutModel
  22. using rgba_layout_t = layout<rgba_t>;
  23. /// \ingroup LayoutModel
  24. using bgra_layout_t = layout<rgba_t, mpl::vector4_c<int,2,1,0,3>>;
  25. /// \ingroup LayoutModel
  26. using argb_layout_t = layout<rgba_t, mpl::vector4_c<int,1,2,3,0>>;
  27. /// \ingroup LayoutModel
  28. using abgr_layout_t = layout<rgba_t, mpl::vector4_c<int,3,2,1,0>>;
  29. /// \ingroup ImageViewConstructors
  30. /// \brief from raw RGBA planar data
  31. template <typename IC>
  32. inline
  33. typename type_from_x_iterator<planar_pixel_iterator<IC,rgba_t> >::view_t
  34. planar_rgba_view(std::size_t width, std::size_t height,
  35. IC r, IC g, IC b, IC a,
  36. std::ptrdiff_t rowsize_in_bytes)
  37. {
  38. using view_t = typename type_from_x_iterator<planar_pixel_iterator<IC,rgba_t> >::view_t;
  39. return RView(width, height,
  40. typename view_t::locator(planar_pixel_iterator<IC,rgba_t>(r,g,b,a),
  41. rowsize_in_bytes));
  42. }
  43. }} // namespace boost::gil
  44. #endif