GUI cleanup for White Balance tool (see issue 2010)

This commit is contained in:
natureh 510
2013-11-26 21:12:01 +01:00
parent 34b738e2a2
commit 5d2bb1724b
96 changed files with 2236 additions and 3586 deletions

View File

@@ -153,7 +153,6 @@ void ProcParams::setDefaults () {
labCurve.lcredsk = true;
labCurve.rstprotection = 0;
labCurve.bwtoning = false;
labCurve.lcurve.clear ();
labCurve.lcurve.push_back(DCT_Linear);
labCurve.acurve.clear ();
@@ -356,7 +355,7 @@ void ProcParams::setDefaults () {
vignetting.strength = 1;
vignetting.centerX = 0;
vignetting.centerY = 0;
lensProf.lcpFile="";
lensProf.useDist=lensProf.useVign=true;
lensProf.useCA=false;
@@ -370,35 +369,33 @@ void ProcParams::setDefaults () {
chmixer.blue[0] = 0;
chmixer.blue[1] = 0;
chmixer.blue[2] = 100;
chmixerbw.autoc = false;
chmixerbw.enabledcc = true;
chmixerbw.enabled = false;
chmixerbw.bwred = 33;
chmixerbw.bwgreen = 33;
chmixerbw.bwblue = 33;
chmixerbw.bwredgam = 0;
chmixerbw.bwgreengam = 0;
chmixerbw.bwbluegam = 0;
chmixerbw.bworan = 33;
chmixerbw.bwyell = 33;
chmixerbw.bwcyan = 33;
chmixerbw.bwmag = 33;
chmixerbw.bwpur = 33;
chmixerbw.vcurve.clear ();
chmixerbw.vcurve.push_back (FCT_Linear);
chmixerbw.met = "No";
chmixerbw.fil = "No";
chmixerbw.set = "Nc";
chmixerbw.curve.clear ();
chmixerbw.curve.push_back(DCT_Linear);
chmixerbw.curveMode = ChannelMixerbwParams::TC_MODE_STD_BW;
chmixerbw.curve2.clear ();
chmixerbw.curve2.push_back(DCT_Linear);
chmixerbw.curveMode2 = ChannelMixerbwParams::TC_MODE_STD_BW;
blackwhite.autoc = false;
blackwhite.enabledcc = true;
blackwhite.enabled = false;
blackwhite.mixerRed = 33;
blackwhite.mixerGreen = 33;
blackwhite.mixerBlue = 33;
blackwhite.mixerOrange = 33;
blackwhite.mixerYellow = 33;
blackwhite.mixerCyan = 33;
blackwhite.mixerMagenta = 33;
blackwhite.mixerPurple = 33;
blackwhite.gammaRed = 0;
blackwhite.gammaGreen = 0;
blackwhite.gammaBlue = 0;
blackwhite.luminanceCurve.clear ();
blackwhite.luminanceCurve.push_back (FCT_Linear);
blackwhite.method = "Desaturation";
blackwhite.filter = "None";
blackwhite.setting = "NormalContrast";
blackwhite.beforeCurve.clear ();
blackwhite.beforeCurve.push_back(DCT_Linear);
blackwhite.beforeCurveMode = BlackWhiteParams::TC_MODE_STD_BW;
blackwhite.afterCurve.clear ();
blackwhite.afterCurve.push_back(DCT_Linear);
blackwhite.afterCurveMode = BlackWhiteParams::TC_MODE_STD_BW;
resize.enabled = false;
resize.scale = 1.0;
resize.appliesTo = "Cropped area";
@@ -406,7 +403,7 @@ void ProcParams::setDefaults () {
resize.dataspec = 0;
resize.width = 800;
resize.height = 600;
icm.input = "(cameraICC)";
icm.blendCMSMatrix = false;
icm.toneCurve = false;
@@ -418,7 +415,7 @@ void ProcParams::setDefaults () {
icm.slpos=4.5;
icm.freegamma = false;
dirpyrequalizer.enabled = false;
dirpyrequalizer.enabled = false;
for(int i = 0; i < 4; i ++)
{
dirpyrequalizer.mult[i] = 1.0;
@@ -498,7 +495,6 @@ static Glib::ustring relativePathIfInside(Glib::ustring procparams_fname, bool f
}
Glib::ustring dir1 = Glib::path_get_dirname(procparams_fname) + G_DIR_SEPARATOR_S;
Glib::ustring dir2 = Glib::path_get_dirname(embedded_fname) + G_DIR_SEPARATOR_S;
size_t find = dir2.find(dir1);
if (dir2.substr(0, dir1.length()) != dir1) {
// it's in a different directory, ie not inside
return prefix + embedded_fname;
@@ -520,7 +516,7 @@ int ProcParams::save (Glib::ustring fname, Glib::ustring fname2, bool fnameAbsol
if (!pedited || pedited->general.colorlabel) keyFile.set_integer ("General", "ColorLabel", colorlabel);
if (!pedited || pedited->general.intrash) keyFile.set_boolean ("General", "InTrash", inTrash);
// save tonecurve:
// save tone curve
if (!pedited || pedited->toneCurve.autoexp) keyFile.set_boolean ("Exposure", "Auto", toneCurve.autoexp);
if (!pedited || pedited->toneCurve.clip) keyFile.set_double ("Exposure", "Clip", toneCurve.clip);
if (!pedited || pedited->toneCurve.expcomp) keyFile.set_double ("Exposure", "Compensation", toneCurve.expcomp);
@@ -589,67 +585,70 @@ int ProcParams::save (Glib::ustring fname, Glib::ustring fname2, bool fnameAbsol
Glib::ArrayHandle<int> bmix (chmixer.blue, 3, Glib::OWNERSHIP_NONE);
keyFile.set_integer_list("Channel Mixer", "Blue", bmix);
}
//save chmixer BW
if (!pedited || pedited->chmixerbw.curveMode) {
Glib::ustring methodbw;
switch (chmixerbw.curveMode) {
case (ChannelMixerbwParams::TC_MODE_STD_BW):
methodbw = "Standardbw";
//save Black & White
if (!pedited || pedited->blackwhite.enabled) keyFile.set_boolean ("Black & White", "Enabled", blackwhite.enabled);
if (!pedited || pedited->blackwhite.method) keyFile.set_string ("Black & White", "Method", blackwhite.method );
if (!pedited || pedited->blackwhite.autoc) keyFile.set_boolean ("Black & White", "Auto", blackwhite.autoc);
if (!pedited || pedited->blackwhite.enabledcc) keyFile.set_boolean ("Black & White", "ComplementaryColors", blackwhite.enabledcc);
if (!pedited || pedited->blackwhite.setting) keyFile.set_string ("Black & White", "Setting", blackwhite.setting );
if (!pedited || pedited->blackwhite.filter) keyFile.set_string ("Black & White", "Filter", blackwhite.filter );
if (!pedited || pedited->blackwhite.mixerRed) keyFile.set_integer ("Black & White", "MixerRed", blackwhite.mixerRed);
if (!pedited || pedited->blackwhite.mixerOrange) keyFile.set_integer ("Black & White", "MixerOrange", blackwhite.mixerOrange);
if (!pedited || pedited->blackwhite.mixerYellow) keyFile.set_integer ("Black & White", "MixerYellow", blackwhite.mixerYellow);
if (!pedited || pedited->blackwhite.mixerGreen) keyFile.set_integer ("Black & White", "MixerGreen", blackwhite.mixerGreen);
if (!pedited || pedited->blackwhite.mixerCyan) keyFile.set_integer ("Black & White", "MixerCyan", blackwhite.mixerCyan);
if (!pedited || pedited->blackwhite.mixerBlue) keyFile.set_integer ("Black & White", "MixerBlue", blackwhite.mixerBlue);
if (!pedited || pedited->blackwhite.mixerMagenta) keyFile.set_integer ("Black & White", "MixerMagenta", blackwhite.mixerMagenta);
if (!pedited || pedited->blackwhite.mixerPurple) keyFile.set_integer ("Black & White", "MixerPurple", blackwhite.mixerPurple);
if (!pedited || pedited->blackwhite.gammaRed) keyFile.set_integer ("Black & White", "GammaRed", blackwhite.gammaRed);
if (!pedited || pedited->blackwhite.gammaGreen) keyFile.set_integer ("Black & White", "GammaGreen", blackwhite.gammaGreen);
if (!pedited || pedited->blackwhite.gammaBlue) keyFile.set_integer ("Black & White", "GammaBlue", blackwhite.gammaBlue);
if (!pedited || pedited->blackwhite.luminanceCurve) {
Glib::ArrayHandle<double> luminanceCurve = blackwhite.luminanceCurve;
keyFile.set_double_list("Black & White", "LuminanceCurve", luminanceCurve);
}
if (!pedited || pedited->blackwhite.beforeCurveMode) {
Glib::ustring mode;
switch (blackwhite.beforeCurveMode) {
case (BlackWhiteParams::TC_MODE_STD_BW):
mode = "Standard";
break;
case (ChannelMixerbwParams::TC_MODE_FILMLIKE_BW):
methodbw = "FilmLikebw";
case (BlackWhiteParams::TC_MODE_FILMLIKE_BW):
mode = "FilmLike";
break;
case (ChannelMixerbwParams::TC_MODE_SATANDVALBLENDING_BW):
methodbw = "SatAndValueBlendingbw";
case (BlackWhiteParams::TC_MODE_SATANDVALBLENDING_BW):
mode = "SatAndValueBlending";
break;
case (ChannelMixerbwParams::TC_MODE_WEIGHTEDSTD_BW):
methodbw = "WeightedStdbw";
case (BlackWhiteParams::TC_MODE_WEIGHTEDSTD_BW):
mode = "WeightedStd";
break;
}
keyFile.set_string ("Channel Mixer", "CurveMode", methodbw);
keyFile.set_string ("Black & White", "BeforeCurveMode", mode);
}
if (!pedited || pedited->chmixerbw.curveMode2) {
Glib::ustring methodbw2;
switch (chmixerbw.curveMode2) {
case (ChannelMixerbwParams::TC_MODE_STD_BW):
methodbw2 = "Standard";
if (!pedited || pedited->blackwhite.afterCurveMode) {
Glib::ustring mode;
switch (blackwhite.afterCurveMode) {
case (BlackWhiteParams::TC_MODE_STD_BW):
mode = "Standard";
break;
case (ChannelMixerbwParams::TC_MODE_WEIGHTEDSTD_BW):
methodbw2 = "WeightedStd";
case (BlackWhiteParams::TC_MODE_WEIGHTEDSTD_BW):
mode = "WeightedStd";
break;
default:
break;
}
keyFile.set_string ("Channel Mixer", "CurveMode2", methodbw2);
keyFile.set_string ("Black & White", "AfterCurveMode", mode);
}
if (!pedited || pedited->chmixerbw.curve) {
Glib::ArrayHandle<double> tcurvebw = chmixerbw.curve;
keyFile.set_double_list("Channel Mixer", "Curve", tcurvebw);
if (!pedited || pedited->blackwhite.beforeCurve) {
Glib::ArrayHandle<double> tcurvebw = blackwhite.beforeCurve;
keyFile.set_double_list("Black & White", "BeforeCurve", tcurvebw);
}
if (!pedited || pedited->chmixerbw.curve2) {
Glib::ArrayHandle<double> tcurvebw2 = chmixerbw.curve2;
keyFile.set_double_list("Channel Mixer", "Curve2", tcurvebw2);
}
if (!pedited || pedited->chmixerbw.autoc) keyFile.set_boolean ("Channel Mixer", "Autoc", chmixerbw.autoc);
if (!pedited || pedited->chmixerbw.enabledcc) keyFile.set_boolean ("Channel Mixer", "Enabledcc", chmixerbw.enabledcc);
if (!pedited || pedited->chmixerbw.enabled) keyFile.set_boolean ("Channel Mixer", "Enabled", chmixerbw.enabled);
if (!pedited || pedited->chmixerbw.bwred) keyFile.set_integer ("Channel Mixer", "bwred", chmixerbw.bwred);
if (!pedited || pedited->chmixerbw.bwgreen) keyFile.set_integer ("Channel Mixer", "bwgreen", chmixerbw.bwgreen);
if (!pedited || pedited->chmixerbw.bwblue) keyFile.set_integer ("Channel Mixer", "bwblue", chmixerbw.bwblue);
if (!pedited || pedited->chmixerbw.bwredgam) keyFile.set_integer ("Channel Mixer", "bwredgam", chmixerbw.bwredgam);
if (!pedited || pedited->chmixerbw.bwgreengam) keyFile.set_integer ("Channel Mixer", "bwgreengam", chmixerbw.bwgreengam);
if (!pedited || pedited->chmixerbw.bwbluegam) keyFile.set_integer ("Channel Mixer", "bwbluegam", chmixerbw.bwbluegam);
if (!pedited || pedited->chmixerbw.fil) keyFile.set_string ("Channel Mixer", "Filter", chmixerbw.fil );
if (!pedited || pedited->chmixerbw.met) keyFile.set_string ("Channel Mixer", "Met", chmixerbw.met );
if (!pedited || pedited->chmixerbw.set) keyFile.set_string ("Channel Mixer", "Set", chmixerbw.set );
if (!pedited || pedited->chmixerbw.bworan) keyFile.set_integer ("Channel Mixer", "bworan", chmixerbw.bworan);
if (!pedited || pedited->chmixerbw.bwyell) keyFile.set_integer ("Channel Mixer", "bwyell", chmixerbw.bwyell);
if (!pedited || pedited->chmixerbw.bwcyan) keyFile.set_integer ("Channel Mixer", "bwcyan", chmixerbw.bwcyan);
if (!pedited || pedited->chmixerbw.bwmag) keyFile.set_integer ("Channel Mixer", "bwmag", chmixerbw.bwmag);
if (!pedited || pedited->chmixerbw.bwpur) keyFile.set_integer ("Channel Mixer", "bwpur", chmixerbw.bwpur);
if (!pedited || pedited->chmixerbw.vcurve) {
Glib::ArrayHandle<double> vcurve = chmixerbw.vcurve;
keyFile.set_double_list("Channel Mixer", "VCurve", vcurve);
if (!pedited || pedited->blackwhite.afterCurve) {
Glib::ArrayHandle<double> tcurvebw = blackwhite.afterCurve;
keyFile.set_double_list("Black & White", "AfterCurve", tcurvebw);
}
// save luma curve
@@ -658,7 +657,6 @@ int ProcParams::save (Glib::ustring fname, Glib::ustring fname2, bool fnameAbsol
if (!pedited || pedited->labCurve.chromaticity) keyFile.set_integer ("Luminance Curve", "Chromaticity", labCurve.chromaticity);
if (!pedited || pedited->labCurve.avoidcolorshift) keyFile.set_boolean ("Luminance Curve", "AvoidColorShift", labCurve.avoidcolorshift);
if (!pedited || pedited->labCurve.rstprotection) keyFile.set_double ("Luminance Curve", "RedAndSkinTonesProtection", labCurve.rstprotection);
if (!pedited || pedited->labCurve.bwtoning) keyFile.set_boolean ("Luminance Curve", "BWtoning", labCurve.bwtoning);
if (!pedited || pedited->labCurve.lcredsk) keyFile.set_boolean ("Luminance Curve", "LCredsk", labCurve.lcredsk);
if (!pedited || pedited->labCurve.lcurve) {
@@ -1173,14 +1171,14 @@ if (keyFile.has_group ("Exposure")) {
}
// load channel mixer curve
if (keyFile.has_group ("Channel Mixer")) {
if (keyFile.has_group ("Channel Mixer")) {
if (keyFile.has_key ("Channel Mixer", "Red") && keyFile.has_key ("Channel Mixer", "Green") && keyFile.has_key ("Channel Mixer", "Blue")) {
if (pedited) {
pedited->chmixer.red[0] = pedited->chmixer.red[1] = pedited->chmixer.red[2] = true;
pedited->chmixer.green[0] = pedited->chmixer.green[1] = pedited->chmixer.green[2] = true;
pedited->chmixer.blue[0] = pedited->chmixer.blue[1] = pedited->chmixer.blue[2] = true;
}
Glib::ArrayHandle<int> rmix = keyFile.get_integer_list ("Channel Mixer", "Red");
Glib::ArrayHandle<int> gmix = keyFile.get_integer_list ("Channel Mixer", "Green");
Glib::ArrayHandle<int> bmix = keyFile.get_integer_list ("Channel Mixer", "Blue");
@@ -1188,41 +1186,45 @@ if (keyFile.has_group ("Channel Mixer")) {
memcpy (chmixer.green, gmix.data(), 3*sizeof(int));
memcpy (chmixer.blue, bmix.data(), 3*sizeof(int));
}
//load channel mixer BW
if (keyFile.has_key ("Channel Mixer", "CurveMode")) {
Glib::ustring sMode = keyFile.get_string ("Channel Mixer", "CurveMode");
if (sMode == "Standardbw") chmixerbw.curveMode = ChannelMixerbwParams::TC_MODE_STD_BW;
else if (sMode == "FilmLikebw") chmixerbw.curveMode = ChannelMixerbwParams::TC_MODE_FILMLIKE_BW;
else if (sMode == "SatAndValueBlendingbw") chmixerbw.curveMode = ChannelMixerbwParams::TC_MODE_SATANDVALBLENDING_BW;
else if (sMode == "WeightedStdbw") chmixerbw.curveMode = ChannelMixerbwParams::TC_MODE_WEIGHTEDSTD_BW;
if (pedited) pedited->chmixerbw.curveMode = true;
}
// load black & white
if (keyFile.has_group ("Black & White")) {
if (keyFile.has_key ("Black & White", "Enabled")) { blackwhite.enabled = keyFile.get_boolean ("Black & White", "Enabled"); if (pedited) pedited->blackwhite.enabled = true; }
if (keyFile.has_key ("Black & White", "Method")) { blackwhite.method = keyFile.get_string ("Black & White", "Method"); if (pedited) pedited->blackwhite.method = true; }
if (keyFile.has_key ("Black & White", "Auto")) { blackwhite.autoc = keyFile.get_boolean ("Black & White", "Auto"); if (pedited) pedited->blackwhite.autoc = true; }
if (keyFile.has_key ("Black & White", "ComplementaryColors")) { blackwhite.enabledcc = keyFile.get_boolean ("Black & White", "ComplementaryColors"); if (pedited) pedited->blackwhite.enabledcc = true; }
if (keyFile.has_key ("Black & White", "MixerRed")) { blackwhite.mixerRed = keyFile.get_integer ("Black & White", "MixerRed"); if (pedited) pedited->blackwhite.mixerRed = true; }
if (keyFile.has_key ("Black & White", "MixerOrange")) { blackwhite.mixerOrange = keyFile.get_integer ("Black & White", "MixerOrange"); if (pedited) pedited->blackwhite.mixerOrange = true; }
if (keyFile.has_key ("Black & White", "MixerYellow")) { blackwhite.mixerYellow = keyFile.get_integer ("Black & White", "MixerYellow"); if (pedited) pedited->blackwhite.mixerYellow = true; }
if (keyFile.has_key ("Black & White", "MixerGreen")) { blackwhite.mixerGreen = keyFile.get_integer ("Black & White", "MixerGreen"); if (pedited) pedited->blackwhite.mixerGreen = true; }
if (keyFile.has_key ("Black & White", "MixerCyan")) { blackwhite.mixerCyan = keyFile.get_integer ("Black & White", "MixerCyan"); if (pedited) pedited->blackwhite.mixerCyan = true; }
if (keyFile.has_key ("Black & White", "MixerBlue")) { blackwhite.mixerBlue = keyFile.get_integer ("Black & White", "MixerBlue"); if (pedited) pedited->blackwhite.mixerBlue = true; }
if (keyFile.has_key ("Black & White", "MixerMagenta")) { blackwhite.mixerMagenta = keyFile.get_integer ("Black & White", "MixerMagenta"); if (pedited) pedited->blackwhite.mixerMagenta = true; }
if (keyFile.has_key ("Black & White", "MixerPurple")) { blackwhite.mixerPurple = keyFile.get_integer ("Black & White", "MixerPurple"); if (pedited) pedited->blackwhite.mixerPurple = true; }
if (keyFile.has_key ("Black & White", "GammaRed")) { blackwhite.gammaRed = keyFile.get_integer ("Black & White", "GammaRed"); if (pedited) pedited->blackwhite.gammaRed = true; }
if (keyFile.has_key ("Black & White", "GammaGreen")) { blackwhite.gammaGreen = keyFile.get_integer ("Black & White", "GammaGreen"); if (pedited) pedited->blackwhite.gammaGreen = true; }
if (keyFile.has_key ("Black & White", "GammaBlue")) { blackwhite.gammaBlue = keyFile.get_integer ("Black & White", "GammaBlue"); if (pedited) pedited->blackwhite.gammaBlue = true; }
if (keyFile.has_key ("Black & White", "Filter")) { blackwhite.filter = keyFile.get_string ("Black & White", "Filter"); if (pedited) pedited->blackwhite.filter = true; }
if (keyFile.has_key ("Black & White", "Setting")) { blackwhite.setting = keyFile.get_string ("Black & White", "Setting"); if (pedited) pedited->blackwhite.setting = true; }
if (keyFile.has_key ("Black & White", "LuminanceCurve")) { blackwhite.luminanceCurve = keyFile.get_double_list ("Black & White", "LuminanceCurve"); if (pedited) pedited->blackwhite.luminanceCurve = true; }
if (keyFile.has_key ("Black & White", "BeforeCurve")) { blackwhite.beforeCurve = keyFile.get_double_list ("Black & White", "BeforeCurve"); if (pedited) pedited->blackwhite.beforeCurve = true; }
if (keyFile.has_key ("Black & White", "BeforeCurveMode")) {
Glib::ustring sMode = keyFile.get_string ("Black & White", "BeforeCurveMode");
if (sMode == "Standard") blackwhite.beforeCurveMode = BlackWhiteParams::TC_MODE_STD_BW;
else if (sMode == "FilmLike") blackwhite.beforeCurveMode = BlackWhiteParams::TC_MODE_FILMLIKE_BW;
else if (sMode == "SatAndValueBlending") blackwhite.beforeCurveMode = BlackWhiteParams::TC_MODE_SATANDVALBLENDING_BW;
else if (sMode == "WeightedStd") blackwhite.beforeCurveMode = BlackWhiteParams::TC_MODE_WEIGHTEDSTD_BW;
if (pedited) pedited->blackwhite.beforeCurveMode = true;
}
if (keyFile.has_key ("Channel Mixer", "CurveMode2")) {
Glib::ustring sMode2 = keyFile.get_string ("Channel Mixer", "CurveMode2");
if (sMode2 == "Standard") chmixerbw.curveMode2 = ChannelMixerbwParams::TC_MODE_STD_BW;
else if (sMode2 == "WeightedStd") chmixerbw.curveMode2 = ChannelMixerbwParams::TC_MODE_WEIGHTEDSTD_BW;
if (pedited) pedited->chmixerbw.curveMode2 = true;
if (keyFile.has_key ("Black & White", "AfterCurve")) { blackwhite.afterCurve = keyFile.get_double_list ("Black & White", "AfterCurve"); if (pedited) pedited->blackwhite.afterCurve = true; }
if (keyFile.has_key ("Black & White", "AfterCurveMode")) {
Glib::ustring sMode2 = keyFile.get_string ("Black & White", "AfterCurveMode");
if (sMode2 == "Standard") blackwhite.afterCurveMode = BlackWhiteParams::TC_MODE_STD_BW;
else if (sMode2 == "WeightedStd") blackwhite.afterCurveMode = BlackWhiteParams::TC_MODE_WEIGHTEDSTD_BW;
if (pedited) pedited->blackwhite.afterCurveMode = true;
}
if (keyFile.has_key ("Channel Mixer", "Autoc")) { chmixerbw.autoc = keyFile.get_boolean ("Channel Mixer", "Autoc"); if (pedited) pedited->chmixerbw.autoc = true; }
if (keyFile.has_key ("Channel Mixer", "Enabledcc")) { chmixerbw.enabledcc = keyFile.get_boolean ("Channel Mixer", "Enabledcc"); if (pedited) pedited->chmixerbw.enabledcc = true; }
if (keyFile.has_key ("Channel Mixer", "Enabled")) { chmixerbw.enabled = keyFile.get_boolean ("Channel Mixer", "Enabled"); if (pedited) pedited->chmixerbw.enabled = true; }
if (keyFile.has_key ("Channel Mixer", "bwred")) { chmixerbw.bwred = keyFile.get_integer ("Channel Mixer", "bwred"); if (pedited) pedited->chmixerbw.bwred = true; }
if (keyFile.has_key ("Channel Mixer", "bwgreen")) { chmixerbw.bwgreen = keyFile.get_integer ("Channel Mixer", "bwgreen"); if (pedited) pedited->chmixerbw.bwgreen = true; }
if (keyFile.has_key ("Channel Mixer", "bwblue")) { chmixerbw.bwblue = keyFile.get_integer ("Channel Mixer", "bwblue"); if (pedited) pedited->chmixerbw.bwblue = true; }
if (keyFile.has_key ("Channel Mixer", "bwredgam")) { chmixerbw.bwredgam = keyFile.get_integer ("Channel Mixer", "bwredgam"); if (pedited) pedited->chmixerbw.bwredgam = true; }
if (keyFile.has_key ("Channel Mixer", "bwgreengam")) { chmixerbw.bwgreengam = keyFile.get_integer ("Channel Mixer", "bwgreengam"); if (pedited) pedited->chmixerbw.bwgreengam = true; }
if (keyFile.has_key ("Channel Mixer", "bwbluegam")) { chmixerbw.bwbluegam = keyFile.get_integer ("Channel Mixer", "bwbluegam"); if (pedited) pedited->chmixerbw.bwbluegam = true; }
if (keyFile.has_key ("Channel Mixer", "Filter")) {chmixerbw.fil = keyFile.get_string ("Channel Mixer", "Filter"); if (pedited) pedited->chmixerbw.fil = true; }
if (keyFile.has_key ("Channel Mixer", "Set")) {chmixerbw.set = keyFile.get_string ("Channel Mixer", "Set"); if (pedited) pedited->chmixerbw.set = true; }
if (keyFile.has_key ("Channel Mixer", "Met")) {chmixerbw.met = keyFile.get_string ("Channel Mixer", "Met"); if (pedited) pedited->chmixerbw.met = true; }
if (keyFile.has_key ("Channel Mixer", "bworan")) { chmixerbw.bworan = keyFile.get_integer ("Channel Mixer", "bworan"); if (pedited) pedited->chmixerbw.bworan = true; }
if (keyFile.has_key ("Channel Mixer", "bwyell")) { chmixerbw.bwyell = keyFile.get_integer ("Channel Mixer", "bwyell"); if (pedited) pedited->chmixerbw.bwyell = true; }
if (keyFile.has_key ("Channel Mixer", "bwcyan")) { chmixerbw.bwcyan = keyFile.get_integer ("Channel Mixer", "bwcyan"); if (pedited) pedited->chmixerbw.bwcyan = true; }
if (keyFile.has_key ("Channel Mixer", "bwmag")) { chmixerbw.bwmag = keyFile.get_integer ("Channel Mixer", "bwmag"); if (pedited) pedited->chmixerbw.bwmag = true; }
if (keyFile.has_key ("Channel Mixer", "bwpur")) { chmixerbw.bwpur = keyFile.get_integer ("Channel Mixer", "bwpur"); if (pedited) pedited->chmixerbw.bwpur = true; }
if (ppVersion>=300) {
if (keyFile.has_key ("Channel Mixer", "VCurve")) {chmixerbw.vcurve = keyFile.get_double_list ("Channel Mixer", "VCurve"); if (pedited) pedited->chmixerbw.vcurve = true; }
}
}
// load luma curve
@@ -1243,7 +1245,15 @@ if (keyFile.has_group ("Luminance Curve")) {
if (keyFile.has_key ("Luminance Curve", "RedAndSkinTonesProtection")) { labCurve.rstprotection = keyFile.get_double ("Luminance Curve", "RedAndSkinTonesProtection"); if (pedited) pedited->labCurve.rstprotection = true; }
}
if (keyFile.has_key ("Luminance Curve", "LCredsk")) { labCurve.lcredsk = keyFile.get_boolean ("Luminance Curve", "LCredsk"); if (pedited) pedited->labCurve.lcredsk = true; }
if (keyFile.has_key ("Luminance Curve", "BWtoning")) { labCurve.bwtoning = keyFile.get_boolean ("Luminance Curve", "BWtoning"); if (pedited) pedited->labCurve.bwtoning = true; }
if (ppVersion < 314)
// Backward compatibility: If BWtoning is true, Chromaticity has to be set to -100, which will produce the same effect
// and will enable the b&w toning mode ('a' & 'b' curves)
if (keyFile.has_key ("Luminance Curve", "BWtoning")) {
if ( keyFile.get_boolean ("Luminance Curve", "BWtoning")) {
labCurve.chromaticity = -100;
if (pedited) pedited->labCurve.chromaticity = true;
}
}
if (keyFile.has_key ("Luminance Curve", "LCurve")) { labCurve.lcurve = keyFile.get_double_list ("Luminance Curve", "LCurve"); if (pedited) pedited->labCurve.lcurve = true; }
if (keyFile.has_key ("Luminance Curve", "aCurve")) { labCurve.acurve = keyFile.get_double_list ("Luminance Curve", "aCurve"); if (pedited) pedited->labCurve.acurve = true; }
if (keyFile.has_key ("Luminance Curve", "bCurve")) { labCurve.bcurve = keyFile.get_double_list ("Luminance Curve", "bCurve"); if (pedited) pedited->labCurve.bcurve = true; }
@@ -1746,8 +1756,8 @@ bool ProcParams::operator== (const ProcParams& other) {
&& toneCurve.autoexp == other.toneCurve.autoexp
&& toneCurve.clip == other.toneCurve.clip
&& toneCurve.expcomp == other.toneCurve.expcomp
&& toneCurve.curveMode == other.toneCurve.curveMode
&& toneCurve.curveMode2 == other.toneCurve.curveMode2
&& toneCurve.curveMode == other.toneCurve.curveMode
&& toneCurve.curveMode2 == other.toneCurve.curveMode2
&& labCurve.lcurve == other.labCurve.lcurve
&& labCurve.acurve == other.labCurve.acurve
&& labCurve.bcurve == other.labCurve.bcurve
@@ -1760,8 +1770,7 @@ bool ProcParams::operator== (const ProcParams& other) {
&& labCurve.chromaticity == other.labCurve.chromaticity
&& labCurve.avoidcolorshift == other.labCurve.avoidcolorshift
&& labCurve.rstprotection == other.labCurve.rstprotection
&& labCurve.bwtoning == other.labCurve.bwtoning
&& labCurve.lcredsk == other.labCurve.lcredsk
&& labCurve.lcredsk == other.labCurve.lcredsk
&& sharpenEdge.enabled == other.sharpenEdge.enabled
&& sharpenEdge.passes == other.sharpenEdge.passes
&& sharpenEdge.amount == other.sharpenEdge.amount
@@ -1812,9 +1821,9 @@ bool ProcParams::operator== (const ProcParams& other) {
&& colorappearance.badpixsl == other.colorappearance.badpixsl
&& colorappearance.wbmodel == other.colorappearance.wbmodel
&& colorappearance.algo == other.colorappearance.algo
&& colorappearance.curveMode == other.colorappearance.curveMode
&& colorappearance.curveMode2 == other.colorappearance.curveMode2
&& colorappearance.curveMode3 == other.colorappearance.curveMode3
&& colorappearance.curveMode == other.colorappearance.curveMode
&& colorappearance.curveMode2 == other.colorappearance.curveMode2
&& colorappearance.curveMode3 == other.colorappearance.curveMode3
&& colorappearance.jlight == other.colorappearance.jlight
&& colorappearance.qbright == other.colorappearance.qbright
&& colorappearance.chroma == other.colorappearance.chroma
@@ -1874,10 +1883,10 @@ bool ProcParams::operator== (const ProcParams& other) {
&& rotate.degree == other.rotate.degree
&& commonTrans.autofill == other.commonTrans.autofill
&& distortion.amount == other.distortion.amount
&& lensProf.lcpFile == other.lensProf.lcpFile
&& lensProf.useDist == other.lensProf.useDist
&& lensProf.useVign == other.lensProf.useVign
&& lensProf.useCA == other.lensProf.useCA
&& lensProf.lcpFile == other.lensProf.lcpFile
&& lensProf.useDist == other.lensProf.useDist
&& lensProf.useVign == other.lensProf.useVign
&& lensProf.useCA == other.lensProf.useCA
&& perspective.horizontal == other.perspective.horizontal
&& perspective.vertical == other.perspective.vertical
&& gradient.enabled == other.gradient.enabled
@@ -1900,27 +1909,26 @@ bool ProcParams::operator== (const ProcParams& other) {
&& !memcmp (&chmixer.red, &other.chmixer.red, 3*sizeof(int))
&& !memcmp (&chmixer.green, &other.chmixer.green, 3*sizeof(int))
&& !memcmp (&chmixer.blue, &other.chmixer.blue, 3*sizeof(int))
&& chmixerbw.bwred == other.chmixerbw.bwred
&& chmixerbw.bwgreen == other.chmixerbw.bwgreen
&& chmixerbw.bwblue == other.chmixerbw.bwblue
&& chmixerbw.bwredgam == other.chmixerbw.bwredgam
&& chmixerbw.bwgreengam == other.chmixerbw.bwgreengam
&& chmixerbw.bwbluegam == other.chmixerbw.bwbluegam
&& chmixerbw.fil == other.chmixerbw.fil
&& chmixerbw.set == other.chmixerbw.set
&& chmixerbw.met == other.chmixerbw.met
&& chmixerbw.bworan == other.chmixerbw.bworan
&& chmixerbw.bwyell == other.chmixerbw.bwyell
&& chmixerbw.bwmag == other.chmixerbw.bwmag
&& chmixerbw.bwcyan == other.chmixerbw.bwcyan
&& chmixerbw.bwpur == other.chmixerbw.bwpur
&& chmixerbw.vcurve == other.chmixerbw.vcurve
&& chmixerbw.curve == other.chmixerbw.curve
&& chmixerbw.curve2 == other.chmixerbw.curve2
&& chmixerbw.curveMode == other.chmixerbw.curveMode
&& chmixerbw.curveMode2 == other.chmixerbw.curveMode2
&& chmixerbw.autoc == other.chmixerbw.autoc
&& blackwhite.mixerRed == other.blackwhite.mixerRed
&& blackwhite.mixerOrange == other.blackwhite.mixerOrange
&& blackwhite.mixerYellow == other.blackwhite.mixerYellow
&& blackwhite.mixerGreen == other.blackwhite.mixerGreen
&& blackwhite.mixerCyan == other.blackwhite.mixerCyan
&& blackwhite.mixerBlue == other.blackwhite.mixerBlue
&& blackwhite.mixerMagenta == other.blackwhite.mixerMagenta
&& blackwhite.mixerPurple == other.blackwhite.mixerPurple
&& blackwhite.gammaRed == other.blackwhite.gammaRed
&& blackwhite.gammaGreen == other.blackwhite.gammaGreen
&& blackwhite.gammaBlue == other.blackwhite.gammaBlue
&& blackwhite.filter == other.blackwhite.filter
&& blackwhite.setting == other.blackwhite.setting
&& blackwhite.method == other.blackwhite.method
&& blackwhite.luminanceCurve == other.blackwhite.luminanceCurve
&& blackwhite.beforeCurve == other.blackwhite.beforeCurve
&& blackwhite.afterCurve == other.blackwhite.afterCurve
&& blackwhite.beforeCurveMode == other.blackwhite.beforeCurveMode
&& blackwhite.afterCurveMode == other.blackwhite.afterCurveMode
&& blackwhite.autoc == other.blackwhite.autoc
&& hlrecovery.enabled == other.hlrecovery.enabled
&& hlrecovery.method == other.hlrecovery.method
&& resize.scale == other.resize.scale
@@ -1949,13 +1957,13 @@ bool ProcParams::operator== (const ProcParams& other) {
&& icm.input == other.icm.input
&& icm.toneCurve == other.icm.toneCurve
&& icm.blendCMSMatrix == other.icm.blendCMSMatrix
&& icm.dcpIlluminant == other.icm.dcpIlluminant
&& icm.dcpIlluminant == other.icm.dcpIlluminant
&& icm.working == other.icm.working
&& icm.output == other.icm.output
&& icm.gamma == other.icm.gamma
&& icm.freegamma == other.icm.freegamma
&& icm.gampos == other.icm.gampos
&& icm.slpos == other.icm.slpos
&& icm.gamma == other.icm.gamma
&& icm.freegamma == other.icm.freegamma
&& icm.gampos == other.icm.gampos
&& icm.slpos == other.icm.slpos
&& dirpyrequalizer == other.dirpyrequalizer
&& hsvequalizer.hcurve == other.hsvequalizer.hcurve
&& hsvequalizer.scurve == other.hsvequalizer.scurve