1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#[derive(Debug, PartialEq, Eq, Hash, Clone, Copy)]
pub struct Color { pub r: u8, pub g: u8, pub b: u8, pub a: u8 }

impl Color {
	pub const fn new(r: u8, g: u8, b: u8, a: u8) -> Self {
		Self { r, g, b, a }
	}

	pub const fn from_hex(hex: u32) -> Self {
		let [r, g, b, a] = hex.to_be_bytes();
		Self { r, g, b, a }
	}
}

impl From<u32> for Color {
	fn from(x: u32) -> Self {
		Self::from_hex(x)
	}
}

macro_rules! def_colors {
	($($name:ident => $r:expr, $g:expr, $b:expr);+$(;)?) => {
		$(pub static $name: Color = Color { r: $r, g: $g, b: $b, a: 0xFF };)+
	};
}

def_colors! {
	ALICEBLUE => 0xF0, 0xF8, 0xFF;
	ANTIQUEWHITE => 0xFA, 0xEB, 0xD7;
	AQUA => 0x00, 0xFF, 0xFF;
	AQUAMARINE => 0x7F, 0xFF, 0xD4;
	AZURE => 0xF0, 0xFF, 0xFF;
	BEIGE => 0xF5, 0xF5, 0xDC;
	BISQUE => 0xFF, 0xE4, 0xC4;
	BLACK => 0x00, 0x00, 0x00;
	BLANCHEDALMOND => 0xFF, 0xEB, 0xCD;
	BLUE => 0x00, 0x00, 0xFF;
	BLUEVIOLET => 0x8A, 0x2B, 0xE2;
	BROWN => 0xA5, 0x2A, 0x2A;
	BURLYWOOD => 0xDE, 0xB8, 0x87;
	CADETBLUE => 0x5F, 0x9E, 0xA0;
	CHARTREUSE => 0x7F, 0xFF, 0x00;
	CHOCOLATE => 0xD2, 0x69, 0x1E;
	CORAL => 0xFF, 0x7F, 0x50;
	CORNFLOWERBLUE => 0x64, 0x95, 0xED;
	CORNSILK => 0xFF, 0xF8, 0xDC;
	CRIMSON => 0xDC, 0x14, 0x3C;
	CYAN => 0x00, 0xFF, 0xFF;
	DARKBLUE => 0x00, 0x00, 0x8B;
	DARKCYAN => 0x00, 0x8B, 0x8B;
	DARKGOLDENROD => 0xB8, 0x86, 0x0B;
	DARKGRAY => 0xA9, 0xA9, 0xA9;
	DARKGREEN => 0x00, 0x64, 0x00;
	DARKKHAKI => 0xBD, 0xB7, 0x6B;
	DARKMAGENTA => 0x8B, 0x00, 0x8B;
	DARKOLIVEGREEN => 0x55, 0x6B, 0x2F;
	DARKORANGE => 0xFF, 0x8C, 0x00;
	DARKORCHID => 0x99, 0x32, 0xCC;
	DARKRED => 0x8B, 0x00, 0x00;
	DARKSALMON => 0xE9, 0x96, 0x7A;
	DARKSEAGREEN => 0x8F, 0xBC, 0x8F;
	DARKSLATEBLUE => 0x48, 0x3D, 0x8B;
	DARKSLATEGRAY => 0x2F, 0x4F, 0x4F;
	DARKTURQUOISE => 0x00, 0xCE, 0xD1;
	DARKVIOLET => 0x94, 0x00, 0xD3;
	DEEPPINK => 0xFF, 0x14, 0x93;
	DEEPSKYBLUE => 0x00, 0xBF, 0xFF;
	DIMGRAY => 0x69, 0x69, 0x69;
	DODGERBLUE => 0x1E, 0x90, 0xFF;
	FIREBRICK => 0xB2, 0x22, 0x22;
	FLORALWHITE => 0xFF, 0xFA, 0xF0;
	FORESTGREEN => 0x22, 0x8B, 0x22;
	FUCHSIA => 0xFF, 0x00, 0xFF;
	GAINSBORO => 0xDC, 0xDC, 0xDC;
	GHOSTWHITE => 0xF8, 0xF8, 0xFF;
	GOLD => 0xFF, 0xD7, 0x00;
	GOLDENROD => 0xDA, 0xA5, 0x20;
	GRAY => 0x80, 0x80, 0x80;
	GREEN => 0x00, 0x80, 0x00;
	GREENYELLOW => 0xAD, 0xFF, 0x2F;
	HONEYDEW => 0xF0, 0xFF, 0xF0;
	HOTPINK => 0xFF, 0x69, 0xB4;
	INDIANRED => 0xCD, 0x5C, 0x5C;
	INDIGO => 0x4B, 0x00, 0x82;
	IVORY => 0xFF, 0xFF, 0xF0;
	KHAKI => 0xF0, 0xE6, 0x8C;
	LAVENDER => 0xE6, 0xE6, 0xFA;
	LAVENDERBLUSH => 0xFF, 0xF0, 0xF5;
	LAWNGREEN => 0x7C, 0xFC, 0x00;
	LEMONCHIFFON => 0xFF, 0xFA, 0xCD;
	LIGHTBLUE => 0xAD, 0xD8, 0xE6;
	LIGHTCORAL => 0xF0, 0x80, 0x80;
	LIGHTCYAN => 0xE0, 0xFF, 0xFF;
	LIGHTGOLDENRODYELLOW => 0xFA, 0xFA, 0xD2;
	LIGHTGREEN => 0x90, 0xEE, 0x90;
	LIGHTGREY => 0xD3, 0xD3, 0xD3;
	LIGHTPINK => 0xFF, 0xB6, 0xC1;
	LIGHTSALMON => 0xFF, 0xA0, 0x7A;
	LIGHTSEAGREEN => 0x20, 0xB2, 0xAA;
	LIGHTSKYBLUE => 0x87, 0xCE, 0xFA;
	LIGHTSLATEGRAY => 0x77, 0x88, 0x99;
	LIGHTSTEELBLUE => 0xB0, 0xC4, 0xDE;
	LIGHTYELLOW => 0xFF, 0xFF, 0xE0;
	LIME => 0x00, 0xFF, 0x00;
	LIMEGREEN => 0x32, 0xCD, 0x32;
	LINEN => 0xFA, 0xF0, 0xE6;
	MAGENTA => 0xFF, 0x00, 0xFF;
	MAROON => 0x80, 0x00, 0x00;
	MEDIUMAQUAMARINE => 0x66, 0xCD, 0xAA;
	MEDIUMBLUE => 0x00, 0x00, 0xCD;
	MEDIUMORCHID => 0xBA, 0x55, 0xD3;
	MEDIUMPURPLE => 0x93, 0x70, 0xDB;
	MEDIUMSEAGREEN => 0x3C, 0xB3, 0x71;
	MEDIUMSLATEBLUE => 0x7B, 0x68, 0xEE;
	MEDIUMSPRINGGREEN => 0x00, 0xFA, 0x9A;
	MEDIUMTURQUOISE => 0x48, 0xD1, 0xCC;
	MEDIUMVIOLETRED => 0xC7, 0x15, 0x85;
	MIDNIGHTBLUE => 0x19, 0x19, 0x70;
	MINTCREAM => 0xF5, 0xFF, 0xFA;
	MISTYROSE => 0xFF, 0xE4, 0xE1;
	MOCCASIN => 0xFF, 0xE4, 0xB5;
	NAVAJOWHITE => 0xFF, 0xDE, 0xAD;
	NAVY => 0x00, 0x00, 0x80;
	OLDLACE => 0xFD, 0xF5, 0xE6;
	OLIVE => 0x80, 0x80, 0x00;
	OLIVEDRAB => 0x6B, 0x8E, 0x23;
	ORANGE => 0xFF, 0xA5, 0x00;
	ORANGERED => 0xFF, 0x45, 0x00;
	ORCHID => 0xDA, 0x70, 0xD6;
	PALEGOLDENROD => 0xEE, 0xE8, 0xAA;
	PALEGREEN => 0x98, 0xFB, 0x98;
	PALEVIOLETRED => 0xDB, 0x70, 0x93;
	PAPAYAWHIP => 0xFF, 0xEF, 0xD5;
	PEACHPUFF => 0xFF, 0xDA, 0xB9;
	PERU => 0xCD, 0x85, 0x3F;
	PINK => 0xFF, 0xC0, 0xCB;
	PLUM => 0xDD, 0xA0, 0xDD;
	POWDERBLUE => 0xB0, 0xE0, 0xE6;
	PURPLE => 0x80, 0x00, 0x80;
	RED => 0xFF, 0x00, 0x00;
	ROSYBROWN => 0xBC, 0x8F, 0x8F;
	ROYALBLUE => 0x41, 0x69, 0xE1;
	SADDLEBROWN => 0x8B, 0x45, 0x13;
	SALMON => 0xFA, 0x80, 0x72;
	SANDYBROWN => 0xFA, 0xA4, 0x60;
	SEAGREEN => 0x2E, 0x8B, 0x57;
	SEASHELL => 0xFF, 0xF5, 0xEE;
	SIENNA => 0xA0, 0x52, 0x2D;
	SILVER => 0xC0, 0xC0, 0xC0;
	SKYBLUE => 0x87, 0xCE, 0xEB;
	SLATEBLUE => 0x6A, 0x5A, 0xCD;
	SLATEGRAY => 0x70, 0x80, 0x90;
	SNOW => 0xFF, 0xFA, 0xFA;
	SPRINGGREEN => 0x00, 0xFF, 0x7F;
	STEELBLUE => 0x46, 0x82, 0xB4;
	TAN => 0xD2, 0xB4, 0x8C;
	TEAL => 0x00, 0x80, 0x80;
	THISTLE => 0xD8, 0xBF, 0xD8;
	TOMATO => 0xFF, 0x63, 0x47;
	TURQUOISE => 0x40, 0xE0, 0xD0;
	VIOLET => 0xEE, 0x82, 0xEE;
	WHEAT => 0xF5, 0xDE, 0xB3;
	WHITE => 0xFF, 0xFF, 0xFF;
	WHITESMOKE => 0xF5, 0xF5, 0xF5;
	YELLOW => 0xFF, 0xFF, 0x00;
	YELLOWGREEN => 0x9A, 0xCD, 0x32;
}