Initial commit for DeHaze branch

This commit is contained in:
heckflosse
2015-08-17 18:49:02 +02:00
parent 161fa15922
commit 86b0bb5420
15 changed files with 622 additions and 5 deletions

View File

@@ -206,6 +206,61 @@ LCurve::LCurve () : FoldableToolPanel(this, "labcurves", M("TP_LABCURVE_LABEL"))
curveEditorG->curveListComplete();
pack_start (*curveEditorG, Gtk::PACK_SHRINK, 4);
Gtk::HSeparator *hsepdh = Gtk::manage (new Gtk::HSeparator());
hsepdh->show ();
pack_start (*hsepdh, Gtk::PACK_EXPAND_WIDGET, 4);
Gtk::Frame* dehazFrame = Gtk::manage (new Gtk::Frame (M("TP_DEHAZE_LAB")) );
dehazFrame->set_tooltip_text(M("TP_DEHAZE_LAB_TOOLTIP"));
dehazFrame->set_border_width(0);
dehazFrame->set_label_align(0.025, 0.5);
Gtk::VBox * dehazVBox = Gtk::manage ( new Gtk::VBox());
dehazVBox->set_border_width(4);
dehazVBox->set_spacing(2);
dhbox = Gtk::manage (new Gtk::HBox ());
labmdh = Gtk::manage (new Gtk::Label (M("TP_DEHAZE_MET") + ":"));
dhbox->pack_start (*labmdh, Gtk::PACK_SHRINK, 1);
dehazmet = Gtk::manage (new MyComboBoxText ());
dehazmet->append_text (M("TP_DEHAZ_NONE"));
dehazmet->append_text (M("TP_DEHAZ_UNI"));
dehazmet->append_text (M("TP_DEHAZ_LOW"));
dehazmet->append_text (M("TP_DEHAZ_HIGH"));
dehazmet->set_active(0);
dehazmetConn = dehazmet->signal_changed().connect ( sigc::mem_fun(*this, &LCurve::dehazmetChanged) );
// dehazmet->set_tooltip_markup (M("TP_DEHAZ_MET_TOOLTIP"));
dhbox->pack_start(*dehazmet);
dehazVBox->pack_start(*dhbox);
str = Gtk::manage (new Adjuster (M("TP_LABCURVE_STR"), 0, 100., 1., 70.));
scal = Gtk::manage (new Adjuster (M("TP_LABCURVE_SCAL"), 1, 8., 1., 3.));
neigh = Gtk::manage (new Adjuster (M("TP_LABCURVE_NEIGH"), 6, 100., 1., 80.));
gain = Gtk::manage (new Adjuster (M("TP_LABCURVE_GAIN"), 0.9, 1.1, 0.01, 1.));
offs = Gtk::manage (new Adjuster (M("TP_LABCURVE_OFFS"), -50, 50, 1, 0));
dehazVBox->pack_start (*str);
str->show ();
dehazVBox->pack_start (*scal);
scal->show ();
dehazVBox->pack_start (*neigh);
neigh->show ();
// dehazVBox->pack_start (*gain);
// gain->show ();
// dehazVBox->pack_start (*offs);
// offs->show ();
str->setAdjusterListener (this);
scal->setAdjusterListener (this);
neigh->setAdjusterListener (this);
gain->setAdjusterListener (this);
offs->setAdjusterListener (this);
dehazFrame->add(*dehazVBox);
pack_start (*dehazFrame);
}
@@ -218,16 +273,26 @@ void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited)
{
disableListener ();
dehazmetConn.block(true);
if (pedited) {
brightness->setEditedState (pedited->labCurve.brightness ? Edited : UnEdited);
contrast->setEditedState (pedited->labCurve.contrast ? Edited : UnEdited);
chromaticity->setEditedState (pedited->labCurve.chromaticity ? Edited : UnEdited);
chromaticity->setEditedState (pedited->labCurve.chromaticity ? Edited : UnEdited);
//%%%%%%%%%%%%%%%%%%%%%%
rstprotection->setEditedState (pedited->labCurve.rstprotection ? Edited : UnEdited);
avoidcolorshift->set_inconsistent (!pedited->labCurve.avoidcolorshift);
lcredsk->set_inconsistent (!pedited->labCurve.lcredsk);
str->setEditedState (pedited->labCurve.str ? Edited : UnEdited);
scal->setEditedState (pedited->labCurve.scal ? Edited : UnEdited);
neigh->setEditedState (pedited->labCurve.neigh ? Edited : UnEdited);
gain->setEditedState (pedited->labCurve.gain ? Edited : UnEdited);
offs->setEditedState (pedited->labCurve.offs ? Edited : UnEdited);
if (!pedited->labCurve.dehazmet) {
dehazmet->set_active (3);
}
//%%%%%%%%%%%%%%%%%%%%%%
@@ -246,6 +311,23 @@ void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited)
contrast->setValue (pp->labCurve.contrast);
chromaticity->setValue (pp->labCurve.chromaticity);
adjusterChanged(chromaticity, pp->labCurve.chromaticity); // To update the GUI sensitiveness
neigh->setValue (pp->labCurve.neigh);
gain->setValue (pp->labCurve.gain);
offs->setValue (pp->labCurve.offs);
str->setValue (pp->labCurve.str);
scal->setValue (pp->labCurve.scal);
dehazmet->set_active (0);
if (pp->labCurve.dehazmet == "none") {
dehazmet->set_active (0);
} else if (pp->labCurve.dehazmet == "uni") {
dehazmet->set_active (1);
} else if (pp->labCurve.dehazmet == "low") {
dehazmet->set_active (2);
} else if (pp->labCurve.dehazmet == "high") {
dehazmet->set_active (3);
}
dehazmetChanged ();
//%%%%%%%%%%%%%%%%%%%%%%
rstprotection->setValue (pp->labCurve.rstprotection);
@@ -275,6 +357,7 @@ void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited)
clshape->setCurve (pp->labCurve.clcurve);
queue_draw();
dehazmetConn.block(false);
enableListener ();
}
@@ -338,6 +421,11 @@ void LCurve::write (ProcParams* pp, ParamsEdited* pedited)
pp->labCurve.brightness = brightness->getValue ();
pp->labCurve.contrast = (int)contrast->getValue ();
pp->labCurve.chromaticity = (int)chromaticity->getValue ();
pp->labCurve.str = str->getValue ();
pp->labCurve.scal = (int)scal->getValue ();
pp->labCurve.neigh = neigh->getValue ();
pp->labCurve.gain = (int)gain->getValue ();
pp->labCurve.offs = (int)offs->getValue ();
//%%%%%%%%%%%%%%%%%%%%%%
pp->labCurve.avoidcolorshift = avoidcolorshift->get_active ();
@@ -366,7 +454,15 @@ void LCurve::write (ProcParams* pp, ParamsEdited* pedited)
pedited->labCurve.lcredsk = !lcredsk->get_inconsistent();
pedited->labCurve.rstprotection = rstprotection->getEditedState ();
pedited->labCurve.dehazmet = dehazmet->get_active_row_number() != 3;
//%%%%%%%%%%%%%%%%%%%%%%
pedited->labCurve.str = str->getEditedState ();
pedited->labCurve.scal = scal->getEditedState ();
pedited->labCurve.neigh = neigh->getEditedState ();
pedited->labCurve.gain = gain->getEditedState ();
pedited->labCurve.offs = offs->getEditedState ();
pedited->labCurve.lcurve = !lshape->isUnChanged ();
pedited->labCurve.acurve = !ashape->isUnChanged ();
@@ -377,9 +473,28 @@ void LCurve::write (ProcParams* pp, ParamsEdited* pedited)
pedited->labCurve.hhcurve = !hhshape->isUnChanged ();
pedited->labCurve.lccurve = !lcshape->isUnChanged ();
pedited->labCurve.clcurve = !clshape->isUnChanged ();
if (dehazmet->get_active_row_number() == 0) {
pp->labCurve.dehazmet = "none";
} else if (dehazmet->get_active_row_number() == 1) {
pp->labCurve.dehazmet = "uni";
} else if (dehazmet->get_active_row_number() == 2) {
pp->labCurve.dehazmet = "low";
} else if (dehazmet->get_active_row_number() == 3) {
pp->labCurve.dehazmet = "high";
}
}
}
void LCurve::dehazmetChanged()
{
if (listener) {
listener->panelChanged (Evdehazmet, dehazmet->get_active_text ());
}
}
void LCurve::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited)
{
@@ -387,18 +502,33 @@ void LCurve::setDefaults (const ProcParams* defParams, const ParamsEdited* pedit
contrast->setDefault (defParams->labCurve.contrast);
chromaticity->setDefault (defParams->labCurve.chromaticity);
rstprotection->setDefault (defParams->labCurve.rstprotection);
neigh->setDefault (defParams->labCurve.neigh);
gain->setDefault (defParams->labCurve.gain);
offs->setDefault (defParams->labCurve.offs);
str->setDefault (defParams->labCurve.str);
scal->setDefault (defParams->labCurve.scal);
if (pedited) {
brightness->setDefaultEditedState (pedited->labCurve.brightness ? Edited : UnEdited);
contrast->setDefaultEditedState (pedited->labCurve.contrast ? Edited : UnEdited);
chromaticity->setDefaultEditedState (pedited->labCurve.chromaticity ? Edited : UnEdited);
rstprotection->setDefaultEditedState (pedited->labCurve.rstprotection ? Edited : UnEdited);
neigh->setDefaultEditedState (pedited->labCurve.neigh ? Edited : UnEdited);
gain->setDefaultEditedState (pedited->labCurve.gain ? Edited : UnEdited);
offs->setDefaultEditedState (pedited->labCurve.offs ? Edited : UnEdited);
str->setDefaultEditedState (pedited->labCurve.str ? Edited : UnEdited);
scal->setDefaultEditedState (pedited->labCurve.scal ? Edited : UnEdited);
} else {
brightness->setDefaultEditedState (Irrelevant);
contrast->setDefaultEditedState (Irrelevant);
chromaticity->setDefaultEditedState (Irrelevant);
rstprotection->setDefaultEditedState (Irrelevant);
neigh->setDefaultEditedState (Irrelevant);
gain->setDefaultEditedState (Irrelevant);
offs->setDefaultEditedState (Irrelevant);
str->setDefaultEditedState (Irrelevant);
scal->setDefaultEditedState (Irrelevant);
}
}
@@ -531,6 +661,28 @@ void LCurve::adjusterChanged (Adjuster* a, double newval)
if (listener) {
listener->panelChanged (EvLRSTProtection, costr);
}
} else if (a == neigh) {
if (listener) {
listener->panelChanged (EvLneigh, costr);
}
} else if (a == str) {
if (listener) {
listener->panelChanged (EvLstr, costr);
}
} else if (a == scal) {
if (listener) {
listener->panelChanged (EvLscal, costr);
}
} else if (a == gain) {
if (listener) {
listener->panelChanged (EvLgain, costr);
}
} else if (a == offs) {
if (listener) {
listener->panelChanged (EvLoffs, costr);
}
} else if (a == chromaticity) {
if (multiImage) {
//if chromaticity==-100 (lowest value), we enter the B&W mode and avoid color shift and rstprotection has no effect
@@ -616,6 +768,12 @@ void LCurve::setBatchMode (bool batchMode)
contrast->showEditedCB ();
chromaticity->showEditedCB ();
rstprotection->showEditedCB ();
dehazmet->append_text (M("GENERAL_UNCHANGED"));
neigh->showEditedCB ();
gain->showEditedCB ();
offs->showEditedCB ();
str->showEditedCB ();
scal->showEditedCB ();
curveEditorG->setBatchMode (batchMode);
lcshape->setBottomBarColorProvider(NULL, -1);
@@ -647,4 +805,9 @@ void LCurve::trimValues (rtengine::procparams::ProcParams* pp)
brightness->trimValue(pp->labCurve.brightness);
contrast->trimValue(pp->labCurve.contrast);
chromaticity->trimValue(pp->labCurve.chromaticity);
str->trimValue(pp->labCurve.str);
scal->trimValue(pp->labCurve.scal);
neigh->trimValue(pp->labCurve.neigh);
gain->trimValue(pp->labCurve.gain);
offs->trimValue(pp->labCurve.offs);
}