Save GUI part of Mask CBDL - disabled
This commit is contained in:
parent
3398f7ae20
commit
585ed54c3c
@ -1563,6 +1563,146 @@ void LocretigainCurverab::Set(const std::vector<double> &curvePoints)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LocHHmaskcbCurve::LocHHmaskcbCurve() : sum(0.f) {};
|
||||||
|
|
||||||
|
void LocHHmaskcbCurve::Reset()
|
||||||
|
{
|
||||||
|
lutLocHHmaskcbCurve.reset();
|
||||||
|
sum = 0.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LocHHmaskcbCurve::Set(const Curve &pCurve)
|
||||||
|
{
|
||||||
|
if (pCurve.isIdentity()) {
|
||||||
|
Reset(); // raise this value if the quality suffers from this number of samples
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
lutLocHHmaskcbCurve(501); // raise this value if the quality suffers from this number of samples
|
||||||
|
sum = 0.f;
|
||||||
|
|
||||||
|
for (int i = 0; i < 501; i++) {
|
||||||
|
lutLocHHmaskcbCurve[i] = pCurve.getVal(double (i) / 500.);
|
||||||
|
|
||||||
|
if (lutLocHHmaskcbCurve[i] < 0.02f) {
|
||||||
|
lutLocHHmaskcbCurve[i] = 0.02f;
|
||||||
|
}
|
||||||
|
|
||||||
|
sum += lutLocHHmaskcbCurve[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
//lutLocHHCurve.dump("wav");
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocHHmaskcbCurve::Set(const std::vector<double> &curvePoints, bool & lhmascbutili)
|
||||||
|
{
|
||||||
|
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
||||||
|
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
||||||
|
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
|
||||||
|
ttcurve.setIdentityValue(0.);
|
||||||
|
lhmascbutili = true;
|
||||||
|
Set(ttcurve);
|
||||||
|
} else {
|
||||||
|
Reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LocLLmaskcbCurve::LocLLmaskcbCurve() : sum(0.f) {};
|
||||||
|
|
||||||
|
void LocLLmaskcbCurve::Reset()
|
||||||
|
{
|
||||||
|
lutLocLLmaskcbCurve.reset();
|
||||||
|
sum = 0.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocLLmaskcbCurve::Set(const Curve &pCurve)
|
||||||
|
{
|
||||||
|
if (pCurve.isIdentity()) {
|
||||||
|
Reset(); // raise this value if the quality suffers from this number of samples
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
lutLocLLmaskcbCurve(501); // raise this value if the quality suffers from this number of samples
|
||||||
|
sum = 0.f;
|
||||||
|
|
||||||
|
for (int i = 0; i < 501; i++) {
|
||||||
|
lutLocLLmaskcbCurve[i] = pCurve.getVal(double (i) / 500.);
|
||||||
|
|
||||||
|
if (lutLocLLmaskcbCurve[i] < 0.02f) {
|
||||||
|
lutLocLLmaskcbCurve[i] = 0.02f; //avoid 0.f for wavelet : under 0.01f quasi no action for each value
|
||||||
|
}
|
||||||
|
|
||||||
|
sum += lutLocLLmaskcbCurve[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
//lutLocHHCurve.dump("wav");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void LocLLmaskcbCurve::Set(const std::vector<double> &curvePoints, bool & llmascbutili)
|
||||||
|
{
|
||||||
|
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
||||||
|
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
||||||
|
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
|
||||||
|
ttcurve.setIdentityValue(0.);
|
||||||
|
llmascbutili = true;
|
||||||
|
Set(ttcurve);
|
||||||
|
} else {
|
||||||
|
Reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LocCCmaskcbCurve::LocCCmaskcbCurve() : sum(0.f) {};
|
||||||
|
|
||||||
|
void LocCCmaskcbCurve::Reset()
|
||||||
|
{
|
||||||
|
lutLocCCmaskcbCurve.reset();
|
||||||
|
sum = 0.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LocCCmaskcbCurve::Set(const Curve &pCurve)
|
||||||
|
{
|
||||||
|
if (pCurve.isIdentity()) {
|
||||||
|
Reset(); // raise this value if the quality suffers from this number of samples
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
lutLocCCmaskcbCurve(501); // raise this value if the quality suffers from this number of samples
|
||||||
|
sum = 0.f;
|
||||||
|
|
||||||
|
for (int i = 0; i < 501; i++) {
|
||||||
|
lutLocCCmaskcbCurve[i] = pCurve.getVal(double (i) / 500.);
|
||||||
|
|
||||||
|
if (lutLocCCmaskcbCurve[i] < 0.02f) {
|
||||||
|
lutLocCCmaskcbCurve[i] = 0.02f; //avoid 0.f for wavelet : under 0.01f quasi no action for each value
|
||||||
|
}
|
||||||
|
|
||||||
|
sum += lutLocCCmaskcbCurve[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
//lutLocHHCurve.dump("wav");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void LocCCmaskcbCurve::Set(const std::vector<double> &curvePoints, bool & lcmascbutili)
|
||||||
|
{
|
||||||
|
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
||||||
|
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
|
||||||
|
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
|
||||||
|
ttcurve.setIdentityValue(0.);
|
||||||
|
lcmascbutili = true;
|
||||||
|
Set(ttcurve);
|
||||||
|
} else {
|
||||||
|
Reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LocHHmaskSHCurve::LocHHmaskSHCurve() : sum(0.f) {};
|
LocHHmaskSHCurve::LocHHmaskSHCurve() : sum(0.f) {};
|
||||||
|
|
||||||
void LocHHmaskSHCurve::Reset()
|
void LocHHmaskSHCurve::Reset()
|
||||||
|
@ -647,6 +647,94 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class LocHHmaskcbCurve
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
LUTf lutLocHHmaskcbCurve; // 0xffff range
|
||||||
|
void Set(const Curve &pCurve);
|
||||||
|
|
||||||
|
public:
|
||||||
|
float sum;
|
||||||
|
|
||||||
|
virtual ~LocHHmaskcbCurve() {};
|
||||||
|
LocHHmaskcbCurve();
|
||||||
|
void Reset();
|
||||||
|
void Set(const std::vector<double> &curvePoints, bool & lhmascbutili);
|
||||||
|
float getSum() const
|
||||||
|
{
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
float operator[](float index) const
|
||||||
|
{
|
||||||
|
return lutLocHHmaskcbCurve[index];
|
||||||
|
}
|
||||||
|
operator bool (void) const
|
||||||
|
{
|
||||||
|
return lutLocHHmaskcbCurve;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class LocCCmaskcbCurve
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
LUTf lutLocCCmaskcbCurve; // 0xffff range
|
||||||
|
void Set(const Curve &pCurve);
|
||||||
|
|
||||||
|
public:
|
||||||
|
float sum;
|
||||||
|
|
||||||
|
virtual ~LocCCmaskcbCurve() {};
|
||||||
|
LocCCmaskcbCurve();
|
||||||
|
void Reset();
|
||||||
|
void Set(const std::vector<double> &curvePoints, bool & lcmascbutili);
|
||||||
|
float getSum() const
|
||||||
|
{
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
float operator[](float index) const
|
||||||
|
{
|
||||||
|
return lutLocCCmaskcbCurve[index];
|
||||||
|
}
|
||||||
|
operator bool (void) const
|
||||||
|
{
|
||||||
|
return lutLocCCmaskcbCurve;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class LocLLmaskcbCurve
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
LUTf lutLocLLmaskcbCurve; // 0xffff range
|
||||||
|
void Set(const Curve &pCurve);
|
||||||
|
|
||||||
|
public:
|
||||||
|
float sum;
|
||||||
|
|
||||||
|
virtual ~LocLLmaskcbCurve() {};
|
||||||
|
LocLLmaskcbCurve();
|
||||||
|
void Reset();
|
||||||
|
void Set(const std::vector<double> &curvePoints, bool & llmascbutili);
|
||||||
|
float getSum() const
|
||||||
|
{
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
float operator[](float index) const
|
||||||
|
{
|
||||||
|
return lutLocLLmaskcbCurve[index];
|
||||||
|
}
|
||||||
|
operator bool (void) const
|
||||||
|
{
|
||||||
|
return lutLocLLmaskcbCurve;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class LocHHmaskexpCurve
|
class LocHHmaskexpCurve
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
@ -696,6 +696,11 @@ enum ProcEventCode {
|
|||||||
Evlocallabchromaskcb = 666,
|
Evlocallabchromaskcb = 666,
|
||||||
Evlocallabgammaskcb = 667,
|
Evlocallabgammaskcb = 667,
|
||||||
Evlocallabslomaskcb = 668,
|
Evlocallabslomaskcb = 668,
|
||||||
|
EvlocallabCCmaskcbshape = 669,
|
||||||
|
EvlocallabLLmaskcbshape = 670,
|
||||||
|
EvlocallabHHmaskcbshape = 671,
|
||||||
|
EvLocallabEnacbMask = 672,
|
||||||
|
EvlocallabshowmaskcbMethod = 673,
|
||||||
NUMOFEVENTS
|
NUMOFEVENTS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2501,6 +2501,10 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
contresid(0),
|
contresid(0),
|
||||||
blurcbdl(0),
|
blurcbdl(0),
|
||||||
softradiuscb(0.0),
|
softradiuscb(0.0),
|
||||||
|
enacbMask(false),
|
||||||
|
CCmaskcbcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35 },
|
||||||
|
LLmaskcbcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35},
|
||||||
|
HHmaskcbcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35},
|
||||||
blendmaskcb(0),
|
blendmaskcb(0),
|
||||||
radmaskcb(10.0),
|
radmaskcb(10.0),
|
||||||
chromaskcb(0.0),
|
chromaskcb(0.0),
|
||||||
@ -2701,6 +2705,10 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
|||||||
&& contresid == other.contresid
|
&& contresid == other.contresid
|
||||||
&& blurcbdl == other.blurcbdl
|
&& blurcbdl == other.blurcbdl
|
||||||
&& softradiuscb == other.softradiuscb
|
&& softradiuscb == other.softradiuscb
|
||||||
|
&& enacbMask == other.enacbMask
|
||||||
|
&& CCmaskcbcurve == other.CCmaskcbcurve
|
||||||
|
&& LLmaskcbcurve == other.LLmaskcbcurve
|
||||||
|
&& HHmaskcbcurve == other.HHmaskcbcurve
|
||||||
&& blendmaskcb == other.blendmaskcb
|
&& blendmaskcb == other.blendmaskcb
|
||||||
&& radmaskcb == other.radmaskcb
|
&& radmaskcb == other.radmaskcb
|
||||||
&& chromaskcb == other.chromaskcb
|
&& chromaskcb == other.chromaskcb
|
||||||
@ -3843,6 +3851,10 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).contresid, "Locallab", "Contresid_" + std::to_string(i), spot.contresid, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).contresid, "Locallab", "Contresid_" + std::to_string(i), spot.contresid, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blurcbdl, "Locallab", "Blurcbdl_" + std::to_string(i), spot.blurcbdl, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blurcbdl, "Locallab", "Blurcbdl_" + std::to_string(i), spot.blurcbdl, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).softradiuscb, "Locallab", "Softradiuscb_" + std::to_string(i), spot.softradiuscb, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).softradiuscb, "Locallab", "Softradiuscb_" + std::to_string(i), spot.softradiuscb, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).enacbMask, "Locallab", "EnacbMask_" + std::to_string(i), spot.enacbMask, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).CCmaskcbcurve, "Locallab", "CCmaskcbCurve_" + std::to_string(i), spot.CCmaskcbcurve, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmaskcbcurve, "Locallab", "LLmaskcbCurve_" + std::to_string(i), spot.LLmaskcbcurve, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).HHmaskcbcurve, "Locallab", "HHmaskcbCurve_" + std::to_string(i), spot.HHmaskcbcurve, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blendmaskcb, "Locallab", "Blendmaskcb_" + std::to_string(i), spot.blendmaskcb, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blendmaskcb, "Locallab", "Blendmaskcb_" + std::to_string(i), spot.blendmaskcb, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).radmaskcb, "Locallab", "Radmaskcb_" + std::to_string(i), spot.radmaskcb, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).radmaskcb, "Locallab", "Radmaskcb_" + std::to_string(i), spot.radmaskcb, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chromaskcb, "Locallab", "Chromaskcb_" + std::to_string(i), spot.chromaskcb, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chromaskcb, "Locallab", "Chromaskcb_" + std::to_string(i), spot.chromaskcb, keyFile);
|
||||||
@ -5132,6 +5144,10 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Locallab", "Blurcbdl_" + std::to_string(i), pedited, spot.blurcbdl, spotEdited.blurcbdl);
|
assignFromKeyfile(keyFile, "Locallab", "Blurcbdl_" + std::to_string(i), pedited, spot.blurcbdl, spotEdited.blurcbdl);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Softradiuscb_" + std::to_string(i), pedited, spot.softradiuscb, spotEdited.softradiuscb);
|
assignFromKeyfile(keyFile, "Locallab", "Softradiuscb_" + std::to_string(i), pedited, spot.softradiuscb, spotEdited.softradiuscb);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Blendmaskcb_" + std::to_string(i), pedited, spot.blendmaskcb, spotEdited.blendmaskcb);
|
assignFromKeyfile(keyFile, "Locallab", "Blendmaskcb_" + std::to_string(i), pedited, spot.blendmaskcb, spotEdited.blendmaskcb);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "EnacbMask_" + std::to_string(i), pedited, spot.enacbMask, spotEdited.enacbMask);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "CCmaskcbCurve_" + std::to_string(i), pedited, spot.CCmaskcbcurve, spotEdited.CCmaskcbcurve);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "LLmaskcbCurve_" + std::to_string(i), pedited, spot.LLmaskcbcurve, spotEdited.LLmaskcbcurve);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "HHmaskcbCurve_" + std::to_string(i), pedited, spot.HHmaskcbcurve, spotEdited.HHmaskcbcurve);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Radmaskcb_" + std::to_string(i), pedited, spot.radmaskcb, spotEdited.radmaskcb);
|
assignFromKeyfile(keyFile, "Locallab", "Radmaskcb_" + std::to_string(i), pedited, spot.radmaskcb, spotEdited.radmaskcb);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Chromaskcb_" + std::to_string(i), pedited, spot.chromaskcb, spotEdited.chromaskcb);
|
assignFromKeyfile(keyFile, "Locallab", "Chromaskcb_" + std::to_string(i), pedited, spot.chromaskcb, spotEdited.chromaskcb);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Gammaskcb_" + std::to_string(i), pedited, spot.gammaskcb, spotEdited.gammaskcb);
|
assignFromKeyfile(keyFile, "Locallab", "Gammaskcb_" + std::to_string(i), pedited, spot.gammaskcb, spotEdited.gammaskcb);
|
||||||
|
@ -1102,6 +1102,10 @@ struct LocallabParams {
|
|||||||
int contresid;
|
int contresid;
|
||||||
int blurcbdl;
|
int blurcbdl;
|
||||||
double softradiuscb;
|
double softradiuscb;
|
||||||
|
bool enacbMask;
|
||||||
|
std::vector<double> CCmaskcbcurve;
|
||||||
|
std::vector<double> LLmaskcbcurve;
|
||||||
|
std::vector<double> HHmaskcbcurve;
|
||||||
int blendmaskcb;
|
int blendmaskcb;
|
||||||
double radmaskcb;
|
double radmaskcb;
|
||||||
double chromaskcb;
|
double chromaskcb;
|
||||||
|
@ -695,9 +695,12 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, // Evlocallabradmaskcb
|
LUMINANCECURVE, // Evlocallabradmaskcb
|
||||||
LUMINANCECURVE, //Evlocallabchromaskcb
|
LUMINANCECURVE, //Evlocallabchromaskcb
|
||||||
LUMINANCECURVE, //Evlocallabgammaskcb
|
LUMINANCECURVE, //Evlocallabgammaskcb
|
||||||
LUMINANCECURVE //Evlocallabslomaskcb
|
LUMINANCECURVE, //Evlocallabslomaskcb
|
||||||
|
LUMINANCECURVE, //EvlocallabCCmaskcbshape
|
||||||
|
LUMINANCECURVE, //EvlocallabLLmaskcbshape
|
||||||
|
LUMINANCECURVE, //EvlocallabHHmaskcbshape
|
||||||
|
LUMINANCECURVE, //EvLocallabEnacbMask
|
||||||
|
LUMINANCECURVE //EvlocallabshowmaskcbMethod
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -73,7 +73,9 @@ Locallab::Locallab():
|
|||||||
curveEditorGG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL"))),
|
curveEditorGG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL"))),
|
||||||
// Retinex
|
// Retinex
|
||||||
LocalcurveEditorgainT(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_TRANSMISSIONGAIN"))),
|
LocalcurveEditorgainT(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_TRANSMISSIONGAIN"))),
|
||||||
|
//CBDL
|
||||||
|
maskcbCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK"))),
|
||||||
|
|
||||||
// Adjuster widgets
|
// Adjuster widgets
|
||||||
// Color & Light
|
// Color & Light
|
||||||
lightness(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LIGHTNESS"), -100, 100, 1, 0))),
|
lightness(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LIGHTNESS"), -100, 100, 1, 0))),
|
||||||
@ -207,7 +209,9 @@ Locallab::Locallab():
|
|||||||
inversret(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_INVERS")))),
|
inversret(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_INVERS")))),
|
||||||
// Sharpening
|
// Sharpening
|
||||||
inverssha(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_INVERS")))),
|
inverssha(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_INVERS")))),
|
||||||
|
//CBDL
|
||||||
|
enacbMask(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ENABLE_MASK")))),
|
||||||
|
|
||||||
// ComboBox widgets
|
// ComboBox widgets
|
||||||
// Color & Light
|
// Color & Light
|
||||||
qualitycurveMethod(Gtk::manage(new MyComboBoxText())),
|
qualitycurveMethod(Gtk::manage(new MyComboBoxText())),
|
||||||
@ -221,6 +225,8 @@ Locallab::Locallab():
|
|||||||
blurMethod(Gtk::manage(new MyComboBoxText())),
|
blurMethod(Gtk::manage(new MyComboBoxText())),
|
||||||
// Retinex
|
// Retinex
|
||||||
retinexMethod(Gtk::manage(new MyComboBoxText())),
|
retinexMethod(Gtk::manage(new MyComboBoxText())),
|
||||||
|
//CBDL
|
||||||
|
showmaskcbMethod(Gtk::manage(new MyComboBoxText())),
|
||||||
|
|
||||||
// ThresholdAdjuster widgets
|
// ThresholdAdjuster widgets
|
||||||
// Vibrance
|
// Vibrance
|
||||||
@ -234,6 +240,7 @@ Locallab::Locallab():
|
|||||||
maskcolFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SHOW")))),
|
maskcolFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SHOW")))),
|
||||||
maskexpFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SHOW")))),
|
maskexpFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SHOW")))),
|
||||||
maskSHFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SHOW")))),
|
maskSHFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SHOW")))),
|
||||||
|
maskcbFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SHOW")))),
|
||||||
gridFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LABGRID")))),
|
gridFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LABGRID")))),
|
||||||
residFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_RESID")))),
|
residFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_RESID")))),
|
||||||
|
|
||||||
@ -941,6 +948,44 @@ Locallab::Locallab():
|
|||||||
gammaskcb->setAdjusterListener(this);
|
gammaskcb->setAdjusterListener(this);
|
||||||
slomaskcb->setAdjusterListener(this);
|
slomaskcb->setAdjusterListener(this);
|
||||||
|
|
||||||
|
enacbMaskConn = enacbMask->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::enacbMaskChanged));
|
||||||
|
|
||||||
|
showmaskcbMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||||
|
showmaskcbMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
||||||
|
showmaskcbMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
|
||||||
|
showmaskcbMethod->append(M("TP_LOCALLAB_SHOWMASK"));
|
||||||
|
showmaskcbMethod->append(M("TP_LOCALLAB_PREVIEWSEL"));
|
||||||
|
|
||||||
|
|
||||||
|
showmaskcbMethod->set_active(0);
|
||||||
|
if(showtooltip) showmaskcbMethod->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKCOL_TOOLTIP"));
|
||||||
|
showmaskcbMethodConn = showmaskcbMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::showmaskcbMethodChanged));
|
||||||
|
|
||||||
|
maskcbCurveEditorG->setCurveListener(this);
|
||||||
|
|
||||||
|
CCmaskcbshape = static_cast<FlatCurveEditor*>(maskcbCurveEditorG->addCurve(CT_Flat, "C(C)", nullptr, false, false));
|
||||||
|
CCmaskcbshape->setIdentityValue(0.);
|
||||||
|
CCmaskcbshape->setResetCurve(FlatCurveType(defSpot.CCmaskcbcurve.at(0)), defSpot.CCmaskcbcurve);
|
||||||
|
if(showtooltip) CCmaskcbshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
|
||||||
|
CCmaskcbshape->setBottomBarColorProvider(this, 7);
|
||||||
|
|
||||||
|
LLmaskcbshape = static_cast<FlatCurveEditor*>(maskcbCurveEditorG->addCurve(CT_Flat, "L(L)", nullptr, false, false));
|
||||||
|
LLmaskcbshape->setIdentityValue(0.);
|
||||||
|
LLmaskcbshape->setResetCurve(FlatCurveType(defSpot.LLmaskcbcurve.at(0)), defSpot.LLmaskcbcurve);
|
||||||
|
if(showtooltip) LLmaskcbshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
|
||||||
|
LLmaskcbshape->setBottomBarBgGradient(mllshape);
|
||||||
|
|
||||||
|
HHmaskcbshape = static_cast<FlatCurveEditor *>(maskcbCurveEditorG->addCurve(CT_Flat, "LC(H)", nullptr, false, true));
|
||||||
|
HHmaskcbshape->setIdentityValue(0.);
|
||||||
|
HHmaskcbshape->setResetCurve(FlatCurveType(defSpot.HHmaskcbcurve.at(0)), defSpot.HHmaskcbcurve);
|
||||||
|
if(showtooltip) HHmaskcbshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
|
||||||
|
HHmaskcbshape->setCurveColorProvider(this, 6);
|
||||||
|
HHmaskcbshape->setBottomBarColorProvider(this, 6);
|
||||||
|
|
||||||
|
maskcbCurveEditorG->curveListComplete();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ToolParamBlock* const cbdlBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const cbdlBox = Gtk::manage(new ToolParamBlock());
|
||||||
Gtk::HBox* buttonBox = Gtk::manage(new Gtk::HBox(true, 10));
|
Gtk::HBox* buttonBox = Gtk::manage(new Gtk::HBox(true, 10));
|
||||||
buttonBox->pack_start(*lumacontrastMinusButton);
|
buttonBox->pack_start(*lumacontrastMinusButton);
|
||||||
@ -955,6 +1000,18 @@ Locallab::Locallab():
|
|||||||
cbdlBox->pack_start(*multiplier[i]);
|
cbdlBox->pack_start(*multiplier[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maskcbFrame->set_label_align(0.025, 0.5);
|
||||||
|
ToolParamBlock* const maskcbBox = Gtk::manage(new ToolParamBlock());
|
||||||
|
maskcbBox->pack_start(*showmaskcbMethod, Gtk::PACK_SHRINK, 4);
|
||||||
|
maskcbBox->pack_start(*enacbMask, Gtk::PACK_SHRINK, 0);
|
||||||
|
maskcbBox->pack_start(*maskcbCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||||
|
maskcbBox->pack_start(*blendmaskcb, Gtk::PACK_SHRINK, 0);
|
||||||
|
maskcbBox->pack_start(*radmaskcb, Gtk::PACK_SHRINK, 0);
|
||||||
|
maskcbBox->pack_start(*chromaskcb, Gtk::PACK_SHRINK, 0);
|
||||||
|
maskcbBox->pack_start(*gammaskcb, Gtk::PACK_SHRINK, 0);
|
||||||
|
maskcbBox->pack_start(*slomaskcb, Gtk::PACK_SHRINK, 0);
|
||||||
|
maskcbFrame->add(*maskcbBox);
|
||||||
|
|
||||||
Gtk::HSeparator *separator = Gtk::manage(new Gtk::HSeparator());
|
Gtk::HSeparator *separator = Gtk::manage(new Gtk::HSeparator());
|
||||||
cbdlBox->pack_start(*separator, Gtk::PACK_SHRINK, 2);
|
cbdlBox->pack_start(*separator, Gtk::PACK_SHRINK, 2);
|
||||||
cbdlBox->pack_start(*chromacbdl);
|
cbdlBox->pack_start(*chromacbdl);
|
||||||
@ -968,11 +1025,7 @@ Locallab::Locallab():
|
|||||||
cbdlBox->pack_start(*residFrame);
|
cbdlBox->pack_start(*residFrame);
|
||||||
cbdlBox->pack_start(*softradiuscb);
|
cbdlBox->pack_start(*softradiuscb);
|
||||||
cbdlBox->pack_start(*sensicb);
|
cbdlBox->pack_start(*sensicb);
|
||||||
//cbdlBox->pack_start(*blendmaskcb);
|
// cbdlBox->pack_start(*maskcbFrame);
|
||||||
//cbdlBox->pack_start(*radmaskcb);
|
|
||||||
//cbdlBox->pack_start(*chromaskcb);
|
|
||||||
//cbdlBox->pack_start(*gammaskcb);
|
|
||||||
//cbdlBox->pack_start(*slomaskcb);
|
|
||||||
expcbdl->add(*cbdlBox);
|
expcbdl->add(*cbdlBox);
|
||||||
expcbdl->setLevel(2);
|
expcbdl->setLevel(2);
|
||||||
|
|
||||||
@ -1200,6 +1253,11 @@ void Locallab::refChanged(double huer, double lumar, double chromar)
|
|||||||
LLmaskSHshape->updateLocallabBackground(normLumar);
|
LLmaskSHshape->updateLocallabBackground(normLumar);
|
||||||
HHmaskSHshape->updateLocallabBackground(normHuer);
|
HHmaskSHshape->updateLocallabBackground(normHuer);
|
||||||
|
|
||||||
|
// Update CBDL mask background
|
||||||
|
CCmaskcbshape->updateLocallabBackground(normChromar);
|
||||||
|
LLmaskcbshape->updateLocallabBackground(normLumar);
|
||||||
|
HHmaskcbshape->updateLocallabBackground(normHuer);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -1889,6 +1947,11 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pp->locallab.spots.at(pp->locallab.selspot).contresid = contresid->getIntValue();
|
pp->locallab.spots.at(pp->locallab.selspot).contresid = contresid->getIntValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).blurcbdl = blurcbdl->getIntValue();
|
pp->locallab.spots.at(pp->locallab.selspot).blurcbdl = blurcbdl->getIntValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).softradiuscb = softradiuscb->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).softradiuscb = softradiuscb->getValue();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).enacbMask = enacbMask->get_active();
|
||||||
|
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).LLmaskcbcurve = LLmaskcbshape->getCurve();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).CCmaskcbcurve = CCmaskcbshape->getCurve();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).HHmaskcbcurve = HHmaskcbshape->getCurve();
|
||||||
|
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).blendmaskcb = blendmaskcb->getIntValue();
|
pp->locallab.spots.at(pp->locallab.selspot).blendmaskcb = blendmaskcb->getIntValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).radmaskcb = radmaskcb->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).radmaskcb = radmaskcb->getValue();
|
||||||
@ -2081,6 +2144,11 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pe->locallab.spots.at(pp->locallab.selspot).contresid = pe->locallab.spots.at(pp->locallab.selspot).contresid || contresid->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).contresid = pe->locallab.spots.at(pp->locallab.selspot).contresid || contresid->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).blurcbdl = pe->locallab.spots.at(pp->locallab.selspot).blurcbdl || blurcbdl->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).blurcbdl = pe->locallab.spots.at(pp->locallab.selspot).blurcbdl || blurcbdl->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).softradiuscb = pe->locallab.spots.at(pp->locallab.selspot).softradiuscb || softradiuscb->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).softradiuscb = pe->locallab.spots.at(pp->locallab.selspot).softradiuscb || softradiuscb->getEditedState();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).enacbMask = pe->locallab.spots.at(pp->locallab.selspot).enacbMask || !enacbMask->get_inconsistent();
|
||||||
|
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).CCmaskcbcurve = pe->locallab.spots.at(pp->locallab.selspot).CCmaskcbcurve || !CCmaskcbshape->isUnChanged();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).LLmaskcbcurve = pe->locallab.spots.at(pp->locallab.selspot).LLmaskcbcurve || !LLmaskcbshape->isUnChanged();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).HHmaskcbcurve = pe->locallab.spots.at(pp->locallab.selspot).HHmaskcbcurve || !HHmaskcbshape->isUnChanged();
|
||||||
|
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).blendmaskcb = pe->locallab.spots.at(pp->locallab.selspot).blendmaskcb || blendmaskcb->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).blendmaskcb = pe->locallab.spots.at(pp->locallab.selspot).blendmaskcb || blendmaskcb->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).radmaskcb = pe->locallab.spots.at(pp->locallab.selspot).radmaskcb || radmaskcb->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).radmaskcb = pe->locallab.spots.at(pp->locallab.selspot).radmaskcb || radmaskcb->getEditedState();
|
||||||
@ -2276,6 +2344,11 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pedited->locallab.spots.at(pp->locallab.selspot).blurcbdl = pedited->locallab.spots.at(pp->locallab.selspot).blurcbdl || blurcbdl->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).blurcbdl = pedited->locallab.spots.at(pp->locallab.selspot).blurcbdl || blurcbdl->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).softradiuscb = pedited->locallab.spots.at(pp->locallab.selspot).softradiuscb || softradiuscb->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).softradiuscb = pedited->locallab.spots.at(pp->locallab.selspot).softradiuscb || softradiuscb->getEditedState();
|
||||||
|
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).enacbMask = pedited->locallab.spots.at(pp->locallab.selspot).enacbMask || !enacbMask->get_inconsistent();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).CCmaskcbcurve = pedited->locallab.spots.at(pp->locallab.selspot).CCmaskcbcurve || !CCmaskcbshape->isUnChanged();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).LLmaskcbcurve = pedited->locallab.spots.at(pp->locallab.selspot).LLmaskcbcurve || !LLmaskcbshape->isUnChanged();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).HHmaskcbcurve = pedited->locallab.spots.at(pp->locallab.selspot).HHmaskcbcurve || !HHmaskcbshape->isUnChanged();
|
||||||
|
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcb = pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcb || blendmaskcb->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcb = pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcb || blendmaskcb->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).radmaskcb = pedited->locallab.spots.at(pp->locallab.selspot).radmaskcb || radmaskcb->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).radmaskcb = pedited->locallab.spots.at(pp->locallab.selspot).radmaskcb || radmaskcb->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).chromaskcb = pedited->locallab.spots.at(pp->locallab.selspot).chromaskcb || chromaskcb->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).chromaskcb = pedited->locallab.spots.at(pp->locallab.selspot).chromaskcb || chromaskcb->getEditedState();
|
||||||
@ -2492,6 +2565,28 @@ void Locallab::curveChanged(CurveEditor* ce)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//CBDL
|
||||||
|
if (getEnabled() && expcbdl->getEnabled()) {
|
||||||
|
|
||||||
|
if (ce == CCmaskcbshape) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(EvlocallabCCmaskcbshape, M("HISTORY_CUSTOMCURVE"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ce == LLmaskcbshape) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(EvlocallabLLmaskcbshape, M("HISTORY_CUSTOMCURVE"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ce == HHmaskcbshape) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(EvlocallabHHmaskcbshape, M("HISTORY_CUSTOMCURVE"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Vibrance
|
// Vibrance
|
||||||
if (getEnabled() && expvibrance->getEnabled()) {
|
if (getEnabled() && expvibrance->getEnabled()) {
|
||||||
if (ce == skinTonesCurve) {
|
if (ce == skinTonesCurve) {
|
||||||
@ -2598,6 +2693,20 @@ void Locallab::showmaskSHMethodChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Locallab::showmaskcbMethodChanged()
|
||||||
|
{
|
||||||
|
// printf("showmaskSHMethodChanged\n");
|
||||||
|
|
||||||
|
// When one mask state is changed, other masks are deactivated
|
||||||
|
disableListener();
|
||||||
|
showmaskcbMethod->set_active(0);
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(EvlocallabshowmaskcbMethod, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Locallab::resetMaskVisibility()
|
void Locallab::resetMaskVisibility()
|
||||||
{
|
{
|
||||||
// printf("resetMaskVisibility\n");
|
// printf("resetMaskVisibility\n");
|
||||||
@ -2606,6 +2715,7 @@ void Locallab::resetMaskVisibility()
|
|||||||
showmaskcolMethod->set_active(0);
|
showmaskcolMethod->set_active(0);
|
||||||
showmaskexpMethod->set_active(0);
|
showmaskexpMethod->set_active(0);
|
||||||
showmaskSHMethod->set_active(0);
|
showmaskSHMethod->set_active(0);
|
||||||
|
showmaskcbMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2615,6 +2725,7 @@ Locallab::llMaskVisibility* Locallab::getMaskVisibility()
|
|||||||
maskStruct->colorMask = showmaskcolMethod->get_active_row_number();
|
maskStruct->colorMask = showmaskcolMethod->get_active_row_number();
|
||||||
maskStruct->expMask = showmaskexpMethod->get_active_row_number();
|
maskStruct->expMask = showmaskexpMethod->get_active_row_number();
|
||||||
maskStruct->SHMask = showmaskSHMethod->get_active_row_number();
|
maskStruct->SHMask = showmaskSHMethod->get_active_row_number();
|
||||||
|
maskStruct->cbMask = showmaskcbMethod->get_active_row_number();
|
||||||
return maskStruct;
|
return maskStruct;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2690,6 +2801,30 @@ void Locallab::enaSHMaskChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Locallab::enacbMaskChanged()
|
||||||
|
{
|
||||||
|
// printf("enacbMaskChanged\n");
|
||||||
|
|
||||||
|
if (multiImage) {
|
||||||
|
if (enacbMask->get_inconsistent()) {
|
||||||
|
enacbMask->set_inconsistent(false);
|
||||||
|
enacbMaskConn.block(true);
|
||||||
|
enacbMask->set_active(false);
|
||||||
|
enacbMaskConn.block(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getEnabled() && expcbdl->getEnabled()) {
|
||||||
|
if (listener) {
|
||||||
|
if (enacbMask->get_active()) {
|
||||||
|
listener->panelChanged(EvLocallabEnacbMask, M("GENERAL_ENABLED"));
|
||||||
|
} else {
|
||||||
|
listener->panelChanged(EvLocallabEnacbMask, M("GENERAL_DISABLED"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Locallab::inversChanged()
|
void Locallab::inversChanged()
|
||||||
{
|
{
|
||||||
// printf("inversChanged\n");
|
// printf("inversChanged\n");
|
||||||
@ -4272,6 +4407,7 @@ void Locallab::setBatchMode(bool batchMode)
|
|||||||
showmaskcolMethod->hide();
|
showmaskcolMethod->hide();
|
||||||
showmaskexpMethod->hide();
|
showmaskexpMethod->hide();
|
||||||
showmaskSHMethod->hide();
|
showmaskSHMethod->hide();
|
||||||
|
showmaskcbMethod->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<double> Locallab::getCurvePoints(ThresholdSelector* tAdjuster) const
|
std::vector<double> Locallab::getCurvePoints(ThresholdSelector* tAdjuster) const
|
||||||
@ -4449,6 +4585,8 @@ void Locallab::enableListener()
|
|||||||
enablecontrastConn.block(false);
|
enablecontrastConn.block(false);
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
enablecbdlConn.block(false);
|
enablecbdlConn.block(false);
|
||||||
|
enacbMaskConn.block(false);
|
||||||
|
showmaskcbMethodConn.block(false);
|
||||||
// Denoise
|
// Denoise
|
||||||
enabledenoiConn.block(false);
|
enabledenoiConn.block(false);
|
||||||
}
|
}
|
||||||
@ -4500,6 +4638,8 @@ void Locallab::disableListener()
|
|||||||
enablecontrastConn.block(true);
|
enablecontrastConn.block(true);
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
enablecbdlConn.block(true);
|
enablecbdlConn.block(true);
|
||||||
|
enacbMaskConn.block(true);
|
||||||
|
showmaskSHMethodConn.block(true);
|
||||||
// Denoise
|
// Denoise
|
||||||
enabledenoiConn.block(true);
|
enabledenoiConn.block(true);
|
||||||
}
|
}
|
||||||
@ -4693,6 +4833,10 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
chromaskcb->setValue(pp->locallab.spots.at(index).chromaskcb);
|
chromaskcb->setValue(pp->locallab.spots.at(index).chromaskcb);
|
||||||
gammaskcb->setValue(pp->locallab.spots.at(index).gammaskcb);
|
gammaskcb->setValue(pp->locallab.spots.at(index).gammaskcb);
|
||||||
slomaskcb->setValue(pp->locallab.spots.at(index).slomaskcb);
|
slomaskcb->setValue(pp->locallab.spots.at(index).slomaskcb);
|
||||||
|
enacbMask->set_active(pp->locallab.spots.at(index).enacbMask);
|
||||||
|
CCmaskcbshape->setCurve(pp->locallab.spots.at(index).CCmaskcbcurve);
|
||||||
|
LLmaskcbshape->setCurve(pp->locallab.spots.at(index).LLmaskcbcurve);
|
||||||
|
HHmaskcbshape->setCurve(pp->locallab.spots.at(index).HHmaskcbcurve);
|
||||||
|
|
||||||
// Denoise
|
// Denoise
|
||||||
expdenoi->setEnabled(pp->locallab.spots.at(index).expdenoi);
|
expdenoi->setEnabled(pp->locallab.spots.at(index).expdenoi);
|
||||||
@ -4920,6 +5064,10 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
chromaskcb->setEditedState(spotState->chromaskcb ? Edited : UnEdited);
|
chromaskcb->setEditedState(spotState->chromaskcb ? Edited : UnEdited);
|
||||||
gammaskcb->setEditedState(spotState->gammaskcb ? Edited : UnEdited);
|
gammaskcb->setEditedState(spotState->gammaskcb ? Edited : UnEdited);
|
||||||
slomaskcb->setEditedState(spotState->slomaskcb ? Edited : UnEdited);
|
slomaskcb->setEditedState(spotState->slomaskcb ? Edited : UnEdited);
|
||||||
|
enacbMask->set_inconsistent(multiImage && !spotState->enacbMask);
|
||||||
|
CCmaskcbshape->setUnChanged(!spotState->CCmaskcbcurve);
|
||||||
|
LLmaskcbshape->setUnChanged(!spotState->LLmaskcbcurve);
|
||||||
|
HHmaskcbshape->setUnChanged(!spotState->HHmaskcbcurve);
|
||||||
|
|
||||||
// Denoise
|
// Denoise
|
||||||
expdenoi->set_inconsistent(!spotState->expdenoi);
|
expdenoi->set_inconsistent(!spotState->expdenoi);
|
||||||
|
@ -92,7 +92,12 @@ private:
|
|||||||
// Retinex
|
// Retinex
|
||||||
CurveEditorGroup* const LocalcurveEditorgainT;
|
CurveEditorGroup* const LocalcurveEditorgainT;
|
||||||
FlatCurveEditor* cTgainshape;
|
FlatCurveEditor* cTgainshape;
|
||||||
|
//Cbdl
|
||||||
|
CurveEditorGroup* const maskcbCurveEditorG;
|
||||||
|
FlatCurveEditor* CCmaskcbshape;
|
||||||
|
FlatCurveEditor* LLmaskcbshape;
|
||||||
|
FlatCurveEditor* HHmaskcbshape;
|
||||||
|
|
||||||
// Adjuster widgets
|
// Adjuster widgets
|
||||||
// Color & Light
|
// Color & Light
|
||||||
Adjuster* const lightness;
|
Adjuster* const lightness;
|
||||||
@ -237,7 +242,10 @@ private:
|
|||||||
// Sharpening
|
// Sharpening
|
||||||
Gtk::CheckButton* const inverssha;
|
Gtk::CheckButton* const inverssha;
|
||||||
sigc::connection inversshaConn;
|
sigc::connection inversshaConn;
|
||||||
|
//CBDL
|
||||||
|
Gtk::CheckButton* const enacbMask;
|
||||||
|
sigc::connection enacbMaskConn;
|
||||||
|
|
||||||
// ComboBox widgets
|
// ComboBox widgets
|
||||||
// Color & Light
|
// Color & Light
|
||||||
MyComboBoxText* const qualitycurveMethod;
|
MyComboBoxText* const qualitycurveMethod;
|
||||||
@ -258,7 +266,9 @@ private:
|
|||||||
// Retinex
|
// Retinex
|
||||||
MyComboBoxText* const retinexMethod;
|
MyComboBoxText* const retinexMethod;
|
||||||
sigc::connection retinexMethodConn;
|
sigc::connection retinexMethodConn;
|
||||||
|
//CBDL
|
||||||
|
MyComboBoxText* const showmaskcbMethod;
|
||||||
|
sigc::connection showmaskcbMethodConn;
|
||||||
// ThresholdAdjuster widgets
|
// ThresholdAdjuster widgets
|
||||||
// Vibrance
|
// Vibrance
|
||||||
ThresholdAdjuster* const psThreshold;
|
ThresholdAdjuster* const psThreshold;
|
||||||
@ -272,6 +282,7 @@ private:
|
|||||||
Gtk::Frame* maskcolFrame;
|
Gtk::Frame* maskcolFrame;
|
||||||
Gtk::Frame* maskexpFrame;
|
Gtk::Frame* maskexpFrame;
|
||||||
Gtk::Frame* maskSHFrame;
|
Gtk::Frame* maskSHFrame;
|
||||||
|
Gtk::Frame* maskcbFrame;
|
||||||
Gtk::Frame* gridFrame;
|
Gtk::Frame* gridFrame;
|
||||||
Gtk::Frame* residFrame;
|
Gtk::Frame* residFrame;
|
||||||
LabGrid *labgrid;
|
LabGrid *labgrid;
|
||||||
@ -317,7 +328,8 @@ private:
|
|||||||
void inversretChanged();
|
void inversretChanged();
|
||||||
// Sharpening
|
// Sharpening
|
||||||
void inversshaChanged();
|
void inversshaChanged();
|
||||||
|
//CBDL
|
||||||
|
void enacbMaskChanged();
|
||||||
// ComboBox event functions
|
// ComboBox event functions
|
||||||
// Color & Light
|
// Color & Light
|
||||||
void qualitycurveMethodChanged();
|
void qualitycurveMethodChanged();
|
||||||
@ -331,7 +343,8 @@ private:
|
|||||||
void blurMethodChanged();
|
void blurMethodChanged();
|
||||||
// Retinex
|
// Retinex
|
||||||
void retinexMethodChanged();
|
void retinexMethodChanged();
|
||||||
|
//CBDL
|
||||||
|
void showmaskcbMethodChanged();
|
||||||
// Other widgets event functions
|
// Other widgets event functions
|
||||||
void lumacontrastMinusPressed();
|
void lumacontrastMinusPressed();
|
||||||
void lumaneutralPressed();
|
void lumaneutralPressed();
|
||||||
@ -366,6 +379,7 @@ public:
|
|||||||
int colorMask;
|
int colorMask;
|
||||||
int expMask;
|
int expMask;
|
||||||
int SHMask;
|
int SHMask;
|
||||||
|
int cbMask;
|
||||||
};
|
};
|
||||||
|
|
||||||
void resetMaskVisibility();
|
void resetMaskVisibility();
|
||||||
|
@ -1100,6 +1100,10 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
locallab.spots.at(j).gammaskcb = locallab.spots.at(j).gammaskcb && pSpot.gammaskcb == otherSpot.gammaskcb;
|
locallab.spots.at(j).gammaskcb = locallab.spots.at(j).gammaskcb && pSpot.gammaskcb == otherSpot.gammaskcb;
|
||||||
locallab.spots.at(j).slomaskcb = locallab.spots.at(j).slomaskcb && pSpot.slomaskcb == otherSpot.slomaskcb;
|
locallab.spots.at(j).slomaskcb = locallab.spots.at(j).slomaskcb && pSpot.slomaskcb == otherSpot.slomaskcb;
|
||||||
locallab.spots.at(j).softradiuscb = locallab.spots.at(j).softradiuscb && pSpot.softradiuscb == otherSpot.softradiuscb;
|
locallab.spots.at(j).softradiuscb = locallab.spots.at(j).softradiuscb && pSpot.softradiuscb == otherSpot.softradiuscb;
|
||||||
|
locallab.spots.at(j).enacbMask = locallab.spots.at(j).enacbMask && pSpot.enacbMask == otherSpot.enacbMask;
|
||||||
|
locallab.spots.at(j).CCmaskcbcurve = locallab.spots.at(j).CCmaskcbcurve && pSpot.CCmaskcbcurve == otherSpot.CCmaskcbcurve;
|
||||||
|
locallab.spots.at(j).LLmaskcbcurve = locallab.spots.at(j).LLmaskcbcurve && pSpot.LLmaskcbcurve == otherSpot.LLmaskcbcurve;
|
||||||
|
locallab.spots.at(j).HHmaskcbcurve = locallab.spots.at(j).HHmaskcbcurve && pSpot.HHmaskcbcurve == otherSpot.HHmaskcbcurve;
|
||||||
// Denoise
|
// Denoise
|
||||||
locallab.spots.at(j).expdenoi = locallab.spots.at(j).expdenoi && pSpot.expdenoi == otherSpot.expdenoi;
|
locallab.spots.at(j).expdenoi = locallab.spots.at(j).expdenoi && pSpot.expdenoi == otherSpot.expdenoi;
|
||||||
locallab.spots.at(j).noiselumf = locallab.spots.at(j).noiselumf && pSpot.noiselumf == otherSpot.noiselumf;
|
locallab.spots.at(j).noiselumf = locallab.spots.at(j).noiselumf && pSpot.noiselumf == otherSpot.noiselumf;
|
||||||
@ -3177,6 +3181,22 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.locallab.spots.at(i).slomaskcb = mods.locallab.spots.at(i).slomaskcb;
|
toEdit.locallab.spots.at(i).slomaskcb = mods.locallab.spots.at(i).slomaskcb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).enacbMask) {
|
||||||
|
toEdit.locallab.spots.at(i).enacbMask = mods.locallab.spots.at(i).enacbMask;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).CCmaskcbcurve) {
|
||||||
|
toEdit.locallab.spots.at(i).CCmaskcbcurve = mods.locallab.spots.at(i).CCmaskcbcurve;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).LLmaskcbcurve) {
|
||||||
|
toEdit.locallab.spots.at(i).LLmaskcbcurve = mods.locallab.spots.at(i).LLmaskcbcurve;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).HHmaskcbcurve) {
|
||||||
|
toEdit.locallab.spots.at(i).HHmaskcbcurve = mods.locallab.spots.at(i).HHmaskcbcurve;
|
||||||
|
}
|
||||||
|
|
||||||
if (locallab.spots.at(i).softradiuscb) {
|
if (locallab.spots.at(i).softradiuscb) {
|
||||||
toEdit.locallab.spots.at(i).softradiuscb = mods.locallab.spots.at(i).softradiuscb;
|
toEdit.locallab.spots.at(i).softradiuscb = mods.locallab.spots.at(i).softradiuscb;
|
||||||
}
|
}
|
||||||
@ -4344,6 +4364,10 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
|||||||
gammaskcb(v),
|
gammaskcb(v),
|
||||||
slomaskcb(v),
|
slomaskcb(v),
|
||||||
softradiuscb(v),
|
softradiuscb(v),
|
||||||
|
enacbMask(v),
|
||||||
|
CCmaskcbcurve(v),
|
||||||
|
LLmaskcbcurve(v),
|
||||||
|
HHmaskcbcurve(v),
|
||||||
// Denoise
|
// Denoise
|
||||||
expdenoi(v),
|
expdenoi(v),
|
||||||
noiselumf(v),
|
noiselumf(v),
|
||||||
@ -4536,6 +4560,10 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
|||||||
gammaskcb = v;
|
gammaskcb = v;
|
||||||
slomaskcb = v;
|
slomaskcb = v;
|
||||||
softradiuscb = v;
|
softradiuscb = v;
|
||||||
|
enacbMask = v;
|
||||||
|
CCmaskcbcurve = v;
|
||||||
|
LLmaskcbcurve = v;
|
||||||
|
HHmaskcbcurve = v;
|
||||||
// Denoise
|
// Denoise
|
||||||
expdenoi = v;
|
expdenoi = v;
|
||||||
noiselumf = v;
|
noiselumf = v;
|
||||||
|
@ -523,6 +523,10 @@ public:
|
|||||||
bool gammaskcb;
|
bool gammaskcb;
|
||||||
bool slomaskcb;
|
bool slomaskcb;
|
||||||
bool softradiuscb;
|
bool softradiuscb;
|
||||||
|
bool enacbMask;
|
||||||
|
bool CCmaskcbcurve;
|
||||||
|
bool LLmaskcbcurve;
|
||||||
|
bool HHmaskcbcurve;
|
||||||
|
|
||||||
// Denoise
|
// Denoise
|
||||||
bool expdenoi;
|
bool expdenoi;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user