Files
DomFramework/src/Color.php
2022-11-25 21:21:30 +01:00

291 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]);
}
}