From 017c40fd12943b32e78f62cad901b1e4d25b4ca0 Mon Sep 17 00:00:00 2001 From: Desmis Date: Sun, 24 Feb 2019 08:26:20 +0100 Subject: [PATCH] Adjustements to Const and Label Local labgrid --- rtdata/languages/default | 2 +- rtengine/iplocallab.cc | 22 ++++++++++++++-------- rtengine/procparams.cc | 7 ++++--- rtengine/procparams.h | 1 + rtgui/locallab.cc | 5 ++--- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 3ccc3a0c9..a3ce455be 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1985,7 +1985,7 @@ TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP;If curves at the top, mask is completely blac TP_LOCALLAB_CURVEMETHOD_TOOLTIP;'Normal', the curve L=f(L) has the same algorithm than slider lightness.\n'Super' the curve L=f(L) has an new improved algorithm, which can leeds in some cases to artifacts. TP_LOCALLAB_EXCLUF;Excluding TP_LOCALLAB_EXCLUF_TOOLTIP;Can be used to exclude this part of datas - move Scope to extend color.\n You can apply all settings to this RT-spot. -TP_LOCALLAB_LABGRID_VALUES;a(L)=%1 b(L)=%2\na(a)=%3 b(a)=%4 +TP_LOCALLAB_LABGRID_VALUES;High(a)=%1 High(b)=%2\nLow(a)=%3 Low(b)=%4 TP_LOCALLAB_LABGRID;Color correction grid TP_LOCALLAB_SENSIDEN;Scope TP_LOCALLAB_SENSIEXCLU;Scope diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index cf99cc141..7717cc718 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -7960,13 +7960,15 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o //local color and light - const float factor = LocallabParams::LABGRIDL_CORR_MAX * 3.28f; + const float factor = LocallabParams::LABGRIDL_CORR_MAX * 3.276f; const float scaling = LocallabParams::LABGRIDL_CORR_SCALE; + const float scaledirect = LocallabParams::LABGRIDL_DIRECT_SCALE; float a_scale = (lp.highA - lp.lowA) / factor / scaling; float a_base = lp.lowA / scaling; float b_scale = (lp.highB - lp.lowB) / factor / scaling; float b_base = lp.lowB / scaling; bool ctoning = (a_scale != 0.f || b_scale != 0.f || a_base != 0.f || b_base != 0.f); + if (!lp.inv && (lp.chro != 0 || lp.ligh != 0.f || lp.cont != 0 || ctoning || lp.qualcurvemet != 0 || lp.showmaskcolmet == 2 || lp.enaColorMask || lp.showmaskcolmet == 3 || lp.showmaskcolmet == 4) && lp.colorena) { // || lllocalcurve)) { //interior ellipse renforced lightness and chroma //locallutili @@ -8468,13 +8470,17 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o } if (ctoning) { - if(lp.gridmet == 0) { - bufcolcalc->a[loy - begy][lox - begx] += bufcolcalc->L[loy - begy][lox - begx] * a_scale + a_base; - bufcolcalc->b[loy - begy][lox - begx] += bufcolcalc->L[loy - begy][lox - begx] * b_scale + b_base; - } else if(lp.gridmet == 1) { - bufcolcalc->a[loy - begy][lox - begx] += 35000.f * a_scale; - bufcolcalc->b[loy - begy][lox - begx] += 35000.f * b_scale; - } + if (lp.gridmet == 0) { + bufcolcalc->a[loy - begy][lox - begx] += bufcolcalc->L[loy - begy][lox - begx] * a_scale + a_base; + bufcolcalc->b[loy - begy][lox - begx] += bufcolcalc->L[loy - begy][lox - begx] * b_scale + b_base; + } else if (lp.gridmet == 1) { + bufcolcalc->a[loy - begy][lox - begx] += scaledirect * a_scale; + bufcolcalc->b[loy - begy][lox - begx] += scaledirect * b_scale; + } + + bufcolcalc->a[loy - begy][lox - begx] = CLIPC(bufcolcalc->a[loy - begy][lox - begx]); + bufcolcalc->b[loy - begy][lox - begx] = CLIPC(bufcolcalc->b[loy - begy][lox - begx]); + } float rL; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index e31a91104..611ee4bb8 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -2367,7 +2367,7 @@ LocallabParams::LocallabSpot::LocallabSpot() : labgridAHigh(0.0), labgridBHigh(0.0), - strengthgrid(20), + strengthgrid(30), sensi(15), structcol(0), blurcolde(5), @@ -2649,8 +2649,9 @@ bool LocallabParams::LocallabSpot::operator !=(const LocallabSpot& other) const return !(*this == other); } -const double LocallabParams::LABGRIDL_CORR_MAX = 10000.f; -const double LocallabParams::LABGRIDL_CORR_SCALE = 3.28f; +const double LocallabParams::LABGRIDL_CORR_MAX = 12800.; +const double LocallabParams::LABGRIDL_CORR_SCALE = 3.276; +const double LocallabParams::LABGRIDL_DIRECT_SCALE = 41950.; LocallabParams::LocallabParams() : enabled(false), diff --git a/rtengine/procparams.h b/rtengine/procparams.h index d098e4adc..9bb5e6473 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1093,6 +1093,7 @@ struct LocallabParams { bool enabled; static const double LABGRIDL_CORR_MAX; static const double LABGRIDL_CORR_SCALE; + static const double LABGRIDL_DIRECT_SCALE; int nbspot; int selspot; std::vector spots; diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc index f7cbfd591..03d386c89 100644 --- a/rtgui/locallab.cc +++ b/rtgui/locallab.cc @@ -76,7 +76,7 @@ Locallab::Locallab(): lightness(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LIGHTNESS"), -100, 100, 1, 0))), contrast(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CONTRAST"), -100, 100, 1, 0))), chroma(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMA"), -100, 150, 1, 0))), - strengthgrid(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRGRID"), 0, 100, 1, 20))), + strengthgrid(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRGRID"), 0, 100, 1, 30))), sensi(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 15))), structcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL"), 0, 100, 1, 0))), blurcolde(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLURDE"), 2, 100, 1, 5))), @@ -221,7 +221,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")); + // expcolor->set_tooltip_text(M("TP_LOCALLAB_EXPCOLOR_TOOLTIP")); curvactivConn = curvactiv->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::curvactivChanged)); @@ -249,7 +249,6 @@ Locallab::Locallab(): gridMethod->append(M("TP_LOCALLAB_GRIDONE")); gridMethod->append(M("TP_LOCALLAB_GRIDTWO")); gridMethod->set_active(0); -// gridMethod->set_tooltip_markup(M("TP_LOCALLAB_GRIDMETHOD_TOOLTIP")); gridMethodConn = gridMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::gridMethodChanged)); llCurveEditorG->setCurveListener(this);