Local adjustments - Various improvment Log encoding - Basic - Standard - Advanced (#5979)

* First LA log encoding ciecam

* Some changes hide show and tooltip

* Change label - tooltip

* Change max slider shadow

* Fixed bad behavior cat02 adaptation in some cases

* Another fix Cat02 GUI

* LA log encode add ciecam saturation

* LA log encoding - added contrast J ciecam

* LA Log encode various changes GUI labels tooltips

* Change 2 tooltips

* Clean code

* Save provisory work

* Save GUI mask Log

* GUI part 2

* Enable basic standard advanced Log encoding

* Small change tooltip

* Save provisory work mask Log

* Another provisory work mask

* Enable mask Log encoding

* Hide graduatef filter Log - basic

* Add brightness colorfulness - advanced

* Change labels tooltip Log auto

* Clean ciecam local code and comment

* Change label and tooltip automatic

* Added strenth log encoding

* Change strength tooltip Log encoding

* Another change label

* Change standard advance denoi

* Enable maskbackground curve mask
This commit is contained in:
Desmis
2020-11-07 08:50:33 +01:00
committed by GitHub
parent 88b455bf65
commit ed01656a57
21 changed files with 1293 additions and 160 deletions

View File

@@ -265,7 +265,7 @@ void LocallabTone::resetMaskView()
showmasktmMethodConn.block(false);
}
void LocallabTone::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &maskMask)
void LocallabTone::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask)
{
tmMask = showmasktmMethod->get_active_row_number();
}
@@ -967,7 +967,7 @@ void LocallabRetinex::resetMaskView()
showmaskretiMethodConn.block(false);
}
void LocallabRetinex::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &maskMask)
void LocallabRetinex::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask)
{
retiMask = showmaskretiMethod->get_active_row_number();
}
@@ -1837,7 +1837,7 @@ void LocallabSharp::resetMaskView()
showmasksharMethodConn.block(false);
}
void LocallabSharp::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &maskMask)
void LocallabSharp::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask)
{
sharMask = showmasksharMethod->get_active_row_number();
}
@@ -2622,7 +2622,7 @@ void LocallabContrast::resetMaskView()
showmasklcMethodConn.block(false);
}
void LocallabContrast::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &maskMask)
void LocallabContrast::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask)
{
lcMask = showmasklcMethod->get_active_row_number();
}
@@ -4152,7 +4152,7 @@ void LocallabCBDL::resetMaskView()
showmaskcbMethodConn.block(false);
}
void LocallabCBDL::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &maskMask)
void LocallabCBDL::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask)
{
cbMask = showmaskcbMethod->get_active_row_number();
}
@@ -4649,9 +4649,10 @@ void LocallabCBDL::lumacontrastPlusPressed()
/* ==== LocallabLog ==== */
LocallabLog::LocallabLog():
LocallabTool(this, M("TP_LOCALLAB_LOG_TOOLNAME"), M("TP_LOCALLAB_LOG"), false, false),
LocallabTool(this, M("TP_LOCALLAB_LOG_TOOLNAME"), M("TP_LOCALLAB_LOG"), false),
// Log encoding specific widgets
repar(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGREPART"), 1.0, 100.0, 1., 100.0))),
ciecam(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_CIEC")))),
autocompute(Gtk::manage(new Gtk::ToggleButton(M("TP_LOCALLAB_LOGAUTO")))),
logPFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LOGPFRA")))),
@@ -4662,24 +4663,49 @@ LocallabLog::LocallabLog():
Autogray(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_AUTOGRAY")))),
sourceGray(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOURCE_GRAY"), 1.0, 100.0, 0.1, 10.0))),
sourceabs(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOURCE_ABS"), 0.01, 16384.0, 0.01, 2000.0))),
sursour(Gtk::manage (new MyComboBoxText ())),
surHBox(Gtk::manage(new Gtk::HBox())),
log1Frame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LOG1FRA")))),
log2Frame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LOG2FRA")))),
targetGray(Gtk::manage(new Adjuster(M("TP_LOCALLAB_TARGET_GRAY"), 5.0, 80.0, 0.1, 18.0))),
detail(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DETAIL"), 0., 1., 0.01, 0.6))),
catad(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CATAD"), -100., 100., 0.5, 0., Gtk::manage(new RTImage("circle-blue-small.png")), Gtk::manage(new RTImage("circle-orange-small.png"))))),
contl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CONTL"), -100., 100., 0.5, 0.))),
lightl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGLIGHTL"), -100., 100., 0.5, 0.))),
lightq(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGLIGHTQ"), -100., 100., 0.5, 0.))),
contl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGCONTL"), -100., 100., 0.5, 0.))),
contq(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGCONQL"), -100., 100., 0.5, 0.))),
colorfl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGCOLORFL"), -100., 100., 0.5, 0.))),
saturl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SATURV"), -100., 100., 0.5, 0.))),
expL(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_LOGEXP")))),
CurveEditorL(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_LOGCONTQ"))),
LshapeL(static_cast<DiagonalCurveEditor*>(CurveEditorL->addCurve(CT_Diagonal, "Q(Q)"))),
targabs(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOURCE_ABS"), 0.01, 16384.0, 0.01, 16.0))),
surround(Gtk::manage (new MyComboBoxText ())),
surrHBox(Gtk::manage(new Gtk::HBox())),
baselog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BASELOG"), 1.3, 3., 0.05, 2., Gtk::manage(new RTImage("circle-black-small.png")), Gtk::manage(new RTImage("circle-white-small.png"))))),
baselog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BASELOG"), 1.3, 3., 0.05, 2.))),//, Gtk::manage(new RTImage("circle-black-small.png")), Gtk::manage(new RTImage("circle-white-small.png"))))),
sensilog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 60))),
gradlogFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRADLOGFRA")))),
strlog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADSTR"), -2.0, 2.0, 0.05, 0.))),
anglog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADANG"), -180, 180, 0.1, 0.)))
anglog(Gtk::manage(new Adjuster(M("TP_LOCALLAB_GRADANG"), -180, 180, 0.1, 0.))),
expmaskL(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_SHOWC")))),
showmaskLMethod(Gtk::manage(new MyComboBoxText())),
enaLMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))),
maskCurveEditorL(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASKCOL"))),
CCmaskshapeL(static_cast<FlatCurveEditor*>(maskCurveEditorL->addCurve(CT_Flat, "C(C)", nullptr, false, false))),
LLmaskshapeL(static_cast<FlatCurveEditor*>(maskCurveEditorL->addCurve(CT_Flat, "L(L)", nullptr, false, false))),
HHmaskshapeL(static_cast<FlatCurveEditor *>(maskCurveEditorL->addCurve(CT_Flat, "LC(H)", nullptr, false, true))),
blendmaskL(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKCOL"), -100, 100, 1, 0))),
radmaskL(Gtk::manage(new Adjuster(M("TP_LOCALLAB_RADMASKCOL"), 0.0, 100.0, 0.1, 0.))),
chromaskL(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMASKCOL"), -100.0, 100.0, 0.1, 0.))),
mask2CurveEditorL(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
LmaskshapeL(static_cast<DiagonalCurveEditor*>(mask2CurveEditorL->addCurve(CT_Diagonal, "L(L)")))
{
// Parameter Log encoding specific widgets
autoconn = autocompute->signal_toggled().connect(sigc::mem_fun(*this, &LocallabLog::autocomputeToggled));
const LocallabParams::LocallabSpot defSpot;
repar->setAdjusterListener(this);
blackEv->setLogScale(2, -8);
blackEv->setAdjusterListener(this);
@@ -4704,10 +4730,27 @@ LocallabLog::LocallabLog():
catad->setAdjusterListener(this);
setExpandAlignProperties(expL, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
saturl->setAdjusterListener(this);
lightl->setAdjusterListener(this);
lightq->setAdjusterListener(this);
contl->setAdjusterListener(this);
contq->setAdjusterListener(this);
colorfl->setAdjusterListener(this);
CurveEditorL->setCurveListener(this);
LshapeL->setResetCurve(DiagonalCurveType(defSpot.LcurveL.at(0)), defSpot.LcurveL);
LshapeL->setBottomBarBgGradient({{0., 0., 0., 0.}, {1., 1., 1., 1.}});
LshapeL->setLeftBarBgGradient({{0., 0., 0., 0.}, {1., 1., 1., 1.}});
CurveEditorL->curveListComplete();
targabs->setLogScale(500, 0);
targabs->setAdjusterListener(this);
@@ -4719,6 +4762,19 @@ LocallabLog::LocallabLog():
strlog->setAdjusterListener(this);
anglog->setAdjusterListener(this);
surHBox->set_spacing (2);
surHBox->set_tooltip_markup (M ("TP_LOCALLAB_LOGSURSOUR_TOOLTIP"));
Gtk::Label* surLabel = Gtk::manage (new Gtk::Label (M ("TP_COLORAPP_SURROUND") + ":"));
surHBox->pack_start (*surLabel, Gtk::PACK_SHRINK);
sursour->append (M ("TP_COLORAPP_SURROUND_AVER"));
sursour->append (M ("TP_COLORAPP_SURROUND_DIM"));
// sursour->append (M ("TP_COLORAPP_SURROUND_DARK"));
sursour->set_active (0);
surHBox->pack_start (*sursour);
sursourconn = sursour->signal_changed().connect ( sigc::mem_fun (*this, &LocallabLog::sursourChanged) );
// Gtk::HBox* surrHBox = Gtk::manage (new Gtk::HBox ());
surrHBox->set_spacing (2);
@@ -4733,7 +4789,51 @@ LocallabLog::LocallabLog():
surrHBox->pack_start (*surround);
surroundconn = surround->signal_changed().connect ( sigc::mem_fun (*this, &LocallabLog::surroundChanged) );
setExpandAlignProperties(expmaskL, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
showmaskLMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
showmaskLMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
showmaskLMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
showmaskLMethod->append(M("TP_LOCALLAB_SHOWMASK"));
showmaskLMethod->append(M("TP_LOCALLAB_SHOWREF"));
showmaskLMethod->set_active(0);
showmaskLMethod->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKCOL_TOOLTIP"));
showmaskLMethodConn = showmaskLMethod->signal_changed().connect(sigc::mem_fun(*this, &LocallabLog::showmaskLMethodChanged));
enaLMaskConn = enaLMask->signal_toggled().connect(sigc::mem_fun(*this, &LocallabLog::enaLMaskChanged));
maskCurveEditorL->setCurveListener(this);
CCmaskshapeL->setIdentityValue(0.);
CCmaskshapeL->setResetCurve(FlatCurveType(defSpot.CCmaskcurveL.at(0)), defSpot.CCmaskcurveL);
CCmaskshapeL->setBottomBarColorProvider(this, 1);
LLmaskshapeL->setIdentityValue(0.);
LLmaskshapeL->setResetCurve(FlatCurveType(defSpot.LLmaskcurveL.at(0)), defSpot.LLmaskcurveL);
LLmaskshapeL->setBottomBarBgGradient({{0., 0., 0., 0.}, {1., 1., 1., 1.}});
HHmaskshapeL->setIdentityValue(0.);
HHmaskshapeL->setResetCurve(FlatCurveType(defSpot.HHmaskcurveL.at(0)), defSpot.HHmaskcurveL);
HHmaskshapeL->setCurveColorProvider(this, 2);
HHmaskshapeL->setBottomBarColorProvider(this, 2);
maskCurveEditorL->curveListComplete();
blendmaskL->setAdjusterListener(this);
radmaskL->setAdjusterListener(this);
chromaskL->setAdjusterListener(this);
mask2CurveEditorL->setCurveListener(this);
LmaskshapeL->setResetCurve(DiagonalCurveType(defSpot.LmaskcurveL.at(0)), defSpot.LmaskcurveL);
LmaskshapeL->setBottomBarBgGradient({{0., 0., 0., 0.}, {1., 1., 1., 1.}});
LmaskshapeL->setLeftBarBgGradient({{0., 0., 0., 0.}, {1., 1., 1., 1.}});
mask2CurveEditorL->curveListComplete();
// Add Log encoding specific widgets to GUI
pack_start(*repar);
pack_start(*ciecam);
logPFrame->set_label_align(0.025, 0.5);
ToolParamBlock* const logPBox = Gtk::manage(new ToolParamBlock());
@@ -4749,6 +4849,7 @@ LocallabLog::LocallabLog():
logFBox->pack_start(*Autogray);
logFBox->pack_start(*sourceGray);
logFBox->pack_start(*sourceabs);
logFBox->pack_start (*surHBox);
// logFBox->pack_start(*baselog);
logFrame->add(*logFBox);
pack_start(*logFrame);
@@ -4757,6 +4858,15 @@ LocallabLog::LocallabLog():
logP1Box->pack_start(*detail);
logP1Box->pack_start(*contl);
logP1Box->pack_start(*saturl);
ToolParamBlock* const logP11Box = Gtk::manage(new ToolParamBlock());
logP11Box->pack_start(*lightl);
logP11Box->pack_start(*lightq);
logP11Box->pack_start(*contq);
logP11Box->pack_start(*colorfl);
expL->add(*logP11Box, false);
logP1Box->pack_start(*expL, false, false);
// logP1Box->pack_start(*CurveEditorL, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
log1Frame->add(*logP1Box);
pack_start(*log1Frame);
log2Frame->set_label_align(0.025, 0.5);
@@ -4765,11 +4875,25 @@ LocallabLog::LocallabLog():
logP2Box->pack_start(*targabs);
logP2Box->pack_start(*catad);
logP2Box->pack_start (*surrHBox);
ToolParamBlock* const logP3Box = Gtk::manage(new ToolParamBlock());
logP3Box->pack_start(*showmaskLMethod, Gtk::PACK_SHRINK, 4);
logP3Box->pack_start(*enaLMask, Gtk::PACK_SHRINK, 0);
logP3Box->pack_start(*maskCurveEditorL, Gtk::PACK_SHRINK, 4);
logP3Box->pack_start(*blendmaskL);
logP3Box->pack_start(*radmaskL);
logP3Box->pack_start(*chromaskL);
logP3Box->pack_start(*mask2CurveEditorL, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
expmaskL->add(*logP3Box, false);
log2Frame->add(*logP2Box);
pack_start(*log2Frame);
// pack_start(*baselog);
pack_start(*sensilog);
Gtk::Frame* const gradlogFrame = Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRADLOGFRA")));
pack_start(*expmaskL, false, false);
// Gtk::Frame* const gradlogFrame = Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRADLOGFRA")));
gradlogFrame->set_label_align(0.025, 0.5);
ToolParamBlock* const gradlogBox = Gtk::manage(new ToolParamBlock());
gradlogBox->pack_start(*strlog);
@@ -4778,15 +4902,32 @@ LocallabLog::LocallabLog():
pack_start(*gradlogFrame);
}
LocallabLog::~LocallabLog()
{
delete maskCurveEditorL;
delete mask2CurveEditorL;
delete CurveEditorL;
}
void LocallabLog::setDefaultExpanderVisibility()
{
expmaskL->set_expanded(false);
expL->set_expanded(false);
}
void LocallabLog::updateAdviceTooltips(const bool showTooltips)
{
if (showTooltips) {
exp->set_tooltip_text(M("TP_LOCALLAB_LOGENCOD_TOOLTIP"));
repar->set_tooltip_text(M("TP_LOCALLAB_LOGREPART_TOOLTIP"));
logPFrame->set_tooltip_text(M("TP_LOCALLAB_LOGFRAME_TOOLTIP"));
logFrame->set_tooltip_text(M("TP_LOCALLAB_LOGSCENE_TOOLTIP"));
log1Frame->set_tooltip_text(M("TP_LOCALLAB_LOGIMAGE_TOOLTIP"));
log2Frame->set_tooltip_text(M("TP_LOCALLAB_LOGVIEWING_TOOLTIP"));
autocompute->set_tooltip_text(M("TP_LOCALLAB_LOGAUTO_TOOLTIP"));
Autogray->set_tooltip_text(M("TP_LOCALLAB_LOGAUTOGRAY_TOOLTIP"));
// blackEv->set_tooltip_text(M("TP_LOCALLAB_LOGBLACKWHEV_TOOLTIP"));
// whiteEv->set_tooltip_text(M("TP_LOCALLAB_LOGBLACKWHEV_TOOLTIP"));
blackEv->set_tooltip_text("");
@@ -4799,18 +4940,30 @@ void LocallabLog::updateAdviceTooltips(const bool showTooltips)
strlog->set_tooltip_text(M("TP_LOCALLAB_GRADGEN_TOOLTIP"));
anglog->set_tooltip_text(M("TP_LOCALLAB_GRADANG_TOOLTIP"));
contl->set_tooltip_text(M("TP_LOCALLAB_LOGCONTL_TOOLTIP"));
contq->set_tooltip_text(M("TP_LOCALLAB_LOGCONTQ_TOOLTIP"));
colorfl->set_tooltip_text(M("TP_LOCALLAB_LOGCOLORF_TOOLTIP"));
lightl->set_tooltip_text(M("TP_LOCALLAB_LOGLIGHTL_TOOLTIP"));
lightq->set_tooltip_text(M("TP_LOCALLAB_LOGLIGHTQ_TOOLTIP"));
saturl->set_tooltip_text(M("TP_LOCALLAB_LOGSATURL_TOOLTIP"));
detail->set_tooltip_text(M("TP_LOCALLAB_LOGDETAIL_TOOLTIP"));
catad->set_tooltip_text(M("TP_LOCALLAB_LOGCATAD_TOOLTIP"));
// detail->set_tooltip_text(M("TP_LOCALLAB_NUL_TOOLTIP"));
// Autogray->set_tooltip_text(M("TP_LOCALLAB_NUL_TOOLTIP"));
// sensilog->set_tooltip_text(M("TP_LOCALLAB_NUL_TOOLTIP"));
Autogray->set_tooltip_text("");
sensilog->set_tooltip_text(M("TP_LOCALLAB_SENSI_TOOLTIP"));
fullimage->set_tooltip_text(M("TP_LOCALLAB_FULLIMAGELOG_TOOLTIP"));
ciecam->set_tooltip_text(M("TP_LOCALLAB_CIECAMLOG_TOOLTIP"));
expmaskL->set_tooltip_markup(M("TP_LOCALLAB_MASK_TOOLTIP"));
CCmaskshapeL->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
LLmaskshapeL->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
HHmaskshapeL->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
blendmaskL->set_tooltip_text(M("TP_LOCALLAB_BLENDMASK_TOOLTIP"));
radmaskL->set_tooltip_text(M("TP_LOCALLAB_LAPRAD2_TOOLTIP"));
chromaskL->set_tooltip_text(M("TP_LOCALLAB_CHROMASK_TOOLTIP"));
// mask2CurveEditorL->set_tooltip_text(M("TP_LOCALLAB_CONTRASTCURVMASK_TOOLTIP"));
LmaskshapeL->setTooltip(M("TP_LOCALLAB_LMASK_LL_TOOLTIP"));
} else {
exp->set_tooltip_text("");
repar->set_tooltip_text("");
logPFrame->set_tooltip_text("");
logFrame->set_tooltip_text("");
log1Frame->set_tooltip_text("");
@@ -4831,8 +4984,22 @@ void LocallabLog::updateAdviceTooltips(const bool showTooltips)
fullimage->set_tooltip_text("");
ciecam->set_tooltip_text("");
contl->set_tooltip_text("");
lightl->set_tooltip_text("");
lightq->set_tooltip_text("");
contq->set_tooltip_text("");
colorfl->set_tooltip_text("");
saturl->set_tooltip_text("");
catad->set_tooltip_text("");
expmaskL->set_tooltip_markup("");
CCmaskshapeL->setTooltip("");
LLmaskshapeL->setTooltip("");
HHmaskshapeL->setTooltip("");
blendmaskL->set_tooltip_text("");
radmaskL->set_tooltip_text("");
chromaskL->set_tooltip_text("");
mask2CurveEditorL->set_tooltip_text("");
LmaskshapeL->setTooltip("");
}
}
@@ -4843,8 +5010,11 @@ void LocallabLog::disableListener()
autoconn.block(true);
fullimageConn.block(true);
ciecamconn.block(true);
enaLMaskConn.block(true);
surroundconn.block (true);
sursourconn.block (true);
AutograyConn.block(true);
showmaskLMethodConn.block(true);
}
void LocallabLog::enableListener()
@@ -4854,10 +5024,33 @@ void LocallabLog::enableListener()
autoconn.block(false);
fullimageConn.block(false);
ciecamconn.block(false);
enaLMaskConn.block(false);
surroundconn.block (false);
sursourconn.block (false);
AutograyConn.block(false);
showmaskLMethodConn.block(false);
}
bool LocallabLog::isMaskViewActive()
{
return ((showmaskLMethod->get_active_row_number() != 0));
}
void LocallabLog::resetMaskView()
{
showmaskLMethodConn.block(true);
showmaskLMethod->set_active(0);
showmaskLMethodConn.block(false);
}
void LocallabLog::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask)
{
logMask = showmaskLMethod->get_active_row_number();
}
void LocallabLog::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited)
{
// Disable all listeners
@@ -4873,15 +5066,24 @@ void LocallabLog::read(const rtengine::procparams::ProcParams* pp, const ParamsE
exp->set_visible(spot.visilog);
exp->setEnabled(spot.explog);
complexity->set_active(spot.complexlog);
autocompute->set_active(spot.autocompute);
blackEv->setValue(spot.blackEv);
repar->setValue(spot.repar);
whiteEv->setValue(spot.whiteEv);
/* if(whiteEv->getValue() < 1.5){
whiteEv->setValue(1.5);
}
*/
if (spot.sursour == "Average") {
sursour->set_active (0);
} else if (spot.sursour == "Dim") {
sursour->set_active (1);
}
if (spot.surround == "Average") {
surround->set_active (0);
} else if (spot.surround == "Dim") {
@@ -4899,7 +5101,12 @@ void LocallabLog::read(const rtengine::procparams::ProcParams* pp, const ParamsE
sourceabs->setValue(spot.sourceabs);
catad->setValue(spot.catad);
saturl->setValue(spot.saturl);
lightl->setValue(spot.lightl);
lightq->setValue(spot.lightq);
contl->setValue(spot.contl);
contq->setValue(spot.contq);
colorfl->setValue(spot.colorfl);
LshapeL->setCurve(spot.LcurveL);
targabs->setValue(spot.targabs);
targetGray->setValue(spot.targetGray);
detail->setValue(spot.detail);
@@ -4907,11 +5114,24 @@ void LocallabLog::read(const rtengine::procparams::ProcParams* pp, const ParamsE
sensilog->setValue((double)spot.sensilog);
strlog->setValue(spot.strlog);
anglog->setValue(spot.anglog);
CCmaskshapeL->setCurve(spot.CCmaskcurveL);
LLmaskshapeL->setCurve(spot.LLmaskcurveL);
HHmaskshapeL->setCurve(spot.HHmaskcurveL);
enaLMask->set_active(spot.enaLMask);
blendmaskL->setValue(spot.blendmaskL);
radmaskL->setValue(spot.radmaskL);
chromaskL->setValue(spot.chromaskL);
LmaskshapeL->setCurve(spot.LmaskcurveL);
}
// Enable all listeners
enableListener();
// Update GUI according to complexity mode
updateGUIToMode(static_cast<modeType>(complexity->get_active_row_number()));
// Update Log Encoding GUI according to autocompute button state
updateLogGUI();
updateLogGUI2();
@@ -4928,8 +5148,10 @@ void LocallabLog::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedi
spot.explog = exp->getEnabled();
spot.visilog = exp->get_visible();
spot.complexlog = complexity->get_active_row_number();
spot.autocompute = autocompute->get_active();
spot.repar = repar->getValue();
spot.blackEv = blackEv->getValue();
spot.whiteEv = whiteEv->getValue();
spot.fullimage = fullimage->get_active();
@@ -4941,13 +5163,31 @@ void LocallabLog::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedi
spot.targetGray = targetGray->getValue();
spot.catad = catad->getValue();
spot.saturl = saturl->getValue();
spot.lightl = lightl->getValue();
spot.lightq = lightq->getValue();
spot.contl = contl->getValue();
spot.contq = contq->getValue();
spot.colorfl = colorfl->getValue();
spot.LcurveL = LshapeL->getCurve();
spot.detail = detail->getValue();
spot.baselog = baselog->getValue();
spot.sensilog = sensilog->getIntValue();
spot.strlog = strlog->getValue();
spot.anglog = anglog->getValue();
spot.CCmaskcurveL = CCmaskshapeL->getCurve();
spot.LLmaskcurveL = LLmaskshapeL->getCurve();
spot.HHmaskcurveL = HHmaskshapeL->getCurve();
spot.enaLMask = enaLMask->get_active();
spot.blendmaskL = blendmaskL->getValue();
spot.radmaskL = radmaskL->getValue();
spot.chromaskL = chromaskL->getValue();
spot.LmaskcurveL = LmaskshapeL->getCurve();
if (sursour->get_active_row_number() == 0) {
spot.sursour = "Average";
} else if (sursour->get_active_row_number() == 1) {
spot.sursour = "Dim";
}
if (surround->get_active_row_number() == 0) {
spot.surround = "Average";
@@ -4964,6 +5204,189 @@ void LocallabLog::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedi
// Note: No need to manage pedited as batch mode is deactivated for Locallab
}
void LocallabLog::enaLMaskChanged()
{
if (isLocActivated && exp->getEnabled()) {
if (listener) {
if (enaLMask->get_active()) {
listener->panelChanged(EvLocallabEnaLMask,
M("GENERAL_ENABLED") + " (" + escapeHtmlChars(spotName) + ")");
} else {
listener->panelChanged(EvLocallabEnaLMask,
M("GENERAL_DISABLED") + " (" + escapeHtmlChars(spotName) + ")");
}
}
}
}
void LocallabLog::updateGUIToMode(const modeType new_type)
{
switch (new_type) {
case Simple:
// Expert and Normal mode widgets are hidden in Simple mode
ciecam->hide();
ciecam->set_active(false);
sourceabs->hide();
targabs->hide();
saturl->hide();
contl->hide();
lightl->hide();
lightq->hide();
contq->hide();
colorfl->hide();
catad->hide();
surrHBox->hide();
expL->hide();
surHBox->hide();
expmaskL->hide();
gradlogFrame->hide();
break;
case Normal:
// Expert mode widgets are hidden in Normal mode
ciecam->hide();
ciecam->set_active(true);
sourceabs->show();
targabs->show();
catad->show();
saturl->show();
lightl->show();
lightq->show();
contl->show();
contq->show();
colorfl->show();
surrHBox->show();
expL->hide();
surHBox->hide();
expmaskL->hide();
gradlogFrame->show();
break;
case Expert:
// Show widgets hidden in Normal and Simple mode
ciecam->hide();
ciecam->set_active(true);
sourceabs->show();
targabs->show();
catad->show();
saturl->show();
lightl->show();
lightq->show();
contl->show();
contq->show();
colorfl->show();
surrHBox->show();
expL->show();
expmaskL->show();
gradlogFrame->show();
surHBox->show();
}
}
void LocallabLog::convertParamToSimple()
{
const LocallabParams::LocallabSpot defSpot;
// Disable all listeners
disableListener();
ciecam->set_active(false);
contq->setValue(defSpot.contq);
colorfl->setValue(defSpot.colorfl);
lightl->setValue(defSpot.lightl);
lightq->setValue(defSpot.lightq);
sursour->set_active(0);
strlog->setValue(defSpot.strlog);
anglog->setValue(defSpot.anglog);
enaLMask->set_active(false);
// Enable all listeners
enableListener();
}
void LocallabLog::convertParamToNormal()
{
const LocallabParams::LocallabSpot defSpot;
// Disable all listeners
disableListener();
ciecam->set_active(true);
contq->setValue(defSpot.contq);
colorfl->setValue(defSpot.colorfl);
lightl->setValue(defSpot.lightl);
lightq->setValue(defSpot.lightq);
sursour->set_active(0);
enaLMask->set_active(false);
// Enable all listeners
enableListener();
}
void LocallabLog::showmaskLMethodChanged()
{
// If mask preview is activated, deactivate all other tool mask preview
if (locToolListener) {
locToolListener->resetOtherMaskView(this);
}
if (listener) {
listener->panelChanged(EvlocallabshowmaskMethod, "");
}
}
void LocallabLog::curveChanged(CurveEditor* ce)
{
if (isLocActivated && exp->getEnabled()) {
if (ce == HHmaskshapeL) {
if (listener) {
listener->panelChanged(EvlocallabHHmaskshapeL,
M("HISTORY_CUSTOMCURVE") + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (ce == LLmaskshapeL) {
if (listener) {
listener->panelChanged(EvlocallabLLmaskshapeL,
M("HISTORY_CUSTOMCURVE") + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (ce == CCmaskshapeL) {
if (listener) {
listener->panelChanged(EvlocallabCCmaskshapeL,
M("HISTORY_CUSTOMCURVE") + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (ce == LmaskshapeL) {
if (listener) {
listener->panelChanged(EvlocallabLmaskshapeL,
M("HISTORY_CUSTOMCURVE") + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (ce == LshapeL) {
if (listener) {
listener->panelChanged(EvlocallabLshapeL,
M("HISTORY_CUSTOMCURVE") + " (" + escapeHtmlChars(spotName) + ")");
}
}
}
}
void LocallabLog::setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited)
{
const int index = defParams->locallab.selspot;
@@ -4972,6 +5395,7 @@ void LocallabLog::setDefaults(const rtengine::procparams::ProcParams* defParams,
const LocallabParams::LocallabSpot& defSpot = defParams->locallab.spots.at(index);
// Set default value for adjuster widgets
repar->setDefault(defSpot.repar);
blackEv->setDefault(defSpot.blackEv);
whiteEv->setDefault(defSpot.whiteEv);
sourceGray->setDefault(defSpot.sourceGray);
@@ -4980,12 +5404,21 @@ void LocallabLog::setDefaults(const rtengine::procparams::ProcParams* defParams,
targetGray->setDefault(defSpot.targetGray);
catad->setDefault(defSpot.catad);
saturl->setDefault(defSpot.saturl);
lightl->setDefault(defSpot.lightl);
lightq->setDefault(defSpot.lightq);
contl->setDefault(defSpot.contl);
contq->setDefault(defSpot.contq);
colorfl->setDefault(defSpot.colorfl);
detail->setDefault(defSpot.detail);
baselog->setDefault(defSpot.baselog);
sensilog->setDefault((double)defSpot.sensilog);
strlog->setDefault(defSpot.strlog);
anglog->setDefault(defSpot.anglog);
blendmaskL->setDefault(defSpot.blendmaskL);
radmaskL->setDefault(defSpot.radmaskL);
chromaskL->setDefault(defSpot.chromaskL);
}
// Note: No need to manage pedited as batch mode is deactivated for Locallab
@@ -4994,6 +5427,13 @@ void LocallabLog::setDefaults(const rtengine::procparams::ProcParams* defParams,
void LocallabLog::adjusterChanged(Adjuster* a, double newval)
{
if (isLocActivated && exp->getEnabled()) {
if (a == repar) {
if (listener) {
listener->panelChanged(Evlocallabrepar,
repar->getTextValue() + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (a == blackEv) {
if (listener) {
listener->panelChanged(EvlocallabblackEv,
@@ -5050,6 +5490,21 @@ void LocallabLog::adjusterChanged(Adjuster* a, double newval)
}
}
if (a == lightl) {
if (listener) {
listener->panelChanged(Evlocallablightl,
lightl->getTextValue() + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (a == lightq) {
if (listener) {
listener->panelChanged(Evlocallablightq,
lightq->getTextValue() + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (a == contl) {
if (listener) {
listener->panelChanged(Evlocallabcontl,
@@ -5057,6 +5512,20 @@ void LocallabLog::adjusterChanged(Adjuster* a, double newval)
}
}
if (a == contq) {
if (listener) {
listener->panelChanged(Evlocallabcontq,
contq->getTextValue() + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (a == colorfl) {
if (listener) {
listener->panelChanged(Evlocallabcolorfl,
colorfl->getTextValue() + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (a == detail) {
if (listener) {
listener->panelChanged(Evlocallabdetail,
@@ -5091,6 +5560,29 @@ void LocallabLog::adjusterChanged(Adjuster* a, double newval)
anglog->getTextValue() + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (a == blendmaskL) {
if (listener) {
listener->panelChanged(EvLocallabblendmaskL,
blendmaskL->getTextValue() + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (a == radmaskL) {
if (listener) {
listener->panelChanged(EvLocallabradmaskL,
radmaskL->getTextValue() + " (" + escapeHtmlChars(spotName) + ")");
}
}
if (a == chromaskL) {
if (listener) {
listener->panelChanged(EvLocallabchromaskL,
chromaskL->getTextValue() + " (" + escapeHtmlChars(spotName) + ")");
}
}
}
}
@@ -5131,6 +5623,17 @@ void LocallabLog::enabledChanged()
}
}
void LocallabLog::sursourChanged()
{
if (isLocActivated && exp->getEnabled()) {
if (listener) {
listener->panelChanged(Evlocallabsursour,
sursour->get_active_text() + " (" + escapeHtmlChars(spotName) + ")");
}
}
}
void LocallabLog::surroundChanged()
{
if (isLocActivated && exp->getEnabled()) {
@@ -5161,27 +5664,32 @@ void LocallabLog::autocomputeToggled()
void LocallabLog::ciecamChanged()
{
/*
if(ciecam->get_active()){
/* sourceabs->set_sensitive(true);
sourceabs->set_sensitive(true);
targabs->set_sensitive(true);
catad->set_sensitive(true);
surrHBox->set_sensitive(true);
*/
sourceabs->show();
targabs->show();
catad->show();
saturl->show();
lightl->show();
contl->show();
contq->show();
surrHBox->show();
} else {
sourceabs->hide();
targabs->hide();
saturl->hide();
contl->hide();
lightl->hide();
contq->hide();
catad->hide();
surrHBox->hide();
}
*/
if (isLocActivated && exp->getEnabled()) {
if (listener) {
if (ciecam->get_active()) {
@@ -5211,6 +5719,25 @@ void LocallabLog::fullimageChanged()
}
}
void LocallabLog::updateMaskBackground(const double normChromar, const double normLumar, const double normHuer)
{
idle_register.add(
[this, normHuer, normLumar, normChromar]() -> bool {
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
// Update mask background
CCmaskshapeL->updateLocallabBackground(normChromar);
LLmaskshapeL->updateLocallabBackground(normLumar);
HHmaskshapeL->updateLocallabBackground(normHuer);
LmaskshapeL->updateLocallabBackground(normLumar);
return false;
}
);
}
void LocallabLog::AutograyChanged()
{
if (isLocActivated && exp->getEnabled()) {
@@ -5228,39 +5755,51 @@ void LocallabLog::AutograyChanged()
void LocallabLog::updateLogGUI2()
{
/*
if(ciecam->get_active()){
sourceabs->show();
targabs->show();
catad->show();
saturl->show();
contl->show();
lightl->show();
contq->show();
surrHBox->show();
} else {
sourceabs->hide();
targabs->hide();
catad->hide();
saturl->hide();
lightl->hide();
contl->hide();
contq->hide();
surrHBox->hide();
}
*/
}
void LocallabLog::updateLogGUI()
{
const int mode = complexity->get_active_row_number();
if (autocompute->get_active()) {
blackEv->set_sensitive(false);
whiteEv->set_sensitive(false);
sourceGray->set_sensitive(false);
sourceabs->set_sensitive(false);
if (mode == Expert || mode == Normal) {
sourceabs->set_sensitive(false);
} else {
sourceabs->hide();
}
} else {
blackEv->set_sensitive(true);
whiteEv->set_sensitive(true);
sourceGray->set_sensitive(true);
if(ciecam->get_active()){
if (mode == Expert || mode == Normal){
sourceabs->set_sensitive(true);
} else {
sourceabs->set_sensitive(false);
sourceabs->hide();
}
}
}
@@ -5467,7 +6006,7 @@ void LocallabMask::resetMaskView()
showmask_MethodConn.block(false);
}
void LocallabMask::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &maskMask)
void LocallabMask::getMaskView(int &colorMask, int &colorMaskinv, int &expMask, int &expMaskinv, int &shMask, int &shMaskinv, int &vibMask, int &softMask, int &blMask, int &tmMask, int &retiMask, int &sharMask, int &lcMask, int &cbMask, int &logMask, int &maskMask)
{
maskMask = showmask_Method->get_active_row_number();
}