Prepare GUI for merge not enable

This commit is contained in:
Desmis 2019-11-01 16:25:51 +01:00
parent 0de7b5bacf
commit bb63d3cded
9 changed files with 156 additions and 3 deletions

View File

@ -1035,6 +1035,8 @@ HISTORY_MSG_794;Local - SH TRC slope
HISTORY_MSG_795;Local - Mask save restore image
HISTORY_MSG_796;Local - Recursive references
HISTORY_MSG_797;Local - Merge and Masks method
HISTORY_MSG_798;Local - Merge Original method
HISTORY_MSG_799;Local - Opacity
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
@ -2155,6 +2157,12 @@ TP_LOCALLAB_MERGETYPE;Merge image and mask
TP_LOCALLAB_MERGENONE;None
TP_LOCALLAB_MERGEONE;Short Curves 'L' Mask
TP_LOCALLAB_MERGETWO;Original
TP_LOCALLAB_MERGE1COLFRA;Merge with Original
TP_LOCALLAB_OPACOL;Opacity
TP_LOCALLAB_MERGECOLFRA;Mask LCH
TP_LOCALLAB_MERONE;Normal
TP_LOCALLAB_MERTWO;Substraction
TP_LOCALLAB_MERTHR;Multiply
TP_LOCALLAB_MASFRAME_TOOLTIP;For all masks.\nTake into account deltaE image to avoid retouching the selection area when sliders gamma mask, slope mask, chroma mask and contrast curves and levels contrasts curves are used.\nDisabled in Inverse
TP_LOCALLAB_WAMASKCOL;Mask Wavelet level
TP_LOCALLAB_CSTHRESHOLDBLUR;Mask Wavelet level
@ -2350,7 +2358,7 @@ TP_LOCALLAB_SHOWT;3 - Mask and modifications
TP_LOCALLAB_SHOWS;4+* - Mask and modifications
TP_LOCALLAB_SHOWR;5 - Mask and modifications
TP_LOCALLAB_SHOWE;6+ - Mask and modifications
TP_LOCALLAB_SHOWC;7+* - Mask and modifications
TP_LOCALLAB_SHOWC;7+* - Mask and modifications - Merge
TP_LOCALLAB_SHOWPLUS;1+* - Mask and modifications - Smooth-Blur & Denoise
TP_LOCALLAB_SHOWMASKCOL_TOOLTIP;Display modifications.\nBeware, you can only view one modification (color and light or Exposure or Shadows-Highlight or TM or CBDL or Retinex MSR or Blur).\n\nUse Mask is before algorihtm shape detection
TP_LOCALLAB_SHOWMNONE;None

View File

@ -824,6 +824,8 @@ enum ProcEventCode {
Evlocallabsavrest = 794,
Evlocallabrecurs = 795,
EvLocallabSpotmergeMethod = 796,
EvLocallabmergecolMethod = 797,
Evlocallabopacol = 798,
NUMOFEVENTS
};

View File

@ -2463,6 +2463,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
lapmaskcol(0.0),
qualitycurveMethod("none"),
gridMethod("one"),
mergecolMethod("one"),
llcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
cccurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
LHcurve{(double)FCT_MinMaxCPoints, 0.0, 0.50, 0.35, 0.35, 0.166, 0.50, 0.35, 0.35, 0.333, 0.50, 0.35, 0.35, 0.50, 0.50, 0.35, 0.35, 0.666, 0.50, 0.35, 0.35, 0.833, 0.50, 0.35, 0.35},
@ -2473,6 +2474,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
LLmaskcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.00, 1.0, 0.35, 0.35 },
HHmaskcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.00, 1.0, 0.35, 0.35 },
softradiuscol(0.0),
opacol(100.0),
Lmaskcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
LLmaskcolcurvewav{(double)FCT_MinMaxCPoints, 0.0, 0.5, 0.35, 0.35, 1., 0.5, 0.35, 0.35},
csthresholdcol(0, 0, 6, 5, false),
@ -2772,6 +2774,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
&& lapmaskcol == other.lapmaskcol
&& qualitycurveMethod == other.qualitycurveMethod
&& gridMethod == other.gridMethod
&& mergecolMethod == other.mergecolMethod
&& llcurve == other.llcurve
&& cccurve == other.cccurve
&& LHcurve == other.LHcurve
@ -2783,6 +2786,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
&& HHmaskcurve == other.HHmaskcurve
&& blurcolde == other.blurcolde
&& softradiuscol == other.softradiuscol
&& opacol == other.opacol
&& Lmaskcurve == other.Lmaskcurve
&& LLmaskcolcurvewav == other.LLmaskcolcurvewav
&& csthresholdcol == other.csthresholdcol
@ -4078,6 +4082,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).lapmaskcol, "Locallab", "Lapmaskcol_" + std::to_string(i), spot.lapmaskcol, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).qualitycurveMethod, "Locallab", "QualityCurveMethod_" + std::to_string(i), spot.qualitycurveMethod, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).gridMethod, "Locallab", "gridMethod_" + std::to_string(i), spot.gridMethod, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).mergecolMethod, "Locallab", "mergecolMethod_" + std::to_string(i), spot.mergecolMethod, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).llcurve, "Locallab", "LLCurve_" + std::to_string(i), spot.llcurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).cccurve, "Locallab", "CCCurve_" + std::to_string(i), spot.cccurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LHcurve, "Locallab", "LHCurve_" + std::to_string(i), spot.LHcurve, keyFile);
@ -4088,6 +4093,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmaskcurve, "Locallab", "LLmaskCurve_" + std::to_string(i), spot.LLmaskcurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).HHmaskcurve, "Locallab", "HHmaskCurve_" + std::to_string(i), spot.HHmaskcurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).softradiuscol, "Locallab", "Softradiuscol_" + std::to_string(i), spot.softradiuscol, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).opacol, "Locallab", "Opacol_" + std::to_string(i), spot.opacol, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).Lmaskcurve, "Locallab", "LmaskCurve_" + std::to_string(i), spot.Lmaskcurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmaskcolcurvewav, "Locallab", "LLmaskcolCurvewav_" + std::to_string(i), spot.LLmaskcolcurvewav, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).csthresholdcol, "Locallab", "CSThresholdcol_" + std::to_string(i), spot.csthresholdcol.toVector(), keyFile);
@ -5491,6 +5497,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Locallab", "Lapmaskcol_" + std::to_string(i), pedited, spot.lapmaskcol, spotEdited.lapmaskcol);
assignFromKeyfile(keyFile, "Locallab", "QualityCurveMethod_" + std::to_string(i), pedited, spot.qualitycurveMethod, spotEdited.qualitycurveMethod);
assignFromKeyfile(keyFile, "Locallab", "gridMethod_" + std::to_string(i), pedited, spot.gridMethod, spotEdited.gridMethod);
assignFromKeyfile(keyFile, "Locallab", "mergecolMethod_" + std::to_string(i), pedited, spot.mergecolMethod, spotEdited.mergecolMethod);
assignFromKeyfile(keyFile, "Locallab", "LLCurve_" + std::to_string(i), pedited, spot.llcurve, spotEdited.llcurve);
assignFromKeyfile(keyFile, "Locallab", "CCCurve_" + std::to_string(i), pedited, spot.cccurve, spotEdited.cccurve);
assignFromKeyfile(keyFile, "Locallab", "LHCurve_" + std::to_string(i), pedited, spot.LHcurve, spotEdited.LHcurve);
@ -5501,6 +5508,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Locallab", "LLmaskCurve_" + std::to_string(i), pedited, spot.LLmaskcurve, spotEdited.LLmaskcurve);
assignFromKeyfile(keyFile, "Locallab", "HHmaskCurve_" + std::to_string(i), pedited, spot.HHmaskcurve, spotEdited.HHmaskcurve);
assignFromKeyfile(keyFile, "Locallab", "Softradiuscol_" + std::to_string(i), pedited, spot.softradiuscol, spotEdited.softradiuscol);
assignFromKeyfile(keyFile, "Locallab", "Opacol_" + std::to_string(i), pedited, spot.opacol, spotEdited.opacol);
assignFromKeyfile(keyFile, "Locallab", "LmaskCurve_" + std::to_string(i), pedited, spot.Lmaskcurve, spotEdited.Lmaskcurve);
assignFromKeyfile(keyFile, "Locallab", "LLmaskcolCurvewav_" + std::to_string(i), pedited, spot.LLmaskcolcurvewav, spotEdited.LLmaskcolcurvewav);
if (keyFile.has_key("Locallab", "CSThresholdcol_" + std::to_string(i))) {

View File

@ -1010,6 +1010,7 @@ struct LocallabParams {
double lapmaskcol;
Glib::ustring qualitycurveMethod;
Glib::ustring gridMethod;
Glib::ustring mergecolMethod;
std::vector<double> llcurve;
std::vector<double> cccurve;
std::vector<double> LHcurve;
@ -1020,6 +1021,7 @@ struct LocallabParams {
std::vector<double> LLmaskcurve;
std::vector<double> HHmaskcurve;
double softradiuscol;
double opacol;
std::vector<double> Lmaskcurve;
std::vector<double> LLmaskcolcurvewav;
Threshold<int> csthresholdcol;

View File

@ -823,7 +823,9 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
LUMINANCECURVE, //EvlocallabsloSH
LUMINANCECURVE, //Evlocallabsavrest
LUMINANCECURVE, //Evlocallabrecurs
LUMINANCECURVE // EvLocallabSpotmergeMethod
LUMINANCECURVE, // EvLocallabSpotmergeMethod
LUMINANCECURVE, //EvLocallabmergecolMethod
LUMINANCECURVE, //EvLocallabopacol
};
namespace rtengine

View File

@ -204,6 +204,7 @@ Locallab::Locallab():
lapmaskcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LAPMASKCOL"), 0.0, 100.0, 0.1, 0.))),
shadmaskcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SHAMASKCOL"), 0, 100, 1, 0))),
softradiuscol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOFTRADIUSCOL"), 0.0, 100.0, 0.5, 0.))),
opacol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_OPACOL"), 0.0, 100.0, 0.5, 100.))),
// Exposure
expcomp(Gtk::manage(new Adjuster(M("TP_EXPOSURE_EXPCOMP"), -2.0, 4.0, 0.05, 0.0))),
hlcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTS"), 0, 500, 1, 0))),
@ -406,6 +407,7 @@ Locallab::Locallab():
gridMethod(Gtk::manage(new MyComboBoxText())),
showmaskcolMethod(Gtk::manage(new MyComboBoxText())),
showmaskcolMethodinv(Gtk::manage(new MyComboBoxText())),
mergecolMethod(Gtk::manage(new MyComboBoxText())),
csThresholdcol(Gtk::manage(new ThresholdAdjuster(M("TP_LOCALLAB_CSTHRESHOLDBLUR"), 0, 9, 0, 0, 6, 5, 0, false))),
//Exposure
showmaskexpMethod(Gtk::manage(new MyComboBoxText())),
@ -447,6 +449,8 @@ Locallab::Locallab():
lumaneutralButton(Gtk::manage(new Gtk::Button(M("TP_DIRPYREQUALIZER_LUMANEUTRAL")))),
lumacontrastPlusButton(Gtk::manage(new Gtk::Button(M("TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS")))),
gridFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LABGRID")))),
mergecolFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_MERGECOLFRA")))),
merge1colFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_MERGE1COLFRA")))),
pdeFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_PDEFRA")))),
fatFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_FATFRA")))),
fatSHFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_FATSHFRA")))),
@ -527,6 +531,7 @@ Locallab::Locallab():
slomaskcol->setAdjusterListener(this);
shadmaskcol->setAdjusterListener(this);
softradiuscol->setAdjusterListener(this);
opacol->setAdjusterListener(this);
lapmaskcol->setAdjusterListener(this);
if (showtooltip) {
@ -624,6 +629,14 @@ Locallab::Locallab():
inversConn = invers->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::inversChanged));
mergecolMethod->append(M("TP_LOCALLAB_MERONE"));
mergecolMethod->append(M("TP_LOCALLAB_MERTWO"));
mergecolMethod->append(M("TP_LOCALLAB_MERTHR"));
mergecolMethod->set_active(0);
mergecolMethodConn = mergecolMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::mergecolMethodChanged));
showmaskcolMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
showmaskcolMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
showmaskcolMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
@ -754,6 +767,14 @@ Locallab::Locallab():
colorBox->pack_start(*llCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
colorBox->pack_start(*HCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
colorBox->pack_start(*invers);
mergecolFrame->set_label_align(0.025, 0.5);
merge1colFrame->set_label_align(0.025, 0.5);
ToolParamBlock* const mergecolBox = Gtk::manage(new ToolParamBlock());
mergecolBox->pack_start(*mergecolMethod);
mergecolBox->pack_start(*opacol);
merge1colFrame->add(*mergecolBox);
ToolParamBlock* const maskcolBox = Gtk::manage(new ToolParamBlock());
maskcolBox->pack_start(*showmaskcolMethod, Gtk::PACK_SHRINK, 4);
maskcolBox->pack_start(*showmaskcolMethodinv, Gtk::PACK_SHRINK, 4);
@ -769,7 +790,14 @@ Locallab::Locallab():
maskcolBox->pack_start(*mask2CurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
maskcolBox->pack_start(*mask2CurveEditorGwav, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
maskcolBox->pack_start(*csThresholdcol, Gtk::PACK_SHRINK, 0);
expmaskcol->add(*maskcolBox, false);
mergecolFrame->add(*maskcolBox);
ToolParamBlock* const maskcol1Box = Gtk::manage(new ToolParamBlock());
maskcol1Box->pack_start(*merge1colFrame);
maskcol1Box->pack_start(*mergecolFrame);
expmaskcol->add(*maskcol1Box, false);
colorBox->pack_start(*expmaskcol);
expcolor->add(*colorBox, false);
@ -2849,10 +2877,17 @@ void Locallab::read(const ProcParams* pp, const ParamsEdited* pedited)
if (pp->locallab.spots.at(i).mergeMethod == "none") {
r->mergeMethod = 0;
merge1colFrame->hide();
mergecolFrame->show();
} else if (pp->locallab.spots.at(i).mergeMethod == "short") {
r->mergeMethod = 1;
merge1colFrame->hide();
mergecolFrame->show();
} else if (pp->locallab.spots.at(i).mergeMethod == "orig") {
r->mergeMethod = 2;
merge1colFrame->show();
mergecolFrame->hide();
}
r->sensiexclu = pp->locallab.spots.at(i).sensiexclu;
@ -2972,10 +3007,17 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
if (newSpot->mergeMethod == "none") {
r->mergeMethod = 0;
merge1colFrame->hide();
mergecolFrame->show();
} else if (newSpot->mergeMethod == "short") {
r->mergeMethod = 1;
merge1colFrame->hide();
mergecolFrame->show();
} else if (newSpot->mergeMethod == "orig") {
r->mergeMethod = 2;
merge1colFrame->show();
mergecolFrame->hide();
}
r->sensiexclu = newSpot->sensiexclu;
@ -3203,10 +3245,16 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
if (newSpot->mergeMethod == "none") {
r->mergeMethod = 0;
merge1colFrame->hide();
mergecolFrame->show();
} else if (newSpot->mergeMethod == "short") {
r->mergeMethod = 1;
merge1colFrame->hide();
mergecolFrame->show();
} else if (newSpot->mergeMethod == "orig") {
r->mergeMethod = 2;
merge1colFrame->show();
mergecolFrame->hide();
}
r->sensiexclu = newSpot->sensiexclu;
@ -3351,10 +3399,18 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
if (r->mergeMethod == 0) {
pp->locallab.spots.at(pp->locallab.selspot).mergeMethod = "none";
merge1colFrame->hide();
mergecolFrame->show();
} else if (r->mergeMethod == 1) {
pp->locallab.spots.at(pp->locallab.selspot).mergeMethod = "short";
merge1colFrame->hide();
mergecolFrame->show();
} else if (r->mergeMethod == 2) {
pp->locallab.spots.at(pp->locallab.selspot).mergeMethod = "orig";
merge1colFrame->show();
mergecolFrame->hide();
}
pp->locallab.spots.at(pp->locallab.selspot).sensiexclu = r->sensiexclu;
@ -3427,6 +3483,14 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pp->locallab.spots.at(pp->locallab.selspot).gridMethod = "two";
}
if (mergecolMethod->get_active_row_number() == 0) {
pp->locallab.spots.at(pp->locallab.selspot).mergecolMethod = "one";
} else if (mergecolMethod->get_active_row_number() == 1) {
pp->locallab.spots.at(pp->locallab.selspot).mergecolMethod = "two";
} else if (mergecolMethod->get_active_row_number() == 2) {
pp->locallab.spots.at(pp->locallab.selspot).mergecolMethod = "thr";
}
pp->locallab.spots.at(pp->locallab.selspot).llcurve = llshape->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).cccurve = ccshape->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).LHcurve = LHshape->getCurve();
@ -3444,6 +3508,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pp->locallab.spots.at(pp->locallab.selspot).shadmaskcol = shadmaskcol->getIntValue();
pp->locallab.spots.at(pp->locallab.selspot).lapmaskcol = lapmaskcol->getValue();
pp->locallab.spots.at(pp->locallab.selspot).softradiuscol = softradiuscol->getValue();
pp->locallab.spots.at(pp->locallab.selspot).opacol = opacol->getValue();
pp->locallab.spots.at(pp->locallab.selspot).Lmaskcurve = Lmaskshape->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).LLmaskcolcurvewav = LLmaskcolshapewav->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).csthresholdcol = csThresholdcol->getValue<int>();
@ -3814,6 +3879,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pe->locallab.spots.at(pp->locallab.selspot).structcol = pe->locallab.spots.at(pp->locallab.selspot).structcol || structcol->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = pe->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod || qualitycurveMethod->get_active_text() != M("GENERAL_UNCHANGED");
pe->locallab.spots.at(pp->locallab.selspot).gridMethod = pe->locallab.spots.at(pp->locallab.selspot).gridMethod || gridMethod->get_active_text() != M("GENERAL_UNCHANGED");
pe->locallab.spots.at(pp->locallab.selspot).mergecolMethod = pe->locallab.spots.at(pp->locallab.selspot).mergecolMethod || mergecolMethod->get_active_text() != M("GENERAL_UNCHANGED");
pe->locallab.spots.at(pp->locallab.selspot).llcurve = pe->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).cccurve = pe->locallab.spots.at(pp->locallab.selspot).cccurve || !ccshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).LHcurve = pe->locallab.spots.at(pp->locallab.selspot).LHcurve || !LHshape->isUnChanged();
@ -3832,6 +3898,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pe->locallab.spots.at(pp->locallab.selspot).shadmaskcol = pe->locallab.spots.at(pp->locallab.selspot).shadmaskcol || shadmaskcol->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).lapmaskcol = pe->locallab.spots.at(pp->locallab.selspot).lapmaskcol || lapmaskcol->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).softradiuscol = pe->locallab.spots.at(pp->locallab.selspot).softradiuscol || softradiuscol->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).opacol = pe->locallab.spots.at(pp->locallab.selspot).opacol || opacol->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).Lmaskcurve = pe->locallab.spots.at(pp->locallab.selspot).Lmaskcurve || !Lmaskshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).LLmaskcolcurvewav = pe->locallab.spots.at(pp->locallab.selspot).LLmaskcolcurvewav || !LLmaskcolshapewav->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).csthresholdcol = pe->locallab.spots.at(pp->locallab.selspot).csthresholdcol || csThresholdcol->getEditedState();
@ -4132,6 +4199,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pedited->locallab.spots.at(pp->locallab.selspot).structcol = pedited->locallab.spots.at(pp->locallab.selspot).structcol || structcol->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = pedited->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod || qualitycurveMethod->get_active_text() != M("GENERAL_UNCHANGED");
pedited->locallab.spots.at(pp->locallab.selspot).gridMethod = pedited->locallab.spots.at(pp->locallab.selspot).gridMethod || gridMethod->get_active_text() != M("GENERAL_UNCHANGED");
pedited->locallab.spots.at(pp->locallab.selspot).mergecolMethod = pedited->locallab.spots.at(pp->locallab.selspot).mergecolMethod || mergecolMethod->get_active_text() != M("GENERAL_UNCHANGED");
pedited->locallab.spots.at(pp->locallab.selspot).llcurve = pedited->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).cccurve = pedited->locallab.spots.at(pp->locallab.selspot).cccurve || !ccshape->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).LHcurve = pedited->locallab.spots.at(pp->locallab.selspot).LHcurve || !LHshape->isUnChanged();
@ -4150,6 +4218,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pedited->locallab.spots.at(pp->locallab.selspot).shadmaskcol = pedited->locallab.spots.at(pp->locallab.selspot).shadmaskcol || shadmaskcol->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).lapmaskcol = pedited->locallab.spots.at(pp->locallab.selspot).lapmaskcol || lapmaskcol->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).softradiuscol = pedited->locallab.spots.at(pp->locallab.selspot).softradiuscol || softradiuscol->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).opacol = pedited->locallab.spots.at(pp->locallab.selspot).opacol || opacol->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).Lmaskcurve = pedited->locallab.spots.at(pp->locallab.selspot).Lmaskcurve || !Lmaskshape->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).LLmaskcolcurvewav = pedited->locallab.spots.at(pp->locallab.selspot).LLmaskcolcurvewav || !LLmaskcolshapewav->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).csthresholdcol = pedited->locallab.spots.at(pp->locallab.selspot).csthresholdcol || csThresholdcol->getEditedState();
@ -4946,6 +5015,18 @@ void Locallab::gridMethodChanged()
}
}
void Locallab::mergecolMethodChanged()
{
// printf("mergecolMethodChanged\n");
if (getEnabled() && expcolor->getEnabled()) {
if (listener) {
listener->panelChanged(EvLocallabmergecolMethod, mergecolMethod->get_active_text());
}
}
}
void Locallab::showmaskcolMethodChanged()
{
// printf("showmaskcolMethodChanged\n");
@ -6183,6 +6264,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
shadmaskcol->setDefault(defSpot->shadmaskcol);
lapmaskcol->setDefault(defSpot->lapmaskcol);
softradiuscol->setDefault(defSpot->softradiuscol);
opacol->setDefault(defSpot->opacol);
csThresholdcol->setDefault<int>(defSpot->csthresholdcol);
// Exposure
expcomp->setDefault(defSpot->expcomp);
@ -6374,6 +6456,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
shadmaskcol->setDefaultEditedState(Irrelevant);
lapmaskcol->setDefaultEditedState(Irrelevant);
softradiuscol->setDefaultEditedState(Irrelevant);
opacol->setDefaultEditedState(Irrelevant);
csThresholdcol->setDefaultEditedState(Irrelevant);
// Exposure
expcomp->setDefaultEditedState(Irrelevant);
@ -6569,6 +6652,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
shadmaskcol->setDefaultEditedState(defSpotState->shadmaskcol ? Edited : UnEdited);
lapmaskcol->setDefaultEditedState(defSpotState->lapmaskcol ? Edited : UnEdited);
softradiuscol->setDefaultEditedState(defSpotState->softradiuscol ? Edited : UnEdited);
opacol->setDefaultEditedState(defSpotState->opacol ? Edited : UnEdited);
csThresholdcol->setDefaultEditedState(defSpotState->csthresholdcol ? Edited : UnEdited);
// Exposure
expcomp->setDefaultEditedState(defSpotState->expcomp ? Edited : UnEdited);
@ -6892,6 +6976,12 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
}
}
if (a == opacol) {
if (listener) {
listener->panelChanged(Evlocallabopacol, opacol->getTextValue());
}
}
}
// Exposure
@ -7925,6 +8015,7 @@ void Locallab::setBatchMode(bool batchMode)
shadmaskcol->showEditedCB();
lapmaskcol->showEditedCB();
softradiuscol->showEditedCB();
opacol->showEditedCB();
csThresholdcol->showEditedCB();
// Exposure
expcomp->showEditedCB();
@ -8099,6 +8190,7 @@ void Locallab::setBatchMode(bool batchMode)
// Color & Light
qualitycurveMethod->append(M("GENERAL_UNCHANGED"));
gridMethod->append(M("GENERAL_UNCHANGED"));
mergecolMethod->append(M("GENERAL_UNCHANGED"));
//exposure
expMethod->append(M("GENERAL_UNCHANGED"));
exnoiseMethod->append(M("GENERAL_UNCHANGED"));
@ -8266,6 +8358,7 @@ void Locallab::enableListener()
curvactivConn.block(false);
qualitycurveMethodConn.block(false);
gridMethodConn.block(false);
mergecolMethodConn.block(false);
inversConn.block(false);
showmaskcolMethodConn.block(false);
showmaskcolMethodConninv.block(false);
@ -8346,6 +8439,7 @@ void Locallab::disableListener()
curvactivConn.block(true);
qualitycurveMethodConn.block(true);
gridMethodConn.block(true);
mergecolMethodConn.block(true);
inversConn.block(true);
showmaskcolMethodConn.block(true);
showmaskcolMethodConninv.block(true);
@ -8445,6 +8539,14 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
gridMethod->set_active(1);
}
if (pp->locallab.spots.at(index).mergecolMethod == "one") {
mergecolMethod->set_active(0);
} else if (pp->locallab.spots.at(index).mergecolMethod == "two") {
mergecolMethod->set_active(1);
} else if (pp->locallab.spots.at(index).mergecolMethod == "thr") {
mergecolMethod->set_active(2);
}
if (pp->locallab.spots.at(index).scalereti == 1) {
LocalcurveEditorgainT->hide();
@ -8477,6 +8579,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
shadmaskcol->setValue(pp->locallab.spots.at(index).shadmaskcol);
lapmaskcol->setValue(pp->locallab.spots.at(index).lapmaskcol);
softradiuscol->setValue(pp->locallab.spots.at(index).softradiuscol);
opacol->setValue(pp->locallab.spots.at(index).opacol);
Lmaskshape->setCurve(pp->locallab.spots.at(index).Lmaskcurve);
LLmaskcolshapewav->setCurve(pp->locallab.spots.at(index).LLmaskcolcurvewav);
csThresholdcol->setValue<int>(pp->locallab.spots.at(index).csthresholdcol);
@ -8870,6 +8973,10 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
gridMethod->set_active_text(M("GENERAL_UNCHANGED"));
}
if (!spotState->gridMethod) {
mergecolMethod->set_active_text(M("GENERAL_UNCHANGED"));
}
llshape->setUnChanged(!spotState->llcurve);
ccshape->setUnChanged(!spotState->cccurve);
LHshape->setUnChanged(!spotState->LHcurve);
@ -8888,6 +8995,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
shadmaskcol->setEditedState(spotState->shadmaskcol ? Edited : UnEdited);
lapmaskcol->setEditedState(spotState->lapmaskcol ? Edited : UnEdited);
softradiuscol->setEditedState(spotState->softradiuscol ? Edited : UnEdited);
opacol->setEditedState(spotState->opacol ? Edited : UnEdited);
Lmaskshape->setUnChanged(!spotState->Lmaskcurve);
LLmaskcolshapewav->setUnChanged(!spotState->LLmaskcolcurvewav);
csThresholdcol->setEditedState(spotState->csthresholdcol ? Edited : UnEdited);

View File

@ -160,6 +160,7 @@ private:
Adjuster* const lapmaskcol;
Adjuster* const shadmaskcol;
Adjuster* const softradiuscol;
Adjuster* const opacol;
// Exposure
Adjuster* const expcomp;
Adjuster* const hlcompr;
@ -395,6 +396,9 @@ private:
sigc::connection showmaskcolMethodConn;
MyComboBoxText* const showmaskcolMethodinv;
sigc::connection showmaskcolMethodConninv;
MyComboBoxText* const mergecolMethod;
sigc::connection mergecolMethodConn;
ThresholdAdjuster* const csThresholdcol;
//Exposure
MyComboBoxText* const showmaskexpMethod;
@ -454,6 +458,8 @@ private:
Gtk::Button* const lumacontrastPlusButton;
sigc::connection lumacontrastMinusPressedConn, lumaneutralPressedConn, lumacontrastPlusPressedConn;
Gtk::Frame* gridFrame;
Gtk::Frame* mergecolFrame;
Gtk::Frame* merge1colFrame;
Gtk::Frame* pdeFrame;
Gtk::Frame* fatFrame;
Gtk::Frame* fatSHFrame;
@ -545,6 +551,7 @@ private:
void gridMethodChanged();
void showmaskcolMethodChanged();
void showmaskcolMethodChangedinv();
void mergecolMethodChanged();
//Exposure
void showmaskexpMethodChanged();
void showmaskexpMethodChangedinv();

View File

@ -1004,6 +1004,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
locallab.spots.at(j).lapmaskcol = locallab.spots.at(j).lapmaskcol && pSpot.lapmaskcol == otherSpot.lapmaskcol;
locallab.spots.at(j).qualitycurveMethod = locallab.spots.at(j).qualitycurveMethod && pSpot.qualitycurveMethod == otherSpot.qualitycurveMethod;
locallab.spots.at(j).gridMethod = locallab.spots.at(j).gridMethod && pSpot.gridMethod == otherSpot.gridMethod;
locallab.spots.at(j).mergecolMethod = locallab.spots.at(j).mergecolMethod && pSpot.mergecolMethod == otherSpot.mergecolMethod;
locallab.spots.at(j).llcurve = locallab.spots.at(j).llcurve && pSpot.llcurve == otherSpot.llcurve;
locallab.spots.at(j).cccurve = locallab.spots.at(j).cccurve && pSpot.cccurve == otherSpot.cccurve;
locallab.spots.at(j).LHcurve = locallab.spots.at(j).LHcurve && pSpot.LHcurve == otherSpot.LHcurve;
@ -1014,6 +1015,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
locallab.spots.at(j).LLmaskcurve = locallab.spots.at(j).LLmaskcurve && pSpot.LLmaskcurve == otherSpot.LLmaskcurve;
locallab.spots.at(j).HHmaskcurve = locallab.spots.at(j).HHmaskcurve && pSpot.HHmaskcurve == otherSpot.HHmaskcurve;
locallab.spots.at(j).softradiuscol = locallab.spots.at(j).softradiuscol && pSpot.softradiuscol == otherSpot.softradiuscol;
locallab.spots.at(j).opacol = locallab.spots.at(j).opacol && pSpot.opacol == otherSpot.opacol;
locallab.spots.at(j).Lmaskcurve = locallab.spots.at(j).Lmaskcurve && pSpot.Lmaskcurve == otherSpot.Lmaskcurve;
locallab.spots.at(j).LLmaskcolcurvewav = locallab.spots.at(j).LLmaskcolcurvewav && pSpot.LLmaskcolcurvewav == otherSpot.LLmaskcolcurvewav;
locallab.spots.at(j).csthresholdcol = locallab.spots.at(j).csthresholdcol && pSpot.csthresholdcol == otherSpot.csthresholdcol;
@ -2934,6 +2936,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.locallab.spots.at(i).gridMethod = mods.locallab.spots.at(i).gridMethod;
}
if (locallab.spots.at(i).mergecolMethod) {
toEdit.locallab.spots.at(i).mergecolMethod = mods.locallab.spots.at(i).mergecolMethod;
}
if (locallab.spots.at(i).llcurve) {
toEdit.locallab.spots.at(i).llcurve = mods.locallab.spots.at(i).llcurve;
}
@ -2974,6 +2980,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.locallab.spots.at(i).softradiuscol = mods.locallab.spots.at(i).softradiuscol;
}
if (locallab.spots.at(i).opacol) {
toEdit.locallab.spots.at(i).opacol = mods.locallab.spots.at(i).opacol;
}
if (locallab.spots.at(i).Lmaskcurve) {
toEdit.locallab.spots.at(i).Lmaskcurve = mods.locallab.spots.at(i).Lmaskcurve;
}
@ -4916,6 +4926,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
lapmaskcol(v),
qualitycurveMethod(v),
gridMethod(v),
mergecolMethod(v),
llcurve(v),
cccurve(v),
LHcurve(v),
@ -4926,6 +4937,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
LLmaskcurve(v),
HHmaskcurve(v),
softradiuscol(v),
opacol(v),
Lmaskcurve(v),
LLmaskcolcurvewav(v),
csthresholdcol(v),
@ -5223,6 +5235,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
lapmaskcol = v;
qualitycurveMethod = v;
gridMethod = v;
mergecolMethod = v;
llcurve = v;
cccurve = v;
LHcurve = v;
@ -5233,6 +5246,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
LLmaskcurve = v;
HHmaskcurve = v;
softradiuscol = v;
opacol = v;
Lmaskcurve = v;
LLmaskcolcurvewav = v;
csthresholdcol = v;

View File

@ -422,6 +422,7 @@ public:
bool lapmaskcol;
bool qualitycurveMethod;
bool gridMethod;
bool mergecolMethod;
bool llcurve;
bool cccurve;
bool LHcurve;
@ -432,6 +433,7 @@ public:
bool LLmaskcurve;
bool HHmaskcurve;
bool softradiuscol;
bool opacol;
bool Lmaskcurve;
bool LLmaskcolcurvewav;
bool csthresholdcol;