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 2024 04 14 13:32:53 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 = 0x71,
37 GP_PIXEL_PACK_1BPP_UB = 0x01,
39 GP_PIXEL_PACK_2BPP_DB = 0x72,
41 GP_PIXEL_PACK_2BPP_UB = 0x02,
43 GP_PIXEL_PACK_4BPP_DB = 0x74,
45 GP_PIXEL_PACK_4BPP_UB = 0x04,
47 GP_PIXEL_PACK_8BPP = 0x08,
49 GP_PIXEL_PACK_16BPP = 0x10,
51 GP_PIXEL_PACK_24BPP = 0x18,
53 GP_PIXEL_PACK_32BPP = 0x20,
55 GP_PIXEL_PACK_18BPP_DB = 0x82,
57
58#define GP_PIXEL_PACK_1BPP_DB GP_PIXEL_PACK_1BPP_DB
59#define GP_PIXEL_PACK_1BPP_UB GP_PIXEL_PACK_1BPP_UB
60#define GP_PIXEL_PACK_2BPP_DB GP_PIXEL_PACK_2BPP_DB
61#define GP_PIXEL_PACK_2BPP_UB GP_PIXEL_PACK_2BPP_UB
62#define GP_PIXEL_PACK_4BPP_DB GP_PIXEL_PACK_4BPP_DB
63#define GP_PIXEL_PACK_4BPP_UB GP_PIXEL_PACK_4BPP_UB
64#define GP_PIXEL_PACK_8BPP GP_PIXEL_PACK_8BPP
65#define GP_PIXEL_PACK_16BPP GP_PIXEL_PACK_16BPP
66#define GP_PIXEL_PACK_24BPP GP_PIXEL_PACK_24BPP
67#define GP_PIXEL_PACK_32BPP GP_PIXEL_PACK_32BPP
68#define GP_PIXEL_PACK_18BPP_DB GP_PIXEL_PACK_18BPP_DB
69
78
79/*
80 * Branch on pixel packing.
81 */
82#define GP_FN_RET_PER_PACK(FN_NAME, pack, ...) \
83 switch (pack) { \
84 case GP_PIXEL_PACK_1BPP_DB: \
85 return FN_NAME##_1BPP_DB(__VA_ARGS__); \
86 case GP_PIXEL_PACK_1BPP_UB: \
87 return FN_NAME##_1BPP_UB(__VA_ARGS__); \
88 case GP_PIXEL_PACK_2BPP_DB: \
89 return FN_NAME##_2BPP_DB(__VA_ARGS__); \
90 case GP_PIXEL_PACK_2BPP_UB: \
91 return FN_NAME##_2BPP_UB(__VA_ARGS__); \
92 case GP_PIXEL_PACK_4BPP_DB: \
93 return FN_NAME##_4BPP_DB(__VA_ARGS__); \
94 case GP_PIXEL_PACK_4BPP_UB: \
95 return FN_NAME##_4BPP_UB(__VA_ARGS__); \
96 case GP_PIXEL_PACK_8BPP: \
97 return FN_NAME##_8BPP(__VA_ARGS__); \
98 case GP_PIXEL_PACK_16BPP: \
99 return FN_NAME##_16BPP(__VA_ARGS__); \
100 case GP_PIXEL_PACK_24BPP: \
101 return FN_NAME##_24BPP(__VA_ARGS__); \
102 case GP_PIXEL_PACK_32BPP: \
103 return FN_NAME##_32BPP(__VA_ARGS__); \
104 case GP_PIXEL_PACK_18BPP_DB: \
105 return FN_NAME##_18BPP_DB(__VA_ARGS__); \
106 }
107
108/*
109 * Branch on pixel packing.
110 */
111#define GP_FN_PER_PACK(FN_NAME, pack, ...) \
112 switch (pack) { \
113 case GP_PIXEL_PACK_1BPP_DB: \
114 FN_NAME##_1BPP_DB(__VA_ARGS__); \
115 break; \
116 case GP_PIXEL_PACK_1BPP_UB: \
117 FN_NAME##_1BPP_UB(__VA_ARGS__); \
118 break; \
119 case GP_PIXEL_PACK_2BPP_DB: \
120 FN_NAME##_2BPP_DB(__VA_ARGS__); \
121 break; \
122 case GP_PIXEL_PACK_2BPP_UB: \
123 FN_NAME##_2BPP_UB(__VA_ARGS__); \
124 break; \
125 case GP_PIXEL_PACK_4BPP_DB: \
126 FN_NAME##_4BPP_DB(__VA_ARGS__); \
127 break; \
128 case GP_PIXEL_PACK_4BPP_UB: \
129 FN_NAME##_4BPP_UB(__VA_ARGS__); \
130 break; \
131 case GP_PIXEL_PACK_8BPP: \
132 FN_NAME##_8BPP(__VA_ARGS__); \
133 break; \
134 case GP_PIXEL_PACK_16BPP: \
135 FN_NAME##_16BPP(__VA_ARGS__); \
136 break; \
137 case GP_PIXEL_PACK_24BPP: \
138 FN_NAME##_24BPP(__VA_ARGS__); \
139 break; \
140 case GP_PIXEL_PACK_32BPP: \
141 FN_NAME##_32BPP(__VA_ARGS__); \
142 break; \
143 case GP_PIXEL_PACK_18BPP_DB: \
144 FN_NAME##_18BPP_DB(__VA_ARGS__); \
145 break; \
146 }
147
148/*
149 * Branch on gp_pixel_type argument.
150 */
151#define GP_FN_PER_PACK_PIXELTYPE(FN_NAME, type, ...) \
152 GP_FN_PER_PACK(FN_NAME, gp_pixel_types[type].pack, __VA_ARGS__)
153
154/*
155 * Branch on gp_pixel_type argument.
156 */
157#define GP_FN_RET_PER_PACK_PIXELTYPE(FN_NAME, type, ...) \
158 GP_FN_RET_PER_PACK(FN_NAME, gp_pixel_types[type].pack, __VA_ARGS__)
159
160/*
161 * Branch on pixmap argument.
162 */
163#define GP_FN_PER_PACK_PIXMAP(FN_NAME, pixmap, ...) \
164 GP_FN_PER_PACK(FN_NAME, gp_pixel_types[pixmap->pixel_type].pack, __VA_ARGS__)
165
166/*
167 * Branch on pixmap argument.
168 */
169#define GP_FN_RET_PER_PACK_PIXMAP(FN_NAME, pixmap, ...) \
170 GP_FN_RET_PER_PACK(FN_NAME, gp_pixel_types[pixmap->pixel_type].pack, __VA_ARGS__)
171
172//TODO REMOVE WHEN LAST ALGO IS CONVERTED
173#define GP_DEF_DRAW_FN_PER_PACK(fname, MACRO_NAME) \
174 GP_DEF_FN_PER_PACK(fname, MACRO_NAME, gp_putpixel_raw_clipped_)
175
176#define GP_DEF_FN_PER_PACK(fname, MACRO_NAME, fdraw) \
177 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 1BPP_DB) \
178 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 1BPP_UB) \
179 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 2BPP_DB) \
180 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 2BPP_UB) \
181 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 4BPP_DB) \
182 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 4BPP_UB) \
183 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 8BPP) \
184 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 16BPP) \
185 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 24BPP) \
186 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 32BPP) \
187 GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, 18BPP_DB) \
188
189#define GP_DEF_FN_FOR_PACK(fname, MACRO_NAME, fdraw, bpp) \
190 MACRO_NAME(fname##_##bpp, gp_pixmap *, gp_pixel, fdraw##bpp)
191
192#define GP_DEF_FILL_FN_PER_PACK(fname, MACRO_NAME) \
193 GP_DEF_FN_PER_PACK(fname, MACRO_NAME, gp_hline_raw_)
194
195#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.