1 #ifndef color_LuvCH_convert_lab
2 #define color_LuvCH_convert_lab
3 
4 #include "../../_internal/convert.hpp"
5 
6 #include "../category.hpp"
7 
8 
9 #include "../../luv/luv.hpp"
10 #include "../../rgb/rgb.hpp"
11 #include "../../hsv/hsv.hpp"
12 #include "../../xyz/xyz.hpp"
13 
14 
15 
16 namespace color
17  {
18   namespace _internal
19    {
20 
21     template
22      <
23        typename LuvCH_tag_name
24       ,typename lab_tag_name, ::color::constant::lab::reference_enum reference_number
25      >
26      struct convert
27       <
28         ::color::category::LuvCH< LuvCH_tag_name >
29        ,::color::category::lab<  lab_tag_name, reference_number >
30       >
31       {
32        public:
33          typedef ::color::category::LuvCH< LuvCH_tag_name >    LuvCH_category_type, category_left_type;
34          typedef ::color::category::lab< lab_tag_name, reference_number >    lab_category_type, category_right_type;
35 
36          typedef typename ::color::trait::scalar< LuvCH_category_type >::instance_type scalar_type;
37 
38          typedef ::color::model< LuvCH_category_type > LuvCH_model_type;
39          typedef ::color::model< lab_category_type >  lab_model_type;
40 
41          typedef ::color::luv< scalar_type >  luv_model_type;
42          typedef ::color::xyz< scalar_type >  xyz_model_type;
43 
44          typedef ::color::trait::container<category_left_type>     container_left_trait_type;
45          typedef ::color::trait::container<category_right_type>    container_right_trait_type;
46 
47          typedef typename container_left_trait_type::input_type         container_left_input_type;
48          typedef typename container_right_trait_type::model_type  container_right_const_input_type;
49 
processcolor::_internal::convert50          static void process
51           (
52             container_left_input_type         left
53            ,container_right_const_input_type  right
54           )
55           {
56            left = LuvCH_model_type( luv_model_type( xyz_model_type( lab_model_type( right ) ) ) ).container();
57 
58           }
59       };
60 
61    }
62  }
63 
64 #endif
65