1 #ifndef color_rgb_get_alpha
2 #define color_rgb_get_alpha
3 
4 // ::color::get::alpha( c )
5 
6 #include "../category.hpp"
7 
8 
9  namespace color
10   {
11    namespace get
12     {
13 
14      template< typename value_name, unsigned red_position, unsigned green_position, unsigned blue_position, unsigned alpha_position >
15       inline
16       typename ::color::trait::component
17        <
18         ::color::category::rgb
19          <
20           ::color::category::_internal::rgba_scramble < value_name, red_position, green_position, blue_position, alpha_position >
21          >
22        >::return_image_type
alpha(::color::model<::color::category::rgb<::color::category::_internal::rgba_scramble<value_name,red_position,green_position,blue_position,alpha_position>>> const & color_parameter)23       alpha( ::color::model< ::color::category::rgb< ::color::category::_internal::rgba_scramble< value_name, red_position, green_position, blue_position, alpha_position > > > const& color_parameter )
24        {
25         typedef ::color::category::_internal::rgba_scramble< value_name, red_position, green_position, blue_position, alpha_position > tag_type;
26         typedef ::color::category::rgb< tag_type >  category_type;
27 
28         enum { alpha_enum  = ::color::place::_internal::alpha< category_type >::position_enum };
29 
30         // TODO c++14 static_assert( alpha_position != alpha_enum, "Internal: Mismach in aplha position." );
31 
32         return color_parameter.template get< alpha_position >();
33        }
34 
35      // TODO template< typename tag_name >
36      // TODO  inline
37      // TODO  typename ::color::model< ::color::category::rgb< tag_name> >::component_const_type
38      // TODO  alpha( ::color::model< ::color::category::rgb< tag_name> > const& color_parameter )
39      // TODO   {
40      // TODO    typedef ::color::category::rgb< tag_name>  category_type;
41      // TODO    enum{ alpha_enum  = ::color::place::_internal::alpha<category_type>::position_enum };
42      // TODO
43      // TODO   // TODO return if_< ::color::place::_internal::alpha<category_type>::has_enum, maximum() , color_parameter.template get<alpha_enum>()>
44      // TODO
45      // TODO    return color_parameter.template get<alpha_enum>();
46      // TODO   }
47 
48     }
49   }
50 
51 #endif
52 
53