diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 5aea884fb..3451bb0be 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -5740,10 +5740,11 @@ void ImProcFunctions::lab2rgb (const LabImage &src, Imagefloat &dst, const Glib: void ImProcFunctions::colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread) { const float factor = ColorToningParams::LABGRID_CORR_MAX * 3.f; - float a_scale = (params->colorToning.labgridAHigh - params->colorToning.labgridALow) / factor; - float a_base = params->colorToning.labgridALow; - float b_scale = (params->colorToning.labgridBHigh - params->colorToning.labgridBLow) / factor; - float b_base = params->colorToning.labgridBLow; + const float scaling = ColorToningParams::LABGRID_CORR_SCALE; + float a_scale = (params->colorToning.labgridAHigh - params->colorToning.labgridALow) / factor / scaling; + float a_base = params->colorToning.labgridALow / scaling; + float b_scale = (params->colorToning.labgridBHigh - params->colorToning.labgridBLow) / factor / scaling; + float b_base = params->colorToning.labgridBLow / scaling; #ifdef _OPENMP #pragma omp parallel for if (multiThread) diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 36fa4aa22..344804f99 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -606,6 +606,7 @@ bool LocalContrastParams::operator!=(const LocalContrastParams &other) const const double ColorToningParams::LABGRID_CORR_MAX = 12000.f; +const double ColorToningParams::LABGRID_CORR_SCALE = 3.f; ColorToningParams::ColorToningParams() : enabled(false), @@ -4591,6 +4592,13 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "ColorToning", "LabGridBLow", pedited, colorToning.labgridBLow, pedited->colorToning.labgridBLow); assignFromKeyfile(keyFile, "ColorToning", "LabGridAHigh", pedited, colorToning.labgridAHigh, pedited->colorToning.labgridAHigh); assignFromKeyfile(keyFile, "ColorToning", "LabGridBHigh", pedited, colorToning.labgridBHigh, pedited->colorToning.labgridBHigh); + if (ppVersion < 337) { + const double scale = ColorToningParams::LABGRID_CORR_SCALE; + colorToning.labgridALow *= scale; + colorToning.labgridAHigh *= scale; + colorToning.labgridBLow *= scale; + colorToning.labgridBHigh *= scale; + } } if (keyFile.has_group ("RAW")) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 121fb8afa..54e8b2d56 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -454,6 +454,7 @@ struct ColorToningParams { double labgridAHigh; double labgridBHigh; static const double LABGRID_CORR_MAX; + static const double LABGRID_CORR_SCALE; ColorToningParams(); diff --git a/rtgui/ppversion.h b/rtgui/ppversion.h index 1fb34ca0a..051dc6e2c 100644 --- a/rtgui/ppversion.h +++ b/rtgui/ppversion.h @@ -1,11 +1,13 @@ #pragma once // This number has to be incremented whenever the PP3 file format is modified or the behaviour of a tool changes -#define PPVERSION 336 +#define PPVERSION 337 #define PPVERSION_AEXP 301 //value of PPVERSION when auto exposure algorithm was modified /* Log of version changes + 337 2018-06-13 + new scales for the LabGrid color toning parameters 336 2018-06-01 new demosaic method combobox for pixelshift 335 2018-05-30