diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 3335533ec..1f160acea 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -1752,6 +1752,7 @@ TP_LOCALCONTRAST_LABEL;Contraste Local TP_LOCALCONTRAST_LIGHTNESS;Niveau des hautes-lumières TP_LOCALCONTRAST_RADIUS;Rayon TP_LOCALLAB_ACTIV;Luminosité seulement +TP_LOCALLAB_ACTIVSPOT;Activer le Spot TP_LOCALLAB_ADJ;Egalisateur Bleu-jaune Rouge-vert TP_LOCALLAB_ALL;Toutes les rubriques TP_LOCALLAB_AMOUNT;Quantité diff --git a/rtdata/languages/default b/rtdata/languages/default index 6105f36da..9f6c2c170 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1193,6 +1193,7 @@ HISTORY_MSG_951;Local - Mask Common GF angle HISTORY_MSG_952;Local - Mask Common soft radius HISTORY_MSG_953;Local - Mask Common blend chroma HISTORY_MSG_954;Local - Show-hide tools +HISTORY_MSG_955;Local - Enable Spot HISTORY_MSG_BLSHAPE;Blur by level HISTORY_MSG_BLURCWAV;Blur chroma HISTORY_MSG_BLURWAV;Blur luminance @@ -2329,6 +2330,7 @@ TP_LOCALCONTRAST_LABEL;Local Contrast TP_LOCALCONTRAST_LIGHTNESS;Lightness level TP_LOCALCONTRAST_RADIUS;Radius TP_LOCALLAB_ACTIV;Luminance only +TP_LOCALLAB_ACTIVSPOT;Enable Spot TP_LOCALLAB_ADJ;Equalizer Blue-yellow Red-green TP_LOCALLAB_ALL;All rubrics TP_LOCALLAB_AMOUNT;Amount diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index e138444a2..b9d070e14 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -684,6 +684,7 @@ struct local_params { bool fftma; float blurma; float contma; + bool activspot; }; @@ -1357,25 +1358,26 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall for (int y = 0; y < 5; y++) { lp.mullocsh[y] = multish[y]; } + lp.activspot = locallab.spots.at(sp).activ; - lp.logena = locallab.spots.at(sp).explog; + lp.logena = locallab.spots.at(sp).explog && lp.activspot; lp.detailsh = locallab.spots.at(sp).detailSH; lp.threshol = thresho; lp.chromacb = chromcbdl; - lp.expvib = locallab.spots.at(sp).expvibrance; - lp.colorena = locallab.spots.at(sp).expcolor && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0 && ll_Mask == 0; // Color & Light tool is deactivated if Exposure mask is visible or SHMask - lp.blurena = locallab.spots.at(sp).expblur && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && ll_Mask == 0; - lp.tonemapena = locallab.spots.at(sp).exptonemap && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llColorMask == 0 && llvibMask == 0 && ll_Mask == 0; - lp.retiena = locallab.spots.at(sp).expreti && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && llSHMask == 0 && ll_Mask == 0; - lp.lcena = locallab.spots.at(sp).expcontrast && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llcbMask == 0 && llsharMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && llSHMask == 0 && ll_Mask == 0; - lp.cbdlena = locallab.spots.at(sp).expcbdl && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llretiMask == 0 && lllcMask == 0 && llsharMask == 0 && lllcMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && ll_Mask == 0; - lp.exposena = locallab.spots.at(sp).expexpose && llColorMask == 0 && llsoftMask == 0 && llSHMask == 0 && lllcMask == 0 && llsharMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0 && ll_Mask == 0; // Exposure tool is deactivated if Color & Light mask SHmask is visible - lp.hsena = locallab.spots.at(sp).expshadhigh && llColorMask == 0 && llsoftMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0 && ll_Mask == 0;// Shadow Highlight tool is deactivated if Color & Light mask or SHmask is visible - lp.vibena = locallab.spots.at(sp).expvibrance && llColorMask == 0 && llsoftMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0 && ll_Mask == 0;// vibrance tool is deactivated if Color & Light mask or SHmask is visible - lp.sharpena = locallab.spots.at(sp).expsharp && llColorMask == 0 && llsoftMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0 && llvibMask == 0 && ll_Mask == 0; - lp.sfena = locallab.spots.at(sp).expsoft && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0 && llvibMask == 0 && ll_Mask == 0; - lp.maskena = locallab.spots.at(sp).expmask && llColorMask == 0 && llsoftMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0;// vibrance tool is deactivated if Color & Light mask or SHmask is visible + lp.expvib = locallab.spots.at(sp).expvibrance && lp.activspot ; + lp.colorena = locallab.spots.at(sp).expcolor && lp.activspot && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0 && ll_Mask == 0; // Color & Light tool is deactivated if Exposure mask is visible or SHMask + lp.blurena = locallab.spots.at(sp).expblur && lp.activspot && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && ll_Mask == 0; + lp.tonemapena = locallab.spots.at(sp).exptonemap && lp.activspot && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llColorMask == 0 && llvibMask == 0 && ll_Mask == 0; + lp.retiena = locallab.spots.at(sp).expreti && lp.activspot && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && llSHMask == 0 && ll_Mask == 0; + lp.lcena = locallab.spots.at(sp).expcontrast && lp.activspot && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llcbMask == 0 && llsharMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && llSHMask == 0 && ll_Mask == 0; + lp.cbdlena = locallab.spots.at(sp).expcbdl && lp.activspot && llExpMask == 0 && llsoftMask == 0 && llSHMask == 0 && llretiMask == 0 && lllcMask == 0 && llsharMask == 0 && lllcMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && ll_Mask == 0; + lp.exposena = locallab.spots.at(sp).expexpose && lp.activspot && llColorMask == 0 && llsoftMask == 0 && llSHMask == 0 && lllcMask == 0 && llsharMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0 && ll_Mask == 0; // Exposure tool is deactivated if Color & Light mask SHmask is visible + lp.hsena = locallab.spots.at(sp).expshadhigh && lp.activspot && llColorMask == 0 && llsoftMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0 && ll_Mask == 0;// Shadow Highlight tool is deactivated if Color & Light mask or SHmask is visible + lp.vibena = locallab.spots.at(sp).expvibrance && lp.activspot && llColorMask == 0 && llsoftMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0 && ll_Mask == 0;// vibrance tool is deactivated if Color & Light mask or SHmask is visible + lp.sharpena = locallab.spots.at(sp).expsharp && lp.activspot && llColorMask == 0 && llsoftMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0 && llvibMask == 0 && ll_Mask == 0; + lp.sfena = locallab.spots.at(sp).expsoft && lp.activspot && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0 && llvibMask == 0 && ll_Mask == 0; + lp.maskena = locallab.spots.at(sp).expmask && lp.activspot && llColorMask == 0 && llsoftMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0;// vibrance tool is deactivated if Color & Light mask or SHmask is visible lp.sensv = local_sensiv; lp.past = chromaPastel; @@ -1421,6 +1423,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall lp.sens = lp.senscolor; lp.sensv = lp.senscolor; lp.senshs = lp.senscolor; + } static void calcTransitionrect(const float lox, const float loy, const float ach, const local_params& lp, int &zone, float &localFactor) diff --git a/rtengine/procevents.h b/rtengine/procevents.h index a9fb56172..efe793696 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -977,6 +977,7 @@ enum ProcEventCode { Evlocallabsoftradiusmask = 951, Evlocallabblendmaskab = 952, EvLocallabSpotprevMethod = 953, + Evlocallabactiv = 954, NUMOFEVENTS }; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 99731c469..bbc80fa3a 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2639,6 +2639,7 @@ LocallabParams::LocallabSpot::LocallabSpot() : colorscope(30.0), transitweak(1.0), transitgrad(0.0), + activ(true), avoid(false), blwh(false), recurs(false), @@ -3869,6 +3870,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const && colorscope == other.colorscope && transitweak == other.transitweak && transitgrad == other.transitgrad + && activ == other.activ && avoid == other.avoid && blwh == other.blwh && recurs == other.recurs @@ -5390,6 +5392,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || spot_edited->colorscope, "Locallab", "Colorscope_" + index_str, spot.colorscope, keyFile); saveToKeyfile(!pedited || spot_edited->transitweak, "Locallab", "Transitweak_" + index_str, spot.transitweak, keyFile); saveToKeyfile(!pedited || spot_edited->transitgrad, "Locallab", "Transitgrad_" + index_str, spot.transitgrad, keyFile); + saveToKeyfile(!pedited || spot_edited->activ, "Locallab", "Activ_" + index_str, spot.activ, keyFile); saveToKeyfile(!pedited || spot_edited->avoid, "Locallab", "Avoid_" + index_str, spot.avoid, keyFile); saveToKeyfile(!pedited || spot_edited->blwh, "Locallab", "Blwh_" + index_str, spot.blwh, keyFile); saveToKeyfile(!pedited || spot_edited->recurs, "Locallab", "Recurs_" + index_str, spot.recurs, keyFile); @@ -7056,6 +7059,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Locallab", "Colorscope_" + index_str, pedited, spot.colorscope, spotEdited.colorscope); assignFromKeyfile(keyFile, "Locallab", "Transitweak_" + index_str, pedited, spot.transitweak, spotEdited.transitweak); assignFromKeyfile(keyFile, "Locallab", "Transitgrad_" + index_str, pedited, spot.transitgrad, spotEdited.transitgrad); + assignFromKeyfile(keyFile, "Locallab", "Activ_" + index_str, pedited, spot.activ, spotEdited.activ); assignFromKeyfile(keyFile, "Locallab", "Avoid_" + index_str, pedited, spot.avoid, spotEdited.avoid); assignFromKeyfile(keyFile, "Locallab", "Blwh_" + index_str, pedited, spot.blwh, spotEdited.blwh); assignFromKeyfile(keyFile, "Locallab", "Recurs_" + index_str, pedited, spot.recurs, spotEdited.recurs); diff --git a/rtengine/procparams.h b/rtengine/procparams.h index f6ec6cb19..a88ef61cb 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1000,6 +1000,7 @@ struct LocallabParams { double colorscope; double transitweak; double transitgrad; + bool activ; bool avoid; bool blwh; bool recurs; diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index cc71a78cf..b7e70fda3 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -980,7 +980,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = { LUMINANCECURVE, // Evlocallabang_mask LUMINANCECURVE, // Evlocallabsoftradiusmask LUMINANCECURVE, // Evlocallabblendmaskab - LUMINANCECURVE // EvLocallabSpotprevMethod + LUMINANCECURVE, // EvLocallabSpotprevMethod + LUMINANCECURVE // Evlocallabactiv }; diff --git a/rtgui/controlspotpanel.cc b/rtgui/controlspotpanel.cc index 521026f19..33936324e 100644 --- a/rtgui/controlspotpanel.cc +++ b/rtgui/controlspotpanel.cc @@ -79,6 +79,7 @@ ControlSpotPanel::ControlSpotPanel(): scopemask_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SCOPEMASK"), 0, 100, 1, 60))), lumask_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LUMASK"), 0, 30, 1, 10))), + activ_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ACTIVSPOT")))), avoid_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_AVOID")))), blwh_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_BLWH")))), recurs_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_RECURS")))), @@ -190,8 +191,11 @@ ControlSpotPanel::ControlSpotPanel(): scrolledwindow_->set_min_content_height(150); pack_start(*scrolledwindow_); -// Gtk::HBox* const ctboxshape = Gtk::manage(new Gtk::HBox()); + Gtk::HBox* const ctboxactivmethod = Gtk::manage(new Gtk::HBox()); + ctboxactivmethod->pack_start(*activ_); + pack_start(*ctboxactivmethod); +// Gtk::HBox* const ctboxshape = Gtk::manage(new Gtk::HBox()); Gtk::Label* const labelshape = Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_SHAPETYPE") + ":")); ctboxshape->pack_start(*labelshape, Gtk::PACK_SHRINK, 4); shape_->append(M("TP_LOCALLAB_ELI")); @@ -245,6 +249,7 @@ ControlSpotPanel::ControlSpotPanel(): excluFrame->add(*excluBox); pack_start(*excluFrame); + Gtk::HBox* const ctboxshapemethod = Gtk::manage(new Gtk::HBox()); Gtk::Label* const labelshapemethod = Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_STYPE") + ":")); ctboxshapemethod->pack_start(*labelshapemethod, Gtk::PACK_SHRINK, 4); @@ -387,6 +392,9 @@ ControlSpotPanel::ControlSpotPanel(): pack_start(*artifBox2); ToolParamBlock* const specCaseBox = Gtk::manage(new ToolParamBlock()); + activConn_ = activ_->signal_toggled().connect( + sigc::mem_fun(*this, &ControlSpotPanel::activChanged)); + avoidConn_ = avoid_->signal_toggled().connect( sigc::mem_fun(*this, &ControlSpotPanel::avoidChanged)); specCaseBox->pack_start(*avoid_); @@ -823,6 +831,7 @@ void ControlSpotPanel::load_ControlSpot_param() balanh_->setValue((double)row[spots_.balanh]); colorde_->setValue((double)row[spots_.colorde]); colorscope_->setValue((double)row[spots_.colorscope]); + activ_->set_active(row[spots_.activ]); avoid_->set_active(row[spots_.avoid]); blwh_->set_active(row[spots_.blwh]); recurs_->set_active(row[spots_.recurs]); @@ -1461,6 +1470,32 @@ void ControlSpotPanel::avoidChanged() } } +void ControlSpotPanel::activChanged() +{ + // printf("activChanged\n"); + + // Get selected control spot + const auto s = treeview_->get_selection(); + + if (!s->count_selected_rows()) { + return; + } + + const auto iter = s->get_selected(); + Gtk::TreeModel::Row row = *iter; + row[spots_.activ] = activ_->get_active(); + + // Raise event + if (listener) { + if (activ_->get_active()) { + listener->panelChanged(Evlocallabactiv, M("GENERAL_ENABLED")); + } else { + listener->panelChanged(Evlocallabactiv, M("GENERAL_DISABLED")); + } + } +} + + void ControlSpotPanel::blwhChanged() { // printf("blwhChanged\n"); @@ -1652,6 +1687,7 @@ void ControlSpotPanel::disableParamlistener(bool cond) balanh_->block(cond); colorde_->block(cond); colorscope_->block(cond); + activConn_.block(cond); avoidConn_.block(cond); blwhConn_.block(cond); recursConn_.block(cond); @@ -1694,6 +1730,7 @@ void ControlSpotPanel::setParamEditable(bool cond) balanh_->set_sensitive(cond); colorde_->set_sensitive(cond); colorscope_->set_sensitive(cond); + activ_->set_sensitive(cond); avoid_->set_sensitive(cond); blwh_->set_sensitive(cond); recurs_->set_sensitive(cond); @@ -2355,6 +2392,7 @@ ControlSpotPanel::SpotRow* ControlSpotPanel::getSpot(const int index) r->transitgrad = row[spots_.transitgrad]; r->scopemask = row[spots_.scopemask]; r->lumask = row[spots_.lumask]; + r->activ = row[spots_.activ]; r->avoid = row[spots_.avoid]; r->blwh = row[spots_.blwh]; r->recurs = row[spots_.recurs]; @@ -2484,6 +2522,7 @@ void ControlSpotPanel::addControlSpot(SpotRow* newSpot) row[spots_.balanh] = newSpot->balanh; row[spots_.colorde] = newSpot->colorde; row[spots_.colorscope] = newSpot->colorscope; + row[spots_.activ] = newSpot->activ; row[spots_.avoid] = newSpot->avoid; row[spots_.blwh] = newSpot->blwh; row[spots_.recurs] = newSpot->recurs; @@ -2597,6 +2636,7 @@ ControlSpotPanel::ControlSpots::ControlSpots() add(balanh); add(colorde); add(colorscope); + add(activ); add(avoid); add(blwh); add(recurs); diff --git a/rtgui/controlspotpanel.h b/rtgui/controlspotpanel.h index 01d939aec..81a79fb61 100644 --- a/rtgui/controlspotpanel.h +++ b/rtgui/controlspotpanel.h @@ -75,6 +75,7 @@ public: double balanh; double colorde; double colorscope; + bool activ; bool avoid; bool blwh; bool recurs; @@ -244,6 +245,7 @@ private: void adjusterChanged(Adjuster* a, double newval) override; + void activChanged(); void avoidChanged(); void blwhChanged(); void recursChanged(); @@ -303,6 +305,7 @@ private: Gtk::TreeModelColumn balanh; Gtk::TreeModelColumn colorde; Gtk::TreeModelColumn colorscope; + Gtk::TreeModelColumn activ; Gtk::TreeModelColumn avoid; Gtk::TreeModelColumn blwh; Gtk::TreeModelColumn recurs; @@ -390,6 +393,8 @@ private: Adjuster* const scopemask_; Adjuster* const lumask_; + Gtk::CheckButton* const activ_; + sigc::connection activConn_; Gtk::CheckButton* const avoid_; sigc::connection avoidConn_; Gtk::CheckButton* const blwh_; diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index 274b5b43c..2f25490fe 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -311,6 +311,7 @@ void Locallab::read(const rtengine::procparams::ProcParams* pp, const ParamsEdit r->balanh = pp->locallab.spots.at(i).balanh; r->colorde = pp->locallab.spots.at(i).colorde; r->colorscope = pp->locallab.spots.at(i).colorscope; + r->activ = pp->locallab.spots.at(i).activ; r->avoid = pp->locallab.spots.at(i).avoid; r->blwh = pp->locallab.spots.at(i).blwh; r->recurs = pp->locallab.spots.at(i).recurs; @@ -485,6 +486,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited r->balanh = newSpot->balanh; r->colorde = newSpot->colorde; r->colorscope = newSpot->colorscope; + r->activ = newSpot->activ; r->avoid = newSpot->avoid; r->blwh = newSpot->blwh; r->recurs = newSpot->recurs; @@ -768,6 +770,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited r->balanh = newSpot->balanh; r->colorde = newSpot->colorde; r->colorscope = newSpot->colorscope; + r->activ = newSpot->activ; r->avoid = newSpot->avoid; r->blwh = newSpot->blwh; r->recurs = newSpot->recurs; @@ -915,6 +918,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pp->locallab.spots.at(pp->locallab.selspot).balanh = r->balanh; pp->locallab.spots.at(pp->locallab.selspot).colorde = r->colorde; pp->locallab.spots.at(pp->locallab.selspot).colorscope = r->colorscope; + pp->locallab.spots.at(pp->locallab.selspot).activ = r->activ; pp->locallab.spots.at(pp->locallab.selspot).avoid = r->avoid; pp->locallab.spots.at(pp->locallab.selspot).blwh = r->blwh; pp->locallab.spots.at(pp->locallab.selspot).recurs = r->recurs; diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index bfcd97c46..39b89dbf3 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -1048,6 +1048,7 @@ void ParamsEdited::initFrom(const std::vector& locallab.spots.at(j).colorscope = locallab.spots.at(j).colorscope && pSpot.colorscope == otherSpot.colorscope; locallab.spots.at(j).transitweak = locallab.spots.at(j).transitweak && pSpot.transitweak == otherSpot.transitweak; locallab.spots.at(j).transitgrad = locallab.spots.at(j).transitgrad && pSpot.transitgrad == otherSpot.transitgrad; + locallab.spots.at(j).activ = locallab.spots.at(j).activ && pSpot.activ == otherSpot.activ; locallab.spots.at(j).avoid = locallab.spots.at(j).avoid && pSpot.avoid == otherSpot.avoid; locallab.spots.at(j).blwh = locallab.spots.at(j).blwh && pSpot.blwh == otherSpot.blwh; locallab.spots.at(j).recurs = locallab.spots.at(j).recurs && pSpot.recurs == otherSpot.recurs; @@ -3159,6 +3160,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.spots.at(i).transitgrad = mods.locallab.spots.at(i).transitgrad; } + if (locallab.spots.at(i).activ) { + toEdit.locallab.spots.at(i).activ = mods.locallab.spots.at(i).activ; + } + if (locallab.spots.at(i).avoid) { toEdit.locallab.spots.at(i).avoid = mods.locallab.spots.at(i).avoid; } @@ -6077,6 +6082,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) : colorscope(v), transitweak(v), transitgrad(v), + activ(v), avoid(v), blwh(v), recurs(v), @@ -6560,6 +6566,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v) colorscope = v; transitweak = v; transitgrad = v; + activ = v; avoid = v; blwh = v; recurs = v; diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index a388db616..923b07039 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -414,6 +414,7 @@ public: bool colorscope; bool transitweak; bool transitgrad; + bool activ; bool avoid; bool blwh; bool recurs;