From d54198cc56d9b04bc9b11631bcf243dcde08e19d Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 30 Dec 2018 13:55:49 +0100 Subject: [PATCH] Add tooltip for small defaults - hide TM --- rtdata/languages/default | 6 ++-- rtengine/procevents.h | 1 + rtengine/procparams.cc | 10 ++++++ rtengine/procparams.h | 24 ++++++++++++++ rtengine/refreshmap.cc | 3 +- rtgui/locallab.cc | 68 ++++++++++++++++++++++++++++++++++------ rtgui/locallab.h | 41 ++++++++++++++++++++++-- rtgui/paramsedited.cc | 9 ++++++ rtgui/paramsedited.h | 2 ++ 9 files changed, 150 insertions(+), 14 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 1c298f09a..2cb8c239f 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1930,11 +1930,13 @@ TP_LOCALLAB_BLINV;Inverse TP_LOCALLAB_BLSYM;Symmetric TP_LOCALLAB_CENTER_X;Center X TP_LOCALLAB_CENTER_Y;Center Y -TP_LOCALLAB_CBDL;Contrast by detail levels +TP_LOCALLAB_CBDL;Contrast by detail levels -Dist.defects:grease.. +TP_LOCALLAB_EXPCBDL_TOOLTIP;In the case of contaminated sensor (type "grease"), and when the area is important or for a series of small defects.\n\na) put the selection spot on a pronounced default (adapting its size if necessary); b) choose a wide selection area to cover most of the area affected by the defects; c) Select a fairly large transition value; d) act on levels 3 and 4 or lower by reducing the contrast (values below 100) and by acting on the chroma slider if necessary. TP_LOCALLAB_CHROMA;Chrominance TP_LOCALLAB_CHRRT;Chroma TP_LOCALLAB_CIRCRADIUS;Spot size -TP_LOCALLAB_COFR;Color & Light +TP_LOCALLAB_COFR;Color & Light -Small defects:red eyes,dust +TP_LOCALLAB_EXPCOLOR_TOOLTIP;In the case of small defects.\n\nRed-eyes : red-centered circular selector, spot delimiters close to the eye, weak scope, "lightness" -100, "chrominance" -100.\n\nSpotIR :Circular selector centered on the defect, spot delimiters close to the default - reduce "chrominance", possibly act on "scope" to reduce the extent of the action.\n\nDust - grease (small) :Circular selector centered on the defect (adapt the size of the spot), spot delimiters not too close to the defect to allow an inconspicuous transition. a) "Transition" weak; b) tick "Lightness contrast super"; c) act on "luminance" and possibly on "chrominance" to approach the rendering of the polluted zone to that of the healthy zone; d) act moderately on "scope" to modulate the desired action. TP_LOCALLAB_CONTRAST;Contrast TP_LOCALLAB_CURV;Lightness - Contrast - Chrominance "Super" TP_LOCALLAB_CURVNONE;Disable curves diff --git a/rtengine/procevents.h b/rtengine/procevents.h index 7fb2a750f..4b0cae7ff 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -630,6 +630,7 @@ enum ProcEventCode { Evlocallabstreng = 600, Evlocallabsensisf = 601, Evlocallabsharblur = 602, + EvLocenalabregion = 603, NUMOFEVENTS }; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 0e040fa41..aff0ba8a1 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2393,6 +2393,8 @@ LocallabParams::LocallabParams() : expsoft(), streng(), sensisf(), + //Lab region + explabregion(), // Blur & Noise expblur(), radius(), @@ -2523,6 +2525,8 @@ bool LocallabParams::operator ==(const LocallabParams& other) const && expsoft == other.expsoft && streng == other.streng && sensisf == other.sensisf + //Lab region + && explabregion == other.explabregion // Blur & Noise && expblur == other.expblur && radius == other.radius @@ -3581,6 +3585,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->locallab.expsoft, "Locallab", "Expsoft_" + std::to_string(i), locallab.expsoft.at(i), keyFile); saveToKeyfile(!pedited || pedited->locallab.streng, "Locallab", "Streng_" + std::to_string(i), locallab.streng.at(i), keyFile); saveToKeyfile(!pedited || pedited->locallab.sensisf, "Locallab", "Sensisf_" + std::to_string(i), locallab.sensisf.at(i), keyFile); + //Lab region + saveToKeyfile(!pedited || pedited->locallab.explabregion, "Locallab", "Explabregion_" + std::to_string(i), locallab.explabregion.at(i), keyFile); // Blur & Noise saveToKeyfile(!pedited || pedited->locallab.expblur, "Locallab", "Expblur_" + std::to_string(i), locallab.expblur.at(i), keyFile); saveToKeyfile(!pedited || pedited->locallab.radius, "Locallab", "Radius_" + std::to_string(i), locallab.radius.at(i), keyFile); @@ -4774,6 +4780,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) locallab.expsoft.resize(locallab.nbspot); locallab.streng.resize(locallab.nbspot); locallab.sensisf.resize(locallab.nbspot); + //Lab region + locallab.explabregion.resize(locallab.nbspot); // Blur & Noise locallab.expblur.resize(locallab.nbspot); locallab.radius.resize(locallab.nbspot); @@ -4913,6 +4921,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "Locallab", "Expsoft_" + std::to_string(i), pedited, locallab.expsoft.at(i), pedited->locallab.expsoft); assignFromKeyfile(keyFile, "Locallab", "Streng_" + std::to_string(i), pedited, locallab.streng.at(i), pedited->locallab.streng); assignFromKeyfile(keyFile, "Locallab", "Sensisf_" + std::to_string(i), pedited, locallab.sensisf.at(i), pedited->locallab.sensisf); + //Lab region + assignFromKeyfile(keyFile, "Locallab", "Explabregion_" + std::to_string(i), pedited, locallab.explabregion.at(i), pedited->locallab.explabregion); // Blur & Noise assignFromKeyfile(keyFile, "Locallab", "Expblur_" + std::to_string(i), pedited, locallab.expblur.at(i), pedited->locallab.expblur); assignFromKeyfile(keyFile, "Locallab", "Radius_" + std::to_string(i), pedited, locallab.radius.at(i), pedited->locallab.radius); diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 10529ef0a..9c93ded7b 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -981,6 +981,30 @@ struct LocallabParams { std::vector expsoft; std::vector streng; std::vector sensisf; + //Lab region + std::vector explabregion; + + /* + struct LabCorrectionRegion { + enum { CHAN_ALL = -1, CHAN_R, CHAN_G, CHAN_B }; + double a; + double b; + double saturation; + double slope; + double offset; + double power; + std::vector hueMask; + std::vector chromaticityMask; + std::vector lightnessMask; + double maskBlur; + int channel; + + LabCorrectionRegion(); + bool operator==(const LabCorrectionRegion &other) const; + bool operator!=(const LabCorrectionRegion &other) const; + }; + std::vector Labcorr; +*/ // Blur & Noise std::vector expblur; std::vector radius; diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index f6aa932f8..f731116df 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -629,7 +629,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = { LUMINANCECURVE, //EvLocenasoft LUMINANCECURVE, //EvLocallabstreng LUMINANCECURVE, //EvLocallabsensisf - LUMINANCECURVE //Evlocallabsharblur + LUMINANCECURVE, //Evlocallabsharblur + LUMINANCECURVE //EvLocenalabregion }; diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index 1119cb227..2bdd22bbc 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -49,6 +49,7 @@ Locallab::Locallab(): expexpose(new MyExpander(true, M("TP_LOCALLAB_EXPOSE"))), expvibrance(new MyExpander(true, M("TP_LOCALLAB_VIBRANCE"))), expsoft(new MyExpander(true, M("TP_LOCALLAB_SOFT"))), + explabregion(new MyExpander(true, M("TP_LOCALLAB_LABREGION"))), expblur(new MyExpander(true, M("TP_LOCALLAB_BLUFR"))), exptonemap(new MyExpander(true, M("TP_LOCALLAB_TM"))), expreti(new MyExpander(true, M("TP_LOCALLAB_RETI"))), @@ -186,6 +187,7 @@ Locallab::Locallab(): // Color & Light expcolor->signal_button_release_event().connect_notify(sigc::bind(sigc::mem_fun(this, &Locallab::foldAllButMe), expcolor)); enablecolorConn = expcolor->signal_enabled_toggled().connect(sigc::bind(sigc::mem_fun(this, &Locallab::enableToggled), expcolor)); + expcolor->set_tooltip_text(M("TP_LOCALLAB_EXPCOLOR_TOOLTIP")); curvactivConn = curvactiv->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::curvactivChanged)); @@ -402,6 +404,22 @@ Locallab::Locallab(): panel->pack_start(*expsoft, false, false); + //Labregion + explabregion->signal_button_release_event().connect_notify(sigc::bind(sigc::mem_fun(this, &Locallab::foldAllButMe), explabregion)); + enablelabregionConn = explabregion->signal_enabled_toggled().connect(sigc::bind(sigc::mem_fun(this, &Locallab::enableToggled), explabregion)); + + ToolParamBlock* const labRegionBox = Gtk::manage(new ToolParamBlock()); + explabregion->add(*labRegionBox); + explabregion->setLevel(2); +/* + labRegionSlope = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_SLOPE"), 0.1, 4.0, 0.001, 1)); + labRegionSlope->setLogScale(4, 0.1); + labRegionSlope->setAdjusterListener(this); + labRegionBox->pack_start(*labRegionSlope); +*/ + // panel->pack_start(*explabregion, false, false); +// labRegionSlope->delay = options.adjusterMaxDelay; + // Blur & Noise expblur->signal_button_release_event().connect_notify(sigc::bind(sigc::mem_fun(this, &Locallab::foldAllButMe), expblur)); enableblurConn = expblur->signal_enabled_toggled().connect(sigc::bind(sigc::mem_fun(this, &Locallab::enableToggled), expblur)); @@ -460,7 +478,7 @@ Locallab::Locallab(): exptonemap->add(*tmBox); exptonemap->setLevel(2); - panel->pack_start(*exptonemap, false, false); + // panel->pack_start(*exptonemap, false, false); // Retinex expreti->signal_button_release_event().connect_notify(sigc::bind(sigc::mem_fun(this, &Locallab::foldAllButMe), expreti)); @@ -569,6 +587,7 @@ Locallab::Locallab(): // Contrast by detail levels expcbdl->signal_button_release_event().connect_notify(sigc::bind(sigc::mem_fun(this, &Locallab::foldAllButMe), expcbdl)); enablecbdlConn = expcbdl->signal_enabled_toggled().connect(sigc::bind(sigc::mem_fun(this, &Locallab::enableToggled), expcbdl)); + expcbdl->set_tooltip_text(M("TP_LOCALLAB_EXPCBDL_TOOLTIP")); for (int i = 0; i < 5; i++) { Glib::ustring ss; @@ -685,6 +704,7 @@ void Locallab::foldAllButMe(GdkEventButton* event, MyExpander *expander) expexpose->set_expanded(expexpose == expander); expvibrance->set_expanded(expvibrance == expander); expsoft->set_expanded(expsoft == expander); + explabregion->set_expanded(explabregion == expander); expblur->set_expanded(expblur == expander); exptonemap->set_expanded(exptonemap == expander); expreti->set_expanded(expreti == expander); @@ -712,6 +732,8 @@ void Locallab::enableToggled(MyExpander *expander) event = EvLocenavibrance; } else if (expander == expsoft) { event = EvLocenasoft; + } else if (expander == explabregion) { + event = EvLocenalabregion; } else if (expander == expblur) { event = EvLocenablur; } else if (expander == exptonemap) { @@ -748,6 +770,7 @@ void Locallab::writeOptions(std::vector &tpOpen) tpOpen.push_back(expexpose->get_expanded()); tpOpen.push_back(expvibrance->get_expanded()); tpOpen.push_back(expsoft->get_expanded()); + tpOpen.push_back(explabregion->get_expanded()); tpOpen.push_back(expblur->get_expanded()); tpOpen.push_back(exptonemap->get_expanded()); tpOpen.push_back(expreti->get_expanded()); @@ -760,19 +783,20 @@ void Locallab::writeOptions(std::vector &tpOpen) void Locallab::updateToolState(std::vector &tpOpen) { - if (tpOpen.size() >= 12) { + if (tpOpen.size() >= 13) { expsettings->setExpanded(tpOpen.at(0)); expcolor->set_expanded(tpOpen.at(1)); expexpose->set_expanded(tpOpen.at(2)); expvibrance->set_expanded(tpOpen.at(3)); expsoft->set_expanded(tpOpen.at(4)); - expblur->set_expanded(tpOpen.at(5)); - exptonemap->set_expanded(tpOpen.at(6)); - expreti->set_expanded(tpOpen.at(7)); - expsharp->set_expanded(tpOpen.at(8)); - expcontrast->set_expanded(tpOpen.at(9)); - expcbdl->set_expanded(tpOpen.at(10)); - expdenoi->set_expanded(tpOpen.at(11)); + explabregion->set_expanded(tpOpen.at(5)); + expblur->set_expanded(tpOpen.at(6)); + exptonemap->set_expanded(tpOpen.at(7)); + expreti->set_expanded(tpOpen.at(8)); + expsharp->set_expanded(tpOpen.at(9)); + expcontrast->set_expanded(tpOpen.at(10)); + expcbdl->set_expanded(tpOpen.at(11)); + expdenoi->set_expanded(tpOpen.at(12)); } } @@ -904,6 +928,9 @@ void Locallab::read(const ProcParams* pp, const ParamsEdited* pedited) streng->setEditedState(pedited->locallab.streng ? Edited : UnEdited); sensisf->setEditedState(pedited->locallab.sensisf ? Edited : UnEdited); + //Lab region + explabregion->set_inconsistent(!pedited->locallab.explabregion); + // Blur & Noise expblur->set_inconsistent(!pedited->locallab.expblur); radius->setEditedState(pedited->locallab.radius ? Edited : UnEdited); @@ -1175,6 +1202,8 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited) pp->locallab.expsoft.push_back(0); pp->locallab.streng.push_back(0); pp->locallab.sensisf.push_back(19); + //Lab region + pp->locallab.explabregion.push_back(0); // Blur & Noise pp->locallab.expblur.push_back(0); pp->locallab.radius.push_back(1); @@ -1320,6 +1349,9 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited) pp->locallab.expsoft.erase(pp->locallab.expsoft.begin() + i); pp->locallab.streng.erase(pp->locallab.streng.begin() + i); pp->locallab.sensisf.erase(pp->locallab.sensisf.begin() + i); + //Lab region + pp->locallab.explabregion.erase(pp->locallab.explabregion.begin() + i); + // Blur & Noise pp->locallab.expblur.erase(pp->locallab.expblur.begin() + i); pp->locallab.radius.erase(pp->locallab.radius.begin() + i); @@ -1526,6 +1558,8 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited) pp->locallab.expsoft.at(pp->locallab.selspot) = (int)expsoft->getEnabled(); pp->locallab.streng.at(pp->locallab.selspot) = streng->getIntValue(); pp->locallab.sensisf.at(pp->locallab.selspot) = sensisf->getIntValue(); + //Lab region + pp->locallab.explabregion.at(pp->locallab.selspot) = (int)explabregion->getEnabled(); // Blur & Noise pp->locallab.expblur.at(pp->locallab.selspot) = (int)expblur->getEnabled(); pp->locallab.radius.at(pp->locallab.selspot) = radius->getIntValue(); @@ -1679,6 +1713,8 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited) pedited->locallab.expsoft = !expsoft->get_inconsistent(); pedited->locallab.streng = streng->getEditedState(); pedited->locallab.sensisf = sensisf->getEditedState(); + //Lab region + pedited->locallab.explabregion = !explabregion->get_inconsistent(); // Blur & Noise pedited->locallab.expblur = !expblur->get_inconsistent(); pedited->locallab.radius = radius->getEditedState(); @@ -2514,6 +2550,17 @@ void Locallab::adjusterChanged(Adjuster * a, double newval) } } } + //Lab region + /* + if (getEnabled() && explabregion->getEnabled()) { + if (a == labRegionSlope) { + if (listener) { + listener->panelChanged(EvlocallablabRegionSlope, labRegionSlope->getTextValue()); + } + } + + } +*/ // Blur & Noise if (getEnabled() && expblur->getEnabled()) { if (a == radius) { @@ -3229,6 +3276,9 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, int expsoft->setEnabled((bool)pp->locallab.expsoft.at(index)); streng->setValue(pp->locallab.streng.at(index)); sensisf->setValue(pp->locallab.sensisf.at(index)); + //Lab region + explabregion->setEnabled((bool)pp->locallab.explabregion.at(index)); + // Blur & Noise expblur->setEnabled((bool)pp->locallab.expblur.at(index)); radius->setValue(pp->locallab.radius.at(index)); diff --git a/rtgui/locallab.h b/rtgui/locallab.h index aad15a336..62b7852e6 100644 --- a/rtgui/locallab.h +++ b/rtgui/locallab.h @@ -41,13 +41,14 @@ class Locallab : public ThresholdAdjusterListener { -private: +private: // Expander widgets ControlSpotPanel* const expsettings; MyExpander* const expcolor; MyExpander* const expexpose; MyExpander* const expvibrance; MyExpander* const expsoft; + MyExpander* const explabregion; MyExpander* const expblur; MyExpander* const exptonemap; MyExpander* const expreti; @@ -55,7 +56,7 @@ private: MyExpander* const expcontrast; MyExpander* const expcbdl; MyExpander* const expdenoi; - sigc::connection enablecolorConn, enableexposeConn, enablevibranceConn, enablesoftConn, enableblurConn, enabletonemapConn, enableretiConn, enablesharpConn, enablecontrastConn, enablecbdlConn, enabledenoiConn; + sigc::connection enablecolorConn, enableexposeConn, enablevibranceConn, enablesoftConn, enablelabregionConn, enableblurConn, enabletonemapConn, enableretiConn, enablesharpConn, enablecontrastConn, enablecbdlConn, enabledenoiConn; // Curve widgets // Color & Light @@ -226,7 +227,43 @@ private: // Locallab GUI management function void updateLocallabGUI(const rtengine::procparams::ProcParams* pp, int index); void updateSpecificGUIState(); +/* + void onLabRegionSelectionChanged(); + void labRegionAddPressed(); + void labRegionRemovePressed(); + void labRegionUpPressed(); + void labRegionDownPressed(); + void labRegionCopyPressed(); + void labRegionShowMaskChanged(); + void labRegionChannelChanged(); + void labRegionPopulateList(); + void labRegionShow(int idx, bool list_only=false); + void labRegionGet(int idx); + Gtk::VBox *labRegionBox; + Gtk::ListViewText *labRegionList; + Gtk::Button *labRegionAdd; + Gtk::Button *labRegionRemove; + Gtk::Button *labRegionUp; + Gtk::Button *labRegionDown; + Gtk::Button *labRegionCopy; + LabGrid *labRegionAB; + Adjuster *labRegionSaturation; + */ + // Adjuster *labRegionSlope; + /* + Adjuster *labRegionOffset; + Adjuster *labRegionPower; + MyComboBoxText *labRegionChannel; + FlatCurveEditor *labRegionHueMask; + FlatCurveEditor *labRegionChromaticityMask; + FlatCurveEditor *labRegionLightnessMask; + Adjuster *labRegionMaskBlur; + Gtk::CheckButton *labRegionShowMask; + std::vector labRegionData; + int labRegionSelected; + sigc::connection labRegionSelectionConn; +*/ public: Locallab(); ~Locallab(); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index aa0c8b954..feef31784 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -389,6 +389,8 @@ void ParamsEdited::set(bool v) locallab.expsoft = v; locallab.streng = v; locallab.sensisf = v; + //Lab region + locallab.explabregion = v; // Blur & Noise locallab.expblur = v; locallab.radius = v; @@ -1086,6 +1088,8 @@ void ParamsEdited::initFrom(const std::vector& locallab.expsoft = locallab.expsoft && p.locallab.expsoft == other.locallab.expsoft; locallab.streng = locallab.streng && p.locallab.streng == other.locallab.streng; locallab.sensisf = locallab.sensisf && p.locallab.sensisf == other.locallab.sensisf; + //Lab region + locallab.explabregion = locallab.explabregion && p.locallab.explabregion == other.locallab.explabregion; // Blur & Noise locallab.expblur = locallab.expblur && p.locallab.expblur == other.locallab.expblur; locallab.radius = locallab.radius && p.locallab.radius == other.locallab.radius; @@ -2754,6 +2758,11 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.locallab.sensisf = mods.locallab.sensisf; } + //Lab region + if (locallab.explabregion) { + toEdit.locallab.explabregion = mods.locallab.explabregion; + } + // Blur & Noise if (locallab.expblur) { toEdit.locallab.expblur = mods.locallab.expblur; diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 8031a7be3..8e94237e0 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -519,6 +519,8 @@ public: bool expsoft; bool streng; bool sensisf; + //Lab region + bool explabregion; // Blur & Noise bool expblur; bool radius;