Issue 2073: white balance fixes

This commit is contained in:
torger
2013-11-22 08:33:09 +01:00
parent 7030715a98
commit 099f7e68d5

View File

@@ -184,6 +184,9 @@ WhiteBalance::WhiteBalance () : Gtk::VBox(), FoldableToolPanel(this), wbp(NULL),
temp = Gtk::manage (new Adjuster (M("TP_WBALANCE_TEMPERATURE"), MINTEMP, MAXTEMP, 5, 4750));
green = Gtk::manage (new Adjuster (M("TP_WBALANCE_GREEN"), MINGREEN, MAXGREEN, 0.001, 1.0));
equal = Gtk::manage (new Adjuster (M("TP_WBALANCE_EQBLUERED"), MINEQUAL, MAXEQUAL, 0.001, 1.0));
cache_customTemp (0);
cache_customGreen (0);
cache_customEqual (0);
equal->set_tooltip_markup (M("TP_WBALANCE_EQBLUERED_TOOLTIP"));
temp->show ();
green->show ();
@@ -313,9 +316,13 @@ void WhiteBalance::optChanged () {
case WBT_CUSTOM:
if (custom_temp>0){
temp->setValue (temp->getAddMode() ? 0.0 : custom_temp);
green->setValue (green->getAddMode() ? 0.0 : custom_green);
equal->setValue (equal->getAddMode() ? 0.0 : custom_equal);
} else {
cache_customTemp (temp->getValue());
cache_customGreen (green->getValue());
cache_customEqual (equal->getValue());
}
green->setValue (green->getAddMode() ? 0.0 : custom_green);
equal->setValue (equal->getAddMode() ? 0.0 : custom_equal);
if (batchMode) {
temp->setEditedState (Edited);
green->setEditedState (Edited);
@@ -389,9 +396,9 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) {
// temperature is reset to the associated temperature, or 0.0 if addMode is set.
switch (wbValues->type) {
case WBT_CUSTOM:
temp->setValue (pp->wb.temperature);
green->setValue (pp->wb.green);
equal->setValue (pp->wb.equal);
temp->setValue (temp->getAddMode() ? 0.0 : pp->wb.temperature);
green->setValue (green->getAddMode() ? 0.0 : pp->wb.green);
equal->setValue (equal->getAddMode() ? 0.0 : pp->wb.equal);
cache_customTemp (pp->wb.temperature);
cache_customGreen (pp->wb.green);
cache_customEqual (pp->wb.equal);
@@ -403,14 +410,20 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) {
break;
case WBT_CAMERA:
if (wbp) {
double ctemp; double cgreen;
double ctemp = -1.0; double cgreen = -1.0;
wbp->getCamWB (ctemp, cgreen);
// Set the camera's temperature value, or 0.0 if in ADD mode
temp->setValue (temp->getAddMode() ? 0.0 : ctemp);
// Set the camera's green value, or 0.0 if in ADD mode
green->setValue (green->getAddMode() ? 0.0 : cgreen);
equal->setValue (equal->getAddMode() ? 0.0 : 1.);
if (ctemp != -1.0) {
// Set the camera's temperature value, or 0.0 if in ADD mode
temp->setValue (temp->getAddMode() ? 0.0 : ctemp);
// Set the camera's green value, or 0.0 if in ADD mode
green->setValue (green->getAddMode() ? 0.0 : cgreen);
equal->setValue (equal->getAddMode() ? 0.0 : 1.);
} else {
temp->setValue (temp->getAddMode() ? 0.0 : pp->wb.temperature);
green->setValue (green->getAddMode() ? 0.0 : pp->wb.green);
equal->setValue (equal->getAddMode() ? 0.0 : pp->wb.equal);
}
}
break;
case WBT_AUTO:
@@ -497,8 +510,11 @@ void WhiteBalance::setDefaults (const ProcParams* defParams, const ParamsEdited*
if (wbp && defParams->wb.method == "Camera") {
double ctemp; double cgreen;
wbp->getCamWB (ctemp, cgreen);
temp->setDefault (temp->getAddMode() ? 0 : (int)ctemp);
green->setDefault (green->getAddMode() ? 0 : cgreen);
// FIXME: Seems to be always -1.0, called too early? Broken!
if (ctemp != -1.0) {
temp->setDefault (temp->getAddMode() ? 0 : (int)ctemp);
green->setDefault (green->getAddMode() ? 0 : cgreen);
}
}
else if (wbp && defParams->wb.method == "Auto") {
// this setDefaults method is called too early ; the wbp has been set,