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