diff --git a/rtdata/languages/default b/rtdata/languages/default
index 6834c59ef..0396dc847 100755
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -479,6 +479,7 @@ HISTORY_MSG_242;Vignette Filter - Roundness
HISTORY_MSG_243;Vignetting - Rayon
HISTORY_MSG_244;Vignetting - Strength
HISTORY_MSG_245;Vignetting - Center
+HISTORY_MSG_246;CL curve
HISTORY_NEWSNAPSHOTAS;As...
HISTORY_NEWSNAPSHOT;Add
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
@@ -1269,6 +1270,8 @@ TP_LABCURVE_BWTONING_TIP;With the B&W toning option enabled, the Lab
TP_LABCURVE_CHROMATICITY;Chromaticity
TP_LABCURVE_CONTRAST;Contrast
TP_LABCURVE_CURVEEDITOR;Luminance Curve
+TP_LABCURVE_CURVEEDITOR_CL;CL
+TP_LABCURVE_CURVEEDITOR_CL_TOOLTIP;Chromaticity according to the luminance
TP_LABCURVE_CURVEEDITOR_A_RANGE1;Green Saturated
TP_LABCURVE_CURVEEDITOR_A_RANGE2;Green Pastel
TP_LABCURVE_CURVEEDITOR_A_RANGE3;Red Pastel
diff --git a/rtdata/profiles/BW/BW 1.pp3 b/rtdata/profiles/BW/BW 1.pp3
index f3b7921d5..82bd295a3 100644
--- a/rtdata/profiles/BW/BW 1.pp3
+++ b/rtdata/profiles/BW/BW 1.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -233,7 +234,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/BW/BW 2.pp3 b/rtdata/profiles/BW/BW 2.pp3
index 306948d5a..f6892e0ba 100644
--- a/rtdata/profiles/BW/BW 2.pp3
+++ b/rtdata/profiles/BW/BW 2.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -57,7 +57,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -232,7 +233,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/BW/BW 3.pp3 b/rtdata/profiles/BW/BW 3.pp3
index f3810c36f..46238e782 100644
--- a/rtdata/profiles/BW/BW 3.pp3
+++ b/rtdata/profiles/BW/BW 3.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -57,7 +57,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -232,7 +233,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/BW/BW 4.pp3 b/rtdata/profiles/BW/BW 4.pp3
index 23c584356..ed1985c9f 100644
--- a/rtdata/profiles/BW/BW 4.pp3
+++ b/rtdata/profiles/BW/BW 4.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -57,7 +57,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -233,7 +234,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Contrasty/Deep Shadows.pp3 b/rtdata/profiles/Contrasty/Deep Shadows.pp3
index b6722e91b..8d638985f 100644
--- a/rtdata/profiles/Contrasty/Deep Shadows.pp3
+++ b/rtdata/profiles/Contrasty/Deep Shadows.pp3
@@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.0
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -57,7 +57,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=true
diff --git a/rtdata/profiles/Contrasty/Punchy 1.pp3 b/rtdata/profiles/Contrasty/Punchy 1.pp3
index 9d9e41a48..42280b814 100644
--- a/rtdata/profiles/Contrasty/Punchy 1.pp3
+++ b/rtdata/profiles/Contrasty/Punchy 1.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -57,7 +57,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -232,7 +233,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Contrasty/Punchy 2.pp3 b/rtdata/profiles/Contrasty/Punchy 2.pp3
index b9c70deb1..0a3b19d2c 100644
--- a/rtdata/profiles/Contrasty/Punchy 2.pp3
+++ b/rtdata/profiles/Contrasty/Punchy 2.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -57,7 +57,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=false
@@ -232,7 +233,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Default ISO High.pp3 b/rtdata/profiles/Default ISO High.pp3
index 2b6bcea8a..cf69919d3 100644
--- a/rtdata/profiles/Default ISO High.pp3
+++ b/rtdata/profiles/Default ISO High.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=false
@@ -233,7 +234,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Default ISO Medium.pp3 b/rtdata/profiles/Default ISO Medium.pp3
index d5859f0ea..2905f24d9 100644
--- a/rtdata/profiles/Default ISO Medium.pp3
+++ b/rtdata/profiles/Default ISO Medium.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -233,7 +234,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Default.pp3 b/rtdata/profiles/Default.pp3
index 1b570ff72..2a2a976d5 100644
--- a/rtdata/profiles/Default.pp3
+++ b/rtdata/profiles/Default.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -60,7 +60,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -237,7 +238,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Equilibrated.pp3 b/rtdata/profiles/Equilibrated.pp3
index 1d0944fcc..282d12cc5 100644
--- a/rtdata/profiles/Equilibrated.pp3
+++ b/rtdata/profiles/Equilibrated.pp3
@@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.0
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
diff --git a/rtdata/profiles/Faded/Amber/Faded Amber 1 TM Bright.pp3 b/rtdata/profiles/Faded/Amber/Faded Amber 1 TM Bright.pp3
index aa5fee82e..866043ce0 100644
--- a/rtdata/profiles/Faded/Amber/Faded Amber 1 TM Bright.pp3
+++ b/rtdata/profiles/Faded/Amber/Faded Amber 1 TM Bright.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -101,7 +102,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Amber/Faded Amber 1 TM.pp3 b/rtdata/profiles/Faded/Amber/Faded Amber 1 TM.pp3
index 10be1edc2..7e0aaecc5 100644
--- a/rtdata/profiles/Faded/Amber/Faded Amber 1 TM.pp3
+++ b/rtdata/profiles/Faded/Amber/Faded Amber 1 TM.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -104,7 +105,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Amber/Faded Amber 1.pp3 b/rtdata/profiles/Faded/Amber/Faded Amber 1.pp3
index 9aa69acba..9833f4a5a 100644
--- a/rtdata/profiles/Faded/Amber/Faded Amber 1.pp3
+++ b/rtdata/profiles/Faded/Amber/Faded Amber 1.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -103,7 +104,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Blue/Faded Blue 1 TM Bright.pp3 b/rtdata/profiles/Faded/Blue/Faded Blue 1 TM Bright.pp3
index 8fae7417c..a63920e4d 100644
--- a/rtdata/profiles/Faded/Blue/Faded Blue 1 TM Bright.pp3
+++ b/rtdata/profiles/Faded/Blue/Faded Blue 1 TM Bright.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -102,7 +103,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Blue/Faded Blue 1 TM.pp3 b/rtdata/profiles/Faded/Blue/Faded Blue 1 TM.pp3
index 97ee400a4..39f3c034c 100644
--- a/rtdata/profiles/Faded/Blue/Faded Blue 1 TM.pp3
+++ b/rtdata/profiles/Faded/Blue/Faded Blue 1 TM.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -102,7 +103,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Blue/Faded Blue 1.pp3 b/rtdata/profiles/Faded/Blue/Faded Blue 1.pp3
index 7af0a8888..cf5e5c9ad 100644
--- a/rtdata/profiles/Faded/Blue/Faded Blue 1.pp3
+++ b/rtdata/profiles/Faded/Blue/Faded Blue 1.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -103,7 +104,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Blue/Faded Blue Pink TM.pp3 b/rtdata/profiles/Faded/Blue/Faded Blue Pink TM.pp3
index c50ff066b..820585957 100644
--- a/rtdata/profiles/Faded/Blue/Faded Blue Pink TM.pp3
+++ b/rtdata/profiles/Faded/Blue/Faded Blue Pink TM.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -103,7 +104,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Blue/Faded Blue Pink.pp3 b/rtdata/profiles/Faded/Blue/Faded Blue Pink.pp3
index 104d12563..315883d34 100644
--- a/rtdata/profiles/Faded/Blue/Faded Blue Pink.pp3
+++ b/rtdata/profiles/Faded/Blue/Faded Blue Pink.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -102,7 +103,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Chocolate/Faded Chocolate 1 TM Bright.pp3 b/rtdata/profiles/Faded/Chocolate/Faded Chocolate 1 TM Bright.pp3
index e52b7b9c9..a314e32dc 100644
--- a/rtdata/profiles/Faded/Chocolate/Faded Chocolate 1 TM Bright.pp3
+++ b/rtdata/profiles/Faded/Chocolate/Faded Chocolate 1 TM Bright.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -104,7 +105,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Chocolate/Faded Chocolate 2 TM Bright.pp3 b/rtdata/profiles/Faded/Chocolate/Faded Chocolate 2 TM Bright.pp3
index ec30bd464..3950d03ea 100644
--- a/rtdata/profiles/Faded/Chocolate/Faded Chocolate 2 TM Bright.pp3
+++ b/rtdata/profiles/Faded/Chocolate/Faded Chocolate 2 TM Bright.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -100,7 +101,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Golden/Faded Golden 1.pp3 b/rtdata/profiles/Faded/Golden/Faded Golden 1.pp3
index 81b683d1e..46e1344f6 100644
--- a/rtdata/profiles/Faded/Golden/Faded Golden 1.pp3
+++ b/rtdata/profiles/Faded/Golden/Faded Golden 1.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -104,7 +105,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Golden/Faded Golden 2.pp3 b/rtdata/profiles/Faded/Golden/Faded Golden 2.pp3
index 3efa0e4d3..2937bc26e 100644
--- a/rtdata/profiles/Faded/Golden/Faded Golden 2.pp3
+++ b/rtdata/profiles/Faded/Golden/Faded Golden 2.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -104,7 +105,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Green/Faded Green 1 TM Bright.pp3 b/rtdata/profiles/Faded/Green/Faded Green 1 TM Bright.pp3
index 51c9b14cc..31bde3b04 100644
--- a/rtdata/profiles/Faded/Green/Faded Green 1 TM Bright.pp3
+++ b/rtdata/profiles/Faded/Green/Faded Green 1 TM Bright.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -103,7 +104,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Green/Faded Green 1 TM.pp3 b/rtdata/profiles/Faded/Green/Faded Green 1 TM.pp3
index 51f0b54dd..210b5bbec 100644
--- a/rtdata/profiles/Faded/Green/Faded Green 1 TM.pp3
+++ b/rtdata/profiles/Faded/Green/Faded Green 1 TM.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -104,7 +105,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Green/Faded Green 1.pp3 b/rtdata/profiles/Faded/Green/Faded Green 1.pp3
index 09f7eaa06..5fabe8723 100644
--- a/rtdata/profiles/Faded/Green/Faded Green 1.pp3
+++ b/rtdata/profiles/Faded/Green/Faded Green 1.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -104,7 +105,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Green/Faded Green 2.pp3 b/rtdata/profiles/Faded/Green/Faded Green 2.pp3
index 89e053160..002039e85 100644
--- a/rtdata/profiles/Faded/Green/Faded Green 2.pp3
+++ b/rtdata/profiles/Faded/Green/Faded Green 2.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -104,7 +105,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Green/Faded Green 3.pp3 b/rtdata/profiles/Faded/Green/Faded Green 3.pp3
index d563887e9..032e3d2de 100644
--- a/rtdata/profiles/Faded/Green/Faded Green 3.pp3
+++ b/rtdata/profiles/Faded/Green/Faded Green 3.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -103,7 +104,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Neutral/Faded Neutral TM.pp3 b/rtdata/profiles/Faded/Neutral/Faded Neutral TM.pp3
index fa28bde7b..0dcac5ba3 100644
--- a/rtdata/profiles/Faded/Neutral/Faded Neutral TM.pp3
+++ b/rtdata/profiles/Faded/Neutral/Faded Neutral TM.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -103,7 +104,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Neutral/Faded Neutral.pp3 b/rtdata/profiles/Faded/Neutral/Faded Neutral.pp3
index aeae623c3..478d8dde3 100644
--- a/rtdata/profiles/Faded/Neutral/Faded Neutral.pp3
+++ b/rtdata/profiles/Faded/Neutral/Faded Neutral.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -103,7 +104,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Purple/Faded Purple 1 TM Bright.pp3 b/rtdata/profiles/Faded/Purple/Faded Purple 1 TM Bright.pp3
index 90f92a18f..e4b26a868 100644
--- a/rtdata/profiles/Faded/Purple/Faded Purple 1 TM Bright.pp3
+++ b/rtdata/profiles/Faded/Purple/Faded Purple 1 TM Bright.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -101,7 +102,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Purple/Faded Purple 1 TM.pp3 b/rtdata/profiles/Faded/Purple/Faded Purple 1 TM.pp3
index 3f8a6c4b1..e67d6dac5 100644
--- a/rtdata/profiles/Faded/Purple/Faded Purple 1 TM.pp3
+++ b/rtdata/profiles/Faded/Purple/Faded Purple 1 TM.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -105,7 +106,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Purple/Faded Purple 1.pp3 b/rtdata/profiles/Faded/Purple/Faded Purple 1.pp3
index 364278604..5531d95c4 100644
--- a/rtdata/profiles/Faded/Purple/Faded Purple 1.pp3
+++ b/rtdata/profiles/Faded/Purple/Faded Purple 1.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -104,7 +105,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Purple/Faded Purple 2 TM.pp3 b/rtdata/profiles/Faded/Purple/Faded Purple 2 TM.pp3
index 28caa9748..88a5429a0 100644
--- a/rtdata/profiles/Faded/Purple/Faded Purple 2 TM.pp3
+++ b/rtdata/profiles/Faded/Purple/Faded Purple 2 TM.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -105,7 +106,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Purple/Faded Purple 2.pp3 b/rtdata/profiles/Faded/Purple/Faded Purple 2.pp3
index 88fd51d5d..6a4f216db 100644
--- a/rtdata/profiles/Faded/Purple/Faded Purple 2.pp3
+++ b/rtdata/profiles/Faded/Purple/Faded Purple 2.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -105,7 +106,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Teal/Faded Teal Orange TM Bright.pp3 b/rtdata/profiles/Faded/Teal/Faded Teal Orange TM Bright.pp3
index cbaf15913..89f4d989d 100644
--- a/rtdata/profiles/Faded/Teal/Faded Teal Orange TM Bright.pp3
+++ b/rtdata/profiles/Faded/Teal/Faded Teal Orange TM Bright.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -100,7 +101,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Teal/Faded Teal Orange TM.pp3 b/rtdata/profiles/Faded/Teal/Faded Teal Orange TM.pp3
index 7dd314884..87dcaab70 100644
--- a/rtdata/profiles/Faded/Teal/Faded Teal Orange TM.pp3
+++ b/rtdata/profiles/Faded/Teal/Faded Teal Orange TM.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -100,7 +101,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Teal/Faded Teal Orange.pp3 b/rtdata/profiles/Faded/Teal/Faded Teal Orange.pp3
index d4aa668fa..b8adbd764 100644
--- a/rtdata/profiles/Faded/Teal/Faded Teal Orange.pp3
+++ b/rtdata/profiles/Faded/Teal/Faded Teal Orange.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -100,7 +101,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Warm/Faded Warm 1 TM Bright.pp3 b/rtdata/profiles/Faded/Warm/Faded Warm 1 TM Bright.pp3
index 1b9d01bbd..e9c189922 100644
--- a/rtdata/profiles/Faded/Warm/Faded Warm 1 TM Bright.pp3
+++ b/rtdata/profiles/Faded/Warm/Faded Warm 1 TM Bright.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -106,7 +107,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Warm/Faded Warm 1 TM.pp3 b/rtdata/profiles/Faded/Warm/Faded Warm 1 TM.pp3
index a38497c43..52aeb18df 100644
--- a/rtdata/profiles/Faded/Warm/Faded Warm 1 TM.pp3
+++ b/rtdata/profiles/Faded/Warm/Faded Warm 1 TM.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -106,7 +107,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Warm/Faded Warm 1.pp3 b/rtdata/profiles/Faded/Warm/Faded Warm 1.pp3
index e13e77577..b9ebe3ddc 100644
--- a/rtdata/profiles/Faded/Warm/Faded Warm 1.pp3
+++ b/rtdata/profiles/Faded/Warm/Faded Warm 1.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -106,7 +107,7 @@ Method=Blend
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Warm/Faded Warm 2.pp3 b/rtdata/profiles/Faded/Warm/Faded Warm 2.pp3
index 72eb2a34a..2dc70cc22 100644
--- a/rtdata/profiles/Faded/Warm/Faded Warm 2.pp3
+++ b/rtdata/profiles/Faded/Warm/Faded Warm 2.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -104,7 +105,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Faded/Warm/Faded Warm 3.pp3 b/rtdata/profiles/Faded/Warm/Faded Warm 3.pp3
index 2f568f4f9..47a3aa24d 100644
--- a/rtdata/profiles/Faded/Warm/Faded Warm 3.pp3
+++ b/rtdata/profiles/Faded/Warm/Faded Warm 3.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Vibrance]
Enabled=false
@@ -104,7 +105,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/High-Key.pp3 b/rtdata/profiles/High-Key.pp3
index f2f1e0c31..aa83a6248 100644
--- a/rtdata/profiles/High-Key.pp3
+++ b/rtdata/profiles/High-Key.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -233,7 +234,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Natural 1.pp3 b/rtdata/profiles/Natural 1.pp3
index 27d30a3e0..ca386816a 100644
--- a/rtdata/profiles/Natural 1.pp3
+++ b/rtdata/profiles/Natural 1.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -233,7 +234,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Natural 2.pp3 b/rtdata/profiles/Natural 2.pp3
index 745698800..a890766c8 100644
--- a/rtdata/profiles/Natural 2.pp3
+++ b/rtdata/profiles/Natural 2.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=true
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -234,7 +235,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Pop/Pop 1.pp3 b/rtdata/profiles/Pop/Pop 1.pp3
index db75468ae..4766024b9 100644
--- a/rtdata/profiles/Pop/Pop 1.pp3
+++ b/rtdata/profiles/Pop/Pop 1.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -233,7 +234,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Pop/Pop 2 L.pp3 b/rtdata/profiles/Pop/Pop 2 L.pp3
index bedf2a2f2..54f12dc7d 100644
--- a/rtdata/profiles/Pop/Pop 2 L.pp3
+++ b/rtdata/profiles/Pop/Pop 2 L.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -233,7 +234,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Pop/Pop 3 Skin.pp3 b/rtdata/profiles/Pop/Pop 3 Skin.pp3
index a5e520676..e81fc4a94 100644
--- a/rtdata/profiles/Pop/Pop 3 Skin.pp3
+++ b/rtdata/profiles/Pop/Pop 3 Skin.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -233,7 +234,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Pop/Pop 4 BW.pp3 b/rtdata/profiles/Pop/Pop 4 BW.pp3
index e8e122c7b..918f85d62 100644
--- a/rtdata/profiles/Pop/Pop 4 BW.pp3
+++ b/rtdata/profiles/Pop/Pop 4 BW.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -233,7 +234,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Portrait/Portrait Lejto.pp3 b/rtdata/profiles/Portrait/Portrait Lejto.pp3
index 57a5af7ce..eb7d3c9d3 100644
--- a/rtdata/profiles/Portrait/Portrait Lejto.pp3
+++ b/rtdata/profiles/Portrait/Portrait Lejto.pp3
@@ -31,7 +31,8 @@ aCurve=0;
bCurve=1;0;0;1;1;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -53,7 +54,7 @@ DeconvIterations=30
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=Adobe RGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Portrait/Portrait Smooth.pp3 b/rtdata/profiles/Portrait/Portrait Smooth.pp3
index 165d3c2b1..e95fae63b 100644
--- a/rtdata/profiles/Portrait/Portrait Smooth.pp3
+++ b/rtdata/profiles/Portrait/Portrait Smooth.pp3
@@ -1,6 +1,6 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=false
@@ -58,7 +58,8 @@ aCurve=0;
bCurve=0;
ccCurve=1;0;0;0.254;0.300;1;1;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=true
@@ -230,7 +231,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 b/rtdata/profiles/Skintones/Skintones - Natural TM.pp3
index 583ffb6e9..eb40c4863 100644
--- a/rtdata/profiles/Skintones/Skintones - Natural TM.pp3
+++ b/rtdata/profiles/Skintones/Skintones - Natural TM.pp3
@@ -1,7 +1,7 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=false
@@ -218,7 +219,7 @@ Height=2836
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=Adobe RGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Skintones/Skintones - Natural.pp3 b/rtdata/profiles/Skintones/Skintones - Natural.pp3
index 5063ee2fd..eb4f0daf6 100644
--- a/rtdata/profiles/Skintones/Skintones - Natural.pp3
+++ b/rtdata/profiles/Skintones/Skintones - Natural.pp3
@@ -1,7 +1,7 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=false
@@ -218,7 +219,7 @@ Height=2836
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=Adobe RGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3
index 8266a0b2e..0dc9c1ffe 100644
--- a/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3
+++ b/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3
@@ -1,7 +1,7 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=false
@@ -218,7 +219,7 @@ Height=2836
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=Adobe RGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM.pp3
index e02ec7c6d..66b0eca1a 100644
--- a/rtdata/profiles/Skintones/Skintones - Pale TM.pp3
+++ b/rtdata/profiles/Skintones/Skintones - Pale TM.pp3
@@ -1,7 +1,7 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=false
@@ -219,7 +220,7 @@ Height=2836
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=Adobe RGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Skintones/Skintones - Pale.pp3 b/rtdata/profiles/Skintones/Skintones - Pale.pp3
index 9d486c008..900fa913b 100644
--- a/rtdata/profiles/Skintones/Skintones - Pale.pp3
+++ b/rtdata/profiles/Skintones/Skintones - Pale.pp3
@@ -1,7 +1,7 @@
[Version]
-AppVersion=4.0.11.20
-Version=312
+AppVersion=4.0.11.151
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=false
@@ -218,7 +219,7 @@ Height=900
InputProfile=(cameraICC)
ToneCurve=false
BlendCMSMatrix=true
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=sRGB
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 b/rtdata/profiles/Skintones/Skintones - Studio TM.pp3
index d747f8cb8..b49e66aef 100644
--- a/rtdata/profiles/Skintones/Skintones - Studio TM.pp3
+++ b/rtdata/profiles/Skintones/Skintones - Studio TM.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=false
@@ -209,7 +210,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Skintones/Skintones - Studio.pp3 b/rtdata/profiles/Skintones/Skintones - Studio.pp3
index 0daf9936b..07bc9e31f 100644
--- a/rtdata/profiles/Skintones/Skintones - Studio.pp3
+++ b/rtdata/profiles/Skintones/Skintones - Studio.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=false
@@ -209,7 +210,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3
index ac239ae63..4907e406d 100644
--- a/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3
+++ b/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=false
@@ -210,7 +211,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3
index e266e176b..9d9cead32 100644
--- a/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3
+++ b/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3
@@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
-Version=312
+Version=313
[Exposure]
Auto=false
@@ -59,7 +59,8 @@ aCurve=0;
bCurve=0;
ccCurve=0;
chCurve=0;
-LcCurve=0;
+LcCurve=0;
+ClCurve=0;
[Sharpening]
Enabled=false
@@ -210,7 +211,7 @@ Enabled=false
ToneCurve=false
BlendCMSMatrix=false
-PreferredProfile=true
+DCPIlluminant=0
WorkingProfile=ProPhoto
OutputProfile=RT_sRGB
Gammafree=default
diff --git a/rtengine/curves.cc b/rtengine/curves.cc
index 24f834915..a4f85a878 100644
--- a/rtengine/curves.cc
+++ b/rtengine/curves.cc
@@ -360,14 +360,51 @@ void CurveFactory::curveBW (
if (tcurve) delete tcurve;
}
+// add curve Lab : C=f(L)
+void CurveFactory::curveCL ( bool & clcutili,const std::vector& clcurvePoints, LUTf & clCurve, LUTu & histogramcl, LUTu & outBeforeCLurveHistogram,int skip){
+ bool needed;
+ DiagonalCurve* dCurve = NULL;
+ LUTf dCcurve(65536,0);
+
+ float val;
+ for (int i=0; i<48000; i++) { //# 32768*1.414 approximation maxi for chroma
+ dCcurve[i] = (float)i / 47999.0;
+ }
+
+ if (outBeforeCLurveHistogram)
+ outBeforeCLurveHistogram.clear();
+ bool histNeededCL = false;
-
+ needed = false;
+ if (!clcurvePoints.empty() && clcurvePoints[0]!=0) {
+ dCurve = new DiagonalCurve (clcurvePoints, CURVES_MIN_POLY_POINTS/skip);
+ if (outBeforeCLurveHistogram)
+ histNeededCL = true;
+
+ if (dCurve && !dCurve->isIdentity())
+ {needed = true;clcutili=true;}
+ }
+ for (int i=0; i<=48000; i++) {//32768*1.414 + ...
+ float val;
+ if (histNeededCL) {
+ float hval = dCcurve[i];
+ int hi = (int)(255.0*CLIPD(hval)); //
+ outBeforeCLurveHistogram[hi] += histogramcl[i] ;
+ }
+ }
+
+ fillCurveArray(dCurve, clCurve, skip, needed);
+ if (dCurve) {
+ delete dCurve;
+ dCurve = NULL;
+ }
+}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void CurveFactory::complexsgnCurve ( bool & autili, bool & butili, bool & ccutili, bool & cclutili, double saturation, double rstprotection,
const std::vector& acurvePoints, const std::vector& bcurvePoints,const std::vector& cccurvePoints,
const std::vector& lccurvePoints, LUTf & aoutCurve, LUTf & boutCurve, LUTf & satCurve, LUTf & lhskCurve,
- LUTu & histogramC, LUTu & histogramCroppedC, LUTu & outBeforeCCurveHistogram,//for chroma
+ LUTu & histogramC, LUTu & histogramLC, LUTu & histogramCroppedC, LUTu & outBeforeCCurveHistogram,LUTu & outBeforeLCurveHistogram, //for chroma
int skip) {
@@ -384,6 +421,11 @@ void CurveFactory::curveBW (
if (outBeforeCCurveHistogram)
outBeforeCCurveHistogram.clear();
bool histNeededC = false;
+
+ if (outBeforeLCurveHistogram)
+ outBeforeLCurveHistogram.clear();
+ bool histNeededLC = false;
+
//-----------------------------------------------------
needed = false;
@@ -447,16 +489,28 @@ void CurveFactory::curveBW (
needed = false;
if (!lccurvePoints.empty() && lccurvePoints[0]!=0) {
dCurve = new DiagonalCurve (lccurvePoints, CURVES_MIN_POLY_POINTS/skip);
+ if (outBeforeLCurveHistogram /*&& histogramCropped*/)
+ histNeededLC = true;
+
if (dCurve && !dCurve->isIdentity())
{needed = true;cclutili=true;}
}
+ for (int i=0; i<=48000; i++) {//32768*1.414 + ...
+ float val;
+ if (histNeededLC) {
+ float hval = dCcurve[i];
+ int hi = (int)(255.0*CLIPD(hval)); //
+ outBeforeLCurveHistogram[hi] += histogramLC[i] ;
+ }
+ }
+
+
fillCurveArray(dCurve, lhskCurve, skip, needed);
if (dCurve) {
delete dCurve;
dCurve = NULL;
}
-
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/rtengine/curves.h b/rtengine/curves.h
index 7db331b21..9157e2c6b 100644
--- a/rtengine/curves.h
+++ b/rtengine/curves.h
@@ -194,10 +194,12 @@ class CurveFactory {
ChMixerbw & customToneCurvebw1,
ChMixerbw & customToneCurvebw2,
int skip);
-
- static void complexsgnCurve ( bool & autili, bool & butili, bool & ccutili, bool & cclutili, double saturation, double rstprotection, const std::vector& acurvePoints,
- const std::vector& bcurvePoints,const std::vector& cccurvePoints,const std::vector& cclurvePoints, LUTf & aoutCurve, LUTf & boutCurve, LUTf & satCurve, LUTf & lhskCurve,
- LUTu & histogramC, LUTu & histogramCroppedC, LUTu & outBeforeCCurveHistogramC,//for chroma
+
+ static void curveCL ( bool & clcutili, const std::vector& clcurvePoints, LUTf & clCurve, LUTu & histogramcl, LUTu & outBeforeCLurveHistogram, int skip);
+
+ static void complexsgnCurve ( bool & autili, bool & butili, bool & ccutili, bool & clcutili, double saturation, double rstprotection, const std::vector& acurvePoints,
+ const std::vector& bcurvePoints,const std::vector& cccurvePoints,const std::vector& lccurvePoints, LUTf & aoutCurve, LUTf & boutCurve, LUTf & satCurve, LUTf & lhskCurve,
+ LUTu & histogramC, LUTu & histogramLC, LUTu & histogramCroppedC, LUTu & outBeforeCCurveHistogram,LUTu & outBeforeLCurveHistogram,///for chroma
int skip=1);
static void complexLCurve (double br, double contr, const std::vector& curvePoints, LUTu & histogram, LUTu & histogramCropped,
LUTf & outCurve, LUTu & outBeforeCCurveHistogram, int skip, bool & utili);
diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc
index 38db2454b..3701a9cba 100644
--- a/rtengine/dcrop.cc
+++ b/rtengine/dcrop.cc
@@ -197,11 +197,12 @@ void Crop::update (int todo) {
bool autili=true;
bool butili=true;
bool ccutili=true;
+ bool clcutili=true;
bool cclutili=true;
LUTu dummy;
- parent->ipf.chromiLuminanceCurve (1,labnCrop, labnCrop, parent->chroma_acurve, parent->chroma_bcurve, parent->satcurve, parent->lhskcurve, parent->lumacurve, utili, autili, butili, ccutili,cclutili, dummy);
+ parent->ipf.chromiLuminanceCurve (1,labnCrop, labnCrop, parent->chroma_acurve, parent->chroma_bcurve, parent->satcurve, parent->lhskcurve, parent->clcurve, parent->lumacurve, utili, autili, butili, ccutili,cclutili, clcutili, dummy, dummy, dummy);
parent->ipf.vibrance (labnCrop);
if((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) parent->ipf.EPDToneMap(labnCrop,5,1);
//parent->ipf.EPDToneMap(labnCrop, 5, 1); //Go with much fewer than normal iterates for fast redisplay.
diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc
index 377e72317..5dfb4b35e 100644
--- a/rtengine/improccoordinator.cc
+++ b/rtengine/improccoordinator.cc
@@ -42,6 +42,7 @@ ImProcCoordinator::ImProcCoordinator ()
chroma_bcurve(65536,0),
satcurve(65536,0),
lhskcurve(65536,0),
+ clcurve(65536,0),
vhist16(65536),
lhist16(65536), lhist16Cropped(65536),
@@ -49,8 +50,8 @@ ImProcCoordinator::ImProcCoordinator ()
lhist16CCAM(65536), lhist16CroppedCCAM(65536),
lhist16CCAMAF(65536), lhist16ClabAF(65536),
histCropped(65536),
- lhist16Clad(65536),lhist16CroppedClad(65536),
-
+ lhist16Clad(65536),lhist16CroppedClad(65536),lhist16CLlad(65536),
+ lhist16LClad(65536), lhist16LLClad(65536),
histRed(256), histRedRaw(256),
histGreen(256), histGreenRaw(256),
histBlue(256), histBlueRaw(256),
@@ -58,6 +59,9 @@ ImProcCoordinator::ImProcCoordinator ()
histToneCurve(256),
histLCurve(256),
histCCurve(256),
+ histCLurve(256),
+ histLLCurve(256),
+
histLCAM(256),
histCCAM(256),
histClad(256),
@@ -314,7 +318,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) {
int x1, y1, x2, y2, pos, poscc;
params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2);
lhist16.clear(); lhist16Cropped.clear();
- lhist16Clad.clear(); lhist16CroppedClad.clear();
+ lhist16Clad.clear(); lhist16CroppedClad.clear();lhist16CLlad.clear();lhist16LLClad.clear();
lhist16ClabAF.clear();
for (int x=0; xCopyFrom(oprevl);
progress ("Applying Color Boost...",100*readyphase/numofphases);
- ipf.chromiLuminanceCurve (pW,nprevl, nprevl, chroma_acurve, chroma_bcurve, satcurve,lhskcurve, lumacurve, utili, autili, butili, ccutili,cclutili, histCCurve);
+ ipf.chromiLuminanceCurve (pW,nprevl, nprevl, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili,cclutili,clcutili, histCCurve, histCLurve, histLLCurve);
ipf.vibrance(nprevl);
if((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) ipf.EPDToneMap(nprevl,5,1);
// for all treatments Defringe, Sharpening, Contrast detail , Microcontrast they are activated if "CIECAM" function are disabled
@@ -505,7 +513,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) {
if (hListener) {
updateLRGBHistograms ();
- hListener->histogramChanged (histRed, histGreen, histBlue, histLuma, histToneCurve, histLCurve,histCCurve, histLCAM, histCCAM, histRedRaw, histGreenRaw, histBlueRaw, histChroma);
+ hListener->histogramChanged (histRed, histGreen, histBlue, histLuma, histToneCurve, histLCurve,histCCurve, histCLurve, histLLCurve, histLCAM, histCCAM, histRedRaw, histGreenRaw, histBlueRaw, histChroma);
}
}
@@ -614,7 +622,6 @@ void ImProcCoordinator::updateLRGBHistograms () {
histBlue[b]++;
}
}
-
histLuma.clear();
histChroma.clear();
for (int i=y1; iW;
int H = lold->H;
// lhskcurve.dump("lh_curve");
@@ -2832,7 +2832,12 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
}//do not use "Munsell" if Chcurve not used
}
LUTf dCcurve(65536,0);
+ LUTf dLcurve(65536,0);
+
LUTu hist16Clad(65536);
+ LUTu hist16CLlad(65536);
+ LUTu hist16LLClad(65536);
+
bool chrop=false;
float val;
//preparate for histograms CIECAM
@@ -2842,7 +2847,15 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
val = (double)i / 47999.0;
dCcurve[i] = CLIPD(val);
}
+ for (int i=0; i<65535; i++) { //# 32768*1.414 approximation maxi for chroma
+ val = (double)i / 65534.0;
+ dLcurve[i] = CLIPD(val);
+ }
+
hist16Clad.clear();
+ hist16CLlad.clear();
+ hist16LLClad.clear();
+
}
#ifdef _DEBUG
MyTime t1e,t2e, t3e, t4e;
@@ -2891,6 +2904,7 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
//if(bwToning) printf("OK bwto\n"); else printf("pas de bw\n");
bool LCredsk = params->labCurve.lcredsk;
bool ccut = ccutili;
+ bool clut = clcutili;
double rstprotection = 100.-params->labCurve.rstprotection; // Red and Skin Tones Protection
// avoid color shift is disabled when bwToning is activated and enabled if gamut is true in colorappearanace
// bool avoidColorShift = (params->labCurve.avoidcolorshift || params->colorappearance.gamut )&& !bwToning ;
@@ -2900,15 +2914,15 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
bool gamutLch = settings->gamutLch;
// only if user activate Lab adjustements
if (avoidColorShift) {
- if(autili || butili || ccutili || cclutili || chutili || utili || chromaticity)
+ if(autili || butili || ccutili || cclutili || chutili || clcutili || utili || chromaticity)
Color::LabGamutMunsell(lold, Lold, Cold, /*corMunsell*/true, /*lumaMuns*/false, params->hlrecovery.enabled, /*gamut*/true, params->icm.working, multiThread);
}
#ifdef _DEBUG
-#pragma omp parallel default(shared) firstprivate(highlight, ccut, chromaticity, bwToning, rstprotection, avoidColorShift, LCredsk, protectRed, protectRedH, gamutLch, lold, lnew, MunsDebugInfo, pW) if (multiThread)
+#pragma omp parallel default(shared) firstprivate(highlight, ccut, clut, chromaticity, bwToning, rstprotection, avoidColorShift, LCredsk, protectRed, protectRedH, gamutLch, lold, lnew, MunsDebugInfo, pW) if (multiThread)
#else
-#pragma omp parallel default(shared) firstprivate(highlight, ccut, chromaticity, bwToning, rstprotection, avoidColorShift, LCredsk, protectRed, protectRedH, gamutLch, lold, lnew, pW) if (multiThread)
+#pragma omp parallel default(shared) firstprivate(highlight, ccut, clut, chromaticity, bwToning, rstprotection, avoidColorShift, LCredsk, protectRed, protectRedH, gamutLch, lold, lnew, pW) if (multiThread)
#endif
{
@@ -2946,7 +2960,7 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
float chromaChfactor=1.0f;
float atmp = acurve[lold->a[i][j]+32768.0f]-32768.0f;// curves Lab a
float btmp = bcurve[lold->b[i][j]+32768.0f]-32768.0f;// curves Lab b
- int poscc,posp;
+ int poscc,posp,posl;
// calculate C=f(H)
if (chutili) {
@@ -3012,11 +3026,41 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
btmp *= factor;
}
- //update histogram C
- if(pW!=1){//only with improccoordinator
- posp=CLIP((int)sqrt((atmp*atmp + btmp*btmp)));
- hist16Clad[posp]++;
- }
+ if (!bwToning && clut) { // begin C=f(L)
+ float factorskin,factorsat,factor,factorskinext,interm;
+ float chroma = sqrt(SQR(atmp)+SQR(btmp)+0.001f);
+ float chromaCfactor=(clcurve[Lprov1*327.68f])/(Lprov1*327.68f);//apply C=f(L)
+ float curf=0.7f;//empirical coeff because curve is more progressive
+ float scale = 100.0f/100.1f;//reduction in normal zone for curve C
+ float scaleext=1.0f;//reduction in transition zone for curve C
+ float protect_redcur,protect_redhcur;//perhaps the same value than protect_red and protect_redh
+ float deltaHH;//HH value transition for C curve
+ protect_redcur=curf*float(protectRed);//default=60 chroma: one can put more or less if necessary...in 'option' 40...160==> curf =because curve is more progressive
+ if(protect_redcur < 20.0f) protect_redcur=20.0; // avoid too low value
+ if(protect_redcur > 180.0f) protect_redcur=180.0; // avoid too high value
+ protect_redhcur=curf*float(protectRedH);//default=0.4 rad : one can put more or less if necessary...in 'option' 0.2 ..1.0 ==> curf =because curve is more progressive
+ if(protect_redhcur<0.1f) protect_redhcur=0.1f;//avoid divide by 0 and negatives values
+ if(protect_redhcur>1.0f) protect_redhcur=1.0f;//avoid too big values
+
+ deltaHH=protect_redhcur;//transition hue
+ if(chromaCfactor>0.0) Color::scalered ( rstprotection, chromaCfactor, 0.0, HH, deltaHH, scale, scaleext);//1.0
+ if(chromaCfactor>1.0) {
+ interm=(chromaCfactor-1.0f)*100.0f;
+ factorskin= 1.0f+(interm*scale)/100.0f;
+ factorskinext=1.0f+(interm*scaleext)/100.0f;
+ }
+ else {
+ factorskin= chromaCfactor; // +(1.0f-chromaCfactor)*scale;
+ factorskinext= chromaCfactor ; //+(1.0f-chromaCfactor)*scaleext;
+ }
+
+ factorsat=chromaCfactor;
+ factor=factorsat;
+ Color::transitred ( HH, Chprov1, dred, factorskin, protect_redcur, factorskinext, deltaHH, factorsat, factor);
+ atmp *= factor;
+ btmp *= factor;
+ }
+ // end C=f(L)
// I have placed C=f(C) after all C treatments to assure maximum amplitude of "C"
if (!bwToning && ccut) {
@@ -3057,6 +3101,14 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
btmp *= factor;
}
// end chroma C=f(C)
+
+ //update histogram C
+ if(pW!=1){//only with improccoordinator
+ posp=CLIP((int)sqrt((atmp*atmp + btmp*btmp)));
+ hist16Clad[posp]++;
+ hist16CLlad[posp]++;
+
+ }
if (!bwToning) { //apply curve L=f(C) for skin and rd...but also for extended color ==> near green and blue (see 'curf')
@@ -3087,6 +3139,11 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
Lc=(Lc-1.0f)*zz+1.0f;//reduct action
Lprov1*=Lc;//adjust luminance
}
+ //update histo L
+ if(pW!=1){//only with improccoordinator
+ posl=CLIP((int(Lprov1*327.68f)));
+ hist16LLClad[posl]++;
+ }
Chprov1 = sqrt(SQR(atmp/327.68f)+SQR(btmp/327.68f));
@@ -3125,7 +3182,7 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
Color::Yuv2Lab(Y,u,v,lnew->L[i][j],lnew->a[i][j],lnew->b[i][j], wp);
}
- if (utili || autili || butili || ccut || cclutili || chutili || chromaticity) {
+ if (utili || autili || butili || ccut || clut || cclutili || chutili || clcutili || chromaticity) {
float correctionHue=0.0f; // Munsell's correction
float correctlum=0.0f;
@@ -3165,13 +3222,22 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
//update histogram C with data chromaticity and not with CC curve
if(pW!=1){//only with improccoordinator
for (int i=0; i<=48000; i++) {//32768*1.414 + ...
- float val;
if (chrop) {
float hval = dCcurve[i];
int hi = (int)(255.0*CLIPD(hval)); //
histCCurve[hi] += hist16Clad[i] ;
+ histCLurve[hi] += hist16CLlad[i] ;
}
}
+ //update histogram L with data luminance
+ for (int i=0; i<=65535; i++) {
+ if (chrop) {
+ float hlval = dLcurve[i];
+ int hli = (int)(255.0*CLIPD(hlval));
+ histLLCurve[hli] += hist16LLClad[i] ;
+ }
+ }
+
}
#ifdef _DEBUG
@@ -3186,7 +3252,7 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
delete [] Lold;
delete [] Cold;
- if (chutili) delete chCurve;
+ if (chCurve) delete chCurve;
}
diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h
index dbe600b6c..c6ff9493e 100644
--- a/rtengine/improcfun.h
+++ b/rtengine/improcfun.h
@@ -202,7 +202,7 @@ class ImProcFunctions {
void luminanceCurve (LabImage* lold, LabImage* lnew, LUTf &curve);
void ciecam_02float (CieImage* ncie, float adap, int begh, int endh, int pW, int pwb, LabImage* lab, const ProcParams* params , const ColorAppearance & customColCurve1, const ColorAppearance & customColCurve, const ColorAppearance & customColCurve3, LUTu &histLCAM, LUTu &histCCAM,int Iterates, int scale, float** buffer, bool execsharp, float &d);
void ciecam_02 (CieImage* ncie, double adap, int begh, int endh, int pW, int pwb, LabImage* lab, const ProcParams* params , const ColorAppearance & customColCurve1, const ColorAppearance & customColCurve, const ColorAppearance & customColCurve3, LUTu &histLCAM, LUTu &histCCAM,int Iterates, int scale, float** buffer, bool execsharp, double &d);
- void chromiLuminanceCurve (int pW, LabImage* lold, LabImage* lnew, LUTf &acurve, LUTf &bcurve, LUTf & satcurve,LUTf & satclcurve, LUTf &curve, bool utili, bool autili, bool butili, bool ccutili, bool cclutili, LUTu &histCCurve);
+ void chromiLuminanceCurve (int pW, LabImage* lold, LabImage* lnew, LUTf &acurve, LUTf &bcurve, LUTf & satcurve,LUTf & satclcurve, LUTf &clcurve, LUTf &curve, bool utili, bool autili, bool butili, bool ccutili, bool cclutili, bool clcutili, LUTu &histCCurve, LUTu &histCLurve, LUTu &histLCurve);
void vibrance (LabImage* lab);//Jacques' vibrance
void colorCurve (LabImage* lold, LabImage* lnew);
void sharpening (LabImage* lab, float** buffer);
diff --git a/rtengine/procevents.h b/rtengine/procevents.h
index 0bcd296f5..75dbdb4af 100644
--- a/rtengine/procevents.h
+++ b/rtengine/procevents.h
@@ -268,7 +268,8 @@ enum ProcEvent {
EvVignettingRadius=242,
EvVignettingStrenght=243,
EvVignettingCenter=244,
- NUMOFEVENTS=245
+ EvLCLCurve=245,
+ NUMOFEVENTS=246
};
}
#endif
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index 3ad9245d2..28ea390f1 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -166,6 +166,8 @@ void ProcParams::setDefaults () {
labCurve.chcurve.push_back(FCT_Linear);
labCurve.lccurve.clear ();
labCurve.lccurve.push_back(DCT_Linear);
+ labCurve.clcurve.clear ();
+ labCurve.clcurve.push_back(DCT_Linear);
rgbCurves.lumamode = false;
rgbCurves.rcurve.clear ();
@@ -684,6 +686,10 @@ int ProcParams::save (Glib::ustring fname, Glib::ustring fname2, bool fnameAbsol
Glib::ArrayHandle lccurve = labCurve.lccurve;
keyFile.set_double_list("Luminance Curve", "LcCurve", lccurve);
}
+ if (!pedited || pedited->labCurve.clcurve) {
+ Glib::ArrayHandle clcurve = labCurve.clcurve;
+ keyFile.set_double_list("Luminance Curve", "ClCurve", clcurve);
+ }
// save sharpening
if (!pedited || pedited->sharpening.enabled) keyFile.set_boolean ("Sharpening", "Enabled", sharpening.enabled);
@@ -1244,6 +1250,7 @@ if (keyFile.has_group ("Luminance Curve")) {
if (keyFile.has_key ("Luminance Curve", "ccCurve")) { labCurve.cccurve = keyFile.get_double_list ("Luminance Curve", "ccCurve"); if (pedited) pedited->labCurve.cccurve = true; }
if (keyFile.has_key ("Luminance Curve", "chCurve")) { labCurve.chcurve = keyFile.get_double_list ("Luminance Curve", "chCurve"); if (pedited) pedited->labCurve.chcurve = true; }
if (keyFile.has_key ("Luminance Curve", "LcCurve")) { labCurve.lccurve = keyFile.get_double_list ("Luminance Curve", "LcCurve"); if (pedited) pedited->labCurve.lccurve = true; }
+ if (keyFile.has_key ("Luminance Curve", "ClCurve")) { labCurve.clcurve = keyFile.get_double_list ("Luminance Curve", "ClCurve"); if (pedited) pedited->labCurve.clcurve = true; }
}
@@ -1747,6 +1754,7 @@ bool ProcParams::operator== (const ProcParams& other) {
&& labCurve.cccurve == other.labCurve.cccurve
&& labCurve.chcurve == other.labCurve.chcurve
&& labCurve.lccurve == other.labCurve.lccurve
+ && labCurve.clcurve == other.labCurve.clcurve
&& labCurve.brightness == other.labCurve.brightness
&& labCurve.contrast == other.labCurve.contrast
&& labCurve.chromaticity == other.labCurve.chromaticity
diff --git a/rtengine/procparams.h b/rtengine/procparams.h
index 20e12e6e1..28e140231 100644
--- a/rtengine/procparams.h
+++ b/rtengine/procparams.h
@@ -216,6 +216,7 @@ class LCurveParams {
std::vector cccurve;
std::vector chcurve;
std::vector lccurve;
+ std::vector clcurve;
int brightness;
int contrast;
int chromaticity;
diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc
index 453b7bcea..c7d3a4f9d 100644
--- a/rtengine/refreshmap.cc
+++ b/rtengine/refreshmap.cc
@@ -264,7 +264,8 @@ TRANSFORM, // EvPCVignetteFeather
TRANSFORM, // EvPCVignetteRoundness
TRANSFORM, // EvVignettingRadius,
TRANSFORM, // EvVignettingStrength,
-TRANSFORM // EvVignettingCenter,
+TRANSFORM, // EvVignettingCenter,
+LUMINANCECURVE // EvLCLCurve
//LUMINANCECURVE // EvCATsharpcie
diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h
index 1a7a9af91..e61f0e1c2 100644
--- a/rtengine/rtengine.h
+++ b/rtengine/rtengine.h
@@ -232,7 +232,7 @@ namespace rtengine {
* @param histBlue is the array of size 256 containing the histogram of the blue channel
* @param histLuma is the array of size 256 containing the histogram of the luminance channel
* other for curves backgrounds, histRAW is RAW without colors */
- virtual void histogramChanged (LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma, LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM,
+ virtual void histogramChanged (LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma, LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM,
LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw, LUTu & histChroma) {}
};
diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc
index fec6db7f4..b1bba2571 100644
--- a/rtengine/rtthumbnail.cc
+++ b/rtengine/rtthumbnail.cc
@@ -736,6 +736,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei
LUTf curve (65536);
LUTf satcurve (65536);
LUTf lhskcurve (65536);
+ LUTf clcurve (65536);
LUTf rCurve (65536);
LUTf gCurve (65536);
@@ -789,14 +790,19 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei
bool butili=false;
bool ccutili=false;
bool cclutili=false;
+ bool clcutili=false;
+
CurveFactory::complexLCurve (params.labCurve.brightness, params.labCurve.contrast, params.labCurve.lcurve,
hist16, hist16, curve, dummy, 16, utili);
- CurveFactory::complexsgnCurve (autili, butili, ccutili, cclutili, params.labCurve.chromaticity, params.labCurve.rstprotection,
- params.labCurve.acurve, params.labCurve.bcurve,params.labCurve.cccurve,params.labCurve.lccurve, curve1, curve2, satcurve,lhskcurve,
- hist16C, hist16C, dummy,
+
+ CurveFactory::curveCL(clcutili, params.labCurve.clcurve, clcurve, hist16C, dummy, 16);
+
+ CurveFactory::complexsgnCurve (autili, butili, ccutili, cclutili,params.labCurve.chromaticity, params.labCurve.rstprotection,
+ params.labCurve.acurve, params.labCurve.bcurve,params.labCurve.cccurve,params.labCurve.lccurve, curve1, curve2, satcurve,lhskcurve,
+ hist16C, hist16C, hist16C, dummy, dummy,
16);
//ipf.luminanceCurve (labView, labView, curve);
- ipf.chromiLuminanceCurve (1,labView, labView, curve1, curve2, satcurve,lhskcurve, curve, utili, autili, butili, ccutili,cclutili, dummy);
+ ipf.chromiLuminanceCurve (1,labView, labView, curve1, curve2, satcurve,lhskcurve, clcurve, curve, utili, autili, butili, ccutili,cclutili, clcutili, dummy, dummy, dummy);
ipf.vibrance(labView);
int begh = 0, endh = labView->H;
diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc
index 72a07a617..324dc8c72 100644
--- a/rtengine/simpleprocess.cc
+++ b/rtengine/simpleprocess.cc
@@ -178,6 +178,7 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
LUTf satcurve (65536,0);
LUTf lhskcurve (65536,0);
LUTf lumacurve(65536,0);
+ LUTf clcurve (65536,0);
LUTf rCurve (65536,0);
LUTf gCurve (65536,0);
@@ -245,14 +246,17 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
bool butili=false;
bool ccutili=false;
bool cclutili=false;
+ bool clcutili=false;
+
CurveFactory::complexLCurve (params.labCurve.brightness, params.labCurve.contrast, params.labCurve.lcurve,hist16, hist16, lumacurve, dummy, 1, utili);
+ CurveFactory::curveCL(clcutili, params.labCurve.clcurve, clcurve, hist16C, dummy, 1);
CurveFactory::complexsgnCurve (autili, butili, ccutili, cclutili, params.labCurve.chromaticity, params.labCurve.rstprotection,
params.labCurve.acurve, params.labCurve.bcurve, params.labCurve.cccurve,params.labCurve.lccurve,curve1, curve2, satcurve,lhskcurve,
- hist16C, hist16C,dummy,
+ hist16C, hist16C, hist16C, dummy,dummy,
1);
- ipf.chromiLuminanceCurve (1,labView, labView, curve1, curve2, satcurve,lhskcurve,lumacurve, utili, autili, butili, ccutili,cclutili,dummy);
+ ipf.chromiLuminanceCurve (1,labView, labView, curve1, curve2, satcurve,lhskcurve,clcurve, lumacurve, utili, autili, butili, ccutili,cclutili, clcutili, dummy, dummy, dummy);
if((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled))ipf.EPDToneMap(labView,5,1);
diff --git a/rtgui/colorappearance.cc b/rtgui/colorappearance.cc
index f222914f4..1bb797c38 100644
--- a/rtgui/colorappearance.cc
+++ b/rtgui/colorappearance.cc
@@ -1175,7 +1175,7 @@ void ColorAppearance::setBatchMode (bool batchMode) {
// curveEditorG3->setBatchMode (batchMode);
}
-void ColorAppearance::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma){
+void ColorAppearance::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma){
shape->updateBackgroundHistogram (histLCAM);
shape3->updateBackgroundHistogram (histCCAM);
diff --git a/rtgui/colorappearance.h b/rtgui/colorappearance.h
index 915ffbbdd..cbf55bcc9 100644
--- a/rtgui/colorappearance.h
+++ b/rtgui/colorappearance.h
@@ -133,7 +133,7 @@ class ColorAppearance : public Gtk::VBox, public AdjusterListener, public Foldab
void setAdjusterBehavior (bool degreeadd, bool adapscenadd, bool adaplumadd, bool badpixsladd, bool jlightadd, bool chromaadd, bool contrastadd, bool rstprotectionadd, bool qbrightadd, bool qcontrastadd, bool schromaadd, bool mchromaadd, bool colorhadd);
void trimValues (rtengine::procparams::ProcParams* pp);
- void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma);
+ void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma);
virtual void colorForValue (double valX, double valY, int callerId, ColorCaller *caller);
};
diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc
index 7378abc00..38f5af30c 100755
--- a/rtgui/editorpanel.cc
+++ b/rtgui/editorpanel.cc
@@ -1481,11 +1481,11 @@ void EditorPanel::tbBeforeLock_toggled () {
tbBeforeLock->get_active()? tbBeforeLock->set_image (*iBeforeLockON) : tbBeforeLock->set_image (*iBeforeLockOFF);
}
-void EditorPanel::histogramChanged (LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma, LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM,
+void EditorPanel::histogramChanged (LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma, LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM,
LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw , LUTu & histChroma) {
if (histogramPanel) histogramPanel->histogramChanged (histRed, histGreen, histBlue, histLuma, histRedRaw, histGreenRaw, histBlueRaw, histChroma);
- tpc->updateCurveBackgroundHistogram (histToneCurve, histLCurve, histCCurve, histLCAM, histCCAM, histRed, histGreen, histBlue, histLuma);
+ tpc->updateCurveBackgroundHistogram (histToneCurve, histLCurve, histCCurve, histCLurve, histLLCurve, histLCAM, histCCAM, histRed, histGreen, histBlue, histLuma);
}
bool EditorPanel::CheckSidePanelsVisibility() {
diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h
index bd47e87d4..5ab7319ab 100644
--- a/rtgui/editorpanel.h
+++ b/rtgui/editorpanel.h
@@ -164,7 +164,7 @@ class EditorPanel : public Gtk::VBox,
void historyBeforeLineChanged (const rtengine::procparams::ProcParams& params);
// HistogramListener
- void histogramChanged (LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma, LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM,
+ void histogramChanged (LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma, LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM,
LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw, LUTu & histChroma);
// event handlers
diff --git a/rtgui/labcurve.cc b/rtgui/labcurve.cc
index a66753a7d..a86ba382f 100644
--- a/rtgui/labcurve.cc
+++ b/rtgui/labcurve.cc
@@ -128,23 +128,41 @@ LCurve::LCurve () : Gtk::VBox(), FoldableToolPanel(this) {
chshape->setTooltip(M("TP_LABCURVE_CURVEEDITOR_CH_TOOLTIP"));
chshape->setCurveColorProvider(this, 1);
+ curveEditorG->newLine(); // ------------------------------------------------ 3rd line
+
lcshape = static_cast(curveEditorG->addCurve(CT_Diagonal, M("TP_LABCURVE_CURVEEDITOR_LC")));
lcshape->setTooltip(M("TP_LABCURVE_CURVEEDITOR_LC_TOOLTIP"));
// left and bottom bar uses the same caller id because the will display the same content
- lcshape->setBottomBarColorProvider(this, 3);
+ lcshape->setBottomBarColorProvider(this, 2);
lcshape->setRangeLabels(
M("TP_LABCURVE_CURVEEDITOR_CC_RANGE1"), M("TP_LABCURVE_CURVEEDITOR_CC_RANGE2"),
M("TP_LABCURVE_CURVEEDITOR_CC_RANGE3"), M("TP_LABCURVE_CURVEEDITOR_CC_RANGE4")
);
- lcshape->setRangeDefaultMilestones(0.15, 0.3, 0.6);
+ lcshape->setRangeDefaultMilestones(0.05, 0.2, 0.58);
+ clshape = static_cast(curveEditorG->addCurve(CT_Diagonal, M("TP_LABCURVE_CURVEEDITOR_CL")));
+ clshape->setTooltip(M("TP_LABCURVE_CURVEEDITOR_CL_TOOLTIP"));
+ clshape->setLeftBarColorProvider(this, 2);
+ clshape->setRangeDefaultMilestones(0.25, 0.5, 0.75);
+ milestones.push_back( GradientMilestone(0., 0., 0., 0.) );
+ milestones.push_back( GradientMilestone(1., 1., 1., 1.) );
+
+ clshape->setBottomBarBgGradient(milestones);
+
+
// Setting the gradient milestones
// from black to white
milestones.push_back( GradientMilestone(0., 0., 0., 0.) );
milestones.push_back( GradientMilestone(1., 1., 1., 1.) );
- lshape->setBottomBarBgGradient(milestones);
+ lshape->setBottomBarBgGradient(milestones);
lshape->setLeftBarBgGradient(milestones);
+ milestones.push_back( GradientMilestone(0., 0., 0., 0.) );
+ milestones.push_back( GradientMilestone(1., 1., 1., 1.) );
+ lcshape->setRangeDefaultMilestones(0.05, 0.2, 0.58);
+
+ lcshape->setBottomBarBgGradient(milestones);
+
milestones.at(0).r = milestones.at(0).g = milestones.at(0).b = 0.1;
milestones.at(1).r = milestones.at(1).g = milestones.at(1).b = 0.8;
lcshape->setLeftBarBgGradient(milestones);
@@ -196,6 +214,7 @@ void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited) {
ccshape->setUnChanged (!pedited->labCurve.cccurve);
chshape->setUnChanged (!pedited->labCurve.chcurve);
lcshape->setUnChanged (!pedited->labCurve.lccurve);
+ clshape->setUnChanged (!pedited->labCurve.clcurve);
}
else {
//if bwtoning is enabled, chromaticity value, avoid color shift and rstprotection has no effect
@@ -240,6 +259,7 @@ void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited) {
ccshape->setCurve (pp->labCurve.cccurve);
chshape->setCurve (pp->labCurve.chcurve);
lcshape->setCurve (pp->labCurve.lccurve);
+ clshape->setCurve (pp->labCurve.clcurve);
queue_draw();
@@ -254,6 +274,7 @@ void LCurve::autoOpenCurve () {
if (!active) ccshape->openIfNonlinear();
if (!active) chshape->openIfNonlinear();
if (!active) lcshape->openIfNonlinear();
+ if (!active) clshape->openIfNonlinear();
}
@@ -277,6 +298,7 @@ void LCurve::write (ProcParams* pp, ParamsEdited* pedited) {
pp->labCurve.cccurve = ccshape->getCurve ();
pp->labCurve.chcurve = chshape->getCurve ();
pp->labCurve.lccurve = lcshape->getCurve ();
+ pp->labCurve.clcurve = clshape->getCurve ();
if (pedited) {
pedited->labCurve.brightness = brightness->getEditedState ();
@@ -297,6 +319,7 @@ void LCurve::write (ProcParams* pp, ParamsEdited* pedited) {
pedited->labCurve.cccurve = !ccshape->isUnChanged ();
pedited->labCurve.chcurve = !chshape->isUnChanged ();
pedited->labCurve.lccurve = !lcshape->isUnChanged ();
+ pedited->labCurve.clcurve = !clshape->isUnChanged ();
}
}
@@ -431,6 +454,8 @@ void LCurve::curveChanged (CurveEditor* ce) {
listener->panelChanged (EvLCHCurve, M("HISTORY_CUSTOMCURVE"));
if (ce == lcshape)
listener->panelChanged (EvLLCCurve, M("HISTORY_CUSTOMCURVE"));
+ if (ce == clshape)
+ listener->panelChanged (EvLCLCurve, M("HISTORY_CUSTOMCURVE"));
}
}
@@ -512,10 +537,12 @@ void LCurve::setBatchMode (bool batchMode) {
}
-void LCurve::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma){
+void LCurve::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma){
lshape->updateBackgroundHistogram (histLCurve);
ccshape->updateBackgroundHistogram (histCCurve);
+ clshape->updateBackgroundHistogram (histCLurve);
+ lcshape->updateBackgroundHistogram (histLLCurve);
}
diff --git a/rtgui/labcurve.h b/rtgui/labcurve.h
index ff816f490..e48cfc909 100644
--- a/rtgui/labcurve.h
+++ b/rtgui/labcurve.h
@@ -39,6 +39,7 @@ class LCurve : public Gtk::VBox, public AdjusterListener, public FoldableToolPan
DiagonalCurveEditor* ccshape;
DiagonalCurveEditor* lcshape;
FlatCurveEditor* chshape;
+ DiagonalCurveEditor* clshape;
//%%%%%%%%%%%%%%%%
Gtk::CheckButton* avoidcolorshift;
@@ -70,7 +71,7 @@ class LCurve : public Gtk::VBox, public AdjusterListener, public FoldableToolPan
void bwtoning_toggled();
void lcredsk_toggled();
- void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma);
+ void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma);
virtual void colorForValue (double valX, double valY, int callerId, ColorCaller* caller);
};
diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc
index c5cc91a47..ae7e4e597 100644
--- a/rtgui/paramsedited.cc
+++ b/rtgui/paramsedited.cc
@@ -52,6 +52,7 @@ void ParamsEdited::set (bool v) {
labCurve.cccurve = v;
labCurve.chcurve = v;
labCurve.lccurve = v;
+ labCurve.clcurve = v;
labCurve.brightness = v;
labCurve.contrast = v;
labCurve.chromaticity = v;
@@ -329,7 +330,8 @@ void ParamsEdited::initFrom (const std::vector
labCurve.cccurve = labCurve.cccurve && p.labCurve.cccurve == other.labCurve.cccurve;
labCurve.chcurve = labCurve.chcurve && p.labCurve.chcurve == other.labCurve.chcurve;
labCurve.lccurve = labCurve.lccurve && p.labCurve.lccurve == other.labCurve.lccurve;
- labCurve.brightness = labCurve.brightness && p.labCurve.brightness == other.labCurve.brightness;
+ labCurve.clcurve = labCurve.clcurve && p.labCurve.clcurve == other.labCurve.clcurve;
+ labCurve.brightness = labCurve.brightness && p.labCurve.brightness == other.labCurve.brightness;
labCurve.contrast = labCurve.contrast && p.labCurve.contrast == other.labCurve.contrast;
labCurve.chromaticity = labCurve.chromaticity && p.labCurve.chromaticity == other.labCurve.chromaticity;
labCurve.avoidcolorshift = labCurve.avoidcolorshift && p.labCurve.avoidcolorshift == other.labCurve.avoidcolorshift;
@@ -602,6 +604,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (labCurve.cccurve) toEdit.labCurve.cccurve = mods.labCurve.cccurve;
if (labCurve.chcurve) toEdit.labCurve.chcurve = mods.labCurve.chcurve;
if (labCurve.lccurve) toEdit.labCurve.lccurve = mods.labCurve.lccurve;
+ if (labCurve.clcurve) toEdit.labCurve.clcurve = mods.labCurve.clcurve;
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.chromaticity) toEdit.labCurve.chromaticity = dontforceSet && options.baBehav[ADDSET_LC_CHROMATICITY] ? toEdit.labCurve.chromaticity + mods.labCurve.chromaticity : mods.labCurve.chromaticity;
diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h
index 4137cb9e7..eb5602ec4 100644
--- a/rtgui/paramsedited.h
+++ b/rtgui/paramsedited.h
@@ -67,6 +67,7 @@ class LCurveParamsEdited {
bool cccurve;
bool chcurve;
bool lccurve;
+ bool clcurve;
};
class RGBCurvesParamsEdited {
diff --git a/rtgui/ppversion.h b/rtgui/ppversion.h
index 74fb1d6e8..e469b2891 100644
--- a/rtgui/ppversion.h
+++ b/rtgui/ppversion.h
@@ -2,11 +2,13 @@
#define _PPVERSION_
// This number have to be incremented whenever the PP3 file format is modified
-#define PPVERSION 312
+#define PPVERSION 313
#define PPVERSION_AEXP 301 //value of PPVERSION when auto exposure algorithm was modified
/*
Log of version changes
+ 313 2013-11-19
+ addd CL curve to lab mode
312 2013-11-08
added numerous changes to [channel mixer]
311 2013-11-07
diff --git a/rtgui/rgbcurves.cc b/rtgui/rgbcurves.cc
index 1b77e8597..07c169ab5 100644
--- a/rtgui/rgbcurves.cc
+++ b/rtgui/rgbcurves.cc
@@ -165,7 +165,7 @@ void RGBCurves::setBatchMode (bool batchMode) {
}
-void RGBCurves::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma) {
+void RGBCurves::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma) {
// Rshape->updateBackgroundHistogram (histRed);
// Gshape->updateBackgroundHistogram (histGreen);
diff --git a/rtgui/rgbcurves.h b/rtgui/rgbcurves.h
index 938e2145d..e3a3d4218 100644
--- a/rtgui/rgbcurves.h
+++ b/rtgui/rgbcurves.h
@@ -49,7 +49,7 @@ class RGBCurves : public Gtk::VBox, public AdjusterListener, public FoldableTool
void autoOpenCurve ();
void curveChanged (CurveEditor* ce);
- void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma);
+ void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma);
void lumamodeChanged ();
};
diff --git a/rtgui/tonecurve.cc b/rtgui/tonecurve.cc
index d41f0b5ae..016bcc131 100644
--- a/rtgui/tonecurve.cc
+++ b/rtgui/tonecurve.cc
@@ -575,7 +575,7 @@ void ToneCurve::trimValues (rtengine::procparams::ProcParams* pp) {
saturation->trimValue(pp->toneCurve.saturation);
}
-void ToneCurve::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma) {
+void ToneCurve::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma) {
shape->updateBackgroundHistogram (histToneCurve);
}
diff --git a/rtgui/tonecurve.h b/rtgui/tonecurve.h
index 91f98dc59..13b2b57b3 100644
--- a/rtgui/tonecurve.h
+++ b/rtgui/tonecurve.h
@@ -91,7 +91,7 @@ class ToneCurve : public Gtk::VBox, public AdjusterListener, public FoldableTool
bool curveMode2Changed_ ();
void expandCurve (bool isExpanded);
bool isCurveExpanded ();
- void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma);
+ void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma);
};
#endif
diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc
index 4df5875b6..1b8bbec66 100644
--- a/rtgui/toolpanelcoord.cc
+++ b/rtgui/toolpanelcoord.cc
@@ -528,11 +528,11 @@ int ToolPanelCoordinator::getSpotWBRectSize () {
return whitebalance->getSize ();
}
-void ToolPanelCoordinator::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma) {
- colorappearance->updateCurveBackgroundHistogram (histToneCurve, histLCurve, histCCurve, histLCAM, histCCAM,histRed, histGreen, histBlue, histLuma);
- toneCurve->updateCurveBackgroundHistogram (histToneCurve, histLCurve,histCCurve, histLCAM, histCCAM,histRed, histGreen, histBlue, histLuma);
- lcurve->updateCurveBackgroundHistogram (histToneCurve, histLCurve, histCCurve, histLCAM, histCCAM,histRed, histGreen, histBlue, histLuma);
- rgbcurves->updateCurveBackgroundHistogram(histToneCurve, histLCurve, histCCurve, histLCAM, histCCAM,histRed,histGreen, histBlue, histLuma);
+void ToolPanelCoordinator::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve, LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma) {
+ colorappearance->updateCurveBackgroundHistogram (histToneCurve, histLCurve, histCCurve, histCLurve, histLLCurve, histLCAM, histCCAM,histRed, histGreen, histBlue, histLuma);
+ toneCurve->updateCurveBackgroundHistogram (histToneCurve, histLCurve,histCCurve, histCLurve, histLLCurve, histLCAM, histCCAM,histRed, histGreen, histBlue, histLuma);
+ lcurve->updateCurveBackgroundHistogram (histToneCurve, histLCurve, histCCurve, histCLurve, histLLCurve, histLCAM, histCCAM,histRed, histGreen, histBlue, histLuma);
+ rgbcurves->updateCurveBackgroundHistogram(histToneCurve, histLCurve, histCCurve, histCLurve, histLLCurve, histLCAM, histCCAM,histRed,histGreen, histBlue, histLuma);
}
void ToolPanelCoordinator::foldAllButOne (Gtk::Box* parent, FoldableToolPanel* openedSection) {
diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h
index 9758c8574..22b82dbca 100644
--- a/rtgui/toolpanelcoord.h
+++ b/rtgui/toolpanelcoord.h
@@ -187,7 +187,7 @@ class ToolPanelCoordinator : public ToolPanelListener,
virtual ~ToolPanelCoordinator ();
bool getChangedState () { return hasChanged; }
- void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve,LUTu & histCCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma);
+ void updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & histLCurve,LUTu & histCCurve, LUTu & histCLurve, LUTu & histLLCurve, LUTu & histLCAM, LUTu & histCCAM, LUTu & histRed, LUTu & histGreen, LUTu & histBlue, LUTu & histLuma);
void foldAllButOne (Gtk::Box* parent, FoldableToolPanel* openedSection);
// multiple listeners can be added that are notified on changes (typical: profile panel and the history)