diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 99bc2581d..20f7835d8 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -889,6 +889,7 @@ void Crop::update(int todo) bool localmaskcbutili = parent->localmaskcbutili; bool localmaskblutili = parent->localmaskblutili; bool localmasklcutili = parent->localmasklcutili; + bool localmask_utili = parent->localmask_utili; LUTf lmasklocalcurve2(65536, 0); LUTf lmaskexplocalcurve2(65536, 0); LUTf lmaskSHlocalcurve2(65536, 0); @@ -898,6 +899,7 @@ void Crop::update(int todo) LUTf lmaskcblocalcurve2(65536, 0); LUTf lmaskbllocalcurve2(65536, 0); LUTf lmasklclocalcurve2(65536, 0); + LUTf lmasklocal_curve2(65536, 0); LUTf hltonecurveloc2(65536, 0); //65536 LUTf shtonecurveloc2(65536, 0); LUTf tonecurveloc2(65536, 0); @@ -932,6 +934,11 @@ void Crop::update(int todo) bool lhmasblutili = parent->lhmasblutili; bool lcmasblutili = parent->lcmasblutili; bool llmasblutili = parent->llmasblutili; + bool llmas_utili = parent->llmas_utili; + bool lhmas_utili = parent->lhmas_utili; + bool lcmas_utili = parent->lcmas_utili; + bool lhhmas_utili = parent->lhhmas_utili; + bool locwavutili = parent->locwavutili; bool locwavdenutili = parent->locwavdenutili; bool loclevwavutili = parent->loclevwavutili; @@ -941,6 +948,7 @@ void Crop::update(int todo) bool locedgwavutili = parent->locedgwavutili; bool lmasutiliblwav = parent->lmasutiliblwav; bool lmasutilicolwav = parent->lmasutilicolwav; + bool lmasutili_wav = parent->lmasutili_wav; // float avg = parent->avg; LUTu dummy; @@ -978,9 +986,15 @@ void Crop::update(int todo) LocCCmaskCurve locccmasblCurve; LocLLmaskCurve locllmasblCurve; LocHHmaskCurve lochhmasblCurve; + LocCCmaskCurve locccmas_Curve; + LocLLmaskCurve locllmas_Curve; + LocHHmaskCurve lochhmas_Curve; + LocHHmaskCurve lochhhmas_Curve; + LocwavCurve locwavCurve; LocwavCurve loclmasCurveblwav; LocwavCurve loclmasCurvecolwav; + LocwavCurve loclmasCurve_wav; LocwavCurve loclevwavCurve; LocwavCurve locconwavCurve; LocwavCurve loccompwavCurve; @@ -1031,6 +1045,11 @@ void Crop::update(int todo) locccmaslcCurve.Set(params.locallab.spots.at(sp).CCmasklccurve, lcmaslcutili); locllmaslcCurve.Set(params.locallab.spots.at(sp).LLmasklccurve, llmaslcutili); lochhmaslcCurve.Set(params.locallab.spots.at(sp).HHmasklccurve, lhmaslcutili); + locccmas_Curve.Set(params.locallab.spots.at(sp).CCmaskcurve, lcmas_utili); + locllmas_Curve.Set(params.locallab.spots.at(sp).LLmaskcurve, llmas_utili); + lochhmas_Curve.Set(params.locallab.spots.at(sp).HHmaskcurve, lhmas_utili); + lochhhmas_Curve.Set(params.locallab.spots.at(sp).HHhmaskcurve, lhhmas_utili); + loclmasCurve_wav.Set(params.locallab.spots.at(sp).LLmask_curvewav, lmasutili_wav); locwavCurve.Set(params.locallab.spots.at(sp).locwavcurve, locwavutili); locwavCurveden.Set(params.locallab.spots.at(sp).locwavcurveden, locwavdenutili); @@ -1069,6 +1088,8 @@ void Crop::update(int todo) CurveFactory::curvemaskLocal(localmasklcutili, params.locallab.spots.at(sp).Lmasklccurve, lmasklclocalcurve2, sca); localmaskblutili = false; CurveFactory::curvemaskLocal(localmaskblutili, params.locallab.spots.at(sp).Lmaskblcurve, lmaskbllocalcurve2, sca); + localmask_utili = false; + CurveFactory::curvemaskLocal(localmask_utili, params.locallab.spots.at(sp).Lmask_curve, lmasklocal_curve2, sca); double ecomp = params.locallab.spots.at(sp).expcomp; double black = params.locallab.spots.at(sp).black; @@ -1121,7 +1142,9 @@ void Crop::update(int todo) lmaskretilocalcurve2, localmaskretiutili, lmaskcblocalcurve2, localmaskcbutili, lmaskbllocalcurve2, localmaskblutili, - lmasklclocalcurve2, localmasklcutili, + lmasklclocalcurve2, localmasklcutili, + lmasklocal_curve2, localmask_utili, + locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, lochhhmasCurve, lhhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, locccmasvibCurve, lcmasvibutili, locllmasvibCurve, llmasvibutili, lochhmasvibCurve, lhmasvibutili, @@ -1130,6 +1153,8 @@ void Crop::update(int todo) locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, locccmasblCurve, lcmasblutili, locllmasblCurve, llmasblutili, lochhmasblCurve, lhmasblutili, locccmaslcCurve, lcmaslcutili, locllmaslcCurve, llmaslcutili, lochhmaslcCurve, lhmaslcutili, + locccmas_Curve, lcmas_utili, locllmas_Curve, llmas_utili, lochhmas_Curve, lhmas_utili, + lochhhmas_Curve, lhhmas_utili, loclmasCurveblwav,lmasutiliblwav, loclmasCurvecolwav,lmasutilicolwav, locwavCurve, locwavutili, @@ -1139,6 +1164,7 @@ void Crop::update(int todo) loccomprewavCurve, loccomprewavutili, locwavCurveden, locwavdenutili, locedgwavCurve, locedgwavutili, + loclmasCurve_wav,lmasutili_wav, LHutili, HHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, parent->previewDeltaE, parent->locallColorMask, parent->locallColorMaskinv, parent->locallExpMask, parent->locallExpMaskinv, parent->locallSHMask, parent->locallSHMaskinv, parent->locallvibMask, parent->localllcMask, parent->locallsharMask, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask, @@ -1157,7 +1183,9 @@ void Crop::update(int todo) lmaskretilocalcurve2, localmaskretiutili, lmaskcblocalcurve2, localmaskcbutili, lmaskbllocalcurve2, localmaskblutili, - lmasklclocalcurve2, localmasklcutili, + lmasklclocalcurve2, localmasklcutili, + lmasklocal_curve2, localmask_utili, + locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili,lochhhmasCurve, lhhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, locccmasvibCurve, lcmasvibutili, locllmasvibCurve, llmasvibutili, lochhmasvibCurve, lhmasvibutili, @@ -1166,6 +1194,9 @@ void Crop::update(int todo) locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, locccmasblCurve, lcmasblutili, locllmasblCurve, llmasblutili, lochhmasblCurve, lhmasblutili, locccmaslcCurve, lcmaslcutili, locllmaslcCurve, llmaslcutili, lochhmaslcCurve, lhmaslcutili, + locccmas_Curve, lcmas_utili, locllmas_Curve, llmas_utili, lochhmas_Curve, lhmas_utili, + lochhhmas_Curve, lhhmas_utili, + loclmasCurveblwav,lmasutiliblwav, loclmasCurvecolwav,lmasutilicolwav, locwavCurve, locwavutili, @@ -1175,6 +1206,7 @@ void Crop::update(int todo) loccomprewavCurve, loccomprewavutili, locwavCurveden, locwavdenutili, locedgwavCurve, locedgwavutili, + loclmasCurve_wav,lmasutili_wav, LHutili, HHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 019486198..5e3aaa0fc 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -209,6 +209,7 @@ ImProcCoordinator::ImProcCoordinator() : lmaskcblocalcurve(65536, 0), lmaskbllocalcurve(65536, 0), lmasklclocalcurve(65536, 0), + lmasklocal_curve(65536, 0), locallutili(false), localclutili(false), locallcutili(false), @@ -228,6 +229,7 @@ ImProcCoordinator::ImProcCoordinator() : localmaskcbutili(false), localmaskblutili(false), localmasklcutili(false), + localmask_utili(false), lcmasexputili(false), lhmasexputili(false), llmasexputili(false), @@ -252,6 +254,11 @@ ImProcCoordinator::ImProcCoordinator() : lcmasblutili(false), lhmasblutili(false), llmasblutili(false), + llmas_utili(false), + lhmas_utili(false), + lcmas_utili(false), + lhhmas_utili(false), + locwavutili(false), locwavdenutili(false), loclevwavutili(false), @@ -261,6 +268,7 @@ ImProcCoordinator::ImProcCoordinator() : locedgwavutili(false), lmasutiliblwav(false), lmasutilicolwav(false), + lmasutili_wav(false), LHutili(false), HHutili(false), lastsavrests(500, -10000), @@ -1151,6 +1159,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) localmaskcbutili = false; localmaskblutili = false; localmasklcutili = false; + localmask_utili = false; lcmasSHutili = false; lhmasSHutili = false; llmasSHutili = false; @@ -1172,7 +1181,11 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) lcmasblutili = false; lhmasblutili = false; llmasblutili = false; - lcmasutili = false; + llmas_utili = false; + lhmas_utili = false; + lcmas_utili = false; + lhhmas_utili = false; + locwavutili = false; locwavdenutili = false; loclevwavutili = false; @@ -1182,6 +1195,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) locedgwavutili = false; lmasutiliblwav = false; lmasutilicolwav = false; + lmasutili_wav = false; locRETgainCurve.Set(params->locallab.spots.at(sp).localTgaincurve); locRETtransCurve.Set(params->locallab.spots.at(sp).localTtranscurve); loclhCurve.Set(params->locallab.spots.at(sp).LHcurve, LHutili); @@ -1214,6 +1228,11 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) locllmasblCurve.Set(params->locallab.spots.at(sp).LLmaskblcurve, llmasblutili); locccmasblCurve.Set(params->locallab.spots.at(sp).CCmaskblcurve, lcmasblutili); lochhmasblCurve.Set(params->locallab.spots.at(sp).HHmaskblcurve, lhmasblutili); + locccmas_Curve.Set(params->locallab.spots.at(sp).CCmaskcurve, lcmas_utili); + locllmas_Curve.Set(params->locallab.spots.at(sp).LLmaskcurve, llmas_utili); + lochhmas_Curve.Set(params->locallab.spots.at(sp).HHmaskcurve, lhmas_utili); + lochhhmas_Curve.Set(params->locallab.spots.at(sp).HHhmaskcurve, lhhmas_utili); + loclmasCurveblwav.Set(params->locallab.spots.at(sp).LLmaskblcurvewav, lmasutiliblwav); loclmasCurvecolwav.Set(params->locallab.spots.at(sp).LLmaskcolcurvewav, lmasutilicolwav); locwavCurve.Set(params->locallab.spots.at(sp).locwavcurve, locwavutili); @@ -1223,6 +1242,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) loccomprewavCurve.Set(params->locallab.spots.at(sp).loccomprewavcurve, loccomprewavutili); locwavCurveden.Set(params->locallab.spots.at(sp).locwavcurveden, locwavdenutili); locedgwavCurve.Set(params->locallab.spots.at(sp).locedgwavcurve, locedgwavutili); + loclmasCurve_wav.Set(params->locallab.spots.at(sp).LLmask_curvewav, lmasutili_wav); + CurveFactory::curveLocal(locallutili, params->locallab.spots.at(sp).llcurve, lllocalcurve, sca); CurveFactory::curveLocal(localclutili, params->locallab.spots.at(sp).clcurve, cllocalcurve, sca); CurveFactory::curveLocal(locallcutili, params->locallab.spots.at(sp).lccurve, lclocalcurve, sca); @@ -1238,6 +1259,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) CurveFactory::curvemaskLocal(localmaskcbutili, params->locallab.spots.at(sp).Lmaskcbcurve, lmaskcblocalcurve, sca); CurveFactory::curvemaskLocal(localmaskblutili, params->locallab.spots.at(sp).Lmaskblcurve, lmaskbllocalcurve, sca); CurveFactory::curvemaskLocal(localmasklcutili, params->locallab.spots.at(sp).Lmasklccurve, lmasklclocalcurve, sca); + CurveFactory::curvemaskLocal(localmask_utili, params->locallab.spots.at(sp).Lmask_curve, lmasklocal_curve, sca); double ecomp = params->locallab.spots.at(sp).expcomp; double black = params->locallab.spots.at(sp).black; double hlcompr = params->locallab.spots.at(sp).hlcompr; @@ -1303,6 +1325,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) lmaskcblocalcurve, localmaskcbutili, lmaskbllocalcurve, localmaskblutili, lmasklclocalcurve, localmasklcutili, + lmasklocal_curve, localmask_utili, + locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, lochhhmasCurve, lhhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, locccmasvibCurve, lcmasvibutili, locllmasvibCurve, llmasvibutili, lochhmasvibCurve, lhmasvibutili, @@ -1311,6 +1335,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, locccmasblCurve, lcmasblutili, locllmasblCurve, llmasblutili, lochhmasblCurve, lhmasblutili, locccmaslcCurve, lcmaslcutili, locllmaslcCurve, llmaslcutili, lochhmaslcCurve, lhmaslcutili, + locccmas_Curve, lcmas_utili, locllmas_Curve, llmas_utili, lochhmas_Curve, lhmas_utili, + lochhhmas_Curve, lhhmas_utili, loclmasCurveblwav, lmasutiliblwav, loclmasCurvecolwav, lmasutilicolwav, locwavCurve, locwavutili, @@ -1320,6 +1346,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) loccomprewavCurve, loccomprewavutili, locwavCurveden, locwavdenutili, locedgwavCurve, locedgwavutili, + loclmasCurve_wav, lmasutili_wav, LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav, false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index da253c072..8ad20f0d8 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -257,6 +257,8 @@ protected: LUTf lmaskcblocalcurve; LUTf lmaskbllocalcurve; LUTf lmasklclocalcurve; + LUTf lmasklocal_curve; + // LUTu lhist16loc; LocretigainCurve locRETgainCurve; LocretitransCurve locRETtransCurve; @@ -291,6 +293,11 @@ protected: LocCCmaskCurve locccmasblCurve; LocLLmaskCurve locllmasblCurve; LocHHmaskCurve lochhmasblCurve; + LocCCmaskCurve locccmas_Curve; + LocLLmaskCurve locllmas_Curve; + LocHHmaskCurve lochhmas_Curve; + LocHHmaskCurve lochhhmas_Curve; + LocwavCurve locwavCurve; LocwavCurve loclmasCurveblwav; LocwavCurve loclmasCurvecolwav; @@ -300,6 +307,7 @@ protected: LocwavCurve loccomprewavCurve; LocwavCurve locwavCurveden; LocwavCurve locedgwavCurve; + LocwavCurve loclmasCurve_wav; bool locallutili; bool localclutili; @@ -320,6 +328,7 @@ protected: bool localmaskcbutili; bool localmaskblutili; bool localmasklcutili; + bool localmask_utili; bool lcmasexputili; bool lhmasexputili; bool llmasexputili; @@ -344,6 +353,11 @@ protected: bool lcmasblutili; bool lhmasblutili; bool llmasblutili; + bool llmas_utili; + bool lhmas_utili; + bool lcmas_utili; + bool lhhmas_utili; + bool locwavutili; bool locwavdenutili; bool loclevwavutili; @@ -353,6 +367,7 @@ protected: bool locedgwavutili; bool lmasutiliblwav; bool lmasutilicolwav; + bool lmasutili_wav; bool LHutili; bool HHutili; LUTu lastsavrests; diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 355b5d435..d09a1aabd 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -299,6 +299,8 @@ public: const LUTf& lmaskcblocalcurve, bool localmaskcbutili, const LUTf& lmaskbllocalcurve, bool localmaskblutili, const LUTf& lmasklclocalcurve, bool localmasklcutili, + const LUTf& lmasklocal_curve, bool localmask_utili, + const LocCCmaskCurve& locccmasCurve, bool lcmasutili, const LocLLmaskCurve& locllmasCurve, bool llmasutili, const LocHHmaskCurve& lochhmasCurve, bool lhmasutili, const LocHHmaskCurve& lochhhmasCurve, bool lhhmasutili, const LocCCmaskCurve& locccmasexpCurve, bool lcmasexputili, const LocLLmaskCurve& locllmasexpCurve, bool llmasexputili, const LocHHmaskCurve& lochhmasexpCurve, bool lhmasexputili, const LocCCmaskCurve& locccmasSHCurve, bool lcmasSHutili, const LocLLmaskCurve& locllmasSHCurve, bool llmasSHutili, const LocHHmaskCurve& lochhmasSHCurve, bool lhmasSHutili, @@ -308,6 +310,9 @@ public: const LocCCmaskCurve& locccmastmCurve, bool lcmastmutili, const LocLLmaskCurve& locllmastmCurve, bool llmastmutili, const LocHHmaskCurve& lochhmastmCurve, bool lhmastmutili, const LocCCmaskCurve& locccmasblCurve, bool lcmasblutili, const LocLLmaskCurve& locllmasblCurve, bool llmasblutili, const LocHHmaskCurve& lochhmasblCurve, bool lhmasblutili, const LocCCmaskCurve& locccmaslcCurve, bool lcmaslcutili, const LocLLmaskCurve& locllmaslcCurve, bool llmaslcutili, const LocHHmaskCurve& lochhmaslcCurve, bool lhmaslcutili, + const LocCCmaskCurve& locccmas_Curve, bool lcmas_utili, const LocLLmaskCurve& locllmas_Curve, bool llmas_utili, const LocHHmaskCurve& lochhmas_Curve, bool lhmas_utili, + const LocHHmaskCurve& lochhhmas_Curve, bool lhhmas_utili, + const LocwavCurve& loclmasCurveblwav, bool lmasutiliblwav, const LocwavCurve& loclmasCurvecolwav, bool lmasutilicolwav, const LocwavCurve& locwavCurve, bool locwavutili, @@ -317,6 +322,7 @@ public: const LocwavCurve& loccomprewavCurve, bool loccomprewavutili, const LocwavCurve& locwavCurveden, bool locwavdenutili, const LocwavCurve& locedgwavCurve, bool locedgwavutili, + const LocwavCurve& loclmasCurve_wav, bool lmasutili_wav, bool LHutili, bool HHutili, const LUTf& cclocalcurve, bool localcutili, const LUTf& rgblocalcurve, bool localrgbutili, bool localexutili, const LUTf& exlocalcurve, const LUTf& hltonecurveloc, const LUTf& shtonecurveloc, const LUTf& tonecurveloc, const LUTf& lightCurveloc, double& huerefblur, double &chromarefblur, double& lumarefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, int &lastsav, bool prevDeltaE, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index 7b27712e1..65c0e120b 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -9527,6 +9527,8 @@ void ImProcFunctions::Lab_Local( const LUTf& lmaskcblocalcurve, bool localmaskcbutili, const LUTf& lmaskbllocalcurve, bool localmaskblutili, const LUTf& lmasklclocalcurve, bool localmasklcutili, + const LUTf& lmasklocal_curve, bool localmask_utili, + const LocCCmaskCurve& locccmasCurve, bool lcmasutili, const LocLLmaskCurve& locllmasCurve, bool llmasutili, const LocHHmaskCurve& lochhmasCurve, bool lhmasutili, const LocHHmaskCurve& lochhhmasCurve, bool lhhmasutili, const LocCCmaskCurve& locccmasexpCurve, bool lcmasexputili, const LocLLmaskCurve& locllmasexpCurve, bool llmasexputili, const LocHHmaskCurve& lochhmasexpCurve, bool lhmasexputili, const LocCCmaskCurve& locccmasSHCurve, bool lcmasSHutili, const LocLLmaskCurve& locllmasSHCurve, bool llmasSHutili, const LocHHmaskCurve& lochhmasSHCurve, bool lhmasSHutili, @@ -9536,6 +9538,8 @@ void ImProcFunctions::Lab_Local( const LocCCmaskCurve& locccmastmCurve, bool lcmastmutili, const LocLLmaskCurve& locllmastmCurve, bool llmastmutili, const LocHHmaskCurve& lochhmastmCurve, bool lhmastmutili, const LocCCmaskCurve& locccmasblCurve, bool lcmasblutili, const LocLLmaskCurve& locllmasblCurve, bool llmasblutili, const LocHHmaskCurve& lochhmasblCurve, bool lhmasblutili, const LocCCmaskCurve& locccmaslcCurve, bool lcmaslcutili, const LocLLmaskCurve& locllmaslcCurve, bool llmaslcutili, const LocHHmaskCurve& lochhmaslcCurve, bool lhmaslcutili, + const LocCCmaskCurve& locccmas_Curve, bool lcmas_utili, const LocLLmaskCurve& locllmas_Curve, bool llmas_utili, const LocHHmaskCurve& lochhmas_Curve, bool lhmas_utili, + const LocHHmaskCurve& lochhhmas_Curve, bool lhhmas_utili, const LocwavCurve& loclmasCurveblwav, bool lmasutiliblwav, const LocwavCurve& loclmasCurvecolwav, bool lmasutilicolwav, const LocwavCurve& locwavCurve, bool locwavutili, @@ -9545,6 +9549,8 @@ void ImProcFunctions::Lab_Local( const LocwavCurve& loccomprewavCurve, bool loccomprewavutili, const LocwavCurve& locwavCurveden, bool locwavdenutili, const LocwavCurve& locedgwavCurve, bool locedgwavutili, + const LocwavCurve& loclmasCurve_wav, bool lmasutili_wav, + bool LHutili, bool HHutili, const LUTf& cclocalcurve, bool localcutili, const LUTf& rgblocalcurve, bool localrgbutili, bool localexutili, const LUTf& exlocalcurve, const LUTf& hltonecurveloc, const LUTf& shtonecurveloc, const LUTf& tonecurveloc, const LUTf& lightCurveloc, double& huerefblur, double& chromarefblur, double& lumarefblur, double& hueref, double& chromaref, double& lumaref, double& sobelref, int &lastsav, bool prevDeltaE, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 3c0e0aee8..d991a0f9f 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -1125,8 +1125,14 @@ private: LocCCmaskCurve locccmasblCurve; LocLLmaskCurve locllmasblCurve; LocHHmaskCurve lochhmasblCurve; + LocCCmaskCurve locccmas_Curve; + LocLLmaskCurve locllmas_Curve; + LocHHmaskCurve lochhmas_Curve; + LocHHmaskCurve lochhhmas_Curve; + LocwavCurve loclmasCurveblwav; LocwavCurve loclmasCurvecolwav; + LocwavCurve loclmasCurve_wav; LocwavCurve locwavCurve; LocwavCurve loclevwavCurve; LocwavCurve locconwavCurve; @@ -1153,6 +1159,7 @@ private: LUTf lmaskcblocalcurve(65536, 0); LUTf lmaskbllocalcurve(65536, 0); LUTf lmasklclocalcurve(65536, 0); + LUTf lmasklocal_curve(65536, 0); // int maxspot = 1; float** shbuffer = nullptr; @@ -1188,6 +1195,7 @@ private: bool localmaskcbutili = false; bool localmaskblutili = false; bool localmasklcutili = false; + bool localmask_utili = false; bool lcmasexputili = false; bool lhmasexputili = false; bool llmasexputili = false; @@ -1212,6 +1220,11 @@ private: bool lcmasblutili = false; bool lhmasblutili = false; bool llmasblutili = false; + bool llmas_utili = false; + bool lhmas_utili = false; + bool lcmas_utili = false; + bool lhhmas_utili = false; + bool locwavutili = false; bool locwavdenutili = false; bool loclevwavutili = false; @@ -1221,6 +1234,7 @@ private: bool locedgwavutili = false; bool lmasutiliblwav = false; bool lmasutilicolwav = false; + bool lmasutili_wav = false; locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve); locRETtransCurve.Set(params.locallab.spots.at(sp).localTtranscurve); loclhCurve.Set(params.locallab.spots.at(sp).LHcurve, LHutili); @@ -1250,8 +1264,14 @@ private: locccmasblCurve.Set(params.locallab.spots.at(sp).CCmaskblcurve, lcmasblutili); locllmasblCurve.Set(params.locallab.spots.at(sp).LLmaskblcurve, llmasblutili); lochhmasblCurve.Set(params.locallab.spots.at(sp).HHmaskblcurve, lhmasblutili); + locccmas_Curve.Set(params.locallab.spots.at(sp).CCmaskcurve, lcmas_utili); + locllmas_Curve.Set(params.locallab.spots.at(sp).LLmaskcurve, llmas_utili); + lochhmas_Curve.Set(params.locallab.spots.at(sp).HHmaskcurve, lhmas_utili); + lochhhmas_Curve.Set(params.locallab.spots.at(sp).HHhmaskcurve, lhhmas_utili); + loclmasCurveblwav.Set(params.locallab.spots.at(sp).LLmaskblcurvewav, lmasutiliblwav); loclmasCurvecolwav.Set(params.locallab.spots.at(sp).LLmaskcolcurvewav, lmasutilicolwav); + loclmasCurve_wav.Set(params.locallab.spots.at(sp).LLmask_curvewav, lmasutili_wav); locwavCurve.Set(params.locallab.spots.at(sp).locwavcurve, locwavutili); locwavCurveden.Set(params.locallab.spots.at(sp).locwavcurveden, locwavdenutili); @@ -1275,6 +1295,7 @@ private: CurveFactory::curvemaskLocal(localmaskcbutili, params.locallab.spots.at(sp).Lmaskcbcurve, lmaskcblocalcurve, 1); CurveFactory::curvemaskLocal(localmaskblutili, params.locallab.spots.at(sp).Lmaskblcurve, lmaskbllocalcurve, 1); CurveFactory::curvemaskLocal(localmasklcutili, params.locallab.spots.at(sp).Lmasklccurve, lmasklclocalcurve, 1); + CurveFactory::curvemaskLocal(localmask_utili, params.locallab.spots.at(sp).Lmask_curve, lmasklocal_curve, 1); //provisory double ecomp = params.locallab.spots.at(sp).expcomp; double black = params.locallab.spots.at(sp).black; @@ -1323,6 +1344,8 @@ private: lmaskcblocalcurve, localmaskcbutili, lmaskbllocalcurve, localmaskblutili, lmasklclocalcurve, localmasklcutili, + lmasklocal_curve, localmask_utili, + locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, lochhhmasCurve, lhhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, locccmasvibCurve, lcmasvibutili, locllmasvibCurve, llmasvibutili, lochhmasvibCurve, lhmasvibutili, @@ -1331,6 +1354,8 @@ private: locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, locccmasblCurve, lcmasblutili, locllmasblCurve, llmasblutili, lochhmasblCurve, lhmasblutili, locccmaslcCurve, lcmaslcutili, locllmaslcCurve, llmaslcutili, lochhmaslcCurve, lhmaslcutili, + locccmas_Curve, lcmas_utili, locllmas_Curve, llmas_utili, lochhmas_Curve, lhmas_utili, + lochhhmas_Curve, lhhmas_utili, loclmasCurveblwav,lmasutiliblwav, loclmasCurvecolwav,lmasutilicolwav, locwavCurve, locwavutili, @@ -1340,6 +1365,7 @@ private: loccomprewavCurve, loccomprewavutili, locwavCurveden, locwavdenutili, locedgwavCurve, locedgwavutili, + loclmasCurve_wav,lmasutili_wav, LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);