Add ability to use adjusters default values with Locallab

Behavior:
- If an image containing Locallab control spots is loaded, adjusters
default values (ctrl + clic on adjuster reset button) is updated
according to selected spots
- Adjusters default values are updated to spot default params values for
created spots
This commit is contained in:
Pandagrapher
2018-10-25 16:29:11 +02:00
parent ce63383676
commit 23b0836603
4 changed files with 275 additions and 164 deletions

View File

@@ -24,7 +24,6 @@
#include <iomanip>
using namespace rtengine;
using namespace rtengine::procparams;
//-----------------------------------------------------------------------------
// ControlSpotPanel
@@ -1611,6 +1610,72 @@ void ControlSpotPanel::setEditedStates(SpotEdited* se)
disableParamlistener(false);
}
void ControlSpotPanel::setDefaults(const ProcParams * defParams, const ParamsEdited * pedited)
{
// Set default values for adjusters
if (defParams->locallab.selspot < (int)defParams->locallab.spots.size()) {
updateDefaultsValues(defParams, defParams->locallab.spots.at(defParams->locallab.selspot).id);
} else {
updateDefaultsValues(defParams);
}
// Set default edited states for adjusters
if (pedited) {
sensiexclu_->setDefaultEditedState(pedited->locallab.sensiexclu ? Edited : UnEdited);
struc_->setDefaultEditedState(pedited->locallab.struc ? Edited : UnEdited);
locX_->setDefaultEditedState(pedited->locallab.locX ? Edited : UnEdited);
locXL_->setDefaultEditedState(pedited->locallab.locXL ? Edited : UnEdited);
locY_->setDefaultEditedState(pedited->locallab.locY ? Edited : UnEdited);
locYT_->setDefaultEditedState(pedited->locallab.locYT ? Edited : UnEdited);
centerX_->setDefaultEditedState(pedited->locallab.centerX ? Edited : UnEdited);
centerY_->setDefaultEditedState(pedited->locallab.centerY ? Edited : UnEdited);
circrad_->setDefaultEditedState(pedited->locallab.circrad ? Edited : UnEdited);
transit_->setDefaultEditedState(pedited->locallab.transit ? Edited : UnEdited);
thresh_->setDefaultEditedState(pedited->locallab.thresh ? Edited : UnEdited);
iter_->setDefaultEditedState(pedited->locallab.iter ? Edited : UnEdited);
} else {
sensiexclu_->setDefaultEditedState(Irrelevant);
struc_->setDefaultEditedState(Irrelevant);
locX_->setDefaultEditedState(Irrelevant);
locXL_->setDefaultEditedState(Irrelevant);
locY_->setDefaultEditedState(Irrelevant);
locYT_->setDefaultEditedState(Irrelevant);
centerX_->setDefaultEditedState(Irrelevant);
centerY_->setDefaultEditedState(Irrelevant);
circrad_->setDefaultEditedState(Irrelevant);
transit_->setDefaultEditedState(Irrelevant);
thresh_->setDefaultEditedState(Irrelevant);
iter_->setDefaultEditedState(Irrelevant);
}
}
void ControlSpotPanel::updateDefaultsValues(const rtengine::procparams::ProcParams* defParams, int id)
{
const LocallabParams::LocallabSpot* defSpot = new LocallabParams::LocallabSpot();
for (int i = 0; i < (int)defParams->locallab.spots.size(); i++) {
if (defParams->locallab.spots.at(i).id == id) {
defSpot = &defParams->locallab.spots.at(i);
break;
}
}
// Set default values for adjusters
sensiexclu_->setDefault((double)defSpot->sensiexclu);
struc_->setDefault((double)defSpot->struc);
locX_->setDefault((double)defSpot->locX);
locXL_->setDefault((double)defSpot->locXL);
locY_->setDefault((double)defSpot->locY);
locYT_->setDefault((double)defSpot->locYT);
centerX_->setDefault((double)defSpot->centerX);
centerY_->setDefault((double)defSpot->centerY);
circrad_->setDefault((double)defSpot->circrad);
transit_->setDefault((double)defSpot->transit);
thresh_->setDefault((double)defSpot->thresh);
iter_->setDefault((double)defSpot->iter);
}
//-----------------------------------------------------------------------------
// ControlSpots
//-----------------------------------------------------------------------------