1 #include <sstream>
2 #include <fstream>
3 #include <iostream>
4 #include <iomanip>
5 #include <string>
6 
7 #include "color/color.hpp"
8 
9 
10 template< typename color_name >
print_color(std::string const & text,color_name const & c)11 static std::string print_color( std::string const& text, color_name const& c )
12  {
13   ::color::rgb<std::uint8_t> r; r = c;
14   std::stringstream ss;
15 
16   ss <<  "<div style=\"background-color:rgb("<< (unsigned)r[0] <<","<< (unsigned)r[1] <<","<< (unsigned)r[2] <<");color:white\">";
17 
18   if( 0 != text.size() )
19    {
20     ss << text << " - " << "<br>";
21    }
22   ss << "("<< (int)r[0] <<","<< (int)r[1] <<","<< (int)r[2] <<")"<< "<br>";
23   ss << "("<< (int)c[0] <<","<< (int)c[1] <<","<< (int)c[2] <<")"<< "<br>";
24 
25   ss << "</div>";
26   return ss.str();
27  }
28 
print_color(std::string const & text,::color::gray<double> const & c)29 static std::string print_color( std::string const& text, ::color::gray<double> const& c )
30  {
31   ::color::rgb<std::uint8_t> r; r = c;
32   std::stringstream ss;
33 
34   ss <<  "<div style=\"background-color:rgb(" << (unsigned)r[0] <<","<< (unsigned)r[1] <<","<< (unsigned)r[2] <<");color:white\">";
35 
36   if( 0 != text.size() )
37    {
38     ss << text << " - " << "<br>";
39    }
40   ss << "("<< (int)r[0] <<","<< (int)r[1] <<","<< (int)r[2] <<")"<< "<br>";
41   ss << "("<< (int)c[0] <<")"<< "<br>";
42 
43   ss << "</div>";
44   return ss.str();
45  }
46 
print_color(std::string const & text,::color::rgb<double> const & c)47 static std::string print_color( std::string const& text, ::color::rgb<double> const& c )
48  {
49   ::color::rgb<std::uint8_t> r; r = c;
50   std::stringstream ss;
51 
52   ss <<  "<div style=\"background-color:rgb("<< (unsigned)r[0] <<","<< (unsigned)r[1] <<","<< (unsigned)r[2] <<");color:white\">";
53 
54   if( 0 != text.size() )
55    {
56     ss << text << " - " << "<br>";
57    }
58   ss << "("<< (int)r[0] <<","<< (int)r[1] <<","<< (int)r[2] <<")"<< "<br>";
59   ss << "("<< (int)(100*c[0]) <<","<< (int)(100*c[1]) <<","<< (int)(100*c[2]) <<")"<< "<br>";
60 
61   ss << "</div>";
62   return ss.str();
63  }
64 
65 
66 template< typename tag_name >
print(::color::constant::base<tag_name> const & constant,std::string const & name)67  std::string print( ::color::constant::base< tag_name > const& constant, std::string const& name )
68  {
69   std::stringstream ss;
70   typedef ::color::constant::base< tag_name > constant_t;
71 
72    ss << "<tr>" << std::endl;
73      ss << "<td  style=\"background-color:" << name << "\"> W3  -" << name << "</td>";
74      ss << "<td>" << print_color( "gray-"       + name, ::color::gray<  double >( constant ) ) << "</td>";
75      ss << "<td>" << print_color( "rgb -"       + name, ::color::rgb<   double >( constant ) ) << "</td>";
76      ss << "<td>" << print_color( "cmy -"       + name, ::color::cmy<   double >( constant ) ) << "</td>";
77      ss << "<td>" << print_color( "cmyk-"       + name, ::color::cmyk<  double >( constant ) ) << "</td>";
78      ss << "<td>" << print_color( "hsl -"       + name, ::color::hsl<   double >( constant ) ) << "</td>";
79      ss << "<td>" << print_color( "hsv -"       + name, ::color::hsv<   double >( constant ) ) << "</td>";
80      ss << "<td>" << print_color( "hsi -"       + name, ::color::hsi<   double >( constant ) ) << "</td>";
81      ss << "<td>" << print_color( "yiq -"       + name, ::color::yiq<   double >( constant ) ) << "</td>";
82      ss << "<td>" << print_color( "yuv -"       + name, ::color::yuv<   double >( constant ) ) << "</td>";
83      ss << "<td>" << print_color( "YCgCo -"     + name, ::color::YCgCo< double >( constant ) ) << "</td>";
84      ss << "<td>" << print_color( "YDbDr -"     + name, ::color::YDbDr< double >( constant ) ) << "</td>";
85      ss << "<td>" << print_color( "YPbPr -"     + name, ::color::YPbPr< double >( constant ) ) << "</td>";
86      ss << "<td>" << print_color( "xyz -"       + name, ::color::xyz<   double >( constant ) ) << "</td>";
87      ss << "<td>" << print_color( "labCIE -"    + name, ::color::lab<   double, ::color::constant::lab::CIE_entity    >( constant ) ) << "</td>";
88      ss << "<td>" << print_color( "labHunter -" + name, ::color::lab<   double, ::color::constant::lab::Hunter_entity >( constant ) ) << "</td>";
89      ss << "<td>" << print_color( "lmsK65 -"    + name, ::color::lms<   double, ::color::constant::lms::von_Kries_D65_entity >( constant ) ) << "</td>";
90      ss << "<td>" << print_color( "lmsKE -"     + name, ::color::lms<   double, ::color::constant::lms::von_Kries_E_entity   >( constant ) ) << "</td>";
91      ss << "<td>" << print_color( "lmsBFD -"    + name, ::color::lms<   double, ::color::constant::lms::BFD_entity           >( constant ) ) << "</td>";
92      ss << "<td>" << print_color( "lmsMCAT -"   + name, ::color::lms<   double, ::color::constant::lms::MCAT02_entity        >( constant ) ) << "</td>";
93      ss << "<td>" << print_color( "luv -"       + name, ::color::luv<   double >( constant ) ) << "</td>";
94      ss << "<td>" << print_color( "xyy -"       + name, ::color::xyy<   double >( constant ) ) << "</td>";
95      ss << "<td>" << print_color( "hwb -"       + name, ::color::hwb<   double >( constant ) ) << "</td>";
96 
97      ss << "<td>" << print_color( "LabCH -"       + name, ::color::LabCH<   double >( constant ) ) << "</td>";
98      ss << "<td>" << print_color( "LuvCH -"       + name, ::color::LuvCH<   double >( constant ) ) << "</td>";
99 
100      ss << "</tr>" << std::endl;
101 
102   return ss.str();
103  }
104 
test_constant()105 void test_constant()
106  {
107   std::stringstream ss;
108 
109   ss << "<table>";
110 
111   ss << print( ::color::constant::black_t{},        "black"      );
112   ss << print( ::color::constant::white_t{},        "white"      );
113   ss << print( ::color::constant::aqua_t{},         "aqua"       );
114   ss << print( ::color::constant::aquamarine_t{},   "aquamarine" );
115   ss << print( ::color::constant::azure_t{},        "azure"      );
116   ss << print( ::color::constant::beige_t{},        "beige"      );
117   ss << print( ::color::constant::bisque_t{},       "bisque"     );
118   ss << print( ::color::constant::blue_t{},         "blue"       );
119   ss << print( ::color::constant::brown_t{},        "brown"      );
120   ss << print( ::color::constant::chocolate_t{},    "chocolate"  );
121   ss << print( ::color::constant::coral_t{},        "coral"      );
122   ss << print( ::color::constant::crimson_t{},      "crimson"    );
123   ss << print( ::color::constant::cyan_t{},         "cyan"       );
124   ss << print( ::color::constant::fuchsia_t{},      "fuchsia"    );
125   ss << print( ::color::constant::gainsboro_t{},    "gainsboro"  );
126   ss << print( ::color::constant::gold_t{},         "gold"       );
127   ss << print( ::color::constant::green_t{},        "green"      );
128   ss << print( ::color::constant::indigo_t{},       "indigo"     );
129   ss << print( ::color::constant::ivory_t{},        "ivory"      );
130   ss << print( ::color::constant::khaki_t{},        "khaki"      );
131   ss << print( ::color::constant::lavender_t{},     "lavender"   );
132   ss << print( ::color::constant::lime_t{},         "lime"       );
133   ss << print( ::color::constant::linen_t{},        "linen"      );
134   ss << print( ::color::constant::magenta_t{},      "magenta"    );
135   ss << print( ::color::constant::maroon_t{},       "maroon"     );
136   ss << print( ::color::constant::moccasin_t{},     "moccasin"   );
137   ss << print( ::color::constant::navy_t{},         "navy"       );
138   ss << print( ::color::constant::olive_t{},        "olive"      );
139   ss << print( ::color::constant::orange_t{},       "orange"     );
140   ss << print( ::color::constant::orchid_t{},       "orchid"     );
141   ss << print( ::color::constant::peru_t{},         "peru"       );
142   ss << print( ::color::constant::pink_t{},         "pink"       );
143   ss << print( ::color::constant::plum_t{},         "plum"       );
144   ss << print( ::color::constant::purple_t{},       "purple"     );
145   ss << print( ::color::constant::red_t{},          "red"        );
146   ss << print( ::color::constant::salmon_t{},       "salmon"     );
147   ss << print( ::color::constant::sienna_t{},       "sienna"     );
148   ss << print( ::color::constant::silver_t{},       "silver"     );
149   ss << print( ::color::constant::snow_t{},         "snow"       );
150   ss << print( ::color::constant::tan_t{},          "tan"        );
151   ss << print( ::color::constant::teal_t{},         "teal"       );
152   ss << print( ::color::constant::thistle_t{},      "thistle"    );
153   ss << print( ::color::constant::tomato_t{},       "tomato"     );
154   ss << print( ::color::constant::turquoise_t{},    "turquoise"  );
155   ss << print( ::color::constant::violet_t{},       "violet"     );
156   ss << print( ::color::constant::wheat_t{},        "wheat"      );
157   ss << print( ::color::constant::yellow_t{},       "yellow"     );
158 
159 //  ss << print( ::color::constant::vga::black_t{},       "black"     );
160 //  ss << print( ::color::constant::vga::silver_t{},      "silver"   );
161 //  ss << print( ::color::constant::vga::gray_t{},        "gray"     );
162 //  ss << print( ::color::constant::vga::white_t{},       "white"    );
163 //  ss << print( ::color::constant::vga::maroon_t{},     "maroon "  );
164 //  ss << print( ::color::constant::vga::red_t{},         "red"      );
165 //  ss << print( ::color::constant::vga::purple_t{},      "purple"   );
166 //  ss << print( ::color::constant::vga::fuchsia_t{},    "fuchsia" );
167 
168 //  ss << print( ::color::constant::vga::green_t{},    "green"    );
169 //  ss << print( ::color::constant::vga::lime_t{},     "lime"     );
170 //  ss << print( ::color::constant::vga::olive_t{},    "olive"    );
171 //  ss << print( ::color::constant::vga::yellow_t{},   "yellow"   );
172 //  ss << print( ::color::constant::vga::navy_t{},     "navy"     );
173 //  ss << print( ::color::constant::vga::blue_t{},     "blue"     );
174 //  ss << print( ::color::constant::vga::teal_type{},     "teal"     );
175 //  ss << print( ::color::constant::vga::aqua_t{},     "aqua"     );
176 
177   ss << print( ::color::constant::gray_t<1,1>{},    "gray"       );
178   ss << print( ::color::constant::x11::gray_t{},     "#BEBEBE"  );
179   ss << print( ::color::constant::x11::green_t{},    "#00FF00"  );
180   ss << print( ::color::constant::x11::maroon_t{},   "#B03060"  );
181   ss << print( ::color::constant::x11::purple_t{},   "#A020F0"  );
182 
183   ss << print( ::color::constant::gray_t<0,1>{},   "#ffffff"   ); ss << print( ::color::constant::gray_t<1,0>{},   "#000000"   );
184 
185   ss << print( ::color::constant::gray_t<1,2>{},   "rgb(170,170,170)"   ); ss << print( ::color::constant::gray_t<2,1>{},   "rgb(85,85,85)"   );
186 
187   ss << print( ::color::constant::gray_t<1,3>{},   "rgb(191,191,191)"   ); ss << print( ::color::constant::gray_t<3,1>{},   "rgb(63,63,63)"   );
188   ss << print( ::color::constant::gray_t<2,3>{},   "rgb(153,153,153)"   ); ss << print( ::color::constant::gray_t<3,2>{},   "rgb(102,102,102)"   );
189 
190   ss << print( ::color::constant::gray_t<1,4>{},   "rgb(204,204,204)"   ); ss << print( ::color::constant::gray_t<4,1>{},   "rgb(51,51,51)"   );
191 
192   ss << print( ::color::constant::gray_t<2,4>{},   "rgb(170,170,170)"   ); ss << print( ::color::constant::gray_t<4,2>{},  "rgb(85,85,85)"   );
193   ss << print( ::color::constant::gray_t<3,4>{},   "rgb(145,145,145)"   );ss << print( ::color::constant::gray_t<4,3>{},   "rgb(109,109,109)"   );
194 
195   ss << print( ::color::constant::gray_t<1,5>{},   "rgb(212,212,212)"   ); ss << print( ::color::constant::gray_t<5,1>{},   "rgb(42,42,42)"   );
196   ss << print( ::color::constant::gray_t<2,5>{},   "rgb(182,182,182)"   ); ss << print( ::color::constant::gray_t<5,2>{},   "rgb(72,72,72)"   );
197   ss << print( ::color::constant::gray_t<3,5>{},   "rgb(159,159,159)"   ); ss << print( ::color::constant::gray_t<5,3>{},   "rgb(95,95,95)"   );
198   ss << print( ::color::constant::gray_t<4,5>{},   "rgb(141,141,141)"   ); ss << print( ::color::constant::gray_t<5,4>{},   "rgb(113,113,113)"   );
199 
200 
201 
202   ss << "</table>";
203 
204    {
205     std::ofstream ofs( "./constant.html" );
206     ofs <<  ss.str();
207    }
208 
209  }
210 
211