280 lines
12 KiB
PHP
280 lines
12 KiB
PHP
<?php
|
|
/** DomFramework
|
|
* @package domframework
|
|
* @author Dominique Fournier <dominique@fournier38.fr>
|
|
* @license BSD
|
|
*/
|
|
|
|
namespace Domframework;
|
|
|
|
/** Convert the name of colors to RGB
|
|
*/
|
|
class color
|
|
{
|
|
/** The color list
|
|
* From http://www.rapidtables.com/web/color/index.htm
|
|
*/
|
|
public $colorList = array (
|
|
// Black
|
|
"black" => array (0, 0, 0),
|
|
"dimgrey" => array (105, 105, 105),
|
|
"grey" => array (128, 128, 128),
|
|
"darkgrey" => array (169, 169, 169),
|
|
"silver" => array (192, 192, 192),
|
|
|
|
// Blue
|
|
"aliceblue" => array (240, 248, 255),
|
|
"lavender" => array (230, 230, 250),
|
|
"powderblue" => array (176, 224, 230),
|
|
"lightblue" => array (173, 216, 230),
|
|
"lightskyblue" => array (135, 206, 250),
|
|
"skyblue" => array (135, 206, 235),
|
|
"deepskyblue" => array (0, 191, 255),
|
|
"lightsteelblue" => array (176, 196, 222),
|
|
"dodgerblue" => array (30, 144, 255),
|
|
"cornflowerblue" => array (100, 149, 237),
|
|
"steelblue" => array (70, 130, 180),
|
|
"cadetblue" => array (95, 158, 160),
|
|
"mediumslateblue" => array (123, 104, 238),
|
|
"slateblue" => array (106, 90, 205),
|
|
"darkslateblue" => array (72, 61, 139),
|
|
"royalblue" => array (65, 105, 225),
|
|
"blue" => array (0, 0, 255),
|
|
"mediumblue" => array (0, 0, 205),
|
|
"darkblue" => array (0, 0, 139),
|
|
"navy" => array (0, 0, 128),
|
|
"midnightblue" => array (25, 25, 112),
|
|
"blueviolet" => array (138, 43, 226),
|
|
"indigo" => array (75, 0, 130),
|
|
|
|
// Brown
|
|
"cornsilk" => array (255, 248, 220),
|
|
"blanchedalmond" => array (255, 235, 205),
|
|
"bisque" => array (255, 228, 196),
|
|
"navajowhite" => array (255, 222, 173),
|
|
"wheat" => array (245, 222, 179),
|
|
"burlywood" => array (222, 184, 135),
|
|
"tan" => array (210, 180, 140),
|
|
"rosybrown" => array (188, 143, 143),
|
|
"sandybrown" => array (244, 164, 96),
|
|
"goldenrod" => array (218, 165, 32),
|
|
"peru" => array (205, 133, 63),
|
|
"chocolate" => array (210, 105, 30),
|
|
"saddlebrown" => array (139, 69, 19),
|
|
"sienna" => array (160, 82, 45),
|
|
"brown" => array (165, 42, 42),
|
|
"maroon" => array (128, 0, 0),
|
|
|
|
// Cyan
|
|
"lightcyan" => array (224, 255, 255),
|
|
"cyan" => array (0, 255, 255),
|
|
"aqua" => array (0, 255, 255),
|
|
"aquamarine" => array (127, 255, 212),
|
|
"mediumaquamarine" => array (102, 205, 170),
|
|
"paleturquoise" => array (175, 238, 238),
|
|
"turquoise" => array (64, 224, 208),
|
|
"mediumturquoise" => array (72, 209, 204),
|
|
"darkturquoise" => array (0, 206, 209),
|
|
"lightseagreen" => array (32, 178, 170),
|
|
"cadetblue" => array (95, 158, 160),
|
|
"darkcyan" => array (0, 139, 139),
|
|
"teal" => array (0, 128, 128),
|
|
|
|
// Gold
|
|
"lightgoldenrodyellow" => array (250, 250, 210),
|
|
"palegoldenrod" => array (238, 232, 170),
|
|
"khaki" => array (240, 230, 140),
|
|
"goldenrod" => array (218, 165, 32),
|
|
"gold" => array (255, 215, 0),
|
|
"orange" => array (255, 165, 0),
|
|
"darkorange" => array (255, 140, 0),
|
|
"peru" => array (205, 133, 63),
|
|
"chocolate" => array (210, 105, 30),
|
|
"saddlebrown" => array (139, 69, 19),
|
|
"sienna" => array (160, 82, 45),
|
|
"goldenyellow" => array (255, 223, 0),
|
|
"metallicgold" => array (212, 175, 55),
|
|
"oldgold" => array (207, 181, 59),
|
|
"vegasgold" => array (197, 179, 88),
|
|
"palegold" => array (230, 190, 138),
|
|
"goldenbrown" => array (153, 101, 21),
|
|
|
|
// Green
|
|
"lawngreen" => array (124, 252, 0),
|
|
"chartreuse" => array (127, 255, 0),
|
|
"limegreen" => array (50, 205, 50),
|
|
"lime" => array (0, 255, 0),
|
|
"forestgreen" => array (34, 139, 34),
|
|
"green" => array (0, 128, 0),
|
|
"darkgreen" => array (0, 100, 0),
|
|
"greenyellow" => array (173, 255, 47),
|
|
"yellowgreen" => array (154, 205, 50),
|
|
"springgreen" => array (0, 255, 127),
|
|
"mediumspringgreen" => array (0, 250, 154),
|
|
"lightgreen" => array (144, 238, 144),
|
|
"palegreen" => array (152, 251, 152),
|
|
"darkseagreen" => array (143, 188, 143),
|
|
"mediumseagreen" => array (60, 179, 113),
|
|
"lightseagreen" => array (32, 178, 170),
|
|
"seagreen" => array (46, 139, 87),
|
|
"olive" => array (128, 128, 0),
|
|
"darkolivegreen" => array (85, 107, 47),
|
|
"olivedrab" => array (107, 142, 35),
|
|
|
|
// Grey
|
|
"gainsboro" => array (220, 220, 220),
|
|
"lightgray" => array (211, 211, 211),
|
|
"lightgrey" => array (211, 211, 211),
|
|
"silver" => array (192, 192, 192),
|
|
"darkgray" => array (169, 169, 169),
|
|
"darkgrey" => array (169, 169, 169),
|
|
"gray" => array (128, 128, 128),
|
|
"grey" => array (128, 128, 128),
|
|
"dimgray" => array (105, 105, 105),
|
|
"dimgrey" => array (105, 105, 105),
|
|
"lightslategray" => array (119, 136, 153),
|
|
"lightslategrey" => array (119, 136, 153),
|
|
"slategray" => array (112, 128, 144),
|
|
"slategrey" => array (112, 128, 144),
|
|
"darkslategray" => array (47, 79, 79),
|
|
"darkslategrey" => array (47, 79, 79),
|
|
"black" => array (0, 0, 0),
|
|
|
|
// Maroon
|
|
"maroon" => array (128, 0, 0),
|
|
"darkred" => array (139, 0, 0),
|
|
"brown" => array (165, 42, 42),
|
|
"firebrick" => array (178, 34, 34),
|
|
"crimson" => array (220, 20, 60),
|
|
|
|
// Orange
|
|
"coral" => array (255, 127, 80),
|
|
"tomato" => array (255, 99, 71),
|
|
"orangered" => array (255, 69, 0),
|
|
"gold" => array (255, 215, 0),
|
|
"orange" => array (255, 165, 0),
|
|
"darkorange" => array (255, 140, 0),
|
|
|
|
// Pink
|
|
"pink" => array (255, 192, 203),
|
|
"lightpink" => array (255, 182, 193),
|
|
"hotpink" => array (255, 105, 180),
|
|
"deeppink" => array (255, 20, 147),
|
|
"palevioletred" => array (219, 112, 147),
|
|
"mediumvioletred" => array (199, 21, 133),
|
|
|
|
// Purple
|
|
"lavender" => array (230, 230, 250),
|
|
"thistle" => array (216, 191, 216),
|
|
"plum" => array (221, 160, 221),
|
|
"violet" => array (238, 130, 238),
|
|
"orchid" => array (218, 112, 214),
|
|
"fuchsia" => array (255, 0, 255),
|
|
"magenta" => array (255, 0, 255),
|
|
"mediumorchid" => array (186, 85, 211),
|
|
"mediumpurple" => array (147, 112, 219),
|
|
"blueviolet" => array (138, 43, 226),
|
|
"darkviolet" => array (148, 0, 211),
|
|
"darkorchid" => array (153, 50, 204),
|
|
"darkmagenta" => array (139, 0, 139),
|
|
"purple" => array (128, 0, 128),
|
|
"indigo" => array (75, 0, 130),
|
|
|
|
// Red
|
|
"lightsalmon" => array (255, 160, 122),
|
|
"salmon" => array (250, 128, 114),
|
|
"darksalmon" => array (233, 150, 122),
|
|
"lightcoral" => array (240, 128, 128),
|
|
"indianred" => array (205, 92, 92),
|
|
"crimson" => array (220, 20, 60),
|
|
"firebrick" => array (178, 34, 34),
|
|
"red" => array (255, 0, 0),
|
|
"darkred" => array (139, 0, 0),
|
|
"maroon" => array (128, 0, 0),
|
|
"tomato" => array (255, 99, 71),
|
|
"orangered" => array (255, 69, 0),
|
|
"palevioletred" => array (219, 112, 147),
|
|
|
|
// White
|
|
"white" => array (255, 255, 255),
|
|
"snow" => array (255, 250, 250),
|
|
"honeydew" => array (240, 255, 240),
|
|
"mintcream" => array (245, 255, 250),
|
|
"azure" => array (240, 255, 255),
|
|
"aliceblue" => array (240, 248, 255),
|
|
"ghostwhite" => array (248, 248, 255),
|
|
"whitesmoke" => array (245, 245, 245),
|
|
"seashell" => array (255, 245, 238),
|
|
"beige" => array (245, 245, 220),
|
|
"oldlace" => array (253, 245, 230),
|
|
"floralwhite" => array (255, 250, 240),
|
|
"ivory" => array (255, 255, 240),
|
|
"antiquewhite" => array (250, 235, 215),
|
|
"linen" => array (250, 240, 230),
|
|
"lavenderblush" => array (255, 240, 245),
|
|
"mistyrose" => array (255, 228, 225),
|
|
"navajowhite" => array (255, 222, 173),
|
|
|
|
// Yellow
|
|
"lightyellow" => array (255, 255, 224),
|
|
"lemonchiffon" => array (255, 250, 205),
|
|
"lightgoldenrodyellow" => array (250, 250, 210),
|
|
"papayawhip" => array (255, 239, 213),
|
|
"moccasin" => array (255, 228, 181),
|
|
"peachpuff" => array (255, 218, 185),
|
|
"palegoldenrod" => array (238, 232, 170),
|
|
"khaki" => array (240, 230, 140),
|
|
"darkkhaki" => array (189, 183, 107),
|
|
"yellow" => array (255, 255, 0),
|
|
"olive" => array (128, 128, 0),
|
|
"greenyellow" => array (173, 255, 47),
|
|
"yellowgreen" => array (154, 205, 50),
|
|
"lightyellow1" => array (255, 255, 204),
|
|
"lightyellow2" => array (255, 255, 153),
|
|
"lightyellow3" => array (255, 255, 102),
|
|
"lightyellow4" => array (255, 255, 51),
|
|
"yellow" => array (255, 255, 0),
|
|
"darkyellow1" => array (204, 204, 0),
|
|
"darkyellow2" => array (153, 153, 0),
|
|
"darkyellow3" => array (102, 102, 0),
|
|
"darkyellow4" => array (51, 51, 0),
|
|
);
|
|
|
|
/** Return the list of the known colors list
|
|
*/
|
|
public static function colorList ()
|
|
{
|
|
$color = new \color ();
|
|
$colorList = $color->colorList;
|
|
return array_keys ($colorList);
|
|
}
|
|
|
|
/** Return an array with the RGB colors
|
|
* @param string $colorInText The color in textual form
|
|
*/
|
|
public static function textToRGB ($colorInText)
|
|
{
|
|
$color = new \color ();
|
|
$colorList = $color->colorList;
|
|
if (! array_key_exists ($colorInText, $colorList))
|
|
throw new \Exception (sprintf (dgettext ("domframework",
|
|
"Unknown color provided to graphColor::textToRGB: '%s'"),
|
|
$colorInText), 500);
|
|
return $colorList[$colorInText];
|
|
}
|
|
|
|
/** Allocate the color provided in text to the provided GD object
|
|
* @param resource $gd The GD resource to add the color
|
|
* @param string $colorInText The color in textual form
|
|
*/
|
|
public static function allocateFromText ($gd, $colorInText)
|
|
{
|
|
if (! function_exists ("imagecolorallocate"))
|
|
throw new \Exception (dgettext ("domframework",
|
|
"No GD support in PHP : can't allocate color"),
|
|
500);
|
|
$rgb = \color::textToRGB ($colorInText);
|
|
return imagecolorallocate ($gd, $rgb[0], $rgb[1], $rgb[2]);
|
|
}
|
|
}
|