3 # Produce gamma-correction tables for alpha blending, assuming sRGB space.
11 return $s/(255*12.92);
13 return (($s+14.025)/269.025)**2.4;
25 $s = 1.055*$l**(1.0/2.4) - 0.055;
28 return int($s*255+0.5);
32 print "#include <inttypes.h>\n\n";
35 # Table 1: convert 8-bit sRGB values to 16-bit linear values
38 print "const uint16_t __vesacon_srgb_to_linear[256] = {\n";
39 for ($i = 0; $i <= 255; $i++) {
40 printf "\t%5d,\n", int(srgb_to_linear
($i)*65535+0.5);
45 # Table 2: convert linear values in the range [0, 65535*255],
46 # shifted right by 12 bits, to sRGB
49 print "const uint8_t __vesacon_linear_to_srgb[4080] = {\n";
50 for ($i = 0; $i <= 4079; $i++) {
51 printf "\t%3d,\n", linear_to_srgb
(($i+0.5)/4079.937744);