From 8f1c8162f6e4e0e4191a397abff76b9fd136452c Mon Sep 17 00:00:00 2001 From: Dominique Fournier Date: Fri, 6 Jan 2017 15:31:36 +0000 Subject: [PATCH] color : allow to translate a color in english to RGB or GD color git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@3347 bf3deb0d-5f1a-0410-827f-c0cc1f45334c --- color.php | 272 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 272 insertions(+) create mode 100644 color.php diff --git a/color.php b/color.php new file mode 100644 index 0000000..b7bc705 --- /dev/null +++ b/color.php @@ -0,0 +1,272 @@ + */ + +/** 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 + */ + 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 + */ + 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]); + } +}