root / drupal7 / sites / all / libraries / tcpdf-6.2.9 / include / tcpdf_colors.php @ 0f8e34f8
1 |
<?php
|
---|---|
2 |
//============================================================+
|
3 |
// File name : tcpdf_colors.php
|
4 |
// Version : 1.0.004
|
5 |
// Begin : 2002-04-09
|
6 |
// Last Update : 2014-04-25
|
7 |
// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
|
8 |
// License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
|
9 |
// -------------------------------------------------------------------
|
10 |
// Copyright (C) 2002-2013 Nicola Asuni - Tecnick.com LTD
|
11 |
//
|
12 |
// This file is part of TCPDF software library.
|
13 |
//
|
14 |
// TCPDF is free software: you can redistribute it and/or modify it
|
15 |
// under the terms of the GNU Lesser General Public License as
|
16 |
// published by the Free Software Foundation, either version 3 of the
|
17 |
// License, or (at your option) any later version.
|
18 |
//
|
19 |
// TCPDF is distributed in the hope that it will be useful, but
|
20 |
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
21 |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
22 |
// See the GNU Lesser General Public License for more details.
|
23 |
//
|
24 |
// You should have received a copy of the GNU Lesser General Public License
|
25 |
// along with TCPDF. If not, see <http://www.gnu.org/licenses/>.
|
26 |
//
|
27 |
// See LICENSE.TXT file for more information.
|
28 |
// -------------------------------------------------------------------
|
29 |
//
|
30 |
// Description : Array of WEB safe colors
|
31 |
//
|
32 |
//============================================================+
|
33 |
|
34 |
/**
|
35 |
* @file
|
36 |
* PHP color class for TCPDF
|
37 |
* @author Nicola Asuni
|
38 |
* @package com.tecnick.tcpdf
|
39 |
*/
|
40 |
|
41 |
/**
|
42 |
* @class TCPDF_COLORS
|
43 |
* PHP color class for TCPDF
|
44 |
* @package com.tecnick.tcpdf
|
45 |
* @version 1.0.004
|
46 |
* @author Nicola Asuni - info@tecnick.com
|
47 |
*/
|
48 |
class TCPDF_COLORS { |
49 |
|
50 |
/**
|
51 |
* Array of WEB safe colors
|
52 |
* @public static
|
53 |
*/
|
54 |
public static $webcolor = array ( |
55 |
'aliceblue' => 'f0f8ff', |
56 |
'antiquewhite' => 'faebd7', |
57 |
'aqua' => '00ffff', |
58 |
'aquamarine' => '7fffd4', |
59 |
'azure' => 'f0ffff', |
60 |
'beige' => 'f5f5dc', |
61 |
'bisque' => 'ffe4c4', |
62 |
'black' => '000000', |
63 |
'blanchedalmond' => 'ffebcd', |
64 |
'blue' => '0000ff', |
65 |
'blueviolet' => '8a2be2', |
66 |
'brown' => 'a52a2a', |
67 |
'burlywood' => 'deb887', |
68 |
'cadetblue' => '5f9ea0', |
69 |
'chartreuse' => '7fff00', |
70 |
'chocolate' => 'd2691e', |
71 |
'coral' => 'ff7f50', |
72 |
'cornflowerblue' => '6495ed', |
73 |
'cornsilk' => 'fff8dc', |
74 |
'crimson' => 'dc143c', |
75 |
'cyan' => '00ffff', |
76 |
'darkblue' => '00008b', |
77 |
'darkcyan' => '008b8b', |
78 |
'darkgoldenrod' => 'b8860b', |
79 |
'dkgray' => 'a9a9a9', |
80 |
'darkgray' => 'a9a9a9', |
81 |
'darkgrey' => 'a9a9a9', |
82 |
'darkgreen' => '006400', |
83 |
'darkkhaki' => 'bdb76b', |
84 |
'darkmagenta' => '8b008b', |
85 |
'darkolivegreen' => '556b2f', |
86 |
'darkorange' => 'ff8c00', |
87 |
'darkorchid' => '9932cc', |
88 |
'darkred' => '8b0000', |
89 |
'darksalmon' => 'e9967a', |
90 |
'darkseagreen' => '8fbc8f', |
91 |
'darkslateblue' => '483d8b', |
92 |
'darkslategray' => '2f4f4f', |
93 |
'darkslategrey' => '2f4f4f', |
94 |
'darkturquoise' => '00ced1', |
95 |
'darkviolet' => '9400d3', |
96 |
'deeppink' => 'ff1493', |
97 |
'deepskyblue' => '00bfff', |
98 |
'dimgray' => '696969', |
99 |
'dimgrey' => '696969', |
100 |
'dodgerblue' => '1e90ff', |
101 |
'firebrick' => 'b22222', |
102 |
'floralwhite' => 'fffaf0', |
103 |
'forestgreen' => '228b22', |
104 |
'fuchsia' => 'ff00ff', |
105 |
'gainsboro' => 'dcdcdc', |
106 |
'ghostwhite' => 'f8f8ff', |
107 |
'gold' => 'ffd700', |
108 |
'goldenrod' => 'daa520', |
109 |
'gray' => '808080', |
110 |
'grey' => '808080', |
111 |
'green' => '008000', |
112 |
'greenyellow' => 'adff2f', |
113 |
'honeydew' => 'f0fff0', |
114 |
'hotpink' => 'ff69b4', |
115 |
'indianred' => 'cd5c5c', |
116 |
'indigo' => '4b0082', |
117 |
'ivory' => 'fffff0', |
118 |
'khaki' => 'f0e68c', |
119 |
'lavender' => 'e6e6fa', |
120 |
'lavenderblush' => 'fff0f5', |
121 |
'lawngreen' => '7cfc00', |
122 |
'lemonchiffon' => 'fffacd', |
123 |
'lightblue' => 'add8e6', |
124 |
'lightcoral' => 'f08080', |
125 |
'lightcyan' => 'e0ffff', |
126 |
'lightgoldenrodyellow' => 'fafad2', |
127 |
'ltgray' => 'd3d3d3', |
128 |
'lightgray' => 'd3d3d3', |
129 |
'lightgrey' => 'd3d3d3', |
130 |
'lightgreen' => '90ee90', |
131 |
'lightpink' => 'ffb6c1', |
132 |
'lightsalmon' => 'ffa07a', |
133 |
'lightseagreen' => '20b2aa', |
134 |
'lightskyblue' => '87cefa', |
135 |
'lightslategray' => '778899', |
136 |
'lightslategrey' => '778899', |
137 |
'lightsteelblue' => 'b0c4de', |
138 |
'lightyellow' => 'ffffe0', |
139 |
'lime' => '00ff00', |
140 |
'limegreen' => '32cd32', |
141 |
'linen' => 'faf0e6', |
142 |
'magenta' => 'ff00ff', |
143 |
'maroon' => '800000', |
144 |
'mediumaquamarine' => '66cdaa', |
145 |
'mediumblue' => '0000cd', |
146 |
'mediumorchid' => 'ba55d3', |
147 |
'mediumpurple' => '9370d8', |
148 |
'mediumseagreen' => '3cb371', |
149 |
'mediumslateblue' => '7b68ee', |
150 |
'mediumspringgreen' => '00fa9a', |
151 |
'mediumturquoise' => '48d1cc', |
152 |
'mediumvioletred' => 'c71585', |
153 |
'midnightblue' => '191970', |
154 |
'mintcream' => 'f5fffa', |
155 |
'mistyrose' => 'ffe4e1', |
156 |
'moccasin' => 'ffe4b5', |
157 |
'navajowhite' => 'ffdead', |
158 |
'navy' => '000080', |
159 |
'oldlace' => 'fdf5e6', |
160 |
'olive' => '808000', |
161 |
'olivedrab' => '6b8e23', |
162 |
'orange' => 'ffa500', |
163 |
'orangered' => 'ff4500', |
164 |
'orchid' => 'da70d6', |
165 |
'palegoldenrod' => 'eee8aa', |
166 |
'palegreen' => '98fb98', |
167 |
'paleturquoise' => 'afeeee', |
168 |
'palevioletred' => 'd87093', |
169 |
'papayawhip' => 'ffefd5', |
170 |
'peachpuff' => 'ffdab9', |
171 |
'peru' => 'cd853f', |
172 |
'pink' => 'ffc0cb', |
173 |
'plum' => 'dda0dd', |
174 |
'powderblue' => 'b0e0e6', |
175 |
'purple' => '800080', |
176 |
'red' => 'ff0000', |
177 |
'rosybrown' => 'bc8f8f', |
178 |
'royalblue' => '4169e1', |
179 |
'saddlebrown' => '8b4513', |
180 |
'salmon' => 'fa8072', |
181 |
'sandybrown' => 'f4a460', |
182 |
'seagreen' => '2e8b57', |
183 |
'seashell' => 'fff5ee', |
184 |
'sienna' => 'a0522d', |
185 |
'silver' => 'c0c0c0', |
186 |
'skyblue' => '87ceeb', |
187 |
'slateblue' => '6a5acd', |
188 |
'slategray' => '708090', |
189 |
'slategrey' => '708090', |
190 |
'snow' => 'fffafa', |
191 |
'springgreen' => '00ff7f', |
192 |
'steelblue' => '4682b4', |
193 |
'tan' => 'd2b48c', |
194 |
'teal' => '008080', |
195 |
'thistle' => 'd8bfd8', |
196 |
'tomato' => 'ff6347', |
197 |
'turquoise' => '40e0d0', |
198 |
'violet' => 'ee82ee', |
199 |
'wheat' => 'f5deb3', |
200 |
'white' => 'ffffff', |
201 |
'whitesmoke' => 'f5f5f5', |
202 |
'yellow' => 'ffff00', |
203 |
'yellowgreen' => '9acd32' |
204 |
); // end of web colors
|
205 |
|
206 |
/**
|
207 |
* Array of valid JavaScript color names
|
208 |
* @public static
|
209 |
*/
|
210 |
public static $jscolor = array ('transparent', 'black', 'white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'dkGray', 'gray', 'ltGray'); |
211 |
|
212 |
/**
|
213 |
* Array of Spot colors (C,M,Y,K,name)
|
214 |
* Color keys must be in lowercase and without spaces.
|
215 |
* As long as no open standard for spot colours exists, you have to buy a colour book by one of the colour manufacturers and insert the values and names of spot colours directly.
|
216 |
* Common industry standard spot colors are: ANPA-COLOR, DIC, FOCOLTONE, GCMI, HKS, PANTONE, TOYO, TRUMATCH.
|
217 |
* @public static
|
218 |
*/
|
219 |
public static $spotcolor = array ( |
220 |
// special registration colors
|
221 |
'none' => array( 0, 0, 0, 0, 'None'), |
222 |
'all' => array(100, 100, 100, 100, 'All'), |
223 |
// standard CMYK colors
|
224 |
'cyan' => array(100, 0, 0, 0, 'Cyan'), |
225 |
'magenta' => array( 0, 100, 0, 0, 'Magenta'), |
226 |
'yellow' => array( 0, 0, 100, 0, 'Yellow'), |
227 |
'key' => array( 0, 0, 0, 100, 'Key'), |
228 |
// alias
|
229 |
'white' => array( 0, 0, 0, 0, 'White'), |
230 |
'black' => array( 0, 0, 0, 100, 'Black'), |
231 |
// standard RGB colors
|
232 |
'red' => array( 0, 100, 100, 0, 'Red'), |
233 |
'green' => array(100, 0, 100, 0, 'Green'), |
234 |
'blue' => array(100, 100, 0, 0, 'Blue'), |
235 |
// Add here standard spot colors or dynamically define them with AddSpotColor()
|
236 |
// ...
|
237 |
); // end of spot colors
|
238 |
|
239 |
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
240 |
|
241 |
/**
|
242 |
* Return the Spot color array.
|
243 |
* @param $name (string) Name of the spot color.
|
244 |
* @param $spotc (array) Reference to an array of spot colors.
|
245 |
* @return (array) Spot color array or false if not defined.
|
246 |
* @since 5.9.125 (2011-10-03)
|
247 |
* @public static
|
248 |
*/
|
249 |
public static function getSpotColor($name, &$spotc) { |
250 |
if (isset($spotc[$name])) { |
251 |
return $spotc[$name]; |
252 |
} |
253 |
$color = preg_replace('/[\s]*/', '', $name); // remove extra spaces |
254 |
$color = strtolower($color); |
255 |
if (isset(self::$spotcolor[$color])) { |
256 |
if (!isset($spotc[$name])) { |
257 |
$i = (1 + count($spotc)); |
258 |
$spotc[$name] = array('C' => self::$spotcolor[$color][0], 'M' => self::$spotcolor[$color][1], 'Y' => self::$spotcolor[$color][2], 'K' => self::$spotcolor[$color][3], 'name' => self::$spotcolor[$color][4], 'i' => $i); |
259 |
} |
260 |
return $spotc[self::$spotcolor[$color][4]]; |
261 |
} |
262 |
return false; |
263 |
} |
264 |
|
265 |
/**
|
266 |
* Returns an array (RGB or CMYK) from an html color name, or a six-digit (i.e. #3FE5AA), or three-digit (i.e. #7FF) hexadecimal color, or a javascript color array, or javascript color name.
|
267 |
* @param $hcolor (string) HTML color.
|
268 |
* @param $spotc (array) Reference to an array of spot colors.
|
269 |
* @param $defcol (array) Color to return in case of error.
|
270 |
* @return array RGB or CMYK color, or false in case of error.
|
271 |
* @public static
|
272 |
*/
|
273 |
public static function convertHTMLColorToDec($hcolor, &$spotc, $defcol=array('R'=>128,'G'=>128,'B'=>128)) { |
274 |
$color = preg_replace('/[\s]*/', '', $hcolor); // remove extra spaces |
275 |
$color = strtolower($color); |
276 |
// check for javascript color array syntax
|
277 |
if (strpos($color, '[') !== false) { |
278 |
if (preg_match('/[\[][\"\'](t|g|rgb|cmyk)[\"\'][\,]?([0-9\.]*)[\,]?([0-9\.]*)[\,]?([0-9\.]*)[\,]?([0-9\.]*)[\]]/', $color, $m) > 0) { |
279 |
$returncolor = array(); |
280 |
switch ($m[1]) { |
281 |
case 'cmyk': { |
282 |
// RGB
|
283 |
$returncolor['C'] = max(0, min(100, (floatval($m[2]) * 100))); |
284 |
$returncolor['M'] = max(0, min(100, (floatval($m[3]) * 100))); |
285 |
$returncolor['Y'] = max(0, min(100, (floatval($m[4]) * 100))); |
286 |
$returncolor['K'] = max(0, min(100, (floatval($m[5]) * 100))); |
287 |
break;
|
288 |
} |
289 |
case 'rgb': { |
290 |
// RGB
|
291 |
$returncolor['R'] = max(0, min(255, (floatval($m[2]) * 255))); |
292 |
$returncolor['G'] = max(0, min(255, (floatval($m[3]) * 255))); |
293 |
$returncolor['B'] = max(0, min(255, (floatval($m[4]) * 255))); |
294 |
break;
|
295 |
} |
296 |
case 'g': { |
297 |
// grayscale
|
298 |
$returncolor['G'] = max(0, min(255, (floatval($m[2]) * 255))); |
299 |
break;
|
300 |
} |
301 |
case 't': |
302 |
default: {
|
303 |
// transparent (empty array)
|
304 |
break;
|
305 |
} |
306 |
} |
307 |
return $returncolor; |
308 |
} |
309 |
} elseif ((substr($color, 0, 4) != 'cmyk') AND (substr($color, 0, 3) != 'rgb') AND (($dotpos = strpos($color, '.')) !== false)) { |
310 |
// remove class parent (i.e.: color.red)
|
311 |
$color = substr($color, ($dotpos + 1)); |
312 |
if ($color == 'transparent') { |
313 |
// transparent (empty array)
|
314 |
return array(); |
315 |
} |
316 |
} |
317 |
if (strlen($color) == 0) { |
318 |
return $defcol; |
319 |
} |
320 |
// RGB ARRAY
|
321 |
if (substr($color, 0, 3) == 'rgb') { |
322 |
$codes = substr($color, 4); |
323 |
$codes = str_replace(')', '', $codes); |
324 |
$returncolor = explode(',', $codes); |
325 |
foreach ($returncolor as $key => $val) { |
326 |
if (strpos($val, '%') > 0) { |
327 |
// percentage
|
328 |
$returncolor[$key] = (255 * intval($val) / 100); |
329 |
} else {
|
330 |
$returncolor[$key] = intval($val); |
331 |
} |
332 |
// normalize value
|
333 |
$returncolor[$key] = max(0, min(255, $returncolor[$key])); |
334 |
} |
335 |
return $returncolor; |
336 |
} |
337 |
// CMYK ARRAY
|
338 |
if (substr($color, 0, 4) == 'cmyk') { |
339 |
$codes = substr($color, 5); |
340 |
$codes = str_replace(')', '', $codes); |
341 |
$returncolor = explode(',', $codes); |
342 |
foreach ($returncolor as $key => $val) { |
343 |
if (strpos($val, '%') !== false) { |
344 |
// percentage
|
345 |
$returncolor[$key] = (100 * intval($val) / 100); |
346 |
} else {
|
347 |
$returncolor[$key] = intval($val); |
348 |
} |
349 |
// normalize value
|
350 |
$returncolor[$key] = max(0, min(100, $returncolor[$key])); |
351 |
} |
352 |
return $returncolor; |
353 |
} |
354 |
if ($color[0] != '#') { |
355 |
// COLOR NAME
|
356 |
if (isset(self::$webcolor[$color])) { |
357 |
// web color
|
358 |
$color_code = self::$webcolor[$color]; |
359 |
} else {
|
360 |
// spot color
|
361 |
$returncolor = self::getSpotColor($color, $spotc); |
362 |
if ($returncolor === false) { |
363 |
$returncolor = $defcol; |
364 |
} |
365 |
return $returncolor; |
366 |
} |
367 |
} else {
|
368 |
$color_code = substr($color, 1); |
369 |
} |
370 |
// HEXADECIMAL REPRESENTATION
|
371 |
switch (strlen($color_code)) { |
372 |
case 3: { |
373 |
// 3-digit RGB hexadecimal representation
|
374 |
$r = substr($color_code, 0, 1); |
375 |
$g = substr($color_code, 1, 1); |
376 |
$b = substr($color_code, 2, 1); |
377 |
$returncolor = array(); |
378 |
$returncolor['R'] = max(0, min(255, hexdec($r.$r))); |
379 |
$returncolor['G'] = max(0, min(255, hexdec($g.$g))); |
380 |
$returncolor['B'] = max(0, min(255, hexdec($b.$b))); |
381 |
break;
|
382 |
} |
383 |
case 6: { |
384 |
// 6-digit RGB hexadecimal representation
|
385 |
$returncolor = array(); |
386 |
$returncolor['R'] = max(0, min(255, hexdec(substr($color_code, 0, 2)))); |
387 |
$returncolor['G'] = max(0, min(255, hexdec(substr($color_code, 2, 2)))); |
388 |
$returncolor['B'] = max(0, min(255, hexdec(substr($color_code, 4, 2)))); |
389 |
break;
|
390 |
} |
391 |
case 8: { |
392 |
// 8-digit CMYK hexadecimal representation
|
393 |
$returncolor = array(); |
394 |
$returncolor['C'] = max(0, min(100, round(hexdec(substr($color_code, 0, 2)) / 2.55))); |
395 |
$returncolor['M'] = max(0, min(100, round(hexdec(substr($color_code, 2, 2)) / 2.55))); |
396 |
$returncolor['Y'] = max(0, min(100, round(hexdec(substr($color_code, 4, 2)) / 2.55))); |
397 |
$returncolor['K'] = max(0, min(100, round(hexdec(substr($color_code, 6, 2)) / 2.55))); |
398 |
break;
|
399 |
} |
400 |
default: {
|
401 |
$returncolor = $defcol; |
402 |
break;
|
403 |
} |
404 |
} |
405 |
return $returncolor; |
406 |
} |
407 |
|
408 |
/**
|
409 |
* Convert a color array into a string representation.
|
410 |
* @param $c (array) Array of colors.
|
411 |
* @return (string) The color array representation.
|
412 |
* @since 5.9.137 (2011-12-01)
|
413 |
* @public static
|
414 |
*/
|
415 |
public static function getColorStringFromArray($c) { |
416 |
$c = array_values($c); |
417 |
$color = '['; |
418 |
switch (count($c)) { |
419 |
case 4: { |
420 |
// CMYK
|
421 |
$color .= sprintf('%F %F %F %F', (max(0, min(100, floatval($c[0]))) / 100), (max(0, min(100, floatval($c[1]))) / 100), (max(0, min(100, floatval($c[2]))) / 100), (max(0, min(100, floatval($c[3]))) / 100)); |
422 |
break;
|
423 |
} |
424 |
case 3: { |
425 |
// RGB
|
426 |
$color .= sprintf('%F %F %F', (max(0, min(255, floatval($c[0]))) / 255), (max(0, min(255, floatval($c[1]))) / 255), (max(0, min(255, floatval($c[2]))) / 255)); |
427 |
break;
|
428 |
} |
429 |
case 1: { |
430 |
// grayscale
|
431 |
$color .= sprintf('%F', (max(0, min(255, floatval($c[0]))) / 255)); |
432 |
break;
|
433 |
} |
434 |
} |
435 |
$color .= ']'; |
436 |
return $color; |
437 |
} |
438 |
|
439 |
/**
|
440 |
* Convert color to javascript color.
|
441 |
* @param $color (string) color name or "#RRGGBB"
|
442 |
* @protected
|
443 |
* @since 2.1.002 (2008-02-12)
|
444 |
* @public static
|
445 |
*/
|
446 |
public static function _JScolor($color) { |
447 |
if (substr($color, 0, 1) == '#') { |
448 |
return sprintf("['RGB',%F,%F,%F]", (hexdec(substr($color, 1, 2)) / 255), (hexdec(substr($color, 3, 2)) / 255), (hexdec(substr($color, 5, 2)) / 255)); |
449 |
} |
450 |
if (!in_array($color, self::$jscolor)) { |
451 |
// default transparent color
|
452 |
$color = $jscolor[0]; |
453 |
} |
454 |
return 'color.'.$color; |
455 |
} |
456 |
|
457 |
|
458 |
} // END OF TCPDF_COLORS CLASS
|
459 |
|
460 |
//============================================================+
|
461 |
// END OF FILE
|
462 |
//============================================================+
|