Some first cleanups for locallab periphery

This commit is contained in:
Ingo Weyrich
2020-06-26 21:20:26 +02:00
parent d7c6b4b8f9
commit 01e48cc809
7 changed files with 344 additions and 750 deletions

View File

@@ -52,7 +52,7 @@ namespace rtengine
{
Crop::Crop(ImProcCoordinator* parent, EditDataProvider *editDataProvider, bool isDetailWindow)
: PipetteBuffer(editDataProvider), origCrop(nullptr), laboCrop(nullptr), labnCrop(nullptr), reservCrop(nullptr), lastorigCrop(nullptr),
: PipetteBuffer(editDataProvider), origCrop(nullptr), laboCrop(nullptr), labnCrop(nullptr),
cropImg(nullptr), shbuf_real(nullptr), transCrop(nullptr), cieCrop(nullptr), shbuffer(nullptr),
updating(false), newUpdatePending(false), skip(10),
cropx(0), cropy(0), cropw(-1), croph(-1),
@@ -856,9 +856,6 @@ void Crop::update(int todo)
//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);
reservCrop->CopyFrom(laboCrop);
lastorigCrop->CopyFrom(laboCrop);
//parent->ipf.luminanceCurve (labnCrop, labnCrop, parent->lumacurve);
bool utili = parent->utili;
@@ -868,207 +865,131 @@ void Crop::update(int todo)
bool clcutili = parent->clcutili;
bool cclutili = parent->cclutili;
bool locallutili = parent->locallutili;
LUTf lllocalcurve2(65536, 0);
bool localclutili = parent->localclutili;
LUTf cllocalcurve2(65536, 0);
bool locallcutili = parent->locallcutili;
LUTf lclocalcurve2(65536, 0);
bool localcutili = parent->locallutili;
LUTf cclocalcurve2(65536, 0);
bool localrgbutili = parent->localrgbutili;
LUTf rgblocalcurve2(65536, 0);
bool localexutili = parent->localexutili;
LUTf exlocalcurve2(65536, 0);
bool localmaskutili = parent->localmaskutili;
bool localmaskexputili = parent->localmaskexputili;
bool localmaskSHutili = parent->localmaskSHutili;
bool localmaskvibutili = parent->localmaskvibutili;
bool localmasktmutili = parent->localmasktmutili;
bool localmaskretiutili = parent->localmaskretiutili;
bool localmaskcbutili = parent->localmaskcbutili;
bool localmaskblutili = parent->localmaskblutili;
bool localmasklcutili = parent->localmasklcutili;
LUTf lmasklocalcurve2(65536, 0);
LUTf lmaskexplocalcurve2(65536, 0);
LUTf lmaskSHlocalcurve2(65536, 0);
LUTf lmaskviblocalcurve2(65536, 0);
LUTf lmasktmlocalcurve2(65536, 0);
LUTf lmaskretilocalcurve2(65536, 0);
LUTf lmaskcblocalcurve2(65536, 0);
LUTf lmaskbllocalcurve2(65536, 0);
LUTf lmasklclocalcurve2(65536, 0);
LUTf hltonecurveloc2(65536, 0); //65536
LUTf shtonecurveloc2(65536, 0);
LUTf tonecurveloc2(65536, 0);
LUTf lightCurveloc2(32770, 0);
bool LHutili = parent->LHutili;
bool HHutili = parent->HHutili;
bool llmasutili = parent->llmasutili;
bool lhmasutili = parent->lhmasutili;
bool lhhmasutili = parent->lhhmasutili;
bool lcmasutili = parent->lcmasutili;
bool lhmasexputili = parent->lhmasexputili;
bool lcmasexputili = parent->lcmasexputili;
bool llmasexputili = parent->llmasexputili;
bool lhmasSHutili = parent->lhmasSHutili;
bool lcmasSHutili = parent->lcmasSHutili;
bool llmasSHutili = parent->llmasSHutili;
bool lhmasvibutili = parent->lhmasvibutili;
bool lcmasvibutili = parent->lcmasvibutili;
bool llmasvibutili = parent->llmasvibutili;
bool lhmaslcutili = parent->lhmaslcutili;
bool lcmaslcutili = parent->lcmaslcutili;
bool llmaslcutili = parent->llmaslcutili;
bool lhmascbutili = parent->lhmascbutili;
bool lcmascbutili = parent->lcmascbutili;
bool llmascbutili = parent->llmascbutili;
bool lhmasretiutili = parent->lhmasretiutili;
bool lcmasretiutili = parent->lcmasretiutili;
bool llmasretiutili = parent->llmasretiutili;
bool lhmastmutili = parent->lhmastmutili;
bool lcmastmutili = parent->lcmastmutili;
bool llmastmutili = parent->llmastmutili;
bool lhmasblutili = parent->lhmasblutili;
bool lcmasblutili = parent->lcmasblutili;
bool llmasblutili = parent->llmasblutili;
bool locwavutili = parent->locwavutili;
bool locwavdenutili = parent->locwavdenutili;
bool loclevwavutili = parent->loclevwavutili;
bool locconwavutili = parent->locconwavutili;
bool loccompwavutili = parent->loccompwavutili;
bool loccomprewavutili = parent->loccomprewavutili;
bool locedgwavutili = parent->locedgwavutili;
bool lmasutiliblwav = parent->lmasutiliblwav;
bool lmasutilicolwav = parent->lmasutilicolwav;
// float avg = parent->avg;
LUTu dummy;
bool needslocal = params.locallab.enabled;
LocretigainCurve locRETgainCurve;
LocretitransCurve locRETtransCurve;
LocLHCurve loclhCurve;
LocHHCurve lochhCurve;
LocCCmaskCurve locccmasCurve;
LocLLmaskCurve locllmasCurve;
LocHHmaskCurve lochhmasCurve;
LocHHmaskCurve lochhhmasCurve;
LocCCmaskCurve locccmasexpCurve;
LocLLmaskCurve locllmasexpCurve;
LocHHmaskCurve lochhmasexpCurve;
LocCCmaskCurve locccmasSHCurve;
LocLLmaskCurve locllmasSHCurve;
LocHHmaskCurve lochhmasSHCurve;
// LocHHmaskCurve lochhhmasSHCurve;
LocCCmaskCurve locccmasvibCurve;
LocLLmaskCurve locllmasvibCurve;
LocHHmaskCurve lochhmasvibCurve;
LocCCmaskCurve locccmaslcCurve;
LocLLmaskCurve locllmaslcCurve;
LocHHmaskCurve lochhmaslcCurve;
LocCCmaskCurve locccmascbCurve;
LocLLmaskCurve locllmascbCurve;
LocHHmaskCurve lochhmascbCurve;
LocCCmaskCurve locccmasretiCurve;
LocLLmaskCurve locllmasretiCurve;
LocHHmaskCurve lochhmasretiCurve;
LocCCmaskCurve locccmastmCurve;
LocLLmaskCurve locllmastmCurve;
LocHHmaskCurve lochhmastmCurve;
LocCCmaskCurve locccmasblCurve;
LocLLmaskCurve locllmasblCurve;
LocHHmaskCurve lochhmasblCurve;
LocwavCurve locwavCurve;
LocwavCurve loclmasCurveblwav;
LocwavCurve loclmasCurvecolwav;
LocwavCurve loclevwavCurve;
LocwavCurve locconwavCurve;
LocwavCurve loccompwavCurve;
LocwavCurve loccomprewavCurve;
LocwavCurve locedgwavCurve;
LocwavCurve locwavCurveden;
LocretigainCurverab locRETgainCurverab;
locallutili = false;
int sca = skip;
// bool tyty = false;
// int maxspot = 1;
bool needslocal = params.locallab.enabled && !params.locallab.spots.empty();
if (needslocal) {
const std::unique_ptr<LabImage> reservCrop(new LabImage(laboCrop->W, laboCrop->H));
reservCrop->CopyFrom(laboCrop);
const std::unique_ptr<LabImage> lastorigCrop(new LabImage(laboCrop->W, laboCrop->H));
lastorigCrop->CopyFrom(laboCrop);
auto& lllocalcurve2 = parent->lllocalcurve;
auto& cllocalcurve2 = parent->cllocalcurve;
auto& lclocalcurve2 = parent->lclocalcurve;
auto& cclocalcurve2 = parent->cclocalcurve;
auto& rgblocalcurve2 = parent->rgblocalcurve;
auto& exlocalcurve2 = parent->exlocalcurve;
auto& lmasklocalcurve2 = parent->lmasklocalcurve;
auto& lmaskexplocalcurve2 = parent->lmaskexplocalcurve;
auto& lmaskSHlocalcurve2 = parent->lmaskSHlocalcurve;
auto& lmaskviblocalcurve2 = parent->lmaskviblocalcurve;
auto& lmasktmlocalcurve2 = parent->lmasktmlocalcurve;
auto& lmaskretilocalcurve2 = parent->lmaskretilocalcurve;
auto& lmaskcblocalcurve2 = parent->lmaskcblocalcurve;
auto& lmaskbllocalcurve2 = parent->lmaskbllocalcurve;
auto& lmasklclocalcurve2 = parent->lmasklclocalcurve;
auto& hltonecurveloc2 = parent->hltonecurveloc;
auto& shtonecurveloc2 = parent->shtonecurveloc;
auto& tonecurveloc2 = parent->tonecurveloc;
auto& lightCurveloc2 = parent->lightCurveloc;
auto& locRETgainCurve = parent->locRETgainCurve;
auto& locRETtransCurve = parent->locRETtransCurve;
auto& loclhCurve = parent->loclhCurve;
auto& lochhCurve = parent->lochhCurve;
auto& locccmasCurve = parent->locccmasCurve;
auto& locllmasCurve = parent->locllmasCurve;
auto& lochhmasCurve = parent->lochhmasCurve;
auto& lochhhmasCurve = parent->lochhhmasCurve;
auto& locccmasexpCurve = parent->locccmasexpCurve;
auto& locllmasexpCurve = parent->locllmasexpCurve;
auto& lochhmasexpCurve = parent->lochhmasexpCurve;
auto& locccmasSHCurve = parent->locccmasSHCurve;
auto& locllmasSHCurve = parent->locllmasSHCurve;
auto& lochhmasSHCurve = parent->lochhmasSHCurve;
auto& locccmasvibCurve = parent->locccmasvibCurve;
auto& locllmasvibCurve = parent->locllmasvibCurve;
auto& lochhmasvibCurve = parent->lochhmasvibCurve;
auto& locccmaslcCurve = parent->locccmaslcCurve;
auto& locllmaslcCurve = parent->locllmaslcCurve;
auto& lochhmaslcCurve = parent->lochhmaslcCurve;
auto& locccmascbCurve = parent->locccmascbCurve;
auto& locllmascbCurve = parent->locllmascbCurve;
auto& lochhmascbCurve = parent->lochhmascbCurve;
auto& locccmasretiCurve = parent->locccmasretiCurve;
auto& locllmasretiCurve = parent->locllmasretiCurve;
auto& lochhmasretiCurve = parent->lochhmasretiCurve;
auto& locccmastmCurve = parent->locccmastmCurve;
auto& locllmastmCurve = parent->locllmastmCurve;
auto& lochhmastmCurve = parent->lochhmastmCurve;
auto& locccmasblCurve = parent->locccmasblCurve;
auto& locllmasblCurve = parent->locllmasblCurve;
auto& lochhmasblCurve = parent->lochhmasblCurve;
auto& locwavCurve = parent->locwavCurve;
auto& loclmasCurveblwav = parent->loclmasCurveblwav;
auto& loclmasCurvecolwav = parent->loclmasCurvecolwav;
auto& loclevwavCurve = parent->loclevwavCurve;
auto& locconwavCurve = parent->locconwavCurve;
auto& loccompwavCurve = parent->loccompwavCurve;
auto& loccomprewavCurve = parent->loccomprewavCurve;
auto& locedgwavCurve = parent->locedgwavCurve;
auto& locwavCurveden = parent->locwavCurveden;
for (int sp = 0; sp < (int)params.locallab.spots.size(); sp++) {
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
locRETtransCurve.Set(params.locallab.spots.at(sp).localTtranscurve);
loclhCurve.Set(params.locallab.spots.at(sp).LHcurve, LHutili);
lochhCurve.Set(params.locallab.spots.at(sp).HHcurve, HHutili);
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve, lcmasutili);
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve, llmasutili);
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve, lhmasutili);
lochhhmasCurve.Set(params.locallab.spots.at(sp).HHhmaskcurve, lhhmasutili);
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve, lcmasexputili);
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve, llmasexputili);
lochhmasexpCurve.Set(params.locallab.spots.at(sp).HHmaskexpcurve, lhmasexputili);
locccmasSHCurve.Set(params.locallab.spots.at(sp).CCmaskSHcurve, lcmasSHutili);
locllmasSHCurve.Set(params.locallab.spots.at(sp).LLmaskSHcurve, llmasSHutili);
lochhmasSHCurve.Set(params.locallab.spots.at(sp).HHmaskSHcurve, lhmasSHutili);
locccmasvibCurve.Set(params.locallab.spots.at(sp).CCmaskvibcurve, lcmasvibutili);
locllmasvibCurve.Set(params.locallab.spots.at(sp).LLmaskvibcurve, llmasvibutili);
lochhmasvibCurve.Set(params.locallab.spots.at(sp).HHmaskvibcurve, lhmasvibutili);
locccmascbCurve.Set(params.locallab.spots.at(sp).CCmaskcbcurve, lcmascbutili);
locllmascbCurve.Set(params.locallab.spots.at(sp).LLmaskcbcurve, llmascbutili);
lochhmascbCurve.Set(params.locallab.spots.at(sp).HHmaskcbcurve, lhmascbutili);
locccmasretiCurve.Set(params.locallab.spots.at(sp).CCmaskreticurve, lcmasretiutili);
locllmasretiCurve.Set(params.locallab.spots.at(sp).LLmaskreticurve, llmasretiutili);
lochhmasretiCurve.Set(params.locallab.spots.at(sp).HHmaskreticurve, lhmasretiutili);
locccmastmCurve.Set(params.locallab.spots.at(sp).CCmasktmcurve, lcmastmutili);
locllmastmCurve.Set(params.locallab.spots.at(sp).LLmasktmcurve, llmastmutili);
lochhmastmCurve.Set(params.locallab.spots.at(sp).HHmasktmcurve, lhmastmutili);
locccmasblCurve.Set(params.locallab.spots.at(sp).CCmaskblcurve, lcmasblutili);
locllmasblCurve.Set(params.locallab.spots.at(sp).LLmaskblcurve, llmasblutili);
lochhmasblCurve.Set(params.locallab.spots.at(sp).HHmaskblcurve, lhmasblutili);
loclmasCurveblwav.Set(params.locallab.spots.at(sp).LLmaskblcurvewav, lmasutiliblwav);
loclmasCurvecolwav.Set(params.locallab.spots.at(sp).LLmaskcolcurvewav, lmasutilicolwav);
locccmaslcCurve.Set(params.locallab.spots.at(sp).CCmasklccurve, lcmaslcutili);
locllmaslcCurve.Set(params.locallab.spots.at(sp).LLmasklccurve, llmaslcutili);
lochhmaslcCurve.Set(params.locallab.spots.at(sp).HHmasklccurve, lhmaslcutili);
locwavCurve.Set(params.locallab.spots.at(sp).locwavcurve, locwavutili);
locwavCurveden.Set(params.locallab.spots.at(sp).locwavcurveden, locwavdenutili);
loclevwavCurve.Set(params.locallab.spots.at(sp).loclevwavcurve, loclevwavutili);
locconwavCurve.Set(params.locallab.spots.at(sp).locconwavcurve, locconwavutili);
loccompwavCurve.Set(params.locallab.spots.at(sp).loccompwavcurve, loccompwavutili);
loccomprewavCurve.Set(params.locallab.spots.at(sp).loccomprewavcurve, loccomprewavutili);
locedgwavCurve.Set(params.locallab.spots.at(sp).locedgwavcurve, locedgwavutili);
locallutili = false;
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve2, sca);
localclutili = false;
CurveFactory::curveLocal(localclutili, params.locallab.spots.at(sp).clcurve, cllocalcurve2, sca);
locallcutili = false;
CurveFactory::curveLocal(locallcutili, params.locallab.spots.at(sp).lccurve, lclocalcurve2, sca);
localrgbutili = false;
CurveFactory::curveLocal(localrgbutili, params.locallab.spots.at(sp).rgbcurve, rgblocalcurve2, sca);
localcutili = false;
CurveFactory::curveCCLocal(localcutili, params.locallab.spots.at(sp).cccurve, cclocalcurve2, sca);
localexutili = false;
CurveFactory::curveexLocal(localexutili, params.locallab.spots.at(sp).excurve, exlocalcurve2, sca);
localmaskutili = false;
CurveFactory::curvemaskLocal(localmaskutili, params.locallab.spots.at(sp).Lmaskcurve, lmasklocalcurve2, sca);
localmaskexputili = false;
CurveFactory::curvemaskLocal(localmaskexputili, params.locallab.spots.at(sp).Lmaskexpcurve, lmaskexplocalcurve2, sca);
localmaskSHutili = false;
CurveFactory::curvemaskLocal(localmaskSHutili, params.locallab.spots.at(sp).LmaskSHcurve, lmaskSHlocalcurve2, sca);
localmaskvibutili = false;
CurveFactory::curvemaskLocal(localmaskvibutili, params.locallab.spots.at(sp).Lmaskvibcurve, lmaskviblocalcurve2, sca);
localmasktmutili = false;
CurveFactory::curvemaskLocal(localmasktmutili, params.locallab.spots.at(sp).Lmasktmcurve, lmasktmlocalcurve2, sca);
localmaskretiutili = false;
CurveFactory::curvemaskLocal(localmaskretiutili, params.locallab.spots.at(sp).Lmaskreticurve, lmaskretilocalcurve2, sca);
localmaskcbutili = false;
CurveFactory::curvemaskLocal(localmaskcbutili, params.locallab.spots.at(sp).Lmaskcbcurve, lmaskcblocalcurve2, sca);
localmasklcutili = false;
CurveFactory::curvemaskLocal(localmasklcutili, params.locallab.spots.at(sp).Lmasklccurve, lmasklclocalcurve2, sca);
localmaskblutili = false;
CurveFactory::curvemaskLocal(localmaskblutili, params.locallab.spots.at(sp).Lmaskblcurve, lmaskbllocalcurve2, sca);
const bool LHutili = loclhCurve.Set(params.locallab.spots.at(sp).LHcurve);
const bool HHutili = lochhCurve.Set(params.locallab.spots.at(sp).HHcurve);
const bool lcmasutili = locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve);
const bool llmasutili = locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve);
const bool lhmasutili = lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
const bool lhhmasutili = lochhhmasCurve.Set(params.locallab.spots.at(sp).HHhmaskcurve);
const bool lcmasexputili = locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
const bool llmasexputili = locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
const bool lhmasexputili = lochhmasexpCurve.Set(params.locallab.spots.at(sp).HHmaskexpcurve);
const bool lcmasSHutili = locccmasSHCurve.Set(params.locallab.spots.at(sp).CCmaskSHcurve);
const bool llmasSHutili = locllmasSHCurve.Set(params.locallab.spots.at(sp).LLmaskSHcurve);
const bool lhmasSHutili = lochhmasSHCurve.Set(params.locallab.spots.at(sp).HHmaskSHcurve);
const bool lcmasvibutili = locccmasvibCurve.Set(params.locallab.spots.at(sp).CCmaskvibcurve);
const bool llmasvibutili = locllmasvibCurve.Set(params.locallab.spots.at(sp).LLmaskvibcurve);
const bool lhmasvibutili = lochhmasvibCurve.Set(params.locallab.spots.at(sp).HHmaskvibcurve);
const bool lcmascbutili = locccmascbCurve.Set(params.locallab.spots.at(sp).CCmaskcbcurve);
const bool llmascbutili = locllmascbCurve.Set(params.locallab.spots.at(sp).LLmaskcbcurve);
const bool lhmascbutili = lochhmascbCurve.Set(params.locallab.spots.at(sp).HHmaskcbcurve);
const bool lcmasretiutili = locccmasretiCurve.Set(params.locallab.spots.at(sp).CCmaskreticurve);
const bool llmasretiutili = locllmasretiCurve.Set(params.locallab.spots.at(sp).LLmaskreticurve);
const bool lhmasretiutili = lochhmasretiCurve.Set(params.locallab.spots.at(sp).HHmaskreticurve);
const bool lcmastmutili = locccmastmCurve.Set(params.locallab.spots.at(sp).CCmasktmcurve);
const bool llmastmutili = locllmastmCurve.Set(params.locallab.spots.at(sp).LLmasktmcurve);
const bool lhmastmutili = lochhmastmCurve.Set(params.locallab.spots.at(sp).HHmasktmcurve);
const bool lcmasblutili = locccmasblCurve.Set(params.locallab.spots.at(sp).CCmaskblcurve);
const bool llmasblutili = locllmasblCurve.Set(params.locallab.spots.at(sp).LLmaskblcurve);
const bool lhmasblutili = lochhmasblCurve.Set(params.locallab.spots.at(sp).HHmaskblcurve);
const bool lmasutiliblwav = loclmasCurveblwav.Set(params.locallab.spots.at(sp).LLmaskblcurvewav);
const bool lmasutilicolwav = loclmasCurvecolwav.Set(params.locallab.spots.at(sp).LLmaskcolcurvewav);
const bool lcmaslcutili = locccmaslcCurve.Set(params.locallab.spots.at(sp).CCmasklccurve);
const bool llmaslcutili = locllmaslcCurve.Set(params.locallab.spots.at(sp).LLmasklccurve);
const bool lhmaslcutili = lochhmaslcCurve.Set(params.locallab.spots.at(sp).HHmasklccurve);
const bool locwavutili = locwavCurve.Set(params.locallab.spots.at(sp).locwavcurve);
const bool locwavdenutili = locwavCurveden.Set(params.locallab.spots.at(sp).locwavcurveden);
const bool loclevwavutili = loclevwavCurve.Set(params.locallab.spots.at(sp).loclevwavcurve);
const bool locconwavutili = locconwavCurve.Set(params.locallab.spots.at(sp).locconwavcurve);
const bool loccompwavutili = loccompwavCurve.Set(params.locallab.spots.at(sp).loccompwavcurve);
const bool loccomprewavutili = loccomprewavCurve.Set(params.locallab.spots.at(sp).loccomprewavcurve);
const bool locedgwavutili = locedgwavCurve.Set(params.locallab.spots.at(sp).locedgwavcurve);
const bool locallutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).llcurve, lllocalcurve2, skip);
const bool localclutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).clcurve, cllocalcurve2, skip);
const bool locallcutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).lccurve, lclocalcurve2, skip);
const bool localrgbutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).rgbcurve, rgblocalcurve2, skip);
const bool localcutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).cccurve, cclocalcurve2, skip);
const bool localexutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).excurve, exlocalcurve2, skip);
const bool localmaskutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).Lmaskcurve, lmasklocalcurve2, skip);
const bool localmaskexputili = CurveFactory::curveLocal(params.locallab.spots.at(sp).Lmaskexpcurve, lmaskexplocalcurve2, skip);
const bool localmaskSHutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).LmaskSHcurve, lmaskSHlocalcurve2, skip);
const bool localmaskvibutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).Lmaskvibcurve, lmaskviblocalcurve2, skip);
const bool localmasktmutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).Lmasktmcurve, lmasktmlocalcurve2, skip);
const bool localmaskretiutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).Lmaskreticurve, lmaskretilocalcurve2, skip);
const bool localmaskcbutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).Lmaskcbcurve, lmaskcblocalcurve2, skip);
const bool localmasklcutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).Lmasklccurve, lmasklclocalcurve2, skip);
const bool localmaskblutili = CurveFactory::curveLocal(params.locallab.spots.at(sp).Lmaskblcurve, lmaskbllocalcurve2, skip);
double ecomp = params.locallab.spots.at(sp).expcomp;
double black = params.locallab.spots.at(sp).black;
@@ -1082,8 +1003,6 @@ void Crop::update(int todo)
double cont = params.locallab.spots.at(sp).contrast;
double huere, chromare, lumare, huerefblu, chromarefblu, lumarefblu, sobelre;
int lastsav;
float avge;
huerefblu = parent->huerefblurs[sp];
chromarefblu = parent->chromarefblurs[sp];
lumarefblu = parent->lumarefblurs[sp];
@@ -1091,9 +1010,9 @@ void Crop::update(int todo)
chromare = parent->chromarefs[sp];
lumare = parent->lumarefs[sp];
sobelre = parent->sobelrefs[sp];
avge = parent->avgs[sp];
const float avge = parent->avgs[sp];
lastsav = parent->lastsavrests[sp];
int lastsav = parent->lastsavrests[sp];
float minCD;
float maxCD;
@@ -1105,10 +1024,10 @@ void Crop::update(int todo)
float Tmax;
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lumare,
hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, avge,
sca);
skip);
// Locallab mask are only shown for selected spot
if (sp == params.locallab.selspot) {
parent->ipf.Lab_Local(1, sp, (float**)shbuffer, labnCrop, labnCrop, reservCrop, lastorigCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, locRETtransCurve,
parent->ipf.Lab_Local(1, sp, (float**)shbuffer, labnCrop, labnCrop, reservCrop.get(), lastorigCrop.get(), cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, locRETtransCurve,
lllocalcurve2,locallutili,
cllocalcurve2, localclutili,
lclocalcurve2, locallcutili,
@@ -1144,7 +1063,7 @@ void Crop::update(int todo)
parent->previewDeltaE, parent->locallColorMask, parent->locallColorMaskinv, parent->locallExpMask, parent->locallExpMaskinv, parent->locallSHMask, parent->locallSHMaskinv, parent->locallvibMask, parent->localllcMask, parent->locallsharMask, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask,
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
} else {
parent->ipf.Lab_Local(1, sp, (float**)shbuffer, labnCrop, labnCrop, reservCrop, lastorigCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, locRETtransCurve,
parent->ipf.Lab_Local(1, sp, (float**)shbuffer, labnCrop, labnCrop, reservCrop.get(), lastorigCrop.get(), cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, locRETtransCurve,
lllocalcurve2,locallutili,
cllocalcurve2, localclutili,
lclocalcurve2, locallcutili,
@@ -1180,65 +1099,67 @@ void Crop::update(int todo)
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
}
lastorigCrop->CopyFrom(labnCrop);
lllocalcurve2.clear();
lclocalcurve2.clear();
cllocalcurve2.clear();
lightCurveloc2.clear();
rgblocalcurve2.clear();
cclocalcurve2.clear();
exlocalcurve2.clear();
lmasklocalcurve2.clear();
lmaskexplocalcurve2.clear();
lmaskSHlocalcurve2.clear();
lmaskviblocalcurve2.clear();
lmasktmlocalcurve2.clear();
lmaskretilocalcurve2.clear();
lmaskcblocalcurve2.clear();
lmaskbllocalcurve2.clear();
hltonecurveloc2.clear();
shtonecurveloc2.clear();
tonecurveloc2.clear();
locRETgainCurve.Reset();
locRETtransCurve.Reset();
loclhCurve.Reset();
lochhCurve.Reset();
locccmasCurve.Reset();
locllmasCurve.Reset();
lochhmasCurve.Reset();
lochhhmasCurve.Reset();
locllmasexpCurve.Reset();
locccmasexpCurve.Reset();
lochhmasexpCurve.Reset();
locllmasSHCurve.Reset();
locccmasSHCurve.Reset();
lochhmasSHCurve.Reset();
locllmasvibCurve.Reset();
locccmasvibCurve.Reset();
lochhmasvibCurve.Reset();
locllmascbCurve.Reset();
locccmascbCurve.Reset();
lochhmascbCurve.Reset();
locllmasretiCurve.Reset();
locccmasretiCurve.Reset();
lochhmasretiCurve.Reset();
locllmastmCurve.Reset();
locccmastmCurve.Reset();
lochhmastmCurve.Reset();
locllmasblCurve.Reset();
locccmasblCurve.Reset();
lochhmasblCurve.Reset();
locllmaslcCurve.Reset();
locccmaslcCurve.Reset();
lochhmaslcCurve.Reset();
locwavCurve.Reset();
loclevwavCurve.Reset();
locconwavCurve.Reset();
locconwavCurve.Reset();
locwavCurveden.Reset();
loclmasCurveblwav.Reset();
loclmasCurvecolwav.Reset();
if (sp + 1u < params.locallab.spots.size()) {
// do not do this for last spot as it is not needed anymore
lastorigCrop->CopyFrom(labnCrop);
lllocalcurve2.clear();
lclocalcurve2.clear();
cllocalcurve2.clear();
lightCurveloc2.clear();
rgblocalcurve2.clear();
cclocalcurve2.clear();
exlocalcurve2.clear();
lmasklocalcurve2.clear();
lmaskexplocalcurve2.clear();
lmaskSHlocalcurve2.clear();
lmaskviblocalcurve2.clear();
lmasktmlocalcurve2.clear();
lmaskretilocalcurve2.clear();
lmaskcblocalcurve2.clear();
lmaskbllocalcurve2.clear();
hltonecurveloc2.clear();
shtonecurveloc2.clear();
tonecurveloc2.clear();
locRETgainCurve.Reset();
locRETtransCurve.Reset();
loclhCurve.Reset();
lochhCurve.Reset();
locccmasCurve.Reset();
locllmasCurve.Reset();
lochhmasCurve.Reset();
lochhhmasCurve.Reset();
locllmasexpCurve.Reset();
locccmasexpCurve.Reset();
lochhmasexpCurve.Reset();
locllmasSHCurve.Reset();
locccmasSHCurve.Reset();
lochhmasSHCurve.Reset();
locllmasvibCurve.Reset();
locccmasvibCurve.Reset();
lochhmasvibCurve.Reset();
locllmascbCurve.Reset();
locccmascbCurve.Reset();
lochhmascbCurve.Reset();
locllmasretiCurve.Reset();
locccmasretiCurve.Reset();
lochhmasretiCurve.Reset();
locllmastmCurve.Reset();
locccmastmCurve.Reset();
lochhmastmCurve.Reset();
locllmasblCurve.Reset();
locccmasblCurve.Reset();
lochhmasblCurve.Reset();
locllmaslcCurve.Reset();
locccmaslcCurve.Reset();
lochhmaslcCurve.Reset();
locwavCurve.Reset();
loclevwavCurve.Reset();
locconwavCurve.Reset();
locconwavCurve.Reset();
locwavCurveden.Reset();
loclmasCurveblwav.Reset();
loclmasCurvecolwav.Reset();
}
if (skip <= 2) {
Glib::usleep(settings->cropsleep); //wait to avoid crash when crop 100% and move window
@@ -1246,7 +1167,7 @@ void Crop::update(int todo)
}
}
// int moderetinex;
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);
parent->ipf.labColorCorrectionRegions(labnCrop);
@@ -1635,22 +1556,6 @@ void Crop::freeAll()
labnCrop = nullptr;
}
if (reservCrop) {
delete reservCrop;
reservCrop = nullptr;
}
if (lastorigCrop) {
delete lastorigCrop;
lastorigCrop = nullptr;
}
/* if (lablocCrop ) {
delete lablocCrop;
lablocCrop = NULL;
}
*/
if (cropImg) {
delete cropImg;
cropImg = nullptr;
@@ -1826,24 +1731,6 @@ bool Crop::setCropSizes(int rcx, int rcy, int rcw, int rch, int skip, bool inter
labnCrop = new LabImage(cropw, croph);
if (reservCrop) {
delete reservCrop; // labnCrop can't be resized
}
reservCrop = new LabImage(cropw, croph);
if (lastorigCrop) {
delete lastorigCrop; // labnCrop can't be resized
}
lastorigCrop = new LabImage(cropw, croph);
/* if (lablocCrop) {
delete lablocCrop; // labnCrop can't be resized
}
lablocCrop = new LabImage (cropw, croph);
*/
if (!cropImg) {
cropImg = new Image8;
}