diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 9b852f7fd..f3a0dc0d5 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -503,6 +503,9 @@ HISTORY_MSG_289;Champ Uniforme - Ctrl Auto de l'Écrêtage HISTORY_MSG_290;Niveau de noir - Rouge HISTORY_MSG_291;Niveau de noir - Vert HISTORY_MSG_292;Niveau de noir - Bleu +HISTORY_MSG_293;Simulation de Film +HISTORY_MSG_294;Simulation de Film - Force +HISTORY_MSG_295;Simulation de Film - Film HISTORY_NEWSNAPSHOT;Ajouter HISTORY_NEWSNAPSHOT_TOOLTIP;Raccourci: Alt-s HISTORY_SNAPSHOTS;Captures @@ -1497,6 +1500,12 @@ ZOOMPANEL_ZOOM100;Zoom à 100%\nRaccourci: z ZOOMPANEL_ZOOMFITSCREEN;Ajuster à la fenêtre\nRaccourci: f ZOOMPANEL_ZOOMIN;Zoom Avant\nRaccourci: + ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - +TP_FILMSIMULATION_LABEL;Simulation de Film +TP_FILMSIMULATION_STRENGTH;Force +PARTIALPASTER_FILMSIMULATION;Simulation de Film +TP_FILMSIMULATION_ZEROCLUTSFOUND;Veuillez préciser le dossier contenant les fichiers HaldCLUT dans les Préférences +PREFERENCES_FILMSIMULATION;Simulation de Film +PREFERENCES_CLUTSDIR;Dossier HaldCLUT !!!!!!!!!!!!!!!!!!!!!!!!! ! Untranslated keys follow; remove the ! prefix after an entry is translated. diff --git a/rtdata/languages/default b/rtdata/languages/default index ab1184d72..9e14fe764 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -513,6 +513,9 @@ HISTORY_MSG_289;Flat Field Automatic Clip Control HISTORY_MSG_290;Black Level - Red HISTORY_MSG_291;Black Level - Green HISTORY_MSG_292;Black Level - Blue +HISTORY_MSG_293;Film Simulation +HISTORY_MSG_294;Film Simulation - Strength +HISTORY_MSG_295;Film Simulation - Film HISTORY_NEWSNAPSHOT;Add HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s HISTORY_SNAPSHOTS;Snapshots @@ -1543,3 +1546,9 @@ ZOOMPANEL_ZOOM100;Zoom to 100%\nShortcut: z ZOOMPANEL_ZOOMFITSCREEN;Fit to screen\nShortcut: f ZOOMPANEL_ZOOMIN;Zoom In\nShortcut: + ZOOMPANEL_ZOOMOUT;Zoom Out\nShortcut: - +TP_FILMSIMULATION_LABEL;Film Simulation +TP_FILMSIMULATION_STRENGTH;Strength +PARTIALPASTER_FILMSIMULATION;Film Simulation +TP_FILMSIMULATION_ZEROCLUTSFOUND;Set HaldCLUT directory in Preferences +PREFERENCES_FILMSIMULATION;Film Simulation +PREFERENCES_CLUTSDIR;HaldCLUT directory \ No newline at end of file diff --git a/rtdata/profiles/BW/BW 1.pp3 b/rtdata/profiles/BW/BW 1.pp3 index 22ec48fd5..3dce4a89d 100644 --- a/rtdata/profiles/BW/BW 1.pp3 +++ b/rtdata/profiles/BW/BW 1.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -15,7 +15,7 @@ HighlightComprThreshold=33 ShadowCompr=50 CurveMode=Standard CurveMode2=Standard -Curve=1;0;0;0.040000000000000001;0.029999999999999999;0.17684498029510265;0.21732319394192093;0.70232558139534862;0.74883720930232545;1;1; +Curve=1;0;0;0.04;0.03;0.17684498029510265;0.21732319394192093;0.70232558139534862;0.74883720930232545;1;1; Curve2=0; [HLRecovery] @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -140,6 +140,9 @@ Strength=0.6 Feather=50 Roundness=50 +[Film Simulation] +Enabled=false + [HSV Equalizer] HCurve=0; SCurve=0; @@ -151,3 +154,6 @@ rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/BW/BW 2.pp3 b/rtdata/profiles/BW/BW 2.pp3 index 1e9400898..d47dadc62 100644 --- a/rtdata/profiles/BW/BW 2.pp3 +++ b/rtdata/profiles/BW/BW 2.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/BW/BW 3.pp3 b/rtdata/profiles/BW/BW 3.pp3 index 56f8e68ff..027b111ff 100644 --- a/rtdata/profiles/BW/BW 3.pp3 +++ b/rtdata/profiles/BW/BW 3.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -140,6 +140,9 @@ Strength=0.6 Feather=50 Roundness=50 +[Film Simulation] +Enabled=false + [HSV Equalizer] HCurve=0; SCurve=0; @@ -151,3 +154,6 @@ rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/BW/BW 4.pp3 b/rtdata/profiles/BW/BW 4.pp3 index c3cf60b09..8ef154def 100644 --- a/rtdata/profiles/BW/BW 4.pp3 +++ b/rtdata/profiles/BW/BW 4.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Default ISO High.pp3 b/rtdata/profiles/Default ISO High.pp3 index dd35a50e6..af4ef0244 100644 --- a/rtdata/profiles/Default ISO High.pp3 +++ b/rtdata/profiles/Default ISO High.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -64,11 +64,11 @@ ClCurve=0; [Sharpening] Enabled=false Method=usm -Radius=0.80000000000000004 +Radius=0.8 Amount=125 Threshold=20;80;2000;1200; OnlyEdges=false -EdgedetectionRadius=1.8999999999999999 +EdgedetectionRadius=1.9 EdgeTolerance=1800 HalocontrolEnabled=false HalocontrolAmount=85 @@ -132,7 +132,7 @@ Gamma=1.7 [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -165,12 +165,18 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + [RAW] CA=true HotDeadPixels=true diff --git a/rtdata/profiles/Default ISO Medium.pp3 b/rtdata/profiles/Default ISO Medium.pp3 index d35745762..f76504d4c 100644 --- a/rtdata/profiles/Default ISO Medium.pp3 +++ b/rtdata/profiles/Default ISO Medium.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -64,11 +64,11 @@ ClCurve=0; [Sharpening] Enabled=true Method=usm -Radius=0.80000000000000004 +Radius=0.8 Amount=150 Threshold=20;80;2000;1200; OnlyEdges=false -EdgedetectionRadius=1.8999999999999999 +EdgedetectionRadius=1.9 EdgeTolerance=1800 HalocontrolEnabled=false HalocontrolAmount=85 @@ -132,7 +132,7 @@ Gamma=1.7 [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -165,12 +165,18 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + [RAW] CA=true HotDeadPixels=true diff --git a/rtdata/profiles/Default.pp3 b/rtdata/profiles/Default.pp3 index 6dbc7a6f7..87d7c99a8 100644 --- a/rtdata/profiles/Default.pp3 +++ b/rtdata/profiles/Default.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -68,7 +68,7 @@ Radius=0.5 Amount=250 Threshold=20;80;2000;1200; OnlyEdges=false -EdgedetectionRadius=1.8999999999999999 +EdgedetectionRadius=1.9 EdgeTolerance=1800 HalocontrolEnabled=false HalocontrolAmount=85 @@ -132,7 +132,7 @@ Gamma=1.7 [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -165,12 +165,18 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + [RAW] CA=true HotDeadPixels=false diff --git a/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 index 25a3553a6..7ade2d0bc 100644 --- a/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -75,6 +75,9 @@ ReweightingIterates=0 [Shadows & Highlights] Enabled=false +[Film Simulation] +Enabled=false + [HSV Equalizer] HCurve=0; SCurve=0; @@ -85,3 +88,7 @@ LumaMode=false rCurve=3;0;0;0.047430830039525626;0.21343873517786571;1;1; gCurve=3;0;0;1;1; bCurve=3;0;0;0.22924901185770752;0.031620553359683806;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 b/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 index 7ed6b967a..8f12fd64d 100644 --- a/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.047430830039525626;0.21343873517786571;1;1; gCurve=3;0;0;1;1; bCurve=3;0;0;0.22924901185770752;0.031620553359683806;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Amber 1.pp3 b/rtdata/profiles/Faded/Faded Amber 1.pp3 index d90098dd9..5a2cd82e2 100644 --- a/rtdata/profiles/Faded/Faded Amber 1.pp3 +++ b/rtdata/profiles/Faded/Faded Amber 1.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -75,6 +75,9 @@ ReweightingIterates=0 [Shadows & Highlights] Enabled=false +[Film Simulation] +Enabled=false + [HSV Equalizer] HCurve=0; SCurve=0; @@ -85,3 +88,7 @@ LumaMode=false rCurve=3;0;0;0.047430830039525626;0.21343873517786571;1;1; gCurve=3;0;0;1;1; bCurve=3;0;0;0.22924901185770752;0.031620553359683806;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 index 8cd869961..82162bc08 100644 --- a/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -75,6 +75,9 @@ ReweightingIterates=0 [Shadows & Highlights] Enabled=false +[Film Simulation] +Enabled=false + [HSV Equalizer] HCurve=0; SCurve=0; @@ -85,3 +88,7 @@ LumaMode=false rCurve=3;0;0;0.24505928853754988;0.055335968379447285;1;1; gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 b/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 index 69e65028e..9d6158618 100644 --- a/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -75,6 +75,9 @@ ReweightingIterates=0 [Shadows & Highlights] Enabled=false +[Film Simulation] +Enabled=false + [HSV Equalizer] HCurve=0; SCurve=0; @@ -85,3 +88,7 @@ LumaMode=false rCurve=3;0;0;0.24505928853754988;0.055335968379447285;1;1; gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Blue 1.pp3 b/rtdata/profiles/Faded/Faded Blue 1.pp3 index ec36fb7e3..17c9747b5 100644 --- a/rtdata/profiles/Faded/Faded Blue 1.pp3 +++ b/rtdata/profiles/Faded/Faded Blue 1.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.24505928853754988;0.055335968379447285;1;1; gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 b/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 index df0653315..15e22f329 100644 --- a/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 +++ b/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.24505928853754988;0.055335968379447285;0.81034482758620685;0.94827586206896552;1;1; gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Blue Pink.pp3 b/rtdata/profiles/Faded/Faded Blue Pink.pp3 index f61733589..0d229a570 100644 --- a/rtdata/profiles/Faded/Faded Blue Pink.pp3 +++ b/rtdata/profiles/Faded/Faded Blue Pink.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.24505928853754988;0.055335968379447285;0.81034482758620685;0.94827586206896552;1;1; gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 index 11175d3fb..3b53cd7e0 100644 --- a/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.16206896551724165;0.079310344827586171;1;1; gCurve=3;0;0;0.1655172413793104;0.034482758620689787;1;1; bCurve=3;0;0;0.55827995093362426;0.31529235382308862;0.91699604743083007;0.76284584980237169;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 index b71f344c8..259fca94b 100644 --- a/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.16206896551724165;0.079310344827586171;1;1; gCurve=3;0;0;0.1655172413793104;0.034482758620689787;1;1; bCurve=3;0;0;0.55827995093362426;0.31529235382308862;0.91699604743083007;0.76284584980237169;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Golden 1.pp3 b/rtdata/profiles/Faded/Faded Golden 1.pp3 index 699e1fb61..cf8cd6162 100644 --- a/rtdata/profiles/Faded/Faded Golden 1.pp3 +++ b/rtdata/profiles/Faded/Faded Golden 1.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.086956521739130432;0.090909090909090856;1;1; gCurve=3;0;0;0.20266764462192638;0.12923950395936107;1;1; bCurve=1;0;0;0.25296442687747034;0.22529644268774709;0.8656126482213431;0.80632411067193566;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Golden 2.pp3 b/rtdata/profiles/Faded/Faded Golden 2.pp3 index 78619557e..31bb3b11f 100644 --- a/rtdata/profiles/Faded/Faded Golden 2.pp3 +++ b/rtdata/profiles/Faded/Faded Golden 2.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.086956521739130432;0.090909090909090856;0.94466403162055268;0.89328063241106692;1;1; gCurve=3;0;0;0.20266764462192638;0.12923950395936107;0.90118577075098805;0.88537549407114613;1;1; bCurve=1;0;0;0.25296442687747034;0.22529644268774709;0.8656126482213431;0.80632411067193566;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 index 3633783a9..333774463 100644 --- a/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Green 1 TM.pp3 b/rtdata/profiles/Faded/Faded Green 1 TM.pp3 index b7c24ef44..8bdd42855 100644 --- a/rtdata/profiles/Faded/Faded Green 1 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Green 1 TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Green 1.pp3 b/rtdata/profiles/Faded/Faded Green 1.pp3 index 88e95ccfd..4c594d5b1 100644 --- a/rtdata/profiles/Faded/Faded Green 1.pp3 +++ b/rtdata/profiles/Faded/Faded Green 1.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Green 2.pp3 b/rtdata/profiles/Faded/Faded Green 2.pp3 index d974b003e..41de3ccbe 100644 --- a/rtdata/profiles/Faded/Faded Green 2.pp3 +++ b/rtdata/profiles/Faded/Faded Green 2.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.083003952569169981;0.075098814229249022;0.74703557312252944;0.81422924901185822;1;1; gCurve=3;0;0;0.32806324110671931;0.43083003952569182;1;1; bCurve=3;0;0;0.040612308653546869;0.12528693478940064;0.85375494071146218;0.9130434782608694;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Green 3.pp3 b/rtdata/profiles/Faded/Faded Green 3.pp3 index b4e4c792c..227896ee8 100644 --- a/rtdata/profiles/Faded/Faded Green 3.pp3 +++ b/rtdata/profiles/Faded/Faded Green 3.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.24505928853754988;0.055335968379447285;0.81034482758620685;0.94827586206896552;1;1; gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Neutral TM.pp3 b/rtdata/profiles/Faded/Faded Neutral TM.pp3 index e39a6502a..36cdbcae0 100644 --- a/rtdata/profiles/Faded/Faded Neutral TM.pp3 +++ b/rtdata/profiles/Faded/Faded Neutral TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;1;1; gCurve=3;0;0;1;1; bCurve=3;0;0;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Neutral.pp3 b/rtdata/profiles/Faded/Faded Neutral.pp3 index 08d70126f..45937d3b7 100644 --- a/rtdata/profiles/Faded/Faded Neutral.pp3 +++ b/rtdata/profiles/Faded/Faded Neutral.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;1;1; gCurve=3;0;0;1;1; bCurve=3;0;0;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 index 7829a6ee1..48687bf50 100644 --- a/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.15517241379310354;0.075862068965517254;1;1; gCurve=3;0;0;0.13793103448275862;0.055172413793103607;1;1; bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 b/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 index 8906bbe4a..647225420 100644 --- a/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.15517241379310354;0.075862068965517254;1;1; gCurve=3;0;0;0.13793103448275862;0.055172413793103607;1;1; bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Purple 1.pp3 b/rtdata/profiles/Faded/Faded Purple 1.pp3 index f496cd4ee..10d318c98 100644 --- a/rtdata/profiles/Faded/Faded Purple 1.pp3 +++ b/rtdata/profiles/Faded/Faded Purple 1.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.15517241379310354;0.075862068965517254;1;1; gCurve=3;0;0;0.13793103448275862;0.055172413793103607;1;1; bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 b/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 index d49edb003..a5c2833cd 100644 --- a/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false -rCurve=3;0;0;0.15517241379310354;0.075862068965517254;0.69999999999999973;0.90000000000000013;1;1; +rCurve=3;0;0;0.15517241379310354;0.075862068965517254;0.7;0.9;1;1; gCurve=3;0;0;0.13793103448275862;0.055172413793103607;0.69655172413793076;0.90689655172413808;1;1; bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Purple 2.pp3 b/rtdata/profiles/Faded/Faded Purple 2.pp3 index e164e0671..57deef59f 100644 --- a/rtdata/profiles/Faded/Faded Purple 2.pp3 +++ b/rtdata/profiles/Faded/Faded Purple 2.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.15517241379310354;0.075862068965517254;0.69999999999999973;0.90000000000000013;1;1; gCurve=3;0;0;0.13793103448275862;0.055172413793103607;0.69655172413793076;0.90689655172413808;1;1; bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 b/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 index 27cdf8efc..4c3d6592a 100644 --- a/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -77,11 +77,18 @@ Enabled=false [HSV Equalizer] HCurve=0; -SCurve=1;0.073578595317725717;0.69732441471571893;0.34999999999999998;0.34999999999999998;0.33333333333333331;0.5;0.34999999999999998;0.34999999999999998;0.5;0.5;0.34999999999999998;0.34999999999999998;0.66666666666666663;0.5;0.34999999999999998;0.34999999999999998;0.83333333333333326;0.5;0.34999999999999998;0.34999999999999998; +SCurve=1;0.073578595317725717;0.69732441471571893;0.35;0.35;0.33333333333333331;0.5;0.35;0.35;0.5;0.5;0.35;0.35;0.66666666666666663;0.5;0.35;0.35;0.83333333333333326;0.5;0.35;0.35; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.18620689655172415;0.044827586206896544;0.85517241379310338;0.91379310344827591;1;1; gCurve=3;0;0;0.13224137931034488;0.048793103448275733;0.95172413793103461;0.8655172413793103;1;1; bCurve=3;0;0;0.12758620689655173;0.075862068965517226;0.90344827586206922;0.78620689655172393;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 b/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 index 1eb84fc5e..096bfbeac 100644 --- a/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 +++ b/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -77,11 +77,18 @@ Enabled=false [HSV Equalizer] HCurve=0; -SCurve=1;0.073578595317725717;0.69732441471571893;0.34999999999999998;0.34999999999999998;0.33333333333333331;0.5;0.34999999999999998;0.34999999999999998;0.5;0.5;0.34999999999999998;0.34999999999999998;0.66666666666666663;0.5;0.34999999999999998;0.34999999999999998;0.83333333333333326;0.5;0.34999999999999998;0.34999999999999998; +SCurve=1;0.073578595317725717;0.69732441471571893;0.35;0.35;0.33333333333333331;0.5;0.35;0.35;0.5;0.5;0.35;0.35;0.66666666666666663;0.5;0.35;0.35;0.83333333333333326;0.5;0.35;0.35; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.18620689655172415;0.044827586206896544;0.85517241379310338;0.91379310344827591;1;1; gCurve=3;0;0;0.13224137931034488;0.048793103448275733;0.95172413793103461;0.8655172413793103;1;1; bCurve=3;0;0;0.12758620689655173;0.075862068965517226;0.90344827586206922;0.78620689655172393;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Teal Orange.pp3 b/rtdata/profiles/Faded/Faded Teal Orange.pp3 index 0e9ccca66..6a0a2d65d 100644 --- a/rtdata/profiles/Faded/Faded Teal Orange.pp3 +++ b/rtdata/profiles/Faded/Faded Teal Orange.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -77,11 +77,18 @@ Enabled=false [HSV Equalizer] HCurve=0; -SCurve=1;0.073578595317725717;0.69732441471571893;0.34999999999999998;0.34999999999999998;0.33333333333333331;0.5;0.34999999999999998;0.34999999999999998;0.5;0.5;0.34999999999999998;0.34999999999999998;0.66666666666666663;0.5;0.34999999999999998;0.34999999999999998;0.83333333333333326;0.5;0.34999999999999998;0.34999999999999998; +SCurve=1;0.073578595317725717;0.69732441471571893;0.35;0.35;0.33333333333333331;0.5;0.35;0.35;0.5;0.5;0.35;0.35;0.66666666666666663;0.5;0.35;0.35;0.83333333333333326;0.5;0.35;0.35; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.18620689655172415;0.044827586206896544;0.85517241379310338;0.91379310344827591;1;1; gCurve=3;0;0;0.13224137931034488;0.048793103448275733;0.95172413793103461;0.8655172413793103;1;1; bCurve=3;0;0;0.12758620689655173;0.075862068965517226;0.90344827586206922;0.78620689655172393;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 index b351dae0f..3ab9d32e9 100644 --- a/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; gCurve=3;0;0;1;1; bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 b/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 index 01febd92d..bc405daa3 100644 --- a/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; gCurve=3;0;0;1;1; bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Warm 1.pp3 b/rtdata/profiles/Faded/Faded Warm 1.pp3 index 6b8210ae1..a96b0a4b1 100644 --- a/rtdata/profiles/Faded/Faded Warm 1.pp3 +++ b/rtdata/profiles/Faded/Faded Warm 1.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -84,8 +84,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; gCurve=3;0;0;1;1; bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Warm 2.pp3 b/rtdata/profiles/Faded/Faded Warm 2.pp3 index 1f8194182..ec7a07f9f 100644 --- a/rtdata/profiles/Faded/Faded Warm 2.pp3 +++ b/rtdata/profiles/Faded/Faded Warm 2.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; gCurve=3;0;0;1;1; bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Faded/Faded Warm 3.pp3 b/rtdata/profiles/Faded/Faded Warm 3.pp3 index ab787676c..bd88bae97 100644 --- a/rtdata/profiles/Faded/Faded Warm 3.pp3 +++ b/rtdata/profiles/Faded/Faded Warm 3.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -80,8 +80,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; gCurve=3;0;0;1;1; bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.57312252964427013;0.95652173913043359;1;1; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Generic/Deep Shadows.pp3 b/rtdata/profiles/Generic/Deep Shadows.pp3 index e7aba345d..06dad68e6 100644 --- a/rtdata/profiles/Generic/Deep Shadows.pp3 +++ b/rtdata/profiles/Generic/Deep Shadows.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Generic/Equilibrated.pp3 b/rtdata/profiles/Generic/Equilibrated.pp3 index b42576962..bcb437bb6 100644 --- a/rtdata/profiles/Generic/Equilibrated.pp3 +++ b/rtdata/profiles/Generic/Equilibrated.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Generic/High-Key.pp3 b/rtdata/profiles/Generic/High-Key.pp3 index 169ce7226..0b32f7b44 100644 --- a/rtdata/profiles/Generic/High-Key.pp3 +++ b/rtdata/profiles/Generic/High-Key.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Generic/Natural 1.pp3 b/rtdata/profiles/Generic/Natural 1.pp3 index 5c4a399a2..84ec545d7 100644 --- a/rtdata/profiles/Generic/Natural 1.pp3 +++ b/rtdata/profiles/Generic/Natural 1.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -15,7 +15,7 @@ HighlightComprThreshold=33 ShadowCompr=50 CurveMode=Standard CurveMode2=Standard -Curve=1;0;0;0.040000000000000001;0.029999999999999999;0.17684498029510265;0.21732319394192093;0.70232558139534862;0.74883720930232545;1;1; +Curve=1;0;0;0.04;0.03;0.17684498029510265;0.21732319394192093;0.70232558139534862;0.74883720930232545;1;1; Curve2=0; [HLRecovery] @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Generic/Natural 2.pp3 b/rtdata/profiles/Generic/Natural 2.pp3 index 6bb41b2b5..5f9820490 100644 --- a/rtdata/profiles/Generic/Natural 2.pp3 +++ b/rtdata/profiles/Generic/Natural 2.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Generic/Punchy 1.pp3 b/rtdata/profiles/Generic/Punchy 1.pp3 index 1940202b7..ab7ff740f 100644 --- a/rtdata/profiles/Generic/Punchy 1.pp3 +++ b/rtdata/profiles/Generic/Punchy 1.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Generic/Punchy 2.pp3 b/rtdata/profiles/Generic/Punchy 2.pp3 index 0415c5fb9..6f1bbc6ca 100644 --- a/rtdata/profiles/Generic/Punchy 2.pp3 +++ b/rtdata/profiles/Generic/Punchy 2.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=true @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Pop/Pop 1.pp3 b/rtdata/profiles/Pop/Pop 1.pp3 index cd27dd686..4c0832d2a 100644 --- a/rtdata/profiles/Pop/Pop 1.pp3 +++ b/rtdata/profiles/Pop/Pop 1.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -15,7 +15,7 @@ HighlightComprThreshold=0 ShadowCompr=50 CurveMode=FilmLike CurveMode2=Standard -Curve=3;0;0;0.084000000000000005;0;0.187;0.188;0.442;0.57599999999999996;1;1; +Curve=3;0;0;0.084;0;0.187;0.188;0.442;0.576;1;1; Curve2=0; [HLRecovery] @@ -58,7 +58,7 @@ Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.5;0.40000000000000002;1;1; +LCurve=3;0;0;0.5;0.4;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -106,14 +106,14 @@ CurveMode=Brightness CurveMode2=Lightness CurveMode3=Colorfullness Curve=0; -Curve2=3;0;0;0.14999999999999999;0;0.67000000000000004;0.91000000000000003;1;1; -Curve3=3;0;0;0.080000000000000002;0.02;0.29999999999999999;0.5;1;1; +Curve2=3;0;0;0.15;0;0.67;0.91;1;1; +Curve3=3;0;0;0.08;0.02;0.3;0.5;1;1; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.3999999999999999 -Scale=0.10000000000000001 +EdgeStopping=2.4 +Scale=0.1 ReweightingIterates=0 [Shadows & Highlights] @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false +[ColorToning] +Enabled=false + [RAW] CA=true HotDeadPixels=true diff --git a/rtdata/profiles/Pop/Pop 2 L.pp3 b/rtdata/profiles/Pop/Pop 2 L.pp3 index 501f97a9f..0abb65b1e 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.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -15,7 +15,7 @@ HighlightComprThreshold=0 ShadowCompr=50 CurveMode=FilmLike CurveMode2=Standard -Curve=3;0;0;0.17899999999999999;0;0.38400000000000001;0.502;1;1; +Curve=3;0;0;0.179;0;0.384;0.502;1;1; Curve2=0; [HLRecovery] @@ -58,7 +58,7 @@ Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.12;0.29999999999999999;0.5;0.46000000000000002;1;1; +LCurve=3;0;0;0.12;0.3;0.5;0.46;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -106,14 +106,14 @@ CurveMode=Brightness CurveMode2=Lightness CurveMode3=Colorfullness Curve=0; -Curve2=3;0;0;0.14999999999999999;0;0.67000000000000004;0.91000000000000003;1;1; -Curve3=3;0;0;0.080000000000000002;0.02;0.29999999999999999;0.5;1;1; +Curve2=3;0;0;0.15;0;0.67;0.91;1;1; +Curve3=3;0;0;0.08;0.02;0.3;0.5;1;1; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.3999999999999999 -Scale=0.10000000000000001 +EdgeStopping=2.4 +Scale=0.1 ReweightingIterates=0 [Shadows & Highlights] @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false +[ColorToning] +Enabled=false + [RAW] CA=true HotDeadPixels=true diff --git a/rtdata/profiles/Pop/Pop 3 Skin.pp3 b/rtdata/profiles/Pop/Pop 3 Skin.pp3 index 9ca9bf43a..286d54b43 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.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -15,7 +15,7 @@ HighlightComprThreshold=0 ShadowCompr=50 CurveMode=SatAndValueBlending CurveMode2=Standard -Curve=3;0;0;0.084000000000000005;0;0.187;0.188;0.442;0.57599999999999996;1;1; +Curve=3;0;0;0.084;0;0.187;0.188;0.442;0.576;1;1; Curve2=0; [HLRecovery] @@ -58,7 +58,7 @@ Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.5;0.40000000000000002;1;1; +LCurve=3;0;0;0.5;0.4;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -106,14 +106,14 @@ CurveMode=Brightness CurveMode2=Lightness CurveMode3=Colorfullness Curve=0; -Curve2=3;0;0;0.14999999999999999;0;0.67000000000000004;0.91000000000000003;1;1; -Curve3=3;0;0;0.080000000000000002;0.02;0.38;0.72999999999999998;1;1; +Curve2=3;0;0;0.15;0;0.67;0.91;1;1; +Curve3=3;0;0;0.08;0.02;0.38;0.73;1;1; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.3999999999999999 -Scale=0.10000000000000001 +EdgeStopping=2.4 +Scale=0.1 ReweightingIterates=0 [Shadows & Highlights] @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false +[ColorToning] +Enabled=false + [RAW] CA=true HotDeadPixels=true diff --git a/rtdata/profiles/Pop/Pop 4 BW.pp3 b/rtdata/profiles/Pop/Pop 4 BW.pp3 index 00029081c..d881fe822 100644 --- a/rtdata/profiles/Pop/Pop 4 BW.pp3 +++ b/rtdata/profiles/Pop/Pop 4 BW.pp3 @@ -1,11 +1,11 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false Clip=0.02 -Compensation=0.66000000000000003 +Compensation=0.66 Brightness=0 Contrast=0 Saturation=0 @@ -15,7 +15,7 @@ HighlightComprThreshold=0 ShadowCompr=50 CurveMode=SatAndValueBlending CurveMode2=Standard -Curve=3;0;0;0.084000000000000005;0;0.187;0.188;0.58699999999999997;0.74199999999999999;1;1; +Curve=3;0;0;0.084;0;0.187;0.188;0.587;0.742;1;1; Curve2=0; [HLRecovery] @@ -58,7 +58,7 @@ Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.21199999999999999;0.11899999999999999;0.67400000000000004;0.77300000000000002;1;1; +LCurve=3;0;0;0.212;0.119;0.674;0.773;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -96,7 +96,7 @@ J-Contrast=0 Q-Contrast=0 H-Hue=0 RSTProtection=0 -AdaptScene=164.32900000000001 +AdaptScene=164.329 AutoAdapscen=true SurrSource=false Gamut=true @@ -105,15 +105,15 @@ Tonecie=true CurveMode=Lightness CurveMode2=Lightness CurveMode3=Colorfullness -Curve=3;0;0;0.14999999999999999;0;0.54500000000000004;1;1;1; +Curve=3;0;0;0.15;0;0.545;1;1;1; Curve2=0; Curve3=0; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.3999999999999999 -Scale=0.10000000000000001 +EdgeStopping=2.4 +Scale=0.1 ReweightingIterates=0 [Shadows & Highlights] @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false +[ColorToning] +Enabled=false + [RAW] CA=true HotDeadPixels=true diff --git a/rtdata/profiles/Portrait/Portrait Lejto.pp3 b/rtdata/profiles/Portrait/Portrait Lejto.pp3 index 5460fe5c5..92d7a0a89 100644 --- a/rtdata/profiles/Portrait/Portrait Lejto.pp3 +++ b/rtdata/profiles/Portrait/Portrait Lejto.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -112,7 +112,7 @@ Curve3=0; [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -145,9 +145,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Portrait/Portrait Smooth.pp3 b/rtdata/profiles/Portrait/Portrait Smooth.pp3 index e23693302..6de19439e 100644 --- a/rtdata/profiles/Portrait/Portrait Smooth.pp3 +++ b/rtdata/profiles/Portrait/Portrait Smooth.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -58,10 +58,10 @@ Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=50 LCredsk=true -LCurve=3;0;0;0.042700000000000002;0.014;0.16200000000000001;0.16200000000000001;0.54700000000000004;0.93300000000000005;1;1; +LCurve=3;0;0;0.0427;0.014;0.162;0.162;0.547;0.933;1;1; aCurve=0; bCurve=0; -ccCurve=1;0;0;0.254;0.29999999999999999;1;1; +ccCurve=1;0;0;0.254;0.3;1;1; chCurve=0; lhCurve=0; hhCurve=0; @@ -111,8 +111,8 @@ Curve3=0; [EPD] Enabled=false -Strength=0.29999999999999999 -EdgeStopping=1.3999999999999999 +Strength=0.3 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -141,9 +141,12 @@ Feather=50 Roundness=50 [HSV Equalizer] -HCurve=1;0;0.5;0.34999999999999998;0.34999999999999998;0.16400000000000001;0.48999999999999999;0.34999999999999998;0.34999999999999998;0.33300000000000002;0.5;0.34999999999999998;0.34999999999999998;0.5;0.5;0.34999999999999998;0.34999999999999998;0.66600000000000004;0.5;0.34999999999999998;0.34999999999999998;0.83299999999999996;0.5;0.34999999999999998;0.34999999999999998; +HCurve=1;0;0.5;0.35;0.35;0.164;0.49;0.35;0.35;0.333;0.5;0.35;0.35;0.5;0.5;0.35;0.35;0.666;0.5;0.35;0.35;0.833;0.5;0.35;0.35; SCurve=0; -VCurve=1;0;0.5;0.34999999999999998;0.34999999999999998;0.16600000000000001;0.5;0.34999999999999998;0.34999999999999998;0.33300000000000002;0.5;0.34999999999999998;0.34999999999999998;0.5;0.5;0.34999999999999998;0.34999999999999998;0.66600000000000004;0.5;0.34999999999999998;0.34999999999999998;0.83299999999999996;0.5;0.34999999999999998;0.34999999999999998; +VCurve=1;0;0.5;0.35;0.35;0.166;0.5;0.35;0.35;0.333;0.5;0.35;0.35;0.5;0.5;0.35;0.35;0.666;0.5;0.35;0.35;0.833;0.5;0.35;0.35; + +[Film Simulation] +Enabled=false [RGB Curves] LumaMode=false @@ -151,3 +154,6 @@ rCurve=1;0;0;0.25;0.25;0.5;0.5;0.75;0.75;1;1; gCurve=1;0;0;0.25;0.25;0.5;0.5;0.75;0.75;1;1; bCurve=1;0;0;0.25;0.25;0.5;0.5;0.75;0.75;1;1; +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 b/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 index f692db268..ce3eb1b0c 100644 --- a/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -123,7 +123,7 @@ Gamma=1.7 [EPD] Enabled=true Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=0.25 ReweightingIterates=0 @@ -156,8 +156,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Skintones/Skintones - Natural.pp3 b/rtdata/profiles/Skintones/Skintones - Natural.pp3 index f6c2769a5..415b5d189 100644 --- a/rtdata/profiles/Skintones/Skintones - Natural.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Natural.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -123,7 +123,7 @@ Gamma=1.7 [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=0.25 ReweightingIterates=0 @@ -156,8 +156,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 index 28a1db08c..879d2f933 100644 --- a/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -123,7 +123,7 @@ Gamma=1.7 [EPD] Enabled=true Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=0.25 ReweightingIterates=0 @@ -156,8 +156,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 index 825c177b5..d022f261b 100644 --- a/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -123,7 +123,7 @@ Gamma=1.7 [EPD] Enabled=true Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=0.25 ReweightingIterates=0 @@ -156,8 +156,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Skintones/Skintones - Pale.pp3 b/rtdata/profiles/Skintones/Skintones - Pale.pp3 index 3387ec173..88675ff03 100644 --- a/rtdata/profiles/Skintones/Skintones - Pale.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Pale.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -123,7 +123,7 @@ Gamma=1.7 [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -156,8 +156,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 b/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 index 21841dce3..d2b66d55e 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.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -123,7 +123,7 @@ Gamma=1.7 [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -156,8 +156,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=true rCurve=3;0;0;0.058419243986254393;0.28522336769759427;0.46735395189003465;0.890034364261168;1;1; gCurve=3;0;0;0.96563573883161546;0.66323024054982871;1;1; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 b/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 index 86e0fdc73..546aad561 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.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -123,7 +123,7 @@ Gamma=1.7 [EPD] Enabled=false Strength=0.25 -EdgeStopping=1.3999999999999999 +EdgeStopping=1.4 Scale=1 ReweightingIterates=0 @@ -156,8 +156,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=true rCurve=3;0;0;0.29209621993127149;0.054982817869415793;0.90034364261168398;0.46391752577319617;1;1; gCurve=3;0;0;0.67697594501718261;0.95532646048109982;1;1; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 b/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 index 870b84f4b..c1ff332b1 100644 --- a/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -122,8 +122,8 @@ Gamma=1.7 [EPD] Enabled=true -Strength=0.14999999999999999 -EdgeStopping=1.3999999999999999 +Strength=0.15 +EdgeStopping=1.4 Scale=0.25 ReweightingIterates=0 @@ -156,8 +156,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Skintones/Skintones - Studio.pp3 b/rtdata/profiles/Skintones/Skintones - Studio.pp3 index 7ee7ca690..1a5167efa 100644 --- a/rtdata/profiles/Skintones/Skintones - Studio.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Studio.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -122,8 +122,8 @@ Gamma=1.7 [EPD] Enabled=false -Strength=0.14999999999999999 -EdgeStopping=1.3999999999999999 +Strength=0.15 +EdgeStopping=1.4 Scale=0.25 ReweightingIterates=0 @@ -156,8 +156,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 index 3d45cedde..cee28958f 100644 --- a/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 +++ b/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -122,8 +122,8 @@ Gamma=1.7 [EPD] Enabled=true -Strength=0.14999999999999999 -EdgeStopping=1.3999999999999999 +Strength=0.15 +EdgeStopping=1.4 Scale=0.25 ReweightingIterates=0 @@ -156,8 +156,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 index 38740fd61..27429b629 100644 --- a/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 +++ b/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 @@ -1,6 +1,6 @@ [Version] -AppVersion=4.0.12 -Version=319 +AppVersion=4.1.50 +Version=321 [Exposure] Auto=false @@ -122,8 +122,8 @@ Gamma=1.7 [EPD] Enabled=false -Strength=0.14999999999999999 -EdgeStopping=1.3999999999999999 +Strength=0.15 +EdgeStopping=1.4 Scale=0.25 ReweightingIterates=0 @@ -156,8 +156,15 @@ HCurve=0; SCurve=0; VCurve=0; +[Film Simulation] +Enabled=false + [RGB Curves] LumaMode=false rCurve=0; gCurve=0; bCurve=0; + +[ColorToning] +Enabled=false + diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 1dbe2dcb5..05bd4312c 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -22,6 +22,7 @@ set (RTENGINESOURCEFILES safegtk.cc colortemp.cc curves.cc flatcurves.cc diagona cJSON.c camconst.cc klt/convolve.cc klt/error.cc klt/klt.cc klt/klt_util.cc klt/pnmio.cc klt/pyramid.cc klt/selectGoodFeatures.cc klt/storeFeatures.cc klt/trackFeatures.cc klt/writeFeatures.cc + clutstore.cc ) include_directories (BEFORE "${CMAKE_CURRENT_BINARY_DIR}") diff --git a/rtengine/clutstore.cc b/rtengine/clutstore.cc new file mode 100644 index 000000000..2604b2e2d --- /dev/null +++ b/rtengine/clutstore.cc @@ -0,0 +1,400 @@ +#include "clutstore.h" +#include "rt_math.h" +#include "stdimagesource.h" +#include "safegtk.h" + +rtengine::CLUTStore clutStore; + +using namespace rtengine; + +const float MAXVAL8 = 255.; + +CLUTStore::CLUTStore() +: m_refCount( 0 ) +{ +} + +CLUT* CLUTStore::getClut( Glib::ustring filename ) +{ + //MyMutex::MyLock lock(m_mutex); // copypasted from iccstore + CLUT *result = 0; + if ( !m_lastHaldClut.isValid() || m_lastFilename != filename ) + { + takeUpClut(); + m_lastHaldClut.load( filename ); + } + if ( m_lastHaldClut.isValid() ) + { + result = &m_lastHaldClut; + m_lastFilename = filename; + ++m_refCount; + } + else + { + m_mutex.unlock(); + } + return result; +} + +void CLUTStore::takeUpClut() +{ + m_mutex.lock(); +} + +void CLUTStore::releaseClut( CLUT *clut ) +{ + if ( clut && --m_refCount == 0 ) + { + m_mutex.unlock(); + } +} + +void CLUTStore::clearCache() +{ + m_lastHaldClut.clear(); + m_lastFilename.clear(); +} + +void rtengine::splitClutFilename( Glib::ustring filename, Glib::ustring &name, Glib::ustring &extension, Glib::ustring &profileName ) +{ + filename = Glib::path_get_basename( filename ); + name = filename; + //remove dirs + size_t lastSlashPos = filename.find_last_of( "/" ); + if ( lastSlashPos == Glib::ustring::npos ) + { + lastSlashPos = filename.find_last_of( "\\" ); + } + + size_t lastDotPos = filename.find_last_of( '.' ); + if ( lastDotPos != Glib::ustring::npos ) + { + name = filename.substr( 0, lastDotPos ); + extension = filename.substr( lastDotPos + 1, Glib::ustring::npos ); + } + profileName = "sRGB"; // sRGB by default + static std::vector workingProfiles = rtengine::getWorkingProfiles(); + for ( std::vector::iterator it = workingProfiles.begin(); + it != workingProfiles.end(); + ++it ) + { + Glib::ustring ¤tProfile = *it; + if ( std::search( name.rbegin(), name.rend(), currentProfile.rbegin(), currentProfile.rend() ) == name.rbegin() ) + { + profileName = currentProfile; + name = name.substr( 0, name.size() - currentProfile.size() ); + break; + } + } +} + +//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HaldCLUT::HaldCLUT() +: m_clutImage( 0 ), + m_level (0), + m_profile( "sRGB" ) +{} + +HaldCLUT::~HaldCLUT() +{ +} + +void HaldCLUT::clear() +{ + if ( m_clutImage ) + { + m_clutImage->free(); + m_clutImage = 0; + } + m_filename.clear(); +} + +void HaldCLUT::load( Glib::ustring filename ) +{ + if ( m_filename != filename ) + { + clear(); + m_clutImage = loadFile( filename, "", m_level ); + Glib::ustring name, ext; + splitClutFilename( filename, name, ext, m_profile ); + if ( m_clutImage ) + { + m_filename = filename; + } + } +} + +Glib::ustring HaldCLUT::profile() const +{ + return m_profile; +} + +Imagefloat* HaldCLUT::loadFile( Glib::ustring filename, Glib::ustring workingColorSpace, int &outLevel ) +{ + Imagefloat *result = 0; + StdImageSource imgSrc; + if ( !safe_file_test( filename, Glib::FILE_TEST_EXISTS ) || imgSrc.load(filename) ) + { + return result; + } + + int fw, fh; + imgSrc.getFullSize (fw, fh, TR_NONE); + + bool valid = false; + //test on Hald format, copypasted from http://www.quelsolaar.com/technology/clut.html + if ( fw == fh ) + { + outLevel = 1; + for(; outLevel * outLevel * outLevel < fw; outLevel++); + if( !( outLevel * outLevel * outLevel > fw ) ) + { + valid = true; + } + } + + if ( valid ) + { + ColorTemp currWB = imgSrc.getWB(); + Imagefloat* baseImg = new Imagefloat (fw, fh); + PreviewProps pp (0, 0, fw, fh, 1); + + procparams::ColorManagementParams icm; + icm.working = workingColorSpace; + + imgSrc.getImage (currWB, TR_NONE, baseImg, pp, procparams::ToneCurveParams(), icm, procparams::RAWParams()); + if ( !workingColorSpace.empty() ) + { + imgSrc.convertColorSpace(baseImg, icm, currWB, procparams::RAWParams()); + } + result = baseImg; + } + return result; +} + +void HaldCLUT::loadClut( Imagefloat *img, RawClut &outClut ) +{ + img->normalizeFloatTo1(); + int y_size = img->getH(); + int x_size = img->getW(); + outClut.resize( x_size * y_size * 3 ); + int clutIdx = 0; + //int level = m_level * m_level; (unused) + for(int y = 0; y < y_size; y++) + { + for(int x = 0; x < x_size; x++) + { + outClut[ clutIdx * 3 ] = img->r( y, x ) * MAXVAL8; + outClut[ clutIdx * 3 + 1 ] = img->g( y, x ) * MAXVAL8; + outClut[ clutIdx * 3 + 2 ] = img->b( y, x ) * MAXVAL8; + + ++clutIdx; + } + } +} + +Imagefloat* HaldCLUT::generateIdentImage( int level ) +{ + int imageWidth = level * level * level; + Imagefloat *resultImg = new Imagefloat( imageWidth, imageWidth ); + + int cubeSideSize = level * level; + float step = MAXVALF / (cubeSideSize - 1); + int pos = 0; + for( int b = 0; b < cubeSideSize; ++b ) + { + for ( int g = 0; g < cubeSideSize; ++g ) + { + for ( int r = 0; r < cubeSideSize; ++r ) + { + int x = pos / imageWidth; + int y = pos % imageWidth; + resultImg->r( x, y ) = step * r; + resultImg->g( x, y ) = step * g; + resultImg->b( x, y ) = step * b; + ++pos; + } + } + } + return resultImg; +} + + +bool HaldCLUT::isValid() const +{ + return m_clutImage != 0; +} + +void HaldCLUT::getRGB( float rr, float gg, float bb, float &outR, float &outG, float &outB ) const +{ + rr /= MAXVALF; + gg /= MAXVALF; + bb /= MAXVALF; + correct( *m_clutImage, m_level, rr, gg, bb, outR, outG, outB ); +} + +inline float valF( unsigned char val ) +{ + return float( val ) / MAXVAL8; +} + +// copypasted from http://www.quelsolaar.com/technology/clut.html +void HaldCLUT::correct( const HaldCLUT::RawClut& clut, int level, float rr, float gg, float bb, float &outR, float &outG, float &outB ) +{ + int color, red, green, blue, i, j; + float tmp[6], r, g, b; + level = level * level; + + red = rr * (float)(level - 1); + if(red > level - 2) + red = (float)level - 2; + if(red < 0) + red = 0; + + green = gg * (float)(level - 1); + if(green > level - 2) + green = (float)level - 2; + if(green < 0) + green = 0; + + blue = bb * (float)(level - 1); + if(blue > level - 2) + blue = (float)level - 2; + if(blue < 0) + blue = 0; + + r = rr * (float)(level - 1) - red; + g = gg * (float)(level - 1) - green; + b = bb * (float)(level - 1) - blue; + + color = red + green * level + blue * level * level; + + i = color * 3; + j = (color + 1) * 3; + + tmp[0] = valF( clut[i++] ) * (1 - r) + valF( clut[j++] ) * r; + tmp[1] = valF( clut[i++] ) * (1 - r) + valF( clut[j++] ) * r; + tmp[2] = valF( clut[i] ) * (1 - r) + valF( clut[j] ) * r; + + i = (color + level) * 3; + j = (color + level + 1) * 3; + + tmp[3] = valF( clut[i++] ) * (1 - r) + valF( clut[j++] ) * r; + tmp[4] = valF( clut[i++] ) * (1 - r) + valF( clut[j++] ) * r; + tmp[5] = valF( clut[i] ) * (1 - r) + valF( clut[j] ) * r; + + outR = tmp[0] * (1 - g) + tmp[3] * g; + outG = tmp[1] * (1 - g) + tmp[4] * g; + outB = tmp[2] * (1 - g) + tmp[5] * g; + + i = (color + level * level) * 3; + j = (color + level * level + 1) * 3; + + tmp[0] = valF( clut[i++] ) * (1 - r) + valF( clut[j++] ) * r; + tmp[1] = valF( clut[i++] ) * (1 - r) + valF( clut[j++] ) * r; + tmp[2] = valF( clut[i] ) * (1 - r) + valF( clut[j] ) * r; + + i = (color + level + level * level) * 3; + j = (color + level + level * level + 1) * 3; + + tmp[3] = valF( clut[i++] ) * (1 - r) + valF( clut[j++] ) * r; + tmp[4] = valF( clut[i++] ) * (1 - r) + valF( clut[j++] ) * r; + tmp[5] = valF( clut[i] ) * (1 - r) + valF( clut[j] ) * r; + + tmp[0] = tmp[0] * (1 - g) + tmp[3] * g; + tmp[1] = tmp[1] * (1 - g) + tmp[4] * g; + tmp[2] = tmp[2] * (1 - g) + tmp[5] * g; + + outR = outR * (1 - b) + tmp[0] * b; + outG = outG * (1 - b) + tmp[1] * b; + outB = outB * (1 - b) + tmp[2] * b; +} + +inline void pos2xy( int pos, int imageSideSize, int &outX, int &outY ) +{ + outX = pos / imageSideSize; + outY = pos % imageSideSize; +} + +void HaldCLUT::correct( Imagefloat &clutImage, int level, float rr, float gg, float bb, float &outR, float &outG, float &outB ) +{ + int color, red, green, blue, i, j; + float tmp[6], r, g, b; + level = level * level; + int imageSideSize = clutImage.getW(); + + red = rr * (float)(level - 1); + if(red > level - 2) + red = (float)level - 2; + if(red < 0) + red = 0; + + green = gg * (float)(level - 1); + if(green > level - 2) + green = (float)level - 2; + if(green < 0) + green = 0; + + blue = bb * (float)(level - 1); + if(blue > level - 2) + blue = (float)level - 2; + if(blue < 0) + blue = 0; + + r = rr * (float)(level - 1) - red; + g = gg * (float)(level - 1) - green; + b = bb * (float)(level - 1) - blue; + + color = red + green * level + blue * level * level; + + + i = color; + j = color + 1; + int xi, yi, xj, yj; + pos2xy( i, imageSideSize, xi, yi ); + pos2xy( j, imageSideSize, xj, yj ); + + tmp[0] = clutImage.r( xi, yi ) * (1 - r) + clutImage.r( xj, yj ) * r; + tmp[1] = clutImage.g( xi, yi ) * (1 - r) + clutImage.g( xj, yj ) * r; + tmp[2] = clutImage.b( xi, yi ) * (1 - r) + clutImage.b( xj, yj ) * r; + + i = color + level; + j = color + level + 1; + pos2xy( i, imageSideSize, xi, yi ); + pos2xy( j, imageSideSize, xj, yj ); + + tmp[3] = clutImage.r( xi, yi ) * (1 - r) + clutImage.r( xj, yj ) * r; + tmp[4] = clutImage.g( xi, yi ) * (1 - r) + clutImage.g( xj, yj ) * r; + tmp[5] = clutImage.b( xi, yi ) * (1 - r) + clutImage.b( xj, yj ) * r; + + outR = tmp[0] * (1 - g) + tmp[3] * g; + outG = tmp[1] * (1 - g) + tmp[4] * g; + outB = tmp[2] * (1 - g) + tmp[5] * g; + + i = color + level * level; + j = color + level * level + 1; + pos2xy( i, imageSideSize, xi, yi ); + pos2xy( j, imageSideSize, xj, yj ); + + tmp[0] = clutImage.r( xi, yi ) * (1 - r) + clutImage.r( xj, yj ) * r; + tmp[1] = clutImage.g( xi, yi ) * (1 - r) + clutImage.g( xj, yj ) * r; + tmp[2] = clutImage.b( xi, yi ) * (1 - r) + clutImage.b( xj, yj ) * r; + + i = color + level + level * level; + j = color + level + level * level + 1; + pos2xy( i, imageSideSize, xi, yi ); + pos2xy( j, imageSideSize, xj, yj ); + + tmp[3] = clutImage.r( xi, yi ) * (1 - r) + clutImage.r( xj, yj ) * r; + tmp[4] = clutImage.g( xi, yi ) * (1 - r) + clutImage.g( xj, yj ) * r; + tmp[5] = clutImage.b( xi, yi ) * (1 - r) + clutImage.b( xj, yj ) * r; + + tmp[0] = tmp[0] * (1 - g) + tmp[3] * g; + tmp[1] = tmp[1] * (1 - g) + tmp[4] * g; + tmp[2] = tmp[2] * (1 - g) + tmp[5] * g; + + outR = outR * (1 - b) + tmp[0] * b; + outG = outG * (1 - b) + tmp[1] * b; + outB = outB * (1 - b) + tmp[2] * b; +} diff --git a/rtengine/clutstore.h b/rtengine/clutstore.h new file mode 100644 index 000000000..3fc08b582 --- /dev/null +++ b/rtengine/clutstore.h @@ -0,0 +1,93 @@ +#ifndef CLUT_STORE_INCLUDED +#define CLUT_STORE_INCLUDED + +#include +#include "../rtgui/threadutils.h" +#include "imagefloat.h" +#include + +namespace rtengine { + +// simple CLUT interface +class CLUT +{ +public: + virtual void getRGB( float r, float g, float b, float &outR, float &outG, float &outB ) const = 0; + virtual Glib::ustring profile() const = 0; +protected: + virtual ~CLUT() {}; +}; + +class HaldCLUT : public CLUT +{ +public: + HaldCLUT(); + ~HaldCLUT(); + void load( Glib::ustring filename ); + bool isValid() const; + void clear(); + + void getRGB( float r, float g, float b, float &outR, float &outG, float &outB ) const; + Glib::ustring profile() const; + + typedef std::vector RawClut; // using 8 bit for reduce memory usage + static void correct( const RawClut&, int level, float r, float g, float b, float &outR, float &outG, float &outB ); + static void correct( Imagefloat &clutImage, int level, float rr, float gg, float bb, float &outR, float &outG, float &outB ); + static Imagefloat* generateIdentImage( int level ); + static Imagefloat* loadFile( Glib::ustring filename, Glib::ustring workingColorSpace, int &outLevel ); + +private: + + void loadClut( Imagefloat *img, RawClut &outClut ); + + Imagefloat *m_clutImage; + int m_level; + Glib::ustring m_filename; + Glib::ustring m_profile; +}; + +// CLUT cache +class CLUTStore +{ +public: + CLUTStore(); + CLUT* getClut( Glib::ustring filename ); + void takeUpClut(); + void releaseClut( CLUT *clut ); + void clearCache(); + +private: + int m_refCount; + MyMutex m_mutex; + + HaldCLUT m_lastHaldClut; + Glib::ustring m_lastFilename; +}; + +void splitClutFilename( Glib::ustring filename, Glib::ustring &name, Glib::ustring &extension, Glib::ustring &profileName ); + +}; //namespace rtengine + +extern rtengine::CLUTStore clutStore; + +namespace rtengine { + +//support class for automate call of clutStore.releaseClut() +class ClutPtr +{ +public: + ClutPtr() : m_point( 0 ) {} + explicit ClutPtr(CLUT *p) : m_point( p ) {} + ~ClutPtr() { clutStore.releaseClut( m_point ); } + CLUT* operator-> () const { return m_point; } + operator bool() const { return m_point != 0; } + void set( CLUT *p ) { m_point = p; } + +private: + ClutPtr& operator=(ClutPtr const& cp ) {} // ... a return value is expected here + CLUT *m_point; +}; + +}; //namespace rtengine + +#endif diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index b738cd916..dbe60762a 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -40,6 +40,8 @@ #include "rt_math.h" #include "EdgePreservingDecomposition.h" #include "improccoordinator.h" +#include "clutstore.h" + #ifdef _OPENMP #include #endif @@ -2258,6 +2260,28 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, EditBuffer *e } } + ClutPtr colorLUT; + bool clutAndWorkingProfilesAreSame = false; + TMatrix work2xyz, xyz2clut, clut2xyz, xyz2work; + if ( params->filmSimulation.enabled && !params->filmSimulation.clutFilename.empty() ) + { + colorLUT.set( clutStore.getClut( params->filmSimulation.clutFilename ) ); + if ( colorLUT ) + { + clutAndWorkingProfilesAreSame = colorLUT->profile() == params->icm.working; + if ( !clutAndWorkingProfilesAreSame ) + { + work2xyz = iccStore->workingSpaceMatrix( params->icm.working ); + xyz2clut = iccStore->workingSpaceInverseMatrix( colorLUT->profile() ); + xyz2work = iccStore->workingSpaceInverseMatrix( params->icm.working ); + clut2xyz = iccStore->workingSpaceMatrix( colorLUT->profile() ); + } + } + } + + double filmSimCorrectedStrength = double(params->filmSimulation.strength)/100.; + double filmSimSourceStrength = double(100-params->filmSimulation.strength)/100.; + const float exp_scale = pow (2.0, expcomp); const float comp = (max(0.0, expcomp) + 1.0)*hlcompr/100.0; const float shoulder = ((65536.0/max(1.0f,exp_scale))*(hlcomprthresh/200.0))+0.1; @@ -3046,6 +3070,48 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, EditBuffer *e } } + //Film Simulations + if ( colorLUT ) + { + for (int i=istart,ti=0; i( Color::gamma_srgb( sourceR ) ); + sourceG = CLIP( Color::gamma_srgb( sourceG ) ); + sourceB = CLIP( Color::gamma_srgb( sourceB ) ); + + float r, g, b; + colorLUT->getRGB( sourceR, sourceG, sourceB, r, g, b ); + // apply strength + sourceR = r * filmSimCorrectedStrength + sourceR * filmSimSourceStrength; + sourceG = g * filmSimCorrectedStrength + sourceG * filmSimSourceStrength; + sourceB = b * filmSimCorrectedStrength + sourceB * filmSimSourceStrength; + // apply inverse gamma sRGB + sourceR = Color::igamma_srgb( sourceR ); + sourceG = Color::igamma_srgb( sourceG ); + sourceB = Color::igamma_srgb( sourceB ); + + if (!clutAndWorkingProfilesAreSame) { + //convert from clut to working profile + float x, y, z; + Color::rgbxyz( sourceR, sourceG, sourceB, x, y, z, clut2xyz ); + Color::xyz2rgb( x, y, z, sourceR, sourceG, sourceB, xyz2work ); + } + + } + } + } + //black and white if(blackwhite){ if (hasToneCurvebw1) { @@ -4845,7 +4911,6 @@ void ImProcFunctions::chromiLuminanceCurve (EditBuffer *editBuffer, int pW, LabI // t2e.set(); // printf("Chromil took %d �sec\n",t2e.etime(t1e)); - } diff --git a/rtengine/procevents.h b/rtengine/procevents.h index 18acfdbc1..74f5d8751 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -317,6 +317,9 @@ enum ProcEvent { EvPreProcessExpBlackRed=289, EvPreProcessExpBlackGreen=290, EvPreProcessExpBlackBlue=291, + EvFilmSimulationEnabled=292, + EvFilmSimulationStrength=293, + EvFilmSimulationFilename=294, NUMOFEVENTS }; } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 3047aadb4..1e1ff50ff 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -756,6 +756,9 @@ void ProcParams::setDefaults () { hsvequalizer.scurve.push_back (FCT_Linear); hsvequalizer.vcurve.clear (); hsvequalizer.vcurve.push_back (FCT_Linear); + + filmSimulation.setDefaults(); + raw.bayersensor.method = RAWParams::BayerSensor::methodstring[RAWParams::BayerSensor::amaze]; raw.bayersensor.ccSteps = 0; raw.bayersensor.dcb_iterations = 2; @@ -1360,6 +1363,11 @@ int ProcParams::save (Glib::ustring fname, Glib::ustring fname2, bool fnameAbsol keyFile.set_double_list("HSV Equalizer", "VCurve", vcurve); } + //save film simulation parameters + if ( !pedited || pedited->filmSimulation.enabled ) keyFile.set_boolean( "Film Simulation", "Enabled", filmSimulation.enabled ); + if ( !pedited || pedited->filmSimulation.clutFilename ) keyFile.set_string ( "Film Simulation", "ClutFilename", filmSimulation.clutFilename ); + if ( !pedited || pedited->filmSimulation.strength ) keyFile.set_integer( "Film Simulation", "Strength", filmSimulation.strength ); + if (!pedited || pedited->rgbCurves.lumamode) keyFile.set_boolean ("RGB Curves", "LumaMode", rgbCurves.lumamode); @@ -2059,6 +2067,20 @@ if (keyFile.has_group ("Directional Pyramid Equalizer")) { } } + // load CLUT parameters +if ( keyFile.has_group( "Film Simulation" ) ) +{ + if ( keyFile.has_key( "Film Simulation", "Enabled" ) ) { filmSimulation.enabled = keyFile.get_boolean( "Film Simulation", "Enabled" ); if ( pedited ) pedited->filmSimulation.enabled = true; } + if ( keyFile.has_key( "Film Simulation", "ClutFilename" ) ) { filmSimulation.clutFilename = keyFile.get_string( "Film Simulation", "ClutFilename" ); if ( pedited ) pedited->filmSimulation.clutFilename = true; } + if ( keyFile.has_key( "Film Simulation", "Strength" ) ) { + if (ppVersion < 321) + filmSimulation.strength = int(keyFile.get_double( "Film Simulation", "Strength" )*100 + 0.1); + else + filmSimulation.strength = keyFile.get_integer( "Film Simulation", "Strength" ); + if ( pedited ) pedited->filmSimulation.strength = true; + } +} + // load HSV equalizer parameters if (keyFile.has_group ("HSV Equalizer")) { if (ppVersion>=300) { @@ -2514,6 +2536,9 @@ bool ProcParams::operator== (const ProcParams& other) { && hsvequalizer.hcurve == other.hsvequalizer.hcurve && hsvequalizer.scurve == other.hsvequalizer.scurve && hsvequalizer.vcurve == other.hsvequalizer.vcurve + && filmSimulation.enabled == other.filmSimulation.enabled + && filmSimulation.clutFilename == other.filmSimulation.clutFilename + && filmSimulation.strength == other.filmSimulation.strength && rgbCurves.rcurve == other.rgbCurves.rcurve && rgbCurves.gcurve == other.rgbCurves.gcurve && rgbCurves.bcurve == other.rgbCurves.bcurve diff --git a/rtengine/procparams.h b/rtengine/procparams.h index ec8438397..6c376bfd0 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -841,6 +841,27 @@ class HSVEqualizerParams { std::vector vcurve; }; + +/** + * Film simualtion params + */ +struct FilmSimulationParams { + bool enabled; + Glib::ustring clutFilename; + int strength; + + FilmSimulationParams() { + setDefaults(); + } + + void setDefaults() { + enabled = false; + clutFilename = Glib::ustring(); + strength = 100; + } +}; + + /** * Parameters for RAW demosaicing, common to all sensor type */ @@ -962,6 +983,7 @@ class ProcParams { RAWParams raw; ///< RAW parameters before demosaicing DirPyrEqualizerParams dirpyrequalizer; ///< directional pyramid equalizer parameters HSVEqualizerParams hsvequalizer; ///< hsv equalizer parameters + FilmSimulationParams filmSimulation; ///< film simulation parameters char rank; ///< Custom image quality ranking char colorlabel; ///< Custom color label bool inTrash; ///< Marks deleted image diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index 53ce32d94..0ab3e989c 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -314,6 +314,9 @@ FLATFIELD, // EvFlatFieldAutoClipControl DARKFRAME, // EvPreProcessExpBlackRed DARKFRAME, // EvPreProcessExpBlackGreen DARKFRAME, // EvPreProcessExpBlackBlue +RGBCURVE, //EvFilmSimulationEnabled +RGBCURVE, //EvFilmSimulationStrength +RGBCURVE, //EvFilmSimulationFilename diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index 8ceec7d5d..559e1ea0a 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -29,7 +29,8 @@ set (BASESOURCEFILES sensorbayer.cc sensorxtrans.cc preprocess.cc bayerpreprocess.cc bayerprocess.cc bayerrawexposure.cc xtransprocess.cc xtransrawexposure.cc darkframe.cc flatfield.cc rawcacorrection.cc rawexposure.cc dirpyrequalizer.cc hsvequalizer.cc defringe.cc - popupcommon.cc popupbutton.cc popuptogglebutton.cc sharpenedge.cc sharpenmicro.cc colorappearance.cc) + popupcommon.cc popupbutton.cc popuptogglebutton.cc sharpenedge.cc sharpenmicro.cc colorappearance.cc + filmsimulation.cc) include_directories (BEFORE "${CMAKE_CURRENT_BINARY_DIR}") diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h index 4133cb24f..06b1d2c4f 100644 --- a/rtgui/addsetids.h +++ b/rtgui/addsetids.h @@ -84,8 +84,9 @@ #define ADDSET_COLORTONING_STRPROTECT 76 #define ADDSET_DIRPYRDN_PASSES 77 #define ADDSET_RAWFFCLIPCONTROL 78 +#define ADDSET_FILMSIMULATION_STRENGTH 79 // When adding items, make sure to update ADDSET_PARAM_NUM -#define ADDSET_PARAM_NUM 79 // THIS IS USED AS A DELIMITER!! +#define ADDSET_PARAM_NUM 80 // THIS IS USED AS A DELIMITER!! #endif diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index a4318d74f..f2e0d5162 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -144,16 +144,17 @@ void BatchToolPanelCoordinator::initSession () { chmixer->setAdjusterBehavior (false); blackwhite->setAdjusterBehavior (false,false); colortoning->setAdjusterBehavior (false, false, false, false, false); + filmSimulation->setAdjusterBehavior(false); shadowshighlights->setAdjusterBehavior (false, false, false); dirpyrequalizer->setAdjusterBehavior (false, false, false); dirpyrdenoise->setAdjusterBehavior (false, false,false,false,false,false, false); bayerpreprocess->setAdjusterBehavior (false, false); rawcacorrection->setAdjusterBehavior (false); - flatfield->setAdjusterBehavior(false); - rawexposure->setAdjusterBehavior (false, false); - bayerrawexposure->setAdjusterBehavior (false); - xtransrawexposure->setAdjusterBehavior (false); + flatfield->setAdjusterBehavior(false); + rawexposure->setAdjusterBehavior (false, false); + bayerrawexposure->setAdjusterBehavior (false); + xtransrawexposure->setAdjusterBehavior (false); } else { @@ -177,19 +178,20 @@ void BatchToolPanelCoordinator::initSession () { sharpenMicro->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT],options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]); icm->setAdjusterBehavior (options.baBehav[ADDSET_FREE_OUPUT_GAMMA],options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]); colortoning->setAdjusterBehavior (options.baBehav[ADDSET_COLORTONING_SPLIT], options.baBehav[ADDSET_COLORTONING_SATTHRESHOLD], options.baBehav[ADDSET_COLORTONING_SATOPACITY], options.baBehav[ADDSET_COLORTONING_STRPROTECT], options.baBehav[ADDSET_COLORTONING_BALANCE]); + filmSimulation->setAdjusterBehavior(options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]); chmixer->setAdjusterBehavior (options.baBehav[ADDSET_CHMIXER] ); blackwhite->setAdjusterBehavior (options.baBehav[ADDSET_BLACKWHITE_HUES],options.baBehav[ADDSET_BLACKWHITE_GAMMA]); shadowshighlights->setAdjusterBehavior (options.baBehav[ADDSET_SH_HIGHLIGHTS], options.baBehav[ADDSET_SH_SHADOWS], options.baBehav[ADDSET_SH_LOCALCONTRAST]); dirpyrequalizer->setAdjusterBehavior (options.baBehav[ADDSET_DIRPYREQ], options.baBehav[ADDSET_DIRPYREQ_THRESHOLD], options.baBehav[ADDSET_DIRPYREQ_SKINPROTECT]); dirpyrdenoise->setAdjusterBehavior (options.baBehav[ADDSET_DIRPYRDN_LUMA],options.baBehav[ADDSET_DIRPYRDN_LUMDET],options.baBehav[ADDSET_DIRPYRDN_CHROMA],options.baBehav[ADDSET_DIRPYRDN_CHROMARED],options.baBehav[ADDSET_DIRPYRDN_CHROMABLUE], options.baBehav[ADDSET_DIRPYRDN_GAMMA], options.baBehav[ADDSET_DIRPYRDN_PASSES]); - bayerpreprocess->setAdjusterBehavior (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE], options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]); + bayerpreprocess->setAdjusterBehavior (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE], options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]); rawcacorrection->setAdjusterBehavior (options.baBehav[ADDSET_RAWCACORR]); - flatfield->setAdjusterBehavior(options.baBehav[ADDSET_RAWFFCLIPCONTROL]); - rawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_LINEAR], options.baBehav[ADDSET_RAWEXPOS_PRESER]); - bayerrawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_BLACKS]); + flatfield->setAdjusterBehavior(options.baBehav[ADDSET_RAWFFCLIPCONTROL]); + rawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_LINEAR], options.baBehav[ADDSET_RAWEXPOS_PRESER]); + bayerrawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_BLACKS]); xtransrawexposure->setAdjusterBehavior (options.baBehav[ADDSET_RAWEXPOS_BLACKS]); - + if (options.baBehav[ADDSET_TC_EXPCOMP]) pparams.toneCurve.expcomp = 0; if (options.baBehav[ADDSET_TC_HLCOMPAMOUNT]) pparams.toneCurve.hlcompr = 0; if (options.baBehav[ADDSET_TC_HLCOMPTHRESH]) pparams.toneCurve.hlcomprthresh = 0; @@ -257,6 +259,8 @@ void BatchToolPanelCoordinator::initSession () { if (options.baBehav[ADDSET_COLORTONING_BALANCE]) pparams.colorToning.balance = 0; if (options.baBehav[ADDSET_COLORTONING_STRPROTECT]) pparams.colorToning.strengthprotection = 0; + if (options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]) pparams.filmSimulation.strength = 0; + if (options.baBehav[ADDSET_ROTATE_DEGREE]) pparams.rotate.degree = 0; if (options.baBehav[ADDSET_DIST_AMOUNT]) pparams.distortion.amount = 0; if (options.baBehav[ADDSET_PERSPECTIVE]) pparams.perspective.horizontal = pparams.perspective.vertical = 0; diff --git a/rtgui/filmsimulation.cc b/rtgui/filmsimulation.cc new file mode 100644 index 000000000..9fbedd45c --- /dev/null +++ b/rtgui/filmsimulation.cc @@ -0,0 +1,290 @@ +#include "filmsimulation.h" +#include "options.h" +#include "../rtengine/clutstore.h" +#include "../rtengine/safegtk.h" + +using namespace rtengine; +using namespace rtengine::procparams; + +typedef std::vector Strings; + +FilmSimulation::FilmSimulation() +: FoldableToolPanel( this ), + m_lastEnabled( false ) +{ + m_enabled = Gtk::manage ( new Gtk::CheckButton( M("GENERAL_ENABLED") ) ); + m_enabled->set_active( false ); + + pack_start( *m_enabled, Gtk::PACK_SHRINK, 0 ); + + m_enabled->show(); + m_enabledConn = m_enabled->signal_toggled().connect( sigc::mem_fun( *this, &FilmSimulation::onEnabledToggled ) ); + + pack_start( *Gtk::manage ( new Gtk::HSeparator() ) ); + + m_clutComboBox = Gtk::manage( new ClutComboBox() ); + int foundClutsCount = m_clutComboBox->fillFromDir( options.clutsDir ); + if ( foundClutsCount == 0 ) + { + pack_start( *Gtk::manage( new Gtk::Label( M("TP_FILMSIMULATION_ZEROCLUTSFOUND") ) ) ); + } + m_clutComboBoxConn = m_clutComboBox->signal_changed().connect( sigc::mem_fun( *this, &FilmSimulation::onClutSelected ) ); + pack_start( *m_clutComboBox ); + + m_strength = Gtk::manage( new Adjuster( M("TP_FILMSIMULATION_STRENGTH"), 0., 100, 1., 100 ) ); + m_strength->setAdjusterListener( this ); + + pack_start( *m_strength, Gtk::PACK_SHRINK, 0 ); + +} + +void FilmSimulation::onClutSelected() +{ + Glib::ustring currentClutFilename = m_clutComboBox->getSelectedClut(); + + if ( m_enabled->get_active() && !currentClutFilename.empty() && listener && currentClutFilename != m_oldClutFilename ) + { + Glib::ustring clutName, dummy; + splitClutFilename( currentClutFilename, clutName, dummy, dummy ); + listener->panelChanged( EvFilmSimulationFilename, clutName ); + + m_oldClutFilename = currentClutFilename; + } +} + +void FilmSimulation::onEnabledToggled() +{ + if (multiImage) + { + if (m_enabled->get_inconsistent()) { + m_enabled->set_inconsistent (false); + m_enabledConn.block (true); + m_enabled->set_active (false); + m_enabledConn.block (false); + } + else if (m_lastEnabled) + m_enabled->set_inconsistent (true); + + m_lastEnabled = m_enabled->get_active (); + } + + if ( listener ) + { + if (m_enabled->get_inconsistent()) + listener->panelChanged (EvFilmSimulationEnabled, M("GENERAL_UNCHANGED")); + else if ( m_enabled->get_active() ) + listener->panelChanged (EvFilmSimulationEnabled, M("GENERAL_ENABLED")); + else + listener->panelChanged (EvFilmSimulationEnabled, M("GENERAL_DISABLED")); + } +} + +void FilmSimulation::adjusterChanged( Adjuster* a, double newval ) +{ + if (listener && (multiImage||m_enabled->get_active()) ) + { + Glib::ustring value = a->getTextValue(); + listener->panelChanged ( EvFilmSimulationStrength, value ); + } +} + +void FilmSimulation::setBatchMode( bool batchMode ) +{ + ToolPanel::setBatchMode( batchMode ); + m_clutComboBox->addUnchangedEntry(); +} + +void FilmSimulation::read( const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited ) +{ + //copypasted from lensprofile.cc & sharpening.cc + disableListener(); + updateDisable( true ); + + m_enabled->set_active( pp->filmSimulation.enabled ); + if ( !pp->filmSimulation.clutFilename.empty() ) + m_clutComboBox->setSelectedClut( pp->filmSimulation.clutFilename ); + m_strength->setValue( pp->filmSimulation.strength ); + + if (pedited) + { + m_enabled->set_inconsistent (multiImage && !pedited->filmSimulation.enabled); + m_strength->setEditedState (pedited->filmSimulation.strength ? Edited : UnEdited); + if ( !pedited->filmSimulation.clutFilename ) + m_clutComboBox->setSelectedClut("NULL"); + } + if ( !m_enabled->get_inconsistent() && !pp->filmSimulation.enabled ) + { + clutStore.clearCache(); + } + + updateDisable( false ); + enableListener(); +} + +void FilmSimulation::updateDisable( bool value ) +{ + m_enabledConn.block( value ); + m_clutComboBoxConn.block( value ); +} + +void FilmSimulation::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedited ) +{ + if ( pedited ) + { + pedited->filmSimulation.enabled = !m_enabled->get_inconsistent(); + pedited->filmSimulation.strength = m_strength->getEditedState (); + pedited->filmSimulation.clutFilename = m_clutComboBox->getSelectedClut() != "NULL"; + } + + pp->filmSimulation.enabled = m_enabled->get_active(); + Glib::ustring clutFName = m_clutComboBox->getSelectedClut(); + if ( clutFName != "NULL" ) // We do not want to set "NULL" in clutFilename, even if "unedited" + pp->filmSimulation.clutFilename = clutFName; + pp->filmSimulation.strength = m_strength->getValue(); +} + +void FilmSimulation::setAdjusterBehavior( bool strength ) +{ + m_strength->setAddMode( strength ); +} + +void FilmSimulation::trimValues( rtengine::procparams::ProcParams* pp ) +{ + pp->filmSimulation.strength = m_strength->trimValue( pp->filmSimulation.strength ); +} + +//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +ClutComboBox::ClutColumns::ClutColumns() +{ + add( label ); + add( clutFilename ); +} + +int ClutComboBox::fillFromDir( Glib::ustring path ) +{ + int result = 0; + if ( !path.empty() ) + { + m_model.clear(); + m_model = Gtk::TreeStore::create( m_columns ); + set_model( m_model ); + result = parseDir( path, 0 ); + pack_start( m_columns.label, false ); + } + return result; +} + +Gtk::TreeIter appendToModel( Glib::RefPtr model, Gtk::TreeModel::Row *parent ) +{ + Gtk::TreeIter result; + if ( parent ) + { + result = model->append( parent->children() ); + + } + else + { + result = model->append(); + } + return result; +} + +int ClutComboBox::parseDir( Glib::ustring path, Gtk::TreeModel::Row *parentRow ) +{ + int result = 0; + if ( path.empty() || !safe_file_test( path, Glib::FILE_TEST_EXISTS ) || !safe_file_test ( path, Glib::FILE_TEST_IS_DIR ) ) + return result; + + Glib::Dir* dir = new Glib::Dir( path ); + + Strings names; + + for( Glib::DirIterator it = dir->begin(); it != dir->end(); ++it ) + { + Glib::ustring current = *it; + if ( current != "." && current != ".." ) + { + names.push_back( current ); + } + } + + std::sort( names.begin(), names.end() ); + + for ( Strings::iterator it = names.begin(); it != names.end(); ++it ) + { + Glib::ustring current = *it; + Glib::ustring fullname = Glib::build_filename( path, current ); + if ( safe_file_test( fullname, Glib::FILE_TEST_IS_DIR ) ) + { + + Gtk::TreeModel::Row newFolderMenu = *appendToModel( m_model, parentRow ); + newFolderMenu[ m_columns.label ] = current; + result += parseDir( fullname, &newFolderMenu ); + } + else + { + Glib::ustring name, extension, profileName; + splitClutFilename( current, name, extension, profileName ); + if ( extension == "tif" || + extension == "TIF" || + extension == "png" || + extension == "PNG" ) + { + Gtk::TreeModel::Row newClut = *appendToModel( m_model, parentRow ); + newClut[ m_columns.label ] = name; + newClut[ m_columns.clutFilename ] = fullname; + ++result; + } + } + } + return result; +} + +Glib::ustring ClutComboBox::getSelectedClut() +{ + Glib::ustring result; + Gtk::TreeModel::iterator current = get_active(); + Gtk::TreeModel::Row row = *current; + if ( row ) + { + result = row[ m_columns.clutFilename ]; + } + return result; +} + +void ClutComboBox::setSelectedClut( Glib::ustring filename ) +{ + if ( !filename.empty() ) + { + Gtk::TreeIter found = findRowByClutFilename( m_model->children(), filename ); + if ( found ) + { + set_active( found ); + } + } +} + +Gtk::TreeIter ClutComboBox::findRowByClutFilename( Gtk::TreeModel::Children childs, Glib::ustring filename ) +{ + Gtk::TreeIter result = childs.end(); + for( Gtk::TreeModel::Children::iterator it = childs.begin(); !result && it != childs.end(); ++it ) + { + Gtk::TreeModel::Row row = *it; + if ( row[ m_columns.clutFilename ] == filename ) + { + result = it; + } + else + { + result = findRowByClutFilename( it->children(), filename ); + } + } + return result; +} + +void ClutComboBox::addUnchangedEntry() { + Gtk::TreeModel::Row row = *(m_model->append()); + row[m_columns.label] = M("GENERAL_UNCHANGED"); + row[m_columns.clutFilename] = "NULL"; +} diff --git a/rtgui/filmsimulation.h b/rtgui/filmsimulation.h new file mode 100644 index 000000000..17368395f --- /dev/null +++ b/rtgui/filmsimulation.h @@ -0,0 +1,64 @@ +#ifndef FILM_SIMULATION_INCLUDED +#define FILM_SIMULATION_INCLUDED + +#include +#include +#include +#include "toolpanel.h" +#include "guiutils.h" +#include "adjuster.h" + +class ClutComboBox : public MyComboBox +{ +public: + int fillFromDir( Glib::ustring path ); + Glib::ustring getSelectedClut(); + void setSelectedClut( Glib::ustring filename ); + void addUnchangedEntry(); + +private: + class ClutColumns : public Gtk::TreeModel::ColumnRecord + { + public: + Gtk::TreeModelColumn label; + Gtk::TreeModelColumn clutFilename; + ClutColumns(); + }; + + int parseDir( Glib::ustring path, Gtk::TreeModel::Row *parentRow ); + Gtk::TreeIter findRowByClutFilename( Gtk::TreeModel::Children childs, Glib::ustring filename ); + + Glib::RefPtr m_model; + ClutColumns m_columns; +}; + +class FilmSimulation : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +{ +public: + FilmSimulation(); + + void adjusterChanged( Adjuster* a, double newval ); + void setBatchMode( bool batchMode ); + void read( const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = NULL ); + void write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = NULL ); + void setAdjusterBehavior( bool strength ); + void trimValues( rtengine::procparams::ProcParams* pp ); + +private: + void onClutSelected(); + void onEnabledToggled(); + + void updateDisable( bool value ); + + Gtk::CheckButton* m_enabled; + bool m_lastEnabled; + sigc::connection m_enabledConn; + + ClutComboBox *m_clutComboBox; + sigc::connection m_clutComboBoxConn; + Glib::ustring m_oldClutFilename; + + Adjuster *m_strength; +}; + +#endif diff --git a/rtgui/options.cc b/rtgui/options.cc index ea7a1ac1c..4e9962e26 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -396,6 +396,8 @@ void Options::setDefaults () { fastexport_resize_width = 900; fastexport_resize_height = 900; + clutsDir = "./cluts"; + cutOverlayBrush = std::vector (4); cutOverlayBrush[3] = 0.667; // :-p @@ -490,6 +492,7 @@ void Options::setDefaults () { 0, // ADDSET_COLORTONING_SPLIT 0, //ADDSET_DIRPYRDN_PASSES 0, // ADDSET_RAWFFCLIPCONTROL + 0, // ADDSET_FILMSIMULATION_STRENGTH }; baBehav = std::vector (babehav, babehav+ADDSET_PARAM_NUM); @@ -792,6 +795,8 @@ if (keyFile.has_group ("Color Management")) { 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", "ClutsDirectory")) clutsDir = keyFile.get_string("Color Management", "ClutsDirectory"); // if( keyFile.has_key ("Color Management", "Ciebadpixgauss")) rtSettings.ciebadpixgauss = keyFile.get_boolean("Color Management", "Ciebadpixgauss"); } @@ -1092,6 +1097,7 @@ int Options::saveToFile (Glib::ustring fname) { keyFile.set_double ("Color Management", "CBDLlevel123", rtSettings.level123_cbdl); // keyFile.set_double ("Color Management", "Colortoningab", rtSettings.colortoningab); // keyFile.set_double ("Color Management", "Decaction", rtSettings.decaction); + keyFile.set_string ("Color Management", "ClutsDirectory", clutsDir); Glib::ArrayHandle bab = baBehav; diff --git a/rtgui/options.h b/rtgui/options.h index 7af267d43..c552b1e74 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -210,6 +210,8 @@ class Options { bool UseIconNoText; int whiteBalanceSpotSize; + Glib::ustring clutsDir; + // Performance options int rgbDenoiseThreadLimit; // maximum number of threads for the denoising tool ; 0 = use the maximum available diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 1f9640c15..07b0722fa 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -340,6 +340,10 @@ void ParamsEdited::set (bool v) { hsvequalizer.hcurve = v; hsvequalizer.scurve = v; hsvequalizer.vcurve = v; + filmSimulation.enabled = v; + filmSimulation.clutFilename = v; + filmSimulation.strength = v; + exif = v; iptc = v; } @@ -666,6 +670,9 @@ void ParamsEdited::initFrom (const std::vector hsvequalizer.hcurve = hsvequalizer.hcurve && p.hsvequalizer.hcurve == other.hsvequalizer.hcurve; hsvequalizer.scurve = hsvequalizer.scurve && p.hsvequalizer.scurve == other.hsvequalizer.scurve; hsvequalizer.vcurve = hsvequalizer.vcurve && p.hsvequalizer.vcurve == other.hsvequalizer.vcurve; + filmSimulation.enabled = filmSimulation.enabled && p.filmSimulation.enabled == other.filmSimulation.enabled; + filmSimulation.clutFilename = filmSimulation.clutFilename && p.filmSimulation.clutFilename == other.filmSimulation.clutFilename; + filmSimulation.strength = filmSimulation.strength && p.filmSimulation.strength == other.filmSimulation.strength; // How the hell can we handle that??? // exif = exif && p.exif==other.exif @@ -1001,6 +1008,11 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten if (hsvequalizer.scurve) toEdit.hsvequalizer.scurve = mods.hsvequalizer.scurve; if (hsvequalizer.vcurve) toEdit.hsvequalizer.vcurve = mods.hsvequalizer.vcurve; + if (filmSimulation.enabled) toEdit.filmSimulation.enabled = mods.filmSimulation.enabled; + if (filmSimulation.clutFilename) toEdit.filmSimulation.clutFilename = mods.filmSimulation.clutFilename; + if (filmSimulation.strength) toEdit.filmSimulation.strength = dontforceSet && options.baBehav[ADDSET_FILMSIMULATION_STRENGTH] ? toEdit.filmSimulation.strength + mods.filmSimulation.strength : mods.filmSimulation.strength; + + // Exif changes are added to the existing ones if (exif) for (procparams::ExifPairs::const_iterator i=mods.exif.begin(); i!=mods.exif.end(); i++) { diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 84bbdbb2d..b86fce969 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -487,6 +487,13 @@ class HSVEqualizerParamsEdited { bool vcurve; }; +class FilmSimulationParamsEdited { +public: + bool enabled; + bool clutFilename; + bool strength; +}; + class RAWParamsEdited { public: @@ -585,6 +592,7 @@ class ParamsEdited { RAWParamsEdited raw; DirPyrEqualizerParamsEdited dirpyrequalizer; HSVEqualizerParamsEdited hsvequalizer; + FilmSimulationParamsEdited filmSimulation; bool exif; bool iptc; diff --git a/rtgui/partialpastedlg.cc b/rtgui/partialpastedlg.cc index c4a6cddb9..c4e35af9e 100644 --- a/rtgui/partialpastedlg.cc +++ b/rtgui/partialpastedlg.cc @@ -66,6 +66,7 @@ PartialPasteDlg::PartialPasteDlg (Glib::ustring title) { blackwhite = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_CHANNELMIXERBW"))); dirpyrden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYRDENOISE"))); hsveq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_HSVEQUALIZER"))); + filmSimulation = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTER_FILMSIMULATION")) ); rgbcurves = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RGBCURVES"))); colortoning = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORTONING"))); @@ -151,6 +152,7 @@ PartialPasteDlg::PartialPasteDlg (Glib::ustring title) { vboxes[2]->pack_start (*chmixer, Gtk::PACK_SHRINK, 2); vboxes[2]->pack_start (*blackwhite, Gtk::PACK_SHRINK, 2); vboxes[2]->pack_start (*hsveq, Gtk::PACK_SHRINK, 2); + vboxes[2]->pack_start (*filmSimulation, Gtk::PACK_SHRINK, 2); vboxes[2]->pack_start (*rgbcurves, Gtk::PACK_SHRINK, 2); vboxes[2]->pack_start (*colortoning, Gtk::PACK_SHRINK, 2); @@ -271,6 +273,7 @@ PartialPasteDlg::PartialPasteDlg (Glib::ustring title) { chmixerConn = chmixer->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); chmixerbwConn = blackwhite->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); hsveqConn = hsveq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); + filmSimulationConn = filmSimulation->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); rgbcurvesConn = rgbcurves->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); colortoningConn = colortoning->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true)); @@ -505,6 +508,7 @@ void PartialPasteDlg::colorToggled () { chmixerConn.block (true); chmixerbwConn.block (true); hsveqConn.block (true); + filmSimulationConn.block (true); rgbcurvesConn.block (true); colortoningConn.block (true); gamcsconn.block (true); @@ -514,6 +518,7 @@ void PartialPasteDlg::colorToggled () { chmixer->set_active (color->get_active ()); blackwhite->set_active (color->get_active ()); hsveq->set_active (color->get_active ()); + filmSimulation->set_active (color->get_active ()); rgbcurves->set_active (color->get_active ()); colortoning->set_active(color->get_active ()); icm->set_active (color->get_active ()); @@ -522,6 +527,7 @@ void PartialPasteDlg::colorToggled () { chmixerbwConn.block (false); chmixerConn.block (false); hsveqConn.block (false); + filmSimulationConn.block (false); rgbcurvesConn.block (false); colortoningConn.block (false); gamcsconn.block (false); @@ -638,6 +644,7 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param if (!chmixer->get_active ()) filterPE.chmixer = falsePE.chmixer; if (!blackwhite->get_active ()) filterPE.blackwhite = falsePE.blackwhite; if (!hsveq->get_active ()) filterPE.hsvequalizer = falsePE.hsvequalizer; + if (!filmSimulation->get_active ()) filterPE.filmSimulation = falsePE.filmSimulation; if (!rgbcurves->get_active ()) filterPE.rgbCurves = falsePE.rgbCurves; if (!colortoning->get_active ()) filterPE.colorToning = falsePE.colorToning; if (!icm->get_active ()) filterPE.icm = falsePE.icm; diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h index 1c1d66156..64750523a 100644 --- a/rtgui/partialpastedlg.h +++ b/rtgui/partialpastedlg.h @@ -62,6 +62,7 @@ class PartialPasteDlg : public Gtk::Dialog { Gtk::CheckButton* chmixer; Gtk::CheckButton* blackwhite; Gtk::CheckButton* hsveq; + Gtk::CheckButton* filmSimulation; Gtk::CheckButton* rgbcurves; Gtk::CheckButton* colortoning; // Gtk::CheckButton* icm; @@ -115,7 +116,7 @@ class PartialPasteDlg : public Gtk::Dialog { sigc::connection wbConn, exposureConn, shConn, pcvignetteConn, gradientConn, labcurveConn, colorappearanceConn; sigc::connection sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, dirpyrdenConn, waveqConn, defringeConn, epdConn, dirpyreqConn; - sigc::connection vibranceConn, chmixerConn, hsveqConn, rgbcurvesConn, chmixerbwConn, colortoningConn; + sigc::connection vibranceConn, chmixerConn, hsveqConn, rgbcurvesConn, chmixerbwConn, colortoningConn, filmSimulationConn; sigc::connection distortionConn, cacorrConn, vignettingConn, lcpConn; sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, perspectiveConn, commonTransConn; sigc::connection exifchConn, iptcConn, icmConn, gamcsconn; diff --git a/rtgui/ppversion.h b/rtgui/ppversion.h index ea50fcbaa..7e4148f05 100644 --- a/rtgui/ppversion.h +++ b/rtgui/ppversion.h @@ -2,38 +2,38 @@ #define _PPVERSION_ // This number has to be incremented whenever the PP3 file format is modified or the behaviour of a tool changes -#define PPVERSION 320 +#define PPVERSION 321 #define PPVERSION_AEXP 301 //value of PPVERSION when auto exposure algorithm was modified /* Log of version changes - 320 2014-07-02 - New [RAW Bayer] and [RAW X-Trans] sections, with some parameters transfered from [RAW] to [RAW Bayer] - 316 2014-03-29 - [ColorToning] new tool for color toning + 321 2014-08-17 + [Film Simulation] new tool using HALDCLUT files + 320 2014-07-02 (yes, same version number... this is an error due to a wrong version number set in comment of previous change) + New [RAW Bayer] and [RAW X-Trans] sections, with some parameters transfered from [RAW] to [RAW Bayer] + 320 2014-03-29 + [ColorToning] new tool for color toning 319 2014-02-11 - Hue skin for Contrast by detail levels + Hue skin for Contrast by detail levels 318 2014-02-10 - Vignetting Correction bug makes hard transitions for positive Amount values, Issue 2241 + Vignetting Correction bug makes hard transitions for positive Amount values, Issue 2241 317 2014-01-19 - changes to behaviour of LC curve, Issue 2209 + changes to behaviour of LC curve, Issue 2209 315 2013-12-12 - add LH et HH curve to lab mode + add LH et HH curve to lab mode 313 2013-11-19 - addd CL curve to lab mode + add CL curve to lab mode 312 2013-11-08 - added numerous changes to [channel mixer] + added numerous changes to [channel mixer] 311 2013-11-07 - [Gradient] new tool (gradient/graduated filter - [PCVignette] new tool (vignette filter) - + [Gradient] new tool (gradient/graduated filter + [PCVignette] new tool (vignette filter) 310 2013-09-16 - Defringing /Threshold - changed calculation, issue 1801 - + Defringing /Threshold - changed calculation, issue 1801 307 2013-03-16 - [Perspective] Horizontal and Vertical changed from int to double - added [Directional Pyramid Denoising] Method, Redchro, Bluechro - added [RGB Curves] LumaMode + [Perspective] Horizontal and Vertical changed from int to double + added [Directional Pyramid Denoising] Method, Redchro, Bluechro + added [RGB Curves] LumaMode */ #endif diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index de14f7a0f..c58da0df9 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -242,6 +242,10 @@ Gtk::Widget* Preferences::getBatchProcPanel () { appendBehavList (mi, M("TP_BWMIX_MIXC"), ADDSET_BLACKWHITE_HUES, false); appendBehavList (mi, M("TP_BWMIX_GAMMA"), ADDSET_BLACKWHITE_GAMMA, false); + mi = behModel->append (); + mi->set_value( behavColumns.label, M("TP_FILMSIMULATION_LABEL") ); + appendBehavList( mi, M( "TP_FILMSIMULATION_STRENGTH" ), ADDSET_FILMSIMULATION_STRENGTH, true ); + mi = behModel->append (); mi->set_value (behavColumns.label, M("TP_COLORTONING_LABEL")); appendBehavList (mi, M("TP_COLORTONING_SPLITCOCO"),ADDSET_COLORTONING_SPLIT , true); @@ -462,6 +466,19 @@ Gtk::Widget* Preferences::getProcParamsPanel () { //ffconn = flatFieldDir->signal_file_set().connect ( sigc::mem_fun(*this, &Preferences::flatFieldChanged), true); ffconn = flatFieldDir->signal_current_folder_changed().connect ( sigc::mem_fun(*this, &Preferences::flatFieldChanged), true); + //Cluts Dir + Gtk::Frame* clutsDirFrame = Gtk::manage (new Gtk::Frame (M("PREFERENCES_FILMSIMULATION")) ); + Gtk::HBox* clutsDirBox = Gtk::manage (new Gtk::HBox ()); + clutsDir = Gtk::manage(new Gtk::FileChooserButton(M("PREFERENCES_CLUTSDIR"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER)); + Gtk::Label *clutsDirLabel = Gtk::manage(new Gtk::Label(M("PREFERENCES_CLUTSDIR") + ":")); + Gtk::Label* clutsRestartNeeded = Gtk::manage( new Gtk::Label (Glib::ustring(" (") + M("PREFERENCES_APPLNEXTSTARTUP") + ")") ); + clutsDirBox->pack_start( *clutsDirLabel, Gtk::PACK_SHRINK, 4 ); + clutsDirBox->pack_start( *clutsDir ); + clutsDirBox->pack_start( *clutsRestartNeeded, Gtk::PACK_SHRINK, 4 ); + clutsDirBox->set_border_width( 4 ); + clutsDirFrame->add( *clutsDirBox ); + mvbpp->pack_start( *clutsDirFrame, Gtk::PACK_SHRINK, 4 ); + Gtk::Frame* fmd = Gtk::manage (new Gtk::Frame (M("PREFERENCES_METADATA"))); Gtk::VBox* vbmd = Gtk::manage (new Gtk::VBox ()); ckbTunnelMetaData = Gtk::manage (new Gtk::CheckButton (M("PREFERENCES_TUNNELMETADATA"))); @@ -1222,6 +1239,8 @@ void Preferences::storePreferences () { moptions.rtSettings.darkFramesPath = darkFrameDir->get_filename(); moptions.rtSettings.flatFieldsPath = flatFieldDir->get_filename(); + moptions.clutsDir = clutsDir->get_filename(); + moptions.baBehav.resize (ADDSET_PARAM_NUM); for (Gtk::TreeIter sections=behModel->children().begin(); sections!=behModel->children().end(); sections++) for (Gtk::TreeIter adjs=sections->children().begin(); adjs!=sections->children().end(); adjs++) @@ -1384,6 +1403,8 @@ void Preferences::fillPreferences () { flatFieldDir->set_current_folder( moptions.rtSettings.flatFieldsPath ); flatFieldChanged (); + clutsDir->set_current_folder( moptions.clutsDir ); + addc.block (true); setc.block (true); if (moptions.baBehav.size() == ADDSET_PARAM_NUM) { diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 47f888bdb..bbebda595 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -72,6 +72,7 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener { Gtk::RadioButton* edOther; Gtk::FileChooserButton* darkFrameDir; Gtk::FileChooserButton* flatFieldDir; + Gtk::FileChooserButton* clutsDir; Gtk::Label *dfLabel; Gtk::Label *ffLabel; diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 67f25ab27..fe1b39240 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -73,6 +73,7 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) { iptcpanel = Gtk::manage (new IPTCPanel ()); dirpyrequalizer = Gtk::manage (new DirPyrEqualizer ()); hsvequalizer = Gtk::manage (new HSVEqualizer ()); + filmSimulation = Gtk::manage (new FilmSimulation ()); sensorbayer = Gtk::manage (new SensorBayer ()); sensorxtrans = Gtk::manage (new SensorXTrans ()); bayerprocess = Gtk::manage (new BayerProcess ()); @@ -105,6 +106,7 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) { addPanel (detailsPanel, sharpenEdge, M("TP_SHARPENEDGE_LABEL"), true); toolPanels.push_back (sharpenEdge); addPanel (detailsPanel, sharpenMicro, M("TP_SHARPENMICRO_LABEL"), true); toolPanels.push_back (sharpenMicro); addPanel (colorPanel, hsvequalizer, M("TP_HSVEQUALIZER_LABEL")); toolPanels.push_back (hsvequalizer); + addPanel (colorPanel, filmSimulation, M("TP_FILMSIMULATION_LABEL")); toolPanels.push_back (filmSimulation); addPanel (colorPanel, rgbcurves, M("TP_RGBCURVES_LABEL")); toolPanels.push_back (rgbcurves); addPanel (colorPanel, colortoning, M("TP_COLORTONING_LABEL")); toolPanels.push_back (colortoning); addPanel (exposurePanel, epd, M("TP_EPD_LABEL"), true); toolPanels.push_back (epd); diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index cb0adcfdf..eadcc3ce0 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -75,6 +75,7 @@ #include "sharpenedge.h" #include "rgbcurves.h" #include "colortoning.h" +#include "filmsimulation.h" class ImageEditorCoordinator; @@ -124,6 +125,7 @@ class ToolPanelCoordinator : public ToolPanelListener, ColorToning* colortoning; DirPyrEqualizer* dirpyrequalizer; HSVEqualizer* hsvequalizer; + FilmSimulation *filmSimulation; SensorBayer * sensorbayer; SensorXTrans * sensorxtrans; BayerProcess* bayerprocess;