From d522d4a70109d8a1f6b3eec7cc894fa3f17ab4d8 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 21 Jun 2020 17:47:47 +0200 Subject: [PATCH] Added laplacian threshold and radius to mask common --- rtdata/languages/default | 2 ++ rtengine/procevents.h | 2 ++ rtengine/procparams.cc | 14 +++++++++++--- rtengine/procparams.h | 2 ++ rtengine/refreshmap.cc | 4 +++- rtgui/locallabtools.h | 2 ++ rtgui/locallabtools2.cc | 28 +++++++++++++++++++++++++++- rtgui/paramsedited.cc | 17 ++++++++++++++++- rtgui/paramsedited.h | 2 ++ 9 files changed, 67 insertions(+), 6 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 090edf72a..ae246e5ed 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1169,6 +1169,8 @@ HISTORY_MSG_928;Local - Common color mask HISTORY_MSG_929;Local - Mask common scope HISTORY_MSG_930;Local - Mask Common blend HISTORY_MSG_932;Local - Mask Common enable +HISTORY_MSG_933;Local - Mask Common radius soft +HISTORY_MSG_934;Local - Mask Common laplacian HISTORY_MSG_CAT02PRESET;Cat02 automatic preset HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction diff --git a/rtengine/procevents.h b/rtengine/procevents.h index 998215c86..b155cb9be 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -955,6 +955,8 @@ enum ProcEventCode { Evlocallabblendmask = 929, EvlocallabshowmaskmaskMethod = 930, EvLocallabEnaMask = 931, + Evlocallabradmask = 932, + Evlocallablapmask = 933, NUMOFEVENTS }; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 524fc600f..358e5fd94 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -3738,8 +3738,10 @@ LocallabParams::LocallabSpot::LocallabSpot() : expmask(false), sensimask(60), blendmask(0), - enamask(false) - + enamask(false), + radmask(0.0), + lapmask(0.0) + { } @@ -4215,7 +4217,9 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const && expmask == other.expmask && sensimask == other.sensimask && blendmask == other.blendmask - && enamask == other.enamask; + && enamask == other.enamask + && radmask == other.radmask + && lapmask == other.lapmask; } @@ -5716,6 +5720,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || spot_edited->sensimask, "Locallab", "Sensimask_" + index_str, spot.sensimask, keyFile); saveToKeyfile(!pedited || spot_edited->blendmask, "Locallab", "Blendmaskmask_" + index_str, spot.blendmask, keyFile); saveToKeyfile(!pedited || spot_edited->enamask, "Locallab", "Enamask_" + index_str, spot.enamask, keyFile); + saveToKeyfile(!pedited || spot_edited->radmask, "Locallab", "Radmask_" + index_str, spot.radmask, keyFile); + saveToKeyfile(!pedited || spot_edited->lapmask, "Locallab", "Lapmask_" + index_str, spot.lapmask, keyFile); } } } @@ -7435,6 +7441,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Locallab", "Sensimask_" + index_str, pedited, spot.sensimask, spotEdited.sensimask); assignFromKeyfile(keyFile, "Locallab", "Blendmaskmask_" + index_str, pedited, spot.blendmask, spotEdited.blendmask); assignFromKeyfile(keyFile, "Locallab", "Enamask_" + index_str, pedited, spot.enamask, spotEdited.enamask); + assignFromKeyfile(keyFile, "Locallab", "Radmask_" + index_str, pedited, spot.radmask, spotEdited.radmask); + assignFromKeyfile(keyFile, "Locallab", "Lapmask_" + index_str, pedited, spot.lapmask, spotEdited.lapmask); if (spot.visimask) { spotEdited.visimask = true; diff --git a/rtengine/procparams.h b/rtengine/procparams.h index b20323c52..b2b23e2e7 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1427,6 +1427,8 @@ struct LocallabParams { int sensimask; int blendmask; bool enamask; + double radmask; + double lapmask; LocallabSpot(); diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index 586532ce5..091cf4532 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -958,7 +958,9 @@ int refreshmap[rtengine::NUMOFEVENTS] = { LUMINANCECURVE, // Evlocallabsensimask LUMINANCECURVE, // Evlocallabblendmask LUMINANCECURVE, // EvlocallabshowmaskmaskMethod - LUMINANCECURVE // EvLocallabEnaMask + LUMINANCECURVE, // EvLocallabEnaMask + LUMINANCECURVE, // Evlocallabradmask + LUMINANCECURVE // Evlocallablapmask }; diff --git a/rtgui/locallabtools.h b/rtgui/locallabtools.h index b094a81e3..ae0c7cf98 100644 --- a/rtgui/locallabtools.h +++ b/rtgui/locallabtools.h @@ -1207,6 +1207,8 @@ private: Adjuster* const blendmask; MyComboBoxText* const showmaskMethod; Gtk::CheckButton* const enamask; + Adjuster* const radmask; + Adjuster* const lapmask; sigc::connection showmaskMethodConn, enamaskConn; diff --git a/rtgui/locallabtools2.cc b/rtgui/locallabtools2.cc index 923cfbb27..8aea1d0e8 100644 --- a/rtgui/locallabtools2.cc +++ b/rtgui/locallabtools2.cc @@ -4731,7 +4731,9 @@ LocallabMask::LocallabMask(): sensimask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))), blendmask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKCOL"), -100, 100, 1, 0))), showmaskMethod(Gtk::manage(new MyComboBoxText())), - enamask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))) + enamask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))), + radmask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_RADMASKCOL"), -10.0, 1000.0, 0.1, 0.))), + lapmask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LAPMASKCOL"), 0.0, 100.0, 0.1, 0.))) { // Parameter Mask common specific widgets @@ -4745,11 +4747,15 @@ LocallabMask::LocallabMask(): showmaskMethod->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKCOL_TOOLTIP")); showmaskMethodConn = showmaskMethod->signal_changed().connect(sigc::mem_fun(*this, &LocallabMask::showmaskMethodChanged)); enamaskConn = enamask->signal_toggled().connect(sigc::mem_fun(*this, &LocallabMask::enamaskChanged)); + radmask->setAdjusterListener(this); + lapmask->setAdjusterListener(this); pack_start(*sensimask, Gtk::PACK_SHRINK, 0); pack_start(*blendmask, Gtk::PACK_SHRINK, 0); pack_start(*showmaskMethod, Gtk::PACK_SHRINK, 4); pack_start(*enamask, Gtk::PACK_SHRINK, 0); + pack_start(*radmask, Gtk::PACK_SHRINK, 0); + pack_start(*lapmask, Gtk::PACK_SHRINK, 0); } @@ -4837,6 +4843,8 @@ void LocallabMask::read(const rtengine::procparams::ProcParams* pp, const Params sensimask->setValue(spot.sensimask); blendmask->setValue(spot.blendmask); enamask->set_active(spot.enamask); + radmask->setValue(spot.radmask); + lapmask->setValue(spot.lapmask); } @@ -4862,6 +4870,8 @@ void LocallabMask::write(rtengine::procparams::ProcParams* pp, ParamsEdited* ped spot.sensimask = sensimask->getIntValue(); spot.blendmask = blendmask->getIntValue(); spot.enamask = enamask->get_active(); + spot.radmask = radmask->getValue(); + spot.lapmask = lapmask->getValue(); } @@ -4895,6 +4905,8 @@ void LocallabMask::setDefaults(const rtengine::procparams::ProcParams* defParams // Set default value for adjuster widgets sensimask->setDefault((double)defSpot.sensimask); blendmask->setDefault((double)defSpot.blendmask); + radmask->setDefault(defSpot.radmask); + lapmask->setDefault(defSpot.lapmask); } @@ -4920,6 +4932,20 @@ void LocallabMask::adjusterChanged(Adjuster* a, double newval) } } + if (a == radmask) { + if (listener) { + listener->panelChanged(Evlocallabradmask, + radmask->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == lapmask) { + if (listener) { + listener->panelChanged(Evlocallablapmask, + lapmask->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + } } diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 427ada9ad..a981f06e5 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -1483,6 +1483,8 @@ void ParamsEdited::initFrom(const std::vector& locallab.spots.at(j).sensimask = locallab.spots.at(j).sensimask && pSpot.sensimask == otherSpot.sensimask; locallab.spots.at(j).blendmask = locallab.spots.at(j).blendmask && pSpot.blendmask == otherSpot.blendmask; locallab.spots.at(j).enamask = locallab.spots.at(j).enamask && pSpot.enamask == otherSpot.enamask; + locallab.spots.at(j).radmask = locallab.spots.at(j).radmask && pSpot.radmask == otherSpot.radmask; + locallab.spots.at(j).lapmask = locallab.spots.at(j).lapmask && pSpot.lapmask == otherSpot.lapmask; } } @@ -4809,6 +4811,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.spots.at(i).enamask = mods.locallab.spots.at(i).enamask; } + if (locallab.spots.at(i).radmask) { + toEdit.locallab.spots.at(i).radmask = mods.locallab.spots.at(i).radmask; + } + + if (locallab.spots.at(i).lapmask) { + toEdit.locallab.spots.at(i).lapmask = mods.locallab.spots.at(i).lapmask; + } + } if (pcvignette.enabled) { @@ -6383,7 +6393,10 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) : expmask(v), sensimask(v), blendmask(v), - enamask(v) + enamask(v), + radmask(v), + lapmask(v) + { } @@ -6850,6 +6863,8 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v) sensimask = v; blendmask = v; enamask = v; + radmask = v; + lapmask = v; } bool CaptureSharpeningParamsEdited::isUnchanged() const diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index a559408e2..d235e4987 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -841,6 +841,8 @@ public: bool sensimask; bool blendmask; bool enamask; + bool radmask; + bool lapmask; LocallabSpotEdited(bool v);