Add memtest support.
[syslinux-debian/hramrach.git] / com32 / lib / sys / vesa / alphatbl.pl
blobd70c76ebcc0a900dadcc50379410d87c21c64700
1 #!/usr/bin/perl
3 # Produce gamma-correction tables for alpha blending, assuming sRGB space.
6 sub srgb_to_linear($)
8 my($s) = @_;
10 if ($s <= 10) {
11 return $s/(255*12.92);
12 } else {
13 return (($s+14.025)/269.025)**2.4;
17 sub linear_to_srgb($)
19 my($l) = @_;
20 my $s;
22 if ($l <= 0.00304) {
23 $s = 12.92*$l;
24 } else {
25 $s = 1.055*$l**(1.0/2.4) - 0.055;
28 return int($s*255+0.5);
31 # Header
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);
42 print "};\n\n";
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);
53 print "};\n\n";