HuasoFoundries /
jpgraph
| 1 | <?php |
||
| 2 | |||
| 3 | /** |
||
| 4 | * JPGraph v4.0.3 |
||
| 5 | */ |
||
| 6 | |||
| 7 | namespace Amenadiel\JpGraph\Util; |
||
| 8 | |||
| 9 | /** |
||
| 10 | * File: JPGRAPH_RGB.INC.PHP |
||
| 11 | * // Description: Class to handle RGb color space specification and |
||
| 12 | * // named colors |
||
| 13 | * // Created: 2001-01-08 (Refactored to separate file 2008-08-01) |
||
| 14 | * // Ver: $Id: jpgraph_rgb.inc.php 1893 2009-10-02 23:15:25Z ljp $ |
||
| 15 | * // |
||
| 16 | * // Copyright (c) Asial Corporation. All rights reserved. |
||
| 17 | */ |
||
| 18 | |||
| 19 | /** |
||
| 20 | * @class RGB |
||
| 21 | * // Description: Color definitions as RGB triples |
||
| 22 | */ |
||
| 23 | class RGB |
||
| 24 | { |
||
| 25 | public $rgb_table; |
||
| 26 | public $img; |
||
| 27 | |||
| 28 | public function __construct($aImg = null) |
||
| 29 | { |
||
| 30 | $this->img = $aImg; |
||
| 31 | |||
| 32 | // Conversion array between color names and RGB |
||
| 33 | $this->rgb_table = [ |
||
| 34 | 'aqua' => [0, 255, 255], |
||
| 35 | 'lime' => [0, 255, 0], |
||
| 36 | 'teal' => [0, 128, 128], |
||
| 37 | 'whitesmoke' => [245, 245, 245], |
||
| 38 | 'gainsboro' => [220, 220, 220], |
||
| 39 | 'oldlace' => [253, 245, 230], |
||
| 40 | 'linen' => [250, 240, 230], |
||
| 41 | 'antiquewhite' => [250, 235, 215], |
||
| 42 | 'papayawhip' => [255, 239, 213], |
||
| 43 | 'blanchedalmond' => [255, 235, 205], |
||
| 44 | 'bisque' => [255, 228, 196], |
||
| 45 | 'peachpuff' => [255, 218, 185], |
||
| 46 | 'navajowhite' => [255, 222, 173], |
||
| 47 | 'moccasin' => [255, 228, 181], |
||
| 48 | 'cornsilk' => [255, 248, 220], |
||
| 49 | 'ivory' => [255, 255, 240], |
||
| 50 | 'lemonchiffon' => [255, 250, 205], |
||
| 51 | 'seashell' => [255, 245, 238], |
||
| 52 | 'mintcream' => [245, 255, 250], |
||
| 53 | 'azure' => [240, 255, 255], |
||
| 54 | 'aliceblue' => [240, 248, 255], |
||
| 55 | 'lavender' => [230, 230, 250], |
||
| 56 | 'lavenderblush' => [255, 240, 245], |
||
| 57 | 'mistyrose' => [255, 228, 225], |
||
| 58 | 'white' => [255, 255, 255], |
||
| 59 | 'black' => [0, 0, 0], |
||
| 60 | 'darkslategray' => [47, 79, 79], |
||
| 61 | 'dimgray' => [105, 105, 105], |
||
| 62 | 'slategray' => [112, 128, 144], |
||
| 63 | 'lightslategray' => [119, 136, 153], |
||
| 64 | 'gray' => [190, 190, 190], |
||
| 65 | 'lightgray' => [211, 211, 211], |
||
| 66 | 'midnightblue' => [25, 25, 112], |
||
| 67 | 'navy' => [0, 0, 128], |
||
| 68 | 'indigo' => [75, 0, 130], |
||
| 69 | 'electricindigo' => [102, 0, 255], |
||
| 70 | 'deepindigo' => [138, 43, 226], |
||
| 71 | 'pigmentindigo' => [75, 0, 130], |
||
| 72 | 'indigodye' => [0, 65, 106], |
||
| 73 | 'cornflowerblue' => [100, 149, 237], |
||
| 74 | 'darkslateblue' => [72, 61, 139], |
||
| 75 | 'slateblue' => [106, 90, 205], |
||
| 76 | 'mediumslateblue' => [123, 104, 238], |
||
| 77 | 'lightslateblue' => [132, 112, 255], |
||
| 78 | 'mediumblue' => [0, 0, 205], |
||
| 79 | 'royalblue' => [65, 105, 225], |
||
| 80 | 'blue' => [0, 0, 255], |
||
| 81 | 'dodgerblue' => [30, 144, 255], |
||
| 82 | 'deepskyblue' => [0, 191, 255], |
||
| 83 | 'skyblue' => [135, 206, 235], |
||
| 84 | 'lightskyblue' => [135, 206, 250], |
||
| 85 | 'steelblue' => [70, 130, 180], |
||
| 86 | 'lightred' => [211, 167, 168], |
||
| 87 | 'lightsteelblue' => [176, 196, 222], |
||
| 88 | 'lightblue' => [173, 216, 230], |
||
| 89 | 'powderblue' => [176, 224, 230], |
||
| 90 | 'paleturquoise' => [175, 238, 238], |
||
| 91 | 'darkturquoise' => [0, 206, 209], |
||
| 92 | 'mediumturquoise' => [72, 209, 204], |
||
| 93 | 'turquoise' => [64, 224, 208], |
||
| 94 | 'cyan' => [0, 255, 255], |
||
| 95 | 'lightcyan' => [224, 255, 255], |
||
| 96 | 'cadetblue' => [95, 158, 160], |
||
| 97 | 'mediumaquamarine' => [102, 205, 170], |
||
| 98 | 'aquamarine' => [127, 255, 212], |
||
| 99 | 'darkgreen' => [0, 100, 0], |
||
| 100 | 'darkolivegreen' => [85, 107, 47], |
||
| 101 | 'darkseagreen' => [143, 188, 143], |
||
| 102 | 'seagreen' => [46, 139, 87], |
||
| 103 | 'mediumseagreen' => [60, 179, 113], |
||
| 104 | 'lightseagreen' => [32, 178, 170], |
||
| 105 | 'palegreen' => [152, 251, 152], |
||
| 106 | 'springgreen' => [0, 255, 127], |
||
| 107 | 'lawngreen' => [124, 252, 0], |
||
| 108 | 'green' => [0, 255, 0], |
||
| 109 | 'chartreuse' => [127, 255, 0], |
||
| 110 | 'mediumspringgreen' => [0, 250, 154], |
||
| 111 | 'greenyellow' => [173, 255, 47], |
||
| 112 | 'limegreen' => [50, 205, 50], |
||
| 113 | 'yellowgreen' => [154, 205, 50], |
||
| 114 | 'forestgreen' => [34, 139, 34], |
||
| 115 | 'olivedrab' => [107, 142, 35], |
||
| 116 | 'darkkhaki' => [189, 183, 107], |
||
| 117 | 'khaki' => [240, 230, 140], |
||
| 118 | 'palegoldenrod' => [238, 232, 170], |
||
| 119 | 'lightgoldenrodyellow' => [250, 250, 210], |
||
| 120 | 'lightyellow' => [255, 255, 200], |
||
| 121 | 'yellow' => [255, 255, 0], |
||
| 122 | 'gold' => [255, 215, 0], |
||
| 123 | 'lightgoldenrod' => [238, 221, 130], |
||
| 124 | 'goldenrod' => [218, 165, 32], |
||
| 125 | 'darkgoldenrod' => [184, 134, 11], |
||
| 126 | 'rosybrown' => [188, 143, 143], |
||
| 127 | 'indianred' => [205, 92, 92], |
||
| 128 | 'saddlebrown' => [139, 69, 19], |
||
| 129 | 'sienna' => [160, 82, 45], |
||
| 130 | 'peru' => [205, 133, 63], |
||
| 131 | 'burlywood' => [222, 184, 135], |
||
| 132 | 'beige' => [245, 245, 220], |
||
| 133 | 'wheat' => [245, 222, 179], |
||
| 134 | 'sandybrown' => [244, 164, 96], |
||
| 135 | 'tan' => [210, 180, 140], |
||
| 136 | 'chocolate' => [210, 105, 30], |
||
| 137 | 'firebrick' => [178, 34, 34], |
||
| 138 | 'brown' => [165, 42, 42], |
||
| 139 | 'darksalmon' => [233, 150, 122], |
||
| 140 | 'salmon' => [250, 128, 114], |
||
| 141 | 'lightsalmon' => [255, 160, 122], |
||
| 142 | 'orange' => [255, 165, 0], |
||
| 143 | 'darkorange' => [255, 140, 0], |
||
| 144 | 'coral' => [255, 127, 80], |
||
| 145 | 'lightcoral' => [240, 128, 128], |
||
| 146 | 'tomato' => [255, 99, 71], |
||
| 147 | 'orangered' => [255, 69, 0], |
||
| 148 | 'red' => [255, 0, 0], |
||
| 149 | 'hotpink' => [255, 105, 180], |
||
| 150 | 'deeppink' => [255, 20, 147], |
||
| 151 | 'pink' => [255, 192, 203], |
||
| 152 | 'lightpink' => [255, 182, 193], |
||
| 153 | 'palevioletred' => [219, 112, 147], |
||
| 154 | 'maroon' => [176, 48, 96], |
||
| 155 | 'mediumvioletred' => [199, 21, 133], |
||
| 156 | 'violetred' => [208, 32, 144], |
||
| 157 | 'magenta' => [255, 0, 255], |
||
| 158 | 'violet' => [238, 130, 238], |
||
| 159 | 'plum' => [221, 160, 221], |
||
| 160 | 'orchid' => [218, 112, 214], |
||
| 161 | 'mediumorchid' => [186, 85, 211], |
||
| 162 | 'darkorchid' => [153, 50, 204], |
||
| 163 | 'darkviolet' => [148, 0, 211], |
||
| 164 | 'blueviolet' => [138, 43, 226], |
||
| 165 | 'purple' => [160, 32, 240], |
||
| 166 | 'mediumpurple' => [147, 112, 219], |
||
| 167 | 'thistle' => [216, 191, 216], |
||
| 168 | 'snow1' => [255, 250, 250], |
||
| 169 | 'snow2' => [238, 233, 233], |
||
| 170 | 'snow3' => [205, 201, 201], |
||
| 171 | 'snow4' => [139, 137, 137], |
||
| 172 | 'seashell1' => [255, 245, 238], |
||
| 173 | 'seashell2' => [238, 229, 222], |
||
| 174 | 'seashell3' => [205, 197, 191], |
||
| 175 | 'seashell4' => [139, 134, 130], |
||
| 176 | 'AntiqueWhite1' => [255, 239, 219], |
||
| 177 | 'AntiqueWhite2' => [238, 223, 204], |
||
| 178 | 'AntiqueWhite3' => [205, 192, 176], |
||
| 179 | 'AntiqueWhite4' => [139, 131, 120], |
||
| 180 | 'bisque1' => [255, 228, 196], |
||
| 181 | 'bisque2' => [238, 213, 183], |
||
| 182 | 'bisque3' => [205, 183, 158], |
||
| 183 | 'bisque4' => [139, 125, 107], |
||
| 184 | 'peachPuff1' => [255, 218, 185], |
||
| 185 | 'peachpuff2' => [238, 203, 173], |
||
| 186 | 'peachpuff3' => [205, 175, 149], |
||
| 187 | 'peachpuff4' => [139, 119, 101], |
||
| 188 | 'navajowhite1' => [255, 222, 173], |
||
| 189 | 'navajowhite2' => [238, 207, 161], |
||
| 190 | 'navajowhite3' => [205, 179, 139], |
||
| 191 | 'navajowhite4' => [139, 121, 94], |
||
| 192 | 'lemonchiffon1' => [255, 250, 205], |
||
| 193 | 'lemonchiffon2' => [238, 233, 191], |
||
| 194 | 'lemonchiffon3' => [205, 201, 165], |
||
| 195 | 'lemonchiffon4' => [139, 137, 112], |
||
| 196 | 'ivory1' => [255, 255, 240], |
||
| 197 | 'ivory2' => [238, 238, 224], |
||
| 198 | 'ivory3' => [205, 205, 193], |
||
| 199 | 'ivory4' => [139, 139, 131], |
||
| 200 | 'honeydew' => [193, 205, 193], |
||
| 201 | 'lavenderblush1' => [255, 240, 245], |
||
| 202 | 'lavenderblush2' => [238, 224, 229], |
||
| 203 | 'lavenderblush3' => [205, 193, 197], |
||
| 204 | 'lavenderblush4' => [139, 131, 134], |
||
| 205 | 'mistyrose1' => [255, 228, 225], |
||
| 206 | 'mistyrose2' => [238, 213, 210], |
||
| 207 | 'mistyrose3' => [205, 183, 181], |
||
| 208 | 'mistyrose4' => [139, 125, 123], |
||
| 209 | 'azure1' => [240, 255, 255], |
||
| 210 | 'azure2' => [224, 238, 238], |
||
| 211 | 'azure3' => [193, 205, 205], |
||
| 212 | 'azure4' => [131, 139, 139], |
||
| 213 | 'slateblue1' => [131, 111, 255], |
||
| 214 | 'slateblue2' => [122, 103, 238], |
||
| 215 | 'slateblue3' => [105, 89, 205], |
||
| 216 | 'slateblue4' => [71, 60, 139], |
||
| 217 | 'royalblue1' => [72, 118, 255], |
||
| 218 | 'royalblue2' => [67, 110, 238], |
||
| 219 | 'royalblue3' => [58, 95, 205], |
||
| 220 | 'royalblue4' => [39, 64, 139], |
||
| 221 | 'dodgerblue1' => [30, 144, 255], |
||
| 222 | 'dodgerblue2' => [28, 134, 238], |
||
| 223 | 'dodgerblue3' => [24, 116, 205], |
||
| 224 | 'dodgerblue4' => [16, 78, 139], |
||
| 225 | 'steelblue1' => [99, 184, 255], |
||
| 226 | 'steelblue2' => [92, 172, 238], |
||
| 227 | 'steelblue3' => [79, 148, 205], |
||
| 228 | 'steelblue4' => [54, 100, 139], |
||
| 229 | 'deepskyblue1' => [0, 191, 255], |
||
| 230 | 'deepskyblue2' => [0, 178, 238], |
||
| 231 | 'deepskyblue3' => [0, 154, 205], |
||
| 232 | 'deepskyblue4' => [0, 104, 139], |
||
| 233 | 'skyblue1' => [135, 206, 255], |
||
| 234 | 'skyblue2' => [126, 192, 238], |
||
| 235 | 'skyblue3' => [108, 166, 205], |
||
| 236 | 'skyblue4' => [74, 112, 139], |
||
| 237 | 'lightskyblue1' => [176, 226, 255], |
||
| 238 | 'lightskyblue2' => [164, 211, 238], |
||
| 239 | 'lightskyblue3' => [141, 182, 205], |
||
| 240 | 'lightskyblue4' => [96, 123, 139], |
||
| 241 | 'slategray1' => [198, 226, 255], |
||
| 242 | 'slategray2' => [185, 211, 238], |
||
| 243 | 'slategray3' => [159, 182, 205], |
||
| 244 | 'slategray4' => [108, 123, 139], |
||
| 245 | 'lightsteelblue1' => [202, 225, 255], |
||
| 246 | 'lightsteelblue2' => [188, 210, 238], |
||
| 247 | 'lightsteelblue3' => [162, 181, 205], |
||
| 248 | 'lightsteelblue4' => [110, 123, 139], |
||
| 249 | 'lightblue1' => [191, 239, 255], |
||
| 250 | 'lightblue2' => [178, 223, 238], |
||
| 251 | 'lightblue3' => [154, 192, 205], |
||
| 252 | 'lightblue4' => [104, 131, 139], |
||
| 253 | 'lightcyan1' => [224, 255, 255], |
||
| 254 | 'lightcyan2' => [209, 238, 238], |
||
| 255 | 'lightcyan3' => [180, 205, 205], |
||
| 256 | 'lightcyan4' => [122, 139, 139], |
||
| 257 | 'paleturquoise1' => [187, 255, 255], |
||
| 258 | 'paleturquoise2' => [174, 238, 238], |
||
| 259 | 'paleturquoise3' => [150, 205, 205], |
||
| 260 | 'paleturquoise4' => [102, 139, 139], |
||
| 261 | 'cadetblue1' => [152, 245, 255], |
||
| 262 | 'cadetblue2' => [142, 229, 238], |
||
| 263 | 'cadetblue3' => [122, 197, 205], |
||
| 264 | 'cadetblue4' => [83, 134, 139], |
||
| 265 | 'turquoise1' => [0, 245, 255], |
||
| 266 | 'turquoise2' => [0, 229, 238], |
||
| 267 | 'turquoise3' => [0, 197, 205], |
||
| 268 | 'turquoise4' => [0, 134, 139], |
||
| 269 | 'cyan1' => [0, 255, 255], |
||
| 270 | 'cyan2' => [0, 238, 238], |
||
| 271 | 'cyan3' => [0, 205, 205], |
||
| 272 | 'cyan4' => [0, 139, 139], |
||
| 273 | 'darkslategray1' => [151, 255, 255], |
||
| 274 | 'darkslategray2' => [141, 238, 238], |
||
| 275 | 'darkslategray3' => [121, 205, 205], |
||
| 276 | 'darkslategray4' => [82, 139, 139], |
||
| 277 | 'aquamarine1' => [127, 255, 212], |
||
| 278 | 'aquamarine2' => [118, 238, 198], |
||
| 279 | 'aquamarine3' => [102, 205, 170], |
||
| 280 | 'aquamarine4' => [69, 139, 116], |
||
| 281 | 'darkseagreen1' => [193, 255, 193], |
||
| 282 | 'darkseagreen2' => [180, 238, 180], |
||
| 283 | 'darkseagreen3' => [155, 205, 155], |
||
| 284 | 'darkseagreen4' => [105, 139, 105], |
||
| 285 | 'seagreen1' => [84, 255, 159], |
||
| 286 | 'seagreen2' => [78, 238, 148], |
||
| 287 | 'seagreen3' => [67, 205, 128], |
||
| 288 | 'seagreen4' => [46, 139, 87], |
||
| 289 | 'palegreen1' => [154, 255, 154], |
||
| 290 | 'palegreen2' => [144, 238, 144], |
||
| 291 | 'palegreen3' => [124, 205, 124], |
||
| 292 | 'palegreen4' => [84, 139, 84], |
||
| 293 | 'springgreen1' => [0, 255, 127], |
||
| 294 | 'springgreen2' => [0, 238, 118], |
||
| 295 | 'springgreen3' => [0, 205, 102], |
||
| 296 | 'springgreen4' => [0, 139, 69], |
||
| 297 | 'chartreuse1' => [127, 255, 0], |
||
| 298 | 'chartreuse2' => [118, 238, 0], |
||
| 299 | 'chartreuse3' => [102, 205, 0], |
||
| 300 | 'chartreuse4' => [69, 139, 0], |
||
| 301 | 'olivedrab1' => [192, 255, 62], |
||
| 302 | 'olivedrab2' => [179, 238, 58], |
||
| 303 | 'olivedrab3' => [154, 205, 50], |
||
| 304 | 'olivedrab4' => [105, 139, 34], |
||
| 305 | 'darkolivegreen1' => [202, 255, 112], |
||
| 306 | 'darkolivegreen2' => [188, 238, 104], |
||
| 307 | 'darkolivegreen3' => [162, 205, 90], |
||
| 308 | 'darkolivegreen4' => [110, 139, 61], |
||
| 309 | 'khaki1' => [255, 246, 143], |
||
| 310 | 'khaki2' => [238, 230, 133], |
||
| 311 | 'khaki3' => [205, 198, 115], |
||
| 312 | 'khaki4' => [139, 134, 78], |
||
| 313 | 'lightgoldenrod1' => [255, 236, 139], |
||
| 314 | 'lightgoldenrod2' => [238, 220, 130], |
||
| 315 | 'lightgoldenrod3' => [205, 190, 112], |
||
| 316 | 'lightgoldenrod4' => [139, 129, 76], |
||
| 317 | 'yellow1' => [255, 255, 0], |
||
| 318 | 'yellow2' => [238, 238, 0], |
||
| 319 | 'yellow3' => [205, 205, 0], |
||
| 320 | 'yellow4' => [139, 139, 0], |
||
| 321 | 'gold1' => [255, 215, 0], |
||
| 322 | 'gold2' => [238, 201, 0], |
||
| 323 | 'gold3' => [205, 173, 0], |
||
| 324 | 'gold4' => [139, 117, 0], |
||
| 325 | 'goldenrod1' => [255, 193, 37], |
||
| 326 | 'goldenrod2' => [238, 180, 34], |
||
| 327 | 'goldenrod3' => [205, 155, 29], |
||
| 328 | 'goldenrod4' => [139, 105, 20], |
||
| 329 | 'darkgoldenrod1' => [255, 185, 15], |
||
| 330 | 'darkgoldenrod2' => [238, 173, 14], |
||
| 331 | 'darkgoldenrod3' => [205, 149, 12], |
||
| 332 | 'darkgoldenrod4' => [139, 101, 8], |
||
| 333 | 'rosybrown1' => [255, 193, 193], |
||
| 334 | 'rosybrown2' => [238, 180, 180], |
||
| 335 | 'rosybrown3' => [205, 155, 155], |
||
| 336 | 'rosybrown4' => [139, 105, 105], |
||
| 337 | 'indianred1' => [255, 106, 106], |
||
| 338 | 'indianred2' => [238, 99, 99], |
||
| 339 | 'indianred3' => [205, 85, 85], |
||
| 340 | 'indianred4' => [139, 58, 58], |
||
| 341 | 'sienna1' => [255, 130, 71], |
||
| 342 | 'sienna2' => [238, 121, 66], |
||
| 343 | 'sienna3' => [205, 104, 57], |
||
| 344 | 'sienna4' => [139, 71, 38], |
||
| 345 | 'burlywood1' => [255, 211, 155], |
||
| 346 | 'burlywood2' => [238, 197, 145], |
||
| 347 | 'burlywood3' => [205, 170, 125], |
||
| 348 | 'burlywood4' => [139, 115, 85], |
||
| 349 | 'wheat1' => [255, 231, 186], |
||
| 350 | 'wheat2' => [238, 216, 174], |
||
| 351 | 'wheat3' => [205, 186, 150], |
||
| 352 | 'wheat4' => [139, 126, 102], |
||
| 353 | 'tan1' => [255, 165, 79], |
||
| 354 | 'tan2' => [238, 154, 73], |
||
| 355 | 'tan3' => [205, 133, 63], |
||
| 356 | 'tan4' => [139, 90, 43], |
||
| 357 | 'chocolate1' => [255, 127, 36], |
||
| 358 | 'chocolate2' => [238, 118, 33], |
||
| 359 | 'chocolate3' => [205, 102, 29], |
||
| 360 | 'chocolate4' => [139, 69, 19], |
||
| 361 | 'firebrick1' => [255, 48, 48], |
||
| 362 | 'firebrick2' => [238, 44, 44], |
||
| 363 | 'firebrick3' => [205, 38, 38], |
||
| 364 | 'firebrick4' => [139, 26, 26], |
||
| 365 | 'brown1' => [255, 64, 64], |
||
| 366 | 'brown2' => [238, 59, 59], |
||
| 367 | 'brown3' => [205, 51, 51], |
||
| 368 | 'brown4' => [139, 35, 35], |
||
| 369 | 'salmon1' => [255, 140, 105], |
||
| 370 | 'salmon2' => [238, 130, 98], |
||
| 371 | 'salmon3' => [205, 112, 84], |
||
| 372 | 'salmon4' => [139, 76, 57], |
||
| 373 | 'lightsalmon1' => [255, 160, 122], |
||
| 374 | 'lightsalmon2' => [238, 149, 114], |
||
| 375 | 'lightsalmon3' => [205, 129, 98], |
||
| 376 | 'lightsalmon4' => [139, 87, 66], |
||
| 377 | 'orange1' => [255, 165, 0], |
||
| 378 | 'orange2' => [238, 154, 0], |
||
| 379 | 'orange3' => [205, 133, 0], |
||
| 380 | 'orange4' => [139, 90, 0], |
||
| 381 | 'darkorange1' => [255, 127, 0], |
||
| 382 | 'darkorange2' => [238, 118, 0], |
||
| 383 | 'darkorange3' => [205, 102, 0], |
||
| 384 | 'darkorange4' => [139, 69, 0], |
||
| 385 | 'coral1' => [255, 114, 86], |
||
| 386 | 'coral2' => [238, 106, 80], |
||
| 387 | 'coral3' => [205, 91, 69], |
||
| 388 | 'coral4' => [139, 62, 47], |
||
| 389 | 'tomato1' => [255, 99, 71], |
||
| 390 | 'tomato2' => [238, 92, 66], |
||
| 391 | 'tomato3' => [205, 79, 57], |
||
| 392 | 'tomato4' => [139, 54, 38], |
||
| 393 | 'orangered1' => [255, 69, 0], |
||
| 394 | 'orangered2' => [238, 64, 0], |
||
| 395 | 'orangered3' => [205, 55, 0], |
||
| 396 | 'orangered4' => [139, 37, 0], |
||
| 397 | 'deeppink1' => [255, 20, 147], |
||
| 398 | 'deeppink2' => [238, 18, 137], |
||
| 399 | 'deeppink3' => [205, 16, 118], |
||
| 400 | 'deeppink4' => [139, 10, 80], |
||
| 401 | 'hotpink1' => [255, 110, 180], |
||
| 402 | 'hotpink2' => [238, 106, 167], |
||
| 403 | 'hotpink3' => [205, 96, 144], |
||
| 404 | 'hotpink4' => [139, 58, 98], |
||
| 405 | 'pink1' => [255, 181, 197], |
||
| 406 | 'pink2' => [238, 169, 184], |
||
| 407 | 'pink3' => [205, 145, 158], |
||
| 408 | 'pink4' => [139, 99, 108], |
||
| 409 | 'lightpink1' => [255, 174, 185], |
||
| 410 | 'lightpink2' => [238, 162, 173], |
||
| 411 | 'lightpink3' => [205, 140, 149], |
||
| 412 | 'lightpink4' => [139, 95, 101], |
||
| 413 | 'palevioletred1' => [255, 130, 171], |
||
| 414 | 'palevioletred2' => [238, 121, 159], |
||
| 415 | 'palevioletred3' => [205, 104, 137], |
||
| 416 | 'palevioletred4' => [139, 71, 93], |
||
| 417 | 'maroon1' => [255, 52, 179], |
||
| 418 | 'maroon2' => [238, 48, 167], |
||
| 419 | 'maroon3' => [205, 41, 144], |
||
| 420 | 'maroon4' => [139, 28, 98], |
||
| 421 | 'violetred1' => [255, 62, 150], |
||
| 422 | 'violetred2' => [238, 58, 140], |
||
| 423 | 'violetred3' => [205, 50, 120], |
||
| 424 | 'violetred4' => [139, 34, 82], |
||
| 425 | 'magenta1' => [255, 0, 255], |
||
| 426 | 'magenta2' => [238, 0, 238], |
||
| 427 | 'magenta3' => [205, 0, 205], |
||
| 428 | 'magenta4' => [139, 0, 139], |
||
| 429 | 'mediumred' => [140, 34, 34], |
||
| 430 | 'orchid1' => [255, 131, 250], |
||
| 431 | 'orchid2' => [238, 122, 233], |
||
| 432 | 'orchid3' => [205, 105, 201], |
||
| 433 | 'orchid4' => [139, 71, 137], |
||
| 434 | 'plum1' => [255, 187, 255], |
||
| 435 | 'plum2' => [238, 174, 238], |
||
| 436 | 'plum3' => [205, 150, 205], |
||
| 437 | 'plum4' => [139, 102, 139], |
||
| 438 | 'mediumorchid1' => [224, 102, 255], |
||
| 439 | 'mediumorchid2' => [209, 95, 238], |
||
| 440 | 'mediumorchid3' => [180, 82, 205], |
||
| 441 | 'mediumorchid4' => [122, 55, 139], |
||
| 442 | 'darkorchid1' => [191, 62, 255], |
||
| 443 | 'darkorchid2' => [178, 58, 238], |
||
| 444 | 'darkorchid3' => [154, 50, 205], |
||
| 445 | 'darkorchid4' => [104, 34, 139], |
||
| 446 | 'purple1' => [155, 48, 255], |
||
| 447 | 'purple2' => [145, 44, 238], |
||
| 448 | 'purple3' => [125, 38, 205], |
||
| 449 | 'purple4' => [85, 26, 139], |
||
| 450 | 'mediumpurple1' => [171, 130, 255], |
||
| 451 | 'mediumpurple2' => [159, 121, 238], |
||
| 452 | 'mediumpurple3' => [137, 104, 205], |
||
| 453 | 'mediumpurple4' => [93, 71, 139], |
||
| 454 | 'thistle1' => [255, 225, 255], |
||
| 455 | 'thistle2' => [238, 210, 238], |
||
| 456 | 'thistle3' => [205, 181, 205], |
||
| 457 | 'thistle4' => [139, 123, 139], |
||
| 458 | 'gray1' => [10, 10, 10], |
||
| 459 | 'gray2' => [40, 40, 30], |
||
| 460 | 'gray3' => [70, 70, 70], |
||
| 461 | 'gray4' => [100, 100, 100], |
||
| 462 | 'gray5' => [130, 130, 130], |
||
| 463 | 'gray6' => [160, 160, 160], |
||
| 464 | 'gray7' => [190, 190, 190], |
||
| 465 | 'gray8' => [210, 210, 210], |
||
| 466 | 'gray9' => [240, 240, 240], |
||
| 467 | 'darkgray' => [100, 100, 100], |
||
| 468 | 'darkblue' => [0, 0, 139], |
||
| 469 | 'darkcyan' => [0, 139, 139], |
||
| 470 | 'darkmagenta' => [139, 0, 139], |
||
| 471 | 'darkred' => [139, 0, 0], |
||
| 472 | 'silver' => [192, 192, 192], |
||
| 473 | 'eggplant' => [144, 176, 168], |
||
| 474 | 'lightgreen' => [144, 238, 144], ]; |
||
| 475 | } |
||
| 476 | |||
| 477 | //================================== |
||
| 478 | // PUBLIC METHODS |
||
| 479 | // Colors can be specified as either |
||
| 480 | // 1. #xxxxxx HTML style |
||
| 481 | // 2. "colorname" as a named color |
||
| 482 | // 3. array(r,g,b) RGB triple |
||
| 483 | // This function translates this to a native RGB format and returns an |
||
| 484 | // RGB triple. |
||
| 485 | |||
| 486 | public function Color($aColor) |
||
| 487 | { |
||
| 488 | if (is_string($aColor)) { |
||
| 489 | $matches = []; |
||
| 490 | // this regex will parse a color string and fill the $matches array as such: |
||
| 491 | // 0: the full match if any |
||
| 492 | // 1: a hex string preceded by a hash, can be 3 characters (#fff) or 6 (#ffffff) (4 or 5 also accepted but...) |
||
| 493 | // 2,3,4: r,g,b values in hex if the first character of the string is # |
||
| 494 | // 5: all alpha-numeric characters at the beginning of the string if string does not start with # |
||
| 495 | // 6: alpha value prefixed by @ if supplied |
||
| 496 | // 7: alpha value with @ stripped |
||
| 497 | // 8: adjust value prefixed with : if supplied |
||
| 498 | // 9: adjust value with : stripped |
||
| 499 | $regex = '/(#([0-9a-fA-F]{1,2})([0-9a-fA-F]{1,2})([0-9a-fA-F]{1,2}))?([\w]+)?(@([\d\.,]+))?(:([\d\.,]+))?/'; |
||
| 500 | if (!preg_match($regex, $aColor, $matches)) { |
||
| 501 | JpGraphError::RaiseL(25078, $aColor); //(" Unknown color: $aColor"); |
||
| 502 | } |
||
| 503 | if (empty($matches[5])) { |
||
| 504 | $r = strlen($matches[2]) == 1 ? $matches[2] . $matches[2] : $matches[2]; |
||
| 505 | $g = strlen($matches[3]) == 1 ? $matches[3] . $matches[3] : $matches[3]; |
||
| 506 | $b = strlen($matches[4]) == 1 ? $matches[4] . $matches[4] : $matches[4]; |
||
| 507 | $r = hexdec($r); |
||
| 508 | $g = hexdec($g); |
||
| 509 | $b = hexdec($b); |
||
| 510 | } else { |
||
| 511 | if (!isset($this->rgb_table[$matches[5]])) { |
||
| 512 | JpGraphError::RaiseL(25078, $aColor); //(" Unknown color: $aColor"); |
||
| 513 | } |
||
| 514 | $r = $this->rgb_table[$matches[5]][0]; |
||
| 515 | $g = $this->rgb_table[$matches[5]][1]; |
||
| 516 | $b = $this->rgb_table[$matches[5]][2]; |
||
| 517 | } |
||
| 518 | $alpha = isset($matches[7]) ? str_replace(',', '.', $matches[7]) : 0; |
||
| 519 | $adj = isset($matches[9]) ? str_replace(',', '.', $matches[9]) : 1.0; |
||
| 520 | |||
| 521 | if ($adj < 0) { |
||
| 522 | JpGraphError::RaiseL(25077); //('Adjustment factor for color must be > 0'); |
||
| 523 | } |
||
| 524 | |||
| 525 | // Scale adj so that an adj=2 always |
||
| 526 | // makes the color 100% white (i.e. 255,255,255. |
||
| 527 | // and adj=1 neutral and adj=0 black. |
||
| 528 | if ($adj == 1) { |
||
| 529 | return [$r, $g, $b, $alpha]; |
||
| 530 | } |
||
| 531 | if ($adj > 1) { |
||
| 532 | $m = ($adj - 1.0) * (255 - min(255, min($r, min($g, $b)))); |
||
| 533 | |||
| 534 | return [min(255, $r + $m), min(255, $g + $m), min(255, $b + $m), $alpha]; |
||
| 535 | } |
||
| 536 | if ($adj < 1) { |
||
| 537 | $m = ($adj - 1.0) * max(255, max($r, max($g, $b))); |
||
| 538 | |||
| 539 | return [max(0, $r + $m), max(0, $g + $m), max(0, $b + $m), $alpha]; |
||
| 540 | } |
||
| 541 | } elseif (is_array($aColor)) { |
||
| 542 | if (!isset($aColor[3])) { |
||
| 543 | $aColor[3] = 0; |
||
| 544 | } |
||
| 545 | |||
| 546 | return $aColor; |
||
| 547 | } else { |
||
| 548 | JpGraphError::RaiseL(25079, $aColor, safe_count($aColor)); //(" Unknown color specification: $aColor , size=". safe_count($aColor)); |
||
| 549 | } |
||
| 550 | } |
||
| 551 | |||
| 552 | // Compare two colors |
||
| 553 | // return true if equal |
||
| 554 | public function Equal($aCol1, $aCol2) |
||
| 555 | { |
||
| 556 | $c1 = $this->Color($aCol1); |
||
| 557 | $c2 = $this->Color($aCol2); |
||
| 558 | |||
| 559 | return $c1[0] == $c2[0] && $c1[1] == $c2[1] && $c1[2] == $c2[2]; |
||
| 560 | } |
||
| 561 | |||
| 562 | // Allocate a new color in the current image |
||
| 563 | // Return new color index, -1 if no more colors could be allocated |
||
| 564 | public function Allocate($aColor, $aAlpha = 0.0) |
||
| 565 | { |
||
| 566 | list($r, $g, $b, $a) = $this->color($aColor); |
||
| 567 | // If alpha is specified in the color string then this |
||
| 568 | // takes precedence over the second argument |
||
| 569 | if ($a > 0) { |
||
| 570 | $aAlpha = $a; |
||
| 571 | } |
||
| 572 | if ($aAlpha < 0 || $aAlpha > 1) { |
||
| 573 | JpGraphError::RaiseL(25080); //('Alpha parameter for color must be between 0.0 and 1.0'); |
||
| 574 | } |
||
| 575 | |||
| 576 | return imagecolorresolvealpha($this->img, $r, $g, $b, round($aAlpha * 127)); |
||
|
0 ignored issues
–
show
Bug
introduced
by
Loading history...
|
|||
| 577 | } |
||
| 578 | |||
| 579 | // Try to convert an array with three valid numbers to the corresponding hex array |
||
| 580 | // This is currenly only used in processing the colors for barplots in order to be able |
||
| 581 | // to handle the case where the color might be specified as an array of colros as well. |
||
| 582 | // In that case we must be able to find out if an array of values should be interpretated as |
||
| 583 | // a single color (specifeid as an RGB triple) |
||
| 584 | public static function tryHexConversion($aColor) |
||
| 585 | { |
||
| 586 | if (is_array($aColor)) { |
||
| 587 | if (safe_count($aColor) == 3) { |
||
| 588 | if (is_numeric($aColor[0]) && is_numeric($aColor[1]) && is_numeric($aColor[2])) { |
||
| 589 | if (($aColor[0] >= 0 && $aColor[0] <= 255) && |
||
| 590 | ($aColor[1] >= 0 && $aColor[1] <= 255) && |
||
| 591 | ($aColor[2] >= 0 && $aColor[2] <= 255)) { |
||
| 592 | return sprintf('#%02x%02x%02x', $aColor[0], $aColor[1], $aColor[2]); |
||
| 593 | } |
||
| 594 | } |
||
| 595 | } |
||
| 596 | } |
||
| 597 | |||
| 598 | return $aColor; |
||
| 599 | } |
||
| 600 | |||
| 601 | // Return a RGB tripple corresponding to a position in the normal light spectrum |
||
| 602 | // The argumen values is in the range [0, 1] where a value of 0 correponds to blue and |
||
| 603 | // a value of 1 corresponds to red. Values in betwen is mapped to a linear interpolation |
||
| 604 | // of the constituting colors in the visible color spectra. |
||
| 605 | // The $aDynamicRange specified how much of the dynamic range we shold use |
||
| 606 | // a value of 1.0 give the full dyanmic range and a lower value give more dark |
||
| 607 | // colors. In the extreme of 0.0 then all colors will be black. |
||
| 608 | public static function GetSpectrum($aVal, $aDynamicRange = 1.0) |
||
| 609 | { |
||
| 610 | if ($aVal < 0 || $aVal > 1.0001) { |
||
| 611 | return [0, 0, 0]; // Invalid case - just return black |
||
| 612 | } |
||
| 613 | |||
| 614 | $sat = round(255 * $aDynamicRange); |
||
| 615 | $a = 0.25; |
||
| 616 | if ($aVal <= 0.25) { |
||
| 617 | return [0, round($sat * $aVal / $a), $sat]; |
||
| 618 | } |
||
| 619 | if ($aVal <= 0.5) { |
||
| 620 | return [0, $sat, round($sat - $sat * ($aVal - 0.25) / $a)]; |
||
| 621 | } |
||
| 622 | if ($aVal <= 0.75) { |
||
| 623 | return [round($sat * ($aVal - 0.5) / $a), $sat, 0]; |
||
| 624 | } |
||
| 625 | |||
| 626 | return [$sat, round($sat - $sat * ($aVal - 0.75) / $a), 0]; |
||
| 627 | } |
||
| 628 | } // @class |
||
| 629 |