diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 230f9457c..48ee4ddcf 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -4232,9 +4232,6 @@ void ImProcFunctions::chromiLuminanceCurve(PipetteBuffer *pipetteBuffer, int pW, } - const float histLFactor = pW != 1 ? histLCurve.getSize() / 100.f : 1.f; - const float histCFactor = pW != 1 ? histCCurve.getSize() / 48000.f : 1.f; - float adjustr = 1.0f; // if(params->labCurve.avoidclip ){ @@ -4256,6 +4253,9 @@ void ImProcFunctions::chromiLuminanceCurve(PipetteBuffer *pipetteBuffer, int pW, adjustr = 1.8f; } + const float histLFactor = pW != 1 ? histLCurve.getSize() / 100.f : 1.f; + const float histCFactor = pW != 1 ? histCCurve.getSize() * adjustr / 65536.f : 1.f; + // reference to the params structure has to be done outside of the parallelization to avoid CPU cache problem const bool highlight = params->toneCurve.hrenabled; //Get the value if "highlight reconstruction" is activated const int chromaticity = params->labCurve.chromaticity; @@ -4415,11 +4415,11 @@ void ImProcFunctions::chromiLuminanceCurve(PipetteBuffer *pipetteBuffer, int pW, if (editPipette) { if (editID == EUID_Lab_aCurve) { // Lab a pipette - float chromapipa = lold->a[i][j] + (32768.f * 1.28f); - editWhatever->v(i, j) = LIM01 ((chromapipa) / (65536.f * 1.28f)); + float chromapipa = lold->a[i][j] + 32768.f; + editWhatever->v(i, j) = LIM01 ((chromapipa) / (65536.f)); } else if (editID == EUID_Lab_bCurve) { //Lab b pipette - float chromapipb = lold->b[i][j] + (32768.f * 1.28f); - editWhatever->v(i, j) = LIM01 ((chromapipb) / (65536.f * 1.28f)); + float chromapipb = lold->b[i][j] + 32768.f; + editWhatever->v(i, j) = LIM01 ((chromapipb) / (65536.f)); } } @@ -4658,7 +4658,7 @@ void ImProcFunctions::chromiLuminanceCurve(PipetteBuffer *pipetteBuffer, int pW, // I have placed C=f(C) after all C treatments to assure maximum amplitude of "C" if (editPipette && editID == EUID_Lab_CCurve) { float chromapip = sqrt(SQR(atmp) + SQR(btmp) + 0.001f); - editWhatever->v(i, j) = LIM01 ((chromapip) / (48000.f)); + editWhatever->v(i, j) = LIM01 ((chromapip) / (65536.f / adjustr)); }//Lab C=f(C) pipette if (ccut) { @@ -4725,7 +4725,7 @@ void ImProcFunctions::chromiLuminanceCurve(PipetteBuffer *pipetteBuffer, int pW, if (editPipette && editID == EUID_Lab_LCCurve) { float chromapiplc = sqrt(SQR(atmp) + SQR(btmp) + 0.001f); - editWhatever->v(i, j) = LIM01 ((chromapiplc) / (48000.f)); + editWhatever->v(i, j) = LIM01 ((chromapiplc) / (65536.f / adjustr)); }//Lab L=f(C) pipette