Microcontrast: add Contrast threshold adjuster, #4551
This commit is contained in:
@@ -16,10 +16,11 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <cmath>
|
||||
#include <sstream>
|
||||
#include "sharpenmicro.h"
|
||||
#include "guiutils.h"
|
||||
#include <sstream>
|
||||
#include <cmath>
|
||||
#include "eventmapper.h"
|
||||
|
||||
using namespace rtengine;
|
||||
using namespace rtengine::procparams;
|
||||
@@ -28,6 +29,9 @@ using namespace rtengine::procparams;
|
||||
SharpenMicro::SharpenMicro () : FoldableToolPanel(this, "sharpenmicro", M("TP_SHARPENMICRO_LABEL"), true, true)
|
||||
{
|
||||
|
||||
auto m = ProcEventMapper::getInstance();
|
||||
EvSharpenMicroContrast = m->newEvent(SHARPENING, "HISTORY_MSG_MICROCONTRAST_CONTRAST");
|
||||
|
||||
amount = Gtk::manage(new Adjuster (M("TP_SHARPENMICRO_AMOUNT"), 0, 100, 1, 20));
|
||||
amount->setAdjusterListener (this);
|
||||
|
||||
@@ -36,6 +40,16 @@ SharpenMicro::SharpenMicro () : FoldableToolPanel(this, "sharpenmicro", M("TP_SH
|
||||
}
|
||||
|
||||
amount->show();
|
||||
|
||||
contrast = Gtk::manage(new Adjuster (M("TP_SHARPENMICRO_CONTRAST"), 0, 100, 1, 20));
|
||||
contrast->setAdjusterListener (this);
|
||||
|
||||
if (contrast->delay < options.adjusterMaxDelay) {
|
||||
contrast->delay = options.adjusterMaxDelay;
|
||||
}
|
||||
|
||||
contrast->show();
|
||||
|
||||
uniformity = Gtk::manage(new Adjuster (M("TP_SHARPENMICRO_UNIFORMITY"), 0, 100, 10, 50));
|
||||
|
||||
uniformity->setAdjusterListener (this);
|
||||
@@ -51,6 +65,7 @@ SharpenMicro::SharpenMicro () : FoldableToolPanel(this, "sharpenmicro", M("TP_SH
|
||||
matrix->show ();
|
||||
|
||||
pack_start( *amount, Gtk::PACK_SHRINK, 0);
|
||||
pack_start( *contrast, Gtk::PACK_SHRINK, 0);
|
||||
pack_start( *uniformity, Gtk::PACK_SHRINK, 0);
|
||||
|
||||
matrixconn = matrix->signal_toggled().connect( sigc::mem_fun(*this, &SharpenMicro::matrix_toggled) );
|
||||
@@ -64,6 +79,7 @@ void SharpenMicro::read(const ProcParams* pp, const ParamsEdited* pedited)
|
||||
set_inconsistent (multiImage && !pedited->sharpenMicro.enabled);
|
||||
matrix->set_inconsistent (!pedited->sharpenMicro.matrix);
|
||||
amount->setEditedState (pedited->sharpenMicro.amount ? Edited : UnEdited);
|
||||
contrast->setEditedState (pedited->sharpenMicro.contrast ? Edited : UnEdited);
|
||||
uniformity->setEditedState (pedited->sharpenMicro.uniformity ? Edited : UnEdited);
|
||||
}
|
||||
|
||||
@@ -75,6 +91,7 @@ void SharpenMicro::read(const ProcParams* pp, const ParamsEdited* pedited)
|
||||
lastmatrix = pp->sharpenMicro.matrix;
|
||||
|
||||
amount->setValue (pp->sharpenMicro.amount);
|
||||
contrast->setValue (pp->sharpenMicro.contrast);
|
||||
uniformity->setValue (pp->sharpenMicro.uniformity);
|
||||
|
||||
enableListener ();
|
||||
@@ -85,12 +102,14 @@ void SharpenMicro::write( ProcParams* pp, ParamsEdited* pedited)
|
||||
pp->sharpenMicro.enabled = getEnabled();
|
||||
pp->sharpenMicro.matrix = matrix->get_active ();
|
||||
pp->sharpenMicro.amount = amount->getValue ();
|
||||
pp->sharpenMicro.contrast = contrast->getValue ();
|
||||
pp->sharpenMicro.uniformity = uniformity->getValue ();
|
||||
|
||||
if (pedited) {
|
||||
pedited->sharpenMicro.enabled = !get_inconsistent();
|
||||
pedited->sharpenMicro.matrix = !matrix->get_inconsistent();
|
||||
pedited->sharpenMicro.amount = amount->getEditedState ();
|
||||
pedited->sharpenMicro.contrast = contrast->getEditedState ();
|
||||
pedited->sharpenMicro.uniformity = uniformity->getEditedState ();
|
||||
}
|
||||
}
|
||||
@@ -139,9 +158,11 @@ void SharpenMicro::adjusterChanged (Adjuster* a, double newval)
|
||||
Glib::ustring value = a->getTextValue();
|
||||
|
||||
if (a == amount) {
|
||||
listener->panelChanged (EvSharpenMicroAmount, value );
|
||||
listener->panelChanged (EvSharpenMicroAmount, value);
|
||||
} else if (a == contrast) {
|
||||
listener->panelChanged (EvSharpenMicroContrast, value);
|
||||
} else if (a == uniformity) {
|
||||
listener->panelChanged (EvSharpenMicroUniformity, value );
|
||||
listener->panelChanged (EvSharpenMicroUniformity, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -149,31 +170,37 @@ void SharpenMicro::adjusterChanged (Adjuster* a, double newval)
|
||||
void SharpenMicro::setBatchMode(bool batchMode)
|
||||
{
|
||||
amount->showEditedCB ();
|
||||
contrast->showEditedCB ();
|
||||
uniformity->showEditedCB ();
|
||||
}
|
||||
|
||||
void SharpenMicro::setDefaults(const ProcParams* defParams, const ParamsEdited* pedited)
|
||||
{
|
||||
amount->setDefault (defParams->sharpenMicro.amount);
|
||||
contrast->setDefault (defParams->sharpenMicro.contrast);
|
||||
uniformity->setDefault (defParams->sharpenMicro.uniformity);
|
||||
|
||||
if (pedited) {
|
||||
amount->setDefaultEditedState (pedited->sharpenMicro.amount ? Edited : UnEdited);
|
||||
contrast->setDefaultEditedState (pedited->sharpenMicro.contrast ? Edited : UnEdited);
|
||||
uniformity->setDefaultEditedState (pedited->sharpenMicro.uniformity ? Edited : UnEdited);
|
||||
} else {
|
||||
amount->setDefaultEditedState (Irrelevant);
|
||||
contrast->setDefaultEditedState (Irrelevant);
|
||||
uniformity->setDefaultEditedState (Irrelevant);
|
||||
}
|
||||
}
|
||||
|
||||
void SharpenMicro::setAdjusterBehavior (bool amountadd, bool uniformityadd )
|
||||
void SharpenMicro::setAdjusterBehavior (bool amountadd, bool contrastadd, bool uniformityadd)
|
||||
{
|
||||
amount->setAddMode (amountadd);
|
||||
contrast->setAddMode (contrastadd);
|
||||
uniformity->setAddMode (uniformityadd);
|
||||
}
|
||||
|
||||
void SharpenMicro::trimValues (ProcParams* pp)
|
||||
{
|
||||
amount->trimValue (pp->sharpenMicro.amount);
|
||||
contrast->trimValue (pp->sharpenMicro.contrast);
|
||||
uniformity->trimValue (pp->sharpenMicro.uniformity);
|
||||
}
|
||||
|
Reference in New Issue
Block a user