Improve retinex_pde with show processus
This commit is contained in:
parent
fc4fd82afb
commit
3469bc9535
@ -2105,6 +2105,12 @@ TP_LOCALLAB_RETI_FFTW_TOOLTIP;FFT improve quality and allow big radius.\nThe tre
|
|||||||
TP_LOCALLAB_TRANSMISSIONGAIN;Transmission gain
|
TP_LOCALLAB_TRANSMISSIONGAIN;Transmission gain
|
||||||
TP_LOCALLAB_STREN;Compression Strength
|
TP_LOCALLAB_STREN;Compression Strength
|
||||||
TP_LOCALLAB_STRGRID;Strength
|
TP_LOCALLAB_STRGRID;Strength
|
||||||
|
TP_LOCALLAB_SHOWLAPLACE;Laplacian (first)
|
||||||
|
TP_LOCALLAB_SHOWFOURIER;Fourier (dct)
|
||||||
|
TP_LOCALLAB_SHOWPOISSON;Poisson (pde)
|
||||||
|
TP_LOCALLAB_SHOWDCT;Show process Fourier
|
||||||
|
TP_LOCALLAB_SHOWMASKSOFT_TOOLTIP;Show process Fourier:\n\nshows the different stages of the process.\nLaplace - builds the second derivative according to the threshold (first step).\nFourier -shows the transformed Laplacian with DCT.\nPoisson - show solution of Poisson DCE.\nNormalize - show result whithout normalization luminance.
|
||||||
|
TP_LOCALLAB_SHOWNORMAL;Normalize luminance (no)
|
||||||
TP_LOCALLAB_TM;Tone Mapping
|
TP_LOCALLAB_TM;Tone Mapping
|
||||||
TP_LOCALLAB_STR;Strength
|
TP_LOCALLAB_STR;Strength
|
||||||
TP_LOCALLAB_NEIGH;Radius
|
TP_LOCALLAB_NEIGH;Radius
|
||||||
|
@ -995,14 +995,14 @@ void Crop::update(int todo)
|
|||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||||
locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili,
|
locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili,
|
||||||
LHutili, HHutili, cclocalcurve2, localcutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, parent->locallColorMask, parent->locallExpMask, parent->locallSHMask, parent->locallcbMask, parent->locallretiMask);
|
LHutili, HHutili, cclocalcurve2, localcutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, parent->locallColorMask, parent->locallExpMask, parent->locallSHMask, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask);
|
||||||
} else {
|
} else {
|
||||||
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,locallutili,
|
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,locallutili,
|
||||||
loclhCurve, lochhCurve, locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
loclhCurve, lochhCurve, locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||||
locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili,
|
locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili,
|
||||||
LHutili, HHutili, cclocalcurve2, localcutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, 0, 0, 0, 0, 0);
|
LHutili, HHutili, cclocalcurve2, localcutili, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, 0, 0, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
lllocalcurve2.clear();
|
lllocalcurve2.clear();
|
||||||
lightCurveloc2.clear();
|
lightCurveloc2.clear();
|
||||||
|
@ -207,6 +207,7 @@ ImProcCoordinator::ImProcCoordinator() :
|
|||||||
locallSHMask(0),
|
locallSHMask(0),
|
||||||
locallcbMask(0),
|
locallcbMask(0),
|
||||||
locallretiMask(0),
|
locallretiMask(0),
|
||||||
|
locallsoftMask(0),
|
||||||
retistrsav(nullptr)
|
retistrsav(nullptr)
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -956,13 +957,13 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||||
locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili,
|
locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili,
|
||||||
LHutili, HHutili, cclocalcurve, localcutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, locallColorMask, locallExpMask, locallSHMask, locallcbMask, locallretiMask);
|
LHutili, HHutili, cclocalcurve, localcutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, locallColorMask, locallExpMask, locallSHMask, locallcbMask, locallretiMask, locallsoftMask);
|
||||||
} else {
|
} else {
|
||||||
ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, locallutili, loclhCurve, lochhCurve, locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, locallutili, loclhCurve, lochhCurve, locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
|
||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||||
locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili,
|
locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili,
|
||||||
LHutili, HHutili, cclocalcurve, localcutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, 0, 0, 0, 0, 0);
|
LHutili, HHutili, cclocalcurve, localcutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, 0, 0, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
//recalculate references after
|
//recalculate references after
|
||||||
if (params->locallab.spots.at(sp).spotMethod == "exc") {
|
if (params->locallab.spots.at(sp).spotMethod == "exc") {
|
||||||
|
@ -288,6 +288,7 @@ protected:
|
|||||||
int locallSHMask;
|
int locallSHMask;
|
||||||
int locallcbMask;
|
int locallcbMask;
|
||||||
int locallretiMask;
|
int locallretiMask;
|
||||||
|
int locallsoftMask;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -356,13 +357,14 @@ public:
|
|||||||
updaterThreadStart.unlock();
|
updaterThreadStart.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setLocallabMaskVisibility (int locallColorMask, int locallExpMask, int locallSHMask, int locallcbMask, int locallretiMask) override
|
void setLocallabMaskVisibility (int locallColorMask, int locallExpMask, int locallSHMask, int locallcbMask, int locallretiMask, int locallsoftMask) override
|
||||||
{
|
{
|
||||||
this->locallColorMask = locallColorMask;
|
this->locallColorMask = locallColorMask;
|
||||||
this->locallExpMask = locallExpMask;
|
this->locallExpMask = locallExpMask;
|
||||||
this->locallSHMask = locallSHMask;
|
this->locallSHMask = locallSHMask;
|
||||||
this->locallcbMask = locallcbMask;
|
this->locallcbMask = locallcbMask;
|
||||||
this->locallretiMask = locallretiMask;
|
this->locallretiMask = locallretiMask;
|
||||||
|
this->locallsoftMask = locallsoftMask;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setProgressListener (ProgressListener* pl) override
|
void setProgressListener (ProgressListener* pl) override
|
||||||
|
@ -299,7 +299,7 @@ public:
|
|||||||
int pitch, int scale, const int luma, const int chroma/*, LUTf & Lcurve, LUTf & abcurve*/);
|
int pitch, int scale, const int luma, const int chroma/*, LUTf & Lcurve, LUTf & abcurve*/);
|
||||||
//locallab
|
//locallab
|
||||||
void normalize_mean_dt(float *data, const float *ref, size_t size);
|
void normalize_mean_dt(float *data, const float *ref, size_t size);
|
||||||
void retinex_pde(float *datain, float * dataout, int bfw, int bfh, float thresh, float multy, float *dE);
|
void retinex_pde(float *datain, float * dataout, int bfw, int bfh, float thresh, float multy, float *dE, int show);
|
||||||
void fftw_convol_blur(float *input, float *output, int bfw, int bfh, float radius, int fftkern, int algo);
|
void fftw_convol_blur(float *input, float *output, int bfw, int bfh, float radius, int fftkern, int algo);
|
||||||
void fftw_convol_blur2(float **input2, float **output2, int bfw, int bfh, float radius, int fftkern, int algo);
|
void fftw_convol_blur2(float **input2, float **output2, int bfw, int bfh, float radius, int fftkern, int algo);
|
||||||
void fftw_tile_blur(int GW, int GH, int tilssize , int max_numblox_W, int min_numblox_W, float **tmp1, int numThreads, double radius);
|
void fftw_tile_blur(int GW, int GH, int tilssize , int max_numblox_W, int min_numblox_W, float **tmp1, int numThreads, double radius);
|
||||||
@ -313,7 +313,7 @@ public:
|
|||||||
const LocCCmaskSHCurve & locccmasSHCurve, bool &lcmasSHutili, const LocLLmaskSHCurve & locllmasSHCurve, bool &llmasSHutili, const LocHHmaskSHCurve & lochhmasSHCurve, bool & lhmasSHutili,
|
const LocCCmaskSHCurve & locccmasSHCurve, bool &lcmasSHutili, const LocLLmaskSHCurve & locllmasSHCurve, bool &llmasSHutili, const LocHHmaskSHCurve & lochhmasSHCurve, bool & lhmasSHutili,
|
||||||
const LocCCmaskcbCurve & locccmascbCurve, bool &lcmascbutili, const LocLLmaskcbCurve & locllmascbCurve, bool &llmascbutili, const LocHHmaskcbCurve & lochhmascbCurve, bool & lhmascbutili,
|
const LocCCmaskcbCurve & locccmascbCurve, bool &lcmascbutili, const LocLLmaskcbCurve & locllmascbCurve, bool &llmascbutili, const LocHHmaskcbCurve & lochhmascbCurve, bool & lhmascbutili,
|
||||||
const LocCCmaskretiCurve & locccmasretiCurve, bool &lcmasretiutili, const LocLLmaskretiCurve & locllmasretiCurve, bool &llmasretiutili, const LocHHmaskretiCurve & lochhmasretiCurve, bool & lhmasretiutili,
|
const LocCCmaskretiCurve & locccmasretiCurve, bool &lcmasretiutili, const LocLLmaskretiCurve & locllmasretiCurve, bool &llmasretiutili, const LocHHmaskretiCurve & lochhmasretiCurve, bool & lhmasretiutili,
|
||||||
bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localcutili, 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 llColorMask, int llExpMask, int llSHMask, int llcbMask, int llretiMask);
|
bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localcutili, 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 llColorMask, int llExpMask, int llSHMask, int llcbMask, int llretiMask, int llsoftMask);
|
||||||
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, const float hueref, const float chromaref, const float lumaref, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy, int sk);
|
void InverseBlurNoise_Local(const struct local_params& lp, const float hueref, const float chromaref, const float lumaref, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy, int sk);
|
||||||
|
@ -252,6 +252,7 @@ struct local_params {
|
|||||||
int showmaskSHmet;
|
int showmaskSHmet;
|
||||||
int showmaskcbmet;
|
int showmaskcbmet;
|
||||||
int showmaskretimet;
|
int showmaskretimet;
|
||||||
|
int showmasksoftmet;
|
||||||
int blurmet;
|
int blurmet;
|
||||||
int softmet;
|
int softmet;
|
||||||
float noiself;
|
float noiself;
|
||||||
@ -397,7 +398,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 llExpMask, int llSHMask, int llcbMask, int llretiMask)
|
static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locallab, struct local_params& lp, int llColorMask, int llExpMask, int llSHMask, int llcbMask, int llretiMask, int llsoftMask)
|
||||||
{
|
{
|
||||||
int w = oW;
|
int w = oW;
|
||||||
int h = oH;
|
int h = oH;
|
||||||
@ -463,7 +464,8 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
lp.showmaskSHmet = llSHMask;
|
lp.showmaskSHmet = llSHMask;
|
||||||
lp.showmaskcbmet = llcbMask;
|
lp.showmaskcbmet = llcbMask;
|
||||||
lp.showmaskretimet = llretiMask;
|
lp.showmaskretimet = llretiMask;
|
||||||
//printf("llretiMask=%i\n", llretiMask);
|
lp.showmasksoftmet = llsoftMask;
|
||||||
|
printf("llsoftMask=%i\n", llsoftMask);
|
||||||
//if(locallab.spots.at(sp).enaretiMask) printf("enaritrue\n"); else printf("enaritfalse\n");
|
//if(locallab.spots.at(sp).enaretiMask) printf("enaritrue\n"); else printf("enaritfalse\n");
|
||||||
lp.enaExpMask = locallab.spots.at(sp).enaExpMask && llExpMask == 0 && llColorMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
|
lp.enaExpMask = locallab.spots.at(sp).enaExpMask && llExpMask == 0 && llColorMask == 0 && llSHMask == 0 && llcbMask == 0 && llretiMask == 0;// Exposure mask is deactivated if Color & Light mask is visible
|
||||||
lp.enaSHMask = locallab.spots.at(sp).enaSHMask && llSHMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0;
|
lp.enaSHMask = locallab.spots.at(sp).enaSHMask && llSHMask == 0 && llColorMask == 0 && llExpMask == 0 && llcbMask == 0 && llretiMask == 0;
|
||||||
@ -3472,7 +3474,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);
|
calcLocalParams(sp, oW, oH, params->locallab, lp, 0, 0, 0, 0, 0, 0);
|
||||||
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;
|
||||||
@ -3899,7 +3901,7 @@ static float *discrete_laplacian_threshold(float *data_out, const float *data_in
|
|||||||
return data_out;
|
return data_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImProcFunctions::retinex_pde(float *datain, float * dataout, int bfw, int bfh, float thresh, float multy, float *dE)
|
void ImProcFunctions::retinex_pde(float *datain, float * dataout, int bfw, int bfh, float thresh, float multy, float *dE, int show)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Copyright 2009-2011 IPOL Image Processing On Line http://www.ipol.im/
|
* Copyright 2009-2011 IPOL Image Processing On Line http://www.ipol.im/
|
||||||
@ -3921,6 +3923,14 @@ void ImProcFunctions::retinex_pde(float *datain, float * dataout, int bfw, int b
|
|||||||
#endif
|
#endif
|
||||||
fftwf_plan dct_fw, dct_fw04, dct_bw;
|
fftwf_plan dct_fw, dct_fw04, dct_bw;
|
||||||
float *data_fft, *data_fft04, *data_tmp, *data, *data_tmp04;
|
float *data_fft, *data_fft04, *data_tmp, *data, *data_tmp04;
|
||||||
|
float *datashow = nullptr;
|
||||||
|
if(show != 0) {
|
||||||
|
if (NULL == (datashow = (float *) fftwf_malloc(sizeof(float) * bfw * bfh))) {
|
||||||
|
fprintf(stderr, "allocation error\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (NULL == (data_tmp = (float *) fftwf_malloc(sizeof(float) * bfw * bfh))) {
|
if (NULL == (data_tmp = (float *) fftwf_malloc(sizeof(float) * bfw * bfh))) {
|
||||||
fprintf(stderr, "allocation error\n");
|
fprintf(stderr, "allocation error\n");
|
||||||
abort();
|
abort();
|
||||||
@ -3935,6 +3945,13 @@ void ImProcFunctions::retinex_pde(float *datain, float * dataout, int bfw, int b
|
|||||||
fprintf(stderr, "allocation error\n");
|
fprintf(stderr, "allocation error\n");
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
if(show == 1) {
|
||||||
|
for (int y = 0; y < bfh ; y++) {
|
||||||
|
for (int x = 0; x < bfw; x++) {
|
||||||
|
datashow[y * bfw + x] = data_tmp[y * bfw + x];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
//second call to laplacian with 40% strength ==> reduce effect if we are far from ref (deltaE)
|
//second call to laplacian with 40% strength ==> reduce effect if we are far from ref (deltaE)
|
||||||
(void) discrete_laplacian_threshold(data_tmp04, datain, bfw, bfh, 0.4f * thresh);
|
(void) discrete_laplacian_threshold(data_tmp04, datain, bfw, bfh, 0.4f * thresh);
|
||||||
if (NULL == (data_fft04 = (float *) fftwf_malloc(sizeof(float) * bfw * bfh))) {
|
if (NULL == (data_fft04 = (float *) fftwf_malloc(sizeof(float) * bfw * bfh))) {
|
||||||
@ -3962,6 +3979,13 @@ void ImProcFunctions::retinex_pde(float *datain, float * dataout, int bfw, int b
|
|||||||
data_fft[y * bfw + x] = prov * data_fft[y * bfw + x] + (1.f - prov) * data_fft04[y * bfw + x];
|
data_fft[y * bfw + x] = prov * data_fft[y * bfw + x] + (1.f - prov) * data_fft04[y * bfw + x];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(show == 2) {
|
||||||
|
for (int y = 0; y < bfh ; y++) {
|
||||||
|
for (int x = 0; x < bfw; x++) {
|
||||||
|
datashow[y * bfw + x] = data_fft[y * bfw + x];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
fftwf_free(data_fft04);
|
fftwf_free(data_fft04);
|
||||||
fftwf_free(data_tmp);
|
fftwf_free(data_tmp);
|
||||||
fftwf_free(data_tmp04);
|
fftwf_free(data_tmp04);
|
||||||
@ -3970,6 +3994,13 @@ void ImProcFunctions::retinex_pde(float *datain, float * dataout, int bfw, int b
|
|||||||
/* solve the Poisson PDE in Fourier space */
|
/* solve the Poisson PDE in Fourier space */
|
||||||
/* 1. / (float) (bfw * bfh)) is the DCT normalisation term, see libfftw */
|
/* 1. / (float) (bfw * bfh)) is the DCT normalisation term, see libfftw */
|
||||||
(void) retinex_poisson_dct(data_fft, bfw, bfh, 1./(double) (bfw * bfh));
|
(void) retinex_poisson_dct(data_fft, bfw, bfh, 1./(double) (bfw * bfh));
|
||||||
|
if(show == 3) {
|
||||||
|
for (int y = 0; y < bfh ; y++) {
|
||||||
|
for (int x = 0; x < bfw; x++) {
|
||||||
|
datashow[y * bfw + x] = data_fft[y * bfw + x];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dct_bw = fftwf_plan_r2r_2d(bfh, bfw, data_fft, data, FFTW_REDFT01, FFTW_REDFT01, FFTW_ESTIMATE | FFTW_DESTROY_INPUT);
|
dct_bw = fftwf_plan_r2r_2d(bfh, bfw, data_fft, data, FFTW_REDFT01, FFTW_REDFT01, FFTW_ESTIMATE | FFTW_DESTROY_INPUT);
|
||||||
fftwf_execute(dct_bw);
|
fftwf_execute(dct_bw);
|
||||||
@ -3979,16 +4010,28 @@ void ImProcFunctions::retinex_pde(float *datain, float * dataout, int bfw, int b
|
|||||||
fftwf_cleanup();
|
fftwf_cleanup();
|
||||||
if (multiThread) {
|
if (multiThread) {
|
||||||
fftwf_cleanup_threads();
|
fftwf_cleanup_threads();
|
||||||
|
}
|
||||||
|
if( show != 4) {
|
||||||
|
normalize_mean_dt(data, datain, bfw * bfh);
|
||||||
}
|
}
|
||||||
normalize_mean_dt(data, datain, bfw * bfh);
|
if(show == 0 || show == 4) {
|
||||||
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for
|
#pragma omp parallel for
|
||||||
#endif
|
#endif
|
||||||
for (int y = 0; y < bfh ; y++) {
|
for (int y = 0; y < bfh ; y++) {
|
||||||
for (int x = 0; x < bfw; x++) {
|
for (int x = 0; x < bfw; x++) {
|
||||||
dataout[y * bfw + x] = CLIPLOC(multy * data[y * bfw + x]);
|
dataout[y * bfw + x] = CLIPLOC(multy * data[y * bfw + x]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else if(show == 1 || show == 2 || show == 3) {
|
||||||
|
for (int y = 0; y < bfh ; y++) {
|
||||||
|
for (int x = 0; x < bfw; x++) {
|
||||||
|
dataout[y * bfw + x] = CLIPLOC(multy * datashow[y * bfw + x]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fftwf_free(datashow);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4606,7 +4649,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
const LocCCmaskSHCurve & locccmasSHCurve, bool &lcmasSHutili, const LocLLmaskSHCurve & locllmasSHCurve, bool &llmasSHutili, const LocHHmaskSHCurve & lochhmasSHCurve, bool & lhmasSHutili,
|
const LocCCmaskSHCurve & locccmasSHCurve, bool &lcmasSHutili, const LocLLmaskSHCurve & locllmasSHCurve, bool &llmasSHutili, const LocHHmaskSHCurve & lochhmasSHCurve, bool & lhmasSHutili,
|
||||||
const LocCCmaskcbCurve & locccmascbCurve, bool &lcmascbutili, const LocLLmaskcbCurve & locllmascbCurve, bool &llmascbutili, const LocHHmaskcbCurve & lochhmascbCurve, bool & lhmascbutili,
|
const LocCCmaskcbCurve & locccmascbCurve, bool &lcmascbutili, const LocLLmaskcbCurve & locllmascbCurve, bool &llmascbutili, const LocHHmaskcbCurve & lochhmascbCurve, bool & lhmascbutili,
|
||||||
const LocCCmaskretiCurve & locccmasretiCurve, bool &lcmasretiutili, const LocLLmaskretiCurve & locllmasretiCurve, bool &llmasretiutili, const LocHHmaskretiCurve & lochhmasretiCurve, bool & lhmasretiutili,
|
const LocCCmaskretiCurve & locccmasretiCurve, bool &lcmasretiutili, const LocLLmaskretiCurve & locllmasretiCurve, bool &llmasretiutili, const LocHHmaskretiCurve & lochhmasretiCurve, bool & lhmasretiutili,
|
||||||
bool & LHutili, bool & HHutili, LUTf & cclocalcurve, bool & localcutili, 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 llColorMask, int llExpMask, int llSHMask, int llcbMask, int llretiMask)
|
bool & LHutili, bool & HHutili, LUTf & cclocalcurve, bool & localcutili, 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 llColorMask, int llExpMask, int llSHMask, int llcbMask, int llretiMask, int llsoftMask)
|
||||||
{
|
{
|
||||||
/* comment on processus deltaE
|
/* comment on processus deltaE
|
||||||
* the algo uses 3 different ways to manage deltaE according to the type of intervention
|
* the algo uses 3 different ways to manage deltaE according to the type of intervention
|
||||||
@ -4636,7 +4679,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
|
||||||
|
|
||||||
struct local_params lp;
|
struct local_params lp;
|
||||||
calcLocalParams(sp, oW, oH, params->locallab, lp, llColorMask, llExpMask, llSHMask, llcbMask, llretiMask);
|
calcLocalParams(sp, oW, oH, params->locallab, lp, llColorMask, llExpMask, llSHMask, llcbMask, llretiMask, llsoftMask);
|
||||||
|
|
||||||
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);
|
||||||
@ -6498,7 +6541,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ImProcFunctions::retinex_pde(datain, dataout, bfwr, bfhr, 8.f * lp.strng, 1.f, dE);
|
ImProcFunctions::retinex_pde(datain, dataout, bfwr, bfhr, 8.f * lp.strng, 1.f, dE, lp.showmasksoftmet);
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel for schedule(dynamic,16)
|
#pragma omp parallel for schedule(dynamic,16)
|
||||||
#endif
|
#endif
|
||||||
|
@ -726,6 +726,7 @@ enum ProcEventCode {
|
|||||||
Evlocallabequiltm = 696,
|
Evlocallabequiltm = 696,
|
||||||
Evlocallabfftwlc = 697,
|
Evlocallabfftwlc = 697,
|
||||||
Evlocallabfftwreti = 698,
|
Evlocallabfftwreti = 698,
|
||||||
|
EvlocallabshowmasksoftMethod = 699,
|
||||||
NUMOFEVENTS
|
NUMOFEVENTS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -725,7 +725,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, // Evlocallabequilret
|
LUMINANCECURVE, // Evlocallabequilret
|
||||||
LUMINANCECURVE, // Evlocallabequiltm
|
LUMINANCECURVE, // Evlocallabequiltm
|
||||||
LUMINANCECURVE, // Evlocallabfftwlc
|
LUMINANCECURVE, // Evlocallabfftwlc
|
||||||
LUMINANCECURVE // Evlocallabfftwreti
|
LUMINANCECURVE, // Evlocallabfftwreti
|
||||||
|
LUMINANCECURVE //EvlocallabshowmasksoftMethod
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -499,7 +499,7 @@ public:
|
|||||||
|
|
||||||
virtual void updateUnLock() = 0;
|
virtual void updateUnLock() = 0;
|
||||||
|
|
||||||
virtual void setLocallabMaskVisibility(int locallColorMask, int locallExpMask, int locallSHMask, int locallcbMask, int locallretiMask) = 0;
|
virtual void setLocallabMaskVisibility(int locallColorMask, int locallExpMask, int locallSHMask, int locallcbMask, int locallretiMask, int locallsoftMask) = 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
|
||||||
|
@ -1189,7 +1189,7 @@ private:
|
|||||||
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
locccmasSHCurve, lcmasSHutili, locllmasSHCurve, llmasSHutili, lochhmasSHCurve, lhmasSHutili,
|
||||||
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
locccmascbCurve, lcmascbutili, locllmascbCurve, llmascbutili, lochhmascbCurve, lhmascbutili,
|
||||||
locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili,
|
locccmasretiCurve, lcmasretiutili, locllmasretiCurve, llmasretiutili, lochhmasretiCurve, lhmasretiutili,
|
||||||
LHutili, HHutili, cclocalcurve, localcutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, 0, 0, 0, 0, 0);
|
LHutili, HHutili, cclocalcurve, localcutili, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, 0, 0, 0, 0, 0, 0);
|
||||||
|
|
||||||
|
|
||||||
// Clear local curves
|
// Clear local curves
|
||||||
|
@ -337,6 +337,7 @@ Locallab::Locallab():
|
|||||||
blurMethod(Gtk::manage(new MyComboBoxText())),
|
blurMethod(Gtk::manage(new MyComboBoxText())),
|
||||||
//soft Method
|
//soft Method
|
||||||
softMethod(Gtk::manage(new MyComboBoxText())),
|
softMethod(Gtk::manage(new MyComboBoxText())),
|
||||||
|
showmasksoftMethod(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())),
|
||||||
@ -826,13 +827,32 @@ Locallab::Locallab():
|
|||||||
softMethodConn = softMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::softMethodChanged));
|
softMethodConn = softMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::softMethodChanged));
|
||||||
|
|
||||||
|
|
||||||
|
ctboxsoftmethod = Gtk::manage(new Gtk::HBox());
|
||||||
|
Gtk::Label* const labelsoftmethod = Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_SHOWDCT") + ":"));
|
||||||
|
ctboxsoftmethod->pack_start(*labelsoftmethod, Gtk::PACK_SHRINK, 4);
|
||||||
|
|
||||||
|
showmasksoftMethod->append(M("TP_LOCALLAB_SHOWMNONE"));
|
||||||
|
showmasksoftMethod->append(M("TP_LOCALLAB_SHOWLAPLACE"));
|
||||||
|
showmasksoftMethod->append(M("TP_LOCALLAB_SHOWFOURIER"));
|
||||||
|
showmasksoftMethod->append(M("TP_LOCALLAB_SHOWPOISSON"));
|
||||||
|
showmasksoftMethod->append(M("TP_LOCALLAB_SHOWNORMAL"));
|
||||||
|
|
||||||
|
showmasksoftMethod->set_active(0);
|
||||||
|
if(showtooltip) showmasksoftMethod->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKSOFT_TOOLTIP"));
|
||||||
|
showmasksoftMethodConn = showmasksoftMethod->signal_changed().connect(sigc::mem_fun(*this, &Locallab::showmasksoftMethodChanged));
|
||||||
|
ctboxsoftmethod->pack_start(*showmasksoftMethod);
|
||||||
|
|
||||||
|
|
||||||
streng->setAdjusterListener(this);
|
streng->setAdjusterListener(this);
|
||||||
laplace->setAdjusterListener(this);
|
laplace->setAdjusterListener(this);
|
||||||
|
|
||||||
sensisf->setAdjusterListener(this);
|
sensisf->setAdjusterListener(this);
|
||||||
|
|
||||||
ToolParamBlock* const softBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const softBox = Gtk::manage(new ToolParamBlock());
|
||||||
|
|
||||||
softBox->pack_start(*softMethod);
|
softBox->pack_start(*softMethod);
|
||||||
|
// softBox->pack_start(*showmasksoftMethod, Gtk::PACK_SHRINK, 4);
|
||||||
|
softBox->pack_start(*ctboxsoftmethod);
|
||||||
softBox->pack_start(*streng);
|
softBox->pack_start(*streng);
|
||||||
softBox->pack_start(*laplace);
|
softBox->pack_start(*laplace);
|
||||||
softBox->pack_start(*sensisf);
|
softBox->pack_start(*sensisf);
|
||||||
@ -3054,8 +3074,10 @@ void Locallab::softMethodChanged()
|
|||||||
// printf("softMethodChanged\n");
|
// printf("softMethodChanged\n");
|
||||||
if (softMethod->get_active_row_number() == 0) {
|
if (softMethod->get_active_row_number() == 0) {
|
||||||
laplace->hide();
|
laplace->hide();
|
||||||
|
ctboxsoftmethod->hide();
|
||||||
} else {
|
} else {
|
||||||
laplace->show();
|
laplace->show();
|
||||||
|
ctboxsoftmethod->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getEnabled() && expsoft->getEnabled()) {
|
if (getEnabled() && expsoft->getEnabled()) {
|
||||||
@ -3185,6 +3207,23 @@ void Locallab::showmaskretiMethodChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Locallab::showmasksoftMethodChanged()
|
||||||
|
{
|
||||||
|
// printf("showmaskcolMethodChanged\n");
|
||||||
|
|
||||||
|
// When one mask state is changed, other masks are deactivated
|
||||||
|
disableListener();
|
||||||
|
showmaskexpMethod->set_active(0);
|
||||||
|
showmaskSHMethod->set_active(0);
|
||||||
|
showmaskcbMethod->set_active(0);
|
||||||
|
showmaskretiMethod->set_active(0);
|
||||||
|
enableListener();
|
||||||
|
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(EvlocallabshowmasksoftMethod, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Locallab::resetMaskVisibility()
|
void Locallab::resetMaskVisibility()
|
||||||
{
|
{
|
||||||
// printf("resetMaskVisibility\n");
|
// printf("resetMaskVisibility\n");
|
||||||
@ -3206,6 +3245,7 @@ Locallab::llMaskVisibility* Locallab::getMaskVisibility()
|
|||||||
maskStruct->SHMask = showmaskSHMethod->get_active_row_number();
|
maskStruct->SHMask = showmaskSHMethod->get_active_row_number();
|
||||||
maskStruct->cbMask = showmaskcbMethod->get_active_row_number();
|
maskStruct->cbMask = showmaskcbMethod->get_active_row_number();
|
||||||
maskStruct->retiMask = showmaskretiMethod->get_active_row_number();
|
maskStruct->retiMask = showmaskretiMethod->get_active_row_number();
|
||||||
|
maskStruct->softMask = showmasksoftMethod->get_active_row_number();
|
||||||
// printf("SHmask=%i \n", maskStruct->SHMask);
|
// printf("SHmask=%i \n", maskStruct->SHMask);
|
||||||
printf("retimask=%i \n", maskStruct->retiMask);
|
printf("retimask=%i \n", maskStruct->retiMask);
|
||||||
|
|
||||||
@ -5343,6 +5383,7 @@ void Locallab::enableListener()
|
|||||||
// Soft Light
|
// Soft Light
|
||||||
enablesoftConn.block(false);
|
enablesoftConn.block(false);
|
||||||
softMethodConn.block(false);
|
softMethodConn.block(false);
|
||||||
|
showmasksoftMethodConn.block(false);
|
||||||
// Blur & Noise
|
// Blur & Noise
|
||||||
enableblurConn.block(false);
|
enableblurConn.block(false);
|
||||||
blurMethodConn.block(false);
|
blurMethodConn.block(false);
|
||||||
@ -5404,6 +5445,7 @@ void Locallab::disableListener()
|
|||||||
// Soft Light
|
// Soft Light
|
||||||
enablesoftConn.block(true);
|
enablesoftConn.block(true);
|
||||||
softMethodConn.block(true);
|
softMethodConn.block(true);
|
||||||
|
showmasksoftMethodConn.block(true);
|
||||||
// Blur & Noise
|
// Blur & Noise
|
||||||
enableblurConn.block(true);
|
enableblurConn.block(true);
|
||||||
blurMethodConn.block(true);
|
blurMethodConn.block(true);
|
||||||
|
@ -305,6 +305,9 @@ private:
|
|||||||
//soft light
|
//soft light
|
||||||
MyComboBoxText* const softMethod;
|
MyComboBoxText* const softMethod;
|
||||||
sigc::connection softMethodConn;
|
sigc::connection softMethodConn;
|
||||||
|
MyComboBoxText* const showmasksoftMethod;
|
||||||
|
sigc::connection showmasksoftMethodConn;
|
||||||
|
|
||||||
// Retinex
|
// Retinex
|
||||||
MyComboBoxText* const retinexMethod;
|
MyComboBoxText* const retinexMethod;
|
||||||
sigc::connection retinexMethodConn;
|
sigc::connection retinexMethodConn;
|
||||||
@ -327,6 +330,7 @@ private:
|
|||||||
Gtk::Frame* residFrame;
|
Gtk::Frame* residFrame;
|
||||||
LabGrid *labgrid;
|
LabGrid *labgrid;
|
||||||
// Others
|
// Others
|
||||||
|
Gtk::HBox* ctboxsoftmethod;
|
||||||
/**
|
/**
|
||||||
* Used to store the default ProcParams when setDefaults function is called
|
* Used to store the default ProcParams when setDefaults function is called
|
||||||
* When an other spot is selected, this default ProcParams is used to update adjusters default values
|
* When an other spot is selected, this default ProcParams is used to update adjusters default values
|
||||||
@ -391,6 +395,7 @@ private:
|
|||||||
void blurMethodChanged();
|
void blurMethodChanged();
|
||||||
// Soft light
|
// Soft light
|
||||||
void softMethodChanged();
|
void softMethodChanged();
|
||||||
|
void showmasksoftMethodChanged();
|
||||||
// Retinex
|
// Retinex
|
||||||
void retinexMethodChanged();
|
void retinexMethodChanged();
|
||||||
void showmaskretiMethodChanged();
|
void showmaskretiMethodChanged();
|
||||||
@ -432,6 +437,7 @@ public:
|
|||||||
int SHMask;
|
int SHMask;
|
||||||
int cbMask;
|
int cbMask;
|
||||||
int retiMask;
|
int retiMask;
|
||||||
|
int softMask;
|
||||||
};
|
};
|
||||||
|
|
||||||
void resetMaskVisibility();
|
void resetMaskVisibility();
|
||||||
|
@ -466,9 +466,9 @@ void ToolPanelCoordinator::panelChanged(const rtengine::ProcEvent& event, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Manage Locallab mask visibility
|
// Manage Locallab mask visibility
|
||||||
if (event == rtengine::EvlocallabshowmaskcolMethod || event == rtengine::EvlocallabshowmaskexpMethod || event == rtengine::EvlocallabshowmaskSHMethod || event == rtengine::EvlocallabshowmaskcbMethod || event == rtengine::EvlocallabshowmaskretiMethod ) {
|
if (event == rtengine::EvlocallabshowmaskcolMethod || event == rtengine::EvlocallabshowmaskexpMethod || event == rtengine::EvlocallabshowmaskSHMethod || event == rtengine::EvlocallabshowmasksoftMethod || event == rtengine::EvlocallabshowmaskcbMethod || event == rtengine::EvlocallabshowmaskretiMethod ) {
|
||||||
Locallab::llMaskVisibility* maskStruc = locallab->getMaskVisibility();
|
Locallab::llMaskVisibility* maskStruc = locallab->getMaskVisibility();
|
||||||
ipc->setLocallabMaskVisibility(maskStruc->colorMask, maskStruc->expMask, maskStruc->SHMask, maskStruc->cbMask, maskStruc->retiMask);
|
ipc->setLocallabMaskVisibility(maskStruc->colorMask, maskStruc->expMask, maskStruc->SHMask, maskStruc->cbMask, maskStruc->retiMask, maskStruc->softMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
ipc->endUpdateParams(changeFlags); // starts the IPC processing
|
ipc->endUpdateParams(changeFlags); // starts the IPC processing
|
||||||
@ -576,7 +576,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);
|
ipc->setLocallabMaskVisibility(0, 0, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
// start the IPC processing
|
// start the IPC processing
|
||||||
|
Loading…
x
Reference in New Issue
Block a user