Add show mask to Clarity
This commit is contained in:
parent
3fe2aaed79
commit
7ec1b27a91
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -1187,6 +1187,7 @@ struct WaveletParams {
|
||||
|
||||
bool lipst;
|
||||
bool avoid;
|
||||
bool showmask;
|
||||
bool tmr;
|
||||
int strength;
|
||||
int balance;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -477,6 +477,7 @@ struct WaveletParamsEdited {
|
||||
bool Medgreinf;
|
||||
bool ushamethod;
|
||||
bool avoid;
|
||||
bool showmask;
|
||||
bool tmr;
|
||||
bool c[9];
|
||||
bool ch[9];
|
||||
|
103
rtgui/wavelet.cc
103
rtgui/wavelet.cc
@ -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 !
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user