This commit is contained in:
Ingo Weyrich 2020-09-17 14:13:18 +02:00
commit 35519dfd3f
3 changed files with 7277 additions and 25 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2421,7 +2421,7 @@ void ImProcFunctions::exlabLocal(local_params& lp, int bfh, int bfw, int bfhr, i
} }
const bool exec = (lp.expmet == 1 && linear > 0.f && lp.laplacexp > 0.1f); const bool exec = (lp.expmet == 1 && linear > 0.f && lp.laplacexp > 0.1f);
if(!exec) {//for standard exposure if(exec) {//for standard exposure
const float cexp_scale = std::pow(2.f, lp.expcomp); 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 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; const float cshoulder = ((maxran / rtengine::max(1.0f, cexp_scale)) * (lp.hlcompthr / 200.f)) + 0.1f;
@ -11293,7 +11293,7 @@ void ImProcFunctions::Lab_Local(
} }
// soft light and retinex_pde // soft light and retinex_pde
if (lp.strng > 0.f && call <= 3 && lp.sfena) { if (lp.strng > 1.f && call <= 3 && lp.sfena) {
int ystart = rtengine::max(static_cast<int>(lp.yc - lp.lyT) - cy, 0); int ystart = rtengine::max(static_cast<int>(lp.yc - lp.lyT) - cy, 0);
int yend = rtengine::min(static_cast<int>(lp.yc + lp.ly) - cy, original->H); int yend = rtengine::min(static_cast<int>(lp.yc + lp.ly) - cy, original->H);
int xstart = rtengine::max(static_cast<int>(lp.xc - lp.lxL) - cx, 0); int xstart = rtengine::max(static_cast<int>(lp.xc - lp.lxL) - cx, 0);
@ -12755,8 +12755,9 @@ void ImProcFunctions::Lab_Local(
} else { } else {
if (lp.expcomp != 0.f) {
ImProcFunctions::exlabLocal(lp, bfh, bfw, bfhr, bfwr, bufexporig.get(), bufexpfin.get(), hltonecurveloc, shtonecurveloc, tonecurveloc, hueref, lumaref, chromaref); ImProcFunctions::exlabLocal(lp, bfh, bfw, bfhr, bfwr, bufexporig.get(), bufexpfin.get(), hltonecurveloc, shtonecurveloc, tonecurveloc, hueref, lumaref, chromaref);
}
} }
//gradient //gradient
@ -13407,7 +13408,7 @@ void ImProcFunctions::Lab_Local(
if (lochhCurve && HHcurve && lp.qualcurvemet != 0 && !ctoning) { // H=f(H) if (lochhCurve && HHcurve && lp.qualcurvemet != 0 && !ctoning) { // H=f(H)
const float chromat = std::sqrt(SQR(bufcolcalca) + SQR(bufcolcalcb)); const float chromat = std::sqrt(SQR(bufcolcalca) + SQR(bufcolcalcb));
const float hhforcurv = xatan2f(bufcolcalcb, bufcolcalca); const float hhforcurv = xatan2f(bufcolcalcb, bufcolcalca);
const float valparam = float ((lochhCurve[500.f * Color::huelab_to_huehsv2(hhforcurv)] - 0.5f)); //get H=f(H) const float valparam = 2.f * float ((lochhCurve[500.f * Color::huelab_to_huehsv2(hhforcurv)] - 0.5f)) + static_cast<double>(hhforcurv);
float2 sincosval = xsincosf(valparam); float2 sincosval = xsincosf(valparam);
bufcolcalca = chromat * sincosval.y; bufcolcalca = chromat * sincosval.y;
bufcolcalcb = chromat * sincosval.x; bufcolcalcb = chromat * sincosval.x;

View File

@ -5549,9 +5549,9 @@ void LocallabMask::convertParamToSimple()
disableListener(); disableListener();
// Set hidden specific GUI widgets in Simple mode to default spot values // Set hidden specific GUI widgets in Simple mode to default spot values
radmask->setValue(defSpot.radmask); gammask->setValue(defSpot.gammask);
chromask->setValue(defSpot.chromask); slopmask->setValue(defSpot.slopmask);
Lmask_shape->setCurve(defSpot.Lmask_curve); //Lmask_shape->setCurve(defSpot.Lmask_curve);
// Enable all listeners // Enable all listeners
enableListener(); enableListener();
@ -5562,21 +5562,29 @@ void LocallabMask::updateGUIToMode(const modeType new_type)
switch (new_type) { switch (new_type) {
case Simple: case Simple:
// Expert and Normal mode widgets are hidden in Simple mode // Expert and Normal mode widgets are hidden in Simple mode
softradiusmask->hide(); softradiusmask->show();
toolmaskFrame->show();
struFrame->hide(); struFrame->hide();
blurFrame->hide(); blurFrame->hide();
toolmaskFrame->hide(); gammask->hide();
slopmask->hide();
shadmask->hide();
lapmask->hide();
mask_HCurveEditorG->hide();
mask2CurveEditorGwav->hide();
csThresholdmask->hide();
gradFramemask->hide();
break; break;
case Normal: case Normal:
// Expert mode widgets are hidden in Normal mode // Expert mode widgets are hidden in Normal mode
softradiusmask->hide(); softradiusmask->show();
struFrame->hide(); struFrame->hide();
blurFrame->hide(); blurFrame->hide();
lapmask->hide(); lapmask->hide();
gammask->hide(); gammask->show();
slopmask->hide(); slopmask->show();
shadmask->hide(); shadmask->hide();
mask_HCurveEditorG->hide(); mask_HCurveEditorG->hide();
mask2CurveEditorGwav->hide(); mask2CurveEditorGwav->hide();
@ -5589,19 +5597,20 @@ void LocallabMask::updateGUIToMode(const modeType new_type)
case Expert: case Expert:
// Show widgets hidden in Normal and Simple mode // Show widgets hidden in Normal and Simple mode
softradiusmask->hide(); softradiusmask->show();
struFrame->hide(); struFrame->show();
blurFrame->hide(); blurFrame->show();
toolmaskFrame->hide(); toolmaskFrame->show();
lapmask->hide(); lapmask->show();
gammask->hide(); gammask->show();
slopmask->hide(); slopmask->show();
shadmask->hide(); shadmask->show();
mask_HCurveEditorG->hide(); mask_HCurveEditorG->show();
mask2CurveEditorGwav->hide(); mask2CurveEditorGwav->show();
csThresholdmask->hide(); csThresholdmask->show();
gradFramemask->hide(); gradFramemask->show();
} }
} }
void LocallabMask::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer) void LocallabMask::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer)