diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc index 7bca595ea..fcc8a9462 100644 --- a/rtengine/iplocallab.cc +++ b/rtengine/iplocallab.cc @@ -3003,6 +3003,7 @@ void ImProcFunctions::exlabLocal(local_params& lp, float strlap, int bfh, int bf const bool exec = (lp.expmet == 1 && linear > 0.f && lp.laplacexp > 0.1f); if(!exec) {//for standard exposure + const float cexp_scale = std::pow(2.f, lp.expcomp); const float ccomp = (rtengine::max(0.f, lp.expcomp) + 1.f) * lp.hlcomp / 100.f; const float cshoulder = ((maxran / rtengine::max(1.0f, cexp_scale)) * (lp.hlcompthr / 200.f)) + 0.1f; @@ -14896,6 +14897,10 @@ void ImProcFunctions::Lab_Local( } else { + if (lp.expcomp == 0.f && (lp.linear > 0.01f && lp.laplacexp > 0.1f)) { + lp.expcomp = 0.001f;// to enabled + } + if (lp.expcomp != 0.f ) { // || lp.laplacexp > 0.1f if(lp.laplacexp <= 0.1f) { lp.laplacexp = 0.2f; //force to use Laplacian wth very small values diff --git a/rtgui/locallabtools.cc b/rtgui/locallabtools.cc index bcdda8317..d0d24967f 100644 --- a/rtgui/locallabtools.cc +++ b/rtgui/locallabtools.cc @@ -3570,10 +3570,14 @@ void LocallabExposure::updateGUIToMode(const modeType new_type) fatanchor->show(); // Specific Simple mode widgets are shown in Normal mode + softradiusexp->hide(); + blurexpde->hide(); + if (!inversex->get_active()) { // Keep widget hidden when invers is toggled expgradexp->show(); softradiusexp->show(); exprecove->show(); + blurexpde->show(); } expmaskexp->show(); @@ -3583,7 +3587,8 @@ void LocallabExposure::updateGUIToMode(const modeType new_type) case Expert: // Show widgets hidden in Normal and Simple mode - if (!inversex->get_active()) { // Keep widget hidden when invers is toggled + structexp->hide(); + if (!inversex->get_active()) { // Keep widget hidden when invers is toggled structexp->show(); } @@ -3591,11 +3596,15 @@ void LocallabExposure::updateGUIToMode(const modeType new_type) norm->show(); fatlevel->show(); fatanchor->show(); + softradiusexp->hide(); + blurexpde->hide(); if (!inversex->get_active()) { // Keep widget hidden when invers is toggled expgradexp->show(); softradiusexp->show(); exprecove->show(); + blurexpde->show(); + } if (enaExpMask->get_active()) { maskusablee->show(); @@ -3818,6 +3827,8 @@ void LocallabExposure::updateExposureGUI3() reparexp->hide(); expfat->hide(); exppde->hide(); + structexp->hide(); + blurexpde->hide(); // Manage specific case where expMethod is different from 0 if (expMethod->get_active_row_number() > 0) { @@ -3843,11 +3854,20 @@ void LocallabExposure::updateExposureGUI3() expfat->show(); exppde->show(); - if (mode == Expert || mode == Normal) { // Keep widgets hidden in Simple mode + if (mode == Normal) { // Keep widgets hidden in Simple mode softradiusexp->show(); expgradexp->show(); exprecove->show(); + blurexpde->show(); } + if (mode == Expert) { // Keep widgets hidden in Simple mode + softradiusexp->show(); + expgradexp->show(); + exprecove->show(); + structexp->show(); + blurexpde->show(); + } + reparexp->show(); showmaskexpMethodinv->hide();