Improve exposure with shadows
This commit is contained in:
parent
e3962ff8dc
commit
9d0d608189
@ -943,6 +943,7 @@ HISTORY_MSG_696;Local - Retinex Normalize
|
||||
HISTORY_MSG_697;Local - TM Normalize
|
||||
HISTORY_MSG_698;Local - Local contrast Fast Fourier
|
||||
HISTORY_MSG_699;Local - Retinex Fast Fourier
|
||||
HISTORY_MSG_701;Local - Exp Shadows
|
||||
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
||||
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
||||
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
||||
@ -2105,6 +2106,8 @@ TP_LOCALLAB_RETI_FFTW_TOOLTIP;FFT improve quality and allow big radius.\nThe tre
|
||||
TP_LOCALLAB_TRANSMISSIONGAIN;Transmission gain
|
||||
TP_LOCALLAB_STREN;Compression Strength
|
||||
TP_LOCALLAB_STRGRID;Strength
|
||||
TP_LOCALLAB_SHADEX;Shadows
|
||||
TP_LOCALLAB_SHADEXCOMP;Shadows compresion and tonal width
|
||||
TP_LOCALLAB_SHOWLAPLACE;Laplacian (first)
|
||||
TP_LOCALLAB_SHOWFOURIER;Fourier (dct)
|
||||
TP_LOCALLAB_SHOWPOISSON;Poisson (pde)
|
||||
|
@ -291,6 +291,7 @@ struct local_params {
|
||||
float satur;
|
||||
int blac;
|
||||
int shcomp;
|
||||
int shadex;
|
||||
int hlcomp;
|
||||
int hlcompthr;
|
||||
double expcomp;
|
||||
@ -756,6 +757,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
||||
lp.cut_past = cupas;
|
||||
lp.blac = locallab.spots.at(sp).black;
|
||||
lp.shcomp = locallab.spots.at(sp).shcompr;
|
||||
lp.shadex = locallab.spots.at(sp).shadex;
|
||||
lp.hlcomp = locallab.spots.at(sp).hlcompr;
|
||||
lp.hlcompthr = locallab.spots.at(sp).hlcomprthresh;
|
||||
lp.expcomp = locallab.spots.at(sp).expcomp;
|
||||
@ -6409,7 +6411,6 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
||||
bufexpfin->b[y][x] = original->b[y + ystart][x + xstart];
|
||||
}
|
||||
}
|
||||
|
||||
ImProcFunctions::shadowsHighlights(bufexpfin.get(), lp.hsena, 1, lp.highlihs, lp.shadowhs, lp.radiushs, sk, lp.hltonalhs, lp.shtonalhs);
|
||||
|
||||
#ifdef _OPENMP
|
||||
@ -7424,6 +7425,12 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
||||
bufexpfin->b[y][x] = original->b[y + ystart][x + xstart];
|
||||
}
|
||||
}
|
||||
//shadows with ipshadowshighlight
|
||||
if(lp.shadex > 0) {
|
||||
ImProcFunctions::shadowsHighlights(bufexporig.get(), true, 1, 0, lp.shadex, 40, sk, 0, lp.shcomp);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (exlocalcurve && localexutili) {// L=f(L) curve enhanced
|
||||
#ifdef _OPENMP
|
||||
|
@ -33,7 +33,7 @@ void ImProcFunctions::shadowsHighlights(LabImage *lab, bool ena, int labmode, in
|
||||
if (!ena || (!hightli && !shado)){
|
||||
return;
|
||||
}
|
||||
|
||||
printf("shhashaaaa\n");
|
||||
const int width = lab->W;
|
||||
const int height = lab->H;
|
||||
const bool lab_mode = labmode;
|
||||
|
@ -727,6 +727,7 @@ enum ProcEventCode {
|
||||
Evlocallabfftwlc = 697,
|
||||
Evlocallabfftwreti = 698,
|
||||
EvlocallabshowmasksoftMethod = 699,
|
||||
Evlocallabshadex = 700,
|
||||
NUMOFEVENTS
|
||||
};
|
||||
|
||||
|
@ -2397,6 +2397,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
hlcompr(0),
|
||||
hlcomprthresh(0),
|
||||
black(0),
|
||||
shadex(0),
|
||||
shcompr(50),
|
||||
expchroma(30),
|
||||
warm(0),
|
||||
@ -2616,6 +2617,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& hlcompr == other.hlcompr
|
||||
&& hlcomprthresh == other.hlcomprthresh
|
||||
&& black == other.black
|
||||
&& shadex == other.shadex
|
||||
&& shcompr == other.shcompr
|
||||
&& expchroma == other.expchroma
|
||||
&& warm == other.warm
|
||||
@ -3792,8 +3794,9 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).hlcompr, "Locallab", "Hlcompr_" + std::to_string(i), spot.hlcompr, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).hlcomprthresh, "Locallab", "Hlcomprthresh_" + std::to_string(i), spot.hlcomprthresh, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).black, "Locallab", "Black_" + std::to_string(i), spot.black, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).shadex, "Locallab", "Shadex_" + std::to_string(i), spot.shadex, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).shcompr, "Locallab", "Shcompr_" + std::to_string(i), spot.shcompr, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).shcompr, "Locallab", "Expchroma_" + std::to_string(i), spot.expchroma, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).expchroma, "Locallab", "Expchroma_" + std::to_string(i), spot.expchroma, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).warm, "Locallab", "Warm_" + std::to_string(i), spot.warm, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sensiex, "Locallab", "Sensiex_" + std::to_string(i), spot.sensiex, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).structexp, "Locallab", "Structexp_" + std::to_string(i), spot.structexp, keyFile);
|
||||
@ -5096,6 +5099,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Hlcompr_" + std::to_string(i), pedited, spot.hlcompr, spotEdited.hlcompr);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Hlcomprthresh_" + std::to_string(i), pedited, spot.hlcomprthresh, spotEdited.hlcomprthresh);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Black_" + std::to_string(i), pedited, spot.black, spotEdited.black);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Shadex_" + std::to_string(i), pedited, spot.shadex, spotEdited.shadex);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Shcompr_" + std::to_string(i), pedited, spot.shcompr, spotEdited.shcompr);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Expchroma_" + std::to_string(i), pedited, spot.expchroma, spotEdited.expchroma);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Warm_" + std::to_string(i), pedited, spot.warm, spotEdited.warm);
|
||||
|
@ -998,6 +998,8 @@ struct LocallabParams {
|
||||
int hlcompr;
|
||||
int hlcomprthresh;
|
||||
int black;
|
||||
|
||||
int shadex;
|
||||
int shcompr;
|
||||
int expchroma;
|
||||
int warm;
|
||||
|
@ -726,7 +726,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
||||
LUMINANCECURVE, // Evlocallabequiltm
|
||||
LUMINANCECURVE, // Evlocallabfftwlc
|
||||
LUMINANCECURVE, // Evlocallabfftwreti
|
||||
LUMINANCECURVE //EvlocallabshowmasksoftMethod
|
||||
LUMINANCECURVE, //EvlocallabshowmasksoftMethod
|
||||
LUMINANCECURVE //Evlocallabshadex
|
||||
};
|
||||
|
||||
|
||||
|
@ -185,7 +185,8 @@ Locallab::Locallab():
|
||||
hlcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTS"), 0, 500, 1, 0))),
|
||||
hlcomprthresh(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD"), 0, 100, 1, 0))),
|
||||
black(Gtk::manage(new Adjuster(M("TP_EXPOSURE_BLACKLEVEL"), -16384, 32768, 50, 0))),
|
||||
shcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRSHADOWS"), 0, 100, 1, 50))),
|
||||
shadex(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHADEX"), 0, 100, 1, 0))),
|
||||
shcompr(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHADEXCOMP"), 0, 100, 1, 50))),
|
||||
expchroma(Gtk::manage(new Adjuster(M("TP_LOCALLAB_EXPCHROMA"), -50, 100, 1, 30))),
|
||||
warm(Gtk::manage(new Adjuster(M("TP_LOCALLAB_WARM"), -100., 100., 1., 0., Gtk::manage(new RTImage("circle-blue-small.png")), Gtk::manage(new RTImage("circle-orange-small.png"))))),
|
||||
sensiex(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 15))),
|
||||
@ -572,6 +573,7 @@ Locallab::Locallab():
|
||||
hlcomprthresh->setAdjusterListener(this);
|
||||
|
||||
black->setAdjusterListener(this);
|
||||
shadex->setAdjusterListener(this);
|
||||
|
||||
shcompr->setAdjusterListener(this);
|
||||
expchroma->setAdjusterListener(this);
|
||||
@ -648,6 +650,7 @@ Locallab::Locallab():
|
||||
exposeBox->pack_start(*hlcompr);
|
||||
exposeBox->pack_start(*hlcomprthresh);
|
||||
exposeBox->pack_start(*black);
|
||||
exposeBox->pack_start(*shadex);
|
||||
exposeBox->pack_start(*shcompr);
|
||||
exposeBox->pack_start(*expchroma);
|
||||
exposeBox->pack_start(*warm);
|
||||
@ -2177,6 +2180,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pp->locallab.spots.at(pp->locallab.selspot).hlcompr = hlcompr->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).hlcomprthresh = hlcomprthresh->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).black = black->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).shadex = shadex->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).shcompr = shcompr->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).expchroma = expchroma->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).warm = warm->getIntValue();
|
||||
@ -2419,6 +2423,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pe->locallab.spots.at(pp->locallab.selspot).hlcompr = pe->locallab.spots.at(pp->locallab.selspot).hlcompr || hlcompr->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).hlcomprthresh = pe->locallab.spots.at(pp->locallab.selspot).hlcomprthresh || hlcomprthresh->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).black = pe->locallab.spots.at(pp->locallab.selspot).black || black->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).shadex = pe->locallab.spots.at(pp->locallab.selspot).shadex || shadex->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).shcompr = pe->locallab.spots.at(pp->locallab.selspot).shcompr || shcompr->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).expchroma = pe->locallab.spots.at(pp->locallab.selspot).expchroma || expchroma->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).warm = pe->locallab.spots.at(pp->locallab.selspot).warm || warm->getEditedState();
|
||||
@ -2642,6 +2647,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).hlcompr = pedited->locallab.spots.at(pp->locallab.selspot).hlcompr || hlcompr->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).hlcomprthresh = pedited->locallab.spots.at(pp->locallab.selspot).hlcomprthresh || hlcomprthresh->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).black = pedited->locallab.spots.at(pp->locallab.selspot).black || black->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).shadex = pedited->locallab.spots.at(pp->locallab.selspot).shadex || shadex->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).shcompr = pedited->locallab.spots.at(pp->locallab.selspot).shcompr || shcompr->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).expchroma = pedited->locallab.spots.at(pp->locallab.selspot).expchroma || expchroma->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).warm = pedited->locallab.spots.at(pp->locallab.selspot).warm || warm->getEditedState();
|
||||
@ -3495,6 +3501,7 @@ void Locallab::inversexChanged()
|
||||
expmaskexp->show();
|
||||
structexp->show();
|
||||
blurexpde->show();
|
||||
shadex->show();
|
||||
softradiusexp->show();
|
||||
showmaskexpMethod->hide(); // Being able to change Color & Light mask visibility is useless in batch mode
|
||||
} else if (inversex->get_active()) {
|
||||
@ -3502,6 +3509,7 @@ void Locallab::inversexChanged()
|
||||
curveEditorG->show();
|
||||
expmaskexp->hide();
|
||||
structexp->hide();
|
||||
shadex->hide();
|
||||
blurexpde->show();
|
||||
softradiusexp->hide();
|
||||
|
||||
@ -3512,6 +3520,7 @@ void Locallab::inversexChanged()
|
||||
structexp->show();
|
||||
blurexpde->show();
|
||||
softradiusexp->show();
|
||||
shadex->show();
|
||||
|
||||
if (batchMode) {
|
||||
showmaskexpMethod->hide(); // Being able to change Color & Light mask visibility is useless in batch mode
|
||||
@ -3883,6 +3892,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
hlcompr->setDefault((double)defSpot->hlcompr);
|
||||
hlcomprthresh->setDefault((double)defSpot->hlcomprthresh);
|
||||
black->setDefault((double)defSpot->black);
|
||||
shadex->setDefault((double)defSpot->shadex);
|
||||
shcompr->setDefault((double)defSpot->shcompr);
|
||||
expchroma->setDefault((double)defSpot->expchroma);
|
||||
warm->setDefault((double)defSpot->warm);
|
||||
@ -4016,6 +4026,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
hlcompr->setDefaultEditedState(Irrelevant);
|
||||
hlcomprthresh->setDefaultEditedState(Irrelevant);
|
||||
black->setDefaultEditedState(Irrelevant);
|
||||
shadex->setDefaultEditedState(Irrelevant);
|
||||
shcompr->setDefaultEditedState(Irrelevant);
|
||||
expchroma->setDefaultEditedState(Irrelevant);
|
||||
warm->setDefaultEditedState(Irrelevant);
|
||||
@ -4153,6 +4164,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
hlcompr->setDefaultEditedState(defSpotState->hlcompr ? Edited : UnEdited);
|
||||
hlcomprthresh->setDefaultEditedState(defSpotState->hlcomprthresh ? Edited : UnEdited);
|
||||
black->setDefaultEditedState(defSpotState->black ? Edited : UnEdited);
|
||||
shadex->setDefaultEditedState(defSpotState->shadex ? Edited : UnEdited);
|
||||
shcompr->setDefaultEditedState(defSpotState->shcompr ? Edited : UnEdited);
|
||||
expchroma->setDefaultEditedState(defSpotState->expchroma ? Edited : UnEdited);
|
||||
warm->setDefaultEditedState(defSpotState->warm ? Edited : UnEdited);
|
||||
@ -4398,6 +4410,15 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
|
||||
}
|
||||
}
|
||||
|
||||
if (a == shadex) {
|
||||
// Update Exposure GUI according to shadex adjuster state (to be compliant with updateSpecificGUIState function)
|
||||
if (multiImage && shadex->getEditedState() != Edited) {
|
||||
shcompr->set_sensitive(true);
|
||||
} else {
|
||||
shcompr->set_sensitive(!((int)shadex->getValue() == 0)); // At black = 0, shcompr value has no effect
|
||||
}
|
||||
}
|
||||
|
||||
if (getEnabled() && expexpose->getEnabled()) {
|
||||
if (a == expcomp) {
|
||||
if (listener) {
|
||||
@ -4423,6 +4444,12 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
|
||||
}
|
||||
}
|
||||
|
||||
if (a == shadex) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabshadex, shadex->getTextValue());
|
||||
}
|
||||
}
|
||||
|
||||
if (a == shcompr) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabshcompr, shcompr->getTextValue());
|
||||
@ -5103,6 +5130,7 @@ void Locallab::setBatchMode(bool batchMode)
|
||||
hlcompr->showEditedCB();
|
||||
hlcomprthresh->showEditedCB();
|
||||
black->showEditedCB();
|
||||
shadex->showEditedCB();
|
||||
shcompr->showEditedCB();
|
||||
expchroma->showEditedCB();
|
||||
warm->showEditedCB();
|
||||
@ -5545,6 +5573,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
hlcompr->setValue(pp->locallab.spots.at(index).hlcompr);
|
||||
hlcomprthresh->setValue(pp->locallab.spots.at(index).hlcomprthresh);
|
||||
black->setValue(pp->locallab.spots.at(index).black);
|
||||
shadex->setValue(pp->locallab.spots.at(index).shadex);
|
||||
shcompr->setValue(pp->locallab.spots.at(index).shcompr);
|
||||
expchroma->setValue(pp->locallab.spots.at(index).expchroma);
|
||||
warm->setValue(pp->locallab.spots.at(index).warm);
|
||||
@ -5811,6 +5840,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
hlcompr->setEditedState(spotState->hlcompr ? Edited : UnEdited);
|
||||
hlcomprthresh->setEditedState(spotState->hlcomprthresh ? Edited : UnEdited);
|
||||
black->setEditedState(spotState->black ? Edited : UnEdited);
|
||||
shadex->setEditedState(spotState->shadex ? Edited : UnEdited);
|
||||
warm->setEditedState(spotState->warm ? Edited : UnEdited);
|
||||
shcompr->setEditedState(spotState->shcompr ? Edited : UnEdited);
|
||||
expchroma->setEditedState(spotState->expchroma ? Edited : UnEdited);
|
||||
@ -6038,14 +6068,16 @@ void Locallab::updateSpecificGUIState()
|
||||
if (multiImage && inversex->get_inconsistent()) {
|
||||
structexp->show();
|
||||
softradiusexp->show();
|
||||
shadex->show();
|
||||
showmaskexpMethod->hide(); // Being able to change Color & Light mask visibility is useless in batch mode
|
||||
} else if (inversex->get_active()) {
|
||||
structexp->hide();
|
||||
softradiusexp->hide();
|
||||
shadex->hide();
|
||||
} else {
|
||||
structexp->show();
|
||||
softradiusexp->show();
|
||||
|
||||
shadex->show();
|
||||
if (batchMode) {
|
||||
showmaskexpMethod->hide(); // Being able to change Color & Light mask visibility is useless in batch mode
|
||||
}
|
||||
@ -6067,6 +6099,12 @@ void Locallab::updateSpecificGUIState()
|
||||
shcompr->set_sensitive(!((int)black->getValue() == 0)); // At black = 0, shcompr value has no effect
|
||||
}
|
||||
|
||||
if (multiImage && shadex->getEditedState() != Edited) {
|
||||
shcompr->set_sensitive(true);
|
||||
} else {
|
||||
shcompr->set_sensitive(!((int)shadex->getValue() == 0)); // At black = 0, shcompr value has no effect
|
||||
}
|
||||
|
||||
// Update Vibrance GUI according to pastsattog button state (to be compliant with pastsattog_toggled function)
|
||||
if (multiImage && pastSatTog->get_inconsistent()) {
|
||||
psThreshold->set_sensitive(true);
|
||||
|
@ -127,6 +127,7 @@ private:
|
||||
Adjuster* const hlcompr;
|
||||
Adjuster* const hlcomprthresh;
|
||||
Adjuster* const black;
|
||||
Adjuster* const shadex;
|
||||
Adjuster* const shcompr;
|
||||
Adjuster* const expchroma;
|
||||
Adjuster* const warm;
|
||||
|
@ -987,6 +987,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).hlcompr = locallab.spots.at(j).hlcompr && pSpot.hlcompr == otherSpot.hlcompr;
|
||||
locallab.spots.at(j).hlcomprthresh = locallab.spots.at(j).hlcomprthresh && pSpot.hlcomprthresh == otherSpot.hlcomprthresh;
|
||||
locallab.spots.at(j).black = locallab.spots.at(j).black && pSpot.black == otherSpot.black;
|
||||
locallab.spots.at(j).shadex = locallab.spots.at(j).shadex && pSpot.shadex == otherSpot.shadex;
|
||||
locallab.spots.at(j).shcompr = locallab.spots.at(j).shcompr && pSpot.shcompr == otherSpot.shcompr;
|
||||
locallab.spots.at(j).expchroma = locallab.spots.at(j).expchroma && pSpot.expchroma == otherSpot.expchroma;
|
||||
locallab.spots.at(j).warm = locallab.spots.at(j).warm && pSpot.warm == otherSpot.warm;
|
||||
@ -2802,6 +2803,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).black = mods.locallab.spots.at(i).black;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).shadex) {
|
||||
toEdit.locallab.spots.at(i).shadex = mods.locallab.spots.at(i).shadex;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).expchroma) {
|
||||
toEdit.locallab.spots.at(i).expchroma = mods.locallab.spots.at(i).expchroma;
|
||||
}
|
||||
@ -4375,6 +4380,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
hlcompr(v),
|
||||
hlcomprthresh(v),
|
||||
black(v),
|
||||
shadex(v),
|
||||
shcompr(v),
|
||||
expchroma(v),
|
||||
warm(v),
|
||||
@ -4591,6 +4597,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
hlcompr = v;
|
||||
hlcomprthresh = v;
|
||||
black = v;
|
||||
shadex = v;
|
||||
shcompr = v;
|
||||
expchroma = v;
|
||||
warm = v;
|
||||
|
@ -414,6 +414,7 @@ public:
|
||||
bool hlcompr;
|
||||
bool hlcomprthresh;
|
||||
bool black;
|
||||
bool shadex;
|
||||
bool shcompr;
|
||||
bool expchroma;
|
||||
bool warm;
|
||||
|
Loading…
x
Reference in New Issue
Block a user