diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index fb5ad6619..097390619 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -888,6 +888,7 @@ void Crop::update(int todo) bool localmaskutili = parent->localmaskutili; bool localmaskexputili = parent->localmaskexputili; bool localmaskSHutili = parent->localmaskSHutili; + bool localmaskvibutili = parent->localmaskvibutili; bool localmasktmutili = parent->localmasktmutili; bool localmaskretiutili = parent->localmaskretiutili; bool localmaskcbutili = parent->localmaskcbutili; @@ -895,6 +896,7 @@ void Crop::update(int todo) LUTf lmasklocalcurve2(65536, 0); LUTf lmaskexplocalcurve2(65536, 0); LUTf lmaskSHlocalcurve2(65536, 0); + LUTf lmaskviblocalcurve2(65536, 0); LUTf lmasktmlocalcurve2(65536, 0); LUTf lmaskretilocalcurve2(65536, 0); LUTf lmaskcblocalcurve2(65536, 0); @@ -915,6 +917,9 @@ void Crop::update(int todo) bool lhmasSHutili = parent->lhmasSHutili; bool lcmasSHutili = parent->lcmasSHutili; bool llmasSHutili = parent->llmasSHutili; + bool lhmasvibutili = parent->lhmasvibutili; + bool lcmasvibutili = parent->lcmasvibutili; + bool llmasvibutili = parent->llmasvibutili; bool lhmascbutili = parent->lhmascbutili; bool lcmascbutili = parent->lcmascbutili; bool llmascbutili = parent->llmascbutili; @@ -949,6 +954,9 @@ void Crop::update(int todo) LocLLmaskCurve locllmasSHCurve; LocHHmaskCurve lochhmasSHCurve; // LocHHmaskCurve lochhhmasSHCurve; + LocCCmaskCurve locccmasvibCurve; + LocLLmaskCurve locllmasvibCurve; + LocHHmaskCurve lochhmasvibCurve; LocCCmaskCurve locccmascbCurve; LocLLmaskCurve locllmascbCurve; LocHHmaskCurve lochhmascbCurve; @@ -988,6 +996,9 @@ void Crop::update(int todo) locccmasSHCurve.Set(params.locallab.spots.at(sp).CCmaskSHcurve, lcmasSHutili); locllmasSHCurve.Set(params.locallab.spots.at(sp).LLmaskSHcurve, llmasSHutili); lochhmasSHCurve.Set(params.locallab.spots.at(sp).HHmaskSHcurve, lhmasSHutili); + locccmasvibCurve.Set(params.locallab.spots.at(sp).CCmaskvibcurve, lcmasvibutili); + locllmasvibCurve.Set(params.locallab.spots.at(sp).LLmaskvibcurve, llmasvibutili); + lochhmasvibCurve.Set(params.locallab.spots.at(sp).HHmaskvibcurve, lhmasvibutili); locccmascbCurve.Set(params.locallab.spots.at(sp).CCmaskcbcurve, lcmascbutili); locllmascbCurve.Set(params.locallab.spots.at(sp).LLmaskcbcurve, llmascbutili); lochhmascbCurve.Set(params.locallab.spots.at(sp).HHmaskcbcurve, lhmascbutili); @@ -1018,6 +1029,8 @@ void Crop::update(int todo) CurveFactory::curvemaskLocal(localmaskexputili, params.locallab.spots.at(sp).Lmaskexpcurve, lmaskexplocalcurve2, sca); localmaskSHutili = false; CurveFactory::curvemaskLocal(localmaskSHutili, params.locallab.spots.at(sp).LmaskSHcurve, lmaskSHlocalcurve2, sca); + localmaskvibutili = false; + CurveFactory::curvemaskLocal(localmaskvibutili, params.locallab.spots.at(sp).Lmaskvibcurve, lmaskviblocalcurve2, sca); localmasktmutili = false; CurveFactory::curvemaskLocal(localmasktmutili, params.locallab.spots.at(sp).Lmasktmcurve, lmasktmlocalcurve2, sca); localmaskretiutili = false; @@ -1071,12 +1084,14 @@ void Crop::update(int todo) lmasklocalcurve2, localmaskutili, lmaskexplocalcurve2, localmaskexputili, lmaskSHlocalcurve2, localmaskSHutili, + lmaskviblocalcurve2, localmaskvibutili, lmasktmlocalcurve2, localmasktmutili, lmaskretilocalcurve2, localmaskretiutili, lmaskcblocalcurve2, localmaskcbutili, lmaskbllocalcurve2, localmaskblutili, 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, locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili, locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili, locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, @@ -1086,7 +1101,7 @@ void Crop::update(int todo) locwavCurve, locwavutili, LHutili, HHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, - parent->locallColorMask, parent->locallColorMaskinv, parent->locallExpMask, parent->locallExpMaskinv, parent->locallSHMask, parent->locallSHMaskinv, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask, + parent->locallColorMask, parent->locallColorMaskinv, parent->locallExpMask, parent->locallExpMaskinv, parent->locallSHMask, parent->locallSHMaskinv, parent->locallvibMask, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); if (parent->locallListener) { parent->locallListener->minmaxChanged(maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); @@ -1097,12 +1112,14 @@ void Crop::update(int todo) lmasklocalcurve2, localmaskutili, lmaskexplocalcurve2, localmaskexputili, lmaskSHlocalcurve2, localmaskSHutili, + lmaskviblocalcurve2, localmaskvibutili, lmasktmlocalcurve2, localmasktmutili, lmaskretilocalcurve2, localmaskretiutili, lmaskcblocalcurve2, localmaskcbutili, lmaskbllocalcurve2, localmaskblutili, 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, locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili, locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili, locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, @@ -1111,7 +1128,7 @@ void Crop::update(int todo) loclmasCurvecolwav,lmasutilicolwav, locwavCurve, locwavutili, LHutili, HHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, - huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); } @@ -1125,6 +1142,7 @@ void Crop::update(int todo) lmasklocalcurve2.clear(); lmaskexplocalcurve2.clear(); lmaskSHlocalcurve2.clear(); + lmaskviblocalcurve2.clear(); lmasktmlocalcurve2.clear(); lmaskretilocalcurve2.clear(); lmaskcblocalcurve2.clear(); @@ -1146,6 +1164,9 @@ void Crop::update(int todo) locllmasSHCurve.Reset(); locccmasSHCurve.Reset(); lochhmasSHCurve.Reset(); + locllmasvibCurve.Reset(); + locccmasvibCurve.Reset(); + lochhmasvibCurve.Reset(); locllmascbCurve.Reset(); locccmascbCurve.Reset(); lochhmascbCurve.Reset(); diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index ce5712a52..63c58b5ff 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -181,6 +181,7 @@ ImProcCoordinator::ImProcCoordinator() : lmasklocalcurve(65536, 0), lmaskexplocalcurve(65536, 0), lmaskSHlocalcurve(65536, 0), + lmaskviblocalcurve(65536, 0), lmasktmlocalcurve(65536, 0), lmaskretilocalcurve(65536, 0), lmaskcblocalcurve(65536, 0), @@ -196,6 +197,7 @@ ImProcCoordinator::ImProcCoordinator() : localmaskutili(false), localmaskexputili(false), localmaskSHutili(false), + localmaskvibutili(false), localmasktmutili(false), localmaskretiutili(false), localmaskcbutili(false), @@ -206,6 +208,9 @@ ImProcCoordinator::ImProcCoordinator() : lcmasSHutili(false), lhmasSHutili(false), llmasSHutili(false), + lcmasvibutili(false), + lhmasvibutili(false), + llmasvibutili(false), lcmascbutili(false), lhmascbutili(false), llmascbutili(false), @@ -953,6 +958,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) llmasexputili = false; localmaskexputili = false; localmaskSHutili = false; + localmaskvibutili = false; localmasktmutili = false; localmaskretiutili = false; localmaskcbutili = false; @@ -960,6 +966,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) lcmasSHutili = false; lhmasSHutili = false; llmasSHutili = false; + lcmasvibutili = false; + lhmasvibutili = false; + llmasvibutili = false; lcmascbutili = false; lhmascbutili = false; llmascbutili = false; @@ -990,6 +999,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) locllmasSHCurve.Set(params->locallab.spots.at(sp).LLmaskSHcurve, llmasSHutili); locccmasSHCurve.Set(params->locallab.spots.at(sp).CCmaskSHcurve, lcmasSHutili); lochhmasSHCurve.Set(params->locallab.spots.at(sp).HHmaskSHcurve, lhmasSHutili); + locllmasvibCurve.Set(params->locallab.spots.at(sp).LLmaskvibcurve, llmasvibutili); + locccmasvibCurve.Set(params->locallab.spots.at(sp).CCmaskvibcurve, lcmasvibutili); + lochhmasvibCurve.Set(params->locallab.spots.at(sp).HHmaskvibcurve, lhmasvibutili); locllmascbCurve.Set(params->locallab.spots.at(sp).LLmaskcbcurve, llmascbutili); locccmascbCurve.Set(params->locallab.spots.at(sp).CCmaskcbcurve, lcmascbutili); lochhmascbCurve.Set(params->locallab.spots.at(sp).HHmaskcbcurve, lhmascbutili); @@ -1013,6 +1025,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) CurveFactory::curvemaskLocal(localmaskutili, params->locallab.spots.at(sp).Lmaskcurve, lmasklocalcurve, sca); CurveFactory::curvemaskLocal(localmaskexputili, params->locallab.spots.at(sp).Lmaskexpcurve, lmaskexplocalcurve, sca); CurveFactory::curvemaskLocal(localmaskSHutili, params->locallab.spots.at(sp).LmaskSHcurve, lmaskSHlocalcurve, sca); + CurveFactory::curvemaskLocal(localmaskvibutili, params->locallab.spots.at(sp).Lmaskvibcurve, lmaskviblocalcurve, sca); CurveFactory::curvemaskLocal(localmasktmutili, params->locallab.spots.at(sp).Lmasktmcurve, lmasktmlocalcurve, sca); CurveFactory::curvemaskLocal(localmaskretiutili, params->locallab.spots.at(sp).Lmaskreticurve, lmaskretilocalcurve, sca); CurveFactory::curvemaskLocal(localmaskcbutili, params->locallab.spots.at(sp).Lmaskcbcurve, lmaskcblocalcurve, sca); @@ -1088,12 +1101,14 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) lmasklocalcurve, localmaskutili, lmaskexplocalcurve, localmaskexputili, lmaskSHlocalcurve, localmaskSHutili, + lmaskviblocalcurve, localmaskvibutili, lmasktmlocalcurve, localmasktmutili, lmaskretilocalcurve, localmaskretiutili, lmaskcblocalcurve, localmaskcbutili, lmaskbllocalcurve, localmaskblutili, 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, locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili, locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili, locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, @@ -1103,7 +1118,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) locwavCurve, locwavutili, LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav, - locallColorMask, locallColorMaskinv, locallExpMask, locallExpMaskinv, locallSHMask, locallSHMaskinv, locallcbMask, locallretiMask, locallsoftMask, localltmMask, locallblMask, + locallColorMask, locallColorMaskinv, locallExpMask, locallExpMaskinv, locallSHMask, locallSHMaskinv, locallvibMask, locallcbMask, locallretiMask, locallsoftMask, localltmMask, locallblMask, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); if (locallListener) { locallListener->minmaxChanged(maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); @@ -1113,12 +1128,14 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) lmasklocalcurve, localmaskutili, lmaskexplocalcurve, localmaskexputili, lmaskSHlocalcurve, localmaskSHutili, + lmaskviblocalcurve, localmaskvibutili, lmasktmlocalcurve, localmasktmutili, lmaskretilocalcurve, localmaskretiutili, lmaskcblocalcurve, localmaskcbutili, lmaskbllocalcurve, localmaskblutili, 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, locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili, locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili, locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, @@ -1127,7 +1144,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) loclmasCurvecolwav,lmasutilicolwav, locwavCurve, locwavutili, LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, - huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); } @@ -1162,6 +1179,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) lmasklocalcurve.clear(); lmaskexplocalcurve.clear(); lmaskSHlocalcurve.clear(); + lmaskviblocalcurve.clear(); lmasktmlocalcurve.clear(); lmaskretilocalcurve.clear(); lmaskcblocalcurve.clear(); @@ -1183,6 +1201,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) locllmasSHCurve.Reset(); locccmasSHCurve.Reset(); lochhmasSHCurve.Reset(); + locllmasvibCurve.Reset(); + locccmasvibCurve.Reset(); + lochhmasvibCurve.Reset(); locllmascbCurve.Reset(); locccmascbCurve.Reset(); lochhmascbCurve.Reset(); diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 007187cce..ae1b82080 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -244,6 +244,7 @@ protected: LUTf lmasklocalcurve; LUTf lmaskexplocalcurve; LUTf lmaskSHlocalcurve; + LUTf lmaskviblocalcurve; LUTf lmasktmlocalcurve; LUTf lmaskretilocalcurve; LUTf lmaskcblocalcurve; @@ -264,6 +265,9 @@ protected: LocCCmaskCurve locccmasSHCurve; LocLLmaskCurve locllmasSHCurve; LocHHmaskCurve lochhmasSHCurve; + LocCCmaskCurve locccmasvibCurve; + LocLLmaskCurve locllmasvibCurve; + LocHHmaskCurve lochhmasvibCurve; LocCCmaskCurve locccmascbCurve; LocLLmaskCurve locllmascbCurve; LocHHmaskCurve lochhmascbCurve; @@ -291,6 +295,7 @@ protected: bool localmaskutili; bool localmaskexputili; bool localmaskSHutili; + bool localmaskvibutili; bool localmasktmutili; bool localmaskretiutili; bool localmaskcbutili; @@ -301,6 +306,9 @@ protected: bool lcmasSHutili; bool lhmasSHutili; bool llmasSHutili; + bool lcmasvibutili; + bool lhmasvibutili; + bool llmasvibutili; bool lcmascbutili; bool lhmascbutili; bool llmascbutili; diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 78702e9f5..4e40063b9 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -267,6 +267,7 @@ public: LUTf & lmasklocalcurve, bool & localmaskutili, LUTf & lmaskexplocalcurve, bool & localmaskexputili, LUTf & lmaskSHlocalcurve, bool & localmaskSHutili, + LUTf & lmaskviblocalcurve, bool & localmaskvibutili, LUTf & lmasktmlocalcurve, bool & localmasktmutili, LUTf & lmaskretilocalcurve, bool & localmaskretiutili, LUTf & lmaskcblocalcurve, bool & localmaskcbutili, @@ -274,6 +275,7 @@ public: 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, + const LocCCmaskCurve & locccmasvibCurve, bool &lcmasvibutili, const LocLLmaskCurve & locllmasvibCurve, bool &llmasvibutili, const LocHHmaskCurve & lochhmasvibCurve, bool & lhmasvibutili, const LocCCmaskCurve & locccmascbCurve, bool &lcmascbutili, const LocLLmaskCurve & locllmascbCurve, bool &llmascbutili, const LocHHmaskCurve & lochhmascbCurve, bool & lhmascbutili, const LocCCmaskCurve & locccmasretiCurve, bool &lcmasretiutili, const LocLLmaskCurve & locllmasretiCurve, bool &llmasretiutili, const LocHHmaskCurve & lochhmasretiCurve, bool & lhmasretiutili, const LocCCmaskCurve & locccmastmCurve, bool &lcmastmutili, const LocLLmaskCurve & locllmastmCurve, bool &llmastmutili, const LocHHmaskCurve & lochhmastmCurve, bool & lhmastmutili, @@ -283,7 +285,7 @@ public: const LocwavCurve & locwavCurve, bool & locwavutili, bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localcutili, LUTf & rgblocalcurve, bool & localrgbutili, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc, double & huerefblur, double &chromarefblur, double & lumarefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, int &lastsav, - int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, + int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax); void addGaNoise(LabImage *lab, LabImage *dst, const float mean, const float variance, const int sk); diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index d7ed0f6af..2bf01f9cc 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -283,6 +283,7 @@ struct local_params { int showmaskexpmetinv; int showmaskSHmet; int showmaskSHmetinv; + int showmaskvibmet; int showmaskcbmet; int showmaskretimet; int showmasksoftmet; @@ -331,6 +332,7 @@ struct local_params { bool expvib; bool exposena; bool hsena; + bool vibena; bool cut_past; float past; float satur; @@ -354,6 +356,7 @@ struct local_params { bool enaExpMaskinv; bool enaSHMask; bool enaSHMaskinv; + bool enavibMask; bool enacbMask; bool enaretiMask; bool enaretiMasktmap; @@ -452,7 +455,7 @@ static void SobelCannyLuma(float **sobelL, float **luma, int bfw, int bfh, float -static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locallab, struct local_params& lp, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask) +static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locallab, struct local_params& lp, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask) { int w = oW; int h = oH; @@ -535,21 +538,24 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall lp.showmaskexpmetinv = llExpMaskinv; lp.showmaskSHmet = llSHMask; lp.showmaskSHmetinv = llSHMaskinv; + lp.showmaskvibmet = llvibMask; + printf("vibmet=%i\n", lp.showmaskvibmet); lp.showmaskcbmet = llcbMask; lp.showmaskretimet = llretiMask; lp.showmasksoftmet = llsoftMask; lp.showmasktmmet = lltmMask; lp.showmaskblmet = llblMask; - lp.enaColorMask = locallab.spots.at(sp).enaColorMask && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0;// Exposure mask is deactivated if Color & Light mask is visible - lp.enaColorMaskinv = locallab.spots.at(sp).enaColorMask && llColorMaskinv == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0;// Exposure mask is deactivated if Color & Light mask is visible - lp.enaExpMask = locallab.spots.at(sp).enaExpMask && llExpMask == 0 && llColorMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0;// Exposure mask is deactivated if Color & Light mask is visible - lp.enaExpMaskinv = locallab.spots.at(sp).enaExpMask && llExpMaskinv == 0 && llColorMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0;// Exposure mask is deactivated if Color & Light mask is visible - lp.enaSHMask = locallab.spots.at(sp).enaSHMask && llSHMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 ; - lp.enaSHMaskinv = locallab.spots.at(sp).enaSHMask && llSHMaskinv == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 ; - lp.enacbMask = locallab.spots.at(sp).enacbMask && llcbMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0; - lp.enaretiMask = locallab.spots.at(sp).enaretiMask && llretiMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lltmMask == 0 && llblMask == 0; - lp.enatmMask = locallab.spots.at(sp).enatmMask && lltmMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llblMask == 0; - lp.enablMask = locallab.spots.at(sp).enablMask && llblMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0; + lp.enaColorMask = locallab.spots.at(sp).enaColorMask && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible + lp.enaColorMaskinv = locallab.spots.at(sp).enaColorMask && llColorMaskinv == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible + lp.enaExpMask = locallab.spots.at(sp).enaExpMask && llExpMask == 0 && llColorMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible + lp.enaExpMaskinv = locallab.spots.at(sp).enaExpMask && llExpMaskinv == 0 && llColorMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible + lp.enaSHMask = locallab.spots.at(sp).enaSHMask && llSHMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0; + lp.enaSHMaskinv = locallab.spots.at(sp).enaSHMask && llSHMaskinv == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0; + lp.enacbMask = locallab.spots.at(sp).enacbMask && llcbMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0; + lp.enaretiMask = locallab.spots.at(sp).enaretiMask && llretiMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0; + lp.enatmMask = locallab.spots.at(sp).enatmMask && lltmMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llblMask == 0 && llvibMask == 0; + lp.enablMask = locallab.spots.at(sp).enablMask && llblMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0; + lp.enavibMask = locallab.spots.at(sp).enavibMask && llvibMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llSHMask == 0; //printf("lp.showmaskSHmetinv=%i\n", lp.showmaskSHmetinv); if (locallab.spots.at(sp).softMethod == "soft") { @@ -932,21 +938,21 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall lp.detailsh = locallab.spots.at(sp).detailSH; lp.threshol = thresho; lp.chromacb = chromcbdl; - lp.colorena = locallab.spots.at(sp).expcolor && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0; // Color & Light tool is deactivated if Exposure mask is visible or SHMask - lp.blurena = locallab.spots.at(sp).expblur && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llColorMask == 0 && lltmMask == 0; - lp.tonemapena = locallab.spots.at(sp).exptonemap && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llColorMask == 0; - lp.retiena = locallab.spots.at(sp).expreti && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llColorMask == 0 && lltmMask == 0; + lp.colorena = locallab.spots.at(sp).expcolor && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0; // Color & Light tool is deactivated if Exposure mask is visible or SHMask + lp.blurena = locallab.spots.at(sp).expblur && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0; + lp.tonemapena = locallab.spots.at(sp).exptonemap && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llColorMask == 0 && llvibMask == 0; + lp.retiena = locallab.spots.at(sp).expreti && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 & llSHMask == 0; lp.sharpena = locallab.spots.at(sp).expsharp; lp.lcena = locallab.spots.at(sp).expcontrast; lp.sfena = locallab.spots.at(sp).expsoft; - lp.cbdlena = locallab.spots.at(sp).expcbdl && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && llColorMask == 0 && lltmMask == 0; + lp.cbdlena = locallab.spots.at(sp).expcbdl && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0; lp.denoiena = locallab.spots.at(sp).expdenoi; lp.expvib = locallab.spots.at(sp).expvibrance; lp.sensv = local_sensiv; lp.past = chromaPastel; lp.satur = chromaSatur; - lp.exposena = locallab.spots.at(sp).expexpose && llColorMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0; // Exposure tool is deactivated if Color & Light mask SHmask is visible + lp.exposena = locallab.spots.at(sp).expexpose && llColorMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0; // Exposure tool is deactivated if Color & Light mask SHmask is visible lp.cut_past = cupas; lp.blac = locallab.spots.at(sp).black; lp.shcomp = locallab.spots.at(sp).shcompr; @@ -958,7 +964,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall lp.expchroma = locallab.spots.at(sp).expchroma / 100.; lp.sensex = local_sensiex; lp.war = local_warm; - lp.hsena = locallab.spots.at(sp).expshadhigh && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0;// Shadow Highlight tool is deactivated if Color & Light mask or SHmask is visible + lp.hsena = locallab.spots.at(sp).expshadhigh && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0;// Shadow Highlight tool is deactivated if Color & Light mask or SHmask is visible lp.highlihs = highhs; lp.shadowhs = shadhs; lp.radiushs = radhs; @@ -967,6 +973,8 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall lp.senshs = local_sensihs; lp.ftwlc = fftwlc; lp.ftwreti = fftwreti; + lp.vibena = locallab.spots.at(sp).expvibrance && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0;// vibrance tool is deactivated if Color & Light mask or SHmask is visible + } static void calcTransitionrect(const float lox, const float loy, const float ach, const local_params& lp, int &zone, float &localFactor) @@ -5227,7 +5235,7 @@ void ImProcFunctions::calc_ref(int sp, LabImage * original, LabImage * transform if (params->locallab.enabled) { //always calculate hueref, chromaref, lumaref before others operations use in normal mode for all modules exceprt denoise struct local_params lp; - calcLocalParams(sp, oW, oH, params->locallab, lp, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + calcLocalParams(sp, oW, oH, params->locallab, lp, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); int begy = lp.yc - lp.lyT; int begx = lp.xc - lp.lxL; int yEn = lp.yc + lp.ly; @@ -7648,6 +7656,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o LUTf & lmasklocalcurve, bool & localmaskutili, LUTf & lmaskexplocalcurve, bool & localmaskexputili, LUTf & lmaskSHlocalcurve, bool & localmaskSHutili, + LUTf & lmaskviblocalcurve, bool & localmaskvibutili, LUTf & lmasktmlocalcurve, bool & localmasktmutili, LUTf & lmaskretilocalcurve, bool & localmaskretiutili, LUTf & lmaskcblocalcurve, bool & localmaskcbutili, @@ -7655,6 +7664,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o 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, + const LocCCmaskCurve & locccmasvibCurve, bool & lcmasvibutili, const LocLLmaskCurve & locllmasvibCurve, bool & llmasvibutili, const LocHHmaskCurve & lochhmasvibCurve, bool & lhmasvibutili, const LocCCmaskCurve & locccmascbCurve, bool & lcmascbutili, const LocLLmaskCurve & locllmascbCurve, bool & llmascbutili, const LocHHmaskCurve & lochhmascbCurve, bool & lhmascbutili, const LocCCmaskCurve & locccmasretiCurve, bool & lcmasretiutili, const LocLLmaskCurve & locllmasretiCurve, bool & llmasretiutili, const LocHHmaskCurve & lochhmasretiCurve, bool & lhmasretiutili, const LocCCmaskCurve & locccmastmCurve, bool & lcmastmutili, const LocLLmaskCurve & locllmastmCurve, bool & llmastmutili, const LocHHmaskCurve & lochhmastmCurve, bool & lhmastmutili, @@ -7664,7 +7674,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o const LocwavCurve & locwavCurve, bool & locwavutili, bool & LHutili, bool & HHutili, LUTf & cclocalcurve, bool & localcutili, LUTf & rgblocalcurve, bool & localrgbutili, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc, double & huerefblur, double & chromarefblur, double & lumarefblur, double & hueref, double & chromaref, double & lumaref, double & sobelref, int &lastsav, - int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, + int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) { /* comment on processus deltaE @@ -7695,7 +7705,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o int del = 3; // to avoid crash with [loy - begy] and [lox - begx] and bfh bfw // with gtk2 [loy - begy-1] [lox - begx -1 ] and del = 1 struct local_params lp; - calcLocalParams(sp, oW, oH, params->locallab, lp, llColorMask, llColorMaskinv, llExpMask, llExpMaskinv, llSHMask, llSHMaskinv, llcbMask, llretiMask, llsoftMask, lltmMask, llblMask); + calcLocalParams(sp, oW, oH, params->locallab, lp, llColorMask, llColorMaskinv, llExpMask, llExpMaskinv, llSHMask, llSHMaskinv, llvibMask, llcbMask, llretiMask, llsoftMask, lltmMask, llblMask); const float radius = lp.rad / (sk * 1.4f); //0 to 70 ==> see skip int strred = 1;//(lp.strucc - 1); diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 649cd435e..8ecf57507 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -1110,6 +1110,9 @@ private: LocCCmaskCurve locccmasSHCurve; LocLLmaskCurve locllmasSHCurve; LocHHmaskCurve lochhmasSHCurve; + LocCCmaskCurve locccmasvibCurve; + LocLLmaskCurve locllmasvibCurve; + LocHHmaskCurve lochhmasvibCurve; LocCCmaskCurve locccmascbCurve; LocLLmaskCurve locllmascbCurve; LocHHmaskCurve lochhmascbCurve; @@ -1136,6 +1139,7 @@ private: LUTf lmasklocalcurve(65536, 0); LUTf lmaskexplocalcurve(65536, 0); LUTf lmaskSHlocalcurve(65536, 0); + LUTf lmaskviblocalcurve(65536, 0); LUTf lmasktmlocalcurve(65536, 0); LUTf lmaskretilocalcurve(65536, 0); LUTf lmaskcblocalcurve(65536, 0); @@ -1167,6 +1171,7 @@ private: bool localmaskutili = false; bool localmaskexputili = false; bool localmaskSHutili = false; + bool localmaskvibutili = false; bool localmasktmutili = false; bool localmaskretiutili = false; bool localmaskcbutili = false; @@ -1177,6 +1182,9 @@ private: bool lcmasSHutili = false; bool lhmasSHutili = false; bool llmasSHutili = false; + bool lcmasvibutili = false; + bool lhmasvibutili = false; + bool llmasvibutili = false; bool lcmascbutili = false; bool lhmascbutili = false; bool llmascbutili = false; @@ -1206,6 +1214,9 @@ private: locccmasSHCurve.Set(params.locallab.spots.at(sp).CCmaskSHcurve, lcmasSHutili); locllmasSHCurve.Set(params.locallab.spots.at(sp).LLmaskSHcurve, llmasSHutili); lochhmasSHCurve.Set(params.locallab.spots.at(sp).HHmaskSHcurve, lhmasSHutili); + locccmasvibCurve.Set(params.locallab.spots.at(sp).CCmaskvibcurve, lcmasvibutili); + locllmasvibCurve.Set(params.locallab.spots.at(sp).LLmaskvibcurve, llmasvibutili); + lochhmasvibCurve.Set(params.locallab.spots.at(sp).HHmaskvibcurve, lhmasvibutili); locccmascbCurve.Set(params.locallab.spots.at(sp).CCmaskcbcurve, lcmascbutili); locllmascbCurve.Set(params.locallab.spots.at(sp).LLmaskcbcurve, llmascbutili); lochhmascbCurve.Set(params.locallab.spots.at(sp).HHmaskcbcurve, lhmascbutili); @@ -1229,6 +1240,7 @@ private: CurveFactory::curvemaskLocal(localmaskutili, params.locallab.spots.at(sp).Lmaskcurve, lmasklocalcurve, 1); CurveFactory::curvemaskLocal(localmaskexputili, params.locallab.spots.at(sp).Lmaskexpcurve, lmaskexplocalcurve, 1); CurveFactory::curvemaskLocal(localmaskSHutili, params.locallab.spots.at(sp).LmaskSHcurve, lmaskSHlocalcurve, 1); + CurveFactory::curvemaskLocal(localmaskvibutili, params.locallab.spots.at(sp).Lmaskvibcurve, lmaskviblocalcurve, 1); CurveFactory::curvemaskLocal(localmasktmutili, params.locallab.spots.at(sp).Lmasktmcurve, lmasktmlocalcurve, 1); CurveFactory::curvemaskLocal(localmaskretiutili, params.locallab.spots.at(sp).Lmaskreticurve, lmaskretilocalcurve, 1); CurveFactory::curvemaskLocal(localmaskcbutili, params.locallab.spots.at(sp).Lmaskcbcurve, lmaskcblocalcurve, 1); @@ -1271,12 +1283,14 @@ private: lmasklocalcurve, localmaskutili, lmaskexplocalcurve, localmaskexputili, lmaskSHlocalcurve, localmaskSHutili, + lmaskviblocalcurve, localmaskvibutili, lmasktmlocalcurve, localmasktmutili, lmaskretilocalcurve, localmaskretiutili, lmaskcblocalcurve, localmaskcbutili, lmaskbllocalcurve, localmaskblutili, 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, locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili, locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili, locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, @@ -1285,7 +1299,7 @@ private: loclmasCurvecolwav,lmasutilicolwav, locwavCurve, locwavutili, LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, - huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); lastorigView->CopyFrom(labView); @@ -1305,6 +1319,7 @@ private: lmasklocalcurve.clear(); lmaskexplocalcurve.clear(); lmaskSHlocalcurve.clear(); + lmaskviblocalcurve.clear(); lmasktmlocalcurve.clear(); lmaskretilocalcurve.clear(); lmaskcblocalcurve.clear(); diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index d9008874f..511a4691d 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -1611,7 +1611,7 @@ pe(nullptr) maskvibBox->pack_start(*mask2vibCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor expmaskvib->add(*maskvibBox, false); - // vibranceBox->pack_start(*expmaskvib); + // vibranceBox->pack_start(*expmaskvib); expvibrance->add(*vibranceBox, false); expvibrance->setLevel(2);