fixed behaviour of "WB off" for non-raw images

This commit is contained in:
Alberto Griggio
2017-12-12 21:08:31 +01:00
parent 11ca61e3e2
commit 4ef705cdd6
3 changed files with 45 additions and 30 deletions

View File

@@ -137,17 +137,22 @@ void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Preview
{
// compute channel multipliers
double drm, dgm, dbm;
ctemp.getMultipliers (drm, dgm, dbm);
float rm = drm, gm = dgm, bm = dbm;
float rm = 1.f, gm = 1.f, bm = 1.f;
if (ctemp.getTemp() >= 0) {
double drm, dgm, dbm;
ctemp.getMultipliers (drm, dgm, dbm);
rm = drm;
gm = dgm;
bm = dbm;
rm = 1.0 / rm;
gm = 1.0 / gm;
bm = 1.0 / bm;
float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm;
rm /= mul_lum;
gm /= mul_lum;
bm /= mul_lum;
rm = 1.0 / rm;
gm = 1.0 / gm;
bm = 1.0 / bm;
float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm;
rm /= mul_lum;
gm /= mul_lum;
bm /= mul_lum;
}
int sx1, sy1, sx2, sy2;

View File

@@ -97,17 +97,22 @@ Image8* Image8::copy ()
void Image8::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp)
{
// compute channel multipliers
double drm, dgm, dbm;
ctemp.getMultipliers (drm, dgm, dbm);
float rm = drm, gm = dgm, bm = dbm;
float rm = 1.f, gm = 1.f, bm = 1.f;
if (ctemp.getTemp() >= 0) {
double drm, dgm, dbm;
ctemp.getMultipliers (drm, dgm, dbm);
rm = drm;
gm = dgm;
bm = dbm;
rm = 1.0 / rm;
gm = 1.0 / gm;
bm = 1.0 / bm;
float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm;
rm /= mul_lum;
gm /= mul_lum;
bm /= mul_lum;
rm = 1.0 / rm;
gm = 1.0 / gm;
bm = 1.0 / bm;
float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm;
rm /= mul_lum;
gm /= mul_lum;
bm /= mul_lum;
}
int sx1, sy1, sx2, sy2;

View File

@@ -175,17 +175,22 @@ void Imagefloat::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Prev
{
// compute channel multipliers
double drm, dgm, dbm;
ctemp.getMultipliers (drm, dgm, dbm);
float rm = drm, gm = dgm, bm = dbm;
float rm = 1.f, gm = 1.f, bm = 1.f;
if (ctemp.getTemp() >= 0) {
double drm, dgm, dbm;
ctemp.getMultipliers (drm, dgm, dbm);
rm = drm;
gm = dgm;
bm = dbm;
rm = 1.0 / rm;
gm = 1.0 / gm;
bm = 1.0 / bm;
float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm;
rm /= mul_lum;
gm /= mul_lum;
bm /= mul_lum;
rm = 1.0 / rm;
gm = 1.0 / gm;
bm = 1.0 / bm;
float mul_lum = 0.299 * rm + 0.587 * gm + 0.114 * bm;
rm /= mul_lum;
gm /= mul_lum;
bm /= mul_lum;
}
int sx1, sy1, sx2, sy2;