1 #ifndef color_cmy_get_red 2 #define color_cmy_get_red 3 4 // ::color::get::red( c ) 5 6 #include "../../rgb/place/place.hpp" 7 #include "../../rgb/akin/cmy.hpp" 8 #include "../../rgb/trait/component.hpp" 9 10 #include "../category.hpp" 11 #include "../place/place.hpp" 12 13 #include "../../generic/operation/invert.hpp" 14 #include "../../_internal/reformat.hpp" 15 #include "../../generic/trait/scalar.hpp" 16 #include "../../generic/get/red.hpp" 17 18 19 20 namespace color 21 { 22 namespace get 23 { 24 25 template< typename tag_name > 26 inline 27 typename ::color::trait::component< typename ::color::akin::rgb< ::color::category::cmy< tag_name > >::akin_type >::return_type red(::color::model<::color::category::cmy<tag_name>> const & color_parameter)28 red( ::color::model< ::color::category::cmy<tag_name> > const& color_parameter ) 29 { 30 typedef ::color::category::cmy<tag_name> category_type; 31 32 typedef typename ::color::akin::rgb<category_type>::akin_type akin_type; 33 enum { red_p = ::color::place::_internal::red<akin_type>::position_enum }; 34 enum { cyan_p = ::color::place::_internal::cyan<category_type>::position_enum }; 35 36 typedef ::color::operation::_internal::invert< category_type > invert_type; 37 typedef ::color::_internal::reformat< akin_type, category_type > reformat_type; 38 39 return reformat_type::template process<red_p,cyan_p>( invert_type::template component<cyan_p>( color_parameter.template get<cyan_p>() ) ); 40 } 41 42 } 43 } 44 45 #endif 46