Fixed bug in color LC(H) - add LC(H) for exposure - add blend for mask color
This commit is contained in:
parent
89ec57ea73
commit
eec28d637f
@ -866,6 +866,8 @@ HISTORY_MSG_610;Local - Exp Mask L
|
|||||||
HISTORY_MSG_611;Local - Color Mask H
|
HISTORY_MSG_611;Local - Color Mask H
|
||||||
HISTORY_MSG_612;Local - Color Structure
|
HISTORY_MSG_612;Local - Color Structure
|
||||||
HISTORY_MSG_613;Local - Exp Structure
|
HISTORY_MSG_613;Local - Exp Structure
|
||||||
|
HISTORY_MSG_614;Local - Exp Mask H
|
||||||
|
HISTORY_MSG_615;Local - Blend color
|
||||||
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
||||||
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
||||||
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
||||||
@ -1934,6 +1936,7 @@ TP_LOCALLAB_ARTIF;Reduce artifacts - Improve algoritm
|
|||||||
TP_LOCALLAB_ARTIF_TOOLTIP;Only active for Color-light, Exposure, Retinex, Vibrance, ToneMapping, CBDL.
|
TP_LOCALLAB_ARTIF_TOOLTIP;Only active for Color-light, Exposure, Retinex, Vibrance, ToneMapping, CBDL.
|
||||||
TP_LOCALLAB_AVOID;Avoid color shift
|
TP_LOCALLAB_AVOID;Avoid color shift
|
||||||
TP_LOCALLAB_BILATERAL;Bilateral filter
|
TP_LOCALLAB_BILATERAL;Bilateral filter
|
||||||
|
TP_LOCALLAB_BLENDMASKCOL;Blend
|
||||||
TP_LOCALLAB_BLMETHOD_TOOLTIP;Normal - direct blur and noise with all settings.\nInverse - Inverse blur and noise without scope and whithout enhanced algorithm.\nSymmetric - inverse blur and noise with all settings. Be careful some results may be curious
|
TP_LOCALLAB_BLMETHOD_TOOLTIP;Normal - direct blur and noise with all settings.\nInverse - Inverse blur and noise without scope and whithout enhanced algorithm.\nSymmetric - inverse blur and noise with all settings. Be careful some results may be curious
|
||||||
TP_LOCALLAB_BLUFR;Blur & Noise
|
TP_LOCALLAB_BLUFR;Blur & Noise
|
||||||
TP_LOCALLAB_BLNORM;Normal
|
TP_LOCALLAB_BLNORM;Normal
|
||||||
|
@ -1570,6 +1570,56 @@ void LocretigainCurverab::Set(const std::vector<double> &curvePoints)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LocHHmaskexpCurve::LocHHmaskexpCurve() : sum(0.f) {};
|
||||||
|
|
||||||
|
void LocHHmaskexpCurve::Reset()
|
||||||
|
{
|
||||||
|
lutLocHHmaskexpCurve.reset();
|
||||||
|
sum = 0.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LocHHmaskexpCurve::Set(const Curve &pCurve)
|
||||||
|
{
|
||||||
|
if (pCurve.isIdentity()) {
|
||||||
|
Reset(); // raise this value if the quality suffers from this number of samples
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
lutLocHHmaskexpCurve(501); // raise this value if the quality suffers from this number of samples
|
||||||
|
sum = 0.f;
|
||||||
|
|
||||||
|
for (int i = 0; i < 501; i++) {
|
||||||
|
lutLocHHmaskexpCurve[i] = pCurve.getVal(double (i) / 500.);
|
||||||
|
|
||||||
|
if (lutLocHHmaskexpCurve[i] < 0.02f) {
|
||||||
|
lutLocHHmaskexpCurve[i] = 0.02f;
|
||||||
|
}
|
||||||
|
|
||||||
|
sum += lutLocHHmaskexpCurve[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
//lutLocHHCurve.dump("wav");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void LocHHmaskexpCurve::Set(const std::vector<double> &curvePoints)
|
||||||
|
{
|
||||||
|
// 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.);
|
||||||
|
Set(ttcurve);
|
||||||
|
} else {
|
||||||
|
Reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LocLLmaskexpCurve::LocLLmaskexpCurve() : sum(0.f) {};
|
LocLLmaskexpCurve::LocLLmaskexpCurve() : sum(0.f) {};
|
||||||
|
|
||||||
void LocLLmaskexpCurve::Reset()
|
void LocLLmaskexpCurve::Reset()
|
||||||
|
@ -632,6 +632,35 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class LocHHmaskexpCurve
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
LUTf lutLocHHmaskexpCurve; // 0xffff range
|
||||||
|
void Set(const Curve &pCurve);
|
||||||
|
|
||||||
|
public:
|
||||||
|
float sum;
|
||||||
|
|
||||||
|
virtual ~LocHHmaskexpCurve() {};
|
||||||
|
LocHHmaskexpCurve();
|
||||||
|
void Reset();
|
||||||
|
void Set(const std::vector<double> &curvePoints);
|
||||||
|
float getSum() const
|
||||||
|
{
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
float operator[](float index) const
|
||||||
|
{
|
||||||
|
return lutLocHHmaskexpCurve[index];
|
||||||
|
}
|
||||||
|
operator bool (void) const
|
||||||
|
{
|
||||||
|
return lutLocHHmaskexpCurve;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class LocCCmaskexpCurve
|
class LocCCmaskexpCurve
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
@ -905,6 +905,7 @@ void Crop::update(int todo)
|
|||||||
LocHHmaskCurve lochhmasCurve;
|
LocHHmaskCurve lochhmasCurve;
|
||||||
LocCCmaskexpCurve locccmasexpCurve;
|
LocCCmaskexpCurve locccmasexpCurve;
|
||||||
LocLLmaskexpCurve locllmasexpCurve;
|
LocLLmaskexpCurve locllmasexpCurve;
|
||||||
|
LocHHmaskexpCurve lochhmasexpCurve;
|
||||||
|
|
||||||
LocretigainCurverab locRETgainCurverab;
|
LocretigainCurverab locRETgainCurverab;
|
||||||
locallutili = false;
|
locallutili = false;
|
||||||
@ -923,6 +924,7 @@ void Crop::update(int todo)
|
|||||||
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
|
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
|
||||||
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
|
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
|
||||||
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
|
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
|
||||||
|
lochhmasexpCurve.Set(params.locallab.spots.at(sp).HHmaskexpcurve);
|
||||||
locallutili = false;
|
locallutili = false;
|
||||||
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve2, sca);
|
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve2, sca);
|
||||||
localcutili = false;
|
localcutili = false;
|
||||||
@ -952,7 +954,7 @@ void Crop::update(int todo)
|
|||||||
sca);
|
sca);
|
||||||
|
|
||||||
parent->ipf.Lab_Local(1, sp, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
|
parent->ipf.Lab_Local(1, sp, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
|
||||||
loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve, LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, huere, chromare, lumare, sobelre);
|
loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve, lochhmasexpCurve, LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, huere, chromare, lumare, sobelre);
|
||||||
|
|
||||||
lllocalcurve2.clear();
|
lllocalcurve2.clear();
|
||||||
cclocalcurve2.clear();
|
cclocalcurve2.clear();
|
||||||
|
@ -791,6 +791,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
|
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
|
||||||
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
|
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
|
||||||
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
|
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
|
||||||
|
lochhmasexpCurve.Set(params.locallab.spots.at(sp).HHmaskexpcurve);
|
||||||
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, sca);
|
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, sca);
|
||||||
CurveFactory::curveCCLocal(localcutili, params.locallab.spots.at(sp).cccurve, cclocalcurve, sca);
|
CurveFactory::curveCCLocal(localcutili, params.locallab.spots.at(sp).cccurve, cclocalcurve, sca);
|
||||||
CurveFactory::curveskLocal(localskutili, params.locallab.spots.at(sp).skintonescurve, sklocalcurve, sca);
|
CurveFactory::curveskLocal(localskutili, params.locallab.spots.at(sp).skintonescurve, sklocalcurve, sca);
|
||||||
@ -811,6 +812,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
} else {
|
} else {
|
||||||
ipf.calc_ref(sp, nprevl, nprevl, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
ipf.calc_ref(sp, nprevl, nprevl, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||||
}
|
}
|
||||||
|
|
||||||
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lhist16loc,
|
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lhist16loc,
|
||||||
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||||
sca);
|
sca);
|
||||||
@ -832,9 +834,11 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
* - maxspot, huerefs, centerx and centery aren't used in Lab_Local (only for printf) so values aren't important
|
* - maxspot, huerefs, centerx and centery aren't used in Lab_Local (only for printf) so values aren't important
|
||||||
* - shbuffer is used as nullptr
|
* - shbuffer is used as nullptr
|
||||||
*/
|
*/
|
||||||
ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve,
|
ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve, lochhmasexpCurve,
|
||||||
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, huer, chromar, lumar, sobeler);
|
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, huer, chromar, lumar, sobeler);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
if (params.locallab.spots.at(sp).spotMethod == "exc") {
|
if (params.locallab.spots.at(sp).spotMethod == "exc") {
|
||||||
ipf.calc_ref(sp, reserv, reserv, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
ipf.calc_ref(sp, reserv, reserv, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
|
||||||
} else {
|
} else {
|
||||||
@ -846,6 +850,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
cclocalcurve.clear();
|
cclocalcurve.clear();
|
||||||
sklocalcurve.clear();
|
sklocalcurve.clear();
|
||||||
exlocalcurve.clear();
|
exlocalcurve.clear();
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int sp = 0; sp < params.locallab.nbspot && sp < (int)params.locallab.spots.size(); sp++) {
|
for (int sp = 0; sp < params.locallab.nbspot && sp < (int)params.locallab.spots.size(); sp++) {
|
||||||
@ -861,6 +866,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
lumar = lumarefs[sp] = lumare ;
|
lumar = lumarefs[sp] = lumare ;
|
||||||
sobeler = sobelrefs[sp] = sobelre;
|
sobeler = sobelrefs[sp] = sobelre;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//*************************************************************
|
//*************************************************************
|
||||||
|
@ -240,6 +240,7 @@ protected:
|
|||||||
LocHHmaskCurve lochhmasCurve;
|
LocHHmaskCurve lochhmasCurve;
|
||||||
LocCCmaskexpCurve locccmasexpCurve;
|
LocCCmaskexpCurve locccmasexpCurve;
|
||||||
LocLLmaskexpCurve locllmasexpCurve;
|
LocLLmaskexpCurve locllmasexpCurve;
|
||||||
|
LocHHmaskexpCurve lochhmasexpCurve;
|
||||||
ProcParams nextParams2;
|
ProcParams nextParams2;
|
||||||
bool locallutili;
|
bool locallutili;
|
||||||
bool localcutili;
|
bool localcutili;
|
||||||
|
@ -289,7 +289,7 @@ public:
|
|||||||
void calc_ref(int sp, LabImage* original, LabImage* transformed, int cx, int cy, int oW, int oH, int sk, double &huerefblur, double &huere, double &chromare, double &lumare, double &sobelref, LUTu & histogram);
|
void calc_ref(int sp, LabImage* original, LabImage* transformed, int cx, int cy, int oW, int oH, int sk, double &huerefblur, double &huere, double &chromare, double &lumare, double &sobelref, LUTu & histogram);
|
||||||
void copy_ref(LabImage* spotbuffer, LabImage* original, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp, double &huerefspot, double &chromarefspot, double &lumarefspot);
|
void copy_ref(LabImage* spotbuffer, LabImage* original, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp, double &huerefspot, double &chromarefspot, double &lumarefspot);
|
||||||
void paste_ref(LabImage* spotbuffer, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp);
|
void paste_ref(LabImage* spotbuffer, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp);
|
||||||
void Lab_Local(int call, int sp, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, const LocLLmaskCurve & locllmasCurve, const LocHHmaskCurve & lochhmasCurve, const LocCCmaskexpCurve & locccmasexpCurve, const LocLLmaskexpCurve & locllmasexpCurve, bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, LUTf & lightCurveloc, double & huerefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref);
|
void Lab_Local(int call, int sp, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, const LocLLmaskCurve & locllmasCurve, const LocHHmaskCurve & lochhmasCurve, const LocCCmaskexpCurve & locccmasexpCurve, const LocLLmaskexpCurve & locllmasexpCurve, const LocHHmaskexpCurve & lochhmasexpCurve, bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, LUTf & lightCurveloc, double & huerefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref);
|
||||||
void addGaNoise(LabImage *lab, LabImage *dst, const float mean, const float variance, const int sk);
|
void addGaNoise(LabImage *lab, LabImage *dst, const float mean, const float variance, const int sk);
|
||||||
void BlurNoise_Localold(int call, const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
|
void BlurNoise_Localold(int call, const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
|
||||||
void InverseBlurNoise_Local(const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
|
void InverseBlurNoise_Local(const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
|
||||||
|
@ -158,6 +158,7 @@ struct local_params {
|
|||||||
int prox;
|
int prox;
|
||||||
int chro, cont, sens, sensh, senscb, sensbn, senstm, sensex, sensexclu, sensden, senslc, senssf;
|
int chro, cont, sens, sensh, senscb, sensbn, senstm, sensex, sensexclu, sensden, senslc, senssf;
|
||||||
float struco;
|
float struco;
|
||||||
|
float blendmacol;
|
||||||
float struexp;
|
float struexp;
|
||||||
float ligh;
|
float ligh;
|
||||||
int shamo, shdamp, shiter, senssha, sensv;
|
int shamo, shdamp, shiter, senssha, sensv;
|
||||||
@ -473,6 +474,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
int local_contrast = locallab.spots.at(sp).contrast;
|
int local_contrast = locallab.spots.at(sp).contrast;
|
||||||
float local_lightness = (float) locallab.spots.at(sp).lightness;
|
float local_lightness = (float) locallab.spots.at(sp).lightness;
|
||||||
float structcolor = (float) locallab.spots.at(sp).structcol;
|
float structcolor = (float) locallab.spots.at(sp).structcol;
|
||||||
|
float blendmaskcolor = ((float) locallab.spots.at(sp).blendmaskcol) / 100.f ;
|
||||||
float structexpo = (float) locallab.spots.at(sp).structexp;
|
float structexpo = (float) locallab.spots.at(sp).structexp;
|
||||||
int local_transit = locallab.spots.at(sp).transit;
|
int local_transit = locallab.spots.at(sp).transit;
|
||||||
double radius = (double) locallab.spots.at(sp).radius;
|
double radius = (double) locallab.spots.at(sp).radius;
|
||||||
@ -509,6 +511,7 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
lp.lyT = h * local_yT;
|
lp.lyT = h * local_yT;
|
||||||
lp.chro = local_chroma;
|
lp.chro = local_chroma;
|
||||||
lp.struco = structcolor;
|
lp.struco = structcolor;
|
||||||
|
lp.blendmacol = blendmaskcolor;
|
||||||
lp.struexp = structexpo;
|
lp.struexp = structexpo;
|
||||||
lp.sens = local_sensi;
|
lp.sens = local_sensi;
|
||||||
lp.sensh = local_sensih;
|
lp.sensh = local_sensih;
|
||||||
@ -7102,6 +7105,10 @@ void ImProcFunctions::calc_ref(int sp, LabImage * original, LabImage * transform
|
|||||||
int begx = lp.xc - lp.lxL;
|
int begx = lp.xc - lp.lxL;
|
||||||
int yEn = lp.yc + lp.ly;
|
int yEn = lp.yc + lp.ly;
|
||||||
int xEn = lp.xc + lp.lx;
|
int xEn = lp.xc + lp.lx;
|
||||||
|
begx /= sk;
|
||||||
|
begy /= sk;
|
||||||
|
yEn /= sk;
|
||||||
|
xEn /= sk;
|
||||||
//claculate histogram for area selected
|
//claculate histogram for area selected
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
const int numThreads = min(max(transformed->W * transformed->H / (int)histogram.getSize(), 1), omp_get_max_threads());
|
const int numThreads = min(max(transformed->W * transformed->H / (int)histogram.getSize(), 1), omp_get_max_threads());
|
||||||
@ -7118,7 +7125,8 @@ void ImProcFunctions::calc_ref(int sp, LabImage * original, LabImage * transform
|
|||||||
for (int x = 0; x < transformed->W; x++) {
|
for (int x = 0; x < transformed->W; x++) {
|
||||||
int lox = cx + x;
|
int lox = cx + x;
|
||||||
int loy = cy + y;
|
int loy = cy + y;
|
||||||
|
lox /= sk;
|
||||||
|
loy /= sk;
|
||||||
if (lox >= begx && lox < xEn && loy >= begy && loy < yEn) {
|
if (lox >= begx && lox < xEn && loy >= begy && loy < yEn) {
|
||||||
int pos = (int)(original->L[y][x]);
|
int pos = (int)(original->L[y][x]);
|
||||||
lhist16thrloc[pos]++;
|
lhist16thrloc[pos]++;
|
||||||
@ -7621,7 +7629,7 @@ void ImProcFunctions::fftw_denoise(int GW, int GH, int max_numblox_W, int min_nu
|
|||||||
|
|
||||||
|
|
||||||
void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * original, LabImage * transformed, LabImage * reserved, int cx, int cy, int oW, int oH, int sk,
|
void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * original, LabImage * transformed, LabImage * reserved, int cx, int cy, int oW, int oH, int sk,
|
||||||
const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, const LocLLmaskCurve & locllmasCurve, const LocHHmaskCurve & lochhmasCurve, const LocCCmaskexpCurve & locccmasexpCurve, const LocLLmaskexpCurve & locllmasexpCurve,
|
const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, const LocLLmaskCurve & locllmasCurve, const LocHHmaskCurve & lochhmasCurve, const LocCCmaskexpCurve & locccmasexpCurve, const LocLLmaskexpCurve & locllmasexpCurve, const LocHHmaskexpCurve & lochhmasexpCurve,
|
||||||
bool & LHutili, bool & HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc, double & huerefblur, double & hueref, double & chromaref, double & lumaref, double & sobelref)
|
bool & LHutili, bool & HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc, double & huerefblur, double & hueref, double & chromaref, double & lumaref, double & sobelref)
|
||||||
{
|
{
|
||||||
//general call of others functions : important return hueref, chromaref, lumaref
|
//general call of others functions : important return hueref, chromaref, lumaref
|
||||||
@ -10127,7 +10135,8 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
huemoins = hueref - dhue + 2.f * rtengine::RT_PI;
|
huemoins = hueref - dhue + 2.f * rtengine::RT_PI;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//provisory fixe for contrast slider does not work at all
|
||||||
|
lp.cont = 0;
|
||||||
|
|
||||||
LabImage *bufcolorig = nullptr;
|
LabImage *bufcolorig = nullptr;
|
||||||
LabImage *bufmaskorig = nullptr;
|
LabImage *bufmaskorig = nullptr;
|
||||||
@ -10413,12 +10422,22 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
|
|
||||||
if (lox >= begx && lox < xEn && loy >= begy && loy < yEn) {
|
if (lox >= begx && lox < xEn && loy >= begy && loy < yEn) {
|
||||||
if(zone > 0) {
|
if(zone > 0) {
|
||||||
|
bufcolorig->L[loy - begy][lox - begx] += lp.blendmacol * bufmaskorig->L[loy - begy][lox - begx];
|
||||||
|
bufcolorig->a[loy - begy][lox - begx] += lp.blendmacol * bufmaskorig->a[loy - begy][lox - begx];
|
||||||
|
bufcolorig->b[loy - begy][lox - begx] += lp.blendmacol * bufmaskorig->b[loy - begy][lox - begx];
|
||||||
|
|
||||||
|
originalmask->L[y][x] = bufcolorig->L[loy - begy][lox - begx]- (lp.blendmacol + 1.f) * bufmaskorig->L[loy - begy][lox - begx];
|
||||||
|
originalmask->a[y][x] = bufcolorig->a[loy - begy][lox - begx]- (lp.blendmacol + 1.f) * bufmaskorig->a[loy - begy][lox - begx];
|
||||||
|
originalmask->b[y][x] = bufcolorig->L[loy - begy][lox - begx]- (lp.blendmacol + 1.f) * bufmaskorig->b[loy - begy][lox - begx];
|
||||||
|
/*
|
||||||
bufcolorig->L[loy - begy][lox - begx] -= bufmaskorig->L[loy - begy][lox - begx];
|
bufcolorig->L[loy - begy][lox - begx] -= bufmaskorig->L[loy - begy][lox - begx];
|
||||||
bufcolorig->a[loy - begy][lox - begx] -= bufmaskorig->a[loy - begy][lox - begx];
|
bufcolorig->a[loy - begy][lox - begx] -= bufmaskorig->a[loy - begy][lox - begx];
|
||||||
bufcolorig->b[loy - begy][lox - begx] -= bufmaskorig->b[loy - begy][lox - begx];
|
bufcolorig->b[loy - begy][lox - begx] -= bufmaskorig->b[loy - begy][lox - begx];
|
||||||
|
|
||||||
originalmask->L[y][x] = bufcolorig->L[loy - begy][lox - begx];
|
originalmask->L[y][x] = bufcolorig->L[loy - begy][lox - begx];
|
||||||
originalmask->a[y][x] = bufcolorig->a[loy - begy][lox - begx];
|
originalmask->a[y][x] = bufcolorig->a[loy - begy][lox - begx];
|
||||||
originalmask->b[y][x] = bufcolorig->L[loy - begy][lox - begx];
|
originalmask->b[y][x] = bufcolorig->L[loy - begy][lox - begx];
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -10785,11 +10804,66 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
bufmaskblur->a[loy - begy][lox - begx] = original->a[y][x];
|
bufmaskblur->a[loy - begy][lox - begx] = original->a[y][x];
|
||||||
bufmaskblur->b[loy - begy][lox - begx] = original->b[y][x];
|
bufmaskblur->b[loy - begy][lox - begx] = original->b[y][x];
|
||||||
|
|
||||||
|
// float valLL = 0.f;
|
||||||
|
// float valCC = 0.f;
|
||||||
|
// float2 sincosval;
|
||||||
float valLL = 0.f;
|
float valLL = 0.f;
|
||||||
float valCC = 0.f;
|
float valCC = 0.f;
|
||||||
|
float valHH = 0.f;
|
||||||
float2 sincosval;
|
float2 sincosval;
|
||||||
|
float kmaskL = 0;
|
||||||
|
float kmaskCa = 0;
|
||||||
|
float kmaskCb = 0;
|
||||||
|
|
||||||
|
float kmaskHL = 0;
|
||||||
|
float kmaskHa = 0;
|
||||||
|
float kmaskHb = 0;
|
||||||
|
|
||||||
|
|
||||||
if (lp.showmaskexpmet == 2 || lp.showmaskexpmet == 3 || lp.showmaskexpmet == 4) {
|
if (lp.showmaskexpmet == 2 || lp.showmaskexpmet == 3 || lp.showmaskexpmet == 4) {
|
||||||
|
|
||||||
|
if (locllmasexpCurve) {
|
||||||
|
valLL = (float)(locllmasexpCurve[500.f * (bufexporig->L[loy - begy][lox - begx]) / 32768.f]);
|
||||||
|
valLL = 1.f - valLL;
|
||||||
|
kmaskL = 32768.f * valLL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locccmasexpCurve) {
|
||||||
|
float chromask = (sqrt(SQR(bufexporig->a[loy - begy][lox - begx]) + SQR(bufexporig->b[loy - begy][lox - begx])));
|
||||||
|
float chromaskr = chromask / 45000.f;
|
||||||
|
valCC = float (locccmasexpCurve[500.f * chromaskr]);
|
||||||
|
valCC = 1.f - valCC;
|
||||||
|
sincosval.y = (bufexporig->a[loy - begy][lox - begx]) / chromask;
|
||||||
|
sincosval.x = (bufexporig->b[loy - begy][lox - begx]) / chromask;
|
||||||
|
kmaskCa = 45000.f * valCC * sincosval.y;
|
||||||
|
kmaskCb = 45000.f * valCC * sincosval.x;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lochhmasexpCurve) {
|
||||||
|
float huema= xatan2f(bufexporig->b[loy - begy][lox - begx], bufexporig->a[loy - begy][lox - begx]);
|
||||||
|
float h = Color::huelab_to_huehsv2(huema);
|
||||||
|
h += 1.f/6.f;
|
||||||
|
if (h > 1.f) {
|
||||||
|
h -= 1.f;
|
||||||
|
}
|
||||||
|
float chromask = (sqrt(SQR(bufexporig->a[loy - begy][lox - begx]) + SQR(bufexporig->b[loy - begy][lox - begx])));
|
||||||
|
valHH = float (lochhmasexpCurve[500.f * h]);
|
||||||
|
valHH = 1.f - valHH;
|
||||||
|
sincosval.y = (bufexporig->a[loy - begy][lox - begx]) / chromask;
|
||||||
|
sincosval.x = (bufexporig->b[loy - begy][lox - begx]) / chromask;
|
||||||
|
kmaskHa = 45000.f * valHH * sincosval.y;
|
||||||
|
kmaskHb = 45000.f * valHH * sincosval.x;
|
||||||
|
kmaskHL = 32768.f * valHH;
|
||||||
|
}
|
||||||
|
|
||||||
|
bufmaskblur->L[loy - begy][lox - begx] = kmaskL + kmaskHL;
|
||||||
|
bufmaskblur->a[loy - begy][lox - begx] = kmaskCa + kmaskHa;
|
||||||
|
bufmaskblur->b[loy - begy][lox - begx] = kmaskCb + kmaskHb;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
if (locllmasexpCurve) {
|
if (locllmasexpCurve) {
|
||||||
valLL = (float)(locllmasexpCurve[500.f * (bufexporig->L[loy - begy][lox - begx]) / 32768.f]);
|
valLL = (float)(locllmasexpCurve[500.f * (bufexporig->L[loy - begy][lox - begx]) / 32768.f]);
|
||||||
valLL = 1.f - valLL;
|
valLL = 1.f - valLL;
|
||||||
@ -10807,6 +10881,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
bufmaskblur->b[loy - begy][lox - begx] = 45000.f * valCC * sincosval.x;
|
bufmaskblur->b[loy - begy][lox - begx] = 45000.f * valCC * sincosval.x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -640,6 +640,8 @@ enum ProcEventCode {
|
|||||||
EvlocallabHHmaskshape = 610,
|
EvlocallabHHmaskshape = 610,
|
||||||
Evlocallabstructcol = 611,
|
Evlocallabstructcol = 611,
|
||||||
Evlocallabstructexp = 612,
|
Evlocallabstructexp = 612,
|
||||||
|
EvlocallabHHmaskexpshape = 613,
|
||||||
|
Evlocallabblendmaskcol = 614,
|
||||||
NUMOFEVENTS
|
NUMOFEVENTS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2363,6 +2363,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
chroma(0),
|
chroma(0),
|
||||||
sensi(19),
|
sensi(19),
|
||||||
structcol(0),
|
structcol(0),
|
||||||
|
blendmaskcol(-100),
|
||||||
qualitycurveMethod("none"),
|
qualitycurveMethod("none"),
|
||||||
showmaskcolMethod("none"),
|
showmaskcolMethod("none"),
|
||||||
llcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
|
llcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
|
||||||
@ -2387,6 +2388,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
showmaskexpMethod("none"),
|
showmaskexpMethod("none"),
|
||||||
CCmaskexpcurve{(double)FCT_MinMaxCPoints, 0., 1., 0.35, 0.35, 1., 1., 0.35, 0.35},
|
CCmaskexpcurve{(double)FCT_MinMaxCPoints, 0., 1., 0.35, 0.35, 1., 1., 0.35, 0.35},
|
||||||
LLmaskexpcurve{(double)FCT_MinMaxCPoints, 0., 1., 0.35, 0.35, 1., 1., 0.35, 0.35},
|
LLmaskexpcurve{(double)FCT_MinMaxCPoints, 0., 1., 0.35, 0.35, 1., 1., 0.35, 0.35},
|
||||||
|
HHmaskexpcurve{(double)FCT_MinMaxCPoints, 0., 1., 0.35, 0.35, 1., 1., 0.35, 0.35},
|
||||||
|
|
||||||
// Vibrance
|
// Vibrance
|
||||||
expvibrance(false),
|
expvibrance(false),
|
||||||
@ -2501,6 +2503,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
|||||||
&& chroma == other.chroma
|
&& chroma == other.chroma
|
||||||
&& sensi == other.sensi
|
&& sensi == other.sensi
|
||||||
&& structcol == other.structcol
|
&& structcol == other.structcol
|
||||||
|
&& blendmaskcol == other.blendmaskcol
|
||||||
&& qualitycurveMethod == other.qualitycurveMethod
|
&& qualitycurveMethod == other.qualitycurveMethod
|
||||||
&& showmaskcolMethod == other.showmaskcolMethod
|
&& showmaskcolMethod == other.showmaskcolMethod
|
||||||
&& llcurve == other.llcurve
|
&& llcurve == other.llcurve
|
||||||
@ -2525,6 +2528,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
|||||||
&& showmaskexpMethod == other.showmaskexpMethod
|
&& showmaskexpMethod == other.showmaskexpMethod
|
||||||
&& CCmaskexpcurve == other.CCmaskexpcurve
|
&& CCmaskexpcurve == other.CCmaskexpcurve
|
||||||
&& LLmaskexpcurve == other.LLmaskexpcurve
|
&& LLmaskexpcurve == other.LLmaskexpcurve
|
||||||
|
&& HHmaskexpcurve == other.HHmaskexpcurve
|
||||||
// Vibrance
|
// Vibrance
|
||||||
&& expvibrance == other.expvibrance
|
&& expvibrance == other.expvibrance
|
||||||
&& saturated == other.saturated
|
&& saturated == other.saturated
|
||||||
@ -3591,6 +3595,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chroma, "Locallab", "Chroma_" + std::to_string(i), spot.chroma, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chroma, "Locallab", "Chroma_" + std::to_string(i), spot.chroma, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sensi, "Locallab", "Sensi_" + std::to_string(i), spot.sensi, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sensi, "Locallab", "Sensi_" + std::to_string(i), spot.sensi, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).structcol, "Locallab", "Structcol_" + std::to_string(i), spot.structcol, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).structcol, "Locallab", "Structcol_" + std::to_string(i), spot.structcol, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blendmaskcol, "Locallab", "Blendmaskcol_" + std::to_string(i), spot.blendmaskcol, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).qualitycurveMethod, "Locallab", "QualityCurveMethod_" + std::to_string(i), spot.qualitycurveMethod, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).qualitycurveMethod, "Locallab", "QualityCurveMethod_" + std::to_string(i), spot.qualitycurveMethod, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).showmaskcolMethod, "Locallab", "ShowmaskcolMethod_" + std::to_string(i), spot.showmaskcolMethod, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).showmaskcolMethod, "Locallab", "ShowmaskcolMethod_" + std::to_string(i), spot.showmaskcolMethod, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).llcurve, "Locallab", "LLCurve_" + std::to_string(i), spot.llcurve, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).llcurve, "Locallab", "LLCurve_" + std::to_string(i), spot.llcurve, keyFile);
|
||||||
@ -3615,6 +3620,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).showmaskexpMethod, "Locallab", "ShowmaskexpMethod_" + std::to_string(i), spot.showmaskexpMethod, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).showmaskexpMethod, "Locallab", "ShowmaskexpMethod_" + std::to_string(i), spot.showmaskexpMethod, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).CCmaskexpcurve, "Locallab", "CCmaskexpCurve_" + std::to_string(i), spot.CCmaskexpcurve, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).CCmaskexpcurve, "Locallab", "CCmaskexpCurve_" + std::to_string(i), spot.CCmaskexpcurve, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmaskexpcurve, "Locallab", "LLmaskexpCurve_" + std::to_string(i), spot.LLmaskexpcurve, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmaskexpcurve, "Locallab", "LLmaskexpCurve_" + std::to_string(i), spot.LLmaskexpcurve, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).HHmaskexpcurve, "Locallab", "HHmaskexpCurve_" + std::to_string(i), spot.HHmaskexpcurve, keyFile);
|
||||||
// Vibrance
|
// Vibrance
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).expvibrance, "Locallab", "Expvibrance_" + std::to_string(i), spot.expvibrance, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).expvibrance, "Locallab", "Expvibrance_" + std::to_string(i), spot.expvibrance, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).saturated, "Locallab", "Saturated_" + std::to_string(i), spot.saturated, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).saturated, "Locallab", "Saturated_" + std::to_string(i), spot.saturated, keyFile);
|
||||||
@ -4808,6 +4814,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Locallab", "Chroma_" + std::to_string(i), pedited, spot.chroma, spotEdited.chroma);
|
assignFromKeyfile(keyFile, "Locallab", "Chroma_" + std::to_string(i), pedited, spot.chroma, spotEdited.chroma);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Sensi_" + std::to_string(i), pedited, spot.sensi, spotEdited.sensi);
|
assignFromKeyfile(keyFile, "Locallab", "Sensi_" + std::to_string(i), pedited, spot.sensi, spotEdited.sensi);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Structcol_" + std::to_string(i), pedited, spot.structcol, spotEdited.structcol);
|
assignFromKeyfile(keyFile, "Locallab", "Structcol_" + std::to_string(i), pedited, spot.structcol, spotEdited.structcol);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "Blendmaskcol_" + std::to_string(i), pedited, spot.blendmaskcol, spotEdited.blendmaskcol);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "QualityCurveMethod_" + std::to_string(i), pedited, spot.qualitycurveMethod, spotEdited.qualitycurveMethod);
|
assignFromKeyfile(keyFile, "Locallab", "QualityCurveMethod_" + std::to_string(i), pedited, spot.qualitycurveMethod, spotEdited.qualitycurveMethod);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "ShowmaskcolMethod_" + std::to_string(i), pedited, spot.showmaskcolMethod, spotEdited.showmaskcolMethod);
|
assignFromKeyfile(keyFile, "Locallab", "ShowmaskcolMethod_" + std::to_string(i), pedited, spot.showmaskcolMethod, spotEdited.showmaskcolMethod);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "LLCurve_" + std::to_string(i), pedited, spot.llcurve, spotEdited.llcurve);
|
assignFromKeyfile(keyFile, "Locallab", "LLCurve_" + std::to_string(i), pedited, spot.llcurve, spotEdited.llcurve);
|
||||||
@ -4832,6 +4839,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Locallab", "ShowmaskexpMethod_" + std::to_string(i), pedited, spot.showmaskexpMethod, spotEdited.showmaskexpMethod);
|
assignFromKeyfile(keyFile, "Locallab", "ShowmaskexpMethod_" + std::to_string(i), pedited, spot.showmaskexpMethod, spotEdited.showmaskexpMethod);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "CCmaskexpCurve_" + std::to_string(i), pedited, spot.CCmaskexpcurve, spotEdited.CCmaskexpcurve);
|
assignFromKeyfile(keyFile, "Locallab", "CCmaskexpCurve_" + std::to_string(i), pedited, spot.CCmaskexpcurve, spotEdited.CCmaskexpcurve);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "LLmaskexpCurve_" + std::to_string(i), pedited, spot.LLmaskexpcurve, spotEdited.LLmaskexpcurve);
|
assignFromKeyfile(keyFile, "Locallab", "LLmaskexpCurve_" + std::to_string(i), pedited, spot.LLmaskexpcurve, spotEdited.LLmaskexpcurve);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "HHmaskexpCurve_" + std::to_string(i), pedited, spot.HHmaskexpcurve, spotEdited.HHmaskexpcurve);
|
||||||
// Vibrance
|
// Vibrance
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Expvibrance_" + std::to_string(i), pedited, spot.expvibrance, spotEdited.expvibrance);
|
assignFromKeyfile(keyFile, "Locallab", "Expvibrance_" + std::to_string(i), pedited, spot.expvibrance, spotEdited.expvibrance);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Saturated_" + std::to_string(i), pedited, spot.saturated, spotEdited.saturated);
|
assignFromKeyfile(keyFile, "Locallab", "Saturated_" + std::to_string(i), pedited, spot.saturated, spotEdited.saturated);
|
||||||
|
@ -960,6 +960,7 @@ struct LocallabParams {
|
|||||||
int chroma;
|
int chroma;
|
||||||
int sensi;
|
int sensi;
|
||||||
int structcol;
|
int structcol;
|
||||||
|
int blendmaskcol;
|
||||||
Glib::ustring qualitycurveMethod;
|
Glib::ustring qualitycurveMethod;
|
||||||
Glib::ustring showmaskcolMethod;
|
Glib::ustring showmaskcolMethod;
|
||||||
std::vector<double> llcurve;
|
std::vector<double> llcurve;
|
||||||
@ -984,6 +985,7 @@ struct LocallabParams {
|
|||||||
Glib::ustring showmaskexpMethod;
|
Glib::ustring showmaskexpMethod;
|
||||||
std::vector<double> CCmaskexpcurve;
|
std::vector<double> CCmaskexpcurve;
|
||||||
std::vector<double> LLmaskexpcurve;
|
std::vector<double> LLmaskexpcurve;
|
||||||
|
std::vector<double> HHmaskexpcurve;
|
||||||
// Vibrance
|
// Vibrance
|
||||||
bool expvibrance;
|
bool expvibrance;
|
||||||
int saturated;
|
int saturated;
|
||||||
|
@ -639,7 +639,9 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, //EvlocallabLLmaskexpshape
|
LUMINANCECURVE, //EvlocallabLLmaskexpshape
|
||||||
LUMINANCECURVE, //EvlocallabHHmaskshape
|
LUMINANCECURVE, //EvlocallabHHmaskshape
|
||||||
LUMINANCECURVE, //Evlocallabstructcol
|
LUMINANCECURVE, //Evlocallabstructcol
|
||||||
LUMINANCECURVE //Evlocallabstructexp
|
LUMINANCECURVE, //Evlocallabstructexp
|
||||||
|
LUMINANCECURVE, //EvlocallabHHmaskexpshape
|
||||||
|
LUMINANCECURVE //Evlocallabblendmaskcol
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1080,6 +1080,7 @@ private:
|
|||||||
LocHHmaskCurve lochhmasCurve;
|
LocHHmaskCurve lochhmasCurve;
|
||||||
LocCCmaskexpCurve locccmasexpCurve;
|
LocCCmaskexpCurve locccmasexpCurve;
|
||||||
LocLLmaskexpCurve locllmasexpCurve;
|
LocLLmaskexpCurve locllmasexpCurve;
|
||||||
|
LocHHmaskexpCurve lochhmasexpCurve;
|
||||||
LUTf lllocalcurve(65536, 0);
|
LUTf lllocalcurve(65536, 0);
|
||||||
LUTf cclocalcurve(65536, 0);
|
LUTf cclocalcurve(65536, 0);
|
||||||
LUTf sklocalcurve(65536, 0);
|
LUTf sklocalcurve(65536, 0);
|
||||||
@ -1118,6 +1119,7 @@ private:
|
|||||||
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
|
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
|
||||||
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
|
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
|
||||||
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
|
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
|
||||||
|
lochhmasexpCurve.Set(params.locallab.spots.at(sp).HHmaskexpcurve);
|
||||||
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, 1);
|
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, 1);
|
||||||
CurveFactory::curveCCLocal(localcutili, params.locallab.spots.at(sp).cccurve, cclocalcurve, 1);
|
CurveFactory::curveCCLocal(localcutili, params.locallab.spots.at(sp).cccurve, cclocalcurve, 1);
|
||||||
CurveFactory::curveskLocal(localskutili, params.locallab.spots.at(sp).skintonescurve, sklocalcurve, 1);
|
CurveFactory::curveskLocal(localskutili, params.locallab.spots.at(sp).skintonescurve, sklocalcurve, 1);
|
||||||
@ -1143,7 +1145,7 @@ private:
|
|||||||
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||||
1);
|
1);
|
||||||
|
|
||||||
ipf.Lab_Local(2, sp, (float**)shbuffer, labView, labView, reservView, 0, 0, fw, fh, 1, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve,
|
ipf.Lab_Local(2, sp, (float**)shbuffer, labView, labView, reservView, 0, 0, fw, fh, 1, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve, lochhmasexpCurve,
|
||||||
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerefblu, huere, chromare, lumare, sobelre);
|
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerefblu, huere, chromare, lumare, sobelre);
|
||||||
|
|
||||||
// Clear local curves
|
// Clear local curves
|
||||||
|
@ -77,6 +77,7 @@ Locallab::Locallab():
|
|||||||
chroma(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMA"), -100, 150, 1, 0))),
|
chroma(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMA"), -100, 150, 1, 0))),
|
||||||
sensi(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 19))),
|
sensi(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 19))),
|
||||||
structcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL"), 0, 100, 1, 0))),
|
structcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL"), 0, 100, 1, 0))),
|
||||||
|
blendmaskcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKCOL"), -150, 100, 1, -100))),
|
||||||
// Exposure
|
// Exposure
|
||||||
expcomp(Gtk::manage(new Adjuster(M("TP_EXPOSURE_EXPCOMP"), -200, 200, 5, 0))),
|
expcomp(Gtk::manage(new Adjuster(M("TP_EXPOSURE_EXPCOMP"), -200, 200, 5, 0))),
|
||||||
hlcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTS"), 0, 500, 1, 60))),
|
hlcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTS"), 0, 500, 1, 60))),
|
||||||
@ -107,7 +108,7 @@ Locallab::Locallab():
|
|||||||
// Retinex
|
// Retinex
|
||||||
str(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STR"), 0, 100, 1, 0))),
|
str(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STR"), 0, 100, 1, 0))),
|
||||||
chrrt(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHRRT"), 0, 100, 1, 0))),
|
chrrt(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHRRT"), 0, 100, 1, 0))),
|
||||||
neigh(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NEIGH"), 14, 150, 1, 50))),
|
neigh(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NEIGH"), -100, 150, 1, 100))),//14, 150, 1, 50))),
|
||||||
vart(Gtk::manage(new Adjuster(M("TP_LOCALLAB_VART"), 50, 500, 1, 200))),
|
vart(Gtk::manage(new Adjuster(M("TP_LOCALLAB_VART"), 50, 500, 1, 200))),
|
||||||
dehaz(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DEHAZ"), 0, 100, 1, 0))),
|
dehaz(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DEHAZ"), 0, 100, 1, 0))),
|
||||||
sensih(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIH"), 0, 100, 1, 19))),
|
sensih(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIH"), 0, 100, 1, 19))),
|
||||||
@ -217,6 +218,7 @@ Locallab::Locallab():
|
|||||||
sensi->set_tooltip_text(M("TP_LOCALLAB_SENSI_TOOLTIP"));
|
sensi->set_tooltip_text(M("TP_LOCALLAB_SENSI_TOOLTIP"));
|
||||||
sensi->setAdjusterListener(this);
|
sensi->setAdjusterListener(this);
|
||||||
structcol->setAdjusterListener(this);
|
structcol->setAdjusterListener(this);
|
||||||
|
blendmaskcol->setAdjusterListener(this);
|
||||||
|
|
||||||
qualitycurveMethod->append(M("TP_LOCALLAB_CURVNONE"));
|
qualitycurveMethod->append(M("TP_LOCALLAB_CURVNONE"));
|
||||||
qualitycurveMethod->append(M("TP_LOCALLAB_CURVCURR"));
|
qualitycurveMethod->append(M("TP_LOCALLAB_CURVCURR"));
|
||||||
@ -314,7 +316,7 @@ Locallab::Locallab():
|
|||||||
|
|
||||||
HHmaskshape = static_cast<FlatCurveEditor *>(maskCurveEditorG->addCurve(CT_Flat, "LC(H)", nullptr, false, true));
|
HHmaskshape = static_cast<FlatCurveEditor *>(maskCurveEditorG->addCurve(CT_Flat, "LC(H)", nullptr, false, true));
|
||||||
HHmaskshape->setIdentityValue(0.);
|
HHmaskshape->setIdentityValue(0.);
|
||||||
HHmaskshape->setResetCurve(FlatCurveType(defSpot.LLmaskcurve.at(0)), defSpot.LLmaskcurve);
|
HHmaskshape->setResetCurve(FlatCurveType(defSpot.HHmaskcurve.at(0)), defSpot.HHmaskcurve);
|
||||||
HHmaskshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
|
HHmaskshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
|
||||||
HHmaskshape->setCurveColorProvider(this, 6);
|
HHmaskshape->setCurveColorProvider(this, 6);
|
||||||
HHmaskshape->setBottomBarColorProvider(this, 6);
|
HHmaskshape->setBottomBarColorProvider(this, 6);
|
||||||
@ -327,7 +329,7 @@ Locallab::Locallab():
|
|||||||
superFrame->set_label_widget(*curvactiv);
|
superFrame->set_label_widget(*curvactiv);
|
||||||
ToolParamBlock* const superBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const superBox = Gtk::manage(new ToolParamBlock());
|
||||||
superBox->pack_start(*lightness);
|
superBox->pack_start(*lightness);
|
||||||
superBox->pack_start(*contrast);
|
// superBox->pack_start(*contrast);
|
||||||
superBox->pack_start(*chroma);
|
superBox->pack_start(*chroma);
|
||||||
superFrame->add(*superBox);
|
superFrame->add(*superBox);
|
||||||
colorBox->pack_start(*superFrame);
|
colorBox->pack_start(*superFrame);
|
||||||
@ -345,6 +347,7 @@ Locallab::Locallab():
|
|||||||
maskcolBox->pack_start(*transLabels, Gtk::PACK_SHRINK, 4);
|
maskcolBox->pack_start(*transLabels, Gtk::PACK_SHRINK, 4);
|
||||||
maskcolBox->pack_start(*showmaskcolMethod, Gtk::PACK_SHRINK, 0);
|
maskcolBox->pack_start(*showmaskcolMethod, Gtk::PACK_SHRINK, 0);
|
||||||
maskcolBox->pack_start(*maskCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
maskcolBox->pack_start(*maskCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
|
||||||
|
maskcolBox->pack_start(*blendmaskcol, Gtk::PACK_SHRINK, 0);
|
||||||
|
|
||||||
maskcolFrame->add(*maskcolBox);
|
maskcolFrame->add(*maskcolBox);
|
||||||
colorBox->pack_start(*maskcolFrame);
|
colorBox->pack_start(*maskcolFrame);
|
||||||
@ -413,6 +416,14 @@ Locallab::Locallab():
|
|||||||
LLmaskexpshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
|
LLmaskexpshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
|
||||||
LLmaskexpshape->setBottomBarBgGradient(mllshape);
|
LLmaskexpshape->setBottomBarBgGradient(mllshape);
|
||||||
|
|
||||||
|
HHmaskexpshape = static_cast<FlatCurveEditor *>(maskexpCurveEditorG->addCurve(CT_Flat, "LC(H)", nullptr, false, true));
|
||||||
|
HHmaskexpshape->setIdentityValue(0.);
|
||||||
|
HHmaskexpshape->setResetCurve(FlatCurveType(defSpot.HHmaskexpcurve.at(0)), defSpot.HHmaskexpcurve);
|
||||||
|
HHmaskexpshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
|
||||||
|
HHmaskexpshape->setCurveColorProvider(this, 6);
|
||||||
|
HHmaskexpshape->setBottomBarColorProvider(this, 6);
|
||||||
|
|
||||||
|
|
||||||
maskexpCurveEditorG->curveListComplete();
|
maskexpCurveEditorG->curveListComplete();
|
||||||
|
|
||||||
|
|
||||||
@ -1484,6 +1495,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pp->locallab.spots.at(pp->locallab.selspot).chroma = chroma->getIntValue();
|
pp->locallab.spots.at(pp->locallab.selspot).chroma = chroma->getIntValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).sensi = sensi->getIntValue();
|
pp->locallab.spots.at(pp->locallab.selspot).sensi = sensi->getIntValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).structcol = structcol->getIntValue();
|
pp->locallab.spots.at(pp->locallab.selspot).structcol = structcol->getIntValue();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).blendmaskcol = blendmaskcol->getIntValue();
|
||||||
|
|
||||||
if (qualitycurveMethod->get_active_row_number() == 0) {
|
if (qualitycurveMethod->get_active_row_number() == 0) {
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = "none";
|
pp->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = "none";
|
||||||
@ -1541,6 +1553,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
}
|
}
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve = LLmaskexpshape->getCurve();
|
pp->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve = LLmaskexpshape->getCurve();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve = CCmaskexpshape->getCurve();
|
pp->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve = CCmaskexpshape->getCurve();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).HHmaskexpcurve = HHmaskexpshape->getCurve();
|
||||||
|
|
||||||
// Vibrance
|
// Vibrance
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).expvibrance = expvibrance->getEnabled();
|
pp->locallab.spots.at(pp->locallab.selspot).expvibrance = expvibrance->getEnabled();
|
||||||
@ -1673,6 +1686,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pe->locallab.spots.at(pp->locallab.selspot).chroma = pe->locallab.spots.at(pp->locallab.selspot).chroma || chroma->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).chroma = pe->locallab.spots.at(pp->locallab.selspot).chroma || chroma->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).sensi = pe->locallab.spots.at(pp->locallab.selspot).sensi || sensi->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).sensi = pe->locallab.spots.at(pp->locallab.selspot).sensi || sensi->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).structcol = pe->locallab.spots.at(pp->locallab.selspot).structcol || structcol->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).structcol = pe->locallab.spots.at(pp->locallab.selspot).structcol || structcol->getEditedState();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).blendmaskcol = pe->locallab.spots.at(pp->locallab.selspot).blendmaskcol || blendmaskcol->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = pe->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod || qualitycurveMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pe->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = pe->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod || qualitycurveMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod = pe->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod || showmaskcolMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pe->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod = pe->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod || showmaskcolMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).llcurve = pe->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged();
|
pe->locallab.spots.at(pp->locallab.selspot).llcurve = pe->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged();
|
||||||
@ -1697,6 +1711,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pe->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod = pe->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod || showmaskexpMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pe->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod = pe->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod || showmaskexpMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve = pe->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve || !CCmaskexpshape->isUnChanged();
|
pe->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve = pe->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve || !CCmaskexpshape->isUnChanged();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve = pe->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve || !LLmaskexpshape->isUnChanged();
|
pe->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve = pe->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve || !LLmaskexpshape->isUnChanged();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).HHmaskexpcurve = pe->locallab.spots.at(pp->locallab.selspot).HHmaskexpcurve || !HHmaskexpshape->isUnChanged();
|
||||||
// Vibrance
|
// Vibrance
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).expvibrance = pe->locallab.spots.at(pp->locallab.selspot).expvibrance || !expvibrance->get_inconsistent();
|
pe->locallab.spots.at(pp->locallab.selspot).expvibrance = pe->locallab.spots.at(pp->locallab.selspot).expvibrance || !expvibrance->get_inconsistent();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).saturated = pe->locallab.spots.at(pp->locallab.selspot).saturated || saturated->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).saturated = pe->locallab.spots.at(pp->locallab.selspot).saturated || saturated->getEditedState();
|
||||||
@ -1815,6 +1830,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pedited->locallab.spots.at(pp->locallab.selspot).chroma = pedited->locallab.spots.at(pp->locallab.selspot).chroma || chroma->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).chroma = pedited->locallab.spots.at(pp->locallab.selspot).chroma || chroma->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).sensi = pedited->locallab.spots.at(pp->locallab.selspot).sensi || sensi->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).sensi = pedited->locallab.spots.at(pp->locallab.selspot).sensi || sensi->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).structcol = pedited->locallab.spots.at(pp->locallab.selspot).structcol || structcol->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).structcol = pedited->locallab.spots.at(pp->locallab.selspot).structcol || structcol->getEditedState();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcol = pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcol || blendmaskcol->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = pedited->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod || qualitycurveMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pedited->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = pedited->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod || qualitycurveMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod = pedited->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod || showmaskcolMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pedited->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod = pedited->locallab.spots.at(pp->locallab.selspot).showmaskcolMethod || showmaskcolMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).llcurve = pedited->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged();
|
pedited->locallab.spots.at(pp->locallab.selspot).llcurve = pedited->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged();
|
||||||
@ -1839,6 +1855,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pedited->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod = pedited->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod || showmaskexpMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pedited->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod = pedited->locallab.spots.at(pp->locallab.selspot).showmaskexpMethod || showmaskexpMethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve = pedited->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve || !CCmaskexpshape->isUnChanged();
|
pedited->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve = pedited->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve || !CCmaskexpshape->isUnChanged();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve = pedited->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve || !LLmaskexpshape->isUnChanged();
|
pedited->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve = pedited->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve || !LLmaskexpshape->isUnChanged();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).HHmaskexpcurve = pedited->locallab.spots.at(pp->locallab.selspot).HHmaskexpcurve || !HHmaskexpshape->isUnChanged();
|
||||||
// Vibrance
|
// Vibrance
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).expvibrance = pedited->locallab.spots.at(pp->locallab.selspot).expvibrance || !expvibrance->get_inconsistent();
|
pedited->locallab.spots.at(pp->locallab.selspot).expvibrance = pedited->locallab.spots.at(pp->locallab.selspot).expvibrance || !expvibrance->get_inconsistent();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).saturated = pedited->locallab.spots.at(pp->locallab.selspot).saturated || saturated->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).saturated = pedited->locallab.spots.at(pp->locallab.selspot).saturated || saturated->getEditedState();
|
||||||
@ -2089,6 +2106,11 @@ void Locallab::curveChanged(CurveEditor* ce)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ce == HHmaskexpshape) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(EvlocallabHHmaskexpshape, M("HISTORY_CUSTOMCURVE"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vibrance
|
// Vibrance
|
||||||
@ -2431,6 +2453,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
|||||||
chroma->setDefault((double)defSpot->chroma);
|
chroma->setDefault((double)defSpot->chroma);
|
||||||
sensi->setDefault((double)defSpot->sensi);
|
sensi->setDefault((double)defSpot->sensi);
|
||||||
structcol->setDefault((double)defSpot->structcol);
|
structcol->setDefault((double)defSpot->structcol);
|
||||||
|
blendmaskcol->setDefault((double)defSpot->blendmaskcol);
|
||||||
// Exposure
|
// Exposure
|
||||||
expcomp->setDefault((double)defSpot->expcomp);
|
expcomp->setDefault((double)defSpot->expcomp);
|
||||||
hlcompr->setDefault((double)defSpot->hlcompr);
|
hlcompr->setDefault((double)defSpot->hlcompr);
|
||||||
@ -2507,6 +2530,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
|||||||
chroma->setDefaultEditedState(Irrelevant);
|
chroma->setDefaultEditedState(Irrelevant);
|
||||||
sensi->setDefaultEditedState(Irrelevant);
|
sensi->setDefaultEditedState(Irrelevant);
|
||||||
structcol->setDefaultEditedState(Irrelevant);
|
structcol->setDefaultEditedState(Irrelevant);
|
||||||
|
blendmaskcol->setDefaultEditedState(Irrelevant);
|
||||||
// Exposure
|
// Exposure
|
||||||
expcomp->setDefaultEditedState(Irrelevant);
|
expcomp->setDefaultEditedState(Irrelevant);
|
||||||
hlcompr->setDefaultEditedState(Irrelevant);
|
hlcompr->setDefaultEditedState(Irrelevant);
|
||||||
@ -2587,6 +2611,7 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
|
|||||||
chroma->setDefaultEditedState(defSpotState->chroma ? Edited : UnEdited);
|
chroma->setDefaultEditedState(defSpotState->chroma ? Edited : UnEdited);
|
||||||
sensi->setDefaultEditedState(defSpotState->sensi ? Edited : UnEdited);
|
sensi->setDefaultEditedState(defSpotState->sensi ? Edited : UnEdited);
|
||||||
structcol->setDefaultEditedState(defSpotState->structcol ? Edited : UnEdited);
|
structcol->setDefaultEditedState(defSpotState->structcol ? Edited : UnEdited);
|
||||||
|
blendmaskcol->setDefaultEditedState(defSpotState->blendmaskcol ? Edited : UnEdited);
|
||||||
// Exposure
|
// Exposure
|
||||||
expcomp->setDefaultEditedState(defSpotState->expcomp ? Edited : UnEdited);
|
expcomp->setDefaultEditedState(defSpotState->expcomp ? Edited : UnEdited);
|
||||||
hlcompr->setDefaultEditedState(defSpotState->hlcompr ? Edited : UnEdited);
|
hlcompr->setDefaultEditedState(defSpotState->hlcompr ? Edited : UnEdited);
|
||||||
@ -2727,6 +2752,13 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
|
|||||||
listener->panelChanged(Evlocallabstructcol, structcol->getTextValue());
|
listener->panelChanged(Evlocallabstructcol, structcol->getTextValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (a == blendmaskcol) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabblendmaskcol, blendmaskcol->getTextValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exposure
|
// Exposure
|
||||||
@ -3174,6 +3206,7 @@ void Locallab::setBatchMode(bool batchMode)
|
|||||||
chroma->showEditedCB();
|
chroma->showEditedCB();
|
||||||
sensi->showEditedCB();
|
sensi->showEditedCB();
|
||||||
structcol->showEditedCB();
|
structcol->showEditedCB();
|
||||||
|
blendmaskcol->showEditedCB();
|
||||||
// Exposure
|
// Exposure
|
||||||
expcomp->showEditedCB();
|
expcomp->showEditedCB();
|
||||||
hlcompr->showEditedCB();
|
hlcompr->showEditedCB();
|
||||||
@ -3481,6 +3514,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
chroma->setValue(pp->locallab.spots.at(index).chroma);
|
chroma->setValue(pp->locallab.spots.at(index).chroma);
|
||||||
sensi->setValue(pp->locallab.spots.at(index).sensi);
|
sensi->setValue(pp->locallab.spots.at(index).sensi);
|
||||||
structcol->setValue(pp->locallab.spots.at(index).structcol);
|
structcol->setValue(pp->locallab.spots.at(index).structcol);
|
||||||
|
blendmaskcol->setValue(pp->locallab.spots.at(index).blendmaskcol);
|
||||||
|
|
||||||
if (pp->locallab.spots.at(index).qualitycurveMethod == "none") {
|
if (pp->locallab.spots.at(index).qualitycurveMethod == "none") {
|
||||||
qualitycurveMethod->set_active(0);
|
qualitycurveMethod->set_active(0);
|
||||||
@ -3544,6 +3578,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
}
|
}
|
||||||
CCmaskexpshape->setCurve(pp->locallab.spots.at(index).CCmaskexpcurve);
|
CCmaskexpshape->setCurve(pp->locallab.spots.at(index).CCmaskexpcurve);
|
||||||
LLmaskexpshape->setCurve(pp->locallab.spots.at(index).LLmaskexpcurve);
|
LLmaskexpshape->setCurve(pp->locallab.spots.at(index).LLmaskexpcurve);
|
||||||
|
HHmaskexpshape->setCurve(pp->locallab.spots.at(index).HHmaskexpcurve);
|
||||||
|
|
||||||
// Vibrance
|
// Vibrance
|
||||||
expvibrance->setEnabled(pp->locallab.spots.at(index).expvibrance);
|
expvibrance->setEnabled(pp->locallab.spots.at(index).expvibrance);
|
||||||
@ -3697,6 +3732,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
chroma->setEditedState(spotState->chroma ? Edited : UnEdited);
|
chroma->setEditedState(spotState->chroma ? Edited : UnEdited);
|
||||||
sensi->setEditedState(spotState->sensi ? Edited : UnEdited);
|
sensi->setEditedState(spotState->sensi ? Edited : UnEdited);
|
||||||
structcol->setEditedState(spotState->structcol ? Edited : UnEdited);
|
structcol->setEditedState(spotState->structcol ? Edited : UnEdited);
|
||||||
|
blendmaskcol->setEditedState(spotState->blendmaskcol ? Edited : UnEdited);
|
||||||
|
|
||||||
if (!spotState->qualitycurveMethod) {
|
if (!spotState->qualitycurveMethod) {
|
||||||
qualitycurveMethod->set_active_text(M("GENERAL_UNCHANGED"));
|
qualitycurveMethod->set_active_text(M("GENERAL_UNCHANGED"));
|
||||||
@ -3730,6 +3766,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
}
|
}
|
||||||
CCmaskexpshape->setUnChanged(!spotState->CCmaskexpcurve);
|
CCmaskexpshape->setUnChanged(!spotState->CCmaskexpcurve);
|
||||||
LLmaskexpshape->setUnChanged(!spotState->LLmaskexpcurve);
|
LLmaskexpshape->setUnChanged(!spotState->LLmaskexpcurve);
|
||||||
|
HHmaskexpshape->setUnChanged(!spotState->HHmaskexpcurve);
|
||||||
|
|
||||||
// Vibrance
|
// Vibrance
|
||||||
expvibrance->set_inconsistent(!spotState->expvibrance);
|
expvibrance->set_inconsistent(!spotState->expvibrance);
|
||||||
|
@ -79,6 +79,7 @@ private:
|
|||||||
DiagonalCurveEditor* shapeexpos;
|
DiagonalCurveEditor* shapeexpos;
|
||||||
FlatCurveEditor* CCmaskexpshape;
|
FlatCurveEditor* CCmaskexpshape;
|
||||||
FlatCurveEditor* LLmaskexpshape;
|
FlatCurveEditor* LLmaskexpshape;
|
||||||
|
FlatCurveEditor* HHmaskexpshape;
|
||||||
// Vibrance
|
// Vibrance
|
||||||
CurveEditorGroup* const curveEditorGG;
|
CurveEditorGroup* const curveEditorGG;
|
||||||
DiagonalCurveEditor* skinTonesCurve;
|
DiagonalCurveEditor* skinTonesCurve;
|
||||||
@ -93,6 +94,7 @@ private:
|
|||||||
Adjuster* const chroma;
|
Adjuster* const chroma;
|
||||||
Adjuster* const sensi;
|
Adjuster* const sensi;
|
||||||
Adjuster* const structcol;
|
Adjuster* const structcol;
|
||||||
|
Adjuster* const blendmaskcol;
|
||||||
|
|
||||||
// Exposure
|
// Exposure
|
||||||
Adjuster* const expcomp;
|
Adjuster* const expcomp;
|
||||||
|
@ -949,6 +949,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
locallab.spots.at(j).chroma = locallab.spots.at(j).chroma && pSpot.chroma == otherSpot.chroma;
|
locallab.spots.at(j).chroma = locallab.spots.at(j).chroma && pSpot.chroma == otherSpot.chroma;
|
||||||
locallab.spots.at(j).sensi = locallab.spots.at(j).sensi && pSpot.sensi == otherSpot.sensi;
|
locallab.spots.at(j).sensi = locallab.spots.at(j).sensi && pSpot.sensi == otherSpot.sensi;
|
||||||
locallab.spots.at(j).structcol = locallab.spots.at(j).structcol && pSpot.structcol == otherSpot.structcol;
|
locallab.spots.at(j).structcol = locallab.spots.at(j).structcol && pSpot.structcol == otherSpot.structcol;
|
||||||
|
locallab.spots.at(j).blendmaskcol = locallab.spots.at(j).blendmaskcol && pSpot.blendmaskcol == otherSpot.blendmaskcol;
|
||||||
locallab.spots.at(j).qualitycurveMethod = locallab.spots.at(j).qualitycurveMethod && pSpot.qualitycurveMethod == otherSpot.qualitycurveMethod;
|
locallab.spots.at(j).qualitycurveMethod = locallab.spots.at(j).qualitycurveMethod && pSpot.qualitycurveMethod == otherSpot.qualitycurveMethod;
|
||||||
locallab.spots.at(j).showmaskcolMethod = locallab.spots.at(j).showmaskcolMethod && pSpot.showmaskcolMethod == otherSpot.showmaskcolMethod;
|
locallab.spots.at(j).showmaskcolMethod = locallab.spots.at(j).showmaskcolMethod && pSpot.showmaskcolMethod == otherSpot.showmaskcolMethod;
|
||||||
locallab.spots.at(j).llcurve = locallab.spots.at(j).llcurve && pSpot.llcurve == otherSpot.llcurve;
|
locallab.spots.at(j).llcurve = locallab.spots.at(j).llcurve && pSpot.llcurve == otherSpot.llcurve;
|
||||||
@ -973,6 +974,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
locallab.spots.at(j).showmaskexpMethod = locallab.spots.at(j).showmaskexpMethod && pSpot.showmaskexpMethod == otherSpot.showmaskexpMethod;
|
locallab.spots.at(j).showmaskexpMethod = locallab.spots.at(j).showmaskexpMethod && pSpot.showmaskexpMethod == otherSpot.showmaskexpMethod;
|
||||||
locallab.spots.at(j).CCmaskexpcurve = locallab.spots.at(j).CCmaskexpcurve && pSpot.CCmaskexpcurve == otherSpot.CCmaskexpcurve;
|
locallab.spots.at(j).CCmaskexpcurve = locallab.spots.at(j).CCmaskexpcurve && pSpot.CCmaskexpcurve == otherSpot.CCmaskexpcurve;
|
||||||
locallab.spots.at(j).LLmaskexpcurve = locallab.spots.at(j).LLmaskexpcurve && pSpot.LLmaskexpcurve == otherSpot.LLmaskexpcurve;
|
locallab.spots.at(j).LLmaskexpcurve = locallab.spots.at(j).LLmaskexpcurve && pSpot.LLmaskexpcurve == otherSpot.LLmaskexpcurve;
|
||||||
|
locallab.spots.at(j).HHmaskexpcurve = locallab.spots.at(j).HHmaskexpcurve && pSpot.HHmaskexpcurve == otherSpot.HHmaskexpcurve;
|
||||||
// Vibrance
|
// Vibrance
|
||||||
locallab.spots.at(j).expvibrance = locallab.spots.at(j).expvibrance && pSpot.expvibrance == otherSpot.expvibrance;
|
locallab.spots.at(j).expvibrance = locallab.spots.at(j).expvibrance && pSpot.expvibrance == otherSpot.expvibrance;
|
||||||
locallab.spots.at(j).saturated = locallab.spots.at(j).saturated && pSpot.saturated == otherSpot.saturated;
|
locallab.spots.at(j).saturated = locallab.spots.at(j).saturated && pSpot.saturated == otherSpot.saturated;
|
||||||
@ -2581,6 +2583,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.locallab.spots.at(i).structcol = mods.locallab.spots.at(i).structcol;
|
toEdit.locallab.spots.at(i).structcol = mods.locallab.spots.at(i).structcol;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).blendmaskcol) {
|
||||||
|
toEdit.locallab.spots.at(i).blendmaskcol = mods.locallab.spots.at(i).blendmaskcol;
|
||||||
|
}
|
||||||
|
|
||||||
if (locallab.spots.at(i).qualitycurveMethod) {
|
if (locallab.spots.at(i).qualitycurveMethod) {
|
||||||
toEdit.locallab.spots.at(i).qualitycurveMethod = mods.locallab.spots.at(i).qualitycurveMethod;
|
toEdit.locallab.spots.at(i).qualitycurveMethod = mods.locallab.spots.at(i).qualitycurveMethod;
|
||||||
}
|
}
|
||||||
@ -2674,6 +2680,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.locallab.spots.at(i).LLmaskexpcurve = mods.locallab.spots.at(i).LLmaskexpcurve;
|
toEdit.locallab.spots.at(i).LLmaskexpcurve = mods.locallab.spots.at(i).LLmaskexpcurve;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).HHmaskexpcurve) {
|
||||||
|
toEdit.locallab.spots.at(i).HHmaskexpcurve = mods.locallab.spots.at(i).HHmaskexpcurve;
|
||||||
|
}
|
||||||
|
|
||||||
// Vibrance
|
// Vibrance
|
||||||
if (locallab.spots.at(i).expvibrance) {
|
if (locallab.spots.at(i).expvibrance) {
|
||||||
toEdit.locallab.spots.at(i).expvibrance = mods.locallab.spots.at(i).expvibrance;
|
toEdit.locallab.spots.at(i).expvibrance = mods.locallab.spots.at(i).expvibrance;
|
||||||
@ -3926,6 +3936,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
|||||||
chroma(v),
|
chroma(v),
|
||||||
sensi(v),
|
sensi(v),
|
||||||
structcol(v),
|
structcol(v),
|
||||||
|
blendmaskcol(v),
|
||||||
qualitycurveMethod(v),
|
qualitycurveMethod(v),
|
||||||
showmaskcolMethod(v),
|
showmaskcolMethod(v),
|
||||||
llcurve(v),
|
llcurve(v),
|
||||||
@ -3950,6 +3961,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
|||||||
showmaskexpMethod(v),
|
showmaskexpMethod(v),
|
||||||
CCmaskexpcurve(v),
|
CCmaskexpcurve(v),
|
||||||
LLmaskexpcurve(v),
|
LLmaskexpcurve(v),
|
||||||
|
HHmaskexpcurve(v),
|
||||||
// Vibrance
|
// Vibrance
|
||||||
expvibrance(v),
|
expvibrance(v),
|
||||||
saturated(v),
|
saturated(v),
|
||||||
@ -4060,6 +4072,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
|||||||
chroma = v;
|
chroma = v;
|
||||||
sensi = v;
|
sensi = v;
|
||||||
structcol = v;
|
structcol = v;
|
||||||
|
blendmaskcol = v;
|
||||||
qualitycurveMethod = v;
|
qualitycurveMethod = v;
|
||||||
showmaskcolMethod = v;
|
showmaskcolMethod = v;
|
||||||
llcurve = v;
|
llcurve = v;
|
||||||
@ -4084,6 +4097,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
|||||||
showmaskexpMethod = v;
|
showmaskexpMethod = v;
|
||||||
CCmaskexpcurve = v;
|
CCmaskexpcurve = v;
|
||||||
LLmaskexpcurve = v;
|
LLmaskexpcurve = v;
|
||||||
|
HHmaskexpcurve = v;
|
||||||
// Vibrance
|
// Vibrance
|
||||||
expvibrance = v;
|
expvibrance = v;
|
||||||
saturated = v;
|
saturated = v;
|
||||||
|
@ -488,6 +488,7 @@ public:
|
|||||||
bool chroma;
|
bool chroma;
|
||||||
bool sensi;
|
bool sensi;
|
||||||
bool structcol;
|
bool structcol;
|
||||||
|
bool blendmaskcol;
|
||||||
bool qualitycurveMethod;
|
bool qualitycurveMethod;
|
||||||
bool showmaskcolMethod;
|
bool showmaskcolMethod;
|
||||||
bool llcurve;
|
bool llcurve;
|
||||||
@ -512,6 +513,7 @@ public:
|
|||||||
bool showmaskexpMethod;
|
bool showmaskexpMethod;
|
||||||
bool CCmaskexpcurve;
|
bool CCmaskexpcurve;
|
||||||
bool LLmaskexpcurve;
|
bool LLmaskexpcurve;
|
||||||
|
bool HHmaskexpcurve;
|
||||||
// Vibrance
|
// Vibrance
|
||||||
bool expvibrance;
|
bool expvibrance;
|
||||||
bool saturated;
|
bool saturated;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user