From 534cfc15fc5a8ee9fe2d4c63bae01d8fadf00b2a Mon Sep 17 00:00:00 2001 From: Desmis Date: Wed, 11 Dec 2019 09:23:57 +0100 Subject: [PATCH] Improve and simplify GUI Retinex --- rtdata/languages/default | 1 + rtgui/locallab.cc | 67 +++++++++++++++++++++++++--------------- rtgui/locallab.h | 1 + 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index d86b4f80b..f576937c5 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -2270,6 +2270,7 @@ TP_LOCALLAB_EXPGRAD;Graduated Filter TP_LOCALLAB_EXPMETHOD_TOOLTIP;Standard : use an algorithm similar as main Exposure but in L*a*b* and taking account of deltaE.\n\nLaplacian & PDE : use another algorithm also with deltaE and with Poisson equation to solve Laplacian in Fourier space.\nPDE IPOL, PDE Fattal and Standard can be combined.\nFFTW Fourier Transform is optimized in size to reduce processing time.\nPDE reduce artifacts and noise. TP_LOCALLAB_EXPOSE;Exposure TP_LOCALLAB_EXPOSURE_TOOLTIP;In some cases (strong shadows ..) you can use the module "Shadows Highlights" +TP_LOCALLAB_EXPRETITOOLS;Advanced Retinex Tools TP_LOCALLAB_EXPTOOL;Tools exposure TP_LOCALLAB_EXPTRC;Tone Response Curve - TRC TP_LOCALLAB_FATAMOUNT;Amount diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index b3a7ec50a..cc651a0b3 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -225,6 +225,7 @@ Locallab::Locallab(): expblur(Gtk::manage(new MyExpander(true, Gtk::manage(new Gtk::HBox())))), exptonemap(Gtk::manage(new MyExpander(true, Gtk::manage(new Gtk::HBox())))), expreti(Gtk::manage(new MyExpander(true, Gtk::manage(new Gtk::HBox())))), + expretitools(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_EXPRETITOOLS")))), expsharp(Gtk::manage(new MyExpander(true, Gtk::manage(new Gtk::HBox())))), expcontrast(Gtk::manage(new MyExpander(true, M("TP_LOCALLAB_LOC_CONTRAST")))), expcbdl(Gtk::manage(new MyExpander(true, Gtk::manage(new Gtk::HBox())))), @@ -2443,6 +2444,10 @@ pe(nullptr) expmaskreti->set_tooltip_markup(M("TP_LOCALLAB_MASK_TOOLTIP")); } + setExpandAlignProperties(expretitools, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); + expretitools->signal_button_release_event().connect_notify(sigc::bind(sigc::mem_fun(this, &Locallab::foldAllButMe), expretitools)); + expretitools->setLevel(2); + retinexMethod->append(M("TP_RETINEX_LOW")); retinexMethod->append(M("TP_RETINEX_UNIFORM")); retinexMethod->append(M("TP_RETINEX_HIGH")); @@ -2659,27 +2664,35 @@ pe(nullptr) ToolParamBlock* const genBox = Gtk::manage(new ToolParamBlock()); genBox->pack_start(*auxBox); + ToolParamBlock* const toolretiBox = Gtk::manage(new ToolParamBlock()); retiBox->pack_start(*retinexMethod); retiBox->pack_start(*fftwreti); retiBox->pack_start(*equilret); - retiBox->pack_start(*chrrt); retiBox->pack_start(*neigh); retiBox->pack_start(*vart); retiBox->pack_start(*scalereti); - retiBox->pack_start(*darkness); - retiBox->pack_start(*lightnessreti); - retiBox->pack_start(*softradiusret); retiBox->pack_start(*limd); - retiBox->pack_start(*cliptm); retiBox->pack_start(*offs); - retiBox->pack_start(*mMLabels); - retiBox->pack_start(*transLabels); - retiBox->pack_start(*transLabels2); - retiBox->pack_start(*LocalcurveEditortransT, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor - retiBox->pack_start(*LocalcurveEditorgainT, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor + + toolretiBox->pack_start(*chrrt); + toolretiBox->pack_start(*darkness); + toolretiBox->pack_start(*lightnessreti); + toolretiBox->pack_start(*cliptm); + toolretiBox->pack_start(*softradiusret); + toolretiBox->pack_start(*LocalcurveEditortransT, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor + + toolretiBox->pack_start(*mMLabels); + toolretiBox->pack_start(*transLabels); + toolretiBox->pack_start(*transLabels2); + toolretiBox->pack_start(*LocalcurveEditorgainT, Gtk::PACK_SHRINK, 4); + expretitools->add(*toolretiBox, false); + retiBox->pack_start(*expretitools, false, false); + + retiBox->pack_start(*expmaskreti, false, false); // retiBox->pack_start(*inversret); + retitoolFrame->add(*retiBox); genBox->pack_start(*retitoolFrame); expreti->add(*genBox, false); @@ -2687,6 +2700,7 @@ pe(nullptr) panel->pack_start(*expreti, false, false); + // Sharpening Gtk::HBox* const sharpTitleHBox = Gtk::manage(new Gtk::HBox()); Gtk::Label* const sharpLabel = Gtk::manage(new Gtk::Label()); @@ -3530,6 +3544,7 @@ void Locallab::foldAllButMe(GdkEventButton* event, MyExpander *expander) expmaskexp->set_expanded(expmaskexp == expander); expmasksh->set_expanded(expmasksh == expander); expmaskcb->set_expanded(expmaskcb == expander); + expretitools->set_expanded(expretitools == expander); expmaskreti->set_expanded(expmaskreti == expander); expmasktm->set_expanded(expmasktm == expander); expmaskbl->set_expanded(expmaskbl == expander); @@ -3635,6 +3650,7 @@ void Locallab::writeOptions(std::vector &tpOpen) tpOpen.push_back(expshadhigh->get_expanded()); tpOpen.push_back(expmaskcb->get_expanded()); tpOpen.push_back(expcbdl->get_expanded()); + tpOpen.push_back(expretitools->get_expanded()); tpOpen.push_back(expmaskreti->get_expanded()); tpOpen.push_back(expreti->get_expanded()); tpOpen.push_back(expmasktm->get_expanded()); @@ -3818,7 +3834,7 @@ void Locallab::refChanged(double huer, double lumar, double chromar) void Locallab::updateToolState(std::vector &tpOpen) { - if (tpOpen.size() >= 30) { + if (tpOpen.size() >= 31) { expsettings->setExpanded(tpOpen.at(0)); expmaskcol->set_expanded(tpOpen.at(1)); expmaskcol1->set_expanded(tpOpen.at(2)); @@ -3835,20 +3851,21 @@ void Locallab::updateToolState(std::vector &tpOpen) expshadhigh->set_expanded(tpOpen.at(13)); expmaskcb->set_expanded(tpOpen.at(14)); expcbdl->set_expanded(tpOpen.at(15)); - expmaskreti->set_expanded(tpOpen.at(16)); - expreti->set_expanded(tpOpen.at(17)); - expmasktm->set_expanded(tpOpen.at(18)); - exptonemap->set_expanded(tpOpen.at(19)); - expmaskbl->set_expanded(tpOpen.at(20)); - expgradvib->set_expanded(tpOpen.at(21)); - expmaskvib->set_expanded(tpOpen.at(22)); - expvibrance->set_expanded(tpOpen.at(23)); - expsoft->set_expanded(tpOpen.at(24)); - expblur->set_expanded(tpOpen.at(25)); - expsharp->set_expanded(tpOpen.at(26)); - expcontrast->set_expanded(tpOpen.at(27)); - expdenoi->set_expanded(tpOpen.at(28)); - explog->set_expanded(tpOpen.at(29)); + expretitools->set_expanded(tpOpen.at(16)); + expmaskreti->set_expanded(tpOpen.at(17)); + expreti->set_expanded(tpOpen.at(18)); + expmasktm->set_expanded(tpOpen.at(19)); + exptonemap->set_expanded(tpOpen.at(20)); + expmaskbl->set_expanded(tpOpen.at(21)); + expgradvib->set_expanded(tpOpen.at(22)); + expmaskvib->set_expanded(tpOpen.at(23)); + expvibrance->set_expanded(tpOpen.at(24)); + expsoft->set_expanded(tpOpen.at(25)); + expblur->set_expanded(tpOpen.at(26)); + expsharp->set_expanded(tpOpen.at(27)); + expcontrast->set_expanded(tpOpen.at(28)); + expdenoi->set_expanded(tpOpen.at(29)); + explog->set_expanded(tpOpen.at(30)); } } diff --git a/rtgui/locallab.h b/rtgui/locallab.h index 7ca97757e..dba2a6092 100644 --- a/rtgui/locallab.h +++ b/rtgui/locallab.h @@ -59,6 +59,7 @@ private: MyExpander* const expblur; MyExpander* const exptonemap; MyExpander* const expreti; + MyExpander* const expretitools; MyExpander* const expsharp; MyExpander* const expcontrast; MyExpander* const expcbdl;