Improvement of Exposure locallab tool according to complexity mode

This commit is contained in:
Pandagrapher
2020-04-23 20:42:22 +02:00
parent 192c9b118f
commit a368b5470b
2 changed files with 32 additions and 127 deletions

View File

@@ -2562,8 +2562,7 @@ TP_LOCALLAB_OFFSETWAV;Offset
TP_LOCALLAB_OPACOL;Opacity TP_LOCALLAB_OPACOL;Opacity
TP_LOCALLAB_ORIGLC;Merge only with original image TP_LOCALLAB_ORIGLC;Merge only with original image
TP_LOCALLAB_PASTELS2;Vibrance TP_LOCALLAB_PASTELS2;Vibrance
TP_LOCALLAB_PDE;Dynamic Range compression + Standard ƒ TP_LOCALLAB_PDE;ΔØ Laplacian PDE - Dynamic Range compression + Standard
TP_LOCALLAB_PDE2;ΔØ Laplacian PDE - Dynamic Range compression + Standard
TP_LOCALLAB_PDEFRA;PDE IPOL - Contrast attenuator ƒ TP_LOCALLAB_PDEFRA;PDE IPOL - Contrast attenuator ƒ
TP_LOCALLAB_PDEFRAME_TOOLTIP;PDE IPOL - personal algorithm adapted from IPOL to Rawtherapee: lead to very different results and needs differents settings that Standard (negative black, gamma < 1,...)\nMay be usefull for low exposure.\n TP_LOCALLAB_PDEFRAME_TOOLTIP;PDE IPOL - personal algorithm adapted from IPOL to Rawtherapee: lead to very different results and needs differents settings that Standard (negative black, gamma < 1,...)\nMay be usefull for low exposure.\n
TP_LOCALLAB_PREVIEWSEL;Preview selection ΔE TP_LOCALLAB_PREVIEWSEL;Preview selection ΔE

View File

@@ -2143,15 +2143,7 @@ LocallabExposure::LocallabExposure():
} }
expMethod->append(M("TP_LOCALLAB_STD")); expMethod->append(M("TP_LOCALLAB_STD"));
if (complexsoft == 1) {
expMethod->append(M("TP_LOCALLAB_PDE")); expMethod->append(M("TP_LOCALLAB_PDE"));
}
if (complexsoft == 0) {
expMethod->append(M("TP_LOCALLAB_PDE2"));
}
expMethod->set_active(0); expMethod->set_active(0);
expMethodConn = expMethod->signal_changed().connect(sigc::mem_fun(*this, &LocallabExposure::expMethodChanged)); expMethodConn = expMethod->signal_changed().connect(sigc::mem_fun(*this, &LocallabExposure::expMethodChanged));
@@ -2370,10 +2362,7 @@ LocallabExposure::LocallabExposure():
mask2expCurveEditorG->curveListComplete(); mask2expCurveEditorG->curveListComplete();
// Add Color & Light specific widgets to GUI // Add Color & Light specific widgets to GUI
if (complexsoft < 2) {
pack_start(*expMethod); pack_start(*expMethod);
}
ToolParamBlock* const pdeBox = Gtk::manage(new ToolParamBlock()); ToolParamBlock* const pdeBox = Gtk::manage(new ToolParamBlock());
pdeBox->pack_start(*laplacexp); pdeBox->pack_start(*laplacexp);
pdeBox->pack_start(*linear); pdeBox->pack_start(*linear);
@@ -2384,45 +2373,25 @@ LocallabExposure::LocallabExposure():
ctboxexpmethod->pack_start(*exnoiseMethod); ctboxexpmethod->pack_start(*exnoiseMethod);
pdeBox->pack_start(*ctboxexpmethod); pdeBox->pack_start(*ctboxexpmethod);
pdeFrame->add(*pdeBox); pdeFrame->add(*pdeBox);
if (complexsoft < 2) {
pack_start(*pdeFrame); pack_start(*pdeFrame);
}
ToolParamBlock* const fatBox = Gtk::manage(new ToolParamBlock()); ToolParamBlock* const fatBox = Gtk::manage(new ToolParamBlock());
fatBox->pack_start(*fatamount); fatBox->pack_start(*fatamount);
fatBox->pack_start(*fatdetail); fatBox->pack_start(*fatdetail);
if (complexsoft < 1) {
fatBox->pack_start(*fatlevel); fatBox->pack_start(*fatlevel);
}
fatBox->pack_start(*fatanchor); fatBox->pack_start(*fatanchor);
fatFrame->add(*fatBox); fatFrame->add(*fatBox);
if (complexsoft < 2) {
pack_start(*fatFrame); pack_start(*fatFrame);
}
pack_start(*sensiex); pack_start(*sensiex);
pack_start(*structexp); pack_start(*structexp);
if (complexsoft < 2) {
pack_start(*blurexpde); pack_start(*blurexpde);
}
ToolParamBlock* const toolBox = Gtk::manage(new ToolParamBlock()); ToolParamBlock* const toolBox = Gtk::manage(new ToolParamBlock());
toolBox->pack_start(*expcomp); toolBox->pack_start(*expcomp);
toolBox->pack_start(*black); toolBox->pack_start(*black);
if (complexsoft < 2) {
toolBox->pack_start(*hlcompr); toolBox->pack_start(*hlcompr);
toolBox->pack_start(*hlcomprthresh); toolBox->pack_start(*hlcomprthresh);
toolBox->pack_start(*shadex); toolBox->pack_start(*shadex);
toolBox->pack_start(*shcompr); toolBox->pack_start(*shcompr);
toolBox->pack_start(*expchroma); toolBox->pack_start(*expchroma);
}
toolBox->pack_start(*curveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor toolBox->pack_start(*curveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
exptoolexp->add(*toolBox, false); exptoolexp->add(*toolBox, false);
pack_start(*exptoolexp); pack_start(*exptoolexp);
@@ -2431,12 +2400,8 @@ LocallabExposure::LocallabExposure():
gradBox->pack_start(*angexp); gradBox->pack_start(*angexp);
expgradexp->add(*gradBox, false); expgradexp->add(*gradBox, false);
pack_start(*expgradexp); pack_start(*expgradexp);
if (complexsoft < 2) {
pack_start(*softradiusexp); pack_start(*softradiusexp);
pack_start(*inversex); pack_start(*inversex);
}
ToolParamBlock* const maskexpBox = Gtk::manage(new ToolParamBlock()); ToolParamBlock* const maskexpBox = Gtk::manage(new ToolParamBlock());
maskexpBox->pack_start(*showmaskexpMethod, Gtk::PACK_SHRINK, 4); maskexpBox->pack_start(*showmaskexpMethod, Gtk::PACK_SHRINK, 4);
maskexpBox->pack_start(*showmaskexpMethodinv, Gtk::PACK_SHRINK, 4); maskexpBox->pack_start(*showmaskexpMethodinv, Gtk::PACK_SHRINK, 4);
@@ -2545,22 +2510,13 @@ void LocallabExposure::read(const rtengine::procparams::ProcParams* pp, const Pa
exp->set_visible(pp->locallab.spots.at(index).visiexpose); exp->set_visible(pp->locallab.spots.at(index).visiexpose);
exp->setEnabled(pp->locallab.spots.at(index).expexpose); exp->setEnabled(pp->locallab.spots.at(index).expexpose);
if (complexsoft < 2) {
if (pp->locallab.spots.at(index).expMethod == "std") { if (pp->locallab.spots.at(index).expMethod == "std") {
expMethod->set_active(0); expMethod->set_active(0);
} else if (pp->locallab.spots.at(index).expMethod == "pde") { } else if (pp->locallab.spots.at(index).expMethod == "pde") {
expMethod->set_active(1); expMethod->set_active(1);
} }
} else {
expMethod->set_active(0);
}
if (complexsoft == 0) {
laplacexp->setValue(pp->locallab.spots.at(index).laplacexp); laplacexp->setValue(pp->locallab.spots.at(index).laplacexp);
} else {
laplacexp->setValue(0.);
}
linear->setValue(pp->locallab.spots.at(index).linear); linear->setValue(pp->locallab.spots.at(index).linear);
balanexp->setValue(pp->locallab.spots.at(index).balanexp); balanexp->setValue(pp->locallab.spots.at(index).balanexp);
gamm->setValue(pp->locallab.spots.at(index).gamm); gamm->setValue(pp->locallab.spots.at(index).gamm);
@@ -2575,53 +2531,23 @@ void LocallabExposure::read(const rtengine::procparams::ProcParams* pp, const Pa
fatamount->setValue(pp->locallab.spots.at(index).fatamount); fatamount->setValue(pp->locallab.spots.at(index).fatamount);
fatdetail->setValue(pp->locallab.spots.at(index).fatdetail); fatdetail->setValue(pp->locallab.spots.at(index).fatdetail);
if (complexsoft == 0) {
fatlevel->setValue(pp->locallab.spots.at(index).fatlevel); fatlevel->setValue(pp->locallab.spots.at(index).fatlevel);
} else {
fatlevel->setValue(1.);
}
fatanchor->setValue(pp->locallab.spots.at(index).fatanchor); fatanchor->setValue(pp->locallab.spots.at(index).fatanchor);
sensiex->setValue(pp->locallab.spots.at(index).sensiex); sensiex->setValue(pp->locallab.spots.at(index).sensiex);
if (complexsoft < 2) {
structexp->setValue(pp->locallab.spots.at(index).structexp); structexp->setValue(pp->locallab.spots.at(index).structexp);
blurexpde->setValue(pp->locallab.spots.at(index).blurexpde); blurexpde->setValue(pp->locallab.spots.at(index).blurexpde);
} else {
structexp->setValue(0.);
blurexpde->setValue(5.);
}
expcomp->setValue(pp->locallab.spots.at(index).expcomp); expcomp->setValue(pp->locallab.spots.at(index).expcomp);
black->setValue(pp->locallab.spots.at(index).black); black->setValue(pp->locallab.spots.at(index).black);
if (complexsoft < 2) {
hlcompr->setValue(pp->locallab.spots.at(index).hlcompr); hlcompr->setValue(pp->locallab.spots.at(index).hlcompr);
hlcomprthresh->setValue(pp->locallab.spots.at(index).hlcomprthresh); hlcomprthresh->setValue(pp->locallab.spots.at(index).hlcomprthresh);
shadex->setValue(pp->locallab.spots.at(index).shadex); shadex->setValue(pp->locallab.spots.at(index).shadex);
shcompr->setValue(pp->locallab.spots.at(index).shcompr); shcompr->setValue(pp->locallab.spots.at(index).shcompr);
expchroma->setValue(pp->locallab.spots.at(index).expchroma); expchroma->setValue(pp->locallab.spots.at(index).expchroma);
} else {
hlcompr->setValue(0.);
hlcomprthresh->setValue(0.);
shadex->setValue(0.);
shcompr->setValue(0.);
expchroma->setValue(0.);
}
shapeexpos->setCurve(pp->locallab.spots.at(index).excurve); shapeexpos->setCurve(pp->locallab.spots.at(index).excurve);
strexp->setValue(pp->locallab.spots.at(index).strexp); strexp->setValue(pp->locallab.spots.at(index).strexp);
angexp->setValue(pp->locallab.spots.at(index).angexp); angexp->setValue(pp->locallab.spots.at(index).angexp);
if (complexsoft < 2) {
softradiusexp->setValue(pp->locallab.spots.at(index).softradiusexp); softradiusexp->setValue(pp->locallab.spots.at(index).softradiusexp);
inversex->set_active(pp->locallab.spots.at(index).inversex); inversex->set_active(pp->locallab.spots.at(index).inversex);
} else {
softradiusexp->setValue(0.);
inversex->set_active(false);
}
enaExpMask->set_active(pp->locallab.spots.at(index).enaExpMask); enaExpMask->set_active(pp->locallab.spots.at(index).enaExpMask);
enaExpMaskaft->set_active(pp->locallab.spots.at(index).enaExpMaskaft); enaExpMaskaft->set_active(pp->locallab.spots.at(index).enaExpMaskaft);
CCmaskexpshape->setCurve(pp->locallab.spots.at(index).CCmaskexpcurve); CCmaskexpshape->setCurve(pp->locallab.spots.at(index).CCmaskexpcurve);
@@ -3184,28 +3110,12 @@ void LocallabExposure::updateExposureGUI2()
{ {
// Update exposure GUI according to expMethod value // Update exposure GUI according to expMethod value
if (expMethod->get_active_row_number() == 0) { if (expMethod->get_active_row_number() == 0) {
pdeFrame->set_sensitive(false); pdeFrame->hide();
laplacexp->set_sensitive(false); fatFrame->hide();
linear->set_sensitive(false);
balanexp->set_sensitive(false);
gamm->set_sensitive(false);
fatFrame->set_sensitive(false);
fatamount->set_sensitive(false);
fatdetail->set_sensitive(false);
fatlevel->set_sensitive(false);
fatanchor->set_sensitive(false);
softradiusexp->set_sensitive(true); softradiusexp->set_sensitive(true);
} else if (expMethod->get_active_row_number() == 1) { } else if (expMethod->get_active_row_number() == 1) {
pdeFrame->set_sensitive(true); pdeFrame->show();
laplacexp->set_sensitive(true); fatFrame->show();
linear->set_sensitive(true);
balanexp->set_sensitive(true);
gamm->set_sensitive(true);
fatFrame->set_sensitive(true);
fatamount->set_sensitive(true);
fatdetail->set_sensitive(true);
fatlevel->set_sensitive(true);
fatanchor->set_sensitive(true);
softradiusexp->set_sensitive(false); softradiusexp->set_sensitive(false);
} }
} }
@@ -3226,8 +3136,6 @@ void LocallabExposure::updateExposureGUI3()
updateExposureGUI2(); updateExposureGUI2();
} }
pdeFrame->hide();
fatFrame->hide();
structexp->hide(); structexp->hide();
shadex->hide(); shadex->hide();
softradiusexp->hide(); softradiusexp->hide();
@@ -3240,8 +3148,6 @@ void LocallabExposure::updateExposureGUI3()
showmaskexpMethodinv->show(); showmaskexpMethodinv->show();
} else { } else {
expMethod->show(); expMethod->show();
pdeFrame->show();
fatFrame->show();
structexp->show(); structexp->show();
shadex->show(); shadex->show();
softradiusexp->show(); softradiusexp->show();