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 2024 06 04 21:38:33 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
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,
117 GP_PIXEL_RGB666,
123 GP_PIXEL_RGB332,
129 GP_PIXEL_CMYK8888,
135 GP_PIXEL_P2,
141 GP_PIXEL_P4,
147 GP_PIXEL_P8,
153 GP_PIXEL_G1_DB,
159 GP_PIXEL_G2_DB,
165 GP_PIXEL_G4_DB,
171 GP_PIXEL_G1_UB,
177 GP_PIXEL_G2_UB,
183 GP_PIXEL_G4_UB,
189 GP_PIXEL_G8,
195 GP_PIXEL_GA88,
201 GP_PIXEL_G16,
205
206#define GP_PIXEL_UNKNOWN GP_PIXEL_UNKNOWN
207#define GP_PIXEL_RGB101010 GP_PIXEL_RGB101010
208#define GP_PIXEL_xRGB8888 GP_PIXEL_xRGB8888
209#define GP_PIXEL_RGBA8888 GP_PIXEL_RGBA8888
210#define GP_PIXEL_RGB888 GP_PIXEL_RGB888
211#define GP_PIXEL_BGR888 GP_PIXEL_BGR888
212#define GP_PIXEL_RGB555 GP_PIXEL_RGB555
213#define GP_PIXEL_RGB565 GP_PIXEL_RGB565
214#define GP_PIXEL_RGB666 GP_PIXEL_RGB666
215#define GP_PIXEL_RGB332 GP_PIXEL_RGB332
216#define GP_PIXEL_CMYK8888 GP_PIXEL_CMYK8888
217#define GP_PIXEL_P2 GP_PIXEL_P2
218#define GP_PIXEL_P4 GP_PIXEL_P4
219#define GP_PIXEL_P8 GP_PIXEL_P8
220#define GP_PIXEL_G1_DB GP_PIXEL_G1_DB
221#define GP_PIXEL_G2_DB GP_PIXEL_G2_DB
222#define GP_PIXEL_G4_DB GP_PIXEL_G4_DB
223#define GP_PIXEL_G1_UB GP_PIXEL_G1_UB
224#define GP_PIXEL_G2_UB GP_PIXEL_G2_UB
225#define GP_PIXEL_G4_UB GP_PIXEL_G4_UB
226#define GP_PIXEL_G8 GP_PIXEL_G8
227#define GP_PIXEL_GA88 GP_PIXEL_GA88
228#define GP_PIXEL_G16 GP_PIXEL_G16
229
235#define GP_PIXEL_CHANS_MAX 4
236
237
247#define GP_PIXEL_ADDR_RGB101010(pixmap, x, y) GP_PIXEL_ADDR_32BPP(pixmap, x, y)
248#define GP_PIXEL_ADDR_OFFSET_RGB101010(x) GP_PIXEL_ADDR_OFFSET_32BPP(x)
249
250/*
251 * macros for branching on pixel_type
252 */
253
263#define GP_PIXEL_ADDR_xRGB8888(pixmap, x, y) GP_PIXEL_ADDR_32BPP(pixmap, x, y)
264#define GP_PIXEL_ADDR_OFFSET_xRGB8888(x) GP_PIXEL_ADDR_OFFSET_32BPP(x)
265
266/*
267 * macros for branching on pixel_type
268 */
269
279#define GP_PIXEL_ADDR_RGBA8888(pixmap, x, y) GP_PIXEL_ADDR_32BPP(pixmap, x, y)
280#define GP_PIXEL_ADDR_OFFSET_RGBA8888(x) GP_PIXEL_ADDR_OFFSET_32BPP(x)
281
282/*
283 * macros for branching on pixel_type
284 */
285
295#define GP_PIXEL_ADDR_RGB888(pixmap, x, y) GP_PIXEL_ADDR_24BPP(pixmap, x, y)
296#define GP_PIXEL_ADDR_OFFSET_RGB888(x) GP_PIXEL_ADDR_OFFSET_24BPP(x)
297
298/*
299 * macros for branching on pixel_type
300 */
301
311#define GP_PIXEL_ADDR_BGR888(pixmap, x, y) GP_PIXEL_ADDR_24BPP(pixmap, x, y)
312#define GP_PIXEL_ADDR_OFFSET_BGR888(x) GP_PIXEL_ADDR_OFFSET_24BPP(x)
313
314/*
315 * macros for branching on pixel_type
316 */
317
327#define GP_PIXEL_ADDR_RGB555(pixmap, x, y) GP_PIXEL_ADDR_16BPP(pixmap, x, y)
328#define GP_PIXEL_ADDR_OFFSET_RGB555(x) GP_PIXEL_ADDR_OFFSET_16BPP(x)
329
330/*
331 * macros for branching on pixel_type
332 */
333
343#define GP_PIXEL_ADDR_RGB565(pixmap, x, y) GP_PIXEL_ADDR_16BPP(pixmap, x, y)
344#define GP_PIXEL_ADDR_OFFSET_RGB565(x) GP_PIXEL_ADDR_OFFSET_16BPP(x)
345
346/*
347 * macros for branching on pixel_type
348 */
349
359#define GP_PIXEL_ADDR_RGB666(pixmap, x, y) GP_PIXEL_ADDR_18BPP_DB(pixmap, x, y)
360#define GP_PIXEL_ADDR_OFFSET_RGB666(x) GP_PIXEL_ADDR_OFFSET_18BPP_DB(x)
361
362/*
363 * macros for branching on pixel_type
364 */
365
375#define GP_PIXEL_ADDR_RGB332(pixmap, x, y) GP_PIXEL_ADDR_8BPP(pixmap, x, y)
376#define GP_PIXEL_ADDR_OFFSET_RGB332(x) GP_PIXEL_ADDR_OFFSET_8BPP(x)
377
378/*
379 * macros for branching on pixel_type
380 */
381
391#define GP_PIXEL_ADDR_CMYK8888(pixmap, x, y) GP_PIXEL_ADDR_32BPP(pixmap, x, y)
392#define GP_PIXEL_ADDR_OFFSET_CMYK8888(x) GP_PIXEL_ADDR_OFFSET_32BPP(x)
393
394/*
395 * macros for branching on pixel_type
396 */
397
407#define GP_PIXEL_ADDR_P2(pixmap, x, y) GP_PIXEL_ADDR_2BPP_UB(pixmap, x, y)
408#define GP_PIXEL_ADDR_OFFSET_P2(x) GP_PIXEL_ADDR_OFFSET_2BPP_UB(x)
409
410/*
411 * macros for branching on pixel_type
412 */
413
423#define GP_PIXEL_ADDR_P4(pixmap, x, y) GP_PIXEL_ADDR_4BPP_UB(pixmap, x, y)
424#define GP_PIXEL_ADDR_OFFSET_P4(x) GP_PIXEL_ADDR_OFFSET_4BPP_UB(x)
425
426/*
427 * macros for branching on pixel_type
428 */
429
439#define GP_PIXEL_ADDR_P8(pixmap, x, y) GP_PIXEL_ADDR_8BPP(pixmap, x, y)
440#define GP_PIXEL_ADDR_OFFSET_P8(x) GP_PIXEL_ADDR_OFFSET_8BPP(x)
441
442/*
443 * macros for branching on pixel_type
444 */
445
455#define GP_PIXEL_ADDR_G1_DB(pixmap, x, y) GP_PIXEL_ADDR_1BPP_DB(pixmap, x, y)
456#define GP_PIXEL_ADDR_OFFSET_G1_DB(x) GP_PIXEL_ADDR_OFFSET_1BPP_DB(x)
457
458/*
459 * macros for branching on pixel_type
460 */
461
471#define GP_PIXEL_ADDR_G2_DB(pixmap, x, y) GP_PIXEL_ADDR_2BPP_DB(pixmap, x, y)
472#define GP_PIXEL_ADDR_OFFSET_G2_DB(x) GP_PIXEL_ADDR_OFFSET_2BPP_DB(x)
473
474/*
475 * macros for branching on pixel_type
476 */
477
487#define GP_PIXEL_ADDR_G4_DB(pixmap, x, y) GP_PIXEL_ADDR_4BPP_DB(pixmap, x, y)
488#define GP_PIXEL_ADDR_OFFSET_G4_DB(x) GP_PIXEL_ADDR_OFFSET_4BPP_DB(x)
489
490/*
491 * macros for branching on pixel_type
492 */
493
503#define GP_PIXEL_ADDR_G1_UB(pixmap, x, y) GP_PIXEL_ADDR_1BPP_UB(pixmap, x, y)
504#define GP_PIXEL_ADDR_OFFSET_G1_UB(x) GP_PIXEL_ADDR_OFFSET_1BPP_UB(x)
505
506/*
507 * macros for branching on pixel_type
508 */
509
519#define GP_PIXEL_ADDR_G2_UB(pixmap, x, y) GP_PIXEL_ADDR_2BPP_UB(pixmap, x, y)
520#define GP_PIXEL_ADDR_OFFSET_G2_UB(x) GP_PIXEL_ADDR_OFFSET_2BPP_UB(x)
521
522/*
523 * macros for branching on pixel_type
524 */
525
535#define GP_PIXEL_ADDR_G4_UB(pixmap, x, y) GP_PIXEL_ADDR_4BPP_UB(pixmap, x, y)
536#define GP_PIXEL_ADDR_OFFSET_G4_UB(x) GP_PIXEL_ADDR_OFFSET_4BPP_UB(x)
537
538/*
539 * macros for branching on pixel_type
540 */
541
551#define GP_PIXEL_ADDR_G8(pixmap, x, y) GP_PIXEL_ADDR_8BPP(pixmap, x, y)
552#define GP_PIXEL_ADDR_OFFSET_G8(x) GP_PIXEL_ADDR_OFFSET_8BPP(x)
553
554/*
555 * macros for branching on pixel_type
556 */
557
567#define GP_PIXEL_ADDR_GA88(pixmap, x, y) GP_PIXEL_ADDR_16BPP(pixmap, x, y)
568#define GP_PIXEL_ADDR_OFFSET_GA88(x) GP_PIXEL_ADDR_OFFSET_16BPP(x)
569
570/*
571 * macros for branching on pixel_type
572 */
573
583#define GP_PIXEL_ADDR_G16(pixmap, x, y) GP_PIXEL_ADDR_16BPP(pixmap, x, y)
584#define GP_PIXEL_ADDR_OFFSET_G16(x) GP_PIXEL_ADDR_OFFSET_16BPP(x)
585
586/*
587 * macros for branching on pixel_type
588 */
589
590#define GP_FN_PER_PIXELTYPE(FN_NAME, type, ...)\
591 switch (type) { \
592 case GP_PIXEL_RGB101010:\
593 FN_NAME##_RGB101010(__VA_ARGS__);\
594 break;\
595 case GP_PIXEL_xRGB8888:\
596 FN_NAME##_xRGB8888(__VA_ARGS__);\
597 break;\
598 case GP_PIXEL_RGBA8888:\
599 FN_NAME##_RGBA8888(__VA_ARGS__);\
600 break;\
601 case GP_PIXEL_RGB888:\
602 FN_NAME##_RGB888(__VA_ARGS__);\
603 break;\
604 case GP_PIXEL_BGR888:\
605 FN_NAME##_BGR888(__VA_ARGS__);\
606 break;\
607 case GP_PIXEL_RGB555:\
608 FN_NAME##_RGB555(__VA_ARGS__);\
609 break;\
610 case GP_PIXEL_RGB565:\
611 FN_NAME##_RGB565(__VA_ARGS__);\
612 break;\
613 case GP_PIXEL_RGB666:\
614 FN_NAME##_RGB666(__VA_ARGS__);\
615 break;\
616 case GP_PIXEL_RGB332:\
617 FN_NAME##_RGB332(__VA_ARGS__);\
618 break;\
619 case GP_PIXEL_CMYK8888:\
620 FN_NAME##_CMYK8888(__VA_ARGS__);\
621 break;\
622 case GP_PIXEL_P2:\
623 FN_NAME##_P2(__VA_ARGS__);\
624 break;\
625 case GP_PIXEL_P4:\
626 FN_NAME##_P4(__VA_ARGS__);\
627 break;\
628 case GP_PIXEL_P8:\
629 FN_NAME##_P8(__VA_ARGS__);\
630 break;\
631 case GP_PIXEL_G1_DB:\
632 FN_NAME##_G1_DB(__VA_ARGS__);\
633 break;\
634 case GP_PIXEL_G2_DB:\
635 FN_NAME##_G2_DB(__VA_ARGS__);\
636 break;\
637 case GP_PIXEL_G4_DB:\
638 FN_NAME##_G4_DB(__VA_ARGS__);\
639 break;\
640 case GP_PIXEL_G1_UB:\
641 FN_NAME##_G1_UB(__VA_ARGS__);\
642 break;\
643 case GP_PIXEL_G2_UB:\
644 FN_NAME##_G2_UB(__VA_ARGS__);\
645 break;\
646 case GP_PIXEL_G4_UB:\
647 FN_NAME##_G4_UB(__VA_ARGS__);\
648 break;\
649 case GP_PIXEL_G8:\
650 FN_NAME##_G8(__VA_ARGS__);\
651 break;\
652 case GP_PIXEL_GA88:\
653 FN_NAME##_GA88(__VA_ARGS__);\
654 break;\
655 case GP_PIXEL_G16:\
656 FN_NAME##_G16(__VA_ARGS__);\
657 break;\
658 default: GP_ABORT("Invalid PixelType %d", type);\
659 }
660
661#define GP_FN_RET_PER_PIXELTYPE(FN_NAME, type, ...)\
662 switch (type) { \
663 case GP_PIXEL_RGB101010:\
664 return FN_NAME##_RGB101010(__VA_ARGS__);\
665 case GP_PIXEL_xRGB8888:\
666 return FN_NAME##_xRGB8888(__VA_ARGS__);\
667 case GP_PIXEL_RGBA8888:\
668 return FN_NAME##_RGBA8888(__VA_ARGS__);\
669 case GP_PIXEL_RGB888:\
670 return FN_NAME##_RGB888(__VA_ARGS__);\
671 case GP_PIXEL_BGR888:\
672 return FN_NAME##_BGR888(__VA_ARGS__);\
673 case GP_PIXEL_RGB555:\
674 return FN_NAME##_RGB555(__VA_ARGS__);\
675 case GP_PIXEL_RGB565:\
676 return FN_NAME##_RGB565(__VA_ARGS__);\
677 case GP_PIXEL_RGB666:\
678 return FN_NAME##_RGB666(__VA_ARGS__);\
679 case GP_PIXEL_RGB332:\
680 return FN_NAME##_RGB332(__VA_ARGS__);\
681 case GP_PIXEL_CMYK8888:\
682 return FN_NAME##_CMYK8888(__VA_ARGS__);\
683 case GP_PIXEL_P2:\
684 return FN_NAME##_P2(__VA_ARGS__);\
685 case GP_PIXEL_P4:\
686 return FN_NAME##_P4(__VA_ARGS__);\
687 case GP_PIXEL_P8:\
688 return FN_NAME##_P8(__VA_ARGS__);\
689 case GP_PIXEL_G1_DB:\
690 return FN_NAME##_G1_DB(__VA_ARGS__);\
691 case GP_PIXEL_G2_DB:\
692 return FN_NAME##_G2_DB(__VA_ARGS__);\
693 case GP_PIXEL_G4_DB:\
694 return FN_NAME##_G4_DB(__VA_ARGS__);\
695 case GP_PIXEL_G1_UB:\
696 return FN_NAME##_G1_UB(__VA_ARGS__);\
697 case GP_PIXEL_G2_UB:\
698 return FN_NAME##_G2_UB(__VA_ARGS__);\
699 case GP_PIXEL_G4_UB:\
700 return FN_NAME##_G4_UB(__VA_ARGS__);\
701 case GP_PIXEL_G8:\
702 return FN_NAME##_G8(__VA_ARGS__);\
703 case GP_PIXEL_GA88:\
704 return FN_NAME##_GA88(__VA_ARGS__);\
705 case GP_PIXEL_G16:\
706 return FN_NAME##_G16(__VA_ARGS__);\
707 default: GP_ABORT("Invalid PixelType %d", type);\
708 }
709
710#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.