Add contrast by level to wavelet pyramid
This commit is contained in:
parent
66e0309696
commit
2f414e20ed
@ -1097,6 +1097,8 @@ HISTORY_MSG_857;Local - Contrast Blur Residual
|
|||||||
HISTORY_MSG_858;Local - Contrast Luminance only
|
HISTORY_MSG_858;Local - Contrast Luminance only
|
||||||
HISTORY_MSG_859;Local - Contrast Maximum Blur levels
|
HISTORY_MSG_859;Local - Contrast Maximum Blur levels
|
||||||
HISTORY_MSG_860;Local - Contrast Curve Blur levels
|
HISTORY_MSG_860;Local - Contrast Curve Blur levels
|
||||||
|
HISTORY_MSG_861;Local - Contrast Curve Contrast levels
|
||||||
|
HISTORY_MSG_862;Local - Contrast Sigma luminance
|
||||||
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
|
||||||
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
|
||||||
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
|
||||||
@ -2222,6 +2224,7 @@ TP_LOCALLAB_COL_VIS;Status
|
|||||||
TP_LOCALLAB_COMPLEX_METHOD;Software Complexity
|
TP_LOCALLAB_COMPLEX_METHOD;Software Complexity
|
||||||
TP_LOCALLAB_COMPLEX_TOOLTIP; Allow user to select Local adjustements rubrics.
|
TP_LOCALLAB_COMPLEX_TOOLTIP; Allow user to select Local adjustements rubrics.
|
||||||
TP_LOCALLAB_CONTCOL;Contrast threshold Mask Blur
|
TP_LOCALLAB_CONTCOL;Contrast threshold Mask Blur
|
||||||
|
TP_LOCALLAB_CONTFRA;Contrast by Level
|
||||||
TP_LOCALLAB_CONTRAST;Contrast
|
TP_LOCALLAB_CONTRAST;Contrast
|
||||||
TP_LOCALLAB_CONTRESID;Contrast
|
TP_LOCALLAB_CONTRESID;Contrast
|
||||||
TP_LOCALLAB_CONTTHR;Contrast Threshold
|
TP_LOCALLAB_CONTTHR;Contrast Threshold
|
||||||
@ -2518,6 +2521,7 @@ TP_LOCALLAB_SHOWSTRUC;Show structure Spot
|
|||||||
TP_LOCALLAB_SHOWSTRUCEX;Show structure Spot - disabled in "normal"
|
TP_LOCALLAB_SHOWSTRUCEX;Show structure Spot - disabled in "normal"
|
||||||
TP_LOCALLAB_SHOWT;4 - Mask and modifications
|
TP_LOCALLAB_SHOWT;4 - Mask and modifications
|
||||||
TP_LOCALLAB_SHOWVI;3 - Mask and modifications
|
TP_LOCALLAB_SHOWVI;3 - Mask and modifications
|
||||||
|
TP_LOCALLAB_SIGMAWAV;Sigma
|
||||||
TP_LOCALLAB_SIM;Simple
|
TP_LOCALLAB_SIM;Simple
|
||||||
TP_LOCALLAB_SLOMASKCOL;Slope mask
|
TP_LOCALLAB_SLOMASKCOL;Slope mask
|
||||||
TP_LOCALLAB_SLOSH;Slope
|
TP_LOCALLAB_SLOSH;Slope
|
||||||
@ -2577,6 +2581,7 @@ TP_LOCALLAB_WAMASKCOL;Mask Wavelet level
|
|||||||
TP_LOCALLAB_WARM;Warm - Cool & Color artifacts
|
TP_LOCALLAB_WARM;Warm - Cool & Color artifacts
|
||||||
TP_LOCALLAB_WARM_TOOLTIP;This slider use Ciecam algorithm and acts as White Balance, it can warm or cool the area selected.\nIt can also in some cases reduce color artifacts.
|
TP_LOCALLAB_WARM_TOOLTIP;This slider use Ciecam algorithm and acts as White Balance, it can warm or cool the area selected.\nIt can also in some cases reduce color artifacts.
|
||||||
TP_LOCALLAB_WAV;Levels local contrast
|
TP_LOCALLAB_WAV;Levels local contrast
|
||||||
|
TP_LOCALLAB_WAVCON;Contrast by Level
|
||||||
TP_LOCALLAB_WAVE;Wavelet
|
TP_LOCALLAB_WAVE;Wavelet
|
||||||
TP_LOCALLAB_WAVHIGH;Wavelet high
|
TP_LOCALLAB_WAVHIGH;Wavelet high
|
||||||
TP_LOCALLAB_WAVLEV;Blur by Level
|
TP_LOCALLAB_WAVLEV;Blur by Level
|
||||||
|
@ -928,6 +928,7 @@ void Crop::update(int todo)
|
|||||||
bool llmasblutili = parent->llmasblutili;
|
bool llmasblutili = parent->llmasblutili;
|
||||||
bool locwavutili = parent->locwavutili;
|
bool locwavutili = parent->locwavutili;
|
||||||
bool loclevwavutili = parent->loclevwavutili;
|
bool loclevwavutili = parent->loclevwavutili;
|
||||||
|
bool locconwavutili = parent->locconwavutili;
|
||||||
bool lmasutiliblwav = parent->lmasutiliblwav;
|
bool lmasutiliblwav = parent->lmasutiliblwav;
|
||||||
bool lmasutilicolwav = parent->lmasutilicolwav;
|
bool lmasutilicolwav = parent->lmasutilicolwav;
|
||||||
|
|
||||||
@ -968,6 +969,7 @@ void Crop::update(int todo)
|
|||||||
LocwavCurve loclmasCurveblwav;
|
LocwavCurve loclmasCurveblwav;
|
||||||
LocwavCurve loclmasCurvecolwav;
|
LocwavCurve loclmasCurvecolwav;
|
||||||
LocwavCurve loclevwavCurve;
|
LocwavCurve loclevwavCurve;
|
||||||
|
LocwavCurve locconwavCurve;
|
||||||
|
|
||||||
LocretigainCurverab locRETgainCurverab;
|
LocretigainCurverab locRETgainCurverab;
|
||||||
locallutili = false;
|
locallutili = false;
|
||||||
@ -1012,6 +1014,7 @@ void Crop::update(int todo)
|
|||||||
|
|
||||||
locwavCurve.Set(params.locallab.spots.at(sp).locwavcurve, locwavutili);
|
locwavCurve.Set(params.locallab.spots.at(sp).locwavcurve, locwavutili);
|
||||||
loclevwavCurve.Set(params.locallab.spots.at(sp).loclevwavcurve, loclevwavutili);
|
loclevwavCurve.Set(params.locallab.spots.at(sp).loclevwavcurve, loclevwavutili);
|
||||||
|
locconwavCurve.Set(params.locallab.spots.at(sp).locconwavcurve, locconwavutili);
|
||||||
locallutili = false;
|
locallutili = false;
|
||||||
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve2, sca);
|
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve2, sca);
|
||||||
localclutili = false;
|
localclutili = false;
|
||||||
@ -1104,6 +1107,7 @@ void Crop::update(int todo)
|
|||||||
loclmasCurvecolwav,lmasutilicolwav,
|
loclmasCurvecolwav,lmasutilicolwav,
|
||||||
locwavCurve, locwavutili,
|
locwavCurve, locwavutili,
|
||||||
loclevwavCurve, loclevwavutili,
|
loclevwavCurve, loclevwavutili,
|
||||||
|
locconwavCurve, locconwavutili,
|
||||||
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->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask,
|
parent->locallColorMask, parent->locallColorMaskinv, parent->locallExpMask, parent->locallExpMaskinv, parent->locallSHMask, parent->locallSHMaskinv, parent->locallvibMask, parent->locallcbMask, parent->locallretiMask, parent->locallsoftMask, parent->localltmMask, parent->locallblMask,
|
||||||
@ -1136,6 +1140,7 @@ void Crop::update(int todo)
|
|||||||
loclmasCurvecolwav,lmasutilicolwav,
|
loclmasCurvecolwav,lmasutilicolwav,
|
||||||
locwavCurve, locwavutili,
|
locwavCurve, locwavutili,
|
||||||
loclevwavCurve, loclevwavutili,
|
loclevwavCurve, loclevwavutili,
|
||||||
|
locconwavCurve, locconwavutili,
|
||||||
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,
|
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 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);
|
||||||
@ -1192,6 +1197,7 @@ void Crop::update(int todo)
|
|||||||
lochhmasblCurve.Reset();
|
lochhmasblCurve.Reset();
|
||||||
locwavCurve.Reset();
|
locwavCurve.Reset();
|
||||||
loclevwavCurve.Reset();
|
loclevwavCurve.Reset();
|
||||||
|
locconwavCurve.Reset();
|
||||||
loclmasCurveblwav.Reset();
|
loclmasCurveblwav.Reset();
|
||||||
loclmasCurvecolwav.Reset();
|
loclmasCurvecolwav.Reset();
|
||||||
|
|
||||||
|
@ -220,6 +220,7 @@ ImProcCoordinator::ImProcCoordinator() :
|
|||||||
llmascbutili(false),
|
llmascbutili(false),
|
||||||
locwavutili(false),
|
locwavutili(false),
|
||||||
loclevwavutili(false),
|
loclevwavutili(false),
|
||||||
|
locconwavutili(false),
|
||||||
lmasutiliblwav(false),
|
lmasutiliblwav(false),
|
||||||
lmasutilicolwav(false),
|
lmasutilicolwav(false),
|
||||||
LHutili(false),
|
LHutili(false),
|
||||||
@ -1081,6 +1082,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
lcmasutili = false;
|
lcmasutili = false;
|
||||||
locwavutili = false;
|
locwavutili = false;
|
||||||
loclevwavutili = false;
|
loclevwavutili = false;
|
||||||
|
locconwavutili = false;
|
||||||
lmasutiliblwav = false;
|
lmasutiliblwav = false;
|
||||||
lmasutilicolwav = false;
|
lmasutilicolwav = false;
|
||||||
locRETgainCurve.Set(params->locallab.spots.at(sp).localTgaincurve);
|
locRETgainCurve.Set(params->locallab.spots.at(sp).localTgaincurve);
|
||||||
@ -1117,6 +1119,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
|
|
||||||
locwavCurve.Set(params->locallab.spots.at(sp).locwavcurve, locwavutili);
|
locwavCurve.Set(params->locallab.spots.at(sp).locwavcurve, locwavutili);
|
||||||
loclevwavCurve.Set(params->locallab.spots.at(sp).loclevwavcurve, loclevwavutili);
|
loclevwavCurve.Set(params->locallab.spots.at(sp).loclevwavcurve, loclevwavutili);
|
||||||
|
locconwavCurve.Set(params->locallab.spots.at(sp).locconwavcurve, locconwavutili);
|
||||||
CurveFactory::curveLocal(locallutili, params->locallab.spots.at(sp).llcurve, lllocalcurve, sca);
|
CurveFactory::curveLocal(locallutili, params->locallab.spots.at(sp).llcurve, lllocalcurve, sca);
|
||||||
CurveFactory::curveLocal(localclutili, params->locallab.spots.at(sp).clcurve, cllocalcurve, sca);
|
CurveFactory::curveLocal(localclutili, params->locallab.spots.at(sp).clcurve, cllocalcurve, sca);
|
||||||
CurveFactory::curveLocal(locallcutili, params->locallab.spots.at(sp).lccurve, lclocalcurve, sca);
|
CurveFactory::curveLocal(locallcutili, params->locallab.spots.at(sp).lccurve, lclocalcurve, sca);
|
||||||
@ -1225,6 +1228,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
loclmasCurvecolwav, lmasutilicolwav,
|
loclmasCurvecolwav, lmasutilicolwav,
|
||||||
locwavCurve, locwavutili,
|
locwavCurve, locwavutili,
|
||||||
loclevwavCurve, loclevwavutili,
|
loclevwavCurve, loclevwavutili,
|
||||||
|
locconwavCurve, locconwavutili,
|
||||||
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, locallcbMask, locallretiMask, locallsoftMask, localltmMask, locallblMask,
|
locallColorMask, locallColorMaskinv, locallExpMask, locallExpMaskinv, locallSHMask, locallSHMaskinv, locallvibMask, locallcbMask, locallretiMask, locallsoftMask, localltmMask, locallblMask,
|
||||||
@ -1262,6 +1266,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
loclmasCurvecolwav, lmasutilicolwav,
|
loclmasCurvecolwav, lmasutilicolwav,
|
||||||
locwavCurve, locwavutili,
|
locwavCurve, locwavutili,
|
||||||
loclevwavCurve, loclevwavutili,
|
loclevwavCurve, loclevwavutili,
|
||||||
|
locconwavCurve, locconwavutili,
|
||||||
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,
|
huerblu, chromarblu, lumarblu, huer, chromar, lumar, sobeler, lastsav, 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);
|
||||||
@ -1340,6 +1345,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
|
|||||||
lochhmasblCurve.Reset();
|
lochhmasblCurve.Reset();
|
||||||
locwavCurve.Reset();
|
locwavCurve.Reset();
|
||||||
loclevwavCurve.Reset();
|
loclevwavCurve.Reset();
|
||||||
|
locconwavCurve.Reset();
|
||||||
loclmasCurveblwav.Reset();
|
loclmasCurveblwav.Reset();
|
||||||
loclmasCurvecolwav.Reset();
|
loclmasCurvecolwav.Reset();
|
||||||
}
|
}
|
||||||
|
@ -285,6 +285,7 @@ protected:
|
|||||||
LocwavCurve loclmasCurveblwav;
|
LocwavCurve loclmasCurveblwav;
|
||||||
LocwavCurve loclmasCurvecolwav;
|
LocwavCurve loclmasCurvecolwav;
|
||||||
LocwavCurve loclevwavCurve;
|
LocwavCurve loclevwavCurve;
|
||||||
|
LocwavCurve locconwavCurve;
|
||||||
|
|
||||||
bool locallutili;
|
bool locallutili;
|
||||||
bool localclutili;
|
bool localclutili;
|
||||||
@ -327,6 +328,7 @@ protected:
|
|||||||
bool llmasblutili;
|
bool llmasblutili;
|
||||||
bool locwavutili;
|
bool locwavutili;
|
||||||
bool loclevwavutili;
|
bool loclevwavutili;
|
||||||
|
bool locconwavutili;
|
||||||
bool lmasutiliblwav;
|
bool lmasutiliblwav;
|
||||||
bool lmasutilicolwav;
|
bool lmasutilicolwav;
|
||||||
bool LHutili;
|
bool LHutili;
|
||||||
|
@ -299,6 +299,7 @@ public:
|
|||||||
const LocwavCurve & loclmasCurvecolwav, bool & lmasutilicolwav,
|
const LocwavCurve & loclmasCurvecolwav, bool & lmasutilicolwav,
|
||||||
const LocwavCurve & locwavCurve, bool & locwavutili,
|
const LocwavCurve & locwavCurve, bool & locwavutili,
|
||||||
const LocwavCurve & loclevwavCurve, bool & loclevwavutili,
|
const LocwavCurve & loclevwavCurve, bool & loclevwavutili,
|
||||||
|
const LocwavCurve & locconwavCurve, bool & locconwavutili,
|
||||||
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 llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
|
int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
|
||||||
@ -312,7 +313,7 @@ public:
|
|||||||
static void strcurv_data(std::string retistr, int *s_datc, int &siz);
|
static void strcurv_data(std::string retistr, int *s_datc, int &siz);
|
||||||
void blendstruc(int bfw, int bfh, LabImage* bufcolorig, float radius, float stru, array2D<float> & blend2, int sk, bool multiThread);
|
void blendstruc(int bfw, int bfh, LabImage* bufcolorig, float radius, float stru, array2D<float> & blend2, int sk, bool multiThread);
|
||||||
|
|
||||||
void wavcontrast4(float ** tmp, float contrast, float radblur, float radlevblur, int bfw, int bfh, int level_bl, int level_hl, int level_br, int level_hr, int sk, bool numThreads, const LocwavCurve & locwavCurve, bool & locwavutili, const LocwavCurve & loclevwavCurve, bool & loclevwavutili, bool wavcurvelev, int & maxlvl);
|
void wavcontrast4(float ** tmp, float contrast, float radblur, float radlevblur, int bfw, int bfh, int level_bl, int level_hl, int level_br, int level_hr, int sk, bool numThreads, const LocwavCurve & locwavCurve, bool & locwavutili, const LocwavCurve & loclevwavCurve, bool & loclevwavutili, bool wavcurvelev, const LocwavCurve & locconwavCurve, bool & locconwavutili, bool wavcurvecon, float sigm, int & maxlvl);
|
||||||
void transit_shapedetect2(int call, int senstype, const LabImage * bufexporig, const LabImage * bufexpfin, LabImage * originalmask, const float hueref, const float chromaref, const float lumaref, float sobelref, float meansobel, float ** blend2, struct local_params & lp, LabImage * original, LabImage * transformed, int cx, int cy, int sk);
|
void transit_shapedetect2(int call, int senstype, const LabImage * bufexporig, const LabImage * bufexpfin, LabImage * originalmask, const float hueref, const float chromaref, const float lumaref, float sobelref, float meansobel, float ** blend2, struct local_params & lp, LabImage * original, LabImage * transformed, int cx, int cy, int sk);
|
||||||
|
|
||||||
void transit_shapedetect_retinex(int call, int senstype, LabImage * bufexporig, LabImage * bufmask, LabImage * buforigmas, float **buflight, float **bufchro, const float hueref, const float chromaref, const float lumaref, const struct local_params & lp, LabImage * original, LabImage * transformed, int cx, int cy, int sk);
|
void transit_shapedetect_retinex(int call, int senstype, LabImage * bufexporig, LabImage * bufmask, LabImage * buforigmas, float **buflight, float **bufchro, const float hueref, const float chromaref, const float lumaref, const struct local_params & lp, LabImage * original, LabImage * transformed, int cx, int cy, int sk);
|
||||||
|
@ -3995,7 +3995,9 @@ void ImProcFunctions::maskcalccol(int call, bool invmask, bool pde, int bfw, int
|
|||||||
LocwavCurve dummy;
|
LocwavCurve dummy;
|
||||||
bool loclevwavutili = false;
|
bool loclevwavutili = false;
|
||||||
bool wavcurvelev = false;
|
bool wavcurvelev = false;
|
||||||
wavcontrast4(bufmaskblurcol->L, contrast, 0.f, 0.f, bfw, bfh, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurvecolwav, lmasutilicolwav, dummy, loclevwavutili, wavcurvelev, maxlvl);
|
bool locconwavutili = false;
|
||||||
|
bool wavcurvecon = false;
|
||||||
|
wavcontrast4(bufmaskblurcol->L, contrast, 0.f, 0.f, bfw, bfh, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurvecolwav, lmasutilicolwav, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, 1.f, maxlvl);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6732,7 +6734,8 @@ void ImProcFunctions::fftw_tile_blur(int GW, int GH, int tilssize, int max_numbl
|
|||||||
fftwf_destroy_plan(plan_backward_blox[1]);
|
fftwf_destroy_plan(plan_backward_blox[1]);
|
||||||
fftwf_cleanup();
|
fftwf_cleanup();
|
||||||
}
|
}
|
||||||
void ImProcFunctions::wavcontrast4(float ** tmp, float contrast, float radblur, float radlevblur, int bfw, int bfh, int level_bl, int level_hl, int level_br, int level_hr, int sk, bool numThreads, const LocwavCurve & locwavCurve, bool & locwavutili, const LocwavCurve & loclevwavCurve, bool & loclevwavutili, bool wavcurvelev, int & maxlvl)
|
void ImProcFunctions::wavcontrast4(float ** tmp, float contrast, float radblur, float radlevblur, int bfw, int bfh, int level_bl, int level_hl, int level_br, int level_hr, int sk, bool numThreads,
|
||||||
|
const LocwavCurve & locwavCurve, bool & locwavutili, const LocwavCurve & loclevwavCurve, bool & loclevwavutili, bool wavcurvelev, const LocwavCurve & locconwavCurve, bool & locconwavutili, bool wavcurvecon, float sigm, int & maxlvl)
|
||||||
{
|
{
|
||||||
wavelet_decomposition *wdspot = new wavelet_decomposition(tmp[0], bfw, bfh, level_br, 1, sk, numThreads, 6);
|
wavelet_decomposition *wdspot = new wavelet_decomposition(tmp[0], bfw, bfh, level_br, 1, sk, numThreads, 6);
|
||||||
|
|
||||||
@ -6774,10 +6777,6 @@ void ImProcFunctions::wavcontrast4(float ** tmp, float contrast, float radblur,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (contrast != 0.) {
|
if (contrast != 0.) {
|
||||||
// int W_L = wdspot->level_W(0);
|
|
||||||
// int H_L = wdspot->level_H(0);
|
|
||||||
// float *wav_L0 = wdspot->coeff0;
|
|
||||||
|
|
||||||
|
|
||||||
double avedbl = 0.0; // use double precision for large summations
|
double avedbl = 0.0; // use double precision for large summations
|
||||||
|
|
||||||
@ -6822,6 +6821,76 @@ void ImProcFunctions::wavcontrast4(float ** tmp, float contrast, float radblur,
|
|||||||
float MaxP[10];
|
float MaxP[10];
|
||||||
float MaxN[10];
|
float MaxN[10];
|
||||||
Evaluate2(*wdspot, mean, meanN, sigma, sigmaN, MaxP, MaxN);
|
Evaluate2(*wdspot, mean, meanN, sigma, sigmaN, MaxP, MaxN);
|
||||||
|
|
||||||
|
if (wavcurvecon) {
|
||||||
|
float beta;
|
||||||
|
float mea[9];
|
||||||
|
|
||||||
|
for (int dir = 1; dir < 4; dir++) {
|
||||||
|
for (int level = level_bl; level < maxlvl; ++level) {
|
||||||
|
int W_L = wdspot->level_W(level);
|
||||||
|
int H_L = wdspot->level_H(level);
|
||||||
|
float **wav_L = wdspot->level_coeffs(level);
|
||||||
|
mea[0] = mean[level] / 6.f;
|
||||||
|
mea[1] = mean[level] / 2.f;
|
||||||
|
mea[2] = mean[level]; // 50% data
|
||||||
|
mea[3] = mean[level] + sigm * sigma[level] / 2.f;
|
||||||
|
mea[4] = mean[level] + sigm * sigma[level]; //66%
|
||||||
|
mea[5] = mean[level] + sigm * 1.2f * sigma[level];
|
||||||
|
mea[6] = mean[level] + sigm * 1.5f * sigma[level]; //
|
||||||
|
mea[7] = mean[level] + sigm * 2.f * sigma[level]; //95%
|
||||||
|
mea[8] = mean[level] + sigm * 2.5f * sigma[level]; //99%
|
||||||
|
|
||||||
|
if (locconwavCurve && locconwavutili) {
|
||||||
|
|
||||||
|
float cpMul = 200.f * (locconwavCurve[level * 50.f] - 0.5f);
|
||||||
|
|
||||||
|
if(cpMul > 0.f) {
|
||||||
|
cpMul *= 2.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
cpMul /= sk;
|
||||||
|
|
||||||
|
for (int i = 0; i < W_L * H_L; i++) {
|
||||||
|
|
||||||
|
if (cpMul < 0.f) {
|
||||||
|
beta = 1.f; // disabled for negatives values "less contrast"
|
||||||
|
} else {
|
||||||
|
float WavCL = fabsf(wav_L[dir][i]);
|
||||||
|
|
||||||
|
//reduction amplification: max action between mean / 2 and mean + sigma
|
||||||
|
// arbitrary coefficient, we can add a slider !!
|
||||||
|
if (WavCL < mea[0]) {
|
||||||
|
beta = 0.6f; //preserve very low contrast (sky...)
|
||||||
|
} else if (WavCL < mea[1]) {
|
||||||
|
beta = 0.8f;
|
||||||
|
} else if (WavCL < mea[2]) {
|
||||||
|
beta = 1.f; //standard
|
||||||
|
} else if (WavCL < mea[3]) {
|
||||||
|
beta = 1.f;
|
||||||
|
} else if (WavCL < mea[4]) {
|
||||||
|
beta = 0.8f; //+sigma
|
||||||
|
} else if (WavCL < mea[5]) {
|
||||||
|
beta = 0.6f;
|
||||||
|
} else if (WavCL < mea[6]) {
|
||||||
|
beta = 0.4f;
|
||||||
|
} else if (WavCL < mea[7]) {
|
||||||
|
beta = 0.2f; // + 2 sigma
|
||||||
|
} else if (WavCL < mea[8]) {
|
||||||
|
beta = 0.1f;
|
||||||
|
} else {
|
||||||
|
beta = 0.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float alpha = (1024.f + 15.f * (float) cpMul * beta) / 1024.f ;
|
||||||
|
wav_L[dir][i] *= alpha;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
float alow = 1.f;
|
float alow = 1.f;
|
||||||
float blow = 0.f;
|
float blow = 0.f;
|
||||||
|
|
||||||
@ -8480,6 +8549,7 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
const LocwavCurve & loclmasCurvecolwav, bool & lmasutilicolwav,
|
const LocwavCurve & loclmasCurvecolwav, bool & lmasutilicolwav,
|
||||||
const LocwavCurve & locwavCurve, bool & locwavutili,
|
const LocwavCurve & locwavCurve, bool & locwavutili,
|
||||||
const LocwavCurve & loclevwavCurve, bool & loclevwavutili,
|
const LocwavCurve & loclevwavCurve, bool & loclevwavutili,
|
||||||
|
const LocwavCurve & locconwavCurve, bool & locconwavutili,
|
||||||
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 llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
|
int llColorMask, int llColorMaskinv, int llExpMask, int llExpMaskinv, int llSHMask, int llSHMaskinv, int llvibMask, int llcbMask, int llretiMask, int llsoftMask, int lltmMask, int llblMask,
|
||||||
@ -8877,7 +8947,9 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
LocwavCurve dummy;
|
LocwavCurve dummy;
|
||||||
bool loclevwavutili = false;
|
bool loclevwavutili = false;
|
||||||
bool wavcurvelev = false;
|
bool wavcurvelev = false;
|
||||||
wavcontrast4(bufmaskblurbl->L, contrast, 0.f, 0.f, GW, GH, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurveblwav, lmasutiliblwav, dummy, loclevwavutili, wavcurvelev, maxlvl);
|
bool locconwavutili = false;
|
||||||
|
bool wavcurvecon = false;
|
||||||
|
wavcontrast4(bufmaskblurbl->L, contrast, 0.f, 0.f, GW, GH, level_bl, level_hl, level_br, level_hr, sk, numThreads, loclmasCurveblwav, lmasutiliblwav, dummy, loclevwavutili, wavcurvelev, dummy, locconwavutili, wavcurvecon, 1.f, maxlvl);
|
||||||
}
|
}
|
||||||
|
|
||||||
int shado = params->locallab.spots.at(sp).shadmaskbl;
|
int shado = params->locallab.spots.at(sp).shadmaskbl;
|
||||||
@ -10556,8 +10628,19 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wavcurvecon = false;
|
||||||
|
|
||||||
if ((lp.lcamount > 0.f || wavcurve || wavcurvelev || params->locallab.spots.at(sp).residblur > 0.f || params->locallab.spots.at(sp).levelblur > 0.f || params->locallab.spots.at(sp).residcont != 0.f || params->locallab.spots.at(sp).clarilres != 0.f || params->locallab.spots.at(sp).claricres != 0.f) && call < 3 && lp.lcena) {
|
if (locconwavCurve && locconwavutili) {
|
||||||
|
if (lp.locmet == 1) {
|
||||||
|
for (int i = 0; i < 500; i++) {
|
||||||
|
if (locconwavCurve[i] != 0.5) {
|
||||||
|
wavcurvecon = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((lp.lcamount > 0.f || wavcurve || wavcurvelev || wavcurvecon || params->locallab.spots.at(sp).residblur > 0.f || params->locallab.spots.at(sp).levelblur > 0.f || params->locallab.spots.at(sp).residcont != 0.f || params->locallab.spots.at(sp).clarilres != 0.f || params->locallab.spots.at(sp).claricres != 0.f) && call < 3 && lp.lcena) {
|
||||||
int ystart = std::max(static_cast<int>(lp.yc - lp.lyT) - cy, 0);
|
int ystart = std::max(static_cast<int>(lp.yc - lp.lyT) - cy, 0);
|
||||||
int yend = std::min(static_cast<int>(lp.yc + lp.ly) - cy, original->H);
|
int yend = std::min(static_cast<int>(lp.yc + lp.ly) - cy, original->H);
|
||||||
int xstart = std::max(static_cast<int>(lp.xc - lp.lxL) - cx, 0);
|
int xstart = std::max(static_cast<int>(lp.xc - lp.lxL) - cx, 0);
|
||||||
@ -10803,8 +10886,9 @@ void ImProcFunctions::Lab_Local(int call, int sp, float** shbuffer, LabImage * o
|
|||||||
const float radblur = (params->locallab.spots.at(sp).residblur) / sk;
|
const float radblur = (params->locallab.spots.at(sp).residblur) / sk;
|
||||||
const bool blurlc = params->locallab.spots.at(sp).blurlc;
|
const bool blurlc = params->locallab.spots.at(sp).blurlc;
|
||||||
const float radlevblur = (params->locallab.spots.at(sp).levelblur) / sk;
|
const float radlevblur = (params->locallab.spots.at(sp).levelblur) / sk;
|
||||||
|
const float sigma = params->locallab.spots.at(sp).sigma;
|
||||||
|
|
||||||
wavcontrast4(tmp1->L, contrast, radblur, radlevblur, tmp1->W, tmp1->H, level_bl, level_hl, level_br, level_hr, sk, numThreads, locwavCurve, locwavutili, loclevwavCurve, loclevwavutili, wavcurvelev, maxlvl);
|
wavcontrast4(tmp1->L, contrast, radblur, radlevblur, tmp1->W, tmp1->H, level_bl, level_hl, level_br, level_hr, sk, numThreads, locwavCurve, locwavutili, loclevwavCurve, loclevwavutili, wavcurvelev, locconwavCurve, locconwavutili, wavcurvecon, sigma, maxlvl);
|
||||||
|
|
||||||
const float satur = params->locallab.spots.at(sp).residchro;
|
const float satur = params->locallab.spots.at(sp).residchro;
|
||||||
|
|
||||||
|
@ -886,6 +886,8 @@ enum ProcEventCode {
|
|||||||
Evlocallabblurlc = 857,
|
Evlocallabblurlc = 857,
|
||||||
Evlocallablevelblur = 858,
|
Evlocallablevelblur = 858,
|
||||||
EvlocallabwavCurvelev = 859,
|
EvlocallabwavCurvelev = 859,
|
||||||
|
EvlocallabwavCurvecon = 860,
|
||||||
|
Evlocallabsigma = 861,
|
||||||
NUMOFEVENTS
|
NUMOFEVENTS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2725,6 +2725,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
residblur(0.0),
|
residblur(0.0),
|
||||||
levelblur(0.0),
|
levelblur(0.0),
|
||||||
residchro(0.0),
|
residchro(0.0),
|
||||||
|
sigma(1.0),
|
||||||
clarilres(0.0),
|
clarilres(0.0),
|
||||||
claricres(0.0),
|
claricres(0.0),
|
||||||
clarisoft(0.0),
|
clarisoft(0.0),
|
||||||
@ -2735,6 +2736,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
|
|||||||
locwavcurve{(double)FCT_MinMaxCPoints, 0.0, 0.5, 0.35, 0.35, 1., 0.5, 0.35, 0.35},
|
locwavcurve{(double)FCT_MinMaxCPoints, 0.0, 0.5, 0.35, 0.35, 1., 0.5, 0.35, 0.35},
|
||||||
csthreshold(0, 0, 5, 5, false),
|
csthreshold(0, 0, 5, 5, false),
|
||||||
loclevwavcurve{(double)FCT_MinMaxCPoints, 0.0, 0.0, 0.0, 0.35, 0.5, 0., 0.35, 0.35, 1.0, 0.0, 0.35, 0.35},
|
loclevwavcurve{(double)FCT_MinMaxCPoints, 0.0, 0.0, 0.0, 0.35, 0.5, 0., 0.35, 0.35, 1.0, 0.0, 0.35, 0.35},
|
||||||
|
locconwavcurve{(double)FCT_MinMaxCPoints, 0.0, 0.5, 0.35, 0.35, 1., 0.5, 0.35, 0.35},
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
expcbdl(false),
|
expcbdl(false),
|
||||||
mult{1.0, 1.0, 1.0, 1.0, 1.0, 1.0},
|
mult{1.0, 1.0, 1.0, 1.0, 1.0, 1.0},
|
||||||
@ -3112,6 +3114,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
|||||||
&& residblur == other.residblur
|
&& residblur == other.residblur
|
||||||
&& levelblur == other.levelblur
|
&& levelblur == other.levelblur
|
||||||
&& residchro == other.residchro
|
&& residchro == other.residchro
|
||||||
|
&& sigma == other.sigma
|
||||||
&& clarilres == other.clarilres
|
&& clarilres == other.clarilres
|
||||||
&& claricres == other.claricres
|
&& claricres == other.claricres
|
||||||
&& clarisoft == other.clarisoft
|
&& clarisoft == other.clarisoft
|
||||||
@ -3122,6 +3125,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
|
|||||||
&& locwavcurve == other.locwavcurve
|
&& locwavcurve == other.locwavcurve
|
||||||
&& csthreshold == other.csthreshold
|
&& csthreshold == other.csthreshold
|
||||||
&& loclevwavcurve == other.loclevwavcurve
|
&& loclevwavcurve == other.loclevwavcurve
|
||||||
|
&& locconwavcurve == other.locconwavcurve
|
||||||
// Constrast by detail levels
|
// Constrast by detail levels
|
||||||
&& expcbdl == other.expcbdl
|
&& expcbdl == other.expcbdl
|
||||||
&& [this, &other]()->bool {
|
&& [this, &other]()->bool {
|
||||||
@ -4479,6 +4483,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).residblur, "Locallab", "Residblur_" + std::to_string(i), spot.residblur, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).residblur, "Locallab", "Residblur_" + std::to_string(i), spot.residblur, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).levelblur, "Locallab", "Levelblur_" + std::to_string(i), spot.levelblur, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).levelblur, "Locallab", "Levelblur_" + std::to_string(i), spot.levelblur, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).residchro, "Locallab", "Residchro_" + std::to_string(i), spot.residchro, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).residchro, "Locallab", "Residchro_" + std::to_string(i), spot.residchro, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sigma, "Locallab", "Sigma_" + std::to_string(i), spot.sigma, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).clarilres, "Locallab", "ClariLres_" + std::to_string(i), spot.clarilres, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).clarilres, "Locallab", "ClariLres_" + std::to_string(i), spot.clarilres, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).claricres, "Locallab", "ClariCres_" + std::to_string(i), spot.claricres, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).claricres, "Locallab", "ClariCres_" + std::to_string(i), spot.claricres, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).clarisoft, "Locallab", "Clarisoft_" + std::to_string(i), spot.clarisoft, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).clarisoft, "Locallab", "Clarisoft_" + std::to_string(i), spot.clarisoft, keyFile);
|
||||||
@ -4488,6 +4493,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).localcontMethod, "Locallab", "localcontMethod_" + std::to_string(i), spot.localcontMethod, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).localcontMethod, "Locallab", "localcontMethod_" + std::to_string(i), spot.localcontMethod, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).locwavcurve, "Locallab", "LocwavCurve_" + std::to_string(i), spot.locwavcurve, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).locwavcurve, "Locallab", "LocwavCurve_" + std::to_string(i), spot.locwavcurve, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).loclevwavcurve, "Locallab", "LoclevwavCurve_" + std::to_string(i), spot.loclevwavcurve, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).loclevwavcurve, "Locallab", "LoclevwavCurve_" + std::to_string(i), spot.loclevwavcurve, keyFile);
|
||||||
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).locconwavcurve, "Locallab", "LocconwavCurve_" + std::to_string(i), spot.locconwavcurve, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).csthreshold, "Locallab", "CSThreshold_" + std::to_string(i), spot.csthreshold.toVector(), keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).csthreshold, "Locallab", "CSThreshold_" + std::to_string(i), spot.csthreshold.toVector(), keyFile);
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).expcbdl, "Locallab", "Expcbdl_" + std::to_string(i), spot.expcbdl, keyFile);
|
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).expcbdl, "Locallab", "Expcbdl_" + std::to_string(i), spot.expcbdl, keyFile);
|
||||||
@ -5995,6 +6001,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Locallab", "Residblur_" + std::to_string(i), pedited, spot.residblur, spotEdited.residblur);
|
assignFromKeyfile(keyFile, "Locallab", "Residblur_" + std::to_string(i), pedited, spot.residblur, spotEdited.residblur);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Levelblur_" + std::to_string(i), pedited, spot.levelblur, spotEdited.levelblur);
|
assignFromKeyfile(keyFile, "Locallab", "Levelblur_" + std::to_string(i), pedited, spot.levelblur, spotEdited.levelblur);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Residchro_" + std::to_string(i), pedited, spot.residchro, spotEdited.residchro);
|
assignFromKeyfile(keyFile, "Locallab", "Residchro_" + std::to_string(i), pedited, spot.residchro, spotEdited.residchro);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "Sigma_" + std::to_string(i), pedited, spot.sigma, spotEdited.sigma);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "ClariLres_" + std::to_string(i), pedited, spot.clarilres, spotEdited.clarilres);
|
assignFromKeyfile(keyFile, "Locallab", "ClariLres_" + std::to_string(i), pedited, spot.clarilres, spotEdited.clarilres);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "ClariCres_" + std::to_string(i), pedited, spot.claricres, spotEdited.claricres);
|
assignFromKeyfile(keyFile, "Locallab", "ClariCres_" + std::to_string(i), pedited, spot.claricres, spotEdited.claricres);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "Clarisoft_" + std::to_string(i), pedited, spot.clarisoft, spotEdited.clarisoft);
|
assignFromKeyfile(keyFile, "Locallab", "Clarisoft_" + std::to_string(i), pedited, spot.clarisoft, spotEdited.clarisoft);
|
||||||
@ -6004,6 +6011,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Locallab", "localcontMethod_" + std::to_string(i), pedited, spot.localcontMethod, spotEdited.localcontMethod);
|
assignFromKeyfile(keyFile, "Locallab", "localcontMethod_" + std::to_string(i), pedited, spot.localcontMethod, spotEdited.localcontMethod);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "LocwavCurve_" + std::to_string(i), pedited, spot.locwavcurve, spotEdited.locwavcurve);
|
assignFromKeyfile(keyFile, "Locallab", "LocwavCurve_" + std::to_string(i), pedited, spot.locwavcurve, spotEdited.locwavcurve);
|
||||||
assignFromKeyfile(keyFile, "Locallab", "LoclevwavCurve_" + std::to_string(i), pedited, spot.loclevwavcurve, spotEdited.loclevwavcurve);
|
assignFromKeyfile(keyFile, "Locallab", "LoclevwavCurve_" + std::to_string(i), pedited, spot.loclevwavcurve, spotEdited.loclevwavcurve);
|
||||||
|
assignFromKeyfile(keyFile, "Locallab", "LocconwavCurve_" + std::to_string(i), pedited, spot.locconwavcurve, spotEdited.locconwavcurve);
|
||||||
if (keyFile.has_key("Locallab", "CSThreshold_" + std::to_string(i))) {
|
if (keyFile.has_key("Locallab", "CSThreshold_" + std::to_string(i))) {
|
||||||
|
|
||||||
const std::vector<int> thresh = keyFile.get_integer_list("Locallab", "CSThreshold_" + std::to_string(i));
|
const std::vector<int> thresh = keyFile.get_integer_list("Locallab", "CSThreshold_" + std::to_string(i));
|
||||||
|
@ -1268,6 +1268,7 @@ struct LocallabParams {
|
|||||||
double residblur;
|
double residblur;
|
||||||
double levelblur;
|
double levelblur;
|
||||||
double residchro;
|
double residchro;
|
||||||
|
double sigma;
|
||||||
double clarilres;
|
double clarilres;
|
||||||
double claricres;
|
double claricres;
|
||||||
double clarisoft;
|
double clarisoft;
|
||||||
@ -1278,6 +1279,7 @@ struct LocallabParams {
|
|||||||
std::vector<double> locwavcurve;
|
std::vector<double> locwavcurve;
|
||||||
Threshold<int> csthreshold;
|
Threshold<int> csthreshold;
|
||||||
std::vector<double> loclevwavcurve;
|
std::vector<double> loclevwavcurve;
|
||||||
|
std::vector<double> locconwavcurve;
|
||||||
|
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
bool expcbdl;
|
bool expcbdl;
|
||||||
|
@ -889,7 +889,9 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, //Evlocallabresidblur
|
LUMINANCECURVE, //Evlocallabresidblur
|
||||||
LUMINANCECURVE, // Evlocallabblurlc
|
LUMINANCECURVE, // Evlocallabblurlc
|
||||||
LUMINANCECURVE, //Evlocallablevelblur
|
LUMINANCECURVE, //Evlocallablevelblur
|
||||||
LUMINANCECURVE //EvlocallabwavCurvelev
|
LUMINANCECURVE, //EvlocallabwavCurvelev
|
||||||
|
LUMINANCECURVE, //EvlocallabwavCurvecon
|
||||||
|
LUMINANCECURVE //Evlocallabsigma
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1117,6 +1117,7 @@ private:
|
|||||||
LocwavCurve loclmasCurvecolwav;
|
LocwavCurve loclmasCurvecolwav;
|
||||||
LocwavCurve locwavCurve;
|
LocwavCurve locwavCurve;
|
||||||
LocwavCurve loclevwavCurve;
|
LocwavCurve loclevwavCurve;
|
||||||
|
LocwavCurve locconwavCurve;
|
||||||
LUTf lllocalcurve(65536, 0);
|
LUTf lllocalcurve(65536, 0);
|
||||||
LUTf lclocalcurve(65536, 0);
|
LUTf lclocalcurve(65536, 0);
|
||||||
LUTf cllocalcurve(65536, 0);
|
LUTf cllocalcurve(65536, 0);
|
||||||
@ -1192,6 +1193,7 @@ private:
|
|||||||
bool llmasblutili = false;
|
bool llmasblutili = false;
|
||||||
bool locwavutili = false;
|
bool locwavutili = false;
|
||||||
bool loclevwavutili = false;
|
bool loclevwavutili = false;
|
||||||
|
bool locconwavutili = false;
|
||||||
bool lmasutiliblwav = false;
|
bool lmasutiliblwav = false;
|
||||||
bool lmasutilicolwav = false;
|
bool lmasutilicolwav = false;
|
||||||
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
|
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
|
||||||
@ -1228,6 +1230,7 @@ private:
|
|||||||
|
|
||||||
locwavCurve.Set(params.locallab.spots.at(sp).locwavcurve, locwavutili);
|
locwavCurve.Set(params.locallab.spots.at(sp).locwavcurve, locwavutili);
|
||||||
loclevwavCurve.Set(params.locallab.spots.at(sp).loclevwavcurve, loclevwavutili);
|
loclevwavCurve.Set(params.locallab.spots.at(sp).loclevwavcurve, loclevwavutili);
|
||||||
|
locconwavCurve.Set(params.locallab.spots.at(sp).locconwavcurve, locconwavutili);
|
||||||
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, 1);
|
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, 1);
|
||||||
CurveFactory::curveLocal(localclutili, params.locallab.spots.at(sp).clcurve, cllocalcurve, 1);
|
CurveFactory::curveLocal(localclutili, params.locallab.spots.at(sp).clcurve, cllocalcurve, 1);
|
||||||
CurveFactory::curveLocal(locallcutili, params.locallab.spots.at(sp).lccurve, lclocalcurve, 1);
|
CurveFactory::curveLocal(locallcutili, params.locallab.spots.at(sp).lccurve, lclocalcurve, 1);
|
||||||
@ -1300,6 +1303,7 @@ private:
|
|||||||
loclmasCurvecolwav,lmasutilicolwav,
|
loclmasCurvecolwav,lmasutilicolwav,
|
||||||
locwavCurve, locwavutili,
|
locwavCurve, locwavutili,
|
||||||
loclevwavCurve, loclevwavutili,
|
loclevwavCurve, loclevwavutili,
|
||||||
|
locconwavCurve, locconwavutili,
|
||||||
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,
|
huerefblu, chromarefblu, lumarefblu, huere, chromare, lumare, sobelre, lastsav, 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);
|
||||||
|
@ -348,6 +348,9 @@ Locallab::Locallab():
|
|||||||
LocalcurveEditorwavlev(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_WAVLEV"))),
|
LocalcurveEditorwavlev(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_WAVLEV"))),
|
||||||
wavshapelev(static_cast<FlatCurveEditor*>(LocalcurveEditorwavlev->addCurve(CT_Flat, "", nullptr, false, false))),
|
wavshapelev(static_cast<FlatCurveEditor*>(LocalcurveEditorwavlev->addCurve(CT_Flat, "", nullptr, false, false))),
|
||||||
|
|
||||||
|
LocalcurveEditorwavcon(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_WAVCON"))),
|
||||||
|
wavshapecon(static_cast<FlatCurveEditor*>(LocalcurveEditorwavcon->addCurve(CT_Flat, "", nullptr, false, false))),
|
||||||
|
|
||||||
//CBDL
|
//CBDL
|
||||||
maskcbCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK"))),
|
maskcbCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK"))),
|
||||||
mask2cbCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
|
mask2cbCurveEditorG(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_MASK2"))),
|
||||||
@ -554,6 +557,7 @@ clarisoft(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CLARISOFT"), 0., 100., 0.5, 0.
|
|||||||
claricres(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CLARICRES"), -20., 100., 0.5, 0.))),
|
claricres(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CLARICRES"), -20., 100., 0.5, 0.))),
|
||||||
sensilc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIS"), 0, 100, 1, 19))),
|
sensilc(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIS"), 0, 100, 1, 19))),
|
||||||
residchro(Gtk::manage(new Adjuster(M("TP_LOCALLAB_RESIDCHRO"), -100, 100, 1, 0))),
|
residchro(Gtk::manage(new Adjuster(M("TP_LOCALLAB_RESIDCHRO"), -100, 100, 1, 0))),
|
||||||
|
sigma(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SIGMAWAV"), 0.3, 2., 0.01, 1.))),
|
||||||
multiplier(
|
multiplier(
|
||||||
[this]() -> std::array<Adjuster*, 6> {
|
[this]() -> std::array<Adjuster*, 6> {
|
||||||
std::array<Adjuster*, 6> res = {};
|
std::array<Adjuster*, 6> res = {};
|
||||||
@ -732,6 +736,7 @@ residFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_RESID")))),
|
|||||||
clariFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_CLARIFRA")))),
|
clariFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_CLARIFRA")))),
|
||||||
blurlevelFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_BLURLEVELFRA")))),
|
blurlevelFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_BLURLEVELFRA")))),
|
||||||
blurresidFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_BLURRESIDFRA")))),
|
blurresidFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_BLURRESIDFRA")))),
|
||||||
|
contFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_CONTFRA")))),
|
||||||
grainFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRAINFRA")))),
|
grainFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRAINFRA")))),
|
||||||
logFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LOGFRA")))),
|
logFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LOGFRA")))),
|
||||||
logPFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LOGPFRA")))),
|
logPFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LOGPFRA")))),
|
||||||
@ -2797,6 +2802,18 @@ pe(nullptr)
|
|||||||
|
|
||||||
LocalcurveEditorwavlev->curveListComplete();
|
LocalcurveEditorwavlev->curveListComplete();
|
||||||
|
|
||||||
|
LocalcurveEditorwavcon->setCurveListener(this);
|
||||||
|
|
||||||
|
wavshapecon->setIdentityValue(0.);
|
||||||
|
wavshapecon->setResetCurve(FlatCurveType(defSpot.locconwavcurve.at(0)), defSpot.locconwavcurve);
|
||||||
|
|
||||||
|
if (showtooltip) {
|
||||||
|
// wavshape->setTooltip(M("TP_RETINEX_WAV_TOOLTIP"));
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalcurveEditorwavcon->curveListComplete();
|
||||||
|
|
||||||
|
|
||||||
localcontMethod->append(M("TP_LOCALLAB_LOCCONT"));
|
localcontMethod->append(M("TP_LOCALLAB_LOCCONT"));
|
||||||
localcontMethod->append(M("TP_LOCALLAB_WAVE"));
|
localcontMethod->append(M("TP_LOCALLAB_WAVE"));
|
||||||
localcontMethod->set_active(0);
|
localcontMethod->set_active(0);
|
||||||
@ -2828,6 +2845,7 @@ pe(nullptr)
|
|||||||
residblur->setAdjusterListener(this);
|
residblur->setAdjusterListener(this);
|
||||||
levelblur->setAdjusterListener(this);
|
levelblur->setAdjusterListener(this);
|
||||||
residchro->setAdjusterListener(this);
|
residchro->setAdjusterListener(this);
|
||||||
|
sigma->setAdjusterListener(this);
|
||||||
clarilres->setAdjusterListener(this);
|
clarilres->setAdjusterListener(this);
|
||||||
clarisoft->setAdjusterListener(this);
|
clarisoft->setAdjusterListener(this);
|
||||||
claricres->setAdjusterListener(this);
|
claricres->setAdjusterListener(this);
|
||||||
@ -2862,6 +2880,12 @@ pe(nullptr)
|
|||||||
blurlevcontBox->pack_start(*LocalcurveEditorwavlev, Gtk::PACK_SHRINK, 4);
|
blurlevcontBox->pack_start(*LocalcurveEditorwavlev, Gtk::PACK_SHRINK, 4);
|
||||||
blurlevelFrame->add(*blurlevcontBox);
|
blurlevelFrame->add(*blurlevcontBox);
|
||||||
|
|
||||||
|
contFrame->set_label_align(0.025, 0.5);
|
||||||
|
ToolParamBlock* const contlevBox = Gtk::manage(new ToolParamBlock());
|
||||||
|
contlevBox->pack_start(*sigma);
|
||||||
|
contlevBox->pack_start(*LocalcurveEditorwavcon, Gtk::PACK_SHRINK, 4);
|
||||||
|
contFrame->add(*contlevBox);
|
||||||
|
|
||||||
setExpandAlignProperties(expcontrastpyr, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
setExpandAlignProperties(expcontrastpyr, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
|
||||||
expcontrastpyr->signal_button_release_event().connect_notify(sigc::bind(sigc::mem_fun(this, &Locallab::foldAllButMe), expcontrastpyr));
|
expcontrastpyr->signal_button_release_event().connect_notify(sigc::bind(sigc::mem_fun(this, &Locallab::foldAllButMe), expcontrastpyr));
|
||||||
expcontrastpyr->setLevel(2);
|
expcontrastpyr->setLevel(2);
|
||||||
@ -2869,6 +2893,7 @@ pe(nullptr)
|
|||||||
blurcontBox->pack_start(*clariFrame);
|
blurcontBox->pack_start(*clariFrame);
|
||||||
blurcontBox->pack_start(*blurresidFrame);
|
blurcontBox->pack_start(*blurresidFrame);
|
||||||
blurcontBox->pack_start(*blurlevelFrame);
|
blurcontBox->pack_start(*blurlevelFrame);
|
||||||
|
blurcontBox->pack_start(*contFrame);
|
||||||
|
|
||||||
expcontrastpyr->add(*blurcontBox, false);
|
expcontrastpyr->add(*blurcontBox, false);
|
||||||
|
|
||||||
@ -3556,6 +3581,7 @@ Locallab::~Locallab()
|
|||||||
delete LocalcurveEditorgainT;
|
delete LocalcurveEditorgainT;
|
||||||
delete LocalcurveEditorwav;
|
delete LocalcurveEditorwav;
|
||||||
delete LocalcurveEditorwavlev;
|
delete LocalcurveEditorwavlev;
|
||||||
|
delete LocalcurveEditorwavcon;
|
||||||
delete masktmCurveEditorG;
|
delete masktmCurveEditorG;
|
||||||
delete maskblCurveEditorG;
|
delete maskblCurveEditorG;
|
||||||
delete mask2blCurveEditorG;
|
delete mask2blCurveEditorG;
|
||||||
@ -5031,6 +5057,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
pp->locallab.spots.at(pp->locallab.selspot).residblur = residblur->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).residblur = residblur->getValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).levelblur = levelblur->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).levelblur = levelblur->getValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).residchro = residchro->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).residchro = residchro->getValue();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).sigma = sigma->getValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).clarilres = clarilres->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).clarilres = clarilres->getValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).claricres = claricres->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).claricres = claricres->getValue();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).clarisoft = clarisoft->getValue();
|
pp->locallab.spots.at(pp->locallab.selspot).clarisoft = clarisoft->getValue();
|
||||||
@ -5040,6 +5067,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
pp->locallab.spots.at(pp->locallab.selspot).locwavcurve = wavshape->getCurve();
|
pp->locallab.spots.at(pp->locallab.selspot).locwavcurve = wavshape->getCurve();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).csthreshold = csThreshold->getValue<int>();
|
pp->locallab.spots.at(pp->locallab.selspot).csthreshold = csThreshold->getValue<int>();
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).loclevwavcurve = wavshapelev->getCurve();
|
pp->locallab.spots.at(pp->locallab.selspot).loclevwavcurve = wavshapelev->getCurve();
|
||||||
|
pp->locallab.spots.at(pp->locallab.selspot).locconwavcurve = wavshapecon->getCurve();
|
||||||
|
|
||||||
if (localcontMethod->get_active_row_number() == 0) {
|
if (localcontMethod->get_active_row_number() == 0) {
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).localcontMethod = "loc";
|
pp->locallab.spots.at(pp->locallab.selspot).localcontMethod = "loc";
|
||||||
@ -5421,6 +5449,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
pe->locallab.spots.at(pp->locallab.selspot).residblur = pe->locallab.spots.at(pp->locallab.selspot).residblur || residblur->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).residblur = pe->locallab.spots.at(pp->locallab.selspot).residblur || residblur->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).levelblur = pe->locallab.spots.at(pp->locallab.selspot).levelblur || levelblur->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).levelblur = pe->locallab.spots.at(pp->locallab.selspot).levelblur || levelblur->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).residchro = pe->locallab.spots.at(pp->locallab.selspot).residchro || residchro->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).residchro = pe->locallab.spots.at(pp->locallab.selspot).residchro || residchro->getEditedState();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).sigma = pe->locallab.spots.at(pp->locallab.selspot).sigma || sigma->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).clarilres = pe->locallab.spots.at(pp->locallab.selspot).clarilres || clarilres->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).clarilres = pe->locallab.spots.at(pp->locallab.selspot).clarilres || clarilres->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).claricres = pe->locallab.spots.at(pp->locallab.selspot).claricres || claricres->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).claricres = pe->locallab.spots.at(pp->locallab.selspot).claricres || claricres->getEditedState();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).clarisoft = pe->locallab.spots.at(pp->locallab.selspot).clarisoft || clarisoft->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).clarisoft = pe->locallab.spots.at(pp->locallab.selspot).clarisoft || clarisoft->getEditedState();
|
||||||
@ -5431,6 +5460,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
pe->locallab.spots.at(pp->locallab.selspot).locwavcurve = pe->locallab.spots.at(pp->locallab.selspot).locwavcurve || !wavshape->isUnChanged();
|
pe->locallab.spots.at(pp->locallab.selspot).locwavcurve = pe->locallab.spots.at(pp->locallab.selspot).locwavcurve || !wavshape->isUnChanged();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).loclevwavcurve = pe->locallab.spots.at(pp->locallab.selspot).loclevwavcurve || !wavshapelev->isUnChanged();
|
pe->locallab.spots.at(pp->locallab.selspot).loclevwavcurve = pe->locallab.spots.at(pp->locallab.selspot).loclevwavcurve || !wavshapelev->isUnChanged();
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).csthreshold = pe->locallab.spots.at(pp->locallab.selspot).csthreshold || csThreshold->getEditedState();
|
pe->locallab.spots.at(pp->locallab.selspot).csthreshold = pe->locallab.spots.at(pp->locallab.selspot).csthreshold || csThreshold->getEditedState();
|
||||||
|
pe->locallab.spots.at(pp->locallab.selspot).locconwavcurve = pe->locallab.spots.at(pp->locallab.selspot).locconwavcurve || !wavshapecon->isUnChanged();
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
pe->locallab.spots.at(pp->locallab.selspot).expcbdl = pe->locallab.spots.at(pp->locallab.selspot).expcbdl || !expcbdl->get_inconsistent();
|
pe->locallab.spots.at(pp->locallab.selspot).expcbdl = pe->locallab.spots.at(pp->locallab.selspot).expcbdl || !expcbdl->get_inconsistent();
|
||||||
|
|
||||||
@ -5808,6 +5838,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
pedited->locallab.spots.at(pp->locallab.selspot).residblur = pedited->locallab.spots.at(pp->locallab.selspot).residblur || residblur->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).residblur = pedited->locallab.spots.at(pp->locallab.selspot).residblur || residblur->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).levelblur = pedited->locallab.spots.at(pp->locallab.selspot).levelblur || levelblur->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).levelblur = pedited->locallab.spots.at(pp->locallab.selspot).levelblur || levelblur->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).residchro = pedited->locallab.spots.at(pp->locallab.selspot).residchro || residchro->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).residchro = pedited->locallab.spots.at(pp->locallab.selspot).residchro || residchro->getEditedState();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).sigma = pedited->locallab.spots.at(pp->locallab.selspot).sigma || sigma->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).clarilres = pedited->locallab.spots.at(pp->locallab.selspot).clarilres || clarilres->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).clarilres = pedited->locallab.spots.at(pp->locallab.selspot).clarilres || clarilres->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).claricres = pedited->locallab.spots.at(pp->locallab.selspot).claricres || claricres->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).claricres = pedited->locallab.spots.at(pp->locallab.selspot).claricres || claricres->getEditedState();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).clarisoft = pedited->locallab.spots.at(pp->locallab.selspot).clarisoft || clarisoft->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).clarisoft = pedited->locallab.spots.at(pp->locallab.selspot).clarisoft || clarisoft->getEditedState();
|
||||||
@ -5817,6 +5848,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
pedited->locallab.spots.at(pp->locallab.selspot).locwavcurve = pedited->locallab.spots.at(pp->locallab.selspot).locwavcurve || !wavshape->isUnChanged();
|
pedited->locallab.spots.at(pp->locallab.selspot).locwavcurve = pedited->locallab.spots.at(pp->locallab.selspot).locwavcurve || !wavshape->isUnChanged();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).loclevwavcurve = pedited->locallab.spots.at(pp->locallab.selspot).loclevwavcurve || !wavshapelev->isUnChanged();
|
pedited->locallab.spots.at(pp->locallab.selspot).loclevwavcurve = pedited->locallab.spots.at(pp->locallab.selspot).loclevwavcurve || !wavshapelev->isUnChanged();
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).csthreshold = pedited->locallab.spots.at(pp->locallab.selspot).csthreshold || csThreshold->getEditedState();
|
pedited->locallab.spots.at(pp->locallab.selspot).csthreshold = pedited->locallab.spots.at(pp->locallab.selspot).csthreshold || csThreshold->getEditedState();
|
||||||
|
pedited->locallab.spots.at(pp->locallab.selspot).locconwavcurve = pedited->locallab.spots.at(pp->locallab.selspot).locconwavcurve || !wavshapecon->isUnChanged();
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
pedited->locallab.spots.at(pp->locallab.selspot).expcbdl = pedited->locallab.spots.at(pp->locallab.selspot).expcbdl || !expcbdl->get_inconsistent();
|
pedited->locallab.spots.at(pp->locallab.selspot).expcbdl = pedited->locallab.spots.at(pp->locallab.selspot).expcbdl || !expcbdl->get_inconsistent();
|
||||||
|
|
||||||
@ -6302,6 +6334,12 @@ void Locallab::curveChanged(CurveEditor* ce)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ce == wavshapecon) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(EvlocallabwavCurvecon, M("HISTORY_CUSTOMCURVE"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -6314,6 +6352,7 @@ void Locallab::localcontMethodChanged()
|
|||||||
residblur->hide();
|
residblur->hide();
|
||||||
levelblur->hide();
|
levelblur->hide();
|
||||||
residchro->hide();
|
residchro->hide();
|
||||||
|
sigma->hide();
|
||||||
clarilres->hide();
|
clarilres->hide();
|
||||||
claricres->hide();
|
claricres->hide();
|
||||||
clarisoft->hide();
|
clarisoft->hide();
|
||||||
@ -6325,6 +6364,7 @@ void Locallab::localcontMethodChanged()
|
|||||||
lclightness->show();
|
lclightness->show();
|
||||||
LocalcurveEditorwav->hide();
|
LocalcurveEditorwav->hide();
|
||||||
LocalcurveEditorwavlev->hide();
|
LocalcurveEditorwavlev->hide();
|
||||||
|
LocalcurveEditorwavcon->hide();
|
||||||
fftwlc->show();
|
fftwlc->show();
|
||||||
blurlc->show();
|
blurlc->show();
|
||||||
} else if (localcontMethod->get_active_row_number() == 1) {
|
} else if (localcontMethod->get_active_row_number() == 1) {
|
||||||
@ -6333,6 +6373,7 @@ void Locallab::localcontMethodChanged()
|
|||||||
residblur->show();
|
residblur->show();
|
||||||
levelblur->show();
|
levelblur->show();
|
||||||
residchro->show();
|
residchro->show();
|
||||||
|
sigma->show();
|
||||||
clarilres->show();
|
clarilres->show();
|
||||||
claricres->show();
|
claricres->show();
|
||||||
clarisoft->show();
|
clarisoft->show();
|
||||||
@ -6343,7 +6384,8 @@ void Locallab::localcontMethodChanged()
|
|||||||
lcdarkness->hide();
|
lcdarkness->hide();
|
||||||
lclightness->hide();
|
lclightness->hide();
|
||||||
LocalcurveEditorwav->show();
|
LocalcurveEditorwav->show();
|
||||||
LocalcurveEditorwavlev->show();
|
LocalcurveEditorwavlev->hide();
|
||||||
|
LocalcurveEditorwavcon->hide();
|
||||||
fftwlc->hide();
|
fftwlc->hide();
|
||||||
blurlc->show();
|
blurlc->show();
|
||||||
}
|
}
|
||||||
@ -8312,6 +8354,7 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c
|
|||||||
residblur->setDefault(defSpot->residblur);
|
residblur->setDefault(defSpot->residblur);
|
||||||
levelblur->setDefault(defSpot->levelblur);
|
levelblur->setDefault(defSpot->levelblur);
|
||||||
residchro->setDefault(defSpot->residchro);
|
residchro->setDefault(defSpot->residchro);
|
||||||
|
sigma->setDefault(defSpot->sigma);
|
||||||
clarilres->setDefault(defSpot->clarilres);
|
clarilres->setDefault(defSpot->clarilres);
|
||||||
claricres->setDefault(defSpot->claricres);
|
claricres->setDefault(defSpot->claricres);
|
||||||
clarisoft->setDefault(defSpot->clarisoft);
|
clarisoft->setDefault(defSpot->clarisoft);
|
||||||
@ -8544,6 +8587,7 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c
|
|||||||
residblur->setDefaultEditedState(Irrelevant);
|
residblur->setDefaultEditedState(Irrelevant);
|
||||||
levelblur->setDefaultEditedState(Irrelevant);
|
levelblur->setDefaultEditedState(Irrelevant);
|
||||||
residchro->setDefaultEditedState(Irrelevant);
|
residchro->setDefaultEditedState(Irrelevant);
|
||||||
|
sigma->setDefaultEditedState(Irrelevant);
|
||||||
clarilres->setDefaultEditedState(Irrelevant);
|
clarilres->setDefaultEditedState(Irrelevant);
|
||||||
claricres->setDefaultEditedState(Irrelevant);
|
claricres->setDefaultEditedState(Irrelevant);
|
||||||
clarisoft->setDefaultEditedState(Irrelevant);
|
clarisoft->setDefaultEditedState(Irrelevant);
|
||||||
@ -8781,6 +8825,7 @@ void Locallab::setDefaults(const rtengine::procparams::ProcParams * defParams, c
|
|||||||
residblur->setDefaultEditedState(defSpotState->residblur ? Edited : UnEdited);
|
residblur->setDefaultEditedState(defSpotState->residblur ? Edited : UnEdited);
|
||||||
levelblur->setDefaultEditedState(defSpotState->levelblur ? Edited : UnEdited);
|
levelblur->setDefaultEditedState(defSpotState->levelblur ? Edited : UnEdited);
|
||||||
residchro->setDefaultEditedState(defSpotState->residchro ? Edited : UnEdited);
|
residchro->setDefaultEditedState(defSpotState->residchro ? Edited : UnEdited);
|
||||||
|
sigma->setDefaultEditedState(defSpotState->sigma ? Edited : UnEdited);
|
||||||
clarilres->setDefaultEditedState(defSpotState->clarilres ? Edited : UnEdited);
|
clarilres->setDefaultEditedState(defSpotState->clarilres ? Edited : UnEdited);
|
||||||
claricres->setDefaultEditedState(defSpotState->claricres ? Edited : UnEdited);
|
claricres->setDefaultEditedState(defSpotState->claricres ? Edited : UnEdited);
|
||||||
clarisoft->setDefaultEditedState(defSpotState->clarisoft ? Edited : UnEdited);
|
clarisoft->setDefaultEditedState(defSpotState->clarisoft ? Edited : UnEdited);
|
||||||
@ -9946,6 +9991,12 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (a ==sigma) {
|
||||||
|
if (listener) {
|
||||||
|
listener->panelChanged(Evlocallabsigma, sigma->getTextValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (a == clarilres) {
|
if (a == clarilres) {
|
||||||
if (listener) {
|
if (listener) {
|
||||||
listener->panelChanged(Evlocallabclarilres, clarilres->getTextValue());
|
listener->panelChanged(Evlocallabclarilres, clarilres->getTextValue());
|
||||||
@ -10417,6 +10468,7 @@ void Locallab::setBatchMode(bool batchMode)
|
|||||||
residblur->showEditedCB();
|
residblur->showEditedCB();
|
||||||
levelblur->showEditedCB();
|
levelblur->showEditedCB();
|
||||||
residchro->showEditedCB();
|
residchro->showEditedCB();
|
||||||
|
sigma->showEditedCB();
|
||||||
clarilres->showEditedCB();
|
clarilres->showEditedCB();
|
||||||
claricres->showEditedCB();
|
claricres->showEditedCB();
|
||||||
clarisoft->showEditedCB();
|
clarisoft->showEditedCB();
|
||||||
@ -11465,6 +11517,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
residblur->setValue(pp->locallab.spots.at(index).residblur);
|
residblur->setValue(pp->locallab.spots.at(index).residblur);
|
||||||
levelblur->setValue(pp->locallab.spots.at(index).levelblur);
|
levelblur->setValue(pp->locallab.spots.at(index).levelblur);
|
||||||
residchro->setValue(pp->locallab.spots.at(index).residchro);
|
residchro->setValue(pp->locallab.spots.at(index).residchro);
|
||||||
|
sigma->setValue(pp->locallab.spots.at(index).sigma);
|
||||||
clarilres->setValue(pp->locallab.spots.at(index).clarilres);
|
clarilres->setValue(pp->locallab.spots.at(index).clarilres);
|
||||||
claricres->setValue(pp->locallab.spots.at(index).claricres);
|
claricres->setValue(pp->locallab.spots.at(index).claricres);
|
||||||
clarisoft->setValue(pp->locallab.spots.at(index).clarisoft);
|
clarisoft->setValue(pp->locallab.spots.at(index).clarisoft);
|
||||||
@ -11492,6 +11545,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
|
|
||||||
wavshape->setCurve(pp->locallab.spots.at(index).locwavcurve);
|
wavshape->setCurve(pp->locallab.spots.at(index).locwavcurve);
|
||||||
wavshapelev->setCurve(pp->locallab.spots.at(index).loclevwavcurve);
|
wavshapelev->setCurve(pp->locallab.spots.at(index).loclevwavcurve);
|
||||||
|
wavshapecon->setCurve(pp->locallab.spots.at(index).locconwavcurve);
|
||||||
|
|
||||||
if (fftwlc->get_active()) {
|
if (fftwlc->get_active()) {
|
||||||
lcradius->setLimits(20, 1000, 1, 80);
|
lcradius->setLimits(20, 1000, 1, 80);
|
||||||
@ -11959,6 +12013,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
residblur->setEditedState(spotState->residblur ? Edited : UnEdited);
|
residblur->setEditedState(spotState->residblur ? Edited : UnEdited);
|
||||||
levelblur->setEditedState(spotState->levelblur ? Edited : UnEdited);
|
levelblur->setEditedState(spotState->levelblur ? Edited : UnEdited);
|
||||||
residchro->setEditedState(spotState->residchro ? Edited : UnEdited);
|
residchro->setEditedState(spotState->residchro ? Edited : UnEdited);
|
||||||
|
sigma->setEditedState(spotState->sigma ? Edited : UnEdited);
|
||||||
clarilres->setEditedState(spotState->clarilres ? Edited : UnEdited);
|
clarilres->setEditedState(spotState->clarilres ? Edited : UnEdited);
|
||||||
claricres->setEditedState(spotState->claricres ? Edited : UnEdited);
|
claricres->setEditedState(spotState->claricres ? Edited : UnEdited);
|
||||||
clarisoft->setEditedState(spotState->clarisoft ? Edited : UnEdited);
|
clarisoft->setEditedState(spotState->clarisoft ? Edited : UnEdited);
|
||||||
@ -11968,6 +12023,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
|
|||||||
wavshape->setUnChanged(!spotState->locwavcurve);
|
wavshape->setUnChanged(!spotState->locwavcurve);
|
||||||
wavshapelev->setUnChanged(!spotState->loclevwavcurve);
|
wavshapelev->setUnChanged(!spotState->loclevwavcurve);
|
||||||
csThreshold->setEditedState(spotState->csthreshold ? Edited : UnEdited);
|
csThreshold->setEditedState(spotState->csthreshold ? Edited : UnEdited);
|
||||||
|
wavshapecon->setUnChanged(!spotState->locconwavcurve);
|
||||||
|
|
||||||
if (!spotState->retinexMethod) {
|
if (!spotState->retinexMethod) {
|
||||||
localcontMethod->set_active_text(M("GENERAL_UNCHANGED"));
|
localcontMethod->set_active_text(M("GENERAL_UNCHANGED"));
|
||||||
@ -12465,6 +12521,7 @@ void Locallab::updateSpecificGUIState()
|
|||||||
residblur->hide();
|
residblur->hide();
|
||||||
levelblur->hide();
|
levelblur->hide();
|
||||||
residchro->hide();
|
residchro->hide();
|
||||||
|
sigma->hide();
|
||||||
clarilres->hide();
|
clarilres->hide();
|
||||||
claricres->hide();
|
claricres->hide();
|
||||||
clarisoft->hide();
|
clarisoft->hide();
|
||||||
@ -12476,6 +12533,7 @@ void Locallab::updateSpecificGUIState()
|
|||||||
lclightness->show();
|
lclightness->show();
|
||||||
LocalcurveEditorwav->hide();
|
LocalcurveEditorwav->hide();
|
||||||
LocalcurveEditorwavlev->hide();
|
LocalcurveEditorwavlev->hide();
|
||||||
|
LocalcurveEditorwavcon->hide();
|
||||||
fftwlc->show();
|
fftwlc->show();
|
||||||
blurlc->show();
|
blurlc->show();
|
||||||
} else if (localcontMethod->get_active_row_number() == 1) {
|
} else if (localcontMethod->get_active_row_number() == 1) {
|
||||||
@ -12483,6 +12541,7 @@ void Locallab::updateSpecificGUIState()
|
|||||||
residcont->show();
|
residcont->show();
|
||||||
residblur->show();
|
residblur->show();
|
||||||
levelblur->show();
|
levelblur->show();
|
||||||
|
sigma->show();
|
||||||
residchro->show();
|
residchro->show();
|
||||||
clarilres->show();
|
clarilres->show();
|
||||||
claricres->show();
|
claricres->show();
|
||||||
@ -12495,6 +12554,7 @@ void Locallab::updateSpecificGUIState()
|
|||||||
lclightness->hide();
|
lclightness->hide();
|
||||||
LocalcurveEditorwav->show();
|
LocalcurveEditorwav->show();
|
||||||
LocalcurveEditorwavlev->show();
|
LocalcurveEditorwavlev->show();
|
||||||
|
LocalcurveEditorwavcon->show();
|
||||||
fftwlc->hide();
|
fftwlc->hide();
|
||||||
blurlc->show();
|
blurlc->show();
|
||||||
}
|
}
|
||||||
|
@ -168,6 +168,8 @@ private:
|
|||||||
FlatCurveEditor* const wavshape;
|
FlatCurveEditor* const wavshape;
|
||||||
CurveEditorGroup* const LocalcurveEditorwavlev;
|
CurveEditorGroup* const LocalcurveEditorwavlev;
|
||||||
FlatCurveEditor* const wavshapelev;
|
FlatCurveEditor* const wavshapelev;
|
||||||
|
CurveEditorGroup* const LocalcurveEditorwavcon;
|
||||||
|
FlatCurveEditor* const wavshapecon;
|
||||||
|
|
||||||
//Cbdl
|
//Cbdl
|
||||||
CurveEditorGroup* const maskcbCurveEditorG;
|
CurveEditorGroup* const maskcbCurveEditorG;
|
||||||
@ -355,6 +357,7 @@ private:
|
|||||||
Adjuster* const claricres;
|
Adjuster* const claricres;
|
||||||
Adjuster* const sensilc;
|
Adjuster* const sensilc;
|
||||||
Adjuster* const residchro;
|
Adjuster* const residchro;
|
||||||
|
Adjuster* const sigma;
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
const std::array<Adjuster*, 6> multiplier;
|
const std::array<Adjuster*, 6> multiplier;
|
||||||
Adjuster* const chromacbdl;
|
Adjuster* const chromacbdl;
|
||||||
@ -573,6 +576,7 @@ private:
|
|||||||
Gtk::Frame* const clariFrame;
|
Gtk::Frame* const clariFrame;
|
||||||
Gtk::Frame* const blurlevelFrame;
|
Gtk::Frame* const blurlevelFrame;
|
||||||
Gtk::Frame* const blurresidFrame;
|
Gtk::Frame* const blurresidFrame;
|
||||||
|
Gtk::Frame* const contFrame;
|
||||||
Gtk::Frame* const grainFrame;
|
Gtk::Frame* const grainFrame;
|
||||||
Gtk::Frame* const logFrame;
|
Gtk::Frame* const logFrame;
|
||||||
Gtk::Frame* const logPFrame;
|
Gtk::Frame* const logPFrame;
|
||||||
|
@ -1261,6 +1261,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
locallab.spots.at(j).residblur = locallab.spots.at(j).residblur && pSpot.residblur == otherSpot.residblur;
|
locallab.spots.at(j).residblur = locallab.spots.at(j).residblur && pSpot.residblur == otherSpot.residblur;
|
||||||
locallab.spots.at(j).levelblur = locallab.spots.at(j).levelblur && pSpot.levelblur == otherSpot.levelblur;
|
locallab.spots.at(j).levelblur = locallab.spots.at(j).levelblur && pSpot.levelblur == otherSpot.levelblur;
|
||||||
locallab.spots.at(j).residchro = locallab.spots.at(j).residchro && pSpot.residchro == otherSpot.residchro;
|
locallab.spots.at(j).residchro = locallab.spots.at(j).residchro && pSpot.residchro == otherSpot.residchro;
|
||||||
|
locallab.spots.at(j).sigma = locallab.spots.at(j).sigma && pSpot.sigma == otherSpot.sigma;
|
||||||
locallab.spots.at(j).clarilres = locallab.spots.at(j).clarilres && pSpot.clarilres == otherSpot.clarilres;
|
locallab.spots.at(j).clarilres = locallab.spots.at(j).clarilres && pSpot.clarilres == otherSpot.clarilres;
|
||||||
locallab.spots.at(j).claricres = locallab.spots.at(j).claricres && pSpot.claricres == otherSpot.claricres;
|
locallab.spots.at(j).claricres = locallab.spots.at(j).claricres && pSpot.claricres == otherSpot.claricres;
|
||||||
locallab.spots.at(j).clarisoft = locallab.spots.at(j).clarisoft && pSpot.clarisoft == otherSpot.clarisoft;
|
locallab.spots.at(j).clarisoft = locallab.spots.at(j).clarisoft && pSpot.clarisoft == otherSpot.clarisoft;
|
||||||
@ -1270,6 +1271,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
locallab.spots.at(j).localcontMethod = locallab.spots.at(j).localcontMethod && pSpot.localcontMethod == otherSpot.localcontMethod;
|
locallab.spots.at(j).localcontMethod = locallab.spots.at(j).localcontMethod && pSpot.localcontMethod == otherSpot.localcontMethod;
|
||||||
locallab.spots.at(j).locwavcurve = locallab.spots.at(j).locwavcurve && pSpot.locwavcurve == otherSpot.locwavcurve;
|
locallab.spots.at(j).locwavcurve = locallab.spots.at(j).locwavcurve && pSpot.locwavcurve == otherSpot.locwavcurve;
|
||||||
locallab.spots.at(j).loclevwavcurve = locallab.spots.at(j).loclevwavcurve && pSpot.loclevwavcurve == otherSpot.loclevwavcurve;
|
locallab.spots.at(j).loclevwavcurve = locallab.spots.at(j).loclevwavcurve && pSpot.loclevwavcurve == otherSpot.loclevwavcurve;
|
||||||
|
locallab.spots.at(j).locconwavcurve = locallab.spots.at(j).locconwavcurve && pSpot.locconwavcurve == otherSpot.locconwavcurve;
|
||||||
locallab.spots.at(j).csthreshold = locallab.spots.at(j).csthreshold && pSpot.csthreshold == otherSpot.csthreshold;
|
locallab.spots.at(j).csthreshold = locallab.spots.at(j).csthreshold && pSpot.csthreshold == otherSpot.csthreshold;
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
locallab.spots.at(j).expcbdl = locallab.spots.at(j).expcbdl && pSpot.expcbdl == otherSpot.expcbdl;
|
locallab.spots.at(j).expcbdl = locallab.spots.at(j).expcbdl && pSpot.expcbdl == otherSpot.expcbdl;
|
||||||
@ -3999,6 +4001,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.locallab.spots.at(i).residchro = mods.locallab.spots.at(i).residchro;
|
toEdit.locallab.spots.at(i).residchro = mods.locallab.spots.at(i).residchro;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).sigma) {
|
||||||
|
toEdit.locallab.spots.at(i).sigma = mods.locallab.spots.at(i).sigma;
|
||||||
|
}
|
||||||
|
|
||||||
if (locallab.spots.at(i).clarilres) {
|
if (locallab.spots.at(i).clarilres) {
|
||||||
toEdit.locallab.spots.at(i).clarilres = mods.locallab.spots.at(i).clarilres;
|
toEdit.locallab.spots.at(i).clarilres = mods.locallab.spots.at(i).clarilres;
|
||||||
}
|
}
|
||||||
@ -4035,6 +4041,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.locallab.spots.at(i).loclevwavcurve = mods.locallab.spots.at(i).loclevwavcurve;
|
toEdit.locallab.spots.at(i).loclevwavcurve = mods.locallab.spots.at(i).loclevwavcurve;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (locallab.spots.at(i).locconwavcurve) {
|
||||||
|
toEdit.locallab.spots.at(i).locconwavcurve = mods.locallab.spots.at(i).locconwavcurve;
|
||||||
|
}
|
||||||
|
|
||||||
if (locallab.spots.at(i).csthreshold) {
|
if (locallab.spots.at(i).csthreshold) {
|
||||||
toEdit.locallab.spots.at(i).csthreshold = mods.locallab.spots.at(i).csthreshold;
|
toEdit.locallab.spots.at(i).csthreshold = mods.locallab.spots.at(i).csthreshold;
|
||||||
}
|
}
|
||||||
@ -5507,6 +5517,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
|||||||
residblur(v),
|
residblur(v),
|
||||||
levelblur(v),
|
levelblur(v),
|
||||||
residchro(v),
|
residchro(v),
|
||||||
|
sigma(v),
|
||||||
clarilres(v),
|
clarilres(v),
|
||||||
claricres(v),
|
claricres(v),
|
||||||
clarisoft(v),
|
clarisoft(v),
|
||||||
@ -5516,6 +5527,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
|
|||||||
localcontMethod(v),
|
localcontMethod(v),
|
||||||
locwavcurve(v),
|
locwavcurve(v),
|
||||||
loclevwavcurve(v),
|
loclevwavcurve(v),
|
||||||
|
locconwavcurve(v),
|
||||||
csthreshold(v),
|
csthreshold(v),
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
expcbdl(v),
|
expcbdl(v),
|
||||||
@ -5884,6 +5896,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
|||||||
residblur = v;
|
residblur = v;
|
||||||
levelblur = v;
|
levelblur = v;
|
||||||
residchro = v;
|
residchro = v;
|
||||||
|
sigma = v;
|
||||||
clarilres = v;
|
clarilres = v;
|
||||||
claricres = v;
|
claricres = v;
|
||||||
clarisoft = v;
|
clarisoft = v;
|
||||||
@ -5893,6 +5906,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
|
|||||||
localcontMethod = v;
|
localcontMethod = v;
|
||||||
locwavcurve = v;
|
locwavcurve = v;
|
||||||
loclevwavcurve = v;
|
loclevwavcurve = v;
|
||||||
|
locconwavcurve = v;
|
||||||
csthreshold = v;
|
csthreshold = v;
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
expcbdl = v;
|
expcbdl = v;
|
||||||
|
@ -694,6 +694,7 @@ public:
|
|||||||
bool residblur;
|
bool residblur;
|
||||||
bool levelblur;
|
bool levelblur;
|
||||||
bool residchro;
|
bool residchro;
|
||||||
|
bool sigma;
|
||||||
bool clarilres;
|
bool clarilres;
|
||||||
bool claricres;
|
bool claricres;
|
||||||
bool clarisoft;
|
bool clarisoft;
|
||||||
@ -703,6 +704,7 @@ public:
|
|||||||
bool localcontMethod;
|
bool localcontMethod;
|
||||||
bool locwavcurve;
|
bool locwavcurve;
|
||||||
bool loclevwavcurve;
|
bool loclevwavcurve;
|
||||||
|
bool locconwavcurve;
|
||||||
bool csthreshold;
|
bool csthreshold;
|
||||||
// Contrast by detail levels
|
// Contrast by detail levels
|
||||||
bool expcbdl;
|
bool expcbdl;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user