From 96c5eff50c978fe5a0f30c0a7f3df763e5dab555 Mon Sep 17 00:00:00 2001 From: Ingo Weyrich Date: Sat, 27 Jun 2020 13:13:26 +0200 Subject: [PATCH] Further cleanups to locallab periphery --- rtengine/dcrop.cc | 24 +++++++------------ rtengine/improccoordinator.cc | 44 ++++++++++++++--------------------- rtengine/improccoordinator.h | 22 +++++++----------- rtengine/simpleprocess.cc | 4 ---- 4 files changed, 34 insertions(+), 60 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index ddc360003..28e5afc1f 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -851,23 +851,11 @@ void Crop::update(int todo) }*/ // apply luminance operations - //bool tutu = true; if (todo & (M_LUMINANCE + M_COLOR)) { // - //if (tutu) { // //I made a little change here. Rather than have luminanceCurve (and others) use in/out lab images, we can do more if we copy right here. labnCrop->CopyFrom(laboCrop); - //parent->ipf.luminanceCurve (labnCrop, labnCrop, parent->lumacurve); - bool utili = parent->utili; - bool autili = parent->autili; - bool butili = parent->butili; - bool ccutili = parent->ccutili; - bool clcutili = parent->clcutili; - bool cclutili = parent->cclutili; - - - bool needslocal = params.locallab.enabled && !params.locallab.spots.empty(); - if (needslocal) { + if (params.locallab.enabled && !params.locallab.spots.empty()) { const std::unique_ptr reservCrop(new LabImage(laboCrop->W, laboCrop->H)); reservCrop->CopyFrom(laboCrop); const std::unique_ptr lastorigCrop(new LabImage(laboCrop->W, laboCrop->H)); @@ -1012,8 +1000,6 @@ void Crop::update(int todo) sobelre = parent->sobelrefs[sp]; const float avge = parent->avgs[sp]; - int lastsav = parent->lastsavrests[sp]; - float minCD; float maxCD; float mini; @@ -1022,6 +1008,7 @@ void Crop::update(int todo) float Tsigma; float Tmin; float Tmax; + int lastsav; CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lumare, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, avge, skip); @@ -1110,6 +1097,13 @@ void Crop::update(int todo) } } + bool utili = parent->utili; + bool autili = parent->autili; + bool butili = parent->butili; + bool ccutili = parent->ccutili; + bool clcutili = parent->clcutili; + bool cclutili = parent->cclutili; + LUTu dummy; parent->ipf.chromiLuminanceCurve(this, 1, labnCrop, labnCrop, parent->chroma_acurve, parent->chroma_bcurve, parent->satcurve, parent->lhskcurve, parent->clcurve, parent->lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, dummy, dummy); parent->ipf.vibrance(labnCrop, params.vibrance, params.toneCurve.hrenabled, params.icm.workingProfile); diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 52cf79203..2b83a661b 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -187,7 +187,6 @@ ImProcCoordinator::ImProcCoordinator() : // Locallab locallListener(nullptr), - coordX(0), coordY(0), localX(0), localY(0), lllocalcurve(65536, 0), cllocalcurve(65536, 0), lclocalcurve(65536, 0), @@ -207,24 +206,6 @@ ImProcCoordinator::ImProcCoordinator() : lmaskcblocalcurve(65536, 0), lmaskbllocalcurve(65536, 0), lmasklclocalcurve(65536, 0), - lastsavrests(500, -10000), - huerefs(500, -100000.f), - huerefblurs(500, -100000.f), - chromarefblurs(500, -100000.f), - lumarefblurs(500, -100000.f), - chromarefs(500, -100000.f), - lumarefs(500, -100000.f), - sobelrefs(500, -100000.f), - avgs(500, -100000.f), - huer(0), - huerblu(0), - chromarblu(0), - lumarblu(0), - chromar(0), - lumar(0), - sobeler(0), - lastsav(0), - avg(0), lastspotdup(false), previewDeltaE(false), locallColorMask(0), @@ -1069,6 +1050,14 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) float avge; std::vector locallref; std::vector locallretiminmax; + huerefs.resize(params->locallab.spots.size()); + huerefblurs.resize(params->locallab.spots.size()); + chromarefblurs.resize(params->locallab.spots.size()); + lumarefblurs.resize(params->locallab.spots.size()); + chromarefs.resize(params->locallab.spots.size()); + lumarefs.resize(params->locallab.spots.size()); + sobelrefs.resize(params->locallab.spots.size()); + avgs.resize(params->locallab.spots.size()); for (int sp = 0; sp < (int)params->locallab.spots.size(); sp++) { // Set local curves of current spot to LUT @@ -1147,14 +1136,14 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) ipf.calc_ref(sp, nprevl, nprevl, 0, 0, pW, pH, scale, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, avge, locwavCurveden, locwavdenutili); } - huerblu = huerefblurs[sp] = huerefblu; - chromarblu = chromarefblurs[sp] = chromarefblu; - lumarblu = lumarefblurs[sp] = lumarefblu; - huer = huerefs[sp] = huere; - chromar = chromarefs[sp] = chromare; - lumar = lumarefs[sp] = lumare ; - sobeler = sobelrefs[sp] = sobelre; - avg = avgs[sp] = avge; + double huerblu = huerefblurs[sp] = huerefblu; + double chromarblu = chromarefblurs[sp] = chromarefblu; + double lumarblu = lumarefblurs[sp] = lumarefblu; + double huer = huerefs[sp] = huere; + double chromar = chromarefs[sp] = chromare; + double lumar = lumarefs[sp] = lumare ; + double sobeler = sobelrefs[sp] = sobelre; + float avg = avgs[sp] = avge; CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lumar, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, avg, sca); @@ -1179,6 +1168,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) float Tsigma; float Tmin; float Tmax; + int lastsav; ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv.get(), lastorigimp.get(), 0, 0, pW, pH, scale, locRETgainCurve, locRETtransCurve, lllocalcurve, locallutili, cllocalcurve, localclutili, diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 128b2e03b..cc76bf23e 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -235,7 +235,6 @@ protected: //locallab LocallabListener* locallListener; - int coordX, coordY, localX, localY; LUTf lllocalcurve; LUTf cllocalcurve; LUTf lclocalcurve; @@ -255,7 +254,6 @@ protected: LUTf lmaskcblocalcurve; LUTf lmaskbllocalcurve; LUTf lmasklclocalcurve; -// LUTu lhist16loc; LocretigainCurve locRETgainCurve; LocretitransCurve locRETtransCurve; LocretigainCurverab locRETgainCurverab; @@ -299,18 +297,14 @@ protected: LocwavCurve locwavCurveden; LocwavCurve locedgwavCurve; - LUTu lastsavrests; - LUTf huerefs; - LUTf huerefblurs; - LUTf chromarefblurs; - LUTf lumarefblurs; - LUTf chromarefs; - LUTf lumarefs; - LUTf sobelrefs; - LUTf avgs; - double huer, huerblu, chromarblu, lumarblu, chromar, lumar, sobeler; - int lastsav; - float avg; + std::vector huerefs; + std::vector huerefblurs; + std::vector chromarefblurs; + std::vector lumarefblurs; + std::vector chromarefs; + std::vector lumarefs; + std::vector sobelrefs; + std::vector avgs; bool lastspotdup; bool previewDeltaE; int locallColorMask; diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 064710098..dae1973d5 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -1085,10 +1085,6 @@ private: reservView->CopyFrom(labView); const std::unique_ptr lastorigView(new LabImage(fw, fh)); lastorigView->CopyFrom(labView); - LUTf huerefs(500, -10000.f); - LUTf sobelrefs(500, -10000.f); - LUTi centerx(500, -10000); - LUTi centery(500, -10000); LocretigainCurve locRETgainCurve; LocretitransCurve locRETtransCurve; LocLHCurve loclhCurve;