Merge of new Locallab GUI with existing Locallab engine
New Locallab GUI has now impacts on image Bug fixes: - Some tools GUI were not updated accordingly if they were not firstly activated - Image was not activated if a control spot was deleted - Blur & Noise GUI was not updated according to blurMethod combobox
This commit is contained in:
@@ -890,894 +890,51 @@ void Crop::update(int todo)
|
||||
// bool tyty = false;
|
||||
int maxspot = settings->nspot + 1;
|
||||
|
||||
// TODO Locallab
|
||||
/*
|
||||
if (needslocal) {
|
||||
// if (tyty ) {
|
||||
|
||||
std::string mdfive = getMD5(parent->imgsrc->getFileName());
|
||||
|
||||
Glib::ustring pop = options.cacheBaseDir + "/mip/";
|
||||
|
||||
Glib::ustring datalab;
|
||||
|
||||
if (options.mip == MI_opt) {
|
||||
datalab = pop + Glib::path_get_basename(parent->imgsrc->getFileName() + "." + mdfive + ".mip");
|
||||
}
|
||||
|
||||
if (options.mip == MI_prev) {
|
||||
datalab = parent->imgsrc->getFileName() + ".mip";
|
||||
}
|
||||
|
||||
|
||||
ifstream fich(datalab, ios::in);
|
||||
|
||||
if (fich && parent->versionmip != 0) {//to avoid crash in some cases
|
||||
// int **dataspotd;
|
||||
|
||||
int realspot = params.locallab.nbspot;
|
||||
// bool tata = true;
|
||||
|
||||
for (int sp = 1; sp < maxspot; sp++) {
|
||||
if (sp != realspot) {
|
||||
|
||||
params.locallab.circrad = parent->circrads[sp] ;
|
||||
params.locallab.locX = parent->locx[sp] ;
|
||||
params.locallab.locY = parent->locy[sp];
|
||||
params.locallab.locYT = parent->locyt[sp];
|
||||
params.locallab.locXL = parent->locxl[sp];
|
||||
params.locallab.centerX = parent->centerx[sp];
|
||||
params.locallab.centerY = parent->centery[sp];
|
||||
params.locallab.lightness = parent->lights[sp];
|
||||
params.locallab.contrast = parent->contrs[sp];
|
||||
params.locallab.chroma = parent->chroms[sp];
|
||||
params.locallab.sensi = parent->sensis[sp];
|
||||
params.locallab.transit = parent->transits[sp];
|
||||
|
||||
if (parent->inverss[sp] == 0) {
|
||||
params.locallab.invers = false;
|
||||
} else {
|
||||
params.locallab.invers = true;
|
||||
}
|
||||
|
||||
if (parent->smeths[sp] == 0) {
|
||||
params.locallab.Smethod = "IND" ;
|
||||
} else if (parent->smeths[sp] == 1) {
|
||||
params.locallab.Smethod = "SYM" ;
|
||||
} else if (parent->smeths[sp] == 2) {
|
||||
params.locallab.Smethod = "INDSL";
|
||||
} else if (parent->smeths[sp] == 3) {
|
||||
params.locallab.Smethod = "SYMSL";
|
||||
}
|
||||
|
||||
params.locallab.radius = parent->radiuss[sp];
|
||||
params.locallab.strength = parent->strengths[sp];
|
||||
params.locallab.sensibn = parent->sensibns[sp];
|
||||
|
||||
if (parent->inversrads[sp] == 0) {
|
||||
params.locallab.inversrad = false;
|
||||
} else {
|
||||
params.locallab.inversrad = true;
|
||||
}
|
||||
|
||||
params.locallab.str = parent->strs[sp];
|
||||
params.locallab.chrrt = parent->chrrts[sp];
|
||||
params.locallab.neigh = parent->neighs[sp];
|
||||
params.locallab.vart = parent->varts[sp];
|
||||
params.locallab.sensih = parent->sensihs[sp];
|
||||
|
||||
if (parent->inversrets[sp] == 0) {
|
||||
params.locallab.inversret = false;
|
||||
} else {
|
||||
params.locallab.inversret = true;
|
||||
}
|
||||
|
||||
if (parent->retinexs[sp] == 0) {
|
||||
params.locallab.retinexMethod = "low" ;
|
||||
} else if (parent->retinexs[sp] == 1) {
|
||||
params.locallab.retinexMethod = "uni" ;
|
||||
} else if (parent->retinexs[sp] == 2) {
|
||||
params.locallab.retinexMethod = "high";
|
||||
}
|
||||
|
||||
params.locallab.sharradius = parent->sharradiuss[sp];
|
||||
params.locallab.sharamount = parent->sharamounts[sp];
|
||||
params.locallab.shardamping = parent->shardampings[sp];
|
||||
params.locallab.shariter = parent->shariters[sp];
|
||||
params.locallab.sensisha = parent->sensishas[sp];
|
||||
|
||||
if (parent->inversshas[sp] == 0) {
|
||||
params.locallab.inverssha = false;
|
||||
} else {
|
||||
params.locallab.inverssha = true;
|
||||
}
|
||||
|
||||
if (parent->qualitys[sp] == 0) {
|
||||
params.locallab.qualityMethod = "std" ;
|
||||
} else if (parent->qualitys[sp] == 1) {
|
||||
params.locallab.qualityMethod = "enh" ;
|
||||
} else if (parent->qualitys[sp] == 2) {
|
||||
params.locallab.qualityMethod = "enhden" ;
|
||||
}
|
||||
|
||||
params.locallab.thres = parent->thress[sp];
|
||||
params.locallab.proxi = parent->proxis[sp];
|
||||
|
||||
params.locallab.noiselumf = parent->noiselumfs[sp];
|
||||
params.locallab.noiselumc = parent->noiselumcs[sp];
|
||||
params.locallab.noisechrof = parent->noisechrofs[sp];
|
||||
params.locallab.noisechroc = parent->noisechrocs[sp];
|
||||
params.locallab.mult[0] = parent->mult0s[sp];
|
||||
params.locallab.mult[1] = parent->mult1s[sp];
|
||||
params.locallab.mult[2] = parent->mult2s[sp];
|
||||
params.locallab.mult[3] = parent->mult3s[sp];
|
||||
params.locallab.mult[4] = parent->mult4s[sp];
|
||||
params.locallab.threshold = parent->thresholds[sp];
|
||||
params.locallab.sensicb = parent->sensicbs[sp];
|
||||
|
||||
if (parent->activlums[sp] == 0) {
|
||||
params.locallab.activlum = false;
|
||||
} else {
|
||||
params.locallab.activlum = true;
|
||||
}
|
||||
|
||||
params.locallab.stren = parent->strens[sp];
|
||||
params.locallab.gamma = parent->gammas[sp];
|
||||
params.locallab.estop = parent->estops[sp];
|
||||
params.locallab.scaltm = parent->scaltms[sp];
|
||||
params.locallab.rewei = parent->reweis[sp];
|
||||
params.locallab.sensitm = parent->sensitms[sp];
|
||||
params.locallab.retrab = parent->retrabs[sp];
|
||||
|
||||
if (parent->curvactivs[sp] == 0) {
|
||||
params.locallab.curvactiv = false;
|
||||
} else {
|
||||
params.locallab.curvactiv = true;
|
||||
}
|
||||
|
||||
if (parent->qualitycurves[sp] == 0) {
|
||||
params.locallab.qualitycurveMethod = "none" ;
|
||||
} else if (parent->qualitycurves[sp] == 1) {
|
||||
params.locallab.qualitycurveMethod = "std" ;
|
||||
} else if (parent->qualitycurves[sp] == 2) {
|
||||
params.locallab.qualitycurveMethod = "enh" ;
|
||||
}
|
||||
|
||||
params.locallab.sensiv = parent->sensivs[sp];
|
||||
params.locallab.pastels = parent->pastels[sp];
|
||||
params.locallab.saturated = parent->saturateds[sp];
|
||||
|
||||
if (parent->protectskinss[sp] == 0) {
|
||||
params.locallab.protectskins = false;
|
||||
} else {
|
||||
params.locallab.protectskins = true;
|
||||
}
|
||||
|
||||
if (parent->avoidcolorshifts[sp] == 0) {
|
||||
params.locallab.avoidcolorshift = false;
|
||||
} else {
|
||||
params.locallab.avoidcolorshift = true;
|
||||
}
|
||||
|
||||
if (parent->pastsattogs[sp] == 0) {
|
||||
params.locallab.pastsattog = false;
|
||||
} else {
|
||||
params.locallab.pastsattog = true;
|
||||
}
|
||||
|
||||
|
||||
params.locallab.expcomp = parent->expcomps[sp];
|
||||
params.locallab.black = parent->blacks[sp];
|
||||
params.locallab.hlcompr = parent->hlcomprs[sp];
|
||||
params.locallab.hlcomprthresh = parent->hlcomprthreshs[sp];
|
||||
params.locallab.shcompr = parent->shcomprs[sp];
|
||||
params.locallab.sensiex = parent->sensiexs[sp];
|
||||
|
||||
params.locallab.centerXbuf = parent->centerxbufs[sp];
|
||||
params.locallab.centerYbuf = parent->centerybufs[sp];
|
||||
params.locallab.adjblur = parent->adjblurs[sp];
|
||||
|
||||
if (parent->cutpasts[sp] == 0) {
|
||||
params.locallab.cutpast = false;
|
||||
} else {
|
||||
params.locallab.cutpast = true;
|
||||
}
|
||||
|
||||
params.locallab.chromacbdl = parent->chromacbdls[sp];
|
||||
|
||||
if (parent->lastdusts[sp] == 0) {
|
||||
params.locallab.lastdust = false;
|
||||
} else {
|
||||
params.locallab.lastdust = true;
|
||||
}
|
||||
|
||||
if (parent->blurmets[sp] == 0) {
|
||||
params.locallab.blurMethod = "norm" ;
|
||||
} else if (parent->blurmets[sp] == 1) {
|
||||
params.locallab.blurMethod = "inv" ;
|
||||
} else if (parent->blurmets[sp] == 2) {
|
||||
params.locallab.blurMethod = "enh" ;
|
||||
}
|
||||
|
||||
if (parent->dustmets[sp] == 0) {
|
||||
params.locallab.dustMethod = "cop" ;
|
||||
} else if (parent->dustmets[sp] == 1) {
|
||||
params.locallab.dustMethod = "mov" ;
|
||||
} else if (parent->dustmets[sp] == 2) {
|
||||
params.locallab.dustMethod = "pas" ;
|
||||
}
|
||||
|
||||
if (parent->exclumets[sp] == 0) {
|
||||
params.locallab.Exclumethod = "norm" ;
|
||||
} else if (parent->exclumets[sp] == 1) {
|
||||
params.locallab.Exclumethod = "exc" ;
|
||||
}
|
||||
|
||||
params.locallab.sensiexclu = parent->sensiexclus[sp];
|
||||
params.locallab.struc = parent->strucs[sp];
|
||||
params.locallab.warm = parent->warms[sp];
|
||||
params.locallab.noiselumdetail = parent->noiselumdetails[sp];
|
||||
params.locallab.noisechrodetail = parent->noisechrodetails[sp];
|
||||
params.locallab.sensiden = parent->sensidens[sp];
|
||||
|
||||
if (parent->expdenois[sp] == 0) {
|
||||
params.locallab.expdenoi = false;
|
||||
} else {
|
||||
params.locallab.expdenoi = true;
|
||||
}
|
||||
|
||||
if (parent->expcolors[sp] == 0) {
|
||||
params.locallab.expcolor = false;
|
||||
} else {
|
||||
params.locallab.expcolor = true;
|
||||
}
|
||||
|
||||
if (parent->expvibrances[sp] == 0) {
|
||||
params.locallab.expvibrance = false;
|
||||
} else {
|
||||
params.locallab.expvibrance = true;
|
||||
}
|
||||
|
||||
if (parent->expblurs[sp] == 0) {
|
||||
params.locallab.expblur = false;
|
||||
} else {
|
||||
params.locallab.expblur = true;
|
||||
}
|
||||
|
||||
if (parent->exptonemaps[sp] == 0) {
|
||||
params.locallab.exptonemap = false;
|
||||
} else {
|
||||
params.locallab.exptonemap = true;
|
||||
}
|
||||
|
||||
if (parent->expretis[sp] == 0) {
|
||||
params.locallab.expreti = false;
|
||||
} else {
|
||||
params.locallab.expreti = true;
|
||||
}
|
||||
|
||||
if (parent->expsharps[sp] == 0) {
|
||||
params.locallab.expsharp = false;
|
||||
} else {
|
||||
params.locallab.expsharp = true;
|
||||
}
|
||||
|
||||
if (parent->expcbdls[sp] == 0) {
|
||||
params.locallab.expcbdl = false;
|
||||
} else {
|
||||
params.locallab.expcbdl = true;
|
||||
}
|
||||
|
||||
if (parent->expexposes[sp] == 0) {
|
||||
params.locallab.expexpose = false;
|
||||
} else {
|
||||
params.locallab.expexpose = true;
|
||||
}
|
||||
|
||||
params.locallab.bilateral = parent->bilaterals[sp];
|
||||
params.locallab.noiselequal = parent->noiselequals[sp];
|
||||
|
||||
if (parent->shapemets[sp] == 0) {
|
||||
params.locallab.shapemethod = "ELI" ;
|
||||
} else if (parent->shapemets[sp] == 1) {
|
||||
params.locallab.shapemethod = "RECT" ;
|
||||
}
|
||||
|
||||
std::vector<double> cretie;
|
||||
|
||||
for (int j = 0; j < parent->sizeretics[sp]; j++) {
|
||||
cretie.push_back((double)(parent->reticurvs[sp * 500 + j]) / 1000.);
|
||||
}
|
||||
|
||||
params.locallab.localTgaincurve.clear();
|
||||
params.locallab.localTgaincurve = cretie;
|
||||
|
||||
std::vector<double> llc;
|
||||
|
||||
for (int j = 0; j < parent->sizellcs[sp]; j++) {
|
||||
llc.push_back((double)(parent->llcurvs[sp * 500 + j]) / 1000.);
|
||||
}
|
||||
|
||||
params.locallab.llcurve.clear();
|
||||
params.locallab.llcurve = llc;
|
||||
|
||||
std::vector<double> ccc;
|
||||
|
||||
for (int j = 0; j < parent->sizecccs[sp]; j++) {
|
||||
ccc.push_back((double)(parent->cccurvs[sp * 500 + j]) / 1000.);
|
||||
}
|
||||
|
||||
params.locallab.cccurve.clear();
|
||||
params.locallab.cccurve = ccc;
|
||||
|
||||
std::vector<double> lhc;
|
||||
|
||||
for (int j = 0; j < parent->sizelhcs[sp]; j++) {
|
||||
lhc.push_back((double)(parent->lhcurvs[sp * 500 + j]) / 1000.);
|
||||
}
|
||||
|
||||
params.locallab.LHcurve.clear();
|
||||
params.locallab.LHcurve = lhc;
|
||||
|
||||
std::vector<double> hhc;
|
||||
|
||||
for (int j = 0; j < parent->sizehhcs[sp]; j++) {
|
||||
hhc.push_back((double)(parent->hhcurvs[sp * 500 + j]) / 1000.);
|
||||
}
|
||||
|
||||
params.locallab.HHcurve.clear();
|
||||
params.locallab.HHcurve = hhc;
|
||||
|
||||
std::vector<double> skc;
|
||||
|
||||
for (int j = 0; j < parent->sizeskintonecurves[sp]; j++) {
|
||||
skc.push_back((double)(parent->skintonescurves[sp * 500 + j]) / 1000.);
|
||||
}
|
||||
|
||||
params.locallab.skintonescurve.clear();
|
||||
params.locallab.skintonescurve = skc;
|
||||
|
||||
params.locallab.psthreshold.setValues(parent->psthresholds[sp * 500], parent->psthresholds[sp * 500 + 1]);
|
||||
|
||||
std::vector<double> sex;
|
||||
|
||||
for (int j = 0; j < parent->sizeexcurves[sp]; j++) {
|
||||
sex.push_back((double)(parent->excurves[sp * 500 + j]) / 1000.);
|
||||
}
|
||||
|
||||
params.locallab.excurve.clear();
|
||||
params.locallab.excurve = sex;
|
||||
|
||||
|
||||
params.locallab.getCurves(locRETgainCurve, locRETgainCurverab, loclhCurve, lochhCurve, LHutili, HHutili);
|
||||
locallutili = false;
|
||||
CurveFactory::curveLocal(locallutili, params.locallab.llcurve, lllocalcurve2, sca);
|
||||
localcutili = false;
|
||||
CurveFactory::curveCCLocal(localcutili, params.locallab.cccurve, cclocalcurve2, sca);
|
||||
//localskutili = false;
|
||||
CurveFactory::curveskLocal(localskutili, params.locallab.skintonescurve, sklocalcurve2, sca);
|
||||
CurveFactory::curveexLocal(localexutili, params.locallab.excurve, exlocalcurve2, sca);
|
||||
|
||||
|
||||
double ecomp = params.locallab.expcomp;
|
||||
double black = params.locallab.black;
|
||||
double hlcompr = params.locallab.hlcompr;
|
||||
double hlcomprthresh = params.locallab.hlcomprthresh;
|
||||
double shcompr = params.locallab.shcompr;
|
||||
double br = params.locallab.lightness;
|
||||
|
||||
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br,
|
||||
hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
|
||||
sca);
|
||||
|
||||
params.locallab.huerefblur = (parent->huerefblurs[sp]) / 100.f;
|
||||
params.locallab.hueref = (parent->huerefs[sp]) / 100.f;
|
||||
params.locallab.chromaref = parent->chromarefs[sp];
|
||||
params.locallab.lumaref = parent->lumarefs[sp];
|
||||
params.locallab.sobelref = parent->sobelrefs[sp];
|
||||
|
||||
parent->ipf.Lab_Local(1, maxspot, sp, parent->huerefs, parent->sobelrefs, parent->centerx, parent->centery, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
|
||||
loclhCurve, lochhCurve, LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, params.locallab.huerefblur, params.locallab.hueref, params.locallab.chromaref, params.locallab.lumaref, params.locallab.sobelref);
|
||||
lllocalcurve2.clear();
|
||||
cclocalcurve2.clear();
|
||||
sklocalcurve2.clear();
|
||||
exlocalcurve2.clear();
|
||||
|
||||
if (skip <= 2) {
|
||||
usleep(settings->cropsleep); //wait to avoid crash when crop 100% and move window
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int sp ;
|
||||
sp = realspot;
|
||||
locallutili = false;
|
||||
|
||||
parent->sps[sp] = sp;
|
||||
parent->circrads[sp] = params.locallab.circrad = parent->circrads[0];
|
||||
parent->locx[sp] = params.locallab.locX = parent->locx[0];
|
||||
parent->locy[sp] = params.locallab.locY = parent->locy[0];
|
||||
parent->locyt[sp] = params.locallab.locYT = parent->locyt[0];
|
||||
parent->locxl[sp] = params.locallab.locXL = parent->locxl[0];
|
||||
parent->centerx[sp] = params.locallab.centerX = parent->centerx[0];
|
||||
parent->centery[sp] = params.locallab.centerY = parent->centery[0];
|
||||
parent->lights[sp] = params.locallab.lightness = parent->lights[0];
|
||||
parent->contrs[sp] = params.locallab.contrast = parent->contrs[0];
|
||||
parent->chroms[sp] = params.locallab.chroma = parent->chroms[0];
|
||||
parent->sensis[sp] = params.locallab.sensi = parent->sensis[0];
|
||||
parent->transits[sp] = params.locallab.transit = parent->transits[0];
|
||||
|
||||
if (parent->inverss[0] == 0) {
|
||||
params.locallab.invers = false;
|
||||
parent->inverss[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.invers = true;
|
||||
parent->inverss[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->smeths[0] == 0) {
|
||||
params.locallab.Smethod = "IND" ;
|
||||
parent->smeths[sp] = 0;
|
||||
|
||||
} else if (parent->smeths[0] == 1) {
|
||||
params.locallab.Smethod = "SYM" ;
|
||||
parent->smeths[sp] = 1;
|
||||
|
||||
} else if (parent->smeths[0] == 2) {
|
||||
params.locallab.Smethod = "INDSL";
|
||||
parent->smeths[2] = 0;
|
||||
|
||||
|
||||
} else if (parent->smeths[0] == 3) {
|
||||
params.locallab.Smethod = "SYMSL";
|
||||
parent->smeths[sp] = 3;
|
||||
|
||||
}
|
||||
|
||||
params.locallab.radius = parent->radiuss[0];
|
||||
params.locallab.strength = parent->strengths[0];
|
||||
params.locallab.sensibn = parent->sensibns[0];
|
||||
|
||||
parent->radiuss[sp] = params.locallab.radius;
|
||||
parent->strengths[sp] = params.locallab.strength;
|
||||
parent->sensibns[sp] = params.locallab.sensibn;
|
||||
|
||||
if (parent->inversrads[0] == 0) {
|
||||
params.locallab.inversrad = false;
|
||||
parent->inversrads[sp] = 0;
|
||||
} else {
|
||||
params.locallab.inversrad = true;
|
||||
parent->inversrads[sp] = 1;
|
||||
}
|
||||
|
||||
parent->strs[sp] = params.locallab.str = parent->strs[0];
|
||||
parent->chrrts[sp] = params.locallab.chrrt = parent->chrrts[0];
|
||||
parent->neighs[sp] = params.locallab.neigh = parent->neighs[0];
|
||||
parent->varts[sp] = params.locallab.vart = parent->varts[0];
|
||||
parent->sensihs[sp] = params.locallab.sensih = parent->sensihs[0];
|
||||
|
||||
if (parent->inversrets[0] == 0) {
|
||||
params.locallab.inversret = false;
|
||||
parent->inversrets[sp] = 0;
|
||||
} else {
|
||||
params.locallab.inversret = true;
|
||||
parent->inversrets[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->retinexs[sp] == 0) {
|
||||
params.locallab.retinexMethod = "low" ;
|
||||
parent->retinexs[sp] = 0;
|
||||
} else if (parent->retinexs[sp] == 1) {
|
||||
params.locallab.retinexMethod = "uni" ;
|
||||
parent->retinexs[sp] = 1;
|
||||
|
||||
} else if (parent->retinexs[sp] == 2) {
|
||||
params.locallab.retinexMethod = "high";
|
||||
parent->retinexs[sp] = 2;
|
||||
|
||||
}
|
||||
|
||||
parent->sharradiuss[sp] = params.locallab.sharradius = parent->sharradiuss[0];
|
||||
|
||||
parent->sharamounts[sp] = params.locallab.sharamount = parent->sharamounts[0];
|
||||
parent->shardampings[sp] = params.locallab.shardamping = parent->shardampings[0];
|
||||
parent->shariters[sp] = params.locallab.shariter = parent->shariters[0];
|
||||
parent->sensishas[sp] = params.locallab.sensisha = parent->sensishas[0];
|
||||
|
||||
if (parent->inversshas[0] == 0) {
|
||||
params.locallab.inverssha = false;
|
||||
parent->inversshas[sp] = 0;
|
||||
} else {
|
||||
params.locallab.inverssha = true;
|
||||
parent->inversshas[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->qualitys[sp] == 0) {
|
||||
params.locallab.qualityMethod = "std" ;
|
||||
parent->qualitys[sp] = 0;
|
||||
} else if (parent->qualitys[sp] == 1) {
|
||||
params.locallab.qualityMethod = "enh" ;
|
||||
parent->qualitys[sp] = 1;
|
||||
} else if (parent->qualitys[sp] == 2) {
|
||||
params.locallab.qualityMethod = "enhden" ;
|
||||
parent->qualitys[sp] = 2;
|
||||
}
|
||||
|
||||
parent->thress[sp] = params.locallab.thres = parent->thress[0];
|
||||
parent->proxis[sp] = params.locallab.proxi = parent->proxis[0];
|
||||
|
||||
parent->noiselumfs[sp] = params.locallab.noiselumf = parent->noiselumfs[0];
|
||||
parent->noiselumcs[sp] = params.locallab.noiselumc = parent->noiselumcs[0];
|
||||
parent->noisechrofs[sp] = params.locallab.noisechrof = parent->noisechrofs[0];
|
||||
parent->noisechrocs[sp] = params.locallab.noisechroc = parent->noisechrocs[0];
|
||||
parent->mult0s[sp] = params.locallab.mult[0] = parent->mult0s[0];
|
||||
parent->mult1s[sp] = params.locallab.mult[1] = parent->mult1s[0];
|
||||
parent->mult2s[sp] = params.locallab.mult[2] = parent->mult2s[0];
|
||||
parent->mult3s[sp] = params.locallab.mult[3] = parent->mult3s[0];
|
||||
parent->mult4s[sp] = params.locallab.mult[4] = parent->mult4s[0];
|
||||
parent->thresholds[sp] = params.locallab.threshold = parent->thresholds[0];
|
||||
parent->sensicbs[sp] = params.locallab.sensicb = parent->sensicbs[0];
|
||||
|
||||
if (parent->activlums[0] == 0) {
|
||||
params.locallab.activlum = false;
|
||||
parent->activlums[sp] = 0;
|
||||
} else {
|
||||
params.locallab.activlum = true;
|
||||
parent->activlums[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
parent->strens[sp] = params.locallab.stren = parent->strens[0];
|
||||
parent->gammas[sp] = params.locallab.gamma = parent->gammas[0];
|
||||
parent->estops[sp] = params.locallab.estop = parent->estops[0];
|
||||
parent->scaltms[sp] = params.locallab.scaltm = parent->scaltms[0];
|
||||
parent->reweis[sp] = params.locallab.rewei = parent->reweis[0];
|
||||
parent->sensitms[sp] = params.locallab.sensitm = parent->sensitms[0];
|
||||
parent->retrabs[sp] = params.locallab.retrab = parent->retrabs[0];
|
||||
|
||||
if (parent->curvactivs[0] == 0) {
|
||||
params.locallab.curvactiv = false;
|
||||
parent->curvactivs[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.curvactiv = true;
|
||||
parent->curvactivs[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->qualitycurves[sp] == 0) {
|
||||
params.locallab.qualitycurveMethod = "none" ;
|
||||
parent->qualitycurves[sp] = 0;
|
||||
} else if (parent->qualitycurves[sp] == 1) {
|
||||
params.locallab.qualitycurveMethod = "std" ;
|
||||
parent->qualitycurves[sp] = 1;
|
||||
} else if (parent->qualitycurves[sp] == 2) {
|
||||
params.locallab.qualitycurveMethod = "enh" ;
|
||||
parent->qualitycurves[sp] = 2;
|
||||
}
|
||||
|
||||
parent->sensivs[sp] = params.locallab.sensiv = parent->sensivs[0];
|
||||
parent->pastels[sp] = params.locallab.pastels = parent->pastels[0];
|
||||
parent->saturateds[sp] = params.locallab.saturated = parent->saturateds[0];
|
||||
|
||||
if (parent->protectskinss[0] == 0) {
|
||||
params.locallab.protectskins = false;
|
||||
parent->protectskinss[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.protectskins = true;
|
||||
parent->protectskinss[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->avoidcolorshifts[0] == 0) {
|
||||
params.locallab.avoidcolorshift = false;
|
||||
parent->avoidcolorshifts[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.avoidcolorshift = true;
|
||||
parent->avoidcolorshifts[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->pastsattogs[0] == 0) {
|
||||
params.locallab.pastsattog = false;
|
||||
parent->pastsattogs[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.pastsattog = true;
|
||||
parent->pastsattogs[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
parent->expcomps[sp] = params.locallab.expcomp = parent->expcomps[0];
|
||||
parent->blacks[sp] = params.locallab.black = parent->blacks[0];
|
||||
parent->hlcomprs[sp] = params.locallab.hlcompr = parent->hlcomprs[0];
|
||||
parent->hlcomprthreshs[sp] = params.locallab.hlcomprthresh = parent->hlcomprthreshs[0];
|
||||
parent->shcomprs[sp] = params.locallab.shcompr = parent->shcomprs[0];
|
||||
parent->sensiexs[sp] = params.locallab.sensiex = parent->sensiexs[0];
|
||||
|
||||
parent->centerxbufs[sp] = params.locallab.centerXbuf = parent->centerxbufs[0];
|
||||
parent->centerybufs[sp] = params.locallab.centerYbuf = parent->centerybufs[0];
|
||||
parent->adjblurs[sp] = params.locallab.adjblur = parent->adjblurs[0];
|
||||
|
||||
if (parent->cutpasts[0] == 0) {
|
||||
params.locallab.cutpast = false;
|
||||
parent->cutpasts[sp] = 0;
|
||||
} else {
|
||||
params.locallab.cutpast = true;
|
||||
parent->cutpasts[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
parent->chromacbdls[sp] = params.locallab.chromacbdl = parent->chromacbdls[0];
|
||||
|
||||
if (parent->lastdusts[0] == 0) {
|
||||
params.locallab.lastdust = false;
|
||||
parent->lastdusts[sp] = 0;
|
||||
} else {
|
||||
params.locallab.lastdust = true;
|
||||
parent->lastdusts[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->blurmets[sp] == 0) {
|
||||
params.locallab.blurMethod = "norm" ;
|
||||
parent->qualitycurves[sp] = 0;
|
||||
} else if (parent->blurmets[sp] == 1) {
|
||||
params.locallab.blurMethod = "inv" ;
|
||||
parent->blurmets[sp] = 1;
|
||||
} else if (parent->blurmets[sp] == 2) {
|
||||
params.locallab.blurMethod = "sym" ;
|
||||
parent->blurmets[sp] = 2;
|
||||
}
|
||||
|
||||
if (parent->dustmets[sp] == 0) {
|
||||
params.locallab.dustMethod = "cop" ;
|
||||
parent->dustmets[sp] = 0;
|
||||
} else if (parent->dustmets[sp] == 1) {
|
||||
params.locallab.dustMethod = "mov" ;
|
||||
parent->dustmets[sp] = 1;
|
||||
} else if (parent->dustmets[sp] == 2) {
|
||||
params.locallab.dustMethod = "pas" ;
|
||||
parent->dustmets[sp] = 2;
|
||||
}
|
||||
|
||||
if (parent->exclumets[sp] == 0) {
|
||||
params.locallab.Exclumethod = "norm" ;
|
||||
parent->exclumets[sp] = 0;
|
||||
} else if (parent->exclumets[sp] == 1) {
|
||||
params.locallab.Exclumethod = "exc" ;
|
||||
parent->exclumets[sp] = 1;
|
||||
}
|
||||
|
||||
parent->sensiexclus[sp] = params.locallab.sensiexclu = parent->sensiexclus[0];
|
||||
parent->strucs[sp] = params.locallab.struc = parent->strucs[0];
|
||||
parent->warms[sp] = params.locallab.warm = parent->warms[0];
|
||||
parent->noiselumdetails[sp] = params.locallab.noiselumdetail = parent->noiselumdetails[0];
|
||||
parent->noisechrodetails[sp] = params.locallab.noisechrodetail = parent->noisechrodetails[0];
|
||||
parent->sensidens[sp] = params.locallab.sensiden = parent->sensidens[0];
|
||||
|
||||
if (parent->expdenois[0] == 0) {
|
||||
params.locallab.expdenoi = false;
|
||||
parent->expdenois[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.expdenoi = true;
|
||||
parent->expdenois[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->expcolors[0] == 0) {
|
||||
params.locallab.expcolor = false;
|
||||
parent->expcolors[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.expcolor = true;
|
||||
parent->expcolors[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->expvibrances[0] == 0) {
|
||||
params.locallab.expvibrance = false;
|
||||
parent->expvibrances[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.expvibrance = true;
|
||||
parent->expvibrances[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->expblurs[0] == 0) {
|
||||
params.locallab.expblur = false;
|
||||
parent->expblurs[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.expblur = true;
|
||||
parent->expblurs[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->exptonemaps[0] == 0) {
|
||||
params.locallab.exptonemap = false;
|
||||
parent->exptonemaps[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.exptonemap = true;
|
||||
parent->exptonemaps[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->expretis[0] == 0) {
|
||||
params.locallab.expreti = false;
|
||||
parent->expretis[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.expreti = true;
|
||||
parent->expretis[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->expsharps[0] == 0) {
|
||||
params.locallab.expsharp = false;
|
||||
parent->expsharps[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.expsharp = true;
|
||||
parent->expsharps[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->expcbdls[0] == 0) {
|
||||
params.locallab.expcbdl = false;
|
||||
parent->expcbdls[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.expcbdl = true;
|
||||
parent->expcbdls[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
if (parent->expexposes[0] == 0) {
|
||||
params.locallab.expexpose = false;
|
||||
parent->expexposes[sp] = 0;
|
||||
|
||||
} else {
|
||||
params.locallab.expexpose = true;
|
||||
parent->expexposes[sp] = 1;
|
||||
|
||||
}
|
||||
|
||||
parent->bilaterals[sp] = params.locallab.bilateral = parent->bilaterals[0];
|
||||
parent->noiselequals[sp] = params.locallab.noiselequal = parent->noiselequals[0];
|
||||
|
||||
if (parent->shapemets[sp] == 0) {
|
||||
params.locallab.shapemethod = "ELI" ;
|
||||
parent->shapemets[sp] = 0;
|
||||
} else if (parent->shapemets[sp] == 1) {
|
||||
params.locallab.shapemethod = "RECT" ;
|
||||
parent->shapemets[sp] = 1;
|
||||
}
|
||||
|
||||
std::vector<double> ccret;
|
||||
|
||||
for (int j = 0; j < parent->sizeretics[sp]; j++) {
|
||||
ccret.push_back((double)(parent->reticurvs[0 * 500 + j]) / 1000.);
|
||||
parent->reticurvs[sp * 500 + j] = parent->reticurvs[0 * 500 + j];
|
||||
}
|
||||
|
||||
params.locallab.localTgaincurve.clear();
|
||||
params.locallab.localTgaincurve = ccret;
|
||||
|
||||
std::vector<double> llcL;
|
||||
|
||||
for (int j = 0; j < parent->sizellcs[sp]; j++) {
|
||||
llcL.push_back((double)(parent->llcurvs[0 * 500 + j]) / 1000.);
|
||||
parent->llcurvs[sp * 500 + j] = parent->llcurvs[0 * 500 + j] ;
|
||||
}
|
||||
|
||||
params.locallab.llcurve.clear();
|
||||
params.locallab.llcurve = llcL;
|
||||
|
||||
std::vector<double> cccL;
|
||||
|
||||
for (int j = 0; j < parent->sizecccs[sp]; j++) {
|
||||
cccL.push_back((double)(parent->cccurvs[0 * 500 + j]) / 1000.);
|
||||
parent->cccurvs[sp * 500 + j] = parent->cccurvs[0 * 500 + j] ;
|
||||
}
|
||||
|
||||
params.locallab.cccurve.clear();
|
||||
params.locallab.cccurve = cccL;
|
||||
|
||||
std::vector<double> lhcL;
|
||||
|
||||
for (int j = 0; j < parent->sizelhcs[sp]; j++) {
|
||||
lhcL.push_back((double)(parent->lhcurvs[0 * 500 + j]) / 1000.);
|
||||
parent->lhcurvs[sp * 500 + j] = parent->lhcurvs[0 * 500 + j] ;
|
||||
}
|
||||
|
||||
params.locallab.LHcurve.clear();
|
||||
params.locallab.LHcurve = lhcL;
|
||||
|
||||
std::vector<double> hhcL;
|
||||
|
||||
for (int j = 0; j < parent->sizehhcs[sp]; j++) {
|
||||
hhcL.push_back((double)(parent->hhcurvs[0 * 500 + j]) / 1000.);
|
||||
parent->hhcurvs[sp * 500 + j] = parent->hhcurvs[0 * 500 + j] ;
|
||||
}
|
||||
|
||||
params.locallab.HHcurve.clear();
|
||||
params.locallab.HHcurve = hhcL;
|
||||
|
||||
std::vector<double> skcL;
|
||||
|
||||
for (int j = 0; j < parent->sizeskintonecurves[sp]; j++) {
|
||||
skcL.push_back((double)(parent->skintonescurves[0 * 500 + j]) / 1000.);
|
||||
parent->skintonescurves[sp * 500 + j] = parent->skintonescurves[0 * 500 + j] ;
|
||||
}
|
||||
|
||||
params.locallab.skintonescurve.clear();
|
||||
params.locallab.skintonescurve = skcL;
|
||||
|
||||
parent->skintonescurves[sp * 500] = parent->skintonescurves[0 * 500];
|
||||
parent->skintonescurves[sp * 500 + 1] = parent->skintonescurves[0 * 500 + 1];
|
||||
|
||||
params.locallab.psthreshold.setValues(parent->psthresholds[0 * 500], parent->psthresholds[0 * 500 + 1]);
|
||||
|
||||
|
||||
std::vector<double> sexL;
|
||||
|
||||
for (int j = 0; j < parent->sizeexcurves[sp]; j++) {
|
||||
sexL.push_back((double)(parent->excurves[0 * 500 + j]) / 1000.);
|
||||
parent->excurves[sp * 500 + j] = parent->excurves[0 * 500 + j] ;
|
||||
}
|
||||
|
||||
params.locallab.excurve.clear();
|
||||
params.locallab.excurve = sexL;
|
||||
|
||||
params.locallab.getCurves(locRETgainCurve, locRETgainCurverab, loclhCurve, lochhCurve, LHutili, HHutili);
|
||||
for (int sp = 0; sp < params.locallab.nbspot; sp++) {
|
||||
locRETgainCurve.Set(params.locallab.localTgaincurve.at(sp));
|
||||
loclhCurve.Set(params.locallab.LHcurve.at(sp), LHutili);
|
||||
lochhCurve.Set(params.locallab.HHcurve.at(sp), HHutili);
|
||||
locallutili = false;
|
||||
CurveFactory::curveLocal(locallutili, params.locallab.llcurve.at(sp), lllocalcurve2, sca);
|
||||
localcutili = false;
|
||||
CurveFactory::curveCCLocal(localcutili, params.locallab.cccurve.at(sp), cclocalcurve2, sca);
|
||||
//localskutili = false;
|
||||
CurveFactory::curveskLocal(localskutili, params.locallab.skintonescurve.at(sp), sklocalcurve2, sca);
|
||||
CurveFactory::curveexLocal(localexutili, params.locallab.excurve.at(sp), exlocalcurve2, sca);
|
||||
|
||||
CurveFactory::curveLocal(locallutili, params.locallab.llcurve, lllocalcurve2, sca);
|
||||
CurveFactory::curveCCLocal(localcutili, params.locallab.cccurve, cclocalcurve2, sca);
|
||||
CurveFactory::curveskLocal(localskutili, params.locallab.skintonescurve, sklocalcurve2, sca);
|
||||
CurveFactory::curveexLocal(localexutili, params.locallab.excurve, exlocalcurve2, sca);
|
||||
|
||||
double ecomp = params.locallab.expcomp;
|
||||
double black = params.locallab.black;
|
||||
double hlcompr = params.locallab.hlcompr;
|
||||
double hlcomprthresh = params.locallab.hlcomprthresh;
|
||||
double shcompr = params.locallab.shcompr;
|
||||
double br = params.locallab.lightness;
|
||||
double ecomp = params.locallab.expcomp.at(sp);
|
||||
double black = params.locallab.black.at(sp);
|
||||
double hlcompr = params.locallab.hlcompr.at(sp);
|
||||
double hlcomprthresh = params.locallab.hlcomprthresh.at(sp);
|
||||
double shcompr = params.locallab.shcompr.at(sp);
|
||||
double br = params.locallab.lightness.at(sp);
|
||||
|
||||
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br,
|
||||
hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
|
||||
sca);
|
||||
|
||||
params.locallab.huerefblur = (parent->huerefblurs[sp]) / 100.f;
|
||||
params.locallab.hueref = (parent->huerefs[sp]) / 100.f;
|
||||
params.locallab.chromaref = parent->chromarefs[sp];
|
||||
params.locallab.lumaref = parent->lumarefs[sp];
|
||||
params.locallab.sobelref = parent->sobelrefs[sp];
|
||||
parent->ipf.Lab_Local(1, maxspot, sp, parent->huerefs, parent->sobelrefs, parent->centerx, parent->centery, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2, loclhCurve, lochhCurve,
|
||||
LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, params.locallab.huerefblur, params.locallab.hueref, params.locallab.chromaref, params.locallab.lumaref, params.locallab.sobelref);
|
||||
double huere, chromare, lumare, huerefblu, sobelre;
|
||||
huerefblu = parent->huerefblurs[sp];
|
||||
huere = parent->huerefs[sp];
|
||||
chromare = parent->chromarefs[sp];
|
||||
lumare = parent->lumarefs[sp];
|
||||
sobelre = parent->sobelrefs[sp];
|
||||
|
||||
parent->ipf.Lab_Local(1, maxspot, sp, parent->huerefs, parent->sobelrefs, parent->centerx, parent->centery, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
|
||||
loclhCurve, lochhCurve, LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, huere, chromare, lumare, sobelre);
|
||||
|
||||
lllocalcurve2.clear();
|
||||
cclocalcurve2.clear();
|
||||
sklocalcurve2.clear();
|
||||
exlocalcurve2.clear();
|
||||
|
||||
|
||||
if (skip <= 2) {
|
||||
usleep(settings->cropsleep); //wait to avoid crash when crop 100% and move window
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// int moderetinex;
|
||||
// parent->ipf.MSR(labnCrop, labnCrop->W, labnCrop->H, 1);
|
||||
|
Reference in New Issue
Block a user