Add simplified Clarity to CBDL
This commit is contained in:
parent
b32bb6449d
commit
b02062a3b0
@ -904,6 +904,7 @@ HISTORY_MSG_656;Local - Color soft radius
|
||||
HISTORY_MSG_657;Local - Retinex soft radius
|
||||
HISTORY_MSG_658;Local - CBDL soft radius
|
||||
HISTORY_MSG_659;L*a*b Spot transition-weakening
|
||||
HISTORY_MSG_660;Local - cbdl clarity
|
||||
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
||||
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
||||
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
||||
@ -1965,6 +1966,7 @@ TP_LOCALLAB_BLSYM;Symmetric
|
||||
TP_LOCALLAB_CENTER_X;Center X
|
||||
TP_LOCALLAB_CENTER_Y;Center Y
|
||||
TP_LOCALLAB_CBDL;Contrast by detail levels -Dist.defects:grease..
|
||||
TP_LOCALLAB_CLARITYML;Clarity
|
||||
TP_LOCALLAB_EXPCBDL_TOOLTIP;In the case of contaminated sensor (type "grease"), and when the area is important or for a series of small defects.\n\na) put the selection spot on a pronounced default (adapting its size if necessary); b) choose a wide selection area to cover most of the area affected by the defects; c) Select a fairly large transition value; d) act on levels 3 and 4 or lower by reducing the contrast (values below 100) and by acting on the chroma slider if necessary.
|
||||
TP_LOCALLAB_CHROMA;Chrominance
|
||||
TP_LOCALLAB_CHROMASKCOL;Chroma mask
|
||||
|
@ -251,7 +251,7 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt
|
||||
|
||||
}
|
||||
|
||||
void ImProcFunctions::cbdl_local_temp(float ** src, float ** loctemp, int srcwidth, int srcheight, const float * mult, float kchro, const double dirpyrThreshold, const double skinprot, const bool gamutlab, float b_l, float t_l, float t_r, float b_r, int choice, int scaleprev)
|
||||
void ImProcFunctions::cbdl_local_temp(float ** src, float ** loctemp, int srcwidth, int srcheight, const float * mult, float kchro, const double dirpyrThreshold, const float mergeL, const double skinprot, const bool gamutlab, float b_l, float t_l, float t_r, float b_r, int choice, int scaleprev)
|
||||
{
|
||||
int lastlevel = maxlevelloc;
|
||||
|
||||
@ -355,6 +355,14 @@ void ImProcFunctions::cbdl_local_temp(float ** src, float ** loctemp, int srcwid
|
||||
// with the current implementation of idirpyr_eq_channel we can safely use the buffer from last level as buffer, saves some memory
|
||||
float ** buffer = dirpyrlo[lastlevel - 1];
|
||||
|
||||
std::unique_ptr<LabImage> resid5(new LabImage(srcwidth, srcheight));
|
||||
#pragma omp parallel for
|
||||
for (int i = 0; i < srcheight; i++) {
|
||||
for (int j = 0; j < srcwidth; j++) {
|
||||
resid5->L[i][j] = buffer[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
for (int level = lastlevel - 1; level > 0; level--) {
|
||||
idirpyr_eq_channel_loc(dirpyrlo[level], dirpyrlo[level - 1], buffer, srcwidth, srcheight, level, multi, dirpyrThreshold, nullptr, nullptr, skinprot, gamutlab, b_l, t_l, t_r, b_r, choice);
|
||||
}
|
||||
@ -363,13 +371,21 @@ void ImProcFunctions::cbdl_local_temp(float ** src, float ** loctemp, int srcwid
|
||||
|
||||
idirpyr_eq_channel_loc(dirpyrlo[0], src, buffer, srcwidth, srcheight, 0, multi, dirpyrThreshold, nullptr, nullptr, skinprot, gamutlab, b_l, t_l, t_r, b_r, choice);
|
||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
std::unique_ptr<LabImage> loct(new LabImage(srcwidth, srcheight));
|
||||
|
||||
#pragma omp parallel for
|
||||
for (int i = 0; i < srcheight; i++)
|
||||
for (int j = 0; j < srcwidth; j++) {
|
||||
loct->L[i][j] = CLIP(buffer[i][j]); // TODO: Really a clip necessary?
|
||||
}
|
||||
float clar = 0.01f * mergeL;
|
||||
|
||||
for (int i = 0; i < srcheight; i++)
|
||||
for (int j = 0; j < srcwidth; j++) {
|
||||
loctemp[i][j] = CLIP(buffer[i][j]); // TODO: Really a clip necessary?
|
||||
}
|
||||
|
||||
#pragma omp parallel for
|
||||
for (int i = 0; i < srcheight; i++)
|
||||
for (int j = 0; j < srcwidth; j++) {
|
||||
loctemp[i][j] = (1.f + clar) * loct->L[i][j] - clar * resid5->L[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -383,7 +383,7 @@ public:
|
||||
float MadRgb(float * DataList, const int datalen);
|
||||
|
||||
// pyramid wavelet
|
||||
void cbdl_local_temp(float ** src, float ** loctemp, int srcwidth, int srcheight, const float * mult, float kchro, const double dirpyrThreshold, const double skinprot, const bool gamutlab, float b_l, float t_l, float t_r, float b_r, int choice, int scale);
|
||||
void cbdl_local_temp(float ** src, float ** loctemp, int srcwidth, int srcheight, const float * mult, float kchro, const double dirpyrThreshold, const float mergeL, const double skinprot, const bool gamutlab, float b_l, float t_l, float t_r, float b_r, int choice, int scale);
|
||||
void idirpyr_eq_channel_loc(float ** data_coarse, float ** data_fine, float ** buffer, int width, int height, int level, float multi[5], const double dirpyrThreshold, float ** l_a_h, float ** l_b_c, const double skinprot, const bool gamutlab, float b_l, float t_l, float t_r, float b_r, int choice);
|
||||
void dirpyr_equalizer(float ** src, float ** dst, int srcwidth, int srcheight, float ** l_a, float ** l_b, const double * mult, const double dirpyrThreshold, const double skinprot, float b_l, float t_l, float t_r, int scale); //Emil's directional pyramid wavelet
|
||||
void dirpyr_equalizercam(CieImage* ncie, float ** src, float ** dst, int srcwidth, int srcheight, float ** h_p, float ** C_p, const double * mult, const double dirpyrThreshold, const double skinprot, bool execdir, float b_l, float t_l, float t_r, int scale); //Emil's directional pyramid wavelet
|
||||
|
@ -132,6 +132,7 @@ struct local_params {
|
||||
float thr;
|
||||
float stru;
|
||||
int chro, cont, sens, sensh, senscb, sensbn, senstm, sensex, sensexclu, sensden, senslc, senssf, senshs;
|
||||
float clarityml;
|
||||
float struco;
|
||||
float strengrid;
|
||||
float struexc;
|
||||
@ -435,6 +436,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
||||
int local_sensih = locallab.spots.at(sp).sensih;
|
||||
int local_dehaze = locallab.spots.at(sp).dehaz;
|
||||
int local_sensicb = locallab.spots.at(sp).sensicb;
|
||||
float local_clarityml = (float) locallab.spots.at(sp).clarityml;
|
||||
int local_contrast = locallab.spots.at(sp).contrast;
|
||||
float local_lightness = (float) locallab.spots.at(sp).lightness;
|
||||
float labgridALowloc = locallab.spots.at(sp).labgridALow;
|
||||
@ -543,6 +545,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
||||
lp.sensh = local_sensih;
|
||||
lp.dehaze = local_dehaze;
|
||||
lp.senscb = local_sensicb;
|
||||
lp.clarityml = local_clarityml;
|
||||
lp.cont = local_contrast;
|
||||
lp.ligh = local_lightness;
|
||||
lp.lowA = labgridALowloc;
|
||||
@ -5449,7 +5452,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
||||
}
|
||||
|
||||
//begin cbdl
|
||||
if ((lp.mulloc[0] != 1.f || lp.mulloc[1] != 1.f || lp.mulloc[2] != 1.f || lp.mulloc[3] != 1.f || lp.mulloc[4] != 1.f) && lp.cbdlena) {
|
||||
if ((lp.mulloc[0] != 1.f || lp.mulloc[1] != 1.f || lp.mulloc[2] != 1.f || lp.mulloc[3] != 1.f || lp.mulloc[4] != 1.f || lp.clarityml != 0.f) && lp.cbdlena) {
|
||||
if (call <= 3) { //call from simpleprocess dcrop improcc
|
||||
const int ystart = std::max(static_cast<int>(lp.yc - lp.lyT) - cy, 0);
|
||||
const int yend = std::min(static_cast<int>(lp.yc + lp.ly) - cy, original->H);
|
||||
@ -5484,7 +5487,11 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
||||
}
|
||||
}
|
||||
|
||||
ImProcFunctions::cbdl_local_temp(bufsh, loctemp->L, bfw, bfh, lp.mulloc, 1.f, lp.threshol, skinprot, false, b_l, t_l, t_r, b_r, choice, sk);
|
||||
if(lp.clarityml != 0.f && lp.mulloc[4] == 1.0) {//enabled last level to retrieve level 5 and residual image in case user not select level 5
|
||||
lp.mulloc[4]= 1.001f;
|
||||
}
|
||||
|
||||
ImProcFunctions::cbdl_local_temp(bufsh, loctemp->L, bfw, bfh, lp.mulloc, 1.f, lp.threshol, lp.clarityml, skinprot, false, b_l, t_l, t_r, b_r, choice, sk);
|
||||
|
||||
float minL = loctemp->L[0][0] - origcbdl->L[0][0];
|
||||
float maxL = minL;
|
||||
@ -5531,12 +5538,16 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
||||
}
|
||||
|
||||
float multc[5];
|
||||
float clarich = 0.5f * lp.clarityml;
|
||||
if(clarich > 0.f && lp.mulloc[0] == 1.f) { //to enabled in case of user select only clarity
|
||||
lp.mulloc[0] = 1.01f;
|
||||
}
|
||||
|
||||
for (int lv = 0; lv < 5; lv++) {
|
||||
multc[lv] = rtengine::max((lp.chromacb * ((float) lp.mulloc[lv] - 1.f) / 100.f) + 1.f, 0.f);
|
||||
}
|
||||
|
||||
ImProcFunctions::cbdl_local_temp(bufsh, loctemp->L, bfw, bfh, multc, rtengine::max(lp.chromacb, 1.f), lp.threshol, skinprot, false, b_l, t_l, t_r, b_r, choice, sk);
|
||||
|
||||
ImProcFunctions::cbdl_local_temp(bufsh, loctemp->L, bfw, bfh, multc, rtengine::max(lp.chromacb, 1.f), lp.threshol, clarich, skinprot, false, b_l, t_l, t_r, b_r, choice, sk);
|
||||
|
||||
|
||||
float minC = loctemp->L[0][0] - sqrt(SQR(loctemp->a[0][0]) + SQR(loctemp->b[0][0]));
|
||||
|
@ -686,6 +686,7 @@ enum ProcEventCode {
|
||||
Evlocallabsoftradiusret = 656,
|
||||
Evlocallabsoftradiuscb = 657,
|
||||
EvLocallabSpotTransitweak = 658,
|
||||
EvLocallabclarityml = 659,
|
||||
|
||||
NUMOFEVENTS
|
||||
};
|
||||
|
@ -2497,6 +2497,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
chromacbdl(0),
|
||||
threshold(0.2),
|
||||
sensicb(15),
|
||||
clarityml(0),
|
||||
softradiuscb(0.0),
|
||||
// Denoise
|
||||
expdenoi(false),
|
||||
@ -2687,6 +2688,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& chromacbdl == other.chromacbdl
|
||||
&& threshold == other.threshold
|
||||
&& sensicb == other.sensicb
|
||||
&& clarityml == other.clarityml
|
||||
&& softradiuscb == other.softradiuscb
|
||||
// Denoise
|
||||
&& expdenoi == other.expdenoi
|
||||
@ -3819,6 +3821,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chromacbdl, "Locallab", "Chromacbdl_" + std::to_string(i), spot.chromacbdl, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).threshold, "Locallab", "Threshold_" + std::to_string(i), spot.threshold, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sensicb, "Locallab", "Sensicb_" + std::to_string(i), spot.sensicb, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).clarityml, "Locallab", "Clarityml_" + std::to_string(i), spot.clarityml, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).softradiuscb, "Locallab", "Softradiuscb_" + std::to_string(i), spot.softradiuscb, keyFile);
|
||||
// Denoise
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).expdenoi, "Locallab", "Expdenoi_" + std::to_string(i), spot.expdenoi, keyFile);
|
||||
@ -5097,6 +5100,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Chromacbdl_" + std::to_string(i), pedited, spot.chromacbdl, spotEdited.chromacbdl);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Threshold_" + std::to_string(i), pedited, spot.threshold, spotEdited.threshold);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Sensicb_" + std::to_string(i), pedited, spot.sensicb, spotEdited.sensicb);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Clarityml_" + std::to_string(i), pedited, spot.clarityml, spotEdited.clarityml);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Softradiuscb_" + std::to_string(i), pedited, spot.softradiuscb, spotEdited.softradiuscb);
|
||||
// Denoise
|
||||
assignFromKeyfile(keyFile, "Locallab", "Expdenoi_" + std::to_string(i), pedited, spot.expdenoi, spotEdited.expdenoi);
|
||||
|
@ -1098,6 +1098,7 @@ struct LocallabParams {
|
||||
int chromacbdl;
|
||||
double threshold;
|
||||
int sensicb;
|
||||
int clarityml;
|
||||
double softradiuscb;
|
||||
// Denoise
|
||||
bool expdenoi;
|
||||
|
@ -685,7 +685,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
||||
LUMINANCECURVE, //EvLocallabsoftradiuscol
|
||||
LUMINANCECURVE, //EvLocallabsoftradiusret
|
||||
LUMINANCECURVE, //EvLocallabsoftradiuscb
|
||||
LUMINANCECURVE // EvLocallabSpotTransitweak
|
||||
LUMINANCECURVE, // EvLocallabSpotTransitweak
|
||||
LUMINANCECURVE // EvLocallabclarityml
|
||||
};
|
||||
|
||||
|
||||
|
@ -162,6 +162,7 @@ Locallab::Locallab():
|
||||
// Contrast by detail levels
|
||||
chromacbdl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMACBDL"), 0, 300, 1, 0))),
|
||||
threshold(Gtk::manage(new Adjuster(M("TP_DIRPYREQUALIZER_THRESHOLD"), 0, 1., 0.01, 0.2))),
|
||||
clarityml(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CLARITYML"), 0, 100, 1, 0))),
|
||||
sensicb(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSICB"), 0, 100, 1, 15))),
|
||||
softradiuscb(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOFTRADIUSCOL"), 0.0, 100.0, 0.1, 0.))),
|
||||
// Denoise
|
||||
@ -924,6 +925,7 @@ Locallab::Locallab():
|
||||
sensicb->set_tooltip_text(M("TP_LOCALLAB_SENSIH_TOOLTIP"));
|
||||
sensicb->setAdjusterListener(this);
|
||||
softradiuscb->setAdjusterListener(this);
|
||||
clarityml->setAdjusterListener(this);
|
||||
|
||||
ToolParamBlock* const cbdlBox = Gtk::manage(new ToolParamBlock());
|
||||
Gtk::HBox* buttonBox = Gtk::manage(new Gtk::HBox(true, 10));
|
||||
@ -943,6 +945,7 @@ Locallab::Locallab():
|
||||
cbdlBox->pack_start(*separator, Gtk::PACK_SHRINK, 2);
|
||||
cbdlBox->pack_start(*chromacbdl);
|
||||
cbdlBox->pack_start(*threshold);
|
||||
cbdlBox->pack_start(*clarityml);
|
||||
cbdlBox->pack_start(*softradiuscb);
|
||||
cbdlBox->pack_start(*sensicb);
|
||||
expcbdl->add(*cbdlBox);
|
||||
@ -1855,6 +1858,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pp->locallab.spots.at(pp->locallab.selspot).chromacbdl = chromacbdl->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).threshold = threshold->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).sensicb = sensicb->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).clarityml = clarityml->getIntValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).softradiuscb = softradiuscb->getValue();
|
||||
// Denoise
|
||||
pp->locallab.spots.at(pp->locallab.selspot).expdenoi = expdenoi->getEnabled();
|
||||
@ -2035,6 +2039,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pe->locallab.spots.at(pp->locallab.selspot).chromacbdl = pe->locallab.spots.at(pp->locallab.selspot).chromacbdl || chromacbdl->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).threshold = pe->locallab.spots.at(pp->locallab.selspot).threshold || threshold->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).sensicb = pe->locallab.spots.at(pp->locallab.selspot).sensicb || sensicb->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).clarityml = pe->locallab.spots.at(pp->locallab.selspot).clarityml || clarityml->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).softradiuscb = pe->locallab.spots.at(pp->locallab.selspot).softradiuscb || softradiuscb->getEditedState();
|
||||
// Denoise
|
||||
pe->locallab.spots.at(pp->locallab.selspot).expdenoi = pe->locallab.spots.at(pp->locallab.selspot).expdenoi || !expdenoi->get_inconsistent();
|
||||
@ -2217,6 +2222,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).chromacbdl = pedited->locallab.spots.at(pp->locallab.selspot).chromacbdl || chromacbdl->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).threshold = pedited->locallab.spots.at(pp->locallab.selspot).threshold || threshold->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).sensicb = pedited->locallab.spots.at(pp->locallab.selspot).sensicb || sensicb->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).clarityml = pedited->locallab.spots.at(pp->locallab.selspot).clarityml || clarityml->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).softradiuscb = pedited->locallab.spots.at(pp->locallab.selspot).softradiuscb || softradiuscb->getEditedState();
|
||||
// Denoise
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).expdenoi = pedited->locallab.spots.at(pp->locallab.selspot).expdenoi || !expdenoi->get_inconsistent();
|
||||
@ -3094,6 +3100,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
chromacbdl->setDefault((double)defSpot->chromacbdl);
|
||||
threshold->setDefault(defSpot->threshold);
|
||||
sensicb->setDefault((double)defSpot->sensicb);
|
||||
clarityml->setDefault((double)defSpot->clarityml);
|
||||
softradiuscb->setDefault(defSpot->softradiuscb);
|
||||
// Denoise
|
||||
noiselumf->setDefault((double)defSpot->noiselumf);
|
||||
@ -3203,6 +3210,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
chromacbdl->setDefaultEditedState(Irrelevant);
|
||||
threshold->setDefaultEditedState(Irrelevant);
|
||||
sensicb->setDefaultEditedState(Irrelevant);
|
||||
clarityml->setDefaultEditedState(Irrelevant);
|
||||
softradiuscb->setDefaultEditedState(Irrelevant);
|
||||
// Denoise
|
||||
noiselumf->setDefaultEditedState(Irrelevant);
|
||||
@ -3316,6 +3324,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
chromacbdl->setDefaultEditedState(defSpotState->chromacbdl ? Edited : UnEdited);
|
||||
threshold->setDefaultEditedState(defSpotState->threshold ? Edited : UnEdited);
|
||||
sensicb->setDefaultEditedState(defSpotState->sensicb ? Edited : UnEdited);
|
||||
clarityml->setDefaultEditedState(defSpotState->clarityml ? Edited : UnEdited);
|
||||
softradiuscb->setDefaultEditedState(defSpotState->softradiuscb ? Edited : UnEdited);
|
||||
// Denoise
|
||||
noiselumf->setDefaultEditedState(defSpotState->noiselumf ? Edited : UnEdited);
|
||||
@ -3894,6 +3903,12 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
|
||||
}
|
||||
}
|
||||
|
||||
if (a == clarityml) {
|
||||
if (listener) {
|
||||
listener->panelChanged(EvLocallabclarityml, clarityml->getTextValue());
|
||||
}
|
||||
}
|
||||
|
||||
if (a == softradiuscb) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallabsoftradiuscb, softradiuscb->getTextValue());
|
||||
@ -4086,6 +4101,7 @@ void Locallab::setBatchMode(bool batchMode)
|
||||
chromacbdl->showEditedCB();
|
||||
threshold->showEditedCB();
|
||||
sensicb->showEditedCB();
|
||||
clarityml->showEditedCB();
|
||||
softradiuscb->showEditedCB();
|
||||
// Denoise
|
||||
noiselumf->showEditedCB();
|
||||
@ -4526,6 +4542,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
chromacbdl->setValue(pp->locallab.spots.at(index).chromacbdl);
|
||||
threshold->setValue(pp->locallab.spots.at(index).threshold);
|
||||
sensicb->setValue(pp->locallab.spots.at(index).sensicb);
|
||||
clarityml->setValue(pp->locallab.spots.at(index).clarityml);
|
||||
softradiuscb->setValue(pp->locallab.spots.at(index).softradiuscb);
|
||||
|
||||
// Denoise
|
||||
@ -4743,6 +4760,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
chromacbdl->setEditedState(spotState->chromacbdl ? Edited : UnEdited);
|
||||
threshold->setEditedState(spotState->threshold ? Edited : UnEdited);
|
||||
sensicb->setEditedState(spotState->sensicb ? Edited : UnEdited);
|
||||
clarityml->setEditedState(spotState->clarityml ? Edited : UnEdited);
|
||||
softradiuscb->setEditedState(spotState->softradiuscb ? Edited : UnEdited);
|
||||
|
||||
// Denoise
|
||||
|
@ -182,6 +182,7 @@ private:
|
||||
Adjuster* multiplier[5];
|
||||
Adjuster* const chromacbdl;
|
||||
Adjuster* const threshold;
|
||||
Adjuster* const clarityml;
|
||||
Adjuster* const sensicb;
|
||||
Adjuster* const softradiuscb;
|
||||
// Denoise
|
||||
|
@ -1091,6 +1091,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).chromacbdl = locallab.spots.at(j).chromacbdl && pSpot.chromacbdl == otherSpot.chromacbdl;
|
||||
locallab.spots.at(j).threshold = locallab.spots.at(j).threshold && pSpot.threshold == otherSpot.threshold;
|
||||
locallab.spots.at(j).sensicb = locallab.spots.at(j).sensicb && pSpot.sensicb == otherSpot.sensicb;
|
||||
locallab.spots.at(j).clarityml = locallab.spots.at(j).clarityml && pSpot.clarityml == otherSpot.clarityml;
|
||||
locallab.spots.at(j).softradiuscb = locallab.spots.at(j).softradiuscb && pSpot.softradiuscb == otherSpot.softradiuscb;
|
||||
// Denoise
|
||||
locallab.spots.at(j).expdenoi = locallab.spots.at(j).expdenoi && pSpot.expdenoi == otherSpot.expdenoi;
|
||||
@ -3135,6 +3136,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).sensicb = mods.locallab.spots.at(i).sensicb;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).clarityml) {
|
||||
toEdit.locallab.spots.at(i).clarityml = mods.locallab.spots.at(i).clarityml;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).softradiuscb) {
|
||||
toEdit.locallab.spots.at(i).softradiuscb = mods.locallab.spots.at(i).softradiuscb;
|
||||
}
|
||||
@ -4285,6 +4290,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
chromacbdl(v),
|
||||
threshold(v),
|
||||
sensicb(v),
|
||||
clarityml(v),
|
||||
softradiuscb(v),
|
||||
// Denoise
|
||||
expdenoi(v),
|
||||
@ -4467,6 +4473,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
chromacbdl = v;
|
||||
threshold = v;
|
||||
sensicb = v;
|
||||
clarityml = v;
|
||||
softradiuscb = v;
|
||||
// Denoise
|
||||
expdenoi = v;
|
||||
|
@ -514,6 +514,7 @@ public:
|
||||
bool chromacbdl;
|
||||
bool threshold;
|
||||
bool sensicb;
|
||||
bool clarityml;
|
||||
bool softradiuscb;
|
||||
// Denoise
|
||||
bool expdenoi;
|
||||
|
Loading…
x
Reference in New Issue
Block a user