9#ifndef GP_MIX_PIXELS_GEN_H
10#define GP_MIX_PIXELS_GEN_H
29#define GP_MIX_PIXELS_LINEAR_RGB101010(pix1, pix2, perc) ({ \
32 R = GP_PIXEL_GET_R_RGB101010(pix1) * (perc); \
33 R += GP_PIXEL_GET_R_RGB101010(pix2) * (255 - (perc)); \
34 R = (R + 128) / 255; \
38 G = GP_PIXEL_GET_G_RGB101010(pix1) * (perc); \
39 G += GP_PIXEL_GET_G_RGB101010(pix2) * (255 - (perc)); \
40 G = (G + 128) / 255; \
44 B = GP_PIXEL_GET_B_RGB101010(pix1) * (perc); \
45 B += GP_PIXEL_GET_B_RGB101010(pix2) * (255 - (perc)); \
46 B = (B + 128) / 255; \
49 GP_PIXEL_CREATE_RGB101010(R, G, B); \
52#define GP_MIX_PIXELS_RGB101010(pix1, pix2, perc) \
53 GP_MIX_PIXELS_LINEAR_RGB101010(pix1, pix2, perc)
60#define GP_MIX_PIXELS_LINEAR_xRGB8888(pix1, pix2, perc) ({ \
63 R = GP_PIXEL_GET_R_xRGB8888(pix1) * (perc); \
64 R += GP_PIXEL_GET_R_xRGB8888(pix2) * (255 - (perc)); \
65 R = (R + 128) / 255; \
69 G = GP_PIXEL_GET_G_xRGB8888(pix1) * (perc); \
70 G += GP_PIXEL_GET_G_xRGB8888(pix2) * (255 - (perc)); \
71 G = (G + 128) / 255; \
75 B = GP_PIXEL_GET_B_xRGB8888(pix1) * (perc); \
76 B += GP_PIXEL_GET_B_xRGB8888(pix2) * (255 - (perc)); \
77 B = (B + 128) / 255; \
80 GP_PIXEL_CREATE_xRGB8888(R, G, B); \
83#define GP_MIX_PIXELS_xRGB8888(pix1, pix2, perc) \
84 GP_MIX_PIXELS_LINEAR_xRGB8888(pix1, pix2, perc)
91#define GP_MIX_PIXELS_LINEAR_RGBA8888(pix1, pix2, perc) ({ \
94 R = GP_PIXEL_GET_R_RGBA8888(pix1) * (perc); \
95 R += GP_PIXEL_GET_R_RGBA8888(pix2) * (255 - (perc)); \
96 R = (R + 128) / 255; \
100 G = GP_PIXEL_GET_G_RGBA8888(pix1) * (perc); \
101 G += GP_PIXEL_GET_G_RGBA8888(pix2) * (255 - (perc)); \
102 G = (G + 128) / 255; \
106 B = GP_PIXEL_GET_B_RGBA8888(pix1) * (perc); \
107 B += GP_PIXEL_GET_B_RGBA8888(pix2) * (255 - (perc)); \
108 B = (B + 128) / 255; \
112 A = GP_PIXEL_GET_A_RGBA8888(pix1) * (perc); \
113 A += GP_PIXEL_GET_A_RGBA8888(pix2) * (255 - (perc)); \
114 A = (A + 128) / 255; \
117 GP_PIXEL_CREATE_RGBA8888(R, G, B, A); \
120#define GP_MIX_PIXELS_RGBA8888(pix1, pix2, perc) \
121 GP_MIX_PIXELS_LINEAR_RGBA8888(pix1, pix2, perc)
128#define GP_MIX_PIXELS_LINEAR_RGB888(pix1, pix2, perc) ({ \
131 R = GP_PIXEL_GET_R_RGB888(pix1) * (perc); \
132 R += GP_PIXEL_GET_R_RGB888(pix2) * (255 - (perc)); \
133 R = (R + 128) / 255; \
137 G = GP_PIXEL_GET_G_RGB888(pix1) * (perc); \
138 G += GP_PIXEL_GET_G_RGB888(pix2) * (255 - (perc)); \
139 G = (G + 128) / 255; \
143 B = GP_PIXEL_GET_B_RGB888(pix1) * (perc); \
144 B += GP_PIXEL_GET_B_RGB888(pix2) * (255 - (perc)); \
145 B = (B + 128) / 255; \
148 GP_PIXEL_CREATE_RGB888(R, G, B); \
151#define GP_MIX_PIXELS_RGB888(pix1, pix2, perc) \
152 GP_MIX_PIXELS_LINEAR_RGB888(pix1, pix2, perc)
159#define GP_MIX_PIXELS_LINEAR_BGR888(pix1, pix2, perc) ({ \
162 B = GP_PIXEL_GET_B_BGR888(pix1) * (perc); \
163 B += GP_PIXEL_GET_B_BGR888(pix2) * (255 - (perc)); \
164 B = (B + 128) / 255; \
168 G = GP_PIXEL_GET_G_BGR888(pix1) * (perc); \
169 G += GP_PIXEL_GET_G_BGR888(pix2) * (255 - (perc)); \
170 G = (G + 128) / 255; \
174 R = GP_PIXEL_GET_R_BGR888(pix1) * (perc); \
175 R += GP_PIXEL_GET_R_BGR888(pix2) * (255 - (perc)); \
176 R = (R + 128) / 255; \
179 GP_PIXEL_CREATE_BGR888(B, G, R); \
182#define GP_MIX_PIXELS_BGR888(pix1, pix2, perc) \
183 GP_MIX_PIXELS_LINEAR_BGR888(pix1, pix2, perc)
190#define GP_MIX_PIXELS_LINEAR_RGB555(pix1, pix2, perc) ({ \
193 R = GP_PIXEL_GET_R_RGB555(pix1) * (perc); \
194 R += GP_PIXEL_GET_R_RGB555(pix2) * (255 - (perc)); \
195 R = (R + 128) / 255; \
199 G = GP_PIXEL_GET_G_RGB555(pix1) * (perc); \
200 G += GP_PIXEL_GET_G_RGB555(pix2) * (255 - (perc)); \
201 G = (G + 128) / 255; \
205 B = GP_PIXEL_GET_B_RGB555(pix1) * (perc); \
206 B += GP_PIXEL_GET_B_RGB555(pix2) * (255 - (perc)); \
207 B = (B + 128) / 255; \
210 GP_PIXEL_CREATE_RGB555(R, G, B); \
213#define GP_MIX_PIXELS_RGB555(pix1, pix2, perc) \
214 GP_MIX_PIXELS_LINEAR_RGB555(pix1, pix2, perc)
221#define GP_MIX_PIXELS_LINEAR_RGB565_BE(pix1, pix2, perc) ({ \
224 R = GP_PIXEL_GET_R_RGB565_BE(pix1) * (perc); \
225 R += GP_PIXEL_GET_R_RGB565_BE(pix2) * (255 - (perc)); \
226 R = (R + 128) / 255; \
230 G = GP_PIXEL_GET_G_RGB565_BE(pix1) * (perc); \
231 G += GP_PIXEL_GET_G_RGB565_BE(pix2) * (255 - (perc)); \
232 G = (G + 128) / 255; \
236 B = GP_PIXEL_GET_B_RGB565_BE(pix1) * (perc); \
237 B += GP_PIXEL_GET_B_RGB565_BE(pix2) * (255 - (perc)); \
238 B = (B + 128) / 255; \
241 GP_PIXEL_CREATE_RGB565_BE(R, G, B); \
244#define GP_MIX_PIXELS_RGB565_BE(pix1, pix2, perc) \
245 GP_MIX_PIXELS_LINEAR_RGB565_BE(pix1, pix2, perc)
252#define GP_MIX_PIXELS_LINEAR_RGB565_LE(pix1, pix2, perc) ({ \
255 R = GP_PIXEL_GET_R_RGB565_LE(pix1) * (perc); \
256 R += GP_PIXEL_GET_R_RGB565_LE(pix2) * (255 - (perc)); \
257 R = (R + 128) / 255; \
261 G = GP_PIXEL_GET_G_RGB565_LE(pix1) * (perc); \
262 G += GP_PIXEL_GET_G_RGB565_LE(pix2) * (255 - (perc)); \
263 G = (G + 128) / 255; \
267 B = GP_PIXEL_GET_B_RGB565_LE(pix1) * (perc); \
268 B += GP_PIXEL_GET_B_RGB565_LE(pix2) * (255 - (perc)); \
269 B = (B + 128) / 255; \
272 GP_PIXEL_CREATE_RGB565_LE(R, G, B); \
275#define GP_MIX_PIXELS_RGB565_LE(pix1, pix2, perc) \
276 GP_MIX_PIXELS_LINEAR_RGB565_LE(pix1, pix2, perc)
283#define GP_MIX_PIXELS_LINEAR_RGB666(pix1, pix2, perc) ({ \
286 R = GP_PIXEL_GET_R_RGB666(pix1) * (perc); \
287 R += GP_PIXEL_GET_R_RGB666(pix2) * (255 - (perc)); \
288 R = (R + 128) / 255; \
292 G = GP_PIXEL_GET_G_RGB666(pix1) * (perc); \
293 G += GP_PIXEL_GET_G_RGB666(pix2) * (255 - (perc)); \
294 G = (G + 128) / 255; \
298 B = GP_PIXEL_GET_B_RGB666(pix1) * (perc); \
299 B += GP_PIXEL_GET_B_RGB666(pix2) * (255 - (perc)); \
300 B = (B + 128) / 255; \
303 GP_PIXEL_CREATE_RGB666(R, G, B); \
306#define GP_MIX_PIXELS_RGB666(pix1, pix2, perc) \
307 GP_MIX_PIXELS_LINEAR_RGB666(pix1, pix2, perc)
314#define GP_MIX_PIXELS_LINEAR_RGB332(pix1, pix2, perc) ({ \
317 R = GP_PIXEL_GET_R_RGB332(pix1) * (perc); \
318 R += GP_PIXEL_GET_R_RGB332(pix2) * (255 - (perc)); \
319 R = (R + 128) / 255; \
323 G = GP_PIXEL_GET_G_RGB332(pix1) * (perc); \
324 G += GP_PIXEL_GET_G_RGB332(pix2) * (255 - (perc)); \
325 G = (G + 128) / 255; \
329 B = GP_PIXEL_GET_B_RGB332(pix1) * (perc); \
330 B += GP_PIXEL_GET_B_RGB332(pix2) * (255 - (perc)); \
331 B = (B + 128) / 255; \
334 GP_PIXEL_CREATE_RGB332(R, G, B); \
337#define GP_MIX_PIXELS_RGB332(pix1, pix2, perc) \
338 GP_MIX_PIXELS_LINEAR_RGB332(pix1, pix2, perc)
345#define GP_MIX_PIXELS_LINEAR_CMYK8888(pix1, pix2, perc) ({ \
348 K = GP_PIXEL_GET_K_CMYK8888(pix1) * (perc); \
349 K += GP_PIXEL_GET_K_CMYK8888(pix2) * (255 - (perc)); \
350 K = (K + 128) / 255; \
354 Y = GP_PIXEL_GET_Y_CMYK8888(pix1) * (perc); \
355 Y += GP_PIXEL_GET_Y_CMYK8888(pix2) * (255 - (perc)); \
356 Y = (Y + 128) / 255; \
360 M = GP_PIXEL_GET_M_CMYK8888(pix1) * (perc); \
361 M += GP_PIXEL_GET_M_CMYK8888(pix2) * (255 - (perc)); \
362 M = (M + 128) / 255; \
366 C = GP_PIXEL_GET_C_CMYK8888(pix1) * (perc); \
367 C += GP_PIXEL_GET_C_CMYK8888(pix2) * (255 - (perc)); \
368 C = (C + 128) / 255; \
371 GP_PIXEL_CREATE_CMYK8888(K, Y, M, C); \
374#define GP_MIX_PIXELS_CMYK8888(pix1, pix2, perc) \
375 GP_MIX_PIXELS_LINEAR_CMYK8888(pix1, pix2, perc)
382#define GP_MIX_PIXELS_LINEAR_P2(pix1, pix2, perc) ({ \
385 P = GP_PIXEL_GET_P_P2(pix1) * (perc); \
386 P += GP_PIXEL_GET_P_P2(pix2) * (255 - (perc)); \
387 P = (P + 128) / 255; \
390 GP_PIXEL_CREATE_P2(P); \
393#define GP_MIX_PIXELS_P2(pix1, pix2, perc) \
394 GP_MIX_PIXELS_LINEAR_P2(pix1, pix2, perc)
401#define GP_MIX_PIXELS_LINEAR_P4(pix1, pix2, perc) ({ \
404 P = GP_PIXEL_GET_P_P4(pix1) * (perc); \
405 P += GP_PIXEL_GET_P_P4(pix2) * (255 - (perc)); \
406 P = (P + 128) / 255; \
409 GP_PIXEL_CREATE_P4(P); \
412#define GP_MIX_PIXELS_P4(pix1, pix2, perc) \
413 GP_MIX_PIXELS_LINEAR_P4(pix1, pix2, perc)
420#define GP_MIX_PIXELS_LINEAR_P8(pix1, pix2, perc) ({ \
423 P = GP_PIXEL_GET_P_P8(pix1) * (perc); \
424 P += GP_PIXEL_GET_P_P8(pix2) * (255 - (perc)); \
425 P = (P + 128) / 255; \
428 GP_PIXEL_CREATE_P8(P); \
431#define GP_MIX_PIXELS_P8(pix1, pix2, perc) \
432 GP_MIX_PIXELS_LINEAR_P8(pix1, pix2, perc)
439#define GP_MIX_PIXELS_LINEAR_G1_DB(pix1, pix2, perc) ({ \
442 V = GP_PIXEL_GET_V_G1_DB(pix1) * (perc); \
443 V += GP_PIXEL_GET_V_G1_DB(pix2) * (255 - (perc)); \
444 V = (V + 128) / 255; \
447 GP_PIXEL_CREATE_G1_DB(V); \
450#define GP_MIX_PIXELS_G1_DB(pix1, pix2, perc) \
451 GP_MIX_PIXELS_LINEAR_G1_DB(pix1, pix2, perc)
458#define GP_MIX_PIXELS_LINEAR_G2_DB(pix1, pix2, perc) ({ \
461 V = GP_PIXEL_GET_V_G2_DB(pix1) * (perc); \
462 V += GP_PIXEL_GET_V_G2_DB(pix2) * (255 - (perc)); \
463 V = (V + 128) / 255; \
466 GP_PIXEL_CREATE_G2_DB(V); \
469#define GP_MIX_PIXELS_G2_DB(pix1, pix2, perc) \
470 GP_MIX_PIXELS_LINEAR_G2_DB(pix1, pix2, perc)
477#define GP_MIX_PIXELS_LINEAR_G4_DB(pix1, pix2, perc) ({ \
480 V = GP_PIXEL_GET_V_G4_DB(pix1) * (perc); \
481 V += GP_PIXEL_GET_V_G4_DB(pix2) * (255 - (perc)); \
482 V = (V + 128) / 255; \
485 GP_PIXEL_CREATE_G4_DB(V); \
488#define GP_MIX_PIXELS_G4_DB(pix1, pix2, perc) \
489 GP_MIX_PIXELS_LINEAR_G4_DB(pix1, pix2, perc)
496#define GP_MIX_PIXELS_LINEAR_G1_UB(pix1, pix2, perc) ({ \
499 V = GP_PIXEL_GET_V_G1_UB(pix1) * (perc); \
500 V += GP_PIXEL_GET_V_G1_UB(pix2) * (255 - (perc)); \
501 V = (V + 128) / 255; \
504 GP_PIXEL_CREATE_G1_UB(V); \
507#define GP_MIX_PIXELS_G1_UB(pix1, pix2, perc) \
508 GP_MIX_PIXELS_LINEAR_G1_UB(pix1, pix2, perc)
515#define GP_MIX_PIXELS_LINEAR_G2_UB(pix1, pix2, perc) ({ \
518 V = GP_PIXEL_GET_V_G2_UB(pix1) * (perc); \
519 V += GP_PIXEL_GET_V_G2_UB(pix2) * (255 - (perc)); \
520 V = (V + 128) / 255; \
523 GP_PIXEL_CREATE_G2_UB(V); \
526#define GP_MIX_PIXELS_G2_UB(pix1, pix2, perc) \
527 GP_MIX_PIXELS_LINEAR_G2_UB(pix1, pix2, perc)
534#define GP_MIX_PIXELS_LINEAR_G4_UB(pix1, pix2, perc) ({ \
537 V = GP_PIXEL_GET_V_G4_UB(pix1) * (perc); \
538 V += GP_PIXEL_GET_V_G4_UB(pix2) * (255 - (perc)); \
539 V = (V + 128) / 255; \
542 GP_PIXEL_CREATE_G4_UB(V); \
545#define GP_MIX_PIXELS_G4_UB(pix1, pix2, perc) \
546 GP_MIX_PIXELS_LINEAR_G4_UB(pix1, pix2, perc)
553#define GP_MIX_PIXELS_LINEAR_G8(pix1, pix2, perc) ({ \
556 V = GP_PIXEL_GET_V_G8(pix1) * (perc); \
557 V += GP_PIXEL_GET_V_G8(pix2) * (255 - (perc)); \
558 V = (V + 128) / 255; \
561 GP_PIXEL_CREATE_G8(V); \
564#define GP_MIX_PIXELS_G8(pix1, pix2, perc) \
565 GP_MIX_PIXELS_LINEAR_G8(pix1, pix2, perc)
572#define GP_MIX_PIXELS_LINEAR_GA88(pix1, pix2, perc) ({ \
575 V = GP_PIXEL_GET_V_GA88(pix1) * (perc); \
576 V += GP_PIXEL_GET_V_GA88(pix2) * (255 - (perc)); \
577 V = (V + 128) / 255; \
581 A = GP_PIXEL_GET_A_GA88(pix1) * (perc); \
582 A += GP_PIXEL_GET_A_GA88(pix2) * (255 - (perc)); \
583 A = (A + 128) / 255; \
586 GP_PIXEL_CREATE_GA88(V, A); \
589#define GP_MIX_PIXELS_GA88(pix1, pix2, perc) \
590 GP_MIX_PIXELS_LINEAR_GA88(pix1, pix2, perc)
597#define GP_MIX_PIXELS_LINEAR_G16(pix1, pix2, perc) ({ \
600 V = GP_PIXEL_GET_V_G16(pix1) * (perc); \
601 V += GP_PIXEL_GET_V_G16(pix2) * (255 - (perc)); \
602 V = (V + 128) / 255; \
605 GP_PIXEL_CREATE_G16(V); \
608#define GP_MIX_PIXELS_G16(pix1, pix2, perc) \
609 GP_MIX_PIXELS_LINEAR_G16(pix1, pix2, perc)
614 switch (pixel_type) {
615 case GP_PIXEL_RGB101010:
616 return GP_MIX_PIXELS_LINEAR_RGB101010(pix1, pix2, perc);
617 case GP_PIXEL_xRGB8888:
618 return GP_MIX_PIXELS_LINEAR_xRGB8888(pix1, pix2, perc);
619 case GP_PIXEL_RGBA8888:
620 return GP_MIX_PIXELS_LINEAR_RGBA8888(pix1, pix2, perc);
621 case GP_PIXEL_RGB888:
622 return GP_MIX_PIXELS_LINEAR_RGB888(pix1, pix2, perc);
623 case GP_PIXEL_BGR888:
624 return GP_MIX_PIXELS_LINEAR_BGR888(pix1, pix2, perc);
625 case GP_PIXEL_RGB555:
626 return GP_MIX_PIXELS_LINEAR_RGB555(pix1, pix2, perc);
627 case GP_PIXEL_RGB565_BE:
628 return GP_MIX_PIXELS_LINEAR_RGB565_BE(pix1, pix2, perc);
629 case GP_PIXEL_RGB565_LE:
630 return GP_MIX_PIXELS_LINEAR_RGB565_LE(pix1, pix2, perc);
631 case GP_PIXEL_RGB666:
632 return GP_MIX_PIXELS_LINEAR_RGB666(pix1, pix2, perc);
633 case GP_PIXEL_RGB332:
634 return GP_MIX_PIXELS_LINEAR_RGB332(pix1, pix2, perc);
635 case GP_PIXEL_CMYK8888:
636 return GP_MIX_PIXELS_LINEAR_CMYK8888(pix1, pix2, perc);
638 return GP_MIX_PIXELS_LINEAR_P2(pix1, pix2, perc);
640 return GP_MIX_PIXELS_LINEAR_P4(pix1, pix2, perc);
642 return GP_MIX_PIXELS_LINEAR_P8(pix1, pix2, perc);
644 return GP_MIX_PIXELS_LINEAR_G1_DB(pix1, pix2, perc);
646 return GP_MIX_PIXELS_LINEAR_G2_DB(pix1, pix2, perc);
648 return GP_MIX_PIXELS_LINEAR_G4_DB(pix1, pix2, perc);
650 return GP_MIX_PIXELS_LINEAR_G1_UB(pix1, pix2, perc);
652 return GP_MIX_PIXELS_LINEAR_G2_UB(pix1, pix2, perc);
654 return GP_MIX_PIXELS_LINEAR_G4_UB(pix1, pix2, perc);
656 return GP_MIX_PIXELS_LINEAR_G8(pix1, pix2, perc);
658 return GP_MIX_PIXELS_LINEAR_GA88(pix1, pix2, perc);
660 return GP_MIX_PIXELS_LINEAR_G16(pix1, pix2, perc);
662 GP_ABORT(
"Unknown pixeltype");
667static inline void gp_mix_pixel_raw_RGB101010(
gp_pixmap *pixmap,
671 pix = GP_MIX_PIXELS_RGB101010(pixel, pix, perc);
675static inline void gp_mix_pixel_raw_xRGB8888(
gp_pixmap *pixmap,
679 pix = GP_MIX_PIXELS_xRGB8888(pixel, pix, perc);
683static inline void gp_mix_pixel_raw_RGBA8888(
gp_pixmap *pixmap,
687 pix = GP_MIX_PIXELS_RGBA8888(pixel, pix, perc);
691static inline void gp_mix_pixel_raw_RGB888(
gp_pixmap *pixmap,
695 pix = GP_MIX_PIXELS_RGB888(pixel, pix, perc);
699static inline void gp_mix_pixel_raw_BGR888(
gp_pixmap *pixmap,
703 pix = GP_MIX_PIXELS_BGR888(pixel, pix, perc);
707static inline void gp_mix_pixel_raw_RGB555(
gp_pixmap *pixmap,
711 pix = GP_MIX_PIXELS_RGB555(pixel, pix, perc);
715static inline void gp_mix_pixel_raw_RGB565_BE(
gp_pixmap *pixmap,
719 pix = GP_MIX_PIXELS_RGB565_BE(pixel, pix, perc);
723static inline void gp_mix_pixel_raw_RGB565_LE(
gp_pixmap *pixmap,
727 pix = GP_MIX_PIXELS_RGB565_LE(pixel, pix, perc);
731static inline void gp_mix_pixel_raw_RGB666(
gp_pixmap *pixmap,
735 pix = GP_MIX_PIXELS_RGB666(pixel, pix, perc);
739static inline void gp_mix_pixel_raw_RGB332(
gp_pixmap *pixmap,
743 pix = GP_MIX_PIXELS_RGB332(pixel, pix, perc);
747static inline void gp_mix_pixel_raw_CMYK8888(
gp_pixmap *pixmap,
751 pix = GP_MIX_PIXELS_CMYK8888(pixel, pix, perc);
755static inline void gp_mix_pixel_raw_P2(
gp_pixmap *pixmap,
759 pix = GP_MIX_PIXELS_P2(pixel, pix, perc);
763static inline void gp_mix_pixel_raw_P4(
gp_pixmap *pixmap,
767 pix = GP_MIX_PIXELS_P4(pixel, pix, perc);
771static inline void gp_mix_pixel_raw_P8(
gp_pixmap *pixmap,
775 pix = GP_MIX_PIXELS_P8(pixel, pix, perc);
779static inline void gp_mix_pixel_raw_G1_DB(
gp_pixmap *pixmap,
783 pix = GP_MIX_PIXELS_G1_DB(pixel, pix, perc);
787static inline void gp_mix_pixel_raw_G2_DB(
gp_pixmap *pixmap,
791 pix = GP_MIX_PIXELS_G2_DB(pixel, pix, perc);
795static inline void gp_mix_pixel_raw_G4_DB(
gp_pixmap *pixmap,
799 pix = GP_MIX_PIXELS_G4_DB(pixel, pix, perc);
803static inline void gp_mix_pixel_raw_G1_UB(
gp_pixmap *pixmap,
807 pix = GP_MIX_PIXELS_G1_UB(pixel, pix, perc);
811static inline void gp_mix_pixel_raw_G2_UB(
gp_pixmap *pixmap,
815 pix = GP_MIX_PIXELS_G2_UB(pixel, pix, perc);
819static inline void gp_mix_pixel_raw_G4_UB(
gp_pixmap *pixmap,
823 pix = GP_MIX_PIXELS_G4_UB(pixel, pix, perc);
827static inline void gp_mix_pixel_raw_G8(
gp_pixmap *pixmap,
831 pix = GP_MIX_PIXELS_G8(pixel, pix, perc);
835static inline void gp_mix_pixel_raw_GA88(
gp_pixmap *pixmap,
839 pix = GP_MIX_PIXELS_GA88(pixel, pix, perc);
843static inline void gp_mix_pixel_raw_G16(
gp_pixmap *pixmap,
847 pix = GP_MIX_PIXELS_G16(pixel, pix, perc);
852static inline void gp_mix_pixel_raw_clipped_RGB101010(
gp_pixmap *pixmap,
858 gp_mix_pixel_raw_RGB101010(pixmap, x, y, pixel, perc);
861static inline void gp_mix_pixel_raw_clipped_xRGB8888(
gp_pixmap *pixmap,
867 gp_mix_pixel_raw_xRGB8888(pixmap, x, y, pixel, perc);
870static inline void gp_mix_pixel_raw_clipped_RGBA8888(
gp_pixmap *pixmap,
876 gp_mix_pixel_raw_RGBA8888(pixmap, x, y, pixel, perc);
879static inline void gp_mix_pixel_raw_clipped_RGB888(
gp_pixmap *pixmap,
885 gp_mix_pixel_raw_RGB888(pixmap, x, y, pixel, perc);
888static inline void gp_mix_pixel_raw_clipped_BGR888(
gp_pixmap *pixmap,
894 gp_mix_pixel_raw_BGR888(pixmap, x, y, pixel, perc);
897static inline void gp_mix_pixel_raw_clipped_RGB555(
gp_pixmap *pixmap,
903 gp_mix_pixel_raw_RGB555(pixmap, x, y, pixel, perc);
906static inline void gp_mix_pixel_raw_clipped_RGB565_BE(
gp_pixmap *pixmap,
912 gp_mix_pixel_raw_RGB565_BE(pixmap, x, y, pixel, perc);
915static inline void gp_mix_pixel_raw_clipped_RGB565_LE(
gp_pixmap *pixmap,
921 gp_mix_pixel_raw_RGB565_LE(pixmap, x, y, pixel, perc);
924static inline void gp_mix_pixel_raw_clipped_RGB666(
gp_pixmap *pixmap,
930 gp_mix_pixel_raw_RGB666(pixmap, x, y, pixel, perc);
933static inline void gp_mix_pixel_raw_clipped_RGB332(
gp_pixmap *pixmap,
939 gp_mix_pixel_raw_RGB332(pixmap, x, y, pixel, perc);
942static inline void gp_mix_pixel_raw_clipped_CMYK8888(
gp_pixmap *pixmap,
948 gp_mix_pixel_raw_CMYK8888(pixmap, x, y, pixel, perc);
951static inline void gp_mix_pixel_raw_clipped_P2(
gp_pixmap *pixmap,
957 gp_mix_pixel_raw_P2(pixmap, x, y, pixel, perc);
960static inline void gp_mix_pixel_raw_clipped_P4(
gp_pixmap *pixmap,
966 gp_mix_pixel_raw_P4(pixmap, x, y, pixel, perc);
969static inline void gp_mix_pixel_raw_clipped_P8(
gp_pixmap *pixmap,
975 gp_mix_pixel_raw_P8(pixmap, x, y, pixel, perc);
978static inline void gp_mix_pixel_raw_clipped_G1_DB(
gp_pixmap *pixmap,
984 gp_mix_pixel_raw_G1_DB(pixmap, x, y, pixel, perc);
987static inline void gp_mix_pixel_raw_clipped_G2_DB(
gp_pixmap *pixmap,
993 gp_mix_pixel_raw_G2_DB(pixmap, x, y, pixel, perc);
996static inline void gp_mix_pixel_raw_clipped_G4_DB(
gp_pixmap *pixmap,
1002 gp_mix_pixel_raw_G4_DB(pixmap, x, y, pixel, perc);
1005static inline void gp_mix_pixel_raw_clipped_G1_UB(
gp_pixmap *pixmap,
1011 gp_mix_pixel_raw_G1_UB(pixmap, x, y, pixel, perc);
1014static inline void gp_mix_pixel_raw_clipped_G2_UB(
gp_pixmap *pixmap,
1020 gp_mix_pixel_raw_G2_UB(pixmap, x, y, pixel, perc);
1023static inline void gp_mix_pixel_raw_clipped_G4_UB(
gp_pixmap *pixmap,
1029 gp_mix_pixel_raw_G4_UB(pixmap, x, y, pixel, perc);
1032static inline void gp_mix_pixel_raw_clipped_G8(
gp_pixmap *pixmap,
1038 gp_mix_pixel_raw_G8(pixmap, x, y, pixel, perc);
1041static inline void gp_mix_pixel_raw_clipped_GA88(
gp_pixmap *pixmap,
1047 gp_mix_pixel_raw_GA88(pixmap, x, y, pixel, perc);
1050static inline void gp_mix_pixel_raw_clipped_G16(
gp_pixmap *pixmap,
1056 gp_mix_pixel_raw_G16(pixmap, x, y, pixel, perc);
1064 case GP_PIXEL_RGB101010:
1065 gp_mix_pixel_raw_RGB101010(pixmap, x, y, pixel, perc);
1067 case GP_PIXEL_xRGB8888:
1068 gp_mix_pixel_raw_xRGB8888(pixmap, x, y, pixel, perc);
1070 case GP_PIXEL_RGBA8888:
1071 gp_mix_pixel_raw_RGBA8888(pixmap, x, y, pixel, perc);
1073 case GP_PIXEL_RGB888:
1074 gp_mix_pixel_raw_RGB888(pixmap, x, y, pixel, perc);
1076 case GP_PIXEL_BGR888:
1077 gp_mix_pixel_raw_BGR888(pixmap, x, y, pixel, perc);
1079 case GP_PIXEL_RGB555:
1080 gp_mix_pixel_raw_RGB555(pixmap, x, y, pixel, perc);
1082 case GP_PIXEL_RGB565_BE:
1083 gp_mix_pixel_raw_RGB565_BE(pixmap, x, y, pixel, perc);
1085 case GP_PIXEL_RGB565_LE:
1086 gp_mix_pixel_raw_RGB565_LE(pixmap, x, y, pixel, perc);
1088 case GP_PIXEL_RGB666:
1089 gp_mix_pixel_raw_RGB666(pixmap, x, y, pixel, perc);
1091 case GP_PIXEL_RGB332:
1092 gp_mix_pixel_raw_RGB332(pixmap, x, y, pixel, perc);
1094 case GP_PIXEL_CMYK8888:
1095 gp_mix_pixel_raw_CMYK8888(pixmap, x, y, pixel, perc);
1098 gp_mix_pixel_raw_P2(pixmap, x, y, pixel, perc);
1101 gp_mix_pixel_raw_P4(pixmap, x, y, pixel, perc);
1104 gp_mix_pixel_raw_P8(pixmap, x, y, pixel, perc);
1106 case GP_PIXEL_G1_DB:
1107 gp_mix_pixel_raw_G1_DB(pixmap, x, y, pixel, perc);
1109 case GP_PIXEL_G2_DB:
1110 gp_mix_pixel_raw_G2_DB(pixmap, x, y, pixel, perc);
1112 case GP_PIXEL_G4_DB:
1113 gp_mix_pixel_raw_G4_DB(pixmap, x, y, pixel, perc);
1115 case GP_PIXEL_G1_UB:
1116 gp_mix_pixel_raw_G1_UB(pixmap, x, y, pixel, perc);
1118 case GP_PIXEL_G2_UB:
1119 gp_mix_pixel_raw_G2_UB(pixmap, x, y, pixel, perc);
1121 case GP_PIXEL_G4_UB:
1122 gp_mix_pixel_raw_G4_UB(pixmap, x, y, pixel, perc);
1125 gp_mix_pixel_raw_G8(pixmap, x, y, pixel, perc);
1128 gp_mix_pixel_raw_GA88(pixmap, x, y, pixel, perc);
1131 gp_mix_pixel_raw_G16(pixmap, x, y, pixel, perc);
1134 GP_ABORT(
"Unknown pixeltype");
1138static inline void gp_mix_pixel_raw_clipped(
gp_pixmap *pixmap,
1143 case GP_PIXEL_RGB101010:
1144 gp_mix_pixel_raw_clipped_RGB101010(pixmap, x, y, pixel, perc);
1146 case GP_PIXEL_xRGB8888:
1147 gp_mix_pixel_raw_clipped_xRGB8888(pixmap, x, y, pixel, perc);
1149 case GP_PIXEL_RGBA8888:
1150 gp_mix_pixel_raw_clipped_RGBA8888(pixmap, x, y, pixel, perc);
1152 case GP_PIXEL_RGB888:
1153 gp_mix_pixel_raw_clipped_RGB888(pixmap, x, y, pixel, perc);
1155 case GP_PIXEL_BGR888:
1156 gp_mix_pixel_raw_clipped_BGR888(pixmap, x, y, pixel, perc);
1158 case GP_PIXEL_RGB555:
1159 gp_mix_pixel_raw_clipped_RGB555(pixmap, x, y, pixel, perc);
1161 case GP_PIXEL_RGB565_BE:
1162 gp_mix_pixel_raw_clipped_RGB565_BE(pixmap, x, y, pixel, perc);
1164 case GP_PIXEL_RGB565_LE:
1165 gp_mix_pixel_raw_clipped_RGB565_LE(pixmap, x, y, pixel, perc);
1167 case GP_PIXEL_RGB666:
1168 gp_mix_pixel_raw_clipped_RGB666(pixmap, x, y, pixel, perc);
1170 case GP_PIXEL_RGB332:
1171 gp_mix_pixel_raw_clipped_RGB332(pixmap, x, y, pixel, perc);
1173 case GP_PIXEL_CMYK8888:
1174 gp_mix_pixel_raw_clipped_CMYK8888(pixmap, x, y, pixel, perc);
1177 gp_mix_pixel_raw_clipped_P2(pixmap, x, y, pixel, perc);
1180 gp_mix_pixel_raw_clipped_P4(pixmap, x, y, pixel, perc);
1183 gp_mix_pixel_raw_clipped_P8(pixmap, x, y, pixel, perc);
1185 case GP_PIXEL_G1_DB:
1186 gp_mix_pixel_raw_clipped_G1_DB(pixmap, x, y, pixel, perc);
1188 case GP_PIXEL_G2_DB:
1189 gp_mix_pixel_raw_clipped_G2_DB(pixmap, x, y, pixel, perc);
1191 case GP_PIXEL_G4_DB:
1192 gp_mix_pixel_raw_clipped_G4_DB(pixmap, x, y, pixel, perc);
1194 case GP_PIXEL_G1_UB:
1195 gp_mix_pixel_raw_clipped_G1_UB(pixmap, x, y, pixel, perc);
1197 case GP_PIXEL_G2_UB:
1198 gp_mix_pixel_raw_clipped_G2_UB(pixmap, x, y, pixel, perc);
1200 case GP_PIXEL_G4_UB:
1201 gp_mix_pixel_raw_clipped_G4_UB(pixmap, x, y, pixel, perc);
1204 gp_mix_pixel_raw_clipped_G8(pixmap, x, y, pixel, perc);
1207 gp_mix_pixel_raw_clipped_GA88(pixmap, x, y, pixel, perc);
1210 gp_mix_pixel_raw_clipped_G16(pixmap, x, y, pixel, perc);
1213 GP_ABORT(
"Unknown pixeltype");
uint32_t gp_pixel
Pixel integer value.
int gp_coord
Integer type for coordinates i.e. x, y, ...
Gamma and sRGB corrections.
static void gp_putpixel_raw_18BPP_DB(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 18BPP_DB
static gp_pixel gp_getpixel_raw_24BPP(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 24BPP
static void gp_putpixel_raw_1BPP_DB(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 1BPP_DB
static void gp_putpixel_raw_1BPP_UB(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 1BPP_UB
static gp_pixel gp_getpixel_raw_1BPP_DB(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 1BPP_DB
static void gp_putpixel_raw_24BPP(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 24BPP
static gp_pixel gp_getpixel_raw_1BPP_UB(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 1BPP_UB
static void gp_putpixel_raw_4BPP_DB(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 4BPP_DB
static void gp_putpixel_raw_32BPP(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 32BPP
static gp_pixel gp_getpixel_raw_2BPP_UB(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 2BPP_UB
static gp_pixel gp_getpixel_raw_16BPP_LE(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 16BPP_LE
static gp_pixel gp_getpixel_raw_18BPP_DB(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 18BPP_DB
static void gp_putpixel_raw_4BPP_UB(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 4BPP_UB
static gp_pixel gp_getpixel_raw_8BPP(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 8BPP
static gp_pixel gp_getpixel_raw_4BPP_DB(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 4BPP_DB
static void gp_putpixel_raw_2BPP_DB(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 2BPP_DB
static gp_pixel gp_getpixel_raw_32BPP(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 32BPP
static void gp_putpixel_raw_8BPP(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 8BPP
static void gp_putpixel_raw_2BPP_UB(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 2BPP_UB
static gp_pixel gp_getpixel_raw_4BPP_UB(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 4BPP_UB
static void gp_putpixel_raw_16BPP_BE(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 16BPP_BE
static void gp_putpixel_raw_16BPP_LE(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 16BPP_LE
static gp_pixel gp_getpixel_raw_2BPP_DB(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 2BPP_DB
static gp_pixel gp_getpixel_raw_16BPP_BE(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 16BPP_BE
gp_pixel_type
List of all pixel types.
#define GP_PIXEL_IS_CLIPPED(pixmap, x, y)
Returns true when pixel is clipped out of pixmap.
enum gp_pixel_type pixel_type
A pixel format.