From 82d8844ee622cf227c0680cfa7facf177f0a6261 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 26 Jan 2020 10:17:34 +0100 Subject: [PATCH] Prepare Edge Sharpness wavelet pyramid --- rtdata/languages/default | 14 +++ rtengine/dcrop.cc | 5 + rtengine/improccoordinator.cc | 5 + rtengine/improccoordinator.h | 2 + rtengine/improcfun.h | 2 + rtengine/iplocallab.cc | 49 +++++++- rtengine/procevents.h | 5 + rtengine/procparams.cc | 32 +++++- rtengine/procparams.h | 5 + rtengine/refreshmap.cc | 8 +- rtengine/simpleprocess.cc | 4 + rtgui/locallab.cc | 210 ++++++++++++++++++++++++++++++++-- rtgui/locallab.h | 13 +++ rtgui/paramsedited.cc | 35 ++++++ rtgui/paramsedited.h | 5 + 15 files changed, 374 insertions(+), 20 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index c0ce1a152..b94e1e454 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1131,6 +1131,18 @@ HISTORY_MSG_891;Local - Contrast Wavelet Graduated HISTORY_MSG_892;Local - Encoding log Graduated Strength HISTORY_MSG_893;Local - Encoding log Graduated angle HISTORY_MSG_894;Local - Color Preview dE +HISTORY_MSG_897;Local - Contrast Wavelet ES strength +HISTORY_MSG_898;Local - Contrast Wavelet ES radius +HISTORY_MSG_899;Local - Contrast Wavelet ES detail +HISTORY_MSG_900;Local - Contrast Wavelet ES gradient +HISTORY_MSG_901;Local - Contrast Wavelet ES threshold low +HISTORY_MSG_902;Local - Contrast Wavelet ES threshold high +HISTORY_MSG_903;Local - Contrast Wavelet ES local contrast +HISTORY_MSG_904;Local - Contrast Wavelet ES first level +HISTORY_MSG_905;Local - Contrast Wavelet Edge Sharpness +HISTORY_MSG_906;Local - Contrast Wavelet ES sensitivity +HISTORY_MSG_907;Local - Contrast Wavelet ES amplification +HISTORY_MSG_908;Local - Contrast Wavelet ES neighboring HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction @@ -2298,6 +2310,7 @@ TP_LOCALLAB_DETAIL;Local contrast TP_LOCALLAB_DETAILSH;Details TP_LOCALLAB_DETAILTHR;Detail threshold Luminance Chroma (DCT ƒ) TP_LOCALLAB_DUPLSPOTNAME;Copy +TP_LOCALLAB_EDGFRA;Edge Sharpness TP_LOCALLAB_ELI;Elipse TP_LOCALLAB_ENABLE_AFTER_MASK;Use Tone Mapping TP_LOCALLAB_ENABLE_MASK;Enable mask @@ -2639,6 +2652,7 @@ TP_LOCALLAB_WAMASKCOL;Ψ Mask Wavelet level TP_LOCALLAB_WARM;Warm - Cool & Color artifacts TP_LOCALLAB_WARM_TOOLTIP;This slider use Ciecam algorithm and acts as White Balance, it can warm or cool the area selected.\nIt can also in some cases reduce color artifacts. TP_LOCALLAB_WAV;Levels local contrast +TP_LOCALLAB_WAVEDG;Local contrast TP_LOCALLAB_WAVCOMP;Compression by Level TP_LOCALLAB_WAVCOMPRE;(un)Compression by Level TP_LOCALLAB_WAVCON;Contrast by Level diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 3c6a55317..b20fd6a33 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -933,6 +933,7 @@ void Crop::update(int todo) bool locconwavutili = parent->locconwavutili; bool loccompwavutili = parent->loccompwavutili; bool loccomprewavutili = parent->loccomprewavutili; + bool locedgwavutili = parent->locedgwavutili; bool lmasutiliblwav = parent->lmasutiliblwav; bool lmasutilicolwav = parent->lmasutilicolwav; @@ -979,6 +980,7 @@ void Crop::update(int todo) LocwavCurve locconwavCurve; LocwavCurve loccompwavCurve; LocwavCurve loccomprewavCurve; + LocwavCurve locedgwavCurve; LocwavCurve locwavCurveden; LocretigainCurverab locRETgainCurverab; @@ -1031,6 +1033,7 @@ void Crop::update(int todo) locconwavCurve.Set(params.locallab.spots.at(sp).locconwavcurve, locconwavutili); loccompwavCurve.Set(params.locallab.spots.at(sp).loccompwavcurve, loccompwavutili); loccomprewavCurve.Set(params.locallab.spots.at(sp).loccomprewavcurve, loccomprewavutili); + locedgwavCurve.Set(params.locallab.spots.at(sp).locedgwavcurve, locedgwavutili); locallutili = false; CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve2, sca); localclutili = false; @@ -1129,6 +1132,7 @@ void Crop::update(int todo) loccompwavCurve, loccompwavutili, loccomprewavCurve, loccomprewavutili, locwavCurveden, locwavdenutili, + locedgwavCurve, locedgwavutili, 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->localllcMask, parent->locallsharMask, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask, @@ -1167,6 +1171,7 @@ void Crop::update(int todo) loccompwavCurve, loccompwavutili, loccomprewavCurve, loccomprewavutili, locwavCurveden, locwavdenutili, + locedgwavCurve, locedgwavutili, 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, 0, 0, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index eaabf4869..fe900074f 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -229,6 +229,7 @@ ImProcCoordinator::ImProcCoordinator() : locconwavutili(false), loccompwavutili(false), loccomprewavutili(false), + locedgwavutili(false), lmasutiliblwav(false), lmasutilicolwav(false), LHutili(false), @@ -1099,6 +1100,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) locconwavutili = false; loccompwavutili = false; loccomprewavutili = false; + locedgwavutili = false; lmasutiliblwav = false; lmasutilicolwav = false; locRETgainCurve.Set(params->locallab.spots.at(sp).localTgaincurve); @@ -1142,6 +1144,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) loccompwavCurve.Set(params->locallab.spots.at(sp).loccompwavcurve, loccompwavutili); loccomprewavCurve.Set(params->locallab.spots.at(sp).loccomprewavcurve, loccomprewavutili); locwavCurveden.Set(params->locallab.spots.at(sp).locwavcurveden, locwavdenutili); + locedgwavCurve.Set(params->locallab.spots.at(sp).locedgwavcurve, locedgwavutili); CurveFactory::curveLocal(locallutili, params->locallab.spots.at(sp).llcurve, lllocalcurve, sca); CurveFactory::curveLocal(localclutili, params->locallab.spots.at(sp).clcurve, cllocalcurve, sca); CurveFactory::curveLocal(locallcutili, params->locallab.spots.at(sp).lccurve, lclocalcurve, sca); @@ -1256,6 +1259,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) loccompwavCurve, loccompwavutili, loccomprewavCurve, loccomprewavutili, locwavCurveden, locwavdenutili, + locedgwavCurve, locedgwavutili, 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, localllcMask, locallsharMask, locallcbMask, locallretiMask, locallsoftMask, localltmMask, locallblMask, @@ -1299,6 +1303,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) loccompwavCurve, loccompwavutili, loccomprewavCurve, loccomprewavutili, locwavCurveden, locwavdenutili, + locedgwavCurve, locedgwavutili, 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, 0, 0, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 04e7c8718..cae396c37 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -293,6 +293,7 @@ protected: LocwavCurve loccompwavCurve; LocwavCurve loccomprewavCurve; LocwavCurve locwavCurveden; + LocwavCurve locedgwavCurve; bool locallutili; bool localclutili; @@ -343,6 +344,7 @@ protected: bool locconwavutili; bool loccompwavutili; bool loccomprewavutili; + bool locedgwavutili; bool lmasutiliblwav; bool lmasutilicolwav; bool LHutili; diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 0372bbf45..662f610bc 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -306,6 +306,7 @@ public: const LocwavCurve & loccompwavCurve, bool & loccompwavutili, const LocwavCurve & loccomprewavCurve, bool & loccomprewavutili, const LocwavCurve & locwavCurveden, bool & locwavdenutili, + const LocwavCurve & locedgwavCurve, bool & locedgwavutili, 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 lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, @@ -324,6 +325,7 @@ public: const LocwavCurve & locconwavCurve, bool & locconwavutili, bool wavcurvecon, const LocwavCurve & loccompwavCurve, bool & loccompwavutili, bool wavcurvecomp, const LocwavCurve & loccomprewavCurve, bool & loccomprewavutili, bool wavcurvecompre, + const LocwavCurve & locedgwavCurve, bool & locedgwavutili, float sigm, float offs,int & maxlvl, float fatdet, float fatanch, float chromalev, float chromablu, bool blurlc, bool blurena, bool levelena, bool comprena, bool compreena, float compress, float thres); void wavcont(wavelet_decomposition &wdspot, float ****templevel, int level_bl, int maxlvl, diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index 64a3fad1a..1c691c371 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -237,6 +237,17 @@ struct local_params { float angvib; float angwav; float strwav; + + float strengthw; + float radiusw; + float detailw; + float gradw; + float tloww; + float thigw; + float edgw; + float basew; + + float anglog; float strlog; float softradiusexp; @@ -393,6 +404,8 @@ struct local_params { int war; float adjch; int shapmet; + int edgwmet; + int neiwmet; bool enaColorMask; bool fftColorMask; bool enaColorMaskinv; @@ -723,6 +736,22 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall lp.mergecolMethod = 20; } + if (locallab.spots.at(sp).localedgMethod == "fir") { + lp.edgwmet = 0; + } else if (locallab.spots.at(sp).localedgMethod == "sec") { + lp.edgwmet = 1; + } else if (locallab.spots.at(sp).localedgMethod == "thr") { + lp.edgwmet = 2; + } + + if (locallab.spots.at(sp).localneiMethod == "none") { + lp.neiwmet = 0; + } else if (locallab.spots.at(sp).localneiMethod == "low") { + lp.neiwmet = 1; + } else if (locallab.spots.at(sp).localneiMethod == "high") { + lp.neiwmet = 2; + } + lp.opacol = 0.01f * locallab.spots.at(sp).opacol; if (locallab.spots.at(sp).shape == "ELI") { @@ -1014,6 +1043,16 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall lp.gammatm = gammasktm; lp.slomatm = slomasktm; lp.wavgradl = wavgradl; + + lp.strengthw = ((float) locallab.spots.at(sp).strengthw); + lp.radiusw = ((float) locallab.spots.at(sp).radiusw); + lp.detailw =((float) locallab.spots.at(sp).detailw); + lp.gradw = ((float) locallab.spots.at(sp).gradw); + lp.tloww = ((float) locallab.spots.at(sp).tloww); + lp.thigw = ((float) locallab.spots.at(sp).thigw); + lp.edgw = ((float) locallab.spots.at(sp).edgw); + lp.basew = ((float) locallab.spots.at(sp).basew); + lp.blendmabl = blendmaskbl; lp.radmabl = radmaskbl; lp.chromabl = chromaskbl; @@ -4164,7 +4203,8 @@ void ImProcFunctions::maskcalccol(int call, bool invmask, bool pde, int bfw, int bool loccomprewavutili = false; bool wavcurvecompre = false; bool wavcurve = false; - wavcontrast4(lp, bufmaskblurcol->L, nullptr, nullptr, contrast, 0.f, 0.f, 0.f, bfw, bfh, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurvecolwav, lmasutilicolwav, wavcurve, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, dummy, loccomprewavutili, wavcurvecompre, 1.f, 1.f, maxlvl, 0.f, 0.f, 1.f, 1.f, false, false, false, false, false, 0.f, 0.f); + bool locedgwavutili = false; + wavcontrast4(lp, bufmaskblurcol->L, nullptr, nullptr, contrast, 0.f, 0.f, 0.f, bfw, bfh, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurvecolwav, lmasutilicolwav, wavcurve, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, dummy, loccomprewavutili, wavcurvecompre, dummy, locedgwavutili, 1.f, 1.f, maxlvl, 0.f, 0.f, 1.f, 1.f, false, false, false, false, false, 0.f, 0.f); } @@ -7436,6 +7476,7 @@ void ImProcFunctions::wavcontrast4(struct local_params& lp, float ** tmp, float const LocwavCurve & locconwavCurve, bool & locconwavutili, bool wavcurvecon, const LocwavCurve & loccompwavCurve, bool & loccompwavutili, bool wavcurvecomp, const LocwavCurve & loccomprewavCurve, bool & loccomprewavutili, bool wavcurvecompre, + const LocwavCurve & locedgwavCurve, bool & locedgwavutili, float sigm, float offs, int & maxlvl, float fatdet, float fatanch, float chromalev, float chromablu, bool blurlc, bool blurena, bool levelena, bool comprena, bool compreena, float compress, float thres) { wavelet_decomposition *wdspot = new wavelet_decomposition(tmp[0], bfw, bfh, maxlvl, 1, sk, numThreads, 6); @@ -9609,6 +9650,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o const LocwavCurve & loccompwavCurve, bool & loccompwavutili, const LocwavCurve & loccomprewavCurve, bool & loccomprewavutili, const LocwavCurve & locwavCurveden, bool & locwavdenutili, + const LocwavCurve & locedgwavCurve, bool & locedgwavutili, 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 lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, @@ -10029,9 +10071,10 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o bool loccompwavutili = false; bool wavcurvecomp = false; bool loccomprewavutili = false; + bool locedgwavutili = false; bool wavcurvecompre = false; bool wavcurve = false; - wavcontrast4(lp, bufmaskblurbl->L, nullptr, nullptr, contrast, 0.f, 0.f, 0.f, GW, GH, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurveblwav, lmasutiliblwav, wavcurve, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, dummy, loccomprewavutili, wavcurvecompre, 1.f, 1.f, maxlvl, 0.f, 0.f, 1.f, 1.f, false, false, false, false, false, 0.f, 0.f); + wavcontrast4(lp, bufmaskblurbl->L, nullptr, nullptr, contrast, 0.f, 0.f, 0.f, GW, GH, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurveblwav, lmasutiliblwav, wavcurve, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, dummy, loccomprewavutili, wavcurvecompre, dummy, locedgwavutili, 1.f, 1.f, maxlvl, 0.f, 0.f, 1.f, 1.f, false, false, false, false, false, 0.f, 0.f); } int shado = params->locallab.spots.at(sp).shadmaskbl; @@ -11996,7 +12039,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o const float compress = params->locallab.spots.at(sp).residcomp; const float thres = params->locallab.spots.at(sp).threswav; - wavcontrast4(lp, tmp1->L, tmp1->a, tmp1->b, contrast, fatres, radblur, radlevblur, tmp1->W, tmp1->H, level_bl, level_hl, level_br, level_hr, sk, numThreads, locwavCurve, locwavutili, wavcurve, loclevwavCurve, loclevwavutili, wavcurvelev, locconwavCurve, locconwavutili, wavcurvecon, loccompwavCurve, loccompwavutili, wavcurvecomp, loccomprewavCurve, loccomprewavutili, wavcurvecompre, sigma, offs, maxlvl, fatdet, fatanch, chrol, chrobl, blurlc, blurena, levelena, comprena, compreena, compress, thres); + wavcontrast4(lp, tmp1->L, tmp1->a, tmp1->b, contrast, fatres, radblur, radlevblur, tmp1->W, tmp1->H, level_bl, level_hl, level_br, level_hr, sk, numThreads, locwavCurve, locwavutili, wavcurve, loclevwavCurve, loclevwavutili, wavcurvelev, locconwavCurve, locconwavutili, wavcurvecon, loccompwavCurve, loccompwavutili, wavcurvecomp, loccomprewavCurve, loccomprewavutili, wavcurvecompre, locedgwavCurve, locedgwavutili, sigma, offs, maxlvl, fatdet, fatanch, chrol, chrobl, blurlc, blurena, levelena, comprena, compreena, compress, thres); const float satur = params->locallab.spots.at(sp).residchro; diff --git a/rtengine/procevents.h b/rtengine/procevents.h index 5dce3dba3..a1fc740b8 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -929,6 +929,11 @@ enum ProcEventCode { Evlocallabtloww = 900, Evlocallabthigw = 901, EvlocallabwavCurveedg = 902, + EvlocallablocaledgMethod = 903, + Evlocallabwavedg = 904, + Evlocallabedgw = 905, + Evlocallabbasew = 906, + EvlocallablocalneiMethod = 907, NUMOFEVENTS }; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index b6d8ea12d..4de477bdb 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2748,16 +2748,21 @@ LocallabParams::LocallabSpot::LocallabSpot() : gradw(90.0), tloww(20.0), thigw(0.0), + edgw(60.0), + basew(10.0), sensilc(30), fftwlc(false), blurlc(true), wavblur(false), + wavedg(false), wavcont(false), wavcomp(false), wavgradl(false), wavcompre(false), origlc(false), localcontMethod("loc"), + localedgMethod("thr"), + localneiMethod("low"), locwavcurve{(double)FCT_MinMaxCPoints, 0.0, 0.5, 0.35, 0.35, 1., 0.5, 0.35, 0.35}, csthreshold(0, 0, 6, 6, false), loclevwavcurve{(double)FCT_MinMaxCPoints, 0.0, 0.0, 0.0, 0.35, 0.5, 0., 0.35, 0.35, 1.0, 0.0, 0.35, 0.35}, @@ -3189,16 +3194,21 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const && gradw == other.gradw && tloww == other.tloww && thigw == other.thigw + && edgw == other.edgw + && basew == other.basew && sensilc == other.sensilc && fftwlc == other.fftwlc && blurlc == other.blurlc && wavblur == other.wavblur + && wavedg == other.wavedg && wavcont == other.wavcont && wavcomp == other.wavcomp && wavgradl == other.wavgradl && wavcompre == other.wavcompre && origlc == other.origlc && localcontMethod == other.localcontMethod + && localedgMethod == other.localedgMethod + && localneiMethod == other.localneiMethod && locwavcurve == other.locwavcurve && csthreshold == other.csthreshold && loclevwavcurve == other.loclevwavcurve @@ -4591,22 +4601,27 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->locallab.spots.at(i).clarisoft, "Locallab", "Clarisoft_" + std::to_string(i), spot.clarisoft, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).strwav, "Locallab", "Strwav_" + std::to_string(i), spot.strwav, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).angwav, "Locallab", "Angwav_" + std::to_string(i), spot.angwav, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).strwav, "Locallab", "Strengthw_" + std::to_string(i), spot.strengthw, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).strwav, "Locallab", "Radiusw_" + std::to_string(i), spot.radiusw, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).strwav, "Locallab", "Detailw_" + std::to_string(i), spot.detailw, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).strwav, "Locallab", "Gradw_" + std::to_string(i), spot.gradw, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).strwav, "Locallab", "Tloww_" + std::to_string(i), spot.tloww, keyFile); - saveToKeyfile(!pedited || pedited->locallab.spots.at(i).strwav, "Locallab", "Thigw_" + std::to_string(i), spot.thigw, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).strengthw, "Locallab", "Strengthw_" + std::to_string(i), spot.strengthw, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).radiusw, "Locallab", "Radiusw_" + std::to_string(i), spot.radiusw, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).detailw, "Locallab", "Detailw_" + std::to_string(i), spot.detailw, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).gradw, "Locallab", "Gradw_" + std::to_string(i), spot.gradw, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).tloww, "Locallab", "Tloww_" + std::to_string(i), spot.tloww, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).thigw, "Locallab", "Thigw_" + std::to_string(i), spot.thigw, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).edgw, "Locallab", "Edgw_" + std::to_string(i), spot.edgw, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).basew, "Locallab", "Basew_" + std::to_string(i), spot.basew, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sensilc, "Locallab", "Sensilc_" + std::to_string(i), spot.sensilc, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).fftwlc, "Locallab", "Fftwlc_" + std::to_string(i), spot.fftwlc, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blurlc, "Locallab", "Blurlc_" + std::to_string(i), spot.blurlc, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).wavblur, "Locallab", "Wavblur_" + std::to_string(i), spot.wavblur, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).wavedg, "Locallab", "Wavedg_" + std::to_string(i), spot.wavedg, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).wavcont, "Locallab", "Wavcont_" + std::to_string(i), spot.wavcont, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).wavcomp, "Locallab", "Wavcomp_" + std::to_string(i), spot.wavcomp, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).wavgradl, "Locallab", "Wavgradl_" + std::to_string(i), spot.wavgradl, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).wavcompre, "Locallab", "Wavcompre_" + std::to_string(i), spot.wavcompre, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).origlc, "Locallab", "Origlc_" + std::to_string(i), spot.origlc, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).localcontMethod, "Locallab", "localcontMethod_" + std::to_string(i), spot.localcontMethod, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).localedgMethod, "Locallab", "localedgMethod_" + std::to_string(i), spot.localedgMethod, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).localneiMethod, "Locallab", "localneiMethod_" + std::to_string(i), spot.localneiMethod, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).locwavcurve, "Locallab", "LocwavCurve_" + std::to_string(i), spot.locwavcurve, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).loclevwavcurve, "Locallab", "LoclevwavCurve_" + std::to_string(i), spot.loclevwavcurve, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).locconwavcurve, "Locallab", "LocconwavCurve_" + std::to_string(i), spot.locconwavcurve, keyFile); @@ -6159,17 +6174,22 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Locallab", "Detailw_" + std::to_string(i), pedited, spot.detailw, spotEdited.detailw); assignFromKeyfile(keyFile, "Locallab", "Tloww_" + std::to_string(i), pedited, spot.tloww, spotEdited.tloww); assignFromKeyfile(keyFile, "Locallab", "Thigw_" + std::to_string(i), pedited, spot.thigw, spotEdited.thigw); + assignFromKeyfile(keyFile, "Locallab", "Edgw_" + std::to_string(i), pedited, spot.edgw, spotEdited.edgw); + assignFromKeyfile(keyFile, "Locallab", "Basew_" + std::to_string(i), pedited, spot.basew, spotEdited.basew); assignFromKeyfile(keyFile, "Locallab", "Gradw_" + std::to_string(i), pedited, spot.gradw, spotEdited.gradw); assignFromKeyfile(keyFile, "Locallab", "Sensilc_" + std::to_string(i), pedited, spot.sensilc, spotEdited.sensilc); assignFromKeyfile(keyFile, "Locallab", "Fftwlc_" + std::to_string(i), pedited, spot.fftwlc, spotEdited.fftwlc); assignFromKeyfile(keyFile, "Locallab", "Blurlc_" + std::to_string(i), pedited, spot.blurlc, spotEdited.blurlc); assignFromKeyfile(keyFile, "Locallab", "Wavblur_" + std::to_string(i), pedited, spot.wavblur, spotEdited.wavblur); + assignFromKeyfile(keyFile, "Locallab", "Wavedg_" + std::to_string(i), pedited, spot.wavedg, spotEdited.wavedg); assignFromKeyfile(keyFile, "Locallab", "Wavcont_" + std::to_string(i), pedited, spot.wavcont, spotEdited.wavcont); assignFromKeyfile(keyFile, "Locallab", "Wavcomp_" + std::to_string(i), pedited, spot.wavcomp, spotEdited.wavcomp); assignFromKeyfile(keyFile, "Locallab", "Wavgradl_" + std::to_string(i), pedited, spot.wavgradl, spotEdited.wavgradl); assignFromKeyfile(keyFile, "Locallab", "Wavcompre_" + std::to_string(i), pedited, spot.wavcompre, spotEdited.wavcompre); assignFromKeyfile(keyFile, "Locallab", "Origlc_" + std::to_string(i), pedited, spot.origlc, spotEdited.origlc); assignFromKeyfile(keyFile, "Locallab", "localcontMethod_" + std::to_string(i), pedited, spot.localcontMethod, spotEdited.localcontMethod); + assignFromKeyfile(keyFile, "Locallab", "localedgMethod_" + std::to_string(i), pedited, spot.localedgMethod, spotEdited.localedgMethod); + assignFromKeyfile(keyFile, "Locallab", "localneiMethod_" + std::to_string(i), pedited, spot.localneiMethod, spotEdited.localneiMethod); assignFromKeyfile(keyFile, "Locallab", "LocwavCurve_" + std::to_string(i), pedited, spot.locwavcurve, spotEdited.locwavcurve); assignFromKeyfile(keyFile, "Locallab", "LoclevwavCurve_" + std::to_string(i), pedited, spot.loclevwavcurve, spotEdited.loclevwavcurve); assignFromKeyfile(keyFile, "Locallab", "LocconwavCurve_" + std::to_string(i), pedited, spot.locconwavcurve, spotEdited.locconwavcurve); diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 0a2ce8451..56ff61a1c 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1291,16 +1291,21 @@ struct LocallabParams { double gradw; double tloww; double thigw; + double edgw; + double basew; int sensilc; bool fftwlc; bool blurlc; bool wavblur; + bool wavedg; bool wavcont; bool wavcomp; bool wavgradl; bool wavcompre; bool origlc; Glib::ustring localcontMethod; + Glib::ustring localedgMethod; + Glib::ustring localneiMethod; std::vector locwavcurve; Threshold csthreshold; std::vector loclevwavcurve; diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index 281f729e4..45a304999 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -932,7 +932,13 @@ int refreshmap[rtengine::NUMOFEVENTS] = { LUMINANCECURVE, //Evlocallabgradw LUMINANCECURVE, //Evlocallabtloww LUMINANCECURVE, //Evlocallabthigw - LUMINANCECURVE //EvlocallabwavCurveedg + LUMINANCECURVE, //EvlocallabwavCurveedg + LUMINANCECURVE, //EvlocallablocaledgMethod + LUMINANCECURVE, //Evlocallabwavedg + LUMINANCECURVE, //Evlocallabedgw + LUMINANCECURVE, //Evlocallabbasew + LUMINANCECURVE, //EvlocallablocalneiMethod + }; namespace rtengine diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 5314c9a71..471ae3bdb 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -1123,6 +1123,7 @@ private: LocwavCurve locconwavCurve; LocwavCurve loccompwavCurve; LocwavCurve loccomprewavCurve; + LocwavCurve locedgwavCurve; LocwavCurve locwavCurveden; LUTf lllocalcurve(65536, 0); LUTf lclocalcurve(65536, 0); @@ -1208,6 +1209,7 @@ private: bool locconwavutili = false; bool loccompwavutili = false; bool loccomprewavutili = false; + bool locedgwavutili = false; bool lmasutiliblwav = false; bool lmasutilicolwav = false; locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve); @@ -1248,6 +1250,7 @@ private: locconwavCurve.Set(params.locallab.spots.at(sp).locconwavcurve, locconwavutili); loccompwavCurve.Set(params.locallab.spots.at(sp).loccompwavcurve, loccompwavutili); loccomprewavCurve.Set(params.locallab.spots.at(sp).loccomprewavcurve, loccomprewavutili); + locedgwavCurve.Set(params.locallab.spots.at(sp).locedgwavcurve, locedgwavutili); CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, 1); CurveFactory::curveLocal(localclutili, params.locallab.spots.at(sp).clcurve, cllocalcurve, 1); CurveFactory::curveLocal(locallcutili, params.locallab.spots.at(sp).lccurve, lclocalcurve, 1); @@ -1327,6 +1330,7 @@ private: loccompwavCurve, loccompwavutili, loccomprewavCurve, loccomprewavutili, locwavCurveden, locwavdenutili, + locedgwavCurve, locedgwavutili, 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, 0, 0, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index 02cd993c1..91beb460b 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -597,12 +597,14 @@ radmasklc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_RADMASKCOL"), -10.0, 1000.0, 0 chromasklc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMASKCOL"), -100.0, 100.0, 0.1, 0.))), strwav(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADSTR"), -4.0, 4.0, 0.05, 0.))), angwav(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADANG"), -180, 180, 0.1, 0.))), -strengthw(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRW"), 0., 100.0, 0.5, 0.))), -radiusw(Gtk::manage(new Adjuster(M("TP_LOCALLAB_RADIUSW"), 5., 100.0, 0.5, 15.))), -detailw(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DETAILW"), -50., 100.0, 1., 10.))), -gradw(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADW"), 0., 100.0, 0.5, 90.))), -tloww(Gtk::manage(new Adjuster(M("TP_LOCALLAB_TLOWW"), 0., 100.0, 1., 20.))), -thigw(Gtk::manage(new Adjuster(M("TP_LOCALLAB_TLOWW"), -10., 100.0, 1., 0.))), +strengthw(Gtk::manage(new Adjuster(M("TP_WAVELET_EDVAL"), 0., 100.0, 0.5, 0.))), +radiusw(Gtk::manage(new Adjuster(M("TP_WAVELET_EDRAD"), 5., 100.0, 0.5, 15.))), +detailw(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGTHRESH"), -50., 100.0, 1., 10.))), +gradw(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGEDETECT"), 0., 100.0, 0.5, 90.))), +tloww(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGEDETECTTHR"), 0., 100.0, 1., 20.))), +thigw(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGEDETECTTHR2"), -10., 100.0, 1., 0.))), +edgw(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGESENSI"), 0., 100.0, 1., 60.))), +basew(Gtk::manage(new Adjuster(M("TP_WAVELET_EDGEAMPLI"), 0., 100.0, 1., 10.))), multiplier( [this]() -> std::array { @@ -712,6 +714,7 @@ wavcont(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_CONTFRA")))), wavcomp(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_COMPFRA")))), wavcompre(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_COMPREFRA")))), wavgradl(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_GRALWFRA")))), +wavedg(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_EDGFRA")))), //CBDL enacbMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))), //encoding log @@ -759,6 +762,8 @@ showmasksharMethod(Gtk::manage(new MyComboBoxText())), //Local contrast localcontMethod(Gtk::manage(new MyComboBoxText())), +localedgMethod(Gtk::manage(new MyComboBoxText())), +localneiMethod(Gtk::manage(new MyComboBoxText())), csThreshold(Gtk::manage(new ThresholdAdjuster(M("TP_LOCALLAB_CSTHRESHOLD"), 0, 9, 0, 0, 6, 6, 0, false))), showmasklcMethod(Gtk::manage(new MyComboBoxText())), //CBDL @@ -810,13 +815,15 @@ gradlogFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRADLOGFRA")))), retiBox(Gtk::manage(new ToolParamBlock())), maskretiBox(Gtk::manage(new ToolParamBlock())), mask7(Gtk::manage(new ToolParamBlock())), +edgsBox(Gtk::manage(new ToolParamBlock())), + labgrid(Gtk::manage(new LabGrid(EvLocallabLabGridValue, M("TP_LOCALLAB_LABGRID_VALUES")))), labgridmerg(Gtk::manage(new LabGrid(EvLocallabLabGridmergValue, M("TP_LOCALLAB_LABGRID_VALUES"), false))), mMLabels(Gtk::manage(new Gtk::Label("---"))), transLabels(Gtk::manage(new Gtk::Label("---"))), transLabels2(Gtk::manage(new Gtk::Label("---"))), - +labmNP(Gtk::manage(new Gtk::Label(M("TP_WAVELET_NPTYPE") + ":"))), // Others ctboxsoftmethod(Gtk::manage(new Gtk::HBox())), ctboxexpmethod(Gtk::manage(new Gtk::HBox())), @@ -2901,6 +2908,7 @@ pe(nullptr) wavcompConn = wavcomp->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::wavcompChanged)); wavcompreConn = wavcompre->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::wavcompreChanged)); wavgradlConn = wavgradl->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::wavgradlChanged)); + wavedgConn = wavedg->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::wavedgChanged)); origlcConn = origlc->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::origlcChanged)); csThreshold->setAdjusterListener(this); @@ -2982,6 +2990,28 @@ pe(nullptr) localcontMethodConn = localcontMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::localcontMethodChanged)); + Gtk::Label* const labmedgr = Gtk::manage(new Gtk::Label(M("TP_WAVELET_MEDGREINF") + ":")); + Gtk::HBox* const edbox = Gtk::manage(new Gtk::HBox()); + edbox->pack_start (*labmedgr, Gtk::PACK_SHRINK, 1); + + localedgMethod->append(M("TP_WAVELET_RE1")); + localedgMethod->append(M("TP_WAVELET_RE2")); + localedgMethod->append(M("TP_WAVELET_RE3")); + localedgMethod->set_active(0); + localedgMethodConn = localedgMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::localedgMethodChanged)); + edbox->pack_start(*localedgMethod); + + Gtk::HBox* const ctboxNP = Gtk::manage(new Gtk::HBox()); + ctboxNP->pack_start (*labmNP, Gtk::PACK_SHRINK, 1); + + localneiMethod->append(M("TP_WAVELET_NPNONE")); + localneiMethod->append(M("TP_WAVELET_NPLOW")); + localneiMethod->append(M("TP_WAVELET_NPHIGH")); + localneiMethod->set_active(0); + localneiMethodConn = localneiMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::localneiMethodChanged)); + ctboxNP->pack_start(*localneiMethod); + + lcradius->setAdjusterListener(this); lcamount->setAdjusterListener(this); @@ -3026,6 +3056,8 @@ pe(nullptr) gradw->setAdjusterListener(this); tloww->setAdjusterListener(this); thigw->setAdjusterListener(this); + edgw->setAdjusterListener(this); + basew->setAdjusterListener(this); LocalcurveEditorwavedg->setCurveListener(this); @@ -3062,14 +3094,26 @@ pe(nullptr) gradwavFrame->add(*gradwavBox); edgFrame->set_label_align(0.025, 0.5); - ToolParamBlock* const edgsBox = Gtk::manage(new ToolParamBlock()); + wavedg->set_active(false); + edgFrame->set_label_widget(*wavedg); + + Gtk::HSeparator* const separatoredg = Gtk::manage(new Gtk::HSeparator()); + + // ToolParamBlock* const edgsBox = Gtk::manage(new ToolParamBlock()); edgsBox->pack_start(*strengthw); edgsBox->pack_start(*radiusw); edgsBox->pack_start(*detailw); +// edgsBox->pack_start(*localedgMethod); + edgsBox->pack_start(*edbox); edgsBox->pack_start(*LocalcurveEditorwavedg, Gtk::PACK_SHRINK, 4); edgsBox->pack_start(*gradw); edgsBox->pack_start(*tloww); edgsBox->pack_start(*thigw); + edgsBox->pack_start(*separatoredg); + + edgsBox->pack_start(*edgw); + edgsBox->pack_start(*basew); + edgsBox->pack_start(*ctboxNP); edgFrame->add(*edgsBox); Gtk::HSeparator* const separatorblu = Gtk::manage(new Gtk::HSeparator()); @@ -5483,6 +5527,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pp->locallab.spots.at(pp->locallab.selspot).fftwlc = fftwlc->get_active(); pp->locallab.spots.at(pp->locallab.selspot).blurlc = blurlc->get_active(); pp->locallab.spots.at(pp->locallab.selspot).wavblur = wavblur->get_active(); + pp->locallab.spots.at(pp->locallab.selspot).wavedg = wavedg->get_active(); pp->locallab.spots.at(pp->locallab.selspot).wavcont = wavcont->get_active(); pp->locallab.spots.at(pp->locallab.selspot).wavcomp = wavcomp->get_active(); pp->locallab.spots.at(pp->locallab.selspot).wavcompre = wavcompre->get_active(); @@ -5502,6 +5547,8 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pp->locallab.spots.at(pp->locallab.selspot).gradw = gradw->getValue(); pp->locallab.spots.at(pp->locallab.selspot).tloww = tloww->getValue(); pp->locallab.spots.at(pp->locallab.selspot).thigw = thigw->getValue(); + pp->locallab.spots.at(pp->locallab.selspot).edgw = edgw->getValue(); + pp->locallab.spots.at(pp->locallab.selspot).basew = basew->getValue(); pp->locallab.spots.at(pp->locallab.selspot).locedgwavcurve = wavshapeedg->getCurve(); if (localcontMethod->get_active_row_number() == 0) { @@ -5510,6 +5557,22 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pp->locallab.spots.at(pp->locallab.selspot).localcontMethod = "wav"; } + if (localedgMethod->get_active_row_number() == 0) { + pp->locallab.spots.at(pp->locallab.selspot).localedgMethod = "fir"; + } else if (localedgMethod->get_active_row_number() == 1) { + pp->locallab.spots.at(pp->locallab.selspot).localedgMethod = "sec"; + } else if (localedgMethod->get_active_row_number() == 2) { + pp->locallab.spots.at(pp->locallab.selspot).localedgMethod = "thr"; + } + + if (localneiMethod->get_active_row_number() == 0) { + pp->locallab.spots.at(pp->locallab.selspot).localneiMethod = "none"; + } else if (localneiMethod->get_active_row_number() == 1) { + pp->locallab.spots.at(pp->locallab.selspot).localneiMethod = "low"; + } else if (localneiMethod->get_active_row_number() == 2) { + pp->locallab.spots.at(pp->locallab.selspot).localneiMethod = "high"; + } + pp->locallab.spots.at(pp->locallab.selspot).LLmasklccurve = LLmasklcshape->getCurve(); pp->locallab.spots.at(pp->locallab.selspot).CCmasklccurve = CCmasklcshape->getCurve(); pp->locallab.spots.at(pp->locallab.selspot).HHmasklccurve = HHmasklcshape->getCurve(); @@ -5916,6 +5979,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pe->locallab.spots.at(pp->locallab.selspot).fftwlc = pe->locallab.spots.at(pp->locallab.selspot).fftwlc || !fftwlc->get_inconsistent(); pe->locallab.spots.at(pp->locallab.selspot).blurlc = pe->locallab.spots.at(pp->locallab.selspot).blurlc || !blurlc->get_inconsistent(); pe->locallab.spots.at(pp->locallab.selspot).wavblur = pe->locallab.spots.at(pp->locallab.selspot).wavblur || !wavblur->get_inconsistent(); + pe->locallab.spots.at(pp->locallab.selspot).wavedg = pe->locallab.spots.at(pp->locallab.selspot).wavedg || !wavedg->get_inconsistent(); pe->locallab.spots.at(pp->locallab.selspot).wavcont = pe->locallab.spots.at(pp->locallab.selspot).wavcont || !wavcont->get_inconsistent(); pe->locallab.spots.at(pp->locallab.selspot).wavcomp = pe->locallab.spots.at(pp->locallab.selspot).wavcomp || !wavcomp->get_inconsistent(); pe->locallab.spots.at(pp->locallab.selspot).wavgradl = pe->locallab.spots.at(pp->locallab.selspot).wavgradl || !wavgradl->get_inconsistent(); @@ -5934,7 +5998,11 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pe->locallab.spots.at(pp->locallab.selspot).gradw = pe->locallab.spots.at(pp->locallab.selspot).gradw || gradw->getEditedState(); pe->locallab.spots.at(pp->locallab.selspot).tloww = pe->locallab.spots.at(pp->locallab.selspot).tloww || tloww->getEditedState(); pe->locallab.spots.at(pp->locallab.selspot).thigw = pe->locallab.spots.at(pp->locallab.selspot).thigw || thigw->getEditedState(); + pe->locallab.spots.at(pp->locallab.selspot).edgw = pe->locallab.spots.at(pp->locallab.selspot).edgw || edgw->getEditedState(); + pe->locallab.spots.at(pp->locallab.selspot).basew = pe->locallab.spots.at(pp->locallab.selspot).basew || basew->getEditedState(); pe->locallab.spots.at(pp->locallab.selspot).locedgwavcurve = pe->locallab.spots.at(pp->locallab.selspot).locedgwavcurve || !wavshapeedg->isUnChanged(); + pe->locallab.spots.at(pp->locallab.selspot).localedgMethod = pe->locallab.spots.at(pp->locallab.selspot).localedgMethod || localedgMethod->get_active_text() != M("GENERAL_UNCHANGED"); + pe->locallab.spots.at(pp->locallab.selspot).localneiMethod = pe->locallab.spots.at(pp->locallab.selspot).localneiMethod || localneiMethod->get_active_text() != M("GENERAL_UNCHANGED"); pe->locallab.spots.at(pp->locallab.selspot).CCmasklccurve = pe->locallab.spots.at(pp->locallab.selspot).CCmasklccurve || !CCmasklcshape->isUnChanged(); pe->locallab.spots.at(pp->locallab.selspot).LLmasklccurve = pe->locallab.spots.at(pp->locallab.selspot).LLmasklccurve || !LLmasklcshape->isUnChanged(); @@ -6346,6 +6414,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pedited->locallab.spots.at(pp->locallab.selspot).fftwlc = pedited->locallab.spots.at(pp->locallab.selspot).fftwlc || !fftwlc->get_inconsistent(); pedited->locallab.spots.at(pp->locallab.selspot).blurlc = pedited->locallab.spots.at(pp->locallab.selspot).blurlc || !blurlc->get_inconsistent(); pedited->locallab.spots.at(pp->locallab.selspot).wavblur = pedited->locallab.spots.at(pp->locallab.selspot).wavblur || !wavblur->get_inconsistent(); + pedited->locallab.spots.at(pp->locallab.selspot).wavedg = pedited->locallab.spots.at(pp->locallab.selspot).wavedg || !wavedg->get_inconsistent(); pedited->locallab.spots.at(pp->locallab.selspot).wavcont = pedited->locallab.spots.at(pp->locallab.selspot).wavcont || !wavcont->get_inconsistent(); pedited->locallab.spots.at(pp->locallab.selspot).wavcomp = pedited->locallab.spots.at(pp->locallab.selspot).wavcomp || !wavcomp->get_inconsistent(); pedited->locallab.spots.at(pp->locallab.selspot).wavgradl = pedited->locallab.spots.at(pp->locallab.selspot).wavgradl || !wavgradl->get_inconsistent(); @@ -6363,6 +6432,8 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pedited->locallab.spots.at(pp->locallab.selspot).gradw = pedited->locallab.spots.at(pp->locallab.selspot).gradw || gradw->getEditedState(); pedited->locallab.spots.at(pp->locallab.selspot).tloww = pedited->locallab.spots.at(pp->locallab.selspot).tloww || tloww->getEditedState(); pedited->locallab.spots.at(pp->locallab.selspot).thigw = pedited->locallab.spots.at(pp->locallab.selspot).thigw || thigw->getEditedState(); + pedited->locallab.spots.at(pp->locallab.selspot).edgw = pedited->locallab.spots.at(pp->locallab.selspot).edgw || edgw->getEditedState(); + pedited->locallab.spots.at(pp->locallab.selspot).basew = pedited->locallab.spots.at(pp->locallab.selspot).basew || basew->getEditedState(); pedited->locallab.spots.at(pp->locallab.selspot).locedgwavcurve = pedited->locallab.spots.at(pp->locallab.selspot).locedgwavcurve || !wavshapeedg->isUnChanged(); pedited->locallab.spots.at(pp->locallab.selspot).CCmasklccurve = pedited->locallab.spots.at(pp->locallab.selspot).CCmasklccurve || !CCmasklcshape->isUnChanged(); @@ -6928,8 +6999,23 @@ void Locallab::curveChanged(CurveEditor* ce) } +void Locallab::localedgMethodChanged() +{ + if (getEnabled() && expcontrast->getEnabled()) { + if (listener) { + listener->panelChanged(EvlocallablocaledgMethod, localedgMethod->get_active_text()); + } + } +} - +void Locallab::localneiMethodChanged() +{ + if (getEnabled() && expcontrast->getEnabled()) { + if (listener) { + listener->panelChanged(EvlocallablocalneiMethod, localneiMethod->get_active_text()); + } + } +} void Locallab::localcontMethodChanged() { @@ -6966,6 +7052,7 @@ void Locallab::localcontMethodChanged() fftwlc->show(); blurlc->show(); wavblur->show(); + wavedg->show(); origlc->hide(); strwav->hide(); angwav->hide(); @@ -6975,6 +7062,8 @@ void Locallab::localcontMethodChanged() gradw->hide(); tloww->hide(); thigw->hide(); + edgw->hide(); + basew->hide(); } else if (localcontMethod->get_active_row_number() == 1) { levelwav->show(); residcont->show(); @@ -7008,6 +7097,7 @@ void Locallab::localcontMethodChanged() fftwlc->hide(); blurlc->show(); wavblur->show(); + wavedg->show(); origlc->show(); strwav->show(); angwav->show(); @@ -7017,6 +7107,8 @@ void Locallab::localcontMethodChanged() gradw->show(); tloww->show(); thigw->show(); + edgw->show(); + basew->show(); } // printf("localcontMethodChanged\n"); @@ -8681,6 +8773,35 @@ void Locallab::wavblurChanged() } } +void Locallab::wavedgChanged() +{ + + if (wavedg->get_active()){ + edgsBox->show(); + } else { + edgsBox->hide(); + } + + if (multiImage) { + if (wavedg->get_inconsistent()) { + wavedg->set_inconsistent(false); + wavedgConn.block(true); + wavedg->set_active(false); + wavedgConn.block(false); + } + } + + if (getEnabled() && expcontrast->getEnabled()) { + if (listener) { + if (wavedg->get_active()) { + listener->panelChanged(Evlocallabwavedg, M("GENERAL_ENABLED")); + } else { + listener->panelChanged(Evlocallabwavedg, M("GENERAL_DISABLED")); + } + } + } +} + void Locallab::wavcontChanged() { @@ -9302,6 +9423,8 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c gradw->setDefault(defSpot->gradw); tloww->setDefault(defSpot->tloww); thigw->setDefault(defSpot->thigw); + edgw->setDefault(defSpot->edgw); + basew->setDefault(defSpot->basew); // Contrast by detail levels for (int i = 0; i < 6; i++) { @@ -9556,6 +9679,8 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c gradw->setDefaultEditedState(Irrelevant); tloww->setDefaultEditedState(Irrelevant); thigw->setDefaultEditedState(Irrelevant); + edgw->setDefaultEditedState(Irrelevant); + basew->setDefaultEditedState(Irrelevant); // Contrast by detail levels for (int i = 0; i < 6; i++) { @@ -9815,6 +9940,8 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c gradw->setDefaultEditedState(defSpotState->gradw ? Edited : UnEdited); tloww->setDefaultEditedState(defSpotState->tloww ? Edited : UnEdited); thigw->setDefaultEditedState(defSpotState->thigw ? Edited : UnEdited); + edgw->setDefaultEditedState(defSpotState->edgw ? Edited : UnEdited); + basew->setDefaultEditedState(defSpotState->basew ? Edited : UnEdited); // Contrast by detail levels for (int i = 0; i < 6; i++) { @@ -11098,6 +11225,18 @@ void Locallab::adjusterChanged(Adjuster * a, double newval) } } + if (a == edgw) { + if (listener) { + listener->panelChanged(Evlocallabedgw, edgw->getTextValue()); + } + } + + if (a == basew) { + if (listener) { + listener->panelChanged(Evlocallabbasew, basew->getTextValue()); + } + } + if (a == sensilc) { if (listener) { listener->panelChanged(Evlocallabsensilc, sensilc->getTextValue()); @@ -11607,6 +11746,8 @@ void Locallab::setBatchMode(bool batchMode) gradw->showEditedCB(); tloww->showEditedCB(); thigw->showEditedCB(); + edgw->showEditedCB(); + basew->showEditedCB(); // Contrast by detail levels for (int i = 0; i < 6; i++) { @@ -11675,6 +11816,8 @@ void Locallab::setBatchMode(bool batchMode) //Local contrast localcontMethod->append(M("GENERAL_UNCHANGED")); + localedgMethod->append(M("GENERAL_UNCHANGED")); + localneiMethod->append(M("GENERAL_UNCHANGED")); // In batch mode, being able to change mask visibility is useless showmaskcolMethod->hide(); @@ -11901,9 +12044,12 @@ void Locallab::enableListener() // Local Contrast enablecontrastConn.block(false); localcontMethodConn.block(false); + localedgMethodConn.block(false); + localneiMethodConn.block(false); fftwlcConn.block(false); blurlcConn.block(false); wavblurConn.block(false); + wavedgConn.block(false); wavcontConn.block(false); wavcompConn.block(false); wavgradlConn.block(false); @@ -12006,9 +12152,12 @@ void Locallab::disableListener() // Local Contrast enablecontrastConn.block(true); localcontMethodConn.block(true); + localedgMethodConn.block(true); + localneiMethodConn.block(true); fftwlcConn.block(true); blurlcConn.block(true); wavblurConn.block(true); + wavedgConn.block(true); wavcontConn.block(true); wavcompConn.block(true); wavgradlConn.block(true); @@ -12694,6 +12843,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con fftwlc->set_active(pp->locallab.spots.at(index).fftwlc); blurlc->set_active(pp->locallab.spots.at(index).blurlc); wavblur->set_active(pp->locallab.spots.at(index).wavblur); + wavedg->set_active(pp->locallab.spots.at(index).wavedg); wavcont->set_active(pp->locallab.spots.at(index).wavcont); wavcomp->set_active(pp->locallab.spots.at(index).wavcomp); wavgradl->set_active(pp->locallab.spots.at(index).wavgradl); @@ -12706,6 +12856,15 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con gradw->setValue(pp->locallab.spots.at(index).gradw); tloww->setValue(pp->locallab.spots.at(index).tloww); thigw->setValue(pp->locallab.spots.at(index).thigw); + edgw->setValue(pp->locallab.spots.at(index).edgw); + basew->setValue(pp->locallab.spots.at(index).basew); + + if (wavedg->get_active()){ + edgsBox->show(); + } else { + edgsBox->hide(); + } + if (pp->locallab.spots.at(index).localcontMethod == "loc") { localcontMethod->set_active(0); @@ -12713,6 +12872,22 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con localcontMethod->set_active(1); } + if (pp->locallab.spots.at(index).localedgMethod == "fir") { + localedgMethod->set_active(0); + } else if (pp->locallab.spots.at(index).localedgMethod == "sec") { + localedgMethod->set_active(1); + } else if (pp->locallab.spots.at(index).localedgMethod == "thr") { + localedgMethod->set_active(2); + } + + if (pp->locallab.spots.at(index).localneiMethod == "none") { + localneiMethod->set_active(0); + } else if (pp->locallab.spots.at(index).localneiMethod == "low") { + localneiMethod->set_active(1); + } else if (pp->locallab.spots.at(index).localneiMethod == "high") { + localneiMethod->set_active(2); + } + if (complexsoft == 2) { localcontMethod->set_active(1); // claricres->setValue(0); @@ -13231,6 +13406,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con fftwlc->set_inconsistent(multiImage && !spotState->fftwlc); blurlc->set_inconsistent(multiImage && !spotState->blurlc); wavblur->set_inconsistent(multiImage && !spotState->wavblur); + wavedg->set_inconsistent(multiImage && !spotState->wavedg); wavcont->set_inconsistent(multiImage && !spotState->wavcont); wavcomp->set_inconsistent(multiImage && !spotState->wavcomp); wavgradl->set_inconsistent(multiImage && !spotState->wavgradl); @@ -13248,6 +13424,8 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con gradw->setEditedState(spotState->gradw ? Edited : UnEdited); tloww->setEditedState(spotState->tloww ? Edited : UnEdited); thigw->setEditedState(spotState->thigw ? Edited : UnEdited); + edgw->setEditedState(spotState->edgw ? Edited : UnEdited); + basew->setEditedState(spotState->basew ? Edited : UnEdited); wavshapeedg->setUnChanged(!spotState->locedgwavcurve); LLmasklcshape->setUnChanged(!spotState->LLmasklccurve); @@ -13259,9 +13437,15 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con chromasklc->setEditedState(spotState->chromasklc ? Edited : UnEdited); Lmasklcshape->setUnChanged(!spotState->Lmasklccurve); - if (!spotState->retinexMethod) { + if (!spotState->localcontMethod) { localcontMethod->set_active_text(M("GENERAL_UNCHANGED")); } + if (!spotState->localedgMethod) { + localedgMethod->set_active_text(M("GENERAL_UNCHANGED")); + } + if (!spotState->localneiMethod) { + localneiMethod->set_active_text(M("GENERAL_UNCHANGED")); + } // Contrast by detail levels expcbdl->set_inconsistent(!spotState->expcbdl); @@ -13789,6 +13973,7 @@ void Locallab::updateSpecificGUIState() fftwlc->show(); blurlc->show(); wavblur->show(); + wavedg->show(); origlc->hide(); strengthw->hide(); radiusw->hide(); @@ -13796,6 +13981,8 @@ void Locallab::updateSpecificGUIState() gradw->hide(); tloww->hide(); thigw->hide(); + edgw->hide(); + basew->hide(); } else if (localcontMethod->get_active_row_number() == 1) { levelwav->show(); residcont->show(); @@ -13831,6 +14018,7 @@ void Locallab::updateSpecificGUIState() fftwlc->hide(); blurlc->show(); wavblur->show(); + wavedg->show(); origlc->show(); strengthw->show(); radiusw->show(); @@ -13838,6 +14026,8 @@ void Locallab::updateSpecificGUIState() gradw->show(); tloww->show(); thigw->show(); + edgw->show(); + basew->show(); } // Update Sharpening GUI according to inverssha button state (to be compliant with inversshaChanged function) diff --git a/rtgui/locallab.h b/rtgui/locallab.h index 45c82fa48..2a82ad353 100644 --- a/rtgui/locallab.h +++ b/rtgui/locallab.h @@ -394,6 +394,8 @@ private: Adjuster* const gradw; Adjuster* const tloww; Adjuster* const thigw; + Adjuster* const edgw; + Adjuster* const basew; // Contrast by detail levels @@ -519,6 +521,8 @@ private: sigc::connection wavcompreConn; Gtk::CheckButton* const wavgradl; sigc::connection wavgradlConn; + Gtk::CheckButton* const wavedg; + sigc::connection wavedgConn; //CBDL Gtk::CheckButton* const enacbMask; @@ -598,6 +602,10 @@ private: //local contrast MyComboBoxText* const localcontMethod; sigc::connection localcontMethodConn; + MyComboBoxText* const localedgMethod; + sigc::connection localedgMethodConn; + MyComboBoxText* const localneiMethod; + sigc::connection localneiMethodConn; ThresholdAdjuster* const csThreshold; MyComboBoxText* const showmasklcMethod; sigc::connection showmasklcMethodConn; @@ -652,11 +660,13 @@ private: ToolParamBlock* const retiBox; ToolParamBlock* const maskretiBox; ToolParamBlock* const mask7; + ToolParamBlock* const edgsBox; LabGrid* const labgrid; LabGrid* const labgridmerg; Gtk::Label* const mMLabels; Gtk::Label* const transLabels; Gtk::Label* const transLabels2; + Gtk::Label* const labmNP; // Others Gtk::HBox* const ctboxsoftmethod; Gtk::HBox* const ctboxexpmethod; @@ -741,6 +751,7 @@ private: void wavcompChanged(); void wavcompreChanged(); void wavgradlChanged(); + void wavedgChanged(); //CBDL void enacbMaskChanged(); // ComboBox event functions @@ -782,6 +793,8 @@ private: //Local contrast void localcontMethodChanged(); + void localedgMethodChanged(); + void localneiMethodChanged(); void showmasklcMethodChanged(); //CBDL void showmaskcbMethodChanged(); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index cdfab9a1e..6b24b9e18 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -1285,17 +1285,22 @@ void ParamsEdited::initFrom(const std::vector& locallab.spots.at(j).gradw = locallab.spots.at(j).gradw && pSpot.gradw == otherSpot.gradw; locallab.spots.at(j).tloww = locallab.spots.at(j).tloww && pSpot.tloww == otherSpot.tloww; locallab.spots.at(j).thigw = locallab.spots.at(j).thigw && pSpot.thigw == otherSpot.thigw; + locallab.spots.at(j).edgw = locallab.spots.at(j).edgw && pSpot.edgw == otherSpot.edgw; + locallab.spots.at(j).basew = locallab.spots.at(j).basew && pSpot.basew == otherSpot.basew; locallab.spots.at(j).locedgwavcurve = locallab.spots.at(j).locedgwavcurve && pSpot.locedgwavcurve == otherSpot.locedgwavcurve; locallab.spots.at(j).sensilc = locallab.spots.at(j).sensilc && pSpot.sensilc == otherSpot.sensilc; locallab.spots.at(j).fftwlc = locallab.spots.at(j).fftwlc && pSpot.fftwlc == otherSpot.fftwlc; locallab.spots.at(j).blurlc = locallab.spots.at(j).blurlc && pSpot.blurlc == otherSpot.blurlc; locallab.spots.at(j).wavblur = locallab.spots.at(j).wavblur && pSpot.wavblur == otherSpot.wavblur; + locallab.spots.at(j).wavedg = locallab.spots.at(j).wavedg && pSpot.wavedg == otherSpot.wavedg; locallab.spots.at(j).wavcont = locallab.spots.at(j).wavcont && pSpot.wavcont == otherSpot.wavcont; locallab.spots.at(j).wavcomp = locallab.spots.at(j).wavcomp && pSpot.wavcomp == otherSpot.wavcomp; locallab.spots.at(j).wavgradl = locallab.spots.at(j).wavgradl && pSpot.wavgradl == otherSpot.wavgradl; locallab.spots.at(j).wavcompre = locallab.spots.at(j).wavcompre && pSpot.wavcompre == otherSpot.wavcompre; locallab.spots.at(j).origlc = locallab.spots.at(j).origlc && pSpot.origlc == otherSpot.origlc; locallab.spots.at(j).localcontMethod = locallab.spots.at(j).localcontMethod && pSpot.localcontMethod == otherSpot.localcontMethod; + locallab.spots.at(j).localedgMethod = locallab.spots.at(j).localedgMethod && pSpot.localedgMethod == otherSpot.localedgMethod; + locallab.spots.at(j).localneiMethod = locallab.spots.at(j).localneiMethod && pSpot.localneiMethod == otherSpot.localneiMethod; locallab.spots.at(j).locwavcurve = locallab.spots.at(j).locwavcurve && pSpot.locwavcurve == otherSpot.locwavcurve; locallab.spots.at(j).loclevwavcurve = locallab.spots.at(j).loclevwavcurve && pSpot.loclevwavcurve == otherSpot.loclevwavcurve; locallab.spots.at(j).locconwavcurve = locallab.spots.at(j).locconwavcurve && pSpot.locconwavcurve == otherSpot.locconwavcurve; @@ -4135,6 +4140,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.spots.at(i).thigw = mods.locallab.spots.at(i).thigw; } + if (locallab.spots.at(i).edgw) { + toEdit.locallab.spots.at(i).edgw = mods.locallab.spots.at(i).edgw; + } + + if (locallab.spots.at(i).basew) { + toEdit.locallab.spots.at(i).basew = mods.locallab.spots.at(i).basew; + } + if (locallab.spots.at(i).locedgwavcurve) { toEdit.locallab.spots.at(i).locedgwavcurve = mods.locallab.spots.at(i).locedgwavcurve; } @@ -4155,6 +4168,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.spots.at(i).wavblur = mods.locallab.spots.at(i).wavblur; } + if (locallab.spots.at(i).wavedg) { + toEdit.locallab.spots.at(i).wavedg = mods.locallab.spots.at(i).wavedg; + } + if (locallab.spots.at(i).wavcont) { toEdit.locallab.spots.at(i).wavcont = mods.locallab.spots.at(i).wavcont; } @@ -4179,6 +4196,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.spots.at(i).localcontMethod = mods.locallab.spots.at(i).localcontMethod; } + if (locallab.spots.at(i).localedgMethod) { + toEdit.locallab.spots.at(i).localedgMethod = mods.locallab.spots.at(i).localedgMethod; + } + + if (locallab.spots.at(i).localneiMethod) { + toEdit.locallab.spots.at(i).localneiMethod = mods.locallab.spots.at(i).localneiMethod; + } + if (locallab.spots.at(i).locwavcurve) { toEdit.locallab.spots.at(i).locwavcurve = mods.locallab.spots.at(i).locwavcurve; } @@ -5737,17 +5762,22 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) : detailw(v), tloww(v), thigw(v), + edgw(v), + basew(v), gradw(v), sensilc(v), fftwlc(v), blurlc(v), wavblur(v), + wavedg(v), wavcont(v), wavcomp(v), wavgradl(v), wavcompre(v), origlc(v), localcontMethod(v), + localedgMethod(v), + localneiMethod(v), locwavcurve(v), loclevwavcurve(v), locconwavcurve(v), @@ -6155,17 +6185,22 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v) detailw = v; tloww = v; thigw = v; + edgw = v; + basew = v; gradw = v; sensilc = v; fftwlc = v; blurlc = v; wavblur = v; + wavedg = v; wavcont = v; wavcomp = v; wavgradl = v; wavcompre = v; origlc = v; localcontMethod = v; + localedgMethod = v; + localneiMethod = v; locwavcurve = v; loclevwavcurve = v; locconwavcurve = v; diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 8bd01c603..915f4ae61 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -716,17 +716,22 @@ public: bool detailw; bool tloww; bool thigw; + bool edgw; + bool basew; bool gradw; bool sensilc; bool fftwlc; bool blurlc; bool wavblur; + bool wavedg; bool wavcont; bool wavcomp; bool wavgradl; bool wavcompre; bool origlc; bool localcontMethod; + bool localedgMethod; + bool localneiMethod; bool locwavcurve; bool loclevwavcurve; bool locconwavcurve;