source: trunk/client/inc/hpdf5/tecnickcom/tcpdf/include/tcpdf_colors.php@ 347

Last change on this file since 347 was 347, checked in by roby, 3 years ago

Aggiornamento per compatibilità con php7.4

File size: 14.4 KB
Line 
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 */
48class 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($hcolor, $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 = self::$jscolor[0];
453 }
454 return 'color.'.$color;
455 }
456
457
458} // END OF TCPDF_COLORS CLASS
459
460//============================================================+
461// END OF FILE
462//============================================================+
Note: See TracBrowser for help on using the repository browser.