diff --git a/rtdata/languages/default b/rtdata/languages/default index 07779e638..e2efc13a8 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1117,6 +1117,7 @@ HISTORY_MSG_878;Local - LC mask curve contrast HISTORY_MSG_879;Local - LC Chroma levels HISTORY_MSG_880;Local - LC Chroma blur levels HISTORY_MSG_881;Local - Contrast Offset Luminance +HISTORY_MSG_882;Local - Contrast Blur HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 90347ad1c..5ed40956d 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -321,7 +321,7 @@ public: const LocwavCurve & loclevwavCurve, bool & loclevwavutili, bool wavcurvelev, const LocwavCurve & locconwavCurve, bool & locconwavutili, bool wavcurvecon, const LocwavCurve & loccompwavCurve, bool & loccompwavutili, bool wavcurvecomp, - float sigm, float offs,int & maxlvl, float fatdet, float fatanch, float chromalev, float chromablu, bool blurlc); + float sigm, float offs,int & maxlvl, float fatdet, float fatanch, float chromalev, float chromablu, bool blurlc, bool blurena); void wavcont(wavelet_decomposition &wdspot, float ****templevel, int level_bl, int maxlvl, const LocwavCurve & loclevwavCurve, bool & loclevwavutili, diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index 2ffc588c7..a0fd54601 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -4079,7 +4079,7 @@ void ImProcFunctions::maskcalccol(int call, bool invmask, bool pde, int bfw, int bool wavcurvecon = false; bool loccompwavutili = false; bool wavcurvecomp = false; - wavcontrast4(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, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, 1.f, 1.f, maxlvl, 0.f, 0.f, 1.f, 1.f, false); + wavcontrast4(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, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, 1.f, 1.f, maxlvl, 0.f, 0.f, 1.f, 1.f, false, false); } @@ -7114,7 +7114,7 @@ void ImProcFunctions::wavcontrast4(float ** tmp, float ** tmpa, float ** tmpb, f const LocwavCurve & locwavCurve, bool & locwavutili, const LocwavCurve & loclevwavCurve, bool & loclevwavutili, bool wavcurvelev, const LocwavCurve & locconwavCurve, bool & locconwavutili, bool wavcurvecon, const LocwavCurve & loccompwavCurve, bool & loccompwavutili, bool wavcurvecomp, - float sigm, float offs, int & maxlvl, float fatdet, float fatanch, float chromalev, float chromablu, bool blurlc) + float sigm, float offs, int & maxlvl, float fatdet, float fatanch, float chromalev, float chromablu, bool blurlc, bool blurena) { wavelet_decomposition *wdspot = new wavelet_decomposition(tmp[0], bfw, bfh, maxlvl, 1, sk, numThreads, 6); @@ -7165,7 +7165,7 @@ void ImProcFunctions::wavcontrast4(float ** tmp, float ** tmpa, float ** tmpb, f } - if (radblur > 0.f) { + if (radblur > 0.f && blurena) { array2D bufl(W_L, H_L); #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) @@ -7279,7 +7279,7 @@ void ImProcFunctions::wavcontrast4(float ** tmp, float ** tmpa, float ** tmpb, f return; } - if (wavcurvelev && radlevblur > 0.f) { + if (wavcurvelev && radlevblur > 0.f && blurena) { wavcont(*wdspot, templevel, level_bl, maxlvl, loclevwavCurve, loclevwavutili, loccompwavCurve, loccompwavutili, radlevblur, 1, fatParams, 1.f); } @@ -9542,7 +9542,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o bool wavcurvecon = false; bool loccompwavutili = false; bool wavcurvecomp = false; - wavcontrast4(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, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, 1.f, 1.f, maxlvl, 0.f, 0.f, 1.f, 1.f, false); + wavcontrast4(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, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, dummy, loccompwavutili, wavcurvecomp, 1.f, 1.f, maxlvl, 0.f, 0.f, 1.f, 1.f, false, false); } int shado = params->locallab.spots.at(sp).shadmaskbl; @@ -11476,12 +11476,14 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o const float fatres = params->locallab.spots.at(sp).fatres; const float chrol = params->locallab.spots.at(sp).chromalev; const float chrobl = params->locallab.spots.at(sp).chromablu; + const bool blurena = params->locallab.spots.at(sp).wavblur; - wavcontrast4(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, loclevwavCurve, loclevwavutili, wavcurvelev, locconwavCurve, locconwavutili, wavcurvecon, loccompwavCurve, loccompwavutili, wavcurvecomp, sigma, offs, maxlvl, fatdet, fatanch, chrol, chrobl, blurlc); + wavcontrast4(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, loclevwavCurve, loclevwavutili, wavcurvelev, locconwavCurve, locconwavutili, wavcurvecon, loccompwavCurve, loccompwavutili, wavcurvecomp, sigma, offs, maxlvl, fatdet, fatanch, chrol, chrobl, blurlc, blurena); const float satur = params->locallab.spots.at(sp).residchro; - if (satur != 0.f || radblur > 0.f) { + + if (satur != 0.f || radblur > 0.f) {//blur residual a and satur wavelet_decomposition *wdspota = new wavelet_decomposition(tmp1->a[0], tmp1->W, tmp1->H, wavelet_level, 1, sk, numThreads, 6); @@ -11494,7 +11496,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o int W_La = wdspota->level_W(0); int H_La = wdspota->level_H(0); - if (radblur > 0.f && !blurlc) { + if (radblur > 0.f && !blurlc && blurena) { array2D bufa(W_La, H_La); #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) @@ -11548,7 +11550,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o int W_Lb = wdspotb->level_W(0); int H_Lb = wdspotb->level_H(0); - if (radblur > 0.f && !blurlc) { + if (radblur > 0.f && !blurlc && blurena) { array2D bufb(W_Lb, H_Lb); #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) diff --git a/rtengine/procevents.h b/rtengine/procevents.h index b33caca0c..19f2770a1 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -907,6 +907,7 @@ enum ProcEventCode { Evlocallabchromalev = 878, Evlocallabchromablu = 879, Evlocallaboffset = 880, + Evlocallabwavblur = 881, NUMOFEVENTS }; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index fcbeeb829..1780ccc48 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2739,6 +2739,7 @@ LocallabParams::LocallabSpot::LocallabSpot() : sensilc(19), fftwlc(false), blurlc(true), + wavblur(false), origlc(false), localcontMethod("loc"), locwavcurve{(double)FCT_MinMaxCPoints, 0.0, 0.5, 0.35, 0.35, 1., 0.5, 0.35, 0.35}, @@ -3147,6 +3148,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const && sensilc == other.sensilc && fftwlc == other.fftwlc && blurlc == other.blurlc + && wavblur == other.wavblur && origlc == other.origlc && localcontMethod == other.localcontMethod && locwavcurve == other.locwavcurve @@ -4534,6 +4536,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo 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).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).locwavcurve, "Locallab", "LocwavCurve_" + std::to_string(i), spot.locwavcurve, keyFile); @@ -6072,6 +6075,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) 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", "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", "LocwavCurve_" + std::to_string(i), pedited, spot.locwavcurve, spotEdited.locwavcurve); diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 4d83a67f4..6f29c1bfe 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1282,6 +1282,7 @@ struct LocallabParams { int sensilc; bool fftwlc; bool blurlc; + bool wavblur; bool origlc; Glib::ustring localcontMethod; std::vector locwavcurve; diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index 492f6b7cb..5fb59fd6d 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -910,7 +910,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = { LUMINANCECURVE, //EvlocallabLmasklcshape LUMINANCECURVE, //Evlocallabchromalev LUMINANCECURVE, //Evlocallabchromablu - LUMINANCECURVE //Evlocallaboffset + LUMINANCECURVE, //Evlocallaboffset + LUMINANCECURVE //Evlocallabwavblur }; diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index 2564384c7..dc88cdf90 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -687,6 +687,7 @@ fftwlc(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_FFTW")))), blurlc(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_BLURLC")))), origlc(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ORIGLC")))), enalcMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))), +wavblur(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_BLURLEVELFRA")))), //CBDL enacbMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))), //encoding log @@ -2833,6 +2834,7 @@ pe(nullptr) } blurlcConn = blurlc->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::blurlcChanged)); + wavblurConn = wavblur->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::wavblurChanged)); origlcConn = origlc->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::origlcChanged)); csThreshold->setAdjusterListener(this); @@ -2948,7 +2950,13 @@ pe(nullptr) Gtk::HSeparator* const separatorblu = Gtk::manage(new Gtk::HSeparator()); blurlevelFrame->set_label_align(0.025, 0.5); - ToolParamBlock* const blurlevcontBox = Gtk::manage(new ToolParamBlock()); + Gtk::VBox *blurlevcontBox = Gtk::manage ( new Gtk::VBox()); + blurlevcontBox->set_spacing(2); + + wavblur->set_active (true); + blurlevelFrame->set_label_widget(*wavblur); + +// ToolParamBlock* const blurlevcontBox = Gtk::manage(new ToolParamBlock()); blurlevcontBox->pack_start(*levelblur); blurlevcontBox->pack_start(*chromablu); blurlevcontBox->pack_start(*LocalcurveEditorwavlev, Gtk::PACK_SHRINK, 4); @@ -5286,6 +5294,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pp->locallab.spots.at(pp->locallab.selspot).sensilc = sensilc->getIntValue(); 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).origlc = origlc->get_active(); pp->locallab.spots.at(pp->locallab.selspot).locwavcurve = wavshape->getCurve(); pp->locallab.spots.at(pp->locallab.selspot).csthreshold = csThreshold->getValue(); @@ -5697,6 +5706,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pe->locallab.spots.at(pp->locallab.selspot).sensilc = pe->locallab.spots.at(pp->locallab.selspot).sensilc || sensilc->getEditedState(); 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).origlc = pe->locallab.spots.at(pp->locallab.selspot).origlc || !origlc->get_inconsistent(); pe->locallab.spots.at(pp->locallab.selspot).localcontMethod = pe->locallab.spots.at(pp->locallab.selspot).localcontMethod || localcontMethod->get_active_text() != M("GENERAL_UNCHANGED"); pe->locallab.spots.at(pp->locallab.selspot).locwavcurve = pe->locallab.spots.at(pp->locallab.selspot).locwavcurve || !wavshape->isUnChanged(); @@ -6107,6 +6117,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pedited->locallab.spots.at(pp->locallab.selspot).sensilc = pedited->locallab.spots.at(pp->locallab.selspot).sensilc || sensilc->getEditedState(); 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).origlc = pedited->locallab.spots.at(pp->locallab.selspot).origlc || !origlc->get_inconsistent(); pedited->locallab.spots.at(pp->locallab.selspot).locwavcurve = pedited->locallab.spots.at(pp->locallab.selspot).locwavcurve || !wavshape->isUnChanged(); pedited->locallab.spots.at(pp->locallab.selspot).loclevwavcurve = pedited->locallab.spots.at(pp->locallab.selspot).loclevwavcurve || !wavshapelev->isUnChanged(); @@ -6695,6 +6706,7 @@ void Locallab::localcontMethodChanged() LocalcurveEditorwavcomp->hide(); fftwlc->show(); blurlc->show(); + wavblur->show(); origlc->hide(); } else if (localcontMethod->get_active_row_number() == 1) { levelwav->show(); @@ -6724,6 +6736,7 @@ void Locallab::localcontMethodChanged() LocalcurveEditorwavcomp->hide(); fftwlc->hide(); blurlc->show(); + wavblur->show(); origlc->show(); } @@ -8274,6 +8287,29 @@ void Locallab::blurlcChanged() } } +void Locallab::wavblurChanged() +{ + + if (multiImage) { + if (wavblur->get_inconsistent()) { + wavblur->set_inconsistent(false); + wavblurConn.block(true); + wavblur->set_active(false); + wavblurConn.block(false); + } + } + + if (getEnabled() && expcontrast->getEnabled()) { + if (listener) { + if (wavblur->get_active()) { + listener->panelChanged(Evlocallabwavblur, M("GENERAL_ENABLED")); + } else { + listener->panelChanged(Evlocallabwavblur, M("GENERAL_DISABLED")); + } + } + } +} + void Locallab::origlcChanged() { @@ -11282,6 +11318,7 @@ void Locallab::enableListener() localcontMethodConn.block(false); fftwlcConn.block(false); blurlcConn.block(false); + wavblurConn.block(false); origlcConn.block(false); showmasklcMethodConn.block(false); enalcMaskConn.block(false); @@ -11380,6 +11417,7 @@ void Locallab::disableListener() localcontMethodConn.block(true); fftwlcConn.block(true); blurlcConn.block(true); + wavblurConn.block(true); origlcConn.block(true); showmasklcMethodConn.block(true); enalcMaskConn.block(true); @@ -12052,6 +12090,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con sensilc->setValue(pp->locallab.spots.at(index).sensilc); 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); origlc->set_active(pp->locallab.spots.at(index).origlc); csThreshold->setValue(pp->locallab.spots.at(index).csthreshold); @@ -12567,6 +12606,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con sensilc->setEditedState(spotState->sensilc ? Edited : UnEdited); fftwlc->set_inconsistent(multiImage && !spotState->fftwlc); blurlc->set_inconsistent(multiImage && !spotState->blurlc); + wavblur->set_inconsistent(multiImage && !spotState->wavblur); origlc->set_inconsistent(multiImage && !spotState->origlc); wavshape->setUnChanged(!spotState->locwavcurve); wavshapelev->setUnChanged(!spotState->loclevwavcurve); @@ -13102,6 +13142,7 @@ void Locallab::updateSpecificGUIState() LocalcurveEditorwavcomp->hide(); fftwlc->show(); blurlc->show(); + wavblur->show(); origlc->hide(); } else if (localcontMethod->get_active_row_number() == 1) { levelwav->show(); @@ -13131,6 +13172,7 @@ void Locallab::updateSpecificGUIState() LocalcurveEditorwavcomp->show(); fftwlc->hide(); blurlc->show(); + wavblur->show(); origlc->show(); } diff --git a/rtgui/locallab.h b/rtgui/locallab.h index ebf21e21b..1f38a106a 100644 --- a/rtgui/locallab.h +++ b/rtgui/locallab.h @@ -490,6 +490,9 @@ private: sigc::connection origlcConn; Gtk::CheckButton* const enalcMask; sigc::connection enalcMaskConn; + Gtk::CheckButton* const wavblur; + sigc::connection wavblurConn; + //CBDL Gtk::CheckButton* const enacbMask; @@ -696,6 +699,7 @@ private: void blurlcChanged(); void origlcChanged(); void enalcMaskChanged(); + void wavblurChanged(); //CBDL void enacbMaskChanged(); // ComboBox event functions diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 7fdf80238..c81df52c5 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -1275,6 +1275,7 @@ void ParamsEdited::initFrom(const std::vector& 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).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).locwavcurve = locallab.spots.at(j).locwavcurve && pSpot.locwavcurve == otherSpot.locwavcurve; @@ -4077,6 +4078,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.spots.at(i).blurlc = mods.locallab.spots.at(i).blurlc; } + if (locallab.spots.at(i).wavblur) { + toEdit.locallab.spots.at(i).wavblur = mods.locallab.spots.at(i).wavblur; + } + if (locallab.spots.at(i).origlc) { toEdit.locallab.spots.at(i).origlc = mods.locallab.spots.at(i).origlc; } @@ -5624,6 +5629,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) : sensilc(v), fftwlc(v), blurlc(v), + wavblur(v), origlc(v), localcontMethod(v), locwavcurve(v), @@ -6022,6 +6028,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v) sensilc = v; fftwlc = v; blurlc = v; + wavblur = v; origlc = v; localcontMethod = v; locwavcurve = v; diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index b0247e587..f17d8114f 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -708,6 +708,7 @@ public: bool sensilc; bool fftwlc; bool blurlc; + bool wavblur; bool origlc; bool localcontMethod; bool locwavcurve;