@@ -45,12 +45,64 @@ class Color extends Supervisor
45
45
const VALIDATE_COLOR_6 = '/^[A-F0-9]{6}$/i ' ;
46
46
const VALIDATE_COLOR_8 = '/^[A-F0-9]{8}$/i ' ;
47
47
48
- /**
49
- * Indexed colors array.
50
- *
51
- * @var array
52
- */
53
- protected static $ indexedColors ;
48
+ private const INDEXED_COLORS = [
49
+ 1 => 'FF000000 ' , // System Colour #1 - Black
50
+ 2 => 'FFFFFFFF ' , // System Colour #2 - White
51
+ 3 => 'FFFF0000 ' , // System Colour #3 - Red
52
+ 4 => 'FF00FF00 ' , // System Colour #4 - Green
53
+ 5 => 'FF0000FF ' , // System Colour #5 - Blue
54
+ 6 => 'FFFFFF00 ' , // System Colour #6 - Yellow
55
+ 7 => 'FFFF00FF ' , // System Colour #7- Magenta
56
+ 8 => 'FF00FFFF ' , // System Colour #8- Cyan
57
+ 9 => 'FF800000 ' , // Standard Colour #9
58
+ 10 => 'FF008000 ' , // Standard Colour #10
59
+ 11 => 'FF000080 ' , // Standard Colour #11
60
+ 12 => 'FF808000 ' , // Standard Colour #12
61
+ 13 => 'FF800080 ' , // Standard Colour #13
62
+ 14 => 'FF008080 ' , // Standard Colour #14
63
+ 15 => 'FFC0C0C0 ' , // Standard Colour #15
64
+ 16 => 'FF808080 ' , // Standard Colour #16
65
+ 17 => 'FF9999FF ' , // Chart Fill Colour #17
66
+ 18 => 'FF993366 ' , // Chart Fill Colour #18
67
+ 19 => 'FFFFFFCC ' , // Chart Fill Colour #19
68
+ 20 => 'FFCCFFFF ' , // Chart Fill Colour #20
69
+ 21 => 'FF660066 ' , // Chart Fill Colour #21
70
+ 22 => 'FFFF8080 ' , // Chart Fill Colour #22
71
+ 23 => 'FF0066CC ' , // Chart Fill Colour #23
72
+ 24 => 'FFCCCCFF ' , // Chart Fill Colour #24
73
+ 25 => 'FF000080 ' , // Chart Line Colour #25
74
+ 26 => 'FFFF00FF ' , // Chart Line Colour #26
75
+ 27 => 'FFFFFF00 ' , // Chart Line Colour #27
76
+ 28 => 'FF00FFFF ' , // Chart Line Colour #28
77
+ 29 => 'FF800080 ' , // Chart Line Colour #29
78
+ 30 => 'FF800000 ' , // Chart Line Colour #30
79
+ 31 => 'FF008080 ' , // Chart Line Colour #31
80
+ 32 => 'FF0000FF ' , // Chart Line Colour #32
81
+ 33 => 'FF00CCFF ' , // Standard Colour #33
82
+ 34 => 'FFCCFFFF ' , // Standard Colour #34
83
+ 35 => 'FFCCFFCC ' , // Standard Colour #35
84
+ 36 => 'FFFFFF99 ' , // Standard Colour #36
85
+ 37 => 'FF99CCFF ' , // Standard Colour #37
86
+ 38 => 'FFFF99CC ' , // Standard Colour #38
87
+ 39 => 'FFCC99FF ' , // Standard Colour #39
88
+ 40 => 'FFFFCC99 ' , // Standard Colour #40
89
+ 41 => 'FF3366FF ' , // Standard Colour #41
90
+ 42 => 'FF33CCCC ' , // Standard Colour #42
91
+ 43 => 'FF99CC00 ' , // Standard Colour #43
92
+ 44 => 'FFFFCC00 ' , // Standard Colour #44
93
+ 45 => 'FFFF9900 ' , // Standard Colour #45
94
+ 46 => 'FFFF6600 ' , // Standard Colour #46
95
+ 47 => 'FF666699 ' , // Standard Colour #47
96
+ 48 => 'FF969696 ' , // Standard Colour #48
97
+ 49 => 'FF003366 ' , // Standard Colour #49
98
+ 50 => 'FF339966 ' , // Standard Colour #50
99
+ 51 => 'FF003300 ' , // Standard Colour #51
100
+ 52 => 'FF333300 ' , // Standard Colour #52
101
+ 53 => 'FF993300 ' , // Standard Colour #53
102
+ 54 => 'FF993366 ' , // Standard Colour #54
103
+ 55 => 'FF333399 ' , // Standard Colour #55
104
+ 56 => 'FF333333 ' , // Standard Colour #56
105
+ ];
54
106
55
107
/**
56
108
* ARGB - Alpha RGB.
@@ -335,75 +387,19 @@ public static function changeBrightness($hexColourValue, $adjustPercentage)
335
387
*
336
388
* @return Color
337
389
*/
338
- public static function indexedColor ($ colorIndex , $ background = false ): self
390
+ public static function indexedColor ($ colorIndex , $ background = false , ? array $ palette = null ): self
339
391
{
340
392
// Clean parameter
341
393
$ colorIndex = (int ) $ colorIndex ;
342
394
343
- // Indexed colors
344
- if (self ::$ indexedColors === null ) {
345
- self ::$ indexedColors = [
346
- 1 => 'FF000000 ' , // System Colour #1 - Black
347
- 2 => 'FFFFFFFF ' , // System Colour #2 - White
348
- 3 => 'FFFF0000 ' , // System Colour #3 - Red
349
- 4 => 'FF00FF00 ' , // System Colour #4 - Green
350
- 5 => 'FF0000FF ' , // System Colour #5 - Blue
351
- 6 => 'FFFFFF00 ' , // System Colour #6 - Yellow
352
- 7 => 'FFFF00FF ' , // System Colour #7- Magenta
353
- 8 => 'FF00FFFF ' , // System Colour #8- Cyan
354
- 9 => 'FF800000 ' , // Standard Colour #9
355
- 10 => 'FF008000 ' , // Standard Colour #10
356
- 11 => 'FF000080 ' , // Standard Colour #11
357
- 12 => 'FF808000 ' , // Standard Colour #12
358
- 13 => 'FF800080 ' , // Standard Colour #13
359
- 14 => 'FF008080 ' , // Standard Colour #14
360
- 15 => 'FFC0C0C0 ' , // Standard Colour #15
361
- 16 => 'FF808080 ' , // Standard Colour #16
362
- 17 => 'FF9999FF ' , // Chart Fill Colour #17
363
- 18 => 'FF993366 ' , // Chart Fill Colour #18
364
- 19 => 'FFFFFFCC ' , // Chart Fill Colour #19
365
- 20 => 'FFCCFFFF ' , // Chart Fill Colour #20
366
- 21 => 'FF660066 ' , // Chart Fill Colour #21
367
- 22 => 'FFFF8080 ' , // Chart Fill Colour #22
368
- 23 => 'FF0066CC ' , // Chart Fill Colour #23
369
- 24 => 'FFCCCCFF ' , // Chart Fill Colour #24
370
- 25 => 'FF000080 ' , // Chart Line Colour #25
371
- 26 => 'FFFF00FF ' , // Chart Line Colour #26
372
- 27 => 'FFFFFF00 ' , // Chart Line Colour #27
373
- 28 => 'FF00FFFF ' , // Chart Line Colour #28
374
- 29 => 'FF800080 ' , // Chart Line Colour #29
375
- 30 => 'FF800000 ' , // Chart Line Colour #30
376
- 31 => 'FF008080 ' , // Chart Line Colour #31
377
- 32 => 'FF0000FF ' , // Chart Line Colour #32
378
- 33 => 'FF00CCFF ' , // Standard Colour #33
379
- 34 => 'FFCCFFFF ' , // Standard Colour #34
380
- 35 => 'FFCCFFCC ' , // Standard Colour #35
381
- 36 => 'FFFFFF99 ' , // Standard Colour #36
382
- 37 => 'FF99CCFF ' , // Standard Colour #37
383
- 38 => 'FFFF99CC ' , // Standard Colour #38
384
- 39 => 'FFCC99FF ' , // Standard Colour #39
385
- 40 => 'FFFFCC99 ' , // Standard Colour #40
386
- 41 => 'FF3366FF ' , // Standard Colour #41
387
- 42 => 'FF33CCCC ' , // Standard Colour #42
388
- 43 => 'FF99CC00 ' , // Standard Colour #43
389
- 44 => 'FFFFCC00 ' , // Standard Colour #44
390
- 45 => 'FFFF9900 ' , // Standard Colour #45
391
- 46 => 'FFFF6600 ' , // Standard Colour #46
392
- 47 => 'FF666699 ' , // Standard Colour #47
393
- 48 => 'FF969696 ' , // Standard Colour #48
394
- 49 => 'FF003366 ' , // Standard Colour #49
395
- 50 => 'FF339966 ' , // Standard Colour #50
396
- 51 => 'FF003300 ' , // Standard Colour #51
397
- 52 => 'FF333300 ' , // Standard Colour #52
398
- 53 => 'FF993300 ' , // Standard Colour #53
399
- 54 => 'FF993366 ' , // Standard Colour #54
400
- 55 => 'FF333399 ' , // Standard Colour #55
401
- 56 => 'FF333333 ' , // Standard Colour #56
402
- ];
403
- }
404
-
405
- if (isset (self ::$ indexedColors [$ colorIndex ])) {
406
- return new self (self ::$ indexedColors [$ colorIndex ]);
395
+ if (empty ($ palette )) {
396
+ if (isset (self ::INDEXED_COLORS [$ colorIndex ])) {
397
+ return new self (self ::INDEXED_COLORS [$ colorIndex ]);
398
+ }
399
+ } else {
400
+ if (isset ($ palette [$ colorIndex ])) {
401
+ return new self ($ palette [$ colorIndex ]);
402
+ }
407
403
}
408
404
409
405
return ($ background ) ? new self (self ::COLOR_WHITE ) : new self (self ::COLOR_BLACK );
0 commit comments