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