diff --git a/rtdata/languages/default b/rtdata/languages/default index 82d5eecf5..28573ee52 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1187,6 +1187,8 @@ HISTORY_MSG_946;Local - Mask Common shadows HISTORY_MSG_947;Local - Mask Common Contrast curve HISTORY_MSG_948;Local - Mask Common Wavelet curve HISTORY_MSG_949;Local - Mask Common Threshold levels +HISTORY_MSG_950;Local - Mask Common GF strength +HISTORY_MSG_951;Local - Mask Common GF angle 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/improcfun.h b/rtengine/improcfun.h index e1c999891..682c97b90 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -243,7 +243,7 @@ public: const LUTf& lmasklocalcurve, bool localmaskutili, const LocwavCurve & loclmasCurvecolwav, bool lmasutilicolwav, int level_bl, int level_hl, int level_br, int level_hr, int shortcu, bool delt, const float hueref, const float chromaref, const float lumaref, - float maxdE, float mindE, float maxdElim, float mindElim, float iterat, float limscope, int scope, bool fftt, float blu_ma, float cont_ma); + float maxdE, float mindE, float maxdElim, float mindElim, float iterat, float limscope, int scope, bool fftt, float blu_ma, float cont_ma, int indic); void deltaEforMask(float **rdE, int bfw, int bfh, LabImage* bufcolorig, const float hueref, const float chromaref, const float lumaref, float maxdE, float mindE, float maxdElim, float mindElim, float iterat, float limscope, int scope, float balance, float balanceh); diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index ccf6c81b0..ab4aa4d80 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -406,6 +406,8 @@ struct local_params { float slomaexp; float strmaexp; float angmaexp; + float str_mas; + float ang_mas; float strexp; float angexp; float strSH; @@ -1009,6 +1011,8 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall float slomaskexpo = ((float) locallab.spots.at(sp).slomaskexp); float strmaskexpo = ((float) locallab.spots.at(sp).strmaskexp); float angmaskexpo = ((float) locallab.spots.at(sp).angmaskexp); + float strmask = ((float) locallab.spots.at(sp).str_mask); + float angmask = ((float) locallab.spots.at(sp).ang_mask); float strexpo = ((float) locallab.spots.at(sp).strexp); float angexpo = ((float) locallab.spots.at(sp).angexp); float strSH = ((float) locallab.spots.at(sp).strSH); @@ -1147,6 +1151,9 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall lp.slomaexp = slomaskexpo; lp.strmaexp = strmaskexpo; lp.angmaexp = angmaskexpo; + lp.str_mas = strmask; + lp.ang_mas = angmask; + lp.strexp = strexpo; lp.angexp = angexpo; lp.strSH = strSH; @@ -3068,6 +3075,9 @@ void calclocalGradientParams(const struct local_params& lp, struct grad_params& } else if (indic == 11) { stops = lp.strlog; angs = lp.anglog; + } else if (indic == 12) { + stops = -lp.str_mas; + angs = lp.ang_mas; } @@ -3726,7 +3736,7 @@ void ImProcFunctions::maskcalccol(bool invmask, bool pde, int bfw, int bfh, int const LocwavCurve & loclmasCurvecolwav, bool lmasutilicolwav, int level_bl, int level_hl, int level_br, int level_hr, int shortcu, bool delt, const float hueref, const float chromaref, const float lumaref, float maxdE, float mindE, float maxdElim, float mindElim, float iterat, float limscope, int scope, - bool fftt, float blu_ma, float cont_ma + bool fftt, float blu_ma, float cont_ma, int indic ) @@ -4244,8 +4254,8 @@ void ImProcFunctions::maskcalccol(bool invmask, bool pde, int bfw, int bfh, int struct grad_params gp; - if (lp.strmaexp != 0.f) { - calclocalGradientParams(lp, gp, ystart, xstart, bfw, bfh, 0); + if ((indic == 0 && lp.strmaexp != 0.f) || (indic ==12 && lp.str_mas != 0.f)) { + calclocalGradientParams(lp, gp, ystart, xstart, bfw, bfh, indic); #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) if (multiThread) #endif @@ -10799,7 +10809,7 @@ void ImProcFunctions::Lab_Local( locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili, lochhhmasCurve, lhhmasutili, multiThread, enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskcblocalcurve, localmaskcbutili, dummy, lmasutilicolwav, 1, 1, 5, 5, shortcu, delt, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.0f, 0.f + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.0f, 0.f, -1 ); if (lp.showmaskcbmet == 3) { @@ -11015,7 +11025,7 @@ void ImProcFunctions::Lab_Local( locccmasvibCurve, lcmasvibutili, locllmasvibCurve, llmasvibutili, lochhmasvibCurve, lhmasvibutili, lochhhmasCurve, lhhmasutili, multiThread, enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskviblocalcurve, localmaskvibutili, dummy, lmasutilicolwav, 1, 1, 5, 5, shortcu, delt, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f, -1 ); if (lp.showmaskvibmet == 3) { @@ -11246,7 +11256,7 @@ void ImProcFunctions::Lab_Local( locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, lochhhmasCurve, lhhmasutili, multiThread, enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasktmlocalcurve, localmasktmutili, dummy, lmasutilicolwav, 1, 1, 5, 5, shortcu, delt, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f, -1 ); if (lp.showmasktmmet == 3) { @@ -11287,7 +11297,7 @@ void ImProcFunctions::Lab_Local( locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, lochhhmasCurve, lhhmasutili, multiThread, enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasktmlocalcurve, localmasktmutili, dummy, lmasutilicolwav, 1, 1, 5, 5, shortcu, delt, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f, -1 ); if (lp.showmasktmmet == 3) {//display mask @@ -11470,7 +11480,7 @@ void ImProcFunctions::Lab_Local( locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, lochhhmasCurve, lhhmasutili, multiThread, enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskSHlocalcurve, localmaskSHutili, dummy, lmasutilicolwav, 1, 1, 5, 5, shortcu, delt, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f, -1 ); if (lp.showmaskSHmet == 3) { @@ -11621,7 +11631,7 @@ void ImProcFunctions::Lab_Local( locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, lochhhmasCurve, lhhmasutili, multiThread, enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskSHlocalcurve, localmaskSHutili, dummy, lmasutilicolwav, 1, 1, 5, 5, shortcu, delt, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f, -1 ); @@ -11892,7 +11902,7 @@ void ImProcFunctions::Lab_Local( locccmaslcCurve, lcmaslcutili, locllmaslcCurve, llmaslcutili, lochhmaslcCurve, lhmaslcutili, lochhhmasCurve, lhhmasutili, multiThread, enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasklclocalcurve, localmasklcutili, dummy, lmasutilicolwav, 1, 1, 5, 5, shortcu, delt, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f, -1 ); if (lp.showmasklcmet == 3) { @@ -13056,7 +13066,7 @@ void ImProcFunctions::Lab_Local( locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, lochhhmasCurve, lhhmasutili, multiThread, enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskexplocalcurve, localmaskexputili, dummy, lmasutilicolwav, 1, 1, 5, 5, shortcu, delt, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f, 0 ); if (lp.showmaskexpmet == 3) { @@ -13320,7 +13330,7 @@ void ImProcFunctions::Lab_Local( locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, lochhhmasCurve, lhhmasutili, multiThread, enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmaskexplocalcurve, localmaskexputili, dummy, lmasutilicolwav, 1, 1, 5, 5, shortcu, delt, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, false, 0.f, 0.f, 0 ); if (lp.showmaskexpmetinv == 1) { @@ -13508,7 +13518,7 @@ void ImProcFunctions::Lab_Local( enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasklocalcurve, localmaskutili, loclmasCurvecolwav, lmasutilicolwav, level_bl, level_hl, level_br, level_hr, shortcu, delt, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, lp.fftColorMask, lp.blurcolmask, lp.contcolmask + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, lp.fftColorMask, lp.blurcolmask, lp.contcolmask, -1 ); if (lp.showmaskcolmet == 3) { @@ -14462,7 +14472,7 @@ void ImProcFunctions::Lab_Local( enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasklocalcurve, localmaskutili, loclmasCurvecolwav, lmasutilicolwav, level_bl, level_hl, level_br, level_hr, shortcu, false, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, lp.fftColorMask, lp.blurcolmask, lp.contcolmask + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, lp.fftColorMask, lp.blurcolmask, lp.contcolmask, -1 ); if (lp.showmaskcolmetinv == 1) { @@ -14577,7 +14587,7 @@ void ImProcFunctions::Lab_Local( enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, shado, amountcd, anchorcd, lmasklocal_curve, localmask_utili, loclmasCurve_wav, lmasutili_wav, level_bl, level_hl, level_br, level_hr, shortcu, delt, hueref, chromaref, lumaref, - maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, lp.fftma, lp.blurma, lp.contma + maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, sco, lp.fftma, lp.blurma, lp.contma, 12 ); diff --git a/rtengine/procevents.h b/rtengine/procevents.h index 63d8d7082..8fd00238c 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -972,6 +972,8 @@ enum ProcEventCode { EvlocallabLmask_shape = 946, EvlocallabLLmask_shapewav = 947, EvlocallabcsThresholdmask = 948, + Evlocallabstr_mask = 949, + Evlocallabang_mask = 950, NUMOFEVENTS }; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 31173afeb..e7267bc30 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -3796,6 +3796,8 @@ LocallabParams::LocallabSpot::LocallabSpot() : gammask(1.0), slopmask(0.0), shadmask(0.0), + str_mask(0), + ang_mask(0), HHhmask_curve{ static_cast(FCT_MinMaxCPoints), 0.0, @@ -4322,6 +4324,8 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const && gammask == other.gammask && slopmask == other.slopmask && shadmask == other.shadmask + && str_mask == other.str_mask + && ang_mask == other.ang_mask && HHhmask_curve == other.HHhmask_curve && Lmask_curve == other.Lmask_curve && LLmask_curvewav == other.LLmask_curvewav @@ -5841,6 +5845,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || spot_edited->gammask, "Locallab", "Gammask_" + index_str, spot.gammask, keyFile); saveToKeyfile(!pedited || spot_edited->slopmask, "Locallab", "Slopmask_" + index_str, spot.slopmask, keyFile); saveToKeyfile(!pedited || spot_edited->shadmask, "Locallab", "Shadmask_" + index_str, spot.shadmask, keyFile); + saveToKeyfile(!pedited || spot_edited->str_mask, "Locallab", "Str_mask_" + index_str, spot.str_mask, keyFile); + saveToKeyfile(!pedited || spot_edited->ang_mask, "Locallab", "Ang_mask_" + index_str, spot.ang_mask, keyFile); saveToKeyfile(!pedited || spot_edited->HHhmask_curve, "Locallab", "HHhmask_Curve_" + index_str, spot.HHhmask_curve, keyFile); saveToKeyfile(!pedited || spot_edited->Lmask_curve, "Locallab", "Lmask_Curve_" + index_str, spot.Lmask_curve, keyFile); saveToKeyfile(!pedited || spot_edited->LLmask_curvewav, "Locallab", "LLmask_Curvewav_" + index_str, spot.LLmask_curvewav, keyFile); @@ -7579,6 +7585,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Locallab", "Gammask_" + index_str, pedited, spot.gammask, spotEdited.gammask); assignFromKeyfile(keyFile, "Locallab", "Slopmask_" + index_str, pedited, spot.slopmask, spotEdited.slopmask); assignFromKeyfile(keyFile, "Locallab", "Shadmask_" + index_str, pedited, spot.shadmask, spotEdited.shadmask); + assignFromKeyfile(keyFile, "Locallab", "Str_mask_" + index_str, pedited, spot.str_mask, spotEdited.str_mask); + assignFromKeyfile(keyFile, "Locallab", "Ang_mask_" + index_str, pedited, spot.ang_mask, spotEdited.ang_mask); assignFromKeyfile(keyFile, "Locallab", "HHhmask_Curve_" + index_str, pedited, spot.HHhmask_curve, spotEdited.HHhmask_curve); assignFromKeyfile(keyFile, "Locallab", "Lmask_Curve_" + index_str, pedited, spot.Lmask_curve, spotEdited.Lmask_curve); assignFromKeyfile(keyFile, "Locallab", "LLmask_Curvewav_" + index_str, pedited, spot.LLmask_curvewav, spotEdited.LLmask_curvewav); diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 22a33d52a..f50f96058 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1442,6 +1442,8 @@ struct LocallabParams { double gammask; double slopmask; double shadmask; + int str_mask; + int ang_mask; std::vector HHhmask_curve; std::vector Lmask_curve; std::vector LLmask_curvewav; diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index d145b3f38..9dde3a160 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -975,7 +975,9 @@ int refreshmap[rtengine::NUMOFEVENTS] = { LUMINANCECURVE, // Evlocallabshadmask LUMINANCECURVE, // EvlocallabLmask_shape LUMINANCECURVE, // EvlocallabLLmask_shapewav - LUMINANCECURVE // EvlocallabcsThresholdmask + LUMINANCECURVE, // EvlocallabcsThresholdmask + LUMINANCECURVE, // Evlocallabstr_mask + LUMINANCECURVE // Evlocallabang_mask }; diff --git a/rtgui/locallabtools.h b/rtgui/locallabtools.h index 32b833d04..6e1a0df3f 100644 --- a/rtgui/locallabtools.h +++ b/rtgui/locallabtools.h @@ -1233,6 +1233,9 @@ private: CurveEditorGroup* const mask2CurveEditorGwav; FlatCurveEditor* const LLmask_shapewav; ThresholdAdjuster* const csThresholdmask; + Gtk::Frame* const gradFramemask; + Adjuster* const str_mask; + Adjuster* const ang_mask; sigc::connection showmask_MethodConn, enamaskConn, toolmaskConn, fftmaskConn; diff --git a/rtgui/locallabtools2.cc b/rtgui/locallabtools2.cc index 52526cf5f..6b64a97e3 100644 --- a/rtgui/locallabtools2.cc +++ b/rtgui/locallabtools2.cc @@ -4760,7 +4760,10 @@ LocallabMask::LocallabMask(): Lmask_shape(static_cast(mask2CurveEditorG->addCurve(CT_Diagonal, "L(L)"))), mask2CurveEditorGwav(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_WAVMASK"))), LLmask_shapewav(static_cast(mask2CurveEditorGwav->addCurve(CT_Flat, "L(L)", nullptr, false, false))), - csThresholdmask(Gtk::manage(new ThresholdAdjuster(M("TP_LOCALLAB_CSTHRESHOLDBLUR"), 0, 9, 0, 0, 6, 5, 0, false))) + csThresholdmask(Gtk::manage(new ThresholdAdjuster(M("TP_LOCALLAB_CSTHRESHOLDBLUR"), 0, 9, 0, 0, 6, 5, 0, false))), + gradFramemask(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRADFRA")))), + str_mask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADSTR"), -2., 2., 0.05, 0.))), + ang_mask(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADANG"), -180., 180., 0.1, 0.))) { // Parameter Mask common specific widgets @@ -4861,6 +4864,18 @@ LocallabMask::LocallabMask(): blurFrame->add(*blurmBox); maskmaskBox->pack_start(*blurFrame, Gtk::PACK_SHRINK, 0); + + gradFramemask->set_label_align(0.025, 0.5); + + str_mask->setAdjusterListener(this); + + ang_mask->setAdjusterListener(this); + ang_mask->set_tooltip_text(M("TP_LOCALLAB_GRADANG_TOOLTIP")); + ToolParamBlock* const gradmaskBox = Gtk::manage(new ToolParamBlock()); + gradmaskBox->pack_start(*str_mask); + gradmaskBox->pack_start(*ang_mask); + gradFramemask->add(*gradmaskBox); + Gtk::Frame* const toolmaskFrame = Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_TOOLMASK"))); toolmaskFrame->set_label_align(0.025, 0.5); ToolParamBlock* const toolmaskBox = Gtk::manage(new ToolParamBlock()); @@ -4875,6 +4890,7 @@ LocallabMask::LocallabMask(): toolmaskBox->pack_start(*mask2CurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor toolmaskBox->pack_start(*mask2CurveEditorGwav, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor toolmaskBox->pack_start(*csThresholdmask, Gtk::PACK_SHRINK, 0); + toolmaskBox->pack_start(*gradFramemask, Gtk::PACK_SHRINK, 0); toolmaskFrame->add(*toolmaskBox); maskmaskBox->pack_start(*toolmaskFrame); pack_start(*maskmaskBox); @@ -5014,6 +5030,8 @@ void LocallabMask::read(const rtengine::procparams::ProcParams* pp, const Params gammask->setValue(spot.gammask); slopmask->setValue(spot.slopmask); shadmask->setValue(spot.shadmask); + str_mask->setValue(spot.str_mask); + ang_mask->setValue(spot.ang_mask); HHhmask_shape->setCurve(spot.HHhmask_curve); fftmask->set_active(spot.fftmask); Lmask_shape->setCurve(spot.Lmask_curve); @@ -5057,6 +5075,8 @@ void LocallabMask::write(rtengine::procparams::ProcParams* pp, ParamsEdited* ped spot.gammask = gammask->getValue(); spot.slopmask = slopmask->getValue(); spot.shadmask = shadmask->getValue(); + spot.str_mask = str_mask->getIntValue(); + spot.ang_mask = ang_mask->getIntValue(); spot.HHhmask_curve = HHhmask_shape->getCurve(); spot.fftmask = fftmask->get_active(); spot.contmask = contmask->getValue(); @@ -5105,6 +5125,8 @@ void LocallabMask::setDefaults(const rtengine::procparams::ProcParams* defParams lapmask->setDefault(defSpot.lapmask); slopmask->setDefault(defSpot.slopmask); shadmask->setDefault(defSpot.shadmask); + str_mask->setDefault(defSpot.str_mask); + ang_mask->setDefault(defSpot.ang_mask); HHhmask_shape->setCurve(defSpot.HHhmask_curve); contmask->setDefault(defSpot.contmask); blurmask->setDefault(defSpot.blurmask); @@ -5123,8 +5145,11 @@ void LocallabMask::updateGUIToMode(const modeType new_type) gammask->hide(); slopmask->hide(); shadmask->hide(); + str_mask->hide(); + ang_mask->hide(); struFrame->hide(); blurFrame->hide(); + gradFramemask->hide(); mask_HCurveEditorG->hide(); // mask2CurveEditorG->hide(); mask2CurveEditorGwav->hide(); @@ -5136,8 +5161,11 @@ void LocallabMask::updateGUIToMode(const modeType new_type) gammask->show(); slopmask->show(); shadmask->show(); + str_mask->show(); + ang_mask->show(); struFrame->show(); blurFrame->show(); + gradFramemask->show(); mask_HCurveEditorG->show(); // mask2CurveEditorG->show(); mask2CurveEditorGwav->show(); @@ -5158,6 +5186,8 @@ void LocallabMask::convertParamToNormal() gammask->setValue(defSpot.gammask); slopmask->setValue(defSpot.slopmask); shadmask->setValue(defSpot.shadmask); + str_mask->setValue(defSpot.str_mask); + ang_mask->setValue(defSpot.ang_mask); strumaskmask->setValue(defSpot.strumaskmask); toolmask->set_active(defSpot.toolmask); fftmask->set_active(defSpot.fftmask); @@ -5358,6 +5388,20 @@ void LocallabMask::adjusterChanged(Adjuster* a, double newval) } } + if (a == str_mask) { + if (listener) { + listener->panelChanged(Evlocallabstr_mask, + str_mask->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + + if (a == ang_mask) { + if (listener) { + listener->panelChanged(Evlocallabang_mask, + ang_mask->getTextValue() + " (" + escapeHtmlChars(spotName) + ")"); + } + } + } } diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 6349b84e0..84a283ea9 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -1498,6 +1498,8 @@ void ParamsEdited::initFrom(const std::vector& locallab.spots.at(j).gammask = locallab.spots.at(j).gammask && pSpot.gammask == otherSpot.gammask; locallab.spots.at(j).slopmask = locallab.spots.at(j).slopmask && pSpot.slopmask == otherSpot.slopmask; locallab.spots.at(j).shadmask = locallab.spots.at(j).shadmask && pSpot.shadmask == otherSpot.shadmask; + locallab.spots.at(j).str_mask = locallab.spots.at(j).str_mask && pSpot.str_mask == otherSpot.str_mask; + locallab.spots.at(j).ang_mask = locallab.spots.at(j).ang_mask && pSpot.ang_mask == otherSpot.ang_mask; locallab.spots.at(j).HHhmask_curve = locallab.spots.at(j).HHhmask_curve && pSpot.HHhmask_curve == otherSpot.HHhmask_curve; locallab.spots.at(j).Lmask_curve = locallab.spots.at(j).Lmask_curve && pSpot.Lmask_curve == otherSpot.Lmask_curve; locallab.spots.at(j).LLmask_curvewav = locallab.spots.at(j).LLmask_curvewav && pSpot.LLmask_curvewav == otherSpot.LLmask_curvewav; @@ -4888,6 +4890,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.spots.at(i).shadmask = mods.locallab.spots.at(i).shadmask; } + if (locallab.spots.at(i).str_mask) { + toEdit.locallab.spots.at(i).str_mask = mods.locallab.spots.at(i).str_mask; + } + + if (locallab.spots.at(i).ang_mask) { + toEdit.locallab.spots.at(i).ang_mask = mods.locallab.spots.at(i).ang_mask; + } + if (locallab.spots.at(i).HHhmask_curve) { toEdit.locallab.spots.at(i).HHhmask_curve = mods.locallab.spots.at(i).HHhmask_curve; } @@ -6494,6 +6504,8 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) : gammask(v), slopmask(v), shadmask(v), + str_mask(v), + ang_mask(v), HHhmask_curve(v), Lmask_curve(v), LLmask_curvewav(v), @@ -6980,6 +6992,8 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v) gammask = v; slopmask = v; shadmask = v; + str_mask = v; + ang_mask = v; HHhmask_curve =(v); Lmask_curve =(v); LLmask_curvewav =(v); diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index dea2a4a9f..b58a96b46 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -856,6 +856,8 @@ public: bool gammask; bool slopmask; bool shadmask; + bool str_mask; + bool ang_mask; bool HHhmask_curve; bool Lmask_curve; bool LLmask_curvewav;