/* * This file is part of RawTherapee. * * RawTherapee is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * RawTherapee is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . * * 2014 Jacques Desmis */ #ifndef WAVELET_H_INCLUDED #define WAVELET_H_INCLUDED #include #include "adjuster.h" #include "toolpanel.h" #include "curveeditor.h" #include "curveeditorgroup.h" #include "thresholdadjuster.h" #include "colorprovider.h" #include "guiutils.h" #include "options.h" class Wavelet : public ToolParamBlock, public ThresholdAdjusterListener, public AdjusterListener, public CurveListener, public ColorProvider, public rtengine::WaveletListener, public FoldableToolPanel { protected: Glib::RefPtr bgTTips; Glib::RefPtr srTTips; Glib::RefPtr bgPixbuf; Glib::RefPtr srPixbuf; CurveEditorGroup* CLVcurveEditorG; Gtk::HSeparator* colorSep; CurveEditorGroup* opaCurveEditorG; FlatCurveEditor* opacityShapeRG; CurveEditorGroup* opacityCurveEditorG; FlatCurveEditor* opacityShapeBY; FlatCurveEditor* ccshape; Gtk::CheckButton * enabled; Gtk::CheckButton * display; Gtk::CheckButton * displaylevel; Gtk::CheckButton * displaychro; Gtk::CheckButton * displaygam; Gtk::CheckButton * displayres; Gtk::CheckButton * median; Gtk::CheckButton * avoid; Gtk::ToggleButton * tbresid; Gtk::ToggleButton * tbcontrast; Gtk::ToggleButton * tbgamut; Gtk::ToggleButton * tbchroma; Gtk::ToggleButton * tbtoning; Gtk::ToggleButton * tbutil; Gtk::ToggleButton * tbdisplay; Gtk::CheckButton * cbresid; Gtk::Image* igRes; Adjuster* correction[9]; Adjuster* tiles; Adjuster* rescon; Adjuster* resconH; Adjuster* reschro; Adjuster* sup; Adjuster* sky; Adjuster* thres; Adjuster* chroma; Adjuster* chro; Adjuster* unif; Adjuster* thr; Adjuster* thrH; Adjuster* skinprotect; ThresholdAdjuster* hueskin; ThresholdAdjuster* hueskin2; ThresholdAdjuster* hllev; ThresholdAdjuster* bllev; ThresholdAdjuster* pastlev; ThresholdAdjuster* satlev; Adjuster* threshold; Adjuster* threshold2; MyComboBoxText* Lmethod; sigc::connection Lmethodconn; MyComboBoxText* CHmethod; sigc::connection CHmethodconn; MyComboBoxText* HSmethod; sigc::connection HSmethodconn; MyComboBoxText* CLmethod; sigc::connection CLmethodconn; MyComboBoxText* Tilesmethod; sigc::connection Tilesmethodconn; MyComboBoxText* Dirmethod; sigc::connection Dirmethodconn; Gtk::Frame* toningFrame; Gtk::Frame* residualFrame; Gtk::Frame* utilFrame; Gtk::Frame* dispFrame; Gtk::Frame* levelFrame; Gtk::Frame* chromaFrame; Gtk::Frame* controlFrame; Gtk::Label* colLabel; Gtk::Label* interLabel; Gtk::Label* wavLabels; Gtk::Expander* expcontrast; Gtk::Expander* expresid; Gtk::Expander* expgamut; Gtk::Expander* expchroma; Gtk::Expander* exptoning; Gtk::Expander* exputil; Gtk::Expander* expdisplay; Gtk::HBox* hbresid; sigc::connection enaConn, expConn, medianConn, avoidConn; sigc::connection neutralPressedConn; sigc::connection contrastPlusPressedConn; sigc::connection contrastMinusPressedConn; bool lastEnabled, lastdisplay, lastdisplaygam,lastdisplayres,lastdisplaychro, lastdisplaylevel,lastmedian, lastavoid; int nextnlevel; public: Wavelet (); virtual ~Wavelet (); void curveChanged (CurveEditor* ce); void setEditProvider (EditDataProvider *provider); void autoOpenCurve (); // virtual Gtk::Expander* getExpander () { return NULL; } // virtual void setExpanded (bool expanded) {} // virtual bool getExpanded () { return false; } /* Gtk::Expander * getExpander() { return expresid; } void setExpanded (bool expanded) { if (expresid) expresid->set_expanded( expanded ); } bool getExpanded () { if (expresid) return expresid->get_expanded(); return false; } */ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL); void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL); void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL); void setBatchMode (bool batchMode); void adjusterChanged2 (ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); void setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool threshold2add, bool thresadd, bool chroadd,bool chromaadd, bool unifadd, bool skinadd, bool reschroadd, bool resconadd, bool resconHadd, bool thradd, bool thrHadd, bool skyadd); void adjusterChanged (Adjuster* a, double newval); void enabledToggled (); void medianToggled (); void expcontrastTog (); void expresidTog (); void expdisplayTog (); void expgamutTog (); void exputilTog (); void expchromaTog (); void exptoningTog (); void avoidToggled (); void neutralPressed (); void contrastPlusPressed (); void contrastMinusPressed (); void LmethodChanged (); void CHmethodChanged (); void HSmethodChanged (); void CLmethodChanged (); void TilesmethodChanged (); void DirmethodChanged (); virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); void wavChanged (double nlevel); bool wavComputed_ (); void updatewavLabel (); }; #endif