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); \
57#define GP_MIX_PIXELS_GAMMA_RGB101010(pix1, pix2, perc) ({ \
60 R = gp_gamma10_to_linear10(GP_PIXEL_GET_R_RGB101010(pix1)) * (perc); \
61 R += gp_gamma10_to_linear10(GP_PIXEL_GET_R_RGB101010(pix2)) * (255 - (perc)); \
62 R = (R + 128) / 255; \
63 R = gp_linear10_to_gamma10(R); \
67 G = gp_gamma10_to_linear10(GP_PIXEL_GET_G_RGB101010(pix1)) * (perc); \
68 G += gp_gamma10_to_linear10(GP_PIXEL_GET_G_RGB101010(pix2)) * (255 - (perc)); \
69 G = (G + 128) / 255; \
70 G = gp_linear10_to_gamma10(G); \
74 B = gp_gamma10_to_linear10(GP_PIXEL_GET_B_RGB101010(pix1)) * (perc); \
75 B += gp_gamma10_to_linear10(GP_PIXEL_GET_B_RGB101010(pix2)) * (255 - (perc)); \
76 B = (B + 128) / 255; \
77 B = gp_linear10_to_gamma10(B); \
80 GP_PIXEL_CREATE_RGB101010(R, G, B); \
83#define GP_MIX_PIXELS_RGB101010(pix1, pix2, perc) \
84 GP_MIX_PIXELS_LINEAR_RGB101010(pix1, pix2, perc)
91#define GP_MIX_PIXELS_LINEAR_xRGB8888(pix1, pix2, perc) ({ \
94 R = GP_PIXEL_GET_R_xRGB8888(pix1) * (perc); \
95 R += GP_PIXEL_GET_R_xRGB8888(pix2) * (255 - (perc)); \
96 R = (R + 128) / 255; \
100 G = GP_PIXEL_GET_G_xRGB8888(pix1) * (perc); \
101 G += GP_PIXEL_GET_G_xRGB8888(pix2) * (255 - (perc)); \
102 G = (G + 128) / 255; \
106 B = GP_PIXEL_GET_B_xRGB8888(pix1) * (perc); \
107 B += GP_PIXEL_GET_B_xRGB8888(pix2) * (255 - (perc)); \
108 B = (B + 128) / 255; \
111 GP_PIXEL_CREATE_xRGB8888(R, G, B); \
119#define GP_MIX_PIXELS_GAMMA_xRGB8888(pix1, pix2, perc) ({ \
122 R = gp_gamma8_to_linear10(GP_PIXEL_GET_R_xRGB8888(pix1)) * (perc); \
123 R += gp_gamma8_to_linear10(GP_PIXEL_GET_R_xRGB8888(pix2)) * (255 - (perc)); \
124 R = (R + 128) / 255; \
125 R = gp_linear10_to_gamma8(R); \
129 G = gp_gamma8_to_linear10(GP_PIXEL_GET_G_xRGB8888(pix1)) * (perc); \
130 G += gp_gamma8_to_linear10(GP_PIXEL_GET_G_xRGB8888(pix2)) * (255 - (perc)); \
131 G = (G + 128) / 255; \
132 G = gp_linear10_to_gamma8(G); \
136 B = gp_gamma8_to_linear10(GP_PIXEL_GET_B_xRGB8888(pix1)) * (perc); \
137 B += gp_gamma8_to_linear10(GP_PIXEL_GET_B_xRGB8888(pix2)) * (255 - (perc)); \
138 B = (B + 128) / 255; \
139 B = gp_linear10_to_gamma8(B); \
142 GP_PIXEL_CREATE_xRGB8888(R, G, B); \
145#define GP_MIX_PIXELS_xRGB8888(pix1, pix2, perc) \
146 GP_MIX_PIXELS_LINEAR_xRGB8888(pix1, pix2, perc)
153#define GP_MIX_PIXELS_LINEAR_RGBA8888(pix1, pix2, perc) ({ \
156 R = GP_PIXEL_GET_R_RGBA8888(pix1) * (perc); \
157 R += GP_PIXEL_GET_R_RGBA8888(pix2) * (255 - (perc)); \
158 R = (R + 128) / 255; \
162 G = GP_PIXEL_GET_G_RGBA8888(pix1) * (perc); \
163 G += GP_PIXEL_GET_G_RGBA8888(pix2) * (255 - (perc)); \
164 G = (G + 128) / 255; \
168 B = GP_PIXEL_GET_B_RGBA8888(pix1) * (perc); \
169 B += GP_PIXEL_GET_B_RGBA8888(pix2) * (255 - (perc)); \
170 B = (B + 128) / 255; \
174 A = GP_PIXEL_GET_A_RGBA8888(pix1) * (perc); \
175 A += GP_PIXEL_GET_A_RGBA8888(pix2) * (255 - (perc)); \
176 A = (A + 128) / 255; \
179 GP_PIXEL_CREATE_RGBA8888(R, G, B, A); \
187#define GP_MIX_PIXELS_GAMMA_RGBA8888(pix1, pix2, perc) ({ \
190 R = gp_gamma8_to_linear10(GP_PIXEL_GET_R_RGBA8888(pix1)) * (perc); \
191 R += gp_gamma8_to_linear10(GP_PIXEL_GET_R_RGBA8888(pix2)) * (255 - (perc)); \
192 R = (R + 128) / 255; \
193 R = gp_linear10_to_gamma8(R); \
197 G = gp_gamma8_to_linear10(GP_PIXEL_GET_G_RGBA8888(pix1)) * (perc); \
198 G += gp_gamma8_to_linear10(GP_PIXEL_GET_G_RGBA8888(pix2)) * (255 - (perc)); \
199 G = (G + 128) / 255; \
200 G = gp_linear10_to_gamma8(G); \
204 B = gp_gamma8_to_linear10(GP_PIXEL_GET_B_RGBA8888(pix1)) * (perc); \
205 B += gp_gamma8_to_linear10(GP_PIXEL_GET_B_RGBA8888(pix2)) * (255 - (perc)); \
206 B = (B + 128) / 255; \
207 B = gp_linear10_to_gamma8(B); \
211 A = gp_gamma8_to_linear10(GP_PIXEL_GET_A_RGBA8888(pix1)) * (perc); \
212 A += gp_gamma8_to_linear10(GP_PIXEL_GET_A_RGBA8888(pix2)) * (255 - (perc)); \
213 A = (A + 128) / 255; \
214 A = gp_linear10_to_gamma8(A); \
217 GP_PIXEL_CREATE_RGBA8888(R, G, B, A); \
220#define GP_MIX_PIXELS_RGBA8888(pix1, pix2, perc) \
221 GP_MIX_PIXELS_LINEAR_RGBA8888(pix1, pix2, perc)
228#define GP_MIX_PIXELS_LINEAR_RGB888(pix1, pix2, perc) ({ \
231 R = GP_PIXEL_GET_R_RGB888(pix1) * (perc); \
232 R += GP_PIXEL_GET_R_RGB888(pix2) * (255 - (perc)); \
233 R = (R + 128) / 255; \
237 G = GP_PIXEL_GET_G_RGB888(pix1) * (perc); \
238 G += GP_PIXEL_GET_G_RGB888(pix2) * (255 - (perc)); \
239 G = (G + 128) / 255; \
243 B = GP_PIXEL_GET_B_RGB888(pix1) * (perc); \
244 B += GP_PIXEL_GET_B_RGB888(pix2) * (255 - (perc)); \
245 B = (B + 128) / 255; \
248 GP_PIXEL_CREATE_RGB888(R, G, B); \
256#define GP_MIX_PIXELS_GAMMA_RGB888(pix1, pix2, perc) ({ \
259 R = gp_gamma8_to_linear10(GP_PIXEL_GET_R_RGB888(pix1)) * (perc); \
260 R += gp_gamma8_to_linear10(GP_PIXEL_GET_R_RGB888(pix2)) * (255 - (perc)); \
261 R = (R + 128) / 255; \
262 R = gp_linear10_to_gamma8(R); \
266 G = gp_gamma8_to_linear10(GP_PIXEL_GET_G_RGB888(pix1)) * (perc); \
267 G += gp_gamma8_to_linear10(GP_PIXEL_GET_G_RGB888(pix2)) * (255 - (perc)); \
268 G = (G + 128) / 255; \
269 G = gp_linear10_to_gamma8(G); \
273 B = gp_gamma8_to_linear10(GP_PIXEL_GET_B_RGB888(pix1)) * (perc); \
274 B += gp_gamma8_to_linear10(GP_PIXEL_GET_B_RGB888(pix2)) * (255 - (perc)); \
275 B = (B + 128) / 255; \
276 B = gp_linear10_to_gamma8(B); \
279 GP_PIXEL_CREATE_RGB888(R, G, B); \
282#define GP_MIX_PIXELS_RGB888(pix1, pix2, perc) \
283 GP_MIX_PIXELS_LINEAR_RGB888(pix1, pix2, perc)
290#define GP_MIX_PIXELS_LINEAR_BGR888(pix1, pix2, perc) ({ \
293 B = GP_PIXEL_GET_B_BGR888(pix1) * (perc); \
294 B += GP_PIXEL_GET_B_BGR888(pix2) * (255 - (perc)); \
295 B = (B + 128) / 255; \
299 G = GP_PIXEL_GET_G_BGR888(pix1) * (perc); \
300 G += GP_PIXEL_GET_G_BGR888(pix2) * (255 - (perc)); \
301 G = (G + 128) / 255; \
305 R = GP_PIXEL_GET_R_BGR888(pix1) * (perc); \
306 R += GP_PIXEL_GET_R_BGR888(pix2) * (255 - (perc)); \
307 R = (R + 128) / 255; \
310 GP_PIXEL_CREATE_BGR888(B, G, R); \
318#define GP_MIX_PIXELS_GAMMA_BGR888(pix1, pix2, perc) ({ \
321 B = gp_gamma8_to_linear10(GP_PIXEL_GET_B_BGR888(pix1)) * (perc); \
322 B += gp_gamma8_to_linear10(GP_PIXEL_GET_B_BGR888(pix2)) * (255 - (perc)); \
323 B = (B + 128) / 255; \
324 B = gp_linear10_to_gamma8(B); \
328 G = gp_gamma8_to_linear10(GP_PIXEL_GET_G_BGR888(pix1)) * (perc); \
329 G += gp_gamma8_to_linear10(GP_PIXEL_GET_G_BGR888(pix2)) * (255 - (perc)); \
330 G = (G + 128) / 255; \
331 G = gp_linear10_to_gamma8(G); \
335 R = gp_gamma8_to_linear10(GP_PIXEL_GET_R_BGR888(pix1)) * (perc); \
336 R += gp_gamma8_to_linear10(GP_PIXEL_GET_R_BGR888(pix2)) * (255 - (perc)); \
337 R = (R + 128) / 255; \
338 R = gp_linear10_to_gamma8(R); \
341 GP_PIXEL_CREATE_BGR888(B, G, R); \
344#define GP_MIX_PIXELS_BGR888(pix1, pix2, perc) \
345 GP_MIX_PIXELS_LINEAR_BGR888(pix1, pix2, perc)
352#define GP_MIX_PIXELS_LINEAR_RGB555(pix1, pix2, perc) ({ \
355 R = GP_PIXEL_GET_R_RGB555(pix1) * (perc); \
356 R += GP_PIXEL_GET_R_RGB555(pix2) * (255 - (perc)); \
357 R = (R + 128) / 255; \
361 G = GP_PIXEL_GET_G_RGB555(pix1) * (perc); \
362 G += GP_PIXEL_GET_G_RGB555(pix2) * (255 - (perc)); \
363 G = (G + 128) / 255; \
367 B = GP_PIXEL_GET_B_RGB555(pix1) * (perc); \
368 B += GP_PIXEL_GET_B_RGB555(pix2) * (255 - (perc)); \
369 B = (B + 128) / 255; \
372 GP_PIXEL_CREATE_RGB555(R, G, B); \
380#define GP_MIX_PIXELS_GAMMA_RGB555(pix1, pix2, perc) ({ \
383 R = gp_gamma5_to_linear10(GP_PIXEL_GET_R_RGB555(pix1)) * (perc); \
384 R += gp_gamma5_to_linear10(GP_PIXEL_GET_R_RGB555(pix2)) * (255 - (perc)); \
385 R = (R + 128) / 255; \
386 R = gp_linear10_to_gamma5(R); \
390 G = gp_gamma5_to_linear10(GP_PIXEL_GET_G_RGB555(pix1)) * (perc); \
391 G += gp_gamma5_to_linear10(GP_PIXEL_GET_G_RGB555(pix2)) * (255 - (perc)); \
392 G = (G + 128) / 255; \
393 G = gp_linear10_to_gamma5(G); \
397 B = gp_gamma5_to_linear10(GP_PIXEL_GET_B_RGB555(pix1)) * (perc); \
398 B += gp_gamma5_to_linear10(GP_PIXEL_GET_B_RGB555(pix2)) * (255 - (perc)); \
399 B = (B + 128) / 255; \
400 B = gp_linear10_to_gamma5(B); \
403 GP_PIXEL_CREATE_RGB555(R, G, B); \
406#define GP_MIX_PIXELS_RGB555(pix1, pix2, perc) \
407 GP_MIX_PIXELS_LINEAR_RGB555(pix1, pix2, perc)
414#define GP_MIX_PIXELS_LINEAR_RGB565(pix1, pix2, perc) ({ \
417 R = GP_PIXEL_GET_R_RGB565(pix1) * (perc); \
418 R += GP_PIXEL_GET_R_RGB565(pix2) * (255 - (perc)); \
419 R = (R + 128) / 255; \
423 G = GP_PIXEL_GET_G_RGB565(pix1) * (perc); \
424 G += GP_PIXEL_GET_G_RGB565(pix2) * (255 - (perc)); \
425 G = (G + 128) / 255; \
429 B = GP_PIXEL_GET_B_RGB565(pix1) * (perc); \
430 B += GP_PIXEL_GET_B_RGB565(pix2) * (255 - (perc)); \
431 B = (B + 128) / 255; \
434 GP_PIXEL_CREATE_RGB565(R, G, B); \
442#define GP_MIX_PIXELS_GAMMA_RGB565(pix1, pix2, perc) ({ \
445 R = gp_gamma5_to_linear10(GP_PIXEL_GET_R_RGB565(pix1)) * (perc); \
446 R += gp_gamma5_to_linear10(GP_PIXEL_GET_R_RGB565(pix2)) * (255 - (perc)); \
447 R = (R + 128) / 255; \
448 R = gp_linear10_to_gamma5(R); \
452 G = gp_gamma6_to_linear10(GP_PIXEL_GET_G_RGB565(pix1)) * (perc); \
453 G += gp_gamma6_to_linear10(GP_PIXEL_GET_G_RGB565(pix2)) * (255 - (perc)); \
454 G = (G + 128) / 255; \
455 G = gp_linear10_to_gamma6(G); \
459 B = gp_gamma5_to_linear10(GP_PIXEL_GET_B_RGB565(pix1)) * (perc); \
460 B += gp_gamma5_to_linear10(GP_PIXEL_GET_B_RGB565(pix2)) * (255 - (perc)); \
461 B = (B + 128) / 255; \
462 B = gp_linear10_to_gamma5(B); \
465 GP_PIXEL_CREATE_RGB565(R, G, B); \
468#define GP_MIX_PIXELS_RGB565(pix1, pix2, perc) \
469 GP_MIX_PIXELS_LINEAR_RGB565(pix1, pix2, perc)
476#define GP_MIX_PIXELS_LINEAR_RGB666(pix1, pix2, perc) ({ \
479 R = GP_PIXEL_GET_R_RGB666(pix1) * (perc); \
480 R += GP_PIXEL_GET_R_RGB666(pix2) * (255 - (perc)); \
481 R = (R + 128) / 255; \
485 G = GP_PIXEL_GET_G_RGB666(pix1) * (perc); \
486 G += GP_PIXEL_GET_G_RGB666(pix2) * (255 - (perc)); \
487 G = (G + 128) / 255; \
491 B = GP_PIXEL_GET_B_RGB666(pix1) * (perc); \
492 B += GP_PIXEL_GET_B_RGB666(pix2) * (255 - (perc)); \
493 B = (B + 128) / 255; \
496 GP_PIXEL_CREATE_RGB666(R, G, B); \
504#define GP_MIX_PIXELS_GAMMA_RGB666(pix1, pix2, perc) ({ \
507 R = gp_gamma6_to_linear10(GP_PIXEL_GET_R_RGB666(pix1)) * (perc); \
508 R += gp_gamma6_to_linear10(GP_PIXEL_GET_R_RGB666(pix2)) * (255 - (perc)); \
509 R = (R + 128) / 255; \
510 R = gp_linear10_to_gamma6(R); \
514 G = gp_gamma6_to_linear10(GP_PIXEL_GET_G_RGB666(pix1)) * (perc); \
515 G += gp_gamma6_to_linear10(GP_PIXEL_GET_G_RGB666(pix2)) * (255 - (perc)); \
516 G = (G + 128) / 255; \
517 G = gp_linear10_to_gamma6(G); \
521 B = gp_gamma6_to_linear10(GP_PIXEL_GET_B_RGB666(pix1)) * (perc); \
522 B += gp_gamma6_to_linear10(GP_PIXEL_GET_B_RGB666(pix2)) * (255 - (perc)); \
523 B = (B + 128) / 255; \
524 B = gp_linear10_to_gamma6(B); \
527 GP_PIXEL_CREATE_RGB666(R, G, B); \
530#define GP_MIX_PIXELS_RGB666(pix1, pix2, perc) \
531 GP_MIX_PIXELS_LINEAR_RGB666(pix1, pix2, perc)
538#define GP_MIX_PIXELS_LINEAR_RGB332(pix1, pix2, perc) ({ \
541 R = GP_PIXEL_GET_R_RGB332(pix1) * (perc); \
542 R += GP_PIXEL_GET_R_RGB332(pix2) * (255 - (perc)); \
543 R = (R + 128) / 255; \
547 G = GP_PIXEL_GET_G_RGB332(pix1) * (perc); \
548 G += GP_PIXEL_GET_G_RGB332(pix2) * (255 - (perc)); \
549 G = (G + 128) / 255; \
553 B = GP_PIXEL_GET_B_RGB332(pix1) * (perc); \
554 B += GP_PIXEL_GET_B_RGB332(pix2) * (255 - (perc)); \
555 B = (B + 128) / 255; \
558 GP_PIXEL_CREATE_RGB332(R, G, B); \
566#define GP_MIX_PIXELS_GAMMA_RGB332(pix1, pix2, perc) ({ \
569 R = gp_gamma3_to_linear10(GP_PIXEL_GET_R_RGB332(pix1)) * (perc); \
570 R += gp_gamma3_to_linear10(GP_PIXEL_GET_R_RGB332(pix2)) * (255 - (perc)); \
571 R = (R + 128) / 255; \
572 R = gp_linear10_to_gamma3(R); \
576 G = gp_gamma3_to_linear10(GP_PIXEL_GET_G_RGB332(pix1)) * (perc); \
577 G += gp_gamma3_to_linear10(GP_PIXEL_GET_G_RGB332(pix2)) * (255 - (perc)); \
578 G = (G + 128) / 255; \
579 G = gp_linear10_to_gamma3(G); \
583 B = gp_gamma2_to_linear10(GP_PIXEL_GET_B_RGB332(pix1)) * (perc); \
584 B += gp_gamma2_to_linear10(GP_PIXEL_GET_B_RGB332(pix2)) * (255 - (perc)); \
585 B = (B + 128) / 255; \
586 B = gp_linear10_to_gamma2(B); \
589 GP_PIXEL_CREATE_RGB332(R, G, B); \
592#define GP_MIX_PIXELS_RGB332(pix1, pix2, perc) \
593 GP_MIX_PIXELS_LINEAR_RGB332(pix1, pix2, perc)
600#define GP_MIX_PIXELS_LINEAR_CMYK8888(pix1, pix2, perc) ({ \
603 K = GP_PIXEL_GET_K_CMYK8888(pix1) * (perc); \
604 K += GP_PIXEL_GET_K_CMYK8888(pix2) * (255 - (perc)); \
605 K = (K + 128) / 255; \
609 Y = GP_PIXEL_GET_Y_CMYK8888(pix1) * (perc); \
610 Y += GP_PIXEL_GET_Y_CMYK8888(pix2) * (255 - (perc)); \
611 Y = (Y + 128) / 255; \
615 M = GP_PIXEL_GET_M_CMYK8888(pix1) * (perc); \
616 M += GP_PIXEL_GET_M_CMYK8888(pix2) * (255 - (perc)); \
617 M = (M + 128) / 255; \
621 C = GP_PIXEL_GET_C_CMYK8888(pix1) * (perc); \
622 C += GP_PIXEL_GET_C_CMYK8888(pix2) * (255 - (perc)); \
623 C = (C + 128) / 255; \
626 GP_PIXEL_CREATE_CMYK8888(K, Y, M, C); \
634#define GP_MIX_PIXELS_GAMMA_CMYK8888(pix1, pix2, perc) ({ \
637 K = gp_gamma8_to_linear10(GP_PIXEL_GET_K_CMYK8888(pix1)) * (perc); \
638 K += gp_gamma8_to_linear10(GP_PIXEL_GET_K_CMYK8888(pix2)) * (255 - (perc)); \
639 K = (K + 128) / 255; \
640 K = gp_linear10_to_gamma8(K); \
644 Y = gp_gamma8_to_linear10(GP_PIXEL_GET_Y_CMYK8888(pix1)) * (perc); \
645 Y += gp_gamma8_to_linear10(GP_PIXEL_GET_Y_CMYK8888(pix2)) * (255 - (perc)); \
646 Y = (Y + 128) / 255; \
647 Y = gp_linear10_to_gamma8(Y); \
651 M = gp_gamma8_to_linear10(GP_PIXEL_GET_M_CMYK8888(pix1)) * (perc); \
652 M += gp_gamma8_to_linear10(GP_PIXEL_GET_M_CMYK8888(pix2)) * (255 - (perc)); \
653 M = (M + 128) / 255; \
654 M = gp_linear10_to_gamma8(M); \
658 C = gp_gamma8_to_linear10(GP_PIXEL_GET_C_CMYK8888(pix1)) * (perc); \
659 C += gp_gamma8_to_linear10(GP_PIXEL_GET_C_CMYK8888(pix2)) * (255 - (perc)); \
660 C = (C + 128) / 255; \
661 C = gp_linear10_to_gamma8(C); \
664 GP_PIXEL_CREATE_CMYK8888(K, Y, M, C); \
667#define GP_MIX_PIXELS_CMYK8888(pix1, pix2, perc) \
668 GP_MIX_PIXELS_LINEAR_CMYK8888(pix1, pix2, perc)
675#define GP_MIX_PIXELS_LINEAR_P2(pix1, pix2, perc) ({ \
678 P = GP_PIXEL_GET_P_P2(pix1) * (perc); \
679 P += GP_PIXEL_GET_P_P2(pix2) * (255 - (perc)); \
680 P = (P + 128) / 255; \
683 GP_PIXEL_CREATE_P2(P); \
691#define GP_MIX_PIXELS_GAMMA_P2(pix1, pix2, perc) ({ \
694 P = gp_gamma2_to_linear10(GP_PIXEL_GET_P_P2(pix1)) * (perc); \
695 P += gp_gamma2_to_linear10(GP_PIXEL_GET_P_P2(pix2)) * (255 - (perc)); \
696 P = (P + 128) / 255; \
697 P = gp_linear10_to_gamma2(P); \
700 GP_PIXEL_CREATE_P2(P); \
703#define GP_MIX_PIXELS_P2(pix1, pix2, perc) \
704 GP_MIX_PIXELS_LINEAR_P2(pix1, pix2, perc)
711#define GP_MIX_PIXELS_LINEAR_P4(pix1, pix2, perc) ({ \
714 P = GP_PIXEL_GET_P_P4(pix1) * (perc); \
715 P += GP_PIXEL_GET_P_P4(pix2) * (255 - (perc)); \
716 P = (P + 128) / 255; \
719 GP_PIXEL_CREATE_P4(P); \
727#define GP_MIX_PIXELS_GAMMA_P4(pix1, pix2, perc) ({ \
730 P = gp_gamma4_to_linear10(GP_PIXEL_GET_P_P4(pix1)) * (perc); \
731 P += gp_gamma4_to_linear10(GP_PIXEL_GET_P_P4(pix2)) * (255 - (perc)); \
732 P = (P + 128) / 255; \
733 P = gp_linear10_to_gamma4(P); \
736 GP_PIXEL_CREATE_P4(P); \
739#define GP_MIX_PIXELS_P4(pix1, pix2, perc) \
740 GP_MIX_PIXELS_LINEAR_P4(pix1, pix2, perc)
747#define GP_MIX_PIXELS_LINEAR_P8(pix1, pix2, perc) ({ \
750 P = GP_PIXEL_GET_P_P8(pix1) * (perc); \
751 P += GP_PIXEL_GET_P_P8(pix2) * (255 - (perc)); \
752 P = (P + 128) / 255; \
755 GP_PIXEL_CREATE_P8(P); \
763#define GP_MIX_PIXELS_GAMMA_P8(pix1, pix2, perc) ({ \
766 P = gp_gamma8_to_linear10(GP_PIXEL_GET_P_P8(pix1)) * (perc); \
767 P += gp_gamma8_to_linear10(GP_PIXEL_GET_P_P8(pix2)) * (255 - (perc)); \
768 P = (P + 128) / 255; \
769 P = gp_linear10_to_gamma8(P); \
772 GP_PIXEL_CREATE_P8(P); \
775#define GP_MIX_PIXELS_P8(pix1, pix2, perc) \
776 GP_MIX_PIXELS_LINEAR_P8(pix1, pix2, perc)
783#define GP_MIX_PIXELS_LINEAR_G1_DB(pix1, pix2, perc) ({ \
786 V = GP_PIXEL_GET_V_G1_DB(pix1) * (perc); \
787 V += GP_PIXEL_GET_V_G1_DB(pix2) * (255 - (perc)); \
788 V = (V + 128) / 255; \
791 GP_PIXEL_CREATE_G1_DB(V); \
799#define GP_MIX_PIXELS_GAMMA_G1_DB(pix1, pix2, perc) ({ \
802 V = gp_gamma1_to_linear10(GP_PIXEL_GET_V_G1_DB(pix1)) * (perc); \
803 V += gp_gamma1_to_linear10(GP_PIXEL_GET_V_G1_DB(pix2)) * (255 - (perc)); \
804 V = (V + 128) / 255; \
805 V = gp_linear10_to_gamma1(V); \
808 GP_PIXEL_CREATE_G1_DB(V); \
811#define GP_MIX_PIXELS_G1_DB(pix1, pix2, perc) \
812 GP_MIX_PIXELS_LINEAR_G1_DB(pix1, pix2, perc)
819#define GP_MIX_PIXELS_LINEAR_G2_DB(pix1, pix2, perc) ({ \
822 V = GP_PIXEL_GET_V_G2_DB(pix1) * (perc); \
823 V += GP_PIXEL_GET_V_G2_DB(pix2) * (255 - (perc)); \
824 V = (V + 128) / 255; \
827 GP_PIXEL_CREATE_G2_DB(V); \
835#define GP_MIX_PIXELS_GAMMA_G2_DB(pix1, pix2, perc) ({ \
838 V = gp_gamma2_to_linear10(GP_PIXEL_GET_V_G2_DB(pix1)) * (perc); \
839 V += gp_gamma2_to_linear10(GP_PIXEL_GET_V_G2_DB(pix2)) * (255 - (perc)); \
840 V = (V + 128) / 255; \
841 V = gp_linear10_to_gamma2(V); \
844 GP_PIXEL_CREATE_G2_DB(V); \
847#define GP_MIX_PIXELS_G2_DB(pix1, pix2, perc) \
848 GP_MIX_PIXELS_LINEAR_G2_DB(pix1, pix2, perc)
855#define GP_MIX_PIXELS_LINEAR_G4_DB(pix1, pix2, perc) ({ \
858 V = GP_PIXEL_GET_V_G4_DB(pix1) * (perc); \
859 V += GP_PIXEL_GET_V_G4_DB(pix2) * (255 - (perc)); \
860 V = (V + 128) / 255; \
863 GP_PIXEL_CREATE_G4_DB(V); \
871#define GP_MIX_PIXELS_GAMMA_G4_DB(pix1, pix2, perc) ({ \
874 V = gp_gamma4_to_linear10(GP_PIXEL_GET_V_G4_DB(pix1)) * (perc); \
875 V += gp_gamma4_to_linear10(GP_PIXEL_GET_V_G4_DB(pix2)) * (255 - (perc)); \
876 V = (V + 128) / 255; \
877 V = gp_linear10_to_gamma4(V); \
880 GP_PIXEL_CREATE_G4_DB(V); \
883#define GP_MIX_PIXELS_G4_DB(pix1, pix2, perc) \
884 GP_MIX_PIXELS_LINEAR_G4_DB(pix1, pix2, perc)
891#define GP_MIX_PIXELS_LINEAR_G1_UB(pix1, pix2, perc) ({ \
894 V = GP_PIXEL_GET_V_G1_UB(pix1) * (perc); \
895 V += GP_PIXEL_GET_V_G1_UB(pix2) * (255 - (perc)); \
896 V = (V + 128) / 255; \
899 GP_PIXEL_CREATE_G1_UB(V); \
907#define GP_MIX_PIXELS_GAMMA_G1_UB(pix1, pix2, perc) ({ \
910 V = gp_gamma1_to_linear10(GP_PIXEL_GET_V_G1_UB(pix1)) * (perc); \
911 V += gp_gamma1_to_linear10(GP_PIXEL_GET_V_G1_UB(pix2)) * (255 - (perc)); \
912 V = (V + 128) / 255; \
913 V = gp_linear10_to_gamma1(V); \
916 GP_PIXEL_CREATE_G1_UB(V); \
919#define GP_MIX_PIXELS_G1_UB(pix1, pix2, perc) \
920 GP_MIX_PIXELS_LINEAR_G1_UB(pix1, pix2, perc)
927#define GP_MIX_PIXELS_LINEAR_G2_UB(pix1, pix2, perc) ({ \
930 V = GP_PIXEL_GET_V_G2_UB(pix1) * (perc); \
931 V += GP_PIXEL_GET_V_G2_UB(pix2) * (255 - (perc)); \
932 V = (V + 128) / 255; \
935 GP_PIXEL_CREATE_G2_UB(V); \
943#define GP_MIX_PIXELS_GAMMA_G2_UB(pix1, pix2, perc) ({ \
946 V = gp_gamma2_to_linear10(GP_PIXEL_GET_V_G2_UB(pix1)) * (perc); \
947 V += gp_gamma2_to_linear10(GP_PIXEL_GET_V_G2_UB(pix2)) * (255 - (perc)); \
948 V = (V + 128) / 255; \
949 V = gp_linear10_to_gamma2(V); \
952 GP_PIXEL_CREATE_G2_UB(V); \
955#define GP_MIX_PIXELS_G2_UB(pix1, pix2, perc) \
956 GP_MIX_PIXELS_LINEAR_G2_UB(pix1, pix2, perc)
963#define GP_MIX_PIXELS_LINEAR_G4_UB(pix1, pix2, perc) ({ \
966 V = GP_PIXEL_GET_V_G4_UB(pix1) * (perc); \
967 V += GP_PIXEL_GET_V_G4_UB(pix2) * (255 - (perc)); \
968 V = (V + 128) / 255; \
971 GP_PIXEL_CREATE_G4_UB(V); \
979#define GP_MIX_PIXELS_GAMMA_G4_UB(pix1, pix2, perc) ({ \
982 V = gp_gamma4_to_linear10(GP_PIXEL_GET_V_G4_UB(pix1)) * (perc); \
983 V += gp_gamma4_to_linear10(GP_PIXEL_GET_V_G4_UB(pix2)) * (255 - (perc)); \
984 V = (V + 128) / 255; \
985 V = gp_linear10_to_gamma4(V); \
988 GP_PIXEL_CREATE_G4_UB(V); \
991#define GP_MIX_PIXELS_G4_UB(pix1, pix2, perc) \
992 GP_MIX_PIXELS_LINEAR_G4_UB(pix1, pix2, perc)
999#define GP_MIX_PIXELS_LINEAR_G8(pix1, pix2, perc) ({ \
1002 V = GP_PIXEL_GET_V_G8(pix1) * (perc); \
1003 V += GP_PIXEL_GET_V_G8(pix2) * (255 - (perc)); \
1004 V = (V + 128) / 255; \
1007 GP_PIXEL_CREATE_G8(V); \
1015#define GP_MIX_PIXELS_GAMMA_G8(pix1, pix2, perc) ({ \
1018 V = gp_gamma8_to_linear10(GP_PIXEL_GET_V_G8(pix1)) * (perc); \
1019 V += gp_gamma8_to_linear10(GP_PIXEL_GET_V_G8(pix2)) * (255 - (perc)); \
1020 V = (V + 128) / 255; \
1021 V = gp_linear10_to_gamma8(V); \
1024 GP_PIXEL_CREATE_G8(V); \
1027#define GP_MIX_PIXELS_G8(pix1, pix2, perc) \
1028 GP_MIX_PIXELS_LINEAR_G8(pix1, pix2, perc)
1035#define GP_MIX_PIXELS_LINEAR_GA88(pix1, pix2, perc) ({ \
1038 V = GP_PIXEL_GET_V_GA88(pix1) * (perc); \
1039 V += GP_PIXEL_GET_V_GA88(pix2) * (255 - (perc)); \
1040 V = (V + 128) / 255; \
1044 A = GP_PIXEL_GET_A_GA88(pix1) * (perc); \
1045 A += GP_PIXEL_GET_A_GA88(pix2) * (255 - (perc)); \
1046 A = (A + 128) / 255; \
1049 GP_PIXEL_CREATE_GA88(V, A); \
1057#define GP_MIX_PIXELS_GAMMA_GA88(pix1, pix2, perc) ({ \
1060 V = gp_gamma8_to_linear10(GP_PIXEL_GET_V_GA88(pix1)) * (perc); \
1061 V += gp_gamma8_to_linear10(GP_PIXEL_GET_V_GA88(pix2)) * (255 - (perc)); \
1062 V = (V + 128) / 255; \
1063 V = gp_linear10_to_gamma8(V); \
1067 A = gp_gamma8_to_linear10(GP_PIXEL_GET_A_GA88(pix1)) * (perc); \
1068 A += gp_gamma8_to_linear10(GP_PIXEL_GET_A_GA88(pix2)) * (255 - (perc)); \
1069 A = (A + 128) / 255; \
1070 A = gp_linear10_to_gamma8(A); \
1073 GP_PIXEL_CREATE_GA88(V, A); \
1076#define GP_MIX_PIXELS_GA88(pix1, pix2, perc) \
1077 GP_MIX_PIXELS_LINEAR_GA88(pix1, pix2, perc)
1084#define GP_MIX_PIXELS_LINEAR_G16(pix1, pix2, perc) ({ \
1087 V = GP_PIXEL_GET_V_G16(pix1) * (perc); \
1088 V += GP_PIXEL_GET_V_G16(pix2) * (255 - (perc)); \
1089 V = (V + 128) / 255; \
1092 GP_PIXEL_CREATE_G16(V); \
1100#define GP_MIX_PIXELS_GAMMA_G16(pix1, pix2, perc) ({ \
1103 V = gp_gamma16_to_linear10(GP_PIXEL_GET_V_G16(pix1)) * (perc); \
1104 V += gp_gamma16_to_linear10(GP_PIXEL_GET_V_G16(pix2)) * (255 - (perc)); \
1105 V = (V + 128) / 255; \
1106 V = gp_linear10_to_gamma16(V); \
1109 GP_PIXEL_CREATE_G16(V); \
1112#define GP_MIX_PIXELS_G16(pix1, pix2, perc) \
1113 GP_MIX_PIXELS_LINEAR_G16(pix1, pix2, perc)
1118 switch (pixel_type) {
1119 case GP_PIXEL_RGB101010:
1120 return GP_MIX_PIXELS_LINEAR_RGB101010(pix1, pix2, perc);
1121 case GP_PIXEL_xRGB8888:
1122 return GP_MIX_PIXELS_LINEAR_xRGB8888(pix1, pix2, perc);
1123 case GP_PIXEL_RGBA8888:
1124 return GP_MIX_PIXELS_LINEAR_RGBA8888(pix1, pix2, perc);
1125 case GP_PIXEL_RGB888:
1126 return GP_MIX_PIXELS_LINEAR_RGB888(pix1, pix2, perc);
1127 case GP_PIXEL_BGR888:
1128 return GP_MIX_PIXELS_LINEAR_BGR888(pix1, pix2, perc);
1129 case GP_PIXEL_RGB555:
1130 return GP_MIX_PIXELS_LINEAR_RGB555(pix1, pix2, perc);
1131 case GP_PIXEL_RGB565:
1132 return GP_MIX_PIXELS_LINEAR_RGB565(pix1, pix2, perc);
1133 case GP_PIXEL_RGB666:
1134 return GP_MIX_PIXELS_LINEAR_RGB666(pix1, pix2, perc);
1135 case GP_PIXEL_RGB332:
1136 return GP_MIX_PIXELS_LINEAR_RGB332(pix1, pix2, perc);
1137 case GP_PIXEL_CMYK8888:
1138 return GP_MIX_PIXELS_LINEAR_CMYK8888(pix1, pix2, perc);
1140 return GP_MIX_PIXELS_LINEAR_P2(pix1, pix2, perc);
1142 return GP_MIX_PIXELS_LINEAR_P4(pix1, pix2, perc);
1144 return GP_MIX_PIXELS_LINEAR_P8(pix1, pix2, perc);
1145 case GP_PIXEL_G1_DB:
1146 return GP_MIX_PIXELS_LINEAR_G1_DB(pix1, pix2, perc);
1147 case GP_PIXEL_G2_DB:
1148 return GP_MIX_PIXELS_LINEAR_G2_DB(pix1, pix2, perc);
1149 case GP_PIXEL_G4_DB:
1150 return GP_MIX_PIXELS_LINEAR_G4_DB(pix1, pix2, perc);
1151 case GP_PIXEL_G1_UB:
1152 return GP_MIX_PIXELS_LINEAR_G1_UB(pix1, pix2, perc);
1153 case GP_PIXEL_G2_UB:
1154 return GP_MIX_PIXELS_LINEAR_G2_UB(pix1, pix2, perc);
1155 case GP_PIXEL_G4_UB:
1156 return GP_MIX_PIXELS_LINEAR_G4_UB(pix1, pix2, perc);
1158 return GP_MIX_PIXELS_LINEAR_G8(pix1, pix2, perc);
1160 return GP_MIX_PIXELS_LINEAR_GA88(pix1, pix2, perc);
1162 return GP_MIX_PIXELS_LINEAR_G16(pix1, pix2, perc);
1164 GP_ABORT(
"Unknown pixeltype");
1169static inline void gp_mix_pixel_raw_RGB101010(
gp_pixmap *pixmap,
1173 pix = GP_MIX_PIXELS_RGB101010(pixel, pix, perc);
1177static inline void gp_mix_pixel_raw_xRGB8888(
gp_pixmap *pixmap,
1181 pix = GP_MIX_PIXELS_xRGB8888(pixel, pix, perc);
1185static inline void gp_mix_pixel_raw_RGBA8888(
gp_pixmap *pixmap,
1189 pix = GP_MIX_PIXELS_RGBA8888(pixel, pix, perc);
1193static inline void gp_mix_pixel_raw_RGB888(
gp_pixmap *pixmap,
1197 pix = GP_MIX_PIXELS_RGB888(pixel, pix, perc);
1201static inline void gp_mix_pixel_raw_BGR888(
gp_pixmap *pixmap,
1205 pix = GP_MIX_PIXELS_BGR888(pixel, pix, perc);
1209static inline void gp_mix_pixel_raw_RGB555(
gp_pixmap *pixmap,
1213 pix = GP_MIX_PIXELS_RGB555(pixel, pix, perc);
1217static inline void gp_mix_pixel_raw_RGB565(
gp_pixmap *pixmap,
1221 pix = GP_MIX_PIXELS_RGB565(pixel, pix, perc);
1225static inline void gp_mix_pixel_raw_RGB666(
gp_pixmap *pixmap,
1229 pix = GP_MIX_PIXELS_RGB666(pixel, pix, perc);
1233static inline void gp_mix_pixel_raw_RGB332(
gp_pixmap *pixmap,
1237 pix = GP_MIX_PIXELS_RGB332(pixel, pix, perc);
1241static inline void gp_mix_pixel_raw_CMYK8888(
gp_pixmap *pixmap,
1245 pix = GP_MIX_PIXELS_CMYK8888(pixel, pix, perc);
1249static inline void gp_mix_pixel_raw_P2(
gp_pixmap *pixmap,
1253 pix = GP_MIX_PIXELS_P2(pixel, pix, perc);
1257static inline void gp_mix_pixel_raw_P4(
gp_pixmap *pixmap,
1261 pix = GP_MIX_PIXELS_P4(pixel, pix, perc);
1265static inline void gp_mix_pixel_raw_P8(
gp_pixmap *pixmap,
1269 pix = GP_MIX_PIXELS_P8(pixel, pix, perc);
1273static inline void gp_mix_pixel_raw_G1_DB(
gp_pixmap *pixmap,
1277 pix = GP_MIX_PIXELS_G1_DB(pixel, pix, perc);
1281static inline void gp_mix_pixel_raw_G2_DB(
gp_pixmap *pixmap,
1285 pix = GP_MIX_PIXELS_G2_DB(pixel, pix, perc);
1289static inline void gp_mix_pixel_raw_G4_DB(
gp_pixmap *pixmap,
1293 pix = GP_MIX_PIXELS_G4_DB(pixel, pix, perc);
1297static inline void gp_mix_pixel_raw_G1_UB(
gp_pixmap *pixmap,
1301 pix = GP_MIX_PIXELS_G1_UB(pixel, pix, perc);
1305static inline void gp_mix_pixel_raw_G2_UB(
gp_pixmap *pixmap,
1309 pix = GP_MIX_PIXELS_G2_UB(pixel, pix, perc);
1313static inline void gp_mix_pixel_raw_G4_UB(
gp_pixmap *pixmap,
1317 pix = GP_MIX_PIXELS_G4_UB(pixel, pix, perc);
1321static inline void gp_mix_pixel_raw_G8(
gp_pixmap *pixmap,
1325 pix = GP_MIX_PIXELS_G8(pixel, pix, perc);
1329static inline void gp_mix_pixel_raw_GA88(
gp_pixmap *pixmap,
1333 pix = GP_MIX_PIXELS_GA88(pixel, pix, perc);
1337static inline void gp_mix_pixel_raw_G16(
gp_pixmap *pixmap,
1341 pix = GP_MIX_PIXELS_G16(pixel, pix, perc);
1346static inline void gp_mix_pixel_raw_clipped_RGB101010(
gp_pixmap *pixmap,
1352 gp_mix_pixel_raw_RGB101010(pixmap, x, y, pixel, perc);
1355static inline void gp_mix_pixel_raw_clipped_xRGB8888(
gp_pixmap *pixmap,
1361 gp_mix_pixel_raw_xRGB8888(pixmap, x, y, pixel, perc);
1364static inline void gp_mix_pixel_raw_clipped_RGBA8888(
gp_pixmap *pixmap,
1370 gp_mix_pixel_raw_RGBA8888(pixmap, x, y, pixel, perc);
1373static inline void gp_mix_pixel_raw_clipped_RGB888(
gp_pixmap *pixmap,
1379 gp_mix_pixel_raw_RGB888(pixmap, x, y, pixel, perc);
1382static inline void gp_mix_pixel_raw_clipped_BGR888(
gp_pixmap *pixmap,
1388 gp_mix_pixel_raw_BGR888(pixmap, x, y, pixel, perc);
1391static inline void gp_mix_pixel_raw_clipped_RGB555(
gp_pixmap *pixmap,
1397 gp_mix_pixel_raw_RGB555(pixmap, x, y, pixel, perc);
1400static inline void gp_mix_pixel_raw_clipped_RGB565(
gp_pixmap *pixmap,
1406 gp_mix_pixel_raw_RGB565(pixmap, x, y, pixel, perc);
1409static inline void gp_mix_pixel_raw_clipped_RGB666(
gp_pixmap *pixmap,
1415 gp_mix_pixel_raw_RGB666(pixmap, x, y, pixel, perc);
1418static inline void gp_mix_pixel_raw_clipped_RGB332(
gp_pixmap *pixmap,
1424 gp_mix_pixel_raw_RGB332(pixmap, x, y, pixel, perc);
1427static inline void gp_mix_pixel_raw_clipped_CMYK8888(
gp_pixmap *pixmap,
1433 gp_mix_pixel_raw_CMYK8888(pixmap, x, y, pixel, perc);
1436static inline void gp_mix_pixel_raw_clipped_P2(
gp_pixmap *pixmap,
1442 gp_mix_pixel_raw_P2(pixmap, x, y, pixel, perc);
1445static inline void gp_mix_pixel_raw_clipped_P4(
gp_pixmap *pixmap,
1451 gp_mix_pixel_raw_P4(pixmap, x, y, pixel, perc);
1454static inline void gp_mix_pixel_raw_clipped_P8(
gp_pixmap *pixmap,
1460 gp_mix_pixel_raw_P8(pixmap, x, y, pixel, perc);
1463static inline void gp_mix_pixel_raw_clipped_G1_DB(
gp_pixmap *pixmap,
1469 gp_mix_pixel_raw_G1_DB(pixmap, x, y, pixel, perc);
1472static inline void gp_mix_pixel_raw_clipped_G2_DB(
gp_pixmap *pixmap,
1478 gp_mix_pixel_raw_G2_DB(pixmap, x, y, pixel, perc);
1481static inline void gp_mix_pixel_raw_clipped_G4_DB(
gp_pixmap *pixmap,
1487 gp_mix_pixel_raw_G4_DB(pixmap, x, y, pixel, perc);
1490static inline void gp_mix_pixel_raw_clipped_G1_UB(
gp_pixmap *pixmap,
1496 gp_mix_pixel_raw_G1_UB(pixmap, x, y, pixel, perc);
1499static inline void gp_mix_pixel_raw_clipped_G2_UB(
gp_pixmap *pixmap,
1505 gp_mix_pixel_raw_G2_UB(pixmap, x, y, pixel, perc);
1508static inline void gp_mix_pixel_raw_clipped_G4_UB(
gp_pixmap *pixmap,
1514 gp_mix_pixel_raw_G4_UB(pixmap, x, y, pixel, perc);
1517static inline void gp_mix_pixel_raw_clipped_G8(
gp_pixmap *pixmap,
1523 gp_mix_pixel_raw_G8(pixmap, x, y, pixel, perc);
1526static inline void gp_mix_pixel_raw_clipped_GA88(
gp_pixmap *pixmap,
1532 gp_mix_pixel_raw_GA88(pixmap, x, y, pixel, perc);
1535static inline void gp_mix_pixel_raw_clipped_G16(
gp_pixmap *pixmap,
1541 gp_mix_pixel_raw_G16(pixmap, x, y, pixel, perc);
1549 case GP_PIXEL_RGB101010:
1550 gp_mix_pixel_raw_RGB101010(pixmap, x, y, pixel, perc);
1552 case GP_PIXEL_xRGB8888:
1553 gp_mix_pixel_raw_xRGB8888(pixmap, x, y, pixel, perc);
1555 case GP_PIXEL_RGBA8888:
1556 gp_mix_pixel_raw_RGBA8888(pixmap, x, y, pixel, perc);
1558 case GP_PIXEL_RGB888:
1559 gp_mix_pixel_raw_RGB888(pixmap, x, y, pixel, perc);
1561 case GP_PIXEL_BGR888:
1562 gp_mix_pixel_raw_BGR888(pixmap, x, y, pixel, perc);
1564 case GP_PIXEL_RGB555:
1565 gp_mix_pixel_raw_RGB555(pixmap, x, y, pixel, perc);
1567 case GP_PIXEL_RGB565:
1568 gp_mix_pixel_raw_RGB565(pixmap, x, y, pixel, perc);
1570 case GP_PIXEL_RGB666:
1571 gp_mix_pixel_raw_RGB666(pixmap, x, y, pixel, perc);
1573 case GP_PIXEL_RGB332:
1574 gp_mix_pixel_raw_RGB332(pixmap, x, y, pixel, perc);
1576 case GP_PIXEL_CMYK8888:
1577 gp_mix_pixel_raw_CMYK8888(pixmap, x, y, pixel, perc);
1580 gp_mix_pixel_raw_P2(pixmap, x, y, pixel, perc);
1583 gp_mix_pixel_raw_P4(pixmap, x, y, pixel, perc);
1586 gp_mix_pixel_raw_P8(pixmap, x, y, pixel, perc);
1588 case GP_PIXEL_G1_DB:
1589 gp_mix_pixel_raw_G1_DB(pixmap, x, y, pixel, perc);
1591 case GP_PIXEL_G2_DB:
1592 gp_mix_pixel_raw_G2_DB(pixmap, x, y, pixel, perc);
1594 case GP_PIXEL_G4_DB:
1595 gp_mix_pixel_raw_G4_DB(pixmap, x, y, pixel, perc);
1597 case GP_PIXEL_G1_UB:
1598 gp_mix_pixel_raw_G1_UB(pixmap, x, y, pixel, perc);
1600 case GP_PIXEL_G2_UB:
1601 gp_mix_pixel_raw_G2_UB(pixmap, x, y, pixel, perc);
1603 case GP_PIXEL_G4_UB:
1604 gp_mix_pixel_raw_G4_UB(pixmap, x, y, pixel, perc);
1607 gp_mix_pixel_raw_G8(pixmap, x, y, pixel, perc);
1610 gp_mix_pixel_raw_GA88(pixmap, x, y, pixel, perc);
1613 gp_mix_pixel_raw_G16(pixmap, x, y, pixel, perc);
1616 GP_ABORT(
"Unknown pixeltype");
1620static inline void gp_mix_pixel_raw_clipped(
gp_pixmap *pixmap,
1625 case GP_PIXEL_RGB101010:
1626 gp_mix_pixel_raw_clipped_RGB101010(pixmap, x, y, pixel, perc);
1628 case GP_PIXEL_xRGB8888:
1629 gp_mix_pixel_raw_clipped_xRGB8888(pixmap, x, y, pixel, perc);
1631 case GP_PIXEL_RGBA8888:
1632 gp_mix_pixel_raw_clipped_RGBA8888(pixmap, x, y, pixel, perc);
1634 case GP_PIXEL_RGB888:
1635 gp_mix_pixel_raw_clipped_RGB888(pixmap, x, y, pixel, perc);
1637 case GP_PIXEL_BGR888:
1638 gp_mix_pixel_raw_clipped_BGR888(pixmap, x, y, pixel, perc);
1640 case GP_PIXEL_RGB555:
1641 gp_mix_pixel_raw_clipped_RGB555(pixmap, x, y, pixel, perc);
1643 case GP_PIXEL_RGB565:
1644 gp_mix_pixel_raw_clipped_RGB565(pixmap, x, y, pixel, perc);
1646 case GP_PIXEL_RGB666:
1647 gp_mix_pixel_raw_clipped_RGB666(pixmap, x, y, pixel, perc);
1649 case GP_PIXEL_RGB332:
1650 gp_mix_pixel_raw_clipped_RGB332(pixmap, x, y, pixel, perc);
1652 case GP_PIXEL_CMYK8888:
1653 gp_mix_pixel_raw_clipped_CMYK8888(pixmap, x, y, pixel, perc);
1656 gp_mix_pixel_raw_clipped_P2(pixmap, x, y, pixel, perc);
1659 gp_mix_pixel_raw_clipped_P4(pixmap, x, y, pixel, perc);
1662 gp_mix_pixel_raw_clipped_P8(pixmap, x, y, pixel, perc);
1664 case GP_PIXEL_G1_DB:
1665 gp_mix_pixel_raw_clipped_G1_DB(pixmap, x, y, pixel, perc);
1667 case GP_PIXEL_G2_DB:
1668 gp_mix_pixel_raw_clipped_G2_DB(pixmap, x, y, pixel, perc);
1670 case GP_PIXEL_G4_DB:
1671 gp_mix_pixel_raw_clipped_G4_DB(pixmap, x, y, pixel, perc);
1673 case GP_PIXEL_G1_UB:
1674 gp_mix_pixel_raw_clipped_G1_UB(pixmap, x, y, pixel, perc);
1676 case GP_PIXEL_G2_UB:
1677 gp_mix_pixel_raw_clipped_G2_UB(pixmap, x, y, pixel, perc);
1679 case GP_PIXEL_G4_UB:
1680 gp_mix_pixel_raw_clipped_G4_UB(pixmap, x, y, pixel, perc);
1683 gp_mix_pixel_raw_clipped_G8(pixmap, x, y, pixel, perc);
1686 gp_mix_pixel_raw_clipped_GA88(pixmap, x, y, pixel, perc);
1689 gp_mix_pixel_raw_clipped_G16(pixmap, x, y, pixel, perc);
1692 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_16BPP(gp_pixmap *c, gp_coord x, gp_coord y, gp_pixel p)
gp_putpixel for 16BPP
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_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 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(const gp_pixmap *c, gp_coord x, gp_coord y)
gp_getpixel for 16BPP
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.