Add chromaticity according to luminance issue2056

This commit is contained in:
jdc 2013-11-19 19:16:52 +01:00
parent 3e877ac05c
commit ce68eac4af
91 changed files with 516 additions and 265 deletions

View File

@ -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: <b>Alt-s</b>
@ -1269,6 +1270,8 @@ TP_LABCURVE_BWTONING_TIP;With the <b>B&amp;W toning</b> 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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -58,6 +58,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -58,6 +58,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -58,6 +58,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.0
Version=312
Version=313
[Exposure]
Auto=false
@ -58,6 +58,7 @@ bCurve=0;
ccCurve=0;
chCurve=0;
LcCurve=0;
ClCurve=0;
[Vibrance]
Enabled=true

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -58,6 +58,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -58,6 +58,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -61,6 +61,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.0
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=0;
LcCurve=0;
ClCurve=0;
[Vibrance]
Enabled=false

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=true
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -32,6 +32,7 @@ bCurve=1;0;0;1;1;
ccCurve=0;
chCurve=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

View File

@ -1,6 +1,6 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=false
@ -59,6 +59,7 @@ bCurve=0;
ccCurve=1;0;0;0.254;0.300;1;1;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11.20
Version=312
AppVersion=4.0.11.151
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -1,7 +1,7 @@
[Version]
AppVersion=4.0.11
Version=312
Version=313
[Exposure]
Auto=false
@ -60,6 +60,7 @@ bCurve=0;
ccCurve=0;
chCurve=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

View File

@ -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<double>& 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<double>& acurvePoints, const std::vector<double>& bcurvePoints,const std::vector<double>& cccurvePoints,
const std::vector<double>& 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;
}
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View File

@ -195,9 +195,11 @@ class CurveFactory {
ChMixerbw & customToneCurvebw2,
int skip);
static void complexsgnCurve ( bool & autili, bool & butili, bool & ccutili, bool & cclutili, double saturation, double rstprotection, const std::vector<double>& acurvePoints,
const std::vector<double>& bcurvePoints,const std::vector<double>& cccurvePoints,const std::vector<double>& 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<double>& 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<double>& acurvePoints,
const std::vector<double>& bcurvePoints,const std::vector<double>& cccurvePoints,const std::vector<double>& 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<double>& curvePoints, LUTu & histogram, LUTu & histogramCropped,
LUTf & outCurve, LUTu & outBeforeCCurveHistogram, int skip, bool & utili);

View File

@ -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.

View File

@ -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; x<pH; x++)
for (int y=0; y<pW; y++) {
@ -330,21 +334,25 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) {
butili=false;
ccutili=false;
cclutili=false;
clcutili=false;
if ((todo & M_LUMACURVE) || (todo & M_CROP)) {
CurveFactory::complexLCurve (params.labCurve.brightness, params.labCurve.contrast, params.labCurve.lcurve, lhist16, lhist16Cropped,
lumacurve, histLCurve, scale==1 ? 1 : 16, utili);
}
if (todo & M_LUMACURVE) {
CurveFactory::curveCL(clcutili, params.labCurve.clcurve, clcurve, lhist16CLlad, histCLurve, scale==1 ? 1 : 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, chroma_acurve, chroma_bcurve, satcurve,lhskcurve,
lhist16Clad,lhist16CroppedClad, histCCurve, scale==1 ? 1 : 16);
params.labCurve.acurve, params.labCurve.bcurve,params.labCurve.cccurve,params.labCurve.lccurve,chroma_acurve, chroma_bcurve, satcurve,lhskcurve,
lhist16Clad,lhist16LLClad,lhist16CroppedClad, histCCurve, histLLCurve, scale==1 ? 1 : 16);
}
if (todo & (M_LUMINANCE+M_COLOR) ) {
nprevl->CopyFrom(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; i<y2; i++)

View File

@ -86,6 +86,7 @@ class ImProcCoordinator : public StagedImageProcessor {
LUTf chroma_bcurve;
LUTf satcurve;
LUTf lhskcurve;
LUTf clcurve;
LUTu vhist16;
LUTu lhist16,lhist16Cropped;
@ -94,11 +95,11 @@ class ImProcCoordinator : public StagedImageProcessor {
LUTu lhist16CCAMAF;
LUTu lhist16ClabAF;
LUTu histCropped;
LUTu lhist16Clad,lhist16CroppedClad;
LUTu lhist16Clad,lhist16CroppedClad,lhist16CLlad,lhist16LClad,lhist16LLClad;
LUTu histRed, histRedRaw;
LUTu histGreen, histGreenRaw;
LUTu histBlue, histBlueRaw;
LUTu histLuma, histToneCurve, histLCurve, histCCurve, histLCAM, histCCAM, histClad, bcabhist, histChroma;
LUTu histLuma, histToneCurve, histLCurve, histCCurve, histCLurve, histLLCurve, histLCAM, histCCAM, histClad, bcabhist, histChroma;
LUTf rCurve;
LUTf gCurve;
@ -108,6 +109,7 @@ class ImProcCoordinator : public StagedImageProcessor {
bool butili;
bool ccutili;
bool cclutili;
bool clcutili;
ToneCurve customToneCurve1;
ToneCurve customToneCurve2;

View File

@ -2818,7 +2818,7 @@ void ImProcFunctions::luminanceCurve (LabImage* lold, LabImage* lnew, LUTf & cur
void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* lnew, LUTf & acurve, LUTf & bcurve, LUTf & satcurve,LUTf & lhskcurve, LUTf & curve, bool utili, bool autili, bool butili, bool ccutili, bool cclutili, LUTu &histCCurve) {
void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* lnew, LUTf & acurve, LUTf & bcurve, LUTf & satcurve,LUTf & lhskcurve, LUTf & clcurve, LUTf & curve, bool utili, bool autili, bool butili, bool ccutili, bool cclutili, bool clcutili, LUTu &histCCurve, LUTu &histCLurve, LUTu &histLLCurve) {
int W = lold->W;
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) {
@ -3058,6 +3102,14 @@ void ImProcFunctions::chromiLuminanceCurve (int pW, LabImage* lold, LabImage* ln
}
// 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')
const float xx=0.25f;//soft : between 0.2 and 0.4
@ -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;
}

View File

@ -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);

View File

@ -268,7 +268,8 @@ enum ProcEvent {
EvVignettingRadius=242,
EvVignettingStrenght=243,
EvVignettingCenter=244,
NUMOFEVENTS=245
EvLCLCurve=245,
NUMOFEVENTS=246
};
}
#endif

View File

@ -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<double> lccurve = labCurve.lccurve;
keyFile.set_double_list("Luminance Curve", "LcCurve", lccurve);
}
if (!pedited || pedited->labCurve.clcurve) {
Glib::ArrayHandle<double> 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

View File

@ -216,6 +216,7 @@ class LCurveParams {
std::vector<double> cccurve;
std::vector<double> chcurve;
std::vector<double> lccurve;
std::vector<double> clcurve;
int brightness;
int contrast;
int chromaticity;

View File

@ -264,7 +264,8 @@ TRANSFORM, // EvPCVignetteFeather
TRANSFORM, // EvPCVignetteRoundness
TRANSFORM, // EvVignettingRadius,
TRANSFORM, // EvVignettingStrength,
TRANSFORM // EvVignettingCenter,
TRANSFORM, // EvVignettingCenter,
LUMINANCECURVE // EvLCLCurve
//LUMINANCECURVE // EvCATsharpcie

View File

@ -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) {}
};

View File

@ -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,
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, dummy,
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;

View File

@ -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);

View File

@ -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);

View File

@ -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);
};

View File

@ -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() {

View File

@ -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

View File

@ -128,15 +128,27 @@ 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<DiagonalCurveEditor*>(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<DiagonalCurveEditor*>(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
@ -145,6 +157,12 @@ LCurve::LCurve () : Gtk::VBox(), FoldableToolPanel(this) {
milestones.push_back( GradientMilestone(1., 1., 1., 1.) );
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);
}

View File

@ -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);
};

View File

@ -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,6 +330,7 @@ void ParamsEdited::initFrom (const std::vector<rtengine::procparams::ProcParams>
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.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;
@ -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;

View File

@ -67,6 +67,7 @@ class LCurveParamsEdited {
bool cccurve;
bool chcurve;
bool lccurve;
bool clcurve;
};
class RGBCurvesParamsEdited {

View File

@ -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

View File

@ -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);

View File

@ -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 ();
};

View File

@ -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);
}

View File

@ -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

View File

@ -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) {

View File

@ -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)