diff --git a/rtdata/languages/default b/rtdata/languages/default index 6d6f8f85b..1761f6855 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1076,6 +1076,8 @@ HISTORY_MSG_836;Local - Vib gradient angle HISTORY_MSG_837;Local - Vib gradient strength C HISTORY_MSG_838;Local - Vib gradient strength H HISTORY_MSG_839;Local - Software complexity +HISTORY_MSG_840;Local - CL Curve +HISTORY_MSG_841;Local - LC curve HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction @@ -2173,6 +2175,7 @@ TP_LOCALLAB_BUTTON_VIS;Show/Hide TP_LOCALLAB_CBDL;Contrast by detail levels - Big defects : grease.. TP_LOCALLAB_CENTER_X;Center X TP_LOCALLAB_CENTER_Y;Center Y +TP_LOCALLAB_CH;Curves CL - LC TP_LOCALLAB_CHROMA;Chrominance TP_LOCALLAB_CHROMACBDL;Chroma TP_LOCALLAB_CHROMACB_TOOLTIP;Acts as an amplifier-reducer action compare to sliders of luminance.\nUnder 100 reduce, above 100 amplifie @@ -2306,7 +2309,7 @@ TP_LOCALLAB_LMASK_LL_TOOLTIP;Give priority to action on midtones and high lights TP_LOCALLAB_LOCCONT;Unsharp Mask TP_LOCALLAB_LOC_CONTRAST;Local contrast TP_LOCALLAB_LOGLIN;Logarithm mode -TP_LOCALLAB_LUM;Curves LC +TP_LOCALLAB_LUM;Curves LL - CC TP_LOCALLAB_LUMADARKEST;Darkest TP_LOCALLAB_LUMASK;Luminance Background Mask TP_LOCALLAB_LUMAWHITESEST;Whiteest diff --git a/rtengine/procevents.h b/rtengine/procevents.h index e4ffbcfc3..04a891aac 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -863,6 +863,8 @@ enum ProcEventCode { Evlocallabstrvibab = 836, Evlocallabstrvibh = 837, EvLocallabSpotcomplexMethod = 838, + Evlocallabclshape = 839, + Evlocallablcshape = 840, NUMOFEVENTS }; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 3d68cd8b3..7ea76f1b7 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2483,7 +2483,9 @@ LocallabParams::LocallabSpot::LocallabSpot() : toneMethod("fou"), mergecolMethod("one"), llcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0}, + lccurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0}, cccurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0}, + clcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0}, rgbcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0}, LHcurve{(double)FCT_MinMaxCPoints, 0.0, 0.50, 0.35, 0.35, 0.166, 0.50, 0.35, 0.35, 0.333, 0.50, 0.35, 0.35, 0.50, 0.50, 0.35, 0.35, 0.666, 0.50, 0.35, 0.35, 0.833, 0.50, 0.35, 0.35}, HHcurve{(double)FCT_MinMaxCPoints, 0.0, 0.50, 0.35, 0.35, 0.166, 0.50, 0.35, 0.35, 0.333, 0.50, 0.35, 0.35, 0.50, 0.50, 0.35, 0.35, 0.666, 0.50, 0.35, 0.35, 0.833, 0.50, 0.35, 0.35}, @@ -2838,7 +2840,9 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const && toneMethod == other.toneMethod && mergecolMethod == other.mergecolMethod && llcurve == other.llcurve + && lccurve == other.lccurve && cccurve == other.cccurve + && clcurve == other.clcurve && rgbcurve == other.rgbcurve && LHcurve == other.LHcurve && HHcurve == other.HHcurve @@ -4190,7 +4194,9 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->locallab.spots.at(i).toneMethod, "Locallab", "ToneMethod_" + std::to_string(i), spot.toneMethod, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).mergecolMethod, "Locallab", "mergecolMethod_" + std::to_string(i), spot.mergecolMethod, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).llcurve, "Locallab", "LLCurve_" + std::to_string(i), spot.llcurve, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).lccurve, "Locallab", "LCCurve_" + std::to_string(i), spot.lccurve, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).cccurve, "Locallab", "CCCurve_" + std::to_string(i), spot.cccurve, keyFile); + saveToKeyfile(!pedited || pedited->locallab.spots.at(i).clcurve, "Locallab", "CLCurve_" + std::to_string(i), spot.clcurve, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).rgbcurve, "Locallab", "RGBCurve_" + std::to_string(i), spot.rgbcurve, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LHcurve, "Locallab", "LHCurve_" + std::to_string(i), spot.LHcurve, keyFile); saveToKeyfile(!pedited || pedited->locallab.spots.at(i).HHcurve, "Locallab", "HHCurve_" + std::to_string(i), spot.HHcurve, keyFile); @@ -5648,7 +5654,9 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Locallab", "ToneMethod_" + std::to_string(i), pedited, spot.toneMethod, spotEdited.toneMethod); assignFromKeyfile(keyFile, "Locallab", "mergecolMethod_" + std::to_string(i), pedited, spot.mergecolMethod, spotEdited.mergecolMethod); assignFromKeyfile(keyFile, "Locallab", "LLCurve_" + std::to_string(i), pedited, spot.llcurve, spotEdited.llcurve); + assignFromKeyfile(keyFile, "Locallab", "LCCurve_" + std::to_string(i), pedited, spot.lccurve, spotEdited.lccurve); assignFromKeyfile(keyFile, "Locallab", "CCCurve_" + std::to_string(i), pedited, spot.cccurve, spotEdited.cccurve); + assignFromKeyfile(keyFile, "Locallab", "CLCurve_" + std::to_string(i), pedited, spot.clcurve, spotEdited.clcurve); assignFromKeyfile(keyFile, "Locallab", "RGBCurve_" + std::to_string(i), pedited, spot.rgbcurve, spotEdited.rgbcurve); assignFromKeyfile(keyFile, "Locallab", "LHCurve_" + std::to_string(i), pedited, spot.LHcurve, spotEdited.LHcurve); assignFromKeyfile(keyFile, "Locallab", "HHCurve_" + std::to_string(i), pedited, spot.HHcurve, spotEdited.HHcurve); diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 000d206b4..ab8435405 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1026,7 +1026,9 @@ struct LocallabParams { Glib::ustring toneMethod; Glib::ustring mergecolMethod; std::vector llcurve; + std::vector lccurve; std::vector cccurve; + std::vector clcurve; std::vector rgbcurve; std::vector LHcurve; std::vector HHcurve; diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index 26d409276..718612706 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -866,7 +866,9 @@ int refreshmap[rtengine::NUMOFEVENTS] = { LUMINANCECURVE, //Evlocallabangvib LUMINANCECURVE, //Evlocallabstrvibab LUMINANCECURVE, //Evlocallabstrvibh - LUMINANCECURVE // EvLocallabSpotcomplexMethod + LUMINANCECURVE, // EvLocallabSpotcomplexMethod + LUMINANCECURVE, // Evlocallabclshape + LUMINANCECURVE // Evlocallablcshape }; diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index 0be23e43d..6b534ec57 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -158,6 +158,7 @@ Locallab::Locallab(): // CurveEditorGroup widgets // Color & Light llCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_LUM"))), + clCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_CH"))), HCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_HLH"))), H2CurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_HLH"))), rgbCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_RGB"))), @@ -169,6 +170,8 @@ Locallab::Locallab(): Lmaskshape(static_cast(mask2CurveEditorG->addCurve(CT_Diagonal, "L(L)"))), llshape(static_cast(llCurveEditorG->addCurve(CT_Diagonal, "L(L)"))), ccshape(static_cast(llCurveEditorG->addCurve(CT_Diagonal, "C(C)"))), + clshape(static_cast(clCurveEditorG->addCurve(CT_Diagonal, "C(L)"))), + lcshape(static_cast(clCurveEditorG->addCurve(CT_Diagonal, "L(C)"))), toneMethod(Gtk::manage(new MyComboBoxText())), rgbshape(static_cast(rgbCurveEditorG->addCurve(CT_Diagonal, "", toneMethod))), LHshape(static_cast(HCurveEditorG->addCurve(CT_Flat, "L(H)", nullptr, false, true))), @@ -774,12 +777,34 @@ pe(nullptr) ccshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP")); } -// const std::vector& mccshape = zero_one_shape; ccshape->setBottomBarColorProvider(this, 2); ccshape->setLeftBarColorProvider(this, 7); - // llCurveEditorG->newLine(); + if (showtooltip) { + clshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP")); + } + const std::vector& mclshape = zero_one_shape; + llCurveEditorG->curveListComplete(); + + clCurveEditorG->setCurveListener(this); + clshape->setResetCurve(DiagonalCurveType(defSpot.clcurve.at(0)), defSpot.clcurve); + + clshape->setBottomBarBgGradient(mclshape); + clshape->setLeftBarColorProvider(this, 7); + + if (showtooltip) { + lcshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP")); + } + const std::vector& mlcshape = zero_one_shape; + lcshape->setResetCurve(DiagonalCurveType(defSpot.lccurve.at(0)), defSpot.lccurve); + + lcshape->setBottomBarColorProvider(this, 2); + lcshape->setLeftBarBgGradient(mlcshape); + + clCurveEditorG->curveListComplete(); + + // llCurveEditorG->newLine(); HCurveEditorG->setCurveListener(this); LHshape->setIdentityValue(0.); @@ -1041,6 +1066,7 @@ pe(nullptr) qualcurvbox->pack_start(*qualitycurveMethod); colorBox->pack_start(*qualcurvbox); colorBox->pack_start(*llCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor + //colorBox->pack_start(*clCurveEditorG, Gtk::PACK_SHRINK, 4); if (complexsoft < 2) { colorBox->pack_start(*HCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor @@ -1821,8 +1847,9 @@ pe(nullptr) vibranceBox->pack_start(*curveEditorGG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor } - vibranceBox->pack_start(*gradvibFrame, Gtk::PACK_SHRINK, 0); - + if (complexsoft < 2) { + vibranceBox->pack_start(*gradvibFrame, Gtk::PACK_SHRINK, 0); + } enavibMaskConn = enavibMask->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::enavibMaskChanged)); showmaskvibMethod->append(M("TP_LOCALLAB_SHOWMNONE")); @@ -2774,8 +2801,9 @@ pe(nullptr) expcbdl->add(*cbdlBox, false); expcbdl->setLevel(2); - panel->pack_start(*expcbdl, false, false); - + if (complexsoft < 2) { + panel->pack_start(*expcbdl, false, false); + } // Blur & Noise Gtk::HBox* const BLTitleHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* const BLLabel = Gtk::manage(new Gtk::Label()); @@ -3143,6 +3171,7 @@ Locallab::~Locallab() idle_register.destroy(); delete llCurveEditorG; + delete clCurveEditorG; delete HCurveEditorG; delete rgbCurveEditorG; delete maskCurveEditorG; @@ -4325,6 +4354,8 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pp->locallab.spots.at(pp->locallab.selspot).llcurve = llshape->getCurve(); pp->locallab.spots.at(pp->locallab.selspot).cccurve = ccshape->getCurve(); + pp->locallab.spots.at(pp->locallab.selspot).clcurve = clshape->getCurve(); + pp->locallab.spots.at(pp->locallab.selspot).lccurve = lcshape->getCurve(); pp->locallab.spots.at(pp->locallab.selspot).rgbcurve = rgbshape->getCurve(); pp->locallab.spots.at(pp->locallab.selspot).LHcurve = LHshape->getCurve(); pp->locallab.spots.at(pp->locallab.selspot).HHcurve = HHshape->getCurve(); @@ -4753,8 +4784,11 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pe->locallab.spots.at(pp->locallab.selspot).toneMethod = pe->locallab.spots.at(pp->locallab.selspot).toneMethod || toneMethod->get_active_text() != M("GENERAL_UNCHANGED"); pe->locallab.spots.at(pp->locallab.selspot).mergecolMethod = pe->locallab.spots.at(pp->locallab.selspot).mergecolMethod || mergecolMethod->get_active_text() != M("GENERAL_UNCHANGED"); pe->locallab.spots.at(pp->locallab.selspot).llcurve = pe->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged(); + pe->locallab.spots.at(pp->locallab.selspot).lccurve = pe->locallab.spots.at(pp->locallab.selspot).lccurve || !lcshape->isUnChanged(); pe->locallab.spots.at(pp->locallab.selspot).rgbcurve = pe->locallab.spots.at(pp->locallab.selspot).rgbcurve || !rgbshape->isUnChanged(); pe->locallab.spots.at(pp->locallab.selspot).cccurve = pe->locallab.spots.at(pp->locallab.selspot).cccurve || !ccshape->isUnChanged(); + pe->locallab.spots.at(pp->locallab.selspot).clcurve = pe->locallab.spots.at(pp->locallab.selspot).clcurve || !clshape->isUnChanged(); + pe->locallab.spots.at(pp->locallab.selspot).lccurve = pe->locallab.spots.at(pp->locallab.selspot).lccurve || !lcshape->isUnChanged(); pe->locallab.spots.at(pp->locallab.selspot).LHcurve = pe->locallab.spots.at(pp->locallab.selspot).LHcurve || !LHshape->isUnChanged(); pe->locallab.spots.at(pp->locallab.selspot).HHcurve = pe->locallab.spots.at(pp->locallab.selspot).HHcurve || !HHshape->isUnChanged(); pe->locallab.spots.at(pp->locallab.selspot).invers = pe->locallab.spots.at(pp->locallab.selspot).invers || !invers->get_inconsistent(); @@ -5113,8 +5147,11 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited pedited->locallab.spots.at(pp->locallab.selspot).toneMethod = pedited->locallab.spots.at(pp->locallab.selspot).toneMethod || toneMethod->get_active_text() != M("GENERAL_UNCHANGED"); pedited->locallab.spots.at(pp->locallab.selspot).mergecolMethod = pedited->locallab.spots.at(pp->locallab.selspot).mergecolMethod || mergecolMethod->get_active_text() != M("GENERAL_UNCHANGED"); pedited->locallab.spots.at(pp->locallab.selspot).llcurve = pedited->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged(); + pedited->locallab.spots.at(pp->locallab.selspot).lccurve = pedited->locallab.spots.at(pp->locallab.selspot).lccurve || !lcshape->isUnChanged(); pedited->locallab.spots.at(pp->locallab.selspot).rgbcurve = pedited->locallab.spots.at(pp->locallab.selspot).rgbcurve || !rgbshape->isUnChanged(); pedited->locallab.spots.at(pp->locallab.selspot).cccurve = pedited->locallab.spots.at(pp->locallab.selspot).cccurve || !ccshape->isUnChanged(); + pedited->locallab.spots.at(pp->locallab.selspot).clcurve = pedited->locallab.spots.at(pp->locallab.selspot).clcurve || !clshape->isUnChanged(); + pedited->locallab.spots.at(pp->locallab.selspot).lccurve = pedited->locallab.spots.at(pp->locallab.selspot).lccurve || !lcshape->isUnChanged(); pedited->locallab.spots.at(pp->locallab.selspot).LHcurve = pedited->locallab.spots.at(pp->locallab.selspot).LHcurve || !LHshape->isUnChanged(); pedited->locallab.spots.at(pp->locallab.selspot).HHcurve = pedited->locallab.spots.at(pp->locallab.selspot).HHcurve || !HHshape->isUnChanged(); pedited->locallab.spots.at(pp->locallab.selspot).invers = pedited->locallab.spots.at(pp->locallab.selspot).invers || !invers->get_inconsistent(); @@ -5522,12 +5559,24 @@ void Locallab::curveChanged(CurveEditor* ce) } } + if (ce == lcshape) { + if (listener) { + listener->panelChanged(Evlocallablcshape, M("HISTORY_CUSTOMCURVE")); + } + } + if (ce == ccshape) { if (listener) { listener->panelChanged(Evlocallabccshape, M("HISTORY_CUSTOMCURVE")); } } + if (ce == clshape) { + if (listener) { + listener->panelChanged(Evlocallabclshape, M("HISTORY_CUSTOMCURVE")); + } + } + if (ce == rgbshape) { if (listener) { listener->panelChanged(Evlocallabrgbshape, M("HISTORY_CUSTOMCURVE")); @@ -6884,6 +6933,7 @@ void Locallab::inversChanged() if (multiImage && invers->get_inconsistent()) { sensi->show(); llCurveEditorG->show(); + clCurveEditorG->show(); HCurveEditorG->show(); curvactiv->hide(); qualitycurveMethod->show(); @@ -6902,6 +6952,7 @@ void Locallab::inversChanged() } else if (invers->get_active()) { sensi->show(); llCurveEditorG->show(); + clCurveEditorG->hide(); HCurveEditorG->hide(); curvactiv->hide(); qualitycurveMethod->hide(); @@ -6919,6 +6970,7 @@ void Locallab::inversChanged() } else { sensi->show(); llCurveEditorG->show(); + clCurveEditorG->show(); HCurveEditorG->show(); curvactiv->hide(); qualitycurveMethod->show(); @@ -10107,7 +10159,9 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con llshape->setCurve(pp->locallab.spots.at(index).llcurve); + lcshape->setCurve(pp->locallab.spots.at(index).lccurve); ccshape->setCurve(pp->locallab.spots.at(index).cccurve); + clshape->setCurve(pp->locallab.spots.at(index).clcurve); rgbshape->setCurve(pp->locallab.spots.at(index).rgbcurve); LHshape->setCurve(pp->locallab.spots.at(index).LHcurve); HHshape->setCurve(pp->locallab.spots.at(index).HHcurve); @@ -10595,7 +10649,9 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con } llshape->setUnChanged(!spotState->llcurve); + lcshape->setUnChanged(!spotState->lccurve); ccshape->setUnChanged(!spotState->cccurve); + clshape->setUnChanged(!spotState->clcurve); rgbshape->setUnChanged(!spotState->rgbcurve); LHshape->setUnChanged(!spotState->LHcurve); HHshape->setUnChanged(!spotState->HHcurve); @@ -10940,11 +10996,12 @@ void Locallab::updateSpecificGUIState() { // Update Color & Light GUI according to invers button state (to be compliant with inversChanged function) sensi->show(); - llCurveEditorG->show(); curvactiv->hide(); blurcolde->show(); if (multiImage && invers->get_inconsistent()) { + llCurveEditorG->show(); + clCurveEditorG->show(); HCurveEditorG->show(); qualitycurveMethod->show(); labqualcurv->show(); @@ -10958,6 +11015,8 @@ void Locallab::updateSpecificGUIState() merge1colFrame->show(); } else if (invers->get_active()) { + llCurveEditorG->show(); + clCurveEditorG->hide(); HCurveEditorG->hide(); qualitycurveMethod->hide(); labqualcurv->hide(); @@ -10970,6 +11029,8 @@ void Locallab::updateSpecificGUIState() showmaskcolMethodinv->show(); merge1colFrame->hide(); } else { + llCurveEditorG->show(); + clCurveEditorG->show(); HCurveEditorG->show(); qualitycurveMethod->show(); labqualcurv->show(); diff --git a/rtgui/locallab.h b/rtgui/locallab.h index c8f4ac344..00fa770e6 100644 --- a/rtgui/locallab.h +++ b/rtgui/locallab.h @@ -76,6 +76,7 @@ private: // Curve widgets // Color & Light CurveEditorGroup* const llCurveEditorG; + CurveEditorGroup* const clCurveEditorG; CurveEditorGroup* const HCurveEditorG; CurveEditorGroup* const H2CurveEditorG; CurveEditorGroup* const rgbCurveEditorG; @@ -86,6 +87,8 @@ private: DiagonalCurveEditor* const Lmaskshape; DiagonalCurveEditor* const llshape; DiagonalCurveEditor* const ccshape; + DiagonalCurveEditor* const clshape; + DiagonalCurveEditor* const lcshape; MyComboBoxText* const toneMethod;//put here to use toneMethod in rgbshape DiagonalCurveEditor* const rgbshape; FlatCurveEditor* const LHshape; diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 29b55f4b0..70d727305 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -1019,8 +1019,10 @@ void ParamsEdited::initFrom(const std::vector& locallab.spots.at(j).toneMethod = locallab.spots.at(j).toneMethod && pSpot.toneMethod == otherSpot.toneMethod; locallab.spots.at(j).mergecolMethod = locallab.spots.at(j).mergecolMethod && pSpot.mergecolMethod == otherSpot.mergecolMethod; locallab.spots.at(j).llcurve = locallab.spots.at(j).llcurve && pSpot.llcurve == otherSpot.llcurve; - locallab.spots.at(j).rgbcurve = locallab.spots.at(j).llcurve && pSpot.rgbcurve == otherSpot.rgbcurve; + locallab.spots.at(j).lccurve = locallab.spots.at(j).lccurve && pSpot.lccurve == otherSpot.lccurve; + locallab.spots.at(j).rgbcurve = locallab.spots.at(j).rgbcurve && pSpot.rgbcurve == otherSpot.rgbcurve; locallab.spots.at(j).cccurve = locallab.spots.at(j).cccurve && pSpot.cccurve == otherSpot.cccurve; + locallab.spots.at(j).clcurve = locallab.spots.at(j).clcurve && pSpot.cccurve == otherSpot.clcurve; locallab.spots.at(j).LHcurve = locallab.spots.at(j).LHcurve && pSpot.LHcurve == otherSpot.LHcurve; locallab.spots.at(j).HHcurve = locallab.spots.at(j).HHcurve && pSpot.HHcurve == otherSpot.HHcurve; locallab.spots.at(j).invers = locallab.spots.at(j).invers && pSpot.invers == otherSpot.invers; @@ -3038,6 +3040,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.spots.at(i).llcurve = mods.locallab.spots.at(i).llcurve; } + if (locallab.spots.at(i).lccurve) { + toEdit.locallab.spots.at(i).lccurve = mods.locallab.spots.at(i).lccurve; + } + if (locallab.spots.at(i).rgbcurve) { toEdit.locallab.spots.at(i).rgbcurve = mods.locallab.spots.at(i).rgbcurve; } @@ -3046,6 +3052,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.spots.at(i).cccurve = mods.locallab.spots.at(i).cccurve; } + if (locallab.spots.at(i).clcurve) { + toEdit.locallab.spots.at(i).clcurve = mods.locallab.spots.at(i).clcurve; + } + if (locallab.spots.at(i).LHcurve) { toEdit.locallab.spots.at(i).LHcurve = mods.locallab.spots.at(i).LHcurve; } @@ -5156,7 +5166,9 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) : toneMethod(v), mergecolMethod(v), llcurve(v), + lccurve(v), cccurve(v), + clcurve(v), rgbcurve(v), LHcurve(v), HHcurve(v), @@ -5508,7 +5520,9 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v) toneMethod = v; mergecolMethod = v; llcurve = v; + lccurve = v; cccurve = v; + clcurve = v; rgbcurve = v; LHcurve = v; HHcurve = v; diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 2ddaf162f..54d606e8c 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -453,7 +453,9 @@ public: bool toneMethod; bool mergecolMethod; bool llcurve; + bool lccurve; bool cccurve; + bool clcurve; bool rgbcurve; bool LHcurve; bool HHcurve;