GFXprim
2D bitmap graphics library with emphasis on speed and correctness
Loading...
Searching...
No Matches
gp_fn_per_bpp.gen.h
1// SPDX-License-Identifier: GPL-2.1-or-later
2/*
3 * gp_fn_per_bpp.gen.h
4 *
5 * GENERATED on 2023 07 15 23:40:53 from gp_fn_per_bpp.gen.h.t
6 *
7 * DO NOT MODIFY THIS FILE DIRECTLY!
8 */
9#ifndef GP_FN_PER_BPP_GEN_H
10#define GP_FN_PER_BPP_GEN_H
11
12/*
13 * All FnPerBpp macros
14 *
15 * Copyright (C) 2011-2014 Cyril Hrubis <metan@ucw.cz>
16 */
17
18/*
19 * Macros used to create draving functions from macros.
20 */
21#define GP_DEF_FN_PER_BPP(fname, MACRO_NAME, fdraw) \
22 GP_DEF_FN_FOR_BPP(fname, MACRO_NAME, fdraw, 1BPP_LE) \
23 GP_DEF_FN_FOR_BPP(fname, MACRO_NAME, fdraw, 1BPP_BE) \
24 GP_DEF_FN_FOR_BPP(fname, MACRO_NAME, fdraw, 2BPP_LE) \
25 GP_DEF_FN_FOR_BPP(fname, MACRO_NAME, fdraw, 2BPP_BE) \
26 GP_DEF_FN_FOR_BPP(fname, MACRO_NAME, fdraw, 4BPP_LE) \
27 GP_DEF_FN_FOR_BPP(fname, MACRO_NAME, fdraw, 4BPP_BE) \
28 GP_DEF_FN_FOR_BPP(fname, MACRO_NAME, fdraw, 8BPP) \
29 GP_DEF_FN_FOR_BPP(fname, MACRO_NAME, fdraw, 16BPP) \
30 GP_DEF_FN_FOR_BPP(fname, MACRO_NAME, fdraw, 24BPP) \
31 GP_DEF_FN_FOR_BPP(fname, MACRO_NAME, fdraw, 32BPP) \
32 GP_DEF_FN_FOR_BPP(fname, MACRO_NAME, fdraw, 18BPP_LE) \
33
34/*
35 * Branch on bpp and bit_endian.
36 */
37#define GP_FN_PER_BPP(FN_NAME, bpp, bit_endian, ...) \
38 switch (bpp) { \
39 case 1: \
40 if (bit_endian == GP_BIT_ENDIAN_LE) \
41 FN_NAME##_1BPP_LE(__VA_ARGS__); \
42 else \
43 FN_NAME##_1BPP_BE(__VA_ARGS__); \
44 break; \
45 case 2: \
46 if (bit_endian == GP_BIT_ENDIAN_LE) \
47 FN_NAME##_2BPP_LE(__VA_ARGS__); \
48 else \
49 FN_NAME##_2BPP_BE(__VA_ARGS__); \
50 break; \
51 case 4: \
52 if (bit_endian == GP_BIT_ENDIAN_LE) \
53 FN_NAME##_4BPP_LE(__VA_ARGS__); \
54 else \
55 FN_NAME##_4BPP_BE(__VA_ARGS__); \
56 break; \
57 case 8: \
58 FN_NAME##_8BPP(__VA_ARGS__); \
59 break; \
60 case 16: \
61 FN_NAME##_16BPP(__VA_ARGS__); \
62 break; \
63 case 24: \
64 FN_NAME##_24BPP(__VA_ARGS__); \
65 break; \
66 case 32: \
67 FN_NAME##_32BPP(__VA_ARGS__); \
68 break; \
69 case 18: \
70 FN_NAME##_18BPP_LE(__VA_ARGS__); \
71 break; \
72 }
73
74/*
75 * Branch on bpp and bit_endian.
76 */
77#define GP_FN_RET_PER_BPP(FN_NAME, bpp, bit_endian, ...) \
78 switch (bpp) { \
79 case 1: \
80 if (bit_endian == GP_BIT_ENDIAN_LE) \
81 return FN_NAME##_1BPP_LE(__VA_ARGS__); \
82 else \
83 return FN_NAME##_1BPP_BE(__VA_ARGS__); \
84 break; \
85 case 2: \
86 if (bit_endian == GP_BIT_ENDIAN_LE) \
87 return FN_NAME##_2BPP_LE(__VA_ARGS__); \
88 else \
89 return FN_NAME##_2BPP_BE(__VA_ARGS__); \
90 break; \
91 case 4: \
92 if (bit_endian == GP_BIT_ENDIAN_LE) \
93 return FN_NAME##_4BPP_LE(__VA_ARGS__); \
94 else \
95 return FN_NAME##_4BPP_BE(__VA_ARGS__); \
96 break; \
97 case 8: \
98 return FN_NAME##_8BPP(__VA_ARGS__); \
99 break; \
100 case 16: \
101 return FN_NAME##_16BPP(__VA_ARGS__); \
102 break; \
103 case 24: \
104 return FN_NAME##_24BPP(__VA_ARGS__); \
105 break; \
106 case 32: \
107 return FN_NAME##_32BPP(__VA_ARGS__); \
108 break; \
109 case 18: \
110 return FN_NAME##_18BPP_LE(__VA_ARGS__); \
111 break; \
112 }
113
114#endif /* GP_FN_PER_BPP_GEN_H */