You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.2 KiB
48 lines
1.2 KiB
/*- |
|
* sRGB.h |
|
* |
|
* Last changed in libpng 1.6.0 [February 14, 2013] |
|
* |
|
* COPYRIGHT: Written by John Cunningham Bowler, 2013. |
|
* To the extent possible under law, the author has waived all copyright and |
|
* related or neighboring rights to this work. This work is published from: |
|
* United States. |
|
* |
|
* Utility file; not actually a header, this contains definitions of sRGB |
|
* calculation functions for inclusion in those test programs that need them. |
|
* |
|
* All routines take and return a floating point value in the range |
|
* 0 to 1.0, doing a calculation according to the sRGB specification |
|
* (in fact the source of the numbers is the wikipedia article at |
|
* https://en.wikipedia.org/wiki/SRGB). |
|
*/ |
|
static double |
|
sRGB_from_linear(double l) |
|
{ |
|
if (l <= 0.0031308) |
|
l *= 12.92; |
|
|
|
else |
|
l = 1.055 * pow(l, 1/2.4) - 0.055; |
|
|
|
return l; |
|
} |
|
|
|
static double |
|
linear_from_sRGB(double s) |
|
{ |
|
if (s <= 0.04045) |
|
return s / 12.92; |
|
|
|
else |
|
return pow((s+0.055)/1.055, 2.4); |
|
} |
|
|
|
static double |
|
YfromRGB(double r, double g, double b) |
|
{ |
|
/* Use the sRGB (rounded) coefficients for Rlinear, Glinear, Blinear to get |
|
* the CIE Y value (also linear). |
|
*/ |
|
return 0.2126 * r + 0.7152 * g + 0.0722 * b; |
|
}
|
|
|