Add show mask to Clarity

This commit is contained in:
Desmis 2019-03-23 12:45:44 +01:00
parent 3fe2aaed79
commit 7ec1b27a91
10 changed files with 130 additions and 14 deletions

View File

@ -786,6 +786,7 @@ HISTORY_MSG_WAVMERGEL;Merge L
HISTORY_MSG_WAVMERGEC;Merge C
HISTORY_MSG_WAVSOFTRAD;Soft radius clarity
HISTORY_MSG_WAVSOFTRADEND;Soft radius final
HISTORY_MSG_WAVSHOWMASK;Show mask
HISTORY_NEWSNAPSHOT;Add
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
HISTORY_SNAPSHOT;Snapshot
@ -2268,8 +2269,9 @@ TP_WAVELET_TMTYPE;Compression method
TP_WAVELET_TON;Toning
TP_WAVELET_USHARP;Clarity method
TP_WAVELET_USH;None
TP_WAVELET_USH_TOOLTIP;If you select Sharp-mask, wavelet settings will be automatically positioned :\nBackground=black, Process=below, level=3...you can change level\nIf you select Clarity, wavelet settings will be automatically positioned :\nBackground=residual, Process=above, level=7..you can change level and wavelet levels
TP_WAVELET_USH_TOOLTIP;If you select Sharp-mask, wavelet settings will be automatically positioned :\nBackground=black, Process=below, level=3...you can change level\nIf you select Clarity, wavelet settings will be automatically positioned :\nBackground=residual, Process=above, level=7..you can change level and wavelet levels.
TP_WAVELET_SHA;Sharp mask
TP_WAVELET_SHOWMASK;Show mask
TP_WAVELET_CLA;Clarity
TP_WAVELET_USHARP;Sharp method
TP_WAVELET_USHARP_TOOLTIP;Origin : the source file is the file before Wavelet.\nWavelet : the source file is the file including wavelet threatment

View File

@ -993,6 +993,12 @@ void Crop::update(int todo)
Glib::ustring provis;
LabImage *provradius = nullptr;
if(WaveParams.showmask) {
// WaveParams.showmask = false;
// WaveParams.expclari = true;
}
if (WaveParams.softrad > 0.f) {
provradius = new LabImage(labnCrop->W, labnCrop->H);
provradius->CopyFrom(labnCrop);

View File

@ -857,6 +857,11 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
Glib::ustring provis;
LabImage *provradius = nullptr;
if(WaveParams.showmask) {
// WaveParams.showmask = false;
// WaveParams.expclari = true;
}
if (WaveParams.softrad > 0.f) {
provradius = new LabImage(pW, pH);
provradius->CopyFrom(nprevl);

View File

@ -2156,6 +2156,7 @@ WaveletParams::WaveletParams() :
softradend(0.),
lipst(false),
avoid(false),
showmask(false),
tmr(false),
strength(100),
balance(0),
@ -2251,6 +2252,7 @@ bool WaveletParams::operator ==(const WaveletParams& other) const
&& softradend == other.softradend
&& lipst == other.lipst
&& avoid == other.avoid
&& showmask == other.showmask
&& tmr == other.tmr
&& strength == other.strength
&& balance == other.balance
@ -3421,6 +3423,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->wavelet.edgval, "Wavelet", "Edgval", wavelet.edgval, keyFile);
saveToKeyfile(!pedited || pedited->wavelet.edgthresh, "Wavelet", "ThrEdg", wavelet.edgthresh, keyFile);
saveToKeyfile(!pedited || pedited->wavelet.avoid, "Wavelet", "AvoidColorShift", wavelet.avoid, keyFile);
saveToKeyfile(!pedited || pedited->wavelet.showmask, "Wavelet", "Showmask", wavelet.showmask, keyFile);
saveToKeyfile(!pedited || pedited->wavelet.tmr, "Wavelet", "TMr", wavelet.tmr, keyFile);
saveToKeyfile(!pedited || pedited->wavelet.rescon, "Wavelet", "ResidualcontShadow", wavelet.rescon, keyFile);
saveToKeyfile(!pedited || pedited->wavelet.resconH, "Wavelet", "ResidualcontHighlight", wavelet.resconH, keyFile);
@ -4481,6 +4484,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Wavelet", "Softradend", pedited, wavelet.softradend, pedited->wavelet.softradend);
assignFromKeyfile(keyFile, "Wavelet", "Lipst", pedited, wavelet.lipst, pedited->wavelet.lipst);
assignFromKeyfile(keyFile, "Wavelet", "AvoidColorShift", pedited, wavelet.avoid, pedited->wavelet.avoid);
assignFromKeyfile(keyFile, "Wavelet", "Showmask", pedited, wavelet.showmask, pedited->wavelet.showmask);
assignFromKeyfile(keyFile, "Wavelet", "TMr", pedited, wavelet.tmr, pedited->wavelet.tmr);
if (ppVersion < 331) { // wavelet.Lmethod was a string before version 331

View File

@ -1187,6 +1187,7 @@ struct WaveletParams {
bool lipst;
bool avoid;
bool showmask;
bool tmr;
int strength;
int balance;

View File

@ -1129,7 +1129,12 @@ private:
WavOpacityCurveW waOpacityCurveW;
WavOpacityCurveWL waOpacityCurveWL;
LabImage *provradius = nullptr;
/*
if(WaveParams.showmask) {
WaveParams.showmask = false;
WaveParams.expclari = true;
}
*/
if (WaveParams.softrad > 0.f) {
provradius = new LabImage(fw, fh);
provradius->CopyFrom(labView);

View File

@ -480,6 +480,7 @@ void ParamsEdited::set(bool v)
wavelet.Medgreinf = v;
wavelet.ushamethod = v;
wavelet.avoid = v;
wavelet.showmask = v;
wavelet.tmr = v;
wavelet.Lmethod = v;
wavelet.CLmethod = v;
@ -1053,6 +1054,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
wavelet.softradend = wavelet.softradend && p.wavelet.softradend == other.wavelet.softradend;
wavelet.ushamethod = wavelet.ushamethod && p.wavelet.ushamethod == other.wavelet.ushamethod;
wavelet.avoid = wavelet.avoid && p.wavelet.avoid == other.wavelet.avoid;
wavelet.showmask = wavelet.showmask && p.wavelet.showmask == other.wavelet.showmask;
wavelet.tmr = wavelet.tmr && p.wavelet.tmr == other.wavelet.tmr;
wavelet.Lmethod = wavelet.Lmethod && p.wavelet.Lmethod == other.wavelet.Lmethod;
wavelet.CLmethod = wavelet.CLmethod && p.wavelet.CLmethod == other.wavelet.CLmethod;
@ -2846,6 +2848,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.wavelet.avoid = mods.wavelet.avoid;
}
if (wavelet.showmask) {
toEdit.wavelet.showmask = mods.wavelet.showmask;
}
if (wavelet.tmr) {
toEdit.wavelet.tmr = mods.wavelet.tmr;
}

View File

@ -477,6 +477,7 @@ struct WaveletParamsEdited {
bool Medgreinf;
bool ushamethod;
bool avoid;
bool showmask;
bool tmr;
bool c[9];
bool ch[9];

View File

@ -75,6 +75,7 @@ Wavelet::Wavelet() :
lipst(Gtk::manage(new Gtk::CheckButton(M("TP_WAVELET_LIPST")))),
avoid(Gtk::manage(new Gtk::CheckButton(M("TP_WAVELET_AVOID")))),
tmr(Gtk::manage(new Gtk::CheckButton(M("TP_WAVELET_BALCHRO")))),
showmask(Gtk::manage(new Gtk::CheckButton(M("TP_WAVELET_SHOWMASK")))),
neutralchButton(Gtk::manage(new Gtk::Button(M("TP_WAVELET_NEUTRAL")))),
rescon(Gtk::manage(new Adjuster(M("TP_WAVELET_RESCON"), -100, 100, 1, 0))),
resconH(Gtk::manage(new Adjuster(M("TP_WAVELET_RESCONH"), -100, 100, 1, 0))),
@ -161,6 +162,7 @@ Wavelet::Wavelet() :
EvWavmergeC = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVMERGEC");
EvWavsoftrad = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVSOFTRAD");
EvWavsoftradend = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVSOFTRADEND");
EvWavshowmask = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVSHOWMASK");
expsettings->signal_button_release_event().connect_notify(sigc::bind(sigc::mem_fun(this, &Wavelet::foldAllButMe), expsettings));
@ -477,6 +479,8 @@ Wavelet::Wavelet() :
mergeL->setAdjusterListener(this);
mergeC->setAdjusterListener(this);
softrad->setAdjusterListener(this);
showmask->set_active(false);
showmaskConn = showmask->signal_toggled().connect(sigc::mem_fun(*this, &Wavelet::showmaskToggled));
ToolParamBlock* const clariBox = Gtk::manage(new ToolParamBlock());
ushamethod->append(M("TP_WAVELET_USH"));
@ -491,6 +495,7 @@ Wavelet::Wavelet() :
clariBox->pack_start(*mergeL);
clariBox->pack_start(*mergeC);
clariBox->pack_start(*softrad);
clariBox->pack_start(*showmask);
// Edge Sharpness
ToolParamBlock* const edgBox = Gtk::manage(new ToolParamBlock());
@ -1159,6 +1164,9 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
avoidConn.block(true);
avoid->set_active(pp->wavelet.avoid);
avoidConn.block(false);
showmaskConn.block(true);
showmask->set_active(pp->wavelet.showmask);
showmaskConn.block(false);
tmrConn.block(true);
tmr->set_active(pp->wavelet.tmr);
tmrConn.block(false);
@ -1188,6 +1196,7 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
lastcbenab = pp->wavelet.cbenab;
lastlipst = pp->wavelet.lipst;
lastavoid = pp->wavelet.avoid;
lastshowmask = pp->wavelet.showmask;
lasttmr = pp->wavelet.tmr;
rescon->setValue(pp->wavelet.rescon);
resconH->setValue(pp->wavelet.resconH);
@ -1333,6 +1342,7 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
Chshape->setUnChanged(!pedited->wavelet.Chcurve);
clshape->setUnChanged(!pedited->wavelet.wavclCurve);
avoid->set_inconsistent(!pedited->wavelet.avoid);
showmask->set_inconsistent(!pedited->wavelet.showmask);
tmr->set_inconsistent(!pedited->wavelet.tmr);
edgthresh->setEditedState(pedited->wavelet.edgthresh ? Edited : UnEdited);
rescon->setEditedState(pedited->wavelet.rescon ? Edited : UnEdited);
@ -1512,6 +1522,7 @@ void Wavelet::write(ProcParams* pp, ParamsEdited* pedited)
pp->wavelet.enabled = getEnabled();
pp->wavelet.avoid = avoid->get_active();
pp->wavelet.showmask = showmask->get_active();
pp->wavelet.tmr = tmr->get_active();
pp->wavelet.rescon = rescon->getValue();
pp->wavelet.resconH = resconH->getValue();
@ -1597,6 +1608,7 @@ void Wavelet::write(ProcParams* pp, ParamsEdited* pedited)
if (pedited) {
pedited->wavelet.enabled = !get_inconsistent();
pedited->wavelet.avoid = !avoid->get_inconsistent();
pedited->wavelet.showmask = !showmask->get_inconsistent();
pedited->wavelet.tmr = !tmr->get_inconsistent();
pedited->wavelet.median = !median->get_inconsistent();
pedited->wavelet.medianlev = !medianlev->get_inconsistent();
@ -2342,14 +2354,14 @@ void Wavelet::ushamethodChanged()
Dirmethod->set_active(3);
Lmethod->set_sensitive(true);
Dirmethod->set_sensitive(true);
} else if (ushamethod->get_active_row_number() == 0 || expclari->getEnabled() == false) {
} else if (ushamethod->get_active_row_number() == 0 || expclari->getEnabled() == false) {
Backmethod->set_active(1);
CLmethod->set_active(3);
Lmethod->set_active(3);
Dirmethod->set_active(3);
Lmethod->set_sensitive(false);
Dirmethod->set_sensitive(false);
} else if (expclari->getEnabled() == false) {
} else if (expclari->getEnabled() == false) {
Backmethod->set_active(1);
CLmethod->set_active(3);
Lmethod->set_active(3);
@ -2975,6 +2987,72 @@ void Wavelet::avoidToggled()
}
}
void Wavelet::showmaskToggled()
{
if (ushamethod->get_active_row_number() == 2 && showmask->get_active()) {
Backmethod->set_active(2);
CLmethod->set_active(2);
Lmethod->set_active(6);
Lmethod->set_sensitive(true);
Dirmethod->set_sensitive(true);
Dirmethod->set_active(3);
expclari->setEnabled(false);
} else if (ushamethod->get_active_row_number() == 1 && showmask->get_active()) {
Backmethod->set_active(0);
CLmethod->set_active(1);
Lmethod->set_active(2);
Dirmethod->set_active(3);
Lmethod->set_sensitive(true);
Dirmethod->set_sensitive(true);
expclari->setEnabled(false);
}
if (ushamethod->get_active_row_number() == 2 && !showmask->get_active()) {
Backmethod->set_active(2);
CLmethod->set_active(2);
Lmethod->set_active(6);
Lmethod->set_sensitive(true);
Dirmethod->set_sensitive(true);
Dirmethod->set_active(3);
expclari->setEnabled(true);
} else if (ushamethod->get_active_row_number() == 1 && !showmask->get_active()) {
Backmethod->set_active(0);
CLmethod->set_active(1);
Lmethod->set_active(2);
Dirmethod->set_active(3);
Lmethod->set_sensitive(true);
Dirmethod->set_sensitive(true);
expclari->setEnabled(true);
}
if (multiImage) {
if (showmask->get_inconsistent()) {
showmask->set_inconsistent(false);
showmaskConn.block(true);
showmask->set_active(false);
showmaskConn.block(false);
} else if (lastshowmask) {
showmask->set_inconsistent(true);
}
lastshowmask = showmask->get_active();
}
if (listener && (multiImage || getEnabled())) {
if (showmask->get_inconsistent()) {
listener->panelChanged(EvWavshowmask, M("GENERAL_UNCHANGED"));
} else if (showmask->get_active()) {
listener->panelChanged(EvWavshowmask, M("GENERAL_ENABLED"));
} else {
listener->panelChanged(EvWavshowmask, M("GENERAL_DISABLED"));
}
}
}
void Wavelet::tmrToggled()
{
@ -3150,13 +3228,19 @@ void Wavelet::enableToggled(MyExpander *expander)
event = EvWavenafin;
} else if (expander == expclari) {
if (expclari->getEnabled() == false) {
Backmethod->set_active(1);
CLmethod->set_active(3);
Lmethod->set_active(3);
Dirmethod->set_active(3);
Lmethod->set_sensitive(false);
Dirmethod->set_sensitive(false);
} else {
if (! showmask->get_active()) {
Backmethod->set_active(1);
CLmethod->set_active(3);
Lmethod->set_active(3);
Dirmethod->set_active(3);
Lmethod->set_sensitive(false);
Dirmethod->set_sensitive(false);
}
} else {
if (showmask->get_active()) {
showmask->set_active(false);
}
if (ushamethod->get_active_row_number() == 2) {
Backmethod->set_active(2);
CLmethod->set_active(2);
@ -3173,7 +3257,6 @@ void Wavelet::enableToggled(MyExpander *expander)
Dirmethod->set_sensitive(true);
}
}
event = EvWavenaclari;
} else
// unknown expander, returning !

View File

@ -71,6 +71,7 @@ private:
rtengine::ProcEvent EvWavmergeC;
rtengine::ProcEvent EvWavsoftrad;
rtengine::ProcEvent EvWavsoftradend;
rtengine::ProcEvent EvWavshowmask;
void foldAllButMe (GdkEventButton* event, MyExpander *expander);
@ -89,6 +90,7 @@ private:
void TMmethodChanged ();
void TilesmethodChanged ();
void avoidToggled ();
void showmaskToggled ();
void cbenabToggled ();
void contrastMinusPressed ();
void contrastPlusPressed ();
@ -156,6 +158,7 @@ private:
Gtk::CheckButton* const lipst;
Gtk::CheckButton* const avoid;
Gtk::CheckButton* const tmr;
Gtk::CheckButton* const showmask;
Gtk::Button* const neutralchButton;
Adjuster* correction[9];
@ -266,13 +269,13 @@ private:
sigc::connection enableChromaConn, enableContrastConn, enableEdgeConn, enableFinalConn, enableclariConn;
sigc::connection enableNoiseConn, enableResidConn, enableToningConn;
sigc::connection medianConn, avoidConn, tmrConn, medianlevConn, linkedgConn, lipstConn, cbenabConn, neutralconn;
sigc::connection medianConn, avoidConn, tmrConn, medianlevConn, linkedgConn, lipstConn, cbenabConn, neutralconn, showmaskConn;
sigc::connection neutralPressedConn;
sigc::connection contrastPlusPressedConn;
sigc::connection contrastMinusPressedConn;
sigc::connection neutralchPressedConn;
bool lastmedian, lastmedianlev, lastlinkedg, lastavoid, lastlipst, lasttmr, lastcbenab;
bool lastmedian, lastmedianlev, lastlinkedg, lastavoid, lastlipst, lasttmr, lastcbenab, lastshowmask;
int nextnlevel;
IdleRegister idle_register;