Saving of Locallab tool parameters in .pp3 file #3

All Locallab tool parameters are now saved in .pp3 file

Limitation:
- Locallab tools are temporary deactivated (time to merge with procparam
update)
This commit is contained in:
Pandagrapher
2018-08-20 19:40:43 +02:00
parent 50f517d924
commit 9d18ccc585
5 changed files with 1836 additions and 1816 deletions

View File

@@ -2296,201 +2296,76 @@ LocallabParams::LocallabParams() :
HHcurve(),
invers(),
// Exposure
/*
llcurve{
DCT_NURBS,
0.0,
0.0,
1.0,
1.0,
},
cccurve{
DCT_NURBS,
0.0,
0.0,
1.0,
1.0,
},
*/
excurve{
DCT_NURBS,
0.0,
0.0,
1.0,
1.0,
},
localTgaincurve{
static_cast<double>(FCT_MinMaxCPoints),
0.0,
0.12,
0.35,
0.35,
0.70,
0.50,
0.35,
0.35,
1.00,
0.12,
0.35,
0.35
},
localTgaincurverab{
static_cast<double>(FCT_MinMaxCPoints),
0.0,
0.12,
0.35,
0.35,
0.70,
0.50,
0.35,
0.35,
1.00,
0.12,
0.35,
0.35
},
/*
LHcurve{
static_cast<double>(FCT_MinMaxCPoints),
0.0,
0.50,
0.35,
0.35,
0.166,
0.50,
0.35,
0.35,
0.333,
0.50,
0.35,
0.35,
0.50,
0.50,
0.35,
0.35,
0.666,
0.50,
0.35,
0.35,
0.833,
0.50,
0.35,
0.35
},
HHcurve{
static_cast<double>(FCT_MinMaxCPoints),
0.0,
0.50,
0.35,
0.35,
0.166,
0.50,
0.35,
0.35,
0.333,
0.50,
0.35,
0.35,
0.50,
0.50,
0.35,
0.35,
0.666,
0.50,
0.35,
0.35,
0.833,
0.50,
0.35,
0.35
},
*/
skintonescurve {
DCT_Linear
}
/*
adjblur(0),
warm(0),
expcomp(0),
black(0),
hlcompr(20),
hlcomprthresh(33),
shcompr(50),
pastels(0),
saturated(0),
psthreshold(0, 75, false),
protectskins(false),
avoidcolorshift(true),
pastsattog(true),
sensiv(19),
noiselumf(0),
noiselumc(0),
noiselumdetail(0),
noiselequal(7),
noisechrodetail(0),
bilateral(0),
sensiden(30),
noisechrof(0),
noisechroc(0),
sharradius(40),
sharamount(75),
shardamping(75),
shariter(30),
sensiex(19),
sensih(19),
retrab(500),
sensicb(19),
sensiexclu(19),
struc(0),
sensibn(40),
sensitm(19),
sensisha(19),
radius(1),
strength(0),
stren(0),
gamma(100),
estop(140),
scaltm(10),
rewei(0),
transit(60),
avoid(false),
retinexMethod("high"),
cutpast(false),
lastdust(false),
activlum(false),
inversrad(false),
inversret(false),
inverssha(false),
hueref(1.),
huerefblur(1.),
chromaref(50.),
lumaref(50.),
sobelref(0.),
str(0),
neigh(50),
nbspot(1),
anbspot(0),
vart(200),
chrrt(0),
mult{
1.0,
1.0,
1.0,
1.0,
1.0,
},
expexpose(false),
expvibrance(false),
expblur(false),
exptonemap(false),
expreti(false),
expsharp(false),
expcbdl(false),
expdenoi(false),
threshold(20),
chromacbdl(0)
*/
expexpose(),
expcomp(),
hlcompr(),
hlcomprthresh(),
black(),
shcompr(),
warm(),
sensiex(),
excurve(),
// Vibrance
expvibrance(),
saturated(),
pastels(),
psthreshold(),
protectskins(),
avoidcolorshift(),
pastsattog(),
sensiv(),
skintonescurve(),
// Blur & Noise
expblur(),
radius(),
strength(),
sensibn(),
blurMethod(),
activlum(),
// Tone Mapping
exptonemap(),
stren(),
gamma(),
estop(),
scaltm(),
rewei(),
sensitm(),
// Retinex
expreti(),
retinexMethod(),
str(),
chrrt(),
neigh(),
vart(),
sensih(),
localTgaincurve(),
inversret(),
// Sharpening
expsharp(),
sharradius(),
sharamount(),
shardamping(),
shariter(),
sensisha(),
inverssha(),
// Contrast by detail levels
expcbdl(),
mult(),
chromacbdl(),
threshold(),
sensicb(),
// Denoise
expdenoi(),
noiselumf(),
noiselumc(),
noiselumdetail(),
noiselequal(),
noisechrof(),
noisechroc(),
adjblur(),
bilateral(),
sensiden(),
avoid()
{
}
@@ -2533,87 +2408,85 @@ bool LocallabParams::operator ==(const LocallabParams& other) const
&& HHcurve == other.HHcurve
&& invers == other.invers
// Exposure
;
/*
&& adjblur == other.adjblur
&& warm == other.warm
&& expcomp == other.expcomp
&& hlcompr == other.hlcompr
&& hlcomprthresh == other.hlcomprthresh
&& shcompr == other.shcompr
&& black == other.black
&& pastels == other.pastels
&& sensiv == other.sensiv
&& saturated == other.saturated
&& psthreshold == other.psthreshold
&& [this, &other]() -> bool {
for (unsigned int i = 0; i < 5; ++i)
{
if (mult[i] != other.mult[i]) {
return false;
&& expexpose == other.expexpose
&& expcomp == other.expcomp
&& hlcompr == other.hlcompr
&& hlcomprthresh == other.hlcomprthresh
&& black == other.black
&& shcompr == other.shcompr
&& warm == other.warm
&& sensiex == other.sensiex
&& excurve == other.excurve
// Vibrance
&& expvibrance == other.expvibrance
&& saturated == other.saturated
&& pastels == other.pastels
&& psthreshold == other.psthreshold
&& protectskins == other.protectskins
&& avoidcolorshift == other.avoidcolorshift
&& pastsattog == other.pastsattog
&& sensiv == other.sensiv
&& skintonescurve == other.skintonescurve
// Blur & Noise
&& expblur == other.expblur
&& radius == other.radius
&& strength == other.strength
&& sensibn == other.sensibn
&& blurMethod == other.blurMethod
&& activlum == other.activlum
// Tone Mapping
&& exptonemap == other.exptonemap
&& stren == other.stren
&& gamma == other.gamma
&& estop == other.estop
&& scaltm == other.scaltm
&& rewei == other.rewei
&& sensitm == other.sensitm
// Retinex
&& expreti == other.expreti
&& retinexMethod == other.retinexMethod
&& str == other.str
&& chrrt == other.chrrt
&& neigh == other.neigh
&& vart == other.vart
&& sensih == other.sensih
&& localTgaincurve == other.localTgaincurve
&& inversret == other.inversret
// Sharpening
&& expsharp == other.expsharp
&& sharradius == other.sharradius
&& sharamount == other.sharamount
&& shardamping == other.shardamping
&& shariter == other.shariter
&& sensisha == other.sensisha
&& inverssha == other.inverssha
// Constrast by detail levels
&& expcbdl == other.expcbdl
&& [this, &other]()->bool {
for (int i = 0; i < 5; i++)
{
if (mult[i] != other.mult[i]) {
return false;
}
}
}
return true;
return true;
}()
&& protectskins == other.protectskins
&& avoidcolorshift == other.avoidcolorshift
&& pastsattog == other.pastsattog
&& skintonescurve == other.skintonescurve
&& excurve == other.excurve
&& chromacbdl == other.chromacbdl
&& threshold == other.threshold
&& sensicb == other.sensicb
// Denoise
&& expdenoi == other.expdenoi
&& noiselumf == other.noiselumf
&& noiselumc == other.noiselumc
&& noiselumdetail == other.noiselumdetail
&& noiselequal == other.noiselequal
&& noisechrodetail == other.noisechrodetail
&& bilateral == other.bilateral
&& sensiden == other.sensiden
&& noisechrof == other.noisechrof
&& noisechroc == other.noisechroc
&& sharradius == other.sharradius
&& sharamount == other.sharamount
&& shardamping == other.shardamping
&& shariter == other.shariter
&& sensi == other.sensi
&& sensiex == other.sensiex
&& sensitm == other.sensitm
&& sensih == other.sensih
&& retrab == other.retrab
&& sensicb == other.sensicb
&& sensiexclu == other.sensiexclu
&& struc == other.struc
&& sensibn == other.sensibn
&& sensisha == other.sensisha
&& radius == other.radius
&& strength == other.strength
&& stren == other.stren
&& gamma == other.gamma
&& estop == other.estop
&& scaltm == other.scaltm
&& rewei == other.rewei
&& chrrt == other.chrrt
&& str == other.str
&& neigh == other.neigh
&& hueref == other.hueref
&& huerefblur == other.huerefblur
&& chromaref == other.chromaref
&& lumaref == other.lumaref
&& sobelref == other.sobelref
&& vart == other.vart
&& threshold == other.threshold
&& chromacbdl == other.chromacbdl
&& expexpose == other.expexpose
&& expvibrance == other.expvibrance
&& expblur == other.expblur
&& exptonemap == other.exptonemap
&& expreti == other.expreti
&& expsharp == other.expsharp
&& expcbdl == other.expcbdl
&& expdenoi == other.expdenoi
&& localTgaincurve == other.localTgaincurve
&& localTgaincurverab == other.localTgaincurverab
*/
&& adjblur == other.adjblur
&& bilateral == other.bilateral
&& sensiden == other.sensiden
&& avoid == other.avoid;
}
bool LocallabParams::operator !=(const LocallabParams& other) const
@@ -3523,99 +3396,82 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->locallab.HHcurve, "Locallab", "HHCurve_" + std::to_string(i), locallab.HHcurve.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.invers, "Locallab", "Invers_" + std::to_string(i), locallab.invers.at(i), keyFile);
// Exposure
saveToKeyfile(!pedited || pedited->locallab.expexpose, "Locallab", "Expexpose_" + std::to_string(i), locallab.expexpose.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.expcomp, "Locallab", "Expcomp_" + std::to_string(i), locallab.expcomp.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.hlcompr, "Locallab", "Hlcompr_" + std::to_string(i), locallab.hlcompr.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.hlcomprthresh, "Locallab", "Hlcomprthresh_" + std::to_string(i), locallab.hlcomprthresh.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.black, "Locallab", "Black_" + std::to_string(i), locallab.black.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.shcompr, "Locallab", "Shcompr_" + std::to_string(i), locallab.shcompr.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.warm, "Locallab", "Warm_" + std::to_string(i), locallab.warm.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensiex, "Locallab", "Sensiex_" + std::to_string(i), locallab.sensiex.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.excurve, "Locallab", "ExCurve_" + std::to_string(i), locallab.excurve.at(i), keyFile);
// Vibrance
saveToKeyfile(!pedited || pedited->locallab.expvibrance, "Locallab", "Expvibrance_" + std::to_string(i), locallab.expvibrance.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.saturated, "Locallab", "Saturated_" + std::to_string(i), locallab.saturated.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.pastels, "Locallab", "Pastels_" + std::to_string(i), locallab.pastels.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.psthreshold, "Locallab", "PSThreshold_" + std::to_string(i), locallab.psthreshold.at(i).toVector(), keyFile);
saveToKeyfile(!pedited || pedited->locallab.protectskins, "Locallab", "ProtectSkins_" + std::to_string(i), locallab.protectskins.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.avoidcolorshift, "Locallab", "AvoidColorShift_" + std::to_string(i), locallab.avoidcolorshift.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.pastsattog, "Locallab", "PastSatTog_" + std::to_string(i), locallab.pastsattog.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensiv, "Locallab", "Sensiv_" + std::to_string(i), locallab.sensiv.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.skintonescurve, "Locallab", "SkinTonesCurve_" + std::to_string(i), locallab.skintonescurve.at(i), keyFile);
// Blur & Noise
saveToKeyfile(!pedited || pedited->locallab.expblur, "Locallab", "Expblur_" + std::to_string(i), locallab.expblur.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.radius, "Locallab", "Radius_" + std::to_string(i), locallab.radius.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.strength, "Locallab", "Strength_" + std::to_string(i), locallab.strength.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensibn, "Locallab", "Sensibn_" + std::to_string(i), locallab.sensibn.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.blurMethod, "Locallab", "BlurMethod_" + std::to_string(i), locallab.blurMethod.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.activlum, "Locallab", "activlum_" + std::to_string(i), locallab.activlum.at(i), keyFile);
// Tone Mapping
saveToKeyfile(!pedited || pedited->locallab.exptonemap, "Locallab", "Exptonemap_" + std::to_string(i), locallab.exptonemap.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.stren, "Locallab", "Stren_" + std::to_string(i), locallab.stren.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.gamma, "Locallab", "Gamma_" + std::to_string(i), locallab.gamma.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.estop, "Locallab", "Estop_" + std::to_string(i), locallab.estop.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.scaltm, "Locallab", "Scaltm_" + std::to_string(i), locallab.scaltm.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.rewei, "Locallab", "Rewei_" + std::to_string(i), locallab.rewei.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensitm, "Locallab", "Sensitm_" + std::to_string(i), locallab.sensitm.at(i), keyFile);
// Retinex
saveToKeyfile(!pedited || pedited->locallab.expreti, "Locallab", "Expreti_" + std::to_string(i), locallab.expreti.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.retinexMethod, "Locallab", "retinexMethod_" + std::to_string(i), locallab.retinexMethod.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.str, "Locallab", "Str_" + std::to_string(i), locallab.str.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.chrrt, "Locallab", "Chrrt_" + std::to_string(i), locallab.chrrt.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.neigh, "Locallab", "Neigh_" + std::to_string(i), locallab.neigh.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.vart, "Locallab", "Vart_" + std::to_string(i), locallab.vart.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensih, "Locallab", "Sensih_" + std::to_string(i), locallab.sensih.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.localTgaincurve, "Locallab", "TgainCurve_" + std::to_string(i), locallab.localTgaincurve.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.inversret, "Locallab", "Inversret_" + std::to_string(i), locallab.inversret.at(i), keyFile);
// Sharpening
saveToKeyfile(!pedited || pedited->locallab.expsharp, "Locallab", "Expsharp_" + std::to_string(i), locallab.expsharp.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.sharradius, "Locallab", "Sharradius_" + std::to_string(i), locallab.sharradius.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.sharamount, "Locallab", "Sharamount_" + std::to_string(i), locallab.sharamount.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.shardamping, "Locallab", "Shardamping_" + std::to_string(i), locallab.shardamping.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.shariter, "Locallab", "Shariter_" + std::to_string(i), locallab.shariter.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensisha, "Locallab", "Sensisha_" + std::to_string(i), locallab.sensisha.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.inverssha, "Locallab", "Inverssha_" + std::to_string(i), locallab.inverssha.at(i), keyFile);
// Contrast by detail levels
saveToKeyfile(!pedited || pedited->locallab.expcbdl, "Locallab", "Expcbdl_" + std::to_string(i), locallab.expcbdl.at(i), keyFile);
for (int j = 0; j < 5; j++) {
saveToKeyfile(!pedited || pedited->locallab.mult[j], "Locallab", "Mult" + std::to_string(j) + "_" + std::to_string(i), locallab.mult[j].at(i), keyFile);
}
saveToKeyfile(!pedited || pedited->locallab.chromacbdl, "Locallab", "Chromacbdl_" + std::to_string(i), locallab.chromacbdl.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.threshold, "Locallab", "Threshold_" + std::to_string(i), locallab.threshold.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensicb, "Locallab", "Sensicb_" + std::to_string(i), locallab.sensicb.at(i), keyFile);
// Denoise
saveToKeyfile(!pedited || pedited->locallab.expdenoi, "Locallab", "Expdenoi_" + std::to_string(i), locallab.expdenoi.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.noiselumf, "Locallab", "noiselumf_" + std::to_string(i), locallab.noiselumf.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.noiselumc, "Locallab", "noiselumc_" + std::to_string(i), locallab.noiselumc.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.noiselumdetail, "Locallab", "noiselumdetail_" + std::to_string(i), locallab.noiselumdetail.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.noiselequal, "Locallab", "noiselequal_" + std::to_string(i), locallab.noiselequal.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.noisechrof, "Locallab", "noisechrof_" + std::to_string(i), locallab.noisechrof.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.noisechroc, "Locallab", "noisechroc_" + std::to_string(i), locallab.noisechroc.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.adjblur, "Locallab", "Adjblur_" + std::to_string(i), locallab.adjblur.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.bilateral, "Locallab", "Bilateral_" + std::to_string(i), locallab.bilateral.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensiden, "Locallab", "Sensiden_" + std::to_string(i), locallab.sensiden.at(i), keyFile);
saveToKeyfile(!pedited || pedited->locallab.avoid, "Locallab", "Avoid_" + std::to_string(i), locallab.avoid.at(i), keyFile);
}
/*
saveToKeyfile(!pedited || pedited->locallab.expexpose, "Locallab", "Expexpose", locallab.expexpose, keyFile);
saveToKeyfile(!pedited || pedited->locallab.expvibrance, "Locallab", "Expvibrance", locallab.expvibrance, keyFile);
saveToKeyfile(!pedited || pedited->locallab.expblur, "Locallab", "Expblur", locallab.expblur, keyFile);
saveToKeyfile(!pedited || pedited->locallab.exptonemap, "Locallab", "Exptonemap", locallab.exptonemap, keyFile);
saveToKeyfile(!pedited || pedited->locallab.expreti, "Locallab", "Expreti", locallab.expreti, keyFile);
saveToKeyfile(!pedited || pedited->locallab.expsharp, "Locallab", "Expsharp", locallab.expsharp, keyFile);
saveToKeyfile(!pedited || pedited->locallab.expcbdl, "Locallab", "Expcbdl", locallab.expcbdl, keyFile);
saveToKeyfile(!pedited || pedited->locallab.expdenoi, "Locallab", "Expdenoi", locallab.expdenoi, keyFile);
saveToKeyfile(!pedited || pedited->locallab.localTgaincurve, "Locallab", "TgainCurve", locallab.localTgaincurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.localTgaincurverab, "Locallab", "TgainCurverab", locallab.localTgaincurverab, keyFile);
saveToKeyfile(!pedited || pedited->locallab.avoid, "Locallab", "Avoid", locallab.avoid, keyFile);
saveToKeyfile(!pedited || pedited->locallab.cutpast, "Locallab", "Cutpast", locallab.cutpast, keyFile);
saveToKeyfile(!pedited || pedited->locallab.lastdust, "Locallab", "Lastdust", locallab.lastdust, keyFile);
saveToKeyfile(!pedited || pedited->locallab.activlum, "Locallab", "activlum", locallab.activlum, keyFile);
saveToKeyfile(!pedited || pedited->locallab.inversrad, "Locallab", "Inversrad", locallab.inversrad, keyFile);
saveToKeyfile(!pedited || pedited->locallab.inverssha, "Locallab", "Inverssha", locallab.inverssha, keyFile);
saveToKeyfile(!pedited || pedited->locallab.inversret, "Locallab", "Inversret", locallab.inversret, keyFile);
saveToKeyfile(!pedited || pedited->locallab.Exclumethod, "Locallab", "Exclumethod", locallab.Exclumethod, keyFile);
saveToKeyfile(!pedited || pedited->locallab.shapemethod, "Locallab", "Shapemethod", locallab.shapemethod, keyFile);
saveToKeyfile(!pedited || pedited->locallab.retinexMethod, "Locallab", "retinexMethod", locallab.retinexMethod, keyFile);
saveToKeyfile(!pedited || pedited->locallab.blurMethod, "Locallab", "BlurMethod", locallab.blurMethod, keyFile);
saveToKeyfile(!pedited || pedited->locallab.dustMethod, "Locallab", "DustMethod", locallab.dustMethod, keyFile);
saveToKeyfile(!pedited || pedited->locallab.adjblur, "Locallab", "Adjblur", locallab.adjblur, keyFile);
saveToKeyfile(!pedited || pedited->locallab.warm, "Locallab", "Warm", locallab.warm, keyFile);
saveToKeyfile(!pedited || pedited->locallab.expcomp, "Locallab", "Expcomp", locallab.expcomp, keyFile);
saveToKeyfile(!pedited || pedited->locallab.hlcompr, "Locallab", "Hlcompr", locallab.hlcompr, keyFile);
saveToKeyfile(!pedited || pedited->locallab.hlcomprthresh, "Locallab", "Hlcomprthresh", locallab.hlcomprthresh, keyFile);
saveToKeyfile(!pedited || pedited->locallab.black, "Locallab", "Black", locallab.black, keyFile);
saveToKeyfile(!pedited || pedited->locallab.shcompr, "Locallab", "Shcompr", locallab.shcompr, keyFile);
saveToKeyfile(!pedited || pedited->locallab.pastels, "Locallab", "Pastels", locallab.pastels, keyFile);
saveToKeyfile(!pedited || pedited->locallab.saturated, "Locallab", "Saturated", locallab.saturated, keyFile);
saveToKeyfile(!pedited || pedited->locallab.hlcompr, "Locallab", "Hlcompr", locallab.hlcompr, keyFile);
saveToKeyfile(!pedited || pedited->locallab.psthreshold, "Locallab", "PSThreshold", locallab.psthreshold.toVector(), keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensiv, "Locallab", "Sensiv", locallab.sensiv, keyFile);
saveToKeyfile(!pedited || pedited->locallab.protectskins, "Locallab", "ProtectSkins", locallab.protectskins, keyFile);
saveToKeyfile(!pedited || pedited->locallab.avoidcolorshift, "Locallab", "AvoidColorShift", locallab.avoidcolorshift, keyFile);
saveToKeyfile(!pedited || pedited->locallab.pastsattog, "Locallab", "PastSatTog", locallab.pastsattog, keyFile);
saveToKeyfile(!pedited || pedited->locallab.skintonescurve, "Locallab", "SkinTonesCurve", locallab.skintonescurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.excurve, "Locallab", "ExCurve", locallab.excurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.noiselumf, "Locallab", "noiselumf", locallab.noiselumf, keyFile);
saveToKeyfile(!pedited || pedited->locallab.noiselumc, "Locallab", "noiselumc", locallab.noiselumc, keyFile);
saveToKeyfile(!pedited || pedited->locallab.noiselumdetail, "Locallab", "noiselumdetail", locallab.noiselumdetail, keyFile);
saveToKeyfile(!pedited || pedited->locallab.noiselequal, "Locallab", "noiselequal", locallab.noiselequal, keyFile);
saveToKeyfile(!pedited || pedited->locallab.noisechrodetail, "Locallab", "noisechrodetail", locallab.noisechrodetail, keyFile);
saveToKeyfile(!pedited || pedited->locallab.bilateral, "Locallab", "Bilateral", locallab.bilateral, keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensiden, "Locallab", "Sensiden", locallab.sensiden, keyFile);
saveToKeyfile(!pedited || pedited->locallab.noisechrof, "Locallab", "noisechrof", locallab.noisechrof, keyFile);
saveToKeyfile(!pedited || pedited->locallab.noisechroc, "Locallab", "noisechroc", locallab.noisechroc, keyFile);
saveToKeyfile(!pedited || pedited->locallab.sharradius, "Locallab", "Sharradius", locallab.sharradius, keyFile);
saveToKeyfile(!pedited || pedited->locallab.sharamount, "Locallab", "Sharamount", locallab.sharamount, keyFile);
saveToKeyfile(!pedited || pedited->locallab.shardamping, "Locallab", "Shardamping", locallab.shardamping, keyFile);
saveToKeyfile(!pedited || pedited->locallab.shariter, "Locallab", "Shariter", locallab.shariter, keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensiex, "Locallab", "Sensiex", locallab.sensiex, keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensitm, "Locallab", "Sensitm", locallab.sensitm, keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensisha, "Locallab", "Sensisha", locallab.sensisha, keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensih, "Locallab", "Sensih", locallab.sensih, keyFile);
saveToKeyfile(!pedited || pedited->locallab.retrab, "Locallab", "Retrab", locallab.retrab, keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensiexclu, "Locallab", "Sensiexclu", locallab.sensiexclu, keyFile);
saveToKeyfile(!pedited || pedited->locallab.struc, "Locallab", "Struc", locallab.struc, keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensicb, "Locallab", "Sensicb", locallab.sensicb, keyFile);
saveToKeyfile(!pedited || pedited->locallab.sensibn, "Locallab", "Sensibn", locallab.sensibn, keyFile);
saveToKeyfile(!pedited || pedited->locallab.transit, "Locallab", "Transit", locallab.transit, keyFile);
saveToKeyfile(!pedited || pedited->locallab.chrrt, "Locallab", "Chrrt", locallab.chrrt, keyFile);
saveToKeyfile(!pedited || pedited->locallab.str, "Locallab", "Str", locallab.str, keyFile);
saveToKeyfile(!pedited || pedited->locallab.neigh, "Locallab", "Neigh", locallab.neigh, keyFile);
saveToKeyfile(!pedited || pedited->locallab.hueref, "Locallab", "Hueref", locallab.hueref, keyFile);
saveToKeyfile(!pedited || pedited->locallab.huerefblur, "Locallab", "Huerefblur", locallab.huerefblur, keyFile);
saveToKeyfile(!pedited || pedited->locallab.chromaref, "Locallab", "Chromaref", locallab.chromaref, keyFile);
saveToKeyfile(!pedited || pedited->locallab.lumaref, "Locallab", "Lumaref", locallab.lumaref, keyFile);
saveToKeyfile(!pedited || pedited->locallab.sobelref, "Locallab", "Sobelref", locallab.sobelref, keyFile);
saveToKeyfile(!pedited || pedited->locallab.vart, "Locallab", "Vart", locallab.vart, keyFile);
saveToKeyfile(!pedited || pedited->locallab.radius, "Locallab", "Radius", locallab.radius, keyFile);
saveToKeyfile(!pedited || pedited->locallab.strength, "Locallab", "Strength", locallab.strength, keyFile);
for (int i = 0; i < 5; i++) {
std::stringstream ss;
ss << "Mult" << i;
saveToKeyfile(!pedited || pedited->locallab.mult[i], "Locallab", ss.str(), locallab.mult[i], keyFile);
}
saveToKeyfile(!pedited || pedited->locallab.threshold, "Locallab", "Threshold", locallab.threshold, keyFile);
saveToKeyfile(!pedited || pedited->locallab.chromacbdl, "Locallab", "Chromacbdl", locallab.chromacbdl, keyFile);
saveToKeyfile(!pedited || pedited->locallab.stren, "Locallab", "Stren", locallab.stren, keyFile);
saveToKeyfile(!pedited || pedited->locallab.gamma, "Locallab", "Gamma", locallab.gamma, keyFile);
saveToKeyfile(!pedited || pedited->locallab.estop, "Locallab", "Estop", locallab.estop, keyFile);
saveToKeyfile(!pedited || pedited->locallab.scaltm, "Locallab", "Scaltm", locallab.scaltm, keyFile);
saveToKeyfile(!pedited || pedited->locallab.rewei, "Locallab", "Rewei", locallab.rewei, keyFile);
*/
// Post-crop vignette
saveToKeyfile(!pedited || pedited->pcvignette.enabled, "PCVignette", "Enabled", pcvignette.enabled, keyFile);
saveToKeyfile(!pedited || pedited->pcvignette.strength, "PCVignette", "Strength", pcvignette.strength, keyFile);
@@ -4666,6 +4522,81 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
locallab.HHcurve.resize(locallab.nbspot);
locallab.invers.resize(locallab.nbspot);
// Exposure
locallab.expexpose.resize(locallab.nbspot);
locallab.expcomp.resize(locallab.nbspot);
locallab.hlcompr.resize(locallab.nbspot);
locallab.hlcomprthresh.resize(locallab.nbspot);
locallab.black.resize(locallab.nbspot);
locallab.shcompr.resize(locallab.nbspot);
locallab.warm.resize(locallab.nbspot);
locallab.sensiex.resize(locallab.nbspot);
locallab.excurve.resize(locallab.nbspot);
// Vibrance
locallab.expvibrance.resize(locallab.nbspot);
locallab.saturated.resize(locallab.nbspot);
locallab.pastels.resize(locallab.nbspot);
Threshold<int> val(0, 0, false); // Default value (initialization values not important) for resize function as Threshold<T> does not have constructor Threshold<T>()
locallab.psthreshold.resize(locallab.nbspot, val);
locallab.protectskins.resize(locallab.nbspot);
locallab.avoidcolorshift.resize(locallab.nbspot);
locallab.pastsattog.resize(locallab.nbspot);
locallab.sensiv.resize(locallab.nbspot);
locallab.skintonescurve.resize(locallab.nbspot);
// Blur & Noise
locallab.expblur.resize(locallab.nbspot);
locallab.radius.resize(locallab.nbspot);
locallab.strength.resize(locallab.nbspot);
locallab.sensibn.resize(locallab.nbspot);
locallab.blurMethod.resize(locallab.nbspot);
locallab.activlum.resize(locallab.nbspot);
// Tone Mapping
locallab.exptonemap.resize(locallab.nbspot);
locallab.stren.resize(locallab.nbspot);
locallab.gamma.resize(locallab.nbspot);
locallab.estop.resize(locallab.nbspot);
locallab.scaltm.resize(locallab.nbspot);
locallab.rewei.resize(locallab.nbspot);
locallab.sensitm.resize(locallab.nbspot);
// Retinex
locallab.expreti.resize(locallab.nbspot);
locallab.retinexMethod.resize(locallab.nbspot);
locallab.str.resize(locallab.nbspot);
locallab.chrrt.resize(locallab.nbspot);
locallab.neigh.resize(locallab.nbspot);
locallab.vart.resize(locallab.nbspot);
locallab.sensih.resize(locallab.nbspot);
locallab.localTgaincurve.resize(locallab.nbspot);
locallab.inversret.resize(locallab.nbspot);
// Sharpening
locallab.expsharp.resize(locallab.nbspot);
locallab.sharradius.resize(locallab.nbspot);
locallab.sharamount.resize(locallab.nbspot);
locallab.shardamping.resize(locallab.nbspot);
locallab.shariter.resize(locallab.nbspot);
locallab.sensisha.resize(locallab.nbspot);
locallab.inverssha.resize(locallab.nbspot);
// Contrast by detail levels
locallab.expcbdl.resize(locallab.nbspot);
for (int i = 0; i < 5; i++) {
locallab.mult[i].resize(locallab.nbspot);
}
locallab.chromacbdl.resize(locallab.nbspot);
locallab.threshold.resize(locallab.nbspot);
locallab.sensicb.resize(locallab.nbspot);
// Denoise
locallab.expdenoi.resize(locallab.nbspot);
locallab.noiselumf.resize(locallab.nbspot);
locallab.noiselumc.resize(locallab.nbspot);
locallab.noiselumdetail.resize(locallab.nbspot);
locallab.noiselequal.resize(locallab.nbspot);
locallab.noisechrof.resize(locallab.nbspot);
locallab.noisechroc.resize(locallab.nbspot);
locallab.adjblur.resize(locallab.nbspot);
locallab.bilateral.resize(locallab.nbspot);
locallab.sensiden.resize(locallab.nbspot);
locallab.avoid.resize(locallab.nbspot);
}
for (int i = 0; i < locallab.nbspot; i++) {
@@ -4701,113 +4632,93 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Locallab", "HHCurve_" + std::to_string(i), pedited, locallab.HHcurve.at(i), pedited->locallab.HHcurve);
assignFromKeyfile(keyFile, "Locallab", "Invers_" + std::to_string(i), pedited, locallab.invers.at(i), pedited->locallab.invers);
// Exposure
}
assignFromKeyfile(keyFile, "Locallab", "Expexpose_" + std::to_string(i), pedited, locallab.expexpose.at(i), pedited->locallab.expexpose);
assignFromKeyfile(keyFile, "Locallab", "Expcomp_" + std::to_string(i), pedited, locallab.expcomp.at(i), pedited->locallab.expcomp);
assignFromKeyfile(keyFile, "Locallab", "Hlcompr_" + std::to_string(i), pedited, locallab.hlcompr.at(i), pedited->locallab.hlcompr);
assignFromKeyfile(keyFile, "Locallab", "Hlcomprthresh_" + std::to_string(i), pedited, locallab.hlcomprthresh.at(i), pedited->locallab.hlcomprthresh);
assignFromKeyfile(keyFile, "Locallab", "Black_" + std::to_string(i), pedited, locallab.black.at(i), pedited->locallab.black);
assignFromKeyfile(keyFile, "Locallab", "Shcompr_" + std::to_string(i), pedited, locallab.shcompr.at(i), pedited->locallab.shcompr);
assignFromKeyfile(keyFile, "Locallab", "Warm_" + std::to_string(i), pedited, locallab.warm.at(i), pedited->locallab.warm);
assignFromKeyfile(keyFile, "Locallab", "Sensiex_" + std::to_string(i), pedited, locallab.sensiex.at(i), pedited->locallab.sensiex);
assignFromKeyfile(keyFile, "Locallab", "ExCurve_" + std::to_string(i), pedited, locallab.excurve.at(i), pedited->locallab.excurve);
// Vibrance
assignFromKeyfile(keyFile, "Locallab", "Expvibrance_" + std::to_string(i), pedited, locallab.expvibrance.at(i), pedited->locallab.expvibrance);
assignFromKeyfile(keyFile, "Locallab", "Saturated_" + std::to_string(i), pedited, locallab.saturated.at(i), pedited->locallab.saturated);
assignFromKeyfile(keyFile, "Locallab", "Pastels_" + std::to_string(i), pedited, locallab.pastels.at(i), pedited->locallab.pastels);
/*
assignFromKeyfile(keyFile, "Locallab", "Expcbdl", pedited, locallab.expcbdl, pedited->locallab.expcbdl);
assignFromKeyfile(keyFile, "Locallab", "Expexpose", pedited, locallab.expexpose, pedited->locallab.expexpose);
assignFromKeyfile(keyFile, "Locallab", "Expvibrance", pedited, locallab.expvibrance, pedited->locallab.expvibrance);
assignFromKeyfile(keyFile, "Locallab", "Expblur", pedited, locallab.expblur, pedited->locallab.expblur);
assignFromKeyfile(keyFile, "Locallab", "Exptonemap", pedited, locallab.exptonemap, pedited->locallab.exptonemap);
assignFromKeyfile(keyFile, "Locallab", "Expreti", pedited, locallab.expreti, pedited->locallab.expreti);
assignFromKeyfile(keyFile, "Locallab", "Expsharp", pedited, locallab.expsharp, pedited->locallab.expsharp);
assignFromKeyfile(keyFile, "Locallab", "Expdenoi", pedited, locallab.expdenoi, pedited->locallab.expdenoi);
assignFromKeyfile(keyFile, "Locallab", "Avoid", pedited, locallab.avoid, pedited->locallab.avoid);
assignFromKeyfile(keyFile, "Locallab", "TgainCurve", pedited, locallab.localTgaincurve, pedited->locallab.localTgaincurve);
assignFromKeyfile(keyFile, "Locallab", "TgainCurverab", pedited, locallab.localTgaincurverab, pedited->locallab.localTgaincurverab);
assignFromKeyfile(keyFile, "Locallab", "Cutpast", pedited, locallab.cutpast, pedited->locallab.cutpast);
assignFromKeyfile(keyFile, "Locallab", "Lastdust", pedited, locallab.lastdust, pedited->locallab.lastdust);
assignFromKeyfile(keyFile, "Locallab", "activlum", pedited, locallab.activlum, pedited->locallab.activlum);
assignFromKeyfile(keyFile, "Locallab", "Inversrad", pedited, locallab.inversrad, pedited->locallab.inversrad);
assignFromKeyfile(keyFile, "Locallab", "Inverssha", pedited, locallab.inverssha, pedited->locallab.inverssha);
assignFromKeyfile(keyFile, "Locallab", "Inversret", pedited, locallab.inversret, pedited->locallab.inversret);
assignFromKeyfile(keyFile, "Locallab", "Exclumethod", pedited, locallab.Exclumethod, pedited->locallab.Exclumethod);
assignFromKeyfile(keyFile, "Locallab", "retinexMethod", pedited, locallab.retinexMethod, pedited->locallab.retinexMethod);
assignFromKeyfile(keyFile, "Locallab", "Adjblur", pedited, locallab.adjblur, pedited->locallab.adjblur);
assignFromKeyfile(keyFile, "Locallab", "Warm", pedited, locallab.warm, pedited->locallab.warm);
assignFromKeyfile(keyFile, "Locallab", "Expcomp", pedited, locallab.expcomp, pedited->locallab.expcomp);
assignFromKeyfile(keyFile, "Locallab", "Hlcompr", pedited, locallab.hlcompr, pedited->locallab.hlcompr);
assignFromKeyfile(keyFile, "Locallab", "Hlcomprthresh", pedited, locallab.hlcomprthresh, pedited->locallab.hlcomprthresh);
assignFromKeyfile(keyFile, "Locallab", "Black", pedited, locallab.black, pedited->locallab.black);
assignFromKeyfile(keyFile, "Locallab", "Shcompr", pedited, locallab.shcompr, pedited->locallab.shcompr);
assignFromKeyfile(keyFile, "Locallab", "noiselumf", pedited, locallab.noiselumf, pedited->locallab.noiselumf);
assignFromKeyfile(keyFile, "Locallab", "noiselumc", pedited, locallab.noiselumc, pedited->locallab.noiselumc);
assignFromKeyfile(keyFile, "Locallab", "noiselumdetail", pedited, locallab.noiselumdetail, pedited->locallab.noiselumdetail);
assignFromKeyfile(keyFile, "Locallab", "noiselequal", pedited, locallab.noiselequal, pedited->locallab.noiselequal);
assignFromKeyfile(keyFile, "Locallab", "noisechrodetail", pedited, locallab.noisechrodetail, pedited->locallab.noisechrodetail);
assignFromKeyfile(keyFile, "Locallab", "Bilateral", pedited, locallab.bilateral, pedited->locallab.bilateral);
assignFromKeyfile(keyFile, "Locallab", "Sensiden", pedited, locallab.sensiden, pedited->locallab.sensiden);
assignFromKeyfile(keyFile, "Locallab", "noisechrof", pedited, locallab.noisechrof, pedited->locallab.noisechrof);
assignFromKeyfile(keyFile, "Locallab", "noisechroc", pedited, locallab.noisechroc, pedited->locallab.noisechroc);
assignFromKeyfile(keyFile, "Locallab", "Sharradius", pedited, locallab.sharradius, pedited->locallab.sharradius);
assignFromKeyfile(keyFile, "Locallab", "Sharamount", pedited, locallab.sharamount, pedited->locallab.sharamount);
assignFromKeyfile(keyFile, "Locallab", "Shardamping", pedited, locallab.shardamping, pedited->locallab.shardamping);
assignFromKeyfile(keyFile, "Locallab", "Shariter", pedited, locallab.shariter, pedited->locallab.shariter);
assignFromKeyfile(keyFile, "Locallab", "Sensiex", pedited, locallab.sensiex, pedited->locallab.sensiex);
assignFromKeyfile(keyFile, "Locallab", "Sensitm", pedited, locallab.sensitm, pedited->locallab.sensitm);
assignFromKeyfile(keyFile, "Locallab", "Sensisha", pedited, locallab.sensisha, pedited->locallab.sensisha);
assignFromKeyfile(keyFile, "Locallab", "Sensih", pedited, locallab.sensih, pedited->locallab.sensih);
assignFromKeyfile(keyFile, "Locallab", "Retrab", pedited, locallab.retrab, pedited->locallab.retrab);
assignFromKeyfile(keyFile, "Locallab", "Sensi", pedited, locallab.sensi, pedited->locallab.sensi);
assignFromKeyfile(keyFile, "Locallab", "Sensiexclu", pedited, locallab.sensiexclu, pedited->locallab.sensiexclu);
assignFromKeyfile(keyFile, "Locallab", "Struc", pedited, locallab.struc, pedited->locallab.struc);
assignFromKeyfile(keyFile, "Locallab", "Sensicb", pedited, locallab.sensicb, pedited->locallab.sensicb);
assignFromKeyfile(keyFile, "Locallab", "Sensibn", pedited, locallab.sensibn, pedited->locallab.sensibn);
assignFromKeyfile(keyFile, "Locallab", "Transit", pedited, locallab.transit, pedited->locallab.transit);
assignFromKeyfile(keyFile, "Locallab", "Chrrt", pedited, locallab.chrrt, pedited->locallab.chrrt);
assignFromKeyfile(keyFile, "Locallab", "Str", pedited, locallab.str, pedited->locallab.str);
assignFromKeyfile(keyFile, "Locallab", "Neigh", pedited, locallab.neigh, pedited->locallab.neigh);
assignFromKeyfile(keyFile, "Locallab", "Hueref", pedited, locallab.hueref, pedited->locallab.hueref);
assignFromKeyfile(keyFile, "Locallab", "Huerefblur", pedited, locallab.huerefblur, pedited->locallab.huerefblur);
assignFromKeyfile(keyFile, "Locallab", "Chromaref", pedited, locallab.chromaref, pedited->locallab.chromaref);
assignFromKeyfile(keyFile, "Locallab", "Lumaref", pedited, locallab.lumaref, pedited->locallab.lumaref);
assignFromKeyfile(keyFile, "Locallab", "Sobelref", pedited, locallab.sobelref, pedited->locallab.sobelref);
assignFromKeyfile(keyFile, "Locallab", "Vart", pedited, locallab.vart, pedited->locallab.vart);
assignFromKeyfile(keyFile, "Locallab", "Sensiv", pedited, locallab.sensiv, pedited->locallab.sensiv);
assignFromKeyfile(keyFile, "Locallab", "Pastels", pedited, locallab.pastels, pedited->locallab.pastels);
assignFromKeyfile(keyFile, "Locallab", "Saturated", pedited, locallab.saturated, pedited->locallab.saturated);
if (keyFile.has_key("Locallab", "PSThreshold_" + std::to_string(i))) {
const std::vector<int> thresh = keyFile.get_integer_list("Locallab", "PSThreshold_" + std::to_string(i));
if (keyFile.has_key("Locallab", "PSThreshold")) {
const std::vector<int> thresh = keyFile.get_integer_list("Locallab", "PSThreshold");
if (thresh.size() >= 2) {
locallab.psthreshold.setValues(thresh[0], thresh[1]);
}
if (pedited) {
pedited->locallab.psthreshold = true;
}
}
assignFromKeyfile(keyFile, "Locallab", "ProtectSkins", pedited, locallab.protectskins, pedited->locallab.protectskins);
assignFromKeyfile(keyFile, "Locallab", "AvoidColorShift", pedited, locallab.avoidcolorshift, pedited->locallab.avoidcolorshift);
assignFromKeyfile(keyFile, "Locallab", "PastSatTog", pedited, locallab.pastsattog, pedited->locallab.pastsattog);
assignFromKeyfile(keyFile, "Locallab", "SkinTonesCurve", pedited, locallab.skintonescurve, pedited->locallab.skintonescurve);
assignFromKeyfile(keyFile, "Locallab", "ExCurve", pedited, locallab.excurve, pedited->locallab.excurve);
assignFromKeyfile(keyFile, "Locallab", "Radius", pedited, locallab.radius, pedited->locallab.radius);
assignFromKeyfile(keyFile, "Locallab", "Strength", pedited, locallab.strength, pedited->locallab.strength);
assignFromKeyfile(keyFile, "Locallab", "Stren", pedited, locallab.stren, pedited->locallab.stren);
assignFromKeyfile(keyFile, "Locallab", "Gamma", pedited, locallab.gamma, pedited->locallab.gamma);
assignFromKeyfile(keyFile, "Locallab", "Estop", pedited, locallab.estop, pedited->locallab.estop);
assignFromKeyfile(keyFile, "Locallab", "Scaltm", pedited, locallab.scaltm, pedited->locallab.scaltm);
assignFromKeyfile(keyFile, "Locallab", "Rewei", pedited, locallab.rewei, pedited->locallab.rewei);
for (int i = 0; i < 5; i ++) {
std::stringstream ss;
ss << "Mult" << i;
if (keyFile.has_key("Locallab", ss.str())) {
locallab.mult[i] = keyFile.get_double("Locallab", ss.str());
if (thresh.size() >= 2) {
locallab.psthreshold.at(i).setValues(thresh[0], thresh[1]);
}
if (pedited) {
pedited->locallab.mult[i] = true;
pedited->locallab.psthreshold = true;
}
}
}
assignFromKeyfile(keyFile, "Locallab", "Threshold", pedited, locallab.threshold, pedited->locallab.threshold);
assignFromKeyfile(keyFile, "Locallab", "Chromacbdl", pedited, locallab.chromacbdl, pedited->locallab.chromacbdl);
*/
assignFromKeyfile(keyFile, "Locallab", "ProtectSkins_" + std::to_string(i), pedited, locallab.protectskins.at(i), pedited->locallab.protectskins);
assignFromKeyfile(keyFile, "Locallab", "AvoidColorShift_" + std::to_string(i), pedited, locallab.avoidcolorshift.at(i), pedited->locallab.avoidcolorshift);
assignFromKeyfile(keyFile, "Locallab", "PastSatTog_" + std::to_string(i), pedited, locallab.pastsattog.at(i), pedited->locallab.pastsattog);
assignFromKeyfile(keyFile, "Locallab", "Sensiv_" + std::to_string(i), pedited, locallab.sensiv.at(i), pedited->locallab.sensiv);
assignFromKeyfile(keyFile, "Locallab", "SkinTonesCurve_" + std::to_string(i), pedited, locallab.skintonescurve.at(i), pedited->locallab.skintonescurve);
// Blur & Noise
assignFromKeyfile(keyFile, "Locallab", "Expblur_" + std::to_string(i), pedited, locallab.expblur.at(i), pedited->locallab.expblur);
assignFromKeyfile(keyFile, "Locallab", "Radius_" + std::to_string(i), pedited, locallab.radius.at(i), pedited->locallab.radius);
assignFromKeyfile(keyFile, "Locallab", "Strength_" + std::to_string(i), pedited, locallab.strength.at(i), pedited->locallab.strength);
assignFromKeyfile(keyFile, "Locallab", "Sensibn_" + std::to_string(i), pedited, locallab.sensibn.at(i), pedited->locallab.sensibn);
assignFromKeyfile(keyFile, "Locallab", "BlurMethod_" + std::to_string(i), pedited, locallab.blurMethod.at(i), pedited->locallab.blurMethod);
assignFromKeyfile(keyFile, "Locallab", "activlum_" + std::to_string(i), pedited, locallab.activlum.at(i), pedited->locallab.activlum);
// Tone Mapping
assignFromKeyfile(keyFile, "Locallab", "Exptonemap_" + std::to_string(i), pedited, locallab.exptonemap.at(i), pedited->locallab.exptonemap);
assignFromKeyfile(keyFile, "Locallab", "Stren_" + std::to_string(i), pedited, locallab.stren.at(i), pedited->locallab.stren);
assignFromKeyfile(keyFile, "Locallab", "Gamma_" + std::to_string(i), pedited, locallab.gamma.at(i), pedited->locallab.gamma);
assignFromKeyfile(keyFile, "Locallab", "Estop_" + std::to_string(i), pedited, locallab.estop.at(i), pedited->locallab.estop);
assignFromKeyfile(keyFile, "Locallab", "Scaltm_" + std::to_string(i), pedited, locallab.scaltm.at(i), pedited->locallab.scaltm);
assignFromKeyfile(keyFile, "Locallab", "Rewei_" + std::to_string(i), pedited, locallab.rewei.at(i), pedited->locallab.rewei);
assignFromKeyfile(keyFile, "Locallab", "Sensitm_" + std::to_string(i), pedited, locallab.sensitm.at(i), pedited->locallab.sensitm);
// Retinex
assignFromKeyfile(keyFile, "Locallab", "Expreti_" + std::to_string(i), pedited, locallab.expreti.at(i), pedited->locallab.expreti);
assignFromKeyfile(keyFile, "Locallab", "retinexMethod_" + std::to_string(i), pedited, locallab.retinexMethod.at(i), pedited->locallab.retinexMethod);
assignFromKeyfile(keyFile, "Locallab", "Str_" + std::to_string(i), pedited, locallab.str.at(i), pedited->locallab.str);
assignFromKeyfile(keyFile, "Locallab", "Chrrt_" + std::to_string(i), pedited, locallab.chrrt.at(i), pedited->locallab.chrrt);
assignFromKeyfile(keyFile, "Locallab", "Neigh_" + std::to_string(i), pedited, locallab.neigh.at(i), pedited->locallab.neigh);
assignFromKeyfile(keyFile, "Locallab", "Vart_" + std::to_string(i), pedited, locallab.vart.at(i), pedited->locallab.vart);
assignFromKeyfile(keyFile, "Locallab", "Sensih_" + std::to_string(i), pedited, locallab.sensih.at(i), pedited->locallab.sensih);
assignFromKeyfile(keyFile, "Locallab", "TgainCurve_" + std::to_string(i), pedited, locallab.localTgaincurve.at(i), pedited->locallab.localTgaincurve);
assignFromKeyfile(keyFile, "Locallab", "Inversret_" + std::to_string(i), pedited, locallab.inversret.at(i), pedited->locallab.inversret);
// Sharpening
assignFromKeyfile(keyFile, "Locallab", "Expsharp_" + std::to_string(i), pedited, locallab.expsharp.at(i), pedited->locallab.expsharp);
assignFromKeyfile(keyFile, "Locallab", "Sharradius_" + std::to_string(i), pedited, locallab.sharradius.at(i), pedited->locallab.sharradius);
assignFromKeyfile(keyFile, "Locallab", "Sharamount_" + std::to_string(i), pedited, locallab.sharamount.at(i), pedited->locallab.sharamount);
assignFromKeyfile(keyFile, "Locallab", "Shardamping_" + std::to_string(i), pedited, locallab.shardamping.at(i), pedited->locallab.shardamping);
assignFromKeyfile(keyFile, "Locallab", "Shariter_" + std::to_string(i), pedited, locallab.shariter.at(i), pedited->locallab.shariter);
assignFromKeyfile(keyFile, "Locallab", "Sensisha_" + std::to_string(i), pedited, locallab.sensisha.at(i), pedited->locallab.sensisha);
assignFromKeyfile(keyFile, "Locallab", "Inverssha_" + std::to_string(i), pedited, locallab.inverssha.at(i), pedited->locallab.inverssha);
// Contrast by detail levels
assignFromKeyfile(keyFile, "Locallab", "Expcbdl_" + std::to_string(i), pedited, locallab.expcbdl.at(i), pedited->locallab.expcbdl);
for (int j = 0; j < 5; j ++) {
assignFromKeyfile(keyFile, "Locallab", "Mult" + std::to_string(j) + "_" + std::to_string(i), pedited, locallab.mult[j].at(i), pedited->locallab.mult[j]);
}
assignFromKeyfile(keyFile, "Locallab", "Chromacbdl_" + std::to_string(i), pedited, locallab.chromacbdl.at(i), pedited->locallab.chromacbdl);
assignFromKeyfile(keyFile, "Locallab", "Threshold_" + std::to_string(i), pedited, locallab.threshold.at(i), pedited->locallab.threshold);
assignFromKeyfile(keyFile, "Locallab", "Sensicb_" + std::to_string(i), pedited, locallab.sensicb.at(i), pedited->locallab.sensicb);
// Denoise
assignFromKeyfile(keyFile, "Locallab", "Expdenoi_" + std::to_string(i), pedited, locallab.expdenoi.at(i), pedited->locallab.expdenoi);
assignFromKeyfile(keyFile, "Locallab", "noiselumf_" + std::to_string(i), pedited, locallab.noiselumf.at(i), pedited->locallab.noiselumf);
assignFromKeyfile(keyFile, "Locallab", "noiselumc_" + std::to_string(i), pedited, locallab.noiselumc.at(i), pedited->locallab.noiselumc);
assignFromKeyfile(keyFile, "Locallab", "noiselumdetail_" + std::to_string(i), pedited, locallab.noiselumdetail.at(i), pedited->locallab.noiselumdetail);
assignFromKeyfile(keyFile, "Locallab", "noiselequal_" + std::to_string(i), pedited, locallab.noiselequal.at(i), pedited->locallab.noiselequal);
assignFromKeyfile(keyFile, "Locallab", "noisechrof_" + std::to_string(i), pedited, locallab.noisechrof.at(i), pedited->locallab.noisechrof);
assignFromKeyfile(keyFile, "Locallab", "noisechroc_" + std::to_string(i), pedited, locallab.noisechroc.at(i), pedited->locallab.noisechroc);
assignFromKeyfile(keyFile, "Locallab", "Adjblur_" + std::to_string(i), pedited, locallab.adjblur.at(i), pedited->locallab.adjblur);
assignFromKeyfile(keyFile, "Locallab", "Bilateral_" + std::to_string(i), pedited, locallab.bilateral.at(i), pedited->locallab.bilateral);
assignFromKeyfile(keyFile, "Locallab", "Sensiden_" + std::to_string(i), pedited, locallab.sensiden.at(i), pedited->locallab.sensiden);
assignFromKeyfile(keyFile, "Locallab", "Avoid_" + std::to_string(i), pedited, locallab.avoid.at(i), pedited->locallab.avoid);
}
}