Added show modifications to sharpening
This commit is contained in:
parent
478be22dab
commit
6e3fd503cc
@ -2548,6 +2548,7 @@ TP_LOCALLAB_SHARAMOUNT;Amount
|
|||||||
TP_LOCALLAB_SHARBLUR;Blur radius
|
TP_LOCALLAB_SHARBLUR;Blur radius
|
||||||
TP_LOCALLAB_SHARDAMPING;Damping
|
TP_LOCALLAB_SHARDAMPING;Damping
|
||||||
TP_LOCALLAB_SHARITER;Iterations
|
TP_LOCALLAB_SHARITER;Iterations
|
||||||
|
TP_LOCALLAB_SHARFRAME;Modifications
|
||||||
TP_LOCALLAB_SHARP;Sharpening
|
TP_LOCALLAB_SHARP;Sharpening
|
||||||
TP_LOCALLAB_SHARRADIUS;Radius
|
TP_LOCALLAB_SHARRADIUS;Radius
|
||||||
TP_LOCALLAB_SHORTC;Short Curves 'L' Mask
|
TP_LOCALLAB_SHORTC;Short Curves 'L' Mask
|
||||||
|
@ -1131,7 +1131,7 @@ void Crop::update(int todo)
|
|||||||
locwavCurveden, locwavdenutili,
|
locwavCurveden, locwavdenutili,
|
||||||
LHutili, HHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
|
LHutili, HHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
|
||||||
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav,
|
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav,
|
||||||
parent->locallColorMask, parent->locallColorMaskinv, parent->locallExpMask, parent->locallExpMaskinv, parent->locallSHMask, parent->locallSHMaskinv, parent->locallvibMask, parent->localllcMask, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask,
|
parent->locallColorMask, parent->locallColorMaskinv, parent->locallExpMask, parent->locallExpMaskinv, parent->locallSHMask, parent->locallSHMaskinv, parent->locallvibMask, parent->localllcMask, parent->locallsharMask, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask,
|
||||||
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
||||||
if (parent->locallListener) {
|
if (parent->locallListener) {
|
||||||
parent->locallListener->minmaxChanged(maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
parent->locallListener->minmaxChanged(maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
||||||
@ -1168,7 +1168,7 @@ void Crop::update(int todo)
|
|||||||
loccomprewavCurve, loccomprewavutili,
|
loccomprewavCurve, loccomprewavutili,
|
||||||
locwavCurveden, locwavdenutili,
|
locwavCurveden, locwavdenutili,
|
||||||
LHutili, HHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
|
LHutili, HHutili, cclocalcurve2, localcutili, rgblocalcurve2, localrgbutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
|
||||||
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,6 +262,7 @@ ImProcCoordinator::ImProcCoordinator() :
|
|||||||
locallcbMask(0),
|
locallcbMask(0),
|
||||||
locallretiMask(0),
|
locallretiMask(0),
|
||||||
locallsoftMask(0),
|
locallsoftMask(0),
|
||||||
|
locallsharMask(0),
|
||||||
retistrsav(nullptr)
|
retistrsav(nullptr)
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1257,7 +1258,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
locwavCurveden, locwavdenutili,
|
locwavCurveden, locwavdenutili,
|
||||||
LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||||
huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav,
|
huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav,
|
||||||
locallColorMask, locallColorMaskinv, locallExpMask, locallExpMaskinv, locallSHMask, locallSHMaskinv, locallvibMask, localllcMask, locallcbMask, locallretiMask, locallsoftMask, localltmMask, locallblMask,
|
locallColorMask, locallColorMaskinv, locallExpMask, locallExpMaskinv, locallSHMask, locallSHMaskinv, locallvibMask, localllcMask, locallsharMask, locallcbMask, locallretiMask, locallsoftMask, localltmMask, locallblMask,
|
||||||
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
||||||
|
|
||||||
if (locallListener) {
|
if (locallListener) {
|
||||||
@ -1299,7 +1300,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
loccomprewavCurve, loccomprewavutili,
|
loccomprewavCurve, loccomprewavutili,
|
||||||
locwavCurveden, locwavdenutili,
|
locwavCurveden, locwavdenutili,
|
||||||
LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||||
huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -373,6 +373,7 @@ protected:
|
|||||||
int locallsoftMask;
|
int locallsoftMask;
|
||||||
int localltmMask;
|
int localltmMask;
|
||||||
int locallblMask;
|
int locallblMask;
|
||||||
|
int locallsharMask;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -442,7 +443,7 @@ public:
|
|||||||
updaterThreadStart.unlock();
|
updaterThreadStart.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setLocallabMaskVisibility (int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallSHMask, int locallSHMaskinv, int locallvibMask, int localllcMask, int locallcbMask, int locallretiMask, int locallsoftMask, int localltmMask, int locallblMask) override
|
void setLocallabMaskVisibility (int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallSHMask, int locallSHMaskinv, int locallvibMask, int localllcMask, int locallsharMask, int locallcbMask, int locallretiMask, int locallsoftMask, int localltmMask, int locallblMask) override
|
||||||
{
|
{
|
||||||
this->locallColorMask = locallColorMask;
|
this->locallColorMask = locallColorMask;
|
||||||
this->locallColorMaskinv = locallColorMaskinv;
|
this->locallColorMaskinv = locallColorMaskinv;
|
||||||
@ -452,6 +453,7 @@ public:
|
|||||||
this->locallvibMask = locallvibMask;
|
this->locallvibMask = locallvibMask;
|
||||||
this->locallSHMaskinv = locallSHMaskinv;
|
this->locallSHMaskinv = locallSHMaskinv;
|
||||||
this->localllcMask = localllcMask;
|
this->localllcMask = localllcMask;
|
||||||
|
this->locallsharMask = locallsharMask;
|
||||||
this->locallcbMask = locallcbMask;
|
this->locallcbMask = locallcbMask;
|
||||||
this->locallretiMask = locallretiMask;
|
this->locallretiMask = locallretiMask;
|
||||||
this->locallsoftMask = locallsoftMask;
|
this->locallsoftMask = locallsoftMask;
|
||||||
|
@ -308,7 +308,7 @@ public:
|
|||||||
const LocwavCurve & locwavCurveden, bool & locwavdenutili,
|
const LocwavCurve & locwavCurveden, bool & locwavdenutili,
|
||||||
bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localcutili, LUTf & rgblocalcurve, bool & localrgbutili, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc,
|
bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localcutili, LUTf & rgblocalcurve, bool & localrgbutili, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc,
|
||||||
double & huerefblur, double &chromarefblur, double & lumarefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, int &lastsav,
|
double & huerefblur, double &chromarefblur, double & lumarefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, int &lastsav,
|
||||||
int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
|
int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
|
||||||
float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax);
|
float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax);
|
||||||
|
|
||||||
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);
|
||||||
@ -350,7 +350,7 @@ public:
|
|||||||
|
|
||||||
void ColorLight_Local(float moddE, float powdE, int call, LabImage * bufcolorig, LabImage * originalmask, float **buflight, float **bufchro, float **bufchroslid, float ** bufhh, float ** buflightslid, bool &LHutili, bool &HHutili, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, float sobelref, float ** blend2, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, LUTf & lightCurveloc, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);
|
void ColorLight_Local(float moddE, float powdE, int call, LabImage * bufcolorig, LabImage * originalmask, float **buflight, float **bufchro, float **bufchroslid, float ** bufhh, float ** buflightslid, bool &LHutili, bool &HHutili, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, float sobelref, float ** blend2, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, LUTf & lightCurveloc, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);
|
||||||
void InverseColorLight_Local(bool tonequ, bool tonecurv, int sp, int senstype, struct local_params& lp, LabImage * originalmask, LUTf & lightCurveloc, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & exlocalcurve, LUTf & cclocalcurve, float adjustr, bool localcutili, LUTf & lllocalcurve, bool locallutili, LabImage* original, LabImage* transformed, int cx, int cy, const float hueref, const float chromaref, const float lumaref, int sk);
|
void InverseColorLight_Local(bool tonequ, bool tonecurv, int sp, int senstype, struct local_params& lp, LabImage * originalmask, LUTf & lightCurveloc, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & exlocalcurve, LUTf & cclocalcurve, float adjustr, bool localcutili, LUTf & lllocalcurve, bool locallutili, LabImage* original, LabImage* transformed, int cx, int cy, const float hueref, const float chromaref, const float lumaref, int sk);
|
||||||
void Sharp_Local(int call, float **loctemp, int senstype, const float hueref, const float chromaref, const float lumaref, const local_params & lp, LabImage * original, LabImage * transformed, int cx, int cy, int sk);
|
void Sharp_Local(int call, float **loctemp, int senstype, const float hueref, const float chromaref, const float lumaref, local_params & lp, LabImage * original, LabImage * transformed, int cx, int cy, int sk);
|
||||||
|
|
||||||
// void Sharp_Local(int call, float **loctemp, int senstype, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);
|
// void Sharp_Local(int call, float **loctemp, int senstype, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);
|
||||||
void InverseSharp_Local(float **loctemp, const float hueref, const float lumaref, const float chromaref, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);
|
void InverseSharp_Local(float **loctemp, const float hueref, const float lumaref, const float chromaref, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);
|
||||||
|
@ -323,6 +323,7 @@ struct local_params {
|
|||||||
int showmaskSHmetinv;
|
int showmaskSHmetinv;
|
||||||
int showmaskvibmet;
|
int showmaskvibmet;
|
||||||
int showmasklcmet;
|
int showmasklcmet;
|
||||||
|
int showmasksharmet;
|
||||||
int showmaskcbmet;
|
int showmaskcbmet;
|
||||||
int showmaskretimet;
|
int showmaskretimet;
|
||||||
int showmasksoftmet;
|
int showmasksoftmet;
|
||||||
@ -401,6 +402,7 @@ struct local_params {
|
|||||||
bool enaSHMaskinv;
|
bool enaSHMaskinv;
|
||||||
bool enavibMask;
|
bool enavibMask;
|
||||||
bool enalcMask;
|
bool enalcMask;
|
||||||
|
bool enasharMask;
|
||||||
bool enacbMask;
|
bool enacbMask;
|
||||||
bool enaretiMask;
|
bool enaretiMask;
|
||||||
bool enaretiMasktmap;
|
bool enaretiMasktmap;
|
||||||
@ -510,7 +512,7 @@ static void SobelCannyLuma(float **sobelL, float **luma, int bfw, int bfh, float
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locallab, struct local_params& lp, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, const LocwavCurve & locwavCurveden, bool & locwavdenutili)
|
static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locallab, struct local_params& lp, int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask, const LocwavCurve & locwavCurveden, bool & locwavdenutili)
|
||||||
{
|
{
|
||||||
int w = oW;
|
int w = oW;
|
||||||
int h = oH;
|
int h = oH;
|
||||||
@ -524,7 +526,6 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
float strlight = ((float)locallab.spots.at(sp).streng);
|
float strlight = ((float)locallab.spots.at(sp).streng);
|
||||||
float strucc = locallab.spots.at(sp).struc;
|
float strucc = locallab.spots.at(sp).struc;
|
||||||
float laplac = ((float)locallab.spots.at(sp).laplace);
|
float laplac = ((float)locallab.spots.at(sp).laplace);
|
||||||
|
|
||||||
float thre = locallab.spots.at(sp).thresh;
|
float thre = locallab.spots.at(sp).thresh;
|
||||||
|
|
||||||
if (thre > 8.f || thre < 0.f) {//to avoid artifacts if user does not clear cache with new settings. Can be suppressed after
|
if (thre > 8.f || thre < 0.f) {//to avoid artifacts if user does not clear cache with new settings. Can be suppressed after
|
||||||
@ -599,23 +600,25 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
lp.showmaskSHmetinv = llSHMaskinv;
|
lp.showmaskSHmetinv = llSHMaskinv;
|
||||||
lp.showmaskvibmet = llvibMask;
|
lp.showmaskvibmet = llvibMask;
|
||||||
lp.showmasklcmet = lllcMask;
|
lp.showmasklcmet = lllcMask;
|
||||||
|
lp.showmasksharmet = llsharMask;
|
||||||
lp.showmaskcbmet = llcbMask;
|
lp.showmaskcbmet = llcbMask;
|
||||||
lp.showmaskretimet = llretiMask;
|
lp.showmaskretimet = llretiMask;
|
||||||
lp.showmasksoftmet = llsoftMask;
|
lp.showmasksoftmet = llsoftMask;
|
||||||
lp.showmasktmmet = lltmMask;
|
lp.showmasktmmet = lltmMask;
|
||||||
lp.showmaskblmet = llblMask;
|
lp.showmaskblmet = llblMask;
|
||||||
lp.enaColorMask = locallab.spots.at(sp).enaColorMask && llColorMask == 0 && lllcMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
|
lp.enaColorMask = locallab.spots.at(sp).enaColorMask && llColorMask == 0 && lllcMask == 0 && llsharMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
|
||||||
lp.enaColorMaskinv = locallab.spots.at(sp).enaColorMask && llColorMaskinv == 0 && lllcMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
|
lp.enaColorMaskinv = locallab.spots.at(sp).enaColorMask && llColorMaskinv == 0 && lllcMask == 0 && llsharMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
|
||||||
lp.enaExpMask = locallab.spots.at(sp).enaExpMask && llExpMask == 0 && llColorMask == 0 && lllcMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
|
lp.enaExpMask = locallab.spots.at(sp).enaExpMask && llExpMask == 0 && llColorMask == 0 && lllcMask == 0 && llsharMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
|
||||||
lp.enaExpMaskinv = locallab.spots.at(sp).enaExpMask && llExpMaskinv == 0 && llColorMask == 0 && lllcMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
|
lp.enaExpMaskinv = locallab.spots.at(sp).enaExpMask && llExpMaskinv == 0 && llColorMask == 0 && lllcMask == 0 && llsharMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
|
||||||
lp.enaSHMask = locallab.spots.at(sp).enaSHMask && llSHMask == 0 && llColorMask == 0 && lllcMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
|
lp.enaSHMask = locallab.spots.at(sp).enaSHMask && llSHMask == 0 && llColorMask == 0 && lllcMask == 0 && llsharMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
|
||||||
lp.enaSHMaskinv = locallab.spots.at(sp).enaSHMask && llSHMaskinv == 0 && lllcMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
|
lp.enaSHMaskinv = locallab.spots.at(sp).enaSHMask && llSHMaskinv == 0 && lllcMask == 0 && llsharMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
|
||||||
lp.enacbMask = locallab.spots.at(sp).enacbMask && llcbMask == 0 && lllcMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
|
lp.enacbMask = locallab.spots.at(sp).enacbMask && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
|
||||||
lp.enaretiMask = locallab.spots.at(sp).enaretiMask && lllcMask == 0 && llretiMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
|
lp.enaretiMask = locallab.spots.at(sp).enaretiMask && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
|
||||||
lp.enatmMask = locallab.spots.at(sp).enatmMask && lltmMask == 0 && lllcMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llblMask == 0 && llvibMask == 0;
|
lp.enatmMask = locallab.spots.at(sp).enatmMask && lltmMask == 0 && lllcMask == 0 && llsharMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && llblMask == 0 && llvibMask == 0;
|
||||||
lp.enablMask = locallab.spots.at(sp).enablMask && llblMask == 0 && lllcMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0;
|
lp.enablMask = locallab.spots.at(sp).enablMask && llblMask == 0 && lllcMask == 0 && llsharMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0;
|
||||||
lp.enavibMask = locallab.spots.at(sp).enavibMask && llvibMask == 0 && lllcMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llSHMask == 0;
|
lp.enavibMask = locallab.spots.at(sp).enavibMask && llvibMask == 0 && lllcMask == 0 && llsharMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llSHMask == 0;
|
||||||
lp.enalcMask = locallab.spots.at(sp).enalcMask && lllcMask == 0 && llcbMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
|
lp.enalcMask = locallab.spots.at(sp).enalcMask && lllcMask == 0 && llcbMask == 0 && llsharMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
|
||||||
|
lp.enasharMask = lllcMask == 0 && llcbMask == 0 && llsharMask == 0 && llColorMask == 0 && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lltmMask == 0 && llblMask == 0 && llvibMask == 0;
|
||||||
|
|
||||||
// printf("llColorMask=%i lllcMask=%i llExpMask=%i llSHMask=%i llcbMask=%i llretiMask=%i lltmMask=%i llblMask=%i llvibMask=%i\n", llColorMask, lllcMask, llExpMask, llSHMask, llcbMask, llretiMask, lltmMask, llblMask, llvibMask);
|
// printf("llColorMask=%i lllcMask=%i llExpMask=%i llSHMask=%i llcbMask=%i llretiMask=%i lltmMask=%i llblMask=%i llvibMask=%i\n", llColorMask, lllcMask, llExpMask, llSHMask, llcbMask, llretiMask, lltmMask, llblMask, llvibMask);
|
||||||
if (locallab.spots.at(sp).softMethod == "soft") {
|
if (locallab.spots.at(sp).softMethod == "soft") {
|
||||||
@ -1124,16 +1127,16 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
lp.chromacb = chromcbdl;
|
lp.chromacb = chromcbdl;
|
||||||
lp.sfena = locallab.spots.at(sp).expsoft;
|
lp.sfena = locallab.spots.at(sp).expsoft;
|
||||||
lp.expvib = locallab.spots.at(sp).expvibrance;
|
lp.expvib = locallab.spots.at(sp).expvibrance;
|
||||||
lp.colorena = locallab.spots.at(sp).expcolor && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0; // Color & Light tool is deactivated if Exposure mask is visible or SHMask
|
lp.colorena = locallab.spots.at(sp).expcolor && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0; // Color & Light tool is deactivated if Exposure mask is visible or SHMask
|
||||||
lp.blurena = locallab.spots.at(sp).expblur && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0;
|
lp.blurena = locallab.spots.at(sp).expblur && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0;
|
||||||
lp.tonemapena = locallab.spots.at(sp).exptonemap && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && llColorMask == 0 && llvibMask == 0;
|
lp.tonemapena = locallab.spots.at(sp).exptonemap && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llColorMask == 0 && llvibMask == 0;
|
||||||
lp.retiena = locallab.spots.at(sp).expreti && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && llSHMask == 0;
|
lp.retiena = locallab.spots.at(sp).expreti && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && llSHMask == 0;
|
||||||
lp.lcena = locallab.spots.at(sp).expcontrast && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && llSHMask == 0;
|
lp.lcena = locallab.spots.at(sp).expcontrast && llExpMask == 0 && llSHMask == 0 && llcbMask == 0 && llsharMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0 && llSHMask == 0;
|
||||||
lp.cbdlena = locallab.spots.at(sp).expcbdl && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lllcMask == 0 && lllcMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0;
|
lp.cbdlena = locallab.spots.at(sp).expcbdl && llExpMask == 0 && llSHMask == 0 && llretiMask == 0 && lllcMask == 0 && llsharMask == 0 && lllcMask == 0 && llColorMask == 0 && lltmMask == 0 && llvibMask == 0;
|
||||||
lp.exposena = locallab.spots.at(sp).expexpose && llColorMask == 0 && llSHMask == 0 && lllcMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0; // Exposure tool is deactivated if Color & Light mask SHmask is visible
|
lp.exposena = locallab.spots.at(sp).expexpose && llColorMask == 0 && llSHMask == 0 && lllcMask == 0 && llsharMask == 0 && llcbMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0; // Exposure tool is deactivated if Color & Light mask SHmask is visible
|
||||||
lp.hsena = locallab.spots.at(sp).expshadhigh && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0;// Shadow Highlight tool is deactivated if Color & Light mask or SHmask is visible
|
lp.hsena = locallab.spots.at(sp).expshadhigh && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && lltmMask == 0 && llvibMask == 0;// Shadow Highlight tool is deactivated if Color & Light mask or SHmask is visible
|
||||||
lp.vibena = locallab.spots.at(sp).expvibrance && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0;// vibrance tool is deactivated if Color & Light mask or SHmask is visible
|
lp.vibena = locallab.spots.at(sp).expvibrance && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llsharMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0;// vibrance tool is deactivated if Color & Light mask or SHmask is visible
|
||||||
lp.sharpena = locallab.spots.at(sp).expsharp;
|
lp.sharpena = locallab.spots.at(sp).expsharp && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && lllcMask == 0 && llretiMask == 0 && llcbMask == 0 && lltmMask == 0 && llSHMask == 0;
|
||||||
lp.sensv = local_sensiv;
|
lp.sensv = local_sensiv;
|
||||||
lp.past = chromaPastel;
|
lp.past = chromaPastel;
|
||||||
lp.satur = chromaSatur;
|
lp.satur = chromaSatur;
|
||||||
@ -4407,11 +4410,13 @@ void ImProcFunctions::InverseSharp_Local(float **loctemp, const float hueref, co
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ImProcFunctions::Sharp_Local(int call, float **loctemp, int senstype, const float hueref, const float chromaref, const float lumaref, const local_params & lp, LabImage * original, LabImage * transformed, int cx, int cy, int sk)
|
void ImProcFunctions::Sharp_Local(int call, float **loctemp, int senstype, const float hueref, const float chromaref, const float lumaref, local_params & lp, LabImage * original, LabImage * transformed, int cx, int cy, int sk)
|
||||||
{
|
{
|
||||||
BENCHFUN
|
BENCHFUN
|
||||||
const float ach = lp.trans / 100.f;
|
const float ach = lp.trans / 100.f;
|
||||||
const float varsens = senstype == 1 ? lp.senslc : lp.senssha;
|
const float varsens = senstype == 1 ? lp.senslc : lp.senssha;
|
||||||
|
const bool sharshow = (lp.showmasksharmet == 1);
|
||||||
|
const bool previewshar = (lp.showmasksharmet == 2);
|
||||||
|
|
||||||
//balance deltaE
|
//balance deltaE
|
||||||
//balance deltaE
|
//balance deltaE
|
||||||
@ -4425,6 +4430,17 @@ void ImProcFunctions::Sharp_Local(int call, float **loctemp, int senstype, const
|
|||||||
kab /= SQR(327.68f);
|
kab /= SQR(327.68f);
|
||||||
kL /= SQR(327.68f);
|
kL /= SQR(327.68f);
|
||||||
|
|
||||||
|
if (lp.colorde == 0) {
|
||||||
|
lp.colorde = -1;//to avoid black
|
||||||
|
}
|
||||||
|
|
||||||
|
float ampli = 1.f + fabs(lp.colorde);
|
||||||
|
ampli = 2.f + 0.5f * (ampli - 2.f);
|
||||||
|
|
||||||
|
float darklim = 5000.f;
|
||||||
|
float aadark = -1.f;
|
||||||
|
float bbdark = darklim;
|
||||||
|
|
||||||
const int GW = transformed->W;
|
const int GW = transformed->W;
|
||||||
const int GH = transformed->H;
|
const int GH = transformed->H;
|
||||||
|
|
||||||
@ -4491,7 +4507,9 @@ void ImProcFunctions::Sharp_Local(int call, float **loctemp, int senstype, const
|
|||||||
|
|
||||||
|
|
||||||
float reducdE = 0.f;
|
float reducdE = 0.f;
|
||||||
|
float reducview = 0.f;
|
||||||
calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, varsens, reducdE);
|
calcreducdE(dE, maxdE, mindE, maxdElim, mindElim, lp.iterat, limscope, varsens, reducdE);
|
||||||
|
reducview = reducdE;
|
||||||
reducdE *= localFactor;
|
reducdE *= localFactor;
|
||||||
|
|
||||||
float difL;
|
float difL;
|
||||||
@ -4503,6 +4521,25 @@ void ImProcFunctions::Sharp_Local(int call, float **loctemp, int senstype, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
transformed->L[y][x] = CLIP(original->L[y][x] + difL * reducdE);
|
transformed->L[y][x] = CLIP(original->L[y][x] + difL * reducdE);
|
||||||
|
if(sharshow) {
|
||||||
|
transformed->a[y][x] = 0.f;
|
||||||
|
transformed->b[y][x] = 20.f * difL * reducdE;
|
||||||
|
} else if(previewshar) {
|
||||||
|
float difbdisp = reducdE * 10000.f * lp.colorde;
|
||||||
|
if (transformed->L[y][x] < darklim) { //enhance dark luminance as user can see!
|
||||||
|
float dark = transformed->L[y][x];
|
||||||
|
transformed->L[y][x] = dark * aadark + bbdark;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lp.colorde <= 0) {
|
||||||
|
transformed->a[y][x] = 0.f;
|
||||||
|
transformed->b[y][x] = difbdisp;
|
||||||
|
} else {
|
||||||
|
transformed->a[y][x] = -difbdisp;
|
||||||
|
transformed->b[y][x] = 0.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5673,7 +5710,7 @@ void ImProcFunctions::calc_ref(int sp, LabImage * original, LabImage * transform
|
|||||||
if (params->locallab.enabled) {
|
if (params->locallab.enabled) {
|
||||||
//always calculate hueref, chromaref, lumaref before others operations use in normal mode for all modules exceprt denoise
|
//always calculate hueref, chromaref, lumaref before others operations use in normal mode for all modules exceprt denoise
|
||||||
struct local_params lp;
|
struct local_params lp;
|
||||||
calcLocalParams(sp, oW, oH, params->locallab, lp, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, locwavCurveden, locwavdenutili);
|
calcLocalParams(sp, oW, oH, params->locallab, lp, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, locwavCurveden, locwavdenutili);
|
||||||
int begy = lp.yc - lp.lyT;
|
int begy = lp.yc - lp.lyT;
|
||||||
int begx = lp.xc - lp.lxL;
|
int begx = lp.xc - lp.lxL;
|
||||||
int yEn = lp.yc + lp.ly;
|
int yEn = lp.yc + lp.ly;
|
||||||
@ -9499,7 +9536,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
const LocwavCurve & locwavCurveden, bool & locwavdenutili,
|
const LocwavCurve & locwavCurveden, bool & locwavdenutili,
|
||||||
bool & LHutili, bool & HHutili, LUTf & cclocalcurve, bool & localcutili, LUTf & rgblocalcurve, bool & localrgbutili, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc,
|
bool & LHutili, bool & HHutili, LUTf & cclocalcurve, bool & localcutili, LUTf & rgblocalcurve, bool & localrgbutili, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurveloc, LUTf & shtonecurveloc, LUTf & tonecurveloc, LUTf & lightCurveloc,
|
||||||
double & huerefblur, double & chromarefblur, double & lumarefblur, double & hueref, double & chromaref, double & lumaref, double & sobelref, int &lastsav,
|
double & huerefblur, double & chromarefblur, double & lumarefblur, double & hueref, double & chromaref, double & lumaref, double & sobelref, int &lastsav,
|
||||||
int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
|
int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int lllcMask, int llsharMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
|
||||||
float & minCD, float & maxCD, float & mini, float & maxi, float & Tmean, float & Tsigma, float & Tmin, float & Tmax)
|
float & minCD, float & maxCD, float & mini, float & maxi, float & Tmean, float & Tsigma, float & Tmin, float & Tmax)
|
||||||
{
|
{
|
||||||
//general call of others functions : important return hueref, chromaref, lumaref
|
//general call of others functions : important return hueref, chromaref, lumaref
|
||||||
@ -9514,7 +9551,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
int del = 3; // to avoid crash with [loy - begy] and [lox - begx] and bfh bfw // with gtk2 [loy - begy-1] [lox - begx -1 ] and del = 1
|
int del = 3; // to avoid crash with [loy - begy] and [lox - begx] and bfh bfw // with gtk2 [loy - begy-1] [lox - begx -1 ] and del = 1
|
||||||
int delxy = 0;
|
int delxy = 0;
|
||||||
struct local_params lp;
|
struct local_params lp;
|
||||||
calcLocalParams(sp, oW, oH, params->locallab, lp, llColorMask, llColorMaskinv, llExpMask, llExpMaskinv, llSHMask, llSHMaskinv, llvibMask, lllcMask, llcbMask, llretiMask, llsoftMask, lltmMask, llblMask, locwavCurveden, locwavdenutili);
|
calcLocalParams(sp, oW, oH, params->locallab, lp, llColorMask, llColorMaskinv, llExpMask, llExpMaskinv, llSHMask, llSHMaskinv, llvibMask, lllcMask, llsharMask, llcbMask, llretiMask, llsoftMask, lltmMask, llblMask, locwavCurveden, locwavdenutili);
|
||||||
|
|
||||||
const float radius = lp.rad / (sk * 1.4f); //0 to 70 ==> see skip
|
const float radius = lp.rad / (sk * 1.4f); //0 to 70 ==> see skip
|
||||||
int strred = 1;//(lp.strucc - 1);
|
int strred = 1;//(lp.strucc - 1);
|
||||||
|
@ -920,6 +920,7 @@ enum ProcEventCode {
|
|||||||
Evlocallabstrlog = 891,
|
Evlocallabstrlog = 891,
|
||||||
Evlocallabanglog = 892,
|
Evlocallabanglog = 892,
|
||||||
EvLocallabSpotcolorde = 893,
|
EvLocallabSpotcolorde = 893,
|
||||||
|
EvlocallabshowmasksharMethod = 894,
|
||||||
NUMOFEVENTS
|
NUMOFEVENTS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -923,7 +923,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, //Evlocallabwavgradl
|
LUMINANCECURVE, //Evlocallabwavgradl
|
||||||
LUMINANCECURVE, //Evlocallabstrlog
|
LUMINANCECURVE, //Evlocallabstrlog
|
||||||
LUMINANCECURVE, //Evlocallabanglog
|
LUMINANCECURVE, //Evlocallabanglog
|
||||||
LUMINANCECURVE //EvLocallabSpotcolorde
|
LUMINANCECURVE, //EvLocallabSpotcolorde
|
||||||
|
LUMINANCECURVE // EvlocallabshowmasksharMethod
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -524,7 +524,7 @@ public:
|
|||||||
|
|
||||||
virtual void updateUnLock() = 0;
|
virtual void updateUnLock() = 0;
|
||||||
|
|
||||||
virtual void setLocallabMaskVisibility(int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallvibMask, int locallSHMask, int locallSHMaskinv, int localllcMask, int locallcbMask, int locallretiMask, int locallsoftMask, int localltmMask, int locallblMask) = 0;
|
virtual void setLocallabMaskVisibility(int locallColorMask, int locallColorMaskinv, int locallExpMask, int locallExpMaskinv, int locallvibMask, int locallSHMask, int locallSHMaskinv, int localllcMask, int locallsharMask, int locallcbMask, int locallretiMask, int locallsoftMask, int localltmMask, int locallblMask) = 0;
|
||||||
|
|
||||||
/** Creates and returns a Crop instance that acts as a window on the image
|
/** Creates and returns a Crop instance that acts as a window on the image
|
||||||
* @param editDataProvider pointer to the EditDataProvider that communicates with the EditSubscriber
|
* @param editDataProvider pointer to the EditDataProvider that communicates with the EditSubscriber
|
||||||
|
@ -1328,7 +1328,7 @@ private:
|
|||||||
loccomprewavCurve, loccomprewavutili,
|
loccomprewavCurve, loccomprewavutili,
|
||||||
locwavCurveden, locwavdenutili,
|
locwavCurveden, locwavdenutili,
|
||||||
LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
LHutili, HHutili, cclocalcurve, localcutili, rgblocalcurve, localrgbutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
|
||||||
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
|
||||||
|
|
||||||
lastorigView->CopyFrom(labView);
|
lastorigView->CopyFrom(labView);
|
||||||
|
@ -744,6 +744,9 @@ showmasktmMethod(Gtk::manage(new MyComboBoxText())),
|
|||||||
// Retinex
|
// Retinex
|
||||||
retinexMethod(Gtk::manage(new MyComboBoxText())),
|
retinexMethod(Gtk::manage(new MyComboBoxText())),
|
||||||
showmaskretiMethod(Gtk::manage(new MyComboBoxText())),
|
showmaskretiMethod(Gtk::manage(new MyComboBoxText())),
|
||||||
|
//sharp
|
||||||
|
showmasksharMethod(Gtk::manage(new MyComboBoxText())),
|
||||||
|
|
||||||
//Local contrast
|
//Local contrast
|
||||||
localcontMethod(Gtk::manage(new MyComboBoxText())),
|
localcontMethod(Gtk::manage(new MyComboBoxText())),
|
||||||
csThreshold(Gtk::manage(new ThresholdAdjuster(M("TP_LOCALLAB_CSTHRESHOLD"), 0, 9, 0, 0, 6, 6, 0, false))),
|
csThreshold(Gtk::manage(new ThresholdAdjuster(M("TP_LOCALLAB_CSTHRESHOLD"), 0, 9, 0, 0, 6, 6, 0, false))),
|
||||||
@ -779,6 +782,7 @@ dehaFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_DEHAFRA")))),
|
|||||||
retiFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_RETIFRA")))),
|
retiFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_RETIFRA")))),
|
||||||
retitoolFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_RETITOOLFRA")))),
|
retitoolFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_RETITOOLFRA")))),
|
||||||
residFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_RESID")))),
|
residFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_RESID")))),
|
||||||
|
sharFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SHARFRAME")))),
|
||||||
clariFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_CLARIFRA")))),
|
clariFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_CLARIFRA")))),
|
||||||
gradwavFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRADWAVFRA")))),
|
gradwavFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRADWAVFRA")))),
|
||||||
blurlevelFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_BLURLEVELFRA")))),
|
blurlevelFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_BLURLEVELFRA")))),
|
||||||
@ -2802,6 +2806,21 @@ pe(nullptr)
|
|||||||
|
|
||||||
inversshaConn = inverssha->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::inversshaChanged));
|
inversshaConn = inverssha->signal_toggled().connect(sigc::mem_fun(*this, &Locallab::inversshaChanged));
|
||||||
|
|
||||||
|
showmasksharMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||||
|
showmasksharMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
|
||||||
|
showmasksharMethod->append(M("TP_LOCALLAB_PREVIEWSEL"));
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
|
|
||||||
|
if (showtooltip) {
|
||||||
|
showmasksharMethod->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKCOL_TOOLTIP"));
|
||||||
|
}
|
||||||
|
|
||||||
|
showmasksharMethodConn = showmasksharMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::showmasksharMethodChanged));
|
||||||
|
sharFrame->set_label_align(0.025, 0.5);
|
||||||
|
ToolParamBlock* const sharfBox = Gtk::manage(new ToolParamBlock());
|
||||||
|
sharfBox->pack_start(*showmasksharMethod);
|
||||||
|
sharFrame->add(*sharfBox);
|
||||||
|
|
||||||
ToolParamBlock* const sharpBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const sharpBox = Gtk::manage(new ToolParamBlock());
|
||||||
sharpBox->pack_start(*sharcontrast);
|
sharpBox->pack_start(*sharcontrast);
|
||||||
sharpBox->pack_start(*sharradius);
|
sharpBox->pack_start(*sharradius);
|
||||||
@ -2821,6 +2840,7 @@ pe(nullptr)
|
|||||||
|
|
||||||
sharpBox->pack_start(*sensisha);
|
sharpBox->pack_start(*sensisha);
|
||||||
sharpBox->pack_start(*inverssha);
|
sharpBox->pack_start(*inverssha);
|
||||||
|
sharpBox->pack_start(*sharFrame);
|
||||||
expsharp->add(*sharpBox, false);
|
expsharp->add(*sharpBox, false);
|
||||||
expsharp->setLevel(2);
|
expsharp->setLevel(2);
|
||||||
|
|
||||||
@ -7164,6 +7184,7 @@ void Locallab::showmaskcolMethodChanged()
|
|||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
showmasklcMethod->set_active(0);
|
showmasklcMethod->set_active(0);
|
||||||
showmaskcbMethod->set_active(0);
|
showmaskcbMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
|
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
@ -7190,6 +7211,7 @@ void Locallab::showmaskcolMethodChangedinv()
|
|||||||
showmasksoftMethod->set_active(0);
|
showmasksoftMethod->set_active(0);
|
||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7215,6 +7237,7 @@ void Locallab::showmaskexpMethodChangedinv()
|
|||||||
showmasksoftMethod->set_active(0);
|
showmasksoftMethod->set_active(0);
|
||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7222,6 +7245,32 @@ void Locallab::showmaskexpMethodChangedinv()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Locallab::showmasksharMethodChanged()
|
||||||
|
{
|
||||||
|
// printf("showmasksharMethodChanged\n");
|
||||||
|
|
||||||
|
// When one mask state is changed, other masks are deactivated
|
||||||
|
disableListener();
|
||||||
|
showmaskcolMethodinv->set_active(0);
|
||||||
|
showmaskcolMethod->set_active(0);
|
||||||
|
showmaskexpMethod->set_active(0);
|
||||||
|
showmaskSHMethod->set_active(0);
|
||||||
|
showmaskSHMethodinv->set_active(0);
|
||||||
|
showmasklcMethod->set_active(0);
|
||||||
|
showmaskcbMethod->set_active(0);
|
||||||
|
showmaskvibMethod->set_active(0);
|
||||||
|
showmaskretiMethod->set_active(0);
|
||||||
|
showmasksoftMethod->set_active(0);
|
||||||
|
showmasktmMethod->set_active(0);
|
||||||
|
showmaskblMethod->set_active(0);
|
||||||
|
showmaskexpMethodinv->set_active(0);
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(EvlocallabshowmasksharMethod, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Locallab::showmaskexpMethodChanged()
|
void Locallab::showmaskexpMethodChanged()
|
||||||
{
|
{
|
||||||
// printf("showmaskexpMethodChanged\n");
|
// printf("showmaskexpMethodChanged\n");
|
||||||
@ -7240,6 +7289,7 @@ void Locallab::showmaskexpMethodChanged()
|
|||||||
showmasksoftMethod->set_active(0);
|
showmasksoftMethod->set_active(0);
|
||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7360,6 +7410,7 @@ void Locallab::showmaskSHMethodChanged()
|
|||||||
showmasksoftMethod->set_active(0);
|
showmasksoftMethod->set_active(0);
|
||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7385,6 +7436,7 @@ void Locallab::showmaskvibMethodChanged()
|
|||||||
showmasksoftMethod->set_active(0);
|
showmasksoftMethod->set_active(0);
|
||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7410,6 +7462,7 @@ void Locallab::showmaskSHMethodChangedinv()
|
|||||||
showmasksoftMethod->set_active(0);
|
showmasksoftMethod->set_active(0);
|
||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7435,6 +7488,7 @@ void Locallab::showmasklcMethodChanged()
|
|||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
showmaskcbMethod->set_active(0);
|
showmaskcbMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7461,6 +7515,7 @@ void Locallab::showmaskcbMethodChanged()
|
|||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
showmasklcMethod->set_active(0);
|
showmasklcMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7486,6 +7541,7 @@ void Locallab::showmaskblMethodChanged()
|
|||||||
showmaskretiMethod->set_active(0);
|
showmaskretiMethod->set_active(0);
|
||||||
showmasksoftMethod->set_active(0);
|
showmasksoftMethod->set_active(0);
|
||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7513,6 +7569,7 @@ void Locallab::showmasktmMethodChanged()
|
|||||||
showmaskretiMethod->set_active(0);
|
showmaskretiMethod->set_active(0);
|
||||||
showmasksoftMethod->set_active(0);
|
showmasksoftMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7539,6 +7596,7 @@ void Locallab::showmaskretiMethodChanged()
|
|||||||
showmasksoftMethod->set_active(0);
|
showmasksoftMethod->set_active(0);
|
||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7564,6 +7622,7 @@ void Locallab::showmasksoftMethodChanged()
|
|||||||
showmaskretiMethod->set_active(0);
|
showmaskretiMethod->set_active(0);
|
||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
if (listener) {
|
if (listener) {
|
||||||
@ -7589,6 +7648,7 @@ void Locallab::resetMaskVisibility()
|
|||||||
showmasksoftMethod->set_active(0);
|
showmasksoftMethod->set_active(0);
|
||||||
showmasktmMethod->set_active(0);
|
showmasktmMethod->set_active(0);
|
||||||
showmaskblMethod->set_active(0);
|
showmaskblMethod->set_active(0);
|
||||||
|
showmasksharMethod->set_active(0);
|
||||||
enableListener();
|
enableListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7608,6 +7668,7 @@ Locallab::llMaskVisibility* Locallab::getMaskVisibility()
|
|||||||
maskStruct->softMask = showmasksoftMethod->get_active_row_number();
|
maskStruct->softMask = showmasksoftMethod->get_active_row_number();
|
||||||
maskStruct->tmMask = showmasktmMethod->get_active_row_number();
|
maskStruct->tmMask = showmasktmMethod->get_active_row_number();
|
||||||
maskStruct->blMask = showmaskblMethod->get_active_row_number();
|
maskStruct->blMask = showmaskblMethod->get_active_row_number();
|
||||||
|
maskStruct->sharMask = showmasksharMethod->get_active_row_number();
|
||||||
return maskStruct;
|
return maskStruct;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11415,6 +11476,7 @@ void Locallab::setBatchMode(bool batchMode)
|
|||||||
showmaskretiMethod->hide();
|
showmaskretiMethod->hide();
|
||||||
showmasktmMethod->hide();
|
showmasktmMethod->hide();
|
||||||
showmaskblMethod->hide();
|
showmaskblMethod->hide();
|
||||||
|
showmasksharMethod->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<double> Locallab::getCurvePoints(ThresholdSelector* tAdjuster) const
|
std::vector<double> Locallab::getCurvePoints(ThresholdSelector* tAdjuster) const
|
||||||
@ -11640,6 +11702,8 @@ void Locallab::enableListener()
|
|||||||
enablecbdlConn.block(false);
|
enablecbdlConn.block(false);
|
||||||
enacbMaskConn.block(false);
|
enacbMaskConn.block(false);
|
||||||
showmaskcbMethodConn.block(false);
|
showmaskcbMethodConn.block(false);
|
||||||
|
//sharp
|
||||||
|
showmasksharMethodConn.block(false);
|
||||||
// Denoise
|
// Denoise
|
||||||
enabledenoiConn.block(false);
|
enabledenoiConn.block(false);
|
||||||
//encoding log
|
//encoding log
|
||||||
@ -11743,6 +11807,8 @@ void Locallab::disableListener()
|
|||||||
enablecbdlConn.block(true);
|
enablecbdlConn.block(true);
|
||||||
enacbMaskConn.block(true);
|
enacbMaskConn.block(true);
|
||||||
showmaskcbMethodConn.block(true);
|
showmaskcbMethodConn.block(true);
|
||||||
|
//sharp
|
||||||
|
showmasksharMethodConn.block(true);
|
||||||
// Denoise
|
// Denoise
|
||||||
enabledenoiConn.block(true);
|
enabledenoiConn.block(true);
|
||||||
//encoding log
|
//encoding log
|
||||||
|
@ -581,6 +581,10 @@ private:
|
|||||||
sigc::connection retinexMethodConn;
|
sigc::connection retinexMethodConn;
|
||||||
MyComboBoxText* const showmaskretiMethod;
|
MyComboBoxText* const showmaskretiMethod;
|
||||||
sigc::connection showmaskretiMethodConn;
|
sigc::connection showmaskretiMethodConn;
|
||||||
|
//Sharpening
|
||||||
|
MyComboBoxText* const showmasksharMethod;
|
||||||
|
sigc::connection showmasksharMethodConn;
|
||||||
|
|
||||||
//local contrast
|
//local contrast
|
||||||
MyComboBoxText* const localcontMethod;
|
MyComboBoxText* const localcontMethod;
|
||||||
sigc::connection localcontMethodConn;
|
sigc::connection localcontMethodConn;
|
||||||
@ -621,6 +625,7 @@ private:
|
|||||||
Gtk::Frame* const retiFrame;
|
Gtk::Frame* const retiFrame;
|
||||||
Gtk::Frame* const retitoolFrame;
|
Gtk::Frame* const retitoolFrame;
|
||||||
Gtk::Frame* const residFrame;
|
Gtk::Frame* const residFrame;
|
||||||
|
Gtk::Frame* const sharFrame;
|
||||||
Gtk::Frame* const clariFrame;
|
Gtk::Frame* const clariFrame;
|
||||||
Gtk::Frame* const gradwavFrame;
|
Gtk::Frame* const gradwavFrame;
|
||||||
Gtk::Frame* const blurlevelFrame;
|
Gtk::Frame* const blurlevelFrame;
|
||||||
@ -759,6 +764,9 @@ private:
|
|||||||
// Retinex
|
// Retinex
|
||||||
void retinexMethodChanged();
|
void retinexMethodChanged();
|
||||||
void showmaskretiMethodChanged();
|
void showmaskretiMethodChanged();
|
||||||
|
//sharp
|
||||||
|
void showmasksharMethodChanged();
|
||||||
|
|
||||||
//Local contrast
|
//Local contrast
|
||||||
void localcontMethodChanged();
|
void localcontMethodChanged();
|
||||||
void showmasklcMethodChanged();
|
void showmasklcMethodChanged();
|
||||||
@ -817,6 +825,7 @@ public:
|
|||||||
int softMask;
|
int softMask;
|
||||||
int tmMask;
|
int tmMask;
|
||||||
int blMask;
|
int blMask;
|
||||||
|
int sharMask;
|
||||||
};
|
};
|
||||||
|
|
||||||
void resetMaskVisibility();
|
void resetMaskVisibility();
|
||||||
|
@ -509,9 +509,9 @@ void ToolPanelCoordinator::panelChanged(const rtengine::ProcEvent& event, const
|
|||||||
// Manage Locallab mask visibility
|
// Manage Locallab mask visibility
|
||||||
if (event == rtengine::EvlocallabshowmaskcolMethod || event == rtengine::EvlocallabshowmaskcolMethodinv ||event == rtengine::EvlocallabshowmaskexpMethod ||event == rtengine::EvlocallabshowmaskexpMethodinv
|
if (event == rtengine::EvlocallabshowmaskcolMethod || event == rtengine::EvlocallabshowmaskcolMethodinv ||event == rtengine::EvlocallabshowmaskexpMethod ||event == rtengine::EvlocallabshowmaskexpMethodinv
|
||||||
|| event == rtengine::EvlocallabshowmaskSHMethod || event == rtengine::EvlocallabshowmaskSHMethodinv || event == rtengine::EvlocallabshowmaskvibMethod || event == rtengine::EvlocallabshowmasksoftMethod
|
|| event == rtengine::EvlocallabshowmaskSHMethod || event == rtengine::EvlocallabshowmaskSHMethodinv || event == rtengine::EvlocallabshowmaskvibMethod || event == rtengine::EvlocallabshowmasksoftMethod
|
||||||
|| event == rtengine::EvlocallabshowmaskcbMethod || event == rtengine::EvlocallabshowmasklcMethod || event == rtengine::EvlocallabshowmaskretiMethod || event == rtengine::EvlocallabshowmasktmMethod || event == rtengine::EvlocallabshowmaskblMethod) {
|
|| event == rtengine::EvlocallabshowmaskcbMethod || event == rtengine::EvlocallabshowmasklcMethod || event == rtengine::EvlocallabshowmasksharMethod || event == rtengine::EvlocallabshowmaskretiMethod || event == rtengine::EvlocallabshowmasktmMethod || event == rtengine::EvlocallabshowmaskblMethod) {
|
||||||
Locallab::llMaskVisibility* maskStruc = locallab->getMaskVisibility();
|
Locallab::llMaskVisibility* maskStruc = locallab->getMaskVisibility();
|
||||||
ipc->setLocallabMaskVisibility(maskStruc->colorMask, maskStruc->colorMaskinv, maskStruc->expMask, maskStruc->expMaskinv, maskStruc->SHMask, maskStruc->SHMaskinv, maskStruc->vibMask, maskStruc->lcMask, maskStruc->cbMask, maskStruc->retiMask, maskStruc->softMask, maskStruc->tmMask, maskStruc->blMask);
|
ipc->setLocallabMaskVisibility(maskStruc->colorMask, maskStruc->colorMaskinv, maskStruc->expMask, maskStruc->expMaskinv, maskStruc->SHMask, maskStruc->SHMaskinv, maskStruc->vibMask, maskStruc->lcMask, maskStruc->sharMask, maskStruc->cbMask, maskStruc->retiMask, maskStruc->softMask, maskStruc->tmMask, maskStruc->blMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
ipc->endUpdateParams(changeFlags); // starts the IPC processing
|
ipc->endUpdateParams(changeFlags); // starts the IPC processing
|
||||||
@ -619,7 +619,7 @@ void ToolPanelCoordinator::profileChange(
|
|||||||
// Reset Locallab mask visibility when a picture is loaded
|
// Reset Locallab mask visibility when a picture is loaded
|
||||||
if (event == rtengine::EvPhotoLoaded) {
|
if (event == rtengine::EvPhotoLoaded) {
|
||||||
locallab->resetMaskVisibility();
|
locallab->resetMaskVisibility();
|
||||||
ipc->setLocallabMaskVisibility(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
ipc->setLocallabMaskVisibility(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// start the IPC processing
|
// start the IPC processing
|
||||||
|
Loading…
x
Reference in New Issue
Block a user