Add contrast curve to mask 1 Blur and Denoise
This commit is contained in:
parent
df007c66c9
commit
6468db2bd3
@ -1013,6 +1013,7 @@ HISTORY_MSG_772;Local - SH Mask contrast curve
|
||||
HISTORY_MSG_773;Local - TM Mask contrast curve
|
||||
HISTORY_MSG_774;Local - Reti Mask contrast curve
|
||||
HISTORY_MSG_775;Local - CBDL Mask contrast curve
|
||||
HISTORY_MSG_776;Local - Blur Denoise Mask contrast curve
|
||||
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
||||
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
||||
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
||||
|
@ -892,12 +892,14 @@ void Crop::update(int todo)
|
||||
bool localmasktmutili = parent->localmasktmutili;
|
||||
bool localmaskretiutili = parent->localmaskretiutili;
|
||||
bool localmaskcbutili = parent->localmaskcbutili;
|
||||
bool localmaskblutili = parent->localmaskblutili;
|
||||
LUTf lmasklocalcurve2(65536, 0);
|
||||
LUTf lmaskexplocalcurve2(65536, 0);
|
||||
LUTf lmaskSHlocalcurve2(65536, 0);
|
||||
LUTf lmasktmlocalcurve2(65536, 0);
|
||||
LUTf lmaskretilocalcurve2(65536, 0);
|
||||
LUTf lmaskcblocalcurve2(65536, 0);
|
||||
LUTf lmaskbllocalcurve2(65536, 0);
|
||||
LUTf hltonecurveloc2(65536, 0); //65536
|
||||
LUTf shtonecurveloc2(65536, 0);
|
||||
LUTf tonecurveloc2(65536, 0);
|
||||
@ -1009,6 +1011,8 @@ void Crop::update(int todo)
|
||||
CurveFactory::curvemaskLocal(localmaskretiutili, params.locallab.spots.at(sp).Lmaskreticurve, lmaskretilocalcurve2, sca);
|
||||
localmaskcbutili = false;
|
||||
CurveFactory::curvemaskLocal(localmaskcbutili, params.locallab.spots.at(sp).Lmaskcbcurve, lmaskcblocalcurve2, sca);
|
||||
localmaskblutili = false;
|
||||
CurveFactory::curvemaskLocal(localmaskblutili, params.locallab.spots.at(sp).Lmaskblcurve, lmaskbllocalcurve2, sca);
|
||||
|
||||
|
||||
double ecomp = params.locallab.spots.at(sp).expcomp;
|
||||
@ -1053,6 +1057,7 @@ void Crop::update(int todo)
|
||||
lmasktmlocalcurve2, localmasktmutili,
|
||||
lmaskretilocalcurve2, localmaskretiutili,
|
||||
lmaskcblocalcurve2, localmaskcbutili,
|
||||
lmaskbllocalcurve2, localmaskblutili,
|
||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||
@ -1076,6 +1081,7 @@ void Crop::update(int todo)
|
||||
lmasktmlocalcurve2, localmasktmutili,
|
||||
lmaskretilocalcurve2, localmaskretiutili,
|
||||
lmaskcblocalcurve2, localmaskcbutili,
|
||||
lmaskbllocalcurve2, localmaskblutili,
|
||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||
@ -1097,6 +1103,7 @@ void Crop::update(int todo)
|
||||
lmasktmlocalcurve2.clear();
|
||||
lmaskretilocalcurve2.clear();
|
||||
lmaskcblocalcurve2.clear();
|
||||
lmaskbllocalcurve2.clear();
|
||||
hltonecurveloc2.clear();
|
||||
shtonecurveloc2.clear();
|
||||
tonecurveloc2.clear();
|
||||
|
@ -177,6 +177,7 @@ ImProcCoordinator::ImProcCoordinator() :
|
||||
lmasktmlocalcurve(65536, 0),
|
||||
lmaskretilocalcurve(65536, 0),
|
||||
lmaskcblocalcurve(65536, 0),
|
||||
lmaskbllocalcurve(65536, 0),
|
||||
locallutili(false),
|
||||
localcutili(false),
|
||||
localexutili(false),
|
||||
@ -189,6 +190,7 @@ ImProcCoordinator::ImProcCoordinator() :
|
||||
localmasktmutili(false),
|
||||
localmaskretiutili(false),
|
||||
localmaskcbutili(false),
|
||||
localmaskblutili(false),
|
||||
lcmasexputili(false),
|
||||
lhmasexputili(false),
|
||||
llmasexputili(false),
|
||||
@ -935,6 +937,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
localmasktmutili = false;
|
||||
localmaskretiutili = false;
|
||||
localmaskcbutili = false;
|
||||
localmaskblutili = false;
|
||||
lcmasSHutili = false;
|
||||
lhmasSHutili = false;
|
||||
llmasSHutili = false;
|
||||
@ -988,6 +991,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
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);
|
||||
CurveFactory::curvemaskLocal(localmaskblutili, params->locallab.spots.at(sp).Lmaskblcurve, lmaskbllocalcurve, 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;
|
||||
@ -1047,6 +1051,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
lmasktmlocalcurve, localmasktmutili,
|
||||
lmaskretilocalcurve, localmaskretiutili,
|
||||
lmaskcblocalcurve, localmaskcbutili,
|
||||
lmaskbllocalcurve, localmaskblutili,
|
||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||
@ -1069,6 +1074,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
lmasktmlocalcurve, localmasktmutili,
|
||||
lmaskretilocalcurve, localmaskretiutili,
|
||||
lmaskcblocalcurve, localmaskcbutili,
|
||||
lmaskbllocalcurve, localmaskblutili,
|
||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||
@ -1097,6 +1103,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
||||
lmasktmlocalcurve.clear();
|
||||
lmaskretilocalcurve.clear();
|
||||
lmaskcblocalcurve.clear();
|
||||
lmaskbllocalcurve.clear();
|
||||
hltonecurveloc.clear();
|
||||
shtonecurveloc.clear();
|
||||
tonecurveloc.clear();
|
||||
|
@ -239,6 +239,7 @@ protected:
|
||||
LUTf lmasktmlocalcurve;
|
||||
LUTf lmaskretilocalcurve;
|
||||
LUTf lmaskcblocalcurve;
|
||||
LUTf lmaskbllocalcurve;
|
||||
// LUTu lhist16loc;
|
||||
LocretigainCurve locRETgainCurve;
|
||||
LocretitransCurve locRETtransCurve;
|
||||
@ -280,6 +281,7 @@ protected:
|
||||
bool localmasktmutili;
|
||||
bool localmaskretiutili;
|
||||
bool localmaskcbutili;
|
||||
bool localmaskblutili;
|
||||
bool lcmasexputili;
|
||||
bool lhmasexputili;
|
||||
bool llmasexputili;
|
||||
|
@ -231,6 +231,7 @@ public:
|
||||
LUTf & lmasktmlocalcurve, bool & localmasktmutili,
|
||||
LUTf & lmaskretilocalcurve, bool & localmaskretiutili,
|
||||
LUTf & lmaskcblocalcurve, bool & localmaskcbutili,
|
||||
LUTf & lmaskbllocalcurve, bool & localmaskblutili,
|
||||
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 & locccmasSHCurve, bool &lcmasSHutili, const LocLLmaskCurve & locllmasSHCurve, bool &llmasSHutili, const LocHHmaskCurve & lochhmasSHCurve, bool & lhmasSHutili,
|
||||
|
@ -6718,6 +6718,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
||||
LUTf & lmasktmlocalcurve, bool & localmasktmutili,
|
||||
LUTf & lmaskretilocalcurve, bool & localmaskretiutili,
|
||||
LUTf & lmaskcblocalcurve, bool & localmaskcbutili,
|
||||
LUTf & lmaskbllocalcurve, bool & localmaskblutili,
|
||||
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 & locccmasSHCurve, bool & lcmasSHutili, const LocLLmaskCurve & locllmasSHCurve, bool & llmasSHutili, const LocHHmaskCurve & lochhmasSHCurve, bool & lhmasSHutili,
|
||||
@ -6973,6 +6974,17 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
||||
}
|
||||
|
||||
|
||||
if (lmaskbllocalcurve && localmaskblutili) {
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for schedule(dynamic,16)
|
||||
#endif
|
||||
|
||||
for (int ir = 0; ir < GH; ir++)
|
||||
for (int jr = 0; jr < GW; jr++) {
|
||||
bufmaskblurbl->L[ir][jr] = 0.5f * lmaskbllocalcurve[2.f * bufmaskblurbl->L[ir][jr]];
|
||||
}
|
||||
}
|
||||
|
||||
float lap = params->locallab.spots.at(sp).lapmaskbl;
|
||||
bool pde = params->locallab.spots.at(sp).laplac;
|
||||
|
||||
|
@ -802,6 +802,7 @@ enum ProcEventCode {
|
||||
EvlocallabLmasktmshape = 772,
|
||||
EvlocallabLmaskretishape = 773,
|
||||
EvlocallabLmaskcbshape = 774,
|
||||
EvlocallabLmaskblshape = 775,
|
||||
NUMOFEVENTS
|
||||
};
|
||||
|
||||
|
@ -2567,6 +2567,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
gammaskbl(1.0),
|
||||
slomaskbl(0.0),
|
||||
lapmaskbl(0.0),
|
||||
Lmaskblcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
|
||||
// Tone Mapping
|
||||
exptonemap(false),
|
||||
stren(0.5),
|
||||
@ -2855,6 +2856,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& gammaskbl == other.gammaskbl
|
||||
&& slomaskbl == other.slomaskbl
|
||||
&& lapmaskbl == other.lapmaskbl
|
||||
&& Lmaskblcurve == other.Lmaskblcurve
|
||||
// Tone Mapping
|
||||
&& exptonemap == other.exptonemap
|
||||
&& stren == other.stren
|
||||
@ -4129,6 +4131,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).gammaskbl, "Locallab", "Gammaskbl_" + std::to_string(i), spot.gammaskbl, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).slomaskbl, "Locallab", "Slomaskbl_" + std::to_string(i), spot.slomaskbl, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).lapmaskbl, "Locallab", "Lapmaskbl_" + std::to_string(i), spot.lapmaskbl, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).Lmaskblcurve, "Locallab", "LmaskblCurve_" + std::to_string(i), spot.Lmaskblcurve, keyFile);
|
||||
// Tone Mapping
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).exptonemap, "Locallab", "Exptonemap_" + std::to_string(i), spot.exptonemap, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).stren, "Locallab", "Stren_" + std::to_string(i), spot.stren, keyFile);
|
||||
@ -5530,6 +5533,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Gammaskbl_" + std::to_string(i), pedited, spot.gammaskbl, spotEdited.gammaskbl);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Slomaskbl_" + std::to_string(i), pedited, spot.slomaskbl, spotEdited.slomaskbl);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Lapmaskbl_" + std::to_string(i), pedited, spot.lapmaskbl, spotEdited.lapmaskbl);
|
||||
assignFromKeyfile(keyFile, "Locallab", "LmaskblCurve_" + std::to_string(i), pedited, spot.Lmaskblcurve, spotEdited.Lmaskblcurve);
|
||||
// Tone Mapping
|
||||
assignFromKeyfile(keyFile, "Locallab", "Exptonemap_" + std::to_string(i), pedited, spot.exptonemap, spotEdited.exptonemap);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Stren_" + std::to_string(i), pedited, spot.stren, spotEdited.stren);
|
||||
|
@ -1116,6 +1116,7 @@ struct LocallabParams {
|
||||
double gammaskbl;
|
||||
double slomaskbl;
|
||||
double lapmaskbl;
|
||||
std::vector<double> Lmaskblcurve;
|
||||
// Tone Mapping
|
||||
bool exptonemap;
|
||||
double stren;
|
||||
|
@ -801,7 +801,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
||||
LUMINANCECURVE, //EvlocallabLmaskSHshape
|
||||
LUMINANCECURVE, //EvlocallabLmasktmshape
|
||||
LUMINANCECURVE, //EvlocallabLmaskretishape
|
||||
LUMINANCECURVE //EvlocallabLmaskcbshape
|
||||
LUMINANCECURVE, //EvlocallabLmaskcbshape
|
||||
LUMINANCECURVE //EvlocallabLmaskblshape
|
||||
};
|
||||
|
||||
namespace rtengine
|
||||
|
@ -1130,6 +1130,7 @@ private:
|
||||
LUTf lmasktmlocalcurve(65536, 0);
|
||||
LUTf lmaskretilocalcurve(65536, 0);
|
||||
LUTf lmaskcblocalcurve(65536, 0);
|
||||
LUTf lmaskbllocalcurve(65536, 0);
|
||||
|
||||
// int maxspot = 1;
|
||||
float** shbuffer = nullptr;
|
||||
@ -1158,6 +1159,7 @@ private:
|
||||
bool localmasktmutili = false;
|
||||
bool localmaskretiutili = false;
|
||||
bool localmaskcbutili = false;
|
||||
bool localmaskblutili = false;
|
||||
bool lcmasexputili = false;
|
||||
bool lhmasexputili = false;
|
||||
bool llmasexputili = false;
|
||||
@ -1212,6 +1214,7 @@ private:
|
||||
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);
|
||||
CurveFactory::curvemaskLocal(localmaskblutili, params.locallab.spots.at(sp).Lmaskblcurve, lmaskbllocalcurve, 1);
|
||||
//provisory
|
||||
double ecomp = params.locallab.spots.at(sp).expcomp;
|
||||
double black = params.locallab.spots.at(sp).black;
|
||||
@ -1252,6 +1255,7 @@ private:
|
||||
lmasktmlocalcurve, localmasktmutili,
|
||||
lmaskretilocalcurve, localmaskretiutili,
|
||||
lmaskcblocalcurve, localmaskcbutili,
|
||||
lmaskbllocalcurve, localmaskblutili,
|
||||
locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||
@ -1275,6 +1279,7 @@ private:
|
||||
lmasktmlocalcurve.clear();
|
||||
lmaskretilocalcurve.clear();
|
||||
lmaskcblocalcurve.clear();
|
||||
lmaskbllocalcurve.clear();
|
||||
shtonecurveloc.clear();
|
||||
tonecurveloc.clear();
|
||||
lightCurveloc.clear();
|
||||
|
@ -167,6 +167,7 @@ Locallab::Locallab():
|
||||
curveEditorGG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL"))),
|
||||
//Blur
|
||||
maskblCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK"))),
|
||||
mask2blCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK"))),
|
||||
|
||||
//TM
|
||||
masktmCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK"))),
|
||||
@ -2123,6 +2124,24 @@ Locallab::Locallab():
|
||||
HHmaskblshape->setBottomBarColorProvider(this, 6);
|
||||
|
||||
maskblCurveEditorG->curveListComplete();
|
||||
|
||||
mask2blCurveEditorG->setCurveListener(this);
|
||||
Lmaskblshape = static_cast<DiagonalCurveEditor*>(mask2blCurveEditorG->addCurve(CT_Diagonal, "L(L)"));
|
||||
Lmaskblshape->setResetCurve(DiagonalCurveType(defSpot.Lmaskblcurve.at(0)), defSpot.Lmaskblcurve);
|
||||
|
||||
if (showtooltip) {
|
||||
Lmaskblshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP"));
|
||||
}
|
||||
|
||||
std::vector<GradientMilestone> mLmaskblshape;
|
||||
mLmaskblshape.push_back(GradientMilestone(0., 0., 0., 0.));
|
||||
mLmaskblshape.push_back(GradientMilestone(1., 1., 1., 1.));
|
||||
Lmaskblshape->setBottomBarBgGradient(mLmaskblshape);
|
||||
Lmaskblshape->setLeftBarBgGradient(mLmaskblshape);
|
||||
mask2blCurveEditorG->curveListComplete();
|
||||
|
||||
|
||||
|
||||
enablMaskConn = enablMask->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::enablMaskChanged));
|
||||
|
||||
showmaskblMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||
@ -2188,6 +2207,7 @@ Locallab::Locallab():
|
||||
maskblBox->pack_start(*chromaskbl, Gtk::PACK_SHRINK, 0);
|
||||
maskblBox->pack_start(*gammaskbl, Gtk::PACK_SHRINK, 0);
|
||||
maskblBox->pack_start(*slomaskbl, Gtk::PACK_SHRINK, 0);
|
||||
maskblBox->pack_start(*mask2blCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||
expmaskbl->add(*maskblBox, false);
|
||||
panel->pack_start(*expmaskbl);
|
||||
|
||||
@ -2331,6 +2351,7 @@ Locallab::~Locallab()
|
||||
delete LocalcurveEditorwav;
|
||||
delete masktmCurveEditorG;
|
||||
delete maskblCurveEditorG;
|
||||
delete mask2blCurveEditorG;
|
||||
delete maskretiCurveEditorG;
|
||||
delete mask2retiCurveEditorG;
|
||||
delete maskcbCurveEditorG;
|
||||
@ -3393,6 +3414,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pp->locallab.spots.at(pp->locallab.selspot).slomaskbl = slomaskbl->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lapmaskbl = lapmaskbl->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).fftwbl = fftwbl->get_active();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).Lmaskblcurve = Lmaskblshape->getCurve();
|
||||
|
||||
// Tone Mapping
|
||||
pp->locallab.spots.at(pp->locallab.selspot).exptonemap = exptonemap->getEnabled();
|
||||
@ -3698,6 +3720,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pe->locallab.spots.at(pp->locallab.selspot).slomaskbl = pe->locallab.spots.at(pp->locallab.selspot).slomaskbl || slomaskbl->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).lapmaskbl = pe->locallab.spots.at(pp->locallab.selspot).lapmaskbl || lapmaskbl->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).fftwbl = pe->locallab.spots.at(pp->locallab.selspot).fftwbl || !fftwbl->get_inconsistent();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).Lmaskblcurve = pe->locallab.spots.at(pp->locallab.selspot).Lmaskblcurve || !Lmaskblshape->isUnChanged();
|
||||
// Tone Mapping
|
||||
pe->locallab.spots.at(pp->locallab.selspot).exptonemap = pe->locallab.spots.at(pp->locallab.selspot).activlum || !exptonemap->get_inconsistent();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).stren = pe->locallab.spots.at(pp->locallab.selspot).stren || stren->getEditedState();
|
||||
@ -3990,6 +4013,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).slomaskbl = pedited->locallab.spots.at(pp->locallab.selspot).slomaskbl || slomaskbl->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).lapmaskbl = pedited->locallab.spots.at(pp->locallab.selspot).lapmaskbl || lapmaskbl->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).fftwbl = pedited->locallab.spots.at(pp->locallab.selspot).fftwbl || !fftwbl->get_inconsistent();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).Lmaskblcurve = pedited->locallab.spots.at(pp->locallab.selspot).Lmaskblcurve || !Lmaskblshape->isUnChanged();
|
||||
// Tone Mapping
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).exptonemap = pedited->locallab.spots.at(pp->locallab.selspot).exptonemap || !exptonemap->get_inconsistent();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).stren = pedited->locallab.spots.at(pp->locallab.selspot).stren || stren->getEditedState();
|
||||
@ -4395,6 +4419,12 @@ void Locallab::curveChanged(CurveEditor* ce)
|
||||
}
|
||||
}
|
||||
|
||||
if (ce == Lmaskblshape) {
|
||||
if (listener) {
|
||||
listener->panelChanged(EvlocallabLmaskblshape, M("HISTORY_CUSTOMCURVE"));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// TM
|
||||
@ -8154,6 +8184,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
slomaskbl->setValue(pp->locallab.spots.at(index).slomaskbl);
|
||||
lapmaskbl->setValue(pp->locallab.spots.at(index).lapmaskbl);
|
||||
fftwbl->set_active(pp->locallab.spots.at(index).fftwbl);
|
||||
Lmaskblshape->setCurve(pp->locallab.spots.at(index).Lmaskblcurve);
|
||||
|
||||
// Tone Mapping
|
||||
exptonemap->setEnabled(pp->locallab.spots.at(index).exptonemap);
|
||||
@ -8504,6 +8535,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
slomaskbl->setEditedState(spotState->slomaskbl ? Edited : UnEdited);
|
||||
lapmaskbl->setEditedState(spotState->lapmaskbl ? Edited : UnEdited);
|
||||
fftwbl->set_inconsistent(multiImage && !spotState->fftwbl);
|
||||
Lmaskblshape->setUnChanged(!spotState->Lmaskblcurve);
|
||||
|
||||
// Tone Mapping
|
||||
exptonemap->set_inconsistent(!spotState->exptonemap);
|
||||
|
@ -104,6 +104,8 @@ private:
|
||||
DiagonalCurveEditor* skinTonesCurve;
|
||||
//Blur and noise
|
||||
CurveEditorGroup* const maskblCurveEditorG;
|
||||
CurveEditorGroup* const mask2blCurveEditorG;
|
||||
DiagonalCurveEditor* Lmaskblshape;
|
||||
FlatCurveEditor* CCmaskblshape;
|
||||
FlatCurveEditor* LLmaskblshape;
|
||||
FlatCurveEditor* HHmaskblshape;
|
||||
|
@ -1107,6 +1107,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).slomaskbl = locallab.spots.at(j).slomaskbl && pSpot.slomaskbl == otherSpot.slomaskbl;
|
||||
locallab.spots.at(j).lapmaskbl = locallab.spots.at(j).lapmaskbl && pSpot.lapmaskbl == otherSpot.lapmaskbl;
|
||||
locallab.spots.at(j).fftwbl = locallab.spots.at(j).fftwbl && pSpot.fftwbl == otherSpot.fftwbl;
|
||||
locallab.spots.at(j).Lmaskblcurve = locallab.spots.at(j).Lmaskblcurve && pSpot.Lmaskblcurve == otherSpot.Lmaskblcurve;
|
||||
// Tone Mapping
|
||||
locallab.spots.at(j).exptonemap = locallab.spots.at(j).exptonemap && pSpot.exptonemap == otherSpot.exptonemap;
|
||||
locallab.spots.at(j).stren = locallab.spots.at(j).stren && pSpot.stren == otherSpot.stren;
|
||||
@ -3307,6 +3308,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).lapmaskbl = mods.locallab.spots.at(i).lapmaskbl;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).Lmaskblcurve) {
|
||||
toEdit.locallab.spots.at(i).Lmaskblcurve = mods.locallab.spots.at(i).Lmaskblcurve;
|
||||
}
|
||||
|
||||
// Tone Mapping
|
||||
if (locallab.spots.at(i).exptonemap) {
|
||||
toEdit.locallab.spots.at(i).exptonemap = mods.locallab.spots.at(i).exptonemap;
|
||||
@ -4905,6 +4910,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
gammaskbl(v),
|
||||
slomaskbl(v),
|
||||
lapmaskbl(v),
|
||||
Lmaskblcurve(v),
|
||||
// Tone Mapping
|
||||
exptonemap(v),
|
||||
stren(v),
|
||||
@ -5190,6 +5196,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
gammaskbl = v;
|
||||
slomaskbl = v;
|
||||
lapmaskbl = v;
|
||||
Lmaskblcurve = v;
|
||||
// Tone Mapping
|
||||
exptonemap = v;
|
||||
stren = v;
|
||||
|
@ -526,6 +526,7 @@ public:
|
||||
bool gammaskbl;
|
||||
bool slomaskbl;
|
||||
bool lapmaskbl;
|
||||
bool Lmaskblcurve;
|
||||
// Tone Mapping
|
||||
bool exptonemap;
|
||||
bool stren;
|
||||
|
Loading…
x
Reference in New Issue
Block a user