Add contrast curve to mask 4 ShadowsHighlight
This commit is contained in:
parent
e44d4c1324
commit
e8dd1c4378
@ -1009,6 +1009,7 @@ HISTORY_MSG_768;Local - Grain Strength
|
|||||||
HISTORY_MSG_769;Local - Grain Scale
|
HISTORY_MSG_769;Local - Grain Scale
|
||||||
HISTORY_MSG_770;Local - Color Mask contrast curve
|
HISTORY_MSG_770;Local - Color Mask contrast curve
|
||||||
HISTORY_MSG_771;Local - Exp Mask contrast curve
|
HISTORY_MSG_771;Local - Exp Mask contrast curve
|
||||||
|
HISTORY_MSG_772;Local - SH Mask contrast curve
|
||||||
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
||||||
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
||||||
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
||||||
|
@ -888,8 +888,10 @@ void Crop::update(int todo)
|
|||||||
LUTf exlocalcurve2(65536, 0);
|
LUTf exlocalcurve2(65536, 0);
|
||||||
bool localmaskutili = parent->localmaskutili;
|
bool localmaskutili = parent->localmaskutili;
|
||||||
bool localmaskexputili = parent->localmaskexputili;
|
bool localmaskexputili = parent->localmaskexputili;
|
||||||
|
bool localmaskSHutili = parent->localmaskSHutili;
|
||||||
LUTf lmasklocalcurve2(65536, 0);
|
LUTf lmasklocalcurve2(65536, 0);
|
||||||
LUTf lmaskexplocalcurve2(65536, 0);
|
LUTf lmaskexplocalcurve2(65536, 0);
|
||||||
|
LUTf lmaskSHlocalcurve2(65536, 0);
|
||||||
LUTf hltonecurveloc2(65536, 0); //65536
|
LUTf hltonecurveloc2(65536, 0); //65536
|
||||||
LUTf shtonecurveloc2(65536, 0);
|
LUTf shtonecurveloc2(65536, 0);
|
||||||
LUTf tonecurveloc2(65536, 0);
|
LUTf tonecurveloc2(65536, 0);
|
||||||
@ -993,6 +995,8 @@ void Crop::update(int todo)
|
|||||||
CurveFactory::curvemaskLocal(localmaskutili, params.locallab.spots.at(sp).Lmaskcurve, lmasklocalcurve2, sca);
|
CurveFactory::curvemaskLocal(localmaskutili, params.locallab.spots.at(sp).Lmaskcurve, lmasklocalcurve2, sca);
|
||||||
localmaskexputili = false;
|
localmaskexputili = false;
|
||||||
CurveFactory::curvemaskLocal(localmaskexputili, params.locallab.spots.at(sp).Lmaskexpcurve, lmaskexplocalcurve2, sca);
|
CurveFactory::curvemaskLocal(localmaskexputili, params.locallab.spots.at(sp).Lmaskexpcurve, lmaskexplocalcurve2, sca);
|
||||||
|
localmaskSHutili = false;
|
||||||
|
CurveFactory::curvemaskLocal(localmaskSHutili, params.locallab.spots.at(sp).LmaskSHcurve, lmaskSHlocalcurve2, sca);
|
||||||
|
|
||||||
|
|
||||||
double ecomp = params.locallab.spots.at(sp).expcomp;
|
double ecomp = params.locallab.spots.at(sp).expcomp;
|
||||||
@ -1033,6 +1037,7 @@ void Crop::update(int todo)
|
|||||||
lllocalcurve2,locallutili, loclhCurve, lochhCurve,
|
lllocalcurve2,locallutili, loclhCurve, lochhCurve,
|
||||||
lmasklocalcurve2, localmaskutili,
|
lmasklocalcurve2, localmaskutili,
|
||||||
lmaskexplocalcurve2, localmaskexputili,
|
lmaskexplocalcurve2, localmaskexputili,
|
||||||
|
lmaskSHlocalcurve2, localmaskSHutili,
|
||||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||||
@ -1052,6 +1057,7 @@ void Crop::update(int todo)
|
|||||||
lllocalcurve2,locallutili, loclhCurve, lochhCurve,
|
lllocalcurve2,locallutili, loclhCurve, lochhCurve,
|
||||||
lmasklocalcurve2, localmaskutili,
|
lmasklocalcurve2, localmaskutili,
|
||||||
lmaskexplocalcurve2, localmaskexputili,
|
lmaskexplocalcurve2, localmaskexputili,
|
||||||
|
lmaskSHlocalcurve2, localmaskSHutili,
|
||||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||||
@ -1069,6 +1075,7 @@ void Crop::update(int todo)
|
|||||||
exlocalcurve2.clear();
|
exlocalcurve2.clear();
|
||||||
lmasklocalcurve2.clear();
|
lmasklocalcurve2.clear();
|
||||||
lmaskexplocalcurve2.clear();
|
lmaskexplocalcurve2.clear();
|
||||||
|
lmaskSHlocalcurve2.clear();
|
||||||
hltonecurveloc2.clear();
|
hltonecurveloc2.clear();
|
||||||
shtonecurveloc2.clear();
|
shtonecurveloc2.clear();
|
||||||
tonecurveloc2.clear();
|
tonecurveloc2.clear();
|
||||||
|
@ -173,6 +173,7 @@ ImProcCoordinator::ImProcCoordinator() :
|
|||||||
lightCurveloc(32770, 0),
|
lightCurveloc(32770, 0),
|
||||||
lmasklocalcurve(65536, 0),
|
lmasklocalcurve(65536, 0),
|
||||||
lmaskexplocalcurve(65536, 0),
|
lmaskexplocalcurve(65536, 0),
|
||||||
|
lmaskSHlocalcurve(65536, 0),
|
||||||
locallutili(false),
|
locallutili(false),
|
||||||
localcutili(false),
|
localcutili(false),
|
||||||
localexutili(false),
|
localexutili(false),
|
||||||
@ -181,6 +182,7 @@ ImProcCoordinator::ImProcCoordinator() :
|
|||||||
lcmasutili(false),
|
lcmasutili(false),
|
||||||
localmaskutili(false),
|
localmaskutili(false),
|
||||||
localmaskexputili(false),
|
localmaskexputili(false),
|
||||||
|
localmaskSHutili(false),
|
||||||
lcmasexputili(false),
|
lcmasexputili(false),
|
||||||
lhmasexputili(false),
|
lhmasexputili(false),
|
||||||
llmasexputili(false),
|
llmasexputili(false),
|
||||||
@ -922,7 +924,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
lcmasexputili = false;
|
lcmasexputili = false;
|
||||||
lhmasexputili = false;
|
lhmasexputili = false;
|
||||||
llmasexputili = false;
|
llmasexputili = false;
|
||||||
localmaskutili = false;
|
localmaskexputili = false;
|
||||||
|
localmaskSHutili = false;
|
||||||
lcmasSHutili = false;
|
lcmasSHutili = false;
|
||||||
lhmasSHutili = false;
|
lhmasSHutili = false;
|
||||||
llmasSHutili = false;
|
llmasSHutili = false;
|
||||||
@ -972,6 +975,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
CurveFactory::curveexLocal(localexutili, params->locallab.spots.at(sp).excurve, exlocalcurve, sca);
|
CurveFactory::curveexLocal(localexutili, params->locallab.spots.at(sp).excurve, exlocalcurve, sca);
|
||||||
CurveFactory::curvemaskLocal(localmaskutili, params->locallab.spots.at(sp).Lmaskcurve, lmasklocalcurve, sca);
|
CurveFactory::curvemaskLocal(localmaskutili, params->locallab.spots.at(sp).Lmaskcurve, lmasklocalcurve, sca);
|
||||||
CurveFactory::curvemaskLocal(localmaskexputili, params->locallab.spots.at(sp).Lmaskexpcurve, lmaskexplocalcurve, sca);
|
CurveFactory::curvemaskLocal(localmaskexputili, params->locallab.spots.at(sp).Lmaskexpcurve, lmaskexplocalcurve, sca);
|
||||||
|
CurveFactory::curvemaskLocal(localmaskSHutili, params->locallab.spots.at(sp).LmaskSHcurve, lmaskSHlocalcurve, sca);
|
||||||
double ecomp = params->locallab.spots.at(sp).expcomp;
|
double ecomp = params->locallab.spots.at(sp).expcomp;
|
||||||
double black = params->locallab.spots.at(sp).black;
|
double black = params->locallab.spots.at(sp).black;
|
||||||
double hlcompr = params->locallab.spots.at(sp).hlcompr;
|
double hlcompr = params->locallab.spots.at(sp).hlcompr;
|
||||||
@ -1027,6 +1031,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, locRETtransCurve, lllocalcurve, locallutili, loclhCurve, lochhCurve,
|
ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, locRETtransCurve, lllocalcurve, locallutili, loclhCurve, lochhCurve,
|
||||||
lmasklocalcurve, localmaskutili,
|
lmasklocalcurve, localmaskutili,
|
||||||
lmaskexplocalcurve, localmaskexputili,
|
lmaskexplocalcurve, localmaskexputili,
|
||||||
|
lmaskSHlocalcurve, localmaskSHutili,
|
||||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||||
@ -1045,6 +1050,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, locRETtransCurve, lllocalcurve, locallutili, loclhCurve, lochhCurve,
|
ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, locRETtransCurve, lllocalcurve, locallutili, loclhCurve, lochhCurve,
|
||||||
lmasklocalcurve, localmaskutili,
|
lmasklocalcurve, localmaskutili,
|
||||||
lmaskexplocalcurve, localmaskexputili,
|
lmaskexplocalcurve, localmaskexputili,
|
||||||
|
lmaskSHlocalcurve, localmaskSHutili,
|
||||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||||
@ -1069,6 +1075,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
exlocalcurve.clear();
|
exlocalcurve.clear();
|
||||||
lmasklocalcurve.clear();
|
lmasklocalcurve.clear();
|
||||||
lmaskexplocalcurve.clear();
|
lmaskexplocalcurve.clear();
|
||||||
|
lmaskSHlocalcurve.clear();
|
||||||
hltonecurveloc.clear();
|
hltonecurveloc.clear();
|
||||||
shtonecurveloc.clear();
|
shtonecurveloc.clear();
|
||||||
tonecurveloc.clear();
|
tonecurveloc.clear();
|
||||||
|
@ -235,6 +235,7 @@ protected:
|
|||||||
LUTf lightCurveloc;
|
LUTf lightCurveloc;
|
||||||
LUTf lmasklocalcurve;
|
LUTf lmasklocalcurve;
|
||||||
LUTf lmaskexplocalcurve;
|
LUTf lmaskexplocalcurve;
|
||||||
|
LUTf lmaskSHlocalcurve;
|
||||||
// LUTu lhist16loc;
|
// LUTu lhist16loc;
|
||||||
LocretigainCurve locRETgainCurve;
|
LocretigainCurve locRETgainCurve;
|
||||||
LocretitransCurve locRETtransCurve;
|
LocretitransCurve locRETtransCurve;
|
||||||
@ -272,6 +273,7 @@ protected:
|
|||||||
bool lcmasutili;
|
bool lcmasutili;
|
||||||
bool localmaskutili;
|
bool localmaskutili;
|
||||||
bool localmaskexputili;
|
bool localmaskexputili;
|
||||||
|
bool localmaskSHutili;
|
||||||
bool lcmasexputili;
|
bool lcmasexputili;
|
||||||
bool lhmasexputili;
|
bool lhmasexputili;
|
||||||
bool llmasexputili;
|
bool llmasexputili;
|
||||||
|
@ -217,6 +217,7 @@ public:
|
|||||||
void Lab_Local(int call, int sp, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve & locRETgainCcurve, const LocretitransCurve &locRETtransCcurve, LUTf & lllocalcurve, bool & locallutili, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve,
|
void Lab_Local(int call, int sp, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve & locRETgainCcurve, const LocretitransCurve &locRETtransCcurve, LUTf & lllocalcurve, bool & locallutili, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve,
|
||||||
LUTf & lmasklocalcurve, bool & localmaskutili,
|
LUTf & lmasklocalcurve, bool & localmaskutili,
|
||||||
LUTf & lmaskexplocalcurve, bool & localmaskexputili,
|
LUTf & lmaskexplocalcurve, bool & localmaskexputili,
|
||||||
|
LUTf & lmaskSHlocalcurve, bool & localmaskSHutili,
|
||||||
const LocCCmaskCurve & locccmasCurve, bool & lcmasutili, const LocLLmaskCurve & locllmasCurve, bool & llmasutili, const LocHHmaskCurve & lochhmasCurve, bool & lhmasutili,
|
const LocCCmaskCurve & locccmasCurve, bool & lcmasutili, const LocLLmaskCurve & locllmasCurve, bool & llmasutili, const LocHHmaskCurve & lochhmasCurve, bool & lhmasutili,
|
||||||
const LocCCmaskCurve & locccmasexpCurve, bool &lcmasexputili, const LocLLmaskCurve & locllmasexpCurve, bool &llmasexputili, const LocHHmaskCurve & lochhmasexpCurve, bool & lhmasexputili,
|
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 & locccmasSHCurve, bool &lcmasSHutili, const LocLLmaskCurve & locllmasSHCurve, bool &llmasSHutili, const LocHHmaskCurve & lochhmasSHCurve, bool & lhmasSHutili,
|
||||||
|
@ -6714,6 +6714,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
const LocretigainCurve & locRETgainCcurve, const LocretitransCurve & locRETtransCcurve, LUTf & lllocalcurve, bool & locallutili, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve,
|
const LocretigainCurve & locRETgainCcurve, const LocretitransCurve & locRETtransCcurve, LUTf & lllocalcurve, bool & locallutili, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve,
|
||||||
LUTf & lmasklocalcurve, bool & localmaskutili,
|
LUTf & lmasklocalcurve, bool & localmaskutili,
|
||||||
LUTf & lmaskexplocalcurve, bool & localmaskexputili,
|
LUTf & lmaskexplocalcurve, bool & localmaskexputili,
|
||||||
|
LUTf & lmaskSHlocalcurve, bool & localmaskSHutili,
|
||||||
const LocCCmaskCurve & locccmasCurve, bool & lcmasutili, const LocLLmaskCurve & locllmasCurve, bool & llmasutili, const LocHHmaskCurve & lochhmasCurve, bool & lhmasutili,
|
const LocCCmaskCurve & locccmasCurve, bool & lcmasutili, const LocLLmaskCurve & locllmasCurve, bool & llmasutili, const LocHHmaskCurve & lochhmasCurve, bool & lhmasutili,
|
||||||
const LocCCmaskCurve & locccmasexpCurve, bool & lcmasexputili, const LocLLmaskCurve & locllmasexpCurve, bool & llmasexputili, const LocHHmaskCurve & lochhmasexpCurve, bool & lhmasexputili,
|
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 & locccmasSHCurve, bool & lcmasSHutili, const LocLLmaskCurve & locllmasSHCurve, bool & llmasSHutili, const LocHHmaskCurve & lochhmasSHCurve, bool & lhmasSHutili,
|
||||||
@ -8010,12 +8011,10 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
float blendm = lp.blendmaSH;
|
float blendm = lp.blendmaSH;
|
||||||
float lap = params->locallab.spots.at(sp).lapmaskSH;
|
float lap = params->locallab.spots.at(sp).lapmaskSH;
|
||||||
float pde = params->locallab.spots.at(sp).laplac;
|
float pde = params->locallab.spots.at(sp).laplac;
|
||||||
LUTf dummy;
|
|
||||||
bool uti;
|
|
||||||
|
|
||||||
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, bufexporig.get(), bufmaskorigSH.get(), originalmaskSH.get(), original, inv, lp,
|
maskcalccol(false, pde, bfw, bfh, xstart, ystart, sk, cx, cy, bufexporig.get(), bufmaskorigSH.get(), originalmaskSH.get(), original, inv, lp,
|
||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, multiThread,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, multiThread,
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, dummy, uti);
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, lmaskSHlocalcurve, localmaskSHutili);
|
||||||
|
|
||||||
if (lp.showmaskSHmet == 3) {
|
if (lp.showmaskSHmet == 3) {
|
||||||
showmask(lp, xstart, ystart, cx, cy, bfw, bfh, bufexporig.get(), transformed, bufmaskorigSH.get(), 0);
|
showmask(lp, xstart, ystart, cx, cy, bfw, bfh, bufexporig.get(), transformed, bufmaskorigSH.get(), 0);
|
||||||
@ -8107,12 +8106,10 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
float blendm = lp.blendmaSH;
|
float blendm = lp.blendmaSH;
|
||||||
float lap = params->locallab.spots.at(sp).lapmaskSH;
|
float lap = params->locallab.spots.at(sp).lapmaskSH;
|
||||||
float pde = params->locallab.spots.at(sp).laplac;
|
float pde = params->locallab.spots.at(sp).laplac;
|
||||||
LUTf dummy;
|
|
||||||
bool uti;
|
|
||||||
|
|
||||||
maskcalccol(false, pde, GW, GH, 0, 0, sk, cx, cy, bufcolorig.get(), bufmaskblurcol.get(), originalmaskSH.get(), original, inv, lp,
|
maskcalccol(false, pde, GW, GH, 0, 0, sk, cx, cy, bufcolorig.get(), bufmaskblurcol.get(), originalmaskSH.get(), original, inv, lp,
|
||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, multiThread,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili, multiThread,
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, dummy, uti);
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, lap, gamma, slope, blendm, lmaskSHlocalcurve, localmaskSHutili);
|
||||||
|
|
||||||
|
|
||||||
if (lp.showmaskSHmetinv == 1) {
|
if (lp.showmaskSHmetinv == 1) {
|
||||||
|
@ -798,6 +798,7 @@ enum ProcEventCode {
|
|||||||
Evlocallabscalegr = 768,
|
Evlocallabscalegr = 768,
|
||||||
EvlocallabLmaskshape = 769,
|
EvlocallabLmaskshape = 769,
|
||||||
EvlocallabLmaskexpshape = 770,
|
EvlocallabLmaskexpshape = 770,
|
||||||
|
EvlocallabLmaskSHshape = 771,
|
||||||
NUMOFEVENTS
|
NUMOFEVENTS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2524,6 +2524,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
gammaskSH(1.0),
|
gammaskSH(1.0),
|
||||||
slomaskSH(0.0),
|
slomaskSH(0.0),
|
||||||
lapmaskSH(0.0),
|
lapmaskSH(0.0),
|
||||||
|
LmaskSHcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
|
||||||
// Vibrance
|
// Vibrance
|
||||||
expvibrance(false),
|
expvibrance(false),
|
||||||
saturated(0),
|
saturated(0),
|
||||||
@ -2808,6 +2809,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
|||||||
&& gammaskSH == other.gammaskSH
|
&& gammaskSH == other.gammaskSH
|
||||||
&& slomaskSH == other.slomaskSH
|
&& slomaskSH == other.slomaskSH
|
||||||
&& lapmaskSH == other.lapmaskSH
|
&& lapmaskSH == other.lapmaskSH
|
||||||
|
&& LmaskSHcurve == other.LmaskSHcurve
|
||||||
// Vibrance
|
// Vibrance
|
||||||
&& expvibrance == other.expvibrance
|
&& expvibrance == other.expvibrance
|
||||||
&& saturated == other.saturated
|
&& saturated == other.saturated
|
||||||
@ -4078,6 +4080,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).gammaskSH, "Locallab", "GammaskSH_" + std::to_string(i), spot.gammaskSH, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).gammaskSH, "Locallab", "GammaskSH_" + std::to_string(i), spot.gammaskSH, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).slomaskSH, "Locallab", "SlomaskSH_" + std::to_string(i), spot.slomaskSH, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).slomaskSH, "Locallab", "SlomaskSH_" + std::to_string(i), spot.slomaskSH, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).lapmaskSH, "Locallab", "LapmaskSH_" + std::to_string(i), spot.lapmaskSH, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).lapmaskSH, "Locallab", "LapmaskSH_" + std::to_string(i), spot.lapmaskSH, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LmaskSHcurve, "Locallab", "LmaskSHCurve_" + std::to_string(i), spot.LmaskSHcurve, keyFile);
|
||||||
// Vibrance
|
// Vibrance
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).expvibrance, "Locallab", "Expvibrance_" + std::to_string(i), spot.expvibrance, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).expvibrance, "Locallab", "Expvibrance_" + std::to_string(i), spot.expvibrance, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).saturated, "Locallab", "Saturated_" + std::to_string(i), spot.saturated, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).saturated, "Locallab", "Saturated_" + std::to_string(i), spot.saturated, keyFile);
|
||||||
@ -5463,6 +5466,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Locallab", "GammaskSH_" + std::to_string(i), pedited, spot.gammaskSH, spotEdited.gammaskSH);
|
assignFromKeyfile(keyFile, "Locallab", "GammaskSH_" + std::to_string(i), pedited, spot.gammaskSH, spotEdited.gammaskSH);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "SlomaskSH_" + std::to_string(i), pedited, spot.slomaskSH, spotEdited.slomaskSH);
|
assignFromKeyfile(keyFile, "Locallab", "SlomaskSH_" + std::to_string(i), pedited, spot.slomaskSH, spotEdited.slomaskSH);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "LapmaskSH_" + std::to_string(i), pedited, spot.lapmaskSH, spotEdited.lapmaskSH);
|
assignFromKeyfile(keyFile, "Locallab", "LapmaskSH_" + std::to_string(i), pedited, spot.lapmaskSH, spotEdited.lapmaskSH);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "LmaskSHCurve_" + std::to_string(i), pedited, spot.LmaskSHcurve, spotEdited.LmaskSHcurve);
|
||||||
// Vibrance
|
// Vibrance
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Expvibrance_" + std::to_string(i), pedited, spot.expvibrance, spotEdited.expvibrance);
|
assignFromKeyfile(keyFile, "Locallab", "Expvibrance_" + std::to_string(i), pedited, spot.expvibrance, spotEdited.expvibrance);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Saturated_" + std::to_string(i), pedited, spot.saturated, spotEdited.saturated);
|
assignFromKeyfile(keyFile, "Locallab", "Saturated_" + std::to_string(i), pedited, spot.saturated, spotEdited.saturated);
|
||||||
|
@ -1073,6 +1073,7 @@ struct LocallabParams {
|
|||||||
double gammaskSH;
|
double gammaskSH;
|
||||||
double slomaskSH;
|
double slomaskSH;
|
||||||
double lapmaskSH;
|
double lapmaskSH;
|
||||||
|
std::vector<double> LmaskSHcurve;
|
||||||
// Vibrance
|
// Vibrance
|
||||||
bool expvibrance;
|
bool expvibrance;
|
||||||
int saturated;
|
int saturated;
|
||||||
|
@ -797,7 +797,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, //Evlocallabstrengr
|
LUMINANCECURVE, //Evlocallabstrengr
|
||||||
LUMINANCECURVE, //Evlocallabscalegr
|
LUMINANCECURVE, //Evlocallabscalegr
|
||||||
LUMINANCECURVE, //EvlocallabLmaskshape
|
LUMINANCECURVE, //EvlocallabLmaskshape
|
||||||
LUMINANCECURVE //EvlocallabLmaskexpshape
|
LUMINANCECURVE, //EvlocallabLmaskexpshape
|
||||||
|
LUMINANCECURVE //EvlocallabLmaskSHshape
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace rtengine
|
namespace rtengine
|
||||||
|
@ -1126,6 +1126,7 @@ private:
|
|||||||
LUTf exlocalcurve(65536, 0);
|
LUTf exlocalcurve(65536, 0);
|
||||||
LUTf lmasklocalcurve(65536, 0);
|
LUTf lmasklocalcurve(65536, 0);
|
||||||
LUTf lmaskexplocalcurve(65536, 0);
|
LUTf lmaskexplocalcurve(65536, 0);
|
||||||
|
LUTf lmaskSHlocalcurve(65536, 0);
|
||||||
|
|
||||||
// int maxspot = 1;
|
// int maxspot = 1;
|
||||||
float** shbuffer = nullptr;
|
float** shbuffer = nullptr;
|
||||||
@ -1150,6 +1151,7 @@ private:
|
|||||||
bool lcmasutili = false;
|
bool lcmasutili = false;
|
||||||
bool localmaskutili = false;
|
bool localmaskutili = false;
|
||||||
bool localmaskexputili = false;
|
bool localmaskexputili = false;
|
||||||
|
bool localmaskSHutili = false;
|
||||||
bool lcmasexputili = false;
|
bool lcmasexputili = false;
|
||||||
bool lhmasexputili = false;
|
bool lhmasexputili = false;
|
||||||
bool llmasexputili = false;
|
bool llmasexputili = false;
|
||||||
@ -1200,6 +1202,7 @@ private:
|
|||||||
CurveFactory::curveexLocal(localexutili, params.locallab.spots.at(sp).excurve, exlocalcurve, 1);
|
CurveFactory::curveexLocal(localexutili, params.locallab.spots.at(sp).excurve, exlocalcurve, 1);
|
||||||
CurveFactory::curvemaskLocal(localmaskutili, params.locallab.spots.at(sp).Lmaskcurve, lmasklocalcurve, 1);
|
CurveFactory::curvemaskLocal(localmaskutili, params.locallab.spots.at(sp).Lmaskcurve, lmasklocalcurve, 1);
|
||||||
CurveFactory::curvemaskLocal(localmaskexputili, params.locallab.spots.at(sp).Lmaskexpcurve, lmaskexplocalcurve, 1);
|
CurveFactory::curvemaskLocal(localmaskexputili, params.locallab.spots.at(sp).Lmaskexpcurve, lmaskexplocalcurve, 1);
|
||||||
|
CurveFactory::curvemaskLocal(localmaskSHutili, params.locallab.spots.at(sp).LmaskSHcurve, lmaskSHlocalcurve, 1);
|
||||||
//provisory
|
//provisory
|
||||||
double ecomp = params.locallab.spots.at(sp).expcomp;
|
double ecomp = params.locallab.spots.at(sp).expcomp;
|
||||||
double black = params.locallab.spots.at(sp).black;
|
double black = params.locallab.spots.at(sp).black;
|
||||||
@ -1236,6 +1239,7 @@ private:
|
|||||||
ipf.Lab_Local(2, sp, (float**)shbuffer, labView, labView, reservView, 0, 0, fw, fh, 1, locRETgainCurve, locRETtransCurve, lllocalcurve, locallutili, loclhCurve, lochhCurve,
|
ipf.Lab_Local(2, sp, (float**)shbuffer, labView, labView, reservView, 0, 0, fw, fh, 1, locRETgainCurve, locRETtransCurve, lllocalcurve, locallutili, loclhCurve, lochhCurve,
|
||||||
lmasklocalcurve, localmaskutili,
|
lmasklocalcurve, localmaskutili,
|
||||||
lmaskexplocalcurve, localmaskexputili,
|
lmaskexplocalcurve, localmaskexputili,
|
||||||
|
lmaskSHlocalcurve, localmaskSHutili,
|
||||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||||
@ -1255,6 +1259,7 @@ private:
|
|||||||
hltonecurveloc.clear();
|
hltonecurveloc.clear();
|
||||||
lmasklocalcurve.clear();
|
lmasklocalcurve.clear();
|
||||||
lmaskexplocalcurve.clear();
|
lmaskexplocalcurve.clear();
|
||||||
|
lmaskSHlocalcurve.clear();
|
||||||
shtonecurveloc.clear();
|
shtonecurveloc.clear();
|
||||||
tonecurveloc.clear();
|
tonecurveloc.clear();
|
||||||
lightCurveloc.clear();
|
lightCurveloc.clear();
|
||||||
|
@ -162,6 +162,7 @@ Locallab::Locallab():
|
|||||||
mask2expCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
|
mask2expCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
|
||||||
//Shadows Highlight
|
//Shadows Highlight
|
||||||
maskSHCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK"))),
|
maskSHCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK"))),
|
||||||
|
mask2SHCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
|
||||||
// Vibranceretinex
|
// Vibranceretinex
|
||||||
curveEditorGG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL"))),
|
curveEditorGG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL"))),
|
||||||
//Blur
|
//Blur
|
||||||
@ -1099,6 +1100,21 @@ Locallab::Locallab():
|
|||||||
|
|
||||||
maskSHCurveEditorG->curveListComplete();
|
maskSHCurveEditorG->curveListComplete();
|
||||||
|
|
||||||
|
mask2SHCurveEditorG->setCurveListener(this);
|
||||||
|
LmaskSHshape = static_cast<DiagonalCurveEditor*>(mask2SHCurveEditorG->addCurve(CT_Diagonal, "L(L)"));
|
||||||
|
LmaskSHshape->setResetCurve(DiagonalCurveType(defSpot.LmaskSHcurve.at(0)), defSpot.LmaskSHcurve);
|
||||||
|
|
||||||
|
if (showtooltip) {
|
||||||
|
LmaskSHshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP"));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<GradientMilestone> mLmaskSHshape;
|
||||||
|
mLmaskSHshape.push_back(GradientMilestone(0., 0., 0., 0.));
|
||||||
|
mLmaskSHshape.push_back(GradientMilestone(1., 1., 1., 1.));
|
||||||
|
LmaskSHshape->setBottomBarBgGradient(mLmaskSHshape);
|
||||||
|
LmaskSHshape->setLeftBarBgGradient(mLmaskSHshape);
|
||||||
|
mask2SHCurveEditorG->curveListComplete();
|
||||||
|
|
||||||
ToolParamBlock* const shadhighBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const shadhighBox = Gtk::manage(new ToolParamBlock());
|
||||||
shadhighBox->pack_start(*highlights);
|
shadhighBox->pack_start(*highlights);
|
||||||
shadhighBox->pack_start(*h_tonalwidth);
|
shadhighBox->pack_start(*h_tonalwidth);
|
||||||
@ -1121,6 +1137,7 @@ Locallab::Locallab():
|
|||||||
maskSHBox->pack_start(*chromaskSH, Gtk::PACK_SHRINK, 0);
|
maskSHBox->pack_start(*chromaskSH, Gtk::PACK_SHRINK, 0);
|
||||||
maskSHBox->pack_start(*gammaskSH, Gtk::PACK_SHRINK, 0);
|
maskSHBox->pack_start(*gammaskSH, Gtk::PACK_SHRINK, 0);
|
||||||
maskSHBox->pack_start(*slomaskSH, Gtk::PACK_SHRINK, 0);
|
maskSHBox->pack_start(*slomaskSH, Gtk::PACK_SHRINK, 0);
|
||||||
|
maskSHBox->pack_start(*mask2SHCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||||
expmasksh->add(*maskSHBox, false);
|
expmasksh->add(*maskSHBox, false);
|
||||||
shadhighBox->pack_start(*expmasksh);
|
shadhighBox->pack_start(*expmasksh);
|
||||||
|
|
||||||
@ -2249,6 +2266,7 @@ Locallab::~Locallab()
|
|||||||
delete maskCurveEditorG;
|
delete maskCurveEditorG;
|
||||||
delete mask2CurveEditorG;
|
delete mask2CurveEditorG;
|
||||||
delete mask2expCurveEditorG;
|
delete mask2expCurveEditorG;
|
||||||
|
delete mask2SHCurveEditorG;
|
||||||
delete curveEditorG;
|
delete curveEditorG;
|
||||||
delete maskexpCurveEditorG;
|
delete maskexpCurveEditorG;
|
||||||
delete maskSHCurveEditorG;
|
delete maskSHCurveEditorG;
|
||||||
@ -3246,6 +3264,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pp->locallab.spots.at(pp->locallab.selspot).gammaskSH = gammaskSH->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).gammaskSH = gammaskSH->getValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).slomaskSH = slomaskSH->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).slomaskSH = slomaskSH->getValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).lapmaskSH = lapmaskSH->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).lapmaskSH = lapmaskSH->getValue();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).LmaskSHcurve = LmaskSHshape->getCurve();
|
||||||
// Vibrance
|
// Vibrance
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).expvibrance = expvibrance->getEnabled();
|
pp->locallab.spots.at(pp->locallab.selspot).expvibrance = expvibrance->getEnabled();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).saturated = saturated->getIntValue();
|
pp->locallab.spots.at(pp->locallab.selspot).saturated = saturated->getIntValue();
|
||||||
@ -3576,6 +3595,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pe->locallab.spots.at(pp->locallab.selspot).gammaskSH = pe->locallab.spots.at(pp->locallab.selspot).gammaskSH || gammaskSH->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).gammaskSH = pe->locallab.spots.at(pp->locallab.selspot).gammaskSH || gammaskSH->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).slomaskSH = pe->locallab.spots.at(pp->locallab.selspot).slomaskSH || slomaskSH->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).slomaskSH = pe->locallab.spots.at(pp->locallab.selspot).slomaskSH || slomaskSH->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).lapmaskSH = pe->locallab.spots.at(pp->locallab.selspot).lapmaskSH || lapmaskSH->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).lapmaskSH = pe->locallab.spots.at(pp->locallab.selspot).lapmaskSH || lapmaskSH->getEditedState();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).LmaskSHcurve = pe->locallab.spots.at(pp->locallab.selspot).LmaskSHcurve || !LmaskSHshape->isUnChanged();
|
||||||
// Vibrance
|
// Vibrance
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).expvibrance = pe->locallab.spots.at(pp->locallab.selspot).expvibrance || !expvibrance->get_inconsistent();
|
pe->locallab.spots.at(pp->locallab.selspot).expvibrance = pe->locallab.spots.at(pp->locallab.selspot).expvibrance || !expvibrance->get_inconsistent();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).saturated = pe->locallab.spots.at(pp->locallab.selspot).saturated || saturated->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).saturated = pe->locallab.spots.at(pp->locallab.selspot).saturated || saturated->getEditedState();
|
||||||
@ -3864,6 +3884,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pedited->locallab.spots.at(pp->locallab.selspot).gammaskSH = pedited->locallab.spots.at(pp->locallab.selspot).gammaskSH || gammaskSH->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).gammaskSH = pedited->locallab.spots.at(pp->locallab.selspot).gammaskSH || gammaskSH->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).slomaskSH = pedited->locallab.spots.at(pp->locallab.selspot).slomaskSH || slomaskSH->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).slomaskSH = pedited->locallab.spots.at(pp->locallab.selspot).slomaskSH || slomaskSH->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).lapmaskSH = pedited->locallab.spots.at(pp->locallab.selspot).lapmaskSH || lapmaskSH->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).lapmaskSH = pedited->locallab.spots.at(pp->locallab.selspot).lapmaskSH || lapmaskSH->getEditedState();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).LmaskSHcurve = pedited->locallab.spots.at(pp->locallab.selspot).LmaskSHcurve || !LmaskSHshape->isUnChanged();
|
||||||
// Vibrance
|
// Vibrance
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).expvibrance = pedited->locallab.spots.at(pp->locallab.selspot).expvibrance || !expvibrance->get_inconsistent();
|
pedited->locallab.spots.at(pp->locallab.selspot).expvibrance = pedited->locallab.spots.at(pp->locallab.selspot).expvibrance || !expvibrance->get_inconsistent();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).saturated = pedited->locallab.spots.at(pp->locallab.selspot).saturated || saturated->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).saturated = pedited->locallab.spots.at(pp->locallab.selspot).saturated || saturated->getEditedState();
|
||||||
@ -4240,6 +4261,13 @@ void Locallab::curveChanged(CurveEditor* ce)
|
|||||||
listener->panelChanged(EvlocallabHHmaskSHshape, M("HISTORY_CUSTOMCURVE"));
|
listener->panelChanged(EvlocallabHHmaskSHshape, M("HISTORY_CUSTOMCURVE"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ce == LmaskSHshape) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(EvlocallabLmaskSHshape, M("HISTORY_CUSTOMCURVE"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//CBDL
|
//CBDL
|
||||||
@ -7966,6 +7994,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
gammaskSH->setValue(pp->locallab.spots.at(index).gammaskSH);
|
gammaskSH->setValue(pp->locallab.spots.at(index).gammaskSH);
|
||||||
slomaskSH->setValue(pp->locallab.spots.at(index).slomaskSH);
|
slomaskSH->setValue(pp->locallab.spots.at(index).slomaskSH);
|
||||||
lapmaskSH->setValue(pp->locallab.spots.at(index).lapmaskSH);
|
lapmaskSH->setValue(pp->locallab.spots.at(index).lapmaskSH);
|
||||||
|
LmaskSHshape->setCurve(pp->locallab.spots.at(index).LmaskSHcurve);
|
||||||
|
|
||||||
// Vibrance
|
// Vibrance
|
||||||
expvibrance->setEnabled(pp->locallab.spots.at(index).expvibrance);
|
expvibrance->setEnabled(pp->locallab.spots.at(index).expvibrance);
|
||||||
@ -8328,6 +8357,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
gammaskSH->setEditedState(spotState->gammaskSH ? Edited : UnEdited);
|
gammaskSH->setEditedState(spotState->gammaskSH ? Edited : UnEdited);
|
||||||
slomaskSH->setEditedState(spotState->slomaskSH ? Edited : UnEdited);
|
slomaskSH->setEditedState(spotState->slomaskSH ? Edited : UnEdited);
|
||||||
lapmaskSH->setEditedState(spotState->lapmaskSH ? Edited : UnEdited);
|
lapmaskSH->setEditedState(spotState->lapmaskSH ? Edited : UnEdited);
|
||||||
|
LmaskSHshape->setUnChanged(!spotState->LmaskSHcurve);
|
||||||
|
|
||||||
// Vibrance
|
// Vibrance
|
||||||
expvibrance->set_inconsistent(!spotState->expvibrance);
|
expvibrance->set_inconsistent(!spotState->expvibrance);
|
||||||
|
@ -94,6 +94,8 @@ private:
|
|||||||
FlatCurveEditor* HHmaskexpshape;
|
FlatCurveEditor* HHmaskexpshape;
|
||||||
//Shadows Highlight
|
//Shadows Highlight
|
||||||
CurveEditorGroup* const maskSHCurveEditorG;
|
CurveEditorGroup* const maskSHCurveEditorG;
|
||||||
|
CurveEditorGroup* const mask2SHCurveEditorG;
|
||||||
|
DiagonalCurveEditor* LmaskSHshape;
|
||||||
FlatCurveEditor* CCmaskSHshape;
|
FlatCurveEditor* CCmaskSHshape;
|
||||||
FlatCurveEditor* LLmaskSHshape;
|
FlatCurveEditor* LLmaskSHshape;
|
||||||
FlatCurveEditor* HHmaskSHshape;
|
FlatCurveEditor* HHmaskSHshape;
|
||||||
|
@ -1065,6 +1065,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
locallab.spots.at(j).gammaskSH = locallab.spots.at(j).gammaskSH && pSpot.gammaskSH == otherSpot.gammaskSH;
|
locallab.spots.at(j).gammaskSH = locallab.spots.at(j).gammaskSH && pSpot.gammaskSH == otherSpot.gammaskSH;
|
||||||
locallab.spots.at(j).slomaskSH = locallab.spots.at(j).slomaskSH && pSpot.slomaskSH == otherSpot.slomaskSH;
|
locallab.spots.at(j).slomaskSH = locallab.spots.at(j).slomaskSH && pSpot.slomaskSH == otherSpot.slomaskSH;
|
||||||
locallab.spots.at(j).lapmaskSH = locallab.spots.at(j).lapmaskSH && pSpot.lapmaskSH == otherSpot.lapmaskSH;
|
locallab.spots.at(j).lapmaskSH = locallab.spots.at(j).lapmaskSH && pSpot.lapmaskSH == otherSpot.lapmaskSH;
|
||||||
|
locallab.spots.at(j).LmaskSHcurve = locallab.spots.at(j).LmaskSHcurve && pSpot.LmaskSHcurve == otherSpot.LmaskSHcurve;
|
||||||
// Vibrance
|
// Vibrance
|
||||||
locallab.spots.at(j).expvibrance = locallab.spots.at(j).expvibrance && pSpot.expvibrance == otherSpot.expvibrance;
|
locallab.spots.at(j).expvibrance = locallab.spots.at(j).expvibrance && pSpot.expvibrance == otherSpot.expvibrance;
|
||||||
locallab.spots.at(j).saturated = locallab.spots.at(j).saturated && pSpot.saturated == otherSpot.saturated;
|
locallab.spots.at(j).saturated = locallab.spots.at(j).saturated && pSpot.saturated == otherSpot.saturated;
|
||||||
@ -3140,6 +3141,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.locallab.spots.at(i).lapmaskSH = mods.locallab.spots.at(i).lapmaskSH;
|
toEdit.locallab.spots.at(i).lapmaskSH = mods.locallab.spots.at(i).lapmaskSH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).LmaskSHcurve) {
|
||||||
|
toEdit.locallab.spots.at(i).LmaskSHcurve = mods.locallab.spots.at(i).LmaskSHcurve;
|
||||||
|
}
|
||||||
|
|
||||||
// Vibrance
|
// Vibrance
|
||||||
if (locallab.spots.at(i).expvibrance) {
|
if (locallab.spots.at(i).expvibrance) {
|
||||||
toEdit.locallab.spots.at(i).expvibrance = mods.locallab.spots.at(i).expvibrance;
|
toEdit.locallab.spots.at(i).expvibrance = mods.locallab.spots.at(i).expvibrance;
|
||||||
@ -4842,6 +4847,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
|||||||
gammaskSH(v),
|
gammaskSH(v),
|
||||||
slomaskSH(v),
|
slomaskSH(v),
|
||||||
lapmaskSH(v),
|
lapmaskSH(v),
|
||||||
|
LmaskSHcurve(v),
|
||||||
// Vibrance
|
// Vibrance
|
||||||
expvibrance(v),
|
expvibrance(v),
|
||||||
saturated(v),
|
saturated(v),
|
||||||
@ -5123,6 +5129,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
|||||||
gammaskSH = v;
|
gammaskSH = v;
|
||||||
slomaskSH = v;
|
slomaskSH = v;
|
||||||
lapmaskSH = v;
|
lapmaskSH = v;
|
||||||
|
LmaskSHcurve = v;
|
||||||
// Vibrance
|
// Vibrance
|
||||||
expvibrance = v;
|
expvibrance = v;
|
||||||
saturated = v;
|
saturated = v;
|
||||||
|
@ -483,6 +483,7 @@ public:
|
|||||||
bool gammaskSH;
|
bool gammaskSH;
|
||||||
bool slomaskSH;
|
bool slomaskSH;
|
||||||
bool lapmaskSH;
|
bool lapmaskSH;
|
||||||
|
bool LmaskSHcurve;
|
||||||
// Vibrance
|
// Vibrance
|
||||||
bool expvibrance;
|
bool expvibrance;
|
||||||
bool saturated;
|
bool saturated;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user