Save provisory work GUI

This commit is contained in:
Desmis 2019-12-20 18:16:10 +01:00
parent 7c79cc7184
commit cf214c7a1b
16 changed files with 194 additions and 39 deletions

View File

@ -1118,7 +1118,7 @@ void Crop::update(int todo)
locwavCurveden, locwavdenutili,
LHutili, HHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav,
parent->locallColorMask, parent->locallColorMaskinv, parent->locallExpMask, parent->locallExpMaskinv, parent->locallSHMask, parent->locallSHMaskinv, parent->locallvibMask, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask,
parent->locallColorMask, parent->locallColorMaskinv, parent->locallExpMask, parent->locallExpMaskinv, parent->locallSHMask, parent->locallSHMaskinv, parent->locallvibMask, parent->localllcMask, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask,
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
if (parent->locallListener) {
parent->locallListener->minmaxChanged(maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
@ -1152,7 +1152,7 @@ void Crop::update(int todo)
loccompwavCurve, loccompwavutili,
locwavCurveden, locwavdenutili,
LHutili, HHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
}

View File

@ -1239,7 +1239,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
locwavCurveden, locwavdenutili,
LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav,
locallColorMask, locallColorMaskinv, locallExpMask, locallExpMaskinv, locallSHMask, locallSHMaskinv, locallvibMask, locallcbMask, locallretiMask, locallsoftMask, localltmMask, locallblMask,
locallColorMask, locallColorMaskinv, locallExpMask, locallExpMaskinv, locallSHMask, locallSHMaskinv, locallvibMask, localllcMask, locallcbMask, locallretiMask, locallsoftMask, localltmMask, locallblMask,
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
if (locallListener) {
@ -1278,7 +1278,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
loccompwavCurve, loccompwavutili,
locwavCurveden, locwavdenutili,
LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
}

View File

@ -357,6 +357,7 @@ protected:
int locallSHMask;
int locallSHMaskinv;
int locallvibMask;
int localllcMask;
int locallcbMask;
int locallretiMask;
int locallsoftMask;
@ -431,7 +432,7 @@ public:
updaterThreadStart.unlock();
}
void setLocallabMaskVisibility (int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallSHMask, int locallSHMaskinv, int locallvibMask, int locallcbMask, int locallretiMask, int locallsoftMask, int localltmMask, int locallblMask) override
void setLocallabMaskVisibility (int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallSHMask, int locallSHMaskinv, int locallvibMask, int localllcMask, int locallcbMask, int locallretiMask, int locallsoftMask, int localltmMask, int locallblMask) override
{
this->locallColorMask = locallColorMask;
this->locallColorMaskinv = locallColorMaskinv;
@ -440,6 +441,7 @@ public:
this->locallSHMask = locallSHMask;
this->locallvibMask = locallvibMask;
this->locallSHMaskinv = locallSHMaskinv;
this->localllcMask = localllcMask;
this->locallcbMask = locallcbMask;
this->locallretiMask = locallretiMask;
this->locallsoftMask = locallsoftMask;

View File

@ -304,7 +304,7 @@ public:
const LocwavCurve & locwavCurveden, bool & locwavdenutili,
bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localcutili, LUTf & rgblocalcurve, bool & localrgbutili, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc,
double & huerefblur, double &chromarefblur, double & lumarefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, int &lastsav,
int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax);
void addGaNoise(LabImage *lab, LabImage *dst, const float mean, const float variance, const int sk);

View File

@ -312,6 +312,7 @@ struct local_params {
int showmaskSHmet;
int showmaskSHmetinv;
int showmaskvibmet;
int showmasklcmet;
int showmaskcbmet;
int showmaskretimet;
int showmasksoftmet;
@ -389,6 +390,7 @@ struct local_params {
bool enaSHMask;
bool enaSHMaskinv;
bool enavibMask;
bool enalcMask;
bool enacbMask;
bool enaretiMask;
bool enaretiMasktmap;
@ -498,7 +500,7 @@ static void SobelCannyLuma(float **sobelL, float **luma, int bfw, int bfh, float
static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locallab, struct local_params& lp, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, const LocwavCurve & locwavCurveden, bool & locwavdenutili)
static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locallab, struct local_params& lp, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, const LocwavCurve & locwavCurveden, bool & locwavdenutili)
{
int w = oW;
int h = oH;
@ -585,22 +587,24 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
lp.showmaskSHmet = llSHMask;
lp.showmaskSHmetinv = llSHMaskinv;
lp.showmaskvibmet = llvibMask;
lp.showmasklcmet = lllcMask;
lp.showmaskcbmet = llcbMask;
lp.showmaskretimet = llretiMask;
lp.showmasksoftmet = llsoftMask;
lp.showmasktmmet = lltmMask;
lp.showmaskblmet = llblMask;
lp.enaColorMask = locallab.spots.at(sp).enaColorMask && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
lp.enaColorMaskinv = locallab.spots.at(sp).enaColorMask && llColorMaskinv == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
lp.enaExpMask = locallab.spots.at(sp).enaExpMask && llExpMask == 0 && llColorMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
lp.enaExpMaskinv = locallab.spots.at(sp).enaExpMask && llExpMaskinv == 0 && llColorMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
lp.enaSHMask = locallab.spots.at(sp).enaSHMask && llSHMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
lp.enaSHMaskinv = locallab.spots.at(sp).enaSHMask && llSHMaskinv == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
lp.enacbMask = locallab.spots.at(sp).enacbMask && llcbMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
lp.enaretiMask = locallab.spots.at(sp).enaretiMask && llretiMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
lp.enatmMask = locallab.spots.at(sp).enatmMask && lltmMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llblMask == 0 && llvibMask == 0;
lp.enablMask = locallab.spots.at(sp).enablMask && llblMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0;
lp.enavibMask = locallab.spots.at(sp).enavibMask && llvibMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llSHMask == 0;
lp.enaColorMask = locallab.spots.at(sp).enaColorMask && llColorMask == 0 && lllcMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
lp.enaColorMaskinv = locallab.spots.at(sp).enaColorMask && llColorMaskinv == 0 && lllcMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
lp.enaExpMask = locallab.spots.at(sp).enaExpMask && llExpMask == 0 && llColorMask == 0 && lllcMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
lp.enaExpMaskinv = locallab.spots.at(sp).enaExpMask && llExpMaskinv == 0 && llColorMask == 0 && lllcMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
lp.enaSHMask = locallab.spots.at(sp).enaSHMask && llSHMask == 0 && llColorMask == 0 && lllcMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
lp.enaSHMaskinv = locallab.spots.at(sp).enaSHMask && llSHMaskinv == 0 && lllcMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
lp.enacbMask = locallab.spots.at(sp).enacbMask && llcbMask == 0 && lllcMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
lp.enaretiMask = locallab.spots.at(sp).enaretiMask && lllcMask == 0 && llretiMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
lp.enatmMask = locallab.spots.at(sp).enatmMask && lltmMask == 0 && lllcMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llblMask == 0 && llvibMask == 0;
lp.enablMask = locallab.spots.at(sp).enablMask && llblMask == 0 && lllcMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0;
lp.enavibMask = locallab.spots.at(sp).enavibMask && llvibMask == 0 && lllcMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llSHMask == 0;
lp.enalcMask = locallab.spots.at(sp).enalcMask && lllcMask == 0 && llcbMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
if (locallab.spots.at(sp).softMethod == "soft") {
lp.softmet = 0;
@ -1090,20 +1094,20 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
lp.detailsh = locallab.spots.at(sp).detailSH;
lp.threshol = thresho;
lp.chromacb = chromcbdl;
lp.colorena = locallab.spots.at(sp).expcolor && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0; // Color & Light tool is deactivated if Exposure mask is visible or SHMask
lp.blurena = locallab.spots.at(sp).expblur && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0;
lp.tonemapena = locallab.spots.at(sp).exptonemap && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llColorMask == 0 && llvibMask == 0;
lp.retiena = locallab.spots.at(sp).expreti && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && llSHMask == 0;
lp.colorena = locallab.spots.at(sp).expcolor && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0; // Color & Light tool is deactivated if Exposure mask is visible or SHMask
lp.blurena = locallab.spots.at(sp).expblur && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0;
lp.tonemapena = locallab.spots.at(sp).exptonemap && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && llColorMask == 0 && llvibMask == 0;
lp.retiena = locallab.spots.at(sp).expreti && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && llSHMask == 0;
lp.sharpena = locallab.spots.at(sp).expsharp;
lp.lcena = locallab.spots.at(sp).expcontrast;
lp.lcena = locallab.spots.at(sp).expcontrast && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && llSHMask == 0;
lp.sfena = locallab.spots.at(sp).expsoft;
lp.cbdlena = locallab.spots.at(sp).expcbdl && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0;
lp.cbdlena = locallab.spots.at(sp).expcbdl && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lllcMask == 0 && lllcMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0;
lp.expvib = locallab.spots.at(sp).expvibrance;
lp.sensv = local_sensiv;
lp.past = chromaPastel;
lp.satur = chromaSatur;
lp.exposena = locallab.spots.at(sp).expexpose && llColorMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0; // Exposure tool is deactivated if Color & Light mask SHmask is visible
lp.exposena = locallab.spots.at(sp).expexpose && llColorMask == 0 && llSHMask == 0 && lllcMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0; // Exposure tool is deactivated if Color & Light mask SHmask is visible
lp.cut_past = cupas;
lp.blac = locallab.spots.at(sp).black;
lp.shcomp = locallab.spots.at(sp).shcompr;
@ -1115,7 +1119,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
lp.expchroma = locallab.spots.at(sp).expchroma / 100.;
lp.sensex = local_sensiex;
lp.war = local_warm;
lp.hsena = locallab.spots.at(sp).expshadhigh && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0;// Shadow Highlight tool is deactivated if Color & Light mask or SHmask is visible
lp.hsena = locallab.spots.at(sp).expshadhigh && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0;// Shadow Highlight tool is deactivated if Color & Light mask or SHmask is visible
lp.highlihs = highhs;
lp.shadowhs = shadhs;
lp.radiushs = radhs;
@ -1124,7 +1128,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
lp.senshs = local_sensihs;
lp.ftwlc = fftwlc;
lp.ftwreti = fftwreti;
lp.vibena = locallab.spots.at(sp).expvibrance && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0;// vibrance tool is deactivated if Color & Light mask or SHmask is visible
lp.vibena = locallab.spots.at(sp).expvibrance && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0;// vibrance tool is deactivated if Color & Light mask or SHmask is visible
}
@ -5582,7 +5586,7 @@ void ImProcFunctions::calc_ref(int sp, LabImage * original, LabImage * transform
if (params->locallab.enabled) {
//always calculate hueref, chromaref, lumaref before others operations use in normal mode for all modules exceprt denoise
struct local_params lp;
calcLocalParams(sp, oW, oH, params->locallab, lp, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, locwavCurveden, locwavdenutili);
calcLocalParams(sp, oW, oH, params->locallab, lp, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, locwavCurveden, locwavdenutili);
int begy = lp.yc - lp.lyT;
int begx = lp.xc - lp.lxL;
int yEn = lp.yc + lp.ly;
@ -9053,7 +9057,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
const LocwavCurve & locwavCurveden, bool & locwavdenutili,
bool & LHutili, bool & HHutili, LUTf & cclocalcurve, bool & localcutili, LUTf & rgblocalcurve, bool & localrgbutili, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc,
double & huerefblur, double & chromarefblur, double & lumarefblur, double & hueref, double & chromaref, double & lumaref, double & sobelref, int &lastsav,
int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
float & minCD, float & maxCD, float & mini, float & maxi, float & Tmean, float & Tsigma, float & Tmin, float & Tmax)
{
//general call of others functions : important return hueref, chromaref, lumaref
@ -9069,7 +9073,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
int del = 3; // to avoid crash with [loy - begy] and [lox - begx] and bfh bfw // with gtk2 [loy - begy-1] [lox - begx -1 ] and del = 1
int delxy = 0;
struct local_params lp;
calcLocalParams(sp, oW, oH, params->locallab, lp, llColorMask, llColorMaskinv, llExpMask, llExpMaskinv, llSHMask, llSHMaskinv, llvibMask, llcbMask, llretiMask, llsoftMask, lltmMask, llblMask, locwavCurveden, locwavdenutili);
calcLocalParams(sp, oW, oH, params->locallab, lp, llColorMask, llColorMaskinv, llExpMask, llExpMaskinv, llSHMask, llSHMaskinv, llvibMask, lllcMask, llcbMask, llretiMask, llsoftMask, lltmMask, llblMask, locwavCurveden, locwavdenutili);
const float radius = lp.rad / (sk * 1.4f); //0 to 70 ==> see skip
int strred = 1;//(lp.strucc - 1);

View File

@ -900,6 +900,10 @@ enum ProcEventCode {
EvlocallabLLmasklcshape = 871,
EvLocallabEnalcMask = 872,
EvlocallabshowmasklcMethod = 873,
Evlocallabblendmasklc = 874,
Evlocallabradmasklc = 875,
Evlocallabchromasklc = 876,
EvlocallabLmasklcshape = 877,
NUMOFEVENTS
};

View File

@ -2747,6 +2747,10 @@ LocallabParams::LocallabSpot::LocallabSpot() :
LLmasklccurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35},
HHmasklccurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35},
enalcMask(false),
blendmasklc(0),
radmasklc(0.0),
chromasklc(0.0),
Lmasklccurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
// Contrast by detail levels
expcbdl(false),
@ -3148,6 +3152,10 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
&& LLmasklccurve == other.LLmasklccurve
&& HHmasklccurve == other.HHmasklccurve
&& enalcMask == other.enalcMask
&& blendmasklc == other.blendmasklc
&& radmasklc == other.radmasklc
&& chromasklc == other.chromasklc
&& Lmasklccurve == other.Lmasklccurve
// Constrast by detail levels
&& expcbdl == other.expcbdl
&& [this, &other]()->bool {
@ -4529,6 +4537,10 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmasklccurve, "Locallab", "LLmasklcCurve_" + std::to_string(i), spot.LLmasklccurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).HHmasklccurve, "Locallab", "HHmasklcCurve_" + std::to_string(i), spot.HHmasklccurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).enalcMask, "Locallab", "EnalcMask_" + std::to_string(i), spot.enalcMask, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blendmasklc, "Locallab", "Blendmasklc_" + std::to_string(i), spot.blendmasklc, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).radmasklc, "Locallab", "Radmasklc_" + std::to_string(i), spot.radmasklc, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chromasklc, "Locallab", "Chromasklc_" + std::to_string(i), spot.chromasklc, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).Lmasklccurve, "Locallab", "LmasklcCurve_" + std::to_string(i), spot.Lmasklccurve, keyFile);
// Contrast by detail levels
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).expcbdl, "Locallab", "Expcbdl_" + std::to_string(i), spot.expcbdl, keyFile);
@ -6059,6 +6071,10 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Locallab", "LLmasklcCurve_" + std::to_string(i), pedited, spot.LLmasklccurve, spotEdited.LLmasklccurve);
assignFromKeyfile(keyFile, "Locallab", "HHmasklcCurve_" + std::to_string(i), pedited, spot.HHmasklccurve, spotEdited.HHmasklccurve);
assignFromKeyfile(keyFile, "Locallab", "EnalcMask_" + std::to_string(i), pedited, spot.enalcMask, spotEdited.enalcMask);
assignFromKeyfile(keyFile, "Locallab", "Blendmasklc_" + std::to_string(i), pedited, spot.blendmasklc, spotEdited.blendmasklc);
assignFromKeyfile(keyFile, "Locallab", "Radmasklc_" + std::to_string(i), pedited, spot.radmasklc, spotEdited.radmasklc);
assignFromKeyfile(keyFile, "Locallab", "Chromasklc_" + std::to_string(i), pedited, spot.chromasklc, spotEdited.chromasklc);
assignFromKeyfile(keyFile, "Locallab", "LmasklcCurve_" + std::to_string(i), pedited, spot.Lmasklccurve, spotEdited.Lmasklccurve);
if (keyFile.has_key("Locallab", "CSThreshold_" + std::to_string(i))) {

View File

@ -1290,6 +1290,10 @@ struct LocallabParams {
std::vector<double> LLmasklccurve;
std::vector<double> HHmasklccurve;
bool enalcMask;
int blendmasklc;
double radmasklc;
double chromasklc;
std::vector<double> Lmasklccurve;
// Contrast by detail levels
bool expcbdl;

View File

@ -903,7 +903,11 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
LUMINANCECURVE, //EvlocallabCCmasklcshape
LUMINANCECURVE, //EvlocallabLLmasklcshape
LUMINANCECURVE, //EvlocallabEnalcMask
LUMINANCECURVE //EvlocallabshowmasklcMethod
LUMINANCECURVE, //EvlocallabshowmasklcMethod
LUMINANCECURVE, //Evlocallabblendmasklc
LUMINANCECURVE, // Evlocallabradmasklc
LUMINANCECURVE, //Evlocallabchromasklc
LUMINANCECURVE //EvlocallabLmasklcshape
};

View File

@ -524,7 +524,7 @@ public:
virtual void updateUnLock() = 0;
virtual void setLocallabMaskVisibility(int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallvibMask, int locallSHMask, int locallSHMaskinv, int locallcbMask, int locallretiMask, int locallsoftMask, int localltmMask, int locallblMask) = 0;
virtual void setLocallabMaskVisibility(int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallvibMask, int locallSHMask, int locallSHMaskinv, int localllcMask, int locallcbMask, int locallretiMask, int locallsoftMask, int localltmMask, int locallblMask) = 0;
/** Creates and returns a Crop instance that acts as a window on the image
* @param editDataProvider pointer to the EditDataProvider that communicates with the EditSubscriber

View File

@ -1313,7 +1313,7 @@ private:
loccompwavCurve, loccompwavutili,
locwavCurveden, locwavdenutili,
LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
lastorigView->CopyFrom(labView);

View File

@ -357,6 +357,9 @@ Locallab::Locallab():
wavshapecomp(static_cast<FlatCurveEditor*>(LocalcurveEditorwavcomp->addCurve(CT_Flat, "", nullptr, false, false))),
masklcCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK"))),
mask2lcCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
Lmasklcshape(static_cast<DiagonalCurveEditor*>(mask2lcCurveEditorG->addCurve(CT_Diagonal, "L(L)"))),
CCmasklcshape(static_cast<FlatCurveEditor*>(masklcCurveEditorG->addCurve(CT_Flat, "C(C)", nullptr, false, false))),
LLmasklcshape(static_cast<FlatCurveEditor*>(masklcCurveEditorG->addCurve(CT_Flat, "L(L)", nullptr, false, false))),
HHmasklcshape(static_cast<FlatCurveEditor *>(masklcCurveEditorG->addCurve(CT_Flat, "LC(H)", nullptr, false, true))),
@ -575,6 +578,9 @@ sigma(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SIGMAWAV"), 0.2, 2.5, 0.01, 1.))),
fatdet(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATDETAIL"), -100., 300., 1., 0.))),
fatanch(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATANCHOR"), 1., 100., 1., 50., Gtk::manage(new RTImage("circle-black-small.png")), Gtk::manage(new RTImage("circle-white-small.png"))))),
fatres(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATRES"), 0., 100., 1., 0.))),
blendmasklc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKCOL"), -100, 100, 1, 0))),
radmasklc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_RADMASKCOL"), -10.0, 1000.0, 0.1, 0.))),
chromasklc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMASKCOL"), -100.0, 100.0, 0.1, 0.))),
multiplier(
[this]() -> std::array<Adjuster*, 6> {
@ -2900,6 +2906,10 @@ pe(nullptr)
claricres->setAdjusterListener(this);
sensilc->setAdjusterListener(this);
blendmasklc->setAdjusterListener(this);
radmasklc->setLogScale(10, -10);
radmasklc->setAdjusterListener(this);
chromasklc->setAdjusterListener(this);
@ -3032,6 +3042,19 @@ pe(nullptr)
masklcCurveEditorG->curveListComplete();
mask2lcCurveEditorG->setCurveListener(this);
Lmasklcshape->setResetCurve(DiagonalCurveType(defSpot.Lmasklccurve.at(0)), defSpot.Lmasklccurve);
if (showtooltip) {
Lmasklcshape->setTooltip(M("TP_LOCALLAB_LMASK_LL_TOOLTIP"));
}
const std::vector<GradientMilestone>& mLmasklcshape = zero_one_shape;
Lmasklcshape->setBottomBarBgGradient(mLmasklcshape);
Lmasklcshape->setLeftBarBgGradient(mLmasklcshape);
mask2lcCurveEditorG->curveListComplete();
enalcMaskConn = enalcMask->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::enalcMaskChanged));
showmasklcMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
@ -3051,8 +3074,10 @@ pe(nullptr)
masklcBox->pack_start(*showmasklcMethod, Gtk::PACK_SHRINK, 4);
masklcBox->pack_start(*enalcMask, Gtk::PACK_SHRINK, 0);
masklcBox->pack_start(*masklcCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
// maskcbBox->pack_start(*blendmaskcb, Gtk::PACK_SHRINK, 0);
// maskcbBox->pack_start(*radmaskcb, Gtk::PACK_SHRINK, 0);
masklcBox->pack_start(*blendmasklc, Gtk::PACK_SHRINK, 0);
masklcBox->pack_start(*radmasklc, Gtk::PACK_SHRINK, 0);
masklcBox->pack_start(*chromasklc, Gtk::PACK_SHRINK, 0);
masklcBox->pack_start(*mask2lcCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
if (complexsoft < 1) {
// maskcbBox->pack_start(*lapmaskcb, Gtk::PACK_SHRINK, 0);
@ -3741,6 +3766,7 @@ Locallab::~Locallab()
delete maskretiCurveEditorG;
delete mask2retiCurveEditorG;
delete maskcbCurveEditorG;
delete mask2lcCurveEditorG;
delete mask2cbCurveEditorG;
}
@ -5248,6 +5274,10 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
pp->locallab.spots.at(pp->locallab.selspot).CCmasklccurve = CCmasklcshape->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).HHmasklccurve = HHmasklcshape->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).enalcMask = enalcMask->get_active();
pp->locallab.spots.at(pp->locallab.selspot).blendmasklc = blendmasklc->getIntValue();
pp->locallab.spots.at(pp->locallab.selspot).radmasklc = radmasklc->getValue();
pp->locallab.spots.at(pp->locallab.selspot).chromasklc = chromasklc->getValue();
pp->locallab.spots.at(pp->locallab.selspot).Lmasklccurve = Lmasklcshape->getCurve();
// Contrast by detail levels
pp->locallab.spots.at(pp->locallab.selspot).expcbdl = expcbdl->getEnabled();
@ -5647,6 +5677,10 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
pe->locallab.spots.at(pp->locallab.selspot).LLmasklccurve = pe->locallab.spots.at(pp->locallab.selspot).LLmasklccurve || !LLmasklcshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).HHmasklccurve = pe->locallab.spots.at(pp->locallab.selspot).HHmasklccurve || !HHmasklcshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).enalcMask = pe->locallab.spots.at(pp->locallab.selspot).enalcMask || !enalcMask->get_inconsistent();
pe->locallab.spots.at(pp->locallab.selspot).blendmasklc = pe->locallab.spots.at(pp->locallab.selspot).blendmasklc || blendmasklc->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).radmasklc = pe->locallab.spots.at(pp->locallab.selspot).radmasklc || radmasklc->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).chromasklc = pe->locallab.spots.at(pp->locallab.selspot).chromasklc || chromasklc->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).Lmasklccurve = pe->locallab.spots.at(pp->locallab.selspot).Lmasklccurve || !Lmasklcshape->isUnChanged();
// Contrast by detail levels
@ -6050,6 +6084,11 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
pedited->locallab.spots.at(pp->locallab.selspot).HHmasklccurve = pedited->locallab.spots.at(pp->locallab.selspot).HHmasklccurve || !HHmasklcshape->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).enalcMask = pedited->locallab.spots.at(pp->locallab.selspot).enalcMask || !enalcMask->get_inconsistent();
pedited->locallab.spots.at(pp->locallab.selspot).blendmasklc = pedited->locallab.spots.at(pp->locallab.selspot).blendmasklc || blendmasklc->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).radmasklc = pedited->locallab.spots.at(pp->locallab.selspot).radmasklc || radmasklc->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).chromasklc = pedited->locallab.spots.at(pp->locallab.selspot).chromasklc || chromasklc->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).Lmasklccurve = pedited->locallab.spots.at(pp->locallab.selspot).Lmasklccurve || !Lmasklcshape->isUnChanged();
// Contrast by detail levels
pedited->locallab.spots.at(pp->locallab.selspot).expcbdl = pedited->locallab.spots.at(pp->locallab.selspot).expcbdl || !expcbdl->get_inconsistent();
@ -6566,6 +6605,12 @@ void Locallab::curveChanged(CurveEditor* ce)
}
}
if (ce == Lmasklcshape) {
if (listener) {
listener->panelChanged(EvlocallabLmasklcshape, M("HISTORY_CUSTOMCURVE"));
}
}
}
//denoise
if (getEnabled() && expdenoi->getEnabled()) {
@ -8701,6 +8746,9 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c
clarisoft->setDefault(defSpot->clarisoft);
sensilc->setDefault((double)defSpot->sensilc);
csThreshold->setDefault<int>(defSpot->csthreshold);
blendmasklc->setDefault((double)defSpot->blendmasklc);
radmasklc->setDefault(defSpot->radmasklc);
chromasklc->setDefault(defSpot->chromasklc);
// Contrast by detail levels
for (int i = 0; i < 6; i++) {
@ -8937,6 +8985,9 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c
clarisoft->setDefaultEditedState(Irrelevant);
sensilc->setDefaultEditedState(Irrelevant);
csThreshold->setDefaultEditedState(Irrelevant);
blendmasklc->setDefaultEditedState(Irrelevant);
radmasklc->setDefaultEditedState(Irrelevant);
chromasklc->setDefaultEditedState(Irrelevant);
// Contrast by detail levels
for (int i = 0; i < 6; i++) {
@ -9178,6 +9229,9 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c
clarisoft->setDefaultEditedState(defSpotState->clarisoft ? Edited : UnEdited);
sensilc->setDefaultEditedState(defSpotState->sensilc ? Edited : UnEdited);
csThreshold->setDefaultEditedState(defSpotState->csthreshold ? Edited : UnEdited);
blendmasklc->setDefaultEditedState(defSpotState->blendmasklc ? Edited : UnEdited);
radmasklc->setDefaultEditedState(defSpotState->radmasklc ? Edited : UnEdited);
chromasklc->setDefaultEditedState(defSpotState->chromasklc ? Edited : UnEdited);
// Contrast by detail levels
for (int i = 0; i < 6; i++) {
@ -10385,6 +10439,25 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
listener->panelChanged(Evlocallabsensilc, sensilc->getTextValue());
}
}
if (a == blendmasklc) {
if (listener) {
listener->panelChanged(Evlocallabblendmasklc, blendmasklc->getTextValue());
}
}
if (a == radmasklc) {
if (listener) {
listener->panelChanged(Evlocallabradmasklc, radmasklc->getTextValue());
}
}
if (a == chromasklc) {
if (listener) {
listener->panelChanged(Evlocallabchromasklc, chromasklc->getTextValue());
}
}
}
// Contrast by detail levels
@ -10842,6 +10915,9 @@ void Locallab::setBatchMode(bool batchMode)
clarisoft->showEditedCB();
csThreshold->showEditedCB();
sensilc->showEditedCB();
blendmasklc->showEditedCB();
radmasklc->showEditedCB();
chromasklc->showEditedCB();
// Contrast by detail levels
for (int i = 0; i < 6; i++) {
@ -11931,6 +12007,10 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
LLmasklcshape->setCurve(pp->locallab.spots.at(index).LLmasklccurve);
HHmasklcshape->setCurve(pp->locallab.spots.at(index).HHmasklccurve);
enalcMask->set_active(pp->locallab.spots.at(index).enalcMask);
blendmasklc->setValue(pp->locallab.spots.at(index).blendmasklc);
radmasklc->setValue(pp->locallab.spots.at(index).radmasklc);
chromasklc->setValue(pp->locallab.spots.at(index).chromasklc);
Lmasklcshape->setCurve(pp->locallab.spots.at(index).Lmasklccurve);
if (fftwlc->get_active()) {
lcradius->setLimits(20, 1000, 1, 80);
@ -12421,6 +12501,10 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
HHmasklcshape->setUnChanged(!spotState->HHmasklccurve);
CCmasklcshape->setUnChanged(!spotState->CCmasklccurve);
enalcMask->set_inconsistent(multiImage && !spotState->enalcMask);
blendmasklc->setEditedState(spotState->blendmasklc ? Edited : UnEdited);
radmasklc->setEditedState(spotState->radmasklc ? Edited : UnEdited);
chromasklc->setEditedState(spotState->chromasklc ? Edited : UnEdited);
Lmasklcshape->setUnChanged(!spotState->Lmasklccurve);
if (!spotState->retinexMethod) {
localcontMethod->set_active_text(M("GENERAL_UNCHANGED"));

View File

@ -174,7 +174,8 @@ private:
CurveEditorGroup* const LocalcurveEditorwavcomp;
FlatCurveEditor* const wavshapecomp;
CurveEditorGroup* const masklcCurveEditorG;
// DiagonalCurveEditor* const Lmasklcshape;
CurveEditorGroup* const mask2lcCurveEditorG;
DiagonalCurveEditor* const Lmasklcshape;
FlatCurveEditor* const CCmasklcshape;
FlatCurveEditor* const LLmasklcshape;
FlatCurveEditor* const HHmasklcshape;
@ -372,6 +373,9 @@ private:
Adjuster* const fatdet;
Adjuster* const fatanch;
Adjuster* const fatres;
Adjuster* const blendmasklc;
Adjuster* const radmasklc;
Adjuster* const chromasklc;
// Contrast by detail levels
const std::array<Adjuster*, 6> multiplier;
Adjuster* const chromacbdl;

View File

@ -1284,6 +1284,10 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
locallab.spots.at(j).LLmasklccurve = locallab.spots.at(j).LLmasklccurve && pSpot.LLmasklccurve == otherSpot.LLmasklccurve;
locallab.spots.at(j).HHmasklccurve = locallab.spots.at(j).HHmasklccurve && pSpot.HHmasklccurve == otherSpot.HHmasklccurve;
locallab.spots.at(j).enalcMask = locallab.spots.at(j).enalcMask && pSpot.enalcMask == otherSpot.enalcMask;
locallab.spots.at(j).blendmasklc = locallab.spots.at(j).blendmasklc && pSpot.blendmasklc == otherSpot.blendmasklc;
locallab.spots.at(j).radmasklc = locallab.spots.at(j).radmasklc && pSpot.radmaskcb == otherSpot.radmasklc;
locallab.spots.at(j).chromasklc = locallab.spots.at(j).chromasklc && pSpot.chromasklc == otherSpot.chromasklc;
locallab.spots.at(j).Lmasklccurve = locallab.spots.at(j).Lmasklccurve && pSpot.Lmasklccurve == otherSpot.Lmasklccurve;
// Contrast by detail levels
locallab.spots.at(j).expcbdl = locallab.spots.at(j).expcbdl && pSpot.expcbdl == otherSpot.expcbdl;
@ -4102,6 +4106,23 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.locallab.spots.at(i).enalcMask = mods.locallab.spots.at(i).enalcMask;
}
if (locallab.spots.at(i).blendmasklc) {
toEdit.locallab.spots.at(i).blendmasklc = mods.locallab.spots.at(i).blendmasklc;
}
if (locallab.spots.at(i).radmasklc) {
toEdit.locallab.spots.at(i).radmasklc = mods.locallab.spots.at(i).radmasklc;
}
if (locallab.spots.at(i).chromasklc) {
toEdit.locallab.spots.at(i).chromasklc = mods.locallab.spots.at(i).chromasklc;
}
if (locallab.spots.at(i).Lmasklccurve) {
toEdit.locallab.spots.at(i).Lmasklccurve = mods.locallab.spots.at(i).Lmasklccurve;
}
// Contrast by detail levels
if (locallab.spots.at(i).expcbdl) {
toEdit.locallab.spots.at(i).expcbdl = mods.locallab.spots.at(i).expcbdl;
@ -5596,6 +5617,10 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
LLmasklccurve(v),
HHmasklccurve(v),
enalcMask(v),
blendmasklc(v),
radmasklc(v),
chromasklc(v),
Lmasklccurve(v),
// Contrast by detail levels
expcbdl(v),
@ -5987,6 +6012,10 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
LLmasklccurve = v;
HHmasklccurve = v;
enalcMask = v;
blendmasklc = v;
radmasklc = v;
chromasklc = v;
Lmasklccurve = v;
// Contrast by detail levels
expcbdl = v;

View File

@ -716,6 +716,10 @@ public:
bool LLmasklccurve;
bool HHmasklccurve;
bool enalcMask;
bool blendmasklc;
bool radmasklc;
bool chromasklc;
bool Lmasklccurve;
// Contrast by detail levels
bool expcbdl;
bool mult[6];

View File

@ -509,9 +509,9 @@ void ToolPanelCoordinator::panelChanged(const rtengine::ProcEvent& event, const
// Manage Locallab mask visibility
if (event == rtengine::EvlocallabshowmaskcolMethod || event == rtengine::EvlocallabshowmaskcolMethodinv ||event == rtengine::EvlocallabshowmaskexpMethod ||event == rtengine::EvlocallabshowmaskexpMethodinv
|| event == rtengine::EvlocallabshowmaskSHMethod || event == rtengine::EvlocallabshowmaskSHMethodinv || event == rtengine::EvlocallabshowmaskvibMethod || event == rtengine::EvlocallabshowmasksoftMethod
|| event == rtengine::EvlocallabshowmaskcbMethod || event == rtengine::EvlocallabshowmaskretiMethod || event == rtengine::EvlocallabshowmasktmMethod || event == rtengine::EvlocallabshowmaskblMethod) {
|| event == rtengine::EvlocallabshowmaskcbMethod || event == rtengine::EvlocallabshowmasklcMethod || event == rtengine::EvlocallabshowmaskretiMethod || event == rtengine::EvlocallabshowmasktmMethod || event == rtengine::EvlocallabshowmaskblMethod) {
Locallab::llMaskVisibility* maskStruc = locallab->getMaskVisibility();
ipc->setLocallabMaskVisibility(maskStruc->colorMask, maskStruc->colorMaskinv, maskStruc->expMask, maskStruc->expMaskinv, maskStruc->SHMask, maskStruc->SHMaskinv, maskStruc->vibMask, maskStruc->cbMask, maskStruc->retiMask, maskStruc->softMask, maskStruc->tmMask, maskStruc->blMask);
ipc->setLocallabMaskVisibility(maskStruc->colorMask, maskStruc->colorMaskinv, maskStruc->expMask, maskStruc->expMaskinv, maskStruc->SHMask, maskStruc->SHMaskinv, maskStruc->vibMask, maskStruc->lcMask, maskStruc->cbMask, maskStruc->retiMask, maskStruc->softMask, maskStruc->tmMask, maskStruc->blMask);
}
ipc->endUpdateParams(changeFlags); // starts the IPC processing
@ -619,7 +619,7 @@ void ToolPanelCoordinator::profileChange(
// Reset Locallab mask visibility when a picture is loaded
if (event == rtengine::EvPhotoLoaded) {
locallab->resetMaskVisibility();
ipc->setLocallabMaskVisibility(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
ipc->setLocallabMaskVisibility(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
}
// start the IPC processing