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,9 +137,13 @@ void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Preview
{ {
// compute channel multipliers // compute channel multipliers
float rm = 1.f, gm = 1.f, bm = 1.f;
if (ctemp.getTemp() >= 0) {
double drm, dgm, dbm; double drm, dgm, dbm;
ctemp.getMultipliers (drm, dgm, dbm); ctemp.getMultipliers (drm, dgm, dbm);
float rm = drm, gm = dgm, bm = dbm; rm = drm;
gm = dgm;
bm = dbm;
rm = 1.0 / rm; rm = 1.0 / rm;
gm = 1.0 / gm; gm = 1.0 / gm;
@@ -148,6 +152,7 @@ void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Preview
rm /= mul_lum; rm /= mul_lum;
gm /= mul_lum; gm /= mul_lum;
bm /= mul_lum; bm /= mul_lum;
}
int sx1, sy1, sx2, sy2; int sx1, sy1, sx2, sy2;

View File

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

View File

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