added on/off switches for Channel Mixer, HSV Equalizer and RGB Curves
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
using namespace rtengine;
|
||||
using namespace rtengine::procparams;
|
||||
|
||||
ChMixer::ChMixer (): FoldableToolPanel(this, "chmixer", M("TP_CHMIXER_LABEL"))
|
||||
ChMixer::ChMixer (): FoldableToolPanel(this, "chmixer", M("TP_CHMIXER_LABEL"), false, true)
|
||||
{
|
||||
|
||||
imgIcon[0] = Gtk::manage (new RTImage ("Chanmixer-RR.png"));
|
||||
@@ -99,12 +99,16 @@ void ChMixer::read (const ProcParams* pp, const ParamsEdited* pedited)
|
||||
|
||||
disableListener ();
|
||||
|
||||
if (pedited)
|
||||
setEnabled(pp->chmixer.enabled);
|
||||
|
||||
if (pedited) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
red[i]->setEditedState (pedited->chmixer.red[i] ? Edited : UnEdited);
|
||||
green[i]->setEditedState (pedited->chmixer.green[i] ? Edited : UnEdited);
|
||||
blue[i]->setEditedState (pedited->chmixer.blue[i] ? Edited : UnEdited);
|
||||
}
|
||||
set_inconsistent(multiImage && !pedited->chmixer.enabled);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
red[i]->setValue (pp->chmixer.red[i]);
|
||||
@@ -123,13 +127,16 @@ void ChMixer::write (ProcParams* pp, ParamsEdited* pedited)
|
||||
pp->chmixer.green[i] = (int) green[i]->getValue ();
|
||||
pp->chmixer.blue[i] = (int) blue[i]->getValue ();
|
||||
}
|
||||
pp->chmixer.enabled = getEnabled();
|
||||
|
||||
if (pedited)
|
||||
if (pedited) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
pedited->chmixer.red[i] = red[i]->getEditedState ();
|
||||
pedited->chmixer.green[i] = green[i]->getEditedState ();
|
||||
pedited->chmixer.blue[i] = blue[i]->getEditedState ();
|
||||
}
|
||||
pedited->chmixer.enabled = !get_inconsistent();
|
||||
}
|
||||
}
|
||||
|
||||
void ChMixer::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited)
|
||||
@@ -158,7 +165,7 @@ void ChMixer::setDefaults (const ProcParams* defParams, const ParamsEdited* pedi
|
||||
void ChMixer::adjusterChanged (Adjuster* a, double newval)
|
||||
{
|
||||
|
||||
if (listener) {
|
||||
if (listener && getEnabled()) {
|
||||
Glib::ustring descr = Glib::ustring::compose ("R=%1,%2,%3\nG=%4,%5,%6\nB=%7,%8,%9",
|
||||
(int)red[0]->getValue(), (int)red[1]->getValue(), (int)red[2]->getValue(),
|
||||
(int)green[0]->getValue(), (int)green[1]->getValue(), (int)green[2]->getValue(),
|
||||
@@ -167,6 +174,21 @@ void ChMixer::adjusterChanged (Adjuster* a, double newval)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ChMixer::enabledChanged()
|
||||
{
|
||||
if (listener) {
|
||||
if (get_inconsistent()) {
|
||||
listener->panelChanged(EvChMixer, M("GENERAL_UNCHANGED"));
|
||||
} else if (getEnabled()) {
|
||||
listener->panelChanged(EvChMixer, M("GENERAL_ENABLED"));
|
||||
} else {
|
||||
listener->panelChanged(EvChMixer, M("GENERAL_DISABLED"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ChMixer::setBatchMode (bool batchMode)
|
||||
{
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ public:
|
||||
void adjusterChanged (Adjuster* a, double newval);
|
||||
void setAdjusterBehavior (bool rgbadd);
|
||||
void trimValues (rtengine::procparams::ProcParams* pp);
|
||||
void enabledChanged();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -25,7 +25,7 @@ using namespace rtengine::procparams;
|
||||
|
||||
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
HSVEqualizer::HSVEqualizer () : FoldableToolPanel(this, "hsvequalizer", M("TP_HSVEQUALIZER_LABEL"))
|
||||
HSVEqualizer::HSVEqualizer () : FoldableToolPanel(this, "hsvequalizer", M("TP_HSVEQUALIZER_LABEL"), false, true)
|
||||
{
|
||||
|
||||
std::vector<GradientMilestone> bottomMilestones;
|
||||
@@ -84,11 +84,13 @@ void HSVEqualizer::read (const ProcParams* pp, const ParamsEdited* pedited)
|
||||
hshape->setUnChanged (!pedited->hsvequalizer.hcurve);
|
||||
sshape->setUnChanged (!pedited->hsvequalizer.scurve);
|
||||
vshape->setUnChanged (!pedited->hsvequalizer.vcurve);
|
||||
set_inconsistent(multiImage && !pedited->hsvequalizer.enabled);
|
||||
}
|
||||
|
||||
hshape->setCurve (pp->hsvequalizer.hcurve);
|
||||
sshape->setCurve (pp->hsvequalizer.scurve);
|
||||
vshape->setCurve (pp->hsvequalizer.vcurve);
|
||||
setEnabled(pp->hsvequalizer.enabled);
|
||||
|
||||
enableListener ();
|
||||
}
|
||||
@@ -116,7 +118,7 @@ void HSVEqualizer::autoOpenCurve ()
|
||||
|
||||
void HSVEqualizer::write (ProcParams* pp, ParamsEdited* pedited)
|
||||
{
|
||||
|
||||
pp->hsvequalizer.enabled = getEnabled();
|
||||
pp->hsvequalizer.hcurve = hshape->getCurve ();
|
||||
pp->hsvequalizer.scurve = sshape->getCurve ();
|
||||
pp->hsvequalizer.vcurve = vshape->getCurve ();
|
||||
@@ -126,6 +128,7 @@ void HSVEqualizer::write (ProcParams* pp, ParamsEdited* pedited)
|
||||
pedited->hsvequalizer.hcurve = !hshape->isUnChanged ();
|
||||
pedited->hsvequalizer.scurve = !sshape->isUnChanged ();
|
||||
pedited->hsvequalizer.vcurve = !vshape->isUnChanged ();
|
||||
pedited->hsvequalizer.enabled = !get_inconsistent();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,7 +141,7 @@ void HSVEqualizer::write (ProcParams* pp, ParamsEdited* pedited)
|
||||
void HSVEqualizer::curveChanged (CurveEditor* ce)
|
||||
{
|
||||
|
||||
if (listener) {
|
||||
if (listener && getEnabled()) {
|
||||
if (ce == hshape) {
|
||||
listener->panelChanged (EvHSVEqualizerH, M("HISTORY_CUSTOMCURVE"));
|
||||
}
|
||||
@@ -199,3 +202,17 @@ void HSVEqualizer::setBatchMode (bool batchMode)
|
||||
|
||||
curveEditorG->setBatchMode (batchMode);
|
||||
}
|
||||
|
||||
|
||||
void HSVEqualizer::enabledChanged()
|
||||
{
|
||||
if (listener) {
|
||||
if (get_inconsistent()) {
|
||||
listener->panelChanged (EvHSVEqEnabled, M("GENERAL_UNCHANGED"));
|
||||
} else if (getEnabled()) {
|
||||
listener->panelChanged (EvHSVEqEnabled, M("GENERAL_ENABLED"));
|
||||
} else {
|
||||
listener->panelChanged (EvHSVEqEnabled, M("GENERAL_DISABLED"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,6 +54,7 @@ public:
|
||||
virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller);
|
||||
|
||||
//void adjusterChanged (Adjuster* a, double newval);
|
||||
void enabledChanged();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -97,6 +97,7 @@ void ParamsEdited::set (bool v)
|
||||
labCurve.avoidcolorshift = v;
|
||||
labCurve.rstprotection = v;
|
||||
labCurve.lcredsk = v;
|
||||
rgbCurves.enabled = v;
|
||||
rgbCurves.lumamode = v;
|
||||
rgbCurves.rcurve = v;
|
||||
rgbCurves.gcurve = v;
|
||||
@@ -320,6 +321,7 @@ void ParamsEdited::set (bool v)
|
||||
vignetting.strength = v;
|
||||
vignetting.centerX = v;
|
||||
vignetting.centerY = v;
|
||||
chmixer.enabled = v;
|
||||
chmixer.red[0] = v;
|
||||
chmixer.red[1] = v;
|
||||
chmixer.red[2] = v;
|
||||
@@ -548,6 +550,7 @@ void ParamsEdited::set (bool v)
|
||||
dirpyrequalizer.skinprotect = v;
|
||||
dirpyrequalizer.hueskin = v;
|
||||
//dirpyrequalizer.algo = v;
|
||||
hsvequalizer.enabled = v;
|
||||
hsvequalizer.hcurve = v;
|
||||
hsvequalizer.scurve = v;
|
||||
hsvequalizer.vcurve = v;
|
||||
@@ -638,6 +641,7 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
|
||||
labCurve.avoidcolorshift = labCurve.avoidcolorshift && p.labCurve.avoidcolorshift == other.labCurve.avoidcolorshift;
|
||||
labCurve.rstprotection = labCurve.rstprotection && p.labCurve.rstprotection == other.labCurve.rstprotection;
|
||||
labCurve.lcredsk = labCurve.lcredsk && p.labCurve.lcredsk == other.labCurve.lcredsk;
|
||||
rgbCurves.enabled = rgbCurves.enabled && p.rgbCurves.enabled == other.rgbCurves.enabled;
|
||||
rgbCurves.lumamode = rgbCurves.lumamode && p.rgbCurves.lumamode == other.rgbCurves.lumamode;
|
||||
rgbCurves.rcurve = rgbCurves.rcurve && p.rgbCurves.rcurve == other.rgbCurves.rcurve;
|
||||
rgbCurves.gcurve = rgbCurves.gcurve && p.rgbCurves.gcurve == other.rgbCurves.gcurve;
|
||||
@@ -865,6 +869,7 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
|
||||
vignetting.strength = vignetting.strength && p.vignetting.strength == other.vignetting.strength;
|
||||
vignetting.centerX = vignetting.centerX && p.vignetting.centerX == other.vignetting.centerX;
|
||||
vignetting.centerY = vignetting.centerY && p.vignetting.centerY == other.vignetting.centerY;
|
||||
chmixer.enabled = chmixer.enabled && p.chmixer.enabled == other.chmixer.enabled;
|
||||
chmixer.red[0] = chmixer.red[0] && p.chmixer.red[0] == other.chmixer.red[0];
|
||||
chmixer.red[1] = chmixer.red[1] && p.chmixer.red[1] == other.chmixer.red[1];
|
||||
chmixer.red[2] = chmixer.red[2] && p.chmixer.red[2] == other.chmixer.red[2];
|
||||
@@ -1086,6 +1091,7 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
|
||||
dirpyrequalizer.skinprotect = dirpyrequalizer.skinprotect && p.dirpyrequalizer.skinprotect == other.dirpyrequalizer.skinprotect;
|
||||
// dirpyrequalizer.algo = dirpyrequalizer.algo && p.dirpyrequalizer.algo == other.dirpyrequalizer.algo;
|
||||
dirpyrequalizer.hueskin = dirpyrequalizer.hueskin && p.dirpyrequalizer.hueskin == other.dirpyrequalizer.hueskin;
|
||||
hsvequalizer.enabled = hsvequalizer.enabled && p.hsvequalizer.enabled == other.hsvequalizer.enabled;
|
||||
hsvequalizer.hcurve = hsvequalizer.hcurve && p.hsvequalizer.hcurve == other.hsvequalizer.hcurve;
|
||||
hsvequalizer.scurve = hsvequalizer.scurve && p.hsvequalizer.scurve == other.hsvequalizer.scurve;
|
||||
hsvequalizer.vcurve = hsvequalizer.vcurve && p.hsvequalizer.vcurve == other.hsvequalizer.vcurve;
|
||||
@@ -1358,6 +1364,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
|
||||
toEdit.labCurve.lcredsk = mods.labCurve.lcredsk;
|
||||
}
|
||||
|
||||
if (rgbCurves.enabled) {
|
||||
toEdit.rgbCurves.enabled = mods.rgbCurves.enabled;
|
||||
}
|
||||
|
||||
if (rgbCurves.lumamode) {
|
||||
toEdit.rgbCurves.lumamode = mods.rgbCurves.lumamode;
|
||||
}
|
||||
@@ -2195,6 +2205,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
|
||||
toEdit.vignetting.centerY = dontforceSet && options.baBehav[ADDSET_VIGN_CENTER] ? toEdit.vignetting.centerY + mods.vignetting.centerY : mods.vignetting.centerY;
|
||||
}
|
||||
|
||||
if (chmixer.enabled) {
|
||||
toEdit.chmixer.enabled = mods.chmixer.enabled;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (chmixer.red[i]) {
|
||||
toEdit.chmixer.red[i] = dontforceSet && options.baBehav[ADDSET_CHMIXER] ? toEdit.chmixer.red[i] + mods.chmixer.red[i] : mods.chmixer.red[i];
|
||||
@@ -3014,6 +3028,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
|
||||
}
|
||||
|
||||
// if (dirpyrequalizer.algo) toEdit.dirpyrequalizer.algo = mods.dirpyrequalizer.algo;
|
||||
if (hsvequalizer.enabled) {
|
||||
toEdit.hsvequalizer.enabled = mods.hsvequalizer.enabled;
|
||||
}
|
||||
|
||||
if (hsvequalizer.hcurve) {
|
||||
toEdit.hsvequalizer.hcurve = mods.hsvequalizer.hcurve;
|
||||
}
|
||||
|
||||
@@ -123,6 +123,7 @@ class RGBCurvesParamsEdited
|
||||
{
|
||||
|
||||
public:
|
||||
bool enabled;
|
||||
bool lumamode;
|
||||
bool rcurve;
|
||||
bool gcurve;
|
||||
@@ -488,6 +489,7 @@ class ChannelMixerParamsEdited
|
||||
{
|
||||
|
||||
public:
|
||||
bool enabled;
|
||||
bool red[3];
|
||||
bool green[3];
|
||||
bool blue[3];
|
||||
@@ -678,6 +680,7 @@ class HSVEqualizerParamsEdited
|
||||
{
|
||||
|
||||
public:
|
||||
bool enabled;
|
||||
bool hcurve;
|
||||
bool scurve;
|
||||
bool vcurve;
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
// This number has to be incremented whenever the PP3 file format is modified or the behaviour of a tool changes
|
||||
#define PPVERSION 328
|
||||
#define PPVERSION 329
|
||||
#define PPVERSION_AEXP 301 //value of PPVERSION when auto exposure algorithm was modified
|
||||
|
||||
/*
|
||||
Log of version changes
|
||||
329 2017-12-09
|
||||
Added 'Enabled' flag for Channel Mixer, RGB Curves and HSV Equalizer
|
||||
328 2017-11-22
|
||||
Fix wrong type of ff_clipControl
|
||||
327 2017-09-15
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
using namespace rtengine;
|
||||
using namespace rtengine::procparams;
|
||||
|
||||
RGBCurves::RGBCurves () : FoldableToolPanel(this, "rgbcurves", M("TP_RGBCURVES_LABEL"))
|
||||
RGBCurves::RGBCurves () : FoldableToolPanel(this, "rgbcurves", M("TP_RGBCURVES_LABEL"), false, true)
|
||||
{
|
||||
|
||||
lumamode = Gtk::manage (new Gtk::CheckButton (M("TP_RGBCURVES_LUMAMODE")));
|
||||
@@ -84,6 +84,7 @@ void RGBCurves::read (const ProcParams* pp, const ParamsEdited* pedited)
|
||||
Gshape->setUnChanged (!pedited->rgbCurves.gcurve);
|
||||
Bshape->setUnChanged (!pedited->rgbCurves.bcurve);
|
||||
lumamode->set_inconsistent (!pedited->rgbCurves.lumamode);
|
||||
set_inconsistent(multiImage && !pedited->rgbCurves.enabled);
|
||||
}
|
||||
|
||||
lumamodeConn.block (true);
|
||||
@@ -96,6 +97,8 @@ void RGBCurves::read (const ProcParams* pp, const ParamsEdited* pedited)
|
||||
Gshape->setCurve (pp->rgbCurves.gcurve);
|
||||
Bshape->setCurve (pp->rgbCurves.bcurve);
|
||||
|
||||
setEnabled(pp->rgbCurves.enabled);
|
||||
|
||||
enableListener ();
|
||||
}
|
||||
|
||||
@@ -122,13 +125,14 @@ void RGBCurves::autoOpenCurve ()
|
||||
|
||||
void RGBCurves::write (ProcParams* pp, ParamsEdited* pedited)
|
||||
{
|
||||
|
||||
pp->rgbCurves.enabled = getEnabled();
|
||||
pp->rgbCurves.rcurve = Rshape->getCurve ();
|
||||
pp->rgbCurves.gcurve = Gshape->getCurve ();
|
||||
pp->rgbCurves.bcurve = Bshape->getCurve ();
|
||||
pp->rgbCurves.lumamode = lumamode->get_active();
|
||||
|
||||
if (pedited) {
|
||||
pedited->rgbCurves.enabled = !get_inconsistent();
|
||||
pedited->rgbCurves.rcurve = !Rshape->isUnChanged ();
|
||||
pedited->rgbCurves.gcurve = !Gshape->isUnChanged ();
|
||||
pedited->rgbCurves.bcurve = !Bshape->isUnChanged ();
|
||||
@@ -146,7 +150,7 @@ void RGBCurves::write (ProcParams* pp, ParamsEdited* pedited)
|
||||
void RGBCurves::curveChanged (CurveEditor* ce)
|
||||
{
|
||||
|
||||
if (listener) {
|
||||
if (listener && getEnabled()) {
|
||||
if (ce == Rshape) {
|
||||
listener->panelChanged (EvRGBrCurve, M("HISTORY_CUSTOMCURVE"));
|
||||
}
|
||||
@@ -177,7 +181,7 @@ void RGBCurves::lumamodeChanged ()
|
||||
lastLumamode = lumamode->get_active ();
|
||||
}
|
||||
|
||||
if (listener) {
|
||||
if (listener && getEnabled()) {
|
||||
if (lumamode->get_active ()) {
|
||||
listener->panelChanged (EvRGBrCurveLumamode, M("GENERAL_ENABLED"));
|
||||
} else {
|
||||
@@ -202,3 +206,16 @@ void RGBCurves::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & his
|
||||
// Bshape->updateBackgroundHistogram (histBlue);
|
||||
}
|
||||
|
||||
|
||||
void RGBCurves::enabledChanged()
|
||||
{
|
||||
if (listener) {
|
||||
if (get_inconsistent()) {
|
||||
listener->panelChanged(EvRGBEnabled, M("GENERAL_UNCHANGED"));
|
||||
} else if (getEnabled()) {
|
||||
listener->panelChanged(EvRGBEnabled, M("GENERAL_ENABLED"));
|
||||
} else {
|
||||
listener->panelChanged(EvRGBEnabled, M("GENERAL_DISABLED"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@ public:
|
||||
void curveChanged (CurveEditor* ce);
|
||||
void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, /*LUTu & histCLurve, LUTu & histLLCurve,*/ LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma, LUTu & histLRETI);
|
||||
void lumamodeChanged ();
|
||||
void enabledChanged();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user