fixed special handling of chroma = -100

This commit is contained in:
Desmis 2016-05-30 09:11:07 +02:00
parent 5cd202ddb5
commit 6dba58e26e
2 changed files with 1904 additions and 1889 deletions

View File

@ -40,6 +40,8 @@
#include "improccoordinator.h"
#include "clutstore.h"
#include "ciecam02.h"
#include "../rtgui/ppversion.h"
#include "../rtgui/guiutils.h"
#undef CLIPD
#define CLIPD(a) ((a)>0.0f?((a)<1.0f?(a):1.0f):0.0f)
@ -3228,6 +3230,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
clut2xyz = iccStore->workingSpaceMatrix( hald_clut->getProfile() );
#ifdef __SSE2__
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
v_work2xyz[i][j] = F2V(work2xyz[i][j]);
@ -3236,6 +3239,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
v_clut2xyz[i][j] = F2V(clut2xyz[i][j]);
}
}
#endif
}
@ -4363,6 +4367,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
int tj = 0;
#ifdef __SSE2__
for (; j < tW - 3; j += 4, tj += 4) {
vfloat sourceR = LVF(rtemp[ti * TS + tj]);
vfloat sourceG = LVF(gtemp[ti * TS + tj]);
@ -4378,6 +4383,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
STVF(gtemp[ti * TS + tj], sourceG);
STVF(btemp[ti * TS + tj], sourceB);
}
#endif
for (; j < tW; j++, tj++) {
@ -4429,6 +4435,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
int tj = 0;
#ifdef __SSE2__
for (; j < tW - 3; j += 4, tj += 4) {
vfloat sourceR = LVF(rtemp[ti * TS + tj]);
vfloat sourceG = LVF(gtemp[ti * TS + tj]);
@ -4444,6 +4451,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
STVF(gtemp[ti * TS + tj], sourceG);
STVF(btemp[ti * TS + tj], sourceB);
}
#endif
for (; j < tW; j++, tj++) {
@ -5756,7 +5764,10 @@ SSEFUNCTION void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBu
const int chromaticity = params->labCurve.chromaticity;
const float chromapro = (chromaticity + 100.0f) / 100.0f;
const bool bwonly = params->blackwhite.enabled && !params->colorToning.enabled;
const bool bwToning = params->labCurve.chromaticity == - 100 /*|| params->blackwhite.method=="Ch" || params->blackwhite.enabled */ || bwonly;
bool bwq = false;
// if(params->ppVersion > 300 && params->labCurve.chromaticity == - 100) bwq = true;
// const bool bwToning = params->labCurve.chromaticity == - 100 /*|| params->blackwhite.method=="Ch" || params->blackwhite.enabled */ || bwonly;
const bool bwToning = bwq /*|| params->blackwhite.method=="Ch" || params->blackwhite.enabled */ || bwonly;
//if(chromaticity==-100) chromaticity==-99;
const bool LCredsk = params->labCurve.lcredsk;
const bool ccut = ccutili;

View File

@ -4225,6 +4225,10 @@ int ProcParams::load (Glib::ustring fname, ParamsEdited* pedited)
if (keyFile.has_key ("Luminance Curve", "Chromaticity")) {
labCurve.chromaticity = keyFile.get_integer ("Luminance Curve", "Chromaticity");
if (ppVersion >= 303 && ppVersion < 314 && labCurve.chromaticity == -100) {
blackwhite.enabled = true;
}
if (pedited) {
pedited->labCurve.chromaticity = true;
}