2023-01-02 03:23:48 +00:00
|
|
|
<?php
|
2023-01-02 03:24:41 +00:00
|
|
|
// ColourNamed.php
|
|
|
|
// Created: 2023-01-02
|
|
|
|
// Updated: 2023-01-02
|
|
|
|
|
2023-01-02 03:23:48 +00:00
|
|
|
namespace Index\Colour;
|
|
|
|
|
|
|
|
class ColourNamed extends Colour {
|
|
|
|
private string $name;
|
|
|
|
private int $red = 0;
|
|
|
|
private int $green = 0;
|
|
|
|
private int $blue = 0;
|
|
|
|
private bool $transparent;
|
|
|
|
|
|
|
|
public function __construct(string $name) {
|
|
|
|
$this->name = strtolower($name);
|
|
|
|
|
|
|
|
$raw = self::COLOURS[$name] ?? -1;
|
|
|
|
$this->transparent = $raw === -1;
|
|
|
|
|
|
|
|
if($raw === -1) {
|
|
|
|
$this->transparent = true;
|
|
|
|
} else {
|
|
|
|
$this->transparent = false;
|
|
|
|
$this->red = ($raw >> 16) & 0xFF;
|
|
|
|
$this->green = ($raw >> 8) & 0xFF;
|
|
|
|
$this->blue = ($raw) & 0xFF;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getName(): string {
|
|
|
|
return $this->name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function isTransparent(): bool {
|
|
|
|
return $this->transparent;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getRed(): int {
|
|
|
|
return $this->red;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getGreen(): int {
|
|
|
|
return $this->green;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getBlue(): int {
|
|
|
|
return $this->blue;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getAlpha(): float {
|
|
|
|
return $this->transparent ? 0.0 : 1.0;;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function shouldInherit(): bool {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function __toString(): string {
|
|
|
|
return $this->name;
|
|
|
|
}
|
|
|
|
|
|
|
|
private const COLOURS = [
|
|
|
|
// CSS Level 1
|
|
|
|
'black' => 0x000000,
|
|
|
|
'silver' => 0xC0C0C0,
|
|
|
|
'gray' => 0x808080,
|
|
|
|
'white' => 0xFFFFFF,
|
|
|
|
'maroon' => 0x800000,
|
|
|
|
'red' => 0xFF0000,
|
|
|
|
'purple' => 0x800080,
|
|
|
|
'fuchsia' => 0xFF00FF,
|
|
|
|
'green' => 0x008000,
|
|
|
|
'lime' => 0x00FF00,
|
|
|
|
'olive' => 0x808000,
|
|
|
|
'yellow' => 0xFFFF00,
|
|
|
|
'navy' => 0x000080,
|
|
|
|
'blue' => 0x0000FF,
|
|
|
|
'teal' => 0x008080,
|
|
|
|
'aqua' => 0x00FFFF,
|
|
|
|
|
|
|
|
// CSS Level 2
|
|
|
|
'orange' => 0xFFA500,
|
|
|
|
|
|
|
|
// CSS Level 3
|
|
|
|
'aliceblue' => 0xF0F8FF,
|
|
|
|
'antiquewhite' => 0xFAEBD7,
|
|
|
|
'aquamarine' => 0x7FFFD4,
|
|
|
|
'azure' => 0xF0FFFF,
|
|
|
|
'beige' => 0xF5F5DC,
|
|
|
|
'bisque' => 0xFFE4C4,
|
|
|
|
'blanchedalmond' => 0xFFEBCD,
|
|
|
|
'blueviolet' => 0x8A2BE2,
|
|
|
|
'brown' => 0xA52A2A,
|
|
|
|
'burlywood' => 0xDEB887,
|
|
|
|
'cadetblue' => 0x5F9EA0,
|
|
|
|
'chartreuse' => 0x7FFF00,
|
|
|
|
'chocolate' => 0xD2691E,
|
|
|
|
'coral' => 0xFF7F50,
|
|
|
|
'cornflowerblue' => 0x6495ED,
|
|
|
|
'cornsilk' => 0xFFF8DC,
|
|
|
|
'crimson' => 0xDC143C,
|
|
|
|
'cyan' => 0x00FFFF,
|
|
|
|
'darkblue' => 0x00008B,
|
|
|
|
'darkcyan' => 0x008B8B,
|
|
|
|
'darkgoldenrod' => 0xB8860B,
|
|
|
|
'darkgray' => 0xA9A9A9,
|
|
|
|
'darkgreen' => 0x006400,
|
|
|
|
'darkgrey' => 0xA9A9A9,
|
|
|
|
'darkkhaki' => 0xBDB76B,
|
|
|
|
'darkmagenta' => 0x8B008B,
|
|
|
|
'darkolivegreen' => 0x556B2F,
|
|
|
|
'darkorange' => 0xFF8C00,
|
|
|
|
'darkorchid' => 0x9932CC,
|
|
|
|
'darkred' => 0x8B0000,
|
|
|
|
'darksalmon' => 0xE9967A,
|
|
|
|
'darkseagreen' => 0x8FBC8F,
|
|
|
|
'darkslateblue' => 0x483D8B,
|
|
|
|
'darkslategray' => 0x2F4F4F,
|
|
|
|
'darkslategrey' => 0x2F4F4F,
|
|
|
|
'darkturquoise' => 0x00CED1,
|
|
|
|
'darkviolet' => 0x9400D3,
|
|
|
|
'deeppink' => 0xFF1493,
|
|
|
|
'deepskyblue' => 0x00BFFF,
|
|
|
|
'dimgray' => 0x696969,
|
|
|
|
'dimgrey' => 0x696969,
|
|
|
|
'dodgerblue' => 0x1E90FF,
|
|
|
|
'firebrick' => 0xB22222,
|
|
|
|
'floralwhite' => 0xFFFAF0,
|
|
|
|
'forestgreen' => 0x228B22,
|
|
|
|
'gainsboro' => 0xDCDCDC,
|
|
|
|
'ghostwhite' => 0xF8F8FF,
|
|
|
|
'gold' => 0xFFD700,
|
|
|
|
'goldenrod' => 0xDAA520,
|
|
|
|
'greenyellow' => 0xADFF2F,
|
|
|
|
'grey' => 0x808080,
|
|
|
|
'honeydew' => 0xF0FFF0,
|
|
|
|
'hotpink' => 0xFF69B4,
|
|
|
|
'indianred' => 0xCD5C5C,
|
|
|
|
'indigo' => 0x4B0082,
|
|
|
|
'ivory' => 0xFFFFF0,
|
|
|
|
'khaki' => 0xF0E68C,
|
|
|
|
'lavender' => 0xE6E6FA,
|
|
|
|
'lavenderblush' => 0xFFF0F5,
|
|
|
|
'lawngreen' => 0x7CFC00,
|
|
|
|
'lemonchiffon' => 0xFFFACD,
|
|
|
|
'lightblue' => 0xADD8E6,
|
|
|
|
'lightcoral' => 0xF08080,
|
|
|
|
'lightcyan' => 0xE0FFFF,
|
|
|
|
'lightgoldenrodyellow' => 0xFAFAD2,
|
|
|
|
'lightgray' => 0xD3D3D3,
|
|
|
|
'lightgreen' => 0x90EE90,
|
|
|
|
'lightgrey' => 0xD3D3D3,
|
|
|
|
'lightpink' => 0xFFB6C1,
|
|
|
|
'lightsalmon' => 0xFFA07A,
|
|
|
|
'lightseagreen' => 0x20B2AA,
|
|
|
|
'lightskyblue' => 0x87CEFA,
|
|
|
|
'lightslategray' => 0x778899,
|
|
|
|
'lightslategrey' => 0x778899,
|
|
|
|
'lightsteelblue' => 0xB0C4DE,
|
|
|
|
'lightyellow' => 0xFFFFE0,
|
|
|
|
'limegreen' => 0x32CD32,
|
|
|
|
'linen' => 0xFAF0E6,
|
|
|
|
'magenta' => 0xFF00FF,
|
|
|
|
'mediumaquamarine' => 0x66CDAA,
|
|
|
|
'mediumblue' => 0x0000CD,
|
|
|
|
'mediumorchid' => 0xBA55D3,
|
|
|
|
'mediumpurple' => 0x9370DB,
|
|
|
|
'mediumseagreen' => 0x3CB371,
|
|
|
|
'mediumslateblue' => 0x7B68EE,
|
|
|
|
'mediumspringgreen' => 0x00FA9A,
|
|
|
|
'mediumturquoise' => 0x48D1CC,
|
|
|
|
'mediumvioletred' => 0xC71585,
|
|
|
|
'midnightblue' => 0x191970,
|
|
|
|
'mintcream' => 0xF5FFFA,
|
|
|
|
'mistyrose' => 0xFFE4E1,
|
|
|
|
'moccasin' => 0xFFE4B5,
|
|
|
|
'navajowhite' => 0xFFDEAD,
|
|
|
|
'oldlace' => 0xFDF5E6,
|
|
|
|
'olivedrab' => 0x6B8E23,
|
|
|
|
'orangered' => 0xFF4500,
|
|
|
|
'orchid' => 0xDA70D6,
|
|
|
|
'palegoldenrod' => 0xEEE8AA,
|
|
|
|
'palegreen' => 0x98FB98,
|
|
|
|
'paleturquoise' => 0xAFEEEE,
|
|
|
|
'palevioletred' => 0xDB7093,
|
|
|
|
'papayawhip' => 0xFFEFD5,
|
|
|
|
'peachpuff' => 0xFFDAB9,
|
|
|
|
'peru' => 0xCD853F,
|
|
|
|
'pink' => 0xFFC0CB,
|
|
|
|
'plum' => 0xDDA0DD,
|
|
|
|
'powderblue' => 0xB0E0E6,
|
|
|
|
'rosybrown' => 0xBC8F8F,
|
|
|
|
'royalblue' => 0x4169E1,
|
|
|
|
'saddlebrown' => 0x8B4513,
|
|
|
|
'salmon' => 0xFA8072,
|
|
|
|
'sandybrown' => 0xF4A460,
|
|
|
|
'seagreen' => 0x2E8B57,
|
|
|
|
'seashell' => 0xFFF5EE,
|
|
|
|
'sienna' => 0xA0522D,
|
|
|
|
'skyblue' => 0x87CEEB,
|
|
|
|
'slateblue' => 0x6A5ACD,
|
|
|
|
'slategray' => 0x708090,
|
|
|
|
'slategrey' => 0x708090,
|
|
|
|
'snow' => 0xFFFAFA,
|
|
|
|
'springgreen' => 0x00FF7F,
|
|
|
|
'steelblue' => 0x4682B4,
|
|
|
|
'tan' => 0xD2B48C,
|
|
|
|
'thistle' => 0xD8BFD8,
|
|
|
|
'tomato' => 0xFF6347,
|
|
|
|
'transparent' => -1,
|
|
|
|
'turquoise' => 0x40E0D0,
|
|
|
|
'violet' => 0xEE82EE,
|
|
|
|
'wheat' => 0xF5DEB3,
|
|
|
|
'whitesmoke' => 0xF5F5F5,
|
|
|
|
'yellowgreen' => 0x9ACD32,
|
|
|
|
|
|
|
|
// CSS Level 4
|
|
|
|
'rebeccapurple' => 0x663399,
|
|
|
|
];
|
|
|
|
}
|