9#ifndef GP_PIXEL_CHANNEL_GEN_H
10#define GP_PIXEL_CHANNEL_GEN_H
34#define GP_PIXEL_GET_R_RGB101010(p) (GP_GET_BITS(20, 10, (p)))
35#define GP_PIXEL_GET_G_RGB101010(p) (GP_GET_BITS(10, 10, (p)))
36#define GP_PIXEL_GET_B_RGB101010(p) (GP_GET_BITS(0, 10, (p)))
42#define GP_PIXEL_CREATE_RGB101010(R, G, B) (0\
54#define GP_PIXEL_GET_R_xRGB8888(p) (GP_GET_BITS(16, 8, (p)))
55#define GP_PIXEL_GET_G_xRGB8888(p) (GP_GET_BITS(8, 8, (p)))
56#define GP_PIXEL_GET_B_xRGB8888(p) (GP_GET_BITS(0, 8, (p)))
62#define GP_PIXEL_CREATE_xRGB8888(R, G, B) (0\
74#define GP_PIXEL_GET_R_RGBA8888(p) (GP_GET_BITS(24, 8, (p)))
75#define GP_PIXEL_GET_G_RGBA8888(p) (GP_GET_BITS(16, 8, (p)))
76#define GP_PIXEL_GET_B_RGBA8888(p) (GP_GET_BITS(8, 8, (p)))
77#define GP_PIXEL_GET_A_RGBA8888(p) (GP_GET_BITS(0, 8, (p)))
83#define GP_PIXEL_CREATE_RGBA8888(R, G, B, A) (0\
96#define GP_PIXEL_GET_R_RGB888(p) (GP_GET_BITS(16, 8, (p)))
97#define GP_PIXEL_GET_G_RGB888(p) (GP_GET_BITS(8, 8, (p)))
98#define GP_PIXEL_GET_B_RGB888(p) (GP_GET_BITS(0, 8, (p)))
104#define GP_PIXEL_CREATE_RGB888(R, G, B) (0\
116#define GP_PIXEL_GET_B_BGR888(p) (GP_GET_BITS(16, 8, (p)))
117#define GP_PIXEL_GET_G_BGR888(p) (GP_GET_BITS(8, 8, (p)))
118#define GP_PIXEL_GET_R_BGR888(p) (GP_GET_BITS(0, 8, (p)))
124#define GP_PIXEL_CREATE_BGR888(B, G, R) (0\
136#define GP_PIXEL_GET_R_RGB555(p) (GP_GET_BITS(10, 5, (p)))
137#define GP_PIXEL_GET_G_RGB555(p) (GP_GET_BITS(5, 5, (p)))
138#define GP_PIXEL_GET_B_RGB555(p) (GP_GET_BITS(0, 5, (p)))
144#define GP_PIXEL_CREATE_RGB555(R, G, B) (0\
156#define GP_PIXEL_GET_R_RGB565_BE(p) (GP_GET_BITS(11, 5, (p)))
157#define GP_PIXEL_GET_G_RGB565_BE(p) (GP_GET_BITS(5, 6, (p)))
158#define GP_PIXEL_GET_B_RGB565_BE(p) (GP_GET_BITS(0, 5, (p)))
164#define GP_PIXEL_CREATE_RGB565_BE(R, G, B) (0\
176#define GP_PIXEL_GET_R_RGB565_LE(p) (GP_GET_BITS(11, 5, (p)))
177#define GP_PIXEL_GET_G_RGB565_LE(p) (GP_GET_BITS(5, 6, (p)))
178#define GP_PIXEL_GET_B_RGB565_LE(p) (GP_GET_BITS(0, 5, (p)))
184#define GP_PIXEL_CREATE_RGB565_LE(R, G, B) (0\
196#define GP_PIXEL_GET_R_RGB666(p) (GP_GET_BITS(12, 6, (p)))
197#define GP_PIXEL_GET_G_RGB666(p) (GP_GET_BITS(6, 6, (p)))
198#define GP_PIXEL_GET_B_RGB666(p) (GP_GET_BITS(0, 6, (p)))
204#define GP_PIXEL_CREATE_RGB666(R, G, B) (0\
216#define GP_PIXEL_GET_R_RGB332(p) (GP_GET_BITS(5, 3, (p)))
217#define GP_PIXEL_GET_G_RGB332(p) (GP_GET_BITS(2, 3, (p)))
218#define GP_PIXEL_GET_B_RGB332(p) (GP_GET_BITS(0, 2, (p)))
224#define GP_PIXEL_CREATE_RGB332(R, G, B) (0\
236#define GP_PIXEL_GET_K_CMYK8888(p) (GP_GET_BITS(24, 8, (p)))
237#define GP_PIXEL_GET_Y_CMYK8888(p) (GP_GET_BITS(16, 8, (p)))
238#define GP_PIXEL_GET_M_CMYK8888(p) (GP_GET_BITS(8, 8, (p)))
239#define GP_PIXEL_GET_C_CMYK8888(p) (GP_GET_BITS(0, 8, (p)))
245#define GP_PIXEL_CREATE_CMYK8888(K, Y, M, C) (0\
258#define GP_PIXEL_GET_P_P2(p) (GP_GET_BITS(0, 2, (p)))
264#define GP_PIXEL_CREATE_P2(P) (0\
274#define GP_PIXEL_GET_P_P4(p) (GP_GET_BITS(0, 4, (p)))
280#define GP_PIXEL_CREATE_P4(P) (0\
290#define GP_PIXEL_GET_P_P8(p) (GP_GET_BITS(0, 8, (p)))
296#define GP_PIXEL_CREATE_P8(P) (0\
306#define GP_PIXEL_GET_V_G1_DB(p) (GP_GET_BITS(0, 1, (p)))
312#define GP_PIXEL_CREATE_G1_DB(V) (0\
322#define GP_PIXEL_GET_V_G2_DB(p) (GP_GET_BITS(0, 2, (p)))
328#define GP_PIXEL_CREATE_G2_DB(V) (0\
338#define GP_PIXEL_GET_V_G4_DB(p) (GP_GET_BITS(0, 4, (p)))
344#define GP_PIXEL_CREATE_G4_DB(V) (0\
354#define GP_PIXEL_GET_V_G1_UB(p) (GP_GET_BITS(0, 1, (p)))
360#define GP_PIXEL_CREATE_G1_UB(V) (0\
370#define GP_PIXEL_GET_V_G2_UB(p) (GP_GET_BITS(0, 2, (p)))
376#define GP_PIXEL_CREATE_G2_UB(V) (0\
386#define GP_PIXEL_GET_V_G4_UB(p) (GP_GET_BITS(0, 4, (p)))
392#define GP_PIXEL_CREATE_G4_UB(V) (0\
402#define GP_PIXEL_GET_V_G8(p) (GP_GET_BITS(0, 8, (p)))
408#define GP_PIXEL_CREATE_G8(V) (0\
418#define GP_PIXEL_GET_V_GA88(p) (GP_GET_BITS(0, 8, (p)))
419#define GP_PIXEL_GET_A_GA88(p) (GP_GET_BITS(8, 8, (p)))
425#define GP_PIXEL_CREATE_GA88(V, A) (0\
436#define GP_PIXEL_GET_V_G16(p) (GP_GET_BITS(0, 16, (p)))
442#define GP_PIXEL_CREATE_G16(V) (0\
449#define GP_PIXEL_CHANS_ADD_RGB101010(pixel, perc) \
450 GP_PIXEL_CREATE_RGB101010( \
451 GP_SAT_ADD(GP_PIXEL_GET_R_RGB101010(pixel), 0x3ff * perc / 100, 0x3ff), \
452 GP_SAT_ADD(GP_PIXEL_GET_G_RGB101010(pixel), 0x3ff * perc / 100, 0x3ff), \
453 GP_SAT_ADD(GP_PIXEL_GET_B_RGB101010(pixel), 0x3ff * perc / 100, 0x3ff) \
456#define GP_PIXEL_CHANS_ADD_xRGB8888(pixel, perc) \
457 GP_PIXEL_CREATE_xRGB8888( \
458 GP_SAT_ADD(GP_PIXEL_GET_R_xRGB8888(pixel), 0xff * perc / 100, 0xff), \
459 GP_SAT_ADD(GP_PIXEL_GET_G_xRGB8888(pixel), 0xff * perc / 100, 0xff), \
460 GP_SAT_ADD(GP_PIXEL_GET_B_xRGB8888(pixel), 0xff * perc / 100, 0xff) \
463#define GP_PIXEL_CHANS_ADD_RGBA8888(pixel, perc) \
464 GP_PIXEL_CREATE_RGBA8888( \
465 GP_SAT_ADD(GP_PIXEL_GET_R_RGBA8888(pixel), 0xff * perc / 100, 0xff), \
466 GP_SAT_ADD(GP_PIXEL_GET_G_RGBA8888(pixel), 0xff * perc / 100, 0xff), \
467 GP_SAT_ADD(GP_PIXEL_GET_B_RGBA8888(pixel), 0xff * perc / 100, 0xff), \
468 GP_PIXEL_GET_A_RGBA8888(pixel) \
471#define GP_PIXEL_CHANS_ADD_RGB888(pixel, perc) \
472 GP_PIXEL_CREATE_RGB888( \
473 GP_SAT_ADD(GP_PIXEL_GET_R_RGB888(pixel), 0xff * perc / 100, 0xff), \
474 GP_SAT_ADD(GP_PIXEL_GET_G_RGB888(pixel), 0xff * perc / 100, 0xff), \
475 GP_SAT_ADD(GP_PIXEL_GET_B_RGB888(pixel), 0xff * perc / 100, 0xff) \
478#define GP_PIXEL_CHANS_ADD_BGR888(pixel, perc) \
479 GP_PIXEL_CREATE_BGR888( \
480 GP_SAT_ADD(GP_PIXEL_GET_B_BGR888(pixel), 0xff * perc / 100, 0xff), \
481 GP_SAT_ADD(GP_PIXEL_GET_G_BGR888(pixel), 0xff * perc / 100, 0xff), \
482 GP_SAT_ADD(GP_PIXEL_GET_R_BGR888(pixel), 0xff * perc / 100, 0xff) \
485#define GP_PIXEL_CHANS_ADD_RGB555(pixel, perc) \
486 GP_PIXEL_CREATE_RGB555( \
487 GP_SAT_ADD(GP_PIXEL_GET_R_RGB555(pixel), 0x1f * perc / 100, 0x1f), \
488 GP_SAT_ADD(GP_PIXEL_GET_G_RGB555(pixel), 0x1f * perc / 100, 0x1f), \
489 GP_SAT_ADD(GP_PIXEL_GET_B_RGB555(pixel), 0x1f * perc / 100, 0x1f) \
492#define GP_PIXEL_CHANS_ADD_RGB565_BE(pixel, perc) \
493 GP_PIXEL_CREATE_RGB565_BE( \
494 GP_SAT_ADD(GP_PIXEL_GET_R_RGB565_BE(pixel), 0x1f * perc / 100, 0x1f), \
495 GP_SAT_ADD(GP_PIXEL_GET_G_RGB565_BE(pixel), 0x3f * perc / 100, 0x3f), \
496 GP_SAT_ADD(GP_PIXEL_GET_B_RGB565_BE(pixel), 0x1f * perc / 100, 0x1f) \
499#define GP_PIXEL_CHANS_ADD_RGB565_LE(pixel, perc) \
500 GP_PIXEL_CREATE_RGB565_LE( \
501 GP_SAT_ADD(GP_PIXEL_GET_R_RGB565_LE(pixel), 0x1f * perc / 100, 0x1f), \
502 GP_SAT_ADD(GP_PIXEL_GET_G_RGB565_LE(pixel), 0x3f * perc / 100, 0x3f), \
503 GP_SAT_ADD(GP_PIXEL_GET_B_RGB565_LE(pixel), 0x1f * perc / 100, 0x1f) \
506#define GP_PIXEL_CHANS_ADD_RGB666(pixel, perc) \
507 GP_PIXEL_CREATE_RGB666( \
508 GP_SAT_ADD(GP_PIXEL_GET_R_RGB666(pixel), 0x3f * perc / 100, 0x3f), \
509 GP_SAT_ADD(GP_PIXEL_GET_G_RGB666(pixel), 0x3f * perc / 100, 0x3f), \
510 GP_SAT_ADD(GP_PIXEL_GET_B_RGB666(pixel), 0x3f * perc / 100, 0x3f) \
513#define GP_PIXEL_CHANS_ADD_RGB332(pixel, perc) \
514 GP_PIXEL_CREATE_RGB332( \
515 GP_SAT_ADD(GP_PIXEL_GET_R_RGB332(pixel), 0x7 * perc / 100, 0x7), \
516 GP_SAT_ADD(GP_PIXEL_GET_G_RGB332(pixel), 0x7 * perc / 100, 0x7), \
517 GP_SAT_ADD(GP_PIXEL_GET_B_RGB332(pixel), 0x3 * perc / 100, 0x3) \
520#define GP_PIXEL_CHANS_ADD_CMYK8888(pixel, perc) \
521 GP_PIXEL_CREATE_CMYK8888( \
522 GP_SAT_ADD(GP_PIXEL_GET_K_CMYK8888(pixel), 0xff * perc / 100, 0xff), \
523 GP_SAT_ADD(GP_PIXEL_GET_Y_CMYK8888(pixel), 0xff * perc / 100, 0xff), \
524 GP_SAT_ADD(GP_PIXEL_GET_M_CMYK8888(pixel), 0xff * perc / 100, 0xff), \
525 GP_SAT_ADD(GP_PIXEL_GET_C_CMYK8888(pixel), 0xff * perc / 100, 0xff) \
528#define GP_PIXEL_CHANS_ADD_P2(pixel, perc) \
529 GP_PIXEL_CREATE_P2( \
530 GP_SAT_ADD(GP_PIXEL_GET_P_P2(pixel), 0x3 * perc / 100, 0x3) \
533#define GP_PIXEL_CHANS_ADD_P4(pixel, perc) \
534 GP_PIXEL_CREATE_P4( \
535 GP_SAT_ADD(GP_PIXEL_GET_P_P4(pixel), 0xf * perc / 100, 0xf) \
538#define GP_PIXEL_CHANS_ADD_P8(pixel, perc) \
539 GP_PIXEL_CREATE_P8( \
540 GP_SAT_ADD(GP_PIXEL_GET_P_P8(pixel), 0xff * perc / 100, 0xff) \
543#define GP_PIXEL_CHANS_ADD_G1_DB(pixel, perc) \
544 GP_PIXEL_CREATE_G1_DB( \
545 GP_SAT_ADD(GP_PIXEL_GET_V_G1_DB(pixel), 0x1 * perc / 100, 0x1) \
548#define GP_PIXEL_CHANS_ADD_G2_DB(pixel, perc) \
549 GP_PIXEL_CREATE_G2_DB( \
550 GP_SAT_ADD(GP_PIXEL_GET_V_G2_DB(pixel), 0x3 * perc / 100, 0x3) \
553#define GP_PIXEL_CHANS_ADD_G4_DB(pixel, perc) \
554 GP_PIXEL_CREATE_G4_DB( \
555 GP_SAT_ADD(GP_PIXEL_GET_V_G4_DB(pixel), 0xf * perc / 100, 0xf) \
558#define GP_PIXEL_CHANS_ADD_G1_UB(pixel, perc) \
559 GP_PIXEL_CREATE_G1_UB( \
560 GP_SAT_ADD(GP_PIXEL_GET_V_G1_UB(pixel), 0x1 * perc / 100, 0x1) \
563#define GP_PIXEL_CHANS_ADD_G2_UB(pixel, perc) \
564 GP_PIXEL_CREATE_G2_UB( \
565 GP_SAT_ADD(GP_PIXEL_GET_V_G2_UB(pixel), 0x3 * perc / 100, 0x3) \
568#define GP_PIXEL_CHANS_ADD_G4_UB(pixel, perc) \
569 GP_PIXEL_CREATE_G4_UB( \
570 GP_SAT_ADD(GP_PIXEL_GET_V_G4_UB(pixel), 0xf * perc / 100, 0xf) \
573#define GP_PIXEL_CHANS_ADD_G8(pixel, perc) \
574 GP_PIXEL_CREATE_G8( \
575 GP_SAT_ADD(GP_PIXEL_GET_V_G8(pixel), 0xff * perc / 100, 0xff) \
578#define GP_PIXEL_CHANS_ADD_GA88(pixel, perc) \
579 GP_PIXEL_CREATE_GA88( \
580 GP_SAT_ADD(GP_PIXEL_GET_V_GA88(pixel), 0xff * perc / 100, 0xff), \
581 GP_PIXEL_GET_A_GA88(pixel) \
584#define GP_PIXEL_CHANS_ADD_G16(pixel, perc) \
585 GP_PIXEL_CREATE_G16( \
586 GP_SAT_ADD(GP_PIXEL_GET_V_G16(pixel), 0xffff * perc / 100, 0xffff) \
Helper macros to get and set bytes.