diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech
index ca74c37bf..99bf285c8 100644
--- a/rtdata/languages/Czech
+++ b/rtdata/languages/Czech
@@ -520,7 +520,7 @@ PARTIALPASTE_FLATFIELDAUTOSELECT;FF Automatický výběr
PARTIALPASTE_FLATFIELDBLURRADIUS;FF Poloměr rozostření
PARTIALPASTE_FLATFIELDBLURTYPE;FF Typ rozostření
PARTIALPASTE_FLATFIELDFILE;Flat-Field (FF) Soubor
-PARTIALPASTE_GRADIENTSHARPEN;Gradient ostření (okraj)
+PARTIALPASTE_SHARPENEDGE;Okraj
PARTIALPASTE_HLRECONSTRUCTION;Rekonstrukce světel
PARTIALPASTE_HLRECOVERYAMOUNT;Míra obnovení světel
PARTIALPASTE_HLRECOVERY;Obnovení světel
@@ -535,7 +535,7 @@ PARTIALPASTE_LENSGROUP;Nastavení objektivu
PARTIALPASTE_LUMADENOISE;Redukce šumu v jasech
PARTIALPASTE_LUMINANCEGROUP;Nastavení jasu
PARTIALPASTE_METAICMGROUP;Nastavení metadat a ICM
-PARTIALPASTE_MICROCONTRAST;Mikrokontrast
+PARTIALPASTE_SHARPENMICRO;Mikrokontrast
PARTIALPASTE_PERSPECTIVE;Perspektiva
PARTIALPASTE_PREPROCESS_GREENEQUIL;Vyrovnání zelené
PARTIALPASTE_PREPROCESS_HOTDEADPIXFILT;Aplikovat filtr na vypálené/mrtvé body
@@ -738,13 +738,14 @@ TOOLBAR_TOOLTIP_WB;Bodové vyvážení bílé W
TP_CACORRECTION_BLUE;Modrá
TP_CACORRECTION_LABEL;Úprava chromatické vady
TP_CACORRECTION_RED;Červená
-TP_CLARITY_LABEL;Ostrost a doostření
-TP_CLARITY_MATRIX;Matice 3x3 místo 5x5
-TP_CLARITY_MICRO;Mikrokontrast (textura)
-TP_CLARITY_PASSES;Průchody gradientu
-TP_CLARITY_SHARPEN;Gradient ostření (okraj)
-TP_CLARITY_STRENGTH;Síla gradientu
-TP_CLARITY_THREE;Pouze jas
+TP_SHARPENEDGE_AMOUNT;Míra
+TP_SHARPENEDGE_LABEL;Okraj
+TP_SHARPENEDGE_PASSES;Průchody gradientu
+TP_SHARPENEDGE_THREE;Pouze jas
+TP_SHARPENMICRO_AMOUNT;Míra
+TP_SHARPENMICRO_LABEL;Mikrokontrast
+TP_SHARPENMICRO_MATRIX;Matice 3×3 místo 5×5
+TP_SHARPENMICRO_UNIFORMITY;Jednolitost
TP_COARSETRAF_DEGREE;Stupeň:
TP_COARSETRAF_TOOLTIP_HFLIP;Překlopit horizontálně
TP_COARSETRAF_TOOLTIP_ROTLEFT;Otočit doleva
@@ -893,8 +894,6 @@ TP_LENSGEOM_LABEL;Objektiv / Geometrie
TP_LUMADENOISE_EDGETOLERANCE;Tolerance okrajům
TP_LUMADENOISE_LABEL;Redukce šumu v jasech
TP_LUMADENOISE_RADIUS;Poloměr
-TP_MLMICRO_STRENGTH;Síla
-TP_MLMICRO_UNIFORMITY;Jednolitost
TP_PERSPECTIVE_HORIZONTAL;Vodorovně
TP_PERSPECTIVE_LABEL;Perspektiva
TP_PERSPECTIVE_VERTICAL;Svisle
diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch
index 4af1359ef..7738d1602 100644
--- a/rtdata/languages/Deutsch
+++ b/rtdata/languages/Deutsch
@@ -529,7 +529,7 @@ PARTIALPASTE_FLATFIELDAUTOSELECT;Weißbild: Automatische Auswahl
PARTIALPASTE_FLATFIELDBLURRADIUS;Weißbild: Unschärferadius
PARTIALPASTE_FLATFIELDBLURTYPE;Weißbild: Unschärfetyp
PARTIALPASTE_FLATFIELDFILE;Weißbild: Datei
-PARTIALPASTE_GRADIENTSHARPEN;Kantenschärfung
+PARTIALPASTE_SHARPENEDGE;Kantenschärfung
PARTIALPASTE_HLRECONSTRUCTION;Lichter wiederherstellen
PARTIALPASTE_HLRECOVERY;Lichter wiederherstellen
PARTIALPASTE_HLRECOVERYAMOUNT;Lichter wiederherstellen\nStärke
@@ -543,7 +543,7 @@ PARTIALPASTE_LENSGROUP;Gruppe Objektivkorrekturen
PARTIALPASTE_LUMADENOISE;Luminanz-Rauschfilter
PARTIALPASTE_LUMINANCEGROUP;Gruppe Luminanzeinstellungen
PARTIALPASTE_METAICMGROUP;Gruppe Metadaten / ICM
-PARTIALPASTE_MICROCONTRAST;Mikrokontrast
+PARTIALPASTE_SHARPENMICRO;Mikrokontrast
PARTIALPASTE_PERSPECTIVE;Perspektive
PARTIALPASTE_PREPROCESS_GREENEQUIL;Vorverarbeitung: Grün-Ausgleich
PARTIALPASTE_PREPROCESS_HOTDEADPIXFILT;Vorverarbeitung: Hot/Dead-Pixel-Filter anwenden
@@ -756,13 +756,14 @@ TP_CHMIXER_GREEN;Grün
TP_CHMIXER_LABEL;Kanal-Mixer
TP_CHMIXER_RED;Rot
TP_CHROMATABERR_LABEL;Chromatische Aberration
-TP_CLARITY_LABEL;Lokale Schärfung
-TP_CLARITY_MATRIX;3×3-Matrix statt 5×5-Matrix
-TP_CLARITY_MICRO;Mikrokontrast
-TP_CLARITY_PASSES;Iterationen
-TP_CLARITY_SHARPEN;Kantenschärfung
-TP_CLARITY_STRENGTH;Quantität
-TP_CLARITY_THREE;Nur Luminanz
+TP_SHARPENEDGE_AMOUNT;Quantität
+TP_SHARPENEDGE_LABEL;Kantenschärfung
+TP_SHARPENEDGE_PASSES;Iterationen
+TP_SHARPENEDGE_THREE;Nur Luminanz
+TP_SHARPENMICRO_AMOUNT;Quantität
+TP_SHARPENMICRO_LABEL;Mikrokontrast
+TP_SHARPENMICRO_MATRIX;3×3-Matrix statt 5×5-Matrix
+TP_SHARPENMICRO_UNIFORMITY;Gleichmäßigkeit
TP_COARSETRAF_DEGREE;Grad:
TP_COARSETRAF_TOOLTIP_HFLIP;Horizontal spiegeln
TP_COARSETRAF_TOOLTIP_ROTLEFT;Nach links drehen [
@@ -908,8 +909,6 @@ TP_LENSGEOM_LABEL;Objektivkorrekturen
TP_LUMADENOISE_EDGETOLERANCE;Kantentoleranz
TP_LUMADENOISE_LABEL;Luminanz-Rauschfilter
TP_LUMADENOISE_RADIUS;Radius
-TP_MLMICRO_STRENGTH;Quantität
-TP_MLMICRO_UNIFORMITY;Gleichmäßigkeit
TP_PERSPECTIVE_HORIZONTAL;Horizontal
TP_PERSPECTIVE_LABEL;Perspektive
TP_PERSPECTIVE_VERTICAL;Vertikal
diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais
index 39d161ed2..ad7557828 100644
--- a/rtdata/languages/Francais
+++ b/rtdata/languages/Francais
@@ -514,7 +514,7 @@ PARTIALPASTE_FLATFIELDAUTOSELECT;Sélection auto du Champ Uniforme
PARTIALPASTE_FLATFIELDBLURRADIUS;Rayon de floutage du Champ Uniforme
PARTIALPASTE_FLATFIELDBLURTYPE;Type de floutage du Champ Uniforme
PARTIALPASTE_FLATFIELDFILE;Fichier de Champ Uniforme
-PARTIALPASTE_GRADIENTSHARPEN;Détail local
+PARTIALPASTE_SHARPENEDGE;Bords
PARTIALPASTE_HLRECONSTRUCTION;Reconstruction des hautes lumières
PARTIALPASTE_HLRECOVERY;Récupération des hautes lumières
PARTIALPASTE_HLRECOVERYAMOUNT;Quantité de récup. des hautes lumières
@@ -528,7 +528,7 @@ PARTIALPASTE_LENSGROUP;Réglages de l'objectif
PARTIALPASTE_LUMADENOISE;Réduction du bruit de luminance
PARTIALPASTE_LUMINANCEGROUP;Réglages de la luminance
PARTIALPASTE_METAICMGROUP;Réglages des Métadonnées/ICM
-PARTIALPASTE_MICROCONTRAST;Microcontraste
+PARTIALPASTE_SHARPENMICRO;Microcontraste
PARTIALPASTE_PERSPECTIVE;Perspective
PARTIALPASTE_PREPROCESS_GREENEQUIL;Équilibrage du vert
PARTIALPASTE_PREPROCESS_HOTDEADPIXFILT;Filtrage des pixels chauds/morts
@@ -748,15 +748,14 @@ TP_CHMIXER_GREEN;Vert
TP_CHMIXER_LABEL;Mixage des canaux
TP_CHMIXER_RED;Rouge
TP_CHROMATABERR_LABEL;Aberration Chromatique
-TP_CLARITY_LABEL;Clareté et netteté
-TP_CLARITY_SHARPEN;Netteté des Bords
-TP_CLARITY_STRENGTH;Quantité
-TP_CLARITY_PASSES;Itérations
-TP_CLARITY_MICRO;Microcontraste
-TP_CLARITY_THREE;Luminance uniquement
-TP_CLARITY_MATRIX;Matrice 3x3 au lieu de 5x5
-TP_MLMICRO_STRENGTH;Quantité
-TP_MLMICRO_UNIFORMITY;Uniformité
+TP_SHARPENEDGE_AMOUNT;Quantité
+TP_SHARPENEDGE_LABEL;Bords
+TP_SHARPENEDGE_PASSES;Itérations
+TP_SHARPENEDGE_THREE;Luminance uniquement
+TP_SHARPENMICRO_AMOUNT;Quantité
+TP_SHARPENMICRO_LABEL;Microcontraste
+TP_SHARPENMICRO_MATRIX;Matrice 3×3 au lieu de 5×5
+TP_SHARPENMICRO_UNIFORMITY;Uniformité
TP_COARSETRAF_DEGREE;degré:
TP_COARSETRAF_TOOLTIP_HFLIP;Symétriser / axe vertical
TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotation vers la gauche
diff --git a/rtdata/languages/Italian b/rtdata/languages/Italian
index 5efbd182d..6aa206a82 100644
--- a/rtdata/languages/Italian
+++ b/rtdata/languages/Italian
@@ -519,7 +519,7 @@ PARTIALPASTE_FLATFIELDAUTOSELECT;Autoselezione FF
PARTIALPASTE_FLATFIELDBLURRADIUS;Raggio di sfocamento FF
PARTIALPASTE_FLATFIELDBLURTYPE;Modalità di sfocamento FF
PARTIALPASTE_FLATFIELDFILE;File di Flat-Field
-PARTIALPASTE_GRADIENTSHARPEN;Acutanza
+PARTIALPASTE_SHARPENEDGE;Bordi
PARTIALPASTE_HLRECONSTRUCTION;Ricostruzione alteluci
PARTIALPASTE_HLRECOVERY;Recupero alteluci
PARTIALPASTE_HLRECOVERYAMOUNT;Quantità di recupero alteluci
@@ -533,7 +533,7 @@ PARTIALPASTE_LENSGROUP;Parametri correlati all'ottica
PARTIALPASTE_LUMADENOISE;Riduzione rumore di luminanza
PARTIALPASTE_LUMINANCEGROUP;Parametri riguardanti la luminanza
PARTIALPASTE_METAICMGROUP;Parametri di metadati e ICM
-PARTIALPASTE_MICROCONTRAST;Microcontrasto
+PARTIALPASTE_SHARPENMICRO;Microcontrasto
PARTIALPASTE_PERSPECTIVE;Prospettiva
PARTIALPASTE_PREPROCESS_GREENEQUIL;Uniformazione del verde
PARTIALPASTE_PREPROCESS_HOTDEADPIXFILT;Interpolazione dei pixel surriscaldati/guasti
@@ -746,15 +746,14 @@ TP_CHMIXER_GREEN;Verde
TP_CHMIXER_LABEL;Miscelatore canali
TP_CHMIXER_RED;Rosso
TP_CHROMATABERR_LABEL;Aberrazioni cromatiche
-TP_CLARITY_LABEL;Acutanza
-TP_CLARITY_SHARPEN;Gradiente ai margini
-TP_CLARITY_STRENGTH;Quantità
-TP_CLARITY_PASSES;Iterazioni
-TP_CLARITY_MICRO;Microcontrasto
-TP_CLARITY_THREE;Solo per luminanza
-TP_CLARITY_MATRIX;Matrice 3x3 invece di 5x5
-TP_MLMICRO_STRENGTH;Quantità
-TP_MLMICRO_UNIFORMITY;Uniformità
+TP_SHARPENEDGE_AMOUNT;Quantità
+TP_SHARPENEDGE_LABEL;Bordi
+TP_SHARPENEDGE_PASSES;Iterazioni
+TP_SHARPENEDGE_THREE;Solo per luminanza
+TP_SHARPENMICRO_AMOUNT;Quantità
+TP_SHARPENMICRO_LABEL;Microcontrasto
+TP_SHARPENMICRO_MATRIX;Matrice 3×3 invece di 5×5
+TP_SHARPENMICRO_UNIFORMITY;Uniformità
TP_COARSETRAF_DEGREE;Angolo:
TP_COARSETRAF_TOOLTIP_HFLIP;Rifletti orizzontalmente
TP_COARSETRAF_TOOLTIP_ROTLEFT;Ruota a sinistra
diff --git a/rtdata/languages/default b/rtdata/languages/default
index 1e0521dbc..19d41711c 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -513,7 +513,7 @@ PARTIALPASTE_FLATFIELDAUTOSELECT;FF Auto Select
PARTIALPASTE_FLATFIELDBLURRADIUS;FF Blur Radius
PARTIALPASTE_FLATFIELDBLURTYPE;FF Blur Type
PARTIALPASTE_FLATFIELDFILE;Flat field (FF) File
-PARTIALPASTE_GRADIENTSHARPEN;Local Sharpening
+PARTIALPASTE_SHARPENEDGE;Edges
PARTIALPASTE_HLRECONSTRUCTION;Highlight reconstruction
PARTIALPASTE_HLRECOVERY;Highlight recovery
PARTIALPASTE_HLRECOVERYAMOUNT;Highlight recovery amount
@@ -527,7 +527,7 @@ PARTIALPASTE_LENSGROUP;Lens related settings
PARTIALPASTE_LUMADENOISE;Luminance noise reduction
PARTIALPASTE_LUMINANCEGROUP;Luminance related settings
PARTIALPASTE_METAICMGROUP;Metadata/ICM settings
-PARTIALPASTE_MICROCONTRAST;Microcontrast
+PARTIALPASTE_SHARPENMICRO;Microcontrast
PARTIALPASTE_PERSPECTIVE;Perspective
PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
PARTIALPASTE_PREPROCESS_HOTDEADPIXFILT;Apply hot/dead pixel filter
@@ -740,15 +740,14 @@ TP_CHMIXER_GREEN;Green
TP_CHMIXER_LABEL;Channel Mixer
TP_CHMIXER_RED;Red
TP_CHROMATABERR_LABEL;Chromatic Aberration
-TP_CLARITY_LABEL;Local Sharpening
-TP_CLARITY_SHARPEN;Edges Sharpening
-TP_CLARITY_STRENGTH;Quantity
-TP_CLARITY_PASSES;Iterations
-TP_CLARITY_MICRO;Microcontrast
-TP_CLARITY_THREE;Luminance only
-TP_CLARITY_MATRIX;3x3 matrix instead of 5x5
-TP_MLMICRO_STRENGTH;Quantity
-TP_MLMICRO_UNIFORMITY;Uniformity
+TP_SHARPENEDGE_AMOUNT;Quantity
+TP_SHARPENEDGE_LABEL;Edges
+TP_SHARPENEDGE_PASSES;Iterations
+TP_SHARPENEDGE_THREE;Luminance only
+TP_SHARPENMICRO_AMOUNT;Quantity
+TP_SHARPENMICRO_LABEL;Microcontrast
+TP_SHARPENMICRO_MATRIX;33 matrix instead of 55
+TP_SHARPENMICRO_UNIFORMITY;Uniformity
TP_COARSETRAF_DEGREE;degree:
TP_COARSETRAF_TOOLTIP_HFLIP;Flip horizontally
TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left [
diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc
index bbc237a44..8472d9e80 100644
--- a/rtengine/improccoordinator.cc
+++ b/rtengine/improccoordinator.cc
@@ -255,11 +255,11 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) {
ipf.defringe (nprevl);
progress ("Denoising luma/chroma...",100*readyphase/numofphases);
ipf.dirpyrdenoise (nprevl);
- if (params.clarity.enabled) {
- progress ("Clarity...",100*readyphase/numofphases);
+ if (params.sharpenEdge.enabled) {
+ progress ("Edge sharpening...",100*readyphase/numofphases);
ipf.MLsharpen (nprevl);
}
- if (params.clarity.enabledtwo) {
+ if (params.sharpenMicro.enabled) {
progress ("Microcontrast...",100*readyphase/numofphases);
ipf.MLmicrocontrast (nprevl);
}
diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc
index 397bf43a5..9fb2a7e74 100644
--- a/rtengine/ipsharpen.cc
+++ b/rtengine/ipsharpen.cc
@@ -239,7 +239,7 @@ void ImProcFunctions::sharpenHaloCtrl (LabImage* lab, float** blurmap, float** b
}
}
-// To the extent possible under law, Manuel Llorens [
+// To the extent possible under law, Manuel Llorens
// has waived all copyright and related or neighboring rights to this work.
// This work is published from: Spain.
@@ -247,7 +247,7 @@ void ImProcFunctions::sharpenHaloCtrl (LabImage* lab, float** blurmap, float** b
void ImProcFunctions::MLsharpen (LabImage* lab) {
// JD: this algorithm maximize clarity of images; it does not play on accutance. It can remove (partialy) the effects of the AA filter)
// I think we can use this algorithm alone in most cases, or first to clarify image and if you want a very little USM (unsharp mask sharpening) after...
- if (params->clarity.enabled==false)
+ if (params->sharpenEdge.enabled==false)
return;
MyTime t1e,t2e;
t1e.set();
@@ -260,13 +260,13 @@ void ImProcFunctions::MLsharpen (LabImage* lab) {
float templab;
int iii,kkk;
width2 = 2*width;
- float strength;
- strength = params->clarity.clstrength / 100.0f;
- if (strength < 0.00001f)
+ float amount;
+ amount = params->sharpenEdge.amount / 100.0f;
+ if (amount < 0.00001f)
return;
if (settings->verbose)
- printf ("Clarity strength %f\n", strength);
+ printf ("SharpenEdge amount %f\n", amount);
L = new float[width*height];
@@ -275,13 +275,13 @@ void ImProcFunctions::MLsharpen (LabImage* lab) {
chmax[2] = 3.0f;
int channels;
- if (params->clarity.clthreechannels) channels=0; else channels=2;
+ if (params->sharpenEdge.threechannels) channels=0; else channels=2;
if (settings->verbose)
- printf ("Clarity channels %d\n", channels);
+ printf ("SharpenEdge channels %d\n", channels);
- int passes=params->clarity.clpasses;
+ int passes=params->sharpenEdge.passes;
if (settings->verbose)
- printf ("Clarity passes %d\n", passes);
+ printf ("SharpenEdge passes %d\n", passes);
for (p=0; pa[ii][kk]/327.68f;
else if (c==2) L[offset] = lab->b[ii][kk]/327.68f;
}
-#pragma omp parallel for private(j,i,iii,kkk, templab,offset,wH,wV,wD1,wD2,s,lumH,lumV,lumD1,lumD2,v,contrast,f1,f2,f3,f4,difT,difB,difL,difR,difLT,difLB,difRT,difRB) shared(lab,L,strength)
+#pragma omp parallel for private(j,i,iii,kkk, templab,offset,wH,wV,wD1,wD2,s,lumH,lumV,lumD1,lumD2,v,contrast,f1,f2,f3,f4,difT,difB,difL,difR,difLT,difLB,difRT,difRB) shared(lab,L,amount)
for(j=2; j0.05f))||((fabs(wV/wH)<0.45f)&&(fabs(wV/wH)>0.05f)))
- s = strength/3.0f;
+ s = amount/3.0f;
// final mix
if ((wH!=0.0f)&&(wV!=0.0f)&&(wD1!=0.0f)&&(wD2!=0.0f)) {
@@ -413,7 +413,7 @@ void ImProcFunctions::MLsharpen (LabImage* lab) {
t2e.set();
if (settings->verbose)
- printf("Clarity gradient %d usec\n", t2e.etime(t1e));
+ printf("SharpenEdge gradient %d usec\n", t2e.etime(t1e));
}
// To the extent possible under law, Manuel Llorens
@@ -422,30 +422,30 @@ void ImProcFunctions::MLsharpen (LabImage* lab) {
// http://creativecommons.org/publicdomain/zero/1.0/
// addition from JD : pyramid + ponderated contrast with matrix 5x5
void ImProcFunctions::MLmicrocontrast(LabImage* lab) {
- if (params->clarity.enabledtwo==false)
+ if (params->sharpenMicro.enabled==false)
return;
MyTime t1e,t2e;
t1e.set();
int k;
- if (params->clarity.MLmicromatrix == false) k=2; else k=1;
+ if (params->sharpenMicro.matrix == false) k=2; else k=1;
// k=2 matrix 5x5 k=1 matrix 3x3
int offset,offset2,c,i,j,col,row,n;
float temp,temp2,temp3,temp4,tempL;
float *LM,v,s,contrast,w;
int signs[25];
int width = lab->W, height = lab->H;
- float uniform = params->clarity.uniformity;//between 0 to 100
+ float uniform = params->sharpenMicro.uniformity;//between 0 to 100
int unif;
unif = (int)(uniform/10.0f); //put unif between 0 to 10
- float strength = params->clarity.mlstrength/1500.0f; //strength 2000.0 quasi no artefacts ==> 1500 = maximum, after artefacts
- if (strength < 0.000001f)
+ float amount = params->sharpenMicro.amount/1500.0f; //amount 2000.0 quasi no artefacts ==> 1500 = maximum, after artefacts
+ if (amount < 0.000001f)
return;
if (k==1)
- strength *= 2.7f; //25/9 if 3x3
+ amount *= 2.7f; //25/9 if 3x3
if (settings->verbose)
- printf ("Microcontrast strength %f\n", strength);
+ printf ("Micro-contrast amount %f\n", amount);
if (settings->verbose)
- printf ("Microcontrast uniformity %i\n",unif);
+ printf ("Micro-contrast uniformity %i\n",unif);
//modulation uniformity in function of luminance
float L98[11] = {0.001f,0.0015f,0.002f,0.004f,0.006f,0.008f,0.01f,0.03f,0.05f,0.1f,0.1f};
float L95[11] = {0.0012f,0.002f,0.005f,0.01f,0.02f,0.05f,0.1f,0.12f,0.15f,0.2f,0.25f};
@@ -476,10 +476,10 @@ void ImProcFunctions::MLmicrocontrast(LabImage* lab) {
LM[offset] = lab->L[j][i]/327.68f;// adjust to 0.100 and to RT variables
}
-#pragma omp parallel for private(j,i,offset,s,signs,v,n,row,col,offset2,contrast,temp,w,temp2,temp3,tempL,temp4) shared(lab,LM,strength,chmax,unif,k,L98,L95,L92,L90,L87,L83,L80,L75,L70,L63,L58,Cont0,Cont1,Cont2,Cont3,Cont4,Cont5)
+#pragma omp parallel for private(j,i,offset,s,signs,v,n,row,col,offset2,contrast,temp,w,temp2,temp3,tempL,temp4) shared(lab,LM,amount,chmax,unif,k,L98,L95,L92,L90,L87,L83,L80,L75,L70,L63,L58,Cont0,Cont1,Cont2,Cont3,Cont4,Cont5)
for(j=k; jverbose)
- printf("Microcontrast %d usec\n", t2e.etime(t1e));
+ printf("Micro-contrast %d usec\n", t2e.etime(t1e));
}
diff --git a/rtengine/procevents.h b/rtengine/procevents.h
index acafce8c1..67e6aec43 100644
--- a/rtengine/procevents.h
+++ b/rtengine/procevents.h
@@ -163,14 +163,14 @@ enum ProcEvent {
EvPreProcessExpBlacktwo=138,
EvPreProcessExpBlackthree=139,
EvPreProcessExptwoGreen=140,
- EvClaritypasses=141,
- EvClaritystrength=142,
- EvMLmicrostrength=143,
- EvMLuniformity=144,
- EvClarityEnabled=145,
- EvClaritythreechannels=146,
- EvClarityEnabledtwo=147,
- EvClaritymatrix=148,
+ EvSharpenEdgePasses=141,
+ EvSharpenEdgeAmount=142,
+ EvSharpenMicroAmount=143,
+ EvSharpenMicroUniformity=144,
+ EvSharpenEdgeEnabled=145,
+ EvSharpenEdgeThreechannels=146,
+ EvSharpenMicroEnabled=147,
+ EvSharpenMicroMatrix=148,
EvDemosaicALLEnhanced=149,
NUMOFEVENTS=150
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index 227f3b2f4..04a1771c0 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -91,15 +91,16 @@ void ProcParams::setDefaults () {
labCurve.bcurve.clear ();
labCurve.bcurve.push_back(DCT_Linear);
- clarity.enabled = false;
- clarity.clpasses = 2;
- clarity.clstrength = 50.0;
- clarity.enabledtwo = false;
- clarity.mlstrength = 20.0;
- clarity.uniformity = 50.0;
- clarity.clthreechannels = false;
- clarity.MLmicromatrix = false;
-
+ sharpenEdge.enabled = false;
+ sharpenEdge.passes = 2;
+ sharpenEdge.amount = 50.0;
+ sharpenEdge.threechannels = false;
+
+ sharpenMicro.enabled = false;
+ sharpenMicro.amount = 20.0;
+ sharpenMicro.uniformity = 50.0;
+ sharpenMicro.matrix = false;
+
sharpening.enabled = false;
sharpening.radius = 1.0;
sharpening.amount = 90;
@@ -311,15 +312,15 @@ int ProcParams::save (Glib::ustring fname, Glib::ustring fname2) const {
// save luma curve
keyFile.set_integer ("Luminance Curve", "Brightness", labCurve.brightness);
keyFile.set_integer ("Luminance Curve", "Contrast", labCurve.contrast);
- keyFile.set_integer ("Luminance Curve", "Saturation", labCurve.saturation);
- keyFile.set_boolean ("Luminance Curve", "AvoidColorClipping", labCurve.avoidclip);
+ keyFile.set_integer ("Luminance Curve", "Saturation", labCurve.saturation);
+ keyFile.set_boolean ("Luminance Curve", "AvoidColorClipping", labCurve.avoidclip);
keyFile.set_boolean ("Luminance Curve", "SaturationLimiter", labCurve.enable_saturationlimiter);
keyFile.set_double ("Luminance Curve", "SaturationLimit", labCurve.saturationlimit);
Glib::ArrayHandle lcurve = labCurve.lcurve;
- Glib::ArrayHandle acurve = labCurve.acurve;
+ Glib::ArrayHandle acurve = labCurve.acurve;
Glib::ArrayHandle bcurve = labCurve.bcurve;
keyFile.set_double_list("Luminance Curve", "LCurve", lcurve);
- keyFile.set_double_list("Luminance Curve", "aCurve", acurve);
+ keyFile.set_double_list("Luminance Curve", "aCurve", acurve);
keyFile.set_double_list("Luminance Curve", "bCurve", bcurve);
// save sharpening
@@ -337,17 +338,19 @@ int ProcParams::save (Glib::ustring fname, Glib::ustring fname2) const {
keyFile.set_integer ("Sharpening", "DeconvAmount", sharpening.deconvamount);
keyFile.set_integer ("Sharpening", "DeconvDamping", sharpening.deconvdamping);
keyFile.set_integer ("Sharpening", "DeconvIterations", sharpening.deconviter);
- //save clarity
- keyFile.set_boolean ("Clarity", "Enabled", clarity.enabled);
- keyFile.set_integer ("Clarity", "Clpasses", clarity.clpasses);
- keyFile.set_double ("Clarity", "Clstrength", clarity.clstrength);
- keyFile.set_boolean ("Clarity", "Clthreechannels", clarity.clthreechannels);
- keyFile.set_boolean ("Clarity", "Enabledtwo", clarity.enabledtwo);
- keyFile.set_double ("Clarity", "Mlstrength", clarity.mlstrength);
- keyFile.set_double ("Clarity", "Uniformity", clarity.uniformity);
- keyFile.set_boolean ("Clarity", "Matrix", clarity.MLmicromatrix);
-
+ //save edge sharpening
+ keyFile.set_boolean ("SharpenEdge", "Enabled", sharpenEdge.enabled);
+ keyFile.set_integer ("SharpenEdge", "Passes", sharpenEdge.passes);
+ keyFile.set_double ("SharpenEdge", "Strength", sharpenEdge.amount);
+ keyFile.set_boolean ("SharpenEdge", "ThreeChannels", sharpenEdge.threechannels);
+
+ //save micro-contrast sharpening
+ keyFile.set_boolean ("SharpenMicro", "Enabled", sharpenMicro.enabled);
+ keyFile.set_boolean ("SharpenMicro", "Matrix", sharpenMicro.matrix);
+ keyFile.set_double ("SharpenMicro", "Strength", sharpenMicro.amount);
+ keyFile.set_double ("SharpenMicro", "Uniformity", sharpenMicro.uniformity);
+
// save colorBoost
keyFile.set_integer ("Color Boost", "Amount", colorBoost.amount);
keyFile.set_boolean ("Color Boost", "AvoidColorClipping", colorBoost.avoidclip);
@@ -647,21 +650,22 @@ if (keyFile.has_group ("Sharpening")) {
if (keyFile.has_key ("Sharpening", "DeconvIterations")) sharpening.deconviter = keyFile.get_integer ("Sharpening", "DeconvIterations");
}
-
-if (keyFile.has_group ("Clarity")) {
- if (keyFile.has_key ("Clarity", "Enabled")) clarity.enabled = keyFile.get_boolean ("Clarity", "Enabled");
- if (keyFile.has_key ("Clarity", "Clpasses")) clarity.clpasses = keyFile.get_integer ("Clarity", "Clpasses");
- if (keyFile.has_key ("Clarity", "Clstrength")) clarity.clstrength = keyFile.get_double ("Clarity", "Clstrength");
- if (keyFile.has_key ("Clarity", "Clthreechannels")) clarity.clthreechannels = keyFile.get_boolean ("Clarity", "Clthreechannels");
- if (keyFile.has_key ("Clarity", "Enabledtwo")) clarity.enabledtwo = keyFile.get_boolean ("Clarity", "Enabledtwo");
- if (keyFile.has_key ("Clarity", "Matrix")) clarity.MLmicromatrix = keyFile.get_boolean ("Clarity", "Matrix");
-
- if (keyFile.has_key ("Clarity", "Mlstrength")) clarity.mlstrength = keyFile.get_double ("Clarity", "Mlstrength");
- if (keyFile.has_key ("Clarity", "Uniformity")) clarity.uniformity = keyFile.get_double ("Clarity", "Uniformity");
-
-
+ // load edge sharpening
+if (keyFile.has_group ("SharpenEdge")) {
+ if (keyFile.has_key ("SharpenEdge", "Enabled")) sharpenEdge.enabled = keyFile.get_boolean ("SharpenEdge", "Enabled");
+ if (keyFile.has_key ("SharpenEdge", "Passes")) sharpenEdge.passes = keyFile.get_integer ("SharpenEdge", "Passes");
+ if (keyFile.has_key ("SharpenEdge", "Strength")) sharpenEdge.amount = keyFile.get_double ("SharpenEdge", "Strength");
+ if (keyFile.has_key ("SharpenEdge", "ThreeChannels")) sharpenEdge.threechannels = keyFile.get_boolean ("SharpenEdge", "ThreeChannels");
}
-
+
+ // load micro-contrast sharpening
+if (keyFile.has_group ("SharpenMicro")) {
+ if (keyFile.has_key ("SharpenMicro", "Enabled")) sharpenMicro.enabled = keyFile.get_boolean ("SharpenMicro", "Enabled");
+ if (keyFile.has_key ("SharpenMicro", "Matrix")) sharpenMicro.matrix = keyFile.get_boolean ("SharpenMicro", "Matrix");
+ if (keyFile.has_key ("SharpenMicro", "Strength")) sharpenMicro.amount = keyFile.get_double ("SharpenMicro", "Strength");
+ if (keyFile.has_key ("SharpenMicro", "Uniformity")) sharpenMicro.uniformity = keyFile.get_double ("SharpenMicro", "Uniformity");
+}
+
// load colorBoost
if (keyFile.has_group ("Color Boost")) {
if (keyFile.has_key ("Color Boost", "Amount")) colorBoost.amount = keyFile.get_integer ("Color Boost", "Amount");
@@ -953,14 +957,14 @@ bool ProcParams::operator== (const ProcParams& other) {
&& labCurve.avoidclip == other.labCurve.avoidclip
&& labCurve.enable_saturationlimiter == other.labCurve.enable_saturationlimiter
&& labCurve.saturationlimit == other.labCurve.saturationlimit
- && clarity.enabled == other.clarity.enabled
- && clarity.clpasses == other.clarity.clpasses
- && clarity.clstrength == other.clarity.clstrength
- && clarity.enabledtwo == other.clarity.enabledtwo
- && clarity.mlstrength == other.clarity.mlstrength
- && clarity.uniformity == other.clarity.uniformity
- && clarity.MLmicromatrix == other.clarity.MLmicromatrix
- && clarity.clthreechannels == other.clarity.clthreechannels
+ && sharpenEdge.enabled == other.sharpenEdge.enabled
+ && sharpenEdge.passes == other.sharpenEdge.passes
+ && sharpenEdge.amount == other.sharpenEdge.amount
+ && sharpenEdge.threechannels == other.sharpenEdge.threechannels
+ && sharpenMicro.enabled == other.sharpenMicro.enabled
+ && sharpenMicro.matrix == other.sharpenMicro.matrix
+ && sharpenMicro.amount == other.sharpenMicro.amount
+ && sharpenMicro.uniformity == other.sharpenMicro.uniformity
&& sharpening.enabled == other.sharpening.enabled
&& sharpening.radius == other.sharpening.radius
&& sharpening.amount == other.sharpening.amount
diff --git a/rtengine/procparams.h b/rtengine/procparams.h
index 8a2d53f0e..35340cb26 100644
--- a/rtengine/procparams.h
+++ b/rtengine/procparams.h
@@ -38,7 +38,7 @@ class ToneCurveParams {
int brightness;
int black;
int contrast;
- int saturation;
+ int saturation;
int shcompr;
int hlcompr;
int hlcomprthresh;
@@ -51,14 +51,14 @@ class LCurveParams {
public:
std::vector lcurve;
- std::vector acurve;
- std::vector bcurve;
- int brightness;
- int contrast;
- int saturation;
- bool avoidclip;
- bool enable_saturationlimiter;
- double saturationlimit;
+ std::vector acurve;
+ std::vector bcurve;
+ int brightness;
+ int contrast;
+ int saturation;
+ bool avoidclip;
+ bool enable_saturationlimiter;
+ double saturationlimit;
};
/**
@@ -76,23 +76,25 @@ class SharpeningParams {
int edges_tolerance;
bool halocontrol;
int halocontrol_amount;
-
Glib::ustring method;
int deconvamount;
double deconvradius;
int deconviter;
int deconvdamping;
};
-class ClarityParams {
+class SharpenEdgeParams {
public:
bool enabled;
- int clpasses;
- double clstrength;
- bool enabledtwo;
- double mlstrength;
- bool clthreechannels;
- double uniformity;
- bool MLmicromatrix;
+ int passes;
+ double amount;
+ bool threechannels;
+};
+class SharpenMicroParams {
+ public:
+ bool enabled;
+ bool matrix;
+ double amount;
+ double uniformity;
};
/**
* Parameters of the color boost
@@ -448,7 +450,8 @@ class ProcParams {
ToneCurveParams toneCurve; ///< Tone curve parameters
LCurveParams labCurve; ///< CIELAB luminance curve parameters
SharpeningParams sharpening; ///< Sharpening parameters
- ClarityParams clarity; ///< clarity parameters
+ SharpenEdgeParams sharpenEdge; ///< Sharpen edge parameters
+ SharpenMicroParams sharpenMicro; ///< Sharpen microcontrast parameters
ColorBoostParams colorBoost; ///< Color boost parameters
WBParams wb; ///< White balance parameters
ColorShiftParams colorShift; ///< Color shift parameters
diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc
index b5a5f72ae..3b5a91c1a 100644
--- a/rtengine/refreshmap.cc
+++ b/rtengine/refreshmap.cc
@@ -152,24 +152,24 @@ FLATFIELD, // EvFlatFieldBlurType,
TRANSFORM, // EvAutoDIST,
DIRPYRDENOISE, // EvDPDNLumCurve,
DIRPYRDENOISE, // EvDPDNChromCurve,
-ALL, // EvGAMMA
-ALL, // EvGAMPOS
-ALL, //EvGAMFREE
-ALL, //EvSLPOS
+ALL, // EvGAMMA
+ALL, // EvGAMPOS
+ALL, // EvGAMFREE
+ALL, // EvSLPOS
DARKFRAME, // EvPreProcessExpBlackzero
DARKFRAME, // EvPreProcessExpBlackone
DARKFRAME, // EvPreProcessExpBlacktwo
DARKFRAME, // EvPreProcessExpBlackthree
-DARKFRAME, //EvPreProcessExptwoGreen
-SHARPENING, //EvClaritypasses
-SHARPENING, //EvClaritystrength
-SHARPENING, //EvMLmicrostrength
-SHARPENING, //EvMLuniformity
-SHARPENING, //EvClarityEnabled
-SHARPENING, //EvClaritythreechannels
-SHARPENING, //EvClarityEnabledtwo
-SHARPENING, //EvClaritymatrix
-DEMOSAIC, // EvDemosaicALLEnhanced
+DARKFRAME, // EvPreProcessExptwoGreen
+SHARPENING, // EvSharpenEdgePasses
+SHARPENING, // EvSharpenEdgeStrength
+SHARPENING, // EvSharpenMicroStrength
+SHARPENING, // EvSharpenMicroUniformity
+SHARPENING, // EvSharpenEdgeEnabled
+SHARPENING, // EvSharpenEdgeThreechannels
+SHARPENING, // EvSharpenMicroEnabled
+SHARPENING, // EvSharpenMicroMatrix
+DEMOSAIC, // EvDemosaicALLEnhanced
};
diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc
index a708c027e..93ca62102 100644
--- a/rtengine/simpleprocess.cc
+++ b/rtengine/simpleprocess.cc
@@ -177,10 +177,10 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
ipf.impulsedenoise (labView);
ipf.defringe (labView);
ipf.dirpyrdenoise (labView);
- if (params.clarity.enabled) {
+ if (params.sharpenEdge.enabled) {
ipf.MLsharpen(labView);
}
- if (params.clarity.enabledtwo) {
+ if (params.sharpenMicro.enabled) {
ipf.MLmicrocontrast (labView);
}
if (params.sharpening.enabled) {
diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt
index 1936480ca..89fb6210a 100644
--- a/rtgui/CMakeLists.txt
+++ b/rtgui/CMakeLists.txt
@@ -28,7 +28,7 @@ set (BASESOURCEFILES
profilestore.cc partialpastedlg.cc rawprocess.cc preprocess.cc
darkframe.cc flatfield.cc rawcacorrection.cc rawexposure.cc
dirpyrequalizer.cc hsvequalizer.cc defringe.cc
- popupcommon.cc popupbutton.cc popuptogglebutton.cc clarity.cc)
+ popupcommon.cc popupbutton.cc popuptogglebutton.cc sharpenedge.cc sharpenmicro.cc)
if (WIN32)
set (EXTRA_SRC windirmonitor.cc myicon.rc)
diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h
index c24c8da77..26422fcd4 100644
--- a/rtgui/addsetids.h
+++ b/rtgui/addsetids.h
@@ -5,48 +5,48 @@
// UPDATE THE DEFAULT VALUE IN OPTIONS.CC TOO !!!
-#define ADDSET_TC_EXPCOMP 0
-#define ADDSET_TC_BRIGHTNESS 1
-#define ADDSET_TC_BLACKLEVEL 2
-#define ADDSET_TC_CONTRAST 3
-#define ADDSET_SH_HIGHLIGHTS 4
-#define ADDSET_SH_SHADOWS 5
-#define ADDSET_SH_LOCALCONTRAST 6
-#define ADDSET_LC_BRIGHTNESS 7
-#define ADDSET_LC_CONTRAST 8
-#define ADDSET_SHARP_AMOUNT 9
+#define ADDSET_TC_EXPCOMP 0
+#define ADDSET_TC_BRIGHTNESS 1
+#define ADDSET_TC_BLACKLEVEL 2
+#define ADDSET_TC_CONTRAST 3
+#define ADDSET_SH_HIGHLIGHTS 4
+#define ADDSET_SH_SHADOWS 5
+#define ADDSET_SH_LOCALCONTRAST 6
+#define ADDSET_LC_BRIGHTNESS 7
+#define ADDSET_LC_CONTRAST 8
+#define ADDSET_SHARP_AMOUNT 9
#define ADDSET_LD_EDGETOLERANCE 10
-#define ADDSET_WB_TEMPERATURE 11
-#define ADDSET_WB_GREEN 12
-#define ADDSET_CBOOST_AMOUNT 13
-#define ADDSET_CS_BLUEYELLOW 14
-#define ADDSET_CS_GREENMAGENTA 15
-#define ADDSET_ROTATE_DEGREE 16
-#define ADDSET_DIST_AMOUNT 17
+#define ADDSET_WB_TEMPERATURE 11
+#define ADDSET_WB_GREEN 12
+#define ADDSET_CBOOST_AMOUNT 13
+#define ADDSET_CS_BLUEYELLOW 14
+#define ADDSET_CS_GREENMAGENTA 15
+#define ADDSET_ROTATE_DEGREE 16
+#define ADDSET_DIST_AMOUNT 17
#define ADDSET_PERSPECTIVE 18
-#define ADDSET_CA 19
-#define ADDSET_VIGN_AMOUNT 20
-#define ADDSET_LC_SATURATION 21
-#define ADDSET_TC_SATURATION 22
-#define ADDSET_TC_HLCOMPAMOUNT 23
-#define ADDSET_TC_HLCOMPTHRESH 24
-#define ADDSET_TC_SHCOMP 25
+#define ADDSET_CA 19
+#define ADDSET_VIGN_AMOUNT 20
+#define ADDSET_LC_SATURATION 21
+#define ADDSET_TC_SATURATION 22
+#define ADDSET_TC_HLCOMPAMOUNT 23
+#define ADDSET_TC_HLCOMPTHRESH 24
+#define ADDSET_TC_SHCOMP 25
-#define ADDSET_DIRPYREQ 26
+#define ADDSET_DIRPYREQ 26
#define ADDSET_DIRPYRDN_CHLUM 27
#define ADDSET_DIRPYRDN_GAMMA 28
#define ADDSET_CHMIXER 29
-#define ADDSET_PREPROCESS_GREENEQUIL 30
-#define ADDSET_PREPROCESS_LINEDENOISE 31
-#define ADDSET_RAWCACORR 32
-#define ADDSET_RAWEXPOS_LINEAR 33
-#define ADDSET_RAWEXPOS_PRESER 34
-#define ADDSET_RAWEXPOS_BLACKS 35
-#define ADDSET_CLAR_STREN 36
-#define ADDSET_CLAR_MLSTREN 37
-#define ADDSET_CLAR_PASS 38
-#define ADDSET_CLAR_UNIFORMITY 39
+#define ADDSET_PREPROCESS_GREENEQUIL 30
+#define ADDSET_PREPROCESS_LINEDENOISE 31
+#define ADDSET_RAWCACORR 32
+#define ADDSET_RAWEXPOS_LINEAR 33
+#define ADDSET_RAWEXPOS_PRESER 34
+#define ADDSET_RAWEXPOS_BLACKS 35
+#define ADDSET_SHARPENEDGE_AMOUNT 36
+#define ADDSET_SHARPENMICRO_AMOUNT 37
+#define ADDSET_SHARPENEDGE_PASS 38
+#define ADDSET_SHARPENMICRO_UNIFORMITY 39
// When adding items, make sure to update ADDSET_PARAM_NUM
#define ADDSET_PARAM_NUM 40 // THIS IS USED AS A DELIMITER!!
diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc
index dbbc4eb29..79b6ab052 100644
--- a/rtgui/batchtoolpanelcoord.cc
+++ b/rtgui/batchtoolpanelcoord.cc
@@ -126,7 +126,8 @@ void BatchToolPanelCoordinator::initSession () {
perspective->setAdjusterBehavior (false);
cacorrection->setAdjusterBehavior (false);
sharpening->setAdjusterBehavior (false);
- clarity->setAdjusterBehavior (false, false, false, false);
+ sharpenEdge->setAdjusterBehavior (false, false);
+ sharpenMicro->setAdjusterBehavior (false, false);
chmixer->setAdjusterBehavior (false);
shadowshighlights->setAdjusterBehavior (false, false, false);
@@ -147,7 +148,8 @@ void BatchToolPanelCoordinator::initSession () {
perspective->setAdjusterBehavior (options.baBehav[ADDSET_PERSPECTIVE]);
cacorrection->setAdjusterBehavior (options.baBehav[ADDSET_CA]);
sharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_AMOUNT]);
- clarity->setAdjusterBehavior (options.baBehav[ADDSET_CLAR_STREN],options.baBehav[ADDSET_CLAR_MLSTREN],options.baBehav[ADDSET_CLAR_PASS],options.baBehav[ADDSET_CLAR_UNIFORMITY]);
+ sharpenEdge->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT],options.baBehav[ADDSET_SHARPENEDGE_PASS]);
+ sharpenMicro->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT],options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]);
chmixer->setAdjusterBehavior (options.baBehav[ADDSET_CHMIXER]);
shadowshighlights->setAdjusterBehavior (options.baBehav[ADDSET_SH_HIGHLIGHTS], options.baBehav[ADDSET_SH_SHADOWS], options.baBehav[ADDSET_SH_LOCALCONTRAST]);
@@ -174,12 +176,11 @@ void BatchToolPanelCoordinator::initSession () {
if (options.baBehav[ADDSET_LC_SATURATION]) pparams.labCurve.saturation = 0;
if (options.baBehav[ADDSET_SHARP_AMOUNT]) pparams.sharpening.amount = 0;
- if (options.baBehav[ADDSET_CLAR_STREN]) pparams.clarity.clstrength = 0;
- if (options.baBehav[ADDSET_CLAR_MLSTREN]) pparams.clarity.mlstrength = 0;
- if (options.baBehav[ADDSET_CLAR_PASS]) pparams.clarity.clpasses = 0;
- if (options.baBehav[ADDSET_CLAR_UNIFORMITY]) pparams.clarity.uniformity = 0;
-
-
+ if (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT]) pparams.sharpenEdge.amount = 0;
+ if (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT]) pparams.sharpenMicro.amount = 0;
+ if (options.baBehav[ADDSET_SHARPENEDGE_PASS]) pparams.sharpenEdge.passes = 0;
+ if (options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]) pparams.sharpenMicro.uniformity = 0;
+
if (options.baBehav[ADDSET_CHMIXER]) for (int i=0; i<3; i++) pparams.chmixer.red[i] = pparams.chmixer.green[i] = pparams.chmixer.blue[i] = 0;
if (options.baBehav[ADDSET_LD_EDGETOLERANCE]) pparams.lumaDenoise.edgetolerance = 0;
diff --git a/rtgui/clarity.cc b/rtgui/clarity.cc
deleted file mode 100644
index 2194361ce..000000000
--- a/rtgui/clarity.cc
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * This file is part of RawTherapee.
- *
- * Copyright (c) 2004-2010 Gabor Horvath
- *
- * RawTherapee is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * RawTherapee is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with RawTherapee. If not, see .
- */
-#include
-#include
-#include
-#include
-#include
-#include
-
-
-
-using namespace rtengine;
-using namespace rtengine::procparams;
-
-
-
-Clarity::Clarity () : Gtk::VBox(), FoldableToolPanel(this)
-{
- set_border_width(4);
- set_spacing(4);
-
- //******************************** SHARPEN
-
- Gtk::Frame *sharpenFrame = Gtk::manage (new Gtk::Frame(M("TP_CLARITY_SHARPEN")));
- Gtk::VBox *sharpenVBox = Gtk::manage (new Gtk::VBox());
- sharpenVBox->set_spacing(2);
-
- enabled = Gtk::manage (new Gtk::CheckButton (M("GENERAL_ENABLED")));
- enabled->set_active (true);
- sharpenVBox->pack_start(*enabled, Gtk::PACK_SHRINK, 0);
-
- Claritypasses = Gtk::manage(new Adjuster (M("TP_CLARITY_PASSES"),1,4,1,1));
- Claritypasses->setAdjusterListener (this);
- if (Claritypasses->delay < 1000) Claritypasses->delay = 1000;
- Claritystrength = Gtk::manage(new Adjuster (M("TP_CLARITY_STRENGTH"),0,100,1,40));
- Claritystrength->setAdjusterListener (this);
- if (Claritystrength->delay < 1000) Claritystrength->delay = 1000;
-
- Claritythreechannels = Gtk::manage(new Gtk::CheckButton((M("TP_CLARITY_THREE"))));// L + a + b
- Claritythreechannels->set_active (false);
- sharpenVBox->pack_start( *Claritypasses, Gtk::PACK_SHRINK, 0);//passes
- sharpenVBox->pack_start( *Claritystrength, Gtk::PACK_SHRINK, 0);//strength
- sharpenVBox->pack_start( *Claritythreechannels, Gtk::PACK_SHRINK, 0);//one or 3 channels Lab
-
- sharpenFrame->add (*sharpenVBox);
- pack_start(*sharpenFrame, Gtk::PACK_SHRINK, 0);
- sharpenFrame->show ();
-
- //******************************** MICRO
-
- Gtk::Frame *microFrame = Gtk::manage (new Gtk::Frame(M("TP_CLARITY_MICRO")));
- Gtk::VBox *microVBox = Gtk::manage (new Gtk::VBox());
- microVBox->set_spacing(2);
-
- enabledtwo = Gtk::manage (new Gtk::CheckButton (M("GENERAL_ENABLED")));
- enabledtwo->set_active (true);
- microVBox->pack_start(*enabledtwo, Gtk::PACK_SHRINK, 0);
- enabledtwo->show ();
-
- MLmicrostrength= Gtk::manage(new Adjuster (M("TP_MLMICRO_STRENGTH"),0,100,1,25));
- MLmicrostrength->setAdjusterListener (this);
- if (MLmicrostrength->delay < 1000) MLmicrostrength->delay = 1000;
- MLmicrostrength->show();
- uniformity= Gtk::manage(new Adjuster (M("TP_MLMICRO_UNIFORMITY"),0,100,10,50));
-
- uniformity->setAdjusterListener (this);
- if (uniformity->delay < 1000) uniformity->delay = 1000;
- uniformity->show();
- MLmicromatrix = Gtk::manage (new Gtk::CheckButton (M("TP_CLARITY_MATRIX")));
- MLmicromatrix->set_active (true);
- microVBox->pack_start(*MLmicromatrix, Gtk::PACK_SHRINK, 0);
- MLmicromatrix->show ();
-
- microVBox->pack_start( *MLmicrostrength, Gtk::PACK_SHRINK, 0);//microcontraste strength
- microVBox->pack_start( *uniformity, Gtk::PACK_SHRINK, 0);//uniformity
-
- microFrame->add (*microVBox);
- pack_start(*microFrame, Gtk::PACK_SHRINK, 0);
- microFrame->show ();
-
- enaconn = enabled->signal_toggled().connect( sigc::mem_fun(*this, &Clarity::enabled_toggled) );
- chanthreeconn = Claritythreechannels->signal_toggled().connect( sigc::mem_fun(*this, &Clarity::chanthree_toggled) );
- enatwoconn = enabledtwo->signal_toggled().connect( sigc::mem_fun(*this, &Clarity::enabledtwo_toggled) );
- matrixconn = MLmicromatrix->signal_toggled().connect( sigc::mem_fun(*this, &Clarity::MLmicromatrix_toggled) );
-
-}
-Clarity::~Clarity () {
-
-}
-
-void Clarity::read(const ProcParams* pp, const ParamsEdited* pedited)
-{
- disableListener ();
-
- if(pedited ){
- Claritypasses->setEditedState (pedited->clarity.clpasses ? Edited : UnEdited);
- Claritystrength->setEditedState (pedited->clarity.clstrength ? Edited : UnEdited);
- MLmicrostrength->setEditedState (pedited->clarity.mlstrength ? Edited : UnEdited);
- uniformity->setEditedState (pedited->clarity.uniformity ? Edited : UnEdited);
- enabled->set_inconsistent (!pedited->clarity.enabled);
- Claritythreechannels->set_inconsistent (!pedited->clarity.clthreechannels);
- enabledtwo->set_inconsistent (!pedited->clarity.enabledtwo);
- MLmicromatrix->set_inconsistent (!pedited->clarity.MLmicromatrix);
-
- }
- enaconn.block (true);
- enabled->set_active (pp->clarity.enabled);
- enaconn.block (false);
- lastEnabled = pp->clarity.enabled;
-
- enatwoconn.block (true);
- enabledtwo->set_active (pp->clarity.enabledtwo);
- enatwoconn.block (false);
- lastEnabledtwo = pp->clarity.enabledtwo;
-
- chanthreeconn.block (true);
- Claritythreechannels->set_active (pp->clarity.clthreechannels);
- chanthreeconn.block (false);
- lastchanthree = pp->clarity.clthreechannels;
-
- matrixconn.block (true);
- MLmicromatrix->set_active (pp->clarity.MLmicromatrix);
- matrixconn.block (false);
- lastmatrix = pp->clarity.MLmicromatrix;
-
- Claritypasses->setValue (pp->clarity.clpasses);
- Claritystrength->setValue (pp->clarity.clstrength);
- MLmicrostrength->setValue (pp->clarity.mlstrength);
- uniformity->setValue (pp->clarity.uniformity);
-
- enableListener ();
-}
-
-void Clarity::write( ProcParams* pp, ParamsEdited* pedited)
-{
- pp->clarity.clpasses = (int)Claritypasses->getValue();
- pp->clarity.enabled = enabled->get_active ();
- pp->clarity.clstrength = Claritystrength->getValue ();
- pp->clarity.mlstrength = MLmicrostrength->getValue ();
- pp->clarity.uniformity = uniformity->getValue ();
- pp->clarity.clthreechannels = Claritythreechannels->get_active ();
- pp->clarity.enabledtwo = enabledtwo->get_active ();
- pp->clarity.MLmicromatrix = MLmicromatrix->get_active ();
-
-
- if (pedited) {
- pedited->clarity.clpasses = Claritypasses->getEditedState ();
- pedited->clarity.enabled = !enabled->get_inconsistent();
- pedited->clarity.clthreechannels = !Claritythreechannels->get_inconsistent();
- pedited->clarity.clstrength = Claritystrength->getEditedState ();
- pedited->clarity.mlstrength = MLmicrostrength->getEditedState ();
- pedited->clarity.uniformity = uniformity->getEditedState ();
- pedited->clarity.enabledtwo = !enabledtwo->get_inconsistent();
- pedited->clarity.MLmicromatrix = !MLmicromatrix->get_inconsistent();
- }
-
-}
-
-void Clarity::enabled_toggled () {
-
- if (batchMode) {
- if (enabled->get_inconsistent()) {
- enabled->set_inconsistent (false);
- enaconn.block (true);
- enabled->set_active (false);
- enaconn.block (false);
- }
- else if (lastEnabled)
- enabled->set_inconsistent (true);
-
- lastEnabled = enabled->get_active ();
- }
-
- if (listener) {
- if (enabled->get_active ())
- listener->panelChanged (EvClarityEnabled, M("GENERAL_ENABLED"));
- // listener->panelChanged (EvMLunifor, M("GENERAL_ENABLED"));
-
- else
- listener->panelChanged (EvClarityEnabled, M("GENERAL_DISABLED"));
- }
-}
-void Clarity::enabledtwo_toggled () {
-
- if (batchMode) {
- if (enabledtwo->get_inconsistent()) {
- enabledtwo->set_inconsistent (false);
- enatwoconn.block (true);
- enabledtwo->set_active (false);
- enatwoconn.block (false);
- }
- else if (lastEnabledtwo)
- enabledtwo->set_inconsistent (true);
-
- lastEnabledtwo = enabledtwo->get_active ();
- }
-
- if (listener) {
- if (enabledtwo->get_active ())
- listener->panelChanged (EvClarityEnabledtwo, M("GENERAL_ENABLED"));
-
- else
- listener->panelChanged (EvClarityEnabledtwo, M("GENERAL_DISABLED"));
-
- }
-}
-
-void Clarity::chanthree_toggled () {
-
- if (batchMode) {
- if (Claritythreechannels->get_inconsistent()) {
- Claritythreechannels->set_inconsistent (false);
- chanthreeconn.block (true);
- Claritythreechannels->set_active (false);
- chanthreeconn.block (false);
- }
- else if (lastchanthree)
- Claritythreechannels->set_inconsistent (true);
-
- lastchanthree = Claritythreechannels->get_active ();
- }
-
- if (listener && enabled->get_active ()) {
- if (Claritythreechannels->get_active ())
- listener->panelChanged (EvClaritythreechannels, M("GENERAL_ENABLED"));
- else
- listener->panelChanged (EvClaritythreechannels, M("GENERAL_DISABLED"));
- }
-}
-
-void Clarity::MLmicromatrix_toggled () {
- if (batchMode) {
- if (MLmicromatrix->get_inconsistent()) {
- MLmicromatrix->set_inconsistent (false);
- matrixconn.block (true);
- MLmicromatrix->set_active (false);
- matrixconn.block (false);
- }
- else if (lastmatrix)
- MLmicromatrix->set_inconsistent (true);
-
- lastmatrix = MLmicromatrix->get_active ();
- }
-
- if (listener && enabledtwo->get_active ()) {
- if (MLmicromatrix->get_active ())
- listener->panelChanged (EvClaritymatrix, M("GENERAL_ENABLED"));
- else
- listener->panelChanged (EvClaritymatrix, M("GENERAL_DISABLED"));
- }
-
-}
-
-
-void Clarity::adjusterChanged (Adjuster* a, double newval)
-{
- if (listener && enabled->get_active()) {
- Glib::ustring value = a->getTextValue();
- {
-
- if (a == Claritypasses )
- listener->panelChanged (EvClaritypasses, value );
- else if (a == Claritystrength)
- listener->panelChanged (EvClaritystrength, value );
- }
-
- }
- if (listener && enabledtwo->get_active()) {
- Glib::ustring value = a->getTextValue();
- {
- if (a == MLmicrostrength)
- listener->panelChanged (EvMLmicrostrength, value );
- else if (a == uniformity)
- listener->panelChanged (EvMLuniformity, value );
-
- }
-
- }
-
-
-
-}
-
-void Clarity::setBatchMode(bool batchMode)
-{
- Claritypasses->showEditedCB ();
- Claritystrength->showEditedCB ();
- MLmicrostrength->showEditedCB ();
- uniformity->showEditedCB ();
-
-}
-
-void Clarity::setDefaults(const ProcParams* defParams, const ParamsEdited* pedited)
-{
- Claritypasses->setDefault (defParams->clarity.clpasses);
- Claritystrength->setDefault (defParams->clarity.clstrength);
- MLmicrostrength->setDefault (defParams->clarity.mlstrength);
- uniformity->setDefault (defParams->clarity.uniformity);
-
- if (pedited) {
- Claritypasses->setDefaultEditedState (pedited->clarity.clpasses ? Edited : UnEdited);
- Claritystrength->setDefaultEditedState (pedited->clarity.clstrength ? Edited : UnEdited);
- MLmicrostrength->setDefaultEditedState (pedited->clarity.mlstrength ? Edited : UnEdited);
- uniformity->setDefaultEditedState (pedited->clarity.uniformity ? Edited : UnEdited);
-
- } else {
- Claritypasses->setDefaultEditedState (Irrelevant);
- Claritystrength->setDefaultEditedState (Irrelevant);
- MLmicrostrength->setDefaultEditedState (Irrelevant);
- uniformity->setDefaultEditedState (Irrelevant);
-
- }
-}
-
-void Clarity::setAdjusterBehavior (bool strengthadd, bool mlstrentghadd, bool passadd, bool uniformityadd ) {
- Claritystrength->setAddMode(strengthadd);
- MLmicrostrength->setAddMode(mlstrentghadd);
- Claritypasses->setAddMode(passadd);
- uniformity->setAddMode(uniformityadd);
-}
-
-void Clarity::trimValues (ProcParams* pp) {
- Claritystrength->trimValue(pp->clarity.clstrength);
- MLmicrostrength->trimValue(pp->clarity.mlstrength);
- Claritypasses->trimValue(pp->clarity.clpasses);
- uniformity->trimValue(pp->clarity.uniformity);
-
-}
diff --git a/rtgui/clarity.h b/rtgui/clarity.h
deleted file mode 100644
index 32e4c2b96..000000000
--- a/rtgui/clarity.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * This file is part of RawTherapee.
- *
- * Copyright (c) 2004-2010 Gabor Horvath
- *
- * RawTherapee is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * RawTherapee is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with RawTherapee. If not, see .
- */
-#ifndef _CLARITY_H_
-#define _CLARITY_H_
-
-#include
-#include
-#include
-
-class Clarity : public Gtk::VBox, public AdjusterListener, public FoldableToolPanel {
-
- protected:
- Adjuster* Claritypasses;
- Adjuster* Claritystrength;
-
- Adjuster* MLmicrostrength;
- Adjuster* uniformity;
- Gtk::CheckButton* enabled;
- Gtk::CheckButton* Claritythreechannels;
- Gtk::CheckButton* enabledtwo;
- Gtk::CheckButton* MLmicromatrix;
-
- bool lastEnabled;
- bool lastEnabledtwo;
- sigc::connection enaconn;
- sigc::connection enatwoconn;
- sigc::connection matrixconn;
-
- sigc::connection chanthreeconn;
- bool lastchanthree;
- bool lastmatrix;
-
- public:
-
- Clarity ();
- virtual ~Clarity ();
-
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
- void setBatchMode (bool batchMode);
-
- void adjusterChanged (Adjuster* a, double newval);
- void setAdjusterBehavior (bool strengthadd, bool mlstrentghadd, bool passadd, bool uniformityadd );
- void enabled_toggled();
- void enabledtwo_toggled();
- void MLmicromatrix_toggled();
-
- void chanthree_toggled();
- void trimValues (rtengine::procparams::ProcParams* pp);
-
-};
-
-#endif
diff --git a/rtgui/options.cc b/rtgui/options.cc
index ef39b43a3..62c259ef5 100644
--- a/rtgui/options.cc
+++ b/rtgui/options.cc
@@ -202,10 +202,10 @@ void Options::setDefaults () {
1, // ADDSET_RAWEXPOS_LINEAR
1, // ADDSET_RAWEXPOS_PRESER
1, // ADDSET_RAWEXPOS_BLACKS
- 0, // ADDSET_CLAR_STREN
- 0, // ADDSET_CLAR_MLSTREN
- 0, // ADDSET_CLAR_PASS
- 0 // ADDSET_CLAR_RELAT
+ 0, // ADDSET_SHARPENEDGE_AMOUNT
+ 0, // ADDSET_SHARPENMICRO_AMOUNT
+ 0, // ADDSET_SHARPENEDGE_PASS
+ 0 // ADDSET_SHARPENMICRO_UNIFORMITY
};
baBehav = std::vector (babehav, babehav+ADDSET_PARAM_NUM);
diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc
index bd3c0185b..a585e1c54 100644
--- a/rtgui/paramsedited.cc
+++ b/rtgui/paramsedited.cc
@@ -62,16 +62,16 @@ void ParamsEdited::set (bool v) {
sharpening.deconvradius = v;
sharpening.deconviter = v;
sharpening.deconvdamping = v;
- clarity.clpasses = v;
- clarity.clstrength = v;
- clarity.mlstrength = v;
- clarity.uniformity = v;
- clarity.enabled = v;
- clarity.enabledtwo = v;
- clarity.clthreechannels = v;
- clarity.MLmicromatrix = v;
- colorBoost.amount = v;
- colorBoost.avoidclip = v;
+ sharpenEdge.enabled = v;
+ sharpenEdge.passes = v;
+ sharpenEdge.amount = v;
+ sharpenEdge.threechannels = v;
+ sharpenMicro.enabled = v;
+ sharpenMicro.matrix = v;
+ sharpenMicro.amount = v;
+ sharpenMicro.uniformity = v;
+ colorBoost.amount = v;
+ colorBoost.avoidclip = v;
colorBoost.enable_saturationlimiter = v;
colorBoost.saturationlimit = v;
wb.method = v;
@@ -221,14 +221,14 @@ void ParamsEdited::initFrom (const std::vector
labCurve.avoidclip = labCurve.avoidclip && p.labCurve.avoidclip == other.labCurve.avoidclip;
labCurve.enable_saturationlimiter = labCurve.enable_saturationlimiter && p.labCurve.enable_saturationlimiter == other.labCurve.enable_saturationlimiter;
labCurve.saturationlimit = labCurve.saturationlimit && p.labCurve.saturationlimit == other.labCurve.saturationlimit;
- clarity.enabled = clarity.enabled && p.clarity.enabled == other.clarity.enabled;
- clarity.clpasses = clarity.clpasses && p.clarity.clpasses == other.clarity.clpasses;
- clarity.clstrength = clarity.clstrength && p.clarity.clstrength == other.clarity.clstrength;
- clarity.enabledtwo = clarity.enabledtwo && p.clarity.enabledtwo == other.clarity.enabledtwo;
- clarity.MLmicromatrix = clarity.MLmicromatrix && p.clarity.MLmicromatrix == other.clarity.MLmicromatrix;
- clarity.mlstrength = clarity.mlstrength && p.clarity.mlstrength == other.clarity.mlstrength;
- clarity.uniformity = clarity.uniformity && p.clarity.uniformity == other.clarity.uniformity;
- clarity.clthreechannels = clarity.clthreechannels && p.clarity.clthreechannels == other.clarity.clthreechannels;
+ sharpenEdge.enabled = sharpenEdge.enabled && p.sharpenEdge.enabled == other.sharpenEdge.enabled;
+ sharpenEdge.passes = sharpenEdge.passes && p.sharpenEdge.passes == other.sharpenEdge.passes;
+ sharpenEdge.amount = sharpenEdge.amount && p.sharpenEdge.amount == other.sharpenEdge.amount;
+ sharpenEdge.threechannels = sharpenEdge.threechannels && p.sharpenEdge.threechannels == other.sharpenEdge.threechannels;
+ sharpenMicro.enabled = sharpenMicro.enabled && p.sharpenMicro.enabled == other.sharpenMicro.enabled;
+ sharpenMicro.matrix = sharpenMicro.matrix && p.sharpenMicro.matrix == other.sharpenMicro.matrix;
+ sharpenMicro.amount = sharpenMicro.amount && p.sharpenMicro.amount == other.sharpenMicro.amount;
+ sharpenMicro.uniformity = sharpenMicro.uniformity && p.sharpenMicro.uniformity == other.sharpenMicro.uniformity;
sharpening.enabled = sharpening.enabled && p.sharpening.enabled == other.sharpening.enabled;
sharpening.radius = sharpening.radius && p.sharpening.radius == other.sharpening.radius;
sharpening.amount = sharpening.amount && p.sharpening.amount == other.sharpening.amount;
@@ -370,14 +370,14 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
bool dontforceSet = !forceSet;
- if (toneCurve.curve) toEdit.toneCurve.curve = mods.toneCurve.curve;
+ if (toneCurve.curve) toEdit.toneCurve.curve = mods.toneCurve.curve;
if (toneCurve.brightness) toEdit.toneCurve.brightness = dontforceSet && options.baBehav[ADDSET_TC_BRIGHTNESS] ? toEdit.toneCurve.brightness + mods.toneCurve.brightness : mods.toneCurve.brightness;
if (toneCurve.black) toEdit.toneCurve.black = dontforceSet && options.baBehav[ADDSET_TC_BLACKLEVEL] ? toEdit.toneCurve.black + mods.toneCurve.black : mods.toneCurve.black;
if (toneCurve.contrast) toEdit.toneCurve.contrast = dontforceSet && options.baBehav[ADDSET_TC_CONTRAST] ? toEdit.toneCurve.contrast + mods.toneCurve.contrast : mods.toneCurve.contrast;
if (toneCurve.saturation) toEdit.toneCurve.saturation = dontforceSet && options.baBehav[ADDSET_TC_SATURATION] ? toEdit.toneCurve.saturation + mods.toneCurve.saturation : mods.toneCurve.saturation;
if (toneCurve.shcompr) toEdit.toneCurve.shcompr = dontforceSet && options.baBehav[ADDSET_TC_SHCOMP] ? toEdit.toneCurve.shcompr + mods.toneCurve.shcompr : mods.toneCurve.shcompr;
if (toneCurve.autoexp) toEdit.toneCurve.autoexp = mods.toneCurve.autoexp;
- if (toneCurve.clip) toEdit.toneCurve.clip = mods.toneCurve.clip;
+ if (toneCurve.clip) toEdit.toneCurve.clip = mods.toneCurve.clip;
if (toneCurve.expcomp) toEdit.toneCurve.expcomp = dontforceSet && options.baBehav[ADDSET_TC_EXPCOMP] ? toEdit.toneCurve.expcomp + mods.toneCurve.expcomp : mods.toneCurve.expcomp;
if (toneCurve.hlcompr) toEdit.toneCurve.hlcompr = dontforceSet && options.baBehav[ADDSET_TC_HLCOMPAMOUNT] ? toEdit.toneCurve.hlcompr + mods.toneCurve.hlcompr : mods.toneCurve.hlcompr;
if (toneCurve.hlcomprthresh) toEdit.toneCurve.hlcomprthresh = dontforceSet && options.baBehav[ADDSET_TC_HLCOMPTHRESH] ? toEdit.toneCurve.hlcomprthresh + mods.toneCurve.hlcomprthresh : mods.toneCurve.hlcomprthresh;
@@ -387,17 +387,17 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (labCurve.brightness) toEdit.labCurve.brightness = dontforceSet && options.baBehav[ADDSET_LC_BRIGHTNESS] ? toEdit.labCurve.brightness + mods.labCurve.brightness : mods.labCurve.brightness;
if (labCurve.contrast) toEdit.labCurve.contrast = dontforceSet && options.baBehav[ADDSET_LC_CONTRAST] ? toEdit.labCurve.contrast + mods.labCurve.contrast : mods.labCurve.contrast;
if (labCurve.saturation) toEdit.labCurve.saturation = dontforceSet && options.baBehav[ADDSET_LC_SATURATION] ? toEdit.labCurve.saturation + mods.labCurve.saturation : mods.labCurve.saturation;
- if (labCurve.avoidclip) toEdit.labCurve.avoidclip = mods.labCurve.avoidclip;
- if (labCurve.enable_saturationlimiter)toEdit.labCurve.enable_saturationlimiter = mods.labCurve.enable_saturationlimiter;
+ if (labCurve.avoidclip) toEdit.labCurve.avoidclip = mods.labCurve.avoidclip;
+ if (labCurve.enable_saturationlimiter) toEdit.labCurve.enable_saturationlimiter = mods.labCurve.enable_saturationlimiter;
if (labCurve.saturationlimit) toEdit.labCurve.saturationlimit = mods.labCurve.saturationlimit;
- if (clarity.enabled) toEdit.clarity.enabled = mods.clarity.enabled;
- if (clarity.clpasses) toEdit.clarity.clpasses = dontforceSet && options.baBehav[ADDSET_CLAR_PASS] ? toEdit.clarity.clpasses + mods.clarity.clpasses : mods.clarity.clpasses;
- if (clarity.clstrength) toEdit.clarity.clstrength = dontforceSet && options.baBehav[ADDSET_CLAR_STREN] ? toEdit.clarity.clstrength + mods.clarity.clstrength : mods.clarity.clstrength;
- if (clarity.enabledtwo) toEdit.clarity.enabledtwo = mods.clarity.enabledtwo;
- if (clarity.MLmicromatrix) toEdit.clarity.MLmicromatrix = mods.clarity.MLmicromatrix;
- if (clarity.mlstrength) toEdit.clarity.mlstrength = dontforceSet && options.baBehav[ADDSET_CLAR_MLSTREN] ? toEdit.clarity.mlstrength + mods.clarity.mlstrength : mods.clarity.mlstrength;
- if (clarity.uniformity) toEdit.clarity.uniformity = dontforceSet && options.baBehav[ADDSET_CLAR_UNIFORMITY] ? toEdit.clarity.uniformity + mods.clarity.uniformity : mods.clarity.uniformity;
- if (clarity.clthreechannels) toEdit.clarity.clthreechannels = mods.clarity.clthreechannels;
+ if (sharpenEdge.enabled) toEdit.sharpenEdge.enabled = mods.sharpenEdge.enabled;
+ if (sharpenEdge.passes) toEdit.sharpenEdge.passes = dontforceSet && options.baBehav[ADDSET_SHARPENEDGE_PASS] ? toEdit.sharpenEdge.passes + mods.sharpenEdge.passes : mods.sharpenEdge.passes;
+ if (sharpenEdge.amount) toEdit.sharpenEdge.amount = dontforceSet && options.baBehav[ADDSET_SHARPENEDGE_AMOUNT] ? toEdit.sharpenEdge.amount + mods.sharpenEdge.amount : mods.sharpenEdge.amount;
+ if (sharpenEdge.threechannels) toEdit.sharpenEdge.threechannels = mods.sharpenEdge.threechannels;
+ if (sharpenMicro.enabled) toEdit.sharpenMicro.enabled = mods.sharpenMicro.enabled;
+ if (sharpenMicro.matrix) toEdit.sharpenMicro.matrix = mods.sharpenMicro.matrix;
+ if (sharpenMicro.amount) toEdit.sharpenMicro.amount = dontforceSet && options.baBehav[ADDSET_SHARPENMICRO_AMOUNT] ? toEdit.sharpenMicro.amount + mods.sharpenMicro.amount : mods.sharpenMicro.amount;
+ if (sharpenMicro.uniformity) toEdit.sharpenMicro.uniformity = dontforceSet && options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY] ? toEdit.sharpenMicro.uniformity + mods.sharpenMicro.uniformity : mods.sharpenMicro.uniformity;
if (sharpening.enabled) toEdit.sharpening.enabled = mods.sharpening.enabled;
if (sharpening.radius) toEdit.sharpening.radius = mods.sharpening.radius;
if (sharpening.amount) toEdit.sharpening.amount = dontforceSet && options.baBehav[ADDSET_SHARP_AMOUNT] ? toEdit.sharpening.amount + mods.sharpening.amount : mods.sharpening.amount;
@@ -407,12 +407,12 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (sharpening.edges_tolerance) toEdit.sharpening.edges_tolerance = mods.sharpening.edges_tolerance;
if (sharpening.halocontrol) toEdit.sharpening.halocontrol = mods.sharpening.halocontrol;
if (sharpening.halocontrol_amount) toEdit.sharpening.halocontrol_amount = mods.sharpening.halocontrol_amount;
- if (sharpening.method) toEdit.sharpening.method = mods.sharpening.method;
+ if (sharpening.method) toEdit.sharpening.method = mods.sharpening.method;
if (sharpening.deconvamount) toEdit.sharpening.deconvamount = dontforceSet && options.baBehav[ADDSET_SHARP_AMOUNT] ? toEdit.sharpening.deconvamount + mods.sharpening.deconvamount : mods.sharpening.deconvamount;
if (sharpening.deconvradius) toEdit.sharpening.deconvradius = mods.sharpening.deconvradius;
if (sharpening.deconviter) toEdit.sharpening.deconviter = mods.sharpening.deconviter;
if (sharpening.deconvdamping) toEdit.sharpening.deconvdamping = mods.sharpening.deconvdamping;
- if (colorBoost.amount) toEdit.colorBoost.amount = dontforceSet && options.baBehav[ADDSET_CBOOST_AMOUNT] ? toEdit.colorBoost.amount + mods.colorBoost.amount : mods.colorBoost.amount;
+ if (colorBoost.amount) toEdit.colorBoost.amount = dontforceSet && options.baBehav[ADDSET_CBOOST_AMOUNT] ? toEdit.colorBoost.amount + mods.colorBoost.amount : mods.colorBoost.amount;
if (colorBoost.avoidclip) toEdit.colorBoost.avoidclip = mods.colorBoost.avoidclip;
if (colorBoost.enable_saturationlimiter)toEdit.colorBoost.enable_saturationlimiter = mods.colorBoost.enable_saturationlimiter;
if (colorBoost.saturationlimit) toEdit.colorBoost.saturationlimit = mods.colorBoost.saturationlimit;
@@ -539,4 +539,4 @@ bool RAWParamsEdited::isUnchanged() const {
return ccSteps && dmethod && dcbIterations && dcbEnhance && allEnhance && caCorrection && caRed && caBlue && greenEq
&& hotDeadPixel && linenoise && darkFrame && dfAuto && ff_file && ff_AutoSelect && ff_BlurRadius && ff_BlurType
&& exPos && exPreser && exBlackzero && exBlackone && exBlacktwo && exBlackthree && exTwoGreen;
-}
\ No newline at end of file
+}
diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h
index 5adaca689..53681667b 100644
--- a/rtgui/paramsedited.h
+++ b/rtgui/paramsedited.h
@@ -31,8 +31,8 @@ class ToneCurveParamsEdited {
bool brightness;
bool black;
bool contrast;
- bool saturation;
- bool shcompr;
+ bool saturation;
+ bool shcompr;
bool hlcompr;
bool hlcomprthresh;
bool autoexp;
@@ -45,26 +45,30 @@ class LCurveParamsEdited {
public:
bool brightness;
bool contrast;
- bool saturation;
- bool avoidclip;
- bool enable_saturationlimiter;
- bool saturationlimit;
+ bool saturation;
+ bool avoidclip;
+ bool enable_saturationlimiter;
+ bool saturationlimit;
bool lcurve;
- bool acurve;
- bool bcurve;
+ bool acurve;
+ bool bcurve;
};
-class ClarityParamsEdited {
- public :
-
- bool clpasses;
- bool clstrength;
- bool mlstrength;
- bool enabled;
- bool enabledtwo;
- bool clthreechannels;
- bool uniformity;
- bool MLmicromatrix;
+class SharpenEdgeParamsEdited {
+
+ public :
+ bool enabled;
+ bool passes;
+ bool amount;
+ bool threechannels;
+};
+
+class SharpenMicroParamsEdited {
+ public :
+ bool enabled;
+ bool matrix;
+ bool amount;
+ bool uniformity;
};
class SharpeningParamsEdited {
@@ -79,7 +83,7 @@ class SharpeningParamsEdited {
bool edges_tolerance;
bool halocontrol;
bool halocontrol_amount;
-
+
bool method;
bool deconvamount;
bool deconvradius;
@@ -334,38 +338,38 @@ class IPTCPairEdited {
class ParamsEdited {
public:
- ToneCurveParamsEdited toneCurve;
- LCurveParamsEdited labCurve;
- SharpeningParamsEdited sharpening;
- ClarityParamsEdited clarity;
-
- ColorBoostParamsEdited colorBoost;
- WBParamsEdited wb;
- ColorShiftParamsEdited colorShift;
- LumaDenoiseParamsEdited lumaDenoise;
- ColorDenoiseParamsEdited colorDenoise;
- DefringeParamsEdited defringe;
- DirPyrDenoiseParamsEdited dirpyrDenoise;
- ImpulseDenoiseParamsEdited impulseDenoise;
- SHParamsEdited sh;
- CropParamsEdited crop;
- CoarseTransformParamsEdited coarse;
+ ToneCurveParamsEdited toneCurve;
+ LCurveParamsEdited labCurve;
+ SharpeningParamsEdited sharpening;
+ SharpenEdgeParamsEdited sharpenEdge;
+ SharpenMicroParamsEdited sharpenMicro;
+ ColorBoostParamsEdited colorBoost;
+ WBParamsEdited wb;
+ ColorShiftParamsEdited colorShift;
+ LumaDenoiseParamsEdited lumaDenoise;
+ ColorDenoiseParamsEdited colorDenoise;
+ DefringeParamsEdited defringe;
+ DirPyrDenoiseParamsEdited dirpyrDenoise;
+ ImpulseDenoiseParamsEdited impulseDenoise;
+ SHParamsEdited sh;
+ CropParamsEdited crop;
+ CoarseTransformParamsEdited coarse;
CommonTransformParamsEdited commonTrans;
- RotateParamsEdited rotate;
+ RotateParamsEdited rotate;
DistortionParamsEdited distortion;
PerspectiveParamsEdited perspective;
- CACorrParamsEdited cacorrection;
- VignettingParamsEdited vignetting;
- ChannelMixerParamsEdited chmixer;
- HRecParamsEdited hlrecovery;
- ResizeParamsEdited resize;
- ColorManagementParamsEdited icm;
+ CACorrParamsEdited cacorrection;
+ VignettingParamsEdited vignetting;
+ ChannelMixerParamsEdited chmixer;
+ HRecParamsEdited hlrecovery;
+ ResizeParamsEdited resize;
+ ColorManagementParamsEdited icm;
RAWParamsEdited raw;
DirPyrEqualizerParamsEdited dirpyrequalizer;
HSVEqualizerParamsEdited hsvequalizer;
- std::vector exif;
- std::vector iptc;
-
+ std::vector exif;
+ std::vector iptc;
+
ParamsEdited ();
void set (bool v);
diff --git a/rtgui/partialpastedlg.cc b/rtgui/partialpastedlg.cc
index 026aa41ff..4f9654759 100644
--- a/rtgui/partialpastedlg.cc
+++ b/rtgui/partialpastedlg.cc
@@ -51,8 +51,8 @@ PartialPasteDlg::PartialPasteDlg () {
// options in detail:
sharpen = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHARPENING")));
- gradsharpen = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_GRADIENTSHARPEN")));
- microcontrast = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_MICROCONTRAST")));
+ sharpenedge = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHARPENEDGE")));
+ sharpenmicro = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SHARPENMICRO")));
impden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_IMPULSEDENOISE")));
dirpyreq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYREQUALIZER")));
defringe = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DEFRINGE")));
@@ -123,8 +123,8 @@ PartialPasteDlg::PartialPasteDlg () {
vboxes[1]->pack_start (*detail, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*hseps[1], Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*sharpen, Gtk::PACK_SHRINK, 2);
- vboxes[1]->pack_start (*gradsharpen, Gtk::PACK_SHRINK, 2);
- vboxes[1]->pack_start (*microcontrast, Gtk::PACK_SHRINK, 2);
+ vboxes[1]->pack_start (*sharpenedge, Gtk::PACK_SHRINK, 2);
+ vboxes[1]->pack_start (*sharpenmicro, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*impden, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*dirpyrden, Gtk::PACK_SHRINK, 2);
vboxes[1]->pack_start (*defringe, Gtk::PACK_SHRINK, 2);
@@ -234,8 +234,8 @@ PartialPasteDlg::PartialPasteDlg () {
labcurveConn = labcurve->signal_toggled().connect (sigc::bind (sigc::mem_fun(*basic, &Gtk::CheckButton::set_inconsistent), true));
sharpenConn = sharpen->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
- gradsharpenConn = gradsharpen->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
- microcontrastConn = microcontrast->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
+ gradsharpenConn = sharpenedge->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
+ microcontrastConn = sharpenmicro->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
impdenConn = impden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
dirpyrdenConn = dirpyrden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
dirpyreqConn = dirpyreq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true));
@@ -433,8 +433,8 @@ void PartialPasteDlg::detailToggled () {
detail->set_inconsistent (false);
sharpen->set_active (detail->get_active ());
- gradsharpen->set_active (detail->get_active ());
- microcontrast->set_active (detail->get_active ());
+ sharpenedge->set_active (detail->get_active ());
+ sharpenmicro->set_active (detail->get_active ());
impden->set_active (detail->get_active ());
dirpyrden->set_active (detail->get_active ());
defringe->set_active (detail->get_active ());
@@ -535,18 +535,8 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dst, const r
if (labcurve->get_active ()) dst->labCurve = src->labCurve;
if (sharpen->get_active ()) dst->sharpening = src->sharpening;
- if (gradsharpen->get_active ()){
- dst->clarity.enabled = src->clarity.enabled;
- dst->clarity.clstrength = src->clarity.clstrength;
- dst->clarity.clpasses = src->clarity.clpasses;
- dst->clarity.clthreechannels = src->clarity.clthreechannels;
- }
- if (microcontrast->get_active ()){
- dst->clarity.enabledtwo = src->clarity.enabledtwo;
- dst->clarity.MLmicromatrix = src->clarity.MLmicromatrix;
- dst->clarity.mlstrength = src->clarity.mlstrength;
- dst->clarity.uniformity = src->clarity.uniformity;
- }
+ if (sharpenedge->get_active ()) dst->sharpenEdge = src->sharpenEdge;
+ if (sharpenmicro->get_active()) dst->sharpenMicro = src->sharpenMicro;
if (impden->get_active ()) dst->impulseDenoise = src->impulseDenoise;
if (dirpyreq->get_active ()) dst->dirpyrequalizer = src->dirpyrequalizer;
if (defringe->get_active ()) dst->defringe = src->defringe;
diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h
index 2f1e70fcb..ae1aea738 100644
--- a/rtgui/partialpastedlg.h
+++ b/rtgui/partialpastedlg.h
@@ -46,8 +46,8 @@ class PartialPasteDlg : public Gtk::Dialog {
// options in detail:
Gtk::CheckButton* sharpen;
- Gtk::CheckButton* gradsharpen;
- Gtk::CheckButton* microcontrast;
+ Gtk::CheckButton* sharpenedge;
+ Gtk::CheckButton* sharpenmicro;
Gtk::CheckButton* impden;
Gtk::CheckButton* waveq;
Gtk::CheckButton* dirpyrden;
diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc
index c19247bbc..16ec7da8c 100644
--- a/rtgui/preferences.cc
+++ b/rtgui/preferences.cc
@@ -169,13 +169,15 @@ Gtk::Widget* Preferences::getBatchProcPanel () {
appendBehavList (mi, M("TP_SHARPENING_AMOUNT"), ADDSET_SHARP_AMOUNT, false);
mi = behModel->append ();
- mi->set_value (behavColumns.label, M("TP_CLARITY_LABEL"));
- appendBehavList (mi, M("TP_CLARITY_PASSES"), ADDSET_CLAR_PASS, false);
- appendBehavList (mi, M("TP_CLARITY_STRENGTH"), ADDSET_CLAR_STREN, false);
- appendBehavList (mi, M("TP_MLMICRO_STRENGTH"), ADDSET_CLAR_MLSTREN, false);
- appendBehavList (mi, M("TP_MLMICRO_UNIFORMITY"), ADDSET_CLAR_UNIFORMITY, false);
-
-
+ mi->set_value (behavColumns.label, M("TP_SHARPENEDGE_LABEL"));
+ appendBehavList (mi, M("TP_SHARPENEDGE_PASSES"), ADDSET_SHARPENEDGE_PASS, false);
+ appendBehavList (mi, M("TP_SHARPENEDGE_AMOUNT"), ADDSET_SHARPENEDGE_AMOUNT, false);
+
+ mi = behModel->append ();
+ mi->set_value (behavColumns.label, M("TP_SHARPENMICRO_LABEL"));
+ appendBehavList (mi, M("TP_SHARPENMICRO_AMOUNT"), ADDSET_SHARPENMICRO_AMOUNT, false);
+ appendBehavList (mi, M("TP_SHARPENMICRO_UNIFORMITY"), ADDSET_SHARPENMICRO_UNIFORMITY, false);
+
mi = behModel->append ();
mi->set_value (behavColumns.label, M("TP_DIRPYRDENOISE_LABEL"));
appendBehavList (mi, M("TP_DIRPYRDENOISE_LUMA")+", "+M("TP_DIRPYRDENOISE_CHROMA"), ADDSET_DIRPYRDN_CHLUM, true);
diff --git a/rtgui/sharpenedge.cc b/rtgui/sharpenedge.cc
new file mode 100644
index 000000000..dcf16aa42
--- /dev/null
+++ b/rtgui/sharpenedge.cc
@@ -0,0 +1,182 @@
+/*
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2004-2010 Gabor Horvath
+ *
+ * RawTherapee is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RawTherapee is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with RawTherapee. If not, see .
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+
+using namespace rtengine;
+using namespace rtengine::procparams;
+
+
+SharpenEdge::SharpenEdge () : Gtk::VBox(), FoldableToolPanel(this) {
+ enabled = Gtk::manage (new Gtk::CheckButton (M("GENERAL_ENABLED")));
+ enabled->set_active (true);
+ pack_start(*enabled, Gtk::PACK_SHRINK, 0);
+
+ passes = Gtk::manage(new Adjuster (M("TP_SHARPENEDGE_PASSES"),1,4,1,1));
+ passes->setAdjusterListener (this);
+ if (passes->delay < 1000) passes->delay = 1000;
+ amount = Gtk::manage(new Adjuster (M("TP_SHARPENEDGE_AMOUNT"),0,100,1,40));
+ amount->setAdjusterListener (this);
+ if (amount->delay < 1000) amount->delay = 1000;
+
+ threechannels = Gtk::manage(new Gtk::CheckButton((M("TP_SHARPENEDGE_THREE"))));// L + a + b
+ threechannels->set_active (false);
+ pack_start( *passes, Gtk::PACK_SHRINK, 0);//passes
+ pack_start( *amount, Gtk::PACK_SHRINK, 0);//amount
+ pack_start( *threechannels, Gtk::PACK_SHRINK, 0);//one or 3 channels Lab
+
+ show ();
+
+ enaconn = enabled->signal_toggled().connect( sigc::mem_fun(*this, &SharpenEdge::enabled_toggled) );
+ chanthreeconn = threechannels->signal_toggled().connect( sigc::mem_fun(*this, &SharpenEdge::chanthree_toggled) );
+}
+
+void SharpenEdge::read(const ProcParams* pp, const ParamsEdited* pedited) {
+ disableListener ();
+
+ if(pedited ){
+ passes->setEditedState (pedited->sharpenEdge.passes ? Edited : UnEdited);
+ amount->setEditedState (pedited->sharpenEdge.amount ? Edited : UnEdited);
+ enabled->set_inconsistent (!pedited->sharpenEdge.enabled);
+ threechannels->set_inconsistent (!pedited->sharpenEdge.threechannels);
+ }
+ enaconn.block (true);
+ enabled->set_active (pp->sharpenEdge.enabled);
+ enaconn.block (false);
+ lastEnabled = pp->sharpenEdge.enabled;
+
+ chanthreeconn.block (true);
+ threechannels->set_active (pp->sharpenEdge.threechannels);
+ chanthreeconn.block (false);
+ lastchanthree = pp->sharpenEdge.threechannels;
+
+ passes->setValue (pp->sharpenEdge.passes);
+ amount->setValue (pp->sharpenEdge.amount);
+
+ enableListener ();
+}
+
+void SharpenEdge::write( ProcParams* pp, ParamsEdited* pedited) {
+ pp->sharpenEdge.enabled = enabled->get_active ();
+ pp->sharpenEdge.passes = (int)passes->getValue();
+ pp->sharpenEdge.amount = amount->getValue ();
+ pp->sharpenEdge.threechannels = threechannels->get_active ();
+
+ if (pedited) {
+ pedited->sharpenEdge.enabled = !enabled->get_inconsistent();
+ pedited->sharpenEdge.passes = passes->getEditedState ();
+ pedited->sharpenEdge.amount = amount->getEditedState ();
+ pedited->sharpenEdge.threechannels = !threechannels->get_inconsistent();
+ }
+
+}
+
+void SharpenEdge::enabled_toggled () {
+
+ if (batchMode) {
+ if (enabled->get_inconsistent()) {
+ enabled->set_inconsistent (false);
+ enaconn.block (true);
+ enabled->set_active (false);
+ enaconn.block (false);
+ }
+ else if (lastEnabled)
+ enabled->set_inconsistent (true);
+
+ lastEnabled = enabled->get_active ();
+ }
+
+ if (listener) {
+ if (enabled->get_active ())
+ listener->panelChanged (EvSharpenEdgeEnabled, M("GENERAL_ENABLED"));
+ //listener->panelChanged (EvMLunifor, M("GENERAL_ENABLED"));
+
+ else
+ listener->panelChanged (EvSharpenEdgeEnabled, M("GENERAL_DISABLED"));
+ }
+}
+
+void SharpenEdge::chanthree_toggled () {
+
+ if (batchMode) {
+ if (threechannels->get_inconsistent()) {
+ threechannels->set_inconsistent (false);
+ chanthreeconn.block (true);
+ threechannels->set_active (false);
+ chanthreeconn.block (false);
+ }
+ else if (lastchanthree)
+ threechannels->set_inconsistent (true);
+
+ lastchanthree = threechannels->get_active ();
+ }
+
+ if (listener && enabled->get_active ()) {
+ if (threechannels->get_active ())
+ listener->panelChanged (EvSharpenEdgeThreechannels, M("GENERAL_ENABLED"));
+ else
+ listener->panelChanged (EvSharpenEdgeThreechannels, M("GENERAL_DISABLED"));
+ }
+}
+
+void SharpenEdge::adjusterChanged (Adjuster* a, double newval) {
+ if (listener && enabled->get_active()) {
+ Glib::ustring value = a->getTextValue();
+
+ if (a == passes )
+ listener->panelChanged (EvSharpenEdgePasses, value );
+ else if (a == amount)
+ listener->panelChanged (EvSharpenEdgeAmount, value );
+ }
+}
+
+void SharpenEdge::setBatchMode(bool batchMode) {
+ passes->showEditedCB ();
+ amount->showEditedCB ();
+}
+
+void SharpenEdge::setDefaults(const ProcParams* defParams, const ParamsEdited* pedited) {
+ passes->setDefault (defParams->sharpenEdge.passes);
+ amount->setDefault (defParams->sharpenEdge.amount);
+
+ if (pedited) {
+ passes->setDefaultEditedState (pedited->sharpenEdge.passes ? Edited : UnEdited);
+ amount->setDefaultEditedState (pedited->sharpenEdge.amount ? Edited : UnEdited);
+
+ } else {
+ passes->setDefaultEditedState (Irrelevant);
+ amount->setDefaultEditedState (Irrelevant);
+
+ }
+}
+
+void SharpenEdge::setAdjusterBehavior (bool amountadd, bool passadd) {
+ amount->setAddMode (amountadd);
+ passes->setAddMode (passadd);
+}
+
+void SharpenEdge::trimValues (ProcParams* pp) {
+ amount->trimValue (pp->sharpenEdge.amount);
+ passes->trimValue (pp->sharpenEdge.passes);
+
+}
diff --git a/rtgui/sharpenedge.h b/rtgui/sharpenedge.h
new file mode 100644
index 000000000..508cccfcd
--- /dev/null
+++ b/rtgui/sharpenedge.h
@@ -0,0 +1,62 @@
+/*
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2004-2010 Gabor Horvath
+ *
+ * RawTherapee is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RawTherapee is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with RawTherapee. If not, see .
+ *
+ *
+ * Manuel Llorens' algorithm of edge sharpening
+ *
+ *
+ */
+#ifndef _SHARPENEDGE_H_
+#define _SHARPENEDGE_H_
+
+#include
+#include
+#include
+
+class SharpenEdge : public Gtk::VBox, public AdjusterListener, public FoldableToolPanel {
+
+protected:
+
+ Gtk::CheckButton* enabled;
+ Adjuster* passes;
+ Adjuster* amount;
+ Gtk::CheckButton* threechannels;
+
+ bool lastEnabled;
+ sigc::connection enaconn;
+ sigc::connection chanthreeconn;
+ bool lastchanthree;
+
+public:
+
+ SharpenEdge ();
+
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL);
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL);
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
+ void setBatchMode (bool batchMode);
+ void trimValues (rtengine::procparams::ProcParams* pp);
+ void setAdjusterBehavior (bool amountadd, bool passadd);
+ void adjusterChanged (Adjuster* a, double newval);
+
+ void enabled_toggled ();
+ void chanthree_toggled ();
+
+};
+
+#endif
diff --git a/rtgui/sharpenmicro.cc b/rtgui/sharpenmicro.cc
new file mode 100644
index 000000000..a45d2b6fd
--- /dev/null
+++ b/rtgui/sharpenmicro.cc
@@ -0,0 +1,179 @@
+/*
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2004-2010 Gabor Horvath
+ *
+ * RawTherapee is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RawTherapee is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with RawTherapee. If not, see .
+ */
+#include
+#include
+#include
+#include
+#include
+#include
+
+using namespace rtengine;
+using namespace rtengine::procparams;
+
+
+SharpenMicro::SharpenMicro () : Gtk::VBox(), FoldableToolPanel(this) {
+ enabled = Gtk::manage (new Gtk::CheckButton (M("GENERAL_ENABLED")));
+ enabled->set_active (true);
+ pack_start(*enabled, Gtk::PACK_SHRINK, 0);
+ enabled->show ();
+
+ amount= Gtk::manage(new Adjuster (M("TP_SHARPENMICRO_AMOUNT"),0,100,1,25));
+ amount->setAdjusterListener (this);
+ if (amount->delay < 1000) amount->delay = 1000;
+ amount->show();
+ uniformity= Gtk::manage(new Adjuster (M("TP_SHARPENMICRO_UNIFORMITY"),0,100,10,50));
+
+ uniformity->setAdjusterListener (this);
+ if (uniformity->delay < 1000) uniformity->delay = 1000;
+ uniformity->show();
+ matrix = Gtk::manage (new Gtk::CheckButton (M("TP_SHARPENMICRO_MATRIX")));
+ matrix->set_active (true);
+ pack_start(*matrix, Gtk::PACK_SHRINK, 0);
+ matrix->show ();
+
+ pack_start( *amount, Gtk::PACK_SHRINK, 0);
+ pack_start( *uniformity, Gtk::PACK_SHRINK, 0);
+
+ show ();
+
+ enaconn = enabled->signal_toggled().connect( sigc::mem_fun(*this, &SharpenMicro::enabled_toggled) );
+ matrixconn = matrix->signal_toggled().connect( sigc::mem_fun(*this, &SharpenMicro::matrix_toggled) );
+}
+
+void SharpenMicro::read(const ProcParams* pp, const ParamsEdited* pedited) {
+ disableListener ();
+
+ if(pedited ){
+ enabled->set_inconsistent (!pedited->sharpenMicro.enabled);
+ matrix->set_inconsistent (!pedited->sharpenMicro.matrix);
+ amount->setEditedState (pedited->sharpenMicro.amount ? Edited : UnEdited);
+ uniformity->setEditedState (pedited->sharpenMicro.uniformity ? Edited : UnEdited);
+ }
+ enaconn.block (true);
+ enabled->set_active (pp->sharpenMicro.enabled);
+ enaconn.block (false);
+ lastEnabled = pp->sharpenMicro.enabled;
+
+ matrixconn.block (true);
+ matrix->set_active (pp->sharpenMicro.matrix);
+ matrixconn.block (false);
+ lastmatrix = pp->sharpenMicro.matrix;
+
+ amount->setValue (pp->sharpenMicro.amount);
+ uniformity->setValue (pp->sharpenMicro.uniformity);
+
+ enableListener ();
+}
+
+void SharpenMicro::write( ProcParams* pp, ParamsEdited* pedited) {
+ pp->sharpenMicro.enabled = enabled->get_active ();
+ pp->sharpenMicro.matrix = matrix->get_active ();
+ pp->sharpenMicro.amount = amount->getValue ();
+ pp->sharpenMicro.uniformity = uniformity->getValue ();
+
+ if (pedited) {
+ pedited->sharpenMicro.enabled = !enabled->get_inconsistent();
+ pedited->sharpenMicro.matrix = !matrix->get_inconsistent();
+ pedited->sharpenMicro.amount = amount->getEditedState ();
+ pedited->sharpenMicro.uniformity = uniformity->getEditedState ();
+ }
+}
+
+void SharpenMicro::enabled_toggled () {
+ if (batchMode) {
+ if (enabled->get_inconsistent()) {
+ enabled->set_inconsistent (false);
+ enaconn.block (true);
+ enabled->set_active (false);
+ enaconn.block (false);
+ }
+ else if (lastEnabled)
+ enabled->set_inconsistent (true);
+
+ lastEnabled = enabled->get_active ();
+ }
+
+ if (listener) {
+ if (enabled->get_active ())
+ listener->panelChanged (EvSharpenMicroEnabled, M("GENERAL_ENABLED"));
+ else
+ listener->panelChanged (EvSharpenMicroEnabled, M("GENERAL_DISABLED"));
+
+ }
+}
+
+void SharpenMicro::matrix_toggled () {
+ if (batchMode) {
+ if (matrix->get_inconsistent()) {
+ matrix->set_inconsistent (false);
+ matrixconn.block (true);
+ matrix->set_active (false);
+ matrixconn.block (false);
+ }
+ else if (lastmatrix)
+ matrix->set_inconsistent (true);
+
+ lastmatrix = matrix->get_active ();
+ }
+
+ if (listener && enabled->get_active ()) {
+ if (matrix->get_active ())
+ listener->panelChanged (EvSharpenMicroMatrix, M("GENERAL_ENABLED"));
+ else
+ listener->panelChanged (EvSharpenMicroMatrix, M("GENERAL_DISABLED"));
+ }
+}
+
+void SharpenMicro::adjusterChanged (Adjuster* a, double newval) {
+ if (listener && enabled->get_active()) {
+ Glib::ustring value = a->getTextValue();
+ if (a == amount)
+ listener->panelChanged (EvSharpenMicroAmount, value );
+ else if (a == uniformity)
+ listener->panelChanged (EvSharpenMicroUniformity, value );
+ }
+}
+
+void SharpenMicro::setBatchMode(bool batchMode) {
+ amount->showEditedCB ();
+ uniformity->showEditedCB ();
+}
+
+void SharpenMicro::setDefaults(const ProcParams* defParams, const ParamsEdited* pedited) {
+ amount->setDefault (defParams->sharpenMicro.amount);
+ uniformity->setDefault (defParams->sharpenMicro.uniformity);
+
+ if (pedited) {
+ amount->setDefaultEditedState (pedited->sharpenMicro.amount ? Edited : UnEdited);
+ uniformity->setDefaultEditedState (pedited->sharpenMicro.uniformity ? Edited : UnEdited);
+ } else {
+ amount->setDefaultEditedState (Irrelevant);
+ uniformity->setDefaultEditedState (Irrelevant);
+ }
+}
+
+void SharpenMicro::setAdjusterBehavior (bool amountadd, bool uniformityadd ) {
+ amount->setAddMode (amountadd);
+ uniformity->setAddMode (uniformityadd);
+}
+
+void SharpenMicro::trimValues (ProcParams* pp) {
+ amount->trimValue (pp->sharpenMicro.amount);
+ uniformity->trimValue (pp->sharpenMicro.uniformity);
+}
diff --git a/rtgui/sharpenmicro.h b/rtgui/sharpenmicro.h
new file mode 100644
index 000000000..0fa2b1fef
--- /dev/null
+++ b/rtgui/sharpenmicro.h
@@ -0,0 +1,63 @@
+/*
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2004-2010 Gabor Horvath
+ *
+ * RawTherapee is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RawTherapee is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with RawTherapee. If not, see .
+ *
+ *
+ * Manuel Llorens' algorithm of micro-contrast sharpening
+ *
+ *
+ */
+#ifndef _SHARPENMICRO_H_
+#define _SHARPENMICRO_H_
+
+#include
+#include
+#include
+
+class SharpenMicro : public Gtk::VBox, public AdjusterListener, public FoldableToolPanel {
+
+protected:
+
+ Gtk::CheckButton* enabled;
+ Gtk::CheckButton* matrix;
+ Adjuster* amount;
+ Adjuster* uniformity;
+
+ bool lastEnabled;
+ sigc::connection enaconn;
+ sigc::connection matrixconn;
+ bool lastmatrix;
+
+public:
+
+ SharpenMicro ();
+
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited=NULL);
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited=NULL);
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
+ void setBatchMode (bool batchMode);
+ void trimValues (rtengine::procparams::ProcParams* pp);
+ void setAdjusterBehavior (bool amountadd, bool uniformityadd );
+ void adjusterChanged (Adjuster* a, double newval);
+
+ void enabled_toggled ();
+ void matrix_toggled ();
+
+
+};
+
+#endif
diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc
index f985d4ed7..36a9b4233 100644
--- a/rtgui/toolpanelcoord.cc
+++ b/rtgui/toolpanelcoord.cc
@@ -44,7 +44,8 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) {
defringe = Gtk::manage (new Defringe ());
dirpyrdenoise = Gtk::manage (new DirPyrDenoise ());
sharpening = Gtk::manage (new Sharpening ());
- clarity = Gtk::manage (new Clarity ());
+ sharpenEdge = Gtk::manage (new SharpenEdge ());
+ sharpenMicro = Gtk::manage (new SharpenMicro ());
lcurve = Gtk::manage (new LCurve ());
lensgeom = Gtk::manage (new LensGeometry ());
distortion = Gtk::manage (new Distortion ());
@@ -75,7 +76,8 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) {
addPanel (colorPanel, chmixer, M("TP_CHMIXER_LABEL")); toolPanels.push_back (chmixer);
addPanel (exposurePanel, shadowshighlights, M("TP_SHADOWSHLIGHTS_LABEL")); toolPanels.push_back (shadowshighlights);
addPanel (detailsPanel, sharpening, M("TP_SHARPENING_LABEL")); toolPanels.push_back (sharpening);
- addPanel (detailsPanel, clarity, M("TP_CLARITY_LABEL")); toolPanels.push_back (clarity);
+ addPanel (detailsPanel, sharpenEdge, M("TP_SHARPENEDGE_LABEL")); toolPanels.push_back (sharpenEdge);
+ addPanel (detailsPanel, sharpenMicro, M("TP_SHARPENMICRO_LABEL")); toolPanels.push_back (sharpenMicro);
addPanel (colorPanel, hsvequalizer, M("TP_HSVEQUALIZER_LABEL")); toolPanels.push_back (hsvequalizer);
addPanel (exposurePanel, lcurve, M("TP_LABCURVE_LABEL")); toolPanels.push_back (lcurve);
addPanel (detailsPanel, impulsedenoise, M("TP_IMPULSEDENOISE_LABEL")); toolPanels.push_back (impulsedenoise);
diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h
index ed80eef0e..469af10d4 100644
--- a/rtgui/toolpanelcoord.h
+++ b/rtgui/toolpanelcoord.h
@@ -58,7 +58,8 @@
#include
#include
#include
-#include
+#include
+#include
class ImageEditorCoordinator;
class ToolPanelCoordinator : public ToolPanelListener,
@@ -73,7 +74,7 @@ class ToolPanelCoordinator : public ToolPanelListener,
public ImageAreaToolListener {
protected:
-
+
WhiteBalance* whitebalance;
Vignetting* vignetting;
LensGeometry* lensgeom;
@@ -92,7 +93,8 @@ class ToolPanelCoordinator : public ToolPanelListener,
ImpulseDenoise* impulsedenoise;
DirPyrDenoise* dirpyrdenoise;
Sharpening* sharpening;
- Clarity* clarity;
+ SharpenEdge* sharpenEdge;
+ SharpenMicro* sharpenMicro;
LCurve* lcurve;
DirPyrEqualizer * dirpyrequalizer;
HSVEqualizer * hsvequalizer;