Black and white channel-mixer new algorithm for orange Yellow Cyan Purple Magenta
This commit is contained in:
@@ -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)
|
||||
|
Reference in New Issue
Block a user