Gama C Library
Gama C API Documentation
Loading...
Searching...
No Matches
color.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdlib.h>
4
5/**
6 * @brief Type definition for color values in RGBA format.
7 */
8typedef unsigned int gmColor;
9
10/**
11 * @brief Extracts the red component from a color.
12 * @param col The color to extract from.
13 * @return The red component (0-255).
14 */
15#define gm_red(col) ((col & 0xFF000000) >> 24)
16
17/**
18 * @brief Extracts the green component from a color.
19 * @param col The color to extract from.
20 * @return The green component (0-255).
21 */
22#define gm_green(col) ((col & 0x00FF0000) >> 16)
23
24/**
25 * @brief Extracts the blue component from a color.
26 * @param col The color to extract from.
27 * @return The blue component (0-255).
28 */
29#define gm_blue(col) ((col & 0x0000FF00) >> 8)
30
31/**
32 * @brief Extracts the alpha component from a color.
33 * @param col The color to extract from.
34 * @return The alpha component (0-255).
35 */
36#define gm_alpha(col) (col & 0x000000FF)
37
38/**
39 * @brief Creates a color from RGBA components.
40 * @param r Red component (0-255).
41 * @param g Green component (0-255).
42 * @param b Blue component (0-255).
43 * @param a Alpha component (0-255).
44 * @return A gmColor value.
45 */
46static inline gmColor gm_rgba(int r, int g, int b, int a) {
47 return (unsigned)(abs(r) % 256) << 24 | (unsigned)(abs(g) % 256) << 16 |
48 (unsigned)(abs(b) % 256) << 8 | (unsigned)(abs(a) % 256);
49}
50
51/**
52 * @brief Creates a color from RGB components.
53 * @param r Red component (0-255).
54 * @param g Green component (0-255).
55 * @param b Blue component (0-255).
56 * @return A gmColor value.
57 */
58static inline gmColor gm_rgb(int r, int g, int b) {
59 return (unsigned)(abs(r) % 256) << 24 | (unsigned)(abs(g) % 256) << 16 |
60 (unsigned)(abs(b) % 256) << 8 | 0xFF;
61}
62/**
63 * @brief Sets the red component of a color.
64 * @param col The original color.
65 * @param red The new red component (0-255).
66 * @return A new color with the updated red component.
67 */
68static inline gmColor gm_set_red(gmColor col, int red) {
69 return (col & 0x00FFFFFF) | (unsigned)(abs(red) % 256) << 24;
70}
71
72/**
73 * @brief Sets the green component of a color.
74 * @param col The original color.
75 * @param green The new green component (0-255).
76 * @return A new color with the updated green component.
77 */
78static inline gmColor gm_set_green(gmColor col, int green) {
79 return (col & 0xFF00FFFF) | (unsigned)(abs(green) % 256) << 16;
80}
81
82/**
83 * @brief Sets the blue component of a color.
84 * @param col The original color.
85 * @param blue The new blue component (0-255).
86 * @return A new color with the updated blue component.
87 */
88static inline gmColor gm_set_blue(gmColor col, int blue) {
89 return (col & 0xFFFF00FF) | (unsigned)(abs(blue) % 256) << 8;
90}
91
92/**
93 * @brief Sets the alpha component of a color.
94 * @param col The original color.
95 * @param alpha The new alpha component (0-255).
96 * @return A new color with the updated alpha component.
97 */
98static inline gmColor gm_set_alpha(gmColor col, int alpha) {
99 return (col & 0xFFFFFF00) | (unsigned)(abs(alpha) % 256);
100}
101
102/* Predefined color constants */
103/**
104 * @name Predefined Colors
105 * @{
106 */
107
108/**
109 * @brief Opaque color (full alpha).
110 */
111#define GM_OPAQUE (gmColor)0xFFFFFFFF
112
113/**
114 * @brief Transparent color (zero alpha).
115 */
116#define GM_TRANSPARENT (gmColor)0xFFFFFF00
117
118/**
119 * @brief Translucent color (partial alpha).
120 */
121#define GM_TRANSLUCENT (gmColor)0xFFFFFF99
122
123/**
124 * @brief The official Gama brand color.
125 */
126#define GM_GAMA (gmColor)0xAA77AAFF
127
128/**
129 * @brief Alice blue color.
130 */
131#define GM_ALICEBLUE (gmColor)0xF0F8FFFF
132
133/**
134 * @brief Antique white color.
135 */
136#define GM_ANTIQUEWHITE (gmColor)0xFAEBD7FF
137
138/**
139 * @brief Aqua color.
140 */
141#define GM_AQUA (gmColor)0x00FFFFFF
142
143/**
144 * @brief Aquamarine color.
145 */
146#define GM_AQUAMARINE (gmColor)0x7FFFD4FF
147
148/**
149 * @brief Azure color.
150 */
151#define GM_AZURE (gmColor)0xF0FFFFFF
152
153/**
154 * @brief Beige color.
155 */
156#define GM_BEIGE (gmColor)0xF5F5DCFF
157
158/**
159 * @brief Bisque color.
160 */
161#define GM_BISQUE (gmColor)0xFFE4C4FF
162
163/**
164 * @brief Black color.
165 */
166#define GM_BLACK (gmColor)0x000000FF
167
168/**
169 * @brief Blanched almond color.
170 */
171#define GM_BLANCHEDALMOND (gmColor)0xFFEBCDFF
172
173/**
174 * @brief Blue color.
175 */
176#define GM_BLUE (gmColor)0x0000FFFF
177
178/**
179 * @brief Blue violet color.
180 */
181#define GM_BLUEVIOLET (gmColor)0x8A2BE2FF
182
183/**
184 * @brief Brown color.
185 */
186#define GM_BROWN (gmColor)0xA52A2AFF
187
188/**
189 * @brief Burlywood color.
190 */
191#define GM_BURLYWOOD (gmColor)0xDEB887FF
192
193/**
194 * @brief Cadet blue color.
195 */
196#define GM_CADETBLUE (gmColor)0x5F9EA0FF
197
198/**
199 * @brief Chartreuse color.
200 */
201#define GM_CHARTREUSE (gmColor)0x7FFF00FF
202
203/**
204 * @brief Chocolate color.
205 */
206#define GM_CHOCOLATE (gmColor)0xD2691EFF
207
208/**
209 * @brief Coral color.
210 */
211#define GM_CORAL (gmColor)0xFF7F50FF
212
213/**
214 * @brief Cornflower blue color.
215 */
216#define GM_CORNFLOWERBLUE (gmColor)0x6495EDFF
217
218/**
219 * @brief Cornsilk color.
220 */
221#define GM_CORNSILK (gmColor)0xFFF8DCFF
222
223/**
224 * @brief Crimson color.
225 */
226#define GM_CRIMSON (gmColor)0xDC143CFF
227
228/**
229 * @brief Cyan color.
230 */
231#define GM_CYAN (gmColor)0x00FFFFFF
232
233/**
234 * @brief Dark blue color.
235 */
236#define GM_DARKBLUE (gmColor)0x00008BFF
237
238/**
239 * @brief Dark cyan color.
240 */
241#define GM_DARKCYAN (gmColor)0x008B8BFF
242
243/**
244 * @brief Dark goldenrod color.
245 */
246#define GM_DARKGOLDENROD (gmColor)0xB8860BFF
247
248/**
249 * @brief Dark gray color.
250 */
251#define GM_DARKGRAY (gmColor)0xA9A9A9FF
252
253/**
254 * @brief Dark grey color (same as dark gray).
255 */
256#define GM_DARKGREY (gmColor)0xA9A9A9FF
257
258/**
259 * @brief Dark green color.
260 */
261#define GM_DARKGREEN (gmColor)0x006400FF
262
263/**
264 * @brief Dark khaki color.
265 */
266#define GM_DARKKHAKI (gmColor)0xBDB76BFF
267
268/**
269 * @brief Dark magenta color.
270 */
271#define GM_DARKMAGENTA (gmColor)0x8B008BFF
272
273/**
274 * @brief Dark olive green color.
275 */
276#define GM_DARKOLIVEGREEN (gmColor)0x556B2FFF
277
278/**
279 * @brief Dark orange color.
280 */
281#define GM_DARKORANGE (gmColor)0xFF8C00FF
282
283/**
284 * @brief Dark orchid color.
285 */
286#define GM_DARKORCHID (gmColor)0x9932CCFF
287
288/**
289 * @brief Dark red color.
290 */
291#define GM_DARKRED (gmColor)0x8B0000FF
292
293/**
294 * @brief Dark salmon color.
295 */
296#define GM_DARKSALMON (gmColor)0xE9967AFF
297
298/**
299 * @brief Dark sea green color.
300 */
301#define GM_DARKSEAGREEN (gmColor)0x8FBC8FFF
302
303/**
304 * @brief Dark slate blue color.
305 */
306#define GM_DARKSLATEBLUE (gmColor)0x483D8BFF
307
308/**
309 * @brief Dark slate gray color.
310 */
311#define GM_DARKSLATEGRAY (gmColor)0x2F4F4FFF
312
313/**
314 * @brief Dark slate grey color (same as dark slate gray).
315 */
316#define GM_DARKSLATEGREY (gmColor)0x2F4F4FFF
317
318/**
319 * @brief Dark turquoise color.
320 */
321#define GM_DARKTURQUOISE (gmColor)0x00CED1FF
322
323/**
324 * @brief Dark violet color.
325 */
326#define GM_DARKVIOLET (gmColor)0x9400D3FF
327
328/**
329 * @brief Deep pink color.
330 */
331#define GM_DEEPPINK (gmColor)0xFF1493FF
332
333/**
334 * @brief Deep sky blue color.
335 */
336#define GM_DEEPSKYBLUE (gmColor)0x00BFFFFF
337
338/**
339 * @brief Dim gray color.
340 */
341#define GM_DIMGRAY (gmColor)0x696969FF
342
343/**
344 * @brief Dim grey color (same as dim gray).
345 */
346#define GM_DIMGREY (gmColor)0x696969FF
347
348/**
349 * @brief Dodger blue color.
350 */
351#define GM_DODGERBLUE (gmColor)0x1E90FFFF
352
353/**
354 * @brief Fire brick color.
355 */
356#define GM_FIREBRICK (gmColor)0xB22222FF
357
358/**
359 * @brief Floral white color.
360 */
361#define GM_FLORALWHITE (gmColor)0xFFFAF0FF
362
363/**
364 * @brief Forest green color.
365 */
366#define GM_FORESTGREEN (gmColor)0x228B22FF
367
368/**
369 * @brief Fuchsia color.
370 */
371#define GM_FUCHSIA (gmColor)0xFF00FFFF
372
373/**
374 * @brief Gainsboro color.
375 */
376#define GM_GAINSBORO (gmColor)0xDCDCDCFF
377
378/**
379 * @brief Ghost white color.
380 */
381#define GM_GHOSTWHITE (gmColor)0xF8F8FFFF
382
383/**
384 * @brief Gold color.
385 */
386#define GM_GOLD (gmColor)0xFFD700FF
387
388/**
389 * @brief Goldenrod color.
390 */
391#define GM_GOLDENROD (gmColor)0xDAA520FF
392
393/**
394 * @brief Gray color.
395 */
396#define GM_GRAY (gmColor)0x808080FF
397
398/**
399 * @brief Grey color (same as gray).
400 */
401#define GM_GREY (gmColor)0x808080FF
402
403/**
404 * @brief Green color.
405 */
406#define GM_GREEN (gmColor)0x008000FF
407
408/**
409 * @brief Green yellow color.
410 */
411#define GM_GREENYELLOW (gmColor)0xADFF2FFF
412
413/**
414 * @brief Honeydew color.
415 */
416#define GM_HONEYDEW (gmColor)0xF0FFF0FF
417
418/**
419 * @brief Hot pink color.
420 */
421#define GM_HOTPINK (gmColor)0xFF69B4FF
422
423/**
424 * @brief Indian red color.
425 */
426#define GM_INDIANRED (gmColor)0xCD5C5CFF
427
428/**
429 * @brief Indigo color.
430 */
431#define GM_INDIGO (gmColor)0x4B0082FF
432
433/**
434 * @brief Ivory color.
435 */
436#define GM_IVORY (gmColor)0xFFFFF0FF
437
438/**
439 * @brief Khaki color.
440 */
441#define GM_KHAKI (gmColor)0xF0E68CFF
442
443/**
444 * @brief Lavender color.
445 */
446#define GM_LAVENDER (gmColor)0xE6E6FAFF
447
448/**
449 * @brief Lavender blush color.
450 */
451#define GM_LAVENDERBLUSH (gmColor)0xFFF0F5FF
452
453/**
454 * @brief Lawn green color.
455 */
456#define GM_LAWNGREEN (gmColor)0x7CFC00FF
457
458/**
459 * @brief Lemon chiffon color.
460 */
461#define GM_LEMONCHIFFON (gmColor)0xFFFACDFF
462
463/**
464 * @brief Light blue color.
465 */
466#define GM_LIGHTBLUE (gmColor)0xADD8E6FF
467
468/**
469 * @brief Light coral color.
470 */
471#define GM_LIGHTCORAL (gmColor)0xF08080FF
472
473/**
474 * @brief Light cyan color.
475 */
476#define GM_LIGHTCYAN (gmColor)0xE0FFFFFF
477
478/**
479 * @brief Light goldenrod yellow color.
480 */
481#define GM_LIGHTGOLDENRODYELLOW (gmColor)0xFAFAD2FF
482
483/**
484 * @brief Light gray color.
485 */
486#define GM_LIGHTGRAY (gmColor)0xD3D3D3FF
487
488/**
489 * @brief Light grey color (same as light gray).
490 */
491#define GM_LIGHTGREY (gmColor)0xD3D3D3FF
492
493/**
494 * @brief Light green color.
495 */
496#define GM_LIGHTGREEN (gmColor)0x90EE90FF
497
498/**
499 * @brief Light pink color.
500 */
501#define GM_LIGHTPINK (gmColor)0xFFB6C1FF
502
503/**
504 * @brief Light salmon color.
505 */
506#define GM_LIGHTSALMON (gmColor)0xFFA07AFF
507
508/**
509 * @brief Light sea green color.
510 */
511#define GM_LIGHTSEAGREEN (gmColor)0x20B2AAFF
512
513/**
514 * @brief Light sky blue color.
515 */
516#define GM_LIGHTSKYBLUE (gmColor)0x87CEFAFF
517
518/**
519 * @brief Light slate gray color.
520 */
521#define GM_LIGHTSLATEGRAY (gmColor)0x778899FF
522
523/**
524 * @brief Light slate grey color (same as light slate gray).
525 */
526#define GM_LIGHTSLATEGREY (gmColor)0x778899FF
527
528/**
529 * @brief Light steel blue color.
530 */
531#define GM_LIGHTSTEELBLUE (gmColor)0xB0C4DEFF
532
533/**
534 * @brief Light yellow color.
535 */
536#define GM_LIGHTYELLOW (gmColor)0xFFFFE0FF
537
538/**
539 * @brief Lime color.
540 */
541#define GM_LIME (gmColor)0x00FF00FF
542
543/**
544 * @brief Lime green color.
545 */
546#define GM_LIMEGREEN (gmColor)0x32CD32FF
547
548/**
549 * @brief Linen color.
550 */
551#define GM_LINEN (gmColor)0xFAF0E6FF
552
553/**
554 * @brief Magenta color.
555 */
556#define GM_MAGENTA (gmColor)0xFF00FFFF
557
558/**
559 * @brief Maroon color.
560 */
561#define GM_MAROON (gmColor)0x800000FF
562
563/**
564 * @brief Medium aquamarine color.
565 */
566#define GM_MEDIUMAQUAMARINE (gmColor)0x66CDAAFF
567
568/**
569 * @brief Medium blue color.
570 */
571#define GM_MEDIUMBLUE (gmColor)0x0000CDFF
572
573/**
574 * @brief Medium orchid color.
575 */
576#define GM_MEDIUMORCHID (gmColor)0xBA55D3FF
577
578/**
579 * @brief Medium purple color.
580 */
581#define GM_MEDIUMPURPLE (gmColor)0x9370DBFF
582
583/**
584 * @brief Medium sea green color.
585 */
586#define GM_MEDIUMSEAGREEN (gmColor)0x3CB371FF
587
588/**
589 * @brief Medium slate blue color.
590 */
591#define GM_MEDIUMSLATEBLUE (gmColor)0x7B68EEFF
592
593/**
594 * @brief Medium spring green color.
595 */
596#define GM_MEDIUMSPRINGGREEN (gmColor)0x00FA9AFF
597
598/**
599 * @brief Medium turquoise color.
600 */
601#define GM_MEDIUMTURQUOISE (gmColor)0x48D1CCFF
602
603/**
604 * @brief Medium violet red color.
605 */
606#define GM_MEDIUMVIOLETRED (gmColor)0xC71585FF
607
608/**
609 * @brief Midnight blue color.
610 */
611#define GM_MIDNIGHTBLUE (gmColor)0x191970FF
612
613/**
614 * @brief Mint cream color.
615 */
616#define GM_MINTCREAM (gmColor)0xF5FFFAFF
617
618/**
619 * @brief Misty rose color.
620 */
621#define GM_MISTYROSE (gmColor)0xFFE4E1FF
622
623/**
624 * @brief Moccasin color.
625 */
626#define GM_MOCCASIN (gmColor)0xFFE4B5FF
627
628/**
629 * @brief Navajo white color.
630 */
631#define GM_NAVAJOWHITE (gmColor)0xFFDEADFF
632
633/**
634 * @brief Navy color.
635 */
636#define GM_NAVY (gmColor)0x000080FF
637
638/**
639 * @brief Old lace color.
640 */
641#define GM_OLDLACE (gmColor)0xFDF5E6FF
642
643/**
644 * @brief Olive color.
645 */
646#define GM_OLIVE (gmColor)0x808000FF
647
648/**
649 * @brief Olive drab color.
650 */
651#define GM_OLIVEDRAB (gmColor)0x6B8E23FF
652
653/**
654 * @brief Orange color.
655 */
656#define GM_ORANGE (gmColor)0xFFA500FF
657
658/**
659 * @brief Orange red color.
660 */
661#define GM_ORANGERED (gmColor)0xFF4500FF
662
663/**
664 * @brief Orchid color.
665 */
666#define GM_ORCHID (gmColor)0xDA70D6FF
667
668/**
669 * @brief Pale goldenrod color.
670 */
671#define GM_PALEGOLDENROD (gmColor)0xEEE8AAFF
672
673/**
674 * @brief Pale green color.
675 */
676#define GM_PALEGREEN (gmColor)0x98FB98FF
677
678/**
679 * @brief Pale turquoise color.
680 */
681#define GM_PALETURQUOISE (gmColor)0xAFEEEEFF
682
683/**
684 * @brief Pale violet red color.
685 */
686#define GM_PALEVIOLETRED (gmColor)0xDB7093FF
687
688/**
689 * @brief Papaya whip color.
690 */
691#define GM_PAPAYAWHIP (gmColor)0xFFEFD5FF
692
693/**
694 * @brief Peach puff color.
695 */
696#define GM_PEACHPUFF (gmColor)0xFFDAB9FF
697
698/**
699 * @brief Peru color.
700 */
701#define GM_PERU (gmColor)0xCD853FFF
702
703/**
704 * @brief Pink color.
705 */
706#define GM_PINK (gmColor)0xFFC0CBFF
707
708/**
709 * @brief Plum color.
710 */
711#define GM_PLUM (gmColor)0xDDA0DDFF
712
713/**
714 * @brief Powder blue color.
715 */
716#define GM_POWDERBLUE (gmColor)0xB0E0E6FF
717
718/**
719 * @brief Purple color.
720 */
721#define GM_PURPLE (gmColor)0x800080FF
722
723/**
724 * @brief Rebecca purple color.
725 */
726#define GM_REBECCAPURPLE (gmColor)0x663399FF
727
728/**
729 * @brief Red color.
730 */
731#define GM_RED (gmColor)0xFF0000FF
732
733/**
734 * @brief Rosy brown color.
735 */
736#define GM_ROSYBROWN (gmColor)0xBC8F8FFF
737
738/**
739 * @brief Royal blue color.
740 */
741#define GM_ROYALBLUE (gmColor)0x4169E1FF
742
743/**
744 * @brief Saddle brown color.
745 */
746#define GM_SADDLEBROWN (gmColor)0x8B4513FF
747
748/**
749 * @brief Salmon color.
750 */
751#define GM_SALMON (gmColor)0xFA8072FF
752
753/**
754 * @brief Sandy brown color.
755 */
756#define GM_SANDYBROWN (gmColor)0xF4A460FF
757
758/**
759 * @brief Sea green color.
760 */
761#define GM_SEAGREEN (gmColor)0x2E8B57FF
762
763/**
764 * @brief Sea shell color.
765 */
766#define GM_SEASHELL (gmColor)0xFFF5EEFF
767
768/**
769 * @brief Sienna color.
770 */
771#define GM_SIENNA (gmColor)0xA0522DFF
772
773/**
774 * @brief Silver color.
775 */
776#define GM_SILVER (gmColor)0xC0C0C0FF
777
778/**
779 * @brief Sky blue color.
780 */
781#define GM_SKYBLUE (gmColor)0x87CEEBFF
782
783/**
784 * @brief Slate blue color.
785 */
786#define GM_SLATEBLUE (gmColor)0x6A5ACDFF
787
788/**
789 * @brief Slate gray color.
790 */
791#define GM_SLATEGRAY (gmColor)0x708090FF
792
793/**
794 * @brief Slate grey color (same as slate gray).
795 */
796#define GM_SLATEGREY (gmColor)0x708090FF
797
798/**
799 * @brief Snow color.
800 */
801#define GM_SNOW (gmColor)0xFFFAFAFF
802
803/**
804 * @brief Spring green color.
805 */
806#define GM_SPRINGGREEN (gmColor)0x00FF7FFF
807
808/**
809 * @brief Steel blue color.
810 */
811#define GM_STEELBLUE (gmColor)0x4682B4FF
812
813/**
814 * @brief Tan color.
815 */
816#define GM_TAN (gmColor)0xD2B48CFF
817
818/**
819 * @brief Teal color.
820 */
821#define GM_TEAL (gmColor)0x008080FF
822
823/**
824 * @brief Thistle color.
825 */
826#define GM_THISTLE (gmColor)0xD8BFD8FF
827
828/**
829 * @brief Tomato color.
830 */
831#define GM_TOMATO (gmColor)0xFF6347FF
832
833/**
834 * @brief Turquoise color.
835 */
836#define GM_TURQUOISE (gmColor)0x40E0D0FF
837
838/**
839 * @brief Violet color.
840 */
841#define GM_VIOLET (gmColor)0xEE82EEFF
842
843/**
844 * @brief Wheat color.
845 */
846#define GM_WHEAT (gmColor)0xF5DEB3FF
847
848/**
849 * @brief White color.
850 */
851#define GM_WHITE (gmColor)0xFFFFFFFF
852
853/**
854 * @brief White smoke color.
855 */
856#define GM_WHITESMOKE (gmColor)0xF5F5F5FF
857
858/**
859 * @brief Yellow color.
860 */
861#define GM_YELLOW (gmColor)0xFFFF00FF
862
863/**
864 * @brief Yellow green color.
865 */
866#define GM_YELLOWGREEN (gmColor)0x9ACD32FF
867
868/**
869 * @}
870 */
unsigned int gmColor
Type definition for color values in RGBA format.
Definition color.h:8