add Laplacian threshold to mask Retinex
This commit is contained in:
parent
38963a3282
commit
38b53ca9b6
@ -995,6 +995,7 @@ HISTORY_MSG_754;Local - Reti Clip
|
||||
HISTORY_MSG_755;Local - TM use tm mask
|
||||
HISTORY_MSG_756;Local - Exp use algo exposure mask
|
||||
HISTORY_MSG_757;Local - Exp Laplacian mask
|
||||
HISTORY_MSG_758;Local - Reti Laplacian mask
|
||||
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
||||
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
||||
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
||||
@ -2219,6 +2220,7 @@ TP_LOCALLAB_RETI_FFTW_TOOLTIP;FFT improve quality and allow big radius, but incr
|
||||
TP_LOCALLAB_ENARETIMASKTMAP_TOOLTIP;If enabled Mask uses Restored Datas after Transmission Map instead of Original datas
|
||||
TP_LOCALLAB_SOFTRETI;Reduce artifact deltaE
|
||||
TP_LOCALLAB_SOFTRETI_TOOLTIP;Take into account deltaE to improve Transmission map
|
||||
TP_LOCALLAB_LAPRAD_TOOLTIP;Avoid using Radius and Laplace Threshold simultaneously
|
||||
TP_LOCALLAB_TRANSMISSIONGAIN;Transmission gain
|
||||
TP_LOCALLAB_TRANSMISSIONMAP;Transmission map
|
||||
TP_LOCALLAB_TRANSMISSION_TOOLTIP;Transmission according to transmission.\nAbscissa: transmission from negative values (min), mean, and positives values (max).\nOrdinate: amplification or reduction.\nYou can act on this curve to change Transmission and reduce the artifacts
|
||||
|
@ -194,7 +194,7 @@ public:
|
||||
void fftw_convol_blur2(float **input2, float **output2, int bfw, int bfh, float radius, int fftkern, int algo);
|
||||
void fftw_tile_blur(int GW, int GH, int tilssize , int max_numblox_W, int min_numblox_W, float **tmp1, int numThreads, double radius);
|
||||
void maskforretinex(int sp, int before, float ** luminance, float ** out, int W_L, int H_L, int skip, const LocCCmaskCurve & locccmasretiCurve, bool &lcmasretiutili, const LocLLmaskCurve & locllmasretiCurve, bool &llmasretiutili, const LocHHmaskCurve & lochhmasretiCurve, bool & lhmasretiutili, int llretiMask, bool retiMasktmap, bool retiMask,
|
||||
float rad, float gamm, float slop, float chro, float blend, LabImage * bufreti, LabImage * bufmask, LabImage * buforig, LabImage * buforigmas, bool multiThread);
|
||||
float rad, float lap, float gamm, float slop, float chro, float blend, LabImage * bufreti, LabImage * bufmask, LabImage * buforig, LabImage * buforigmas, bool multiThread);
|
||||
|
||||
void MSRLocal(int sp, bool fftw, int lum, float** reducDE, LabImage * bufreti, LabImage * bufmask, LabImage * buforig, LabImage * buforigmas, float** luminance, float** templ, const float* const *originalLuminance, const int width, const int height, int bfwr, int bfhr, const procparams::LocallabParams &loc, const int skip, const LocretigainCurve &locRETgainCcurve, const LocretitransCurve &locRETtransCcurve, const int chrome, const int scall, const float krad, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax,
|
||||
const LocCCmaskCurve & locccmasretiCurve, bool &lcmasretiutili, const LocLLmaskCurve & locllmasretiCurve, bool &llmasretiutili, const LocHHmaskCurve & lochhmasretiCurve, bool & lhmasretiutili, int llretiMask, LabImage * transformed, bool retiMasktmap, bool retiMask);
|
||||
|
@ -95,6 +95,68 @@ void calcGammaLut(double gamma, double ts, LUTf &gammaLut)
|
||||
}
|
||||
}
|
||||
|
||||
static float *discrete_laplacian_threshold_reti(float * data_out, const float * data_in, size_t nx, size_t ny, float t)
|
||||
{//same as in iplocallab.cc
|
||||
BENCHFUN
|
||||
|
||||
size_t i, j;
|
||||
float *ptr_out;
|
||||
float diff = 0.f;
|
||||
const float *ptr_in, *ptr_in_xm1, *ptr_in_xp1, *ptr_in_ym1, *ptr_in_yp1;
|
||||
|
||||
if (NULL == data_in || NULL == data_out) {
|
||||
fprintf(stderr, "a pointer is NULL and should not be so\n");
|
||||
abort();
|
||||
}
|
||||
ptr_in = data_in;
|
||||
ptr_in_xm1 = data_in - 1;
|
||||
ptr_in_xp1 = data_in + 1;
|
||||
ptr_in_ym1 = data_in - nx;
|
||||
ptr_in_yp1 = data_in + nx;
|
||||
ptr_out = data_out;
|
||||
|
||||
for (j = 0; j < ny; j++) {
|
||||
for (i = 0; i < nx; i++) {
|
||||
*ptr_out = 0.f;
|
||||
|
||||
if (0 < i) {
|
||||
diff = *ptr_in - *ptr_in_xm1;
|
||||
|
||||
if (fabs(diff) > t) {
|
||||
*ptr_out += diff;
|
||||
}
|
||||
}
|
||||
if (nx - 1 > i) {
|
||||
diff = *ptr_in - *ptr_in_xp1;
|
||||
|
||||
if (fabs(diff) > t) {
|
||||
*ptr_out += diff;
|
||||
}
|
||||
}
|
||||
if (0 < j) {
|
||||
diff = *ptr_in - *ptr_in_ym1;
|
||||
|
||||
if (fabs(diff) > t) {
|
||||
*ptr_out += diff;
|
||||
}
|
||||
}
|
||||
if (ny - 1 > j) {
|
||||
diff = *ptr_in - *ptr_in_yp1;
|
||||
|
||||
if (fabs(diff) > t) {
|
||||
*ptr_out += diff;
|
||||
}
|
||||
}
|
||||
ptr_in++;
|
||||
ptr_in_xm1++;
|
||||
ptr_in_xp1++;
|
||||
ptr_in_ym1++;
|
||||
ptr_in_yp1++;
|
||||
ptr_out++;
|
||||
}
|
||||
}
|
||||
return data_out;
|
||||
}
|
||||
|
||||
void retinex_scales(float* scales, int nscales, int mode, int s, float high)
|
||||
{
|
||||
@ -852,7 +914,7 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e
|
||||
|
||||
|
||||
void ImProcFunctions::maskforretinex(int sp, int before, float ** luminance, float ** out, int W_L, int H_L, int skip, const LocCCmaskCurve & locccmasretiCurve, bool &lcmasretiutili, const LocLLmaskCurve & locllmasretiCurve, bool &llmasretiutili, const LocHHmaskCurve & lochhmasretiCurve, bool & lhmasretiutili, int llretiMask, bool retiMasktmap, bool retiMask,
|
||||
float rad, float gamm, float slop, float chro, float blend, LabImage * bufreti, LabImage * bufmask, LabImage * buforig, LabImage * buforigmas, bool multiThread)
|
||||
float rad, float lap, float gamm, float slop, float chro, float blend, LabImage * bufreti, LabImage * bufmask, LabImage * buforig, LabImage * buforigmas, bool multiThread)
|
||||
{
|
||||
array2D<float> loctemp(W_L, H_L);
|
||||
array2D<float> ble(W_L, H_L);
|
||||
@ -953,6 +1015,35 @@ void ImProcFunctions::maskforretinex(int sp, int before, float ** luminance, flo
|
||||
bufmaskblurreti->L[ir][jr] = lutTonemaskreti[L_];
|
||||
}
|
||||
|
||||
if (lap > 0.f) {
|
||||
float *datain = new float[H_L * W_L];
|
||||
float *data_tmp = new float[H_L * W_L];
|
||||
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int y = 0; y < H_L; y++) {
|
||||
for (int x = 0; x < W_L; x++) {
|
||||
datain[y * W_L + x] = bufmaskblurreti->L[y][x];
|
||||
}
|
||||
}
|
||||
|
||||
(void) discrete_laplacian_threshold_reti(data_tmp, datain, W_L, H_L, 200.f * lap);
|
||||
#ifdef _OPENMP
|
||||
#pragma omp parallel for
|
||||
#endif
|
||||
|
||||
for (int y = 0; y < H_L; y++) {
|
||||
for (int x = 0; x < W_L; x++) {
|
||||
bufmaskblurreti->L[y][x] = data_tmp[y * W_L + x];
|
||||
}
|
||||
}
|
||||
|
||||
delete [] datain;
|
||||
delete [] data_tmp;
|
||||
|
||||
}
|
||||
|
||||
//blend
|
||||
#ifdef _OPENMP
|
||||
@ -1572,11 +1663,12 @@ void ImProcFunctions::MSRLocal(int sp, bool fftw, int lum, float** reducDE, LabI
|
||||
float gamm = loc.spots.at(sp).gammaskreti;
|
||||
float blend = loc.spots.at(sp).blendmaskreti;
|
||||
float chro = loc.spots.at(sp).chromaskreti;
|
||||
float lap = loc.spots.at(sp).lapmaskreti;
|
||||
|
||||
if (lum == 1 && (llretiMask == 3 || llretiMask == 0 || llretiMask == 2 || llretiMask == 4)) { //only mask with luminance on last scale
|
||||
int before = 1;
|
||||
maskforretinex(sp, before, luminance, nullptr, W_L, H_L, skip, locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili, llretiMask, retiMasktmap, retiMask,
|
||||
rad, gamm, slop, chro, blend , bufreti, bufmask, buforig, buforigmas, multiThread);
|
||||
rad, lap, gamm, slop, chro, blend , bufreti, bufmask, buforig, buforigmas, multiThread);
|
||||
}
|
||||
//mask does not interfered with datas displayed
|
||||
|
||||
|
@ -784,6 +784,7 @@ enum ProcEventCode {
|
||||
EvLocallabEnatmMaskaft = 754,
|
||||
EvLocallabEnaExpMaskaft = 755,
|
||||
Evlocallablapmasktm = 756,
|
||||
Evlocallablapmaskreti = 757,
|
||||
NUMOFEVENTS
|
||||
};
|
||||
|
||||
|
@ -2602,10 +2602,11 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
||||
enaretiMask(false),
|
||||
enaretiMasktmap(true),
|
||||
blendmaskreti(0),
|
||||
radmaskreti(10.0),
|
||||
radmaskreti(0.0),
|
||||
chromaskreti(0.0),
|
||||
gammaskreti(1.0),
|
||||
slomaskreti(0.0),
|
||||
lapmaskreti(0.0),
|
||||
scalereti(2.0),
|
||||
darkness(2.0),
|
||||
lightnessreti(1.0),
|
||||
@ -2876,6 +2877,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
||||
&& chromaskreti == other.chromaskreti
|
||||
&& gammaskreti == other.gammaskreti
|
||||
&& slomaskreti == other.slomaskreti
|
||||
&& lapmaskreti == other.lapmaskreti
|
||||
&& scalereti == other.scalereti
|
||||
&& darkness == other.darkness
|
||||
&& lightnessreti == other.lightnessreti
|
||||
@ -4132,6 +4134,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chromaskreti, "Locallab", "Chromaskreti_" + std::to_string(i), spot.chromaskreti, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).gammaskreti, "Locallab", "Gammaskreti_" + std::to_string(i), spot.gammaskreti, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).slomaskreti, "Locallab", "Slomaskreti_" + std::to_string(i), spot.slomaskreti, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).lapmaskreti, "Locallab", "Lapmaskreti_" + std::to_string(i), spot.lapmaskreti, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).scalereti, "Locallab", "Scalereti_" + std::to_string(i), spot.scalereti, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).darkness, "Locallab", "Darkness_" + std::to_string(i), spot.darkness, keyFile);
|
||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).lightnessreti, "Locallab", "Lightnessreti_" + std::to_string(i), spot.lightnessreti, keyFile);
|
||||
@ -5515,6 +5518,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
||||
assignFromKeyfile(keyFile, "Locallab", "Chromaskreti_" + std::to_string(i), pedited, spot.chromaskreti, spotEdited.chromaskreti);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Gammaskreti_" + std::to_string(i), pedited, spot.gammaskreti, spotEdited.gammaskreti);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Slomaskreti_" + std::to_string(i), pedited, spot.slomaskreti, spotEdited.slomaskreti);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Lapmaskreti_" + std::to_string(i), pedited, spot.lapmaskreti, spotEdited.lapmaskreti);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Scalereti_" + std::to_string(i), pedited, spot.scalereti, spotEdited.scalereti);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Darkness_" + std::to_string(i), pedited, spot.darkness, spotEdited.darkness);
|
||||
assignFromKeyfile(keyFile, "Locallab", "Lightnessreti_" + std::to_string(i), pedited, spot.lightnessreti, spotEdited.lightnessreti);
|
||||
|
@ -1155,6 +1155,7 @@ struct LocallabParams {
|
||||
double chromaskreti;
|
||||
double gammaskreti;
|
||||
double slomaskreti;
|
||||
double lapmaskreti;
|
||||
double scalereti;
|
||||
double darkness;
|
||||
double lightnessreti;
|
||||
|
@ -783,10 +783,10 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
||||
LUMINANCECURVE, //Evlocallabcliptm
|
||||
LUMINANCECURVE, //Evlocallabenatmmaskaft
|
||||
LUMINANCECURVE, //EvlocallabenaExpmaskaft
|
||||
LUMINANCECURVE //Evlocallablapmasktm
|
||||
LUMINANCECURVE, //Evlocallablapmasktm
|
||||
LUMINANCECURVE //Evlocallablapmaskreti
|
||||
};
|
||||
|
||||
|
||||
namespace rtengine
|
||||
{
|
||||
|
||||
|
@ -281,6 +281,7 @@ Locallab::Locallab():
|
||||
chromaskreti(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMASKCOL"), -100.0, 100.0, 0.1, 0.))),
|
||||
gammaskreti(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GAMMASKCOL"), 0.05, 5.0, 0.01, 1.))),
|
||||
slomaskreti(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SLOMASKCOL"), 0.0, 15.0, 0.1, 0.))),
|
||||
lapmaskreti(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LAPMASKCOL"), 0.0, 100.0, 0.1, 0.))),
|
||||
scalereti(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SCALERETI"), 1.0, 10.0, 1., 2.))),
|
||||
darkness(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DARKRETI"), 0.01, 6.0, 0.01, 2.0))),
|
||||
lightnessreti(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LIGHTRETI"), 0.01, 4.0, 0.01, 1.))),
|
||||
@ -1264,6 +1265,10 @@ Locallab::Locallab():
|
||||
|
||||
showmasktmMethodConn = showmasktmMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::showmasktmMethodChanged));
|
||||
|
||||
if (showtooltip) {
|
||||
radmasktm->set_tooltip_text(M("TP_LOCALLAB_LAPRAD_TOOLTIP"));
|
||||
lapmasktm->set_tooltip_text(M("TP_LOCALLAB_LAPRAD_TOOLTIP"));
|
||||
}
|
||||
|
||||
|
||||
blendmasktm->setAdjusterListener(this);
|
||||
@ -1480,6 +1485,10 @@ Locallab::Locallab():
|
||||
|
||||
showmaskretiMethodConn = showmaskretiMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::showmaskretiMethodChanged));
|
||||
|
||||
if (showtooltip) {
|
||||
radmaskreti->set_tooltip_text(M("TP_LOCALLAB_LAPRAD_TOOLTIP"));
|
||||
lapmaskreti->set_tooltip_text(M("TP_LOCALLAB_LAPRAD_TOOLTIP"));
|
||||
}
|
||||
|
||||
|
||||
blendmaskreti->setAdjusterListener(this);
|
||||
@ -1487,6 +1496,7 @@ Locallab::Locallab():
|
||||
chromaskreti->setAdjusterListener(this);
|
||||
gammaskreti->setAdjusterListener(this);
|
||||
slomaskreti->setAdjusterListener(this);
|
||||
lapmaskreti->setAdjusterListener(this);
|
||||
scalereti->setAdjusterListener(this);
|
||||
darkness->setAdjusterListener(this);
|
||||
lightnessreti->setAdjusterListener(this);
|
||||
@ -1499,6 +1509,7 @@ Locallab::Locallab():
|
||||
maskretiBox->pack_start(*maskretiCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||
maskretiBox->pack_start(*blendmaskreti, Gtk::PACK_SHRINK, 0);
|
||||
maskretiBox->pack_start(*radmaskreti, Gtk::PACK_SHRINK, 0);
|
||||
maskretiBox->pack_start(*lapmaskreti, Gtk::PACK_SHRINK, 0);
|
||||
maskretiBox->pack_start(*chromaskreti, Gtk::PACK_SHRINK, 0);
|
||||
maskretiBox->pack_start(*gammaskreti, Gtk::PACK_SHRINK, 0);
|
||||
maskretiBox->pack_start(*slomaskreti, Gtk::PACK_SHRINK, 0);
|
||||
@ -3213,6 +3224,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pp->locallab.spots.at(pp->locallab.selspot).chromaskreti = chromaskreti->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).gammaskreti = gammaskreti->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).slomaskreti = slomaskreti->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lapmaskreti = lapmaskreti->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).scalereti = scalereti->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).darkness = darkness->getValue();
|
||||
pp->locallab.spots.at(pp->locallab.selspot).lightnessreti = lightnessreti->getValue();
|
||||
@ -3491,6 +3503,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pe->locallab.spots.at(pp->locallab.selspot).chromaskreti = pe->locallab.spots.at(pp->locallab.selspot).chromaskreti || chromaskreti->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).gammaskreti = pe->locallab.spots.at(pp->locallab.selspot).gammaskreti || gammaskreti->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).slomaskreti = pe->locallab.spots.at(pp->locallab.selspot).slomaskreti || slomaskreti->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).lapmaskreti = pe->locallab.spots.at(pp->locallab.selspot).lapmaskreti || lapmaskreti->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).scalereti = pe->locallab.spots.at(pp->locallab.selspot).scalereti || scalereti->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).darkness = pe->locallab.spots.at(pp->locallab.selspot).darkness || darkness->getEditedState();
|
||||
pe->locallab.spots.at(pp->locallab.selspot).lightnessreti = pe->locallab.spots.at(pp->locallab.selspot).lightnessreti || lightnessreti->getEditedState();
|
||||
@ -3767,6 +3780,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).chromaskreti = pedited->locallab.spots.at(pp->locallab.selspot).chromaskreti || chromaskreti->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).gammaskreti = pedited->locallab.spots.at(pp->locallab.selspot).gammaskreti || gammaskreti->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).slomaskreti = pedited->locallab.spots.at(pp->locallab.selspot).slomaskreti || slomaskreti->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).lapmaskreti = pedited->locallab.spots.at(pp->locallab.selspot).lapmaskreti || lapmaskreti->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).scalereti = pedited->locallab.spots.at(pp->locallab.selspot).scalereti || scalereti->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).darkness = pedited->locallab.spots.at(pp->locallab.selspot).darkness || darkness->getEditedState();
|
||||
pedited->locallab.spots.at(pp->locallab.selspot).lightnessreti = pedited->locallab.spots.at(pp->locallab.selspot).lightnessreti || lightnessreti->getEditedState();
|
||||
@ -5568,6 +5582,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
chromaskreti->setDefault(defSpot->chromaskreti);
|
||||
gammaskreti->setDefault(defSpot->gammaskreti);
|
||||
slomaskreti->setDefault(defSpot->slomaskreti);
|
||||
lapmaskreti->setDefault(defSpot->lapmaskreti);
|
||||
scalereti->setDefault(defSpot->scalereti);
|
||||
darkness->setDefault(defSpot->darkness);
|
||||
lightnessreti->setDefault(defSpot->lightnessreti);
|
||||
@ -5734,6 +5749,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
chromaskreti->setDefaultEditedState(Irrelevant);
|
||||
gammaskreti->setDefaultEditedState(Irrelevant);
|
||||
slomaskreti->setDefaultEditedState(Irrelevant);
|
||||
lapmaskreti->setDefaultEditedState(Irrelevant);
|
||||
scalereti->setDefaultEditedState(Irrelevant);
|
||||
darkness->setDefaultEditedState(Irrelevant);
|
||||
lightnessreti->setDefaultEditedState(Irrelevant);
|
||||
@ -5904,6 +5920,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
||||
chromaskreti->setDefaultEditedState(defSpotState->chromaskreti ? Edited : UnEdited);
|
||||
gammaskreti->setDefaultEditedState(defSpotState->gammaskreti ? Edited : UnEdited);
|
||||
slomaskreti->setDefaultEditedState(defSpotState->slomaskreti ? Edited : UnEdited);
|
||||
lapmaskreti->setDefaultEditedState(defSpotState->lapmaskreti ? Edited : UnEdited);
|
||||
scalereti->setDefaultEditedState(defSpotState->scalereti ? Edited : UnEdited);
|
||||
darkness->setDefaultEditedState(defSpotState->darkness ? Edited : UnEdited);
|
||||
lightnessreti->setDefaultEditedState(defSpotState->lightnessreti ? Edited : UnEdited);
|
||||
@ -6641,6 +6658,12 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
|
||||
}
|
||||
}
|
||||
|
||||
if (a == lapmaskreti) {
|
||||
if (listener) {
|
||||
listener->panelChanged(Evlocallablapmaskreti, lapmaskreti->getTextValue());
|
||||
}
|
||||
}
|
||||
|
||||
if (a == scalereti) {
|
||||
if (scalereti->getValue() == 1) {
|
||||
LocalcurveEditorgainT->hide();
|
||||
@ -7102,6 +7125,7 @@ void Locallab::setBatchMode(bool batchMode)
|
||||
chromaskreti->showEditedCB();
|
||||
gammaskreti->showEditedCB();
|
||||
slomaskreti->showEditedCB();
|
||||
lapmaskreti->showEditedCB();
|
||||
scalereti->showEditedCB();
|
||||
darkness->showEditedCB();
|
||||
lightnessreti->showEditedCB();
|
||||
@ -7741,6 +7765,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
chromaskreti->setValue(pp->locallab.spots.at(index).chromaskreti);
|
||||
gammaskreti->setValue(pp->locallab.spots.at(index).gammaskreti);
|
||||
slomaskreti->setValue(pp->locallab.spots.at(index).slomaskreti);
|
||||
lapmaskreti->setValue(pp->locallab.spots.at(index).lapmaskreti);
|
||||
scalereti->setValue(pp->locallab.spots.at(index).scalereti);
|
||||
darkness->setValue(pp->locallab.spots.at(index).darkness);
|
||||
lightnessreti->setValue(pp->locallab.spots.at(index).lightnessreti);
|
||||
@ -8069,6 +8094,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
||||
chromaskreti->setEditedState(spotState->chromaskreti ? Edited : UnEdited);
|
||||
gammaskreti->setEditedState(spotState->gammaskreti ? Edited : UnEdited);
|
||||
slomaskreti->setEditedState(spotState->slomaskreti ? Edited : UnEdited);
|
||||
lapmaskreti->setEditedState(spotState->lapmaskreti ? Edited : UnEdited);
|
||||
scalereti->setEditedState(spotState->scalereti ? Edited : UnEdited);
|
||||
darkness->setEditedState(spotState->darkness ? Edited : UnEdited);
|
||||
lightnessreti->setEditedState(spotState->lightnessreti ? Edited : UnEdited);
|
||||
|
@ -231,6 +231,7 @@ private:
|
||||
Adjuster* const chromaskreti;
|
||||
Adjuster* const gammaskreti;
|
||||
Adjuster* const slomaskreti;
|
||||
Adjuster* const lapmaskreti;
|
||||
Adjuster* const scalereti;
|
||||
Adjuster* const darkness;
|
||||
Adjuster* const lightnessreti;
|
||||
|
@ -1147,6 +1147,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
||||
locallab.spots.at(j).chromaskreti = locallab.spots.at(j).chromaskreti && pSpot.chromaskreti == otherSpot.chromaskreti;
|
||||
locallab.spots.at(j).gammaskreti = locallab.spots.at(j).gammaskreti && pSpot.gammaskreti == otherSpot.gammaskreti;
|
||||
locallab.spots.at(j).slomaskreti = locallab.spots.at(j).slomaskreti && pSpot.slomaskreti == otherSpot.slomaskreti;
|
||||
locallab.spots.at(j).lapmaskreti = locallab.spots.at(j).lapmaskreti && pSpot.lapmaskreti == otherSpot.lapmaskreti;
|
||||
locallab.spots.at(j).scalereti = locallab.spots.at(j).scalereti && pSpot.scalereti == otherSpot.scalereti;
|
||||
locallab.spots.at(j).darkness = locallab.spots.at(j).darkness && pSpot.darkness == otherSpot.darkness;
|
||||
locallab.spots.at(j).lightnessreti = locallab.spots.at(j).lightnessreti && pSpot.lightnessreti == otherSpot.lightnessreti;
|
||||
@ -3440,6 +3441,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
||||
toEdit.locallab.spots.at(i).slomaskreti = mods.locallab.spots.at(i).slomaskreti;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).lapmaskreti) {
|
||||
toEdit.locallab.spots.at(i).lapmaskreti = mods.locallab.spots.at(i).lapmaskreti;
|
||||
}
|
||||
|
||||
if (locallab.spots.at(i).scalereti) {
|
||||
toEdit.locallab.spots.at(i).scalereti = mods.locallab.spots.at(i).scalereti;
|
||||
}
|
||||
@ -4855,6 +4860,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
||||
chromaskreti(v),
|
||||
gammaskreti(v),
|
||||
slomaskreti(v),
|
||||
lapmaskreti(v),
|
||||
scalereti(v),
|
||||
darkness(v),
|
||||
lightnessreti(v),
|
||||
@ -5122,6 +5128,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
||||
chromaskreti = v;
|
||||
gammaskreti = v;
|
||||
slomaskreti = v;
|
||||
lapmaskreti = v;
|
||||
scalereti = v;
|
||||
darkness = v;
|
||||
lightnessreti = v;
|
||||
|
@ -565,6 +565,7 @@ public:
|
||||
bool chromaskreti;
|
||||
bool gammaskreti;
|
||||
bool slomaskreti;
|
||||
bool lapmaskreti;
|
||||
bool scalereti;
|
||||
bool darkness;
|
||||
bool lightnessreti;
|
||||
|
Loading…
x
Reference in New Issue
Block a user