GFXprim
2D bitmap graphics library with emphasis on speed and correctness
Loading...
Searching...
No Matches
gp_gamma_pixel.gen.h
1// SPDX-License-Identifier: GPL-2.1-or-later
2/*
3 * gp_gamma_pixel.gen.h
4 *
5 * GENERATED on 2024 04 14 13:01:17 from gp_gamma_pixel.gen.h.t
6 *
7 * DO NOT MODIFY THIS FILE DIRECTLY!
8 */
9#ifndef GP_GAMMA_PIXEL_GEN_H
10#define GP_GAMMA_PIXEL_GEN_H
11
12/*
13 * Gamma correction for pixels
14 *
15 * Copyright (C) 2012-2014 Cyril Hrubis <metan@ucw.cz>
16 */
17
18#include <core/GP_Types.h>
20
21
22
23/*
24 * Converts gamma encoded pixel value to linear value.
25 *
26 * Parameters are, converted value and gp_gamma structure.
27 */
28#define gp_gamma2lin_RGB101010_R(val, gamma) ({ \
29 gamma->tables[0]->u16[val]; \
30})
31
32/*
33 * Converts linear encoded pixel into gamma encoded pixel.
34 *
35 * Parameters are, converted value and gp_gamma structure.
36 */
37#define gp_lin2gamma_RGB101010_R(val, gamma) ({ \
38 gamma->tables[3]->u16[val]; \
39})
40
41static inline gp_gamma_table *gp_gamma_table_RGB101010_R(gp_gamma *gamma)
42{
43 return gamma->tables[0];
44}
45
46static inline gp_gamma_table *gp_gamma_inverse_table_RGB101010_R(gp_gamma *gamma)
47{
48 return gamma->tables[3];
49}
50
51
52/*
53 * Converts gamma encoded pixel value to linear value.
54 *
55 * Parameters are, converted value and gp_gamma structure.
56 */
57#define gp_gamma2lin_RGB101010_G(val, gamma) ({ \
58 gamma->tables[1]->u16[val]; \
59})
60
61/*
62 * Converts linear encoded pixel into gamma encoded pixel.
63 *
64 * Parameters are, converted value and gp_gamma structure.
65 */
66#define gp_lin2gamma_RGB101010_G(val, gamma) ({ \
67 gamma->tables[4]->u16[val]; \
68})
69
70static inline gp_gamma_table *gp_gamma_table_RGB101010_G(gp_gamma *gamma)
71{
72 return gamma->tables[1];
73}
74
75static inline gp_gamma_table *gp_gamma_inverse_table_RGB101010_G(gp_gamma *gamma)
76{
77 return gamma->tables[4];
78}
79
80
81/*
82 * Converts gamma encoded pixel value to linear value.
83 *
84 * Parameters are, converted value and gp_gamma structure.
85 */
86#define gp_gamma2lin_RGB101010_B(val, gamma) ({ \
87 gamma->tables[2]->u16[val]; \
88})
89
90/*
91 * Converts linear encoded pixel into gamma encoded pixel.
92 *
93 * Parameters are, converted value and gp_gamma structure.
94 */
95#define gp_lin2gamma_RGB101010_B(val, gamma) ({ \
96 gamma->tables[5]->u16[val]; \
97})
98
99static inline gp_gamma_table *gp_gamma_table_RGB101010_B(gp_gamma *gamma)
100{
101 return gamma->tables[2];
102}
103
104static inline gp_gamma_table *gp_gamma_inverse_table_RGB101010_B(gp_gamma *gamma)
105{
106 return gamma->tables[5];
107}
108
109
110
111/*
112 * Converts gamma encoded pixel value to linear value.
113 *
114 * Parameters are, converted value and gp_gamma structure.
115 */
116#define gp_gamma2lin_xRGB8888_R(val, gamma) ({ \
117 gamma->tables[0]->u16[val]; \
118})
119
120/*
121 * Converts linear encoded pixel into gamma encoded pixel.
122 *
123 * Parameters are, converted value and gp_gamma structure.
124 */
125#define gp_lin2gamma_xRGB8888_R(val, gamma) ({ \
126 gamma->tables[3]->u8[val]; \
127})
128
129static inline gp_gamma_table *gp_gamma_table_xRGB8888_R(gp_gamma *gamma)
130{
131 return gamma->tables[0];
132}
133
134static inline gp_gamma_table *gp_gamma_inverse_table_xRGB8888_R(gp_gamma *gamma)
135{
136 return gamma->tables[3];
137}
138
139
140/*
141 * Converts gamma encoded pixel value to linear value.
142 *
143 * Parameters are, converted value and gp_gamma structure.
144 */
145#define gp_gamma2lin_xRGB8888_G(val, gamma) ({ \
146 gamma->tables[1]->u16[val]; \
147})
148
149/*
150 * Converts linear encoded pixel into gamma encoded pixel.
151 *
152 * Parameters are, converted value and gp_gamma structure.
153 */
154#define gp_lin2gamma_xRGB8888_G(val, gamma) ({ \
155 gamma->tables[4]->u8[val]; \
156})
157
158static inline gp_gamma_table *gp_gamma_table_xRGB8888_G(gp_gamma *gamma)
159{
160 return gamma->tables[1];
161}
162
163static inline gp_gamma_table *gp_gamma_inverse_table_xRGB8888_G(gp_gamma *gamma)
164{
165 return gamma->tables[4];
166}
167
168
169/*
170 * Converts gamma encoded pixel value to linear value.
171 *
172 * Parameters are, converted value and gp_gamma structure.
173 */
174#define gp_gamma2lin_xRGB8888_B(val, gamma) ({ \
175 gamma->tables[2]->u16[val]; \
176})
177
178/*
179 * Converts linear encoded pixel into gamma encoded pixel.
180 *
181 * Parameters are, converted value and gp_gamma structure.
182 */
183#define gp_lin2gamma_xRGB8888_B(val, gamma) ({ \
184 gamma->tables[5]->u8[val]; \
185})
186
187static inline gp_gamma_table *gp_gamma_table_xRGB8888_B(gp_gamma *gamma)
188{
189 return gamma->tables[2];
190}
191
192static inline gp_gamma_table *gp_gamma_inverse_table_xRGB8888_B(gp_gamma *gamma)
193{
194 return gamma->tables[5];
195}
196
197
198
199/*
200 * Converts gamma encoded pixel value to linear value.
201 *
202 * Parameters are, converted value and gp_gamma structure.
203 */
204#define gp_gamma2lin_RGBA8888_R(val, gamma) ({ \
205 gamma->tables[0]->u16[val]; \
206})
207
208/*
209 * Converts linear encoded pixel into gamma encoded pixel.
210 *
211 * Parameters are, converted value and gp_gamma structure.
212 */
213#define gp_lin2gamma_RGBA8888_R(val, gamma) ({ \
214 gamma->tables[4]->u8[val]; \
215})
216
217static inline gp_gamma_table *gp_gamma_table_RGBA8888_R(gp_gamma *gamma)
218{
219 return gamma->tables[0];
220}
221
222static inline gp_gamma_table *gp_gamma_inverse_table_RGBA8888_R(gp_gamma *gamma)
223{
224 return gamma->tables[4];
225}
226
227
228/*
229 * Converts gamma encoded pixel value to linear value.
230 *
231 * Parameters are, converted value and gp_gamma structure.
232 */
233#define gp_gamma2lin_RGBA8888_G(val, gamma) ({ \
234 gamma->tables[1]->u16[val]; \
235})
236
237/*
238 * Converts linear encoded pixel into gamma encoded pixel.
239 *
240 * Parameters are, converted value and gp_gamma structure.
241 */
242#define gp_lin2gamma_RGBA8888_G(val, gamma) ({ \
243 gamma->tables[5]->u8[val]; \
244})
245
246static inline gp_gamma_table *gp_gamma_table_RGBA8888_G(gp_gamma *gamma)
247{
248 return gamma->tables[1];
249}
250
251static inline gp_gamma_table *gp_gamma_inverse_table_RGBA8888_G(gp_gamma *gamma)
252{
253 return gamma->tables[5];
254}
255
256
257/*
258 * Converts gamma encoded pixel value to linear value.
259 *
260 * Parameters are, converted value and gp_gamma structure.
261 */
262#define gp_gamma2lin_RGBA8888_B(val, gamma) ({ \
263 gamma->tables[2]->u16[val]; \
264})
265
266/*
267 * Converts linear encoded pixel into gamma encoded pixel.
268 *
269 * Parameters are, converted value and gp_gamma structure.
270 */
271#define gp_lin2gamma_RGBA8888_B(val, gamma) ({ \
272 gamma->tables[6]->u8[val]; \
273})
274
275static inline gp_gamma_table *gp_gamma_table_RGBA8888_B(gp_gamma *gamma)
276{
277 return gamma->tables[2];
278}
279
280static inline gp_gamma_table *gp_gamma_inverse_table_RGBA8888_B(gp_gamma *gamma)
281{
282 return gamma->tables[6];
283}
284
285
286/*
287 * Converts gamma encoded pixel value to linear value.
288 *
289 * Parameters are, converted value and gp_gamma structure.
290 */
291#define gp_gamma2lin_RGBA8888_A(val, gamma) ({ \
292 gamma->tables[3]->u16[val]; \
293})
294
295/*
296 * Converts linear encoded pixel into gamma encoded pixel.
297 *
298 * Parameters are, converted value and gp_gamma structure.
299 */
300#define gp_lin2gamma_RGBA8888_A(val, gamma) ({ \
301 gamma->tables[7]->u8[val]; \
302})
303
304static inline gp_gamma_table *gp_gamma_table_RGBA8888_A(gp_gamma *gamma)
305{
306 return gamma->tables[3];
307}
308
309static inline gp_gamma_table *gp_gamma_inverse_table_RGBA8888_A(gp_gamma *gamma)
310{
311 return gamma->tables[7];
312}
313
314
315
316/*
317 * Converts gamma encoded pixel value to linear value.
318 *
319 * Parameters are, converted value and gp_gamma structure.
320 */
321#define gp_gamma2lin_RGB888_R(val, gamma) ({ \
322 gamma->tables[0]->u16[val]; \
323})
324
325/*
326 * Converts linear encoded pixel into gamma encoded pixel.
327 *
328 * Parameters are, converted value and gp_gamma structure.
329 */
330#define gp_lin2gamma_RGB888_R(val, gamma) ({ \
331 gamma->tables[3]->u8[val]; \
332})
333
334static inline gp_gamma_table *gp_gamma_table_RGB888_R(gp_gamma *gamma)
335{
336 return gamma->tables[0];
337}
338
339static inline gp_gamma_table *gp_gamma_inverse_table_RGB888_R(gp_gamma *gamma)
340{
341 return gamma->tables[3];
342}
343
344
345/*
346 * Converts gamma encoded pixel value to linear value.
347 *
348 * Parameters are, converted value and gp_gamma structure.
349 */
350#define gp_gamma2lin_RGB888_G(val, gamma) ({ \
351 gamma->tables[1]->u16[val]; \
352})
353
354/*
355 * Converts linear encoded pixel into gamma encoded pixel.
356 *
357 * Parameters are, converted value and gp_gamma structure.
358 */
359#define gp_lin2gamma_RGB888_G(val, gamma) ({ \
360 gamma->tables[4]->u8[val]; \
361})
362
363static inline gp_gamma_table *gp_gamma_table_RGB888_G(gp_gamma *gamma)
364{
365 return gamma->tables[1];
366}
367
368static inline gp_gamma_table *gp_gamma_inverse_table_RGB888_G(gp_gamma *gamma)
369{
370 return gamma->tables[4];
371}
372
373
374/*
375 * Converts gamma encoded pixel value to linear value.
376 *
377 * Parameters are, converted value and gp_gamma structure.
378 */
379#define gp_gamma2lin_RGB888_B(val, gamma) ({ \
380 gamma->tables[2]->u16[val]; \
381})
382
383/*
384 * Converts linear encoded pixel into gamma encoded pixel.
385 *
386 * Parameters are, converted value and gp_gamma structure.
387 */
388#define gp_lin2gamma_RGB888_B(val, gamma) ({ \
389 gamma->tables[5]->u8[val]; \
390})
391
392static inline gp_gamma_table *gp_gamma_table_RGB888_B(gp_gamma *gamma)
393{
394 return gamma->tables[2];
395}
396
397static inline gp_gamma_table *gp_gamma_inverse_table_RGB888_B(gp_gamma *gamma)
398{
399 return gamma->tables[5];
400}
401
402
403
404/*
405 * Converts gamma encoded pixel value to linear value.
406 *
407 * Parameters are, converted value and gp_gamma structure.
408 */
409#define gp_gamma2lin_BGR888_B(val, gamma) ({ \
410 gamma->tables[0]->u16[val]; \
411})
412
413/*
414 * Converts linear encoded pixel into gamma encoded pixel.
415 *
416 * Parameters are, converted value and gp_gamma structure.
417 */
418#define gp_lin2gamma_BGR888_B(val, gamma) ({ \
419 gamma->tables[3]->u8[val]; \
420})
421
422static inline gp_gamma_table *gp_gamma_table_BGR888_B(gp_gamma *gamma)
423{
424 return gamma->tables[0];
425}
426
427static inline gp_gamma_table *gp_gamma_inverse_table_BGR888_B(gp_gamma *gamma)
428{
429 return gamma->tables[3];
430}
431
432
433/*
434 * Converts gamma encoded pixel value to linear value.
435 *
436 * Parameters are, converted value and gp_gamma structure.
437 */
438#define gp_gamma2lin_BGR888_G(val, gamma) ({ \
439 gamma->tables[1]->u16[val]; \
440})
441
442/*
443 * Converts linear encoded pixel into gamma encoded pixel.
444 *
445 * Parameters are, converted value and gp_gamma structure.
446 */
447#define gp_lin2gamma_BGR888_G(val, gamma) ({ \
448 gamma->tables[4]->u8[val]; \
449})
450
451static inline gp_gamma_table *gp_gamma_table_BGR888_G(gp_gamma *gamma)
452{
453 return gamma->tables[1];
454}
455
456static inline gp_gamma_table *gp_gamma_inverse_table_BGR888_G(gp_gamma *gamma)
457{
458 return gamma->tables[4];
459}
460
461
462/*
463 * Converts gamma encoded pixel value to linear value.
464 *
465 * Parameters are, converted value and gp_gamma structure.
466 */
467#define gp_gamma2lin_BGR888_R(val, gamma) ({ \
468 gamma->tables[2]->u16[val]; \
469})
470
471/*
472 * Converts linear encoded pixel into gamma encoded pixel.
473 *
474 * Parameters are, converted value and gp_gamma structure.
475 */
476#define gp_lin2gamma_BGR888_R(val, gamma) ({ \
477 gamma->tables[5]->u8[val]; \
478})
479
480static inline gp_gamma_table *gp_gamma_table_BGR888_R(gp_gamma *gamma)
481{
482 return gamma->tables[2];
483}
484
485static inline gp_gamma_table *gp_gamma_inverse_table_BGR888_R(gp_gamma *gamma)
486{
487 return gamma->tables[5];
488}
489
490
491
492/*
493 * Converts gamma encoded pixel value to linear value.
494 *
495 * Parameters are, converted value and gp_gamma structure.
496 */
497#define gp_gamma2lin_RGB555_R(val, gamma) ({ \
498 gamma->tables[0]->u8[val]; \
499})
500
501/*
502 * Converts linear encoded pixel into gamma encoded pixel.
503 *
504 * Parameters are, converted value and gp_gamma structure.
505 */
506#define gp_lin2gamma_RGB555_R(val, gamma) ({ \
507 gamma->tables[3]->u8[val]; \
508})
509
510static inline gp_gamma_table *gp_gamma_table_RGB555_R(gp_gamma *gamma)
511{
512 return gamma->tables[0];
513}
514
515static inline gp_gamma_table *gp_gamma_inverse_table_RGB555_R(gp_gamma *gamma)
516{
517 return gamma->tables[3];
518}
519
520
521/*
522 * Converts gamma encoded pixel value to linear value.
523 *
524 * Parameters are, converted value and gp_gamma structure.
525 */
526#define gp_gamma2lin_RGB555_G(val, gamma) ({ \
527 gamma->tables[1]->u8[val]; \
528})
529
530/*
531 * Converts linear encoded pixel into gamma encoded pixel.
532 *
533 * Parameters are, converted value and gp_gamma structure.
534 */
535#define gp_lin2gamma_RGB555_G(val, gamma) ({ \
536 gamma->tables[4]->u8[val]; \
537})
538
539static inline gp_gamma_table *gp_gamma_table_RGB555_G(gp_gamma *gamma)
540{
541 return gamma->tables[1];
542}
543
544static inline gp_gamma_table *gp_gamma_inverse_table_RGB555_G(gp_gamma *gamma)
545{
546 return gamma->tables[4];
547}
548
549
550/*
551 * Converts gamma encoded pixel value to linear value.
552 *
553 * Parameters are, converted value and gp_gamma structure.
554 */
555#define gp_gamma2lin_RGB555_B(val, gamma) ({ \
556 gamma->tables[2]->u8[val]; \
557})
558
559/*
560 * Converts linear encoded pixel into gamma encoded pixel.
561 *
562 * Parameters are, converted value and gp_gamma structure.
563 */
564#define gp_lin2gamma_RGB555_B(val, gamma) ({ \
565 gamma->tables[5]->u8[val]; \
566})
567
568static inline gp_gamma_table *gp_gamma_table_RGB555_B(gp_gamma *gamma)
569{
570 return gamma->tables[2];
571}
572
573static inline gp_gamma_table *gp_gamma_inverse_table_RGB555_B(gp_gamma *gamma)
574{
575 return gamma->tables[5];
576}
577
578
579
580/*
581 * Converts gamma encoded pixel value to linear value.
582 *
583 * Parameters are, converted value and gp_gamma structure.
584 */
585#define gp_gamma2lin_RGB565_R(val, gamma) ({ \
586 gamma->tables[0]->u8[val]; \
587})
588
589/*
590 * Converts linear encoded pixel into gamma encoded pixel.
591 *
592 * Parameters are, converted value and gp_gamma structure.
593 */
594#define gp_lin2gamma_RGB565_R(val, gamma) ({ \
595 gamma->tables[3]->u8[val]; \
596})
597
598static inline gp_gamma_table *gp_gamma_table_RGB565_R(gp_gamma *gamma)
599{
600 return gamma->tables[0];
601}
602
603static inline gp_gamma_table *gp_gamma_inverse_table_RGB565_R(gp_gamma *gamma)
604{
605 return gamma->tables[3];
606}
607
608
609/*
610 * Converts gamma encoded pixel value to linear value.
611 *
612 * Parameters are, converted value and gp_gamma structure.
613 */
614#define gp_gamma2lin_RGB565_G(val, gamma) ({ \
615 gamma->tables[1]->u8[val]; \
616})
617
618/*
619 * Converts linear encoded pixel into gamma encoded pixel.
620 *
621 * Parameters are, converted value and gp_gamma structure.
622 */
623#define gp_lin2gamma_RGB565_G(val, gamma) ({ \
624 gamma->tables[4]->u8[val]; \
625})
626
627static inline gp_gamma_table *gp_gamma_table_RGB565_G(gp_gamma *gamma)
628{
629 return gamma->tables[1];
630}
631
632static inline gp_gamma_table *gp_gamma_inverse_table_RGB565_G(gp_gamma *gamma)
633{
634 return gamma->tables[4];
635}
636
637
638/*
639 * Converts gamma encoded pixel value to linear value.
640 *
641 * Parameters are, converted value and gp_gamma structure.
642 */
643#define gp_gamma2lin_RGB565_B(val, gamma) ({ \
644 gamma->tables[2]->u8[val]; \
645})
646
647/*
648 * Converts linear encoded pixel into gamma encoded pixel.
649 *
650 * Parameters are, converted value and gp_gamma structure.
651 */
652#define gp_lin2gamma_RGB565_B(val, gamma) ({ \
653 gamma->tables[5]->u8[val]; \
654})
655
656static inline gp_gamma_table *gp_gamma_table_RGB565_B(gp_gamma *gamma)
657{
658 return gamma->tables[2];
659}
660
661static inline gp_gamma_table *gp_gamma_inverse_table_RGB565_B(gp_gamma *gamma)
662{
663 return gamma->tables[5];
664}
665
666
667
668/*
669 * Converts gamma encoded pixel value to linear value.
670 *
671 * Parameters are, converted value and gp_gamma structure.
672 */
673#define gp_gamma2lin_RGB666_R(val, gamma) ({ \
674 gamma->tables[0]->u8[val]; \
675})
676
677/*
678 * Converts linear encoded pixel into gamma encoded pixel.
679 *
680 * Parameters are, converted value and gp_gamma structure.
681 */
682#define gp_lin2gamma_RGB666_R(val, gamma) ({ \
683 gamma->tables[3]->u8[val]; \
684})
685
686static inline gp_gamma_table *gp_gamma_table_RGB666_R(gp_gamma *gamma)
687{
688 return gamma->tables[0];
689}
690
691static inline gp_gamma_table *gp_gamma_inverse_table_RGB666_R(gp_gamma *gamma)
692{
693 return gamma->tables[3];
694}
695
696
697/*
698 * Converts gamma encoded pixel value to linear value.
699 *
700 * Parameters are, converted value and gp_gamma structure.
701 */
702#define gp_gamma2lin_RGB666_G(val, gamma) ({ \
703 gamma->tables[1]->u8[val]; \
704})
705
706/*
707 * Converts linear encoded pixel into gamma encoded pixel.
708 *
709 * Parameters are, converted value and gp_gamma structure.
710 */
711#define gp_lin2gamma_RGB666_G(val, gamma) ({ \
712 gamma->tables[4]->u8[val]; \
713})
714
715static inline gp_gamma_table *gp_gamma_table_RGB666_G(gp_gamma *gamma)
716{
717 return gamma->tables[1];
718}
719
720static inline gp_gamma_table *gp_gamma_inverse_table_RGB666_G(gp_gamma *gamma)
721{
722 return gamma->tables[4];
723}
724
725
726/*
727 * Converts gamma encoded pixel value to linear value.
728 *
729 * Parameters are, converted value and gp_gamma structure.
730 */
731#define gp_gamma2lin_RGB666_B(val, gamma) ({ \
732 gamma->tables[2]->u8[val]; \
733})
734
735/*
736 * Converts linear encoded pixel into gamma encoded pixel.
737 *
738 * Parameters are, converted value and gp_gamma structure.
739 */
740#define gp_lin2gamma_RGB666_B(val, gamma) ({ \
741 gamma->tables[5]->u8[val]; \
742})
743
744static inline gp_gamma_table *gp_gamma_table_RGB666_B(gp_gamma *gamma)
745{
746 return gamma->tables[2];
747}
748
749static inline gp_gamma_table *gp_gamma_inverse_table_RGB666_B(gp_gamma *gamma)
750{
751 return gamma->tables[5];
752}
753
754
755
756/*
757 * Converts gamma encoded pixel value to linear value.
758 *
759 * Parameters are, converted value and gp_gamma structure.
760 */
761#define gp_gamma2lin_RGB332_R(val, gamma) ({ \
762 gamma->tables[0]->u8[val]; \
763})
764
765/*
766 * Converts linear encoded pixel into gamma encoded pixel.
767 *
768 * Parameters are, converted value and gp_gamma structure.
769 */
770#define gp_lin2gamma_RGB332_R(val, gamma) ({ \
771 gamma->tables[3]->u8[val]; \
772})
773
774static inline gp_gamma_table *gp_gamma_table_RGB332_R(gp_gamma *gamma)
775{
776 return gamma->tables[0];
777}
778
779static inline gp_gamma_table *gp_gamma_inverse_table_RGB332_R(gp_gamma *gamma)
780{
781 return gamma->tables[3];
782}
783
784
785/*
786 * Converts gamma encoded pixel value to linear value.
787 *
788 * Parameters are, converted value and gp_gamma structure.
789 */
790#define gp_gamma2lin_RGB332_G(val, gamma) ({ \
791 gamma->tables[1]->u8[val]; \
792})
793
794/*
795 * Converts linear encoded pixel into gamma encoded pixel.
796 *
797 * Parameters are, converted value and gp_gamma structure.
798 */
799#define gp_lin2gamma_RGB332_G(val, gamma) ({ \
800 gamma->tables[4]->u8[val]; \
801})
802
803static inline gp_gamma_table *gp_gamma_table_RGB332_G(gp_gamma *gamma)
804{
805 return gamma->tables[1];
806}
807
808static inline gp_gamma_table *gp_gamma_inverse_table_RGB332_G(gp_gamma *gamma)
809{
810 return gamma->tables[4];
811}
812
813
814/*
815 * Converts gamma encoded pixel value to linear value.
816 *
817 * Parameters are, converted value and gp_gamma structure.
818 */
819#define gp_gamma2lin_RGB332_B(val, gamma) ({ \
820 gamma->tables[2]->u8[val]; \
821})
822
823/*
824 * Converts linear encoded pixel into gamma encoded pixel.
825 *
826 * Parameters are, converted value and gp_gamma structure.
827 */
828#define gp_lin2gamma_RGB332_B(val, gamma) ({ \
829 gamma->tables[5]->u8[val]; \
830})
831
832static inline gp_gamma_table *gp_gamma_table_RGB332_B(gp_gamma *gamma)
833{
834 return gamma->tables[2];
835}
836
837static inline gp_gamma_table *gp_gamma_inverse_table_RGB332_B(gp_gamma *gamma)
838{
839 return gamma->tables[5];
840}
841
842
843
844/*
845 * Converts gamma encoded pixel value to linear value.
846 *
847 * Parameters are, converted value and gp_gamma structure.
848 */
849#define gp_gamma2lin_CMYK8888_K(val, gamma) ({ \
850 gamma->tables[0]->u16[val]; \
851})
852
853/*
854 * Converts linear encoded pixel into gamma encoded pixel.
855 *
856 * Parameters are, converted value and gp_gamma structure.
857 */
858#define gp_lin2gamma_CMYK8888_K(val, gamma) ({ \
859 gamma->tables[4]->u8[val]; \
860})
861
862static inline gp_gamma_table *gp_gamma_table_CMYK8888_K(gp_gamma *gamma)
863{
864 return gamma->tables[0];
865}
866
867static inline gp_gamma_table *gp_gamma_inverse_table_CMYK8888_K(gp_gamma *gamma)
868{
869 return gamma->tables[4];
870}
871
872
873/*
874 * Converts gamma encoded pixel value to linear value.
875 *
876 * Parameters are, converted value and gp_gamma structure.
877 */
878#define gp_gamma2lin_CMYK8888_Y(val, gamma) ({ \
879 gamma->tables[1]->u16[val]; \
880})
881
882/*
883 * Converts linear encoded pixel into gamma encoded pixel.
884 *
885 * Parameters are, converted value and gp_gamma structure.
886 */
887#define gp_lin2gamma_CMYK8888_Y(val, gamma) ({ \
888 gamma->tables[5]->u8[val]; \
889})
890
891static inline gp_gamma_table *gp_gamma_table_CMYK8888_Y(gp_gamma *gamma)
892{
893 return gamma->tables[1];
894}
895
896static inline gp_gamma_table *gp_gamma_inverse_table_CMYK8888_Y(gp_gamma *gamma)
897{
898 return gamma->tables[5];
899}
900
901
902/*
903 * Converts gamma encoded pixel value to linear value.
904 *
905 * Parameters are, converted value and gp_gamma structure.
906 */
907#define gp_gamma2lin_CMYK8888_M(val, gamma) ({ \
908 gamma->tables[2]->u16[val]; \
909})
910
911/*
912 * Converts linear encoded pixel into gamma encoded pixel.
913 *
914 * Parameters are, converted value and gp_gamma structure.
915 */
916#define gp_lin2gamma_CMYK8888_M(val, gamma) ({ \
917 gamma->tables[6]->u8[val]; \
918})
919
920static inline gp_gamma_table *gp_gamma_table_CMYK8888_M(gp_gamma *gamma)
921{
922 return gamma->tables[2];
923}
924
925static inline gp_gamma_table *gp_gamma_inverse_table_CMYK8888_M(gp_gamma *gamma)
926{
927 return gamma->tables[6];
928}
929
930
931/*
932 * Converts gamma encoded pixel value to linear value.
933 *
934 * Parameters are, converted value and gp_gamma structure.
935 */
936#define gp_gamma2lin_CMYK8888_C(val, gamma) ({ \
937 gamma->tables[3]->u16[val]; \
938})
939
940/*
941 * Converts linear encoded pixel into gamma encoded pixel.
942 *
943 * Parameters are, converted value and gp_gamma structure.
944 */
945#define gp_lin2gamma_CMYK8888_C(val, gamma) ({ \
946 gamma->tables[7]->u8[val]; \
947})
948
949static inline gp_gamma_table *gp_gamma_table_CMYK8888_C(gp_gamma *gamma)
950{
951 return gamma->tables[3];
952}
953
954static inline gp_gamma_table *gp_gamma_inverse_table_CMYK8888_C(gp_gamma *gamma)
955{
956 return gamma->tables[7];
957}
958
959
960
961/*
962 * Converts gamma encoded pixel value to linear value.
963 *
964 * Parameters are, converted value and gp_gamma structure.
965 */
966#define gp_gamma2lin_G1_DB_V(val, gamma) ({ \
967 gamma->tables[0]->u8[val]; \
968})
969
970/*
971 * Converts linear encoded pixel into gamma encoded pixel.
972 *
973 * Parameters are, converted value and gp_gamma structure.
974 */
975#define gp_lin2gamma_G1_DB_V(val, gamma) ({ \
976 gamma->tables[1]->u8[val]; \
977})
978
979static inline gp_gamma_table *gp_gamma_table_G1_DB_V(gp_gamma *gamma)
980{
981 return gamma->tables[0];
982}
983
984static inline gp_gamma_table *gp_gamma_inverse_table_G1_DB_V(gp_gamma *gamma)
985{
986 return gamma->tables[1];
987}
988
989
990
991/*
992 * Converts gamma encoded pixel value to linear value.
993 *
994 * Parameters are, converted value and gp_gamma structure.
995 */
996#define gp_gamma2lin_G2_DB_V(val, gamma) ({ \
997 gamma->tables[0]->u8[val]; \
998})
999
1000/*
1001 * Converts linear encoded pixel into gamma encoded pixel.
1002 *
1003 * Parameters are, converted value and gp_gamma structure.
1004 */
1005#define gp_lin2gamma_G2_DB_V(val, gamma) ({ \
1006 gamma->tables[1]->u8[val]; \
1007})
1008
1009static inline gp_gamma_table *gp_gamma_table_G2_DB_V(gp_gamma *gamma)
1010{
1011 return gamma->tables[0];
1012}
1013
1014static inline gp_gamma_table *gp_gamma_inverse_table_G2_DB_V(gp_gamma *gamma)
1015{
1016 return gamma->tables[1];
1017}
1018
1019
1020
1021/*
1022 * Converts gamma encoded pixel value to linear value.
1023 *
1024 * Parameters are, converted value and gp_gamma structure.
1025 */
1026#define gp_gamma2lin_G4_DB_V(val, gamma) ({ \
1027 gamma->tables[0]->u8[val]; \
1028})
1029
1030/*
1031 * Converts linear encoded pixel into gamma encoded pixel.
1032 *
1033 * Parameters are, converted value and gp_gamma structure.
1034 */
1035#define gp_lin2gamma_G4_DB_V(val, gamma) ({ \
1036 gamma->tables[1]->u8[val]; \
1037})
1038
1039static inline gp_gamma_table *gp_gamma_table_G4_DB_V(gp_gamma *gamma)
1040{
1041 return gamma->tables[0];
1042}
1043
1044static inline gp_gamma_table *gp_gamma_inverse_table_G4_DB_V(gp_gamma *gamma)
1045{
1046 return gamma->tables[1];
1047}
1048
1049
1050
1051/*
1052 * Converts gamma encoded pixel value to linear value.
1053 *
1054 * Parameters are, converted value and gp_gamma structure.
1055 */
1056#define gp_gamma2lin_G1_UB_V(val, gamma) ({ \
1057 gamma->tables[0]->u8[val]; \
1058})
1059
1060/*
1061 * Converts linear encoded pixel into gamma encoded pixel.
1062 *
1063 * Parameters are, converted value and gp_gamma structure.
1064 */
1065#define gp_lin2gamma_G1_UB_V(val, gamma) ({ \
1066 gamma->tables[1]->u8[val]; \
1067})
1068
1069static inline gp_gamma_table *gp_gamma_table_G1_UB_V(gp_gamma *gamma)
1070{
1071 return gamma->tables[0];
1072}
1073
1074static inline gp_gamma_table *gp_gamma_inverse_table_G1_UB_V(gp_gamma *gamma)
1075{
1076 return gamma->tables[1];
1077}
1078
1079
1080
1081/*
1082 * Converts gamma encoded pixel value to linear value.
1083 *
1084 * Parameters are, converted value and gp_gamma structure.
1085 */
1086#define gp_gamma2lin_G2_UB_V(val, gamma) ({ \
1087 gamma->tables[0]->u8[val]; \
1088})
1089
1090/*
1091 * Converts linear encoded pixel into gamma encoded pixel.
1092 *
1093 * Parameters are, converted value and gp_gamma structure.
1094 */
1095#define gp_lin2gamma_G2_UB_V(val, gamma) ({ \
1096 gamma->tables[1]->u8[val]; \
1097})
1098
1099static inline gp_gamma_table *gp_gamma_table_G2_UB_V(gp_gamma *gamma)
1100{
1101 return gamma->tables[0];
1102}
1103
1104static inline gp_gamma_table *gp_gamma_inverse_table_G2_UB_V(gp_gamma *gamma)
1105{
1106 return gamma->tables[1];
1107}
1108
1109
1110
1111/*
1112 * Converts gamma encoded pixel value to linear value.
1113 *
1114 * Parameters are, converted value and gp_gamma structure.
1115 */
1116#define gp_gamma2lin_G4_UB_V(val, gamma) ({ \
1117 gamma->tables[0]->u8[val]; \
1118})
1119
1120/*
1121 * Converts linear encoded pixel into gamma encoded pixel.
1122 *
1123 * Parameters are, converted value and gp_gamma structure.
1124 */
1125#define gp_lin2gamma_G4_UB_V(val, gamma) ({ \
1126 gamma->tables[1]->u8[val]; \
1127})
1128
1129static inline gp_gamma_table *gp_gamma_table_G4_UB_V(gp_gamma *gamma)
1130{
1131 return gamma->tables[0];
1132}
1133
1134static inline gp_gamma_table *gp_gamma_inverse_table_G4_UB_V(gp_gamma *gamma)
1135{
1136 return gamma->tables[1];
1137}
1138
1139
1140
1141/*
1142 * Converts gamma encoded pixel value to linear value.
1143 *
1144 * Parameters are, converted value and gp_gamma structure.
1145 */
1146#define gp_gamma2lin_G8_V(val, gamma) ({ \
1147 gamma->tables[0]->u16[val]; \
1148})
1149
1150/*
1151 * Converts linear encoded pixel into gamma encoded pixel.
1152 *
1153 * Parameters are, converted value and gp_gamma structure.
1154 */
1155#define gp_lin2gamma_G8_V(val, gamma) ({ \
1156 gamma->tables[1]->u8[val]; \
1157})
1158
1159static inline gp_gamma_table *gp_gamma_table_G8_V(gp_gamma *gamma)
1160{
1161 return gamma->tables[0];
1162}
1163
1164static inline gp_gamma_table *gp_gamma_inverse_table_G8_V(gp_gamma *gamma)
1165{
1166 return gamma->tables[1];
1167}
1168
1169
1170
1171/*
1172 * Converts gamma encoded pixel value to linear value.
1173 *
1174 * Parameters are, converted value and gp_gamma structure.
1175 */
1176#define gp_gamma2lin_GA88_V(val, gamma) ({ \
1177 gamma->tables[0]->u16[val]; \
1178})
1179
1180/*
1181 * Converts linear encoded pixel into gamma encoded pixel.
1182 *
1183 * Parameters are, converted value and gp_gamma structure.
1184 */
1185#define gp_lin2gamma_GA88_V(val, gamma) ({ \
1186 gamma->tables[2]->u8[val]; \
1187})
1188
1189static inline gp_gamma_table *gp_gamma_table_GA88_V(gp_gamma *gamma)
1190{
1191 return gamma->tables[0];
1192}
1193
1194static inline gp_gamma_table *gp_gamma_inverse_table_GA88_V(gp_gamma *gamma)
1195{
1196 return gamma->tables[2];
1197}
1198
1199
1200/*
1201 * Converts gamma encoded pixel value to linear value.
1202 *
1203 * Parameters are, converted value and gp_gamma structure.
1204 */
1205#define gp_gamma2lin_GA88_A(val, gamma) ({ \
1206 gamma->tables[1]->u16[val]; \
1207})
1208
1209/*
1210 * Converts linear encoded pixel into gamma encoded pixel.
1211 *
1212 * Parameters are, converted value and gp_gamma structure.
1213 */
1214#define gp_lin2gamma_GA88_A(val, gamma) ({ \
1215 gamma->tables[3]->u8[val]; \
1216})
1217
1218static inline gp_gamma_table *gp_gamma_table_GA88_A(gp_gamma *gamma)
1219{
1220 return gamma->tables[1];
1221}
1222
1223static inline gp_gamma_table *gp_gamma_inverse_table_GA88_A(gp_gamma *gamma)
1224{
1225 return gamma->tables[3];
1226}
1227
1228
1229
1230/*
1231 * Converts gamma encoded pixel value to linear value.
1232 *
1233 * Parameters are, converted value and gp_gamma structure.
1234 */
1235#define gp_gamma2lin_G16_V(val, gamma) ({ \
1236 gamma->tables[0]->u16[val]; \
1237})
1238
1239/*
1240 * Converts linear encoded pixel into gamma encoded pixel.
1241 *
1242 * Parameters are, converted value and gp_gamma structure.
1243 */
1244#define gp_lin2gamma_G16_V(val, gamma) ({ \
1245 gamma->tables[1]->u16[val]; \
1246})
1247
1248static inline gp_gamma_table *gp_gamma_table_G16_V(gp_gamma *gamma)
1249{
1250 return gamma->tables[0];
1251}
1252
1253static inline gp_gamma_table *gp_gamma_inverse_table_G16_V(gp_gamma *gamma)
1254{
1255 return gamma->tables[1];
1256}
1257
1258
1259#define gp_gamma2lin(val, chan_bits, gamma_table) ({ \
1260#if chan_bits > 6
1261 gamma_table->u16[val] \
1262#else
1263 gamma_table->u8[val] \
1264#endif
1265})
1266
1267#define gp_lin2gamma(val, chan_bits, gamma_table) ({ \
1268#if chan_bits > 8
1269 gamma_table->table16[val] \
1270#else
1271 gamma_table->table8[val] \
1272#endif
1273})
1274#endif /* GP_GAMMA_PIXEL_GEN_H */
Gamma and sRGB corrections.
A lookup gamma table.
A correction tables for all pixel channels.