1 #ifndef color_hsi_convert_cmyk
2 #define color_hsi_convert_cmyk
3 
4 #include "../../_internal/convert.hpp"
5 
6 #include "../category.hpp"
7 
8 
9 #include "../../cmyk/cmyk.hpp"
10 #include "../../rgb/rgb.hpp"
11 
12 
13 
14 namespace color
15  {
16   namespace _internal
17    {
18 
19     template< typename hsi_tag_name, typename cmyk_tag_name >
20      struct convert
21       <
22         ::color::category::hsi< hsi_tag_name >
23        ,::color::category::cmyk<  cmyk_tag_name >
24       >
25       {
26        public:
27          typedef ::color::category::hsi<   hsi_tag_name >     hsi_category_type, category_left_type;
28          typedef ::color::category::cmyk< cmyk_tag_name >    cmyk_category_type, category_right_type;
29 
30          typedef typename ::color::akin::rgb< cmyk_category_type >::akin_type  rgb_category_type;
31 
32          typedef ::color::model< hsi_category_type > hsi_model_type;
33          typedef ::color::model< cmyk_category_type >  cmyk_model_type;
34 
35          typedef ::color::model< rgb_category_type >  rgb_model_type;
36 
37          typedef ::color::trait::container<category_left_type>     container_left_trait_type;
38          typedef ::color::trait::container<category_right_type>    container_right_trait_type;
39 
40          typedef typename container_left_trait_type::input_type         container_left_input_type;
41          typedef typename container_right_trait_type::model_type  container_right_const_input_type;
42 
processcolor::_internal::convert43          static void process
44           (
45             container_left_input_type         left
46            ,container_right_const_input_type  right
47           )
48           {
49            left = hsi_model_type( rgb_model_type( cmyk_model_type( right ) ) ).container();
50           }
51         };
52 
53    }
54  }
55 
56 #endif
57