Tone mapping mask after
This commit is contained in:
parent
43228efea6
commit
b0f35cfa21
@ -992,6 +992,7 @@ HISTORY_MSG_751;Local - Reti Dehaze luminance
|
|||||||
HISTORY_MSG_752;Local - Reti Offset
|
HISTORY_MSG_752;Local - Reti Offset
|
||||||
HISTORY_MSG_753;Local - Reti Transmission map
|
HISTORY_MSG_753;Local - Reti Transmission map
|
||||||
HISTORY_MSG_754;Local - Reti Clip
|
HISTORY_MSG_754;Local - Reti Clip
|
||||||
|
HISTORY_MSG_755;Local - TM use tm mask
|
||||||
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
|
||||||
@ -2233,6 +2234,7 @@ TP_LOCALLAB_SHOWDCT;Show process Fourier
|
|||||||
TP_LOCALLAB_SHOWMASKSOFT_TOOLTIP;Show process Fourier:\nShows the different stages of the process.\nLaplace - builds the second derivative according to the threshold (first step).\nFourier -shows the transformed Laplacian with DCT.\nPoisson - show solution of Poisson DCE.\nNormalize - show result whithout normalization luminance.
|
TP_LOCALLAB_SHOWMASKSOFT_TOOLTIP;Show process Fourier:\nShows the different stages of the process.\nLaplace - builds the second derivative according to the threshold (first step).\nFourier -shows the transformed Laplacian with DCT.\nPoisson - show solution of Poisson DCE.\nNormalize - show result whithout normalization luminance.
|
||||||
TP_LOCALLAB_SHOWNORMAL;Normalize luminance (no)
|
TP_LOCALLAB_SHOWNORMAL;Normalize luminance (no)
|
||||||
TP_LOCALLAB_TM;Tone Mapping
|
TP_LOCALLAB_TM;Tone Mapping
|
||||||
|
TP_LOCALLAB_ENABLE_AFTER_MASK;Use Tone Mapping
|
||||||
TP_LOCALLAB_STR;Strength
|
TP_LOCALLAB_STR;Strength
|
||||||
TP_LOCALLAB_LOGLIN;Logarithm mode
|
TP_LOCALLAB_LOGLIN;Logarithm mode
|
||||||
TP_LOCALLAB_STRRETI_TOOLTIP;if Strength Retinex < 0.2 only Dehaze is enabled.\nif Strength Retinex >= 0.1 Dehaze is in luminance mode.
|
TP_LOCALLAB_STRRETI_TOOLTIP;if Strength Retinex < 0.2 only Dehaze is enabled.\nif Strength Retinex >= 0.1 Dehaze is in luminance mode.
|
||||||
|
@ -7468,14 +7468,19 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
JaggedArray<float> bufchro(bfw, bfh);
|
JaggedArray<float> bufchro(bfw, bfh);
|
||||||
std::unique_ptr<LabImage> bufgb(new LabImage(bfw, bfh));
|
std::unique_ptr<LabImage> bufgb(new LabImage(bfw, bfh));
|
||||||
std::unique_ptr<LabImage> tmp1(new LabImage(bfw, bfh));
|
std::unique_ptr<LabImage> tmp1(new LabImage(bfw, bfh));
|
||||||
|
std::unique_ptr<LabImage> bufgbm(new LabImage(bfw, bfh));
|
||||||
|
std::unique_ptr<LabImage> tmp1m(new LabImage(bfw, bfh));
|
||||||
std::unique_ptr<LabImage> bufmaskorigtm;
|
std::unique_ptr<LabImage> bufmaskorigtm;
|
||||||
std::unique_ptr<LabImage> bufmaskblurtm;
|
std::unique_ptr<LabImage> bufmaskblurtm;
|
||||||
std::unique_ptr<LabImage> originalmasktm;
|
std::unique_ptr<LabImage> originalmasktm;
|
||||||
|
LabImage *orimask = nullptr;
|
||||||
|
orimask = new LabImage(original->W, original->H);
|
||||||
|
|
||||||
if (lp.showmasktmmet == 2 || lp.enatmMask || lp.showmasktmmet == 3 || lp.showmasktmmet == 4) {
|
if (lp.showmasktmmet == 0 || lp.showmasktmmet == 2 || lp.enatmMask || lp.showmasktmmet == 3 || lp.showmasktmmet == 4) {
|
||||||
bufmaskorigtm.reset(new LabImage(bfw, bfh));
|
bufmaskorigtm.reset(new LabImage(bfw, bfh));
|
||||||
bufmaskblurtm.reset(new LabImage(bfw, bfh));
|
bufmaskblurtm.reset(new LabImage(bfw, bfh));
|
||||||
originalmasktm.reset(new LabImage(bfw, bfh));
|
originalmasktm.reset(new LabImage(bfw, bfh));
|
||||||
|
orimask->CopyFrom(original);
|
||||||
}
|
}
|
||||||
|
|
||||||
int itera = 0;
|
int itera = 0;
|
||||||
@ -7493,6 +7498,9 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
bufgb->L[y - ystart][x - xstart] = original->L[y][x];
|
bufgb->L[y - ystart][x - xstart] = original->L[y][x];
|
||||||
bufgb->a[y - ystart][x - xstart] = original->a[y][x];
|
bufgb->a[y - ystart][x - xstart] = original->a[y][x];
|
||||||
bufgb->b[y - ystart][x - xstart] = original->b[y][x];
|
bufgb->b[y - ystart][x - xstart] = original->b[y][x];
|
||||||
|
bufgbm->L[y - ystart][x - xstart] = original->L[y][x];
|
||||||
|
bufgbm->a[y - ystart][x - xstart] = original->a[y][x];
|
||||||
|
bufgbm->b[y - ystart][x - xstart] = original->b[y][x];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7533,36 +7541,43 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
float gamma = lp.gammatm;
|
float gamma = lp.gammatm;
|
||||||
float slope = lp.slomatm;
|
float slope = lp.slomatm;
|
||||||
float blendm = lp.blendmatm;
|
float blendm = lp.blendmatm;
|
||||||
maskcalccol(bfw, bfh, xstart, ystart, sk, cx, cy, bufgb.get(), bufmaskorigtm.get(), originalmasktm.get(), original, transformed, inv, lp,
|
|
||||||
locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, multiThread,
|
|
||||||
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, gamma, slope, blendm);
|
|
||||||
|
|
||||||
if (lp.showmasktmmet == 3) {
|
if (!params->locallab.spots.at(sp).enatmMaskaft) {
|
||||||
showmask(lp, xstart, ystart, cx, cy, bfw, bfh, bufgb.get(), transformed, bufmaskorigtm.get(), 0);
|
maskcalccol(bfw, bfh, xstart, ystart, sk, cx, cy, bufgbm.get(), bufmaskorigtm.get(), originalmasktm.get(), original, transformed, inv, lp,
|
||||||
|
locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, multiThread,
|
||||||
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, gamma, slope, blendm);
|
||||||
|
|
||||||
return;
|
if (lp.showmasktmmet == 3) {
|
||||||
|
showmask(lp, xstart, ystart, cx, cy, bfw, bfh, bufgbm.get(), transformed, bufmaskorigtm.get(), 0);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (lp.showmasktmmet == 0 || lp.showmasktmmet == 1 || lp.showmasktmmet == 2 || lp.showmasktmmet == 4 || lp.showmasktmmet == 3 || lp.enatmMask) {
|
||||||
if (lp.showmasktmmet == 0 || lp.showmasktmmet == 1 || lp.showmasktmmet == 2 || lp.showmasktmmet == 4 || lp.enatmMask) {
|
|
||||||
|
|
||||||
#ifdef _OPENMP
|
|
||||||
#pragma omp parallel for schedule(dynamic,16)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (int y = 0; y < bfh ; y++) {
|
|
||||||
for (int x = 0; x < bfw; x++) {
|
|
||||||
bufgb->L[y][x] = original->L[y + ystart][x + xstart];
|
|
||||||
bufgb->a[y][x] = original->a[y + ystart][x + xstart];
|
|
||||||
bufgb->b[y][x] = original->b[y + ystart][x + xstart];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ImProcFunctions::EPDToneMaplocal(sp, bufgb.get(), tmp1.get(), itera, sk);//iterate to 0 calculate with edgstopping, improve result, call=1 dcrop we can put iterate to 5
|
ImProcFunctions::EPDToneMaplocal(sp, bufgb.get(), tmp1.get(), itera, sk);//iterate to 0 calculate with edgstopping, improve result, call=1 dcrop we can put iterate to 5
|
||||||
|
|
||||||
|
tmp1m->CopyFrom(tmp1.get());
|
||||||
|
|
||||||
|
if (params->locallab.spots.at(sp).enatmMaskaft) {
|
||||||
|
|
||||||
|
maskcalccol(bfw, bfh, xstart, ystart, sk, cx, cy, tmp1m.get(), bufmaskorigtm.get(), originalmasktm.get(), orimask, transformed, inv, lp,
|
||||||
|
locccmastmCurve, lcmastmutili, locllmastmCurve, llmastmutili, lochhmastmCurve, lhmastmutili, multiThread,
|
||||||
|
enaMask, showmaske, deltaE, modmask, zero, modif, chrom, rad, gamma, slope, blendm);
|
||||||
|
|
||||||
|
if (lp.showmasktmmet == 3) {
|
||||||
|
showmask(lp, xstart, ystart, cx, cy, bfw, bfh, tmp1m.get(), transformed, bufmaskorigtm.get(), 0);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
original->CopyFrom(orimask);
|
||||||
|
}
|
||||||
|
|
||||||
|
delete orimask;
|
||||||
|
|
||||||
float minL = tmp1->L[0][0] - bufgb->L[0][0];
|
float minL = tmp1->L[0][0] - bufgb->L[0][0];
|
||||||
float maxL = minL;
|
float maxL = minL;
|
||||||
float minC = sqrt(SQR(tmp1->a[0][0]) + SQR(tmp1->b[0][0])) - sqrt(SQR(bufgb->a[0][0]) + SQR(bufgb->b[0][0]));
|
float minC = sqrt(SQR(tmp1->a[0][0]) + SQR(tmp1->b[0][0])) - sqrt(SQR(bufgb->a[0][0]) + SQR(bufgb->b[0][0]));
|
||||||
|
@ -781,6 +781,7 @@ enum ProcEventCode {
|
|||||||
Evlocallaboffs = 751,
|
Evlocallaboffs = 751,
|
||||||
EvlocallabCTtransCurve = 752,
|
EvlocallabCTtransCurve = 752,
|
||||||
Evlocallabcliptm = 753,
|
Evlocallabcliptm = 753,
|
||||||
|
EvLocallabEnatmMaskaft = 754,
|
||||||
NUMOFEVENTS
|
NUMOFEVENTS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2570,6 +2570,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
LLmasktmcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35},
|
LLmasktmcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35},
|
||||||
HHmasktmcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35},
|
HHmasktmcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35},
|
||||||
enatmMask(false),
|
enatmMask(false),
|
||||||
|
enatmMaskaft(false),
|
||||||
blendmasktm(0),
|
blendmasktm(0),
|
||||||
radmasktm(10.0),
|
radmasktm(10.0),
|
||||||
chromasktm(0.0),
|
chromasktm(0.0),
|
||||||
@ -2837,6 +2838,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
|||||||
&& LLmasktmcurve == other.LLmasktmcurve
|
&& LLmasktmcurve == other.LLmasktmcurve
|
||||||
&& HHmasktmcurve == other.HHmasktmcurve
|
&& HHmasktmcurve == other.HHmasktmcurve
|
||||||
&& enatmMask == other.enatmMask
|
&& enatmMask == other.enatmMask
|
||||||
|
&& enatmMaskaft == other.enatmMaskaft
|
||||||
&& blendmasktm == other.blendmasktm
|
&& blendmasktm == other.blendmasktm
|
||||||
&& radmasktm == other.radmasktm
|
&& radmasktm == other.radmasktm
|
||||||
&& chromasktm == other.chromasktm
|
&& chromasktm == other.chromasktm
|
||||||
@ -4090,6 +4092,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmasktmcurve, "Locallab", "LLmasktmCurve_" + std::to_string(i), spot.LLmasktmcurve, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmasktmcurve, "Locallab", "LLmasktmCurve_" + std::to_string(i), spot.LLmasktmcurve, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).HHmasktmcurve, "Locallab", "HHmasktmCurve_" + std::to_string(i), spot.HHmasktmcurve, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).HHmasktmcurve, "Locallab", "HHmasktmCurve_" + std::to_string(i), spot.HHmasktmcurve, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).enatmMask, "Locallab", "EnatmMask_" + std::to_string(i), spot.enatmMask, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).enatmMask, "Locallab", "EnatmMask_" + std::to_string(i), spot.enatmMask, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).enatmMaskaft, "Locallab", "EnatmMaskaft_" + std::to_string(i), spot.enatmMaskaft, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blendmasktm, "Locallab", "Blendmasktm_" + std::to_string(i), spot.blendmasktm, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blendmasktm, "Locallab", "Blendmasktm_" + std::to_string(i), spot.blendmasktm, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).radmasktm, "Locallab", "Radmasktm_" + std::to_string(i), spot.radmasktm, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).radmasktm, "Locallab", "Radmasktm_" + std::to_string(i), spot.radmasktm, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chromasktm, "Locallab", "Chromasktm_" + std::to_string(i), spot.chromasktm, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chromasktm, "Locallab", "Chromasktm_" + std::to_string(i), spot.chromasktm, keyFile);
|
||||||
@ -5470,6 +5473,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Locallab", "LLmasktmCurve_" + std::to_string(i), pedited, spot.LLmasktmcurve, spotEdited.LLmasktmcurve);
|
assignFromKeyfile(keyFile, "Locallab", "LLmasktmCurve_" + std::to_string(i), pedited, spot.LLmasktmcurve, spotEdited.LLmasktmcurve);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "HHmasktmCurve_" + std::to_string(i), pedited, spot.HHmasktmcurve, spotEdited.HHmasktmcurve);
|
assignFromKeyfile(keyFile, "Locallab", "HHmasktmCurve_" + std::to_string(i), pedited, spot.HHmasktmcurve, spotEdited.HHmasktmcurve);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "EnatmMask_" + std::to_string(i), pedited, spot.enatmMask, spotEdited.enatmMask);
|
assignFromKeyfile(keyFile, "Locallab", "EnatmMask_" + std::to_string(i), pedited, spot.enatmMask, spotEdited.enatmMask);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "EnatmMaskaft_" + std::to_string(i), pedited, spot.enatmMaskaft, spotEdited.enatmMaskaft);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Blendmasktm_" + std::to_string(i), pedited, spot.blendmasktm, spotEdited.blendmasktm);
|
assignFromKeyfile(keyFile, "Locallab", "Blendmasktm_" + std::to_string(i), pedited, spot.blendmasktm, spotEdited.blendmasktm);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Radmasktm_" + std::to_string(i), pedited, spot.radmasktm, spotEdited.radmasktm);
|
assignFromKeyfile(keyFile, "Locallab", "Radmasktm_" + std::to_string(i), pedited, spot.radmasktm, spotEdited.radmasktm);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Chromasktm_" + std::to_string(i), pedited, spot.chromasktm, spotEdited.chromasktm);
|
assignFromKeyfile(keyFile, "Locallab", "Chromasktm_" + std::to_string(i), pedited, spot.chromasktm, spotEdited.chromasktm);
|
||||||
|
@ -1119,6 +1119,7 @@ struct LocallabParams {
|
|||||||
std::vector<double> LLmasktmcurve;
|
std::vector<double> LLmasktmcurve;
|
||||||
std::vector<double> HHmasktmcurve;
|
std::vector<double> HHmasktmcurve;
|
||||||
bool enatmMask;
|
bool enatmMask;
|
||||||
|
bool enatmMaskaft;
|
||||||
int blendmasktm;
|
int blendmasktm;
|
||||||
double radmasktm;
|
double radmasktm;
|
||||||
double chromasktm;
|
double chromasktm;
|
||||||
|
@ -780,7 +780,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, // Evlocallablumonly
|
LUMINANCECURVE, // Evlocallablumonly
|
||||||
LUMINANCECURVE, // Evlocallaboffs
|
LUMINANCECURVE, // Evlocallaboffs
|
||||||
LUMINANCECURVE, //EvlocallabCTtransCurve
|
LUMINANCECURVE, //EvlocallabCTtransCurve
|
||||||
LUMINANCECURVE //Evlocallabcliptm
|
LUMINANCECURVE, //Evlocallabcliptm
|
||||||
|
LUMINANCECURVE //Evlocallabenatmmaskaft
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -353,6 +353,7 @@ Locallab::Locallab():
|
|||||||
//TM
|
//TM
|
||||||
equiltm(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_EQUIL")))),
|
equiltm(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_EQUIL")))),
|
||||||
enatmMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))),
|
enatmMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))),
|
||||||
|
enatmMaskaft(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_AFTER_MASK")))),
|
||||||
// Retinex
|
// Retinex
|
||||||
equilret(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_EQUIL")))),
|
equilret(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_EQUIL")))),
|
||||||
inversret(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_INVERS")))),
|
inversret(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_INVERS")))),
|
||||||
@ -1242,6 +1243,7 @@ Locallab::Locallab():
|
|||||||
|
|
||||||
masktmCurveEditorG->curveListComplete();
|
masktmCurveEditorG->curveListComplete();
|
||||||
enatmMaskConn = enatmMask->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::enatmMaskChanged));
|
enatmMaskConn = enatmMask->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::enatmMaskChanged));
|
||||||
|
enatmMaskaftConn = enatmMaskaft->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::enatmMaskaftChanged));
|
||||||
|
|
||||||
showmasktmMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
showmasktmMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||||
showmasktmMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
showmasktmMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
||||||
@ -1269,6 +1271,7 @@ Locallab::Locallab():
|
|||||||
ToolParamBlock* const masktmBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const masktmBox = Gtk::manage(new ToolParamBlock());
|
||||||
masktmBox->pack_start(*showmasktmMethod, Gtk::PACK_SHRINK, 4);
|
masktmBox->pack_start(*showmasktmMethod, Gtk::PACK_SHRINK, 4);
|
||||||
masktmBox->pack_start(*enatmMask, Gtk::PACK_SHRINK, 0);
|
masktmBox->pack_start(*enatmMask, Gtk::PACK_SHRINK, 0);
|
||||||
|
masktmBox->pack_start(*enatmMaskaft, Gtk::PACK_SHRINK, 0);
|
||||||
masktmBox->pack_start(*masktmCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
masktmBox->pack_start(*masktmCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||||
masktmBox->pack_start(*blendmasktm, Gtk::PACK_SHRINK, 0);
|
masktmBox->pack_start(*blendmasktm, Gtk::PACK_SHRINK, 0);
|
||||||
masktmBox->pack_start(*radmasktm, Gtk::PACK_SHRINK, 0);
|
masktmBox->pack_start(*radmasktm, Gtk::PACK_SHRINK, 0);
|
||||||
@ -3160,6 +3163,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pp->locallab.spots.at(pp->locallab.selspot).CCmasktmcurve = CCmasktmshape->getCurve();
|
pp->locallab.spots.at(pp->locallab.selspot).CCmasktmcurve = CCmasktmshape->getCurve();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).HHmasktmcurve = HHmasktmshape->getCurve();
|
pp->locallab.spots.at(pp->locallab.selspot).HHmasktmcurve = HHmasktmshape->getCurve();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).enatmMask = enatmMask->get_active();
|
pp->locallab.spots.at(pp->locallab.selspot).enatmMask = enatmMask->get_active();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).enatmMaskaft = enatmMaskaft->get_active();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).blendmasktm = blendmasktm->getIntValue();
|
pp->locallab.spots.at(pp->locallab.selspot).blendmasktm = blendmasktm->getIntValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).radmasktm = radmasktm->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).radmasktm = radmasktm->getValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).chromasktm = chromasktm->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).chromasktm = chromasktm->getValue();
|
||||||
@ -3443,6 +3447,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pe->locallab.spots.at(pp->locallab.selspot).LLmasktmcurve = pe->locallab.spots.at(pp->locallab.selspot).LLmasktmcurve || !LLmasktmshape->isUnChanged();
|
pe->locallab.spots.at(pp->locallab.selspot).LLmasktmcurve = pe->locallab.spots.at(pp->locallab.selspot).LLmasktmcurve || !LLmasktmshape->isUnChanged();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).HHmasktmcurve = pe->locallab.spots.at(pp->locallab.selspot).HHmasktmcurve || !HHmasktmshape->isUnChanged();
|
pe->locallab.spots.at(pp->locallab.selspot).HHmasktmcurve = pe->locallab.spots.at(pp->locallab.selspot).HHmasktmcurve || !HHmasktmshape->isUnChanged();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).enatmMask = pe->locallab.spots.at(pp->locallab.selspot).enatmMask || !enatmMask->get_inconsistent();
|
pe->locallab.spots.at(pp->locallab.selspot).enatmMask = pe->locallab.spots.at(pp->locallab.selspot).enatmMask || !enatmMask->get_inconsistent();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).enatmMaskaft = pe->locallab.spots.at(pp->locallab.selspot).enatmMaskaft || !enatmMask->get_inconsistent();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).blendmasktm = pe->locallab.spots.at(pp->locallab.selspot).blendmasktm || blendmasktm->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).blendmasktm = pe->locallab.spots.at(pp->locallab.selspot).blendmasktm || blendmasktm->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).radmasktm = pe->locallab.spots.at(pp->locallab.selspot).radmasktm || radmasktm->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).radmasktm = pe->locallab.spots.at(pp->locallab.selspot).radmasktm || radmasktm->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).chromasktm = pe->locallab.spots.at(pp->locallab.selspot).chromasktm || chromasktm->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).chromasktm = pe->locallab.spots.at(pp->locallab.selspot).chromasktm || chromasktm->getEditedState();
|
||||||
@ -3716,6 +3721,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pedited->locallab.spots.at(pp->locallab.selspot).LLmasktmcurve = pedited->locallab.spots.at(pp->locallab.selspot).LLmasktmcurve || !LLmasktmshape->isUnChanged();
|
pedited->locallab.spots.at(pp->locallab.selspot).LLmasktmcurve = pedited->locallab.spots.at(pp->locallab.selspot).LLmasktmcurve || !LLmasktmshape->isUnChanged();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).HHmasktmcurve = pedited->locallab.spots.at(pp->locallab.selspot).HHmasktmcurve || !HHmasktmshape->isUnChanged();
|
pedited->locallab.spots.at(pp->locallab.selspot).HHmasktmcurve = pedited->locallab.spots.at(pp->locallab.selspot).HHmasktmcurve || !HHmasktmshape->isUnChanged();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).enatmMask = pedited->locallab.spots.at(pp->locallab.selspot).enatmMask || !enatmMask->get_inconsistent();
|
pedited->locallab.spots.at(pp->locallab.selspot).enatmMask = pedited->locallab.spots.at(pp->locallab.selspot).enatmMask || !enatmMask->get_inconsistent();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).enatmMaskaft = pedited->locallab.spots.at(pp->locallab.selspot).enatmMaskaft || !enatmMaskaft->get_inconsistent();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).blendmasktm = pedited->locallab.spots.at(pp->locallab.selspot).blendmasktm || blendmasktm->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).blendmasktm = pedited->locallab.spots.at(pp->locallab.selspot).blendmasktm || blendmasktm->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).radmasktm = pedited->locallab.spots.at(pp->locallab.selspot).radmasktm || radmasktm->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).radmasktm = pedited->locallab.spots.at(pp->locallab.selspot).radmasktm || radmasktm->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).chromasktm = pedited->locallab.spots.at(pp->locallab.selspot).chromasktm || chromasktm->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).chromasktm = pedited->locallab.spots.at(pp->locallab.selspot).chromasktm || chromasktm->getEditedState();
|
||||||
@ -4753,6 +4759,30 @@ void Locallab::enatmMaskChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Locallab::enatmMaskaftChanged()
|
||||||
|
{
|
||||||
|
printf("enatmmaskaftChanged\n");
|
||||||
|
|
||||||
|
if (multiImage) {
|
||||||
|
if (enatmMaskaft->get_inconsistent()) {
|
||||||
|
enatmMaskaft->set_inconsistent(false);
|
||||||
|
enatmMaskaftConn.block(true);
|
||||||
|
enatmMaskaft->set_active(false);
|
||||||
|
enatmMaskaftConn.block(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getEnabled() && exptonemap->getEnabled()) {
|
||||||
|
if (listener) {
|
||||||
|
if (enatmMaskaft->get_active()) {
|
||||||
|
listener->panelChanged(EvLocallabEnatmMaskaft, M("GENERAL_ENABLED"));
|
||||||
|
} else {
|
||||||
|
listener->panelChanged(EvLocallabEnatmMaskaft, M("GENERAL_DISABLED"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Locallab::enaretiMaskChanged()
|
void Locallab::enaretiMaskChanged()
|
||||||
{
|
{
|
||||||
@ -7290,6 +7320,7 @@ void Locallab::enableListener()
|
|||||||
enabletonemapConn.block(false);
|
enabletonemapConn.block(false);
|
||||||
equiltmConn.block(false);
|
equiltmConn.block(false);
|
||||||
enatmMaskConn.block(false);
|
enatmMaskConn.block(false);
|
||||||
|
enatmMaskaftConn.block(false);
|
||||||
showmasktmMethodConn.block(false);
|
showmasktmMethodConn.block(false);
|
||||||
// Retinex
|
// Retinex
|
||||||
enableretiConn.block(false);
|
enableretiConn.block(false);
|
||||||
@ -7366,6 +7397,7 @@ void Locallab::disableListener()
|
|||||||
enabletonemapConn.block(true);
|
enabletonemapConn.block(true);
|
||||||
equiltmConn.block(true);
|
equiltmConn.block(true);
|
||||||
enatmMaskConn.block(true);
|
enatmMaskConn.block(true);
|
||||||
|
enatmMaskaftConn.block(true);
|
||||||
showmasktmMethodConn.block(true);
|
showmasktmMethodConn.block(true);
|
||||||
// Retinex
|
// Retinex
|
||||||
enableretiConn.block(true);
|
enableretiConn.block(true);
|
||||||
@ -7613,6 +7645,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
amount->setValue(pp->locallab.spots.at(index).amount);
|
amount->setValue(pp->locallab.spots.at(index).amount);
|
||||||
equiltm->set_active(pp->locallab.spots.at(index).equiltm);
|
equiltm->set_active(pp->locallab.spots.at(index).equiltm);
|
||||||
enatmMask->set_active(pp->locallab.spots.at(index).enatmMask);
|
enatmMask->set_active(pp->locallab.spots.at(index).enatmMask);
|
||||||
|
enatmMaskaft->set_active(pp->locallab.spots.at(index).enatmMaskaft);
|
||||||
blendmasktm->setValue(pp->locallab.spots.at(index).blendmasktm);
|
blendmasktm->setValue(pp->locallab.spots.at(index).blendmasktm);
|
||||||
radmasktm->setValue(pp->locallab.spots.at(index).radmasktm);
|
radmasktm->setValue(pp->locallab.spots.at(index).radmasktm);
|
||||||
chromasktm->setValue(pp->locallab.spots.at(index).chromasktm);
|
chromasktm->setValue(pp->locallab.spots.at(index).chromasktm);
|
||||||
@ -7945,6 +7978,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
LLmasktmshape->setUnChanged(!spotState->LLmasktmcurve);
|
LLmasktmshape->setUnChanged(!spotState->LLmasktmcurve);
|
||||||
HHmasktmshape->setUnChanged(!spotState->HHmasktmcurve);
|
HHmasktmshape->setUnChanged(!spotState->HHmasktmcurve);
|
||||||
enatmMask->set_inconsistent(multiImage && !spotState->enatmMask);
|
enatmMask->set_inconsistent(multiImage && !spotState->enatmMask);
|
||||||
|
enatmMaskaft->set_inconsistent(multiImage && !spotState->enatmMaskaft);
|
||||||
blendmasktm->setEditedState(spotState->blendmasktm ? Edited : UnEdited);
|
blendmasktm->setEditedState(spotState->blendmasktm ? Edited : UnEdited);
|
||||||
radmasktm->setEditedState(spotState->radmasktm ? Edited : UnEdited);
|
radmasktm->setEditedState(spotState->radmasktm ? Edited : UnEdited);
|
||||||
chromasktm->setEditedState(spotState->chromasktm ? Edited : UnEdited);
|
chromasktm->setEditedState(spotState->chromasktm ? Edited : UnEdited);
|
||||||
|
@ -316,6 +316,8 @@ private:
|
|||||||
sigc::connection equiltmConn;
|
sigc::connection equiltmConn;
|
||||||
Gtk::CheckButton* const enatmMask;
|
Gtk::CheckButton* const enatmMask;
|
||||||
sigc::connection enatmMaskConn;
|
sigc::connection enatmMaskConn;
|
||||||
|
Gtk::CheckButton* const enatmMaskaft;
|
||||||
|
sigc::connection enatmMaskaftConn;
|
||||||
// Retinex
|
// Retinex
|
||||||
Gtk::CheckButton* const equilret;
|
Gtk::CheckButton* const equilret;
|
||||||
sigc::connection equilretConn;
|
sigc::connection equilretConn;
|
||||||
@ -471,6 +473,7 @@ private:
|
|||||||
//TM
|
//TM
|
||||||
void equiltmChanged();
|
void equiltmChanged();
|
||||||
void enatmMaskChanged();
|
void enatmMaskChanged();
|
||||||
|
void enatmMaskaftChanged();
|
||||||
// Retinex
|
// Retinex
|
||||||
void equilretChanged();
|
void equilretChanged();
|
||||||
void loglinChanged();
|
void loglinChanged();
|
||||||
|
@ -1111,6 +1111,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
locallab.spots.at(j).LLmasktmcurve = locallab.spots.at(j).LLmasktmcurve && pSpot.LLmasktmcurve == otherSpot.LLmasktmcurve;
|
locallab.spots.at(j).LLmasktmcurve = locallab.spots.at(j).LLmasktmcurve && pSpot.LLmasktmcurve == otherSpot.LLmasktmcurve;
|
||||||
locallab.spots.at(j).HHmasktmcurve = locallab.spots.at(j).HHmasktmcurve && pSpot.HHmasktmcurve == otherSpot.HHmasktmcurve;
|
locallab.spots.at(j).HHmasktmcurve = locallab.spots.at(j).HHmasktmcurve && pSpot.HHmasktmcurve == otherSpot.HHmasktmcurve;
|
||||||
locallab.spots.at(j).enatmMask = locallab.spots.at(j).enatmMask && pSpot.enatmMask == otherSpot.enatmMask;
|
locallab.spots.at(j).enatmMask = locallab.spots.at(j).enatmMask && pSpot.enatmMask == otherSpot.enatmMask;
|
||||||
|
locallab.spots.at(j).enatmMaskaft = locallab.spots.at(j).enatmMaskaft && pSpot.enatmMaskaft == otherSpot.enatmMaskaft;
|
||||||
locallab.spots.at(j).blendmasktm = locallab.spots.at(j).blendmasktm && pSpot.blendmasktm == otherSpot.blendmasktm;
|
locallab.spots.at(j).blendmasktm = locallab.spots.at(j).blendmasktm && pSpot.blendmasktm == otherSpot.blendmasktm;
|
||||||
locallab.spots.at(j).radmasktm = locallab.spots.at(j).radmasktm && pSpot.radmasktm == otherSpot.radmasktm;
|
locallab.spots.at(j).radmasktm = locallab.spots.at(j).radmasktm && pSpot.radmasktm == otherSpot.radmasktm;
|
||||||
locallab.spots.at(j).chromasktm = locallab.spots.at(j).chromasktm && pSpot.chromasktm == otherSpot.chromasktm;
|
locallab.spots.at(j).chromasktm = locallab.spots.at(j).chromasktm && pSpot.chromasktm == otherSpot.chromasktm;
|
||||||
@ -3296,6 +3297,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.locallab.spots.at(i).enatmMask = mods.locallab.spots.at(i).enatmMask;
|
toEdit.locallab.spots.at(i).enatmMask = mods.locallab.spots.at(i).enatmMask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).enatmMaskaft) {
|
||||||
|
toEdit.locallab.spots.at(i).enatmMaskaft = mods.locallab.spots.at(i).enatmMaskaft;
|
||||||
|
}
|
||||||
|
|
||||||
if (locallab.spots.at(i).blendmasktm) {
|
if (locallab.spots.at(i).blendmasktm) {
|
||||||
toEdit.locallab.spots.at(i).blendmasktm = mods.locallab.spots.at(i).blendmasktm;
|
toEdit.locallab.spots.at(i).blendmasktm = mods.locallab.spots.at(i).blendmasktm;
|
||||||
}
|
}
|
||||||
@ -4804,6 +4809,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
|||||||
LLmasktmcurve(v),
|
LLmasktmcurve(v),
|
||||||
HHmasktmcurve(v),
|
HHmasktmcurve(v),
|
||||||
enatmMask(v),
|
enatmMask(v),
|
||||||
|
enatmMaskaft(v),
|
||||||
blendmasktm(v),
|
blendmasktm(v),
|
||||||
radmasktm(v),
|
radmasktm(v),
|
||||||
chromasktm(v),
|
chromasktm(v),
|
||||||
@ -5068,6 +5074,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
|||||||
LLmasktmcurve = v;
|
LLmasktmcurve = v;
|
||||||
HHmasktmcurve = v;
|
HHmasktmcurve = v;
|
||||||
enatmMask = v;
|
enatmMask = v;
|
||||||
|
enatmMaskaft = v;
|
||||||
blendmasktm = v;
|
blendmasktm = v;
|
||||||
radmasktm = v;
|
radmasktm = v;
|
||||||
chromasktm = v;
|
chromasktm = v;
|
||||||
|
@ -529,6 +529,7 @@ public:
|
|||||||
bool LLmasktmcurve;
|
bool LLmasktmcurve;
|
||||||
bool HHmasktmcurve;
|
bool HHmasktmcurve;
|
||||||
bool enatmMask;
|
bool enatmMask;
|
||||||
|
bool enatmMaskaft;
|
||||||
bool blendmasktm;
|
bool blendmasktm;
|
||||||
bool radmasktm;
|
bool radmasktm;
|
||||||
bool chromasktm;
|
bool chromasktm;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user