/*- * 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; }