From b64707bea63e89ccb9a7abf13c480eeefcfaba79 Mon Sep 17 00:00:00 2001 From: Hombre Date: Sat, 4 Nov 2017 21:27:11 +0100 Subject: [PATCH] Adding ADD/SET mechanism to Fattal HDR tool + PartialPaste dialog gui + range of Beta limited to 0.7 <> 1.3. ADD/SET mechanism was missing for EPD tool too, so it's included in this commit. see #4168 --- rtdata/languages/Francais | 4 ++++ rtdata/languages/default | 5 +++-- rtgui/addsetids.h | 7 +++++++ rtgui/batchtoolpanelcoord.cc | 4 ++++ rtgui/epd.cc | 8 ++++++++ rtgui/epd.h | 1 + rtgui/fattaltonemap.cc | 8 +++++++- rtgui/fattaltonemap.h | 2 ++ rtgui/partialpastedlg.cc | 8 ++++++++ rtgui/partialpastedlg.h | 3 ++- rtgui/preferences.cc | 13 +++++++++++++ rtgui/toolpanelcoord.cc | 2 +- 12 files changed, 60 insertions(+), 5 deletions(-) diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index c39d9f5e5..b5a1434bc 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -904,6 +904,7 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Ombres/Hautes lumières PARTIALPASTE_SHARPENEDGE;Bords PARTIALPASTE_SHARPENING;Netteté PARTIALPASTE_SHARPENMICRO;Microcontraste +PARTIALPASTE_TM_FATTAL;Compression tonale HDR (Fattal02) PARTIALPASTE_VIBRANCE;Vibrance PARTIALPASTE_VIGNETTING;Correction du vignettage PARTIALPASTE_WAVELETGROUP;Niveaux d'ondelette @@ -1892,6 +1893,9 @@ TP_SHARPENMICRO_AMOUNT;Quantité TP_SHARPENMICRO_LABEL;Microcontraste TP_SHARPENMICRO_MATRIX;Matrice 3×3 au lieu de 5×5 TP_SHARPENMICRO_UNIFORMITY;Uniformité +TP_TM_FATTAL_LABEL;Compression Tonale HDR (Fattal02) +TP_TM_FATTAL_ALPHA;Seuil (Alpha) +TP_TM_FATTAL_BETA;Quantité (Beta) TP_VIBRANCE_AVOIDCOLORSHIFT;Éviter les dérives de teinte TP_VIBRANCE_CURVEEDITOR_SKINTONES;TT TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tons chair diff --git a/rtdata/languages/default b/rtdata/languages/default index 81a9cf231..a9fe2414e 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -928,6 +928,7 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Shadows/highlights PARTIALPASTE_SHARPENEDGE;Edges PARTIALPASTE_SHARPENING;Sharpening (USM/RL) PARTIALPASTE_SHARPENMICRO;Microcontrast +PARTIALPASTE_TM_FATTAL;HDR Tone mapping (Fattal02) PARTIALPASTE_VIBRANCE;Vibrance PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WAVELETGROUP;Wavelet Levels @@ -1929,8 +1930,8 @@ TP_SHARPENMICRO_LABEL;Microcontrast TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5 TP_SHARPENMICRO_UNIFORMITY;Uniformity TP_TM_FATTAL_LABEL;HDR Tone Mapping (Fattal02) -TP_TM_FATTAL_ALPHA;Alpha -TP_TM_FATTAL_BETA;Beta +TP_TM_FATTAL_ALPHA;Threshold (Alpha) +TP_TM_FATTAL_BETA;Amount (Beta) TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h index 2ee2e6053..07cf47d18 100644 --- a/rtgui/addsetids.h +++ b/rtgui/addsetids.h @@ -122,6 +122,13 @@ enum { ADDSET_SHARP_EDGETOL, ADDSET_SHARP_HALOCTRL, ADDSET_RESIZE_SCALE, + ADDSET_EPD_STRENGTH, + ADDSET_EPD_GAMMA, + ADDSET_EPD_EDGESTOPPING, + ADDSET_EPD_SCALE, + ADDSET_EPD_REWEIGHTINGITERATES, + ADDSET_FATTAL_ALPHA, + ADDSET_FATTAL_BETA, ADDSET_PARAM_NUM // THIS IS USED AS A DELIMITER!! }; diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index e7672e4c7..a854db612 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -151,6 +151,8 @@ void BatchToolPanelCoordinator::initSession () sharpenEdge->setAdjusterBehavior (false, false); sharpenMicro->setAdjusterBehavior (false, false); icm->setAdjusterBehavior (false, false); + epd->setAdjusterBehavior (false, false, false, false, false); + fattal->setAdjusterBehavior (false, false); chmixer->setAdjusterBehavior (false); blackwhite->setAdjusterBehavior (false, false); @@ -189,6 +191,8 @@ void BatchToolPanelCoordinator::initSession () cacorrection->setAdjusterBehavior (options.baBehav[ADDSET_CA]); sharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_RADIUS], options.baBehav[ADDSET_SHARP_AMOUNT], options.baBehav[ADDSET_SHARP_DAMPING], options.baBehav[ADDSET_SHARP_ITER], options.baBehav[ADDSET_SHARP_EDGETOL], options.baBehav[ADDSET_SHARP_HALOCTRL]); prsharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_RADIUS], options.baBehav[ADDSET_SHARP_AMOUNT], options.baBehav[ADDSET_SHARP_DAMPING], options.baBehav[ADDSET_SHARP_ITER], options.baBehav[ADDSET_SHARP_EDGETOL], options.baBehav[ADDSET_SHARP_HALOCTRL]); + epd->setAdjusterBehavior (options.baBehav[ADDSET_EPD_STRENGTH], options.baBehav[ADDSET_EPD_GAMMA], options.baBehav[ADDSET_EPD_EDGESTOPPING], options.baBehav[ADDSET_EPD_SCALE], options.baBehav[ADDSET_EPD_REWEIGHTINGITERATES]); + fattal->setAdjusterBehavior (options.baBehav[ADDSET_FATTAL_ALPHA], options.baBehav[ADDSET_FATTAL_BETA]); sharpenEdge->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT], options.baBehav[ADDSET_SHARPENEDGE_PASS]); sharpenMicro->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT], options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]); diff --git a/rtgui/epd.cc b/rtgui/epd.cc index d7848aee0..602585dfb 100644 --- a/rtgui/epd.cc +++ b/rtgui/epd.cc @@ -182,3 +182,11 @@ void EdgePreservingDecompositionUI::setBatchMode(bool batchMode) reweightingIterates->showEditedCB(); } +void EdgePreservingDecompositionUI::setAdjusterBehavior (bool stAdd, bool gAdd, bool esAdd, bool scAdd, bool rAdd) +{ + strength->setAddMode(stAdd); + gamma->setAddMode(gAdd); + edgeStopping->setAddMode(esAdd); + scale->setAddMode(scAdd); + reweightingIterates->setAddMode(rAdd); +} diff --git a/rtgui/epd.h b/rtgui/epd.h index c9fc5d0af..2e18cc0c9 100644 --- a/rtgui/epd.h +++ b/rtgui/epd.h @@ -43,6 +43,7 @@ public: void adjusterChanged (Adjuster* a, double newval); void enabledChanged (); + void setAdjusterBehavior (bool stAdd, bool gAdd, bool esAdd, bool scAdd, bool rAdd); }; #endif diff --git a/rtgui/fattaltonemap.cc b/rtgui/fattaltonemap.cc index f9ef660f4..a1fd3d342 100644 --- a/rtgui/fattaltonemap.cc +++ b/rtgui/fattaltonemap.cc @@ -30,7 +30,7 @@ FattalToneMapping::FattalToneMapping(): FoldableToolPanel(this, "fattal", M("TP_ // setEnabledTooltipMarkup(M("TP_EPD_TOOLTIP")); alpha = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_ALPHA"), 0.0, 2.0, 0.01, 1.0)); - beta = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_BETA"), 0.0, 2.0, 0.01, 1.0)); + beta = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_BETA"), 0.7, 1.3, 0.01, 1.0)); alpha->setAdjusterListener(this); beta->setAdjusterListener(this); @@ -118,3 +118,9 @@ void FattalToneMapping::setBatchMode(bool batchMode) beta->showEditedCB(); } +void FattalToneMapping::setAdjusterBehavior (bool alphaAdd, bool betaAdd) +{ + alpha->setAddMode(alphaAdd); + beta->setAddMode(betaAdd); +} + diff --git a/rtgui/fattaltonemap.h b/rtgui/fattaltonemap.h index 8ee93aa3c..cb3abcfc3 100644 --- a/rtgui/fattaltonemap.h +++ b/rtgui/fattaltonemap.h @@ -40,5 +40,7 @@ public: void adjusterChanged (Adjuster* a, double newval); void enabledChanged (); + void setAdjusterBehavior (bool alphaAdd, bool betaAdd); + }; diff --git a/rtgui/partialpastedlg.cc b/rtgui/partialpastedlg.cc index ce26078fc..7d91e0172 100644 --- a/rtgui/partialpastedlg.cc +++ b/rtgui/partialpastedlg.cc @@ -51,6 +51,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren exposure = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EXPOSURE"))); sh = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHADOWSHIGHLIGHTS"))); epd = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_EPD"))); + fattal = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_TM_FATTAL"))); retinex = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RETINEX"))); pcvignette = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_PCVIGNETTE"))); gradient = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_GRADIENT"))); @@ -143,6 +144,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren vboxes[0]->pack_start (*exposure, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*sh, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*epd, Gtk::PACK_SHRINK, 2); + vboxes[0]->pack_start (*fattal, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*retinex, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*pcvignette, Gtk::PACK_SHRINK, 2); vboxes[0]->pack_start (*gradient, Gtk::PACK_SHRINK, 2); @@ -298,6 +300,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren exposureConn = exposure->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); shConn = sh->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); epdConn = epd->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); + fattalConn = fattal->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); retinexConn = retinex->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); pcvignetteConn = pcvignette->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); gradientConn = gradient->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true)); @@ -517,6 +520,7 @@ void PartialPasteDlg::basicToggled () exposure->set_active (basic->get_active ()); sh->set_active (basic->get_active ()); epd->set_active (basic->get_active ()); + fattal->set_active (basic->get_active ()); pcvignette->set_active (basic->get_active ()); gradient->set_active (basic->get_active ()); retinex->set_active (basic->get_active ()); @@ -711,6 +715,10 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param filterPE.epd = falsePE.epd; } + if (!fattal->get_active ()) { + filterPE.fattal = falsePE.fattal; + } + if (!retinex->get_active ()) { filterPE.retinex = falsePE.retinex; } diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h index 8fa6dbd23..baef6b9aa 100644 --- a/rtgui/partialpastedlg.h +++ b/rtgui/partialpastedlg.h @@ -46,6 +46,7 @@ public: Gtk::CheckButton* exposure; Gtk::CheckButton* sh; Gtk::CheckButton* epd; + Gtk::CheckButton* fattal; Gtk::CheckButton* retinex; Gtk::CheckButton* pcvignette; Gtk::CheckButton* gradient; @@ -124,7 +125,7 @@ public: sigc::connection everythingConn, basicConn, detailConn, colorConn, lensConn, compositionConn, metaConn, rawConn, wavConn; sigc::connection wbConn, exposureConn, shConn, pcvignetteConn, gradientConn, labcurveConn, colorappearanceConn; - sigc::connection sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, dirpyrdenConn, defringeConn, epdConn, dirpyreqConn, waveletConn, retinexConn; + sigc::connection sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, dirpyrdenConn, defringeConn, epdConn, fattalConn, dirpyreqConn, waveletConn, retinexConn; sigc::connection vibranceConn, chmixerConn, hsveqConn, rgbcurvesConn, chmixerbwConn, colortoningConn, filmSimulationConn; sigc::connection distortionConn, cacorrConn, vignettingConn, lcpConn; sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, prsharpeningConn, perspectiveConn, commonTransConn; diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index e03542b3e..a2a111707 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -187,6 +187,19 @@ Gtk::Widget* Preferences::getBatchProcPanel () appendBehavList (mi, M ("TP_EXPOSURE_CONTRAST"), ADDSET_TC_CONTRAST, false); appendBehavList (mi, M ("TP_EXPOSURE_SATURATION"), ADDSET_TC_SATURATION, false); + mi = behModel->append (); + mi->set_value (behavColumns.label, M ("TP_EPD_LABEL")); + appendBehavList (mi, M ("TP_EPD_STRENGTH"), ADDSET_EPD_STRENGTH, false); + appendBehavList (mi, M ("TP_EPD_GAMMA"), ADDSET_EPD_GAMMA, false); + appendBehavList (mi, M ("TP_EPD_EDGESTOPPING"), ADDSET_EPD_EDGESTOPPING, false); + appendBehavList (mi, M ("TP_EPD_SCALE"), ADDSET_EPD_SCALE, false); + appendBehavList (mi, M ("TP_EPD_REWEIGHTINGITERATES"), ADDSET_EPD_REWEIGHTINGITERATES, false); + + mi = behModel->append (); + mi->set_value (behavColumns.label, M ("TP_TM_FATTAL_LABEL")); + appendBehavList (mi, M ("TP_TM_FATTAL_ALPHA"), ADDSET_FATTAL_ALPHA, false); + appendBehavList (mi, M ("TP_TM_FATTAL_BETA"), ADDSET_FATTAL_BETA, false); + mi = behModel->append (); mi->set_value (behavColumns.label, M ("TP_RETINEX_LABEL")); appendBehavList (mi, M ("TP_RETINEX_STRENGTH"), ADDSET_RETI_STR, false); diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index b88827482..9153c6fb4 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -90,7 +90,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan rawexposure = Gtk::manage (new RAWExposure ()); bayerrawexposure = Gtk::manage (new BayerRAWExposure ()); xtransrawexposure = Gtk::manage (new XTransRAWExposure ()); - fattal = Gtk::manage(new FattalToneMapping()); + fattal = Gtk::manage (new FattalToneMapping ()); // So Demosaic, Line noise filter, Green Equilibration, Ca-Correction (garder le nom de section identique!) and Black-Level will be moved in a "Bayer sensor" tool, // and a separate Demosaic and Black Level tool will be created in an "X-Trans sensor" tool