LkEngine 0.1.2
 
Loading...
Searching...
No Matches
Color.h
1#pragma once
2
3#include <string_view>
4
5#include <random>
6#include <time.h>
7
8#include <glm/glm.hpp>
9#include <imgui/imgui.h>
10
11
12/* ANSI Colors. */
13#define LK_ANSI_COLOR_RESET "\033[0m"
14/* Foreground Colors */
15#define LK_ANSI_COLOR_BLACK "\033[30m"
16#define LK_ANSI_COLOR_RED "\033[31m"
17#define LK_ANSI_COLOR_GREEN "\033[32m"
18#define LK_ANSI_COLOR_YELLOW "\033[33m"
19#define LK_ANSI_COLOR_BLUE "\033[34m"
20#define LK_ANSI_COLOR_MAGENTA "\033[35m"
21#define LK_ANSI_COLOR_CYAN "\033[36m"
22#define LK_ANSI_COLOR_WHITE "\033[37m"
23#define LK_ANSI_COLOR_BRIGHT_BLACK "\033[90m"
24#define LK_ANSI_COLOR_BRIGHT_RED "\033[91m"
25#define LK_ANSI_COLOR_BRIGHT_GREEN "\033[92m"
26#define LK_ANSI_COLOR_BRIGHT_YELLOW "\033[93m"
27#define LK_ANSI_COLOR_BRIGHT_BLUE "\033[94m"
28#define LK_ANSI_COLOR_BRIGHT_MAGENTA "\033[95m"
29#define LK_ANSI_COLOR_BRIGHT_CYAN "\033[96m"
30#define LK_ANSI_COLOR_BRIGHT_WHITE "\033[97m"
31/* Background Colors */
32#define LK_ANSI_COLOR_BG_BLACK "\033[40m"
33#define LK_ANSI_COLOR_BG_RED "\033[41m"
34#define LK_ANSI_COLOR_BG_GREEN "\033[42m"
35#define LK_ANSI_COLOR_BG_YELLOW "\033[43m"
36#define LK_ANSI_COLOR_BG_BLUE "\033[44m"
37#define LK_ANSI_COLOR_BG_MAGENTA "\033[45m"
38#define LK_ANSI_COLOR_BG_CYAN "\033[46m"
39#define LK_ANSI_COLOR_BG_WHITE "\033[47m"
40#define LK_ANSI_COLOR_BG_BRIGHT_BLACK "\033[100m"
41#define LK_ANSI_COLOR_BG_BRIGHT_RED "\033[101m"
42#define LK_ANSI_COLOR_BG_BRIGHT_GREEN "\033[102m"
43#define LK_ANSI_COLOR_BG_BRIGHT_YELLOW "\033[103m"
44#define LK_ANSI_COLOR_BG_BRIGHT_BLUE "\033[104m"
45#define LK_ANSI_COLOR_BG_BRIGHT_MAGENTA "\033[105m"
46#define LK_ANSI_COLOR_BG_BRIGHT_CYAN "\033[106m"
47#define LK_ANSI_COLOR_BG_BRIGHT_WHITE "\033[107m"
48
49
50namespace LkEngine::Color {
51
52 extern std::mt19937 RNG;
53 extern std::uniform_int_distribution<int> Dist;
54
55 /* clang-format off */
56
57 namespace Log
58 {
59 static constexpr uint16_t Black = 0x0000;
60 static constexpr uint16_t Blue = 0x0001;
61 static constexpr uint16_t Green = 0x0002;
62 static constexpr uint16_t Cyan = 0x0003;
63 static constexpr uint16_t Red = 0x0004;
64 static constexpr uint16_t Magenta = 0x0005;
65 static constexpr uint16_t Yellow = 0x0006;
66 static constexpr uint16_t White = 0x0007;
67 }
68
69 namespace ANSI
70 {
71 /* Formatting codes. */
72 namespace Format
73 {
74 static constexpr std::string_view Reset = "\033[m";
75 static constexpr std::string_view Bold = "\033[1m";
76 static constexpr std::string_view Dark = "\033[2m";
77 static constexpr std::string_view Underline = "\033[4m";
78 static constexpr std::string_view Blink = "\033[5m";
79 static constexpr std::string_view Reverse = "\033[7m";
80 static constexpr std::string_view Concealed = "\033[8m";
81 static constexpr std::string_view ClearLine = "\033[K";
82 }
83
84 /* Foreground. */
85 static constexpr std::string_view Black = "\033[30m";
86 static constexpr std::string_view Red = "\033[31m";
87 static constexpr std::string_view Green = "\033[32m";
88 static constexpr std::string_view Yellow = "\033[33m";
89 static constexpr std::string_view Blue = "\033[34m";
90 static constexpr std::string_view Magenta = "\033[35m";
91 static constexpr std::string_view Cyan = "\033[36m";
92 static constexpr std::string_view White = "\033[37m";
93
94 namespace Bg
95 {
96 static constexpr std::string_view Black = "\033[40m";
97 static constexpr std::string_view Red = "\033[41m";
98 static constexpr std::string_view Green = "\033[42m";
99 static constexpr std::string_view Yellow = "\033[43m";
100 static constexpr std::string_view Blue = "\033[44m";
101 static constexpr std::string_view Magenta = "\033[45m";
102 static constexpr std::string_view Cyan = "\033[46m";
103 static constexpr std::string_view White = "\033[47m";
104 }
105
106 namespace Bold
107 {
108 static constexpr std::string_view Yellow = "\033[33m\033[1m";
109 static constexpr std::string_view Red = "\033[31m\033[1m";
110 static constexpr std::string_view Bold = "\033[1m\033[41m";
111 }
112 }
113
114 enum class RGB : uint32_t
115 {
116 AliceBlue = 0xF0F8FF, // RGB(240,248,255)
117 AntiqueWhite = 0xFAEBD7, // RGB(250,235,215)
118 Aqua = 0x00FFFF, // RGB(0,255,255)
119 Aquamarine = 0x7FFFD4, // RGB(127,255,212)
120 Azure = 0xF0FFFF, // RGB(240,255,255)
121 Beige = 0xF5F5DC, // RGB(245,245,220)
122 Bisque = 0xFFE4C4, // RGB(255,228,196)
123 Black = 0x000000, // RGB(0,0,0)
124 BlanchedAlmond = 0xFFEBCD, // RGB(255,235,205)
125 Blue = 0x0000FF, // RGB(0,0,255)
126 BlueViolet = 0x8A2BE2, // RGB(138,43,226)
127 Brown = 0xA52A2A, // RGB(165,42,42)
128 BurlyWood = 0xDEB887, // RGB(222,184,135)
129 CadetBlue = 0x5F9EA0, // RGB(95,158,160)
130 Chartreuse = 0x7FFF00, // RGB(127,255,0)
131 Chocolate = 0xD2691E, // RGB(210,105,30)
132 Coral = 0xFF7F50, // RGB(255,127,80)
133 CornflowerBlue = 0x6495ED, // RGB(100,149,237)
134 Cornsilk = 0xFFF8DC, // RGB(255,248,220)
135 Crimson = 0xDC143C, // RGB(220,20,60)
136 Cyan = 0x00FFFF, // RGB(0,255,255)
137 DarkBlue = 0x00008B, // RGB(0,0,139)
138 DarkCyan = 0x008B8B, // RGB(0,139,139)
139 DarkGoldenRod = 0xB8860B, // RGB(184,134,11)
140 DarkGray = 0xA9A9A9, // RGB(169,169,169)
141 DarkGreen = 0x006400, // RGB(0,100,0)
142 DarkKhaki = 0xBDB76B, // RGB(189,183,107)
143 DarkMagenta = 0x8B008B, // RGB(139,0,139)
144 DarkOliveGreen = 0x556B2F, // RGB(85,107,47)
145 DarkOrange = 0xFF8C00, // RGB(255,140,0)
146 DarkOrchid = 0x9932CC, // RGB(153,50,204)
147 DarkRed = 0x8B0000, // RGB(139,0,0)
148 DarkSalmon = 0xE9967A, // RGB(233,150,122)
149 DarkSeaGreen = 0x8FBC8F, // RGB(143,188,143)
150 DarkSlateBlue = 0x483D8B, // RGB(72,61,139)
151 DarkSlateGray = 0x2F4F4F, // RGB(47,79,79)
152 DarkTurquoise = 0x00CED1, // RGB(0,206,209)
153 DarkViolet = 0x9400D3, // RGB(148,0,211)
154 DeepPink = 0xFF1493, // RGB(255,20,147)
155 DeepSkyBlue = 0x00BFFF, // RGB(0,191,255)
156 DimGray = 0x696969, // RGB(105,105,105)
157 DodgerBlue = 0x1E90FF, // RGB(30,144,255)
158 FireBrick = 0xB22222, // RGB(178,34,34)
159 FloralWhite = 0xFFFAF0, // RGB(255,250,240)
160 ForestGreen = 0x228B22, // RGB(34,139,34)
161 Fuchsia = 0xFF00FF, // RGB(255,0,255)
162 Gainsboro = 0xDCDCDC, // RGB(220,220,220)
163 GhostWhite = 0xF8F8FF, // RGB(248,248,255)
164 Gold = 0xFFD700, // RGB(255,215,0)
165 GoldenRod = 0xDAA520, // RGB(218,165,32)
166 Gray = 0x808080, // RGB(128,128,128)
167 Green = 0x008000, // RGB(0,128,0)
168 GreenYellow = 0xADFF2F, // RGB(173,255,47)
169 HoneyDew = 0xF0FFF0, // RGB(240,255,240)
170 HotPink = 0xFF69B4, // RGB(255,105,180)
171 IndianRed = 0xCD5C5C, // RGB(205,92,92)
172 Indigo = 0x4B0082, // RGB(75,0,130)
173 Ivory = 0xFFFFF0, // RGB(255,255,240)
174 Khaki = 0xF0E68C, // RGB(240,230,140)
175 Lavender = 0xE6E6FA, // RGB(230,230,250)
176 LavenderBlush = 0xFFF0F5, // RGB(255,240,245)
177 LawnGreen = 0x7CFC00, // RGB(124,252,0)
178 LemonChiffon = 0xFFFACD, // RGB(255,250,205)
179 LightBlue = 0xADD8E6, // RGB(173,216,230)
180 LightCoral = 0xF08080, // RGB(240,128,128)
181 LightCyan = 0xE0FFFF, // RGB(224,255,255)
182 LightGoldenRodYellow = 0xFAFAD2, // RGB(250,250,210)
183 LightGray = 0xD3D3D3, // RGB(211,211,211)
184 LightGreen = 0x90EE90, // RGB(144,238,144)
185 LightPink = 0xFFB6C1, // RGB(255,182,193)
186 LightSalmon = 0xFFA07A, // RGB(255,160,122)
187 LightSeaGreen = 0x20B2AA, // RGB(32,178,170)
188 LightSkyBlue = 0x87CEFA, // RGB(135,206,250)
189 LightSlateGray = 0x778899, // RGB(119,136,153)
190 LightSteelBlue = 0xB0C4DE, // RGB(176,196,222)
191 LightYellow = 0xFFFFE0, // RGB(255,255,224)
192 Lime = 0x00FF00, // RGB(0,255,0)
193 LimeGreen = 0x32CD32, // RGB(50,205,50)
194 Linen = 0xFAF0E6, // RGB(250,240,230)
195 Magenta = 0xFF00FF, // RGB(255,0,255)
196 Maroon = 0x800000, // RGB(128,0,0)
197 MediumAquamarine = 0x66CDAA, // RGB(102,205,170)
198 MediumBlue = 0x0000CD, // RGB(0,0,205)
199 MediumOrchid = 0xBA55D3, // RGB(186,85,211)
200 MediumPurple = 0x9370DB, // RGB(147,112,219)
201 MediumSeaGreen = 0x3CB371, // RGB(60,179,113)
202 MediumSlateBlue = 0x7B68EE, // RGB(123,104,238)
203 MediumSpringGreen = 0x00FA9A, // RGB(0,250,154)
204 MediumTurquoise = 0x48D1CC, // RGB(72,209,204)
205 MediumVioletRed = 0xC71585, // RGB(199,21,133)
206 MidnightBlue = 0x191970, // RGB(25,25,112)
207 MintCream = 0xF5FFFA, // RGB(245,255,250)
208 MistyRose = 0xFFE4E1, // RGB(255,228,225)
209 Moccasin = 0xFFE4B5, // RGB(255,228,181)
210 NavajoWhite = 0xFFDEAD, // RGB(255,222,173)
211 Navy = 0x000080, // RGB(0,0,128)
212 OldLace = 0xFDF5E6, // RGB(253,245,230)
213 Olive = 0x808000, // RGB(128,128,0)
214 OliveDrab = 0x6B8E23, // RGB(107,142,35)
215 Orange = 0xFFA500, // RGB(255,165,0)
216 OrangeRed = 0xFF4500, // RGB(255,69,0)
217 Orchid = 0xDA70D6, // RGB(218,112,214)
218 PaleGoldenRod = 0xEEE8AA, // RGB(238,232,170)
219 PaleGreen = 0x98FB98, // RGB(152,251,152)
220 PaleTurquoise = 0xAFEEEE, // RGB(175,238,238)
221 PaleVioletRed = 0xDB7093, // RGB(219,112,147)
222 PapayaWhip = 0xFFEFD5, // RGB(255,239,213)
223 PeachPuff = 0xFFDAB9, // RGB(255,218,185)
224 Peru = 0xCD853F, // RGB(205,133,63)
225 Pink = 0xFFC0CB, // RGB(255,192,203)
226 Plum = 0xDDA0DD, // RGB(221,160,221)
227 PowderBlue = 0xB0E0E6, // RGB(176,224,230)
228 Purple = 0x800080, // RGB(128,0,128)
229 RebeccaPurple = 0x663399, // RGB(102,51,153)
230 Red = 0xFF0000, // RGB(255,0,0)
231 RosyBrown = 0xBC8F8F, // RGB(188,143,143)
232 RoyalBlue = 0x4169E1, // RGB(65,105,225)
233 SaddleBrown = 0x8B4513, // RGB(139,69,19)
234 Salmon = 0xFA8072, // RGB(250,128,114)
235 SandyBrown = 0xF4A460, // RGB(244,164,96)
236 SeaGreen = 0x2E8B57, // RGB(46,139,87)
237 SeaShell = 0xFFF5EE, // RGB(255,245,238)
238 Sienna = 0xA0522D, // RGB(160,82,45)
239 Silver = 0xC0C0C0, // RGB(192,192,192)
240 SkyBlue = 0x87CEEB, // RGB(135,206,235)
241 SlateBlue = 0x6A5ACD, // RGB(106,90,205)
242 SlateGray = 0x708090, // RGB(112,128,144)
243 Snow = 0xFFFAFA, // RGB(255,250,250)
244 SpringGreen = 0x00FF7F, // RGB(0,255,127)
245 SteelBlue = 0x4682B4, // RGB(70,130,180)
246 Tan = 0xD2B48C, // RGB(210,180,140)
247 Teal = 0x008080, // RGB(0,128,128)
248 Thistle = 0xD8BFD8, // RGB(216,191,216)
249 Tomato = 0xFF6347, // RGB(255,99,71)
250 Turquoise = 0x40E0D0, // RGB(64,224,208)
251 Violet = 0xEE82EE, // RGB(238,130,238)
252 Wheat = 0xF5DEB3, // RGB(245,222,179)
253 White = 0xFFFFFF, // RGB(255,255,255)
254 WhiteSmoke = 0xF5F5F5, // RGB(245,245,245)
255 Yellow = 0xFFFF00, // RGB(255,255,0)
256 YellowGreen = 0x9ACD32 // RGB(154,205,50)
257 };
258
259 enum class EColorCode
260 {
261 Reset,
262
263 /* Foreground Colors. */
264 Black,
265 Red,
266 Green,
267 Yellow,
268 Blue,
269 Magenta,
270 Cyan,
271 White,
272 BrightBlack,
273 BrightRed,
274 BrightGreen,
275 BrightYellow,
276 BrightBlue,
277 BrightMagenta,
278 BrightCyan,
279 BrightWhite,
280
281 /* Background Colors. */
282 BgBlack,
283 BgRed,
284 BgGreen,
285 BgYellow,
286 BgBlue,
287 BgMagenta,
288 BgCyan,
289 BgWhite,
290 BgBrightBlack,
291 BgBrightRed,
292 BgBrightGreen,
293 BgBrightYellow,
294 BgBrightBlue,
295 BgBrightMagenta,
296 BgBrightCyan,
297 BgBrightWhite,
298
299 COUNT
300 };
301
302 /* ANSI Escape Codes mapped to EColorCode. */
303 static constexpr std::array<const char*, static_cast<std::size_t>(EColorCode::COUNT)> ColorEscapeCodes = {
304 "\033[0m", // Reset
305
306 /* -- Foreground -- */
307 "\033[30m", // Black
308 "\033[31m", // Red
309 "\033[32m", // Green
310 "\033[33m", // Yellow
311 "\033[34m", // Blue
312 "\033[35m", // Magenta
313 "\033[36m", // Cyan
314 "\033[37m", // White
315 "\033[90m", // Bright Black
316 "\033[91m", // Bright Red
317 "\033[92m", // Bright Green
318 "\033[93m", // Bright Yellow
319 "\033[94m", // Bright Blue
320 "\033[95m", // Bright Magenta
321 "\033[96m", // Bright Cyan
322 "\033[97m", // Bright White
323
324 /* -- Background -- */
325 "\033[40m", // BgBlack
326 "\033[41m", // BgRed
327 "\033[42m", // BgGreen
328 "\033[43m", // BgYellow
329 "\033[44m", // BgBlue
330 "\033[45m", // BgMagenta
331 "\033[46m", // BgCyan
332 "\033[47m", // BgWhite
333 "\033[100m", // BgBrightBlack
334 "\033[101m", // BgBrightRed
335 "\033[102m", // BgBrightGreen
336 "\033[103m", // BgBrightYellow
337 "\033[104m", // BgBrightBlue
338 "\033[105m", // BgBrightMagenta
339 "\033[106m", // BgBrightCyan
340 "\033[107m" // BgBrightWhite
341 };
342
343 FORCEINLINE constexpr const char* GetEscapeCode(const EColorCode InColor)
344 {
345 return ColorEscapeCodes[static_cast<std::size_t>(InColor)];
346 }
347
348}
349
354{
355 static constexpr uint32_t White = IM_COL32(255, 255, 255, 255);
356 static constexpr uint32_t Black = IM_COL32(0, 0, 0, 255);
357 static constexpr uint32_t Gray = IM_COL32(128, 128, 128, 255);
358 static constexpr uint32_t LightGray = IM_COL32(165, 165, 165, 255);
359 static constexpr uint32_t LighterGray = IM_COL32(190, 190, 190, 255);
360 static constexpr uint32_t Red = IM_COL32(255, 0, 0, 255);
361 static constexpr uint32_t Green = IM_COL32(0, 255, 0, 255);
362 static constexpr uint32_t Blue = IM_COL32(0, 0, 255, 255);
363 static constexpr uint32_t Cyan = IM_COL32(0, 255, 255, 255);
364 static constexpr uint32_t Magenta = IM_COL32(255, 0, 255, 255);
365 static constexpr uint32_t Yellow = IM_COL32(255, 255, 0, 255);
366 static constexpr uint32_t Orange = IM_COL32(255, 165, 0, 255);
367 static constexpr uint32_t Purple = IM_COL32(128, 0, 128, 255);
368 static constexpr uint32_t Pink = IM_COL32(255, 192, 203, 255);
369 static constexpr uint32_t Brown = IM_COL32(165, 42, 42, 255);
370 static constexpr uint32_t DarkRed = IM_COL32(139, 0, 0, 255);
371 static constexpr uint32_t DarkGreen = IM_COL32(0, 100, 0, 255);
372 static constexpr uint32_t DarkBlue = IM_COL32(0, 0, 139, 255);
373 static constexpr uint32_t DarkCyan = IM_COL32(0, 139, 139, 255);
374 static constexpr uint32_t DarkMagenta = IM_COL32(139, 0, 139, 255);
375 static constexpr uint32_t DarkYellow = IM_COL32(204, 204, 0, 255);
376 static constexpr uint32_t BrightGreen = IM_COL32(18, 140, 40, 255);
377 static constexpr uint32_t NiceBlue = IM_COL32(83, 232, 254, 255);
378
379 static constexpr uint32_t Accent = IM_COL32(236, 158, 36, 255);
380 static constexpr uint32_t Highlight = IM_COL32(39, 185, 242, 255);
381 static constexpr uint32_t Compliment = IM_COL32(78, 151, 166, 255);
382 static constexpr uint32_t PropertyField = IM_COL32(15, 15, 15, 255);
383 static constexpr uint32_t Muted = IM_COL32(77, 77, 77, 255);
384
385 static constexpr uint32_t GroupHeader = IM_COL32(43, 43, 43, 255);
386 static constexpr uint32_t Selection = IM_COL32(190, 205, 119, 255);
387 static constexpr uint32_t SelectionMuted = IM_COL32(237, 201, 142, 23);
388 static constexpr uint32_t Background = IM_COL32(36, 36, 36, 255);
389 static constexpr uint32_t BackgroundDark = IM_COL32(26, 26, 26, 255);
390 static constexpr uint32_t BackgroundDarker = IM_COL32(16, 16, 16, 255);
391
392 namespace Text
393 {
394 static constexpr uint32_t Normal = IM_COL32(190, 190, 190, 255);
395 static constexpr uint32_t Brighter = IM_COL32(204, 204, 204, 255);
396 static constexpr uint32_t Darker = IM_COL32(128, 128, 128, 255);
397 static constexpr uint32_t Error = IM_COL32(232, 55, 55, 255);
398 static constexpr uint32_t Disabled = IM_COL32(237, 201, 142, 95);
399 }
400
401 namespace Titlebar
402 {
403 static constexpr uint32_t Default = IM_COL32(30, 30, 30, 255);
404 static constexpr uint32_t Orange = IM_COL32(186, 66, 30, 255);
405 static constexpr uint32_t Green = IM_COL32(22, 84, 29, 255);
406 static constexpr uint32_t Red = IM_COL32(190, 32, 30, 255);
407 }
408
409}
410
Definition Color.h:354