GFXprim
2D bitmap graphics library with emphasis on speed and correctness
Loading...
Searching...
No Matches
gp_pixel.gen.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.1-or-later
2/*
3 * gp_pixel.gen.h
4 *
5 * GENERATED on 2025 11 30 21:24:31 from gp_pixel.gen.h.t
6 *
7 * DO NOT MODIFY THIS FILE DIRECTLY!
8 */
9#ifndef GP_PIXEL_GEN_H
10#define GP_PIXEL_GEN_H
11
12/*
13 * Pixel type definitions and functions.
14 * Do not include directly, use gp_pixel.h
15 *
16 * Copyright (C) 2011 Tomas Gavenciak <gavento@ucw.cz>
17 * Copyright (C) 2013-2024 Cyril Hrubis <metan@ucw.cz>
18 */
19
28
62typedef enum gp_pixel_type {
69 GP_PIXEL_UNKNOWN,
75 GP_PIXEL_RGB101010,
81 GP_PIXEL_xRGB8888,
87 GP_PIXEL_RGBA8888,
93 GP_PIXEL_RGB888,
99 GP_PIXEL_BGR888,
105 GP_PIXEL_RGB555,
111 GP_PIXEL_RGB565_BE,
117 GP_PIXEL_RGB565_LE,
123 GP_PIXEL_RGB666,
129 GP_PIXEL_RGB332,
135 GP_PIXEL_CMYK8888,
141 GP_PIXEL_P2,
147 GP_PIXEL_P4,
153 GP_PIXEL_P8,
159 GP_PIXEL_G1_DB,
165 GP_PIXEL_G2_DB,
171 GP_PIXEL_G4_DB,
177 GP_PIXEL_G1_UB,
183 GP_PIXEL_G2_UB,
189 GP_PIXEL_G4_UB,
195 GP_PIXEL_G8,
201 GP_PIXEL_GA88,
207 GP_PIXEL_G16,
211
212#define GP_PIXEL_UNKNOWN GP_PIXEL_UNKNOWN
213#define GP_PIXEL_RGB101010 GP_PIXEL_RGB101010
214#define GP_PIXEL_xRGB8888 GP_PIXEL_xRGB8888
215#define GP_PIXEL_RGBA8888 GP_PIXEL_RGBA8888
216#define GP_PIXEL_RGB888 GP_PIXEL_RGB888
217#define GP_PIXEL_BGR888 GP_PIXEL_BGR888
218#define GP_PIXEL_RGB555 GP_PIXEL_RGB555
219#define GP_PIXEL_RGB565_BE GP_PIXEL_RGB565_BE
220#define GP_PIXEL_RGB565_LE GP_PIXEL_RGB565_LE
221#define GP_PIXEL_RGB666 GP_PIXEL_RGB666
222#define GP_PIXEL_RGB332 GP_PIXEL_RGB332
223#define GP_PIXEL_CMYK8888 GP_PIXEL_CMYK8888
224#define GP_PIXEL_P2 GP_PIXEL_P2
225#define GP_PIXEL_P4 GP_PIXEL_P4
226#define GP_PIXEL_P8 GP_PIXEL_P8
227#define GP_PIXEL_G1_DB GP_PIXEL_G1_DB
228#define GP_PIXEL_G2_DB GP_PIXEL_G2_DB
229#define GP_PIXEL_G4_DB GP_PIXEL_G4_DB
230#define GP_PIXEL_G1_UB GP_PIXEL_G1_UB
231#define GP_PIXEL_G2_UB GP_PIXEL_G2_UB
232#define GP_PIXEL_G4_UB GP_PIXEL_G4_UB
233#define GP_PIXEL_G8 GP_PIXEL_G8
234#define GP_PIXEL_GA88 GP_PIXEL_GA88
235#define GP_PIXEL_G16 GP_PIXEL_G16
236
242#define GP_PIXEL_CHANS_MAX 4
243
244
254#define GP_PIXEL_ADDR_RGB101010(pixmap, x, y) GP_PIXEL_ADDR_32BPP(pixmap, x, y)
255#define GP_PIXEL_ADDR_OFFSET_RGB101010(x) GP_PIXEL_ADDR_OFFSET_32BPP(x)
256
257/*
258 * macros for branching on pixel_type
259 */
260
270#define GP_PIXEL_ADDR_xRGB8888(pixmap, x, y) GP_PIXEL_ADDR_32BPP(pixmap, x, y)
271#define GP_PIXEL_ADDR_OFFSET_xRGB8888(x) GP_PIXEL_ADDR_OFFSET_32BPP(x)
272
273/*
274 * macros for branching on pixel_type
275 */
276
286#define GP_PIXEL_ADDR_RGBA8888(pixmap, x, y) GP_PIXEL_ADDR_32BPP(pixmap, x, y)
287#define GP_PIXEL_ADDR_OFFSET_RGBA8888(x) GP_PIXEL_ADDR_OFFSET_32BPP(x)
288
289/*
290 * macros for branching on pixel_type
291 */
292
302#define GP_PIXEL_ADDR_RGB888(pixmap, x, y) GP_PIXEL_ADDR_24BPP(pixmap, x, y)
303#define GP_PIXEL_ADDR_OFFSET_RGB888(x) GP_PIXEL_ADDR_OFFSET_24BPP(x)
304
305/*
306 * macros for branching on pixel_type
307 */
308
318#define GP_PIXEL_ADDR_BGR888(pixmap, x, y) GP_PIXEL_ADDR_24BPP(pixmap, x, y)
319#define GP_PIXEL_ADDR_OFFSET_BGR888(x) GP_PIXEL_ADDR_OFFSET_24BPP(x)
320
321/*
322 * macros for branching on pixel_type
323 */
324
334#define GP_PIXEL_ADDR_RGB555(pixmap, x, y) GP_PIXEL_ADDR_16BPP_BE(pixmap, x, y)
335#define GP_PIXEL_ADDR_OFFSET_RGB555(x) GP_PIXEL_ADDR_OFFSET_16BPP_BE(x)
336
337/*
338 * macros for branching on pixel_type
339 */
340
350#define GP_PIXEL_ADDR_RGB565_BE(pixmap, x, y) GP_PIXEL_ADDR_16BPP_BE(pixmap, x, y)
351#define GP_PIXEL_ADDR_OFFSET_RGB565_BE(x) GP_PIXEL_ADDR_OFFSET_16BPP_BE(x)
352
353/*
354 * macros for branching on pixel_type
355 */
356
366#define GP_PIXEL_ADDR_RGB565_LE(pixmap, x, y) GP_PIXEL_ADDR_16BPP_LE(pixmap, x, y)
367#define GP_PIXEL_ADDR_OFFSET_RGB565_LE(x) GP_PIXEL_ADDR_OFFSET_16BPP_LE(x)
368
369/*
370 * macros for branching on pixel_type
371 */
372
382#define GP_PIXEL_ADDR_RGB666(pixmap, x, y) GP_PIXEL_ADDR_18BPP_DB(pixmap, x, y)
383#define GP_PIXEL_ADDR_OFFSET_RGB666(x) GP_PIXEL_ADDR_OFFSET_18BPP_DB(x)
384
385/*
386 * macros for branching on pixel_type
387 */
388
398#define GP_PIXEL_ADDR_RGB332(pixmap, x, y) GP_PIXEL_ADDR_8BPP(pixmap, x, y)
399#define GP_PIXEL_ADDR_OFFSET_RGB332(x) GP_PIXEL_ADDR_OFFSET_8BPP(x)
400
401/*
402 * macros for branching on pixel_type
403 */
404
414#define GP_PIXEL_ADDR_CMYK8888(pixmap, x, y) GP_PIXEL_ADDR_32BPP(pixmap, x, y)
415#define GP_PIXEL_ADDR_OFFSET_CMYK8888(x) GP_PIXEL_ADDR_OFFSET_32BPP(x)
416
417/*
418 * macros for branching on pixel_type
419 */
420
430#define GP_PIXEL_ADDR_P2(pixmap, x, y) GP_PIXEL_ADDR_2BPP_UB(pixmap, x, y)
431#define GP_PIXEL_ADDR_OFFSET_P2(x) GP_PIXEL_ADDR_OFFSET_2BPP_UB(x)
432
433/*
434 * macros for branching on pixel_type
435 */
436
446#define GP_PIXEL_ADDR_P4(pixmap, x, y) GP_PIXEL_ADDR_4BPP_UB(pixmap, x, y)
447#define GP_PIXEL_ADDR_OFFSET_P4(x) GP_PIXEL_ADDR_OFFSET_4BPP_UB(x)
448
449/*
450 * macros for branching on pixel_type
451 */
452
462#define GP_PIXEL_ADDR_P8(pixmap, x, y) GP_PIXEL_ADDR_8BPP(pixmap, x, y)
463#define GP_PIXEL_ADDR_OFFSET_P8(x) GP_PIXEL_ADDR_OFFSET_8BPP(x)
464
465/*
466 * macros for branching on pixel_type
467 */
468
478#define GP_PIXEL_ADDR_G1_DB(pixmap, x, y) GP_PIXEL_ADDR_1BPP_DB(pixmap, x, y)
479#define GP_PIXEL_ADDR_OFFSET_G1_DB(x) GP_PIXEL_ADDR_OFFSET_1BPP_DB(x)
480
481/*
482 * macros for branching on pixel_type
483 */
484
494#define GP_PIXEL_ADDR_G2_DB(pixmap, x, y) GP_PIXEL_ADDR_2BPP_DB(pixmap, x, y)
495#define GP_PIXEL_ADDR_OFFSET_G2_DB(x) GP_PIXEL_ADDR_OFFSET_2BPP_DB(x)
496
497/*
498 * macros for branching on pixel_type
499 */
500
510#define GP_PIXEL_ADDR_G4_DB(pixmap, x, y) GP_PIXEL_ADDR_4BPP_DB(pixmap, x, y)
511#define GP_PIXEL_ADDR_OFFSET_G4_DB(x) GP_PIXEL_ADDR_OFFSET_4BPP_DB(x)
512
513/*
514 * macros for branching on pixel_type
515 */
516
526#define GP_PIXEL_ADDR_G1_UB(pixmap, x, y) GP_PIXEL_ADDR_1BPP_UB(pixmap, x, y)
527#define GP_PIXEL_ADDR_OFFSET_G1_UB(x) GP_PIXEL_ADDR_OFFSET_1BPP_UB(x)
528
529/*
530 * macros for branching on pixel_type
531 */
532
542#define GP_PIXEL_ADDR_G2_UB(pixmap, x, y) GP_PIXEL_ADDR_2BPP_UB(pixmap, x, y)
543#define GP_PIXEL_ADDR_OFFSET_G2_UB(x) GP_PIXEL_ADDR_OFFSET_2BPP_UB(x)
544
545/*
546 * macros for branching on pixel_type
547 */
548
558#define GP_PIXEL_ADDR_G4_UB(pixmap, x, y) GP_PIXEL_ADDR_4BPP_UB(pixmap, x, y)
559#define GP_PIXEL_ADDR_OFFSET_G4_UB(x) GP_PIXEL_ADDR_OFFSET_4BPP_UB(x)
560
561/*
562 * macros for branching on pixel_type
563 */
564
574#define GP_PIXEL_ADDR_G8(pixmap, x, y) GP_PIXEL_ADDR_8BPP(pixmap, x, y)
575#define GP_PIXEL_ADDR_OFFSET_G8(x) GP_PIXEL_ADDR_OFFSET_8BPP(x)
576
577/*
578 * macros for branching on pixel_type
579 */
580
590#define GP_PIXEL_ADDR_GA88(pixmap, x, y) GP_PIXEL_ADDR_16BPP_LE(pixmap, x, y)
591#define GP_PIXEL_ADDR_OFFSET_GA88(x) GP_PIXEL_ADDR_OFFSET_16BPP_LE(x)
592
593/*
594 * macros for branching on pixel_type
595 */
596
606#define GP_PIXEL_ADDR_G16(pixmap, x, y) GP_PIXEL_ADDR_16BPP_LE(pixmap, x, y)
607#define GP_PIXEL_ADDR_OFFSET_G16(x) GP_PIXEL_ADDR_OFFSET_16BPP_LE(x)
608
609/*
610 * macros for branching on pixel_type
611 */
612
613#define GP_FN_PER_PIXELTYPE(FN_NAME, type, ...)\
614 switch (type) { \
615 case GP_PIXEL_RGB101010:\
616 FN_NAME##_RGB101010(__VA_ARGS__);\
617 break;\
618 case GP_PIXEL_xRGB8888:\
619 FN_NAME##_xRGB8888(__VA_ARGS__);\
620 break;\
621 case GP_PIXEL_RGBA8888:\
622 FN_NAME##_RGBA8888(__VA_ARGS__);\
623 break;\
624 case GP_PIXEL_RGB888:\
625 FN_NAME##_RGB888(__VA_ARGS__);\
626 break;\
627 case GP_PIXEL_BGR888:\
628 FN_NAME##_BGR888(__VA_ARGS__);\
629 break;\
630 case GP_PIXEL_RGB555:\
631 FN_NAME##_RGB555(__VA_ARGS__);\
632 break;\
633 case GP_PIXEL_RGB565_BE:\
634 FN_NAME##_RGB565_BE(__VA_ARGS__);\
635 break;\
636 case GP_PIXEL_RGB565_LE:\
637 FN_NAME##_RGB565_LE(__VA_ARGS__);\
638 break;\
639 case GP_PIXEL_RGB666:\
640 FN_NAME##_RGB666(__VA_ARGS__);\
641 break;\
642 case GP_PIXEL_RGB332:\
643 FN_NAME##_RGB332(__VA_ARGS__);\
644 break;\
645 case GP_PIXEL_CMYK8888:\
646 FN_NAME##_CMYK8888(__VA_ARGS__);\
647 break;\
648 case GP_PIXEL_P2:\
649 FN_NAME##_P2(__VA_ARGS__);\
650 break;\
651 case GP_PIXEL_P4:\
652 FN_NAME##_P4(__VA_ARGS__);\
653 break;\
654 case GP_PIXEL_P8:\
655 FN_NAME##_P8(__VA_ARGS__);\
656 break;\
657 case GP_PIXEL_G1_DB:\
658 FN_NAME##_G1_DB(__VA_ARGS__);\
659 break;\
660 case GP_PIXEL_G2_DB:\
661 FN_NAME##_G2_DB(__VA_ARGS__);\
662 break;\
663 case GP_PIXEL_G4_DB:\
664 FN_NAME##_G4_DB(__VA_ARGS__);\
665 break;\
666 case GP_PIXEL_G1_UB:\
667 FN_NAME##_G1_UB(__VA_ARGS__);\
668 break;\
669 case GP_PIXEL_G2_UB:\
670 FN_NAME##_G2_UB(__VA_ARGS__);\
671 break;\
672 case GP_PIXEL_G4_UB:\
673 FN_NAME##_G4_UB(__VA_ARGS__);\
674 break;\
675 case GP_PIXEL_G8:\
676 FN_NAME##_G8(__VA_ARGS__);\
677 break;\
678 case GP_PIXEL_GA88:\
679 FN_NAME##_GA88(__VA_ARGS__);\
680 break;\
681 case GP_PIXEL_G16:\
682 FN_NAME##_G16(__VA_ARGS__);\
683 break;\
684 default: GP_ABORT("Invalid PixelType %d", type);\
685 }
686
687#define GP_FN_RET_PER_PIXELTYPE(FN_NAME, type, ...)\
688 switch (type) { \
689 case GP_PIXEL_RGB101010:\
690 return FN_NAME##_RGB101010(__VA_ARGS__);\
691 case GP_PIXEL_xRGB8888:\
692 return FN_NAME##_xRGB8888(__VA_ARGS__);\
693 case GP_PIXEL_RGBA8888:\
694 return FN_NAME##_RGBA8888(__VA_ARGS__);\
695 case GP_PIXEL_RGB888:\
696 return FN_NAME##_RGB888(__VA_ARGS__);\
697 case GP_PIXEL_BGR888:\
698 return FN_NAME##_BGR888(__VA_ARGS__);\
699 case GP_PIXEL_RGB555:\
700 return FN_NAME##_RGB555(__VA_ARGS__);\
701 case GP_PIXEL_RGB565_BE:\
702 return FN_NAME##_RGB565_BE(__VA_ARGS__);\
703 case GP_PIXEL_RGB565_LE:\
704 return FN_NAME##_RGB565_LE(__VA_ARGS__);\
705 case GP_PIXEL_RGB666:\
706 return FN_NAME##_RGB666(__VA_ARGS__);\
707 case GP_PIXEL_RGB332:\
708 return FN_NAME##_RGB332(__VA_ARGS__);\
709 case GP_PIXEL_CMYK8888:\
710 return FN_NAME##_CMYK8888(__VA_ARGS__);\
711 case GP_PIXEL_P2:\
712 return FN_NAME##_P2(__VA_ARGS__);\
713 case GP_PIXEL_P4:\
714 return FN_NAME##_P4(__VA_ARGS__);\
715 case GP_PIXEL_P8:\
716 return FN_NAME##_P8(__VA_ARGS__);\
717 case GP_PIXEL_G1_DB:\
718 return FN_NAME##_G1_DB(__VA_ARGS__);\
719 case GP_PIXEL_G2_DB:\
720 return FN_NAME##_G2_DB(__VA_ARGS__);\
721 case GP_PIXEL_G4_DB:\
722 return FN_NAME##_G4_DB(__VA_ARGS__);\
723 case GP_PIXEL_G1_UB:\
724 return FN_NAME##_G1_UB(__VA_ARGS__);\
725 case GP_PIXEL_G2_UB:\
726 return FN_NAME##_G2_UB(__VA_ARGS__);\
727 case GP_PIXEL_G4_UB:\
728 return FN_NAME##_G4_UB(__VA_ARGS__);\
729 case GP_PIXEL_G8:\
730 return FN_NAME##_G8(__VA_ARGS__);\
731 case GP_PIXEL_GA88:\
732 return FN_NAME##_GA88(__VA_ARGS__);\
733 case GP_PIXEL_G16:\
734 return FN_NAME##_G16(__VA_ARGS__);\
735 default: GP_ABORT("Invalid PixelType %d", type);\
736 }
737
738#endif /* GP_PIXEL_GEN_H */
gp_pixel_type
List of all pixel types.
@ GP_PIXEL_MAX
Last valid pixel type has value GP_PIXEL_MAX-1.