1 #ifndef color_rgb_place_red
2 #define color_rgb_place_red
3 
4 // ::color::place::red<category_name>()
5 
6 #include "../../generic/place/red.hpp"
7 #include "../category.hpp"
8 #include "../trait/index.hpp"
9 
10  namespace color
11   {
12    namespace place
13     {
14      namespace _internal
15       {
16 
17        template< typename tag_name >
18         struct red< ::color::category::rgb< tag_name > >
19          {
20           public:
21            typedef ::color::category::rgb< tag_name > category_type;
22            typedef typename ::color::trait::index< category_type >::instance_type index_instance_type;
23 
24            enum { position_enum = 0 };
25            enum { has_enum = true };
26 
positioncolor::place::_internal::red27            static /*constexpr*/ index_instance_type position()
28             {
29              return position_enum;
30             }
31          };
32 
33 
34        template< typename value_name, unsigned red_position, unsigned green_position, unsigned blue_position >
35         struct red< ::color::category::rgb< ::color::category::_internal::rgb_scramble< value_name, red_position, green_position, blue_position > > >
36          {
37           public:
38            typedef ::color::category::_internal::rgb_scramble< value_name, red_position, green_position, blue_position > scramble_type;
39            typedef ::color::category::rgb< scramble_type > category_type;
40            typedef typename ::color::trait::index< category_type >::instance_type index_instance_type;
41 
42            enum { position_enum = red_position };
43 
positioncolor::place::_internal::red44            static /*constexpr*/ index_instance_type position()
45             {
46              return position_enum;
47             }
48          };
49 
50        template< typename value_name, unsigned red_position, unsigned green_position, unsigned blue_position, unsigned alpha_position >
51         struct red< ::color::category::rgb< ::color::category::_internal::rgba_scramble< value_name, red_position, green_position, blue_position, alpha_position > > >
52          {
53           public:
54             typedef ::color::category::_internal::rgba_scramble< value_name, red_position, green_position, blue_position, alpha_position > scramble_type;
55             typedef ::color::category::rgb< scramble_type > category_type;
56             typedef typename ::color::trait::index< category_type >::instance_type index_instance_type;
57 
58             enum { position_enum = red_position };
59 
positioncolor::place::_internal::red60             static /*constexpr*/ index_instance_type position()
61              {
62               return position_enum;
63              }
64          };
65 
66       }
67     }
68   }
69 
70 #endif
71