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:
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
@@ -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) {
|
||||
|
@@ -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
|
||||
|
@@ -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]);
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
}*/
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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]);
|
||||
}
|
||||
|
@@ -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 ();
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
@@ -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;;
|
||||
|
@@ -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);
|
||||
|
@@ -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) {
|
||||
|
@@ -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
|
||||
|
@@ -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")) );
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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 ();
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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; }
|
||||
};
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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) {
|
||||
|
@@ -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 ();
|
||||
|
@@ -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; }
|
||||
|
@@ -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) {
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user