Batch editor's sliders behaves better and easier to code for the developper :

- if only one file is selected, all sliders are in SET mode
- if more than one file is selected, the ADD/SET mode depend on the preference

The range of the slider in ADD mode is now twice the range of the same slider in SET mode, so you'll be able to reach the total range for each image at each session. Overflows are correctly handled.

I've added more sliders in the preference window (the one that are not listed behave in SET mode, like before). It's also easier to code for the developper, as the Adjuster class now handle the "add" booleans, instead of each tools. But it's still spreaded all over the code :-/

Furthermore, when clicking on the reset button of a slider, it now reset to the system default value ; resetting to the value of the loaded profil can still be done with CTRL+click on the reset button. This behavior is available in the Editors and in the Batch Editor if only one file is selected.
This commit is contained in:
natureh
2011-06-15 22:57:05 +02:00
parent e6f955012e
commit aff832f721
47 changed files with 2181 additions and 1917 deletions

View File

@@ -857,6 +857,7 @@ TP_RAWCACORR_CABLUE;Blue
TP_RAWCACORR_CARED;Red
TP_RAWEXPOS_LINEAR;White Point: Linear corr. factor
TP_RAWEXPOS_PRESER;White Point: HL preserving corr.(EV)
TP_RAWEXPOS_BLACKS;Black Levels
TP_RAWEXPOS_BLACKZERO;Black Level: Green 1 (leader)
TP_RAWEXPOS_BLACKONE;Black Level: Red
TP_RAWEXPOS_BLACKTWO;Black Level: Blue

View File

@@ -1,6 +1,10 @@
#ifndef _ADDSETIDS_
#define _ADDSETIDS_
// UPDATE THE DEFAULT VALUE IN OPTIONS.CC TOO !!!
#define ADDSET_TC_EXPCOMP 0
#define ADDSET_TC_BRIGHTNESS 1
#define ADDSET_TC_BLACKLEVEL 2
@@ -27,9 +31,21 @@
#define ADDSET_TC_HLCOMPAMOUNT 23
#define ADDSET_TC_HLCOMPTHRESH 24
#define ADDSET_TC_SHCOMP 25
// When adding items, make sure to update ADDSET_PARAM_NUM
#define ADDSET_PARAM_NUM 26 // THIS IS USED AS A DELIMITER!!
#define ADDSET_TC_SHCOMP 25
#define ADDSET_DIRPYREQ 26
#define ADDSET_DIRPYRDN_CHLUM 27
#define ADDSET_DIRPYRDN_GAMMA 28
#define ADDSET_CHMIXER 29
#define ADDSET_PREPROCESS_GREENEQUIL 30
#define ADDSET_PREPROCESS_LINEDENOISE 31
#define ADDSET_RAWCACORR 32
#define ADDSET_RAWEXPOS_LINEAR 33
#define ADDSET_RAWEXPOS_PRESER 34
#define ADDSET_RAWEXPOS_BLACKS 35
// When adding items, make sure to update ADDSET_PARAM_NUM
#define ADDSET_PARAM_NUM 36 // THIS IS USED AS A DELIMITER!!
#endif

View File

@@ -31,6 +31,12 @@ Adjuster::Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep
afterReset = false;
blocked = false;
vMin = vmin;
vMax = vmax;
vStep = vstep;
initialDefaultVal = vdefault;
addMode = false;
// TODO: let the user chose the default value of Adjuster::delay, for slow machines
delay = options.adjusterDelay; // delay is no more static, so we can set the delay individually (usefull for the RAW editor tab)
@@ -74,11 +80,12 @@ Adjuster::Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep
setLimits (vmin, vmax, vstep, vdefault);
defaultVal = shapeValue (vdefault);
initialDefaultVal = shapeValue (vdefault);
editedState = defEditedState = Irrelevant;
sliderChange = slider->signal_value_changed().connect( sigc::mem_fun(*this, &Adjuster::sliderChanged) );
spinChange = spin->signal_value_changed().connect ( sigc::mem_fun(*this, &Adjuster::spinChanged), true);
reset->signal_clicked().connect( sigc::mem_fun(*this, &Adjuster::resetPressed) );
reset->signal_button_release_event().connect_notify( sigc::mem_fun(*this, &Adjuster::resetPressed) );
slider->set_update_policy (Gtk::UPDATE_CONTINUOUS);
show_all ();
@@ -102,7 +109,7 @@ void Adjuster::setDefaultEditedState (EditedState eState) {
defEditedState = eState;
}
void Adjuster::resetPressed () {
void Adjuster::resetPressed (GdkEventButton* event) {
if (editedState!=Irrelevant) {
editedState = defEditedState;
@@ -114,7 +121,12 @@ void Adjuster::resetPressed () {
refreshLabelStyle ();
}
afterReset = true;
slider->set_value (defaultVal);
if ((event != NULL) && (event->state & GDK_CONTROL_MASK) && (event->button == 1))
// CTRL pressed : resetting to current default value
slider->set_value (defaultVal);
else
// no modifier key or addMode=true : resetting to initial default value
slider->set_value (initialDefaultVal);
}
double Adjuster::shapeValue (double a) {
@@ -135,11 +147,28 @@ void Adjuster::setLimits (double vmin, double vmax, double vstep, double vdefaul
slider->set_increments (vstep, 2.0*vstep);
slider->set_range (vmin, vmax);
slider->set_value (shapeValue(vdefault));
defaultVal = shapeValue (vdefault);
//defaultVal = shapeValue (vdefault);
sliderChange.block (false);
spinChange.block (false);
}
void Adjuster::setAddMode(bool addM) {
if (addM != addMode) {
// Switching the Adjuster to the new mode
if (addM) {
// Switching to the relative mode
double range = -vMin + vMax;
if (range < 0.) range = -range;
setLimits(-range, range, vStep, 0);
}
else {
// Switching to the absolute mode
setLimits(vMin, vMax, vStep, defaultVal);
}
addMode = addM;
}
}
void Adjuster::setAdjusterListener (AdjusterListener* alistener) {
adjusterListener = alistener;
@@ -209,16 +238,19 @@ void Adjuster::setValue (double a) {
afterReset = false;
}
// return the value trimmed to the limits at construction time
double Adjuster::getValue () {
return spin->get_value ();
}
// return the value trimmed to the limits at construction time
int Adjuster::getIntValue () {
return spin->get_value_as_int ();
}
// method only used by the history manager
Glib::ustring Adjuster::getTextValue () {
return spin->get_text ();
@@ -284,3 +316,25 @@ void Adjuster::editedToggled () {
if (adjusterListener && !blocked)
adjusterListener->adjusterChanged (this, spin->get_value ());
}
double Adjuster::trimValue (double& val) {
if (val > vMax) val = vMax; // shapeValue(vMax) ?
else if (val < vMin) val = vMin; // shapeValue(vMin) ?
return val;
}
int Adjuster::trimValue (int& val) {
if (val > (int)vMax) val = (int)vMax; // shapeValue(vMax) ?
else if (val < (int)vMin) val = (int)vMin; // shapeValue(vMin) ?
return val;
}
float Adjuster::trimValue (float& val) {
if (val > (float)vMax) val = (float)vMax; // shapeValue(vMax) ?
else if (val < (float)vMin) val = (float)vMin; // shapeValue(vMin) ?
return val;
}

View File

@@ -44,13 +44,18 @@ class Adjuster : public Gtk::VBox {
sigc::connection sliderChange;
sigc::connection editedChange;
bool listenerReady;
double defaultVal;
double defaultVal; // current default value (it can change when switching from ADD or SET mode)
double initialDefaultVal; // default value at construction time
EditedState editedState;
EditedState defEditedState;
int digits;
Gtk::CheckButton* editedCheckBox;
bool afterReset;
bool blocked;
bool addMode;
double vMin;
double vMax;
double vStep;
double shapeValue (double a);
void refreshLabelStyle ();
@@ -76,12 +81,16 @@ class Adjuster : public Gtk::VBox {
void showEditedCB ();
void block(bool isBlocked) { blocked = isBlocked; }
void setAddMode(bool addM);
bool getAddMode() { return addMode; };
void spinChanged ();
void sliderChanged ();
bool notifyListener ();
void resetPressed ();
void resetPressed (GdkEventButton* event);
void editedToggled ();
double trimValue (double& val);
float trimValue (float& val);
int trimValue (int& val);
};
#endif

View File

@@ -69,8 +69,13 @@ void BatchToolPanelCoordinator::closeSession (bool save) {
ProcParams newParams;
for (int i=0; i<selected.size(); i++) {
newParams = initialPP[i];
pparamsEdited.combine (newParams, pparams);
selected[i]->setProcParams (newParams, BATCHEDITOR, true);
pparamsEdited.combine (newParams, pparams, selected.size()==1);
// trim new adjuster's values to the adjuster's limits
for (unsigned int j=0; j<toolPanels.size(); j++)
toolPanels[j]->trimValues (&newParams);
selected[i]->setProcParams (newParams, BATCHEDITOR, true);
}
}
for (int i=0; i<paramcListeners.size(); i++)
@@ -90,18 +95,6 @@ void BatchToolPanelCoordinator::initSession () {
pparamsEdited.initFrom (initialPP);
/* curve->setAdjusterBehavior (false, false, false, false);
whitebalance->setAdjusterBehavior (false, false);
vignetting->setAdjusterBehavior (false);
rotate->setAdjusterBehavior (false);
distortion->setAdjusterBehavior (false);
cacorrection->setAdjusterBehavior (false, false);
colorshift->setAdjusterBehavior (false, false);
colorboost->setAdjusterBehavior (false);
lumadenoise->setAdjusterBehavior (false);
sharpening->setAdjusterBehavior (false);
shadowshighlights->setAdjusterBehavior (false, false, false);
*/
crop->setDimensions (100000, 100000);
/* if (selected.size()>0) {
@@ -117,64 +110,109 @@ void BatchToolPanelCoordinator::initSession () {
if (selected.size()>0) {
pparams = selected[0]->getProcParams ();
coarse->initBatchBehavior ();
// The first selected image (in the thumbnail list, not the click list) is used to populate the EditorPanel and set the default values
pparams = selected[0]->getProcParams ();
toneCurve->setAdjusterBehavior (options.baBehav[ADDSET_TC_EXPCOMP], options.baBehav[ADDSET_TC_HLCOMPAMOUNT],options.baBehav[ADDSET_TC_HLCOMPTHRESH], options.baBehav[ADDSET_TC_BRIGHTNESS], options.baBehav[ADDSET_TC_BLACKLEVEL],options.baBehav[ADDSET_TC_SHCOMP], options.baBehav[ADDSET_TC_CONTRAST], options.baBehav[ADDSET_TC_SATURATION]);
lcurve->setAdjusterBehavior (options.baBehav[ADDSET_LC_BRIGHTNESS], options.baBehav[ADDSET_LC_CONTRAST], options.baBehav[ADDSET_LC_SATURATION]);
whitebalance->setAdjusterBehavior (options.baBehav[ADDSET_WB_TEMPERATURE], options.baBehav[ADDSET_WB_GREEN]);
vignetting->setAdjusterBehavior (options.baBehav[ADDSET_VIGN_AMOUNT]);
rotate->setAdjusterBehavior (options.baBehav[ADDSET_ROTATE_DEGREE]);
distortion->setAdjusterBehavior (options.baBehav[ADDSET_DIST_AMOUNT]);
perspective->setAdjusterBehavior (options.baBehav[ADDSET_PERSPECTIVE]);
cacorrection->setAdjusterBehavior (options.baBehav[ADDSET_CA]);
//colorshift->setAdjusterBehavior (options.baBehav[ADDSET_CS_BLUEYELLOW], options.baBehav[ADDSET_CS_GREENMAGENTA]);
//colorboost->setAdjusterBehavior (options.baBehav[ADDSET_CBOOST_AMOUNT]);
//lumadenoise->setAdjusterBehavior (options.baBehav[ADDSET_LD_EDGETOLERANCE]);
sharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_AMOUNT]);
shadowshighlights->setAdjusterBehavior (options.baBehav[ADDSET_SH_HIGHLIGHTS], options.baBehav[ADDSET_SH_SHADOWS], options.baBehav[ADDSET_SH_LOCALCONTRAST]);
coarse->initBatchBehavior ();
if (options.baBehav[ADDSET_TC_EXPCOMP]) pparams.toneCurve.expcomp = 0;
if (options.baBehav[ADDSET_TC_HLCOMPAMOUNT]) pparams.toneCurve.hlcompr = 0;
if (options.baBehav[ADDSET_TC_HLCOMPTHRESH]) pparams.toneCurve.hlcomprthresh = 0;
if (options.baBehav[ADDSET_TC_BRIGHTNESS]) pparams.toneCurve.brightness = 0;
if (options.baBehav[ADDSET_TC_BLACKLEVEL]) pparams.toneCurve.black = 0;
if (options.baBehav[ADDSET_TC_SHCOMP]) pparams.toneCurve.shcompr = 0;
if (options.baBehav[ADDSET_TC_CONTRAST]) pparams.toneCurve.contrast = 0;
if (selected.size()==1) {
if (options.baBehav[ADDSET_SH_HIGHLIGHTS]) pparams.sh.highlights = 0;
if (options.baBehav[ADDSET_SH_SHADOWS]) pparams.sh.shadows = 0;
if (options.baBehav[ADDSET_SH_LOCALCONTRAST]) pparams.sh.localcontrast = 0;
toneCurve->setAdjusterBehavior (false, false, false, false, false, false, false, false);
lcurve->setAdjusterBehavior (false, false, false);
whitebalance->setAdjusterBehavior (false, false);
vignetting->setAdjusterBehavior (false);
rotate->setAdjusterBehavior (false);
distortion->setAdjusterBehavior (false);
perspective->setAdjusterBehavior (false);
cacorrection->setAdjusterBehavior (false);
//colorshift->setAdjusterBehavior (false, false);
//colorboost->setAdjusterBehavior (false);
//lumadenoise->setAdjusterBehavior (false);
sharpening->setAdjusterBehavior (false);
chmixer->setAdjusterBehavior (false);
shadowshighlights->setAdjusterBehavior (false, false, false);
dirpyrequalizer->setAdjusterBehavior (false);
dirpyrdenoise->setAdjusterBehavior (false, false);
preprocess->setAdjusterBehavior (false, false);
rawcacorrection->setAdjusterBehavior (false);
rawexposure->setAdjusterBehavior (false, false, false);
}
else {
if (options.baBehav[ADDSET_LC_BRIGHTNESS]) pparams.labCurve.brightness = 0;
if (options.baBehav[ADDSET_LC_CONTRAST]) pparams.labCurve.contrast = 0;
if (options.baBehav[ADDSET_LC_SATURATION]) pparams.labCurve.saturation = 0;
toneCurve->setAdjusterBehavior (options.baBehav[ADDSET_TC_EXPCOMP], options.baBehav[ADDSET_TC_HLCOMPAMOUNT],options.baBehav[ADDSET_TC_HLCOMPTHRESH], options.baBehav[ADDSET_TC_BRIGHTNESS], options.baBehav[ADDSET_TC_BLACKLEVEL],options.baBehav[ADDSET_TC_SHCOMP], options.baBehav[ADDSET_TC_CONTRAST], options.baBehav[ADDSET_TC_SATURATION]);
lcurve->setAdjusterBehavior (options.baBehav[ADDSET_LC_BRIGHTNESS], options.baBehav[ADDSET_LC_CONTRAST], options.baBehav[ADDSET_LC_SATURATION]);
whitebalance->setAdjusterBehavior (options.baBehav[ADDSET_WB_TEMPERATURE], options.baBehav[ADDSET_WB_GREEN]);
vignetting->setAdjusterBehavior (options.baBehav[ADDSET_VIGN_AMOUNT]);
rotate->setAdjusterBehavior (options.baBehav[ADDSET_ROTATE_DEGREE]);
distortion->setAdjusterBehavior (options.baBehav[ADDSET_DIST_AMOUNT]);
perspective->setAdjusterBehavior (options.baBehav[ADDSET_PERSPECTIVE]);
cacorrection->setAdjusterBehavior (options.baBehav[ADDSET_CA]);
//colorshift->setAdjusterBehavior (options.baBehav[ADDSET_CS_BLUEYELLOW], options.baBehav[ADDSET_CS_GREENMAGENTA]);
//colorboost->setAdjusterBehavior (options.baBehav[ADDSET_CBOOST_AMOUNT]);
//lumadenoise->setAdjusterBehavior (options.baBehav[ADDSET_LD_EDGETOLERANCE]);
sharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_AMOUNT]);
chmixer->setAdjusterBehavior (options.baBehav[ADDSET_CHMIXER]);
shadowshighlights->setAdjusterBehavior (options.baBehav[ADDSET_SH_HIGHLIGHTS], options.baBehav[ADDSET_SH_SHADOWS], options.baBehav[ADDSET_SH_LOCALCONTRAST]);
dirpyrequalizer->setAdjusterBehavior (options.baBehav[ADDSET_DIRPYREQ]);
dirpyrdenoise->setAdjusterBehavior (options.baBehav[ADDSET_DIRPYRDN_CHLUM], options.baBehav[ADDSET_DIRPYRDN_GAMMA]);
preprocess->setAdjusterBehavior (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE], options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]);
rawcacorrection->setAdjusterBehavior (options.baBehav[ADDSET_RAWCACORR]);
rawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_LINEAR], options.baBehav[ADDSET_RAWEXPOS_PRESER], options.baBehav[ADDSET_RAWEXPOS_BLACKS]);
if (options.baBehav[ADDSET_SHARP_AMOUNT]) pparams.sharpening.amount = 0;
if (options.baBehav[ADDSET_LD_EDGETOLERANCE]) pparams.lumaDenoise.edgetolerance = 0;
if (options.baBehav[ADDSET_TC_EXPCOMP]) pparams.toneCurve.expcomp = 0;
if (options.baBehav[ADDSET_TC_HLCOMPAMOUNT]) pparams.toneCurve.hlcompr = 0;
if (options.baBehav[ADDSET_TC_HLCOMPTHRESH]) pparams.toneCurve.hlcomprthresh = 0;
if (options.baBehav[ADDSET_TC_BRIGHTNESS]) pparams.toneCurve.brightness = 0;
if (options.baBehav[ADDSET_TC_BLACKLEVEL]) pparams.toneCurve.black = 0;
if (options.baBehav[ADDSET_TC_SHCOMP]) pparams.toneCurve.shcompr = 0;
if (options.baBehav[ADDSET_TC_CONTRAST]) pparams.toneCurve.contrast = 0;
if (options.baBehav[ADDSET_WB_TEMPERATURE]) pparams.wb.temperature = 0;
if (options.baBehav[ADDSET_WB_GREEN]) pparams.wb.green = 0;
if (options.baBehav[ADDSET_SH_HIGHLIGHTS]) pparams.sh.highlights = 0;
if (options.baBehav[ADDSET_SH_SHADOWS]) pparams.sh.shadows = 0;
if (options.baBehav[ADDSET_SH_LOCALCONTRAST]) pparams.sh.localcontrast = 0;
if (options.baBehav[ADDSET_CBOOST_AMOUNT]) pparams.colorBoost.amount = 0;
if (options.baBehav[ADDSET_LC_BRIGHTNESS]) pparams.labCurve.brightness = 0;
if (options.baBehav[ADDSET_LC_CONTRAST]) pparams.labCurve.contrast = 0;
if (options.baBehav[ADDSET_LC_SATURATION]) pparams.labCurve.saturation = 0;
if (options.baBehav[ADDSET_CS_BLUEYELLOW]) pparams.colorShift.a = 0;
if (options.baBehav[ADDSET_CS_GREENMAGENTA]) pparams.colorShift.b = 0;
if (options.baBehav[ADDSET_SHARP_AMOUNT]) pparams.sharpening.amount = 0;
if (options.baBehav[ADDSET_CHMIXER]) for (int i=0; i<3; i++) pparams.chmixer.red[i] = pparams.chmixer.green[i] = pparams.chmixer.blue[i] = 0;
if (options.baBehav[ADDSET_LD_EDGETOLERANCE]) pparams.lumaDenoise.edgetolerance = 0;
if (options.baBehav[ADDSET_ROTATE_DEGREE]) pparams.rotate.degree = 0;
if (options.baBehav[ADDSET_DIST_AMOUNT]) pparams.distortion.amount = 0;
if (options.baBehav[ADDSET_PERSPECTIVE]) pparams.perspective.horizontal = pparams.perspective.vertical = 0;
if (options.baBehav[ADDSET_CA]) pparams.cacorrection.red = 0;
if (options.baBehav[ADDSET_CA]) pparams.cacorrection.blue = 0;
if (options.baBehav[ADDSET_VIGN_AMOUNT]) pparams.vignetting.amount = 0;
if (options.baBehav[ADDSET_WB_TEMPERATURE]) pparams.wb.temperature = 0;
if (options.baBehav[ADDSET_WB_GREEN]) pparams.wb.green = 0;
for (int i=0; i<toolPanels.size(); i++) {
toolPanels[i]->setDefaults (&pparams, &pparamsEdited);
toolPanels[i]->read (&pparams, &pparamsEdited);
}
for (int i=0; i<paramcListeners.size(); i++)
paramcListeners[i]->procParamsChanged (&pparams, rtengine::EvPhotoLoaded, M("BATCH_PROCESSING"), &pparamsEdited);
}
if (options.baBehav[ADDSET_CBOOST_AMOUNT]) pparams.colorBoost.amount = 0;
if (options.baBehav[ADDSET_CS_BLUEYELLOW]) pparams.colorShift.a = 0;
if (options.baBehav[ADDSET_CS_GREENMAGENTA]) pparams.colorShift.b = 0;
if (options.baBehav[ADDSET_ROTATE_DEGREE]) pparams.rotate.degree = 0;
if (options.baBehav[ADDSET_DIST_AMOUNT]) pparams.distortion.amount = 0;
if (options.baBehav[ADDSET_PERSPECTIVE]) pparams.perspective.horizontal = pparams.perspective.vertical = 0;
if (options.baBehav[ADDSET_CA]) pparams.cacorrection.red = 0;
if (options.baBehav[ADDSET_CA]) pparams.cacorrection.blue = 0;
if (options.baBehav[ADDSET_VIGN_AMOUNT]) pparams.vignetting.amount = 0;
if (options.baBehav[ADDSET_DIRPYREQ]) for (int i=0; i<5; i++) pparams.dirpyrequalizer.mult[i] = 0;
if (options.baBehav[ADDSET_DIRPYRDN_CHLUM]) pparams.dirpyrDenoise.luma = pparams.dirpyrDenoise.chroma = 0;
if (options.baBehav[ADDSET_DIRPYRDN_GAMMA]) pparams.dirpyrDenoise.gamma = 0;
if (options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]) pparams.raw.greenthresh = 0;
if (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE]) pparams.raw.linenoise = 0;
if (options.baBehav[ADDSET_RAWCACORR]) pparams.raw.cablue = pparams.raw.cared = 0;
if (options.baBehav[ADDSET_RAWEXPOS_LINEAR]) pparams.raw.expos = 0;
if (options.baBehav[ADDSET_RAWEXPOS_PRESER]) pparams.raw.preser = 0;
if (options.baBehav[ADDSET_RAWEXPOS_BLACKS]) pparams.raw.blackzero = pparams.raw.blackone = pparams.raw.blacktwo = pparams.raw.blackthree = 0;
}
for (int i=0; i<toolPanels.size(); i++) {
toolPanels[i]->setDefaults (&pparams, &pparamsEdited);
toolPanels[i]->read (&pparams, &pparamsEdited);
}
for (int i=0; i<paramcListeners.size(); i++)
paramcListeners[i]->procParamsChanged (&pparams, rtengine::EvPhotoLoaded, M("BATCH_PROCESSING"), &pparamsEdited);
}
}
void BatchToolPanelCoordinator::panelChanged (rtengine::ProcEvent event, const Glib::ustring& descr) {
@@ -208,7 +246,14 @@ void BatchToolPanelCoordinator::panelChanged (rtengine::ProcEvent event, const G
ProcParams newParams;
for (int i=0; i<selected.size(); i++) {
newParams = initialPP[i];
pparamsEdited.combine (newParams, pparams);
// If only one file is selected, slider's addMode has been set to false, and hence the behave
// like in SET mode like in an editor ; that's why we force the combination to the SET mode too
pparamsEdited.combine (newParams, pparams, selected.size()==1);
// trim new adjuster's values to the adjuster's limits
for (unsigned int j=0; j<toolPanels.size(); j++)
toolPanels[j]->trimValues (&newParams);
selected[i]->setProcParams (newParams, BATCHEDITOR, false);
}
@@ -261,7 +306,7 @@ void BatchToolPanelCoordinator::profileChange (const ProcParams *nparams, rteng
ProcParams newParams;
for (int i=0; i<selected.size(); i++) {
newParams = initialPP[i];
pparamsEdited.combine (newParams, pparams);
pparamsEdited.combine (newParams, pparams, true);
selected[i]->setProcParams (newParams, BATCHEDITOR, false);
}

View File

@@ -22,7 +22,7 @@
using namespace rtengine;
using namespace rtengine::procparams;
CACorrection::CACorrection () : Gtk::VBox(), FoldableToolPanel(this), vAdd(false) {
CACorrection::CACorrection () : Gtk::VBox(), FoldableToolPanel(this) {
red = Gtk::manage (new Adjuster (M("TP_CACORRECTION_RED"), -0.005, 0.005, 0.0001, 0));
red->setAdjusterListener (this);
@@ -85,12 +85,14 @@ void CACorrection::adjusterChanged (Adjuster* a, double newval) {
void CACorrection::setAdjusterBehavior (bool badd) {
if ((!vAdd && badd) || (vAdd && !badd)) {
red->setLimits (-0.005, 0.005, 0.0001, 0);
blue->setLimits (-0.005, 0.005, 0.0001, 0);
}
red->setAddMode(badd);
blue->setAddMode(badd);
}
vAdd = badd;
void CACorrection::trimValues (rtengine::procparams::ProcParams* pp) {
red->trimValue(pp->cacorrection.red);
blue->trimValue(pp->cacorrection.blue);
}
void CACorrection::setBatchMode (bool batchMode) {

View File

@@ -28,7 +28,6 @@ class CACorrection : public Gtk::VBox, public AdjusterListener, public FoldableT
protected:
Adjuster* red;
Adjuster* blue;
bool vAdd;
public:
@@ -41,6 +40,7 @@ class CACorrection : public Gtk::VBox, public AdjusterListener, public FoldableT
void adjusterChanged (Adjuster* a, double newval);
void setAdjusterBehavior (bool badd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
#endif

View File

@@ -149,3 +149,21 @@ void ChMixer::setBatchMode (bool batchMode) {
blue[i]->showEditedCB ();
}
}
void ChMixer::setAdjusterBehavior (bool rgbadd) {
for (int i=0; i<3; i++) {
red[i]->setAddMode(rgbadd);
green[i]->setAddMode(rgbadd);
blue[i]->setAddMode(rgbadd);
}
}
void ChMixer::trimValues (rtengine::procparams::ProcParams* pp) {
for (int i=0; i<3; i++) {
red[i]->trimValue(pp->chmixer.red[i]);
green[i]->trimValue(pp->chmixer.green[i]);
blue[i]->trimValue(pp->chmixer.blue[i]);
}
}

View File

@@ -40,6 +40,8 @@ class ChMixer : public Gtk::VBox, public AdjusterListener, public FoldableToolPa
void setBatchMode (bool batchMode);
void adjusterChanged (Adjuster* a, double newval);
void setAdjusterBehavior (bool rgbadd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
#endif

View File

@@ -138,13 +138,3 @@ void Defringe::setBatchMode (bool batchMode) {
radius->showEditedCB ();
threshold->showEditedCB ();
}
/*void Defringe::setAdjusterBehavior (bool bthresholdtoladd) {
if (!thresholdtolAdd && bthresholdtoladd)
threshold->setLimits (-10000, 10000, 100, 0);
else if (thresholdtolAdd && !bthresholdtoladd)
threshold->setLimits (100, 10000, 100, 1000);
thresholdtolAdd = bthresholdtoladd;
}*/

View File

@@ -32,7 +32,6 @@ class Defringe : public Gtk::VBox, public AdjusterListener, public FoldableToolP
bool lastEnabled;
sigc::connection enaConn;
bool edges;
bool thresholdtolAdd;
public:
@@ -46,7 +45,6 @@ class Defringe : public Gtk::VBox, public AdjusterListener, public FoldableToolP
void adjusterChanged (Adjuster* a, double newval);
void enabledChanged ();
void setAdjusterBehavior (bool bthresholdtoladd);
};
#endif

View File

@@ -569,10 +569,10 @@ bool DiagonalCurveEditorSubGroup::curveReset(int cType) {
return true;
break;
case (DCT_Parametric) :
highlights->resetPressed();
lights->resetPressed();
darks->resetPressed();
shadows->resetPressed();
highlights->resetPressed(NULL);
lights->resetPressed(NULL);
darks->resetPressed(NULL);
shadows->resetPressed(NULL);
shcSelector->reset();
paramCurve->reset ();
return true;

View File

@@ -158,12 +158,16 @@ void DirPyrDenoise::setBatchMode (bool batchMode) {
chroma->showEditedCB ();
}
/*void DirPyrDenoise::setAdjusterBehavior (bool bedgetoladd) {
void DirPyrDenoise::setAdjusterBehavior (bool chrolumaadd, bool gammaadd) {
if (!edgetolAdd && bedgetoladd)
edge->setLimits (-10000, 10000, 100, 0);
else if (edgetolAdd && !bedgetoladd)
edge->setLimits (10, 30000, 100, 1500);
luma->setAddMode(chrolumaadd);
chroma->setAddMode(chrolumaadd);
gamma->setAddMode(gammaadd);
}
edgetolAdd = bedgetoladd;
}*/
void DirPyrDenoise::trimValues (rtengine::procparams::ProcParams* pp) {
luma->trimValue(pp->dirpyrDenoise.luma);
chroma->trimValue(pp->dirpyrDenoise.chroma);
gamma->trimValue(pp->dirpyrDenoise.gamma);
}

View File

@@ -33,7 +33,6 @@ class DirPyrDenoise : public Gtk::VBox, public AdjusterListener, public Foldable
Gtk::CheckButton* enabled;
bool lastEnabled;
sigc::connection enaConn;
bool edgetolAdd;
public:
@@ -45,9 +44,10 @@ class DirPyrDenoise : public Gtk::VBox, public AdjusterListener, public Foldable
void setBatchMode (bool batchMode);
void adjusterChanged (Adjuster* a, double newval);
void enabledChanged ();
void enabledChanged ();
void setAdjusterBehavior (bool bedgetoladd);
void setAdjusterBehavior (bool chrolumaadd, bool gammaadd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
#endif

View File

@@ -220,4 +220,14 @@ void DirPyrEqualizer::lumacontrastMinusPressed () {
}
}
void DirPyrEqualizer::setAdjusterBehavior (bool multiplieradd) {
for (int i=0; i<5; i++)
multiplier[i]->setAddMode(multiplieradd);
}
void DirPyrEqualizer::trimValues (rtengine::procparams::ProcParams* pp) {
for (int i=0; i<5; i++)
multiplier[i]->trimValue(pp->dirpyrequalizer.mult[i]);
}

View File

@@ -44,10 +44,12 @@ public:
DirPyrEqualizer ();
virtual ~DirPyrEqualizer ();
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 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 setAdjusterBehavior (bool multiplieradd);
void trimValues (rtengine::procparams::ProcParams* pp);
void adjusterChanged (Adjuster* a, double newval);
void enabledToggled ();

View File

@@ -38,7 +38,6 @@ Distortion::Distortion (): Gtk::VBox(), FoldableToolPanel(this) {
distor->setAdjusterListener (this);
distor->show();
pack_start (*distor);
distAdd = false;
}
void Distortion::read (const ProcParams* pp, const ParamsEdited* pedited) {
@@ -81,14 +80,6 @@ void Distortion::adjusterChanged (Adjuster* a, double newval) {
listener->panelChanged (EvDISTAmount, Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), a->getValue()));
}
void Distortion::setAdjusterBehavior (bool bvadd) {
if ((!distAdd && bvadd) || (distAdd && !bvadd))
distor->setLimits (-0.5, 0.5, 0.001, 0);
distAdd = bvadd;
}
void Distortion::setBatchMode (bool batchMode) {
ToolPanel::setBatchMode (batchMode);
@@ -107,3 +98,13 @@ void Distortion::idPressed () {
}
}
}
void Distortion::setAdjusterBehavior (bool vadd) {
distor->setAddMode(vadd);
}
void Distortion::trimValues (rtengine::procparams::ProcParams* pp) {
distor->trimValue(pp->distortion.amount);
}

View File

@@ -29,7 +29,6 @@ class Distortion : public Gtk::VBox, public AdjusterListener, public FoldableToo
protected:
Gtk::Button* autoDistor;
Adjuster* distor;
bool distAdd;
sigc::connection idConn;
LensGeomListener * rlistener;
@@ -43,9 +42,10 @@ class Distortion : public Gtk::VBox, public AdjusterListener, public FoldableToo
void setBatchMode (bool batchMode);
void adjusterChanged (Adjuster* a, double newval);
void setAdjusterBehavior (bool bvadd);
void idPressed ();
void setLensGeomListener (LensGeomListener* l) { rlistener = l; }
void setAdjusterBehavior (bool vadd);
void trimValues (rtengine::procparams::ProcParams* pp);
void idPressed ();
void setLensGeomListener (LensGeomListener* l) { rlistener = l; }
};
#endif

View File

@@ -118,3 +118,13 @@ void ImpulseDenoise::setBatchMode (bool batchMode) {
ToolPanel::setBatchMode (batchMode);
thresh->showEditedCB ();
}
void ImpulseDenoise::setAdjusterBehavior (bool threshadd) {
thresh->setAddMode(threshadd);
}
void ImpulseDenoise::trimValues (rtengine::procparams::ProcParams* pp) {
thresh->trimValue(pp->impulseDenoise.thresh);
}

View File

@@ -31,7 +31,6 @@ class ImpulseDenoise : public Gtk::VBox, public AdjusterListener, public Foldabl
Gtk::CheckButton* enabled;
bool lastEnabled;
sigc::connection enaConn;
bool edgetolAdd;
public:
@@ -45,7 +44,8 @@ class ImpulseDenoise : public Gtk::VBox, public AdjusterListener, public Foldabl
void adjusterChanged (Adjuster* a, double newval);
void enabledChanged ();
void setAdjusterBehavior (bool bedgetoladd);
void setAdjusterBehavior (bool threshadd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
#endif

View File

@@ -22,7 +22,7 @@
using namespace rtengine;
using namespace rtengine::procparams;
LCurve::LCurve () : Gtk::VBox(), FoldableToolPanel(this), brAdd(false), contrAdd(false), satAdd(false) {
LCurve::LCurve () : Gtk::VBox(), FoldableToolPanel(this) {
brightness = Gtk::manage (new Adjuster (M("TP_LABCURVE_BRIGHTNESS"), -100, 100, 0.01, 0));
contrast = Gtk::manage (new Adjuster (M("TP_LABCURVE_CONTRAST"), -100, 100, 1, 0));
@@ -347,23 +347,22 @@ void LCurve::setBatchMode (bool batchMode) {
curveEditorG->setBatchMode (batchMode);
}
void LCurve::setAdjusterBehavior (bool bradd, bool contradd, bool satadd) {
if ((!brAdd && bradd) || (brAdd && !bradd))
brightness->setLimits (-100, 100, 1, 0);
if ((!contrAdd && contradd) || (contrAdd && !contradd))
contrast->setLimits (-100, 100, 1, 0);
if ((!satAdd && satadd) || (satAdd && !satadd))
saturation->setLimits (-100, 100, 1, 0);
brAdd = bradd;
contrAdd = contradd;
satAdd = satadd;
}
void LCurve::updateCurveBackgroundHistogram (LUTu & hist) {
lshape->updateBackgroundHistogram (hist);
}
void LCurve::setAdjusterBehavior (bool bradd, bool contradd, bool satadd) {
brightness->setAddMode(bradd);
contrast->setAddMode(contradd);
saturation->setAddMode(satadd);
}
void LCurve::trimValues (rtengine::procparams::ProcParams* pp) {
brightness->trimValue(pp->labCurve.brightness);
contrast->trimValue(pp->labCurve.contrast);
saturation->trimValue(pp->labCurve.saturation);
}

View File

@@ -48,8 +48,6 @@ class LCurve : public Gtk::VBox, public AdjusterListener, public FoldableToolPan
bool lastACVal, lastELVal;
//%%%%%%%%%%%%%%%%
bool brAdd, contrAdd, satAdd;
public:
LCurve ();
@@ -60,6 +58,7 @@ class LCurve : public Gtk::VBox, public AdjusterListener, public FoldableToolPan
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
void setBatchMode (bool batchMode);
void setAdjusterBehavior (bool bradd, bool contradd, bool satadd);
void trimValues (rtengine::procparams::ProcParams* pp);
void curveChanged (CurveEditor* ce);
void adjusterChanged (Adjuster* a, double newval);

View File

@@ -140,11 +140,48 @@ void Options::setDefaults () {
showProfileSelector = true;
cutOverlayBrush = std::vector<double> (4);
cutOverlayBrush[3] = 0.667;
cutOverlayBrush[3] = 0.667; // :-p
sndLngEditProcDoneSecs=3.0;
int babehav[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0};
int babehav[] = {
1, // ADDSET_TC_EXPCOMP
1, // ADDSET_TC_BRIGHTNESS
1, // ADDSET_TC_BLACKLEVEL
1, // ADDSET_TC_CONTRAST
1, // ADDSET_SH_HIGHLIGHTS
1, // ADDSET_SH_SHADOWS
1, // ADDSET_SH_LOCALCONTRAST
1, // ADDSET_LC_BRIGHTNESS
1, // ADDSET_LC_CONTRAST
0, // ADDSET_SHARP_AMOUNT
0, // ADDSET_LD_EDGETOLERANCE
1, // ADDSET_WB_TEMPERATURE
1, // ADDSET_WB_GREEN
0, // ADDSET_CBOOST_AMOUNT
0, // ADDSET_CS_BLUEYELLOW
0, // ADDSET_CS_GREENMAGENTA
0, // ADDSET_ROTATE_DEGREE
0, // ADDSET_DIST_AMOUNT
0, // ADDSET_PERSPECTIVE
0, // ADDSET_CA
1, // ADDSET_VIGN_AMOUNT
1, // ADDSET_LC_SATURATION
1, // ADDSET_TC_SATURATION
1, // ADDSET_TC_HLCOMPAMOUNT
0, // ADDSET_TC_HLCOMPTHRESH
1, // ADDSET_TC_SHCOMP
1, // ADDSET_DIRPYREQ
0, // ADDSET_DIRPYRDN_CHLUM
0, // ADDSET_DIRPYRDN_GAMMA
1, // ADDSET_CHMIXER
1, // ADDSET_PREPROCESS_GREENEQUIL
0, // ADDSET_PREPROCESS_LINEDENOISE
0, // ADDSET_RAWCACORR
1, // ADDSET_RAWEXPOS_LINEAR
1, // ADDSET_RAWEXPOS_PRESER
1 // ADDSET_RAWEXPOS_BLACKS
};
baBehav = std::vector<int> (babehav, babehav+ADDSET_PARAM_NUM);
rtSettings.dualThreadEnabled = true;

View File

@@ -355,31 +355,33 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
}
}
void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods) {
void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods, bool forceSet) {
bool dontforceSet = !forceSet;
if (toneCurve.curve) toEdit.toneCurve.curve = mods.toneCurve.curve;
if (toneCurve.brightness) toEdit.toneCurve.brightness = options.baBehav[ADDSET_TC_BRIGHTNESS] ? toEdit.toneCurve.brightness + mods.toneCurve.brightness : mods.toneCurve.brightness;
if (toneCurve.black) toEdit.toneCurve.black = options.baBehav[ADDSET_TC_BLACKLEVEL] ? toEdit.toneCurve.black + mods.toneCurve.black : mods.toneCurve.black;
if (toneCurve.contrast) toEdit.toneCurve.contrast = options.baBehav[ADDSET_TC_CONTRAST] ? toEdit.toneCurve.contrast + mods.toneCurve.contrast : mods.toneCurve.contrast;
if (toneCurve.saturation) toEdit.toneCurve.saturation = options.baBehav[ADDSET_TC_SATURATION] ? toEdit.toneCurve.saturation + mods.toneCurve.saturation : mods.toneCurve.saturation;
if (toneCurve.shcompr) toEdit.toneCurve.shcompr = options.baBehav[ADDSET_TC_SHCOMP] ? toEdit.toneCurve.shcompr + mods.toneCurve.shcompr : mods.toneCurve.shcompr;
if (toneCurve.brightness) toEdit.toneCurve.brightness = dontforceSet && options.baBehav[ADDSET_TC_BRIGHTNESS] ? toEdit.toneCurve.brightness + mods.toneCurve.brightness : mods.toneCurve.brightness;
if (toneCurve.black) toEdit.toneCurve.black = dontforceSet && options.baBehav[ADDSET_TC_BLACKLEVEL] ? toEdit.toneCurve.black + mods.toneCurve.black : mods.toneCurve.black;
if (toneCurve.contrast) toEdit.toneCurve.contrast = dontforceSet && options.baBehav[ADDSET_TC_CONTRAST] ? toEdit.toneCurve.contrast + mods.toneCurve.contrast : mods.toneCurve.contrast;
if (toneCurve.saturation) toEdit.toneCurve.saturation = dontforceSet && options.baBehav[ADDSET_TC_SATURATION] ? toEdit.toneCurve.saturation + mods.toneCurve.saturation : mods.toneCurve.saturation;
if (toneCurve.shcompr) toEdit.toneCurve.shcompr = dontforceSet && options.baBehav[ADDSET_TC_SHCOMP] ? toEdit.toneCurve.shcompr + mods.toneCurve.shcompr : mods.toneCurve.shcompr;
if (toneCurve.autoexp) toEdit.toneCurve.autoexp = mods.toneCurve.autoexp;
if (toneCurve.clip) toEdit.toneCurve.clip = mods.toneCurve.clip;
if (toneCurve.expcomp) toEdit.toneCurve.expcomp = options.baBehav[ADDSET_TC_EXPCOMP] ? toEdit.toneCurve.expcomp + mods.toneCurve.expcomp : mods.toneCurve.expcomp;
if (toneCurve.hlcompr) toEdit.toneCurve.hlcompr = options.baBehav[ADDSET_TC_HLCOMPAMOUNT] ? toEdit.toneCurve.hlcompr + mods.toneCurve.hlcompr : mods.toneCurve.hlcompr;
if (toneCurve.hlcomprthresh) toEdit.toneCurve.hlcomprthresh = options.baBehav[ADDSET_TC_HLCOMPTHRESH] ? toEdit.toneCurve.hlcomprthresh + mods.toneCurve.hlcomprthresh : mods.toneCurve.hlcomprthresh;
if (toneCurve.expcomp) toEdit.toneCurve.expcomp = dontforceSet && options.baBehav[ADDSET_TC_EXPCOMP] ? toEdit.toneCurve.expcomp + mods.toneCurve.expcomp : mods.toneCurve.expcomp;
if (toneCurve.hlcompr) toEdit.toneCurve.hlcompr = dontforceSet && options.baBehav[ADDSET_TC_HLCOMPAMOUNT] ? toEdit.toneCurve.hlcompr + mods.toneCurve.hlcompr : mods.toneCurve.hlcompr;
if (toneCurve.hlcomprthresh) toEdit.toneCurve.hlcomprthresh = dontforceSet && options.baBehav[ADDSET_TC_HLCOMPTHRESH] ? toEdit.toneCurve.hlcomprthresh + mods.toneCurve.hlcomprthresh : mods.toneCurve.hlcomprthresh;
if (labCurve.lcurve) toEdit.labCurve.lcurve = mods.labCurve.lcurve;
if (labCurve.acurve) toEdit.labCurve.acurve = mods.labCurve.acurve;
if (labCurve.bcurve) toEdit.labCurve.bcurve = mods.labCurve.bcurve;
if (labCurve.brightness) toEdit.labCurve.brightness = options.baBehav[ADDSET_LC_BRIGHTNESS] ? toEdit.labCurve.brightness + mods.labCurve.brightness : mods.labCurve.brightness;
if (labCurve.contrast) toEdit.labCurve.contrast = options.baBehav[ADDSET_LC_CONTRAST] ? toEdit.labCurve.contrast + mods.labCurve.contrast : mods.labCurve.contrast;
if (labCurve.saturation) toEdit.labCurve.saturation = options.baBehav[ADDSET_LC_SATURATION] ? toEdit.labCurve.saturation + mods.labCurve.saturation : mods.labCurve.saturation;
if (labCurve.brightness) toEdit.labCurve.brightness = dontforceSet && options.baBehav[ADDSET_LC_BRIGHTNESS] ? toEdit.labCurve.brightness + mods.labCurve.brightness : mods.labCurve.brightness;
if (labCurve.contrast) toEdit.labCurve.contrast = dontforceSet && options.baBehav[ADDSET_LC_CONTRAST] ? toEdit.labCurve.contrast + mods.labCurve.contrast : mods.labCurve.contrast;
if (labCurve.saturation) toEdit.labCurve.saturation = dontforceSet && options.baBehav[ADDSET_LC_SATURATION] ? toEdit.labCurve.saturation + mods.labCurve.saturation : mods.labCurve.saturation;
if (labCurve.avoidclip) toEdit.labCurve.avoidclip = mods.labCurve.avoidclip;
if (labCurve.enable_saturationlimiter)toEdit.labCurve.enable_saturationlimiter = mods.labCurve.enable_saturationlimiter;
if (labCurve.saturationlimit) toEdit.labCurve.saturationlimit = mods.labCurve.saturationlimit;
if (sharpening.enabled) toEdit.sharpening.enabled = mods.sharpening.enabled;
if (sharpening.radius) toEdit.sharpening.radius = mods.sharpening.radius;
if (sharpening.amount) toEdit.sharpening.amount = options.baBehav[ADDSET_SHARP_AMOUNT] ? toEdit.sharpening.amount + mods.sharpening.amount : mods.sharpening.amount;
if (sharpening.amount) toEdit.sharpening.amount = dontforceSet && options.baBehav[ADDSET_SHARP_AMOUNT] ? toEdit.sharpening.amount + mods.sharpening.amount : mods.sharpening.amount;
if (sharpening.threshold) toEdit.sharpening.threshold = mods.sharpening.threshold;
if (sharpening.edgesonly) toEdit.sharpening.edgesonly = mods.sharpening.edgesonly;
if (sharpening.edges_radius) toEdit.sharpening.edges_radius = mods.sharpening.edges_radius;
@@ -387,22 +389,22 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (sharpening.halocontrol) toEdit.sharpening.halocontrol = mods.sharpening.halocontrol;
if (sharpening.halocontrol_amount) toEdit.sharpening.halocontrol_amount = mods.sharpening.halocontrol_amount;
if (sharpening.method) toEdit.sharpening.method = mods.sharpening.method;
if (sharpening.deconvamount) toEdit.sharpening.deconvamount = options.baBehav[ADDSET_SHARP_AMOUNT] ? toEdit.sharpening.deconvamount + mods.sharpening.deconvamount : mods.sharpening.deconvamount;
if (sharpening.deconvamount) toEdit.sharpening.deconvamount = dontforceSet && options.baBehav[ADDSET_SHARP_AMOUNT] ? toEdit.sharpening.deconvamount + mods.sharpening.deconvamount : mods.sharpening.deconvamount;
if (sharpening.deconvradius) toEdit.sharpening.deconvradius = mods.sharpening.deconvradius;
if (sharpening.deconviter) toEdit.sharpening.deconviter = mods.sharpening.deconviter;
if (sharpening.deconvdamping) toEdit.sharpening.deconvdamping = mods.sharpening.deconvdamping;
if (colorBoost.amount) toEdit.colorBoost.amount = options.baBehav[ADDSET_CBOOST_AMOUNT] ? toEdit.colorBoost.amount + mods.colorBoost.amount : mods.colorBoost.amount;
if (colorBoost.amount) toEdit.colorBoost.amount = dontforceSet && options.baBehav[ADDSET_CBOOST_AMOUNT] ? toEdit.colorBoost.amount + mods.colorBoost.amount : mods.colorBoost.amount;
if (colorBoost.avoidclip) toEdit.colorBoost.avoidclip = mods.colorBoost.avoidclip;
if (colorBoost.enable_saturationlimiter)toEdit.colorBoost.enable_saturationlimiter = mods.colorBoost.enable_saturationlimiter;
if (colorBoost.saturationlimit) toEdit.colorBoost.saturationlimit = mods.colorBoost.saturationlimit;
if (wb.method) toEdit.wb.method = mods.wb.method;
if (wb.green) toEdit.wb.green = options.baBehav[ADDSET_WB_GREEN] ? toEdit.wb.green + mods.wb.green : mods.wb.green;
if (wb.temperature) toEdit.wb.temperature = options.baBehav[ADDSET_WB_TEMPERATURE] ? toEdit.wb.temperature + mods.wb.temperature : mods.wb.temperature;
if (colorShift.a) toEdit.colorShift.a = options.baBehav[ADDSET_CS_BLUEYELLOW] ? toEdit.colorShift.a + mods.colorShift.a : mods.colorShift.a;
if (colorShift.b) toEdit.colorShift.b = options.baBehav[ADDSET_CS_GREENMAGENTA] ? toEdit.colorShift.b + mods.colorShift.b : mods.colorShift.b;
if (wb.green) toEdit.wb.green = dontforceSet && options.baBehav[ADDSET_WB_GREEN] ? toEdit.wb.green + mods.wb.green : mods.wb.green;
if (wb.temperature) toEdit.wb.temperature = dontforceSet && options.baBehav[ADDSET_WB_TEMPERATURE] ? toEdit.wb.temperature + mods.wb.temperature : mods.wb.temperature;
if (colorShift.a) toEdit.colorShift.a = dontforceSet && options.baBehav[ADDSET_CS_BLUEYELLOW] ? toEdit.colorShift.a + mods.colorShift.a : mods.colorShift.a;
if (colorShift.b) toEdit.colorShift.b = dontforceSet && options.baBehav[ADDSET_CS_GREENMAGENTA] ? toEdit.colorShift.b + mods.colorShift.b : mods.colorShift.b;
if (lumaDenoise.enabled) toEdit.lumaDenoise.enabled = mods.lumaDenoise.enabled;
if (lumaDenoise.radius) toEdit.lumaDenoise.radius = mods.lumaDenoise.radius;
if (lumaDenoise.edgetolerance) toEdit.lumaDenoise.edgetolerance = options.baBehav[ADDSET_LD_EDGETOLERANCE] ? toEdit.lumaDenoise.edgetolerance + mods.lumaDenoise.edgetolerance : mods.lumaDenoise.edgetolerance;
if (lumaDenoise.edgetolerance) toEdit.lumaDenoise.edgetolerance = dontforceSet && options.baBehav[ADDSET_LD_EDGETOLERANCE] ? toEdit.lumaDenoise.edgetolerance + mods.lumaDenoise.edgetolerance : mods.lumaDenoise.edgetolerance;
if (colorDenoise.enabled) toEdit.colorDenoise.enabled = mods.colorDenoise.enabled;
if (colorDenoise.amount) toEdit.colorDenoise.amount = mods.colorDenoise.amount;
@@ -414,17 +416,17 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (impulseDenoise.thresh) toEdit.impulseDenoise.thresh = mods.impulseDenoise.thresh;
if (dirpyrDenoise.enabled) toEdit.dirpyrDenoise.enabled = mods.dirpyrDenoise.enabled;
if (dirpyrDenoise.luma) toEdit.dirpyrDenoise.luma = mods.dirpyrDenoise.luma;
if (dirpyrDenoise.chroma) toEdit.dirpyrDenoise.chroma = mods.dirpyrDenoise.chroma;
if (dirpyrDenoise.gamma) toEdit.dirpyrDenoise.gamma = mods.dirpyrDenoise.gamma;
if (dirpyrDenoise.luma) toEdit.dirpyrDenoise.luma = dontforceSet && options.baBehav[ADDSET_DIRPYRDN_CHLUM] ? toEdit.dirpyrDenoise.luma + mods.dirpyrDenoise.luma : mods.dirpyrDenoise.luma;
if (dirpyrDenoise.chroma) toEdit.dirpyrDenoise.chroma = dontforceSet && options.baBehav[ADDSET_DIRPYRDN_CHLUM] ? toEdit.dirpyrDenoise.chroma + mods.dirpyrDenoise.chroma : mods.dirpyrDenoise.chroma;
if (dirpyrDenoise.gamma) toEdit.dirpyrDenoise.gamma = dontforceSet && options.baBehav[ADDSET_DIRPYRDN_GAMMA] ? toEdit.dirpyrDenoise.gamma + mods.dirpyrDenoise.gamma : mods.dirpyrDenoise.gamma;
if (sh.enabled) toEdit.sh.enabled = mods.sh.enabled;
if (sh.hq) toEdit.sh.hq = mods.sh.hq;
if (sh.highlights) toEdit.sh.highlights = options.baBehav[ADDSET_SH_HIGHLIGHTS] ? toEdit.sh.highlights + mods.sh.highlights : mods.sh.highlights;
if (sh.highlights) toEdit.sh.highlights = dontforceSet && options.baBehav[ADDSET_SH_HIGHLIGHTS] ? toEdit.sh.highlights + mods.sh.highlights : mods.sh.highlights;
if (sh.htonalwidth) toEdit.sh.htonalwidth = mods.sh.htonalwidth;
if (sh.shadows) toEdit.sh.shadows = options.baBehav[ADDSET_SH_SHADOWS] ? toEdit.sh.shadows + mods.sh.shadows : mods.sh.shadows;
if (sh.shadows) toEdit.sh.shadows = dontforceSet && options.baBehav[ADDSET_SH_SHADOWS] ? toEdit.sh.shadows + mods.sh.shadows : mods.sh.shadows;
if (sh.stonalwidth) toEdit.sh.stonalwidth = mods.sh.stonalwidth;
if (sh.localcontrast) toEdit.sh.localcontrast = options.baBehav[ADDSET_SH_LOCALCONTRAST] ? toEdit.sh.localcontrast + mods.sh.localcontrast : mods.sh.localcontrast;
if (sh.localcontrast) toEdit.sh.localcontrast = dontforceSet && options.baBehav[ADDSET_SH_LOCALCONTRAST] ? toEdit.sh.localcontrast + mods.sh.localcontrast : mods.sh.localcontrast;
if (sh.radius) toEdit.sh.radius = mods.sh.radius;
if (crop.enabled) toEdit.crop.enabled = mods.crop.enabled;
if (crop.x) toEdit.crop.x = mods.crop.x;
@@ -439,27 +441,23 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (coarse.hflip) toEdit.coarse.hflip = mods.coarse.hflip ? !toEdit.coarse.hflip : toEdit.coarse.hflip;
if (coarse.vflip) toEdit.coarse.vflip = mods.coarse.vflip ? !toEdit.coarse.vflip : toEdit.coarse.vflip;
if (commonTrans.autofill) toEdit.commonTrans.autofill = mods.commonTrans.autofill;
if (rotate.degree) toEdit.rotate.degree = options.baBehav[17] ? toEdit.rotate.degree + mods.rotate.degree : mods.rotate.degree;
if (rotate.degree) toEdit.rotate.degree = dontforceSet && options.baBehav[17] ? toEdit.rotate.degree + mods.rotate.degree : mods.rotate.degree;
if (distortion.uselensfun) toEdit.distortion.uselensfun = mods.distortion.uselensfun;
if (distortion.amount) toEdit.distortion.amount = options.baBehav[ADDSET_DIST_AMOUNT] ? toEdit.distortion.amount + mods.distortion.amount : mods.distortion.amount;
if (perspective.horizontal) toEdit.perspective.horizontal = options.baBehav[ADDSET_PERSPECTIVE] ? toEdit.perspective.horizontal + mods.perspective.horizontal : mods.perspective.horizontal;
if (perspective.vertical) toEdit.perspective.vertical = options.baBehav[ADDSET_PERSPECTIVE] ? toEdit.perspective.vertical + mods.perspective.vertical : mods.perspective.vertical;
if (cacorrection.red) toEdit.cacorrection.red = options.baBehav[ADDSET_CA] ? toEdit.cacorrection.red + mods.cacorrection.red : mods.cacorrection.red;
if (cacorrection.blue) toEdit.cacorrection.blue = options.baBehav[ADDSET_CA] ? toEdit.cacorrection.blue + mods.cacorrection.blue : mods.cacorrection.blue;
if (vignetting.amount) toEdit.vignetting.amount = options.baBehav[ADDSET_VIGN_AMOUNT] ? toEdit.vignetting.amount + mods.vignetting.amount : mods.vignetting.amount;
if (distortion.amount) toEdit.distortion.amount = dontforceSet && options.baBehav[ADDSET_DIST_AMOUNT] ? toEdit.distortion.amount + mods.distortion.amount : mods.distortion.amount;
if (perspective.horizontal) toEdit.perspective.horizontal = dontforceSet && options.baBehav[ADDSET_PERSPECTIVE] ? toEdit.perspective.horizontal + mods.perspective.horizontal : mods.perspective.horizontal;
if (perspective.vertical) toEdit.perspective.vertical = dontforceSet && options.baBehav[ADDSET_PERSPECTIVE] ? toEdit.perspective.vertical + mods.perspective.vertical : mods.perspective.vertical;
if (cacorrection.red) toEdit.cacorrection.red = dontforceSet && options.baBehav[ADDSET_CA] ? toEdit.cacorrection.red + mods.cacorrection.red : mods.cacorrection.red;
if (cacorrection.blue) toEdit.cacorrection.blue = dontforceSet && options.baBehav[ADDSET_CA] ? toEdit.cacorrection.blue + mods.cacorrection.blue : mods.cacorrection.blue;
if (vignetting.amount) toEdit.vignetting.amount = dontforceSet && options.baBehav[ADDSET_VIGN_AMOUNT] ? toEdit.vignetting.amount + mods.vignetting.amount : mods.vignetting.amount;
if (vignetting.radius) toEdit.vignetting.radius = mods.vignetting.radius;
if (vignetting.strength) toEdit.vignetting.strength = mods.vignetting.strength;
if (vignetting.strength) toEdit.vignetting.strength = mods.vignetting.strength;
if (vignetting.centerX) toEdit.vignetting.centerX = mods.vignetting.centerX;
if (vignetting.centerY) toEdit.vignetting.centerY = mods.vignetting.centerY;
if (chmixer.red[0]) toEdit.chmixer.red[0] = mods.chmixer.red[0];
if (chmixer.red[1]) toEdit.chmixer.red[1] = mods.chmixer.red[1];
if (chmixer.red[2]) toEdit.chmixer.red[2] = mods.chmixer.red[2];
if (chmixer.green[0]) toEdit.chmixer.green[0] = mods.chmixer.green[0];
if (chmixer.green[1]) toEdit.chmixer.green[1] = mods.chmixer.green[1];
if (chmixer.green[2]) toEdit.chmixer.green[2] = mods.chmixer.green[2];
if (chmixer.blue[0]) toEdit.chmixer.blue[0] = mods.chmixer.blue[0];
if (chmixer.blue[1]) toEdit.chmixer.blue[1] = mods.chmixer.blue[1];
if (chmixer.blue[2]) toEdit.chmixer.blue[2] = mods.chmixer.blue[2];
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];
if (chmixer.green[i]) toEdit.chmixer.green[i] = dontforceSet && options.baBehav[ADDSET_CHMIXER] ? toEdit.chmixer.green[i] + mods.chmixer.green[i] : mods.chmixer.green[i];
if (chmixer.blue[i]) toEdit.chmixer.blue[i] = dontforceSet && options.baBehav[ADDSET_CHMIXER] ? toEdit.chmixer.blue[i] + mods.chmixer.blue[i] : mods.chmixer.blue[i];
}
if (hlrecovery.enabled) toEdit.hlrecovery.enabled = mods.hlrecovery.enabled;
if (hlrecovery.method) toEdit.hlrecovery.method = mods.hlrecovery.method;
if (resize.scale) toEdit.resize.scale = mods.resize.scale;
@@ -472,48 +470,48 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (icm.input) toEdit.icm.input = mods.icm.input;
if (icm.gammaOnInput) toEdit.icm.gammaOnInput = mods.icm.gammaOnInput;
if (icm.working) toEdit.icm.working = mods.icm.working;
if (icm.output) toEdit.icm.output = mods.icm.output;
if (icm.gampos) toEdit.icm.gampos = mods.icm.gampos;
if (icm.slpos) toEdit.icm.slpos = mods.icm.slpos;
if (icm.gamma) toEdit.icm.gamma = mods.icm.gamma;
if (icm.freegamma) toEdit.icm.freegamma = mods.icm.freegamma;
if (raw.ccSteps) toEdit.raw.ccSteps = mods.raw.ccSteps;
if (raw.dmethod) toEdit.raw.dmethod = mods.raw.dmethod;
if (raw.dcbIterations) toEdit.raw.dcb_iterations = mods.raw.dcb_iterations;
if (raw.dcbEnhance) toEdit.raw.dcb_enhance = mods.raw.dcb_enhance;
if (raw.caCorrection) toEdit.raw.ca_autocorrect = mods.raw.ca_autocorrect;
if (raw.caRed) toEdit.raw.cared = mods.raw.cared;
if (raw.caBlue) toEdit.raw.cablue = mods.raw.cablue;
if (raw.exPos) toEdit.raw.expos =mods.raw.expos;
if (raw.exPreser) toEdit.raw.preser =mods.raw.preser;
if (raw.exBlackzero) toEdit.raw.blackzero =mods.raw.blackzero;
if (raw.exBlackone) toEdit.raw.blackone =mods.raw.blackone;
if (raw.exBlacktwo) toEdit.raw.blacktwo =mods.raw.blacktwo;
if (raw.exBlackthree) toEdit.raw.blackthree =mods.raw.blackthree;
if (raw.exTwoGreen) toEdit.raw.twogreen =mods.raw.twogreen;
if (icm.output) toEdit.icm.output = mods.icm.output;
if (icm.gampos) toEdit.icm.gampos = mods.icm.gampos;
if (icm.slpos) toEdit.icm.slpos = mods.icm.slpos;
if (icm.gamma) toEdit.icm.gamma = mods.icm.gamma;
if (icm.freegamma) toEdit.icm.freegamma = mods.icm.freegamma;
if (raw.ccSteps) toEdit.raw.ccSteps = mods.raw.ccSteps;
if (raw.dmethod) toEdit.raw.dmethod = mods.raw.dmethod;
if (raw.dcbIterations) toEdit.raw.dcb_iterations = mods.raw.dcb_iterations;
if (raw.dcbEnhance) toEdit.raw.dcb_enhance = mods.raw.dcb_enhance;
if (raw.caCorrection) toEdit.raw.ca_autocorrect = mods.raw.ca_autocorrect;
if (raw.caRed) toEdit.raw.cared = dontforceSet && options.baBehav[ADDSET_RAWCACORR] ? toEdit.raw.cared + mods.raw.cared : mods.raw.cared;
if (raw.caBlue) toEdit.raw.cablue = dontforceSet && options.baBehav[ADDSET_RAWCACORR] ? toEdit.raw.cablue + mods.raw.cablue : mods.raw.cablue;
if (raw.exPos) toEdit.raw.expos = dontforceSet && options.baBehav[ADDSET_RAWEXPOS_LINEAR] ? toEdit.raw.expos + mods.raw.expos : mods.raw.expos;
if (raw.exPreser) toEdit.raw.preser = dontforceSet && options.baBehav[ADDSET_RAWEXPOS_PRESER] ? toEdit.raw.preser + mods.raw.preser : mods.raw.preser;
if (raw.exBlackzero) toEdit.raw.blackzero = dontforceSet && options.baBehav[ADDSET_RAWEXPOS_BLACKS] ? toEdit.raw.blackzero + mods.raw.blackzero : mods.raw.blackzero;
if (raw.exBlackone) toEdit.raw.blackone = dontforceSet && options.baBehav[ADDSET_RAWEXPOS_BLACKS] ? toEdit.raw.blackone + mods.raw.blackone : mods.raw.blackone;
if (raw.exBlacktwo) toEdit.raw.blacktwo = dontforceSet && options.baBehav[ADDSET_RAWEXPOS_BLACKS] ? toEdit.raw.blacktwo + mods.raw.blacktwo : mods.raw.blacktwo;
if (raw.exBlackthree) toEdit.raw.blackthree = dontforceSet && options.baBehav[ADDSET_RAWEXPOS_BLACKS] ? toEdit.raw.blackthree + mods.raw.blackthree : mods.raw.blackthree;
if (raw.exTwoGreen) toEdit.raw.twogreen = mods.raw.twogreen;
if (raw.greenEq) toEdit.raw.greenthresh = mods.raw.greenthresh;
if (raw.hotDeadPixel) toEdit.raw.hotdeadpix_filt= mods.raw.hotdeadpix_filt;
if (raw.linenoise) toEdit.raw.linenoise = mods.raw.linenoise;
if (raw.darkFrame) toEdit.raw.dark_frame = mods.raw.dark_frame;
if (raw.dfAuto) toEdit.raw.df_autoselect= mods.raw.df_autoselect;
if (raw.greenEq) toEdit.raw.greenthresh = dontforceSet && options.baBehav[ADDSET_PREPROCESS_GREENEQUIL] ? toEdit.raw.greenthresh + mods.raw.greenthresh : mods.raw.greenthresh;
if (raw.hotDeadPixel) toEdit.raw.hotdeadpix_filt = mods.raw.hotdeadpix_filt;
if (raw.linenoise) toEdit.raw.linenoise = dontforceSet && options.baBehav[ADDSET_PREPROCESS_LINEDENOISE] ? toEdit.raw.linenoise + mods.raw.linenoise : mods.raw.linenoise;
if (raw.darkFrame) toEdit.raw.dark_frame = mods.raw.dark_frame;
if (raw.dfAuto) toEdit.raw.df_autoselect = mods.raw.df_autoselect;
if (raw.ff_file) toEdit.raw.ff_file= mods.raw.ff_file;
if (raw.ff_AutoSelect) toEdit.raw.ff_AutoSelect= mods.raw.ff_AutoSelect;
if (raw.ff_BlurRadius) toEdit.raw.ff_BlurRadius= mods.raw.ff_BlurRadius;
if (raw.ff_BlurType) toEdit.raw.ff_BlurType= mods.raw.ff_BlurType;
if (raw.ff_file) toEdit.raw.ff_file = mods.raw.ff_file;
if (raw.ff_AutoSelect) toEdit.raw.ff_AutoSelect = mods.raw.ff_AutoSelect;
if (raw.ff_BlurRadius) toEdit.raw.ff_BlurRadius = mods.raw.ff_BlurRadius;
if (raw.ff_BlurType) toEdit.raw.ff_BlurType = mods.raw.ff_BlurType;
if (equalizer.enabled) toEdit.equalizer.enabled = mods.equalizer.enabled;
if (equalizer.enabled) toEdit.equalizer.enabled = mods.equalizer.enabled;
for(int i = 0; i < 8; i++) {
if(equalizer.c[i]) toEdit.equalizer.c[i] = mods.equalizer.c[i];
}
if (dirpyrequalizer.enabled) toEdit.dirpyrequalizer.enabled = mods.dirpyrequalizer.enabled;
if (dirpyrequalizer.enabled) toEdit.dirpyrequalizer.enabled = mods.dirpyrequalizer.enabled;
for(int i = 0; i < 5; i++) {
if(dirpyrequalizer.mult[i]) toEdit.dirpyrequalizer.mult[i] = mods.dirpyrequalizer.mult[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];
}
if (hsvequalizer.hcurve) toEdit.hsvequalizer.hcurve = mods.hsvequalizer.hcurve;
if (hsvequalizer.scurve) toEdit.hsvequalizer.scurve = mods.hsvequalizer.scurve;
if (hsvequalizer.vcurve) toEdit.hsvequalizer.vcurve = mods.hsvequalizer.vcurve;
if (hsvequalizer.hcurve) toEdit.hsvequalizer.hcurve = mods.hsvequalizer.hcurve;
if (hsvequalizer.scurve) toEdit.hsvequalizer.scurve = mods.hsvequalizer.scurve;
if (hsvequalizer.vcurve) toEdit.hsvequalizer.vcurve = mods.hsvequalizer.vcurve;
// if (exif) toEdit.exif==mo.exif = mods.exif==other.exif;
// if (iptc;) toEdit.iptc==other.iptc; = mods.iptc==other.iptc;;

View File

@@ -360,7 +360,7 @@ class ParamsEdited {
void set (bool v);
void initFrom (const std::vector<rtengine::procparams::ProcParams>& src);
void combine (rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods);
void combine (rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods, bool forceSet);
bool operator== (const ParamsEdited& other);
bool operator!= (const ParamsEdited& other);

View File

@@ -21,7 +21,7 @@
using namespace rtengine;
using namespace rtengine::procparams;
PerspCorrection::PerspCorrection () : Gtk::VBox(), FoldableToolPanel(this), vAdd(false) {
PerspCorrection::PerspCorrection () : Gtk::VBox(), FoldableToolPanel(this) {
horiz = Gtk::manage (new Adjuster (M("TP_PERSPECTIVE_HORIZONTAL"), -100, 100, 1, 0));
horiz->setAdjusterListener (this);
@@ -84,12 +84,14 @@ void PerspCorrection::adjusterChanged (Adjuster* a, double newval) {
void PerspCorrection::setAdjusterBehavior (bool badd) {
if ((!vAdd && badd) || (vAdd && !badd)) {
// horiz->setLimits (-0.005, 0.005, 0.0001, 0);
// vert->setLimits (-0.005, 0.005, 0.0001, 0);
}
horiz->setAddMode(badd);
vert->setAddMode(badd);
}
vAdd = badd;
void PerspCorrection::trimValues (rtengine::procparams::ProcParams* pp) {
horiz->trimValue(pp->perspective.horizontal);
vert->trimValue(pp->perspective.vertical);
}
void PerspCorrection::setBatchMode (bool batchMode) {

View File

@@ -28,7 +28,6 @@ class PerspCorrection : public Gtk::VBox, public AdjusterListener, public Foldab
protected:
Adjuster* horiz;
Adjuster* vert;
bool vAdd;
public:
@@ -41,6 +40,7 @@ class PerspCorrection : public Gtk::VBox, public AdjusterListener, public Foldab
void adjusterChanged (Adjuster* a, double newval);
void setAdjusterBehavior (bool badd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
#endif

View File

@@ -138,6 +138,9 @@ Gtk::Widget* Preferences::getBatchProcPanel () {
// fill model
Gtk::TreeModel::iterator mi, ci;
/*
* The TRUE/FALSE values of appendBehavList are replaced by the one defined in options.cc,
*/
mi = behModel->append ();
mi->set_value (behavColumns.label, M("TP_EXPOSURE_LABEL"));
appendBehavList (mi, M("TP_EXPOSURE_EXPCOMP"), ADDSET_TC_EXPCOMP, false);
@@ -169,11 +172,20 @@ Gtk::Widget* Preferences::getBatchProcPanel () {
//mi->set_value (behavColumns.label, M("TP_LUMADENOISE_LABEL"));
//appendBehavList (mi, M("TP_LUMADENOISE_EDGETOLERANCE"), ADDSET_LD_EDGETOLERANCE, true);
mi = behModel->append ();
mi->set_value (behavColumns.label, M("TP_DIRPYRDENOISE_LABEL"));
appendBehavList (mi, M("TP_DIRPYRDENOISE_LUMA")+", "+M("TP_DIRPYRDENOISE_CHROMA"), ADDSET_DIRPYRDN_CHLUM, true);
appendBehavList (mi, M("TP_DIRPYRDENOISE_GAMMA"), ADDSET_DIRPYRDN_GAMMA, true);
mi = behModel->append ();
mi->set_value (behavColumns.label, M("TP_WBALANCE_LABEL"));
appendBehavList (mi, M("TP_WBALANCE_TEMPERATURE"), ADDSET_WB_TEMPERATURE, true);
appendBehavList (mi, M("TP_WBALANCE_GREEN"), ADDSET_WB_GREEN, true);
mi = behModel->append ();
mi->set_value (behavColumns.label, M("TP_CHMIXER_LABEL"));
appendBehavList (mi, M("TP_CHMIXER_RED")+", "+M("TP_CHMIXER_GREEN")+", "+M("TP_CHMIXER_BLUE"), ADDSET_CHMIXER, false);
//mi = behModel->append ();
//mi->set_value (behavColumns.label, M("TP_COLORBOOST_LABEL"));
//appendBehavList (mi, M("TP_COLORBOOST_AMOUNT"), ADDSET_CBOOST_AMOUNT, false);
@@ -203,6 +215,25 @@ Gtk::Widget* Preferences::getBatchProcPanel () {
mi->set_value (behavColumns.label, M("TP_VIGNETTING_LABEL"));
appendBehavList (mi, M("TP_VIGNETTING_AMOUNT"), ADDSET_VIGN_AMOUNT, false);
mi = behModel->append ();
mi->set_value (behavColumns.label, M("TP_DIRPYREQUALIZER_LABEL"));
appendBehavList (mi, M("TP_EXPOSURE_CONTRAST")+", "+M("TP_DIRPYREQUALIZER_THRESHOLD"), ADDSET_DIRPYREQ, true);
mi = behModel->append ();
mi->set_value (behavColumns.label, M("TP_PREPROCESS_LABEL"));
appendBehavList (mi, M("TP_PREPROCESS_GREENEQUIL"), ADDSET_PREPROCESS_GREENEQUIL, false);
appendBehavList (mi, M("TP_PREPROCESS_LINEDENOISE"), ADDSET_PREPROCESS_LINEDENOISE, true);
mi = behModel->append ();
mi->set_value (behavColumns.label, M("TP_EXPOSCORR_LABEL"));
appendBehavList (mi, M("TP_RAWEXPOS_LINEAR"), ADDSET_RAWEXPOS_LINEAR, false);
appendBehavList (mi, M("TP_RAWEXPOS_PRESER"), ADDSET_RAWEXPOS_PRESER, false);
appendBehavList (mi, M("TP_RAWEXPOS_BLACKS"), ADDSET_RAWEXPOS_BLACKS, false);
mi = behModel->append ();
mi->set_value (behavColumns.label, M("TP_CHROMATABERR_LABEL"));
appendBehavList (mi, M("TP_RAWCACORR_CARED")+", "+M("TP_RAWCACORR_CABLUE"), ADDSET_RAWCACORR, true);
behTreeView->expand_all ();
chOverwriteOutputFile = Gtk::manage( new Gtk::CheckButton (M("PREFERENCES_OVERWRITEOUTPUTFILE")) );

View File

@@ -136,3 +136,15 @@ void PreProcess::hotDeadPixelChanged ()
if (listener)
listener->panelChanged (EvPreProcessHotDeadPixel, hotDeadPixel->get_active()?M("GENERAL_ENABLED"):M("GENERAL_DISABLED"));
}
void PreProcess::setAdjusterBehavior (bool linedenoiseadd, bool greenequiladd) {
lineDenoise->setAddMode(linedenoiseadd);
greenEqThreshold->setAddMode(greenequiladd);
}
void PreProcess::trimValues (rtengine::procparams::ProcParams* pp) {
lineDenoise->trimValue(pp->raw.linenoise);
greenEqThreshold->trimValue(pp->raw.greenthresh);
}

View File

@@ -46,6 +46,8 @@ class PreProcess : public Gtk::VBox, public AdjusterListener, public FoldableToo
void adjusterChanged (Adjuster* a, double newval);
void hotDeadPixelChanged();
void setAdjusterBehavior (bool linedenoiseadd, bool greenequiladd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
#endif

View File

@@ -157,3 +157,15 @@ void RAWCACorr::caCorrectionChanged()
if (listener)
listener->panelChanged (EvPreProcessAutoCA, caAutocorrect->get_active()?M("GENERAL_ENABLED"):M("GENERAL_DISABLED"));
}
void RAWCACorr::setAdjusterBehavior (bool caadd) {
caRed->setAddMode(caadd);
caBlue->setAddMode(caadd);
}
void RAWCACorr::trimValues (rtengine::procparams::ProcParams* pp) {
caRed->trimValue(pp->raw.cared);
caBlue->trimValue(pp->raw.cablue);
}

View File

@@ -37,10 +37,12 @@ public:
RAWCACorr ();
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL);
void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL);
void setBatchMode (bool batchMode);
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL);
void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL);
void setBatchMode (bool batchMode);
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
void setAdjusterBehavior (bool caadd);
void trimValues (rtengine::procparams::ProcParams* pp);
void adjusterChanged (Adjuster* a, double newval);
void caCorrectionChanged ();

View File

@@ -209,3 +209,23 @@ void RAWExposure::setDefaults(const rtengine::procparams::ProcParams* defParams,
}
}
void RAWExposure::setAdjusterBehavior (bool pexposadd, bool pexpreseradd, bool pexblackadd) {
PexPos->setAddMode(pexposadd);
PexPreser->setAddMode(pexpreseradd);
PexBlackzero->setAddMode(pexblackadd);
PexBlackone->setAddMode(pexblackadd);
PexBlacktwo->setAddMode(pexblackadd);
PexBlackthree->setAddMode(pexblackadd);
}
void RAWExposure::trimValues (rtengine::procparams::ProcParams* pp) {
PexPos->trimValue(pp->raw.expos);
PexPreser->trimValue(pp->raw.preser);
PexBlackzero->trimValue(pp->raw.blackzero);
PexBlackone->trimValue(pp->raw.blackone);
PexBlacktwo->trimValue(pp->raw.blacktwo);
PexBlackthree->trimValue(pp->raw.blackthree);
}

View File

@@ -48,7 +48,9 @@ public:
void setBatchMode (bool batchMode);
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
void GreenChanged() ;
void adjusterChanged (Adjuster* a, double newval);
void adjusterChanged (Adjuster* a, double newval);
void setAdjusterBehavior (bool pexposadd, bool pexpreseradd, bool pexblackadd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
#endif

View File

@@ -25,7 +25,7 @@ extern Glib::ustring argv0;
using namespace rtengine;
using namespace rtengine::procparams;
Rotate::Rotate () : Gtk::VBox(), FoldableToolPanel(this), degAdd(false) {
Rotate::Rotate () : Gtk::VBox(), FoldableToolPanel(this) {
rlistener = NULL;
@@ -99,10 +99,12 @@ void Rotate::setBatchMode (bool batchMode) {
degree->showEditedCB ();
}
void Rotate::setAdjusterBehavior (bool brotadd) {
void Rotate::setAdjusterBehavior (bool rotadd) {
if ((!degAdd && brotadd) || (degAdd && !brotadd))
degree->setLimits (-45, 45, 0.01, 0);
degAdd = brotadd;
degree->setAddMode(rotadd);
}
void Rotate::trimValues (rtengine::procparams::ProcParams* pp) {
degree->trimValue(pp->rotate.degree);
}

View File

@@ -30,7 +30,6 @@ class Rotate : public Gtk::VBox, public AdjusterListener, public FoldableToolPan
Adjuster* degree;
Gtk::Button* selectStraight;
LensGeomListener* rlistener;
bool degAdd;
public:
@@ -44,7 +43,8 @@ class Rotate : public Gtk::VBox, public AdjusterListener, public FoldableToolPan
void straighten (double deg);
void adjusterChanged (Adjuster* a, double newval);
void setAdjusterBehavior (bool brotadd);
void setAdjusterBehavior (bool rotadd);
void trimValues (rtengine::procparams::ProcParams* pp);
void selectStraightPressed ();
void setLensGeomListener (LensGeomListener* l) { rlistener = l; }
};

View File

@@ -233,22 +233,14 @@ void ShadowsHighlights::setBatchMode (bool batchMode) {
void ShadowsHighlights::setAdjusterBehavior (bool hadd, bool sadd, bool lcadd) {
if (!hAdd && hadd)
highlights->setLimits (-100, 100, 1, 0);
else if (hAdd && !hadd)
highlights->setLimits (0, 100, 1, 0);
if (!sAdd && sadd)
shadows->setLimits (-100, 100, 1, 0);
else if (sAdd && !sadd)
shadows->setLimits (0, 100, 1, 0);
if (!lcAdd && lcadd)
lcontrast->setLimits (-100, 100, 1, 0);
else if (lcAdd && !lcadd)
lcontrast->setLimits (0, 100, 1, 0);
hAdd = hadd;
sAdd = sadd;
lcAdd = lcadd;
highlights->setAddMode(hadd);
shadows->setAddMode(sadd);
lcontrast->setAddMode(lcadd);
}
void ShadowsHighlights::trimValues (rtengine::procparams::ProcParams* pp) {
highlights->trimValue(pp->sh.highlights);
shadows->trimValue(pp->sh.shadows);
lcontrast->trimValue(pp->sh.localcontrast);
}

View File

@@ -34,7 +34,6 @@ class ShadowsHighlights : public Gtk::VBox, public AdjusterListener, public Fold
Adjuster* radius;
Gtk::CheckButton* enabled;
Gtk::CheckButton* hq;
bool hAdd, sAdd, lcAdd;
bool lastEnabled, lastHQ;
sigc::connection enaConn, hqConn;
@@ -52,6 +51,7 @@ class ShadowsHighlights : public Gtk::VBox, public AdjusterListener, public Fold
void hqChanged ();
void setAdjusterBehavior (bool hadd, bool sadd, bool lcadd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
#endif

View File

@@ -447,15 +447,14 @@ void Sharpening::setBatchMode (bool batchMode) {
method->append_text (M("GENERAL_UNCHANGED"));
}
void Sharpening::setAdjusterBehavior (bool bamountadd) {
void Sharpening::setAdjusterBehavior (bool amountadd) {
if (!amountAdd && bamountadd) {
amount->setLimits (-100, 100, 1, 0);
damount->setLimits (-100, 100, 1, 0);
}
else if (amountAdd && !bamountadd) {
amount->setLimits (1, 1000, 1, 150);
damount->setLimits (0, 100, 1, 75);
}
amountAdd = bamountadd;
amount->setAddMode(amountadd);
damount->setAddMode(amountadd);
}
void Sharpening::trimValues (rtengine::procparams::ProcParams* pp) {
amount->trimValue(pp->sharpening.amount);
damount->trimValue(pp->sharpening.deconvamount);
}

View File

@@ -53,7 +53,6 @@ class Sharpening : public Gtk::VBox, public AdjusterListener, public FoldableToo
Gtk::CheckButton* halocontrol;
bool lastHaloControl;
sigc::connection hcConn;
bool amountAdd;
@@ -73,7 +72,8 @@ class Sharpening : public Gtk::VBox, public AdjusterListener, public FoldableToo
void halocontrol_toggled ();
void method_changed ();
void setAdjusterBehavior (bool bamountadd);
void setAdjusterBehavior (bool amountadd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
#endif

View File

@@ -25,7 +25,7 @@
using namespace rtengine;
using namespace rtengine::procparams;
ToneCurve::ToneCurve () : Gtk::VBox(), FoldableToolPanel(this), expAdd(false),hlcompAdd(false),hlcompthreshAdd(false), blackAdd(false), shcompAdd(false), brAdd(false), contrAdd(false) {
ToneCurve::ToneCurve () : Gtk::VBox(), FoldableToolPanel(this) {
//----------- Auto Levels ----------------------------------
abox = Gtk::manage (new Gtk::HBox ());
@@ -127,7 +127,7 @@ void ToneCurve::read (const ProcParams* pp, const ParamsEdited* pedited) {
hlcompr->setValue (pp->toneCurve.hlcompr);
hlcomprthresh->setValue (pp->toneCurve.hlcomprthresh);
shcompr->setValue (pp->toneCurve.shcompr);
if (!blackAdd) shcompr->set_sensitive(!((int)black->getValue ()==0)); //at black=0 shcompr value has no effect
if (!black->getAddMode()) shcompr->set_sensitive(!((int)black->getValue ()==0)); //at black=0 shcompr value has no effect
brightness->setValue (pp->toneCurve.brightness);
contrast->setValue (pp->toneCurve.contrast);
saturation->setValue (pp->toneCurve.saturation);
@@ -228,7 +228,7 @@ void ToneCurve::adjusterChanged (Adjuster* a, double newval) {
listener->panelChanged (EvBrightness, costr);
else if (a==black){
listener->panelChanged (EvBlack, costr);
if (!blackAdd) shcompr->set_sensitive(!((int)black->getValue ()==0)); //at black=0 shcompr value has no effect
if (!black->getAddMode()) shcompr->set_sensitive(!((int)black->getValue ()==0)); //at black=0 shcompr value has no effect
}
else if (a==contrast)
listener->panelChanged (EvContrast, costr);
@@ -260,15 +260,15 @@ void ToneCurve::autolevels_toggled () {
if (!batchMode && autolevels->get_active() && listener) {
listener->panelChanged (EvAutoExp, M("GENERAL_ENABLED"));
waitForAutoExp ();
if (!blackAdd) shcompr->set_sensitive(!((int)black->getValue ()==0)); //at black=0 shcompr value has no effect
if (!black->getAddMode()) shcompr->set_sensitive(!((int)black->getValue ()==0)); //at black=0 shcompr value has no effect
}
if (batchMode) {
expcomp->setEditedState (UnEdited);
black->setEditedState (UnEdited);
if (expAdd)
if (expcomp->getAddMode())
expcomp->setValue (0);
if (blackAdd)
if (black->getAddMode())
black->setValue (0);
listener->panelChanged (EvAutoExp, M("GENERAL_ENABLED"));
}
@@ -342,7 +342,7 @@ bool ToneCurve::autoExpComputed_ () {
enableAll ();
expcomp->setValue (nextExpcomp);
black->setValue (nextBlack);
if (!blackAdd) shcompr->set_sensitive(!((int)black->getValue ()==0)); //at black=0 shcompr value has no effect
if (!black->getAddMode()) shcompr->set_sensitive(!((int)black->getValue ()==0)); //at black=0 shcompr value has no effect
enableListener ();
return false;
@@ -370,33 +370,26 @@ void ToneCurve::setBatchMode (bool batchMode) {
void ToneCurve::setAdjusterBehavior (bool expadd, bool hlcompadd, bool hlcompthreshadd, bool bradd, bool blackadd, bool shcompadd, bool contradd, bool satadd) {
if ((!expAdd && expadd) || (expAdd && !expadd))
expcomp->setLimits (-5, 5, 0.01, 0);
if ((!hlcompAdd && hlcompadd) || (hlcompAdd && !hlcompadd))
hlcompr->setLimits (0, 100, 1, 0);
if ((!hlcompthreshAdd && hlcompthreshadd) || (hlcompthreshAdd && !hlcompthreshadd))
hlcomprthresh->setLimits (0, 100, 1, 0);
if (!blackAdd && blackadd)
black->setLimits (0, 16384, 1, 0);
else if (blackAdd && !blackadd)
black->setLimits (0, 32768, 1, 0);
if ((!shcompAdd && shcompadd) || (shcompAdd && !shcompadd))
shcompr->setLimits (0, 100, 1, 0);
if ((!brAdd && bradd) || (brAdd && !bradd))
brightness->setLimits (-100, 100, 1, 0);
if ((!contrAdd && contradd) || (contrAdd && !contradd))
contrast->setLimits (-100, 100, 1, 0);
if ((!satAdd && satadd) || (satAdd && !satadd))
saturation->setLimits (-100, 100, 1, 0);
expcomp->setAddMode(expadd);
hlcompr->setAddMode(hlcompadd);
hlcomprthresh->setAddMode(hlcompthreshadd);
brightness->setAddMode(bradd);
black->setAddMode(blackadd);
shcompr->setAddMode(shcompadd);
contrast->setAddMode(contradd);
saturation->setAddMode(satadd);
}
expAdd = expadd;
hlcompAdd = hlcompadd;
hlcompthreshAdd = hlcompthreshadd;
blackAdd = blackadd;
shcompAdd = shcompadd;
brAdd = bradd;
contrAdd = contradd;
satAdd = satadd;
void ToneCurve::trimValues (rtengine::procparams::ProcParams* pp) {
expcomp->trimValue(pp->toneCurve.expcomp);
hlcompr->trimValue(pp->toneCurve.hlcompr);
hlcomprthresh->trimValue(pp->toneCurve.hlcomprthresh);
brightness->trimValue(pp->toneCurve.brightness);
black->trimValue(pp->toneCurve.black);
shcompr->trimValue(pp->toneCurve.shcompr);
contrast->trimValue(pp->toneCurve.contrast);
saturation->trimValue(pp->toneCurve.saturation);
}
void ToneCurve::updateCurveBackgroundHistogram (LUTu & hist) {

View File

@@ -41,7 +41,7 @@ class ToneCurve : public Gtk::VBox, public AdjusterListener, public FoldableTool
Adjuster* contrast;
Adjuster* saturation;
bool expAdd,hlcompAdd,hlcompthreshAdd, blackAdd, shcompAdd, brAdd, contrAdd, satAdd, clipDirty, lastAuto;
bool clipDirty, lastAuto;
sigc::connection autoconn;
CurveEditorGroup* curveEditorG;
DiagonalCurveEditor* shape;
@@ -54,11 +54,13 @@ class ToneCurve : public Gtk::VBox, public AdjusterListener, public FoldableTool
ToneCurve ();
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 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 setAdjusterBehavior (bool expadd, bool hlcompadd, bool hlcompthreshadd, bool bradd, bool blackadd, bool shcompadd, bool contradd, bool satadd);
void trimValues (rtengine::procparams::ProcParams* pp);
void adjusterChanged (Adjuster* a, double newval);
void autolevels_toggled ();

View File

@@ -52,6 +52,7 @@ class ToolPanel {
void setListener (ToolPanelListener* tpl) { listener = tpl; }
virtual void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL) {}
virtual void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL) {}
virtual void trimValues (rtengine::procparams::ProcParams* pp) { return; }
virtual void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL) {}
void disableListener () { if (tmp==NULL) tmp = listener; listener = NULL; }

View File

@@ -22,7 +22,7 @@
using namespace rtengine;
using namespace rtengine::procparams;
Vignetting::Vignetting () : Gtk::VBox(), FoldableToolPanel(this), vigAdd(false) {
Vignetting::Vignetting () : Gtk::VBox(), FoldableToolPanel(this) {
amount = Gtk::manage (new Adjuster (M("TP_VIGNETTING_AMOUNT"), -100, 100, 1, 0));
amount->setAdjusterListener (this);
@@ -96,12 +96,14 @@ void Vignetting::adjusterChanged (Adjuster* a, double newval) {
listener->panelChanged (EvVignetting, Glib::ustring::compose ("%1=%5\n%2=%6\n%3=%7\n%4=%8 %9", M("TP_VIGNETTING_AMOUNT"), M("TP_VIGNETTING_RADIUS"), M("TP_VIGNETTING_STRENGTH"), M("TP_VIGNETTING_CENTER"), (int)amount->getValue(), (int)radius->getValue(), (int)strength->getValue(), (int)centerX->getValue(), (int)centerY->getValue()));
}
void Vignetting::setAdjusterBehavior (bool bvadd) {
void Vignetting::setAdjusterBehavior (bool vadd) {
if ((!vigAdd && bvadd) || (vigAdd && !bvadd))
amount->setLimits (-100, 100, 1, 0);
amount->setAddMode(vadd);
}
vigAdd = bvadd;
void Vignetting::trimValues (rtengine::procparams::ProcParams* pp) {
amount->trimValue(pp->vignetting.amount);
}
void Vignetting::setBatchMode (bool batchMode) {

View File

@@ -31,7 +31,6 @@ class Vignetting : public Gtk::VBox, public AdjusterListener, public FoldableToo
Adjuster* strength;
Adjuster* centerX;
Adjuster* centerY;
bool vigAdd;
public:
@@ -43,7 +42,8 @@ class Vignetting : public Gtk::VBox, public AdjusterListener, public FoldableToo
void setBatchMode (bool batchMode);
void adjusterChanged (Adjuster* a, double newval);
void setAdjusterBehavior (bool bvadd);
void setAdjusterBehavior (bool vadd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
#endif

View File

@@ -29,7 +29,7 @@ extern Glib::ustring argv0;
using namespace rtengine;
using namespace rtengine::procparams;
WhiteBalance::WhiteBalance () : Gtk::VBox(), FoldableToolPanel(this), wbp(NULL), wblistener(NULL), tempAdd(false), greenAdd (false) {
WhiteBalance::WhiteBalance () : Gtk::VBox(), FoldableToolPanel(this), wbp(NULL), wblistener(NULL) {
Gtk::HBox* hbox = Gtk::manage (new Gtk::HBox ());
hbox->show ();
@@ -114,8 +114,8 @@ void WhiteBalance::optChanged () {
if (opt==0 && wbp) {
double ctemp; double cgreen;
wbp->getCamWB (ctemp, cgreen);
temp->setValue (tempAdd ? 0.0 : (int)ctemp);
green->setValue (greenAdd ? 0.0 : cgreen);
temp->setValue (temp->getAddMode() ? 0.0 : (int)ctemp);
green->setValue (green->getAddMode() ? 0.0 : cgreen);
meth = M("TP_WBALANCE_CAMERA");
if (batchMode) {
temp->setEditedState (UnEdited);
@@ -125,8 +125,8 @@ void WhiteBalance::optChanged () {
else if (opt==1 && wbp) {
double ctemp; double cgreen;
wbp->getAutoWB (ctemp, cgreen);
temp->setValue (tempAdd ? 0.0 : (int)ctemp);
green->setValue (greenAdd ? 0.0 : cgreen);
temp->setValue (temp->getAddMode() ? 0.0 : (int)ctemp);
green->setValue (green->getAddMode() ? 0.0 : cgreen);
meth = M("TP_WBALANCE_AUTO");
if (batchMode) {
temp->setEditedState (UnEdited);
@@ -175,8 +175,8 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) {
if (wbp) {
double ctemp; double cgreen;
wbp->getCamWB (ctemp, cgreen);
temp->setValue (tempAdd ? 0.0 : (int)ctemp);
green->setValue (greenAdd ? 0.0 : cgreen);
temp->setValue (temp->getAddMode() ? 0.0 : (int)ctemp);
green->setValue (green->getAddMode() ? 0.0 : cgreen);
}
opt = 0;
}
@@ -185,8 +185,8 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) {
if (wbp) {
double ctemp; double cgreen;
wbp->getAutoWB (ctemp, cgreen);
temp->setValue (tempAdd ? 0.0 : (int)ctemp);
green->setValue (greenAdd ? 0.0 : cgreen);
temp->setValue (temp->getAddMode() ? 0.0 : (int)ctemp);
green->setValue (green->getAddMode() ? 0.0 : cgreen);
}
opt = 1;
}
@@ -230,14 +230,14 @@ void WhiteBalance::setDefaults (const ProcParams* defParams, const ParamsEdited*
if (wbp && defParams->wb.method == "Camera") {
double ctemp; double cgreen;
wbp->getCamWB (ctemp, cgreen);
temp->setDefault (tempAdd ? 0 : (int)ctemp);
green->setDefault (greenAdd ? 0 : cgreen);
temp->setDefault (temp->getAddMode() ? 0 : (int)ctemp);
green->setDefault (green->getAddMode() ? 0 : cgreen);
}
else if (wbp && defParams->wb.method == "Auto") {
double ctemp; double cgreen;
wbp->getAutoWB (ctemp, cgreen);
temp->setDefault (tempAdd ? 0 : (int)ctemp);
green->setDefault (greenAdd ? 0 : cgreen);
temp->setDefault (temp->getAddMode() ? 0 : (int)ctemp);
green->setDefault (green->getAddMode() ? 0 : cgreen);
}
else if (defParams->wb.method == "Custom") {
temp->setDefault (defParams->wb.temperature);
@@ -279,19 +279,14 @@ void WhiteBalance::setWB (int vtemp, double vgreen) {
if (listener)
listener->panelChanged (EvWBTemp, Glib::ustring::compose("%1, %2", (int)temp->getValue(), Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), green->getValue())));
}
void WhiteBalance::setAdjusterBehavior (bool btempadd, bool bgreenadd) {
void WhiteBalance::setAdjusterBehavior (bool tempadd, bool greenadd) {
if (!tempAdd && btempadd)
temp->setLimits (-4000, +4000, 1, 0);
else if (tempAdd && !btempadd)
temp->setLimits (MINTEMP, MAXTEMP, 1, 4750);
if (!greenAdd && bgreenadd)
green->setLimits (-1.0, +1.0, 0.001, 0);
else if (greenAdd && bgreenadd)
green->setLimits (MINGREEN, MAXGREEN, 0.001, 1.2);
tempAdd = btempadd;
greenAdd = bgreenadd;
temp->setAddMode(tempadd);
green->setAddMode(greenadd);
}
void WhiteBalance::trimValues (rtengine::procparams::ProcParams* pp) {
temp->trimValue(pp->wb.temperature);
green->trimValue(pp->wb.green);
}

View File

@@ -44,7 +44,6 @@ class WhiteBalance : public Gtk::VBox, public AdjusterListener, public FoldableT
WBProvider *wbp;
SpotWBListener* wblistener;
sigc::connection methconn;
bool tempAdd, greenAdd;
public:
@@ -65,7 +64,8 @@ class WhiteBalance : public Gtk::VBox, public AdjusterListener, public FoldableT
void setSpotWBListener (SpotWBListener* l) { wblistener = l; }
void setWB (int temp, double green);
void setAdjusterBehavior (bool btempadd, bool bgreenadd);
void setAdjusterBehavior (bool tempadd, bool greenadd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
#endif