Merge branch 'master' into softproofing

This commit is contained in:
Hombre
2016-10-04 00:04:57 +02:00
71 changed files with 1083 additions and 822 deletions

View File

@@ -134,13 +134,10 @@ public:
static LUTf igammatab_srgb1;
static LUTf gammatab_srgb;
static LUTf gammatab_srgb1;
static LUTf igammatab_55;
static LUTf gammatab_55;
static LUTf igammatab_4;
static LUTf gammatab_4;
static LUTf igammatab_26_11;
static LUTf gammatab_26_11;
static LUTf denoiseGammaTab;
static LUTf denoiseIGammaTab;
static LUTf igammatab_24_17;
static LUTf gammatab_24_17a;
static LUTf gammatab_13_2;
@@ -410,6 +407,7 @@ public:
* @param rgb_xyz[3][3] transformation matrix to use for the conversion
*/
static void xyz2rgb (float x, float y, float z, float &r, float &g, float &b, const double rgb_xyz[3][3]);
static void xyz2r (float x, float y, float z, float &r, const double rgb_xyz[3][3]);
static void xyz2rgb (float x, float y, float z, float &r, float &g, float &b, const float rgb_xyz[3][3]);
#ifdef __SSE2__
static void xyz2rgb (vfloat x, vfloat y, vfloat z, vfloat &r, vfloat &g, vfloat &b, const vfloat rgb_xyz[3][3]);
@@ -443,6 +441,7 @@ public:
* @param z Z coordinate [0 ; 65535] ; can be negative! (return value)
*/
static void Lab2XYZ(float L, float a, float b, float &x, float &y, float &z);
static void L2XYZ(float L, float &x, float &y, float &z);
#ifdef __SSE2__
static void Lab2XYZ(vfloat L, vfloat a, vfloat b, vfloat &x, vfloat &y, vfloat &z);
@@ -894,6 +893,9 @@ public:
* @param gammabwb gamma value for red channel [>0]
*/
static void trcGammaBW (float &r, float &g, float &b, float gammabwr, float gammabwg, float gammabwb);
#ifdef __SSE2__
static void trcGammaBWRow (float *r, float *g, float *b, int width, float gammabwr, float gammabwg, float gammabwb);
#endif
/** @brief Compute the B&W constants for the Black and White processing and its GUI
@@ -1106,6 +1108,15 @@ public:
{
return (x <= start ? x*slope : exp(log(x) / gamma) * mul - add);
}
static inline float gammaf (float x, float gamma, float start, float slope)
{
return x <= start ? x * slope : xexpf(xlogf(x) / gamma);
}
//fills a LUT of size 65536 using gamma with slope...
static void gammaf2lut (LUTf &gammacurve, float gamma, float start, float slope, float divisor, float factor);
static inline double igamma (double x, double gamma, double start, double slope, double mul, double add)
{
return (x <= start * slope ? x / slope : exp(log((x + add) / mul) * gamma) );
@@ -1120,7 +1131,7 @@ public:
*/
static inline double gamman (double x, double gamma) //standard gamma without slope...
{
return (x = exp(log(x) / gamma));
return exp(log(x) / gamma);
}
/**
@@ -1131,9 +1142,10 @@ public:
*/
static inline float gammanf (float x, float gamma) //standard gamma without slope...
{
return (x = xexpf(xlogf(x) / gamma));
return xexpf(xlogf(x) / gamma);
}
//fills a LUT of size 65536 using gamma without slope...
static void gammanf2lut (LUTf &gammacurve, float gamma, float divisor, float factor);
/**
* @brief Very simply inverse gamma
@@ -1143,7 +1155,7 @@ public:
*/
static inline double igamman (double x, double gamma) //standard inverse gamma without slope...
{
return (x = exp(log(x) * gamma) );
return exp(log(x) * gamma);
}