GFXprim
2D bitmap graphics library with emphasis on speed and correctness
Loading...
Searching...
No Matches
gp_pixel_pack.gen.h
Go to the documentation of this file.
1// SPDX-License-Identifier: GPL-2.1-or-later
2/*
3 * gp_pixel_pack.gen.h
4 *
5 * GENERATED on 2025 08 01 21:54:28 from gp_pixel_pack.gen.h.t
6 *
7 * DO NOT MODIFY THIS FILE DIRECTLY!
8 */
9#ifndef GP_PIXEL_PACK_GEN_H
10#define GP_PIXEL_PACK_GEN_H
11
12/*
13 * Copyright (C) 2023 Cyril Hrubis <metan@ucw.cz>
14 */
15
33typedef enum gp_pixel_pack {
35 GP_PIXEL_PACK_1BPP_DB = 0xc1,
37 GP_PIXEL_PACK_1BPP_UB = 0x41,
39 GP_PIXEL_PACK_2BPP_DB = 0xc2,
41 GP_PIXEL_PACK_2BPP_UB = 0x42,
43 GP_PIXEL_PACK_4BPP_DB = 0xc4,
45 GP_PIXEL_PACK_4BPP_UB = 0x44,
47 GP_PIXEL_PACK_8BPP = 0x48,
49 GP_PIXEL_PACK_16BPP = 0x50,
51 GP_PIXEL_PACK_16BPP_BE = 0x10,
53 GP_PIXEL_PACK_24BPP = 0x58,
55 GP_PIXEL_PACK_32BPP = 0x60,
57 GP_PIXEL_PACK_18BPP_DB = 0xd2,
59
60#define GP_PIXEL_PACK_1BPP_DB GP_PIXEL_PACK_1BPP_DB
61#define GP_PIXEL_PACK_1BPP_UB GP_PIXEL_PACK_1BPP_UB
62#define GP_PIXEL_PACK_2BPP_DB GP_PIXEL_PACK_2BPP_DB
63#define GP_PIXEL_PACK_2BPP_UB GP_PIXEL_PACK_2BPP_UB
64#define GP_PIXEL_PACK_4BPP_DB GP_PIXEL_PACK_4BPP_DB
65#define GP_PIXEL_PACK_4BPP_UB GP_PIXEL_PACK_4BPP_UB
66#define GP_PIXEL_PACK_8BPP GP_PIXEL_PACK_8BPP
67#define GP_PIXEL_PACK_16BPP GP_PIXEL_PACK_16BPP
68#define GP_PIXEL_PACK_16BPP_BE GP_PIXEL_PACK_16BPP_BE
69#define GP_PIXEL_PACK_24BPP GP_PIXEL_PACK_24BPP
70#define GP_PIXEL_PACK_32BPP GP_PIXEL_PACK_32BPP
71#define GP_PIXEL_PACK_18BPP_DB GP_PIXEL_PACK_18BPP_DB
72
81
82/*
83 * Branch on pixel packing.
84 */
85#define GP_FN_RET_PER_PACK(FN_NAME, pack, ...) \
86 switch (pack) { \
87 case GP_PIXEL_PACK_1BPP_DB: \
88 return FN_NAME##_1BPP_DB(__VA_ARGS__); \
89 case GP_PIXEL_PACK_1BPP_UB: \
90 return FN_NAME##_1BPP_UB(__VA_ARGS__); \
91 case GP_PIXEL_PACK_2BPP_DB: \
92 return FN_NAME##_2BPP_DB(__VA_ARGS__); \
93 case GP_PIXEL_PACK_2BPP_UB: \
94 return FN_NAME##_2BPP_UB(__VA_ARGS__); \
95 case GP_PIXEL_PACK_4BPP_DB: \
96 return FN_NAME##_4BPP_DB(__VA_ARGS__); \
97 case GP_PIXEL_PACK_4BPP_UB: \
98 return FN_NAME##_4BPP_UB(__VA_ARGS__); \
99 case GP_PIXEL_PACK_8BPP: \
100 return FN_NAME##_8BPP(__VA_ARGS__); \
101 case GP_PIXEL_PACK_16BPP: \
102 return FN_NAME##_16BPP(__VA_ARGS__); \
103 case GP_PIXEL_PACK_16BPP_BE: \
104 return FN_NAME##_16BPP_BE(__VA_ARGS__); \
105 case GP_PIXEL_PACK_24BPP: \
106 return FN_NAME##_24BPP(__VA_ARGS__); \
107 case GP_PIXEL_PACK_32BPP: \
108 return FN_NAME##_32BPP(__VA_ARGS__); \
109 case GP_PIXEL_PACK_18BPP_DB: \
110 return FN_NAME##_18BPP_DB(__VA_ARGS__); \
111 }
112
113/*
114 * Branch on pixel packing.
115 */
116#define GP_FN_PER_PACK(FN_NAME, pack, ...) \
117 switch (pack) { \
118 case GP_PIXEL_PACK_1BPP_DB: \
119 FN_NAME##_1BPP_DB(__VA_ARGS__); \
120 break; \
121 case GP_PIXEL_PACK_1BPP_UB: \
122 FN_NAME##_1BPP_UB(__VA_ARGS__); \
123 break; \
124 case GP_PIXEL_PACK_2BPP_DB: \
125 FN_NAME##_2BPP_DB(__VA_ARGS__); \
126 break; \
127 case GP_PIXEL_PACK_2BPP_UB: \
128 FN_NAME##_2BPP_UB(__VA_ARGS__); \
129 break; \
130 case GP_PIXEL_PACK_4BPP_DB: \
131 FN_NAME##_4BPP_DB(__VA_ARGS__); \
132 break; \
133 case GP_PIXEL_PACK_4BPP_UB: \
134 FN_NAME##_4BPP_UB(__VA_ARGS__); \
135 break; \
136 case GP_PIXEL_PACK_8BPP: \
137 FN_NAME##_8BPP(__VA_ARGS__); \
138 break; \
139 case GP_PIXEL_PACK_16BPP: \
140 FN_NAME##_16BPP(__VA_ARGS__); \
141 break; \
142 case GP_PIXEL_PACK_16BPP_BE: \
143 FN_NAME##_16BPP_BE(__VA_ARGS__); \
144 break; \
145 case GP_PIXEL_PACK_24BPP: \
146 FN_NAME##_24BPP(__VA_ARGS__); \
147 break; \
148 case GP_PIXEL_PACK_32BPP: \
149 FN_NAME##_32BPP(__VA_ARGS__); \
150 break; \
151 case GP_PIXEL_PACK_18BPP_DB: \
152 FN_NAME##_18BPP_DB(__VA_ARGS__); \
153 break; \
154 }
155
156/*
157 * Branch on gp_pixel_type argument.
158 */
159#define GP_FN_PER_PACK_PIXELTYPE(FN_NAME, type, ...) \
160 GP_FN_PER_PACK(FN_NAME, gp_pixel_types[type].pack, __VA_ARGS__)
161
162/*
163 * Branch on gp_pixel_type argument.
164 */
165#define GP_FN_RET_PER_PACK_PIXELTYPE(FN_NAME, type, ...) \
166 GP_FN_RET_PER_PACK(FN_NAME, gp_pixel_types[type].pack, __VA_ARGS__)
167
168/*
169 * Branch on pixmap argument.
170 */
171#define GP_FN_PER_PACK_PIXMAP(FN_NAME, pixmap, ...) \
172 GP_FN_PER_PACK(FN_NAME, gp_pixel_types[pixmap->pixel_type].pack, __VA_ARGS__)
173
174/*
175 * Branch on pixmap argument.
176 */
177#define GP_FN_RET_PER_PACK_PIXMAP(FN_NAME, pixmap, ...) \
178 GP_FN_RET_PER_PACK(FN_NAME, gp_pixel_types[pixmap->pixel_type].pack, __VA_ARGS__)
179
180//TODO REMOVE WHEN LAST ALGO IS CONVERTED
181#define GP_DEF_DRAW_FN_PER_PACK(fname, MACRO_NAME) \
182 GP_DEF_FN_PER_PACK(fname, MACRO_NAME, gp_putpixel_raw_clipped_)
183
184#define GP_DEF_FN_PER_PACK(fname, MACRO_NAME, fdraw) \
185 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 1BPP_DB) \
186 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 1BPP_UB) \
187 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 2BPP_DB) \
188 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 2BPP_UB) \
189 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 4BPP_DB) \
190 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 4BPP_UB) \
191 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 8BPP) \
192 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 16BPP) \
193 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 16BPP_BE) \
194 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 24BPP) \
195 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 32BPP) \
196 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 18BPP_DB) \
197
198#define GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, bpp) \
199 MACRO_NAME(fname##_##bpp, gp_pixmap *, gp_pixel, fdraw##bpp)
200
201#define GP_DEF_FILL_FN_PER_PACK(fname, MACRO_NAME) \
202 GP_DEF_FN_PER_PACK(fname, MACRO_NAME, gp_hline_raw_)
203
204#endif /* GP_PIXEL_PACK_GEN_H */
gp_pixel_pack
Pixel packings.
uint8_t gp_pixel_bpp_by_pack(enum gp_pixel_pack pack)
Returns pixel size, e.g. bits per pixel given pixel packing.