1 #ifndef color_yuv_convert_yuv 2 #define color_yuv_convert_yuv 3 4 //#include "../place/place.hpp" 5 6 #include "../../_internal/convert.hpp" 7 8 #include "../../_internal/reformat.hpp" 9 10 11 12 13 14 15 16 17 18 namespace color 19 { 20 namespace _internal 21 { 22 23 template 24 < 25 typename tag_left_name, ::color::constant::yuv::reference_enum left_reference_number 26 ,typename tag_right_name, ::color::constant::yuv::reference_enum right_reference_number 27 > 28 struct convert 29 < 30 ::color::category::yuv< tag_left_name, left_reference_number > 31 ,::color::category::yuv< tag_right_name, right_reference_number > 32 > 33 { 34 public: 35 typedef ::color::category::yuv< tag_left_name , left_reference_number > category_left_type; 36 typedef ::color::category::yuv< tag_right_name, right_reference_number > category_right_type; 37 38 typedef typename ::color::trait::scalar<category_left_type>::instance_type scalar_type; 39 40 41 typedef ::color::model< category_left_type > left_model_type; 42 typedef ::color::model< category_right_type > right_model_type; 43 44 typedef ::color::rgb< scalar_type > rgb_model_type; 45 46 typedef ::color::trait::container<category_left_type> container_left_trait_type; 47 typedef ::color::trait::container<category_right_type> container_right_trait_type; 48 49 typedef typename container_left_trait_type::input_type container_left_input_type; 50 typedef typename container_right_trait_type::model_type container_right_const_input_type; 51 processcolor::_internal::convert52 static void process 53 ( 54 container_left_input_type left 55 ,container_right_const_input_type right 56 ) 57 { 58 left = left_model_type( rgb_model_type( right_model_type( right ) ) ).container(); 59 } 60 }; 61 62 63 template 64 < 65 typename ::color::constant::yuv::reference_enum reference_number 66 ,typename tag_left_name 67 ,typename tag_right_name 68 > 69 struct convert 70 < 71 ::color::category::yuv< tag_left_name, reference_number > 72 ,::color::category::yuv< tag_right_name, reference_number > 73 > 74 { 75 public: 76 typedef ::color::category::yuv< tag_left_name , reference_number > category_left_type; 77 typedef ::color::category::yuv< tag_right_name, reference_number > category_right_type; 78 79 typedef ::color::trait::container<category_left_type> container_left_trait_type; 80 typedef ::color::trait::container<category_right_type> container_right_trait_type; 81 82 typedef ::color::_internal::reformat< category_left_type, category_right_type > reformat_type; 83 84 typedef typename container_left_trait_type::input_type container_left_input_type; 85 typedef typename container_right_trait_type::model_type container_right_const_input_type; 86 processcolor::_internal::convert87 static void process 88 ( 89 container_left_input_type left 90 ,container_right_const_input_type right 91 ) 92 { 93 container_left_trait_type::template set<0>( left, reformat_type::template process<0,0>( container_right_trait_type::template get<0>( right ) ) ); 94 container_left_trait_type::template set<1>( left, reformat_type::template process<1,1>( container_right_trait_type::template get<1>( right ) ) ); 95 container_left_trait_type::template set<2>( left, reformat_type::template process<2,2>( container_right_trait_type::template get<2>( right ) ) ); 96 } 97 }; 98 99 } 100 } 101 102 #endif 103