Black and white channel-mixer new algorithm for orange Yellow Cyan Purple Magenta
This commit is contained in:
parent
143cf516d5
commit
aa986a4c76
@ -456,6 +456,7 @@ HISTORY_MSG_247;'LH' curve
|
||||
HISTORY_MSG_248;'HH' curve
|
||||
HISTORY_MSG_249;CbDL - Threshold
|
||||
HISTORY_MSG_250;NR - Enhanced
|
||||
HISTORY_MSG_251;B&W - Algorithm
|
||||
HISTORY_NEWSNAPSHOT;Add
|
||||
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: <b>Alt-s</b>
|
||||
HISTORY_SNAPSHOTS;Snapshots
|
||||
@ -939,6 +940,10 @@ TP_BWMIX_TCMODE_STANDARD;B&W Standard
|
||||
TP_BWMIX_TCMODE_WEIGHTEDSTD;B&W Weighted Standard
|
||||
TP_BWMIX_VAL;L
|
||||
TP_BWMIX_YELLOW;Yellow
|
||||
TP_BWMIX_ALGO;Algorithm OYCPM
|
||||
TP_BWMIX_ALGO_LI;Linear
|
||||
TP_BWMIX_ALGO_SP;Special effects
|
||||
TP_BWMIX_ALGO_TOOLTIP;Linear :will produce a normal linear response\nSpecial effects: will produce special effects by mixing non-linear channels
|
||||
TP_CACORRECTION_BLUE;Blue
|
||||
TP_CACORRECTION_LABEL;Chromatic Aberration Correction
|
||||
TP_CACORRECTION_RED;Red
|
||||
|
@ -432,7 +432,7 @@ namespace rtengine {
|
||||
* @param setting BlackWhite::setting
|
||||
* @param setting BlackWhite::filter
|
||||
*/
|
||||
void Color::computeBWMixerConstants (const Glib::ustring &setting, const Glib::ustring &filter, float &mixerRed, float &mixerGreen,
|
||||
void Color::computeBWMixerConstants (const Glib::ustring &setting, const Glib::ustring &filter, const Glib::ustring &algo, float &mixerRed, float &mixerGreen,
|
||||
float &mixerBlue, float mixerOrange, float mixerYellow, float mixerCyan, float mixerPurple, float mixerMagenta,
|
||||
bool autoc, bool complement, float &kcorec, double &rrm, double &ggm, double &bbm)
|
||||
{
|
||||
@ -488,24 +488,34 @@ namespace rtengine {
|
||||
float crM=0.f;
|
||||
float cgM=0.f;
|
||||
float cbM=0.f;
|
||||
|
||||
//printf("mixred=%f\n",mixerRed);
|
||||
|
||||
float fcompl = 1.f;
|
||||
if(complement) fcompl = 3.f;
|
||||
if(complement && algo=="SP") fcompl = 3.f;//special
|
||||
else if(complement && algo=="LI") fcompl = 1.5f;//linear
|
||||
// ponderate filters: report to R=G=B=33
|
||||
// I ponder RGB channel, not only orange or yellow or cyan, etc...it's my choice !
|
||||
if(mixerOrange != 33) {
|
||||
if (mixerOrange >= 33) orM = fcompl*(mixerOrange*0.67f - 22.11f)/100.f; else orM = fcompl*(-0.3f*mixerOrange +9.9f)/100.f;
|
||||
if (mixerOrange >= 33) ogM = fcompl*(-0.164f*mixerOrange+5.412f)/100.f; else ogM = fcompl*(0.4f*mixerOrange-13.2f)/100.f;
|
||||
if (algo=="SP") {//special
|
||||
if (mixerOrange >= 33) orM = fcompl*(mixerOrange*0.67f - 22.11f)/100.f; else orM = fcompl*(-0.3f*mixerOrange +9.9f)/100.f;
|
||||
if (mixerOrange >= 33) ogM = fcompl*(-0.164f*mixerOrange+5.412f)/100.f; else ogM = fcompl*(0.4f*mixerOrange-13.2f)/100.f;
|
||||
}
|
||||
else if (algo=="LI") {//linear
|
||||
orM = fcompl*(mixerOrange - 33.f)/100.f;
|
||||
ogM = fcompl*(0.5f*mixerOrange-16.5f)/100.f;
|
||||
}
|
||||
if(complement) obM =(-0.492f*mixerOrange+16.236f)/100.f;
|
||||
mixerRed += orM;
|
||||
mixerGreen += ogM;
|
||||
mixerBlue += obM;
|
||||
koymcp += (orM+ogM+obM);
|
||||
// printf("mixred+ORange=%f\n",mixerRed);
|
||||
|
||||
}
|
||||
if(mixerYellow != 33) {
|
||||
yrM = fcompl*(-0.134f*mixerYellow+4.422f)/100.f;//22.4
|
||||
ygM = fcompl*( 0.5f *mixerYellow-16.5f )/100.f;
|
||||
if (algo=="SP") yrM = fcompl*(-0.134f*mixerYellow+4.422f)/100.f;//22.4
|
||||
else if (algo=="LI")yrM = fcompl*(0.5f*mixerYellow-16.5f)/100.f;//22.4
|
||||
ygM = fcompl*(0.5f *mixerYellow-16.5f )/100.f;
|
||||
if(complement) ybM =(-0.492f*mixerYellow+16.236f)/100.f;
|
||||
mixerRed += yrM;
|
||||
mixerGreen += ygM;
|
||||
@ -513,8 +523,14 @@ namespace rtengine {
|
||||
koymcp += (yrM+ygM+ybM);
|
||||
}
|
||||
if(mixerMagenta != 33) {
|
||||
if(mixerMagenta >= 33) mrM = fcompl*( 0.67f *mixerMagenta-22.11f)/100.f; else mrM = fcompl*(-0.3f*mixerMagenta +9.9f)/100.f;
|
||||
if(mixerMagenta >= 33) mbM = fcompl*(-0.164f*mixerMagenta+5.412f)/100.f; else mbM = fcompl*( 0.4f*mixerMagenta-13.2f)/100.f;
|
||||
if (algo=="SP"){
|
||||
if(mixerMagenta >= 33) mrM = fcompl*( 0.67f *mixerMagenta-22.11f)/100.f; else mrM = fcompl*(-0.3f*mixerMagenta +9.9f)/100.f;
|
||||
if(mixerMagenta >= 33) mbM = fcompl*(-0.164f*mixerMagenta+5.412f)/100.f; else mbM = fcompl*( 0.4f*mixerMagenta-13.2f)/100.f;
|
||||
}
|
||||
else if (algo=="LI"){
|
||||
mrM = fcompl*(mixerMagenta-33.f)/100.f;
|
||||
mbM = fcompl*(0.5f*mixerMagenta-16.5f)/100.f;
|
||||
}
|
||||
if(complement) mgM =(-0.492f*mixerMagenta+16.236f)/100.f;
|
||||
mixerRed += mrM;
|
||||
mixerGreen += mgM;
|
||||
@ -522,7 +538,8 @@ namespace rtengine {
|
||||
koymcp += (mrM+mgM+mbM);
|
||||
}
|
||||
if(mixerPurple != 33) {
|
||||
prM = fcompl*(-0.134f*mixerPurple+4.422f)/100.f;
|
||||
if (algo=="SP") prM = fcompl*(-0.134f*mixerPurple+4.422f)/100.f;
|
||||
else if (algo=="LI")prM = fcompl*(0.5f*mixerPurple-16.5f)/100.f;
|
||||
pbM = fcompl*(0.5f*mixerPurple-16.5f)/100.f;
|
||||
if(complement) pgM = (-0.492f*mixerPurple+16.236f)/100.f;
|
||||
mixerRed += prM;
|
||||
@ -531,7 +548,8 @@ namespace rtengine {
|
||||
koymcp += (prM+pgM+pbM);
|
||||
}
|
||||
if(mixerCyan != 33) {
|
||||
cgM = fcompl*(-0.134f*mixerCyan +4.422f)/100.f;
|
||||
if (algo=="SP")cgM = fcompl*(-0.134f*mixerCyan +4.422f)/100.f;
|
||||
else if (algo=="LI")cgM = fcompl*(0.5f*mixerCyan -16.5f)/100.f;
|
||||
cbM = fcompl*(0.5f*mixerCyan-16.5f)/100.f;
|
||||
if(complement) crM = (-0.492f*mixerCyan+16.236f)/100.f;
|
||||
mixerRed += crM;
|
||||
|
@ -136,7 +136,7 @@ public:
|
||||
static double f2xyz(double f);
|
||||
static void calcGamma (double pwr, double ts, int mode, int imax, double &gamma0, double &gamma1, double &gamma2, double &gamma3, double &gamma4,double &gamma5);
|
||||
static void trcGammaBW (float &r, float &g, float &b, float gammabwr, float gammabwg, float gammabwb);
|
||||
static void computeBWMixerConstants (const Glib::ustring &setting, const Glib::ustring &filter, float &mixerRed, float &mixerGreen,
|
||||
static void computeBWMixerConstants (const Glib::ustring &setting, const Glib::ustring &filter, const Glib::ustring &algo, float &mixerRed, float &mixerGreen,
|
||||
float &mixerBlue, float mixerOrange, float mixerYellow, float mixerCyan, float mixerPurple, float mixerMagenta,
|
||||
bool autoc, bool complement, float &kcorec, double &rrm, double &ggm, double &bbm);
|
||||
|
||||
|
@ -2731,7 +2731,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, LUTf & hltone
|
||||
mixerCyan = 33.f;
|
||||
}
|
||||
|
||||
Color::computeBWMixerConstants(params->blackwhite.setting, params->blackwhite.filter,
|
||||
Color::computeBWMixerConstants(params->blackwhite.setting, params->blackwhite.filter,params->blackwhite.algo,
|
||||
bwr, bwg, bwb, mixerOrange, mixerYellow, mixerCyan, mixerPurple, mixerMagenta,
|
||||
params->blackwhite.autoc, complem, kcorec, rrm, ggm, bbm);
|
||||
|
||||
@ -3890,7 +3890,7 @@ fclose(f);*/
|
||||
|
||||
//diagnostics
|
||||
//printf ("**************** AUTO LEVELS ****************\n");
|
||||
|
||||
/*
|
||||
if (settings->verbose) {
|
||||
printf("sum=%i clip=%f clippable=%i clipWh=%i clipBl=%i\n",somm, clip, clippable,clipwh, clipbl);
|
||||
printf ("expcomp1= %f expcomp2= %f gain= %f expcomp=%f\n",expcomp1,expcomp2,gain,expcomp);
|
||||
@ -3907,7 +3907,7 @@ fclose(f);*/
|
||||
printf ("ospread= %f\n",ospread);
|
||||
printf ("overexp= %i\n",overex);
|
||||
}
|
||||
|
||||
*/
|
||||
/*
|
||||
// %%%%%%%%%% LEGACY AUTOEXPOSURE CODE %%%%%%%%%%%%%
|
||||
// black point selection is based on the linear result (yielding better visual results)
|
||||
|
@ -273,8 +273,8 @@ enum ProcEvent {
|
||||
EvLHHCurve=247,
|
||||
EvDirPyrEqualizerThreshold=248,
|
||||
EvDPDNenhance=249,
|
||||
|
||||
NUMOFEVENTS=250
|
||||
EvBWMethodalg=250,
|
||||
NUMOFEVENTS=251
|
||||
};
|
||||
}
|
||||
#endif
|
||||
|
@ -408,6 +408,7 @@ void ProcParams::setDefaults () {
|
||||
blackwhite.afterCurve.clear ();
|
||||
blackwhite.afterCurve.push_back(DCT_Linear);
|
||||
blackwhite.afterCurveMode = BlackWhiteParams::TC_MODE_STD_BW;
|
||||
blackwhite.algo = "SP";
|
||||
|
||||
resize.enabled = false;
|
||||
resize.scale = 1.0;
|
||||
@ -620,6 +621,8 @@ int ProcParams::save (Glib::ustring fname, Glib::ustring fname2, bool fnameAbsol
|
||||
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.algo) keyFile.set_string ("Black & White", "Algorithm", blackwhite.algo);
|
||||
|
||||
if (!pedited || pedited->blackwhite.luminanceCurve) {
|
||||
Glib::ArrayHandle<double> luminanceCurve = blackwhite.luminanceCurve;
|
||||
keyFile.set_double_list("Black & White", "LuminanceCurve", luminanceCurve);
|
||||
@ -1238,7 +1241,8 @@ if (keyFile.has_group ("Black & White")) {
|
||||
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")) {
|
||||
if (keyFile.has_key ("Black & White", "Algorithm")) { blackwhite.algo = keyFile.get_string ("Black & White", "Algorithm"); if (pedited) pedited->blackwhite.algo = 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;
|
||||
@ -1978,6 +1982,7 @@ bool ProcParams::operator== (const ProcParams& other) {
|
||||
&& blackwhite.beforeCurveMode == other.blackwhite.beforeCurveMode
|
||||
&& blackwhite.afterCurveMode == other.blackwhite.afterCurveMode
|
||||
&& blackwhite.autoc == other.blackwhite.autoc
|
||||
&& blackwhite.algo == other.blackwhite.algo
|
||||
&& resize.scale == other.resize.scale
|
||||
&& resize.appliesTo == other.resize.appliesTo
|
||||
&& resize.method == other.resize.method
|
||||
|
@ -649,6 +649,7 @@ class BlackWhiteParams {
|
||||
eTCModeId beforeCurveMode;
|
||||
std::vector<double> afterCurve;
|
||||
eTCModeId afterCurveMode;
|
||||
Glib::ustring algo;
|
||||
|
||||
std::vector<double> luminanceCurve;
|
||||
bool autoc;
|
||||
|
@ -269,8 +269,8 @@ LUMINANCECURVE, // EvLCLCurve
|
||||
LUMINANCECURVE, // EvLLHCurve
|
||||
LUMINANCECURVE, // EvLHHCurve
|
||||
DIRPYREQUALIZER, // EvDirPyrEqualizerThreshold
|
||||
ALLNORAW // EvDPDNenhance
|
||||
|
||||
ALLNORAW, // EvDPDNenhance
|
||||
RGBCURVE //EvBWMethodalg
|
||||
|
||||
//LUMINANCECURVE // EvCATsharpcie
|
||||
|
||||
|
@ -235,6 +235,22 @@ BlackWhite::BlackWhite (): Gtk::VBox(), FoldableToolPanel(this) {
|
||||
filterSep2 = Gtk::manage (new Gtk::HSeparator());
|
||||
mixerVBox->pack_start (*filterSep2);
|
||||
|
||||
algoHBox = Gtk::manage (new Gtk::HBox ());
|
||||
algoHBox->set_border_width (0);
|
||||
algoHBox->set_spacing (2);
|
||||
algoHBox->set_tooltip_markup (M("TP_BWMIX_ALGO_TOOLTIP"));
|
||||
|
||||
alLabel = Gtk::manage (new Gtk::Label (M("TP_BWMIX_ALGO")+":"));
|
||||
algoHBox->pack_start (*alLabel, Gtk::PACK_SHRINK);
|
||||
|
||||
algo = Gtk::manage (new MyComboBoxText ());
|
||||
algo->append_text (M("TP_BWMIX_ALGO_LI"));
|
||||
algo->append_text (M("TP_BWMIX_ALGO_SP"));
|
||||
algo->set_active (1);
|
||||
algoHBox->pack_start (*algo);
|
||||
mixerVBox->pack_start(*algoHBox);
|
||||
algoconn = algo->signal_changed().connect ( sigc::mem_fun(*this, &BlackWhite::algoChanged) );
|
||||
|
||||
mixerOrange= Gtk::manage(new Adjuster (/*M("TP_BWMIX_ORANGE")*/"", -100, 200, 1, 33, imgIcon[1]));
|
||||
if (mixerOrange->delay < 50) mixerOrange->delay = 50;
|
||||
mixerOrange->setAdjusterListener (this);
|
||||
@ -493,6 +509,17 @@ void BlackWhite::read (const ProcParams* pp, const ParamsEdited* pedited) {
|
||||
autoch->set_active (pp->blackwhite.autoc);
|
||||
lastAuto = pp->blackwhite.autoc;
|
||||
|
||||
algoconn.block(true);
|
||||
if (pedited && !pedited->blackwhite.algo)
|
||||
algo->set_active (2);
|
||||
else if (pp->blackwhite.algo=="LI")
|
||||
algo->set_active (0);
|
||||
else if (pp->blackwhite.algo=="SP")
|
||||
algo->set_active (1);
|
||||
algoconn.block(false);
|
||||
algoChanged();
|
||||
|
||||
|
||||
if (pedited) {
|
||||
luminanceCurve->setUnChanged (!pedited->blackwhite.luminanceCurve);
|
||||
beforeCurve->setUnChanged (!pedited->blackwhite.beforeCurve);
|
||||
@ -581,6 +608,8 @@ void BlackWhite::write (ProcParams* pp, ParamsEdited* pedited) {
|
||||
pedited->blackwhite.beforeCurve = !beforeCurve->isUnChanged ();
|
||||
pedited->blackwhite.beforeCurveMode = beforeCurveMode->get_active_row_number() != 4;
|
||||
pedited->blackwhite.afterCurve = !afterCurve->isUnChanged ();
|
||||
pedited->blackwhite.algo = algo->get_active_text()!=M("GENERAL_UNCHANGED");
|
||||
|
||||
// pedited->blackwhite.afterCurveMode = afterCurveMode->get_active_row_number() != 1;
|
||||
}
|
||||
if (method->get_active_row_number()==0)
|
||||
@ -590,10 +619,20 @@ void BlackWhite::write (ProcParams* pp, ParamsEdited* pedited) {
|
||||
else if (method->get_active_row_number()==2)
|
||||
pp->blackwhite.method = "ChannelMixer";
|
||||
|
||||
if (algo->get_active_row_number()==0)
|
||||
pp->blackwhite.algo = "LI";
|
||||
else if (algo->get_active_row_number()==1)
|
||||
pp->blackwhite.algo = "SP";
|
||||
|
||||
pp->blackwhite.setting = getSettingString();
|
||||
pp->blackwhite.filter = getFilterString();
|
||||
}
|
||||
|
||||
void BlackWhite::algoChanged () {
|
||||
if (listener && (multiImage||enabled->get_active()) ) {
|
||||
listener->panelChanged (EvBWMethodalg, algo->get_active_text ());}
|
||||
}
|
||||
|
||||
void BlackWhite::curveChanged (CurveEditor* ce) {
|
||||
if (listener) {
|
||||
if (ce == beforeCurve)
|
||||
@ -1045,7 +1084,7 @@ void BlackWhite::updateRGBLabel () {
|
||||
}
|
||||
double mixR, mixG, mixB;
|
||||
Glib::ustring sSetting = getSettingString();
|
||||
Color::computeBWMixerConstants(sSetting, getFilterString(), r, g, b,
|
||||
Color::computeBWMixerConstants(sSetting, getFilterString(),getalgoString(), r, g, b,
|
||||
mixerOrange->getValue(), mixerYellow->getValue(), mixerCyan->getValue(), mixerPurple->getValue(), mixerMagenta->getValue(),
|
||||
autoch->get_active(), enabledcc->get_active(), kcorrec, mixR, mixG, mixB);
|
||||
RGBLabels->set_text(
|
||||
@ -1095,6 +1134,7 @@ void BlackWhite::setBatchMode (bool batchMode) {
|
||||
beforeCurveMode->append_text (M("GENERAL_UNCHANGED"));
|
||||
afterCurveCEG->setBatchMode (batchMode);
|
||||
// afterCurveMode->append_text (M("GENERAL_UNCHANGED"));
|
||||
algo->append_text (M("GENERAL_UNCHANGED"));
|
||||
|
||||
showLuminance();
|
||||
showFilter();
|
||||
@ -1185,6 +1225,8 @@ void BlackWhite::showMixer(int nChannels, bool RGBIsSensitive) {
|
||||
mixerGreen->show(); mixerGreen->set_sensitive (RGBIsSensitive);
|
||||
mixerBlue->show(); mixerBlue->set_sensitive (RGBIsSensitive);
|
||||
filterSep2->hide();
|
||||
algo->hide();
|
||||
alLabel->hide();
|
||||
mixerOrange->hide();
|
||||
mixerYellow->hide();
|
||||
mixerCyan->hide();
|
||||
@ -1197,6 +1239,8 @@ void BlackWhite::showMixer(int nChannels, bool RGBIsSensitive) {
|
||||
mixerBlue->show(); mixerBlue->set_sensitive (true);
|
||||
filterSep2->show();
|
||||
mixerOrange->show();
|
||||
algo->show();
|
||||
alLabel->show();
|
||||
mixerYellow->show();
|
||||
mixerCyan->show();
|
||||
mixerMagenta->show();
|
||||
@ -1219,6 +1263,15 @@ void BlackWhite::hideGamma() {
|
||||
gammaFrame->hide();
|
||||
}
|
||||
|
||||
Glib::ustring BlackWhite::getalgoString() {
|
||||
Glib::ustring retVal;
|
||||
if (algo->get_active_row_number()==0)
|
||||
retVal = "LI";
|
||||
else if (algo->get_active_row_number()==1)
|
||||
retVal = "SP";
|
||||
return retVal;
|
||||
}
|
||||
|
||||
Glib::ustring BlackWhite::getSettingString() {
|
||||
Glib::ustring retVal;
|
||||
if (setting->get_active_row_number()==0)
|
||||
|
@ -44,6 +44,10 @@ class BlackWhite : public Gtk::VBox, public AdjusterListener, public FoldableToo
|
||||
Gtk::HBox* autoHBox;
|
||||
Gtk::Button* neutral;
|
||||
Gtk::Label* RGBLabels;
|
||||
MyComboBoxText* algo;
|
||||
sigc::connection algoconn;
|
||||
Gtk::Label* alLabel;
|
||||
Gtk::HBox* algoHBox;
|
||||
|
||||
Adjuster *mixerRed;
|
||||
Adjuster *mixerGreen;
|
||||
@ -125,9 +129,12 @@ class BlackWhite : public Gtk::VBox, public AdjusterListener, public FoldableToo
|
||||
bool curveMode1Changed_ ();
|
||||
void curveMode1Changed2 ();
|
||||
bool curveMode1Changed2_ ();
|
||||
void algoChanged ();
|
||||
|
||||
Glib::ustring getSettingString ();
|
||||
Glib::ustring getFilterString ();
|
||||
Glib::ustring getalgoString ();
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -243,6 +243,7 @@ void ParamsEdited::set (bool v) {
|
||||
blackwhite.afterCurve = v;
|
||||
blackwhite.afterCurveMode = v;
|
||||
blackwhite.autoc = v;
|
||||
blackwhite.algo = v;
|
||||
|
||||
resize.scale = v;
|
||||
resize.appliesTo = v;
|
||||
@ -528,6 +529,7 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
|
||||
blackwhite.afterCurve = blackwhite.afterCurve && p.blackwhite.afterCurve == other.blackwhite.afterCurve;
|
||||
blackwhite.afterCurveMode = blackwhite.afterCurveMode && p.blackwhite.afterCurveMode == other.blackwhite.afterCurveMode;
|
||||
blackwhite.autoc = blackwhite.autoc && p.blackwhite.autoc == other.blackwhite.autoc;
|
||||
blackwhite.algo = blackwhite.algo && p.blackwhite.algo == other.blackwhite.algo;
|
||||
resize.scale = resize.scale && p.resize.scale == other.resize.scale;
|
||||
resize.appliesTo = resize.appliesTo && p.resize.appliesTo == other.resize.appliesTo;
|
||||
resize.method = resize.method && p.resize.method == other.resize.method;
|
||||
@ -807,6 +809,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
|
||||
if (blackwhite.beforeCurveMode) toEdit.blackwhite.beforeCurveMode = mods.blackwhite.beforeCurveMode;
|
||||
if (blackwhite.afterCurve) toEdit.blackwhite.afterCurve = mods.blackwhite.afterCurve;
|
||||
if (blackwhite.afterCurveMode) toEdit.blackwhite.afterCurveMode = mods.blackwhite.afterCurveMode;
|
||||
if (blackwhite.algo) toEdit.blackwhite.algo = mods.blackwhite.algo;
|
||||
|
||||
if (resize.scale) toEdit.resize.scale = mods.resize.scale;
|
||||
if (resize.appliesTo) toEdit.resize.appliesTo = mods.resize.appliesTo;
|
||||
|
@ -384,6 +384,8 @@ class BlackWhiteParamsEdited {
|
||||
bool afterCurve;
|
||||
bool afterCurveMode;
|
||||
bool autoc;
|
||||
bool algo;
|
||||
|
||||
};
|
||||
|
||||
class CACorrParamsEdited {
|
||||
|
Loading…
x
Reference in New Issue
Block a user