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