Merge pull request #3188 from Beep6581/cbdlbw

Adapt Cbdl to B&W tools
This commit is contained in:
Ingo Weyrich
2016-03-01 20:31:14 +01:00
17 changed files with 320 additions and 91 deletions

View File

@@ -51,6 +51,24 @@ DirPyrEqualizer::DirPyrEqualizer () : FoldableToolPanel(this, "dirpyrequalizer",
Color::hsv2rgb01(0.3240, 0.5, 0.5, r, g, b);
milestones.push_back( GradientMilestone(1. , r, g, b) ); // hsv: 0.324 rad: 2.5
Gtk::VBox * cbVBox = Gtk::manage ( new Gtk::VBox());
cbVBox->set_border_width(4);
cbVBox->set_spacing(2);
cdbox = Gtk::manage (new Gtk::HBox ());
labmcd = Gtk::manage (new Gtk::Label (M("TP_CBDL_METHOD") + ":"));
cdbox->pack_start (*labmcd, Gtk::PACK_SHRINK, 1);
cbdlMethod = Gtk::manage (new MyComboBoxText ());
cbdlMethod->append_text (M("TP_CBDL_BEF"));
cbdlMethod->append_text (M("TP_CBDL_AFT"));
cbdlMethod->set_active(0);
cbdlMethodConn = cbdlMethod->signal_changed().connect ( sigc::mem_fun(*this, &DirPyrEqualizer::cbdlMethodChanged) );
cbdlMethod->set_tooltip_markup (M("TP_CBDL_METHOD_TOOLTIP"));
cdbox->pack_start(*cbdlMethod);
cbVBox->pack_start(*cdbox);
pack_start(*cbVBox);
setEnabledTooltipMarkup(M("TP_SHARPENING_TOOLTIP"));
Gtk::HBox * buttonBox1 = Gtk::manage (new Gtk::HBox(true, 10));
@@ -146,12 +164,17 @@ void DirPyrEqualizer::read (const ProcParams* pp, const ParamsEdited* pedited)
{
disableListener ();
cbdlMethodConn.block(true);
if (pedited) {
set_inconsistent (multiImage && !pedited->dirpyrequalizer.enabled);
gamutlab->set_inconsistent (!pedited->dirpyrequalizer.gamutlab);
if (!pedited->dirpyrequalizer.cbdlMethod) {
cbdlMethod->set_active_text(M("GENERAL_UNCHANGED"));
}
for(int i = 0; i < 6; i++) {
multiplier[i]->setEditedState (pedited->dirpyrequalizer.mult[i] ? Edited : UnEdited);
}
@@ -187,6 +210,15 @@ void DirPyrEqualizer::read (const ProcParams* pp, const ParamsEdited* pedited)
skinprotect->setValue(pp->dirpyrequalizer.skinprotect);
hueskin->setValue<int>(pp->dirpyrequalizer.hueskin);
if (pp->dirpyrequalizer.cbdlMethod == "bef") {
cbdlMethod->set_active (0);
} else if (pp->dirpyrequalizer.cbdlMethod == "aft") {
cbdlMethod->set_active (1);
}
cbdlMethodChanged ();
cbdlMethodConn.block(false);
enableListener ();
}
@@ -208,6 +240,7 @@ void DirPyrEqualizer::write (ProcParams* pp, ParamsEdited* pedited)
pedited->dirpyrequalizer.enabled = !get_inconsistent();
pedited->dirpyrequalizer.hueskin = hueskin->getEditedState ();
pedited->dirpyrequalizer.cbdlMethod = cbdlMethod->get_active_text() != M("GENERAL_UNCHANGED");
for(int i = 0; i < 6; i++) {
pedited->dirpyrequalizer.mult[i] = multiplier[i]->getEditedState();
@@ -218,6 +251,13 @@ void DirPyrEqualizer::write (ProcParams* pp, ParamsEdited* pedited)
// pedited->dirpyrequalizer.algo = algo->get_active_text()!=M("GENERAL_UNCHANGED");
}
if (cbdlMethod->get_active_row_number() == 0) {
pp->dirpyrequalizer.cbdlMethod = "bef";
} else if (cbdlMethod->get_active_row_number() == 1) {
pp->dirpyrequalizer.cbdlMethod = "aft";
}
/* if (algo->get_active_row_number()==0)
pp->dirpyrequalizer.algo = "FI";
else if (algo->get_active_row_number()==1)
@@ -282,6 +322,16 @@ void DirPyrEqualizer::setBatchMode (bool batchMode)
// algo->append_text (M("GENERAL_UNCHANGED"));
}
void DirPyrEqualizer::cbdlMethodChanged()
{
if (listener) {
listener->panelChanged (EvcbdlMethod, cbdlMethod->get_active_text ());
}
}
void DirPyrEqualizer::adjusterChanged (Adjuster* a, double newval)
{

View File

@@ -45,6 +45,10 @@ protected:
sigc::connection lumaneutralPressedConn;
sigc::connection lumacontrastPlusPressedConn;
sigc::connection lumacontrastMinusPressedConn;
sigc::connection cbdlMethodConn;
Gtk::Label* labmcd;
Gtk::HBox* cdbox;
MyComboBoxText* cbdlMethod;
bool lastgamutlab;
@@ -61,7 +65,7 @@ public:
void trimValues (rtengine::procparams::ProcParams* pp);
void adjusterChanged (ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight);
// void algoChanged ();
void cbdlMethodChanged();
void adjusterChanged (Adjuster* a, double newval);
void enabledChanged();
void gamutlabToggled ();

View File

@@ -487,6 +487,8 @@ void ParamsEdited::set (bool v)
dirpyrequalizer.enabled = v;
dirpyrequalizer.gamutlab = v;
dirpyrequalizer.cbdlMethod = v;
for(int i = 0; i < 6; i++) {
dirpyrequalizer.mult[i] = v;
@@ -973,6 +975,7 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
dirpyrequalizer.enabled = dirpyrequalizer.enabled && p.dirpyrequalizer.enabled == other.dirpyrequalizer.enabled;
dirpyrequalizer.gamutlab = dirpyrequalizer.gamutlab && p.dirpyrequalizer.gamutlab == other.dirpyrequalizer.gamutlab;
dirpyrequalizer.cbdlMethod = dirpyrequalizer.cbdlMethod && p.dirpyrequalizer.cbdlMethod == other.dirpyrequalizer.cbdlMethod;
for(int i = 0; i < 6; i++) {
dirpyrequalizer.mult[i] = dirpyrequalizer.mult[i] && p.dirpyrequalizer.mult[i] == other.dirpyrequalizer.mult[i];
@@ -2700,6 +2703,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.dirpyrequalizer.gamutlab = mods.dirpyrequalizer.gamutlab;
}
if (dirpyrequalizer.cbdlMethod) {
toEdit.dirpyrequalizer.cbdlMethod = mods.dirpyrequalizer.cbdlMethod;
}
for(int i = 0; i < 6; i++) {
if(dirpyrequalizer.mult[i]) {
toEdit.dirpyrequalizer.mult[i] = dontforceSet && options.baBehav[ADDSET_DIRPYREQ] ? toEdit.dirpyrequalizer.mult[i] + mods.dirpyrequalizer.mult[i] : mods.dirpyrequalizer.mult[i];

View File

@@ -647,7 +647,7 @@ public:
bool enabled;
bool gamutlab;
bool mult[6];
bool cbdlMethod;
bool threshold;
bool skinprotect;
bool hueskin;