From b35087852806ee75cd8ba8e2ac3ac6a3e30b5cd5 Mon Sep 17 00:00:00 2001 From: jdc Date: Sat, 14 Dec 2013 20:04:56 +0100 Subject: [PATCH] Curve H=f(H) L=f(H) in Lab mode - issue 2096 --- rtdata/languages/default | 8 +- rtdata/profiles/BW/BW 1.pp3 | 4 +- rtdata/profiles/BW/BW 2.pp3 | 4 +- rtdata/profiles/BW/BW 3.pp3 | 4 +- rtdata/profiles/BW/BW 4.pp3 | 4 +- rtdata/profiles/Contrasty/Deep Shadows.pp3 | 4 +- rtdata/profiles/Contrasty/Punchy 1.pp3 | 4 +- rtdata/profiles/Contrasty/Punchy 2.pp3 | 4 +- rtdata/profiles/Default ISO High.pp3 | 4 +- rtdata/profiles/Default ISO Medium.pp3 | 4 +- rtdata/profiles/Default.pp3 | 5 +- rtdata/profiles/Equilibrated.pp3 | 4 +- .../Faded/Amber/Faded Amber 1 TM Bright.pp3 | 4 +- .../profiles/Faded/Amber/Faded Amber 1 TM.pp3 | 4 +- rtdata/profiles/Faded/Amber/Faded Amber 1.pp3 | 4 +- .../Faded/Blue/Faded Blue 1 TM Bright.pp3 | 4 +- .../profiles/Faded/Blue/Faded Blue 1 TM.pp3 | 4 +- rtdata/profiles/Faded/Blue/Faded Blue 1.pp3 | 4 +- .../Faded/Blue/Faded Blue Pink TM.pp3 | 4 +- .../profiles/Faded/Blue/Faded Blue Pink.pp3 | 4 +- .../Chocolate/Faded Chocolate 1 TM Bright.pp3 | 4 +- .../Chocolate/Faded Chocolate 2 TM Bright.pp3 | 4 +- .../profiles/Faded/Golden/Faded Golden 1.pp3 | 4 +- .../profiles/Faded/Golden/Faded Golden 2.pp3 | 4 +- .../Faded/Green/Faded Green 1 TM Bright.pp3 | 4 +- .../profiles/Faded/Green/Faded Green 1 TM.pp3 | 4 +- rtdata/profiles/Faded/Green/Faded Green 1.pp3 | 4 +- rtdata/profiles/Faded/Green/Faded Green 2.pp3 | 4 +- rtdata/profiles/Faded/Green/Faded Green 3.pp3 | 4 +- .../Faded/Neutral/Faded Neutral TM.pp3 | 4 +- .../profiles/Faded/Neutral/Faded Neutral.pp3 | 4 +- .../Faded/Purple/Faded Purple 1 TM Bright.pp3 | 4 +- .../Faded/Purple/Faded Purple 1 TM.pp3 | 4 +- .../profiles/Faded/Purple/Faded Purple 1.pp3 | 4 +- .../Faded/Purple/Faded Purple 2 TM.pp3 | 4 +- .../profiles/Faded/Purple/Faded Purple 2.pp3 | 4 +- .../Teal/Faded Teal Orange TM Bright.pp3 | 4 +- .../Faded/Teal/Faded Teal Orange TM.pp3 | 4 +- .../profiles/Faded/Teal/Faded Teal Orange.pp3 | 4 +- .../Faded/Warm/Faded Warm 1 TM Bright.pp3 | 4 +- .../profiles/Faded/Warm/Faded Warm 1 TM.pp3 | 4 +- rtdata/profiles/Faded/Warm/Faded Warm 1.pp3 | 4 +- rtdata/profiles/Faded/Warm/Faded Warm 2.pp3 | 4 +- rtdata/profiles/Faded/Warm/Faded Warm 3.pp3 | 4 +- rtdata/profiles/High-Key.pp3 | 4 +- rtdata/profiles/Natural 1.pp3 | 4 +- rtdata/profiles/Natural 2.pp3 | 4 +- rtdata/profiles/Pop/Pop 1.pp3 | 4 +- rtdata/profiles/Pop/Pop 2 L.pp3 | 4 +- rtdata/profiles/Pop/Pop 3 Skin.pp3 | 4 +- rtdata/profiles/Pop/Pop 4 BW.pp3 | 4 +- rtdata/profiles/Portrait/Portrait Lejto.pp3 | 4 +- rtdata/profiles/Portrait/Portrait Smooth.pp3 | 4 +- .../Skintones/Skintones - Natural TM.pp3 | 4 +- .../Skintones/Skintones - Natural.pp3 | 4 +- .../Skintones/Skintones - Pale TM Bright.pp3 | 4 +- .../Skintones/Skintones - Pale TM.pp3 | 4 +- .../profiles/Skintones/Skintones - Pale.pp3 | 4 +- .../Skintones/Skintones - Soft Texture.pp3 | 2 +- .../Skintones/Skintones - Strong Texture.pp3 | 2 +- .../Skintones/Skintones - Studio TM.pp3 | 4 +- .../profiles/Skintones/Skintones - Studio.pp3 | 4 +- .../Skintones/Skintones - StudioBase 1 TM.pp3 | 4 +- .../Skintones/Skintones - StudioBase 1.pp3 | 4 +- rtengine/PF_correct_RT.cc | 6 +- rtengine/color.cc | 16 --- rtengine/color.h | 23 +++- rtengine/improcfun.cc | 129 ++++++++++++++++-- rtengine/procevents.h | 5 +- rtengine/procparams.cc | 17 +++ rtengine/procparams.h | 2 + rtengine/refreshmap.cc | 4 +- rtengine/settings.h | 1 + rtgui/labcurve.cc | 60 +++++--- rtgui/labcurve.h | 3 + rtgui/options.cc | 4 + rtgui/paramsedited.cc | 6 + rtgui/paramsedited.h | 2 + rtgui/ppversion.h | 4 +- 79 files changed, 422 insertions(+), 117 deletions(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 1137f34cd..1ac0e40aa 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -479,7 +479,9 @@ 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_MSG_246;"CL" curve +HISTORY_MSG_247;"LH" curve +HISTORY_MSG_248;"HH" curve HISTORY_NEWSNAPSHOTAS;As... HISTORY_NEWSNAPSHOT;Add HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s @@ -1287,6 +1289,10 @@ TP_LABCURVE_CURVEEDITOR_CL_TOOLTIP;Chromaticity according to luminance C=f(L) TP_LABCURVE_CURVEEDITOR_LC;LC TP_LABCURVE_CURVEEDITOR_LC_TOOLTIP;Luminance according to chromaticity L=f(C) TP_LABCURVE_CURVEEDITOR_LL_TOOLTIP;Luminance according to luminance L=f(L) +TP_LABCURVE_CURVEEDITOR_LH;LH +TP_LABCURVE_CURVEEDITOR_LH_TOOLTIP;Luminance according to hue L=f(H) +TP_LABCURVE_CURVEEDITOR_HH;HH +TP_LABCURVE_CURVEEDITOR_HH_TOOLTIP;Hue according to hue H=f(H) TP_LABCURVE_LABEL;Lab Adjustments TP_LABCURVE_LCREDSK;Restrict LC to red and skin tones TP_LABCURVE_LCREDSK_TIP;If enabled, LC Curve (Luminance According to Chromaticity) is limited to red and skin tones\nIf disabled, applies to all tones diff --git a/rtdata/profiles/BW/BW 1.pp3 b/rtdata/profiles/BW/BW 1.pp3 index ce1ec5a8e..e2202b475 100644 --- a/rtdata/profiles/BW/BW 1.pp3 +++ b/rtdata/profiles/BW/BW 1.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -61,6 +61,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/BW/BW 2.pp3 b/rtdata/profiles/BW/BW 2.pp3 index 0739bc577..00b6ce9e1 100644 --- a/rtdata/profiles/BW/BW 2.pp3 +++ b/rtdata/profiles/BW/BW 2.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -61,6 +61,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/BW/BW 3.pp3 b/rtdata/profiles/BW/BW 3.pp3 index f1ae6a7a3..a18421bfa 100644 --- a/rtdata/profiles/BW/BW 3.pp3 +++ b/rtdata/profiles/BW/BW 3.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -61,6 +61,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/BW/BW 4.pp3 b/rtdata/profiles/BW/BW 4.pp3 index 28a729f64..e4b9ce075 100644 --- a/rtdata/profiles/BW/BW 4.pp3 +++ b/rtdata/profiles/BW/BW 4.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -61,6 +61,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Contrasty/Deep Shadows.pp3 b/rtdata/profiles/Contrasty/Deep Shadows.pp3 index 6bba39d85..72b60cbd2 100644 --- a/rtdata/profiles/Contrasty/Deep Shadows.pp3 +++ b/rtdata/profiles/Contrasty/Deep Shadows.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=true diff --git a/rtdata/profiles/Contrasty/Punchy 1.pp3 b/rtdata/profiles/Contrasty/Punchy 1.pp3 index f038e9201..dae53d794 100644 --- a/rtdata/profiles/Contrasty/Punchy 1.pp3 +++ b/rtdata/profiles/Contrasty/Punchy 1.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Contrasty/Punchy 2.pp3 b/rtdata/profiles/Contrasty/Punchy 2.pp3 index 0296f3379..99efc9742 100644 --- a/rtdata/profiles/Contrasty/Punchy 2.pp3 +++ b/rtdata/profiles/Contrasty/Punchy 2.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=false diff --git a/rtdata/profiles/Default ISO High.pp3 b/rtdata/profiles/Default ISO High.pp3 index 185667360..7fdee4ee9 100644 --- a/rtdata/profiles/Default ISO High.pp3 +++ b/rtdata/profiles/Default ISO High.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=false diff --git a/rtdata/profiles/Default ISO Medium.pp3 b/rtdata/profiles/Default ISO Medium.pp3 index ccb613538..0078a0a1a 100644 --- a/rtdata/profiles/Default ISO Medium.pp3 +++ b/rtdata/profiles/Default ISO Medium.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Default.pp3 b/rtdata/profiles/Default.pp3 index 81c77190c..b1ecad1f4 100644 --- a/rtdata/profiles/Default.pp3 +++ b/rtdata/profiles/Default.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -40,6 +40,9 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; + [Sharpening] Enabled=true diff --git a/rtdata/profiles/Equilibrated.pp3 b/rtdata/profiles/Equilibrated.pp3 index 9ed3c619a..204b63467 100644 --- a/rtdata/profiles/Equilibrated.pp3 +++ b/rtdata/profiles/Equilibrated.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=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 cab6e9f52..80661fecc 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Amber/Faded Amber 1 TM.pp3 b/rtdata/profiles/Faded/Amber/Faded Amber 1 TM.pp3 index 15a94bd5d..4fdc27987 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Amber/Faded Amber 1.pp3 b/rtdata/profiles/Faded/Amber/Faded Amber 1.pp3 index 4dee517bc..ffe54bef9 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false 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 5788442d7..87f295c37 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Blue/Faded Blue 1 TM.pp3 b/rtdata/profiles/Faded/Blue/Faded Blue 1 TM.pp3 index 212d12566..18de7f77c 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Blue/Faded Blue 1.pp3 b/rtdata/profiles/Faded/Blue/Faded Blue 1.pp3 index b2ebee8a7..f9f66a333 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Blue/Faded Blue Pink TM.pp3 b/rtdata/profiles/Faded/Blue/Faded Blue Pink TM.pp3 index 75ecc3a07..69ee5da0b 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Blue/Faded Blue Pink.pp3 b/rtdata/profiles/Faded/Blue/Faded Blue Pink.pp3 index db1580f9f..1584fbfc4 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false 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 d5a1bb484..0a8d70249 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false 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 e06cd8073..7704534db 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Golden/Faded Golden 1.pp3 b/rtdata/profiles/Faded/Golden/Faded Golden 1.pp3 index 6b4019df1..c6666be6b 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Golden/Faded Golden 2.pp3 b/rtdata/profiles/Faded/Golden/Faded Golden 2.pp3 index 0f6c286f8..423a0ad05 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false 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 f48019d29..7dcbefe6e 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Green/Faded Green 1 TM.pp3 b/rtdata/profiles/Faded/Green/Faded Green 1 TM.pp3 index 9321e73b5..bf1c7c4da 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Green/Faded Green 1.pp3 b/rtdata/profiles/Faded/Green/Faded Green 1.pp3 index 9e4be0e2d..80cd6843f 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Green/Faded Green 2.pp3 b/rtdata/profiles/Faded/Green/Faded Green 2.pp3 index b49034667..f6be21ba0 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Green/Faded Green 3.pp3 b/rtdata/profiles/Faded/Green/Faded Green 3.pp3 index b92a82ac1..fd6c241a9 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Neutral/Faded Neutral TM.pp3 b/rtdata/profiles/Faded/Neutral/Faded Neutral TM.pp3 index 810206c35..8d1cd3649 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Neutral/Faded Neutral.pp3 b/rtdata/profiles/Faded/Neutral/Faded Neutral.pp3 index 6419870b1..3b47cf69b 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false 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 e77a6ead1..048332144 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Purple/Faded Purple 1 TM.pp3 b/rtdata/profiles/Faded/Purple/Faded Purple 1 TM.pp3 index a38af5445..5856f03d1 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Purple/Faded Purple 1.pp3 b/rtdata/profiles/Faded/Purple/Faded Purple 1.pp3 index 5767c5b77..8c08d1fb7 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Purple/Faded Purple 2 TM.pp3 b/rtdata/profiles/Faded/Purple/Faded Purple 2 TM.pp3 index 6845070e4..e9a0a3d1b 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Purple/Faded Purple 2.pp3 b/rtdata/profiles/Faded/Purple/Faded Purple 2.pp3 index 98032ae6e..fd48cc929 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false 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 0039f160e..19267210a 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Teal/Faded Teal Orange TM.pp3 b/rtdata/profiles/Faded/Teal/Faded Teal Orange TM.pp3 index 5d73fb03e..2f5ab145e 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Teal/Faded Teal Orange.pp3 b/rtdata/profiles/Faded/Teal/Faded Teal Orange.pp3 index a9e611b0b..de0c56994 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false 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 7939e8ce7..0ff52813f 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Warm/Faded Warm 1 TM.pp3 b/rtdata/profiles/Faded/Warm/Faded Warm 1 TM.pp3 index 5812af95c..19b5b222c 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Warm/Faded Warm 1.pp3 b/rtdata/profiles/Faded/Warm/Faded Warm 1.pp3 index bff449544..f7fe7d94d 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Warm/Faded Warm 2.pp3 b/rtdata/profiles/Faded/Warm/Faded Warm 2.pp3 index 16effce39..fb3c165b9 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/Faded/Warm/Faded Warm 3.pp3 b/rtdata/profiles/Faded/Warm/Faded Warm 3.pp3 index 62b296084..fbd9d2eed 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Vibrance] Enabled=false diff --git a/rtdata/profiles/High-Key.pp3 b/rtdata/profiles/High-Key.pp3 index 5b59f47c2..b4fede8ae 100644 --- a/rtdata/profiles/High-Key.pp3 +++ b/rtdata/profiles/High-Key.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Natural 1.pp3 b/rtdata/profiles/Natural 1.pp3 index a16e1bee6..41099e668 100644 --- a/rtdata/profiles/Natural 1.pp3 +++ b/rtdata/profiles/Natural 1.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Natural 2.pp3 b/rtdata/profiles/Natural 2.pp3 index 5d75796fa..cddfec31b 100644 --- a/rtdata/profiles/Natural 2.pp3 +++ b/rtdata/profiles/Natural 2.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=true @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Pop/Pop 1.pp3 b/rtdata/profiles/Pop/Pop 1.pp3 index 917003afb..48b4730d8 100644 --- a/rtdata/profiles/Pop/Pop 1.pp3 +++ b/rtdata/profiles/Pop/Pop 1.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Pop/Pop 2 L.pp3 b/rtdata/profiles/Pop/Pop 2 L.pp3 index acfaac89c..c6b6570bb 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Pop/Pop 3 Skin.pp3 b/rtdata/profiles/Pop/Pop 3 Skin.pp3 index b5261d827..aa7e8a85d 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -40,6 +40,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Pop/Pop 4 BW.pp3 b/rtdata/profiles/Pop/Pop 4 BW.pp3 index 494dce111..86295ed56 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -61,6 +61,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Portrait/Portrait Lejto.pp3 b/rtdata/profiles/Portrait/Portrait Lejto.pp3 index 0354e2b9c..58ee3a9dd 100644 --- a/rtdata/profiles/Portrait/Portrait Lejto.pp3 +++ b/rtdata/profiles/Portrait/Portrait Lejto.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -35,6 +35,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Portrait/Portrait Smooth.pp3 b/rtdata/profiles/Portrait/Portrait Smooth.pp3 index 91b8a58f6..606a99894 100644 --- a/rtdata/profiles/Portrait/Portrait Smooth.pp3 +++ b/rtdata/profiles/Portrait/Portrait Smooth.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -40,6 +40,8 @@ ccCurve=1;0;0;0.254;0.300;1;1; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=true diff --git a/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 b/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 index 02df2bc1d..84828307a 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=false diff --git a/rtdata/profiles/Skintones/Skintones - Natural.pp3 b/rtdata/profiles/Skintones/Skintones - Natural.pp3 index db318fef1..33e6cbff0 100644 --- a/rtdata/profiles/Skintones/Skintones - Natural.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Natural.pp3 @@ -1,7 +1,7 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=false diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 index d5ff79eaa..8fccfb869 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=false diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 index f857e0ed6..d5eb6f0b7 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=false diff --git a/rtdata/profiles/Skintones/Skintones - Pale.pp3 b/rtdata/profiles/Skintones/Skintones - Pale.pp3 index 603265705..f69b6d44b 100644 --- a/rtdata/profiles/Skintones/Skintones - Pale.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Pale.pp3 @@ -1,7 +1,7 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=false diff --git a/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 b/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 index a1a8967d8..b9358b156 100644 --- a/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [RGB Curves] LumaMode=true diff --git a/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 b/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 index 15ed11042..c1aa08a8c 100644 --- a/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 @@ -1,6 +1,6 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [RGB Curves] LumaMode=true diff --git a/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 b/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 index f16d65a0e..8c9433b40 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -36,6 +36,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=false diff --git a/rtdata/profiles/Skintones/Skintones - Studio.pp3 b/rtdata/profiles/Skintones/Skintones - Studio.pp3 index eb3adb725..32c2e8303 100644 --- a/rtdata/profiles/Skintones/Skintones - Studio.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Studio.pp3 @@ -1,7 +1,7 @@ [Version] AppVersion=4.0.11.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -41,6 +41,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=false diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 index cab03bb2c..a31a9abee 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -36,6 +36,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=false diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 index 96ffddb33..2d98e8574 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.161 -Version=314 +Version=315 [Exposure] Auto=false @@ -36,6 +36,8 @@ ccCurve=0; chCurve=0; LcCurve=0; ClCurve=0; +lhCurve=0; +hhCurve=0; [Sharpening] Enabled=false diff --git a/rtengine/PF_correct_RT.cc b/rtengine/PF_correct_RT.cc index eef63463e..9e438b349 100644 --- a/rtengine/PF_correct_RT.cc +++ b/rtengine/PF_correct_RT.cc @@ -118,8 +118,7 @@ float chromave=0.0f; float HH=xatan2f(src->b[i][j],src->a[i][j]); #endif double hr; - Color::huelab_to_huehsv (HH, hr); - float chparam = float((chCurve->getVal(hr)-0.5f) * 2.0f);//get C=f(H) + float chparam = float((chCurve->getVal((hr=Color::huelab_to_huehsv2(HH)))-0.5f) * 2.0f);//get C=f(H) if(chparam > 0.f) chparam /=2.f; // reduced action if chparam > 0 chromaChfactor=1.0f+chparam; } @@ -398,8 +397,7 @@ if( chCurve ) { float HH=xatan2f(srbb[i][j],sraa[i][j]); #endif double hr; - Color::huelab_to_huehsv (HH, hr); //approximation Cam / Lab - float chparam = float((chCurve->getVal(hr)-0.5f) * 2.0f);//get C=f(H) + float chparam = float((chCurve->getVal((hr=Color::huelab_to_huehsv2(HH)))-0.5f) * 2.0f);//get C=f(H) if(chparam > 0.f) chparam /=2.f; // reduced action if chparam > 0 chromaChfactor=1.0f+chparam; } diff --git a/rtengine/color.cc b/rtengine/color.cc index d51108679..6fadd1236 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -661,22 +661,6 @@ namespace rtengine { a = (500.0 * (fx - fy) ); b = (200.0 * (fy - fz) ); } - - void Color::huelab_to_huehsv (float HH, double &hr){ - //hr=translate Hue Lab value (-Pi +Pi) in approximative hr (hsv values) (0 1) [red 1/6 yellow 1/6 green 1/6 cyan 1/6 blue 1/6 magenta 1/6 ] - // with multi linear correspondances (I expect there is no error !!) - - if (HH<-2.7f) hr=0.020380804*double(HH)+0.970281708; //Lab green =>hr # 0.33 ==> 0.33 0.42 - else if (HH<-2.1f) hr=0.266666667*double(HH)+1.14; //Lab cyan =>hr # 0.50 ==> 0.42 0.58 - else if (HH<-0.9f) hr=0.141666 *double(HH)+0.8775; //Lab blue =>hr # 0.67 ==> 0.58 0.75 - else if (HH<-0.1f) hr=0.2125 *double(HH)+0.94125; //Lab magenta (purple) =>hr # 0.83 ==> 0.75 0.92 - else if (HH< 1.3f) hr=0.12142857 *double(HH)+0.932142857; //Lab red and skin =>hr # 0 ==> 0.92 1.09 - else if (HH< 2.2f) hr=0.1666667 *double(HH)-0.1266667; //Lab yellow and green yellow =>hr # 0.16 ==> 0.09 0.24 - else hr=0.0955828 *double(HH)+0.02971784; //Lab green =>hr # 0.33 ==> 0.24 0.33 - //allways put h between 0 and 1 - if (hr<0.0) hr += 1.0; - else if(hr>1.0) hr -= 1.0; - } double Color::f2xyz(double f) { const double epsilonExpInv3 = 6.0/29.0; diff --git a/rtengine/color.h b/rtengine/color.h index 53923eca8..15cf6f72b 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -140,7 +140,6 @@ public: float &mixerBlue, float mixerOrange, float mixerYellow, float mixerCyan, float mixerPurple, float mixerMagenta, bool autoc, bool complement, float &kcorec, double &rrm, double &ggm, double &bbm); - static void huelab_to_huehsv (float HH, double &hr); // standard srgb gamma and its inverse static inline double gamma2 (double x) { @@ -219,6 +218,28 @@ public: //void gamutmap(LabImage* ); static void gamutmap(float &X, float &Y, float &Z, const double p[3][3]); + static inline double huelab_to_huehsv2 (float HH){ + //hr=translate Hue Lab value (-Pi +Pi) in approximative hr (hsv values) (0 1) [red 1/6 yellow 1/6 green 1/6 cyan 1/6 blue 1/6 magenta 1/6 ] + // with multi linear correspondances (I expect there is no error !!) + double hr; + //allways put h between 0 and 1 + + if (HH>=0.f && HH < 0.6f) hr=0.11666*(double) HH + 0.93; //hr 0.93 1. full red + else if (HH>=0.6f && HH < 1.4f) hr=0.1125*double(HH) - 0.0675; //hr 0.0 0.09 red yellow orange + else if (HH>=1.4f && HH < 2.f) hr=0.2666*double(HH) - 0.2833; //hr 0.09 0.25 orange yellow + else if (HH>=2.f && HH < 3.14159f) hr=0.1489*double(HH) - 0.04785; //hr 0.25 0.42 yellow green green + else if (HH>=-3.14159f && HH < -2.8f) hr=0.23419*double(HH) +1.1557; //hr 0.42 0.5 green + else if (HH>=-2.8f && HH < -2.3f) hr=0.16*double(HH) + 0.948; //hr 0.5 0.58 cyan + else if (HH>=-2.3f && HH < -0.9f) hr=0.12143*double(HH)+ 0.85928; //hr 0.58 0.75 blue blue-sky + else if (HH>=-0.9f && HH < -0.1f) hr=0.2125*double(HH) + 0.94125; //hr 0.75 0.92 purple magenta + else if (HH>=-0.1f && HH < 0.f) hr=0.1*double(HH) + 0.93; //hr 0.92 0.93 red + // in case of ! + if (hr<0.0) hr += 1.0; + else if(hr>1.0) hr -= 1.0; + return (hr); + } + + static inline float f2xyz(float f) { const float epsilonExpInv3 = 6.0/29.0; const float kappaInv = 27.0/24389.0; // inverse of kappa diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 07e7e846a..8bea8519e 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -46,6 +46,20 @@ #endif #undef CLIPD #define CLIPD(a) ((a)>0.0f?((a)<1.0f?(a):1.0f):0.0f) +#define PIX_SORT(a,b) { if ((a)>(b)) {temp=(a);(a)=(b);(b)=temp;} } + +#define med3(a0,a1,a2,a3,a4,a5,a6,a7,a8,median) { \ +pp[0]=a0; pp[1]=a1; pp[2]=a2; pp[3]=a3; pp[4]=a4; pp[5]=a5; pp[6]=a6; pp[7]=a7; pp[8]=a8; \ +PIX_SORT(pp[1],pp[2]); PIX_SORT(pp[4],pp[5]); PIX_SORT(pp[7],pp[8]); \ +PIX_SORT(pp[0],pp[1]); PIX_SORT(pp[3],pp[4]); PIX_SORT(pp[6],pp[7]); \ +PIX_SORT(pp[1],pp[2]); PIX_SORT(pp[4],pp[5]); PIX_SORT(pp[7],pp[8]); \ +PIX_SORT(pp[0],pp[3]); PIX_SORT(pp[5],pp[8]); PIX_SORT(pp[4],pp[7]); \ +PIX_SORT(pp[3],pp[6]); PIX_SORT(pp[1],pp[4]); PIX_SORT(pp[2],pp[5]); \ +PIX_SORT(pp[4],pp[7]); PIX_SORT(pp[4],pp[2]); PIX_SORT(pp[6],pp[4]); \ +PIX_SORT(pp[4],pp[2]); median=pp[4];} //pp4 = median + + + namespace rtengine { @@ -2547,13 +2561,12 @@ if(blackwhite){ l_r = L/32768.f; if (bwlCurveEnabled) { double hr; - Color::huelab_to_huehsv (HH, hr);//correspondance H lab ==> h hsv - float valparam = float((bwlCurve->getVal(hr)-0.5f) * 2.0f);//get l_r=f(H) + float valparam = float((bwlCurve->getVal((hr=Color::huelab_to_huehsv2(HH)))-0.5f) * 2.0f);//get l_r=f(H) float kcc=(CC/70.f);//take Chroma into account...70 "middle" of chromaticity (arbitrary and simple), one can imagine other algorithme //reduct action for low chroma and increase action for high chroma valparam *= kcc; if(valparam > 0.f) { l_r = (1.f-valparam)*l_r+ valparam*(1.f-SQR(SQR(SQR(SQR(1.f-min(l_r,1.0f))))));}// SQR (SQR((SQR) to increase action in low light - else l_r *= (1.f + 2.f*valparam);//for negative + else l_r *= (1.f + valparam);//for negative } L=l_r*32768.f; float RR,GG,BB; @@ -2855,7 +2868,7 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln int H = lold->H; // lhskcurve.dump("lh_curve"); //init Flatcurve for C=f(H) - FlatCurve* chCurve = NULL; + FlatCurve* chCurve = NULL;// curve C=f(H) bool chutili = false; if (params->labCurve.chromaticity > -100) { chCurve = new FlatCurve(params->labCurve.chcurve); @@ -2863,6 +2876,24 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln chutili=true; }//do not use "Munsell" if Chcurve not used } + FlatCurve* lhCurve = NULL;//curve L=f(H) + bool lhutili = false; + if (params->labCurve.chromaticity > -100) { + lhCurve = new FlatCurve(params->labCurve.lhcurve); + if (lhCurve && !lhCurve->isIdentity()) { + lhutili=true; + } + } + + FlatCurve* hhCurve = NULL;//curve H=f(H) + bool hhutili = false; + if (params->labCurve.chromaticity > -100) { + hhCurve = new FlatCurve(params->labCurve.hhcurve); + if (hhCurve && !hhCurve->isIdentity()) { + hhutili=true; + } + } + LUTf dCcurve(65536,0); LUTf dLcurve(65536,0); @@ -2940,14 +2971,14 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln 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 ; bool avoidColorShift = (params->labCurve.avoidcolorshift || (params->colorappearance.gamut && params->colorappearance.enabled)) && !bwToning ; int protectRed = settings->protectred; double protectRedH = settings->protectredh; bool gamutLch = settings->gamutLch; + float amountchroma = (float) settings->amchroma; // only if user activate Lab adjustements if (avoidColorShift) { - if(autili || butili || ccutili || cclutili || chutili || clcutili || utili || chromaticity) + if(autili || butili || ccutili || cclutili || chutili || lhutili || hhutili || clcutili || utili || chromaticity) Color::LabGamutMunsell(lold, Lold, Cold, /*corMunsell*/true, /*lumaMuns*/false, params->hlrecovery.enabled, /*gamut*/true, params->icm.working, multiThread); } @@ -2976,8 +3007,7 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln {wprof[1][0],wprof[1][1],wprof[1][2]}, {wprof[2][0],wprof[2][1],wprof[2][2]}}; - -#pragma omp for schedule(dynamic, 10) + #pragma omp for schedule(dynamic, 10) for (int i=0; iL[i][j]/327.68f; @@ -2993,17 +3023,83 @@ 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 + float Chprov2=Chprov1; int poscc,posp,posl; + bool inRGB; + const float ClipLevel = 65535.0f; + if (lhutili) { // L=f(H) + float l_r;//Luminance Lab in 0..1 + l_r = Lprov1/100.f; + { + double lr; + float khue=1.9f;//in reserve in case of! + float valparam = float((lhCurve->getVal(lr=Color::huelab_to_huehsv2(HH))-0.5f));//get l_r=f(H) + float valparamneg; + valparamneg=valparam; + float kcc=(CC/amountchroma);//take Chroma into account...40 "middle low" of chromaticity (arbitrary and simple), one can imagine other algorithme + //reduct action for low chroma and increase action for high chroma + valparam *= 2.f*kcc; + valparamneg*= kcc;//slightly different for negative + if(valparam > 0.f) { l_r = (1.f-valparam)*l_r+ valparam*(1.f-SQR(((SQR(1.f-min(l_r,1.0f))))));} + else {l_r *= (1.f+khue*valparamneg);}//for negative + } + + Lprov1=l_r*100.f; + + Chprov2 = sqrt(SQR(atmp/327.68f)+SQR(btmp/327.68f)); + //Gamut control especialy fot negative values slightly different of gamutlchonly + do { + inRGB=true; + float2 sincosval = xsincosf(HH); + float aprov1=Chprov2*sincosval.y; + float bprov1=Chprov2*sincosval.x; + + float fy = (0.00862069f *Lprov1 )+ 0.137932f; + float fx = (0.002f * aprov1) + fy; + float fz = fy - (0.005f * bprov1); + + float x_ = 65535.0f * Color::f2xyz(fx)*Color::D50x; + float z_ = 65535.0f * Color::f2xyz(fz)*Color::D50z; + float y_=(Lprov1>Color::epskap) ? 65535.0*fy*fy*fy : 65535.0*Lprov1/Color::kappa; + float R,G,B; + Color::xyz2rgb(x_,y_,z_,R,G,B,wip); + if (R<0.0f || G<0.0f || B<0.0f) { + if(Lprov1 < 0.1f) Lprov1=0.1f; + Chprov2*=0.95f; + inRGB=false; + } + else + if (!highlight && (R>ClipLevel || G>ClipLevel || B>ClipLevel)) { + if (Lprov1 > 99.999f) Lprov1 = 99.98f; + Chprov2 *= 0.95f; + inRGB = false; + } + } + while (!inRGB) ; + + float2 sincosval = xsincosf(HH); + atmp=327.68f*Chprov2*sincosval.y; + btmp=327.68f*Chprov2*sincosval.x; + + } // calculate C=f(H) if (chutili) { double hr; - Color::huelab_to_huehsv (HH, hr); - float chparam = float((chCurve->getVal(hr)-0.5f) * 2.0f);//get C=f(H) + float chparam = float((chCurve->getVal((hr=Color::huelab_to_huehsv2(HH)))-0.5f) * 2.0f);//get C=f(H) chromaChfactor=1.0f+chparam; } + atmp *= chromaChfactor;//apply C=f(H) btmp *= chromaChfactor; + + if (hhutili) { // H=f(H) + //hue Lab in -PI +PI + double hr; + float valparam = float((hhCurve->getVal(hr=Color::huelab_to_huehsv2(HH))-0.5f) * 1.7f) +HH;//get H=f(H) 1.7 optimisation ! + HH= valparam; + } + //simulate very approximative gamut f(L) : with pyramid transition float dred=55.0f;//C red value limit if (Lprov1<25.0f) dred = 40.0f; @@ -3215,7 +3311,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 || clut || cclutili || chutili || clcutili || chromaticity) { + if (utili || autili || butili || ccut || clut || cclutili || chutili || lhutili || hhutili || clcutili || chromaticity) { float correctionHue=0.0f; // Munsell's correction float correctlum=0.0f; @@ -3245,10 +3341,12 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln // if(Lprov1 > maxlp) maxlp=Lprov1; // if(Lprov1 < minlp) minlp=Lprov1; lnew->L[i][j]=Lprov1*327.68f; + lnew->a[i][j]=327.68f*Chprov1*cos(HH); + lnew->b[i][j]=327.68f*Chprov1*sin(HH); //Luv limiter only - lnew->a[i][j] = atmp; - lnew->b[i][j] = btmp; + //lnew->a[i][j] = atmp; + //lnew->b[i][j] = btmp; } } } // end of parallelization @@ -3288,6 +3386,9 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln delete [] Cold; if (chCurve) delete chCurve; + if (lhCurve) delete lhCurve; + if (hhCurve) delete hhCurve; + } @@ -3830,3 +3931,5 @@ fclose(f);*/ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% } +#undef PIX_SORT +#undef med3x3 diff --git a/rtengine/procevents.h b/rtengine/procevents.h index 0f19b04e3..05ca9c958 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -269,7 +269,10 @@ enum ProcEvent { EvVignettingStrenght=243, EvVignettingCenter=244, EvLCLCurve=245, - NUMOFEVENTS=246 + EvLLHCurve=246, + EvLHHCurve=247, + + NUMOFEVENTS=248 }; } #endif diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 3d2875386..a7507da69 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -163,6 +163,11 @@ void ProcParams::setDefaults () { labCurve.cccurve.push_back(DCT_Linear); labCurve.chcurve.clear (); labCurve.chcurve.push_back(FCT_Linear); + labCurve.lhcurve.clear (); + labCurve.lhcurve.push_back(FCT_Linear); + labCurve.hhcurve.clear (); + labCurve.hhcurve.push_back(FCT_Linear); + labCurve.lccurve.clear (); labCurve.lccurve.push_back(DCT_Linear); labCurve.clcurve.clear (); @@ -679,6 +684,14 @@ int ProcParams::save (Glib::ustring fname, Glib::ustring fname2, bool fnameAbsol Glib::ArrayHandle chcurve = labCurve.chcurve; keyFile.set_double_list("Luminance Curve", "chCurve", chcurve); } + if (!pedited || pedited->labCurve.lhcurve) { + Glib::ArrayHandle lhcurve = labCurve.lhcurve; + keyFile.set_double_list("Luminance Curve", "lhCurve", lhcurve); + } + if (!pedited || pedited->labCurve.hhcurve) { + Glib::ArrayHandle hhcurve = labCurve.hhcurve; + keyFile.set_double_list("Luminance Curve", "hhCurve", hhcurve); + } if (!pedited || pedited->labCurve.lccurve) { Glib::ArrayHandle lccurve = labCurve.lccurve; @@ -1259,6 +1272,8 @@ if (keyFile.has_group ("Luminance Curve")) { if (keyFile.has_key ("Luminance Curve", "bCurve")) { labCurve.bcurve = keyFile.get_double_list ("Luminance Curve", "bCurve"); if (pedited) pedited->labCurve.bcurve = true; } 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", "lhCurve")) { labCurve.lhcurve = keyFile.get_double_list ("Luminance Curve", "lhCurve"); if (pedited) pedited->labCurve.lhcurve = true; } + if (keyFile.has_key ("Luminance Curve", "hhCurve")) { labCurve.hhcurve = keyFile.get_double_list ("Luminance Curve", "hhCurve"); if (pedited) pedited->labCurve.hhcurve = 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; } @@ -1763,6 +1778,8 @@ bool ProcParams::operator== (const ProcParams& other) { && labCurve.bcurve == other.labCurve.bcurve && labCurve.cccurve == other.labCurve.cccurve && labCurve.chcurve == other.labCurve.chcurve + && labCurve.lhcurve == other.labCurve.lhcurve + && labCurve.hhcurve == other.labCurve.hhcurve && labCurve.lccurve == other.labCurve.lccurve && labCurve.clcurve == other.labCurve.clcurve && labCurve.brightness == other.labCurve.brightness diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 48dbac3b9..bb87a6d7e 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -215,6 +215,8 @@ class LCurveParams { std::vector bcurve; std::vector cccurve; std::vector chcurve; + std::vector lhcurve; + std::vector hhcurve; std::vector lccurve; std::vector clcurve; int brightness; diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index 0ed352176..c7f1fd4e5 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -265,7 +265,9 @@ TRANSFORM, // EvPCVignetteRoundness TRANSFORM, // EvVignettingRadius, TRANSFORM, // EvVignettingStrength TRANSFORM, // EvVignettingCenter -LUMINANCECURVE // EvLCLCurve +LUMINANCECURVE, // EvLCLCurve +LUMINANCECURVE, // EvLLHCurve +LUMINANCECURVE // EvLHHCurve //LUMINANCECURVE // EvCATsharpcie diff --git a/rtengine/settings.h b/rtengine/settings.h index 532981e91..8b30fad42 100644 --- a/rtengine/settings.h +++ b/rtengine/settings.h @@ -50,6 +50,7 @@ namespace rtengine { bool gamutICC; bool gamutLch; bool ciecamfloat; + int amchroma; int protectred; double protectredh; bool ciebadpixgauss; diff --git a/rtgui/labcurve.cc b/rtgui/labcurve.cc index 6b24af21c..4d96ef310 100644 --- a/rtgui/labcurve.cc +++ b/rtgui/labcurve.cc @@ -108,6 +108,22 @@ LCurve::LCurve () : Gtk::VBox(), FoldableToolPanel(this) { milestones.clear(); curveEditorG->newLine(); // ------------------------------------------------ second line + + lhshape = static_cast(curveEditorG->addCurve(CT_Flat, M("TP_LABCURVE_CURVEEDITOR_LH"))); + lhshape->setTooltip(M("TP_LABCURVE_CURVEEDITOR_LH_TOOLTIP")); + lhshape->setCurveColorProvider(this, 4); + + + chshape = static_cast(curveEditorG->addCurve(CT_Flat, M("TP_LABCURVE_CURVEEDITOR_CH"))); + chshape->setTooltip(M("TP_LABCURVE_CURVEEDITOR_CH_TOOLTIP")); + chshape->setCurveColorProvider(this, 1); + + + hhshape = static_cast(curveEditorG->addCurve(CT_Flat, M("TP_LABCURVE_CURVEEDITOR_HH"))); + hhshape->setTooltip(M("TP_LABCURVE_CURVEEDITOR_HH_TOOLTIP")); + hhshape->setCurveColorProvider(this, 5); + + curveEditorG->newLine(); // ------------------------------------------------ 3rd line ccshape = static_cast(curveEditorG->addCurve(CT_Diagonal, M("TP_LABCURVE_CURVEEDITOR_CC"))); ccshape->setTooltip(M("TP_LABCURVE_CURVEEDITOR_CC_TOOLTIP")); @@ -115,15 +131,10 @@ LCurve::LCurve () : Gtk::VBox(), FoldableToolPanel(this) { M("TP_LABCURVE_CURVEEDITOR_CC_RANGE1"), M("TP_LABCURVE_CURVEEDITOR_CC_RANGE2"), M("TP_LABCURVE_CURVEEDITOR_CC_RANGE3"), M("TP_LABCURVE_CURVEEDITOR_CC_RANGE4") ); + ccshape->setBottomBarColorProvider(this, 2); ccshape->setLeftBarColorProvider(this, 2); ccshape->setRangeDefaultMilestones(0.05, 0.2, 0.58); - - chshape = static_cast(curveEditorG->addCurve(CT_Flat, M("TP_LABCURVE_CURVEEDITOR_CH"))); - 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")); @@ -171,6 +182,8 @@ LCurve::LCurve () : Gtk::VBox(), FoldableToolPanel(this) { milestones.push_back( GradientMilestone(double(x), double(R), double(G), double(B)) ); } chshape->setBottomBarBgGradient(milestones); + lhshape->setBottomBarBgGradient(milestones); + hhshape->setBottomBarBgGradient(milestones); // This will add the reset button at the end of the curveType buttons @@ -187,8 +200,6 @@ LCurve::~LCurve () { void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited) { disableListener (); - // if(!pp->labCurve.cccurve.empty()) printf("plein"); else printf("vide"); - // if(pp->labCurve.cccurve[0] !=0) printf(" pp %i\n,pp->labCurve.cccurve[0] "); if (pedited) { brightness->setEditedState (pedited->labCurve.brightness ? Edited : UnEdited); @@ -207,6 +218,8 @@ void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited) { bshape->setUnChanged (!pedited->labCurve.bcurve); ccshape->setUnChanged (!pedited->labCurve.cccurve); chshape->setUnChanged (!pedited->labCurve.chcurve); + lhshape->setUnChanged (!pedited->labCurve.lhcurve); + hhshape->setUnChanged (!pedited->labCurve.hhcurve); lcshape->setUnChanged (!pedited->labCurve.lccurve); clshape->setUnChanged (!pedited->labCurve.clcurve); } @@ -238,6 +251,8 @@ void LCurve::read (const ProcParams* pp, const ParamsEdited* pedited) { bshape->setCurve (pp->labCurve.bcurve); ccshape->setCurve (pp->labCurve.cccurve); chshape->setCurve (pp->labCurve.chcurve); + lhshape->setCurve (pp->labCurve.lhcurve); + hhshape->setCurve (pp->labCurve.hhcurve); lcshape->setCurve (pp->labCurve.lccurve); clshape->setCurve (pp->labCurve.clcurve); @@ -253,6 +268,8 @@ void LCurve::autoOpenCurve () { if (!active) bshape->openIfNonlinear(); if (!active) ccshape->openIfNonlinear(); if (!active) chshape->openIfNonlinear(); + if (!active) lhshape->openIfNonlinear(); + if (!active) hhshape->openIfNonlinear(); if (!active) lcshape->openIfNonlinear(); if (!active) clshape->openIfNonlinear(); } @@ -275,6 +292,8 @@ void LCurve::write (ProcParams* pp, ParamsEdited* pedited) { pp->labCurve.bcurve = bshape->getCurve (); pp->labCurve.cccurve = ccshape->getCurve (); pp->labCurve.chcurve = chshape->getCurve (); + pp->labCurve.lhcurve = lhshape->getCurve (); + pp->labCurve.hhcurve = hhshape->getCurve (); pp->labCurve.lccurve = lcshape->getCurve (); pp->labCurve.clcurve = clshape->getCurve (); @@ -295,6 +314,8 @@ void LCurve::write (ProcParams* pp, ParamsEdited* pedited) { pedited->labCurve.bcurve = !bshape->isUnChanged (); pedited->labCurve.cccurve = !ccshape->isUnChanged (); pedited->labCurve.chcurve = !chshape->isUnChanged (); + pedited->labCurve.lhcurve = !lhshape->isUnChanged (); + pedited->labCurve.hhcurve = !hhshape->isUnChanged (); pedited->labCurve.lccurve = !lcshape->isUnChanged (); pedited->labCurve.clcurve = !clshape->isUnChanged (); } @@ -394,6 +415,10 @@ void LCurve::curveChanged (CurveEditor* ce) { listener->panelChanged (EvLCCCurve, M("HISTORY_CUSTOMCURVE")); if (ce == chshape) listener->panelChanged (EvLCHCurve, M("HISTORY_CUSTOMCURVE")); + if (ce == lhshape) + listener->panelChanged (EvLLHCurve, M("HISTORY_CUSTOMCURVE")); + if (ce == hhshape) + listener->panelChanged (EvLHHCurve, M("HISTORY_CUSTOMCURVE")); if (ce == lcshape) listener->panelChanged (EvLLCCurve, M("HISTORY_CUSTOMCURVE")); if (ce == clshape) @@ -426,20 +451,12 @@ void LCurve::adjusterChanged (Adjuster* a, double newval) { rstprotection->set_sensitive( true ); avoidcolorshift->set_sensitive( true ); lcredsk->set_sensitive( true ); - - //std::vector milestones; - //lcshape->setBottomBarBgGradient(milestones); - //lcshape->refresh(); } else { //if chromaticity==-100 (lowest value), we enter the B&W mode and avoid color shift and rstprotection has no effect rstprotection->set_sensitive( int(newval)> -100 );//no reason for grey rstprotection avoidcolorshift->set_sensitive( int(newval)> -100 ); lcredsk->set_sensitive( int(newval)> -100 ); - - //std::vector milestones; - //lcshape->setBottomBarBgGradient(milestones); - //lcshape->refresh(); } if (listener) listener->panelChanged (EvLSaturation, costr); } @@ -477,6 +494,17 @@ void LCurve::colorForValue (double valX, double valY, int callerId, ColorCaller Color::hsv2rgb01(float(valY), float(valX), value, R, G, B); } } + else if (callerId == 4) { // LH - bottom bar + Color::hsv2rgb01(float(valX), 0.5f, float(valY), R, G, B); + } + else if (callerId == 5) { // HH - bottom bar + float h = float((valY - 0.5) * 0.3 + valX); + if (h > 1.0f) + h -= 1.0f; + else if (h < 0.0f) + h += 1.0f; + Color::hsv2rgb01(h, 0.5f, 0.5f, R, G, B); + } caller->ccRed = double(R); caller->ccGreen = double(G); caller->ccBlue = double(B); diff --git a/rtgui/labcurve.h b/rtgui/labcurve.h index 7506ca9ce..fa24f4eec 100644 --- a/rtgui/labcurve.h +++ b/rtgui/labcurve.h @@ -39,6 +39,9 @@ class LCurve : public Gtk::VBox, public AdjusterListener, public FoldableToolPan DiagonalCurveEditor* ccshape; DiagonalCurveEditor* lcshape; FlatCurveEditor* chshape; + FlatCurveEditor* lhshape; + FlatCurveEditor* hhshape; + DiagonalCurveEditor* clshape; //%%%%%%%%%%%%%%%% diff --git a/rtgui/options.cc b/rtgui/options.cc index a06d8696d..e62b308e5 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -499,6 +499,8 @@ void Options::setDefaults () { rtSettings.verbose = false; rtSettings.gamutICC = true; rtSettings.gamutLch = true; + rtSettings.amchroma = 40;//between 20 and 140 low values increase effect..and also artefacts, high values reduces + rtSettings.ciecamfloat = true; rtSettings.protectred = 60; rtSettings.protectredh = 0.3; @@ -743,6 +745,7 @@ if (keyFile.has_group ("Color Management")) { if( keyFile.has_key ("Color Management", "GamutLch")) rtSettings.gamutLch = keyFile.get_boolean("Color Management", "GamutLch"); if( keyFile.has_key ("Color Management", "ProtectRed")) rtSettings.protectred = keyFile.get_integer("Color Management", "ProtectRed"); if( keyFile.has_key ("Color Management", "ProtectRedH")) rtSettings.protectredh = keyFile.get_double("Color Management", "ProtectRedH"); + if( keyFile.has_key ("Color Management", "Amountchroma")) rtSettings.amchroma = keyFile.get_integer("Color Management", "Amountchroma"); // if( keyFile.has_key ("Color Management", "Ciebadpixgauss")) rtSettings.ciebadpixgauss = keyFile.get_boolean("Color Management", "Ciebadpixgauss"); } @@ -1019,6 +1022,7 @@ int Options::saveToFile (Glib::ustring fname) { keyFile.set_boolean ("Color Management", "Ciecamfloat", rtSettings.ciecamfloat); keyFile.set_boolean ("Color Management", "GamutLch", rtSettings.gamutLch); keyFile.set_integer ("Color Management", "ProtectRed", rtSettings.protectred); + keyFile.set_integer ("Color Management", "Amountchroma", rtSettings.amchroma); keyFile.set_double ("Color Management", "ProtectRedH", rtSettings.protectredh); keyFile.set_integer ("Color Management", "CRI", rtSettings.CRI_color); // keyFile.set_boolean ("Color Management", "Ciebadpixgauss", rtSettings.ciebadpixgauss); diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 6e76cff63..e47132da2 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -51,6 +51,8 @@ void ParamsEdited::set (bool v) { labCurve.bcurve = v; labCurve.cccurve = v; labCurve.chcurve = v; + labCurve.lhcurve = v; + labCurve.hhcurve = v; labCurve.lccurve = v; labCurve.clcurve = v; labCurve.brightness = v; @@ -328,6 +330,8 @@ void ParamsEdited::initFrom (const std::vector labCurve.bcurve = labCurve.bcurve && p.labCurve.bcurve == other.labCurve.bcurve; labCurve.cccurve = labCurve.cccurve && p.labCurve.cccurve == other.labCurve.cccurve; labCurve.chcurve = labCurve.chcurve && p.labCurve.chcurve == other.labCurve.chcurve; + labCurve.lhcurve = labCurve.lhcurve && p.labCurve.lhcurve == other.labCurve.lhcurve; + labCurve.hhcurve = labCurve.hhcurve && p.labCurve.hhcurve == other.labCurve.hhcurve; labCurve.lccurve = labCurve.lccurve && p.labCurve.lccurve == other.labCurve.lccurve; labCurve.clcurve = labCurve.clcurve && p.labCurve.clcurve == other.labCurve.clcurve; labCurve.brightness = labCurve.brightness && p.labCurve.brightness == other.labCurve.brightness; @@ -602,6 +606,8 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (labCurve.bcurve) toEdit.labCurve.bcurve = mods.labCurve.bcurve; if (labCurve.cccurve) toEdit.labCurve.cccurve = mods.labCurve.cccurve; if (labCurve.chcurve) toEdit.labCurve.chcurve = mods.labCurve.chcurve; + if (labCurve.lhcurve) toEdit.labCurve.lhcurve = mods.labCurve.lhcurve; + if (labCurve.hhcurve) toEdit.labCurve.hhcurve = mods.labCurve.hhcurve; 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; diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 1c422acee..6dd02af9e 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -65,6 +65,8 @@ class LCurveParamsEdited { bool lcredsk; bool cccurve; bool chcurve; + bool lhcurve; + bool hhcurve; bool lccurve; bool clcurve; }; diff --git a/rtgui/ppversion.h b/rtgui/ppversion.h index 3bb4a79d9..486138555 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 314 +#define PPVERSION 315 #define PPVERSION_AEXP 301 //value of PPVERSION when auto exposure algorithm was modified /* Log of version changes + 315 2013-12-12 + add LH et HH curve to lab mode 313 2013-11-19 addd CL curve to lab mode 312 2013-11-08