[Bio] / FigKernelPackages / WebColors.pm Repository:
ViewVC logotype

Annotation of /FigKernelPackages/WebColors.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.16 - (view) (download) (as text)

1 : paczian 1.1 package WebColors;
2 :    
3 :     1;
4 :    
5 :     use strict;
6 :     use warnings;
7 :    
8 : paczian 1.4 =pod
9 :    
10 :     =head1 NAME
11 :    
12 :     WebColors - returns different color sets for consistant color usage in the web
13 :    
14 :     =head1 DESCRIPTION
15 :    
16 :     Web colors has a set of color palettes for different purposes. These palettes are
17 :     represented by sets RGB values.
18 :    
19 :     =head1 METHODS
20 :    
21 :     =over 4
22 :    
23 :    
24 : devoid 1.11 =item * B<hsl_to_rgb> ()
25 :    
26 :     Converts a HSL (Hue, Saturation, Lightness) representation of color into
27 :     a RGB representation. See en.wikipedia.org/wiki/HSL_and_HSV for formula.
28 :     Input is a reference to a list of numbers [$h, $s, $l] where $h ranges
29 :     from [0, 360), and both $s and $l range from [0,1]. Output is a reference
30 :     to a list of numbers [$r, $g, $b] each ranging from [0, 256)
31 :    
32 :     =cut
33 :    
34 :     sub hsl_to_rgb {
35 :     my ($hsl) = @_;
36 :     if(@{$hsl} != 3) { return undef; }
37 :     my ($h, $s, $l) = @{$hsl};
38 :     if($s == 0) { return [$l, $l, $l] }
39 :     $h = ($h % 360) / 360;
40 :     my ($q, $p, $rgb);
41 :     if( $l < 0.5 ) { $q = $l * (1 + $s); }
42 :     else { $q = $l + $s - ($l * $s); }
43 :     $p = 2 * $l - $q;
44 :     push(@{$rgb}, $h + (1/3));
45 :     push(@{$rgb}, $h);
46 :     push(@{$rgb}, $h - (1/3));
47 :     for(my $z=0; $z<@{$rgb}; $z++){
48 :     if($rgb->[$z] < 0) { $rgb->[$z] = $rgb->[$z] + 1 }
49 :     elsif($rgb->[$z] > 1) { $rgb->[$z] = $rgb->[$z] - 1 }
50 :    
51 :     if($rgb->[$z] < (1/6)) { $rgb->[$z] = $p + (($q-$p)*6*$rgb->[$z]); }
52 :     elsif($rgb->[$z] < 0.5) { $rgb->[$z] = $q; }
53 :     elsif($rgb->[$z] < (2/3)) { $rgb->[$z] = $p + (($q-$p)*6*((2/3) - $rgb->[$z])); }
54 :     else { $rgb->[$z] = $p; }
55 :     # Scale rgb values into 256 range and round.
56 :     $rgb->[$z] = int( 0.5 + (255 * $rgb->[$z]));
57 :     }
58 :     return $rgb;
59 :     }
60 :    
61 :     =item * B<rgb_to_hsl> ()
62 :    
63 :     Converts a RGB representation of color into a HSL representation.
64 :     See en.wikipedia.org/wiki/HSL_and_HSV for formula.
65 :     Input is a reference to a list of numbers [$r, $g, $b] each in range
66 :     [0, 256). Output is a reference to a list of numbers [$h, $s, $l]
67 :     where $h ranges from [0, 360), and both $s and $l range from [0,1].
68 :    
69 :     =cut
70 :    
71 :     sub rgb_to_hsl {
72 :     my ($rgb) = @_;
73 :     if(@{$rgb} != 3) { return undef; }
74 :     my $max = 0;
75 :     my $min = 1;
76 :     for(my $i=0; $i<@{$rgb}; $i++) {
77 :     $rgb->[$i] /= 256; # scale into [0,1]
78 :     $min = $rgb->[$i] if $rgb->[$i] < $min;
79 :     $max = $rgb->[$i] if $rgb->[$i] > $max;
80 :     }
81 :     my ($r, $g, $b) = @{$rgb};
82 :     my ($h, $s, $l);
83 :     if( $max == $min ) {
84 :     $h = 0;
85 :     } elsif( $max == $r ) {
86 :     $h = (60 * ($g - $b) / ($max - $min) + 360) % 360;
87 :     } elsif( $max == $g ) {
88 :     $h = (60 * ($b - $r) / ($max - $min)) + 120;
89 :     } else { $h = (60 * ($r - $g) / ($max - $min)) + 240; }
90 :    
91 :     $l = 0.5 * ( $max + $min );
92 :    
93 :     if( $max == $min ) {
94 :     $s = 0;
95 :     } elsif( $l <= 0.5 ) {
96 :     $s = ($max - $min) / ($max + $min);
97 :     } else {
98 :     $s = ($max - $min) / (2 - ($max + $min));
99 :     }
100 :     return [$h, $s, $l];
101 :     }
102 :    
103 : paczian 1.4 =item * B<get_colors> ()
104 :    
105 :     The first implemented color method, still in here for backward compatability.
106 :     You should be using get_palette instead.
107 :    
108 :     =cut
109 :    
110 : paczian 1.1 sub get_colors {
111 :    
112 :     my $colors = [ [ 255, 255, 255 ],
113 :     [ 0, 0, 0 ],
114 : paczian 1.2 [ 235, 5, 40 ],
115 :     [ 200, 200, 200 ],
116 :     [ 50, 255, 50 ],
117 :     [ 60, 60, 190 ],
118 :     [ 145, 175, 160 ],
119 :     [ 224, 133, 15 ],
120 :     [ 0, 0, 155 ],
121 :     [ 255, 221, 0 ],
122 :     [ 0, 155, 155 ],
123 :     [ 200, 100, 200 ],
124 :     [ 27, 133, 52 ],
125 :     [ 135, 65, 65 ],
126 :     [ 0, 90, 255 ],
127 :     [ 95, 100, 100 ],
128 :     [ 80, 210, 150 ],
129 :     [ 225, 250, 160 ],
130 :     [ 170, 30, 145 ],
131 :     [ 255, 215, 125 ],
132 :     [ 140, 165, 210 ],
133 :     [ 160, 15, 250 ],
134 :     [ 45, 155, 185 ],
135 :     [ 170, 205, 120 ],
136 :     [ 30, 60, 190 ],
137 :     [ 115, 175, 160 ],
138 :     [ 194, 133, 15 ],
139 :     [ 0, 0, 125 ],
140 :     [ 225, 221, 0 ],
141 : paczian 1.1 [ 255, 0, 0 ],
142 :     [ 0, 255, 0 ],
143 :     [ 0, 0, 255 ],
144 :     [ 255, 255, 0 ],
145 :     [ 0, 255, 255 ],
146 :     [ 255, 0, 255 ],
147 :     [ 255, 127, 0 ],
148 :     [ 255, 0, 127 ],
149 :     [ 0, 255, 127 ],
150 :     [ 127, 0, 255 ],
151 :     [ 127, 255, 0 ],
152 :     [ 0, 127, 255 ],
153 :     [ 255, 127, 127 ],
154 :     [ 127, 255, 127 ],
155 :     [ 127, 127, 255 ],
156 :     [ 0, 0, 127 ],
157 :     [ 127, 0, 0 ],
158 :     [ 0, 127, 0 ],
159 :     [ 127, 127, 0 ],
160 :     [ 127, 0, 127 ],
161 :     [ 0, 127, 127 ],
162 :     [ 255, 127, 255 ],
163 :     [ 255, 255, 127 ],
164 : arodri7 1.3 [ 127, 255, 255 ],
165 :     [ 223, 1, 17],
166 :     [ 255, 32, 0],
167 :     [ 255, 51, 0],
168 :     [ 255, 102, 0],
169 :     [ 255, 153, 0],
170 :     [ 255, 204, 0],
171 :     [ 255, 255, 0],
172 :     [ 204, 255, 0],
173 :     [ 102, 255, 0],
174 :     [ 0, 255, 0],
175 : paczian 1.4 [ 102, 102, 255],
176 :     [173, 216, 230],
177 :     [135, 206, 250],
178 :     [30, 144, 255],
179 :     [0, 0, 255],
180 :     [0, 0, 139] ];
181 : paczian 1.1
182 :     return $colors;
183 :     }
184 : paczian 1.4
185 :     =item * B<get_palette> ()
186 :    
187 :     When passed the name of a palette, will return it. A palette is a set of
188 :     RGB values. Current options are
189 :    
190 :     'special' - special colors like white, black, background shading, highlighting and such.
191 :    
192 :     'vitamins' - 10 vital colors, well suited for a scale. Ranged from red to blue
193 :    
194 :     'many' - 46 hopefully distiguishable colors for e.g. piecharts, arrowsets
195 :    
196 : dejongh 1.12 'many_except_gray' - same as 'many', except gray is removed so it can be used for other purposes
197 : paczian 1.4 =cut
198 :    
199 :     sub get_palette {
200 :     my ($name) = @_;
201 :    
202 :     if ($name eq 'special') {
203 :     return [ [ 255, 255, 255 ], # white
204 :     [ 0, 0, 0 ], # black
205 :     [ 200, 200, 200 ], # background shading
206 :     [ 235, 5, 40 ], # highlight
207 :     [ 60, 60, 190 ], # foreground
208 :     [ 50, 255, 50 ]]; # special
209 :     }
210 :    
211 :     elsif ($name eq 'vitamins') {
212 :     return [ [ 223, 1, 17],
213 :     [ 255, 32, 0],
214 :     [ 255, 51, 0],
215 :     [ 255, 102, 0],
216 :     [ 255, 153, 0],
217 :     [ 255, 204, 0],
218 :     [ 255, 255, 0],
219 :     [ 204, 255, 0],
220 :     [ 102, 255, 0],
221 :     [ 0, 255, 0] ];
222 :     }
223 :    
224 :     elsif ($name eq 'many') {
225 :     return [ [ 224, 133, 15 ],
226 :     [ 0, 0, 155 ],
227 :     [ 255, 221, 0 ],
228 :     [ 0, 155, 155 ],
229 :     [ 200, 100, 200 ],
230 :     [ 27, 133, 52 ],
231 :     [ 135, 65, 65 ],
232 :     [ 0, 90, 255 ],
233 :     [ 95, 100, 100 ],
234 :     [ 80, 210, 150 ],
235 :     [ 225, 250, 160 ],
236 :     [ 170, 30, 145 ],
237 :     [ 255, 215, 125 ],
238 :     [ 140, 165, 210 ],
239 :     [ 160, 15, 250 ],
240 :     [ 45, 155, 185 ],
241 :     [ 170, 205, 120 ],
242 :     [ 30, 60, 190 ],
243 :     [ 115, 175, 160 ],
244 :     [ 194, 133, 15 ],
245 :     [ 0, 0, 125 ],
246 :     [ 225, 221, 0 ],
247 :     [ 255, 0, 0 ],
248 :     [ 0, 255, 0 ],
249 :     [ 0, 0, 255 ],
250 :     [ 255, 255, 0 ],
251 :     [ 0, 255, 255 ],
252 :     [ 255, 0, 255 ],
253 :     [ 255, 127, 0 ],
254 :     [ 255, 0, 127 ],
255 :     [ 0, 255, 127 ],
256 :     [ 127, 0, 255 ],
257 :     [ 127, 255, 0 ],
258 :     [ 0, 127, 255 ],
259 :     [ 255, 127, 127 ],
260 :     [ 127, 255, 127 ],
261 :     [ 127, 127, 255 ],
262 :     [ 0, 0, 127 ],
263 :     [ 127, 0, 0 ],
264 :     [ 0, 127, 0 ],
265 :     [ 127, 127, 0 ],
266 :     [ 127, 0, 127 ],
267 :     [ 0, 127, 127 ],
268 :     [ 255, 127, 255 ],
269 :     [ 255, 255, 127 ],
270 :     [ 127, 255, 255 ] ];
271 :     }
272 : dejongh 1.12 elsif ($name eq 'many_except_gray' || $name eq 'many_except_grey') {
273 :     return [ [ 224, 133, 15 ],
274 :     [ 0, 0, 155 ],
275 :     [ 255, 221, 0 ],
276 :     [ 0, 155, 155 ],
277 :     [ 200, 100, 200 ],
278 :     [ 27, 133, 52 ],
279 :     [ 135, 65, 65 ],
280 :     [ 0, 90, 255 ],
281 :     [ 80, 210, 150 ],
282 :     [ 225, 250, 160 ],
283 :     [ 170, 30, 145 ],
284 :     [ 255, 215, 125 ],
285 :     [ 140, 165, 210 ],
286 :     [ 160, 15, 250 ],
287 :     [ 45, 155, 185 ],
288 :     [ 170, 205, 120 ],
289 :     [ 30, 60, 190 ],
290 :     [ 115, 175, 160 ],
291 :     [ 194, 133, 15 ],
292 :     [ 0, 0, 125 ],
293 :     [ 225, 221, 0 ],
294 :     [ 255, 0, 0 ],
295 :     [ 0, 255, 0 ],
296 :     [ 0, 0, 255 ],
297 :     [ 255, 255, 0 ],
298 :     [ 0, 255, 255 ],
299 :     [ 255, 0, 255 ],
300 :     [ 255, 127, 0 ],
301 :     [ 255, 0, 127 ],
302 :     [ 0, 255, 127 ],
303 :     [ 127, 0, 255 ],
304 :     [ 127, 255, 0 ],
305 :     [ 0, 127, 255 ],
306 :     [ 255, 127, 127 ],
307 :     [ 127, 255, 127 ],
308 :     [ 127, 127, 255 ],
309 :     [ 0, 0, 127 ],
310 :     [ 127, 0, 0 ],
311 :     [ 0, 127, 0 ],
312 :     [ 127, 127, 0 ],
313 :     [ 127, 0, 127 ],
314 :     [ 0, 127, 127 ],
315 :     [ 255, 127, 255 ],
316 :     [ 255, 255, 127 ],
317 :     [ 127, 255, 255 ] ];
318 :     }
319 : jared 1.6 elsif ($name eq 'gradient') {
320 : jared 1.5 return [[204,34,0],
321 :     [238,85,0],
322 :     [204,102,0],
323 :     [204,153,0],
324 :     [187,204,0],
325 :     [119,204,0],
326 :     [34,204,0],
327 :     [0,204,187],
328 :     [0,170,204],
329 :     [0,119,204],
330 :     [0,68,204]];
331 :     }
332 : paczian 1.7 elsif ($name eq 'excel') {
333 : chenry 1.15 return [[255,0,0],
334 :     [0,128,0],
335 :     [0,0,128],
336 :     [128,128,0],
337 :     [128,0,128],
338 :     [192,192,192],
339 :     [128,128,128],
340 : paczian 1.7 [153,153,255],
341 :     [153,51,102],
342 :     [255,255,204],
343 :     [102,0,102],
344 :     [255,128,128],
345 :     [0,102,204],
346 :     [204,204,255],
347 :     [255,0,255],
348 :     [255,255,0],
349 :     [0,255,255],
350 :     [128,0,128],
351 :     [128,0,0],
352 :     [0,128,128],
353 :     [0,0,255],
354 :     [0,204,204],
355 :     [204,255,255],
356 :     [204,255,204],
357 :     [255,255,153],
358 :     [153,204,255],
359 :     [255,153,204],
360 :     [204,153,255],
361 :     [255,204,153],
362 :     [51,102,255],
363 :     [51,204,204],
364 :     [153,204,0],
365 :     [255,204,0],
366 :     [255,153,0],
367 :     [255,102,0],
368 :     [102,102,153],
369 :     [150,150,150],
370 :     [0,51,102],
371 :     [51,153,102],
372 :     [0,51,0],
373 :     [51,51,0],
374 :     [153,51,0],
375 :     [153,51,102],
376 :     [51,51,153],
377 :     [51,51,51]];
378 :     }
379 : blinsay 1.9 elsif ($name eq 'varied') {
380 :     return [
381 : blinsay 1.10 #[ 255,250,100 ], #yellow
382 : blinsay 1.9 [ 100,149,237 ], #pale blue
383 :     [ 178,54,54 ], #brick red
384 :     [ 60,179,113 ], #foam green
385 :     [ 205,133,63 ], #pale orange
386 :     [ 0,255,255 ], #aqua
387 :     [ 128,0,128 ] #purple
388 :     ];
389 :     }
390 : paczian 1.16 elsif ($name eq 'circle') {
391 :     return [
392 :     [ 255, 0, 0],
393 :     [ 255, 108, 0 ],
394 :     [ 255, 168, 0 ],
395 :     [ 255, 228, 0 ],
396 :     [ 228, 255, 0 ],
397 :     [ 156, 255, 0 ],
398 :     [ 54, 255, 0 ],
399 :     [ 0, 255, 192 ],
400 :     [ 0, 228, 255 ],
401 :     [ 0, 144, 255 ],
402 :     [ 0, 84, 255 ],
403 :     [ 18, 0, 255 ],
404 :     [ 102, 0, 255 ],
405 :     [ 174, 0, 255 ],
406 :     [ 246, 0, 255 ],
407 :     [ 255, 0, 162 ],
408 :     [ 143, 0, 0 ],
409 :     [ 143, 64, 0 ],
410 :     [ 143, 121, 0 ],
411 :     [ 124, 143, 0 ],
412 :     [ 64, 143, 0 ],
413 :     [ 0, 143, 67 ],
414 :     [ 0, 138, 143 ],
415 :     [ 0, 87, 143 ],
416 :     [ 0, 10, 143 ],
417 :     [ 50, 0, 143 ],
418 :     [ 108, 0, 143 ],
419 :     [ 143, 0, 118 ]
420 :     ];
421 :     }
422 :    
423 : paczian 1.4 return undef;
424 :     }
425 : paczian 1.8
426 :     sub color_to_rgb {
427 :     my ($color) = @_;
428 :    
429 :     my $mapping = { aliceblue => [ 240,248,255 ],
430 :     darkslategray => [ 47,79,79 ],
431 :     lightsalmon => [ 255,160,122 ],
432 :     palevioletred => [ 219,112,147 ],
433 :     antiquewhite => [ 250,235,215 ],
434 :     darkturquoise => [ 0,206,209 ],
435 :     lightseagreen => [ 32,178,170 ],
436 :     papayawhip => [ 255,239,213 ],
437 :     aqua => [ 0,255,255 ],
438 :     darkviolet => [ 148,0,211 ],
439 :     lightskyblue => [ 135,206,250 ],
440 :     peachpuff => [ 255,239,213 ],
441 :     aquamarine => [ 127,255,212 ],
442 :     deeppink => [ 255,20,147 ],
443 :     lightslategray => [ 119,136,153 ],
444 :     peru => [ 205,133,63 ],
445 :     azure => [ 240,255,255 ],
446 :     deepskyblue => [ 0,191,255 ],
447 :     lightsteelblue => [ 176,196,222 ],
448 :     pink => [ 255,192,203 ],
449 :     beige => [ 245,245,220 ],
450 :     dimgray => [ 105,105,105 ],
451 :     lightyellow => [ 255,255,224 ],
452 :     plum => [ 221,160,221 ],
453 :     bisque => [ 255,228,196 ],
454 :     dodgerblue => [ 30,144,255 ],
455 :     lime => [ 0,255,0 ],
456 :     powderblue => [ 176,224,230 ],
457 :     black => [ 0,0,0 ],
458 :     firebrick => [ 178,34,34 ],
459 :     limegreen => [ 50,205,50 ],
460 :     purple => [ 128,0,128 ],
461 :     blanchedalmond => [ 255,255,205 ],
462 :     floralwhite => [ 255,250,240 ],
463 :     linen => [ 250,240,230 ],
464 :     red => [ 255,0,0 ],
465 :     blue => [ 0,0,255 ],
466 :     forestgreen => [ 34,139,34 ],
467 :     magenta => [ 255,0,255 ],
468 :     rosybrown => [ 188,143,143 ],
469 :     blueviolet => [ 138,43,226 ],
470 :     fuchsia => [ 255,0,255 ],
471 :     maroon => [ 128,0,0 ],
472 :     royalblue => [ 65,105,225 ],
473 :     brown => [ 165,42,42 ],
474 :     gainsboro => [ 220,220,220 ],
475 :     mediumaquamarine => [ 102,205,170 ],
476 :     saddlebrown => [ 139,69,19 ],
477 :     burlywood => [ 222,184,135 ],
478 :     ghostwhite => [ 248,248,255 ],
479 :     mediumblue => [ 0,0,205 ],
480 :     salmon => [ 250,128,114 ],
481 :     cadetblue => [ 95,158,160 ],
482 :     gold => [ 255,215,0 ],
483 :     mediumorchid => [ 186,85,211 ],
484 :     sandybrown => [ 244,164,96 ],
485 :     chartreuse => [ 127,255,0 ],
486 :     goldenrod => [ 218,165,32 ],
487 :     mediumpurple => [ 147,112,219 ],
488 :     seagreen => [ 46,139,87 ],
489 :     chocolate => [ 210,105,30 ],
490 :     gray => [ 128,128,128 ],
491 :     mediumseagreen => [ 60,179,113 ],
492 :     seashell => [ 255,245,238 ],
493 :     coral => [ 255,127,80 ],
494 :     green => [ 0,128,0 ],
495 :     mediumslateblue => [ 123,104,238 ],
496 :     sienna => [ 160,82,45 ],
497 :     cornflowerblue => [ 100,149,237 ],
498 :     greenyellow => [ 173,255,47 ],
499 :     mediumspringgreen => [ 0,250,154 ],
500 :     silver => [ 192,192,192 ],
501 :     cornsilk => [ 255,248,220 ],
502 :     honeydew => [ 240,255,240 ],
503 :     mediumturquoise => [ 72,209,204 ],
504 :     skyblue => [ 135,206,235 ],
505 :     crimson => [ 220,20,60 ],
506 :     hotpink => [ 255,105,180 ],
507 :     mediumvioletred => [ 199,21,133 ],
508 :     slateblue => [ 106,90,205 ],
509 :     cyan => [ 0,255,255 ],
510 :     indianred => [ 205,92,92 ],
511 :     midnightblue => [ 25,25,112 ],
512 :     slategray => [ 112,128,144 ],
513 :     darkblue => [ 0,0,139 ],
514 :     indigo => [ 75,0,130 ],
515 :     mintcream => [ 245,255,250 ],
516 :     snow => [ 255,250,250 ],
517 :     darkcyan => [ 0,139,139 ],
518 :     ivory => [ 255,240,240 ],
519 :     mistyrose => [ 255,228,225 ],
520 :     springgreen => [ 0,255,127 ],
521 :     darkgoldenrod => [ 184,134,11 ],
522 :     khaki => [ 240,230,140 ],
523 :     moccasin => [ 255,228,181 ],
524 :     steelblue => [ 70,130,180 ],
525 :     darkgray => [ 169,169,169 ],
526 :     lavender => [ 230,230,250 ],
527 :     navajowhite => [ 255,222,173 ],
528 :     tan => [ 210,180,140 ],
529 :     darkgreen => [ 0,100,0 ],
530 :     lavenderblush => [ 255,240,245 ],
531 :     navy => [ 0,0,128 ],
532 :     teal => [ 0,128,128 ],
533 :     darkkhaki => [ 189,183,107 ],
534 :     lawngreen => [ 124,252,0 ],
535 :     oldlace => [ 253,245,230 ],
536 :     thistle => [ 216,191,216 ],
537 :     darkmagenta => [ 139,0,139 ],
538 :     lemonchiffon => [ 255,250,205 ],
539 :     olive => [ 128,128,0 ],
540 :     tomato => [ 253,99,71 ],
541 :     darkolivegreen => [ 85,107,47 ],
542 :     lightblue => [ 173,216,230 ],
543 :     olivedrab => [ 107,142,35 ],
544 :     turquoise => [ 64,224,208 ],
545 :     darkorange => [ 255,140,0 ],
546 :     lightcoral => [ 240,128,128 ],
547 :     orange => [ 255,165,0 ],
548 :     violet => [ 238,130,238 ],
549 :     darkorchid => [ 153,50,204 ],
550 :     lightcyan => [ 224,255,255 ],
551 :     orangered => [ 255,69,0 ],
552 :     wheat => [ 245,222,179 ],
553 :     darkred => [ 139,0,0 ],
554 :     lightgoldenrodyellow => [ 250,250,210 ],
555 :     orchid => [ 218,112,214 ],
556 :     white => [ 255,255,255 ],
557 :     darksalmon => [ 233,150,122 ],
558 :     lightgreen => [ 144,238,144 ],
559 :     palegoldenrod => [ 238,232,170 ],
560 :     whitesmoke => [ 245,245,245 ],
561 :     darkseagreen => [ 143,188,143 ],
562 :     lightgrey => [ 211,211,211 ],
563 :     palegreen => [ 152,251,152 ],
564 :     yellow => [ 255,255,0 ],
565 :     darkslateblue => [ 72,61,139 ],
566 :     lightpink => [ 255,182,193 ],
567 :     paleturquoise => [ 175,238,238 ],
568 :     yellowgreen => [ 154,205,50 ] };
569 :    
570 :     return $mapping->{$color};
571 :     }
572 : dejongh 1.12
573 :     sub rgb_to_hex
574 :     {
575 :     # expect an array reference of three values between 0 and 255
576 :     my ($rgb) = @_;
577 :     my $hex_string = "";
578 :    
579 :     foreach my $val (@$rgb)
580 :     {
581 :     if ($val == 0) {
582 :     $hex_string .= "00";
583 :     }
584 :     else {
585 :     my $hex = "0123456789ABCDEF";
586 :     $hex_string .= substr($hex, ($val-($val%16))/16 , 1);
587 :     $hex_string .= substr($hex, ($val%16) , 1);
588 :     }
589 :     }
590 :    
591 :     return $hex_string;
592 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3