From 4ef705cdd650e55748cf32d2384ddb73b2f788ad Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Tue, 12 Dec 2017 21:08:31 +0100 Subject: [PATCH] fixed behaviour of "WB off" for non-raw images --- rtengine/image16.cc | 25 +++++++++++++++---------- rtengine/image8.cc | 25 +++++++++++++++---------- rtengine/imagefloat.cc | 25 +++++++++++++++---------- 3 files changed, 45 insertions(+), 30 deletions(-) diff --git a/rtengine/image16.cc b/rtengine/image16.cc index e0f7470a6..426fc289c 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -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; diff --git a/rtengine/image8.cc b/rtengine/image8.cc index 56c2a63ee..86294236b 100644 --- a/rtengine/image8.cc +++ b/rtengine/image8.cc @@ -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; diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 30871c9b1..d5b17ed80 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -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;