diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais
index ddec6087c..e6aae15b5 100644
--- a/rtdata/languages/Francais
+++ b/rtdata/languages/Francais
@@ -1875,7 +1875,16 @@ TP_LOCALLAB_DELTAD;Delta balance
TP_LOCALLAB_DELTAEC;Masque ΔE Image
TP_LOCALLAB_DENOIS;Ψ Réduction du bruit
TP_LOCALLAB_DENOI_EXP;Réduction du bruit
+TP_LOCALLAB_DENOIQUA_TOOLTIP;Conservatif préserve les fréquences basses, alors que agressif tend à les effacer
+TP_LOCALLAB_DENOIEQUAL_TOOLTIP;Equilibre l'action de denoise luminance entre les ombres et les lumières
TP_LOCALLAB_DENOI_TOOLTIP;Ce module peut être utilisé seul (à la fin du processus), ou en complément de Réduction du bruit (au début).\nEtendue(deltaE)permet de différencier l'action.\nVous pouvez compléter avec "median" ou "Filtre guidé" (Adoucir Flou...).\nVous pouvez compléter l'action avec "Flou niveaux" "Ondelette pyramide"
+TP_LOCALLAB_DENOILUMDETAIL_TOOLTIP;Permet de récupérer les détails de luminance par mise en oeuvre progressive de la transformée de Fourier (DCT)
+TP_LOCALLAB_DENOICHROF_TOOLTIP;Agit sur les fins détails du bruit de chrominance
+TP_LOCALLAB_DENOICHROC_TOOLTIP;Agit sur les paquets et amas de bruit de chrominance
+TP_LOCALLAB_DENOICHRODET_TOOLTIP;Permet de récupérer les détails de chrominance par mise en oeuvre progressive de la transformée de Fourier (DCT)
+TP_LOCALLAB_DENOITHR_TOOLTIP;Règle l'effet de bord pour privilégier l'action sur les aplats
+TP_LOCALLAB_DENOIEQUALCHRO_TOOLTIP;Equilibre l'action de denoise chrominance entre les bleus-jaunes et les rouges-verts
+TP_LOCALLAB_DENOIBILAT_TOOLTIP;Traite le bruit d'impulsion (poivre et sel)
TP_LOCALLAB_DEPTH;Profondeur
TP_LOCALLAB_DETAIL;Contrast local
TP_LOCALLAB_DETAILSH;Details
@@ -1905,11 +1914,9 @@ TP_LOCALLAB_EXCLUTYPE;Spot méthode
TP_LOCALLAB_EXCLUTYPE_TOOLTIP;Spot Normal utilise les données récursives.\n\nSpot exclusion réinitialise les données d'origine.\nPeut être utilsé pour annuler totalement ou partiellement une action précédente ou pour réaliser un mode inverse
TP_LOCALLAB_EXECLU;Spot Exclusion
TP_LOCALLAB_EXNORM;Spot Normal
-//TP_LOCALLAB_EXPCBDL_TOOLTIP;Dans le cas d'un capteur contaminé ("graisse"), et qaund la surface est importante ou pourune série de petits défauts.\n\na) Mettre la sélection du spot sur un défaut prononcé (adapter la taille si nécessaire), utilise run spot suffisament grand qui autorise les ondelettes; b) choisir une aire suffisament grande pour couvrir largement la zone affectée par les défauts; c) Choisir une valeur de transition (basse) et une transition affaiblissement (haute); d) agir sur les niveaux 2, 3, 4 or 5 ou^plus bas en réduisant le the contrast (valeurs en dessous de 100) agir sur le curseur chroma si nécessaire. e)possibilité d'agir sur "Etendue" pour réduire la zone d'action.\n\nVous pouvez aussi compléter avec "Flou niveaux" et Flouu Gaussien (Adoucir Flou et bruit)
TP_LOCALLAB_EXPCBDL_TOOLTIP;Peut être utilisé pour retirer les marques sur le capteur ou la lentille.
TP_LOCALLAB_EXPCHROMA;Chroma compensation
TP_LOCALLAB_EXPCHROMA_TOOLTIP;Seulement en association avec compensation d'exposition et PDE Ipol.\nEvite la desaturation des couleurs
-//TP_LOCALLAB_EXPCOLOR_TOOLTIP;Dans le cas de petits défauts.\n\nYeux-rouges : sélecteur centré sur la partie rouge, délimiteurs du spot près de l'oeil, adaptez Etendue, "luminosité" -100, "chrominance" -100.\n\nSpotIR :sélection Circulaire centrée sur le défaut, délimiteurs du spot proches du default - reduire "chrominance", possibilté d'agir sur Etendue pour réduire la zone de l'action.\n\nPoussières - graisse (petit) :Sélection circulaire centrée sur le défaut (adapter la taille du spot), délimiteurs du spot pas trop près du défaut pour permettre une transition quasi invisible. a) "Transition" (faibles valeurs) and "Transition affaiblissement" (hautes valeurs); b) agir sur "luminosité" et aussi sur "chrominance" ou sur "Grille de correction couleur - direct" de telle manière que le rendu de la zone polluée soit proche de celui de la zone saine; c) agir modérement sur "Etendue" pour moduler l'action.\n\nVous pouvez aussi compléter avec Flouter Gaussien (Adoucir Flouter et bruit)
TP_LOCALLAB_EXPCOLOR_TOOLTIP;Ajuste les couleurs, la luminosité, le contrast et corrige les petits défauts tels que teux-rouges, poussières sur le capteur, etc.
TP_LOCALLAB_EXPCOMP;Compensation d'exposition ƒ
TP_LOCALLAB_EXPCOMPINV;Compensation d'exposition
@@ -1971,6 +1978,7 @@ TP_LOCALLAB_GRADSTRHUE_TOOLTIP;Filttre Teinte force
TP_LOCALLAB_GRADSTRLUM;Force Gradient Luminance
TP_LOCALLAB_GRADSTR_TOOLTIP;Force Filtre en Ev
TP_LOCALLAB_GRAINFRA;Film Grain 1:1
+TP_LOCALLAB_GRAIN_TOOLTIP;Ajoute du grain pour simuler un film
TP_LOCALLAB_GRALWFRA;Filtre Gradué Local contraste
TP_LOCALLAB_GRIDFRAME_TOOLTIP;Vous pouvez utiliser cet outil comme une brosse. Utiliser un petit Spot et adaptez transition et transition affaiblissement\nSeulement en mode NORMAL et éventuellement Teinte, Saturation, Couleur, Luminosité sont concernés par Fusion arrire plan (ΔE)
TP_LOCALLAB_GRIDONE;Virage partiel
@@ -1979,6 +1987,9 @@ TP_LOCALLAB_GRIDMETH_TOOLTIP;Virage partiel: la luminance est prise en compte qu
TP_LOCALLAB_GUIDBL;Rayon adoucir
TP_LOCALLAB_GUIDFILTER;Rayon Filtre Guidé
TP_LOCALLAB_GUIDFILTER_TOOLTIP;Adapter cette valeur en fonction des images - peut réduire ou accroître les artéfacts.
+TP_LOCALLAB_GUIDBL_TOOLTIP;Applique un filtre guidé avec un rayon donné, pour réduire les artefacts ou flouter l'image
+TP_LOCALLAB_GUIDSTRBL_TOOLTIP;Force du filtre guidé
+TP_LOCALLAB_GUIDEPSBL_TOOLTIP;Détail - agit sur la répartition du filtre guidé, les valeurs négatives simulent un flou gaussien
TP_LOCALLAB_HHMASK_TOOLTIP;Ajustements fin de la teinte par exemple pour la peau.
TP_LOCALLAB_HIGHMASKCOL;Hautes lumières masque
TP_LOCALLAB_HLH;Courbes H
@@ -1986,6 +1997,7 @@ TP_LOCALLAB_IND;Independant (souris)
TP_LOCALLAB_INDSL;Independant (souris + curseurs)
TP_LOCALLAB_INVERS;Inverse
TP_LOCALLAB_INVERS_TOOLTIP;Si sélectionné (inverse) moins de possibilités.\n\nAlternative\nPremier Spot:\n image entière - delimiteurs en dehors de la prévisualisation\n RT-spot forme sélection : rectangle. Transition 100\n\nDeuxième spot : Spot Exclusion
+TP_LOCALLAB_INVBL_TOOLTIP;Alternative\nPremier Spot:\n image entière - delimiteurs en dehors de la prévisualisation\n RT-spot forme sélection : rectangle. Transition 100\n\nDeuxième spot : Spot Exclusion
TP_LOCALLAB_ISOGR;Plus gros (ISO)
TP_LOCALLAB_LABBLURM;Masque Flouter
TP_LOCALLAB_LABEL;Ajustements Locaux
@@ -2053,6 +2065,8 @@ TP_LOCALLAB_MASKH;Courbe teinte
TP_LOCALLAB_MASK_TOOLTIP;Vous pouvez activer plusieurs masques pour un simple outil, ceci nécessite d'activer un autre outil (mais sans utilser l'outil : curseurs à 0,...)où est le masque que vous souhaitez activer.\n\nVous pouvez aussi dupliquer le RT-spot et le placer juste à côté de l'autre,les variations de références autorisent un travail fin sur les images.
TP_LOCALLAB_MED;Medium
TP_LOCALLAB_MEDIAN;Median Bas
+TP_LOCALLAB_MEDIAN_TOOLTIP;Choisir un median 3x3 à 9x9: plus les valeurs sont élévées, plus la réduction du bruit ou le flou seront marqués
+TP_LOCALLAB_MEDIANITER_TOOLTIP;Nombre d'applications successives du median
TP_LOCALLAB_MEDNONE;Rien
TP_LOCALLAB_MERCOL;Couleur
TP_LOCALLAB_MERDCOL;Fusion arrière plan (ΔE)
@@ -2102,6 +2116,7 @@ TP_LOCALLAB_MRTHR;Image Originale
TP_LOCALLAB_MRTWO;Short Curves 'L' Mask
TP_LOCALLAB_MULTIPL_TOOLTIP;Autorise la retouche des tons sur une large plage : -18EV +4EV. Le remier curseur agit sur -18EV and -6EV. Le dernier curseur agit sur les tons au-dessus de 4EV
TP_LOCALLAB_NEIGH;Rayon
+TP_LOCALLAB_NOISE_TOOLTIP;Ajoute du bruit de luminance
TP_LOCALLAB_NOISECHROCOARSE;Chroma gros (Ond)
TP_LOCALLAB_NOISECHROC_TOOLTIP;Si supérieur à zéro, algorithme haute qualité est activé.\nGros est sélectionné si curseur >=0.2
TP_LOCALLAB_NOISECHRODETAIL;Récupération des détails Chroma (DCT ƒ)
diff --git a/rtdata/languages/default b/rtdata/languages/default
index 7f4edddd6..ca66fb2ce 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -1154,6 +1154,7 @@ HISTORY_MSG_955;Local - Enable Spot
HISTORY_MSG_956;Local - CH Curve
HISTORY_MSG_957;Local - Denoise mode
HISTORY_MSG_958;Local - Show/hide settings
+HISTORY_MSG_959;Local - Inverse blur
HISTORY_MSG_BLSHAPE;Blur by level
HISTORY_MSG_BLURCWAV;Blur chroma
HISTORY_MSG_BLURWAV;Blur luminance
@@ -2341,7 +2342,7 @@ TP_LOCALLAB_BLNOI_EXP;Blur & Noise
TP_LOCALLAB_BLNORM;Normal
TP_LOCALLAB_BLSYM;Symmetric
TP_LOCALLAB_BLUFR;Blur/Grain & Denoise
-TP_LOCALLAB_BLUMETHOD_TOOLTIP;To blur the background and isolate the foreground:\n*Blur the background by a RT-spot fully covering the image (high values for scope and transition) - normal or inverse.\n*Isolate the foreground by one or more excluding RT-spot with the tools you want (increse scope).\n\nThis module can be used in additional noise reduction,including "median" and "Guided filter"
+TP_LOCALLAB_BLUMETHOD_TOOLTIP;To blur the background and isolate the foreground:\n*blur the background by completely covering the image with an an RT-spot (high values for scope and transition and ‘Normal’ or ‘Inverse’ in checkbox).\n*Isolate the foreground by using one or more ‘Excluding’ RT-spot(s) and increase the scope.\n\nThis module (including the "median" and "Guided filter") can be used in addition to the main-menu noise reduction.
TP_LOCALLAB_BLUR;Gaussian Blur - Noise - Grain
TP_LOCALLAB_BLURCBDL;Blur levels 0-1-2-3-4
TP_LOCALLAB_BLURCOL;Radius
@@ -2434,11 +2435,20 @@ TP_LOCALLAB_DELTAD;Delta balance
TP_LOCALLAB_DELTAEC;ΔE Image mask
TP_LOCALLAB_DENOIS;Ψ Denoise
TP_LOCALLAB_DENOI_EXP;Denoise
-TP_LOCALLAB_DENOI_TOOLTIP;This module can be used alone (at the end of process), or in complement of main denoise (at the beginning).\nScope allows to differentiate the action according to the color (deltaE).\nYou can complete the action with "median" or "Guided Filter" (Smooth Blur...).\nYou can complete the action with "Blur levels" "Wavelet pyramid"
+TP_LOCALLAB_DENOIQUA_TOOLTIP;Conservative mode preserves low frequency detail. “Aggressive” mode removes low frequency detail.
+TP_LOCALLAB_DENOIEQUAL_TOOLTIP;Allows you to carry out more or less noise reduction in either the shadows or the highlights.
+TP_LOCALLAB_DENOI_TOOLTIP;This module can be used for noise reduction either on its own (at the end of the processing pipeline) or in addition to the Noise Reduction module in the Detail tab (which works at the beginning of the pipeline).\n Scope allows you to differentiate the action based on color (deltaE).\n\n You can refine the result with a "Median filter" or a "Guided Filter" (Soft radius).
+TP_LOCALLAB_DENOILUMDETAIL_TOOLTIP;Allows you to recover luminance detail by progressively applying a Fourier transform (DCT).
+TP_LOCALLAB_DENOICHROF_TOOLTIP;Allows you to adjust fine-detail chrominance noise
+TP_LOCALLAB_DENOICHROC_TOOLTIP;Allows you to deal with blotches and packets of noise.
+TP_LOCALLAB_DENOICHRODET_TOOLTIP;Allows you to recover chrominance detail by progressively applying a Fourier transform (DCT).
+TP_LOCALLAB_DENOITHR_TOOLTIP;Adjusts edge detection to help reduce noise in uniform, low-contrast areas.
+TP_LOCALLAB_DENOIEQUALCHRO_TOOLTIP;Allows you to direct the chroma noise reduction towards either the blue-yellow or red-green colors.
+TP_LOCALLAB_DENOIBILAT_TOOLTIP;Allows you to reduce impulse or ‘salt & pepper’ noise.
TP_LOCALLAB_DEPTH;Depth
TP_LOCALLAB_DETAIL;Local contrast
TP_LOCALLAB_DETAILSH;Details
-TP_LOCALLAB_DETAILTHR;Luminance & Chroma detail threshold (DCT ƒ)
+TP_LOCALLAB_DETAILTHR;Luminance & chroma detail threshold (DCT ƒ)
TP_LOCALLAB_DUPLSPOTNAME;Copy
TP_LOCALLAB_EDGFRA;Edge Sharpness
TP_LOCALLAB_EDGSHOW;Show all tolls
@@ -2527,6 +2537,7 @@ TP_LOCALLAB_GRADSTRHUE2;Hue gradient strength
TP_LOCALLAB_GRADSTRHUE_TOOLTIP;Adjusts hue gradient strength
TP_LOCALLAB_GRADSTRLUM;Luminance gradient strength
TP_LOCALLAB_GRADSTR_TOOLTIP;Filter strength in stops
+TP_LOCALLAB_GRAIN_TOOLTIP;Adds film-like grain to the image
TP_LOCALLAB_GRAINFRA;Film Grain 1:1
TP_LOCALLAB_GRALWFRA;Graduated Filter Local contrast
TP_LOCALLAB_GRIDFRAME_TOOLTIP;You can use this tool as a brush. Use small spot and adapt transition and transition decay\nOnly mode NORMAL and eventually Hue, Saturation, Color, Luminosity are concerned by Merge background (ΔE)
@@ -2534,15 +2545,20 @@ TP_LOCALLAB_GRIDONE;Color Toning
TP_LOCALLAB_GRIDTWO;Direct
TP_LOCALLAB_GRIDMETH_TOOLTIP;Color toning: the luminance is taken into account when varying chroma -Equivalent to H=f(H) if the "white dot" on the grid remains at zero and you only vary the "black dot"-Equivalent to "Color toning" if you vary the 2 dots.\n\nDirect: acts directly on the chroma
TP_LOCALLAB_GUIDBL;Soft radius
+TP_LOCALLAB_GUIDBL_TOOLTIP;Applies a guided filter with adjustable radius. Allows you to reduce artifacts or blur the image.
+TP_LOCALLAB_GUIDEPSBL_TOOLTIP;Changes the distribution function of the guided filter. Negative values simulate a Gaussian blur.
TP_LOCALLAB_GUIDFILTER;Guided filter radius
TP_LOCALLAB_GUIDFILTER_TOOLTIP;Adapt this values according to images - can reduce or increase artifacts.
+TP_LOCALLAB_GUIDSTRBL_TOOLTIP;Intensity of the guided filter
TP_LOCALLAB_HHMASK_TOOLTIP;Fine hue adjustments for example for the skin.
TP_LOCALLAB_HIGHMASKCOL;Highlights
TP_LOCALLAB_HLH;Curves H
TP_LOCALLAB_IND;Independent (mouse)
TP_LOCALLAB_INDSL;Independent (mouse + sliders)
TP_LOCALLAB_INVERS;Inverse
+TP_LOCALLAB_INVBL;Inverse
TP_LOCALLAB_INVERS_TOOLTIP;Fewer possibilities if selected (Inverse).\n\nAlternative: use two spots\nFirst Spot:\n full image - delimiter outside preview\n RT-spot shape: rectangle. Transition 100\n\nSecond spot : Excluding spot
+TP_LOCALLAB_INVBL_TOOLTIP;Alternative to ‘Inverse’ mode: use two spots\nFirst Spot:\n full image - delimiter outside preview\n RT-spot shape: rectangle. Transition 100\n\nSecond spot : Excluding spot
TP_LOCALLAB_ISOGR;Coarseness (ISO)
TP_LOCALLAB_LABBLURM;Blur Mask
TP_LOCALLAB_LABEL;Local Adjustments
@@ -2611,6 +2627,8 @@ TP_LOCALLAB_MASKH;Hue curve
TP_LOCALLAB_MASK_TOOLTIP;You can enable multiple masks for a tool by activating another tool and using only the mask (set the tool sliders to 0 ) \n\nYou can also duplicate the RT-spot and place it close to the first spot. The small variations in the spot references allow you to make fine adjustments.
TP_LOCALLAB_MED;Medium
TP_LOCALLAB_MEDIAN;Median Low
+TP_LOCALLAB_MEDIAN_TOOLTIP;You can choose a median value in the range 3x3 to 9x9 pixels. Higher values increase noise reduction and blur.
+TP_LOCALLAB_MEDIANITER_TOOLTIP;The number of successive iterations carried out by the median filter.
TP_LOCALLAB_MEDNONE;None
TP_LOCALLAB_MERCOL;Color
TP_LOCALLAB_MERDCOL;Merge background (ΔE)
@@ -2661,10 +2679,11 @@ TP_LOCALLAB_MRTHR;Original Image
TP_LOCALLAB_MRTWO;Short Curves 'L' Mask
TP_LOCALLAB_MULTIPL_TOOLTIP;Wide-range tone adjustment: -18EV to +4EV. The first slider acts on very dark tones between -18EV and -6EV. The last slider acts on light tones up to 4EV
TP_LOCALLAB_NEIGH;Radius
+TP_LOCALLAB_NOISE_TOOLTIP;Adds luminance noise
TP_LOCALLAB_NOISECHROCOARSE;Coarse chroma (Wav)
TP_LOCALLAB_NOISECHROC_TOOLTIP;If superior to zero, high quality algorithm is enabled.\nCoarse is for slider >=0.02
TP_LOCALLAB_NOISECHRODETAIL;Chroma detail recovery (DCT ƒ)
-TP_LOCALLAB_NOISECHROFINE;Fine chroma(Wav)
+TP_LOCALLAB_NOISECHROFINE;Fine chroma (Wav)
TP_LOCALLAB_NOISEDETAIL_TOOLTIP;Disabled if slider = 100
TP_LOCALLAB_NOISELEQUAL;Equalizer white-black
TP_LOCALLAB_NOISELUMCOARSE;Luminance coarse (Wav)
@@ -2692,7 +2711,7 @@ TP_LOCALLAB_PROXI;ΔE decay
TP_LOCALLAB_QUALCURV_METHOD;Curve type
TP_LOCALLAB_QUAL_METHOD;Global quality
TP_LOCALLAB_RADIUS;Radius
-TP_LOCALLAB_RADIUS_TOOLTIP;Above Radius 30 Use Fast Fourier Transform
+TP_LOCALLAB_RADIUS_TOOLTIP;Uses a Fast Fourier Transform for radius > 30
TP_LOCALLAB_RADMASKCOL;Smooth radius
TP_LOCALLAB_RECT;Rectangle
TP_LOCALLAB_RECURS;Recursive references
@@ -2879,7 +2898,7 @@ TP_LOCALLAB_VIS_TOOLTIP;Click to show/hide selected Control Spot.\nCtr
TP_LOCALLAB_WAMASKCOL;Ψ Mask Wavelet level
TP_LOCALLAB_WARM;Warm/Cool & Color artifacts
TP_LOCALLAB_WARM_TOOLTIP;This slider uses the CIECAM algorithm and acts as a White Balance control to make the color temperature of the selected area warmer or cooler\nIt can also reduce color artifacts in some cases.
-TP_LOCALLAB_WASDEN_TOOLTIP;Denoise luminance for the 3 first levels (fine).\nThe right limit of the curve correspond to coarse : level 3 and beyond
+TP_LOCALLAB_WASDEN_TOOLTIP;Luminance noise reduction: the left-hand side of the curve corresponds to the first 3 levels 0,1 &2 (fine detail). The right hand side of the curve corresponds to the coarser details (level 3 and beyond).
TP_LOCALLAB_WAV;Local contrast by level
TP_LOCALLAB_WAVBLUR_TOOLTIP;Performs a blur for each level of decomposition, as well as the residual image.
TP_LOCALLAB_WAVCOMP;Compression by Level
@@ -2888,7 +2907,7 @@ TP_LOCALLAB_WAVCOMPRE_TOOLTIP;Achieve a Tone-mapping or reduction local contrast
TP_LOCALLAB_WAVCOMP_TOOLTIP;Achive local contrast in function of the direction wavelet decomposition : horizontal, vertical, diagonal
TP_LOCALLAB_WAVCON;Contrast by Level
TP_LOCALLAB_WAVCONTF_TOOLTIP;Similar to Contrast By Detail Levels : on abscissa levels.
-TP_LOCALLAB_WAVDEN;Luminance denoise by level (0 1 2 +3 and more)
+TP_LOCALLAB_WAVDEN;Luminance denoise by level (0 1 2 &3 and more)
TP_LOCALLAB_WAVE;Ψ Wavelet
TP_LOCALLAB_WAVEDG;Local contrast
TP_LOCALLAB_WAVEEDG_TOOLTIP;Achieves a sharpness taking into account the notion of edges wavelet.\nRequires that at least the first 4 levels are usable
diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc
index 9eb9b06f6..bfa148304 100644
--- a/rtengine/iplocallab.cc
+++ b/rtengine/iplocallab.cc
@@ -811,12 +811,18 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
} else if (locallab.spots.at(sp).medMethod == "99") {
lp.medmet = 3;
}
-
+/*
if (locallab.spots.at(sp).blurMethod == "norm") {
lp.blurmet = 0;
} else if (locallab.spots.at(sp).blurMethod == "inv") {
lp.blurmet = 1;
}
+*/
+ if (locallab.spots.at(sp).invbl == false) {
+ lp.blurmet = 0;
+ } else if (locallab.spots.at(sp).invbl == true) {
+ lp.blurmet = 1;
+ }
if (locallab.spots.at(sp).showmaskblMethodtyp == "blur") {
lp.smasktyp = 0;
@@ -9809,7 +9815,9 @@ void ImProcFunctions::Lab_Local(
}
bool execmaskblur = (lp.showmaskblmet == 2 || lp.enablMask || lp.showmaskblmet == 3 || lp.showmaskblmet == 4) && lp.smasktyp != 1;
- if (((radius > 1.5 * GAUSS_SKIP && lp.rad > 1.6) || lp.stren > 0.1 || lp.blmet == 1 || lp.guidb > 0 || execmaskblur) && lp.blurena) { // radius < GAUSS_SKIP means no gauss, just copy of original image
+ int strengr = params->locallab.spots.at(sp).strengr;
+
+ if (((radius > 1.5 * GAUSS_SKIP && lp.rad > 1.6) || lp.stren > 0.1 || lp.blmet == 1 || lp.guidb > 0 || strengr > 0 || execmaskblur) && lp.blurena) { // radius < GAUSS_SKIP means no gauss, just copy of original image
// if (((radius > 1.5 * GAUSS_SKIP && lp.rad > 1.6) || lp.stren > 0.1 || lp.blmet == 1 || lp.guidb > 0 || lp.showmaskblmet == 2 || lp.enablMask || lp.showmaskblmet == 3 || lp.showmaskblmet == 4) && lp.blurena) { // radius < GAUSS_SKIP means no gauss, just copy of original image
std::unique_ptr tmp1;
std::unique_ptr tmp2;
@@ -9824,8 +9832,7 @@ void ImProcFunctions::Lab_Local(
bool fft = params->locallab.spots.at(sp).fftwbl;
int isogr = params->locallab.spots.at(sp).isogr;
- int strengr = params->locallab.spots.at(sp).strengr;
- int scalegr = params->locallab.spots.at(sp).scalegr;
+ int scalegr = 100;//params->locallab.spots.at(sp).scalegr;
diff --git a/rtengine/procevents.h b/rtengine/procevents.h
index 0cc199b89..7c711a3da 100644
--- a/rtengine/procevents.h
+++ b/rtengine/procevents.h
@@ -981,6 +981,8 @@ enum ProcEventCode {
EvlocallabCHshape = 955,
EvlocallabquaMethod = 956,
Evlocallabhishow = 957,
+ Evlocallabinvbl = 958,
+
NUMOFEVENTS
};
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index b427f24ee..3c53c65d1 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -3326,6 +3326,7 @@ LocallabParams::LocallabSpot::LocallabSpot() :
},
enablMask(false),
fftwbl(false),
+ invbl(false),
toolbl(false),
blendmaskbl(0),
radmaskbl(0.0),
@@ -4206,6 +4207,7 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
&& HHmaskblcurve == other.HHmaskblcurve
&& enablMask == other.enablMask
&& fftwbl == other.fftwbl
+ && invbl == other.invbl
&& toolbl == other.toolbl
&& blendmaskbl == other.blendmaskbl
&& radmaskbl == other.radmaskbl
@@ -5734,6 +5736,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || spot_edited->HHmaskblcurve, "Locallab", "HHmaskblCurve_" + index_str, spot.HHmaskblcurve, keyFile);
saveToKeyfile(!pedited || spot_edited->enablMask, "Locallab", "EnablMask_" + index_str, spot.enablMask, keyFile);
saveToKeyfile(!pedited || spot_edited->fftwbl, "Locallab", "Fftwbl_" + index_str, spot.fftwbl, keyFile);
+ saveToKeyfile(!pedited || spot_edited->invbl, "Locallab", "Invbl_" + index_str, spot.invbl, keyFile);
saveToKeyfile(!pedited || spot_edited->toolbl, "Locallab", "Toolbl_" + index_str, spot.toolbl, keyFile);
saveToKeyfile(!pedited || spot_edited->blendmaskbl, "Locallab", "Blendmaskbl_" + index_str, spot.blendmaskbl, keyFile);
saveToKeyfile(!pedited || spot_edited->radmaskbl, "Locallab", "Radmaskbl_" + index_str, spot.radmaskbl, keyFile);
@@ -7463,6 +7466,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Locallab", "HHmaskblCurve_" + index_str, pedited, spot.HHmaskblcurve, spotEdited.HHmaskblcurve);
assignFromKeyfile(keyFile, "Locallab", "EnablMask_" + index_str, pedited, spot.enablMask, spotEdited.enablMask);
assignFromKeyfile(keyFile, "Locallab", "Fftwbl_" + index_str, pedited, spot.fftwbl, spotEdited.fftwbl);
+ assignFromKeyfile(keyFile, "Locallab", "Invbl_" + index_str, pedited, spot.invbl, spotEdited.invbl);
assignFromKeyfile(keyFile, "Locallab", "Toolbl_" + index_str, pedited, spot.toolbl, spotEdited.toolbl);
assignFromKeyfile(keyFile, "Locallab", "Blendmaskbl_" + index_str, pedited, spot.blendmaskbl, spotEdited.blendmaskbl);
assignFromKeyfile(keyFile, "Locallab", "Radmaskbl_" + index_str, pedited, spot.radmaskbl, spotEdited.radmaskbl);
diff --git a/rtengine/procparams.h b/rtengine/procparams.h
index af79aec95..56cb86518 100644
--- a/rtengine/procparams.h
+++ b/rtengine/procparams.h
@@ -1228,6 +1228,7 @@ struct LocallabParams {
std::vector HHmaskblcurve;
bool enablMask;
bool fftwbl;
+ bool invbl;
bool toolbl;
int blendmaskbl;
double radmaskbl;
diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc
index 446e6e4fe..255d080ac 100644
--- a/rtengine/refreshmap.cc
+++ b/rtengine/refreshmap.cc
@@ -984,7 +984,9 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
LUMINANCECURVE, // Evlocallabactiv
LUMINANCECURVE, // EvlocallabCHshape
LUMINANCECURVE, //EvlocallabquaMethod
- LUMINANCECURVE //Evlocallabhishow
+ LUMINANCECURVE, //Evlocallabhishow
+ LUMINANCECURVE // Evlocallabinvbl
+
};
diff --git a/rtgui/locallabtools.cc b/rtgui/locallabtools.cc
index 233f47e3f..c11682091 100644
--- a/rtgui/locallabtools.cc
+++ b/rtgui/locallabtools.cc
@@ -5753,6 +5753,7 @@ LocallabBlur::LocallabBlur():
epsbl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_EPSBL"), -10, 10, 1, 0))),
sensibn(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 40))),
blurMethod(Gtk::manage(new MyComboBoxText())),
+ invbl(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_INVBL")))),
chroMethod(Gtk::manage(new MyComboBoxText())),
activlum(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_ACTIV")))),
expdenoise(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI_EXP")))),
@@ -5810,6 +5811,7 @@ LocallabBlur::LocallabBlur():
blMethodConn = blMethod->signal_changed().connect(sigc::mem_fun(*this, &LocallabBlur::blMethodChanged));
fftwblConn = fftwbl->signal_toggled().connect(sigc::mem_fun(*this, &LocallabBlur::fftwblChanged));
+ invblConn = invbl->signal_toggled().connect(sigc::mem_fun(*this, &LocallabBlur::invblChanged));
radius->setAdjusterListener(this);
@@ -5980,7 +5982,7 @@ LocallabBlur::LocallabBlur():
ToolParamBlock* const grainBox = Gtk::manage(new ToolParamBlock());
grainBox->pack_start(*isogr);
grainBox->pack_start(*strengr);
- grainBox->pack_start(*scalegr);
+// grainBox->pack_start(*scalegr);
grainFrame->add(*grainBox);
blnoisebox->pack_start(*grainFrame);
blnoisebox->pack_start(*medMethod);
@@ -5989,7 +5991,8 @@ LocallabBlur::LocallabBlur():
blnoisebox->pack_start(*strbl);
blnoisebox->pack_start(*epsbl);
blnoisebox->pack_start(*sensibn);
- blnoisebox->pack_start(*blurMethod);
+// blnoisebox->pack_start(*blurMethod);
+ blnoisebox->pack_start(*invbl);
blnoisebox->pack_start(*chroMethod);
// blnoisebox->pack_start(*activlum);
expblnoise->add(*blnoisebox, false);
@@ -6074,10 +6077,28 @@ void LocallabBlur::updateAdviceTooltips(const bool showTooltips)
if (showTooltips) {
expblnoise->set_tooltip_markup(M("TP_LOCALLAB_BLUMETHOD_TOOLTIP"));
radius->set_tooltip_text(M("TP_LOCALLAB_RADIUS_TOOLTIP"));
+ strength->set_tooltip_text(M("TP_LOCALLAB_NOISE_TOOLTIP"));
+ grainFrame->set_tooltip_text(M("TP_LOCALLAB_GRAIN_TOOLTIP"));
sensibn->set_tooltip_text(M("TP_LOCALLAB_SENSI_TOOLTIP"));
+ medMethod->set_tooltip_text(M("TP_LOCALLAB_MEDIAN_TOOLTIP"));
+ itera->set_tooltip_text(M("TP_LOCALLAB_MEDIANITER_TOOLTIP"));
+ guidbl->set_tooltip_text(M("TP_LOCALLAB_GUIDBL_TOOLTIP"));
+ strbl->set_tooltip_text(M("TP_LOCALLAB_GUIDSTRBL_TOOLTIP"));
+ epsbl->set_tooltip_text(M("TP_LOCALLAB_GUIDEPSBL_TOOLTIP"));
blurMethod->set_tooltip_markup(M("TP_LOCALLAB_BLMETHOD_TOOLTIP"));
+ invbl->set_tooltip_markup(M("TP_LOCALLAB_INVBL_TOOLTIP"));
expdenoise->set_tooltip_markup(M("TP_LOCALLAB_DENOI_TOOLTIP"));
+ quamethod->set_tooltip_markup(M("TP_LOCALLAB_DENOIQUA_TOOLTIP"));
wavshapeden->setTooltip(M("TP_LOCALLAB_WASDEN_TOOLTIP"));
+ LocalcurveEditorwavden->setTooltip(M("TP_LOCALLAB_WASDEN_TOOLTIP"));
+ noiselequal->set_tooltip_text(M("TP_LOCALLAB_DENOIEQUAL_TOOLTIP"));
+ noiselumdetail->set_tooltip_text(M("TP_LOCALLAB_DENOILUMDETAIL_TOOLTIP"));
+ noisechrof->set_tooltip_text(M("TP_LOCALLAB_DENOICHROF_TOOLTIP"));
+ noisechroc->set_tooltip_text(M("TP_LOCALLAB_DENOICHROC_TOOLTIP"));
+ noisechrodetail->set_tooltip_text(M("TP_LOCALLAB_DENOICHRODET_TOOLTIP"));
+ detailthr->set_tooltip_text(M("TP_LOCALLAB_DENOITHR_TOOLTIP"));
+ adjblur->set_tooltip_text(M("TP_LOCALLAB_DENOIEQUALCHRO_TOOLTIP"));
+ bilateral->set_tooltip_text(M("TP_LOCALLAB_DENOIBILAT_TOOLTIP"));
noiselumc->set_tooltip_text(M("TP_LOCALLAB_NOISECHROC_TOOLTIP"));
expmaskbl->set_tooltip_markup(M("TP_LOCALLAB_MASK_TOOLTIP"));
showmaskblMethodtyp->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKTYP_TOOLTIP"));
@@ -6103,8 +6124,28 @@ void LocallabBlur::updateAdviceTooltips(const bool showTooltips)
sensiden->set_tooltip_text(M("TP_LOCALLAB_SENSI_TOOLTIP"));
} else {
+
expblnoise->set_tooltip_markup("");
radius->set_tooltip_text("");
+ strength->set_tooltip_text("");
+ grainFrame->set_tooltip_text("");
+ sensibn->set_tooltip_text("");
+ medMethod->set_tooltip_text("");
+ itera->set_tooltip_text("");
+ guidbl->set_tooltip_text("");
+ strbl->set_tooltip_text("");
+ epsbl->set_tooltip_text("");
+ blurMethod->set_tooltip_markup("");
+ quamethod->set_tooltip_markup("");
+ LocalcurveEditorwavden->setTooltip("");
+ noiselequal->set_tooltip_text("");
+ noiselumdetail->set_tooltip_text("");
+ noisechrof->set_tooltip_text("");
+ noisechroc->set_tooltip_text("");
+ noisechrodetail->set_tooltip_text("");
+ detailthr->set_tooltip_text("");
+ adjblur->set_tooltip_text("");
+ bilateral->set_tooltip_text("");
sensibn->set_tooltip_text("");
blurMethod->set_tooltip_markup("");
expdenoise->set_tooltip_markup("");
@@ -6148,6 +6189,7 @@ void LocallabBlur::disableListener()
blMethodConn.block(true);
fftwblConn.block(true);
+ invblConn.block(true);
medMethodConn.block(true);
blurMethodConn.block(true);
chroMethodConn.block(true);
@@ -6165,6 +6207,7 @@ void LocallabBlur::enableListener()
blMethodConn.block(false);
fftwblConn.block(false);
+ invblConn.block(false);
medMethodConn.block(false);
blurMethodConn.block(false);
chroMethodConn.block(false);
@@ -6202,6 +6245,7 @@ void LocallabBlur::read(const rtengine::procparams::ProcParams* pp, const Params
}
fftwbl->set_active(spot.fftwbl);
+ invbl->set_active(spot.invbl);
radius->setValue(spot.radius);
strength->setValue(spot.strength);
isogr->setValue((double)spot.isogr);
@@ -6321,6 +6365,7 @@ void LocallabBlur::write(rtengine::procparams::ProcParams* pp, ParamsEdited* ped
}
spot.fftwbl = fftwbl->get_active();
+ spot.invbl = invbl->get_active();
spot.radius = radius->getValue();
spot.strength = strength->getIntValue();
spot.isogr = isogr->getIntValue();
@@ -6901,6 +6946,21 @@ void LocallabBlur::fftwblChanged()
}
}
+void LocallabBlur::invblChanged()
+{
+ if (isLocActivated && exp->getEnabled()) {
+ if (listener) {
+ if (invbl->get_active()) {
+ listener->panelChanged(Evlocallabinvbl,
+ M("GENERAL_ENABLED") + " (" + escapeHtmlChars(spotName) + ")");
+ } else {
+ listener->panelChanged(Evlocallabinvbl,
+ M("GENERAL_DISABLED") + " (" + escapeHtmlChars(spotName) + ")");
+ }
+ }
+ }
+}
+
void LocallabBlur::medMethodChanged()
{
if (isLocActivated && exp->getEnabled()) {
diff --git a/rtgui/locallabtools.h b/rtgui/locallabtools.h
index a048f4fd2..29a8ca066 100644
--- a/rtgui/locallabtools.h
+++ b/rtgui/locallabtools.h
@@ -652,6 +652,7 @@ private:
Adjuster* const epsbl;
Adjuster* const sensibn;
MyComboBoxText* const blurMethod;
+ Gtk::CheckButton* const invbl;
MyComboBoxText* const chroMethod;
Gtk::CheckButton* const activlum;
MyExpander* const expdenoise;
@@ -697,7 +698,7 @@ private:
Gtk::HBox* const quaHBox;
ThresholdAdjuster* const csThresholdblur;
- sigc::connection blMethodConn, fftwblConn, medMethodConn, blurMethodConn, chroMethodConn, activlumConn, showmaskblMethodConn, showmaskblMethodtypConn, enablMaskConn, toolblConn;
+ sigc::connection blMethodConn, fftwblConn, invblConn, medMethodConn, blurMethodConn, chroMethodConn, activlumConn, showmaskblMethodConn, showmaskblMethodtypConn, enablMaskConn, toolblConn;
sigc::connection quamethodconn;
public:
LocallabBlur();
@@ -733,6 +734,7 @@ private:
void blMethodChanged();
void fftwblChanged();
+ void invblChanged();
void medMethodChanged();
void blurMethodChanged();
void chroMethodChanged();
diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc
index 95036b063..bee8ed736 100644
--- a/rtgui/paramsedited.cc
+++ b/rtgui/paramsedited.cc
@@ -1298,6 +1298,7 @@ void ParamsEdited::initFrom(const std::vector&
locallab.spots.at(j).HHmaskblcurve = locallab.spots.at(j).HHmaskblcurve && pSpot.HHmaskblcurve == otherSpot.HHmaskblcurve;
locallab.spots.at(j).enablMask = locallab.spots.at(j).enablMask && pSpot.enablMask == otherSpot.enablMask;
locallab.spots.at(j).fftwbl = locallab.spots.at(j).fftwbl && pSpot.fftwbl == otherSpot.fftwbl;
+ locallab.spots.at(j).invbl = locallab.spots.at(j).invbl && pSpot.invbl == otherSpot.invbl;
locallab.spots.at(j).toolbl = locallab.spots.at(j).toolbl && pSpot.toolbl == otherSpot.toolbl;
locallab.spots.at(j).blendmaskbl = locallab.spots.at(j).blendmaskbl && pSpot.blendmaskbl == otherSpot.blendmaskbl;
locallab.spots.at(j).radmaskbl = locallab.spots.at(j).radmaskbl && pSpot.radmaskbl == otherSpot.radmaskbl;
@@ -4092,6 +4093,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.locallab.spots.at(i).fftwbl = mods.locallab.spots.at(i).fftwbl;
}
+ if (locallab.spots.at(i).invbl) {
+ toEdit.locallab.spots.at(i).invbl = mods.locallab.spots.at(i).invbl;
+ }
+
if (locallab.spots.at(i).toolbl) {
toEdit.locallab.spots.at(i).toolbl = mods.locallab.spots.at(i).toolbl;
}
@@ -6432,6 +6437,7 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
HHmaskblcurve(v),
enablMask(v),
fftwbl(v),
+ invbl(v),
toolbl(v),
blendmaskbl(v),
radmaskbl(v),
@@ -6922,6 +6928,7 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
HHmaskblcurve = v;
enablMask = v;
fftwbl = v;
+ invbl = v;
toolbl = v;
blendmaskbl = v;
radmaskbl = v;
diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h
index c589aa96f..4fdbfdfd5 100644
--- a/rtgui/paramsedited.h
+++ b/rtgui/paramsedited.h
@@ -641,6 +641,7 @@ public:
bool HHmaskblcurve;
bool enablMask;
bool fftwbl;
+ bool invbl;
bool toolbl;
bool blendmaskbl;
bool radmaskbl;