From dca0e41f35c5a7e3c0cfe3c7a06d0e410ae7da4e Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Sun, 12 Feb 2017 17:39:52 +0100 Subject: [PATCH 01/15] added "Auto White Balance temperature bias" feature This new slider in the White Balance tools allows to alter the computation of the "auto white balance" by "biasing" it towards warmer or cooler temperatures. The bias is expressed as a percentage of the computed temperature, so that the resuling temperature is given by "computedTemp + computedTemp * bias". --- rtdata/languages/Catala | 3 + rtdata/languages/Chinese (Simplified) | 3 + rtdata/languages/Chinese (Traditional) | 3 + rtdata/languages/Czech | 7 ++ rtdata/languages/Dansk | 3 + rtdata/languages/Deutsch | 7 ++ rtdata/languages/English (UK) | 3 + rtdata/languages/English (US) | 3 + rtdata/languages/Espanol | 3 + rtdata/languages/Euskara | 3 + rtdata/languages/Francais | 7 ++ rtdata/languages/Greek | 3 + rtdata/languages/Hebrew | 3 + rtdata/languages/Italiano | 3 + rtdata/languages/Japanese | 3 + rtdata/languages/Latvian | 3 + rtdata/languages/Magyar | 3 + rtdata/languages/Nederlands | 3 + rtdata/languages/Norsk BM | 3 + rtdata/languages/Polish | 3 + rtdata/languages/Polish (Latin Characters) | 3 + rtdata/languages/Portugues (Brasil) | 3 + rtdata/languages/Russian | 3 + rtdata/languages/Serbian (Cyrilic Characters) | 3 + rtdata/languages/Serbian (Latin Characters) | 3 + rtdata/languages/Slovak | 3 + rtdata/languages/Suomi | 3 + rtdata/languages/Swedish | 3 + rtdata/languages/Turkish | 3 + rtdata/languages/default | 3 + rtengine/colortemp.h | 5 +- rtengine/improccoordinator.cc | 22 ++++-- rtengine/improccoordinator.h | 3 +- rtengine/procevents.h | 1 + rtengine/procparams.cc | 79 +++++++++++-------- rtengine/procparams.h | 4 +- rtengine/refreshmap.cc | 3 +- rtengine/rtengine.h | 2 +- rtengine/rtthumbnail.cc | 14 +++- rtengine/rtthumbnail.h | 4 +- rtengine/simpleprocess.cc | 2 +- rtgui/addsetids.h | 1 + rtgui/batchtoolpanelcoord.cc | 12 ++- rtgui/batchtoolpanelcoord.h | 2 +- rtgui/options.cc | 1 + rtgui/paramsedited.cc | 6 ++ rtgui/paramsedited.h | 1 + rtgui/preferences.cc | 1 + rtgui/thumbnail.cc | 4 +- rtgui/thumbnail.h | 2 +- rtgui/toolpanelcoord.h | 4 +- rtgui/wbprovider.h | 2 +- rtgui/whitebalance.cc | 68 +++++++++++++--- rtgui/whitebalance.h | 5 +- 54 files changed, 276 insertions(+), 74 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index 5fc720cfa..991d99479 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1280,6 +1280,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2033,6 +2034,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_WAVELET_TON;Toning !TP_WBALANCE_EQBLUERED;Blue/Red equalizer !TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behavior of "white balance" by modulating the blue/red balance.\nThis can be useful when shooting conditions:\na) are far from the standard illuminant (e.g. underwater),\nb) are far from conditions where calibrations were performed,\nc) where the matrices or ICC profiles are unsuitable. +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 !TP_WBALANCE_WATER_HEADER;UnderWater diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 64631d2b8..5900ef487 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1197,6 +1197,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -2041,5 +2042,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: Alt-f diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 90933541f..fdc36f91a 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -934,6 +934,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2030,6 +2031,8 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_WBALANCE_SOLUX41;Solux 4100K !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 6fa1fa8f7..08efca6cb 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2070,3 +2070,10 @@ ZOOMPANEL_ZOOMFITSCREEN;Přizpůsobit obrázek obrazovce\nZkratka: f ZOOMPANEL_ZOOMIN;Přiblížit\nZkratka: + ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + +!HISTORY_MSG_444;WB - Temp bias +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 1aa0d3788..dc28d6c59 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_WBALANCE_SOLUX41;Solux 4100K !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 13da1e9fc..277b6782e 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -2067,3 +2067,10 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen\nTaste: f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + +!HISTORY_MSG_444;WB - Temp bias +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index bf4734453..30e9bffab 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -758,6 +758,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT;Add !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !HISTORY_SNAPSHOT;Snapshot @@ -2023,6 +2024,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) !TP_WBALANCE_SPOTWB;Spot WB +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TEMPERATURE;Temperature !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index d5a0e16f2..63fe55143 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -676,6 +676,7 @@ !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT;Add !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !HISTORY_SNAPSHOT;Snapshot @@ -2023,6 +2024,8 @@ !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) !TP_WBALANCE_SPOTWB;Spot WB +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TEMPERATURE;Temperature !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index f9763dadb..3cd36a01f 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1674,6 +1674,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -2100,4 +2101,6 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: Alt-f diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index fb1b452dc..5bc77fdd8 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_WBALANCE_SOLUX41;Solux 4100K !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 937ac0927..d1031f359 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -2035,3 +2035,10 @@ ZOOMPANEL_ZOOMFITSCREEN;Affiche l'image entière\nRaccourci: f ZOOMPANEL_ZOOMIN;Zoom Avant\nRaccourci: + ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + +!HISTORY_MSG_444;WB - Temp bias +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index f57acf41a..6643930de 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -929,6 +929,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2028,6 +2029,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_WBALANCE_SOLUX41;Solux 4100K !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 0ed0c41bf..1c3a97c16 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_WBALANCE_SOLUX41;Solux 4100K !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 613a29301..ae60b9303 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1547,6 +1547,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -2041,4 +2042,6 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: Alt-f diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 0ba1b52e4..c879c649c 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -1925,6 +1925,7 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -2071,3 +2072,5 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - !TP_RETINEX_VIEW_TRAN;Transmission - Auto !TP_RETINEX_VIEW_TRAN2;Transmission - Fixed !TP_RETINEX_VIEW_UNSHARP;Unsharp mask +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index bb9c63ea4..bc3546cba 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_WBALANCE_SOLUX41;Solux 4100K !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index b2ae35fbe..1188f5344 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1209,6 +1209,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2036,6 +2037,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_WAVELET_TON;Toning !TP_WBALANCE_EQBLUERED;Blue/Red equalizer !TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behavior of "white balance" by modulating the blue/red balance.\nThis can be useful when shooting conditions:\na) are far from the standard illuminant (e.g. underwater),\nb) are far from conditions where calibrations were performed,\nc) where the matrices or ICC profiles are unsuitable. +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 !TP_WBALANCE_WATER_HEADER;UnderWater diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index adb37a61f..636efe1ad 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2004,6 +2004,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -2058,3 +2059,5 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain. !TP_RETINEX_SKAL;Scale !TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 40ed600c9..79ad3ebfd 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -929,6 +929,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2028,6 +2029,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_WBALANCE_SOLUX41;Solux 4100K !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index bbe23f2fd..6493ba694 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1631,6 +1631,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -2047,3 +2048,5 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index fd1205a7d..ce490653c 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1631,6 +1631,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -2047,3 +2048,5 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 4643008f1..b7ab9b7bf 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;Temperatura !TP_WBALANCE_SOLUX41;Solux 4100K !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 120d17530..9ed2b940b 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1490,6 +1490,7 @@ ZOOMPANEL_ZOOMOUT;Удалить - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -2043,4 +2044,6 @@ ZOOMPANEL_ZOOMOUT;Удалить - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: Alt-f diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 6797ab195..648a123e2 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1657,6 +1657,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -2176,4 +2177,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: Alt-f diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 1a86a552a..49f5eee27 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1657,6 +1657,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -2176,4 +2177,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: Alt-f diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 8e7957cf4..070c2f4a1 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -993,6 +993,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2037,6 +2038,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_WBALANCE_SOLUX41;Solux 4100K !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index d92c71c88..d14a02808 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -931,6 +931,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2029,6 +2030,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_WBALANCE_SOLUX41;Solux 4100K !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index d98dabc24..b25ebf2a5 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1918,6 +1918,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_425;Retinex - Log base !HISTORY_MSG_427;Output rendering intent !HISTORY_MSG_428;Monitor rendering intent +!HISTORY_MSG_444;WB - Temp bias !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. !IPTCPANEL_COPYRIGHT;Copyright notice @@ -2043,3 +2044,5 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_WAVELET_TILES_TOOLTIP;Processing the full image leads to better quality and is the recommended option, while using tiles is a fall-back solution for users with little RAM. Refer to RawPedia for memory requirements. !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TON;Toning +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 2e64516f1..03eb15ca3 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -930,6 +930,7 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output Black Point Compensation +!HISTORY_MSG_444;WB - Temp bias !HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s !IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider. !IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image. @@ -2028,6 +2029,8 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_WBALANCE_SOLUX41;Solux 4100K !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) +!TP_WBALANCE_TEMPBIAS;AWB temperature bias +!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". !TP_WBALANCE_TUNGSTEN;Tungsten !TP_WBALANCE_WATER1;UnderWater 1 !TP_WBALANCE_WATER2;UnderWater 2 diff --git a/rtdata/languages/default b/rtdata/languages/default index fc5aa8881..5bcfc2892 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -675,6 +675,7 @@ HISTORY_MSG_440;CbDL - Method HISTORY_MSG_441;Retinex - Gain transmission HISTORY_MSG_442;Retinex - Scale HISTORY_MSG_443;Output Black Point Compensation +HISTORY_MSG_444;WB - Temp bias HISTORY_NEWSNAPSHOT;Add HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s HISTORY_SNAPSHOT;Snapshot @@ -2022,6 +2023,8 @@ TP_WBALANCE_SOLUX41;Solux 4100K TP_WBALANCE_SOLUX47;Solux 4700K (vendor) TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) TP_WBALANCE_SPOTWB;Spot WB +TP_WBALANCE_TEMPBIAS;AWB temperature bias +TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". TP_WBALANCE_TEMPERATURE;Temperature TP_WBALANCE_TUNGSTEN;Tungsten TP_WBALANCE_WATER1;UnderWater 1 diff --git a/rtengine/colortemp.h b/rtengine/colortemp.h index 33a2b1b04..2d346dd81 100644 --- a/rtengine/colortemp.h +++ b/rtengine/colortemp.h @@ -57,10 +57,13 @@ public: ColorTemp (double t, double g, double e, const Glib::ustring &m); ColorTemp (double mulr, double mulg, double mulb, double e); - void update (const double rmul, const double gmul, const double bmul, const double equal) + void update (const double rmul, const double gmul, const double bmul, const double equal, const double tempBias=0.0) { this->equal = equal; mul2temp (rmul, gmul, bmul, this->equal, temp, green); + if (tempBias != 0.0 && tempBias >= -1.0 && tempBias <= 1.0) { + temp += temp * tempBias; + } } void useDefaults (const double equal) { diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 46cf031bd..83e4ce40f 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -34,7 +34,7 @@ extern const Settings* settings; ImProcCoordinator::ImProcCoordinator () : orig_prev(nullptr), oprevi(nullptr), oprevl(nullptr), nprevl(nullptr), previmg(nullptr), workimg(nullptr), - ncie(nullptr), imgsrc(nullptr), shmap(nullptr), lastAwbEqual(0.), ipf(¶ms, true), monitorIntent(RI_RELATIVE), + ncie(nullptr), imgsrc(nullptr), shmap(nullptr), lastAwbEqual(0.), lastAwbTempBias(0.0), ipf(¶ms, true), monitorIntent(RI_RELATIVE), softProof(false), gamutCheck(false), scale(10), highDetailPreprocessComputed(false), highDetailRawComputed(false), allocated(false), bwAutoR(-9000.f), bwAutoG(-9000.f), bwAutoB(-9000.f), CAMMean(NAN), @@ -284,15 +284,17 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) if (params.wb.method == "Camera") { currWB = imgsrc->getWB (); } else if (params.wb.method == "Auto") { - if (lastAwbEqual != params.wb.equal) { + if (lastAwbEqual != params.wb.equal || lastAwbTempBias != params.wb.tempBias) { double rm, gm, bm; imgsrc->getAutoWBMultipliers(rm, gm, bm); if (rm != -1.) { - autoWB.update(rm, gm, bm, params.wb.equal); + autoWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias); lastAwbEqual = params.wb.equal; + lastAwbTempBias = params.wb.tempBias; } else { lastAwbEqual = -1.; + lastAwbTempBias = 0.0; autoWB.useDefaults(params.wb.equal); } @@ -1011,21 +1013,23 @@ void ImProcCoordinator::progress (Glib::ustring str, int pr) }*/ } -bool ImProcCoordinator::getAutoWB (double& temp, double& green, double equal) +bool ImProcCoordinator::getAutoWB (double& temp, double& green, double equal, double tempBias) { if (imgsrc) { - if (lastAwbEqual != equal) { + if (lastAwbEqual != equal || lastAwbTempBias != tempBias) { // Issue 2500 MyMutex::MyLock lock(minit); // Also used in crop window double rm, gm, bm; imgsrc->getAutoWBMultipliers(rm, gm, bm); if (rm != -1) { - autoWB.update(rm, gm, bm, equal); + autoWB.update(rm, gm, bm, equal, tempBias); lastAwbEqual = equal; + lastAwbTempBias = tempBias; } else { lastAwbEqual = -1.; autoWB.useDefaults(equal); + lastAwbTempBias = 0.0; } } @@ -1162,15 +1166,17 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool if (params.wb.method == "Camera") { currWB = imgsrc->getWB (); } else if (params.wb.method == "Auto") { - if (lastAwbEqual != params.wb.equal) { + if (lastAwbEqual != params.wb.equal || lastAwbTempBias != params.wb.tempBias) { double rm, gm, bm; imgsrc->getAutoWBMultipliers(rm, gm, bm); if (rm != -1.) { - autoWB.update(rm, gm, bm, params.wb.equal); + autoWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias); lastAwbEqual = params.wb.equal; + lastAwbTempBias = params.wb.tempBias; } else { lastAwbEqual = -1.; + lastAwbTempBias = 0.0; autoWB.useDefaults(params.wb.equal); } } diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 2cc767b39..80ad0dd99 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -69,6 +69,7 @@ protected: ColorTemp autoWB; double lastAwbEqual; + double lastAwbTempBias; ImProcFunctions ipf; @@ -256,7 +257,7 @@ public: DetailedCrop* createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow); - bool getAutoWB (double& temp, double& green, double equal); + bool getAutoWB (double& temp, double& green, double equal, double tempBias); void getCamWB (double& temp, double& green); void getSpotWB (int x, int y, int rectSize, double& temp, double& green); void getAutoCrop (double ratio, int &x, int &y, int &w, int &h); diff --git a/rtengine/procevents.h b/rtengine/procevents.h index 52517e527..bca679bdb 100644 --- a/rtengine/procevents.h +++ b/rtengine/procevents.h @@ -470,6 +470,7 @@ enum ProcEvent { EvRetinexgaintransmission = 440, EvLskal = 441, EvOBPCompens = 442, + EvWBtempBias = 443, NUMOFEVENTS }; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 788c422d6..7f4ae11f8 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -58,40 +58,40 @@ bool ToneCurveParams::HLReconstructionNecessary(LUTu &histRedRaw, LUTu &histGree void WBParams::init() { // Creation of the different methods and its associated temperature value - wbEntries.push_back(new WBEntry("Camera" , WBT_CAMERA, M("TP_WBALANCE_CAMERA"), 0, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Auto" , WBT_AUTO, M("TP_WBALANCE_AUTO"), 0, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Daylight" , WBT_DAYLIGHT, M("TP_WBALANCE_DAYLIGHT"), 5300, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Cloudy" , WBT_CLOUDY, M("TP_WBALANCE_CLOUDY"), 6200, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Shade" , WBT_SHADE, M("TP_WBALANCE_SHADE"), 7600, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Water 1" , WBT_WATER, M("TP_WBALANCE_WATER1"), 35000, 0.3f, 1.1f)); - wbEntries.push_back(new WBEntry("Water 2" , WBT_WATER, M("TP_WBALANCE_WATER2"), 48000, 0.63f, 1.38f)); - wbEntries.push_back(new WBEntry("Tungsten" , WBT_TUNGSTEN, M("TP_WBALANCE_TUNGSTEN"), 2856, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F1" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO1"), 6430, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F2" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO2"), 4230, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F3" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO3"), 3450, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F4" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO4"), 2940, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F5" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO5"), 6350, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F6" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO6"), 4150, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F7" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO7"), 6500, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F8" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO8"), 5020, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F9" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO9"), 4330, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F10" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO10"), 5300, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F11" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO11"), 4000, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Fluo F12" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO12"), 3000, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("HMI Lamp" , WBT_LAMP, M("TP_WBALANCE_HMI"), 4800, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("GTI Lamp" , WBT_LAMP, M("TP_WBALANCE_GTI"), 5000, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("JudgeIII Lamp" , WBT_LAMP, M("TP_WBALANCE_JUDGEIII"), 5100, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Solux Lamp 3500K" , WBT_LAMP, M("TP_WBALANCE_SOLUX35"), 3480, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Solux Lamp 4100K" , WBT_LAMP, M("TP_WBALANCE_SOLUX41"), 3930, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Solux Lamp 4700K" , WBT_LAMP, M("TP_WBALANCE_SOLUX47"), 4700, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("NG Solux Lamp 4700K" , WBT_LAMP, M("TP_WBALANCE_SOLUX47_NG"), 4480, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("LED LSI Lumelex 2040", WBT_LED, M("TP_WBALANCE_LED_LSI"), 2970, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("LED CRS SP12 WWMR16" , WBT_LED, M("TP_WBALANCE_LED_CRS"), 3050, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Flash 5500K" , WBT_FLASH, M("TP_WBALANCE_FLASH55"), 5500, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Flash 6000K" , WBT_FLASH, M("TP_WBALANCE_FLASH60"), 6000, 1.f, 1.f)); - wbEntries.push_back(new WBEntry("Flash 6500K" , WBT_FLASH, M("TP_WBALANCE_FLASH65"), 6500, 1.f, 1.f)); + wbEntries.push_back(new WBEntry("Camera" , WBT_CAMERA, M("TP_WBALANCE_CAMERA"), 0, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Auto" , WBT_AUTO, M("TP_WBALANCE_AUTO"), 0, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Daylight" , WBT_DAYLIGHT, M("TP_WBALANCE_DAYLIGHT"), 5300, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Cloudy" , WBT_CLOUDY, M("TP_WBALANCE_CLOUDY"), 6200, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Shade" , WBT_SHADE, M("TP_WBALANCE_SHADE"), 7600, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Water 1" , WBT_WATER, M("TP_WBALANCE_WATER1"), 35000, 0.3f, 1.1f, 0.f)); + wbEntries.push_back(new WBEntry("Water 2" , WBT_WATER, M("TP_WBALANCE_WATER2"), 48000, 0.63f, 1.38f, 0.f)); + wbEntries.push_back(new WBEntry("Tungsten" , WBT_TUNGSTEN, M("TP_WBALANCE_TUNGSTEN"), 2856, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F1" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO1"), 6430, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F2" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO2"), 4230, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F3" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO3"), 3450, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F4" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO4"), 2940, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F5" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO5"), 6350, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F6" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO6"), 4150, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F7" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO7"), 6500, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F8" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO8"), 5020, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F9" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO9"), 4330, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F10" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO10"), 5300, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F11" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO11"), 4000, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Fluo F12" , WBT_FLUORESCENT, M("TP_WBALANCE_FLUO12"), 3000, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("HMI Lamp" , WBT_LAMP, M("TP_WBALANCE_HMI"), 4800, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("GTI Lamp" , WBT_LAMP, M("TP_WBALANCE_GTI"), 5000, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("JudgeIII Lamp" , WBT_LAMP, M("TP_WBALANCE_JUDGEIII"), 5100, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Solux Lamp 3500K" , WBT_LAMP, M("TP_WBALANCE_SOLUX35"), 3480, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Solux Lamp 4100K" , WBT_LAMP, M("TP_WBALANCE_SOLUX41"), 3930, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Solux Lamp 4700K" , WBT_LAMP, M("TP_WBALANCE_SOLUX47"), 4700, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("NG Solux Lamp 4700K" , WBT_LAMP, M("TP_WBALANCE_SOLUX47_NG"), 4480, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("LED LSI Lumelex 2040", WBT_LED, M("TP_WBALANCE_LED_LSI"), 2970, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("LED CRS SP12 WWMR16" , WBT_LED, M("TP_WBALANCE_LED_CRS"), 3050, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Flash 5500K" , WBT_FLASH, M("TP_WBALANCE_FLASH55"), 5500, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Flash 6000K" , WBT_FLASH, M("TP_WBALANCE_FLASH60"), 6000, 1.f, 1.f, 0.f)); + wbEntries.push_back(new WBEntry("Flash 6500K" , WBT_FLASH, M("TP_WBALANCE_FLASH65"), 6500, 1.f, 1.f, 0.f)); // Should remain the last one - wbEntries.push_back(new WBEntry("Custom" , WBT_CUSTOM, M("TP_WBALANCE_CUSTOM"), 0, 1.f, 1.f)); + wbEntries.push_back(new WBEntry("Custom" , WBT_CUSTOM, M("TP_WBALANCE_CUSTOM"), 0, 1.f, 1.f, 0.f)); } void WBParams::cleanup() @@ -1059,6 +1059,7 @@ void ProcParams::setDefaults () wb.temperature = 6504; wb.green = 1.0; wb.equal = 1.0; + wb.tempBias = 0.0; colorappearance.enabled = false; colorappearance.degree = 90; colorappearance.autodegree = true; @@ -1985,6 +1986,10 @@ int ProcParams::save (const Glib::ustring &fname, const Glib::ustring &fname2, b keyFile.set_double ("White Balance", "Equal", wb.equal); } + if (!pedited || pedited->wb.tempBias) { + keyFile.set_double ("White Balance", "TemperatureBias", wb.tempBias); + } + /* // save colorShift if (!pedited || pedited->colorShift.a) keyFile.set_double ("Color Shift", "ChannelA", colorShift.a); @@ -4664,6 +4669,14 @@ int ProcParams::load (const Glib::ustring &fname, ParamsEdited* pedited) pedited->wb.equal = true; } } + + if (keyFile.has_key ("White Balance", "TemperatureBias")) { + wb.tempBias = keyFile.get_double ("White Balance", "TemperatureBias"); + + if (pedited) { + pedited->wb.tempBias = true; + } + } } // load colorShift diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 7c2d71aaa..7cdc0894f 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -546,8 +546,9 @@ public: int temperature; double green; double equal; + double tempBias; - WBEntry(const Glib::ustring &p, enum WBTypes t, const Glib::ustring &l, int temp, double green, double equal) : ppLabel(p), type(t), GUILabel(l), temperature(temp), green(green), equal(equal) {}; + WBEntry(const Glib::ustring &p, enum WBTypes t, const Glib::ustring &l, int temp, double green, double equal, double bias) : ppLabel(p), type(t), GUILabel(l), temperature(temp), green(green), equal(equal), tempBias(bias) {}; }; class WBParams @@ -559,6 +560,7 @@ public: int temperature; double green; double equal; + double tempBias; static void init(); static void cleanup(); diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc index 025265e0a..8e832a734 100644 --- a/rtengine/refreshmap.cc +++ b/rtengine/refreshmap.cc @@ -469,7 +469,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = { ALLNORAW, // EvcbdlMethod RETINEX, // EvRetinexgaintransmission RETINEX, // EvLskal - OUTPUTPROFILE // EvOBPCompens + OUTPUTPROFILE, // EvOBPCompens + ALLNORAW // EvWBtempBias }; diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index 61c779fb7..ef3a1be70 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -396,7 +396,7 @@ public: * @return a pointer to the Crop object that handles the image data trough its own pipeline */ virtual DetailedCrop* createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow) = 0; - virtual bool getAutoWB (double& temp, double& green, double equal) = 0; + virtual bool getAutoWB (double& temp, double& green, double equal, double tempBias) = 0; virtual void getCamWB (double& temp, double& green) = 0; virtual void getSpotWB (int x, int y, int rectSize, double& temp, double& green) = 0; virtual void getAutoCrop (double ratio, int &x, int &y, int &w, int &h) = 0; diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 257a3eeb3..f34e906b9 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -162,6 +162,7 @@ Thumbnail* Thumbnail::loadFromImage (const Glib::ustring& fname, int &w, int &h, tpp->greenAWBMul = avg_g / double(n); tpp->blueAWBMul = avg_b / double(n); tpp->wbEqual = wbEq; + tpp->wbTempBias = 0.0; cTemp.mul2temp (tpp->redAWBMul, tpp->greenAWBMul, tpp->blueAWBMul, tpp->wbEqual, tpp->autoWBTemp, tpp->autoWBGreen); } @@ -735,6 +736,7 @@ Thumbnail* Thumbnail::loadFromRaw (const Glib::ustring& fname, RawMetaDataLocati tpp->greenAWBMul = ri->get_rgb_cam(1, 0) * reds + ri->get_rgb_cam(1, 1) * greens + ri->get_rgb_cam(1, 2) * blues; tpp->blueAWBMul = ri->get_rgb_cam(2, 0) * reds + ri->get_rgb_cam(2, 1) * greens + ri->get_rgb_cam(2, 2) * blues; tpp->wbEqual = wbEq; + tpp->wbTempBias = 0.0; ColorTemp cTemp; cTemp.mul2temp(tpp->redAWBMul, tpp->greenAWBMul, tpp->blueAWBMul, tpp->wbEqual, tpp->autoWBTemp, tpp->autoWBGreen); @@ -776,7 +778,7 @@ Thumbnail::Thumbnail () : camProfile(nullptr), thumbImg(nullptr), camwbRed(1.0), camwbGreen(1.0), camwbBlue(1.0), redAWBMul(-1.0), greenAWBMul(-1.0), blueAWBMul(-1.0), - autoWBTemp(2700), autoWBGreen(1.0), wbEqual(-1.0), + autoWBTemp(2700), autoWBGreen(1.0), wbEqual(-1.0), wbTempBias(0.0), embProfileLength(0), embProfileData(nullptr), embProfile(nullptr), redMultiplier(1.0), greenMultiplier(1.0), blueMultiplier(1.0), defGain(1.0), @@ -839,11 +841,13 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei BENCHFUN // check if the WB's equalizer value has changed - if (wbEqual < (params.wb.equal - 5e-4) || wbEqual > (params.wb.equal + 5e-4)) { + if (wbEqual < (params.wb.equal - 5e-4) || wbEqual > (params.wb.equal + 5e-4) || wbTempBias < (params.wb.tempBias - 5e-4) || wbTempBias > (params.wb.tempBias + 5e-4)) { wbEqual = params.wb.equal; + wbTempBias = params.wb.tempBias; // recompute the autoWB ColorTemp cTemp; cTemp.mul2temp (redAWBMul, greenAWBMul, blueAWBMul, wbEqual, autoWBTemp, autoWBGreen); + autoWBTemp += autoWBTemp * wbTempBias; } // compute WB multipliers @@ -1272,15 +1276,17 @@ void Thumbnail::getCamWB (double& temp, double& green) green = currWB.getGreen (); } -void Thumbnail::getAutoWB (double& temp, double& green, double equal) +void Thumbnail::getAutoWB (double& temp, double& green, double equal, double tempBias) { - if (equal != wbEqual) { + if (equal != wbEqual || tempBias != wbTempBias) { // compute the values depending on equal ColorTemp cTemp; wbEqual = equal; + wbTempBias = tempBias; // compute autoWBTemp and autoWBGreen cTemp.mul2temp(redAWBMul, greenAWBMul, blueAWBMul, wbEqual, autoWBTemp, autoWBGreen); + autoWBTemp += autoWBTemp * tempBias; } temp = autoWBTemp; diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h index 18e72fc19..56e68f815 100644 --- a/rtengine/rtthumbnail.h +++ b/rtengine/rtthumbnail.h @@ -47,7 +47,7 @@ class Thumbnail double camwbGreen; double camwbBlue; double redAWBMul, greenAWBMul, blueAWBMul; // multipliers for auto WB - double autoWBTemp, autoWBGreen, wbEqual; // autoWBTemp and autoWBGreen are updated each time autoWB is requested and if wbEqual has been modified + double autoWBTemp, autoWBGreen, wbEqual, wbTempBias; // autoWBTemp and autoWBGreen are updated each time autoWB is requested and if wbEqual has been modified LUTu aeHistogram; int aeHistCompression; int embProfileLength; @@ -83,7 +83,7 @@ public: static RawMetaDataLocation loadMetaDataFromRaw (const Glib::ustring& fname); void getCamWB (double& temp, double& green); - void getAutoWB (double& temp, double& green, double equal); + void getAutoWB (double& temp, double& green, double equal, double tempBias); void getAutoWBMultipliers (double& rm, double& gm, double& bm); void getSpotWB (const procparams::ProcParams& params, int x, int y, int rect, double& temp, double& green); void applyAutoExp (procparams::ProcParams& pparams); diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 4fb193c2b..9f1ca3c5c 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -160,7 +160,7 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p } else if (params.wb.method == "Auto") { double rm, gm, bm; imgsrc->getAutoWBMultipliers(rm, gm, bm); - currWB.update(rm, gm, bm, params.wb.equal); + currWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias); } NoiseCurve noiseLCurve; diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h index 580874e5a..898ef9528 100644 --- a/rtgui/addsetids.h +++ b/rtgui/addsetids.h @@ -115,6 +115,7 @@ enum { ADDSET_RETI_VART, ADDSET_RETI_GAM, ADDSET_RETI_SLO, + ADDSET_WB_TEMPBIAS, ADDSET_PARAM_NUM // THIS IS USED AS A DELIMITER!! }; diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index 2caa61187..63ece79b2 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -152,7 +152,7 @@ void BatchToolPanelCoordinator::initSession () toneCurve->setAdjusterBehavior (false, false, false, false, false, false, false, false); lcurve->setAdjusterBehavior (false, false, false); - whitebalance->setAdjusterBehavior (false, false, false); + whitebalance->setAdjusterBehavior (false, false, false, false); vibrance->setAdjusterBehavior (false, false); vignetting->setAdjusterBehavior (false, false, false, false); colorappearance->setAdjusterBehavior (false, false, false, false, false, false, false, false, false, false, false, false, false); @@ -191,7 +191,7 @@ void BatchToolPanelCoordinator::initSession () toneCurve->setAdjusterBehavior (options.baBehav[ADDSET_TC_EXPCOMP], options.baBehav[ADDSET_TC_HLCOMPAMOUNT], options.baBehav[ADDSET_TC_HLCOMPTHRESH], options.baBehav[ADDSET_TC_BRIGHTNESS], options.baBehav[ADDSET_TC_BLACKLEVEL], options.baBehav[ADDSET_TC_SHCOMP], options.baBehav[ADDSET_TC_CONTRAST], options.baBehav[ADDSET_TC_SATURATION]); lcurve->setAdjusterBehavior (options.baBehav[ADDSET_LC_BRIGHTNESS], options.baBehav[ADDSET_LC_CONTRAST], options.baBehav[ADDSET_LC_CHROMATICITY]); - whitebalance->setAdjusterBehavior (options.baBehav[ADDSET_WB_TEMPERATURE], options.baBehav[ADDSET_WB_GREEN], options.baBehav[ADDSET_WB_EQUAL]); + whitebalance->setAdjusterBehavior (options.baBehav[ADDSET_WB_TEMPERATURE], options.baBehav[ADDSET_WB_GREEN], options.baBehav[ADDSET_WB_EQUAL], options.baBehav[ADDSET_WB_TEMPBIAS]); vibrance->setAdjusterBehavior (options.baBehav[ADDSET_VIBRANCE_PASTELS], options.baBehav[ADDSET_VIBRANCE_SATURATED]); vignetting->setAdjusterBehavior (options.baBehav[ADDSET_VIGN_AMOUNT], options.baBehav[ADDSET_VIGN_RADIUS], options.baBehav[ADDSET_VIGN_STRENGTH], options.baBehav[ADDSET_VIGN_CENTER]); colorappearance->setAdjusterBehavior (options.baBehav[ADDSET_CAT_DEGREE], options.baBehav[ADDSET_CAT_ADAPTSCENE], options.baBehav[ADDSET_CAT_ADAPTVIEWING], options.baBehav[ADDSET_CAT_BADPIX], options.baBehav[ADDSET_CAT_LIGHT], options.baBehav[ADDSET_CAT_CHROMA], options.baBehav[ADDSET_CAT_CONTRAST], options.baBehav[ADDSET_CAT_RSTPRO], options.baBehav[ADDSET_CAT_BRIGHT], options.baBehav[ADDSET_CAT_CONTRAST_Q], options.baBehav[ADDSET_CAT_CHROMA_S], options.baBehav[ADDSET_CAT_CHROMA_M], options.baBehav[ADDSET_CAT_HUE]); @@ -325,6 +325,10 @@ void BatchToolPanelCoordinator::initSession () pparams.wb.equal = 0; } + if (options.baBehav[ADDSET_WB_TEMPBIAS]) { + pparams.wb.tempBias = 0; + } + if (options.baBehav[ADDSET_VIBRANCE_PASTELS]) { pparams.vibrance.pastels = 0; } @@ -856,11 +860,11 @@ void BatchToolPanelCoordinator::panelChanged (rtengine::ProcEvent event, const G } } -void BatchToolPanelCoordinator::getAutoWB (double& temp, double& green, double equal) +void BatchToolPanelCoordinator::getAutoWB (double& temp, double& green, double equal, double tempBias) { if (!selected.empty()) { - selected[0]->getAutoWB (temp, green, equal); + selected[0]->getAutoWB (temp, green, equal, tempBias); } } diff --git a/rtgui/batchtoolpanelcoord.h b/rtgui/batchtoolpanelcoord.h index c96a1a329..4efcea6fa 100644 --- a/rtgui/batchtoolpanelcoord.h +++ b/rtgui/batchtoolpanelcoord.h @@ -60,7 +60,7 @@ public: void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr); // wbprovider interface - void getAutoWB (double& temp, double& green, double equal); + void getAutoWB (double& temp, double& green, double equal, double tempBias); void getCamWB (double& temp, double& green); // thumbnaillistener interface diff --git a/rtgui/options.cc b/rtgui/options.cc index 431b3ffb3..5c0c032eb 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -604,6 +604,7 @@ void Options::setDefaults () 0, // ADDSET_RETI_VART 0, // ADDSET_RETI_GAM 0, // ADDSET_RETI_SLO + 0, // ADDSET_WB_TEMPBIAS }; rtSettings.darkFramesPath = ""; diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index ff3e4c0b1..7704327bb 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -215,6 +215,7 @@ void ParamsEdited::set (bool v) wb.green = v; wb.temperature = v; wb.equal = v; + wb.tempBias = v; //colorShift.a = v; //colorShift.b = v; //lumaDenoise.enabled = v; @@ -708,6 +709,7 @@ void ParamsEdited::initFrom (const std::vector wb.green = wb.green && p.wb.green == other.wb.green; wb.equal = wb.equal && p.wb.equal == other.wb.equal; wb.temperature = wb.temperature && p.wb.temperature == other.wb.temperature; + wb.tempBias = wb.tempBias && p.wb.tempBias == other.wb.tempBias; //colorShift.a = colorShift.a && p.colorShift.a == other.colorShift.a; //colorShift.b = colorShift.b && p.colorShift.b == other.colorShift.b; //lumaDenoise.enabled = lumaDenoise.enabled && p.lumaDenoise.enabled == other.lumaDenoise.enabled; @@ -1587,6 +1589,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten toEdit.wb.equal = dontforceSet && options.baBehav[ADDSET_WB_EQUAL] ? toEdit.wb.equal + mods.wb.equal : mods.wb.equal; } + if (wb.tempBias) { + toEdit.wb.tempBias = dontforceSet && options.baBehav[ADDSET_WB_TEMPBIAS] ? toEdit.wb.tempBias + mods.wb.tempBias : mods.wb.tempBias; + } + if (wb.green) { toEdit.wb.green = dontforceSet && options.baBehav[ADDSET_WB_GREEN] ? toEdit.wb.green + mods.wb.green : mods.wb.green; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index 38f26658a..fc549d91a 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -234,6 +234,7 @@ public: bool temperature; bool green; bool equal; + bool tempBias; }; /*class ColorShiftParamsEdited { diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 04f3b1fe1..0de355bd2 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -231,6 +231,7 @@ Gtk::Widget* Preferences::getBatchProcPanel () appendBehavList (mi, M("TP_WBALANCE_TEMPERATURE"), ADDSET_WB_TEMPERATURE, true); appendBehavList (mi, M("TP_WBALANCE_GREEN"), ADDSET_WB_GREEN, true); appendBehavList (mi, M("TP_WBALANCE_EQBLUERED"), ADDSET_WB_EQUAL, true); + appendBehavList (mi, M("TP_WBALANCE_TEMPBIAS"), ADDSET_WB_TEMPBIAS, true); mi = behModel->append (); mi->set_value (behavColumns.label, M("TP_COLORAPP_LABEL")); diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 71aeab0ab..03ef49a5e 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -184,7 +184,7 @@ const ProcParams& Thumbnail::getProcParamsU () pparams.wb.temperature = ct; } else if (pparams.wb.method == "Auto") { double ct; - getAutoWB (ct, pparams.wb.green, pparams.wb.equal); + getAutoWB (ct, pparams.wb.green, pparams.wb.equal, pparams.wb.tempBias); pparams.wb.temperature = ct; } } @@ -669,7 +669,7 @@ const Glib::ustring& Thumbnail::getDateTimeString () return dateTimeString; } -void Thumbnail::getAutoWB (double& temp, double& green, double equal) +void Thumbnail::getAutoWB (double& temp, double& green, double equal, double tempBias) { if (cfs.redAWBMul != -1.0) { rtengine::ColorTemp ct(cfs.redAWBMul, cfs.greenAWBMul, cfs.blueAWBMul, equal); diff --git a/rtgui/thumbnail.h b/rtgui/thumbnail.h index a7b889d5f..8c7691ed2 100644 --- a/rtgui/thumbnail.h +++ b/rtgui/thumbnail.h @@ -125,7 +125,7 @@ public: temp = green = -1.0; } } - void getAutoWB (double& temp, double& green, double equal); + void getAutoWB (double& temp, double& green, double equal, double tempBias); void getSpotWB (int x, int y, int rect, double& temp, double& green) { if (tpp) { diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index c4d4d3ac2..68a458916 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -252,10 +252,10 @@ public: void writeOptions (); // wbprovider interface - void getAutoWB (double& temp, double& green, double equal) + void getAutoWB (double& temp, double& green, double equal, double tempBias) { if (ipc) { - ipc->getAutoWB (temp, green, equal); + ipc->getAutoWB (temp, green, equal, tempBias); } } void getCamWB (double& temp, double& green) diff --git a/rtgui/wbprovider.h b/rtgui/wbprovider.h index 2e46467f9..df1329c84 100644 --- a/rtgui/wbprovider.h +++ b/rtgui/wbprovider.h @@ -25,7 +25,7 @@ class WBProvider public: virtual ~WBProvider() {} - virtual void getAutoWB (double& temp, double& green, double equal) {} + virtual void getAutoWB (double& temp, double& green, double equal, double tempBias) {} virtual void getCamWB (double& temp, double& green) {} virtual void spotWBRequested (int size) {} }; diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index d0413412b..6b510c471 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -232,6 +232,7 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB custom_green = 1.0; custom_equal = 1.0; + custom_tempBias = 0.0; } //Add the model columns to the Combo (which is a kind of view), @@ -313,13 +314,17 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB temp = Gtk::manage (new Adjuster (M("TP_WBALANCE_TEMPERATURE"), MINTEMP, MAXTEMP, 5, CENTERTEMP, itempL, itempR, &wbSlider2Temp, &wbTemp2Slider)); green = Gtk::manage (new Adjuster (M("TP_WBALANCE_GREEN"), MINGREEN, MAXGREEN, 0.001, 1.0, igreenL, igreenR)); equal = Gtk::manage (new Adjuster (M("TP_WBALANCE_EQBLUERED"), MINEQUAL, MAXEQUAL, 0.001, 1.0, iblueredL, iblueredR)); + tempBias = Gtk::manage (new Adjuster(M("TP_WBALANCE_TEMPBIAS"), -0.5, 0.5, 0.01, 0.0)); cache_customTemp (0); cache_customGreen (0); cache_customEqual (0); + cache_customTempBias (0); equal->set_tooltip_markup (M("TP_WBALANCE_EQBLUERED_TOOLTIP")); + tempBias->set_tooltip_markup (M("TP_WBALANCE_TEMPBIAS_TOOLTIP")); temp->show (); green->show (); equal->show (); + tempBias->show (); /* Gtk::HBox* boxgreen = Gtk::manage (new Gtk::HBox ()); boxgreen->show (); @@ -332,10 +337,12 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB //pack_start (*boxgreen); pack_start (*green); pack_start (*equal); + pack_start (*tempBias); temp->setAdjusterListener (this); green->setAdjusterListener (this); equal->setAdjusterListener (this); + tempBias->setAdjusterListener (this); spotbutton->signal_pressed().connect( sigc::mem_fun(*this, &WhiteBalance::spotPressed) ); methconn = method->signal_changed().connect( sigc::mem_fun(*this, &WhiteBalance::optChanged) ); @@ -348,6 +355,7 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval) int tVal = (int)temp->getValue(); double gVal = green->getValue(); double eVal = equal->getValue(); + double tempBiasVal = tempBias->getValue(); Gtk::TreeModel::Row row = getActiveMethod(); if (row == refTreeModel->children().end()) { @@ -358,11 +366,16 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval) WBEntry* ppMethod = findWBEntry (row[methodColumns.colLabel], WBLT_GUI); WBEntry* wbCustom = findWBEntry ("Custom", WBLT_PP); - if (!ppMethod || (ppMethod->ppLabel != wbCustom->ppLabel && !(a == equal && ppMethod->type == WBT_AUTO)) ) { + if (!ppMethod || (ppMethod->ppLabel != wbCustom->ppLabel && !((a == equal || a == tempBias) && ppMethod->type == WBT_AUTO)) ) { methconn.block(true); opt = setActiveMethod(wbCustom->GUILabel); cache_customWB (tVal, gVal); - cache_customEqual(eVal); + if (a != equal) { + cache_customEqual(eVal); + } + if (a != tempBias) { + cache_customTempBias(tempBiasVal); + } methconn.block(false); } @@ -373,12 +386,16 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval) cache_customGreen (gVal); } else if (a == equal) { cache_customEqual (eVal); + } else if (a == tempBias) { + cache_customTempBias (tempBiasVal); + } + if (a == equal || a == tempBias) { // Recomputing AutoWB if it's the current method if (wbp && ppMethod->type == WBT_AUTO) { double ctemp = -1.0; double cgreen = -1.0; - wbp->getAutoWB (ctemp, cgreen, eVal); + wbp->getAutoWB (ctemp, cgreen, eVal, tempBiasVal); if (ctemp != -1.0) { // Set the automatics temperature value only if in SET mode @@ -401,6 +418,8 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval) listener->panelChanged (EvWBGreen, Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), a->getValue())); } else if (a == equal) { listener->panelChanged (EvWBequal, Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), a->getValue())); + } else if (a == tempBias) { + listener->panelChanged (EvWBtempBias, Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), a->getValue())); } } } @@ -442,11 +461,13 @@ void WhiteBalance::optChanged () temp->setValue (temp->getAddMode() ? 0.0 : (int)ctemp); green->setValue (green->getAddMode() ? 0.0 : cgreen); equal->setValue (equal->getAddMode() ? 0.0 : 1.0); + tempBias->setValue (tempBias->getAddMode() ? 0.0 : 0.0); if (batchMode) { temp->setEditedState (UnEdited); green->setEditedState (UnEdited); equal->setEditedState (UnEdited); + tempBias->setEditedState (UnEdited); } } @@ -460,9 +481,9 @@ void WhiteBalance::optChanged () // equal remain as is } - if (!batchMode || equal->getEditedState()) { + if (!batchMode || equal->getEditedState() || tempBias->getEditedState()) { double ctemp, cgreen; - wbp->getAutoWB (ctemp, cgreen, equal->getValue()); + wbp->getAutoWB (ctemp, cgreen, equal->getValue(), tempBias->getValue()); if (ctemp != -1.0) { temp->setValue (temp->getAddMode() ? 0.0 : (int)ctemp); @@ -478,16 +499,19 @@ void WhiteBalance::optChanged () temp->setValue (temp->getAddMode() ? 0.0 : custom_temp); green->setValue (green->getAddMode() ? 0.0 : custom_green); equal->setValue (equal->getAddMode() ? 0.0 : custom_equal); + tempBias->setValue (tempBias->getAddMode() ? 0.0 : custom_tempBias); } else { cache_customTemp (temp->getValue()); cache_customGreen (green->getValue()); cache_customEqual (equal->getValue()); + cache_customTempBias (tempBias->getValue()); } if (batchMode) { temp->setEditedState (Edited); green->setEditedState (Edited); equal->setEditedState (Edited); + tempBias->setEditedState (Edited); } break; @@ -506,11 +530,13 @@ void WhiteBalance::optChanged () temp->setValue ( temp->getAddMode() ? 0.0 : (double)(currMethod->temperature)); green->setValue (green->getAddMode() ? 0.0 : (double)(currMethod->green)); equal->setValue (equal->getAddMode() ? 0.0 : (double)(currMethod->equal)); + tempBias->setValue (tempBias->getAddMode() ? 0.0 : (double)(currMethod->tempBias)); if (batchMode) { temp->setEditedState (Edited); green->setEditedState (Edited); equal->setEditedState (Edited); + tempBias->setEditedState (Edited); } break; @@ -546,12 +572,14 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) methconn.block (true); equal->setValue (pp->wb.equal); + tempBias->setValue (pp->wb.tempBias); if (pedited) { // By default, temperature and green are said "UnEdited", but it may change later temp->setEditedState (UnEdited); green->setEditedState (UnEdited); equal->setEditedState (pedited->wb.equal ? Edited : UnEdited); + tempBias->setEditedState (pedited->wb.tempBias ? Edited : UnEdited); } if (pedited && !pedited->wb.method) { @@ -571,9 +599,11 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) temp->setValue (temp->getAddMode() ? 0.0 : pp->wb.temperature); green->setValue (green->getAddMode() ? 0.0 : pp->wb.green); equal->setValue (equal->getAddMode() ? 0.0 : pp->wb.equal); + tempBias->setValue (tempBias->getAddMode() ? 0.0 : pp->wb.tempBias); cache_customTemp (pp->wb.temperature); cache_customGreen (pp->wb.green); cache_customEqual (pp->wb.equal); + cache_customTempBias (pp->wb.tempBias); if (pedited) { // The user may have changed the temperature and green value @@ -595,10 +625,12 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) // Set the camera's green value, or 0.0 if in ADD mode green->setValue (green->getAddMode() ? 0.0 : cgreen); equal->setValue (equal->getAddMode() ? 0.0 : 1.); + tempBias->setValue (tempBias->getAddMode() ? 0.0 : 0.0); } else { temp->setValue (temp->getAddMode() ? 0.0 : pp->wb.temperature); green->setValue (green->getAddMode() ? 0.0 : pp->wb.green); equal->setValue (equal->getAddMode() ? 0.0 : pp->wb.equal); + tempBias->setValue (equal->getAddMode() ? 0.0 : pp->wb.tempBias); } } @@ -607,7 +639,8 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) case WBT_AUTO: // the equalizer's value is restored for the AutoWB equal->setValue (equal->getAddMode() ? 0.0 : pp->wb.equal); - + tempBias->setValue (tempBias->getAddMode() ? 0.0 : pp->wb.tempBias); + // set default values first if in ADD mode, otherwise keep the current ones if (temp->getAddMode() ) { temp->setValue (0.0); @@ -621,7 +654,7 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) if (wbp) { double ctemp = -1.0; double cgreen = -1.0; - wbp->getAutoWB (ctemp, cgreen, pp->wb.equal); + wbp->getAutoWB (ctemp, cgreen, pp->wb.equal, pp->wb.tempBias); if (ctemp != -1.0) { // Set the automatics temperature if in SET mode @@ -663,11 +696,13 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) // Set the stored temperature, or 0.0 if in ADD mode green->setValue(green->getAddMode() ? 0.0 : pp->wb.green); equal->setValue(equal->getAddMode() ? 0.0 : pp->wb.equal); + tempBias->setValue(equal->getAddMode() ? 0.0 : pp->wb.tempBias); // The user may have changed the green value even for predefined WB values if (pedited) { green->setEditedState (pedited->wb.green ? Edited : UnEdited); equal->setEditedState (pedited->wb.equal ? Edited : UnEdited); + tempBias->setEditedState (pedited->wb.tempBias ? Edited : UnEdited); } //cache_customGreen (pp->wb.green); @@ -688,6 +723,7 @@ void WhiteBalance::write (ProcParams* pp, ParamsEdited* pedited) pedited->wb.temperature = temp->getEditedState (); pedited->wb.green = green->getEditedState (); pedited->wb.equal = equal->getEditedState (); + pedited->wb.tempBias = tempBias->getEditedState (); pedited->wb.method = row[methodColumns.colLabel] != M("GENERAL_UNCHANGED"); } @@ -700,11 +736,14 @@ void WhiteBalance::write (ProcParams* pp, ParamsEdited* pedited) pp->wb.temperature = temp->getIntValue (); pp->wb.green = green->getValue (); pp->wb.equal = equal->getValue (); + pp->wb.tempBias = tempBias->getValue (); } void WhiteBalance::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited) { + equal->setDefault (defParams->wb.equal); + tempBias->setDefault (defParams->wb.tempBias); if (wbp && defParams->wb.method == "Camera") { double ctemp; @@ -721,7 +760,7 @@ void WhiteBalance::setDefaults (const ProcParams* defParams, const ParamsEdited* // but wbp is not ready to provide! double ctemp; double cgreen; - wbp->getAutoWB (ctemp, cgreen, defParams->wb.equal); + wbp->getAutoWB (ctemp, cgreen, defParams->wb.equal, defParams->wb.tempBias); if (ctemp != -1.0) { temp->setDefault (temp->getAddMode() ? 0 : (int)ctemp); @@ -740,10 +779,12 @@ void WhiteBalance::setDefaults (const ProcParams* defParams, const ParamsEdited* temp->setDefaultEditedState (pedited->wb.temperature ? Edited : UnEdited); green->setDefaultEditedState (pedited->wb.green ? Edited : UnEdited); equal->setDefaultEditedState (pedited->wb.equal ? Edited : UnEdited); + tempBias->setDefaultEditedState (pedited->wb.tempBias ? Edited : UnEdited); } else { temp->setDefaultEditedState (Irrelevant); green->setDefaultEditedState (Irrelevant); equal->setDefaultEditedState (Irrelevant); + tempBias->setDefaultEditedState (Irrelevant); } } @@ -754,6 +795,7 @@ void WhiteBalance::setBatchMode (bool batchMode) temp->showEditedCB (); green->showEditedCB (); equal->showEditedCB (); + tempBias->showEditedCB (); Gtk::TreeModel::Row row = *(refTreeModel->append()); row[methodColumns.colId] = WBParams::wbEntries.size(); row[methodColumns.colLabel] = M("GENERAL_UNCHANGED"); @@ -776,6 +818,7 @@ void WhiteBalance::setWB (int vtemp, double vgreen) opt = setActiveMethod(wbValues->GUILabel); cache_customWB (vtemp, vgreen); // sequence in which this call is made is important; must be before "method->set_active (2);" cache_customEqual(equal->getValue()); + cache_customTempBias(tempBias->getValue()); temp->setEditedState (Edited); green->setEditedState (Edited); methconn.block(false); @@ -785,12 +828,13 @@ void WhiteBalance::setWB (int vtemp, double vgreen) } } -void WhiteBalance::setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd) +void WhiteBalance::setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd, bool tempbiasadd) { temp->setAddMode(tempadd); green->setAddMode(greenadd); equal->setAddMode(equaladd); + tempBias->setAddMode(tempbiasadd); } void WhiteBalance::trimValues (rtengine::procparams::ProcParams* pp) @@ -799,6 +843,7 @@ void WhiteBalance::trimValues (rtengine::procparams::ProcParams* pp) temp->trimValue(pp->wb.temperature); green->trimValue(pp->wb.green); equal->trimValue(pp->wb.equal); + tempBias->trimValue(pp->wb.tempBias); } inline void WhiteBalance::cache_customTemp(int temp) @@ -815,6 +860,11 @@ void WhiteBalance::cache_customEqual(double equal) custom_equal = equal; } +void WhiteBalance::cache_customTempBias(double tempBias) +{ + custom_tempBias = tempBias; +} + void WhiteBalance::cache_customWB(int temp, double green) { cache_customTemp (temp); diff --git a/rtgui/whitebalance.h b/rtgui/whitebalance.h index c18b15853..a0d961612 100644 --- a/rtgui/whitebalance.h +++ b/rtgui/whitebalance.h @@ -65,6 +65,7 @@ protected: Adjuster* temp; Adjuster* green; Adjuster* equal; + Adjuster* tempBias; Gtk::Button* spotbutton; int opt; @@ -76,10 +77,12 @@ protected: int custom_temp; double custom_green; double custom_equal; + double custom_tempBias; void cache_customWB (int temp, double green); //cache custom WB setting to allow its recall void cache_customTemp (int temp); //cache Temperature only to allow its recall void cache_customGreen (double green); //cache Green only to allow its recall void cache_customEqual (double equal); //cache Equal only to allow its recall + void cache_customTempBias (double tempBias); //cache TempBias only to allow its recall int setActiveMethod (Glib::ustring label); int _setActiveMethod (Glib::ustring &label, Gtk::TreeModel::Children &children); @@ -115,7 +118,7 @@ public: } void setWB (int temp, double green); - void setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd); + void setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd, bool tempbiasadd); void trimValues (rtengine::procparams::ProcParams* pp); }; From e9b5f42a9ff9549e27c6d5d1105b5a47c7c32496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Wed, 25 Jan 2017 19:38:38 +0100 Subject: [PATCH 02/15] Sanitize `ImageDimensions` base class - Make `width` and `height` private - Drop `getW()` and `getH()` - Clean `PreviewProps` --- rtengine/FTblockDN.cc | 18 ++-- rtengine/dcp.cc | 8 +- rtengine/dcrop.cc | 2 +- rtengine/image16.cc | 6 +- rtengine/image8.cc | 6 +- rtengine/imagedimensions.cc | 79 ++++++++++++----- rtengine/imagedimensions.h | 60 ++++++------- rtengine/imagefloat.cc | 2 +- rtengine/imageio.cc | 18 ++-- rtengine/improccoordinator.cc | 4 +- rtengine/improcfun.cc | 26 +++--- rtengine/ipresize.cc | 32 +++---- rtengine/iptransform.cc | 40 ++++----- rtengine/rawimagesource.cc | 162 +++++++++++++++++----------------- rtengine/rtthumbnail.cc | 116 ++++++++++++------------ rtengine/stdimagesource.cc | 13 ++- rtgui/bqentryupdater.cc | 6 +- 17 files changed, 318 insertions(+), 280 deletions(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 6bb0c4c3c..a62613364 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -495,8 +495,8 @@ SSEFUNCTION void ImProcFunctions::RGB_denoise(int kall, Imagefloat * src, Imagef //printf("NL=%f \n",noisevarL); if (useNoiseLCurve || useNoiseCCurve) { - int hei = calclum->height; - int wid = calclum->width; + int hei = calclum->getHeight(); + int wid = calclum->getWidth(); TMatrix wprofi = iccStore->workingSpaceMatrix (params->icm.working); const float wpi[3][3] = { @@ -573,7 +573,7 @@ SSEFUNCTION void ImProcFunctions::RGB_denoise(int kall, Imagefloat * src, Imagef calclum = nullptr; } - const short int imheight = src->height, imwidth = src->width; + const short int imheight = src->getHeight(), imwidth = src->getWidth(); if (dnparams.luma != 0 || dnparams.chroma != 0 || dnparams.methodmed == "Lab" || dnparams.methodmed == "Lonly") { // gamma transform for input data @@ -1717,8 +1717,8 @@ SSEFUNCTION void ImProcFunctions::RGB_denoise(int kall, Imagefloat * src, Imagef #pragma omp parallel for #endif - for (int i = 0; i < dst->height; ++i) { - for (int j = 0; j < dst->width; ++j) { + for (int i = 0; i < dst->getHeight(); ++i) { + for (int j = 0; j < dst->getWidth(); ++j) { dst->r(i, j) = Color::gammatab_srgb[ dst->r(i, j) ]; dst->g(i, j) = Color::gammatab_srgb[ dst->g(i, j) ]; dst->b(i, j) = Color::gammatab_srgb[ dst->b(i, j) ]; @@ -1746,7 +1746,7 @@ SSEFUNCTION void ImProcFunctions::RGB_denoise(int kall, Imagefloat * src, Imagef //median 3x3 in complement on RGB if (dnparams.methodmed == "RGB" && dnparams.median) { //printf("RGB den\n"); - int wid = dst->width, hei = dst->height; + int wid = dst->getWidth(), hei = dst->getHeight(); float** tm; tm = new float*[hei]; @@ -3115,8 +3115,8 @@ SSEFUNCTION void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat float** lumcalc; float** acalc; float** bcalc; - hei = provicalc->height; - wid = provicalc->width; + hei = provicalc->getHeight(); + wid = provicalc->getWidth(); TMatrix wprofi = iccStore->workingSpaceMatrix (params->icm.working); const float wpi[3][3] = { @@ -3165,7 +3165,7 @@ SSEFUNCTION void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - const int imheight = src->height, imwidth = src->width; + const int imheight = src->getHeight(), imwidth = src->getWidth(); bool denoiseMethodRgb = (dnparams.dmethod == "RGB"); diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index a597fa8db..58524d94c 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -1015,8 +1015,8 @@ void DCPProfile::apply( #pragma omp parallel for #endif - for (int y = 0; y < img->height; ++y) { - for (int x = 0; x < img->width; x++) { + for (int y = 0; y < img->getHeight(); ++y) { + for (int x = 0; x < img->getWidth(); x++) { const float& newr = mat[0][0] * img->r(y, x) + mat[0][1] * img->g(y, x) + mat[0][2] * img->b(y, x); const float& newg = mat[1][0] * img->r(y, x) + mat[1][1] * img->g(y, x) + mat[1][2] * img->b(y, x); const float& newb = mat[2][0] * img->r(y, x) + mat[2][1] * img->g(y, x) + mat[2][2] * img->b(y, x); @@ -1053,8 +1053,8 @@ void DCPProfile::apply( #pragma omp parallel for schedule(dynamic,16) #endif - for (int y = 0; y < img->height; ++y) { - for (int x = 0; x < img->width; x++) { + for (int y = 0; y < img->getHeight(); ++y) { + for (int x = 0; x < img->getWidth(); x++) { float newr = pro_photo[0][0] * img->r(y, x) + pro_photo[0][1] * img->g(y, x) + pro_photo[0][2] * img->b(y, x); float newg = pro_photo[1][0] * img->r(y, x) + pro_photo[1][1] * img->g(y, x) + pro_photo[1][2] * img->b(y, x); float newb = pro_photo[2][0] * img->r(y, x) + pro_photo[2][1] * img->g(y, x) + pro_photo[2][2] * img->b(y, x); diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index bf4d1b194..ffce66ed9 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -113,7 +113,7 @@ void Crop::setEditSubscriber(EditSubscriber* newSubscriber) PipetteBuffer::LabBuffer = nullptr; } - if (PipetteBuffer::singlePlaneBuffer.getW() != -1) { + if (PipetteBuffer::singlePlaneBuffer.getWidth() != -1) { PipetteBuffer::singlePlaneBuffer.flushData(); } } diff --git a/rtengine/image16.cc b/rtengine/image16.cc index df2c5a21f..e0f7470a6 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -153,8 +153,8 @@ void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Preview transform (pp, tran, sx1, sy1, sx2, sy2); - int imwidth = image->width; // Destination image - int imheight = image->height; // Destination image + int imwidth = image->getWidth(); // Destination image + int imheight = image->getHeight(); // Destination image if (((tran & TR_ROT) == TR_R90) || ((tran & TR_ROT) == TR_R270)) { int swap = imwidth; @@ -165,7 +165,7 @@ void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Preview int maxx = width; // Source image int maxy = height; // Source image int mtran = tran & TR_ROT; - int skip = pp.skip; + int skip = pp.getSkip(); //if ((sx1 + skip*imwidth)>maxx) imwidth -- ; // we have a boundary condition that can cause errors diff --git a/rtengine/image8.cc b/rtengine/image8.cc index 9eaf3afc5..56c2a63ee 100644 --- a/rtengine/image8.cc +++ b/rtengine/image8.cc @@ -113,8 +113,8 @@ void Image8::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewP transform (pp, tran, sx1, sy1, sx2, sy2); - int imwidth = image->width; // Destination image - int imheight = image->height; // Destination image + int imwidth = image->getWidth(); // Destination image + int imheight = image->getHeight(); // Destination image if (((tran & TR_ROT) == TR_R90) || ((tran & TR_ROT) == TR_R270)) { int swap = imwidth; @@ -125,7 +125,7 @@ void Image8::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewP int maxx = width; // Source image int maxy = height; // Source image int mtran = tran & TR_ROT; - int skip = pp.skip; + int skip = pp.getSkip(); //if ((sx1 + skip*imwidth)>maxx) imwidth -- ; // we have a boundary condition that can cause errors diff --git a/rtengine/imagedimensions.cc b/rtengine/imagedimensions.cc index f7d291483..7dec1358a 100644 --- a/rtengine/imagedimensions.cc +++ b/rtengine/imagedimensions.cc @@ -20,49 +20,88 @@ #include "imagedimensions.h" #include "rtengine.h" -void ImageDimensions::transform (PreviewProps pp, int tran, int &sx1, int &sy1, int &sx2, int &sy2) +PreviewProps::PreviewProps(int _x, int _y, int _width, int _height, int _skip) : + x(_x), + y(_y), + width(_width), + height(_height), + skip(_skip) { +} - int sw = width, sh = height; +int PreviewProps::getX() const +{ + return x; +} + +int PreviewProps::getY() const +{ + return y; +} + +int PreviewProps::getWidth() const +{ + return width; +} + +int PreviewProps::getHeight() const +{ + return height; +} + +int PreviewProps::getSkip() const +{ + return skip; +} + +ImageDimensions::ImageDimensions() : + width(-1), + height(-1) +{ +} + +void ImageDimensions::transform(const PreviewProps& pp, int tran, int& sx1, int& sy1, int& sx2, int& sy2) const +{ + int sw = width; + int sh = height; if ((tran & TR_ROT) == TR_R90 || (tran & TR_ROT) == TR_R270) { - sw = height; - sh = width; + std::swap(sw, sh); } - int ppx = pp.x, ppy = pp.y; + int ppx = pp.getX(); + int ppy = pp.getY(); if (tran & TR_HFLIP) { - ppx = sw - pp.x - pp.w; + ppx = sw - pp.getX() - pp.getWidth(); } if (tran & TR_VFLIP) { - ppy = sh - pp.y - pp.h; + ppy = sh - pp.getY() - pp.getHeight(); } sx1 = ppx; sy1 = ppy; - sx2 = ppx + pp.w; - sy2 = ppy + pp.h; + sx2 = ppx + pp.getWidth(); + sy2 = ppy + pp.getHeight(); if ((tran & TR_ROT) == TR_R180) { - sx1 = width - ppx - pp.w; - sy1 = height - ppy - pp.h; - sx2 = sx1 + pp.w; - sy2 = sy1 + pp.h; + sx1 = width - ppx - pp.getWidth(); + sy1 = height - ppy - pp.getHeight(); + sx2 = sx1 + pp.getWidth(); + sy2 = sy1 + pp.getHeight(); } else if ((tran & TR_ROT) == TR_R90) { sx1 = ppy; - sy1 = height - ppx - pp.w; - sx2 = sx1 + pp.h; - sy2 = sy1 + pp.w; + sy1 = height - ppx - pp.getWidth(); + sx2 = sx1 + pp.getHeight(); + sy2 = sy1 + pp.getWidth(); } else if ((tran & TR_ROT) == TR_R270) { - sx1 = width - ppy - pp.h; + sx1 = width - ppy - pp.getHeight(); sy1 = ppx; - sx2 = sx1 + pp.h; - sy2 = sy1 + pp.w; + sx2 = sx1 + pp.getHeight(); + sy2 = sy1 + pp.getWidth(); } - //printf ("ppx %d ppy %d ppw %d pph %d s: %d %d %d %d\n",pp.x, pp.y,pp.w,pp.h,sx1,sy1,sx2,sy2); if (sx1 < 0) { sx1 = 0; } diff --git a/rtengine/imagedimensions.h b/rtengine/imagedimensions.h index e3b98f7c5..63b1a1062 100644 --- a/rtengine/imagedimensions.h +++ b/rtengine/imagedimensions.h @@ -17,47 +17,47 @@ * along with RawTherapee. If not, see . */ -#ifndef _IMAGEDIMENSIONS_ -#define _IMAGEDIMENSIONS_ +#pragma once class PreviewProps { public: - int x, y, w, h, skip; - PreviewProps (int _x, int _y, int _w, int _h, int _skip) - : x(_x), y(_y), w(_w), h(_h), skip(_skip) {} + PreviewProps(int _x, int _y, int _width, int _height, int _skip); + + int getX() const; + int getY() const; + int getWidth() const; + int getHeight() const; + int getSkip() const; + +private: + int x; + int y; + int width; + int height; + int skip; }; /* - * Description of an image dimension, with getter and setter + * Description of an image dimension, with getter */ class ImageDimensions { - public: + ImageDimensions(); + + int getWidth() const + { + return width; + } + int getHeight() const + { + return height; + } + + void transform(const PreviewProps& pp, int tran, int& sx1, int& sy1, int& sx2, int& sy2) const; + +protected: int width; int height; - -public: - ImageDimensions() : width(-1), height(-1) {} - int getW () - { - return width; - } - int getH () - { - return height; - } - int getWidth () const - { - return width; - } - int getHeight () const - { - return height; - } - void transform (PreviewProps pp, int tran, int &sx1, int &sy1, int &sx2, int &sy2); }; - - -#endif diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index f4629682d..aeb57c795 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -203,7 +203,7 @@ void Imagefloat::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Prev int maxx = width; // Source image int maxy = height; // Source image int mtran = tran & TR_ROT; - int skip = pp.skip; + int skip = pp.getSkip(); // improve speed by integrating the area division into the multipliers // switched to using ints for the red/green/blue channel buffer. diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc index 05684aaa7..60e037ba9 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -909,7 +909,7 @@ int ImageIO::loadPPMFromMemory(const char* buffer, int width, int height, bool s int ImageIO::savePNG (Glib::ustring fname, int compression, volatile int bps) { - if (getW() < 1 || getH() < 1) { + if (getWidth() < 1 || getHeight() < 1) { return IMIO_HEADERERROR; } @@ -949,8 +949,8 @@ int ImageIO::savePNG (Glib::ustring fname, int compression, volatile int bps) png_set_compression_level(png, compression); - int width = getW (); - int height = getH (); + int width = getWidth (); + int height = getHeight (); if (bps < 0) { bps = getBPS (); @@ -1006,7 +1006,7 @@ int ImageIO::savePNG (Glib::ustring fname, int compression, volatile int bps) // Quality 0..100, subsampling: 1=low quality, 2=medium, 3=high int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) { - if (getW() < 1 || getH() < 1) { + if (getWidth() < 1 || getHeight() < 1) { return IMIO_HEADERERROR; } @@ -1054,8 +1054,8 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) jpeg_stdio_dest (&cinfo, file); - int width = getW (); - int height = getH (); + int width = getWidth (); + int height = getHeight (); cinfo.image_width = width; cinfo.image_height = height; @@ -1196,14 +1196,14 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed) { - if (getW() < 1 || getH() < 1) { + if (getWidth() < 1 || getHeight() < 1) { return IMIO_HEADERERROR; } //TODO: Handling 32 bits floating point output images! bool writeOk = true; - int width = getW (); - int height = getH (); + int width = getWidth (); + int height = getHeight (); if (bps < 0) { bps = getBPS (); diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 46cf031bd..111193840 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -1216,8 +1216,8 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool // image may contain out of range samples, clip them to avoid wrap-arounds #pragma omp parallel for - for(int i = 0; i < im->height; i++) { - for(int j = 0; j < im->width; j++) { + for(int i = 0; i < im->getHeight(); i++) { + for(int j = 0; j < im->getWidth(); j++) { im->r(i, j) = CLIP(im->r(i, j)); im->g(i, j) = CLIP(im->g(i, j)); im->b(i, j) = CLIP(im->b(i, j)); diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 1a3a969ae..f756f347a 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -142,8 +142,8 @@ void ImProcFunctions::firstAnalysis (const Imagefloat* const original, const Pro lumimul[0] = wprof[1][0]; lumimul[1] = wprof[1][1]; lumimul[2] = wprof[1][2]; - int W = original->width; - int H = original->height; + int W = original->getWidth(); + int H = original->getHeight(); float lumimulf[3] = {static_cast(lumimul[0]), static_cast(lumimul[1]), static_cast(lumimul[2])}; @@ -2875,8 +2875,8 @@ void ImProcFunctions::moyeqt (Imagefloat* working, float &moyS, float &eqty) { BENCHFUN - int tHh = working->height; - int tWw = working->width; + int tHh = working->getHeight(); + int tWw = working->getWidth(); double moy = 0.0; double sqrs = 0.0; @@ -3271,11 +3271,11 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer bool hasgammabw = gammabwr != 1.f || gammabwg != 1.f || gammabwb != 1.f; if (hasColorToning || blackwhite || (params->dirpyrequalizer.cbdlMethod == "bef" && params->dirpyrequalizer.enabled)) { - tmpImage = new Imagefloat(working->width, working->height); + tmpImage = new Imagefloat(working->getWidth(), working->getHeight()); } - int W = working->width; - int H = working->height; + int W = working->getWidth(); + int H = working->getHeight(); // For tonecurve histogram int toneCurveHistSize = histToneCurve ? histToneCurve.getSize() : 0; @@ -3340,12 +3340,12 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer #pragma omp for schedule(dynamic) collapse(2) #endif - for(int ii = 0; ii < working->height; ii += TS) - for(int jj = 0; jj < working->width; jj += TS) { + for(int ii = 0; ii < working->getHeight(); ii += TS) + for(int jj = 0; jj < working->getWidth(); jj += TS) { istart = ii; jstart = jj; - tH = min(ii + TS, working->height); - tW = min(jj + TS, working->width); + tH = min(ii + TS, working->getHeight()); + tW = min(jj + TS, working->getWidth()); for (int i = istart, ti = 0; i < tH; i++, ti++) { @@ -4425,8 +4425,8 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer // starting a new tile processing with a 'reduction' clause for the auto mixer computing if (blackwhite) {//channel-mixer - int tW = working->width; - int tH = working->height; + int tW = working->getWidth(); + int tH = working->getHeight(); if (algm == 2) { //channel-mixer //end auto chmix diff --git a/rtengine/ipresize.cc b/rtengine/ipresize.cc index 8bdc0a6cb..e9c457ac8 100644 --- a/rtengine/ipresize.cc +++ b/rtengine/ipresize.cc @@ -53,18 +53,18 @@ void ImProcFunctions::Lanczos(const Image16* src, Image16* dst, float scale) #pragma omp parallel { // storage for precomputed parameters for horisontal interpolation - float * wwh = new float[support * dst->width]; - int * jj0 = new int[dst->width]; - int * jj1 = new int[dst->width]; + float * wwh = new float[support * dst->getWidth()]; + int * jj0 = new int[dst->getWidth()]; + int * jj1 = new int[dst->getWidth()]; // temporal storage for vertically-interpolated row of pixels - float * lr = new float[src->width]; - float * lg = new float[src->width]; - float * lb = new float[src->width]; + float * lr = new float[src->getWidth()]; + float * lg = new float[src->getWidth()]; + float * lb = new float[src->getWidth()]; // Phase 1: precompute coefficients for horisontal interpolation - for (int j = 0; j < dst->width; j++) { + for (int j = 0; j < dst->getWidth(); j++) { // x coord of the center of pixel on src image float x0 = (static_cast(j) + 0.5f) * delta - 0.5f; @@ -76,7 +76,7 @@ void ImProcFunctions::Lanczos(const Image16* src, Image16* dst, float scale) float ws = 0.0f; jj0[j] = max(0, static_cast(floorf(x0 - a / sc)) + 1); - jj1[j] = min(src->width, static_cast(floorf(x0 + a / sc)) + 1); + jj1[j] = min(src->getWidth(), static_cast(floorf(x0 + a / sc)) + 1); // calculate weights for (int jj = jj0[j]; jj < jj1[j]; jj++) { @@ -95,7 +95,7 @@ void ImProcFunctions::Lanczos(const Image16* src, Image16* dst, float scale) // Phase 2: do actual interpolation #pragma omp for - for (int i = 0; i < dst->height; i++) { + for (int i = 0; i < dst->getHeight(); i++) { // y coord of the center of pixel on src image float y0 = (static_cast(i) + 0.5f) * delta - 0.5f; @@ -107,7 +107,7 @@ void ImProcFunctions::Lanczos(const Image16* src, Image16* dst, float scale) float ws = 0.0f; int ii0 = max(0, static_cast(floorf(y0 - a / sc)) + 1); - int ii1 = min(src->height, static_cast(floorf(y0 + a / sc)) + 1); + int ii1 = min(src->getHeight(), static_cast(floorf(y0 + a / sc)) + 1); // calculate weights for vertical interpolation for (int ii = ii0; ii < ii1; ii++) { @@ -123,7 +123,7 @@ void ImProcFunctions::Lanczos(const Image16* src, Image16* dst, float scale) } // Do vertical interpolation. Store results. - for (int j = 0; j < src->width; j++) { + for (int j = 0; j < src->getWidth(); j++) { float r = 0.0f, g = 0.0f, b = 0.0f; @@ -141,7 +141,7 @@ void ImProcFunctions::Lanczos(const Image16* src, Image16* dst, float scale) } // Do horizontal interpolation - for(int j = 0; j < dst->width; j++) { + for(int j = 0; j < dst->getWidth(); j++) { float * wh = wwh + support * j; @@ -407,13 +407,13 @@ void ImProcFunctions::resize (Image16* src, Image16* dst, float dScale) #pragma omp parallel for if (multiThread) #endif - for (int i = 0; i < dst->height; i++) { + for (int i = 0; i < dst->getHeight(); i++) { int sy = i / dScale; - sy = LIM(sy, 0, src->height - 1); + sy = LIM(sy, 0, src->getHeight() - 1); - for (int j = 0; j < dst->width; j++) { + for (int j = 0; j < dst->getWidth(); j++) { int sx = j / dScale; - sx = LIM(sx, 0, src->width - 1); + sx = LIM(sx, 0, src->getWidth() - 1); dst->r(i, j) = src->r(sy, sx); dst->g(i, j) = src->g(sy, sx); dst->b(i, j) = src->b(sy, sx); diff --git a/rtengine/iptransform.cc b/rtengine/iptransform.cc index 1c0a09929..deae39108 100644 --- a/rtengine/iptransform.cc +++ b/rtengine/iptransform.cc @@ -299,7 +299,7 @@ void ImProcFunctions::transform (Imagefloat* original, Imagefloat* transformed, LCPProfile *pLCPProf = lcpStore->getProfile(params->lensProf.lcpFile); if (pLCPProf) pLCPMap = new LCPMapper(pLCPProf, focalLen, focalLen35mm, focusDist, 0, false, params->lensProf.useDist, - original->width, original->height, params->coarse, rawRotationDeg); + original->getWidth(), original->getHeight(), params->coarse, rawRotationDeg); } if (!(needsCA() || needsDistortion() || needsRotation() || needsPerspective() || needsLCP()) && (needsVignetting() || needsPCVignetting() || needsGradient())) { @@ -663,17 +663,17 @@ void ImProcFunctions::transformLuminanceOnly (Imagefloat* original, Imagefloat* struct pcv_params pcv; if (applyPCVignetting) { - //fprintf(stderr, "%d %d | %d %d | %d %d | %d %d [%d %d]\n", fW, fH, oW, oH, transformed->width, transformed->height, cx, cy, params->crop.w, params->crop.h); + //fprintf(stderr, "%d %d | %d %d | %d %d | %d %d [%d %d]\n", fW, fH, oW, oH, transformed->getWidth(), transformed->getHeight(), cx, cy, params->crop.w, params->crop.h); calcPCVignetteParams(fW, fH, oW, oH, params->pcvignette, params->crop, pcv); } bool darkening = (params->vignetting.amount <= 0.0); #pragma omp parallel for schedule(dynamic,16) if (multiThread) - for (int y = 0; y < transformed->height; y++) { + for (int y = 0; y < transformed->getHeight(); y++) { double vig_y_d = (double) (y + cy) - vig_h2 ; - for (int x = 0; x < transformed->width; x++) { + for (int x = 0; x < transformed->getWidth(); x++) { double factor = 1.0; if (applyVignetting) { @@ -779,8 +779,8 @@ void ImProcFunctions::transformHighQuality (Imagefloat* original, Imagefloat* tr bool darkening = (params->vignetting.amount <= 0.0); #pragma omp parallel for if (multiThread) - for (int y = 0; y < transformed->height; y++) { - for (int x = 0; x < transformed->width; x++) { + for (int y = 0; y < transformed->getHeight(); y++) { + for (int x = 0; x < transformed->getWidth(); x++) { double x_d = x, y_d = y; if (enableLCPDist) { @@ -849,7 +849,7 @@ void ImProcFunctions::transformHighQuality (Imagefloat* original, Imagefloat* tr yc -= sy; // Convert only valid pixels - if (yc >= 0 && yc < original->height && xc >= 0 && xc < original->width) { + if (yc >= 0 && yc < original->getHeight() && xc >= 0 && xc < original->getWidth()) { // multiplier for vignetting correction double vignmul = 1.0; @@ -870,7 +870,7 @@ void ImProcFunctions::transformHighQuality (Imagefloat* original, Imagefloat* tr vignmul *= calcPCVignetteFactor(pcv, cx + x, cy + y); } - if (yc > 0 && yc < original->height - 2 && xc > 0 && xc < original->width - 2) { + if (yc > 0 && yc < original->getHeight() - 2 && xc > 0 && xc < original->getWidth() - 2) { // all interpolation pixels inside image if (enableCA) { interpolateTransformChannelsCubic (chOrig[c], xc - 1, yc - 1, Dx, Dy, &(chTrans[c][y][x]), vignmul); @@ -879,10 +879,10 @@ void ImProcFunctions::transformHighQuality (Imagefloat* original, Imagefloat* tr } } else { // edge pixels - int y1 = LIM(yc, 0, original->height - 1); - int y2 = LIM(yc + 1, 0, original->height - 1); - int x1 = LIM(xc, 0, original->width - 1); - int x2 = LIM(xc + 1, 0, original->width - 1); + int y1 = LIM(yc, 0, original->getHeight() - 1); + int y2 = LIM(yc + 1, 0, original->getHeight() - 1); + int x1 = LIM(xc, 0, original->getWidth() - 1); + int x2 = LIM(xc + 1, 0, original->getWidth() - 1); if (enableCA) { chTrans[c][y][x] = vignmul * (chOrig[c][y1][x1] * (1.0 - Dx) * (1.0 - Dy) + chOrig[c][y1][x2] * Dx * (1.0 - Dy) + chOrig[c][y2][x1] * (1.0 - Dx) * Dy + chOrig[c][y2][x2] * Dx * Dy); @@ -956,8 +956,8 @@ void ImProcFunctions::transformPreview (Imagefloat* original, Imagefloat* transf // main cycle #pragma omp parallel for if (multiThread) - for (int y = 0; y < transformed->height; y++) { - for (int x = 0; x < transformed->width; x++) { + for (int y = 0; y < transformed->getHeight(); y++) { + for (int x = 0; x < transformed->getWidth(); x++) { double x_d = x, y_d = y; if (pLCPMap && params->lensProf.useDist) { @@ -1019,7 +1019,7 @@ void ImProcFunctions::transformPreview (Imagefloat* original, Imagefloat* transf yc -= sy; // Convert only valid pixels - if (yc >= 0 && yc < original->height && xc >= 0 && xc < original->width) { + if (yc >= 0 && yc < original->getHeight() && xc >= 0 && xc < original->getWidth()) { // multiplier for vignetting correction double vignmul = 1.0; @@ -1040,17 +1040,17 @@ void ImProcFunctions::transformPreview (Imagefloat* original, Imagefloat* transf vignmul *= calcPCVignetteFactor(pcv, cx + x, cy + y); } - if (yc < original->height - 1 && xc < original->width - 1) { + if (yc < original->getHeight() - 1 && xc < original->getWidth() - 1) { // all interpolation pixels inside image transformed->r(y, x) = vignmul * (original->r(yc, xc) * (1.0 - Dx) * (1.0 - Dy) + original->r(yc, xc + 1) * Dx * (1.0 - Dy) + original->r(yc + 1, xc) * (1.0 - Dx) * Dy + original->r(yc + 1, xc + 1) * Dx * Dy); transformed->g(y, x) = vignmul * (original->g(yc, xc) * (1.0 - Dx) * (1.0 - Dy) + original->g(yc, xc + 1) * Dx * (1.0 - Dy) + original->g(yc + 1, xc) * (1.0 - Dx) * Dy + original->g(yc + 1, xc + 1) * Dx * Dy); transformed->b(y, x) = vignmul * (original->b(yc, xc) * (1.0 - Dx) * (1.0 - Dy) + original->b(yc, xc + 1) * Dx * (1.0 - Dy) + original->b(yc + 1, xc) * (1.0 - Dx) * Dy + original->b(yc + 1, xc + 1) * Dx * Dy); } else { // edge pixels - int y1 = LIM(yc, 0, original->height - 1); - int y2 = LIM(yc + 1, 0, original->height - 1); - int x1 = LIM(xc, 0, original->width - 1); - int x2 = LIM(xc + 1, 0, original->width - 1); + int y1 = LIM(yc, 0, original->getHeight() - 1); + int y2 = LIM(yc + 1, 0, original->getHeight() - 1); + int x1 = LIM(xc, 0, original->getWidth() - 1); + int x2 = LIM(xc + 1, 0, original->getWidth() - 1); transformed->r(y, x) = vignmul * (original->r(y1, x1) * (1.0 - Dx) * (1.0 - Dy) + original->r(y1, x2) * Dx * (1.0 - Dy) + original->r(y2, x1) * (1.0 - Dx) * Dy + original->r(y2, x2) * Dx * Dy); transformed->g(y, x) = vignmul * (original->g(y1, x1) * (1.0 - Dx) * (1.0 - Dy) + original->g(y1, x2) * Dx * (1.0 - Dy) + original->g(y2, x1) * (1.0 - Dx) * Dy + original->g(y2, x2) * Dx * Dy); transformed->b(y, x) = vignmul * (original->b(y1, x1) * (1.0 - Dx) * (1.0 - Dy) + original->b(y1, x2) * Dx * (1.0 - Dy) + original->b(y2, x1) * (1.0 - Dx) * Dy + original->b(y2, x2) * Dx * Dy); diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 049c509f5..037c24ecf 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -101,10 +101,10 @@ void transLineFuji (const float* const red, const float* const green, const floa int y = i + j - fw; int x = fw - i + j; - if (x >= 0 && y < image->height && y >= 0 && x < image->width) { - image->r(image->height - 1 - y, image->width - 1 - x) = red[j]; - image->g(image->height - 1 - y, image->width - 1 - x) = green[j]; - image->b(image->height - 1 - y, image->width - 1 - x) = blue[j]; + if (x >= 0 && y < image->getHeight() && y >= 0 && x < image->getWidth()) { + image->r(image->getHeight() - 1 - y, image->getWidth() - 1 - x) = red[j]; + image->g(image->getHeight() - 1 - y, image->getWidth() - 1 - x) = green[j]; + image->b(image->getHeight() - 1 - y, image->getWidth() - 1 - x) = blue[j]; } } @@ -115,10 +115,10 @@ void transLineFuji (const float* const red, const float* const green, const floa int y = i + j - fw; int x = fw - i + j; - if (x >= 0 && x < image->height && y >= 0 && y < image->width) { - image->r(image->height - 1 - x, y) = red[j]; - image->g(image->height - 1 - x, y) = green[j]; - image->b(image->height - 1 - x, y) = blue[j]; + if (x >= 0 && x < image->getHeight() && y >= 0 && y < image->getWidth()) { + image->r(image->getHeight() - 1 - x, y) = red[j]; + image->g(image->getHeight() - 1 - x, y) = green[j]; + image->b(image->getHeight() - 1 - x, y) = blue[j]; } } @@ -129,10 +129,10 @@ void transLineFuji (const float* const red, const float* const green, const floa int y = i + j - fw; int x = fw - i + j; - if (x >= 0 && y < image->width && y >= 0 && x < image->height) { - image->r(x, image->width - 1 - y) = red[j]; - image->g(x, image->width - 1 - y) = green[j]; - image->b(x, image->width - 1 - y) = blue[j]; + if (x >= 0 && y < image->getWidth() && y >= 0 && x < image->getHeight()) { + image->r(x, image->getWidth() - 1 - y) = red[j]; + image->g(x, image->getWidth() - 1 - y) = green[j]; + image->b(x, image->getWidth() - 1 - y) = blue[j]; } } @@ -144,7 +144,7 @@ void transLineFuji (const float* const red, const float* const green, const floa int y = i + j - fw; int x = fw - i + j; - if (x >= 0 && y < image->height && y >= 0 && x < image->width) { + if (x >= 0 && y < image->getHeight() && y >= 0 && x < image->getWidth()) { image->r(y, x) = red[j]; image->g(y, x) = green[j]; image->b(y, x) = blue[j]; @@ -499,17 +499,18 @@ RawImageSource::~RawImageSource () void RawImageSource::transformRect (PreviewProps pp, int tran, int &ssx1, int &ssy1, int &width, int &height, int &fw) { - - pp.x += border; - pp.y += border; + int pp_x = pp.getX() + border; + int pp_y = pp.getY() + border; + int pp_width = pp.getWidth(); + int pp_height = pp.getHeight(); if (d1x) { if ((tran & TR_ROT) == TR_R90 || (tran & TR_ROT) == TR_R270) { - pp.x /= 2; - pp.w = pp.w / 2 + 1; + pp_x /= 2; + pp_width = pp_width / 2 + 1; } else { - pp.y /= 2; - pp.h = pp.h / 2 + 1; + pp_y /= 2; + pp_height = pp_height / 2 + 1; } } @@ -527,44 +528,44 @@ void RawImageSource::transformRect (PreviewProps pp, int tran, int &ssx1, int &s sh = w; } - if( pp.w > sw - 2 * border) { - pp.w = sw - 2 * border; + if( pp_width > sw - 2 * border) { + pp_width = sw - 2 * border; } - if( pp.h > sh - 2 * border) { - pp.h = sh - 2 * border; + if( pp_height > sh - 2 * border) { + pp_height = sh - 2 * border; } - int ppx = pp.x, ppy = pp.y; + int ppx = pp_x, ppy = pp_y; if (tran & TR_HFLIP) { - ppx = sw - pp.x - pp.w; + ppx = sw - pp_x - pp_width; } if (tran & TR_VFLIP) { - ppy = sh - pp.y - pp.h; + ppy = sh - pp_y - pp_height; } int sx1 = ppx; // assuming it's >=0 int sy1 = ppy; // assuming it's >=0 - int sx2 = max(ppx + pp.w, w - 1); - int sy2 = max(ppy + pp.h, h - 1); + int sx2 = max(ppx + pp_width, w - 1); + int sy2 = max(ppy + pp_height, h - 1); if ((tran & TR_ROT) == TR_R180) { - sx1 = max(w - ppx - pp.w, 0); - sy1 = max(h - ppy - pp.h, 0); - sx2 = min(sx1 + pp.w, w - 1); - sy2 = min(sy1 + pp.h, h - 1); + sx1 = max(w - ppx - pp_width, 0); + sy1 = max(h - ppy - pp_height, 0); + sx2 = min(sx1 + pp_width, w - 1); + sy2 = min(sy1 + pp_height, h - 1); } else if ((tran & TR_ROT) == TR_R90) { sx1 = ppy; - sy1 = max(h - ppx - pp.w, 0); - sx2 = min(sx1 + pp.h, w - 1); - sy2 = min(sy1 + pp.w, h - 1); + sy1 = max(h - ppx - pp_width, 0); + sx2 = min(sx1 + pp_height, w - 1); + sy2 = min(sy1 + pp_width, h - 1); } else if ((tran & TR_ROT) == TR_R270) { - sx1 = max(w - ppy - pp.h, 0); + sx1 = max(w - ppy - pp_height, 0); sy1 = ppx; - sx2 = min(sx1 + pp.h, w - 1); - sy2 = min(sy1 + pp.w, h - 1); + sx2 = min(sx1 + pp_height, w - 1); + sy2 = min(sy1 + pp_width, h - 1); } if (fuji) { @@ -574,14 +575,14 @@ void RawImageSource::transformRect (PreviewProps pp, int tran, int &ssx1, int &s ssy1 = (sy1 - sx2 ) / 2 + ri->get_FujiWidth(); int ssx2 = (sx2 + sy2) / 2 + 1; int ssy2 = (sy2 - sx1) / 2 + ri->get_FujiWidth(); - fw = (sx2 - sx1) / 2 / pp.skip; - width = (ssx2 - ssx1) / pp.skip + ((ssx2 - ssx1) % pp.skip > 0); - height = (ssy2 - ssy1) / pp.skip + ((ssy2 - ssy1) % pp.skip > 0); + fw = (sx2 - sx1) / 2 / pp.getSkip(); + width = (ssx2 - ssx1) / pp.getSkip() + ((ssx2 - ssx1) % pp.getSkip() > 0); + height = (ssy2 - ssy1) / pp.getSkip() + ((ssy2 - ssy1) % pp.getSkip() > 0); } else { ssx1 = sx1; ssy1 = sy1; - width = (sx2 - sx1) / pp.skip + ((sx2 - sx1) % pp.skip > 0); - height = (sy2 - sy1) / pp.skip + ((sy2 - sy1) % pp.skip > 0); + width = (sx2 - sx1) / pp.getSkip() + ((sx2 - sx1) % pp.getSkip() > 0); + height = (sy2 - sy1) / pp.getSkip() + ((sy2 - sy1) % pp.getSkip() > 0); } } @@ -674,11 +675,11 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima int maximwidth, maximheight; if ((tran & TR_ROT) == TR_R90 || (tran & TR_ROT) == TR_R270) { - maximwidth = image->height; - maximheight = image->width; + maximwidth = image->getHeight(); + maximheight = image->getWidth(); } else { - maximwidth = image->width; - maximheight = image->height; + maximwidth = image->getWidth(); + maximheight = image->getHeight(); } if (d1x) { @@ -699,7 +700,7 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima imheight = maximheight; } - int maxx = this->W, maxy = this->H, skip = pp.skip; + int maxx = this->W, maxy = this->H, skip = pp.getSkip(); // raw clip levels after white balance hlmax[0] = clmax[0] * rm; @@ -818,18 +819,18 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima #endif if (fuji) { - int a = ((tran & TR_ROT) == TR_R90 && image->width % 2 == 0) || ((tran & TR_ROT) == TR_R180 && image->height % 2 + image->width % 2 == 1) || ((tran & TR_ROT) == TR_R270 && image->height % 2 == 0); + int a = ((tran & TR_ROT) == TR_R90 && image->getWidth() % 2 == 0) || ((tran & TR_ROT) == TR_R180 && image->getHeight() % 2 + image->getWidth() % 2 == 1) || ((tran & TR_ROT) == TR_R270 && image->getHeight() % 2 == 0); // first row - for (int j = 1 + a; j < image->width - 1; j += 2) { + for (int j = 1 + a; j < image->getWidth() - 1; j += 2) { image->r(0, j) = (image->r(1, j) + image->r(0, j + 1) + image->r(0, j - 1)) / 3; image->g(0, j) = (image->g(1, j) + image->g(0, j + 1) + image->g(0, j - 1)) / 3; image->b(0, j) = (image->b(1, j) + image->b(0, j + 1) + image->b(0, j - 1)) / 3; } // other rows - for (int i = 1; i < image->height - 1; i++) { - for (int j = 2 - (a + i + 1) % 2; j < image->width - 1; j += 2) { + for (int i = 1; i < image->getHeight() - 1; i++) { + for (int j = 2 - (a + i + 1) % 2; j < image->getWidth() - 1; j += 2) { // edge-adaptive interpolation double dh = (ABS(image->r(i, j + 1) - image->r(i, j - 1)) + ABS(image->g(i, j + 1) - image->g(i, j - 1)) + ABS(image->b(i, j + 1) - image->b(i, j - 1))) / 1.0; double dv = (ABS(image->r(i + 1, j) - image->r(i - 1, j)) + ABS(image->g(i + 1, j) - image->g(i - 1, j)) + ABS(image->b(i + 1, j) - image->b(i - 1, j))) / 1.0; @@ -848,20 +849,20 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima } // last pixel - if (2 - (a + i + image->width) % 2 == 2) { - image->r(i, image->width - 1) = (image->r(i + 1, image->width - 1) + image->r(i - 1, image->width - 1) + image->r(i, image->width - 2)) / 3; - image->g(i, image->width - 1) = (image->g(i + 1, image->width - 1) + image->g(i - 1, image->width - 1) + image->g(i, image->width - 2)) / 3; - image->b(i, image->width - 1) = (image->b(i + 1, image->width - 1) + image->b(i - 1, image->width - 1) + image->b(i, image->width - 2)) / 3; + if (2 - (a + i + image->getWidth()) % 2 == 2) { + image->r(i, image->getWidth() - 1) = (image->r(i + 1, image->getWidth() - 1) + image->r(i - 1, image->getWidth() - 1) + image->r(i, image->getWidth() - 2)) / 3; + image->g(i, image->getWidth() - 1) = (image->g(i + 1, image->getWidth() - 1) + image->g(i - 1, image->getWidth() - 1) + image->g(i, image->getWidth() - 2)) / 3; + image->b(i, image->getWidth() - 1) = (image->b(i + 1, image->getWidth() - 1) + image->b(i - 1, image->getWidth() - 1) + image->b(i, image->getWidth() - 2)) / 3; } } // last row - int b = (a == 1 && image->height % 2) || (a == 0 && image->height % 2 == 0); + int b = (a == 1 && image->getHeight() % 2) || (a == 0 && image->getHeight() % 2 == 0); - for (int j = 1 + b; j < image->width - 1; j += 2) { - image->r(image->height - 1, j) = (image->r(image->height - 2, j) + image->r(image->height - 1, j + 1) + image->r(image->height - 1, j - 1)) / 3; - image->g(image->height - 1, j) = (image->g(image->height - 2, j) + image->g(image->height - 1, j + 1) + image->g(image->height - 1, j - 1)) / 3; - image->b(image->height - 1, j) = (image->b(image->height - 2, j) + image->b(image->height - 1, j + 1) + image->b(image->height - 1, j - 1)) / 3; + for (int j = 1 + b; j < image->getWidth() - 1; j += 2) { + image->r(image->getHeight() - 1, j) = (image->r(image->getHeight() - 2, j) + image->r(image->getHeight() - 1, j + 1) + image->r(image->getHeight() - 1, j - 1)) / 3; + image->g(image->getHeight() - 1, j) = (image->g(image->getHeight() - 2, j) + image->g(image->getHeight() - 1, j + 1) + image->g(image->getHeight() - 1, j - 1)) / 3; + image->b(image->getHeight() - 1, j) = (image->b(image->getHeight() - 2, j) + image->b(image->getHeight() - 1, j + 1) + image->b(image->getHeight() - 1, j - 1)) / 3; } } @@ -875,7 +876,7 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima } // Colour correction (only when running on full resolution) - if(pp.skip == 1) { + if(pp.getSkip() == 1) { switch(ri->getSensorType()) { case ST_BAYER: processFalseColorCorrection (image, raw.bayersensor.ccSteps); @@ -1472,9 +1473,8 @@ void RawImageSource::getFullSize (int& w, int& h, int tr) void RawImageSource::getSize (PreviewProps pp, int& w, int& h) { - - w = pp.w / pp.skip + (pp.w % pp.skip > 0); - h = pp.h / pp.skip + (pp.h % pp.skip > 0); + w = pp.getWidth() / pp.getSkip() + (pp.getWidth() % pp.getSkip() > 0); + h = pp.getHeight() / pp.getSkip() + (pp.getHeight() % pp.getSkip() > 0); } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -3514,7 +3514,7 @@ int RawImageSource::defTransform (int tran) void RawImageSource::processFalseColorCorrectionThread (Imagefloat* im, array2D &rbconv_Y, array2D &rbconv_I, array2D &rbconv_Q, array2D &rbout_I, array2D &rbout_Q, const int row_from, const int row_to) { - const int W = im->width; + const int W = im->getWidth(); constexpr float onebynine = 1.f / 9.f; #ifdef __SSE2__ @@ -3661,7 +3661,7 @@ void RawImageSource::processFalseColorCorrectionThread (Imagefloat* im, array2D void RawImageSource::processFalseColorCorrection (Imagefloat* im, const int steps) { - if (im->height < 4 || steps < 1) { + if (im->getHeight() < 4 || steps < 1) { return; } @@ -3671,14 +3671,14 @@ void RawImageSource::processFalseColorCorrection (Imagefloat* im, const int ste multi_array2D buffer (W, 3); int tid = omp_get_thread_num(); int nthreads = omp_get_num_threads(); - int blk = (im->height - 2) / nthreads; + int blk = (im->getHeight() - 2) / nthreads; for (int t = 0; t < steps; t++) { if (tid < nthreads - 1) { processFalseColorCorrectionThread (im, buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], 1 + tid * blk, 1 + (tid + 1)*blk); } else { - processFalseColorCorrectionThread (im, buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], 1 + tid * blk, im->height - 1); + processFalseColorCorrectionThread (im, buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], 1 + tid * blk, im->getHeight() - 1); } #pragma omp barrier @@ -3688,7 +3688,7 @@ void RawImageSource::processFalseColorCorrection (Imagefloat* im, const int ste multi_array2D buffer (W, 3); for (int t = 0; t < steps; t++) { - processFalseColorCorrectionThread (im, buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], 1 , im->height - 1); + processFalseColorCorrectionThread (im, buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], 1 , im->getHeight() - 1); } #endif @@ -3812,8 +3812,8 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, ColorManagementParam #pragma omp parallel for #endif - for (int i = 0; i < im->height; i++) - for (int j = 0; j < im->width; j++) { + for (int i = 0; i < im->getHeight(); i++) + for (int j = 0; j < im->getWidth(); j++) { float newr = mat[0][0] * im->r(i, j) + mat[0][1] * im->g(i, j) + mat[0][2] * im->b(i, j); float newg = mat[1][0] * im->r(i, j) + mat[1][1] * im->g(i, j) + mat[1][2] * im->b(i, j); @@ -3945,18 +3945,18 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, ColorManagementParam #pragma omp parallel #endif { - AlignedBuffer buffer(im->width * 3); - AlignedBuffer hl_buffer(im->width * 3); - AlignedBuffer hl_scale(im->width); + AlignedBuffer buffer(im->getWidth() * 3); + AlignedBuffer hl_buffer(im->getWidth() * 3); + AlignedBuffer hl_scale(im->getWidth()); #ifdef _OPENMP #pragma omp for schedule(static) #endif - for ( int h = 0; h < im->height; ++h ) { + for ( int h = 0; h < im->getHeight(); ++h ) { float *p = buffer.data, *pR = im->r(h), *pG = im->g(h), *pB = im->b(h); // Apply pre-processing - for ( int w = 0; w < im->width; ++w ) { + for ( int w = 0; w < im->getWidth(); ++w ) { float r = *(pR++); float g = *(pG++); float b = *(pB++); @@ -4027,10 +4027,10 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, ColorManagementParam } // Run icc transform - cmsDoTransform (hTransform, buffer.data, buffer.data, im->width); + cmsDoTransform (hTransform, buffer.data, buffer.data, im->getWidth()); if (separate_pcs_lab_highlights) { - cmsDoTransform (hTransform, hl_buffer.data, hl_buffer.data, im->width); + cmsDoTransform (hTransform, hl_buffer.data, hl_buffer.data, im->getWidth()); } // Apply post-processing @@ -4039,7 +4039,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, ColorManagementParam pG = im->g(h); pB = im->b(h); - for ( int w = 0; w < im->width; ++w ) { + for ( int w = 0; w < im->getWidth(); ++w ) { float r, g, b, hr, hg, hb; diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 257a3eeb3..c3cfdaea4 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -98,16 +98,16 @@ Thumbnail* Thumbnail::loadFromImage (const Glib::ustring& fname, int &w, int &h, if (inspectorMode) { // Special case, meaning that we want a full sized thumbnail image (e.g. for the Inspector feature) - w = img->width; - h = img->height; + w = img->getWidth(); + h = img->getHeight(); tpp->scale = 1.; } else { if (fixwh == 1) { - w = h * img->width / img->height; - tpp->scale = (double)img->height / h; + w = h * img->getWidth() / img->getHeight(); + tpp->scale = (double)img->getHeight() / h; } else { - h = w * img->height / img->width; - tpp->scale = (double)img->width / w; + h = w * img->getHeight() / img->getWidth(); + tpp->scale = (double)img->getWidth() / w; } } @@ -223,16 +223,16 @@ Thumbnail* Thumbnail::loadQuickFromRaw (const Glib::ustring& fname, RawMetaDataL if (inspectorMode) { // Special case, meaning that we want a full sized thumbnail image (e.g. for the Inspector feature) - w = img->width; - h = img->height; + w = img->getWidth(); + h = img->getHeight(); tpp->scale = 1.; } else { if (fixwh == 1) { - w = h * img->width / img->height; - tpp->scale = (double)img->height / h; + w = h * img->getWidth() / img->getHeight(); + tpp->scale = (double)img->getHeight() / h; } else { - h = w * img->height / img->width; - tpp->scale = (double)img->width / w; + h = w * img->getHeight() / img->getWidth(); + tpp->scale = (double)img->getWidth() / w; } } @@ -260,8 +260,8 @@ Thumbnail* Thumbnail::loadQuickFromRaw (const Glib::ustring& fname, RawMetaDataL if (suffix != "mos" && suffix != "mef" && suffix != "iiq") { tpp->thumbImg->rotate(ri->get_rotateDegree()); // width/height may have changed after rotating - w = tpp->thumbImg->width; - h = tpp->thumbImg->height; + w = tpp->thumbImg->getWidth(); + h = tpp->thumbImg->getHeight(); } } @@ -810,9 +810,9 @@ IImage8* Thumbnail::quickProcessImage (const procparams::ProcParams& params, int if (params.coarse.rotate == 90 || params.coarse.rotate == 270) { rwidth = rheight; - rheight = thumbImg->height * rwidth / thumbImg->width; + rheight = thumbImg->getHeight() * rwidth / thumbImg->getWidth(); } else { - rwidth = thumbImg->width * rheight / thumbImg->height; + rwidth = thumbImg->getWidth() * rheight / thumbImg->getHeight(); } Image8* baseImg = resizeTo(rwidth, rheight, interp, thumbImg); @@ -889,9 +889,9 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei if (params.coarse.rotate == 90 || params.coarse.rotate == 270) { rwidth = rheight; - rheight = int(size_t(thumbImg->height) * size_t(rwidth) / size_t(thumbImg->width)); + rheight = int(size_t(thumbImg->getHeight()) * size_t(rwidth) / size_t(thumbImg->getWidth())); } else { - rwidth = int(size_t(thumbImg->width) * size_t(rheight) / size_t(thumbImg->height)); + rwidth = int(size_t(thumbImg->getWidth()) * size_t(rheight) / size_t(thumbImg->getHeight())); } @@ -899,8 +899,8 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei if (params.coarse.rotate) { baseImg->rotate (params.coarse.rotate); - rwidth = baseImg->width; - rheight = baseImg->height; + rwidth = baseImg->getWidth(); + rheight = baseImg->getHeight(); } if (params.coarse.hflip) { @@ -940,12 +940,12 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei StdImageSource::colorSpaceConversion (baseImg, params.icm, embProfile, thumbImg->getSampleFormat()); } - int fw = baseImg->width; - int fh = baseImg->height; + int fw = baseImg->getWidth(); + int fh = baseImg->getHeight(); //ColorTemp::CAT02 (baseImg, ¶ms) ;//perhaps not good! ImProcFunctions ipf (¶ms, false); - ipf.setScale (sqrt(double(fw * fw + fh * fh)) / sqrt(double(thumbImg->width * thumbImg->width + thumbImg->height * thumbImg->height))*scale); + ipf.setScale (sqrt(double(fw * fw + fh * fh)) / sqrt(double(thumbImg->getWidth() * thumbImg->getWidth() + thumbImg->getHeight() * thumbImg->getHeight()))*scale); ipf.updateColorProfiles (options.rtSettings.monitorProfile, options.rtSettings.monitorIntent, false, false); LUTu hist16 (65536); @@ -1206,9 +1206,9 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei // calculate scale if (params.coarse.rotate == 90 || params.coarse.rotate == 270) { - myscale = scale * thumbImg->width / fh; + myscale = scale * thumbImg->getWidth() / fh; } else { - myscale = scale * thumbImg->height / fh; + myscale = scale * thumbImg->getHeight() / fh; } myscale = 1.0 / myscale; @@ -1238,9 +1238,9 @@ int Thumbnail::getImageWidth (const procparams::ProcParams& params, int rheight, int rwidth; if (params.coarse.rotate == 90 || params.coarse.rotate == 270) { - ratio = (float)(thumbImg->height) / (float)(thumbImg->width); + ratio = (float)(thumbImg->getHeight()) / (float)(thumbImg->getWidth()); } else { - ratio = (float)(thumbImg->width) / (float)(thumbImg->height); + ratio = (float)(thumbImg->getWidth()) / (float)(thumbImg->getHeight()); } rwidth = (int)(ratio * (float)rheight); @@ -1251,8 +1251,8 @@ int Thumbnail::getImageWidth (const procparams::ProcParams& params, int rheight, void Thumbnail::getDimensions (int& w, int& h, double& scaleFac) { if (thumbImg) { - w = thumbImg->width; - h = thumbImg->height; + w = thumbImg->getWidth(); + h = thumbImg->getHeight(); scaleFac = scale; } else { w = 0; @@ -1314,11 +1314,11 @@ void Thumbnail::getSpotWB (const procparams::ProcParams& params, int xp, int yp, points.push_back (Coord2D (j, i)); } - int fw = thumbImg->width, fh = thumbImg->height; + int fw = thumbImg->getWidth(), fh = thumbImg->getHeight(); if (params.coarse.rotate == 90 || params.coarse.rotate == 270) { - fw = thumbImg->height; - fh = thumbImg->width; + fw = thumbImg->getHeight(); + fh = thumbImg->getWidth(); } ImProcFunctions ipf (¶ms, false); @@ -1343,8 +1343,8 @@ void Thumbnail::getSpotWB (const procparams::ProcParams& params, int xp, int yp, void Thumbnail::transformPixel (int x, int y, int tran, int& tx, int& ty) { - int W = thumbImg->width; - int H = thumbImg->height; + int W = thumbImg->getWidth(); + int H = thumbImg->getHeight(); int sw = W, sh = H; if ((tran & TR_ROT) == TR_R90 || (tran & TR_ROT) == TR_R270) { @@ -1386,12 +1386,12 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) return nullptr; } - if (thumbImg->width < trim_width) { + if (thumbImg->getWidth() < trim_width) { return nullptr; } // to utilize the 8 bit color range of the thumbnail we brighten it and apply gamma correction - unsigned char* tmpdata = new unsigned char[thumbImg->height * trim_width]; + unsigned char* tmpdata = new unsigned char[thumbImg->getHeight() * trim_width]; int ix = 0, max; if (gammaCorrected) { @@ -1417,7 +1417,7 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) } // Go down till we cut off that many pixels - unsigned long cutoff = thumbImg->height * thumbImg->height * 4 * BurnOffPct; + unsigned long cutoff = thumbImg->getHeight() * thumbImg->getHeight() * 4 * BurnOffPct; int max_; unsigned long sum = 0; @@ -1434,8 +1434,8 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) if (thumbImg->getType() == sImage8) { Image8 *image = static_cast(thumbImg); - for (int i = 0; i < thumbImg->height; i++) - for (int j = (thumbImg->width - trim_width) / 2; j < trim_width + (thumbImg->width - trim_width) / 2; j++) { + for (int i = 0; i < thumbImg->getHeight(); i++) + for (int j = (thumbImg->getWidth() - trim_width) / 2; j < trim_width + (thumbImg->getWidth() - trim_width) / 2; j++) { unsigned short r_, g_, b_; image->convertTo(image->r(i, j), r_); image->convertTo(image->g(i, j), g_); @@ -1448,8 +1448,8 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) } else if (thumbImg->getType() == sImage16) { Image16 *image = static_cast(thumbImg); - for (int i = 0; i < thumbImg->height; i++) - for (int j = (thumbImg->width - trim_width) / 2; j < trim_width + (thumbImg->width - trim_width) / 2; j++) { + for (int i = 0; i < thumbImg->getHeight(); i++) + for (int j = (thumbImg->getWidth() - trim_width) / 2; j < trim_width + (thumbImg->getWidth() - trim_width) / 2; j++) { unsigned short r_, g_, b_; image->convertTo(image->r(i, j), r_); image->convertTo(image->g(i, j), g_); @@ -1462,8 +1462,8 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) } else if (thumbImg->getType() == sImagefloat) { Imagefloat *image = static_cast(thumbImg); - for (int i = 0; i < thumbImg->height; i++) - for (int j = (thumbImg->width - trim_width) / 2; j < trim_width + (thumbImg->width - trim_width) / 2; j++) { + for (int i = 0; i < thumbImg->getHeight(); i++) + for (int j = (thumbImg->getWidth() - trim_width) / 2; j < trim_width + (thumbImg->getWidth() - trim_width) / 2; j++) { unsigned short r_, g_, b_; image->convertTo(image->r(i, j), r_); image->convertTo(image->g(i, j), g_); @@ -1482,8 +1482,8 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) Image8 *image = static_cast(thumbImg); unsigned char max_ = 0; - for (int row = 0; row < image->height; row++) - for (int col = 0; col < image->width; col++) { + for (int row = 0; row < image->getHeight(); row++) + for (int col = 0; col < image->getWidth(); col++) { if (image->r(row, col) > max_) { max_ = image->r(row, col); } @@ -1506,8 +1506,8 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) scaleForSave = 65535 * 8192 / max; // Correction and gamma to 8 Bit - for (int i = 0; i < image->height; i++) - for (int j = (image->width - trim_width) / 2; j < trim_width + (image->width - trim_width) / 2; j++) { + for (int i = 0; i < image->getHeight(); i++) + for (int j = (image->getWidth() - trim_width) / 2; j < trim_width + (image->getWidth() - trim_width) / 2; j++) { unsigned short rtmp, gtmp, btmp; image->convertTo(image->r(i, j), rtmp); image->convertTo(image->g(i, j), gtmp); @@ -1521,8 +1521,8 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) Image16 *image = static_cast(thumbImg); unsigned short max_ = 0; - for (int row = 0; row < image->height; row++) - for (int col = 0; col < image->width; col++) { + for (int row = 0; row < image->getHeight(); row++) + for (int col = 0; col < image->getWidth(); col++) { if (image->r(row, col) > max_) { max_ = image->r(row, col); } @@ -1545,8 +1545,8 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) scaleForSave = 65535 * 8192 / max; // Correction and gamma to 8 Bit - for (int i = 0; i < image->height; i++) - for (int j = (image->width - trim_width) / 2; j < trim_width + (image->width - trim_width) / 2; j++) { + for (int i = 0; i < image->getHeight(); i++) + for (int j = (image->getWidth() - trim_width) / 2; j < trim_width + (image->getWidth() - trim_width) / 2; j++) { unsigned short rtmp, gtmp, btmp; image->convertTo(image->r(i, j), rtmp); image->convertTo(image->g(i, j), gtmp); @@ -1560,8 +1560,8 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) Imagefloat *image = static_cast(thumbImg); float max_ = 0.f; - for (int row = 0; row < image->height; row++) - for (int col = 0; col < image->width; col++) { + for (int row = 0; row < image->getHeight(); row++) + for (int col = 0; col < image->getWidth(); col++) { if (image->r(row, col) > max_) { max_ = image->r(row, col); } @@ -1584,8 +1584,8 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) scaleForSave = 65535 * 8192 / max; // Correction and gamma to 8 Bit - for (int i = 0; i < image->height; i++) - for (int j = (image->width - trim_width) / 2; j < trim_width + (image->width - trim_width) / 2; j++) { + for (int i = 0; i < image->getHeight(); i++) + for (int j = (image->getWidth() - trim_width) / 2; j < trim_width + (image->getWidth() - trim_width) / 2; j++) { unsigned short rtmp, gtmp, btmp; image->convertTo(image->r(i, j), rtmp); image->convertTo(image->g(i, j), gtmp); @@ -1617,7 +1617,7 @@ unsigned char* Thumbnail::getGrayscaleHistEQ (int trim_width) } if (cdf_min != -1) { - hist[i] = (cdf - cdf_min) * 255 / ((thumbImg->height * trim_width) - cdf_min); + hist[i] = (cdf - cdf_min) * 255 / ((thumbImg->getHeight() * trim_width) - cdf_min); } } @@ -1645,8 +1645,8 @@ bool Thumbnail::writeImage (const Glib::ustring& fname, int format) fwrite (thumbImg->getType(), sizeof (char), strlen(thumbImg->getType()), f); fputc ('\n', f); - guint32 w = guint32(thumbImg->width); - guint32 h = guint32(thumbImg->height); + guint32 w = guint32(thumbImg->getWidth()); + guint32 h = guint32(thumbImg->getHeight()); fwrite (&w, sizeof (guint32), 1, f); fwrite (&h, sizeof (guint32), 1, f); diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index 95475e6a4..1ef4bf884 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -276,20 +276,19 @@ void StdImageSource::colorSpaceConversion (Imagefloat* im, const ColorManagement void StdImageSource::getFullSize (int& w, int& h, int tr) { - w = img->width; - h = img->height; + w = img->getWidth(); + h = img->getHeight(); if ((tr & TR_ROT) == TR_R90 || (tr & TR_ROT) == TR_R270) { - w = img->height; - h = img->width; + w = img->getHeight(); + h = img->getWidth(); } } void StdImageSource::getSize (PreviewProps pp, int& w, int& h) { - - w = pp.w / pp.skip + (pp.w % pp.skip > 0); - h = pp.h / pp.skip + (pp.h % pp.skip > 0); + w = pp.getWidth() / pp.getSkip() + (pp.getWidth() % pp.getSkip() > 0); + h = pp.getHeight() / pp.getSkip() + (pp.getHeight() % pp.getSkip() > 0); } void StdImageSource::getAutoExpHistogram (LUTu & histogram, int& histcompr) diff --git a/rtgui/bqentryupdater.cc b/rtgui/bqentryupdater.cc index 37ce4c0ef..1bb7e4257 100644 --- a/rtgui/bqentryupdater.cc +++ b/rtgui/bqentryupdater.cc @@ -120,11 +120,11 @@ void BatchQueueEntryUpdater::processThread () int prevh = img->getHeight(); #ifndef NDEBUG - if (current.ow != img->getW() || current.oh != img->getH()) { - printf("WARNING! Expected image size: %dx%d ; image size is: %dx%d\n", current.ow, current.oh, img->getW(), img->getH()); + if (current.ow != img->getWidth() || current.oh != img->getHeight()) { + printf("WARNING! Expected image size: %dx%d ; image size is: %dx%d\n", current.ow, current.oh, img->getWidth(), img->getHeight()); } - assert ((current.ow + 1)*current.oh >= img->getW()*img->getH()); + assert ((current.ow + 1)*current.oh >= img->getWidth()*img->getHeight()); #endif current.ow = prevw; current.oh = prevh; From 54d1533a7dc47143b279a602692618abf41f429d Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 15 Feb 2017 01:30:41 +0100 Subject: [PATCH 03/15] Fix autowb issues, fixes #3690 --- rtengine/improccoordinator.cc | 5 ++++- rtengine/improccoordinator.h | 6 ++++++ rtengine/rtengine.h | 9 +++++++++ rtgui/toolpanelcoord.cc | 1 + rtgui/whitebalance.cc | 8 ++++++++ rtgui/whitebalance.h | 3 ++- 6 files changed, 30 insertions(+), 2 deletions(-) diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 46cf031bd..42e99d2a0 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -87,7 +87,7 @@ ImProcCoordinator::ImProcCoordinator () fw(0), fh(0), tr(0), fullw(1), fullh(1), pW(-1), pH(-1), - plistener(nullptr), imageListener(nullptr), aeListener(nullptr), acListener(nullptr), abwListener(nullptr), actListener(nullptr), adnListener(nullptr), awavListener(nullptr), dehaListener(nullptr), hListener(nullptr), + plistener(nullptr), imageListener(nullptr), aeListener(nullptr), acListener(nullptr), abwListener(nullptr), awbListener(nullptr), actListener(nullptr), adnListener(nullptr), awavListener(nullptr), dehaListener(nullptr), hListener(nullptr), resultValid(false), lastOutputProfile("BADFOOD"), lastOutputIntent(RI__COUNT), lastOutputBPC(false), thread(nullptr), changeSinceLast(0), updaterRunning(false), destroying(false), utili(false), autili(false), wavcontlutili(false), butili(false), ccutili(false), cclutili(false), clcutili(false), opautili(false), conversionBuffer(1, 1), colourToningSatLimit(0.f), colourToningSatLimitOpacity(0.f) {} @@ -305,6 +305,9 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) params.wb.temperature = currWB.getTemp (); params.wb.green = currWB.getGreen (); + if(params.wb.method == "Auto" && awbListener) { + awbListener->WBChanged(params.wb.temperature, params.wb.green); + } int tr = getCoarseBitMask(params.coarse); diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 2cc767b39..0e0379553 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -156,6 +156,8 @@ protected: AutoExpListener* aeListener; AutoCamListener* acListener; AutoBWListener* abwListener; + AutoWBListener* awbListener; + AutoColorTonListener* actListener; AutoChromaListener* adnListener; WaveletListener* awavListener; @@ -311,6 +313,10 @@ public: { abwListener = abw; } + void setAutoWBListener (AutoWBListener* awb) + { + awbListener = awb; + } void setAutoColorTonListener (AutoColorTonListener* bwct) { actListener = bwct; diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index 61c779fb7..26ffc30d1 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -310,6 +310,14 @@ public : }; +class AutoWBListener +{ +public : + virtual ~AutoWBListener() {} + virtual void WBChanged (double temp, double green) {} + +}; + class WaveletListener { public : @@ -411,6 +419,7 @@ public: virtual void setPreviewImageListener (PreviewImageListener* l) = 0; virtual void setAutoCamListener (AutoCamListener* l) = 0; virtual void setAutoBWListener (AutoBWListener* l) = 0; + virtual void setAutoWBListener (AutoWBListener* l) = 0; virtual void setAutoColorTonListener (AutoColorTonListener* l) = 0; virtual void setAutoChromaListener (AutoChromaListener* l) = 0; virtual void setRetinexListener (RetinexListener* l) = 0; diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 98dc311f8..71281abd3 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -488,6 +488,7 @@ void ToolPanelCoordinator::initImage (rtengine::StagedImageProcessor* ipc_, bool ipc->setAutoExpListener (toneCurve); ipc->setAutoCamListener (colorappearance); ipc->setAutoBWListener (blackwhite); + ipc->setAutoWBListener (whitebalance); ipc->setAutoColorTonListener (colortoning); ipc->setAutoChromaListener (dirpyrdenoise); ipc->setWaveletListener (wavelet); diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index d0413412b..a15410713 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -884,3 +884,11 @@ inline Gtk::TreeRow WhiteBalance::getActiveMethod () { return *(method->get_active()); } + +void WhiteBalance::WBChanged(double temperature, double greenVal) +{ + disableListener(); + temp->setValue(temperature); + green->setValue(greenVal); + enableListener(); +} diff --git a/rtgui/whitebalance.h b/rtgui/whitebalance.h index c18b15853..0cf119a86 100644 --- a/rtgui/whitebalance.h +++ b/rtgui/whitebalance.h @@ -34,7 +34,7 @@ public: virtual void spotWBRequested (int size) {} }; -class WhiteBalance : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +class WhiteBalance : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel, public rtengine::AutoWBListener { enum WB_LabelType { @@ -114,6 +114,7 @@ public: wblistener = l; } void setWB (int temp, double green); + void WBChanged (double temp, double green); void setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd); void trimValues (rtengine::procparams::ProcParams* pp); From 974c3ff467618eafdccfb3061c14bec2dbd5c614 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 15 Feb 2017 17:54:29 +0100 Subject: [PATCH 04/15] Cleanup for autowb fix --- rtengine/rtengine.h | 5 ++- rtgui/whitebalance.cc | 75 ++++--------------------------------------- 2 files changed, 9 insertions(+), 71 deletions(-) diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index 26ffc30d1..5678d1781 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -313,9 +313,8 @@ public : class AutoWBListener { public : - virtual ~AutoWBListener() {} - virtual void WBChanged (double temp, double green) {} - + virtual ~AutoWBListener() = default; + virtual void WBChanged(double temp, double green) = 0; }; class WaveletListener diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index a15410713..25722568c 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -374,24 +374,7 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval) } else if (a == equal) { cache_customEqual (eVal); - // Recomputing AutoWB if it's the current method - if (wbp && ppMethod->type == WBT_AUTO) { - double ctemp = -1.0; - double cgreen = -1.0; - wbp->getAutoWB (ctemp, cgreen, eVal); - - if (ctemp != -1.0) { - // Set the automatics temperature value only if in SET mode - if (temp->getEditedState() && !temp->getAddMode() ) { - temp->setValue (ctemp); - } - - // Set the automatics green value only if in SET mode - if (green->getEditedState() && !green->getAddMode()) { - green->setValue (cgreen); - } - } - } + // Recomputing AutoWB if it's the current method will happen in improccoordinator.cc } if (listener) { @@ -460,15 +443,7 @@ void WhiteBalance::optChanged () // equal remain as is } - if (!batchMode || equal->getEditedState()) { - double ctemp, cgreen; - wbp->getAutoWB (ctemp, cgreen, equal->getValue()); - - if (ctemp != -1.0) { - temp->setValue (temp->getAddMode() ? 0.0 : (int)ctemp); - green->setValue (green->getAddMode() ? 0.0 : cgreen); - } - } + // Recomputing AutoWB will happen in improccoordinator.cc } break; @@ -617,32 +592,7 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) green->setValue (0.0); } - // then check for the correct ones, if possible - if (wbp) { - double ctemp = -1.0; - double cgreen = -1.0; - wbp->getAutoWB (ctemp, cgreen, pp->wb.equal); - - if (ctemp != -1.0) { - // Set the automatics temperature if in SET mode - if (!pedited || (pedited->wb.temperature && !temp->getAddMode()) ) { - temp->setValue (ctemp); - - if (pedited) { - temp->setEditedState (Edited); - } - } - - // Set the automatics green value if in SET mode - if (!pedited || (pedited->wb.green && !green->getAddMode())) { - green->setValue (cgreen); - - if (pedited) { - green->setEditedState (Edited); - } - } - } - } + // Recomputing AutoWB will happen in improccoordinator.cc break; @@ -716,25 +666,11 @@ void WhiteBalance::setDefaults (const ProcParams* defParams, const ParamsEdited* temp->setDefault (temp->getAddMode() ? 0 : (int)ctemp); green->setDefault (green->getAddMode() ? 0 : cgreen); } - } else if (wbp && defParams->wb.method == "Auto") { - // this setDefaults method is called too early ; the wbp has been set, - // but wbp is not ready to provide! - double ctemp; - double cgreen; - wbp->getAutoWB (ctemp, cgreen, defParams->wb.equal); - - if (ctemp != -1.0) { - temp->setDefault (temp->getAddMode() ? 0 : (int)ctemp); - green->setDefault (green->getAddMode() ? 0 : cgreen); - } else { - // 6504 & 1.0 = same values as in ProcParams::setDefaults - temp->setDefault (temp->getAddMode() ? 0 : 6504); - green->setDefault (green->getAddMode() ? 0 : 1.0); - } } else { temp->setDefault (defParams->wb.temperature); green->setDefault (defParams->wb.green); } + // Recomputing AutoWB if it's the current method will happen in improccoordinator.cc if (pedited) { temp->setDefaultEditedState (pedited->wb.temperature ? Edited : UnEdited); @@ -887,8 +823,11 @@ inline Gtk::TreeRow WhiteBalance::getActiveMethod () void WhiteBalance::WBChanged(double temperature, double greenVal) { + GThreadLock lock; disableListener(); temp->setValue(temperature); green->setValue(greenVal); + temp->setDefault(temperature); + green->setDefault(greenVal); enableListener(); } From ed71a7eb4eb07c68e5bfe4a824888286f5251f6c Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 16 Feb 2017 12:15:17 +0100 Subject: [PATCH 05/15] improved UI behaviour of "AWB temperature bias" --- rtgui/whitebalance.cc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index d4390046e..0c716647e 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -369,6 +369,8 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval) if (!ppMethod || (ppMethod->ppLabel != wbCustom->ppLabel && !((a == equal || a == tempBias) && ppMethod->type == WBT_AUTO)) ) { methconn.block(true); opt = setActiveMethod(wbCustom->GUILabel); + tempBias->set_sensitive(false); + cache_customWB (tVal, gVal); if (a != equal) { cache_customEqual(eVal); @@ -430,10 +432,13 @@ void WhiteBalance::optChanged () temp->setEditedState (UnEdited); green->setEditedState (UnEdited); equal->setEditedState (UnEdited); + tempBias->setEditedState (UnEdited); } else { int methodId = findWBEntryId (row[methodColumns.colLabel], WBLT_GUI); WBEntry* currMethod = WBParams::wbEntries[methodId]; + tempBias->set_sensitive(currMethod->type == WBT_AUTO); + switch (currMethod->type) { case WBT_CAMERA: if (wbp) { @@ -442,13 +447,11 @@ void WhiteBalance::optChanged () temp->setValue (temp->getAddMode() ? 0.0 : (int)ctemp); green->setValue (green->getAddMode() ? 0.0 : cgreen); equal->setValue (equal->getAddMode() ? 0.0 : 1.0); - tempBias->setValue (tempBias->getAddMode() ? 0.0 : 0.0); if (batchMode) { temp->setEditedState (UnEdited); green->setEditedState (UnEdited); equal->setEditedState (UnEdited); - tempBias->setEditedState (UnEdited); } } @@ -472,19 +475,16 @@ void WhiteBalance::optChanged () temp->setValue (temp->getAddMode() ? 0.0 : custom_temp); green->setValue (green->getAddMode() ? 0.0 : custom_green); equal->setValue (equal->getAddMode() ? 0.0 : custom_equal); - tempBias->setValue (tempBias->getAddMode() ? 0.0 : custom_tempBias); } else { cache_customTemp (temp->getValue()); cache_customGreen (green->getValue()); cache_customEqual (equal->getValue()); - cache_customTempBias (tempBias->getValue()); } if (batchMode) { temp->setEditedState (Edited); green->setEditedState (Edited); equal->setEditedState (Edited); - tempBias->setEditedState (Edited); } break; @@ -503,13 +503,11 @@ void WhiteBalance::optChanged () temp->setValue ( temp->getAddMode() ? 0.0 : (double)(currMethod->temperature)); green->setValue (green->getAddMode() ? 0.0 : (double)(currMethod->green)); equal->setValue (equal->getAddMode() ? 0.0 : (double)(currMethod->equal)); - tempBias->setValue (tempBias->getAddMode() ? 0.0 : (double)(currMethod->tempBias)); if (batchMode) { temp->setEditedState (Edited); green->setEditedState (Edited); equal->setEditedState (Edited); - tempBias->setEditedState (Edited); } break; @@ -546,6 +544,7 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) methconn.block (true); equal->setValue (pp->wb.equal); tempBias->setValue (pp->wb.tempBias); + tempBias->set_sensitive(true); if (pedited) { // By default, temperature and green are said "UnEdited", but it may change later @@ -598,13 +597,12 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) // Set the camera's green value, or 0.0 if in ADD mode green->setValue (green->getAddMode() ? 0.0 : cgreen); equal->setValue (equal->getAddMode() ? 0.0 : 1.); - tempBias->setValue (tempBias->getAddMode() ? 0.0 : 0.0); } else { temp->setValue (temp->getAddMode() ? 0.0 : pp->wb.temperature); green->setValue (green->getAddMode() ? 0.0 : pp->wb.green); equal->setValue (equal->getAddMode() ? 0.0 : pp->wb.equal); - tempBias->setValue (equal->getAddMode() ? 0.0 : pp->wb.tempBias); } + tempBias->setValue (equal->getAddMode() ? 0.0 : pp->wb.tempBias); } break; @@ -656,6 +654,8 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) //cache_customGreen (pp->wb.green); break; } + + tempBias->set_sensitive(wbValues->type == WBT_AUTO); } methconn.block (false); From ea0bf123474f5cf05893b785d33ca8d7b7a1a384 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 16 Feb 2017 14:50:22 +0100 Subject: [PATCH 06/15] added blue and yellow dots to the "AWB temp bias" adjuster --- rtgui/whitebalance.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index 0c716647e..61d320833 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -310,11 +310,13 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB Gtk::Image* igreenR = Gtk::manage (new RTImage ("ajd-wb-green2.png")); Gtk::Image* iblueredL = Gtk::manage (new RTImage ("ajd-wb-bluered1.png")); Gtk::Image* iblueredR = Gtk::manage (new RTImage ("ajd-wb-bluered2.png")); + Gtk::Image* itempbiasL = Gtk::manage (new RTImage ("ajd-wb-temp1.png")); + Gtk::Image* itempbiasR = Gtk::manage (new RTImage ("ajd-wb-temp2.png")); temp = Gtk::manage (new Adjuster (M("TP_WBALANCE_TEMPERATURE"), MINTEMP, MAXTEMP, 5, CENTERTEMP, itempL, itempR, &wbSlider2Temp, &wbTemp2Slider)); green = Gtk::manage (new Adjuster (M("TP_WBALANCE_GREEN"), MINGREEN, MAXGREEN, 0.001, 1.0, igreenL, igreenR)); equal = Gtk::manage (new Adjuster (M("TP_WBALANCE_EQBLUERED"), MINEQUAL, MAXEQUAL, 0.001, 1.0, iblueredL, iblueredR)); - tempBias = Gtk::manage (new Adjuster(M("TP_WBALANCE_TEMPBIAS"), -0.5, 0.5, 0.01, 0.0)); + tempBias = Gtk::manage (new Adjuster(M("TP_WBALANCE_TEMPBIAS"), -0.5, 0.5, 0.01, 0.0, itempbiasL, itempbiasR)); cache_customTemp (0); cache_customGreen (0); cache_customEqual (0); From 1b30493bd71545e89229f734c06f460dbc55e8bc Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 16 Feb 2017 16:21:38 +0100 Subject: [PATCH 07/15] removed unused variable custom_tempBias --- rtgui/whitebalance.cc | 14 -------------- rtgui/whitebalance.h | 2 -- 2 files changed, 16 deletions(-) diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index 61d320833..72090877e 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -232,7 +232,6 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB custom_green = 1.0; custom_equal = 1.0; - custom_tempBias = 0.0; } //Add the model columns to the Combo (which is a kind of view), @@ -320,7 +319,6 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB cache_customTemp (0); cache_customGreen (0); cache_customEqual (0); - cache_customTempBias (0); equal->set_tooltip_markup (M("TP_WBALANCE_EQBLUERED_TOOLTIP")); tempBias->set_tooltip_markup (M("TP_WBALANCE_TEMPBIAS_TOOLTIP")); temp->show (); @@ -377,9 +375,6 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval) if (a != equal) { cache_customEqual(eVal); } - if (a != tempBias) { - cache_customTempBias(tempBiasVal); - } methconn.block(false); } @@ -390,8 +385,6 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval) cache_customGreen (gVal); } else if (a == equal) { cache_customEqual (eVal); - } else if (a == tempBias) { - cache_customTempBias (tempBiasVal); } // Recomputing AutoWB if it's the current method will happen in improccoordinator.cc @@ -577,7 +570,6 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) cache_customTemp (pp->wb.temperature); cache_customGreen (pp->wb.green); cache_customEqual (pp->wb.equal); - cache_customTempBias (pp->wb.tempBias); if (pedited) { // The user may have changed the temperature and green value @@ -754,7 +746,6 @@ void WhiteBalance::setWB (int vtemp, double vgreen) opt = setActiveMethod(wbValues->GUILabel); cache_customWB (vtemp, vgreen); // sequence in which this call is made is important; must be before "method->set_active (2);" cache_customEqual(equal->getValue()); - cache_customTempBias(tempBias->getValue()); temp->setEditedState (Edited); green->setEditedState (Edited); methconn.block(false); @@ -796,11 +787,6 @@ void WhiteBalance::cache_customEqual(double equal) custom_equal = equal; } -void WhiteBalance::cache_customTempBias(double tempBias) -{ - custom_tempBias = tempBias; -} - void WhiteBalance::cache_customWB(int temp, double green) { cache_customTemp (temp); diff --git a/rtgui/whitebalance.h b/rtgui/whitebalance.h index fb3a443a1..1d493c035 100644 --- a/rtgui/whitebalance.h +++ b/rtgui/whitebalance.h @@ -77,12 +77,10 @@ protected: int custom_temp; double custom_green; double custom_equal; - double custom_tempBias; void cache_customWB (int temp, double green); //cache custom WB setting to allow its recall void cache_customTemp (int temp); //cache Temperature only to allow its recall void cache_customGreen (double green); //cache Green only to allow its recall void cache_customEqual (double equal); //cache Equal only to allow its recall - void cache_customTempBias (double tempBias); //cache TempBias only to allow its recall int setActiveMethod (Glib::ustring label); int _setActiveMethod (Glib::ustring &label, Gtk::TreeModel::Children &children); From e66cc8f3fa529472ffad6d4e0b04d96645f0682e Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 16 Feb 2017 18:38:57 +0100 Subject: [PATCH 08/15] use the right precision (2 digits) for the history entry of AWB temp bias --- rtgui/whitebalance.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index 72090877e..362d03a8d 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -397,7 +397,7 @@ void WhiteBalance::adjusterChanged (Adjuster* a, double newval) } else if (a == equal) { listener->panelChanged (EvWBequal, Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), a->getValue())); } else if (a == tempBias) { - listener->panelChanged (EvWBtempBias, Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), a->getValue())); + listener->panelChanged (EvWBtempBias, Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(2), a->getValue())); } } } From dfdcacfa52c63149811b679ed156cefdb9a3408a Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 17 Feb 2017 08:36:23 +0100 Subject: [PATCH 09/15] updated AUTHORS.txt (as suggested by heckflosse) --- AUTHORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index 6aebfcf6e..3dc820555 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -15,6 +15,7 @@ Developement contributors, in last name alphabetical order: Flössie Jean-Christophe Frisch Ilias Giarimis + Alberto Griggio Steve Herrell Philippe Hupé Wolfgang Kuehnel From 7398a7e607be0bbb308b0f3576c313da7754932b Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 17 Feb 2017 09:05:00 +0100 Subject: [PATCH 10/15] re-enabled loading of lossy DNG files --- rtengine/dcraw.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 3b6d98133..6fb2ce8c1 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -9,6 +9,7 @@ /*RT*/#define NO_JASPER /*RT*/#define LOCALTIME /*RT*/#define DJGPP +/*RT*/#include #include "opthelper.h" @@ -2604,7 +2605,7 @@ void CLASS kodak_radc_load_raw() #ifdef NO_JPEG void CLASS kodak_jpeg_load_raw() {} -void CLASS lossy_dng_load_raw() {} +// RT void CLASS lossy_dng_load_raw() {} #else METHODDEF(boolean) @@ -2661,6 +2662,7 @@ void CLASS kodak_jpeg_load_raw() } void CLASS gamma_curve (double pwr, double ts, int mode, int imax); +/*RT*/#endif void CLASS lossy_dng_load_raw() { @@ -2704,7 +2706,8 @@ void CLASS lossy_dng_load_raw() fseek (ifp, save+=4, SEEK_SET); if (tile_length < INT_MAX) fseek (ifp, get4(), SEEK_SET); - jpeg_stdio_src (&cinfo, ifp); + /*RT jpeg_stdio_src (&cinfo, ifp); */ + /*RT*/jpeg_mem_src(&cinfo, fdata(ftell(ifp), ifp), ifp->size - ftell(ifp)); jpeg_read_header (&cinfo, TRUE); jpeg_start_decompress (&cinfo); buf = (*cinfo.mem->alloc_sarray) @@ -2724,7 +2727,7 @@ void CLASS lossy_dng_load_raw() jpeg_destroy_decompress (&cinfo); maximum = 0xffff; } -#endif +// RT #endif void CLASS kodak_dc120_load_raw() { @@ -9525,8 +9528,8 @@ dng_skip: } #endif #ifdef NO_JPEG - if (load_raw == &CLASS kodak_jpeg_load_raw || - load_raw == &CLASS lossy_dng_load_raw) { + if (load_raw == &CLASS kodak_jpeg_load_raw /* RT || + load_raw == &CLASS lossy_dng_load_raw*/) { fprintf (stderr,_("%s: You must link dcraw with %s!!\n"), ifname, "libjpeg"); is_raw = 0; From 4994fb6d9d0a28a754604966bdef81241c95e21a Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Fri, 17 Feb 2017 21:09:39 +0100 Subject: [PATCH 11/15] Updated TooWaBlue theme to v2.44, #3696 --- rtdata/themes/TooWaBlue-Dark-GTK3-20_.css | 201 ++++++++++------------ rtdata/themes/TooWaBlue-GTK3-20_.css | 201 ++++++++++------------ 2 files changed, 190 insertions(+), 212 deletions(-) diff --git a/rtdata/themes/TooWaBlue-Dark-GTK3-20_.css b/rtdata/themes/TooWaBlue-Dark-GTK3-20_.css index 43d9a3035..9472f4b3d 100644 --- a/rtdata/themes/TooWaBlue-Dark-GTK3-20_.css +++ b/rtdata/themes/TooWaBlue-Dark-GTK3-20_.css @@ -2,7 +2,7 @@ This file is part of RawTherapee. Copyright (c) 2016-2017 TooWaBoo - Version 2.42 - requires RT 5.0 + Version 2.44 - requires RT 5.0 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -105,7 +105,7 @@ messagedialog { } tooltip { background-color: @bg-tooltip; - border: 1px solid @border-tooltip; + border: 0.08334em solid @border-tooltip; border-radius: 0.33334em; padding: 0; margin: 0; @@ -180,7 +180,7 @@ frame > border { dialog frame > border { padding: 0.5em; border-radius: 0; - border: 1px solid @border-color; + border: 0.08334em solid @border-color; background-color: transparent; margin: 0 -0.5em; } @@ -241,11 +241,11 @@ textview:selected, treeview:selected { } #RightNotebook > stack > :nth-child(3) treeview { - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; border-bottom: none; } -#PlacesPaned > :nth-child(1) treeview { +#PlacesPaned > box:nth-child(1) treeview { padding: 0.08334em 0 0.08334em 0.5em; -gtk-icon-style: symbolic; } @@ -275,15 +275,15 @@ textview:selected, treeview:selected { margin-bottom: 0.41667em; } -#PlacesPaned > box:nth-child(3) > :nth-child(2), +#PlacesPaned > box:nth-child(3) > box:nth-child(2), #PlacesPaned > box:nth-child(1) > :nth-child(1), #HistoryPanel > border, #Snapshots > box > :nth-child(1) { - padding: 1px; background-color: @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; } -/*Corrects the space for the snapshot view of the paned separator*/ +/*Corrects the space of the snapshot view to the paned separator*/ #Snapshots { margin-top: -0.33334em; } @@ -321,11 +321,11 @@ filechooser box { } filechooser > box > paned > box { - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; background-color: @bg-dark-grey; } filechooser placessidebar { - padding: 0 1px; + padding: 0 0.08334em; background-color: @bg-dark-grey; } @@ -362,7 +362,7 @@ filechooser list row:selected { } #HistogramArea, #HistogramRGBArea { - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; background-color: @bg-dark-grey; } @@ -372,7 +372,7 @@ filechooser list row:selected { margin: 0; border-color: @bg-light-grey; border-style: solid; - border-width: 0 0 0 1px; + border-width: 0 0 0 0.08334em; background-color: @bg-dark-grey; background-image: none; box-shadow: none; @@ -385,7 +385,7 @@ filechooser list row:selected { } #EditorLeftPaned #fullButton, #EditorLeftPaned #histButton { - border-width: 0 1px 0 0; + border-width: 0 0.08334em 0 0; } /*** end ***************************************************************************************/ @@ -467,8 +467,8 @@ menu separator { /*** PartialPaste ******************************************************************************/ #PartialPaste { - border-bottom: 1px solid @border-color; - border-top: 1px solid @border-color; + border-bottom: 0.08334em solid @border-color; + border-top: 0.08334em solid @border-color; padding-top: 0.5em; padding-bottom: 0.5em; } @@ -518,10 +518,10 @@ scrollbar:not(.overlay-indicator) { background-color: rgba(0,0,0,.30); } scrollbar:not(.overlay-indicator).horizontal { - border-width: 0 1px 1px 1px; + border-width: 0 0.08334em 0.08334em 0.08334em; } scrollbar:not(.overlay-indicator).vertical { - border-width: 1px 1px 1px 0; + border-width: 0.08334em 0.08334em 0.08334em 0; } scrollbar:not(.overlay-indicator) slider { background-color: shade(@text-color, .9); @@ -593,7 +593,7 @@ scale slider { margin: calc(-0.33334em - 1px); border-radius: 0.83334em; background-image: linear-gradient(to bottom, shade (@accent-color4,1.15), shade (@accent-color4,.85)); - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; box-shadow: none; } scale slider:hover { @@ -603,14 +603,14 @@ scale slider:hover { scale trough { margin: 0.5em; /* has to be half of "scale slider / min-width min-height*/ background-color: @bg-scale-entry; - border-color: @bg-dark-grey; - box-shadow: inset 0 1px rgba(255, 255, 255, 0.11), 0 1px rgba(242, 242, 242, 0.11); + border: 0.08334em solid @bg-dark-grey; + box-shadow: inset 0 0.08334em rgba(255, 255, 255, 0.11), 0 0.08334em rgba(242, 242, 242, 0.11); border-radius: 0.5em; } scale:not(:disabled) trough highlight { background-color: @accent-color2; - border-color: @bg-dark-grey; - box-shadow: inset 0 1px shade(@accent-color2, 1.3); + border: 0.08334em solid @bg-dark-grey; + box-shadow: inset 0 0.08334em shade(@accent-color2, 1.3); border-radius: 0.5em; } @@ -671,7 +671,7 @@ progressbar.horizontal trough progress { #IopsPanel progressbar.horizontal trough { min-height: 0.5em; background-color: @bg-scale-entry; - border: 1px solid @bg-button-border; + border: 0.08334em solid @bg-button-border; margin-top: 0.25em; } #IopsPanel progressbar.horizontal trough progress { @@ -770,8 +770,9 @@ dialog notebook stack { #MainNotebook > stack { padding: 0.41667em; } -#MainNotebook > stack > :nth-child(2) > :nth-child(2) { - margin-bottom: 0.33334em; + +#MainNotebook > stack > :nth-child(2) > box:nth-child(3) { + margin-top: 0.41667em; } @@ -801,10 +802,11 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { background-color: @bg-grey; padding: 0; } -#RightNotebook > stack > :nth-child(3), -#RightNotebook > stack > :nth-child(4) { + +#RightNotebook > stack > :nth-child(3) > * > box, +#RightNotebook > stack > :nth-child(4) > * > box { padding: 0.5em; - border: 1px solid @bg-entry-border; + border: 0.08334em solid @bg-entry-border; } #PrefNotebook header { @@ -813,8 +815,9 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #AboutNotebook header { margin: -0.66667em -0.66667em 0.66667em; } -#AboutNotebook stack > * > * > * { - background-color: @dark-grey; + +#AboutNotebook stack text { + background-color: @bg-dark-grey; } /* All tool panels have a frame except for Meta which unlike the rest is a notebook itself. @@ -873,7 +876,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { margin: 0; } #MetaPanelNotebook .view { - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; padding: 0.16667em; margin: 0; } @@ -894,8 +897,8 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { min-width: 1.66667em; } #MetaPanelNotebook > stack > box > grid > button { - margin-top: 1px; - margin-bottom: 1px; + margin-top: 0.08334em; + margin-bottom: 0.08334em; min-height: 2.16667em; } @@ -908,7 +911,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { /*** File Browser ******************************************************************************/ #FileCatalog { background-color: @bg-image; - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; } #FileCatalog:selected { background-color: @accent-color3; @@ -949,7 +952,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { min-width: 1.66667em; margin: 0 0 0 -1.66667em; border-radius: 0 0.2em 0.2em 0; - border: 1px solid transparent; + border: 0.08334em solid transparent; padding: 0; } #ToolBarPanelFileBrowser entry, @@ -972,25 +975,17 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #BeforeAfterContainer { background-color: @bg-grey; - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; border-radius: 0; padding: 0; margin: 0.41667em 0; } -#BeforeAfterContainer > box:nth-child(1) frame { - background-color: @bg-image; - border-top: 1px solid @bg-dark-grey; - border-radius: 0; - padding: 0; - margin: -1px 0 0 0; +#BeforeAfterContainer > box:nth-child(2) > box:nth-child(2), +#BeforeAfterContainer > box:nth-child(1) > box:nth-child(2){ + border-top: 0.08334em solid @bg-dark-grey; } -#BeforeAfterContainer > box:nth-child(2) frame { - background-color: @bg-image; - border-top: 1px solid @bg-dark-grey; - border-left: 1px solid @bg-dark-grey; - border-radius: 0; - padding: 0; - margin: -1px 0 0 0; +#BeforeAfterContainer > box:nth-child(2){ + border-left: 0.08334em solid @bg-dark-grey; } #BeforeAfterContainer label { @@ -1000,8 +995,8 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { /* Small Lock Button */ #BeforeAfterContainer button { min-height: 1.66667em; - min-width: 1.66667em; - margin: 0.25em 0 0.33334em; + min-width: 1.75em; + margin: 0.25em; padding: 0 0 0 0.08334em; } /**/ @@ -1034,7 +1029,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { min-width: 0; margin: 0 0.16667em; padding: 0 0.16667em; - border: 1px solid transparent; + border: 0.08334em solid transparent; background-color: transparent; background-image: none; box-shadow: none; @@ -1042,13 +1037,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #EditorTopPanel > box > box > button:hover { background-color: transparent; background-image: none; - border: 1px solid transparent; + border: 0.08334em solid transparent; box-shadow: none; } #EditorTopPanel > box > box > button:checked { background-color: transparent; background-image: none; - border: 1px solid @bg-button-border; + border: 0.08334em solid @bg-button-border; box-shadow: none; } @@ -1077,13 +1072,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { } /**/ #MyExpander .drawingarea:not(.slider) { - border: 1px solid @bg-light-grey; + border: 0.08334em solid @bg-light-grey; } #MyExpander .slider, #MyExpander .drawingarea:nth-child(2) { background-image: linear-gradient(to bottom, shade (@accent-color4,1.15), shade (@accent-color4,.85)); background-color: @accent-color4; - border: 1px solid rgb(15,15,15); + border: 0.08334em solid rgb(15,15,15); } #MyExpander .drawingarea:disabled { background-color: shade(@bg-grey,.85); @@ -1114,7 +1109,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { /* Sub-tool (MyExpander) */ #ExpanderBox2 > box, #ExpanderBox2 > grid { background-color: transparent; - border: 1px solid @border-color; + border: 0.08334em solid @border-color; border-radius: 0; margin: 0; padding: 0.5em; @@ -1143,13 +1138,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { border: none; padding: 0; margin: 0; - box-shadow: 0 3px 9px 1px rgba(0, 0, 0, 0.50), 0 0 0 1px @bg-dark-grey; + box-shadow: 0 0.25em 0.75em 0.08334em rgba(0, 0, 0, 0.50), 0 0 0 0.08334em @bg-dark-grey; } menu { background-color: @bg-dark-grey; - border: 1px solid @accent-color; - padding: 1px; + border: 0.08334em solid @accent-color; + padding: 0.08334em; margin: 0; } menu > .top, @@ -1159,12 +1154,12 @@ menu > .bottom:hover { background-color: transparent; border: none; padding: 0.5em; - min-height: 2em; + min-height: 1.5em; } menuitem { padding: 0 0.33334em; - margin: 1px; + margin: 0.08334em; min-height: 2em; } menuitem:hover { @@ -1187,11 +1182,11 @@ entry > window > frame { } entry > window > frame > border { background-color: @bg-dark-grey; - padding: 1px; - border: 1px solid @accent-color; + padding: 0.08334em; + border: 0.08334em solid @accent-color; } .csd entry > window > frame > border { - margin: 1px; + margin: 0.08334em; } /* end */ @@ -1203,7 +1198,7 @@ entry > window > frame > border { } popover.background { background-color: @bg-dark-grey; - border-color: @accent-color; + border: 0.08334em solid @accent-color; border-radius: 0; padding: 0; margin: 0; @@ -1236,9 +1231,9 @@ button { margin: 0; padding: 0; /* x */ border-radius: 0.2em; - border: 1px solid @bg-button-border; + border: 0.08334em solid @bg-button-border; background-color: transparent; - box-shadow: inset 0 1px rgba(242, 242, 242, 0.1); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.1); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); } button.flat { @@ -1250,7 +1245,7 @@ button.text-button label { #MainNotebook > header > grid > button, button.flat { - border: 1px solid transparent; + border: 0.08334em solid transparent; box-shadow: none; background-image: none; background-color: transparent; @@ -1301,7 +1296,7 @@ scale + button.flat { button.flat:hover, button:hover { border-color: @bg-button-border; - box-shadow: inset 0 1px rgba(242, 242, 242, 0.1); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.1); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-hover; } @@ -1313,7 +1308,7 @@ button.flat:checked, button:active, button:checked { border-color: @bg-button-border; - box-shadow: inset 0 1px rgba(242, 242, 242, 0.08); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.08); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-active; } @@ -1322,7 +1317,7 @@ button:checked { button.Right, button.MiddleH { margin-left: 0.16667em; - border: 1px solid @bg-button-border; + border: 0.08334em solid @bg-button-border; } /**/ @@ -1364,9 +1359,10 @@ dialog combobox .combo, #MyExpander button:not(.flat).Left, #MyExpander button:not(.flat) + combobox, #MyExpander combobox + button:not(.flat), -#MyExpander combobox + combobox, +#MyExpander combobox + combobox +/* Crash #MyExpander button + label, -#MyExpander combobox + label { +#MyExpander combobox + label */ { margin-left: 0.16667em; } #MyExpander label + filechooserbutton, @@ -1453,7 +1449,7 @@ window .view button { background-image: none; box-shadow: none; min-height: 2em; - min-width: 1.33334em; + min-width: 1.33334em; padding: 0 0.33334em; } dialog .view button.text-button label, @@ -1462,20 +1458,21 @@ window .view button.text-button label { } window .view button { border: none; - border-bottom: 1px solid @border-color; + border-bottom: 0.08334em solid @border-color; } dialog .view button { - border-color: @border-color; + border: 0.08334em solid @border-color; } -.view button:checked label, .view button:checked, -.view button:hover:not(:active) label, .view button:hover:not(:active) { - color: @headline-hl; background-image: none; background-color: @bg-list-hover; } +.view button:checked label, +.view button:hover:not(:active) label { + color: @headline-hl; +} dialog .view header button:not(:last-child):not(:only-child), window .view header button:not(:last-child):not(:only-child), @@ -1517,7 +1514,7 @@ window .view header button, popover button.text-button { background-color: @bg-dark-grey; background-image: none; - border: 1px solid @border-color; + border: 0.08334em solid @border-color; box-shadow: none; background-image: none; margin: 0; @@ -1559,7 +1556,7 @@ headerbar button.titlebutton image { headerbar button.titlebutton { margin: 0 0 0 0.33334em; background-image: none; - border: 1px solid transparent; + border: 0.08334em solid transparent; background-color: transparent; box-shadow: none; min-width: 1.55em; @@ -1582,14 +1579,14 @@ messagedialog headerbar button.titlebutton { #MainNotebook tab #CloseButton:hover, headerbar button.titlebutton:hover{ border-color: rgba(0,0,0,.8); - box-shadow: inset 0 1px rgba(242, 242, 242, 0.11); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.11); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: rgba(128, 128, 128,.20); } #MainNotebook > header > grid > button:active, headerbar button.titlebutton:active{ border-color: rgba(0,0,0,.8); - box-shadow: inset 0 1px rgba(242, 242, 242, 0.15); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.15); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: rgba(128, 128, 128,.40); } @@ -1597,13 +1594,13 @@ headerbar button.titlebutton:active{ headerbar button.titlebutton.close:hover{ border-color: rgba(0,0,0,.8); background-image: linear-gradient(to bottom, rgb(180,0,0), rgb(160,0,0) 40%, rgb(130,0,0)); - box-shadow: inset 0 1px rgba(242, 242, 242, 0.32); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.32); } #MainNotebook tab #CloseButton:active, headerbar button.titlebutton.close:active{ border-color: rgba(0,0,0,.8); background-image: linear-gradient(to bottom, rgb(215,0,0), rgb(185,0,0) 40%, rgb(150,0,0)); - box-shadow: inset 0 1px rgba(242, 242, 242, 0.4); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.4); } /**/ @@ -1642,14 +1639,6 @@ checkbutton label { check { border-radius: 0.16667em; } -check:checked { - padding: 0 2px 0 0; - min-width: calc(1.16667em - 2px); -} -check:indeterminate { - min-width: 1.16667em; - padding: 0; -} radio{ border-radius: 1.16667em; @@ -1676,7 +1665,7 @@ frame > checkbutton check{ } #PrefNotebook stack > box:nth-child(3) checkbutton, #PrefNotebook stack > box:nth-child(4) checkbutton { - min-height: 2em; + min-height: 1.83334em; } #PrefNotebook radiobutton { min-height: 2em; @@ -1696,8 +1685,8 @@ entry { min-height: 1.66667em; min-width: 0; border-radius: 0.2em; - box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242, 242, 242, 0.1); - border: 1px solid @bg-entry-border; + box-shadow: inset 0.08334em 0.08334em rgba(0, 0, 0, 0.08), 0 0.08334em rgba(242, 242, 242, 0.1); + border: 0.08334em solid @bg-entry-border; background-color: @bg-scale-entry; } @@ -1708,8 +1697,8 @@ spinbutton { min-width: 0; border-radius: 0.2em; background-color: @bg-scale-entry; - border: 1px solid @bg-entry-border; - box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242, 242, 242, 0.1); + border: 0.08334em solid @bg-entry-border; + box-shadow: inset 0.08334em 0.08334em rgba(0, 0, 0, 0.08), 0 0.08334em rgba(242, 242, 242, 0.1); } #MyExpander spinbutton { @@ -1720,9 +1709,9 @@ spinbutton { border-top-left-radius: 1.83334em; border-bottom-left-radius: 1.83334em; background-color: shade(@bg-grey, 1.33); - border: 1px solid @bg-button-border; + border: 0.08334em solid @bg-button-border; color: @text-tbEntry; - box-shadow: inset 1px 1px rgba(0, 0, 0, .12), 0 1px rgba(255, 255, 255, 0.12); + box-shadow: inset 0.08334em 0.08334em rgba(0, 0, 0, .12), 0 0.08334em rgba(255, 255, 255, 0.12); } #MyExpander button + label + spinbutton { margin: 0.25em 0; /* Needed for Reset & and Auto button height*/ @@ -1808,7 +1797,7 @@ entry:focus > selection { .view entry { background-color: @bg-dark-grey; margin: 0 -2px; - border: 1px solid @accent-color; + border: 0.08334em solid @accent-color; box-shadow: none; } /* end*/ @@ -1822,14 +1811,14 @@ entry:focus > selection { border-radius: 0.41667em 0.41667em 0 0; border: none; padding: 0; - box-shadow: 0 0.25em 0.75em 1px rgba(0, 0, 0, 0.5), 0 0 0 1px @bg-dark-grey; + box-shadow: 0 0.25em 0.75em 0.08334em rgba(0, 0, 0, 0.5), 0 0 0 0.08334em @bg-dark-grey; margin: 0.83334em; } headerbar { background-color: shade(@winHeaderbar,1.12); - box-shadow: inset 0 1px rgba(200,200,200,.13); + box-shadow: inset 0 0.08334em rgba(200,200,200,.13); background-image: linear-gradient(shade(@winHeaderbar,1.14), shade(@winHeaderbar,.86)); - border-bottom: 1px solid @bg-dark-grey; + border-bottom: 0.08334em solid @bg-dark-grey; border-radius: 0.41667em 0.41667em 0 0; min-height: 2.16667em; padding: 0.08334em 0.41667em 0; @@ -1851,7 +1840,7 @@ headerbar .title{ /* Window in background */ :not(.popup):not(tooltip) > decoration:backdrop { - box-shadow: 0 0.25em 0.75em 1px rgba(0, 0, 0, 0.3), 0 0 0 1px @bg-dark-grey; + box-shadow: 0 0.25em 0.75em 0.08334em rgba(0, 0, 0, 0.3), 0 0 0 0.08334em @bg-dark-grey; } headerbar:backdrop { box-shadow: none; diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index e1a7e84c2..679a8ed13 100644 --- a/rtdata/themes/TooWaBlue-GTK3-20_.css +++ b/rtdata/themes/TooWaBlue-GTK3-20_.css @@ -2,7 +2,7 @@ This file is part of RawTherapee. Copyright (c) 2016-2017 TooWaBoo - Version 2.42 - requires RT 5.0 + Version 2.44 - requires RT 5.0 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -105,7 +105,7 @@ messagedialog { } tooltip { background-color: @bg-tooltip; - border: 1px solid @border-tooltip; + border: 0.08334em solid @border-tooltip; border-radius: 0.33334em; padding: 0; margin: 0; @@ -180,7 +180,7 @@ frame > border { dialog frame > border { padding: 0.5em; border-radius: 0; - border: 1px solid @border-color; + border: 0.08334em solid @border-color; background-color: transparent; margin: 0 -0.5em; } @@ -241,11 +241,11 @@ textview:selected, treeview:selected { } #RightNotebook > stack > :nth-child(3) treeview { - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; border-bottom: none; } -#PlacesPaned > :nth-child(1) treeview { +#PlacesPaned > box:nth-child(1) treeview { padding: 0.08334em 0 0.08334em 0.5em; -gtk-icon-style: symbolic; } @@ -275,15 +275,15 @@ textview:selected, treeview:selected { margin-bottom: 0.41667em; } -#PlacesPaned > box:nth-child(3) > :nth-child(2), +#PlacesPaned > box:nth-child(3) > box:nth-child(2), #PlacesPaned > box:nth-child(1) > :nth-child(1), #HistoryPanel > border, #Snapshots > box > :nth-child(1) { - padding: 1px; background-color: @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; } -/*Corrects the space for the snapshot view of the paned separator*/ +/*Corrects the space of the snapshot view to the paned separator*/ #Snapshots { margin-top: -0.33334em; } @@ -321,11 +321,11 @@ filechooser box { } filechooser > box > paned > box { - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; background-color: @bg-dark-grey; } filechooser placessidebar { - padding: 0 1px; + padding: 0 0.08334em; background-color: @bg-dark-grey; } @@ -362,7 +362,7 @@ filechooser list row:selected { } #HistogramArea, #HistogramRGBArea { - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; background-color: @bg-dark-grey; } @@ -372,7 +372,7 @@ filechooser list row:selected { margin: 0; border-color: @bg-light-grey; border-style: solid; - border-width: 0 0 0 1px; + border-width: 0 0 0 0.08334em; background-color: @bg-dark-grey; background-image: none; box-shadow: none; @@ -385,7 +385,7 @@ filechooser list row:selected { } #EditorLeftPaned #fullButton, #EditorLeftPaned #histButton { - border-width: 0 1px 0 0; + border-width: 0 0.08334em 0 0; } /*** end ***************************************************************************************/ @@ -467,8 +467,8 @@ menu separator { /*** PartialPaste ******************************************************************************/ #PartialPaste { - border-bottom: 1px solid @border-color; - border-top: 1px solid @border-color; + border-bottom: 0.08334em solid @border-color; + border-top: 0.08334em solid @border-color; padding-top: 0.5em; padding-bottom: 0.5em; } @@ -518,10 +518,10 @@ scrollbar:not(.overlay-indicator) { background-color: rgba(0,0,0,.30); } scrollbar:not(.overlay-indicator).horizontal { - border-width: 0 1px 1px 1px; + border-width: 0 0.08334em 0.08334em 0.08334em; } scrollbar:not(.overlay-indicator).vertical { - border-width: 1px 1px 1px 0; + border-width: 0.08334em 0.08334em 0.08334em 0; } scrollbar:not(.overlay-indicator) slider { background-color: shade(@text-color, .9); @@ -593,7 +593,7 @@ scale slider { margin: calc(-0.33334em - 1px); border-radius: 0.83334em; background-image: linear-gradient(to bottom, shade (@accent-color4,1.15), shade (@accent-color4,.85)); - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; box-shadow: none; } scale slider:hover { @@ -603,14 +603,14 @@ scale slider:hover { scale trough { margin: 0.5em; /* has to be half of "scale slider / min-width min-height*/ background-color: @bg-scale-entry; - border-color: @bg-dark-grey; - box-shadow: inset 0 1px rgba(255, 255, 255, 0.11), 0 1px rgba(242, 242, 242, 0.11); + border: 0.08334em solid @bg-dark-grey; + box-shadow: inset 0 0.08334em rgba(255, 255, 255, 0.11), 0 0.08334em rgba(242, 242, 242, 0.11); border-radius: 0.5em; } scale:not(:disabled) trough highlight { background-color: @accent-color2; - border-color: @bg-dark-grey; - box-shadow: inset 0 1px shade(@accent-color2, 1.3); + border: 0.08334em solid @bg-dark-grey; + box-shadow: inset 0 0.08334em shade(@accent-color2, 1.3); border-radius: 0.5em; } @@ -671,7 +671,7 @@ progressbar.horizontal trough progress { #IopsPanel progressbar.horizontal trough { min-height: 0.5em; background-color: @bg-scale-entry; - border: 1px solid @bg-button-border; + border: 0.08334em solid @bg-button-border; margin-top: 0.25em; } #IopsPanel progressbar.horizontal trough progress { @@ -770,8 +770,9 @@ dialog notebook stack { #MainNotebook > stack { padding: 0.41667em; } -#MainNotebook > stack > :nth-child(2) > :nth-child(2) { - margin-bottom: 0.33334em; + +#MainNotebook > stack > :nth-child(2) > box:nth-child(3) { + margin-top: 0.41667em; } @@ -801,10 +802,11 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { background-color: @bg-grey; padding: 0; } -#RightNotebook > stack > :nth-child(3), -#RightNotebook > stack > :nth-child(4) { + +#RightNotebook > stack > :nth-child(3) > * > box, +#RightNotebook > stack > :nth-child(4) > * > box { padding: 0.5em; - border: 1px solid @bg-entry-border; + border: 0.08334em solid @bg-entry-border; } #PrefNotebook header { @@ -813,8 +815,9 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #AboutNotebook header { margin: -0.66667em -0.66667em 0.66667em; } -#AboutNotebook stack > * > * > * { - background-color: @dark-grey; + +#AboutNotebook stack text { + background-color: @bg-dark-grey; } /* All tool panels have a frame except for Meta which unlike the rest is a notebook itself. @@ -873,7 +876,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { margin: 0; } #MetaPanelNotebook .view { - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; padding: 0.16667em; margin: 0; } @@ -894,8 +897,8 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { min-width: 1.66667em; } #MetaPanelNotebook > stack > box > grid > button { - margin-top: 1px; - margin-bottom: 1px; + margin-top: 0.08334em; + margin-bottom: 0.08334em; min-height: 2.16667em; } @@ -908,7 +911,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { /*** File Browser ******************************************************************************/ #FileCatalog { background-color: @bg-image; - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; } #FileCatalog:selected { background-color: @accent-color3; @@ -949,7 +952,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { min-width: 1.66667em; margin: 0 0 0 -1.66667em; border-radius: 0 0.2em 0.2em 0; - border: 1px solid transparent; + border: 0.08334em solid transparent; padding: 0; } #ToolBarPanelFileBrowser entry, @@ -972,25 +975,17 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #BeforeAfterContainer { background-color: @bg-grey; - border: 1px solid @bg-dark-grey; + border: 0.08334em solid @bg-dark-grey; border-radius: 0; padding: 0; margin: 0.41667em 0; } -#BeforeAfterContainer > box:nth-child(1) frame { - background-color: @bg-image; - border-top: 1px solid @bg-dark-grey; - border-radius: 0; - padding: 0; - margin: -1px 0 0 0; +#BeforeAfterContainer > box:nth-child(2) > box:nth-child(2), +#BeforeAfterContainer > box:nth-child(1) > box:nth-child(2){ + border-top: 0.08334em solid @bg-dark-grey; } -#BeforeAfterContainer > box:nth-child(2) frame { - background-color: @bg-image; - border-top: 1px solid @bg-dark-grey; - border-left: 1px solid @bg-dark-grey; - border-radius: 0; - padding: 0; - margin: -1px 0 0 0; +#BeforeAfterContainer > box:nth-child(2){ + border-left: 0.08334em solid @bg-dark-grey; } #BeforeAfterContainer label { @@ -1000,8 +995,8 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { /* Small Lock Button */ #BeforeAfterContainer button { min-height: 1.66667em; - min-width: 1.66667em; - margin: 0.25em 0 0.33334em; + min-width: 1.75em; + margin: 0.25em; padding: 0 0 0 0.08334em; } /**/ @@ -1034,7 +1029,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { min-width: 0; margin: 0 0.16667em; padding: 0 0.16667em; - border: 1px solid transparent; + border: 0.08334em solid transparent; background-color: transparent; background-image: none; box-shadow: none; @@ -1042,13 +1037,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #EditorTopPanel > box > box > button:hover { background-color: transparent; background-image: none; - border: 1px solid transparent; + border: 0.08334em solid transparent; box-shadow: none; } #EditorTopPanel > box > box > button:checked { background-color: transparent; background-image: none; - border: 1px solid @bg-button-border; + border: 0.08334em solid @bg-button-border; box-shadow: none; } @@ -1077,13 +1072,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { } /**/ #MyExpander .drawingarea:not(.slider) { - border: 1px solid @bg-light-grey; + border: 0.08334em solid @bg-light-grey; } #MyExpander .slider, #MyExpander .drawingarea:nth-child(2) { background-image: linear-gradient(to bottom, shade (@accent-color4,1.15), shade (@accent-color4,.85)); background-color: @accent-color4; - border: 1px solid rgb(15,15,15); + border: 0.08334em solid rgb(15,15,15); } #MyExpander .drawingarea:disabled { background-color: shade(@bg-grey,.85); @@ -1114,7 +1109,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { /* Sub-tool (MyExpander) */ #ExpanderBox2 > box, #ExpanderBox2 > grid { background-color: transparent; - border: 1px solid @border-color; + border: 0.08334em solid @border-color; border-radius: 0; margin: 0; padding: 0.5em; @@ -1143,13 +1138,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { border: none; padding: 0; margin: 0; - box-shadow: 0 3px 9px 1px rgba(0, 0, 0, 0.50), 0 0 0 1px @bg-dark-grey; + box-shadow: 0 0.25em 0.75em 0.08334em rgba(0, 0, 0, 0.50), 0 0 0 0.08334em @bg-dark-grey; } menu { background-color: @bg-dark-grey; - border: 1px solid @accent-color; - padding: 1px; + border: 0.08334em solid @accent-color; + padding: 0.08334em; margin: 0; } menu > .top, @@ -1159,12 +1154,12 @@ menu > .bottom:hover { background-color: transparent; border: none; padding: 0.5em; - min-height: 2em; + min-height: 1.5em; } menuitem { padding: 0 0.33334em; - margin: 1px; + margin: 0.08334em; min-height: 2em; } menuitem:hover { @@ -1187,11 +1182,11 @@ entry > window > frame { } entry > window > frame > border { background-color: @bg-dark-grey; - padding: 1px; - border: 1px solid @accent-color; + padding: 0.08334em; + border: 0.08334em solid @accent-color; } .csd entry > window > frame > border { - margin: 1px; + margin: 0.08334em; } /* end */ @@ -1203,7 +1198,7 @@ entry > window > frame > border { } popover.background { background-color: @bg-dark-grey; - border-color: @accent-color; + border: 0.08334em solid @accent-color; border-radius: 0; padding: 0; margin: 0; @@ -1236,9 +1231,9 @@ button { margin: 0; padding: 0; /* x */ border-radius: 0.2em; - border: 1px solid @bg-button-border; + border: 0.08334em solid @bg-button-border; background-color: transparent; - box-shadow: inset 0 1px rgba(242, 242, 242, 0.1); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.1); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); } button.flat { @@ -1250,7 +1245,7 @@ button.text-button label { #MainNotebook > header > grid > button, button.flat { - border: 1px solid transparent; + border: 0.08334em solid transparent; box-shadow: none; background-image: none; background-color: transparent; @@ -1301,7 +1296,7 @@ scale + button.flat { button.flat:hover, button:hover { border-color: @bg-button-border; - box-shadow: inset 0 1px rgba(242, 242, 242, 0.1); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.1); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-hover; } @@ -1313,7 +1308,7 @@ button.flat:checked, button:active, button:checked { border-color: @bg-button-border; - box-shadow: inset 0 1px rgba(242, 242, 242, 0.08); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.08); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-active; } @@ -1322,7 +1317,7 @@ button:checked { button.Right, button.MiddleH { margin-left: 0.16667em; - border: 1px solid @bg-button-border; + border: 0.08334em solid @bg-button-border; } /**/ @@ -1364,9 +1359,10 @@ dialog combobox .combo, #MyExpander button:not(.flat).Left, #MyExpander button:not(.flat) + combobox, #MyExpander combobox + button:not(.flat), -#MyExpander combobox + combobox, +#MyExpander combobox + combobox +/* Crash #MyExpander button + label, -#MyExpander combobox + label { +#MyExpander combobox + label */ { margin-left: 0.16667em; } #MyExpander label + filechooserbutton, @@ -1453,7 +1449,7 @@ window .view button { background-image: none; box-shadow: none; min-height: 2em; - min-width: 1.33334em; + min-width: 1.33334em; padding: 0 0.33334em; } dialog .view button.text-button label, @@ -1462,20 +1458,21 @@ window .view button.text-button label { } window .view button { border: none; - border-bottom: 1px solid @border-color; + border-bottom: 0.08334em solid @border-color; } dialog .view button { - border-color: @border-color; + border: 0.08334em solid @border-color; } -.view button:checked label, .view button:checked, -.view button:hover:not(:active) label, .view button:hover:not(:active) { - color: @headline-hl; background-image: none; background-color: @bg-list-hover; } +.view button:checked label, +.view button:hover:not(:active) label { + color: @headline-hl; +} dialog .view header button:not(:last-child):not(:only-child), window .view header button:not(:last-child):not(:only-child), @@ -1517,7 +1514,7 @@ window .view header button, popover button.text-button { background-color: @bg-dark-grey; background-image: none; - border: 1px solid @border-color; + border: 0.08334em solid @border-color; box-shadow: none; background-image: none; margin: 0; @@ -1559,7 +1556,7 @@ headerbar button.titlebutton image { headerbar button.titlebutton { margin: 0 0 0 0.33334em; background-image: none; - border: 1px solid transparent; + border: 0.08334em solid transparent; background-color: transparent; box-shadow: none; min-width: 1.55em; @@ -1582,14 +1579,14 @@ messagedialog headerbar button.titlebutton { #MainNotebook tab #CloseButton:hover, headerbar button.titlebutton:hover{ border-color: rgba(0,0,0,.8); - box-shadow: inset 0 1px rgba(242, 242, 242, 0.11); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.11); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: rgba(128, 128, 128,.20); } #MainNotebook > header > grid > button:active, headerbar button.titlebutton:active{ border-color: rgba(0,0,0,.8); - box-shadow: inset 0 1px rgba(242, 242, 242, 0.15); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.15); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: rgba(128, 128, 128,.40); } @@ -1597,13 +1594,13 @@ headerbar button.titlebutton:active{ headerbar button.titlebutton.close:hover{ border-color: rgba(0,0,0,.8); background-image: linear-gradient(to bottom, rgb(180,0,0), rgb(160,0,0) 40%, rgb(130,0,0)); - box-shadow: inset 0 1px rgba(242, 242, 242, 0.32); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.32); } #MainNotebook tab #CloseButton:active, headerbar button.titlebutton.close:active{ border-color: rgba(0,0,0,.8); background-image: linear-gradient(to bottom, rgb(215,0,0), rgb(185,0,0) 40%, rgb(150,0,0)); - box-shadow: inset 0 1px rgba(242, 242, 242, 0.4); + box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.4); } /**/ @@ -1642,14 +1639,6 @@ checkbutton label { check { border-radius: 0.16667em; } -check:checked { - padding: 0 2px 0 0; - min-width: calc(1.16667em - 2px); -} -check:indeterminate { - min-width: 1.16667em; - padding: 0; -} radio{ border-radius: 1.16667em; @@ -1676,7 +1665,7 @@ frame > checkbutton check{ } #PrefNotebook stack > box:nth-child(3) checkbutton, #PrefNotebook stack > box:nth-child(4) checkbutton { - min-height: 2em; + min-height: 1.83334em; } #PrefNotebook radiobutton { min-height: 2em; @@ -1696,8 +1685,8 @@ entry { min-height: 1.66667em; min-width: 0; border-radius: 0.2em; - box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242, 242, 242, 0.1); - border: 1px solid @bg-entry-border; + box-shadow: inset 0.08334em 0.08334em rgba(0, 0, 0, 0.08), 0 0.08334em rgba(242, 242, 242, 0.1); + border: 0.08334em solid @bg-entry-border; background-color: @bg-scale-entry; } @@ -1708,8 +1697,8 @@ spinbutton { min-width: 0; border-radius: 0.2em; background-color: @bg-scale-entry; - border: 1px solid @bg-entry-border; - box-shadow: inset 1px 1px rgba(0, 0, 0, 0.08), 0 1px rgba(242, 242, 242, 0.1); + border: 0.08334em solid @bg-entry-border; + box-shadow: inset 0.08334em 0.08334em rgba(0, 0, 0, 0.08), 0 0.08334em rgba(242, 242, 242, 0.1); } #MyExpander spinbutton { @@ -1720,9 +1709,9 @@ spinbutton { border-top-left-radius: 1.83334em; border-bottom-left-radius: 1.83334em; background-color: shade(@bg-grey, 1.33); - border: 1px solid @bg-button-border; + border: 0.08334em solid @bg-button-border; color: @text-tbEntry; - box-shadow: inset 1px 1px rgba(0, 0, 0, .12), 0 1px rgba(255, 255, 255, 0.12); + box-shadow: inset 0.08334em 0.08334em rgba(0, 0, 0, .12), 0 0.08334em rgba(255, 255, 255, 0.12); } #MyExpander button + label + spinbutton { margin: 0.25em 0; /* Needed for Reset & and Auto button height*/ @@ -1808,7 +1797,7 @@ entry:focus > selection { .view entry { background-color: @bg-dark-grey; margin: 0 -2px; - border: 1px solid @accent-color; + border: 0.08334em solid @accent-color; box-shadow: none; } /* end*/ @@ -1822,14 +1811,14 @@ entry:focus > selection { border-radius: 0.41667em 0.41667em 0 0; border: none; padding: 0; - box-shadow: 0 0.25em 0.75em 1px rgba(0, 0, 0, 0.5), 0 0 0 1px @bg-dark-grey; + box-shadow: 0 0.25em 0.75em 0.08334em rgba(0, 0, 0, 0.5), 0 0 0 0.08334em @bg-dark-grey; margin: 0.83334em; } headerbar { background-color: shade(@winHeaderbar,1.12); - box-shadow: inset 0 1px rgba(200,200,200,.13); + box-shadow: inset 0 0.08334em rgba(200,200,200,.13); background-image: linear-gradient(shade(@winHeaderbar,1.14), shade(@winHeaderbar,.86)); - border-bottom: 1px solid @bg-dark-grey; + border-bottom: 0.08334em solid @bg-dark-grey; border-radius: 0.41667em 0.41667em 0 0; min-height: 2.16667em; padding: 0.08334em 0.41667em 0; @@ -1851,7 +1840,7 @@ headerbar .title{ /* Window in background */ :not(.popup):not(tooltip) > decoration:backdrop { - box-shadow: 0 0.25em 0.75em 1px rgba(0, 0, 0, 0.3), 0 0 0 1px @bg-dark-grey; + box-shadow: 0 0.25em 0.75em 0.08334em rgba(0, 0, 0, 0.3), 0 0 0 0.08334em @bg-dark-grey; } headerbar:backdrop { box-shadow: none; From 8889d626bfb1c6bed1ade47724efb4939b1c3e83 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 17 Feb 2017 21:43:33 +0100 Subject: [PATCH 12/15] use RT's jpeg_memory_src instead of jpeg_mem_src from jpegib jpeg_mem_src was introduced in libjpeg8, so it might not be available --- rtengine/dcraw.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 6fb2ce8c1..3584b7908 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -9,7 +9,7 @@ /*RT*/#define NO_JASPER /*RT*/#define LOCALTIME /*RT*/#define DJGPP -/*RT*/#include +/*RT*/#include "jpeg.h" #include "opthelper.h" @@ -2707,7 +2707,7 @@ void CLASS lossy_dng_load_raw() if (tile_length < INT_MAX) fseek (ifp, get4(), SEEK_SET); /*RT jpeg_stdio_src (&cinfo, ifp); */ - /*RT*/jpeg_mem_src(&cinfo, fdata(ftell(ifp), ifp), ifp->size - ftell(ifp)); + /*RT*/jpeg_memory_src(&cinfo, fdata(ftell(ifp), ifp), ifp->size - ftell(ifp)); jpeg_read_header (&cinfo, TRUE); jpeg_start_decompress (&cinfo); buf = (*cinfo.mem->alloc_sarray) @@ -2727,7 +2727,7 @@ void CLASS lossy_dng_load_raw() jpeg_destroy_decompress (&cinfo); maximum = 0xffff; } -// RT #endif +/*RT #endif */ void CLASS kodak_dc120_load_raw() { From ae45e3f86edff638eae3ed9da054b98e32ed60f7 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sat, 18 Feb 2017 13:55:43 +0100 Subject: [PATCH 13/15] Update Deutsch locale AWB temp bias --- rtdata/languages/Deutsch | 243 +++++++++++++++++++-------------------- 1 file changed, 120 insertions(+), 123 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 277b6782e..78896314b 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -33,6 +33,8 @@ #32 2016-12-29 Erweiterung/Korrekturen (TooWaBoo) RT4.2.1464 #33 2017-01-04 Erweiterung/Korrekturen/Soft-Proofing (TooWaBoo) RT4.2.1477 #34 2017-01-07 IPTC (TooWaBoo) RT4.2.1492 +#35 2017-02-18 AWB bias (TooWaBoo) + ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -150,13 +152,13 @@ FILEBROWSER_OPENDEFAULTVIEWER;Windows Standard-Betracher (stapelverarbeitet) FILEBROWSER_PARTIALPASTEPROFILE;Profil selektiv einfügen FILEBROWSER_PASTEPROFILE;Profil einfügen FILEBROWSER_POPUPCANCELJOB;Job abbrechen -FILEBROWSER_POPUPCOLORLABEL;Farbmarkierung FILEBROWSER_POPUPCOLORLABEL0;Markierung: Ohne FILEBROWSER_POPUPCOLORLABEL1;Markierung: Rot FILEBROWSER_POPUPCOLORLABEL2;Markierung: Gelb FILEBROWSER_POPUPCOLORLABEL3;Markierung: Grün FILEBROWSER_POPUPCOLORLABEL4;Markierung: Blau FILEBROWSER_POPUPCOLORLABEL5;Markierung: Violett +FILEBROWSER_POPUPCOLORLABEL;Farbmarkierung FILEBROWSER_POPUPCOPYTO;Kopieren nach... FILEBROWSER_POPUPFILEOPERATIONS;Dateioperationen FILEBROWSER_POPUPMOVEEND;An das Ende der Warteschlange verschieben @@ -167,13 +169,13 @@ FILEBROWSER_POPUPOPENINEDITOR;Im Editor öffnen FILEBROWSER_POPUPPROCESS;Zur Warteschlange hinzufügen FILEBROWSER_POPUPPROCESSFAST;Zur Warteschlange hinzufügen (Schnelles Exportieren) FILEBROWSER_POPUPPROFILEOPERATIONS;Profiloperationen -FILEBROWSER_POPUPRANK;Bewertung FILEBROWSER_POPUPRANK0;Nicht bewertet FILEBROWSER_POPUPRANK1;Bewertung 1 * FILEBROWSER_POPUPRANK2;Bewertung 2 ** FILEBROWSER_POPUPRANK3;Bewertung 3 *** FILEBROWSER_POPUPRANK4;Bewertung 4 **** FILEBROWSER_POPUPRANK5;Bewertung 5 ***** +FILEBROWSER_POPUPRANK;Bewertung FILEBROWSER_POPUPREMOVE;Löschen FILEBROWSER_POPUPREMOVEINCLPROC;Löschen (auch Resultate der Stapelverarbeitung) FILEBROWSER_POPUPRENAME;Umbenennen @@ -265,105 +267,6 @@ HISTORY_CUSTOMCURVE;Benutzerdefiniert HISTORY_DELSNAPSHOT;Entfernen HISTORY_FROMCLIPBOARD;Aus der Zwischenablage HISTORY_LABEL;Historie -HISTORY_MSG_1;(Bild geladen) -HISTORY_MSG_2;(Profil geladen) -HISTORY_MSG_3;(Profil geändert) -HISTORY_MSG_4;(Historie durchsuchen) -HISTORY_MSG_5;(Belichtung) - Helligkeit -HISTORY_MSG_6;(Belichtung) - Kontrast -HISTORY_MSG_7;(Belichtung)\nSchwarzwert -HISTORY_MSG_8;(Belichtung)\nBelichtungskorrektur -HISTORY_MSG_9;(Belichtung)\nLichterkompression -HISTORY_MSG_10;(Belichtung)\nSchattenkompression -HISTORY_MSG_11;(Belichtung)\nTonwertkurve 1 -HISTORY_MSG_12;(Belichtung) - Auto -HISTORY_MSG_13;(Belichtung) - Clip-Faktor -HISTORY_MSG_14;(L*a*b*) - Helligkeit -HISTORY_MSG_15;(L*a*b*) - Kontrast -HISTORY_MSG_16;- -HISTORY_MSG_17;- -HISTORY_MSG_18;- -HISTORY_MSG_19;(L*a*b*) - L-Kurve -HISTORY_MSG_20;(Schärfung) -HISTORY_MSG_21;(Schärfung) - USM\nRadius -HISTORY_MSG_22;(Schärfung) - USM\nIntensität -HISTORY_MSG_23;(Schärfung) - USM\nSchwelle -HISTORY_MSG_24;(Schärfung) - USM\nNur Kanten schärfen -HISTORY_MSG_25;(Schärfung) - USM\nKantenschärfung\nRadius -HISTORY_MSG_26;(Schärfung) - USM\nKantenschärfung\nKantentoleranz -HISTORY_MSG_27;(Schärfung) - USM\nHalokontrolle -HISTORY_MSG_28;(Schärfung) - USM\nHalokontrolle - Intensität -HISTORY_MSG_29;(Schärfung) - Methode -HISTORY_MSG_30;(Schärfung) - RLD\nRadius -HISTORY_MSG_31;(Schärfung) - RLD\nIntensität -HISTORY_MSG_32;(Schärfung) - RLD\nDämpfung -HISTORY_MSG_33;(Schärfung) - RLD\nIterationen -HISTORY_MSG_34;(Objektivkorrektur)\nProfil - Verzeichnung -HISTORY_MSG_35;(Objektivkorrektur)\nProfil - Vignettierung -HISTORY_MSG_36;(Objektivkorrektur)\nProfil - CA-Korrektur -HISTORY_MSG_37;(Belichtung) - Auto -HISTORY_MSG_38;(Weißabgleich) - Methode -HISTORY_MSG_39;(Weißabgleich)\nFarbtemperatur -HISTORY_MSG_40;(Weißabgleich) - Tönung -HISTORY_MSG_41;(Belichtung)\nTonwertkurve 1 - Modus -HISTORY_MSG_42;(Belichtung)\nTonwertkurve 2 -HISTORY_MSG_43;(Belichtung)\nTonwertkurve 2 - Modus -HISTORY_MSG_44;(Luminanz-Rauschfilter)\nRadius -HISTORY_MSG_45;(Luminanz-Rauschfilter)\nKantentoleranz -HISTORY_MSG_46;(Farb-Rauschfilter) -HISTORY_MSG_47;(ICC Lichter aus Matrix\nüberlagern) -HISTORY_MSG_48;(Farbmanagement)\nEingangsfarbprofil\nDCP - Tonwertkurve -HISTORY_MSG_49;(Farbmanagement)\nEingangsfarbprofil\nDCP - Illumination -HISTORY_MSG_50;(Schatten/Lichter) -HISTORY_MSG_51;(Schatten/Lichter)\nLichter -HISTORY_MSG_52;(Schatten/Lichter)\nSchatten -HISTORY_MSG_53;(Schatten/Lichter)\nTonwertbreite Lichter -HISTORY_MSG_54;(Schatten/Lichter)\nTonwertbreite Schatten -HISTORY_MSG_55;(Schatten/Lichter)\nLokaler Kontrast -HISTORY_MSG_56;(Schatten/Lichter)\nRadius -HISTORY_MSG_57;(Grobe Drehung) -HISTORY_MSG_58;(Horizontal spiegeln) -HISTORY_MSG_59;(Vertikal spiegeln) -HISTORY_MSG_60;(Objektivkorrektur)\nDrehen - Winkel -HISTORY_MSG_61;(Objektivkorrektur)\nAuto-Füllen -HISTORY_MSG_62;(Objektivkorrektur)\nVerzeichnung -HISTORY_MSG_63;(Schnappschuss\nausgewählt) -HISTORY_MSG_64;(Ausschnitt) -HISTORY_MSG_65;(Objektivkorrektur)\nFarbsaum entfernen -HISTORY_MSG_66;(Belichtung)\nLichter rekonstruieren -HISTORY_MSG_67;(Belichtung)\nLichterkompression\nUmfang -HISTORY_MSG_68;(Belichtung)\nLichterkompression\nMethode -HISTORY_MSG_69;(Farbmanagement)\nArbeitsfarbraum -HISTORY_MSG_70;(Farbmanagement)\nAusgabeprofil -HISTORY_MSG_71;(Farbmanagement)\nEingangsfarbprofil -HISTORY_MSG_72;(Objektivkorrektur)\nVignettierung - Intensität -HISTORY_MSG_73;(RGB-Kanalmixer) -HISTORY_MSG_74;(Skalieren) - Maßstab -HISTORY_MSG_75;(Skalieren) - Methode -HISTORY_MSG_76;(Exif Metadaten) -HISTORY_MSG_77;(IPTC Metadaten) -HISTORY_MSG_78;- -HISTORY_MSG_79;(Skalieren) - Breite -HISTORY_MSG_80;(Skalieren) - Höhe -HISTORY_MSG_81;(Skalieren) -HISTORY_MSG_82;(Profil geändert) -HISTORY_MSG_83;(Schatten/Lichter)\nSchärfemaske -HISTORY_MSG_84;(Objektivkorrektur)\nPerspektive -HISTORY_MSG_85;(Objektivkorrektur)\nProfil -HISTORY_MSG_86;(RGB-Kurven)\nHelligkeitsmodus -HISTORY_MSG_87;(Impulsrauschred.) -HISTORY_MSG_88;(Impulsrauschred.)\nSchwelle -HISTORY_MSG_89;(Rauschreduzierung) -HISTORY_MSG_90;(Rauschreduzierung)\nLuminanz -HISTORY_MSG_91;(Rauschreduzierung)\nChrominanz (Master) -HISTORY_MSG_92;(Rauschreduzierung)\nChrominanz - Gamma -HISTORY_MSG_93;(Detailebenenkontrast)\nWert -HISTORY_MSG_94;(Detailebenenkontrast) -HISTORY_MSG_95;(L*a*b*) - Chromatizität -HISTORY_MSG_96;(L*a*b*) - a-Kurve -HISTORY_MSG_97;(L*a*b*) - b-Kurve -HISTORY_MSG_98;(Sensor-Matrix)\nFarbinterpolation\nMethode -HISTORY_MSG_99;(Vorverarbeitung)\nHot-Pixel-Filter HISTORY_MSG_100;(Belichtung) - Sättigung HISTORY_MSG_101;(HSV) - Farbton (H) HISTORY_MSG_102;(HSV) - Sättigung (S) @@ -374,6 +277,7 @@ HISTORY_MSG_106;(Farbsaum entfernen)\nRadius HISTORY_MSG_107;(Farbsaum entfernen)\nSchwelle HISTORY_MSG_108;(Belichtung)\nLichterkompression\nSchwelle HISTORY_MSG_109;(Skalieren) - Begrenzungsrahmen +HISTORY_MSG_10;(Belichtung)\nSchattenkompression HISTORY_MSG_110;(Skalieren) - Anwenden auf: HISTORY_MSG_111;(L*a*b*) - Farbverschiebung\nvermeiden HISTORY_MSG_112;--unused-- @@ -384,6 +288,7 @@ HISTORY_MSG_116;(Sensor Bayer-Matrix)\nFarbinterpolation\nDCB-Verbesserung HISTORY_MSG_117;(Sensor Bayer-Matrix)\nChromatische Aberration\nRot HISTORY_MSG_118;(Sensor Bayer-Matrix)\nChromatische Aberration\nBlau HISTORY_MSG_119;(Sensor Bayer-Matrix)\nVorverarbeitung\nZeilenrauschfilter +HISTORY_MSG_11;(Belichtung)\nTonwertkurve 1 HISTORY_MSG_120;(Sensor Bayer-Matrix)\nVorverarbeitung\nGrün-Ausgleich HISTORY_MSG_121;(Sensor Bayer-Matrix)\nChromatische Aberration\nAutomatische Korrektur HISTORY_MSG_122;(Dunkelbild)\nAutomatische Auswahl @@ -394,6 +299,7 @@ HISTORY_MSG_126;(Weißbild) - Datei HISTORY_MSG_127;(Weißbild)\nAutomatische Auswahl HISTORY_MSG_128;(Weißbild)\nUnschärferadius HISTORY_MSG_129;(Weißbild) - Unschärfetyp +HISTORY_MSG_12;(Belichtung) - Auto HISTORY_MSG_130;(Autom. Verzeichnung) HISTORY_MSG_131;(Rauschreduzierung)\nLuminanz HISTORY_MSG_132;(Rauschreduzierung)\nChrominanz @@ -404,6 +310,7 @@ HISTORY_MSG_136;(Farbmanagement)\nAusgabeprofil\nGradient (linear) HISTORY_MSG_137;(Sensor Bayer-Matrix)\nSchwarzpunkt - Grün 1 HISTORY_MSG_138;(Sensor Bayer-Matrix)\nSchwarzpunkt - Rot HISTORY_MSG_139;(Sensor Bayer-Matrix)\nSchwarzpunkt - Blau +HISTORY_MSG_13;(Belichtung) - Clip-Faktor HISTORY_MSG_140;(Sensor Bayer-Matrix)\nSchwarzpunkt - Grün 2 HISTORY_MSG_141;(Sensor Bayer-Matrix)\nSchwarzpunkt\nGrün-Werte angleichen HISTORY_MSG_142;(Kantenschärfung)\nIterationen @@ -414,6 +321,7 @@ HISTORY_MSG_146;(Kantenschärfung) HISTORY_MSG_147;(Kantenschärfung)\nNur Luminanz HISTORY_MSG_148;(Mikrokontrast) HISTORY_MSG_149;(Mikrokontrast)\n3×3-Matrix +HISTORY_MSG_14;(L*a*b*) - Helligkeit HISTORY_MSG_150;(Artefakt-/Rauschred.\nnach Farbinterpolation) HISTORY_MSG_151;(Dynamik) HISTORY_MSG_152;(Dynamik) - Pastelltöne @@ -424,6 +332,7 @@ HISTORY_MSG_156;(Dynamik)\nPastell und gesättigte\nTöne koppeln HISTORY_MSG_157;(Dynamik)\nPastell/gesättigte Töne\nSchwelle HISTORY_MSG_158;(Dynamikkompression)\nIntensität HISTORY_MSG_159;(Dynamikkompression)\nKantenschutz +HISTORY_MSG_15;(L*a*b*) - Kontrast HISTORY_MSG_160;(Dynamikkompression)\nFaktor HISTORY_MSG_161;(Dynamikkompression)\nIterationen HISTORY_MSG_162;(Dynamikkompression) @@ -434,6 +343,7 @@ HISTORY_MSG_166;(Belichtung) - Zurücksetzen HISTORY_MSG_167;(Sensor-Matrix)\nFarbinterpolation\nMethode HISTORY_MSG_168;(L*a*b*) - CC-Kurve HISTORY_MSG_169;(L*a*b*) - CH-Kurve +HISTORY_MSG_16;- HISTORY_MSG_170;(Dynamik) - HH-Kurve HISTORY_MSG_171;(L*a*b*) - LC-Kurve HISTORY_MSG_172;(L*a*b*) - LC-Kurve\nbeschränken @@ -444,6 +354,7 @@ HISTORY_MSG_176;(CIECAM02)\nBetrachtungsbed.\nUmgebung HISTORY_MSG_177;(CIECAM02) - Szene\nLeuchtstärke HISTORY_MSG_178;(CIECAM02)\nBetrachtungsbed.\nLeuchtstärke HISTORY_MSG_179;(CIECAM02) - Szene\nWeißpunktmodell +HISTORY_MSG_17;- HISTORY_MSG_180;(CIECAM02) - Helligkeit (J) HISTORY_MSG_181;(CIECAM02) - Buntheit (H) HISTORY_MSG_182;(CIECAM02) - Szene\nCAT02-Automatisch @@ -454,6 +365,7 @@ HISTORY_MSG_186;(CIECAM02) - Algorithmus HISTORY_MSG_187;(CIECAM02) - Hautfarbtöne\nschützen HISTORY_MSG_188;(CIECAM02) - Helligkeit (Q) HISTORY_MSG_189;(CIECAM02) - Kontrast (Q) +HISTORY_MSG_18;- HISTORY_MSG_190;(CIECAM02) - Sättigung (S) HISTORY_MSG_191;(CIECAM02) - Farbigkeit (M) HISTORY_MSG_192;(CIECAM02) - Farbton (H) @@ -464,6 +376,8 @@ HISTORY_MSG_196;(CIECAM02)\nTonwertkurve 2 - Modus HISTORY_MSG_197;(CIECAM02) - Farbkurve HISTORY_MSG_198;(CIECAM02) - Farbkurve\nModus HISTORY_MSG_199;(CIECAM02) - Ausgabe-\nHistogramm anzeigen +HISTORY_MSG_19;(L*a*b*) - L-Kurve +HISTORY_MSG_1;(Bild geladen) HISTORY_MSG_200;(CIECAM02)\nDynamikkompression HISTORY_MSG_201;(Rauschreduzierung)\nDelta-Chrominanz\nRot / Grün HISTORY_MSG_202;(Rauschreduzierung)\nDelta-Chrominanz\nBlau / Gelb @@ -473,6 +387,7 @@ HISTORY_MSG_205;(CIECAM02)\nBetrachtungsbed.\nHot / Bad-Pixelfilter HISTORY_MSG_206;(CIECAM02) - Szene\nAuto-Leuchtstärke HISTORY_MSG_207;(Farbsaum entfernen)\nFarbtonkurve HISTORY_MSG_208;(Weißabgleich)\nBlau / Rot-Korrektur +HISTORY_MSG_20;(Schärfung) HISTORY_MSG_210;(Grauverlaufsfilter)\nRotationswinkel HISTORY_MSG_211;(Grauverlaufsfilter) HISTORY_MSG_212;(Vignettierungsfilter)\nIntensität @@ -483,6 +398,7 @@ HISTORY_MSG_216;(Schwarz/Weiß) - Grün HISTORY_MSG_217;(Schwarz/Weiß) - Blau HISTORY_MSG_218;(Schwarz/Weiß)\nGamma - Rot HISTORY_MSG_219;(Schwarz/Weiß)\nGamma - Grün +HISTORY_MSG_21;(Schärfung) - USM\nRadius HISTORY_MSG_220;(Schwarz/Weiß)\nGamma - Blau HISTORY_MSG_221;(Schwarz/Weiß)\nFarbfilter HISTORY_MSG_222;(Schwarz/Weiß)\nVorgaben @@ -493,6 +409,7 @@ HISTORY_MSG_226;(Schwarz/Weiß) - Magenta HISTORY_MSG_227;(Schwarz/Weiß) - Violett HISTORY_MSG_228;(Schwarz/Weiß)\nLuminanzequalizer HISTORY_MSG_229;(Schwarz/Weiß)\nLuminanzequalizer +HISTORY_MSG_22;(Schärfung) - USM\nIntensität HISTORY_MSG_230;(Schwarz/Weiß) - Modus HISTORY_MSG_231;(Schwarz/Weiß)\n“Bevor“-Kurve HISTORY_MSG_232;(Schwarz/Weiß)\n“Bevor“-Kurventyp @@ -503,6 +420,7 @@ HISTORY_MSG_236;--unused-- HISTORY_MSG_237;(Schwarz/Weiß) - Mixer HISTORY_MSG_238;(Grauverlaufsfilter)\nBereich HISTORY_MSG_239;(Grauverlaufsfilter)\nIntensität +HISTORY_MSG_23;(Schärfung) - USM\nSchwelle HISTORY_MSG_240;(Grauverlaufsfilter)\nRotationsachsen HISTORY_MSG_241;(Vignettierungsfilter)\nBereich HISTORY_MSG_242;(Vignettierungsfilter)\nForm @@ -513,6 +431,7 @@ HISTORY_MSG_246;(L*a*b*) - CL-Kurve HISTORY_MSG_247;(L*a*b*) - LH-Kurve HISTORY_MSG_248;(L*a*b*) - HH-Kurve HISTORY_MSG_249;(Detailebenenkontrast)\nSchwelle +HISTORY_MSG_24;(Schärfung) - USM\nNur Kanten schärfen HISTORY_MSG_250;(Rauschreduzierung)\nVerbesserung HISTORY_MSG_251;(Schwarz/Weiß)\nAlgorithmus HISTORY_MSG_252;(Detailebenenkontrast)\nHautfarbtöne schützen @@ -523,6 +442,7 @@ HISTORY_MSG_256;(Rauschreduzierung)\nMediantyp HISTORY_MSG_257;(Farbanpassungen) HISTORY_MSG_258;(Farbanpassungen)\nFarbkurve HISTORY_MSG_259;(Farbanpassungen)\nDeckkraftkurve +HISTORY_MSG_25;(Schärfung) - USM\nKantenschärfung\nRadius HISTORY_MSG_260;(Farbanpassungen)\na*[b*]-Transparenz HISTORY_MSG_261;(Farbanpassungen)\nMethode HISTORY_MSG_262;(Farbanpassungen)\nb*-Transparenz @@ -533,6 +453,7 @@ HISTORY_MSG_266;(Farbanpassungen)\nMitten - Blau / Rot HISTORY_MSG_267;(Farbanpassungen)\nMitten - Cyan / Grün HISTORY_MSG_268;(Farbanpassungen)\nMitten - Gelb / Blau HISTORY_MSG_269;(Farbanpassungen)\nLichter - Blau / Rot +HISTORY_MSG_26;(Schärfung) - USM\nKantenschärfung\nKantentoleranz HISTORY_MSG_270;(Farbanpassungen)\nLichter - Cyan / Grün HISTORY_MSG_271;(Farbanpassungen)\nLichter - Gelb / Blau HISTORY_MSG_272;(Farbanpassungen)\nFarbausgleich @@ -543,6 +464,7 @@ HISTORY_MSG_276;(Farbanpassungen)\nDeckkraft HISTORY_MSG_277;--unused-- HISTORY_MSG_278;(Farbanpassungen)\nLuminanz schützen HISTORY_MSG_279;(Farbanpassungen)\nSchatten +HISTORY_MSG_27;(Schärfung) - USM\nHalokontrolle HISTORY_MSG_280;(Farbanpassungen)\nLichter HISTORY_MSG_281;(Farbanpassungen)\nSättigung schützen\nIntensität HISTORY_MSG_282;(Farbanpassungen)\nSättigung schützen\nSchwelle @@ -553,6 +475,7 @@ HISTORY_MSG_286;(Rauschreduzierung)\nMediantyp HISTORY_MSG_287;(Rauschreduzierung)\nMedianiterationen HISTORY_MSG_288;(Weißbild)\nKontrolle zu heller Bereiche HISTORY_MSG_289;(Weißbild)\nAuto-Kontrolle zu\nheller Bereiche +HISTORY_MSG_28;(Schärfung) - USM\nHalokontrolle - Intensität HISTORY_MSG_290;(Sensor X-Trans-Matrix)\nSchwarzpunkt - Rot HISTORY_MSG_291;(Sensor X-Trans-Matrix)\nSchwarzpunkt - Grün HISTORY_MSG_292;(Sensor X-Trans-Matrix)\nSchwarzpunkt - Blau @@ -563,6 +486,8 @@ HISTORY_MSG_296;(Rauschreduzierung)\nLuminanzkurve HISTORY_MSG_297;(Rauschreduzierung)\nQualität HISTORY_MSG_298;(Vorverarbeitung)\nDead-Pixel-Filter HISTORY_MSG_299;(Rauschreduzierung)\nChrominanzkurve +HISTORY_MSG_29;(Schärfung) - Methode +HISTORY_MSG_2;(Profil geladen) HISTORY_MSG_300;- HISTORY_MSG_301;(Rauschreduzierung)\nLuminanzkontrolle HISTORY_MSG_302;(Rauschreduzierung)\nChrominanz - Methode @@ -573,6 +498,7 @@ HISTORY_MSG_306;(Wavelet) - Einstellungen\nVerarbeitungsebene HISTORY_MSG_307;(Wavelet) - Einstellungen\nVerarbeitung HISTORY_MSG_308;(Wavelet) - Einstellungen\nVerarbeitungsrichtung HISTORY_MSG_309;(Wavelet)\nKantenschärfung\nDetails +HISTORY_MSG_30;(Schärfung) - RLD\nRadius HISTORY_MSG_310;(Wavelet) - Restbild\nHimmelsfarbtöne\nschützen HISTORY_MSG_311;(Wavelet) - Einstellungen\nAnzahl der Ebenen HISTORY_MSG_312;(Wavelet) - Restbild\nSchatten Schwelle @@ -583,6 +509,7 @@ HISTORY_MSG_316;(Wavelet) - Gamut\nHautfarbtöne schützen HISTORY_MSG_317;(Wavelet) - Gamut\nHautfarbton HISTORY_MSG_318;(Wavelet) - Kontrast\nLichterebenen HISTORY_MSG_319;(Wavelet) - Kontrast\nLichter-Luminanzbereich +HISTORY_MSG_31;(Schärfung) - RLD\nIntensität HISTORY_MSG_320;(Wavelet) - Kontrast\nSchatten-Luminanzbereich HISTORY_MSG_321;(Wavelet) - Kontrast\nSchattenebenen HISTORY_MSG_322;(Wavelet) - Gamut\nFarbverschiebungen\nvermeiden @@ -593,6 +520,7 @@ HISTORY_MSG_326;(Wavelet) - Farbe\nChrominanzethode HISTORY_MSG_327;(Wavelet) - Kontrast\nAnwenden auf HISTORY_MSG_328;(Wavelet) - Farbe\nFarb-Kontrast-\nVerknüpfung HISTORY_MSG_329;(Wavelet) - Tönung\nDeckkraft Rot / Grün +HISTORY_MSG_32;(Schärfung) - RLD\nDämpfung HISTORY_MSG_330;(Wavelet) - Tönung\nDeckkraft Blau / Gelb HISTORY_MSG_331;(Wavelet)\nKontrastebenen\nExtra HISTORY_MSG_332;(Wavelet)- -Einstellungen\nKachelgröße @@ -603,6 +531,7 @@ HISTORY_MSG_336;(Wavelet) - Restbild\nLichter Schwelle HISTORY_MSG_337;(Wavelet) - Restbild\nHimmelsfarbton HISTORY_MSG_338;(Wavelet)\nKantenschärfung\nRadius HISTORY_MSG_339;(Wavelet)\nKantenschärfung\nIntensität +HISTORY_MSG_33;(Schärfung) - RLD\nIterationen HISTORY_MSG_340;(Wavelet) - Einstellungen\nIntensität HISTORY_MSG_341;(Wavelet) - Einstellungen\nKantenperformance HISTORY_MSG_342;(Wavelet)\nKantenschärfung\nErste Ebene @@ -613,6 +542,7 @@ HISTORY_MSG_346;(Wavelet)\nKantenschärfung\nLokale Kontrastmethode HISTORY_MSG_347;(Wavelet)\nRauschreduzierung\nEbene 1 HISTORY_MSG_348;(Wavelet)\nRauschreduzierung\nEbene 2 HISTORY_MSG_349;(Wavelet)\nRauschreduzierung\nEbene 3 +HISTORY_MSG_34;(Objektivkorrektur)\nProfil - Verzeichnung HISTORY_MSG_350;(Wavelet)\nKantenschärfung\nKantenerkennung HISTORY_MSG_351;(Wavelet) - Restbild\nHH-Kurve HISTORY_MSG_352;(Wavelet) - Einstellungen\nHintergrund @@ -623,6 +553,7 @@ HISTORY_MSG_356;(Wavelet)\nKantenschärfung\nSchwelle hoch HISTORY_MSG_357;(Wavelet)\nRauschreduzierung\nSchärfung verknüpfen HISTORY_MSG_358;(Wavelet) - Gamut\nKontrastkurve HISTORY_MSG_359;(Vorverarbeitung)\nHot / Dead-Pixel-Filter\nSchwelle +HISTORY_MSG_35;(Objektivkorrektur)\nProfil - Vignettierung HISTORY_MSG_360;(Dynamikkompression)\nGamma HISTORY_MSG_361;(Wavelet) - Endretusche\nFarbausgleich HISTORY_MSG_362;(Wavelet) - Restbild\nKompression @@ -633,6 +564,7 @@ HISTORY_MSG_366;(Wavelet) - Restbild\nGammakompression HISTORY_MSG_367;(Wavelet) - Endretusche\n"Danach"-Kontrastkurve HISTORY_MSG_368;(Wavelet) - Endretusche\nKontrastausgleichskurve HISTORY_MSG_369;(Wavelet) - Endretusche\nKontrastmethode +HISTORY_MSG_36;(Objektivkorrektur)\nProfil - CA-Korrektur HISTORY_MSG_370;(Wavelet) - Endretusche\nLokale Kontrastkurve HISTORY_MSG_371;(Skalieren) - Schärfen HISTORY_MSG_372;(Skalieren) - Schärfen\nUSM - Radius @@ -643,6 +575,7 @@ HISTORY_MSG_376;(Skalieren) - Schärfen\nUSM - Kantenschärfung\nRadius HISTORY_MSG_377;(Skalieren) - Schärfen\nUSM - Kantentoleranz HISTORY_MSG_378;(Skalieren) - Schärfen\nUSM - Halokontrolle HISTORY_MSG_379;(Skalieren) - Schärfen\nUSM - Halokontrolle\nIntensität +HISTORY_MSG_37;(Belichtung) - Auto HISTORY_MSG_380;(Skalieren) - Schärfen\nMethode HISTORY_MSG_381;(Skalieren) - Schärfen\nRLD - Radius HISTORY_MSG_382;(Skalieren) - Schärfen\nRLD - Intensität @@ -653,6 +586,7 @@ HISTORY_MSG_386;(Wavelet) - Restbild\nFarbausgleich\nLichter Grün / Cyan HISTORY_MSG_387;(Wavelet) - Restbild\nFarbausgleich\nLichter Blau / Gelb HISTORY_MSG_388;(Wavelet) - Restbild\nFarbausgleich\nMitten Grün / Cyan HISTORY_MSG_389;(Wavelet) - Restbild\nFarbausgleich\nMitten Blau / Gelb +HISTORY_MSG_38;(Weißabgleich) - Methode HISTORY_MSG_390;(Wavelet) - Restbild\nFarbausgleich\nSchatten Grün / Cyan HISTORY_MSG_391;(Wavelet) - Restbild\nFarbausgleich\nSchatten Blau / Gelb HISTORY_MSG_392;(Wavelet) - Restbild\nFarbausgleich @@ -663,6 +597,8 @@ HISTORY_MSG_396;(Wavelet) - Kontrast HISTORY_MSG_397;(Wavelet) - Farbe HISTORY_MSG_398;(Wavelet)\nKantenschärfung HISTORY_MSG_399;(Wavelet) - Restbild +HISTORY_MSG_39;(Weißabgleich)\nFarbtemperatur +HISTORY_MSG_3;(Profil geändert) HISTORY_MSG_400;(Wavelet) - Endretusche HISTORY_MSG_401;(Wavelet) - Tönung HISTORY_MSG_402;(Wavelet)\nRauschreduzierung @@ -673,6 +609,7 @@ HISTORY_MSG_406;(Wavelet)\nKantenschärfung\nBenachbarte Pixel HISTORY_MSG_407;(Retinex) - Methode HISTORY_MSG_408;(Retinex) - Radius HISTORY_MSG_409;(Retinex) - Einstellungen\nKontrast +HISTORY_MSG_40;(Weißabgleich) - Tönung HISTORY_MSG_410;(Retinex) - Einstellungen\nVerstärkung und Ausgleich\nAusgleich HISTORY_MSG_411;(Retinex) - Intensität HISTORY_MSG_412;(Retinex) - Einstellungen\nDynamikkompression\nGaußscher Gradient @@ -683,6 +620,7 @@ HISTORY_MSG_416;(Retinex) HISTORY_MSG_417;(Retinex) - Einstellungen\nTransmission\nMedianfilter HISTORY_MSG_418;(Retinex) - Einstellungen\nTransmission\nSchwelle HISTORY_MSG_419;(Retinex) - Farbraum +HISTORY_MSG_41;(Belichtung)\nTonwertkurve 1 - Modus HISTORY_MSG_420;(Retinex) - Einstellungen\nHSL-Kurve HISTORY_MSG_421;(Retinex) - Einstellungen\nKorrekturen\nGammakorrektur HISTORY_MSG_422;(Retinex) - Einstellungen\nGamma @@ -693,6 +631,7 @@ HISTORY_MSG_426;(Retinex) - Einstellungen\nKorrekturen - Farbton (H) HISTORY_MSG_427;Ausgabe-Rendering-Intent HISTORY_MSG_428;Monitor-Rendering-Intent HISTORY_MSG_429;(Retinex) - Einstellungen\nDynamikkompression\nIterationen +HISTORY_MSG_42;(Belichtung)\nTonwertkurve 2 HISTORY_MSG_430;(Retinex) - Einstellungen\nDynamikkompression\nTransmission Gradient HISTORY_MSG_431;(Retinex) - Einstellungen\nDynamikkompression\nIntensität Gradient HISTORY_MSG_432;(Retinex) - Maske\nLichter @@ -703,10 +642,74 @@ HISTORY_MSG_436;(Retinex) - Maske\nRadius HISTORY_MSG_437;(Retinex) - Maske\nMethode HISTORY_MSG_438;(Retinex) - Maske\nKurve HISTORY_MSG_439;(Retinex) - Vorschau +HISTORY_MSG_43;(Belichtung)\nTonwertkurve 2 - Modus HISTORY_MSG_440;(Detailebenenkontrast)\nProzessreihenfolge HISTORY_MSG_441;(Retinex) - Einstellungen\nVerstärkung und Ausgleich\nTransmissionsverstärkung HISTORY_MSG_442;(Retinex) - Einstellungen\nTransmission - Skalierung HISTORY_MSG_443;(Farbmanagement)\nAusgabeprofil\nSchwarzpunkt-Kompensation +HISTORY_MSG_444;(Weißabgleich)\nAWB-Temperatur-Korrektur +HISTORY_MSG_44;(Luminanz-Rauschfilter)\nRadius +HISTORY_MSG_45;(Luminanz-Rauschfilter)\nKantentoleranz +HISTORY_MSG_46;(Farb-Rauschfilter) +HISTORY_MSG_47;(ICC Lichter aus Matrix\nüberlagern) +HISTORY_MSG_48;(Farbmanagement)\nEingangsfarbprofil\nDCP - Tonwertkurve +HISTORY_MSG_49;(Farbmanagement)\nEingangsfarbprofil\nDCP - Illumination +HISTORY_MSG_4;(Historie durchsuchen) +HISTORY_MSG_50;(Schatten/Lichter) +HISTORY_MSG_51;(Schatten/Lichter)\nLichter +HISTORY_MSG_52;(Schatten/Lichter)\nSchatten +HISTORY_MSG_53;(Schatten/Lichter)\nTonwertbreite Lichter +HISTORY_MSG_54;(Schatten/Lichter)\nTonwertbreite Schatten +HISTORY_MSG_55;(Schatten/Lichter)\nLokaler Kontrast +HISTORY_MSG_56;(Schatten/Lichter)\nRadius +HISTORY_MSG_57;(Grobe Drehung) +HISTORY_MSG_58;(Horizontal spiegeln) +HISTORY_MSG_59;(Vertikal spiegeln) +HISTORY_MSG_5;(Belichtung) - Helligkeit +HISTORY_MSG_60;(Objektivkorrektur)\nDrehen - Winkel +HISTORY_MSG_61;(Objektivkorrektur)\nAuto-Füllen +HISTORY_MSG_62;(Objektivkorrektur)\nVerzeichnung +HISTORY_MSG_63;(Schnappschuss\nausgewählt) +HISTORY_MSG_64;(Ausschnitt) +HISTORY_MSG_65;(Objektivkorrektur)\nFarbsaum entfernen +HISTORY_MSG_66;(Belichtung)\nLichter rekonstruieren +HISTORY_MSG_67;(Belichtung)\nLichterkompression\nUmfang +HISTORY_MSG_68;(Belichtung)\nLichterkompression\nMethode +HISTORY_MSG_69;(Farbmanagement)\nArbeitsfarbraum +HISTORY_MSG_6;(Belichtung) - Kontrast +HISTORY_MSG_70;(Farbmanagement)\nAusgabeprofil +HISTORY_MSG_71;(Farbmanagement)\nEingangsfarbprofil +HISTORY_MSG_72;(Objektivkorrektur)\nVignettierung - Intensität +HISTORY_MSG_73;(RGB-Kanalmixer) +HISTORY_MSG_74;(Skalieren) - Maßstab +HISTORY_MSG_75;(Skalieren) - Methode +HISTORY_MSG_76;(Exif Metadaten) +HISTORY_MSG_77;(IPTC Metadaten) +HISTORY_MSG_78;- +HISTORY_MSG_79;(Skalieren) - Breite +HISTORY_MSG_7;(Belichtung)\nSchwarzwert +HISTORY_MSG_80;(Skalieren) - Höhe +HISTORY_MSG_81;(Skalieren) +HISTORY_MSG_82;(Profil geändert) +HISTORY_MSG_83;(Schatten/Lichter)\nSchärfemaske +HISTORY_MSG_84;(Objektivkorrektur)\nPerspektive +HISTORY_MSG_85;(Objektivkorrektur)\nProfil +HISTORY_MSG_86;(RGB-Kurven)\nHelligkeitsmodus +HISTORY_MSG_87;(Impulsrauschred.) +HISTORY_MSG_88;(Impulsrauschred.)\nSchwelle +HISTORY_MSG_89;(Rauschreduzierung) +HISTORY_MSG_8;(Belichtung)\nBelichtungskorrektur +HISTORY_MSG_90;(Rauschreduzierung)\nLuminanz +HISTORY_MSG_91;(Rauschreduzierung)\nChrominanz (Master) +HISTORY_MSG_92;(Rauschreduzierung)\nChrominanz - Gamma +HISTORY_MSG_93;(Detailebenenkontrast)\nWert +HISTORY_MSG_94;(Detailebenenkontrast) +HISTORY_MSG_95;(L*a*b*) - Chromatizität +HISTORY_MSG_96;(L*a*b*) - a-Kurve +HISTORY_MSG_97;(L*a*b*) - b-Kurve +HISTORY_MSG_98;(Sensor-Matrix)\nFarbinterpolation\nMethode +HISTORY_MSG_99;(Vorverarbeitung)\nHot-Pixel-Filter +HISTORY_MSG_9;(Belichtung)\nLichterkompression HISTORY_NEWSNAPSHOT;Hinzufügen HISTORY_NEWSNAPSHOT_TOOLTIP;Taste: Alt + s HISTORY_SNAPSHOT;Schnappschuss @@ -986,15 +989,14 @@ PREFERENCES_FLATFIELDFOUND;Gefunden PREFERENCES_FLATFIELDSDIR;Weißbild-Verzeichnis PREFERENCES_FLATFIELDSHOTS;Aufnahmen PREFERENCES_FLATFIELDTEMPLATES;Vorlagen +PREFERENCES_FLUOF11;Fluoreszenz F11 PREFERENCES_FLUOF2;Fluoreszenz F2 PREFERENCES_FLUOF7;Fluoreszenz F7 -PREFERENCES_FLUOF11;Fluoreszenz F11 PREFERENCES_FORIMAGE;Für Bilddateien PREFERENCES_FORRAW;Für RAW-Dateien PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Gleiche Miniaturbildgröße in der Dateiverwaltung und dem Filmstreifen verwenden PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Unterschiedliche Miniaturbildgrößen benötigen mehr Verarbeitungszeit beim Wechsel zwischen der Dateiverwaltung und dem Editor PREFERENCES_GIMPPATH;GIMP Installationsverzeichnis -PREFERENCES_GREY;Yb-Luminanz (%) des Ausgabegerätes PREFERENCES_GREY05;Yb = 05 CIE L#30 PREFERENCES_GREY10;Yb = 10 CIE L#40 PREFERENCES_GREY15;Yb = 15 CIE L#45 @@ -1002,8 +1004,9 @@ PREFERENCES_GREY18;Yb = 18 CIE L#50 PREFERENCES_GREY23;Yb = 23 CIE L#55 PREFERENCES_GREY30;Yb = 30 CIE L#60 PREFERENCES_GREY40;Yb = 40 CIE L#70 -PREFERENCES_GREYSC;Szenen-Yb-Luminanz (%) +PREFERENCES_GREY;Yb-Luminanz (%) des Ausgabegerätes PREFERENCES_GREYSC18;Yb = 18 CIE L#49 +PREFERENCES_GREYSC;Szenen-Yb-Luminanz (%) PREFERENCES_GREYSCA;Automatisch PREFERENCES_HISTOGRAMPOSITIONLEFT;Histogramm linksseitig PREFERENCES_HISTOGRAMWORKING;Das Arbeitsprofil zur Darstellung des Haupthistogramms verwenden @@ -1437,9 +1440,9 @@ TP_DIRPYRDENOISE_MANU;Benutzerdefiniert TP_DIRPYRDENOISE_MED;Medianfilter TP_DIRPYRDENOISE_MEDMETHOD;Medianmethode TP_DIRPYRDENOISE_MEDTYPE;Mediantyp -TP_DIRPYRDENOISE_METHOD;Methode TP_DIRPYRDENOISE_METHOD11;Qualität TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Einstellung der Qualität der Rauschreduzierung.\nDie Einstellung “Hoch“ verbessert die Rausch-\nreduzierung auf Kosten der Verarbeitungszeit. +TP_DIRPYRDENOISE_METHOD;Methode TP_DIRPYRDENOISE_METHOD_TOOLTIP;Für RAW-Bilder kann entweder die RGB-\noder L*a*b*-Methode verwendet werden.\n\nFür andere Bilder wird unabhängig von der\nAuswahl immer die L*a*b*-Methode verwendet. TP_DIRPYRDENOISE_METM_TOOLTIP;Bei der Methode “Nur Luminanz“ und “L*a*b*“,\nwird der Medianfilter nach den Waveletschritten\nverarbeitet.\nBei RGB wird der Medianfilter am Ende der\nRauschreduzierung verarbeitet. TP_DIRPYRDENOISE_MET_TOOLTIP;Einen Medianfilter mit der gewünschten Fenstergröße auswählen.\nJe größer das Fenster, umso länger dauert die Verarbeitungszeit.\n\n3×3 weich: Nutzt 5 Pixel in einem 3×3-Pixelfenster.\n3×3: Nutzt 9 Pixel in einem 3×3-Pixelfenster.\n5×5 weich: Nutzt 13 Pixel in einem 5×5-Pixelfenster.\n5×5: Nutzt 25 Pixel in einem 5×5-Pixelfenster.\n7×7: Nutzt 49 Pixel in einem 7×7-Pixelfenster.\n9×9: Nutzt 81 Pixel in einem 9×9-Pixelfenster.\n\nManchmal ist das Ergebnis mit einem kleineren Fenster und mehreren Iterationen besser, als mit einem größeren und nur einer Iteration. @@ -1768,8 +1771,8 @@ TP_RETINEX_SLOPE;Gammasteigung TP_RETINEX_STRENGTH;Intensität TP_RETINEX_THRESHOLD;Schwelle TP_RETINEX_THRESHOLD_TOOLTIP;Limitiert den Bereich der Transmissionskurve. -TP_RETINEX_TLABEL;T: Min = %1, Max = %2\nT: Mittel = %3, Sigma = %4 TP_RETINEX_TLABEL2;T: Tmin = %1, Tmax = %2 +TP_RETINEX_TLABEL;T: Min = %1, Max = %2\nT: Mittel = %3, Sigma = %4 TP_RETINEX_TLABEL_TOOLTIP;Ergebnis der Transmissionskurve: Min, Max, Mittel und Sigma\nMin und Max hat Einfluss auf die Abweichung.\n\nTmin = Kleinster Wert der Transmissionskurve\nTmax = Größter Wert der Transmissionskurve TP_RETINEX_TRANF;Transmission TP_RETINEX_TRANSMISSION;Transmissionskurve @@ -1781,8 +1784,8 @@ TP_RETINEX_VIEW;Vorschau TP_RETINEX_VIEW_MASK;Maske TP_RETINEX_VIEW_METHOD_TOOLTIP;Standard: Normale Anzeige\n\nMaske: Zeigt die Maske an\n\nUnschärfemaske: Zeigt das Bild mit einem großen\nUnschärfemaskenradius an.\n\nTransmission-Auto / Fest: Zeigt die Transmissionskarte\nvor der Anwendung von Kontrast und Helligkeit an.\n\nACHTUNG: Die Maske zeigt nicht das Endergebnis, sondern\nverstärkt den Effekt um ihn besser beurteilen zu können. TP_RETINEX_VIEW_NONE;Standard -TP_RETINEX_VIEW_TRAN;Transmission - Auto TP_RETINEX_VIEW_TRAN2;Transmission - Fest +TP_RETINEX_VIEW_TRAN;Transmission - Auto TP_RETINEX_VIEW_UNSHARP;Unschärfemaske TP_RGBCURVES_BLUE;B TP_RGBCURVES_CHANNEL;Kanal @@ -1906,12 +1909,12 @@ TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Wendet eine Kontrasthelligkeitskurve\nam Ende TP_WAVELET_CURVEEDITOR_HH;HH TP_WAVELET_CURVEEDITOR_HH_TOOLTIP;Farbton als Funktion des Farbtons H = f(H) TP_WAVELET_DALL;Alle Richtungen -TP_WAVELET_DAUB;Kantenperformance +TP_WAVELET_DAUB10;D10 - mittel +TP_WAVELET_DAUB14;D14 - hoch TP_WAVELET_DAUB2;D2 - niedrig TP_WAVELET_DAUB4;D4 - Standard TP_WAVELET_DAUB6;D6 - Standard Plus -TP_WAVELET_DAUB10;D10 - mittel -TP_WAVELET_DAUB14;D14 - hoch +TP_WAVELET_DAUB;Kantenperformance TP_WAVELET_DAUB_TOOLTIP;Ändert den Daubechies-Koeffizienten:\nD4 = Standard\nD14 = Häufig bestes Ergebnis auf Kosten\nvon ca. 10% längerer Verarbeitungszeit.\n\nVerbessert die Kantenerkennung sowie die Qualität\nder ersten Waveletebene. Jedoch hängt die Qualität\nnicht ausschließlich mit diesem Koeffizienten zusammen\nund kann je nach Bild und Einsatz variieren. TP_WAVELET_DONE;Vertikal TP_WAVELET_DTHR;Diagonal @@ -1922,8 +1925,8 @@ TP_WAVELET_EDGCONT_TOOLTIP;Verschieben der Punkte nach links, verringert den Kon TP_WAVELET_EDGE;Kantenschärfung TP_WAVELET_EDGEAMPLI;Grundverstärkung TP_WAVELET_EDGEDETECT;Gradientenempfindlichkeit -TP_WAVELET_EDGEDETECTTHR;Schwelle niedrig (Rauschen) TP_WAVELET_EDGEDETECTTHR2;Schwelle hoch (Erkennung) +TP_WAVELET_EDGEDETECTTHR;Schwelle niedrig (Rauschen) TP_WAVELET_EDGEDETECTTHR_TOOLTIP;Schwelle der Kantenerkennung für feine Details.\nVerhindert die Schärfung von Rauschen. TP_WAVELET_EDGEDETECT_TOOLTIP;Verschieben des Reglers nach rechts erhöht die\nKantenempfindlichkeit. Die Einstellung wirkt sich\nauf den lokalen Kontrast, Kanteneinstellungen und\nRauschen aus. TP_WAVELET_EDGESENSI;Kantenempfindlichkeit @@ -1999,9 +2002,9 @@ TP_WAVELET_STREN;Intensität TP_WAVELET_STRENGTH;Intensität TP_WAVELET_SUPE;Extra TP_WAVELET_THR;Schatten Schwelle -TP_WAVELET_THRESHOLD;Lichterebenen TP_WAVELET_THRESHOLD2;Schattenebenen TP_WAVELET_THRESHOLD2_TOOLTIP;Legt die Ebene der Untergrenze (9 minus Wert)\nfür den Schatten-Luminanzbereich fest. Der\nmaximal mögliche Wert wird vom Wert der Lichter-\nebenen begrenzt.\n\nBeeinflussbare Ebenen: Untergrenze bis Ebene 9 +TP_WAVELET_THRESHOLD;Lichterebenen TP_WAVELET_THRESHOLD_TOOLTIP;Legt die Ebene der Obergrenze für den Lichter\n-Luminanzbereich fest. Der Wert begrenzt die\nmaximal möglichen Schattenebenen.\n\nBeeinflussbare Ebenen: Ebene 1 bis Obergrenze TP_WAVELET_THRH;Lichter Schwelle TP_WAVELET_TILESBIG;Große Kacheln @@ -2024,6 +2027,9 @@ TP_WBALANCE_FLASH55;Leica TP_WBALANCE_FLASH60;Standard, Canon, Pentax, Olympus TP_WBALANCE_FLASH65;Nikon, Panasonic, Sony, Minolta TP_WBALANCE_FLASH_HEADER;Blitz +TP_WBALANCE_FLUO10;F10 - Philips TL85 +TP_WBALANCE_FLUO11;F11 - Philips TL84 +TP_WBALANCE_FLUO12;F12 - Philips TL83 TP_WBALANCE_FLUO1;F1 - Tageslicht TP_WBALANCE_FLUO2;F2 - Kaltweiß TP_WBALANCE_FLUO3;F3 - Weiß @@ -2033,9 +2039,6 @@ TP_WBALANCE_FLUO6;F6 - Weiß reduziert TP_WBALANCE_FLUO7;F7 - D65 Tageslichtsimulation TP_WBALANCE_FLUO8;F8 - D50 / Sylvania F40 Design TP_WBALANCE_FLUO9;F9 - Kaltweiß Deluxe -TP_WBALANCE_FLUO10;F10 - Philips TL85 -TP_WBALANCE_FLUO11;F11 - Philips TL84 -TP_WBALANCE_FLUO12;F12 - Philips TL83 TP_WBALANCE_FLUO_HEADER;Leuchtstofflampe TP_WBALANCE_GREEN;Tönung TP_WBALANCE_GTI;GTI @@ -2054,6 +2057,8 @@ TP_WBALANCE_SOLUX41;Solux 4100K TP_WBALANCE_SOLUX47;Solux 4700K (Vendor) TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) TP_WBALANCE_SPOTWB;Manuell setzen +TP_WBALANCE_TEMPBIAS;AWB-Temperatur-Korrektur +TP_WBALANCE_TEMPBIAS_TOOLTIP;Prozentuale Korrektur der Farbtemperatur des automatischen\nWeißabgleichs in Richtung wärmer oder kälter.\nDer Korreturwert berechnet sich aus:\nAWB-Temperatur + AWB-Temperatur * AWB-Temperatur-Korrektur TP_WBALANCE_TEMPERATURE;Farbtemperatur TP_WBALANCE_TUNGSTEN;Glühlampe TP_WBALANCE_WATER1;Unterwasser 1 @@ -2066,11 +2071,3 @@ ZOOMPANEL_ZOOMFITCROPSCREEN;Ausschnitt an Bildschirm anpassen\nTaste: Alt ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen\nTaste: f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -!HISTORY_MSG_444;WB - Temp bias -!TP_WBALANCE_TEMPBIAS;AWB temperature bias -!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias". From eb9aee64b3aa6e08eef1d7a39920097edba38531 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sat, 18 Feb 2017 14:32:40 +0100 Subject: [PATCH 14/15] Translation files regenerated. --- rtdata/languages/Chinese (Simplified) | 4 +- rtdata/languages/Chinese (Traditional) | 4 +- rtdata/languages/Dansk | 4 +- rtdata/languages/Deutsch | 794 ++++++++++++------------- rtdata/languages/English (UK) | 4 +- rtdata/languages/English (US) | 4 +- rtdata/languages/Euskara | 4 +- rtdata/languages/Greek | 4 +- rtdata/languages/Hebrew | 4 +- rtdata/languages/Latvian | 4 +- rtdata/languages/Norsk BM | 4 +- rtdata/languages/Portugues (Brasil) | 4 +- rtdata/languages/Slovak | 2 +- rtdata/languages/Suomi | 4 +- rtdata/languages/Turkish | 4 +- 15 files changed, 424 insertions(+), 424 deletions(-) diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 5900ef487..af56b7dd1 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1311,7 +1311,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1381,7 +1381,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index fdc36f91a..65abab6de 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1117,7 +1117,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field !PREFERENCES_FLATFIELDFOUND;Found @@ -1191,7 +1191,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index dc28d6c59..0726bf930 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1115,7 +1115,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field !PREFERENCES_FLATFIELDFOUND;Found @@ -1189,7 +1189,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 78896314b..0cdfd7437 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -35,7 +35,6 @@ #34 2017-01-07 IPTC (TooWaBoo) RT4.2.1492 #35 2017-02-18 AWB bias (TooWaBoo) - ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen ABOUT_TAB_LICENSE;Lizenz @@ -152,13 +151,13 @@ FILEBROWSER_OPENDEFAULTVIEWER;Windows Standard-Betracher (stapelverarbeitet) FILEBROWSER_PARTIALPASTEPROFILE;Profil selektiv einfügen FILEBROWSER_PASTEPROFILE;Profil einfügen FILEBROWSER_POPUPCANCELJOB;Job abbrechen +FILEBROWSER_POPUPCOLORLABEL;Farbmarkierung FILEBROWSER_POPUPCOLORLABEL0;Markierung: Ohne FILEBROWSER_POPUPCOLORLABEL1;Markierung: Rot FILEBROWSER_POPUPCOLORLABEL2;Markierung: Gelb FILEBROWSER_POPUPCOLORLABEL3;Markierung: Grün FILEBROWSER_POPUPCOLORLABEL4;Markierung: Blau FILEBROWSER_POPUPCOLORLABEL5;Markierung: Violett -FILEBROWSER_POPUPCOLORLABEL;Farbmarkierung FILEBROWSER_POPUPCOPYTO;Kopieren nach... FILEBROWSER_POPUPFILEOPERATIONS;Dateioperationen FILEBROWSER_POPUPMOVEEND;An das Ende der Warteschlange verschieben @@ -169,13 +168,13 @@ FILEBROWSER_POPUPOPENINEDITOR;Im Editor öffnen FILEBROWSER_POPUPPROCESS;Zur Warteschlange hinzufügen FILEBROWSER_POPUPPROCESSFAST;Zur Warteschlange hinzufügen (Schnelles Exportieren) FILEBROWSER_POPUPPROFILEOPERATIONS;Profiloperationen +FILEBROWSER_POPUPRANK;Bewertung FILEBROWSER_POPUPRANK0;Nicht bewertet FILEBROWSER_POPUPRANK1;Bewertung 1 * FILEBROWSER_POPUPRANK2;Bewertung 2 ** FILEBROWSER_POPUPRANK3;Bewertung 3 *** FILEBROWSER_POPUPRANK4;Bewertung 4 **** FILEBROWSER_POPUPRANK5;Bewertung 5 ***** -FILEBROWSER_POPUPRANK;Bewertung FILEBROWSER_POPUPREMOVE;Löschen FILEBROWSER_POPUPREMOVEINCLPROC;Löschen (auch Resultate der Stapelverarbeitung) FILEBROWSER_POPUPRENAME;Umbenennen @@ -267,394 +266,55 @@ HISTORY_CUSTOMCURVE;Benutzerdefiniert HISTORY_DELSNAPSHOT;Entfernen HISTORY_FROMCLIPBOARD;Aus der Zwischenablage HISTORY_LABEL;Historie -HISTORY_MSG_100;(Belichtung) - Sättigung -HISTORY_MSG_101;(HSV) - Farbton (H) -HISTORY_MSG_102;(HSV) - Sättigung (S) -HISTORY_MSG_103;(HSV) - Dynamik (V) -HISTORY_MSG_104;(HSV) -HISTORY_MSG_105;(Farbsaum entfernen) -HISTORY_MSG_106;(Farbsaum entfernen)\nRadius -HISTORY_MSG_107;(Farbsaum entfernen)\nSchwelle -HISTORY_MSG_108;(Belichtung)\nLichterkompression\nSchwelle -HISTORY_MSG_109;(Skalieren) - Begrenzungsrahmen -HISTORY_MSG_10;(Belichtung)\nSchattenkompression -HISTORY_MSG_110;(Skalieren) - Anwenden auf: -HISTORY_MSG_111;(L*a*b*) - Farbverschiebung\nvermeiden -HISTORY_MSG_112;--unused-- -HISTORY_MSG_113;(L*a*b*) - Hautfarbtöne\nschützen -HISTORY_MSG_114;(Sensor Bayer-Matrix)\nFarbinterpolation\nDCB-Iterationen -HISTORY_MSG_115;(Sensor-Matrix)\nFarbinterpolation\nFalschfarbenunterdrückung -HISTORY_MSG_116;(Sensor Bayer-Matrix)\nFarbinterpolation\nDCB-Verbesserung -HISTORY_MSG_117;(Sensor Bayer-Matrix)\nChromatische Aberration\nRot -HISTORY_MSG_118;(Sensor Bayer-Matrix)\nChromatische Aberration\nBlau -HISTORY_MSG_119;(Sensor Bayer-Matrix)\nVorverarbeitung\nZeilenrauschfilter -HISTORY_MSG_11;(Belichtung)\nTonwertkurve 1 -HISTORY_MSG_120;(Sensor Bayer-Matrix)\nVorverarbeitung\nGrün-Ausgleich -HISTORY_MSG_121;(Sensor Bayer-Matrix)\nChromatische Aberration\nAutomatische Korrektur -HISTORY_MSG_122;(Dunkelbild)\nAutomatische Auswahl -HISTORY_MSG_123;(Dunkelbild) - Datei -HISTORY_MSG_124;(Weißpunkt)\nKorrekturfaktor -HISTORY_MSG_125;(Belichtungskorrektur)\nLichter schützen -HISTORY_MSG_126;(Weißbild) - Datei -HISTORY_MSG_127;(Weißbild)\nAutomatische Auswahl -HISTORY_MSG_128;(Weißbild)\nUnschärferadius -HISTORY_MSG_129;(Weißbild) - Unschärfetyp -HISTORY_MSG_12;(Belichtung) - Auto -HISTORY_MSG_130;(Autom. Verzeichnung) -HISTORY_MSG_131;(Rauschreduzierung)\nLuminanz -HISTORY_MSG_132;(Rauschreduzierung)\nChrominanz -HISTORY_MSG_133;(Farbmanagement)\nAusgabeprofil\nAusgabe-Gamma -HISTORY_MSG_134;(Farbmanagement)\nAusgabeprofil\nGamma -HISTORY_MSG_135;(Farbmanagement)\nAusgabeprofil\nFreies Gamma -HISTORY_MSG_136;(Farbmanagement)\nAusgabeprofil\nGradient (linear) -HISTORY_MSG_137;(Sensor Bayer-Matrix)\nSchwarzpunkt - Grün 1 -HISTORY_MSG_138;(Sensor Bayer-Matrix)\nSchwarzpunkt - Rot -HISTORY_MSG_139;(Sensor Bayer-Matrix)\nSchwarzpunkt - Blau -HISTORY_MSG_13;(Belichtung) - Clip-Faktor -HISTORY_MSG_140;(Sensor Bayer-Matrix)\nSchwarzpunkt - Grün 2 -HISTORY_MSG_141;(Sensor Bayer-Matrix)\nSchwarzpunkt\nGrün-Werte angleichen -HISTORY_MSG_142;(Kantenschärfung)\nIterationen -HISTORY_MSG_143;(Kantenschärfung)\nIntensität -HISTORY_MSG_144;(Mikrokontrast)\nIntensität -HISTORY_MSG_145;(Mikrokontrast)\nGleichmäßigkeit -HISTORY_MSG_146;(Kantenschärfung) -HISTORY_MSG_147;(Kantenschärfung)\nNur Luminanz -HISTORY_MSG_148;(Mikrokontrast) -HISTORY_MSG_149;(Mikrokontrast)\n3×3-Matrix -HISTORY_MSG_14;(L*a*b*) - Helligkeit -HISTORY_MSG_150;(Artefakt-/Rauschred.\nnach Farbinterpolation) -HISTORY_MSG_151;(Dynamik) -HISTORY_MSG_152;(Dynamik) - Pastelltöne -HISTORY_MSG_153;(Dynamik)\nGesättigte Töne -HISTORY_MSG_154;(Dynamik)\nHautfarbtöne schützen -HISTORY_MSG_155;(Dynamik)\nFarbverschiebungen\nvermeiden -HISTORY_MSG_156;(Dynamik)\nPastell und gesättigte\nTöne koppeln -HISTORY_MSG_157;(Dynamik)\nPastell/gesättigte Töne\nSchwelle -HISTORY_MSG_158;(Dynamikkompression)\nIntensität -HISTORY_MSG_159;(Dynamikkompression)\nKantenschutz -HISTORY_MSG_15;(L*a*b*) - Kontrast -HISTORY_MSG_160;(Dynamikkompression)\nFaktor -HISTORY_MSG_161;(Dynamikkompression)\nIterationen -HISTORY_MSG_162;(Dynamikkompression) -HISTORY_MSG_163;(RGB-Kurven) - Rot -HISTORY_MSG_164;(RGB-Kurven) - Grün -HISTORY_MSG_165;(RGB-Kurven) - Blau -HISTORY_MSG_166;(Belichtung) - Zurücksetzen -HISTORY_MSG_167;(Sensor-Matrix)\nFarbinterpolation\nMethode -HISTORY_MSG_168;(L*a*b*) - CC-Kurve -HISTORY_MSG_169;(L*a*b*) - CH-Kurve -HISTORY_MSG_16;- -HISTORY_MSG_170;(Dynamik) - HH-Kurve -HISTORY_MSG_171;(L*a*b*) - LC-Kurve -HISTORY_MSG_172;(L*a*b*) - LC-Kurve\nbeschränken -HISTORY_MSG_173;(Rauschreduzierung)\nLuminanzdetails -HISTORY_MSG_174;(CIECAM02) -HISTORY_MSG_175;(CIECAM02) - Szene\nCAT02-Adaptation -HISTORY_MSG_176;(CIECAM02)\nBetrachtungsbed.\nUmgebung -HISTORY_MSG_177;(CIECAM02) - Szene\nLeuchtstärke -HISTORY_MSG_178;(CIECAM02)\nBetrachtungsbed.\nLeuchtstärke -HISTORY_MSG_179;(CIECAM02) - Szene\nWeißpunktmodell -HISTORY_MSG_17;- -HISTORY_MSG_180;(CIECAM02) - Helligkeit (J) -HISTORY_MSG_181;(CIECAM02) - Buntheit (H) -HISTORY_MSG_182;(CIECAM02) - Szene\nCAT02-Automatisch -HISTORY_MSG_183;(CIECAM02) - Kontrast (J) -HISTORY_MSG_184;(CIECAM02) - Szene\nDunkle Umgebung -HISTORY_MSG_185;(CIECAM02)\nBetrachtungsbed.\nGamutkontrolle -HISTORY_MSG_186;(CIECAM02) - Algorithmus -HISTORY_MSG_187;(CIECAM02) - Hautfarbtöne\nschützen -HISTORY_MSG_188;(CIECAM02) - Helligkeit (Q) -HISTORY_MSG_189;(CIECAM02) - Kontrast (Q) -HISTORY_MSG_18;- -HISTORY_MSG_190;(CIECAM02) - Sättigung (S) -HISTORY_MSG_191;(CIECAM02) - Farbigkeit (M) -HISTORY_MSG_192;(CIECAM02) - Farbton (H) -HISTORY_MSG_193;(CIECAM02)\nTonwertkurve 1 -HISTORY_MSG_194;(CIECAM02)\nTonwertkurve 2 -HISTORY_MSG_195;(CIECAM02)\nTonwertkurve 1 - Modus -HISTORY_MSG_196;(CIECAM02)\nTonwertkurve 2 - Modus -HISTORY_MSG_197;(CIECAM02) - Farbkurve -HISTORY_MSG_198;(CIECAM02) - Farbkurve\nModus -HISTORY_MSG_199;(CIECAM02) - Ausgabe-\nHistogramm anzeigen -HISTORY_MSG_19;(L*a*b*) - L-Kurve HISTORY_MSG_1;(Bild geladen) -HISTORY_MSG_200;(CIECAM02)\nDynamikkompression -HISTORY_MSG_201;(Rauschreduzierung)\nDelta-Chrominanz\nRot / Grün -HISTORY_MSG_202;(Rauschreduzierung)\nDelta-Chrominanz\nBlau / Gelb -HISTORY_MSG_203;(Rauschreduzierung)\nMethode -HISTORY_MSG_204;(Sensor Bayer-Matrix)\nFarbinterpolation\nLMMSE-Verbesserung -HISTORY_MSG_205;(CIECAM02)\nBetrachtungsbed.\nHot / Bad-Pixelfilter -HISTORY_MSG_206;(CIECAM02) - Szene\nAuto-Leuchtstärke -HISTORY_MSG_207;(Farbsaum entfernen)\nFarbtonkurve -HISTORY_MSG_208;(Weißabgleich)\nBlau / Rot-Korrektur -HISTORY_MSG_20;(Schärfung) -HISTORY_MSG_210;(Grauverlaufsfilter)\nRotationswinkel -HISTORY_MSG_211;(Grauverlaufsfilter) -HISTORY_MSG_212;(Vignettierungsfilter)\nIntensität -HISTORY_MSG_213;(Vignettierungsfilter) -HISTORY_MSG_214;(Schwarz/Weiß) -HISTORY_MSG_215;(Schwarz/Weiß) - Rot -HISTORY_MSG_216;(Schwarz/Weiß) - Grün -HISTORY_MSG_217;(Schwarz/Weiß) - Blau -HISTORY_MSG_218;(Schwarz/Weiß)\nGamma - Rot -HISTORY_MSG_219;(Schwarz/Weiß)\nGamma - Grün -HISTORY_MSG_21;(Schärfung) - USM\nRadius -HISTORY_MSG_220;(Schwarz/Weiß)\nGamma - Blau -HISTORY_MSG_221;(Schwarz/Weiß)\nFarbfilter -HISTORY_MSG_222;(Schwarz/Weiß)\nVorgaben -HISTORY_MSG_223;(Schwarz/Weiß) - Orange -HISTORY_MSG_224;(Schwarz/Weiß) - Gelb -HISTORY_MSG_225;(Schwarz/Weiß) - Cyan -HISTORY_MSG_226;(Schwarz/Weiß) - Magenta -HISTORY_MSG_227;(Schwarz/Weiß) - Violett -HISTORY_MSG_228;(Schwarz/Weiß)\nLuminanzequalizer -HISTORY_MSG_229;(Schwarz/Weiß)\nLuminanzequalizer -HISTORY_MSG_22;(Schärfung) - USM\nIntensität -HISTORY_MSG_230;(Schwarz/Weiß) - Modus -HISTORY_MSG_231;(Schwarz/Weiß)\n“Bevor“-Kurve -HISTORY_MSG_232;(Schwarz/Weiß)\n“Bevor“-Kurventyp -HISTORY_MSG_233;(Schwarz/Weiß)\n“Danach“-Kurve -HISTORY_MSG_234;(Schwarz/Weiß)\n“Danach“-Kurventyp -HISTORY_MSG_235;(Schwarz/Weiß)\nAuto-Kanalmixer -HISTORY_MSG_236;--unused-- -HISTORY_MSG_237;(Schwarz/Weiß) - Mixer -HISTORY_MSG_238;(Grauverlaufsfilter)\nBereich -HISTORY_MSG_239;(Grauverlaufsfilter)\nIntensität -HISTORY_MSG_23;(Schärfung) - USM\nSchwelle -HISTORY_MSG_240;(Grauverlaufsfilter)\nRotationsachsen -HISTORY_MSG_241;(Vignettierungsfilter)\nBereich -HISTORY_MSG_242;(Vignettierungsfilter)\nForm -HISTORY_MSG_243;(Objektivkorrektur)\nVignettierung - Radius -HISTORY_MSG_244;(Objektivkorrektur)\nVignettierung - Faktor -HISTORY_MSG_245;(Objektivkorrektur)\nVignettierung - Zentrum -HISTORY_MSG_246;(L*a*b*) - CL-Kurve -HISTORY_MSG_247;(L*a*b*) - LH-Kurve -HISTORY_MSG_248;(L*a*b*) - HH-Kurve -HISTORY_MSG_249;(Detailebenenkontrast)\nSchwelle -HISTORY_MSG_24;(Schärfung) - USM\nNur Kanten schärfen -HISTORY_MSG_250;(Rauschreduzierung)\nVerbesserung -HISTORY_MSG_251;(Schwarz/Weiß)\nAlgorithmus -HISTORY_MSG_252;(Detailebenenkontrast)\nHautfarbtöne schützen -HISTORY_MSG_253;(Detailebenenkontrast)\nArtefakte reduzieren -HISTORY_MSG_254;(Detailebenenkontrast)\nHautfarbton -HISTORY_MSG_255;(Rauschreduzierung)\nMedianfilter -HISTORY_MSG_256;(Rauschreduzierung)\nMediantyp -HISTORY_MSG_257;(Farbanpassungen) -HISTORY_MSG_258;(Farbanpassungen)\nFarbkurve -HISTORY_MSG_259;(Farbanpassungen)\nDeckkraftkurve -HISTORY_MSG_25;(Schärfung) - USM\nKantenschärfung\nRadius -HISTORY_MSG_260;(Farbanpassungen)\na*[b*]-Transparenz -HISTORY_MSG_261;(Farbanpassungen)\nMethode -HISTORY_MSG_262;(Farbanpassungen)\nb*-Transparenz -HISTORY_MSG_263;(Farbanpassungen)\nSchatten - Blau / Rot -HISTORY_MSG_264;(Farbanpassungen)\nSchatten - Cyan / Grün -HISTORY_MSG_265;(Farbanpassungen)\nSchatten - Gelb / Blau -HISTORY_MSG_266;(Farbanpassungen)\nMitten - Blau / Rot -HISTORY_MSG_267;(Farbanpassungen)\nMitten - Cyan / Grün -HISTORY_MSG_268;(Farbanpassungen)\nMitten - Gelb / Blau -HISTORY_MSG_269;(Farbanpassungen)\nLichter - Blau / Rot -HISTORY_MSG_26;(Schärfung) - USM\nKantenschärfung\nKantentoleranz -HISTORY_MSG_270;(Farbanpassungen)\nLichter - Cyan / Grün -HISTORY_MSG_271;(Farbanpassungen)\nLichter - Gelb / Blau -HISTORY_MSG_272;(Farbanpassungen)\nFarbausgleich -HISTORY_MSG_273;(Farbanpassungen)\nZurücksetzen -HISTORY_MSG_274;(Farbanpassungen)\nSättigung Schatten -HISTORY_MSG_275;(Farbanpassungen)\nSättigung Lichter -HISTORY_MSG_276;(Farbanpassungen)\nDeckkraft -HISTORY_MSG_277;--unused-- -HISTORY_MSG_278;(Farbanpassungen)\nLuminanz schützen -HISTORY_MSG_279;(Farbanpassungen)\nSchatten -HISTORY_MSG_27;(Schärfung) - USM\nHalokontrolle -HISTORY_MSG_280;(Farbanpassungen)\nLichter -HISTORY_MSG_281;(Farbanpassungen)\nSättigung schützen\nIntensität -HISTORY_MSG_282;(Farbanpassungen)\nSättigung schützen\nSchwelle -HISTORY_MSG_283;(Farbanpassungen)\nIntensität -HISTORY_MSG_284;(Farbanpassungen)\nSättigung schützen\nAutomatisch -HISTORY_MSG_285;(Rauschreduzierung)\nMedianmethode -HISTORY_MSG_286;(Rauschreduzierung)\nMediantyp -HISTORY_MSG_287;(Rauschreduzierung)\nMedianiterationen -HISTORY_MSG_288;(Weißbild)\nKontrolle zu heller Bereiche -HISTORY_MSG_289;(Weißbild)\nAuto-Kontrolle zu\nheller Bereiche -HISTORY_MSG_28;(Schärfung) - USM\nHalokontrolle - Intensität -HISTORY_MSG_290;(Sensor X-Trans-Matrix)\nSchwarzpunkt - Rot -HISTORY_MSG_291;(Sensor X-Trans-Matrix)\nSchwarzpunkt - Grün -HISTORY_MSG_292;(Sensor X-Trans-Matrix)\nSchwarzpunkt - Blau -HISTORY_MSG_293;(Filmsimulation) -HISTORY_MSG_294;(Filmsimulation)\nIntensität -HISTORY_MSG_295;(Filmsimulation) - Film -HISTORY_MSG_296;(Rauschreduzierung)\nLuminanzkurve -HISTORY_MSG_297;(Rauschreduzierung)\nQualität -HISTORY_MSG_298;(Vorverarbeitung)\nDead-Pixel-Filter -HISTORY_MSG_299;(Rauschreduzierung)\nChrominanzkurve -HISTORY_MSG_29;(Schärfung) - Methode HISTORY_MSG_2;(Profil geladen) -HISTORY_MSG_300;- -HISTORY_MSG_301;(Rauschreduzierung)\nLuminanzkontrolle -HISTORY_MSG_302;(Rauschreduzierung)\nChrominanz - Methode -HISTORY_MSG_303;(Rauschreduzierung)\nChrominanz - Methode -HISTORY_MSG_304;(Wavelet)\nKontrastebenen -HISTORY_MSG_305;(Wavelet) -HISTORY_MSG_306;(Wavelet) - Einstellungen\nVerarbeitungsebene -HISTORY_MSG_307;(Wavelet) - Einstellungen\nVerarbeitung -HISTORY_MSG_308;(Wavelet) - Einstellungen\nVerarbeitungsrichtung -HISTORY_MSG_309;(Wavelet)\nKantenschärfung\nDetails -HISTORY_MSG_30;(Schärfung) - RLD\nRadius -HISTORY_MSG_310;(Wavelet) - Restbild\nHimmelsfarbtöne\nschützen -HISTORY_MSG_311;(Wavelet) - Einstellungen\nAnzahl der Ebenen -HISTORY_MSG_312;(Wavelet) - Restbild\nSchatten Schwelle -HISTORY_MSG_313;(Wavelet) - Farbe\nEbenengrenze -HISTORY_MSG_314;(Wavelet) - Gamut\nArtefakte reduzieren -HISTORY_MSG_315;(Wavelet) - Restbild\nKontrast -HISTORY_MSG_316;(Wavelet) - Gamut\nHautfarbtöne schützen -HISTORY_MSG_317;(Wavelet) - Gamut\nHautfarbton -HISTORY_MSG_318;(Wavelet) - Kontrast\nLichterebenen -HISTORY_MSG_319;(Wavelet) - Kontrast\nLichter-Luminanzbereich -HISTORY_MSG_31;(Schärfung) - RLD\nIntensität -HISTORY_MSG_320;(Wavelet) - Kontrast\nSchatten-Luminanzbereich -HISTORY_MSG_321;(Wavelet) - Kontrast\nSchattenebenen -HISTORY_MSG_322;(Wavelet) - Gamut\nFarbverschiebungen\nvermeiden -HISTORY_MSG_323;(Wavelet)\nKantenschärfung\nLokale Kontrastkurve -HISTORY_MSG_324;(Wavelet) - Farbe\nPastellfarben -HISTORY_MSG_325;(Wavelet) - Farbe\nGesättigte Farben -HISTORY_MSG_326;(Wavelet) - Farbe\nChrominanzethode -HISTORY_MSG_327;(Wavelet) - Kontrast\nAnwenden auf -HISTORY_MSG_328;(Wavelet) - Farbe\nFarb-Kontrast-\nVerknüpfung -HISTORY_MSG_329;(Wavelet) - Tönung\nDeckkraft Rot / Grün -HISTORY_MSG_32;(Schärfung) - RLD\nDämpfung -HISTORY_MSG_330;(Wavelet) - Tönung\nDeckkraft Blau / Gelb -HISTORY_MSG_331;(Wavelet)\nKontrastebenen\nExtra -HISTORY_MSG_332;(Wavelet)- -Einstellungen\nKachelgröße -HISTORY_MSG_333;(Wavelet) - Restbild\nSchatten -HISTORY_MSG_334;(Wavelet) - Restbild\nBuntheit -HISTORY_MSG_335;(Wavelet) - Restbild\nLichter -HISTORY_MSG_336;(Wavelet) - Restbild\nLichter Schwelle -HISTORY_MSG_337;(Wavelet) - Restbild\nHimmelsfarbton -HISTORY_MSG_338;(Wavelet)\nKantenschärfung\nRadius -HISTORY_MSG_339;(Wavelet)\nKantenschärfung\nIntensität -HISTORY_MSG_33;(Schärfung) - RLD\nIterationen -HISTORY_MSG_340;(Wavelet) - Einstellungen\nIntensität -HISTORY_MSG_341;(Wavelet) - Einstellungen\nKantenperformance -HISTORY_MSG_342;(Wavelet)\nKantenschärfung\nErste Ebene -HISTORY_MSG_343;(Wavelet) - Farbe\nFarbebenen -HISTORY_MSG_344;(Wavelet)\nFarbmethode\nRegler/Kurve -HISTORY_MSG_345;(Wavelet)\nKantenschärfung\nLokaler Kontrast -HISTORY_MSG_346;(Wavelet)\nKantenschärfung\nLokale Kontrastmethode -HISTORY_MSG_347;(Wavelet)\nRauschreduzierung\nEbene 1 -HISTORY_MSG_348;(Wavelet)\nRauschreduzierung\nEbene 2 -HISTORY_MSG_349;(Wavelet)\nRauschreduzierung\nEbene 3 -HISTORY_MSG_34;(Objektivkorrektur)\nProfil - Verzeichnung -HISTORY_MSG_350;(Wavelet)\nKantenschärfung\nKantenerkennung -HISTORY_MSG_351;(Wavelet) - Restbild\nHH-Kurve -HISTORY_MSG_352;(Wavelet) - Einstellungen\nHintergrund -HISTORY_MSG_353;(Wavelet)\nKantenschärfung\nGradientenempfindlichkeit -HISTORY_MSG_354;(Wavelet)\nKantenschärfung\nErweiterter Algorithmus -HISTORY_MSG_355;(Wavelet)\nKantenschärfung\nSchwelle niedrig -HISTORY_MSG_356;(Wavelet)\nKantenschärfung\nSchwelle hoch -HISTORY_MSG_357;(Wavelet)\nRauschreduzierung\nSchärfung verknüpfen -HISTORY_MSG_358;(Wavelet) - Gamut\nKontrastkurve -HISTORY_MSG_359;(Vorverarbeitung)\nHot / Dead-Pixel-Filter\nSchwelle -HISTORY_MSG_35;(Objektivkorrektur)\nProfil - Vignettierung -HISTORY_MSG_360;(Dynamikkompression)\nGamma -HISTORY_MSG_361;(Wavelet) - Endretusche\nFarbausgleich -HISTORY_MSG_362;(Wavelet) - Restbild\nKompression -HISTORY_MSG_363;(Wavelet) - Restbild\nKompression - Intensität -HISTORY_MSG_364;(Wavelet) - Endretusche\nKontrastausgleich -HISTORY_MSG_365;(Wavelet) - Endretusche\nDelta-Kontrastausgleich -HISTORY_MSG_366;(Wavelet) - Restbild\nGammakompression -HISTORY_MSG_367;(Wavelet) - Endretusche\n"Danach"-Kontrastkurve -HISTORY_MSG_368;(Wavelet) - Endretusche\nKontrastausgleichskurve -HISTORY_MSG_369;(Wavelet) - Endretusche\nKontrastmethode -HISTORY_MSG_36;(Objektivkorrektur)\nProfil - CA-Korrektur -HISTORY_MSG_370;(Wavelet) - Endretusche\nLokale Kontrastkurve -HISTORY_MSG_371;(Skalieren) - Schärfen -HISTORY_MSG_372;(Skalieren) - Schärfen\nUSM - Radius -HISTORY_MSG_373;(Skalieren) - Schärfen\nUSM - Intensität -HISTORY_MSG_374;(Skalieren) - Schärfen\nUSM - Schwelle -HISTORY_MSG_375;(Skalieren) - Schärfen\nUSM - Nur Kanten\nschärfen -HISTORY_MSG_376;(Skalieren) - Schärfen\nUSM - Kantenschärfung\nRadius -HISTORY_MSG_377;(Skalieren) - Schärfen\nUSM - Kantentoleranz -HISTORY_MSG_378;(Skalieren) - Schärfen\nUSM - Halokontrolle -HISTORY_MSG_379;(Skalieren) - Schärfen\nUSM - Halokontrolle\nIntensität -HISTORY_MSG_37;(Belichtung) - Auto -HISTORY_MSG_380;(Skalieren) - Schärfen\nMethode -HISTORY_MSG_381;(Skalieren) - Schärfen\nRLD - Radius -HISTORY_MSG_382;(Skalieren) - Schärfen\nRLD - Intensität -HISTORY_MSG_383;(Skalieren) - Schärfen\nRLD - Dämpfung -HISTORY_MSG_384;(Skalieren) - Schärfen\nRLD - Iterationen -HISTORY_MSG_385;(Wavelet) - Restbild\nFarbausgleich -HISTORY_MSG_386;(Wavelet) - Restbild\nFarbausgleich\nLichter Grün / Cyan -HISTORY_MSG_387;(Wavelet) - Restbild\nFarbausgleich\nLichter Blau / Gelb -HISTORY_MSG_388;(Wavelet) - Restbild\nFarbausgleich\nMitten Grün / Cyan -HISTORY_MSG_389;(Wavelet) - Restbild\nFarbausgleich\nMitten Blau / Gelb -HISTORY_MSG_38;(Weißabgleich) - Methode -HISTORY_MSG_390;(Wavelet) - Restbild\nFarbausgleich\nSchatten Grün / Cyan -HISTORY_MSG_391;(Wavelet) - Restbild\nFarbausgleich\nSchatten Blau / Gelb -HISTORY_MSG_392;(Wavelet) - Restbild\nFarbausgleich -HISTORY_MSG_393;(Farbmanagement)\nEingangsfarbprofil\nDCP - Look-Tabelle -HISTORY_MSG_394;(Farbmanagement)\nEingangsfarbprofil\nDCP - Basisbelichtung -HISTORY_MSG_395;(Farbmanagement)\nEingangsfarbprofil\nDCP - Basistabelle -HISTORY_MSG_396;(Wavelet) - Kontrast -HISTORY_MSG_397;(Wavelet) - Farbe -HISTORY_MSG_398;(Wavelet)\nKantenschärfung -HISTORY_MSG_399;(Wavelet) - Restbild -HISTORY_MSG_39;(Weißabgleich)\nFarbtemperatur HISTORY_MSG_3;(Profil geändert) -HISTORY_MSG_400;(Wavelet) - Endretusche -HISTORY_MSG_401;(Wavelet) - Tönung -HISTORY_MSG_402;(Wavelet)\nRauschreduzierung -HISTORY_MSG_403;(Wavelet)\nKantenschärfung\nKantenempfindlichkeit -HISTORY_MSG_404;(Wavelet)\nKantenschärfung\nGrundverstärkung -HISTORY_MSG_405;(Wavelet)\nRauschreduzierung\nEbene 4 -HISTORY_MSG_406;(Wavelet)\nKantenschärfung\nBenachbarte Pixel -HISTORY_MSG_407;(Retinex) - Methode -HISTORY_MSG_408;(Retinex) - Radius -HISTORY_MSG_409;(Retinex) - Einstellungen\nKontrast +HISTORY_MSG_4;(Historie durchsuchen) +HISTORY_MSG_5;(Belichtung) - Helligkeit +HISTORY_MSG_6;(Belichtung) - Kontrast +HISTORY_MSG_7;(Belichtung)\nSchwarzwert +HISTORY_MSG_8;(Belichtung)\nBelichtungskorrektur +HISTORY_MSG_9;(Belichtung)\nLichterkompression +HISTORY_MSG_10;(Belichtung)\nSchattenkompression +HISTORY_MSG_11;(Belichtung)\nTonwertkurve 1 +HISTORY_MSG_12;(Belichtung) - Auto +HISTORY_MSG_13;(Belichtung) - Clip-Faktor +HISTORY_MSG_14;(L*a*b*) - Helligkeit +HISTORY_MSG_15;(L*a*b*) - Kontrast +HISTORY_MSG_16;- +HISTORY_MSG_17;- +HISTORY_MSG_18;- +HISTORY_MSG_19;(L*a*b*) - L-Kurve +HISTORY_MSG_20;(Schärfung) +HISTORY_MSG_21;(Schärfung) - USM\nRadius +HISTORY_MSG_22;(Schärfung) - USM\nIntensität +HISTORY_MSG_23;(Schärfung) - USM\nSchwelle +HISTORY_MSG_24;(Schärfung) - USM\nNur Kanten schärfen +HISTORY_MSG_25;(Schärfung) - USM\nKantenschärfung\nRadius +HISTORY_MSG_26;(Schärfung) - USM\nKantenschärfung\nKantentoleranz +HISTORY_MSG_27;(Schärfung) - USM\nHalokontrolle +HISTORY_MSG_28;(Schärfung) - USM\nHalokontrolle - Intensität +HISTORY_MSG_29;(Schärfung) - Methode +HISTORY_MSG_30;(Schärfung) - RLD\nRadius +HISTORY_MSG_31;(Schärfung) - RLD\nIntensität +HISTORY_MSG_32;(Schärfung) - RLD\nDämpfung +HISTORY_MSG_33;(Schärfung) - RLD\nIterationen +HISTORY_MSG_34;(Objektivkorrektur)\nProfil - Verzeichnung +HISTORY_MSG_35;(Objektivkorrektur)\nProfil - Vignettierung +HISTORY_MSG_36;(Objektivkorrektur)\nProfil - CA-Korrektur +HISTORY_MSG_37;(Belichtung) - Auto +HISTORY_MSG_38;(Weißabgleich) - Methode +HISTORY_MSG_39;(Weißabgleich)\nFarbtemperatur HISTORY_MSG_40;(Weißabgleich) - Tönung -HISTORY_MSG_410;(Retinex) - Einstellungen\nVerstärkung und Ausgleich\nAusgleich -HISTORY_MSG_411;(Retinex) - Intensität -HISTORY_MSG_412;(Retinex) - Einstellungen\nDynamikkompression\nGaußscher Gradient -HISTORY_MSG_413;(Retinex) - Kontrast -HISTORY_MSG_414;(Retinex) - Einstellungen\nKorrekturen\nLuminanz(L) - L*a*b* -HISTORY_MSG_415;(Retinex) - Einstellungen\nTransmission\nTransmissionskurve -HISTORY_MSG_416;(Retinex) -HISTORY_MSG_417;(Retinex) - Einstellungen\nTransmission\nMedianfilter -HISTORY_MSG_418;(Retinex) - Einstellungen\nTransmission\nSchwelle -HISTORY_MSG_419;(Retinex) - Farbraum HISTORY_MSG_41;(Belichtung)\nTonwertkurve 1 - Modus -HISTORY_MSG_420;(Retinex) - Einstellungen\nHSL-Kurve -HISTORY_MSG_421;(Retinex) - Einstellungen\nKorrekturen\nGammakorrektur -HISTORY_MSG_422;(Retinex) - Einstellungen\nGamma -HISTORY_MSG_423;(Retinex) - Einstellungen\nGammasteigung -HISTORY_MSG_424;(Retinex) - Einstellungen\nHL-Schwelle -HISTORY_MSG_425;(Retinex) - Einstellungen\nBasis-Logarithmus -HISTORY_MSG_426;(Retinex) - Einstellungen\nKorrekturen - Farbton (H) -HISTORY_MSG_427;Ausgabe-Rendering-Intent -HISTORY_MSG_428;Monitor-Rendering-Intent -HISTORY_MSG_429;(Retinex) - Einstellungen\nDynamikkompression\nIterationen HISTORY_MSG_42;(Belichtung)\nTonwertkurve 2 -HISTORY_MSG_430;(Retinex) - Einstellungen\nDynamikkompression\nTransmission Gradient -HISTORY_MSG_431;(Retinex) - Einstellungen\nDynamikkompression\nIntensität Gradient -HISTORY_MSG_432;(Retinex) - Maske\nLichter -HISTORY_MSG_433;(Retinex) - Maske\nTonwertbreite Lichter -HISTORY_MSG_434;(Retinex) - Maske\nSchatten -HISTORY_MSG_435;(Retinex) - Maske\nTonwertbreite Schatten -HISTORY_MSG_436;(Retinex) - Maske\nRadius -HISTORY_MSG_437;(Retinex) - Maske\nMethode -HISTORY_MSG_438;(Retinex) - Maske\nKurve -HISTORY_MSG_439;(Retinex) - Vorschau HISTORY_MSG_43;(Belichtung)\nTonwertkurve 2 - Modus -HISTORY_MSG_440;(Detailebenenkontrast)\nProzessreihenfolge -HISTORY_MSG_441;(Retinex) - Einstellungen\nVerstärkung und Ausgleich\nTransmissionsverstärkung -HISTORY_MSG_442;(Retinex) - Einstellungen\nTransmission - Skalierung -HISTORY_MSG_443;(Farbmanagement)\nAusgabeprofil\nSchwarzpunkt-Kompensation -HISTORY_MSG_444;(Weißabgleich)\nAWB-Temperatur-Korrektur HISTORY_MSG_44;(Luminanz-Rauschfilter)\nRadius HISTORY_MSG_45;(Luminanz-Rauschfilter)\nKantentoleranz HISTORY_MSG_46;(Farb-Rauschfilter) HISTORY_MSG_47;(ICC Lichter aus Matrix\nüberlagern) HISTORY_MSG_48;(Farbmanagement)\nEingangsfarbprofil\nDCP - Tonwertkurve HISTORY_MSG_49;(Farbmanagement)\nEingangsfarbprofil\nDCP - Illumination -HISTORY_MSG_4;(Historie durchsuchen) HISTORY_MSG_50;(Schatten/Lichter) HISTORY_MSG_51;(Schatten/Lichter)\nLichter HISTORY_MSG_52;(Schatten/Lichter)\nSchatten @@ -665,7 +325,6 @@ HISTORY_MSG_56;(Schatten/Lichter)\nRadius HISTORY_MSG_57;(Grobe Drehung) HISTORY_MSG_58;(Horizontal spiegeln) HISTORY_MSG_59;(Vertikal spiegeln) -HISTORY_MSG_5;(Belichtung) - Helligkeit HISTORY_MSG_60;(Objektivkorrektur)\nDrehen - Winkel HISTORY_MSG_61;(Objektivkorrektur)\nAuto-Füllen HISTORY_MSG_62;(Objektivkorrektur)\nVerzeichnung @@ -676,7 +335,6 @@ HISTORY_MSG_66;(Belichtung)\nLichter rekonstruieren HISTORY_MSG_67;(Belichtung)\nLichterkompression\nUmfang HISTORY_MSG_68;(Belichtung)\nLichterkompression\nMethode HISTORY_MSG_69;(Farbmanagement)\nArbeitsfarbraum -HISTORY_MSG_6;(Belichtung) - Kontrast HISTORY_MSG_70;(Farbmanagement)\nAusgabeprofil HISTORY_MSG_71;(Farbmanagement)\nEingangsfarbprofil HISTORY_MSG_72;(Objektivkorrektur)\nVignettierung - Intensität @@ -687,7 +345,6 @@ HISTORY_MSG_76;(Exif Metadaten) HISTORY_MSG_77;(IPTC Metadaten) HISTORY_MSG_78;- HISTORY_MSG_79;(Skalieren) - Breite -HISTORY_MSG_7;(Belichtung)\nSchwarzwert HISTORY_MSG_80;(Skalieren) - Höhe HISTORY_MSG_81;(Skalieren) HISTORY_MSG_82;(Profil geändert) @@ -698,7 +355,6 @@ HISTORY_MSG_86;(RGB-Kurven)\nHelligkeitsmodus HISTORY_MSG_87;(Impulsrauschred.) HISTORY_MSG_88;(Impulsrauschred.)\nSchwelle HISTORY_MSG_89;(Rauschreduzierung) -HISTORY_MSG_8;(Belichtung)\nBelichtungskorrektur HISTORY_MSG_90;(Rauschreduzierung)\nLuminanz HISTORY_MSG_91;(Rauschreduzierung)\nChrominanz (Master) HISTORY_MSG_92;(Rauschreduzierung)\nChrominanz - Gamma @@ -709,7 +365,350 @@ HISTORY_MSG_96;(L*a*b*) - a-Kurve HISTORY_MSG_97;(L*a*b*) - b-Kurve HISTORY_MSG_98;(Sensor-Matrix)\nFarbinterpolation\nMethode HISTORY_MSG_99;(Vorverarbeitung)\nHot-Pixel-Filter -HISTORY_MSG_9;(Belichtung)\nLichterkompression +HISTORY_MSG_100;(Belichtung) - Sättigung +HISTORY_MSG_101;(HSV) - Farbton (H) +HISTORY_MSG_102;(HSV) - Sättigung (S) +HISTORY_MSG_103;(HSV) - Dynamik (V) +HISTORY_MSG_104;(HSV) +HISTORY_MSG_105;(Farbsaum entfernen) +HISTORY_MSG_106;(Farbsaum entfernen)\nRadius +HISTORY_MSG_107;(Farbsaum entfernen)\nSchwelle +HISTORY_MSG_108;(Belichtung)\nLichterkompression\nSchwelle +HISTORY_MSG_109;(Skalieren) - Begrenzungsrahmen +HISTORY_MSG_110;(Skalieren) - Anwenden auf: +HISTORY_MSG_111;(L*a*b*) - Farbverschiebung\nvermeiden +HISTORY_MSG_112;--unused-- +HISTORY_MSG_113;(L*a*b*) - Hautfarbtöne\nschützen +HISTORY_MSG_114;(Sensor Bayer-Matrix)\nFarbinterpolation\nDCB-Iterationen +HISTORY_MSG_115;(Sensor-Matrix)\nFarbinterpolation\nFalschfarbenunterdrückung +HISTORY_MSG_116;(Sensor Bayer-Matrix)\nFarbinterpolation\nDCB-Verbesserung +HISTORY_MSG_117;(Sensor Bayer-Matrix)\nChromatische Aberration\nRot +HISTORY_MSG_118;(Sensor Bayer-Matrix)\nChromatische Aberration\nBlau +HISTORY_MSG_119;(Sensor Bayer-Matrix)\nVorverarbeitung\nZeilenrauschfilter +HISTORY_MSG_120;(Sensor Bayer-Matrix)\nVorverarbeitung\nGrün-Ausgleich +HISTORY_MSG_121;(Sensor Bayer-Matrix)\nChromatische Aberration\nAutomatische Korrektur +HISTORY_MSG_122;(Dunkelbild)\nAutomatische Auswahl +HISTORY_MSG_123;(Dunkelbild) - Datei +HISTORY_MSG_124;(Weißpunkt)\nKorrekturfaktor +HISTORY_MSG_125;(Belichtungskorrektur)\nLichter schützen +HISTORY_MSG_126;(Weißbild) - Datei +HISTORY_MSG_127;(Weißbild)\nAutomatische Auswahl +HISTORY_MSG_128;(Weißbild)\nUnschärferadius +HISTORY_MSG_129;(Weißbild) - Unschärfetyp +HISTORY_MSG_130;(Autom. Verzeichnung) +HISTORY_MSG_131;(Rauschreduzierung)\nLuminanz +HISTORY_MSG_132;(Rauschreduzierung)\nChrominanz +HISTORY_MSG_133;(Farbmanagement)\nAusgabeprofil\nAusgabe-Gamma +HISTORY_MSG_134;(Farbmanagement)\nAusgabeprofil\nGamma +HISTORY_MSG_135;(Farbmanagement)\nAusgabeprofil\nFreies Gamma +HISTORY_MSG_136;(Farbmanagement)\nAusgabeprofil\nGradient (linear) +HISTORY_MSG_137;(Sensor Bayer-Matrix)\nSchwarzpunkt - Grün 1 +HISTORY_MSG_138;(Sensor Bayer-Matrix)\nSchwarzpunkt - Rot +HISTORY_MSG_139;(Sensor Bayer-Matrix)\nSchwarzpunkt - Blau +HISTORY_MSG_140;(Sensor Bayer-Matrix)\nSchwarzpunkt - Grün 2 +HISTORY_MSG_141;(Sensor Bayer-Matrix)\nSchwarzpunkt\nGrün-Werte angleichen +HISTORY_MSG_142;(Kantenschärfung)\nIterationen +HISTORY_MSG_143;(Kantenschärfung)\nIntensität +HISTORY_MSG_144;(Mikrokontrast)\nIntensität +HISTORY_MSG_145;(Mikrokontrast)\nGleichmäßigkeit +HISTORY_MSG_146;(Kantenschärfung) +HISTORY_MSG_147;(Kantenschärfung)\nNur Luminanz +HISTORY_MSG_148;(Mikrokontrast) +HISTORY_MSG_149;(Mikrokontrast)\n3×3-Matrix +HISTORY_MSG_150;(Artefakt-/Rauschred.\nnach Farbinterpolation) +HISTORY_MSG_151;(Dynamik) +HISTORY_MSG_152;(Dynamik) - Pastelltöne +HISTORY_MSG_153;(Dynamik)\nGesättigte Töne +HISTORY_MSG_154;(Dynamik)\nHautfarbtöne schützen +HISTORY_MSG_155;(Dynamik)\nFarbverschiebungen\nvermeiden +HISTORY_MSG_156;(Dynamik)\nPastell und gesättigte\nTöne koppeln +HISTORY_MSG_157;(Dynamik)\nPastell/gesättigte Töne\nSchwelle +HISTORY_MSG_158;(Dynamikkompression)\nIntensität +HISTORY_MSG_159;(Dynamikkompression)\nKantenschutz +HISTORY_MSG_160;(Dynamikkompression)\nFaktor +HISTORY_MSG_161;(Dynamikkompression)\nIterationen +HISTORY_MSG_162;(Dynamikkompression) +HISTORY_MSG_163;(RGB-Kurven) - Rot +HISTORY_MSG_164;(RGB-Kurven) - Grün +HISTORY_MSG_165;(RGB-Kurven) - Blau +HISTORY_MSG_166;(Belichtung) - Zurücksetzen +HISTORY_MSG_167;(Sensor-Matrix)\nFarbinterpolation\nMethode +HISTORY_MSG_168;(L*a*b*) - CC-Kurve +HISTORY_MSG_169;(L*a*b*) - CH-Kurve +HISTORY_MSG_170;(Dynamik) - HH-Kurve +HISTORY_MSG_171;(L*a*b*) - LC-Kurve +HISTORY_MSG_172;(L*a*b*) - LC-Kurve\nbeschränken +HISTORY_MSG_173;(Rauschreduzierung)\nLuminanzdetails +HISTORY_MSG_174;(CIECAM02) +HISTORY_MSG_175;(CIECAM02) - Szene\nCAT02-Adaptation +HISTORY_MSG_176;(CIECAM02)\nBetrachtungsbed.\nUmgebung +HISTORY_MSG_177;(CIECAM02) - Szene\nLeuchtstärke +HISTORY_MSG_178;(CIECAM02)\nBetrachtungsbed.\nLeuchtstärke +HISTORY_MSG_179;(CIECAM02) - Szene\nWeißpunktmodell +HISTORY_MSG_180;(CIECAM02) - Helligkeit (J) +HISTORY_MSG_181;(CIECAM02) - Buntheit (H) +HISTORY_MSG_182;(CIECAM02) - Szene\nCAT02-Automatisch +HISTORY_MSG_183;(CIECAM02) - Kontrast (J) +HISTORY_MSG_184;(CIECAM02) - Szene\nDunkle Umgebung +HISTORY_MSG_185;(CIECAM02)\nBetrachtungsbed.\nGamutkontrolle +HISTORY_MSG_186;(CIECAM02) - Algorithmus +HISTORY_MSG_187;(CIECAM02) - Hautfarbtöne\nschützen +HISTORY_MSG_188;(CIECAM02) - Helligkeit (Q) +HISTORY_MSG_189;(CIECAM02) - Kontrast (Q) +HISTORY_MSG_190;(CIECAM02) - Sättigung (S) +HISTORY_MSG_191;(CIECAM02) - Farbigkeit (M) +HISTORY_MSG_192;(CIECAM02) - Farbton (H) +HISTORY_MSG_193;(CIECAM02)\nTonwertkurve 1 +HISTORY_MSG_194;(CIECAM02)\nTonwertkurve 2 +HISTORY_MSG_195;(CIECAM02)\nTonwertkurve 1 - Modus +HISTORY_MSG_196;(CIECAM02)\nTonwertkurve 2 - Modus +HISTORY_MSG_197;(CIECAM02) - Farbkurve +HISTORY_MSG_198;(CIECAM02) - Farbkurve\nModus +HISTORY_MSG_199;(CIECAM02) - Ausgabe-\nHistogramm anzeigen +HISTORY_MSG_200;(CIECAM02)\nDynamikkompression +HISTORY_MSG_201;(Rauschreduzierung)\nDelta-Chrominanz\nRot / Grün +HISTORY_MSG_202;(Rauschreduzierung)\nDelta-Chrominanz\nBlau / Gelb +HISTORY_MSG_203;(Rauschreduzierung)\nMethode +HISTORY_MSG_204;(Sensor Bayer-Matrix)\nFarbinterpolation\nLMMSE-Verbesserung +HISTORY_MSG_205;(CIECAM02)\nBetrachtungsbed.\nHot / Bad-Pixelfilter +HISTORY_MSG_206;(CIECAM02) - Szene\nAuto-Leuchtstärke +HISTORY_MSG_207;(Farbsaum entfernen)\nFarbtonkurve +HISTORY_MSG_208;(Weißabgleich)\nBlau / Rot-Korrektur +HISTORY_MSG_210;(Grauverlaufsfilter)\nRotationswinkel +HISTORY_MSG_211;(Grauverlaufsfilter) +HISTORY_MSG_212;(Vignettierungsfilter)\nIntensität +HISTORY_MSG_213;(Vignettierungsfilter) +HISTORY_MSG_214;(Schwarz/Weiß) +HISTORY_MSG_215;(Schwarz/Weiß) - Rot +HISTORY_MSG_216;(Schwarz/Weiß) - Grün +HISTORY_MSG_217;(Schwarz/Weiß) - Blau +HISTORY_MSG_218;(Schwarz/Weiß)\nGamma - Rot +HISTORY_MSG_219;(Schwarz/Weiß)\nGamma - Grün +HISTORY_MSG_220;(Schwarz/Weiß)\nGamma - Blau +HISTORY_MSG_221;(Schwarz/Weiß)\nFarbfilter +HISTORY_MSG_222;(Schwarz/Weiß)\nVorgaben +HISTORY_MSG_223;(Schwarz/Weiß) - Orange +HISTORY_MSG_224;(Schwarz/Weiß) - Gelb +HISTORY_MSG_225;(Schwarz/Weiß) - Cyan +HISTORY_MSG_226;(Schwarz/Weiß) - Magenta +HISTORY_MSG_227;(Schwarz/Weiß) - Violett +HISTORY_MSG_228;(Schwarz/Weiß)\nLuminanzequalizer +HISTORY_MSG_229;(Schwarz/Weiß)\nLuminanzequalizer +HISTORY_MSG_230;(Schwarz/Weiß) - Modus +HISTORY_MSG_231;(Schwarz/Weiß)\n“Bevor“-Kurve +HISTORY_MSG_232;(Schwarz/Weiß)\n“Bevor“-Kurventyp +HISTORY_MSG_233;(Schwarz/Weiß)\n“Danach“-Kurve +HISTORY_MSG_234;(Schwarz/Weiß)\n“Danach“-Kurventyp +HISTORY_MSG_235;(Schwarz/Weiß)\nAuto-Kanalmixer +HISTORY_MSG_236;--unused-- +HISTORY_MSG_237;(Schwarz/Weiß) - Mixer +HISTORY_MSG_238;(Grauverlaufsfilter)\nBereich +HISTORY_MSG_239;(Grauverlaufsfilter)\nIntensität +HISTORY_MSG_240;(Grauverlaufsfilter)\nRotationsachsen +HISTORY_MSG_241;(Vignettierungsfilter)\nBereich +HISTORY_MSG_242;(Vignettierungsfilter)\nForm +HISTORY_MSG_243;(Objektivkorrektur)\nVignettierung - Radius +HISTORY_MSG_244;(Objektivkorrektur)\nVignettierung - Faktor +HISTORY_MSG_245;(Objektivkorrektur)\nVignettierung - Zentrum +HISTORY_MSG_246;(L*a*b*) - CL-Kurve +HISTORY_MSG_247;(L*a*b*) - LH-Kurve +HISTORY_MSG_248;(L*a*b*) - HH-Kurve +HISTORY_MSG_249;(Detailebenenkontrast)\nSchwelle +HISTORY_MSG_250;(Rauschreduzierung)\nVerbesserung +HISTORY_MSG_251;(Schwarz/Weiß)\nAlgorithmus +HISTORY_MSG_252;(Detailebenenkontrast)\nHautfarbtöne schützen +HISTORY_MSG_253;(Detailebenenkontrast)\nArtefakte reduzieren +HISTORY_MSG_254;(Detailebenenkontrast)\nHautfarbton +HISTORY_MSG_255;(Rauschreduzierung)\nMedianfilter +HISTORY_MSG_256;(Rauschreduzierung)\nMediantyp +HISTORY_MSG_257;(Farbanpassungen) +HISTORY_MSG_258;(Farbanpassungen)\nFarbkurve +HISTORY_MSG_259;(Farbanpassungen)\nDeckkraftkurve +HISTORY_MSG_260;(Farbanpassungen)\na*[b*]-Transparenz +HISTORY_MSG_261;(Farbanpassungen)\nMethode +HISTORY_MSG_262;(Farbanpassungen)\nb*-Transparenz +HISTORY_MSG_263;(Farbanpassungen)\nSchatten - Blau / Rot +HISTORY_MSG_264;(Farbanpassungen)\nSchatten - Cyan / Grün +HISTORY_MSG_265;(Farbanpassungen)\nSchatten - Gelb / Blau +HISTORY_MSG_266;(Farbanpassungen)\nMitten - Blau / Rot +HISTORY_MSG_267;(Farbanpassungen)\nMitten - Cyan / Grün +HISTORY_MSG_268;(Farbanpassungen)\nMitten - Gelb / Blau +HISTORY_MSG_269;(Farbanpassungen)\nLichter - Blau / Rot +HISTORY_MSG_270;(Farbanpassungen)\nLichter - Cyan / Grün +HISTORY_MSG_271;(Farbanpassungen)\nLichter - Gelb / Blau +HISTORY_MSG_272;(Farbanpassungen)\nFarbausgleich +HISTORY_MSG_273;(Farbanpassungen)\nZurücksetzen +HISTORY_MSG_274;(Farbanpassungen)\nSättigung Schatten +HISTORY_MSG_275;(Farbanpassungen)\nSättigung Lichter +HISTORY_MSG_276;(Farbanpassungen)\nDeckkraft +HISTORY_MSG_277;--unused-- +HISTORY_MSG_278;(Farbanpassungen)\nLuminanz schützen +HISTORY_MSG_279;(Farbanpassungen)\nSchatten +HISTORY_MSG_280;(Farbanpassungen)\nLichter +HISTORY_MSG_281;(Farbanpassungen)\nSättigung schützen\nIntensität +HISTORY_MSG_282;(Farbanpassungen)\nSättigung schützen\nSchwelle +HISTORY_MSG_283;(Farbanpassungen)\nIntensität +HISTORY_MSG_284;(Farbanpassungen)\nSättigung schützen\nAutomatisch +HISTORY_MSG_285;(Rauschreduzierung)\nMedianmethode +HISTORY_MSG_286;(Rauschreduzierung)\nMediantyp +HISTORY_MSG_287;(Rauschreduzierung)\nMedianiterationen +HISTORY_MSG_288;(Weißbild)\nKontrolle zu heller Bereiche +HISTORY_MSG_289;(Weißbild)\nAuto-Kontrolle zu\nheller Bereiche +HISTORY_MSG_290;(Sensor X-Trans-Matrix)\nSchwarzpunkt - Rot +HISTORY_MSG_291;(Sensor X-Trans-Matrix)\nSchwarzpunkt - Grün +HISTORY_MSG_292;(Sensor X-Trans-Matrix)\nSchwarzpunkt - Blau +HISTORY_MSG_293;(Filmsimulation) +HISTORY_MSG_294;(Filmsimulation)\nIntensität +HISTORY_MSG_295;(Filmsimulation) - Film +HISTORY_MSG_296;(Rauschreduzierung)\nLuminanzkurve +HISTORY_MSG_297;(Rauschreduzierung)\nQualität +HISTORY_MSG_298;(Vorverarbeitung)\nDead-Pixel-Filter +HISTORY_MSG_299;(Rauschreduzierung)\nChrominanzkurve +HISTORY_MSG_300;- +HISTORY_MSG_301;(Rauschreduzierung)\nLuminanzkontrolle +HISTORY_MSG_302;(Rauschreduzierung)\nChrominanz - Methode +HISTORY_MSG_303;(Rauschreduzierung)\nChrominanz - Methode +HISTORY_MSG_304;(Wavelet)\nKontrastebenen +HISTORY_MSG_305;(Wavelet) +HISTORY_MSG_306;(Wavelet) - Einstellungen\nVerarbeitungsebene +HISTORY_MSG_307;(Wavelet) - Einstellungen\nVerarbeitung +HISTORY_MSG_308;(Wavelet) - Einstellungen\nVerarbeitungsrichtung +HISTORY_MSG_309;(Wavelet)\nKantenschärfung\nDetails +HISTORY_MSG_310;(Wavelet) - Restbild\nHimmelsfarbtöne\nschützen +HISTORY_MSG_311;(Wavelet) - Einstellungen\nAnzahl der Ebenen +HISTORY_MSG_312;(Wavelet) - Restbild\nSchatten Schwelle +HISTORY_MSG_313;(Wavelet) - Farbe\nEbenengrenze +HISTORY_MSG_314;(Wavelet) - Gamut\nArtefakte reduzieren +HISTORY_MSG_315;(Wavelet) - Restbild\nKontrast +HISTORY_MSG_316;(Wavelet) - Gamut\nHautfarbtöne schützen +HISTORY_MSG_317;(Wavelet) - Gamut\nHautfarbton +HISTORY_MSG_318;(Wavelet) - Kontrast\nLichterebenen +HISTORY_MSG_319;(Wavelet) - Kontrast\nLichter-Luminanzbereich +HISTORY_MSG_320;(Wavelet) - Kontrast\nSchatten-Luminanzbereich +HISTORY_MSG_321;(Wavelet) - Kontrast\nSchattenebenen +HISTORY_MSG_322;(Wavelet) - Gamut\nFarbverschiebungen\nvermeiden +HISTORY_MSG_323;(Wavelet)\nKantenschärfung\nLokale Kontrastkurve +HISTORY_MSG_324;(Wavelet) - Farbe\nPastellfarben +HISTORY_MSG_325;(Wavelet) - Farbe\nGesättigte Farben +HISTORY_MSG_326;(Wavelet) - Farbe\nChrominanzethode +HISTORY_MSG_327;(Wavelet) - Kontrast\nAnwenden auf +HISTORY_MSG_328;(Wavelet) - Farbe\nFarb-Kontrast-\nVerknüpfung +HISTORY_MSG_329;(Wavelet) - Tönung\nDeckkraft Rot / Grün +HISTORY_MSG_330;(Wavelet) - Tönung\nDeckkraft Blau / Gelb +HISTORY_MSG_331;(Wavelet)\nKontrastebenen\nExtra +HISTORY_MSG_332;(Wavelet)- -Einstellungen\nKachelgröße +HISTORY_MSG_333;(Wavelet) - Restbild\nSchatten +HISTORY_MSG_334;(Wavelet) - Restbild\nBuntheit +HISTORY_MSG_335;(Wavelet) - Restbild\nLichter +HISTORY_MSG_336;(Wavelet) - Restbild\nLichter Schwelle +HISTORY_MSG_337;(Wavelet) - Restbild\nHimmelsfarbton +HISTORY_MSG_338;(Wavelet)\nKantenschärfung\nRadius +HISTORY_MSG_339;(Wavelet)\nKantenschärfung\nIntensität +HISTORY_MSG_340;(Wavelet) - Einstellungen\nIntensität +HISTORY_MSG_341;(Wavelet) - Einstellungen\nKantenperformance +HISTORY_MSG_342;(Wavelet)\nKantenschärfung\nErste Ebene +HISTORY_MSG_343;(Wavelet) - Farbe\nFarbebenen +HISTORY_MSG_344;(Wavelet)\nFarbmethode\nRegler/Kurve +HISTORY_MSG_345;(Wavelet)\nKantenschärfung\nLokaler Kontrast +HISTORY_MSG_346;(Wavelet)\nKantenschärfung\nLokale Kontrastmethode +HISTORY_MSG_347;(Wavelet)\nRauschreduzierung\nEbene 1 +HISTORY_MSG_348;(Wavelet)\nRauschreduzierung\nEbene 2 +HISTORY_MSG_349;(Wavelet)\nRauschreduzierung\nEbene 3 +HISTORY_MSG_350;(Wavelet)\nKantenschärfung\nKantenerkennung +HISTORY_MSG_351;(Wavelet) - Restbild\nHH-Kurve +HISTORY_MSG_352;(Wavelet) - Einstellungen\nHintergrund +HISTORY_MSG_353;(Wavelet)\nKantenschärfung\nGradientenempfindlichkeit +HISTORY_MSG_354;(Wavelet)\nKantenschärfung\nErweiterter Algorithmus +HISTORY_MSG_355;(Wavelet)\nKantenschärfung\nSchwelle niedrig +HISTORY_MSG_356;(Wavelet)\nKantenschärfung\nSchwelle hoch +HISTORY_MSG_357;(Wavelet)\nRauschreduzierung\nSchärfung verknüpfen +HISTORY_MSG_358;(Wavelet) - Gamut\nKontrastkurve +HISTORY_MSG_359;(Vorverarbeitung)\nHot / Dead-Pixel-Filter\nSchwelle +HISTORY_MSG_360;(Dynamikkompression)\nGamma +HISTORY_MSG_361;(Wavelet) - Endretusche\nFarbausgleich +HISTORY_MSG_362;(Wavelet) - Restbild\nKompression +HISTORY_MSG_363;(Wavelet) - Restbild\nKompression - Intensität +HISTORY_MSG_364;(Wavelet) - Endretusche\nKontrastausgleich +HISTORY_MSG_365;(Wavelet) - Endretusche\nDelta-Kontrastausgleich +HISTORY_MSG_366;(Wavelet) - Restbild\nGammakompression +HISTORY_MSG_367;(Wavelet) - Endretusche\n"Danach"-Kontrastkurve +HISTORY_MSG_368;(Wavelet) - Endretusche\nKontrastausgleichskurve +HISTORY_MSG_369;(Wavelet) - Endretusche\nKontrastmethode +HISTORY_MSG_370;(Wavelet) - Endretusche\nLokale Kontrastkurve +HISTORY_MSG_371;(Skalieren) - Schärfen +HISTORY_MSG_372;(Skalieren) - Schärfen\nUSM - Radius +HISTORY_MSG_373;(Skalieren) - Schärfen\nUSM - Intensität +HISTORY_MSG_374;(Skalieren) - Schärfen\nUSM - Schwelle +HISTORY_MSG_375;(Skalieren) - Schärfen\nUSM - Nur Kanten\nschärfen +HISTORY_MSG_376;(Skalieren) - Schärfen\nUSM - Kantenschärfung\nRadius +HISTORY_MSG_377;(Skalieren) - Schärfen\nUSM - Kantentoleranz +HISTORY_MSG_378;(Skalieren) - Schärfen\nUSM - Halokontrolle +HISTORY_MSG_379;(Skalieren) - Schärfen\nUSM - Halokontrolle\nIntensität +HISTORY_MSG_380;(Skalieren) - Schärfen\nMethode +HISTORY_MSG_381;(Skalieren) - Schärfen\nRLD - Radius +HISTORY_MSG_382;(Skalieren) - Schärfen\nRLD - Intensität +HISTORY_MSG_383;(Skalieren) - Schärfen\nRLD - Dämpfung +HISTORY_MSG_384;(Skalieren) - Schärfen\nRLD - Iterationen +HISTORY_MSG_385;(Wavelet) - Restbild\nFarbausgleich +HISTORY_MSG_386;(Wavelet) - Restbild\nFarbausgleich\nLichter Grün / Cyan +HISTORY_MSG_387;(Wavelet) - Restbild\nFarbausgleich\nLichter Blau / Gelb +HISTORY_MSG_388;(Wavelet) - Restbild\nFarbausgleich\nMitten Grün / Cyan +HISTORY_MSG_389;(Wavelet) - Restbild\nFarbausgleich\nMitten Blau / Gelb +HISTORY_MSG_390;(Wavelet) - Restbild\nFarbausgleich\nSchatten Grün / Cyan +HISTORY_MSG_391;(Wavelet) - Restbild\nFarbausgleich\nSchatten Blau / Gelb +HISTORY_MSG_392;(Wavelet) - Restbild\nFarbausgleich +HISTORY_MSG_393;(Farbmanagement)\nEingangsfarbprofil\nDCP - Look-Tabelle +HISTORY_MSG_394;(Farbmanagement)\nEingangsfarbprofil\nDCP - Basisbelichtung +HISTORY_MSG_395;(Farbmanagement)\nEingangsfarbprofil\nDCP - Basistabelle +HISTORY_MSG_396;(Wavelet) - Kontrast +HISTORY_MSG_397;(Wavelet) - Farbe +HISTORY_MSG_398;(Wavelet)\nKantenschärfung +HISTORY_MSG_399;(Wavelet) - Restbild +HISTORY_MSG_400;(Wavelet) - Endretusche +HISTORY_MSG_401;(Wavelet) - Tönung +HISTORY_MSG_402;(Wavelet)\nRauschreduzierung +HISTORY_MSG_403;(Wavelet)\nKantenschärfung\nKantenempfindlichkeit +HISTORY_MSG_404;(Wavelet)\nKantenschärfung\nGrundverstärkung +HISTORY_MSG_405;(Wavelet)\nRauschreduzierung\nEbene 4 +HISTORY_MSG_406;(Wavelet)\nKantenschärfung\nBenachbarte Pixel +HISTORY_MSG_407;(Retinex) - Methode +HISTORY_MSG_408;(Retinex) - Radius +HISTORY_MSG_409;(Retinex) - Einstellungen\nKontrast +HISTORY_MSG_410;(Retinex) - Einstellungen\nVerstärkung und Ausgleich\nAusgleich +HISTORY_MSG_411;(Retinex) - Intensität +HISTORY_MSG_412;(Retinex) - Einstellungen\nDynamikkompression\nGaußscher Gradient +HISTORY_MSG_413;(Retinex) - Kontrast +HISTORY_MSG_414;(Retinex) - Einstellungen\nKorrekturen\nLuminanz(L) - L*a*b* +HISTORY_MSG_415;(Retinex) - Einstellungen\nTransmission\nTransmissionskurve +HISTORY_MSG_416;(Retinex) +HISTORY_MSG_417;(Retinex) - Einstellungen\nTransmission\nMedianfilter +HISTORY_MSG_418;(Retinex) - Einstellungen\nTransmission\nSchwelle +HISTORY_MSG_419;(Retinex) - Farbraum +HISTORY_MSG_420;(Retinex) - Einstellungen\nHSL-Kurve +HISTORY_MSG_421;(Retinex) - Einstellungen\nKorrekturen\nGammakorrektur +HISTORY_MSG_422;(Retinex) - Einstellungen\nGamma +HISTORY_MSG_423;(Retinex) - Einstellungen\nGammasteigung +HISTORY_MSG_424;(Retinex) - Einstellungen\nHL-Schwelle +HISTORY_MSG_425;(Retinex) - Einstellungen\nBasis-Logarithmus +HISTORY_MSG_426;(Retinex) - Einstellungen\nKorrekturen - Farbton (H) +HISTORY_MSG_427;Ausgabe-Rendering-Intent +HISTORY_MSG_428;Monitor-Rendering-Intent +HISTORY_MSG_429;(Retinex) - Einstellungen\nDynamikkompression\nIterationen +HISTORY_MSG_430;(Retinex) - Einstellungen\nDynamikkompression\nTransmission Gradient +HISTORY_MSG_431;(Retinex) - Einstellungen\nDynamikkompression\nIntensität Gradient +HISTORY_MSG_432;(Retinex) - Maske\nLichter +HISTORY_MSG_433;(Retinex) - Maske\nTonwertbreite Lichter +HISTORY_MSG_434;(Retinex) - Maske\nSchatten +HISTORY_MSG_435;(Retinex) - Maske\nTonwertbreite Schatten +HISTORY_MSG_436;(Retinex) - Maske\nRadius +HISTORY_MSG_437;(Retinex) - Maske\nMethode +HISTORY_MSG_438;(Retinex) - Maske\nKurve +HISTORY_MSG_439;(Retinex) - Vorschau +HISTORY_MSG_440;(Detailebenenkontrast)\nProzessreihenfolge +HISTORY_MSG_441;(Retinex) - Einstellungen\nVerstärkung und Ausgleich\nTransmissionsverstärkung +HISTORY_MSG_442;(Retinex) - Einstellungen\nTransmission - Skalierung +HISTORY_MSG_443;(Farbmanagement)\nAusgabeprofil\nSchwarzpunkt-Kompensation +HISTORY_MSG_444;(Weißabgleich)\nAWB-Temperatur-Korrektur HISTORY_NEWSNAPSHOT;Hinzufügen HISTORY_NEWSNAPSHOT_TOOLTIP;Taste: Alt + s HISTORY_SNAPSHOT;Schnappschuss @@ -989,14 +988,15 @@ PREFERENCES_FLATFIELDFOUND;Gefunden PREFERENCES_FLATFIELDSDIR;Weißbild-Verzeichnis PREFERENCES_FLATFIELDSHOTS;Aufnahmen PREFERENCES_FLATFIELDTEMPLATES;Vorlagen -PREFERENCES_FLUOF11;Fluoreszenz F11 PREFERENCES_FLUOF2;Fluoreszenz F2 PREFERENCES_FLUOF7;Fluoreszenz F7 +PREFERENCES_FLUOF11;Fluoreszenz F11 PREFERENCES_FORIMAGE;Für Bilddateien PREFERENCES_FORRAW;Für RAW-Dateien PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Gleiche Miniaturbildgröße in der Dateiverwaltung und dem Filmstreifen verwenden PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Unterschiedliche Miniaturbildgrößen benötigen mehr Verarbeitungszeit beim Wechsel zwischen der Dateiverwaltung und dem Editor PREFERENCES_GIMPPATH;GIMP Installationsverzeichnis +PREFERENCES_GREY;Yb-Luminanz (%) des Ausgabegerätes PREFERENCES_GREY05;Yb = 05 CIE L#30 PREFERENCES_GREY10;Yb = 10 CIE L#40 PREFERENCES_GREY15;Yb = 15 CIE L#45 @@ -1004,9 +1004,8 @@ PREFERENCES_GREY18;Yb = 18 CIE L#50 PREFERENCES_GREY23;Yb = 23 CIE L#55 PREFERENCES_GREY30;Yb = 30 CIE L#60 PREFERENCES_GREY40;Yb = 40 CIE L#70 -PREFERENCES_GREY;Yb-Luminanz (%) des Ausgabegerätes -PREFERENCES_GREYSC18;Yb = 18 CIE L#49 PREFERENCES_GREYSC;Szenen-Yb-Luminanz (%) +PREFERENCES_GREYSC18;Yb = 18 CIE L#49 PREFERENCES_GREYSCA;Automatisch PREFERENCES_HISTOGRAMPOSITIONLEFT;Histogramm linksseitig PREFERENCES_HISTOGRAMWORKING;Das Arbeitsprofil zur Darstellung des Haupthistogramms verwenden @@ -1440,9 +1439,9 @@ TP_DIRPYRDENOISE_MANU;Benutzerdefiniert TP_DIRPYRDENOISE_MED;Medianfilter TP_DIRPYRDENOISE_MEDMETHOD;Medianmethode TP_DIRPYRDENOISE_MEDTYPE;Mediantyp +TP_DIRPYRDENOISE_METHOD;Methode TP_DIRPYRDENOISE_METHOD11;Qualität TP_DIRPYRDENOISE_METHOD11_TOOLTIP;Einstellung der Qualität der Rauschreduzierung.\nDie Einstellung “Hoch“ verbessert die Rausch-\nreduzierung auf Kosten der Verarbeitungszeit. -TP_DIRPYRDENOISE_METHOD;Methode TP_DIRPYRDENOISE_METHOD_TOOLTIP;Für RAW-Bilder kann entweder die RGB-\noder L*a*b*-Methode verwendet werden.\n\nFür andere Bilder wird unabhängig von der\nAuswahl immer die L*a*b*-Methode verwendet. TP_DIRPYRDENOISE_METM_TOOLTIP;Bei der Methode “Nur Luminanz“ und “L*a*b*“,\nwird der Medianfilter nach den Waveletschritten\nverarbeitet.\nBei RGB wird der Medianfilter am Ende der\nRauschreduzierung verarbeitet. TP_DIRPYRDENOISE_MET_TOOLTIP;Einen Medianfilter mit der gewünschten Fenstergröße auswählen.\nJe größer das Fenster, umso länger dauert die Verarbeitungszeit.\n\n3×3 weich: Nutzt 5 Pixel in einem 3×3-Pixelfenster.\n3×3: Nutzt 9 Pixel in einem 3×3-Pixelfenster.\n5×5 weich: Nutzt 13 Pixel in einem 5×5-Pixelfenster.\n5×5: Nutzt 25 Pixel in einem 5×5-Pixelfenster.\n7×7: Nutzt 49 Pixel in einem 7×7-Pixelfenster.\n9×9: Nutzt 81 Pixel in einem 9×9-Pixelfenster.\n\nManchmal ist das Ergebnis mit einem kleineren Fenster und mehreren Iterationen besser, als mit einem größeren und nur einer Iteration. @@ -1771,8 +1770,8 @@ TP_RETINEX_SLOPE;Gammasteigung TP_RETINEX_STRENGTH;Intensität TP_RETINEX_THRESHOLD;Schwelle TP_RETINEX_THRESHOLD_TOOLTIP;Limitiert den Bereich der Transmissionskurve. -TP_RETINEX_TLABEL2;T: Tmin = %1, Tmax = %2 TP_RETINEX_TLABEL;T: Min = %1, Max = %2\nT: Mittel = %3, Sigma = %4 +TP_RETINEX_TLABEL2;T: Tmin = %1, Tmax = %2 TP_RETINEX_TLABEL_TOOLTIP;Ergebnis der Transmissionskurve: Min, Max, Mittel und Sigma\nMin und Max hat Einfluss auf die Abweichung.\n\nTmin = Kleinster Wert der Transmissionskurve\nTmax = Größter Wert der Transmissionskurve TP_RETINEX_TRANF;Transmission TP_RETINEX_TRANSMISSION;Transmissionskurve @@ -1784,8 +1783,8 @@ TP_RETINEX_VIEW;Vorschau TP_RETINEX_VIEW_MASK;Maske TP_RETINEX_VIEW_METHOD_TOOLTIP;Standard: Normale Anzeige\n\nMaske: Zeigt die Maske an\n\nUnschärfemaske: Zeigt das Bild mit einem großen\nUnschärfemaskenradius an.\n\nTransmission-Auto / Fest: Zeigt die Transmissionskarte\nvor der Anwendung von Kontrast und Helligkeit an.\n\nACHTUNG: Die Maske zeigt nicht das Endergebnis, sondern\nverstärkt den Effekt um ihn besser beurteilen zu können. TP_RETINEX_VIEW_NONE;Standard -TP_RETINEX_VIEW_TRAN2;Transmission - Fest TP_RETINEX_VIEW_TRAN;Transmission - Auto +TP_RETINEX_VIEW_TRAN2;Transmission - Fest TP_RETINEX_VIEW_UNSHARP;Unschärfemaske TP_RGBCURVES_BLUE;B TP_RGBCURVES_CHANNEL;Kanal @@ -1909,12 +1908,12 @@ TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Wendet eine Kontrasthelligkeitskurve\nam Ende TP_WAVELET_CURVEEDITOR_HH;HH TP_WAVELET_CURVEEDITOR_HH_TOOLTIP;Farbton als Funktion des Farbtons H = f(H) TP_WAVELET_DALL;Alle Richtungen -TP_WAVELET_DAUB10;D10 - mittel -TP_WAVELET_DAUB14;D14 - hoch +TP_WAVELET_DAUB;Kantenperformance TP_WAVELET_DAUB2;D2 - niedrig TP_WAVELET_DAUB4;D4 - Standard TP_WAVELET_DAUB6;D6 - Standard Plus -TP_WAVELET_DAUB;Kantenperformance +TP_WAVELET_DAUB10;D10 - mittel +TP_WAVELET_DAUB14;D14 - hoch TP_WAVELET_DAUB_TOOLTIP;Ändert den Daubechies-Koeffizienten:\nD4 = Standard\nD14 = Häufig bestes Ergebnis auf Kosten\nvon ca. 10% längerer Verarbeitungszeit.\n\nVerbessert die Kantenerkennung sowie die Qualität\nder ersten Waveletebene. Jedoch hängt die Qualität\nnicht ausschließlich mit diesem Koeffizienten zusammen\nund kann je nach Bild und Einsatz variieren. TP_WAVELET_DONE;Vertikal TP_WAVELET_DTHR;Diagonal @@ -1925,8 +1924,8 @@ TP_WAVELET_EDGCONT_TOOLTIP;Verschieben der Punkte nach links, verringert den Kon TP_WAVELET_EDGE;Kantenschärfung TP_WAVELET_EDGEAMPLI;Grundverstärkung TP_WAVELET_EDGEDETECT;Gradientenempfindlichkeit -TP_WAVELET_EDGEDETECTTHR2;Schwelle hoch (Erkennung) TP_WAVELET_EDGEDETECTTHR;Schwelle niedrig (Rauschen) +TP_WAVELET_EDGEDETECTTHR2;Schwelle hoch (Erkennung) TP_WAVELET_EDGEDETECTTHR_TOOLTIP;Schwelle der Kantenerkennung für feine Details.\nVerhindert die Schärfung von Rauschen. TP_WAVELET_EDGEDETECT_TOOLTIP;Verschieben des Reglers nach rechts erhöht die\nKantenempfindlichkeit. Die Einstellung wirkt sich\nauf den lokalen Kontrast, Kanteneinstellungen und\nRauschen aus. TP_WAVELET_EDGESENSI;Kantenempfindlichkeit @@ -2002,9 +2001,9 @@ TP_WAVELET_STREN;Intensität TP_WAVELET_STRENGTH;Intensität TP_WAVELET_SUPE;Extra TP_WAVELET_THR;Schatten Schwelle +TP_WAVELET_THRESHOLD;Lichterebenen TP_WAVELET_THRESHOLD2;Schattenebenen TP_WAVELET_THRESHOLD2_TOOLTIP;Legt die Ebene der Untergrenze (9 minus Wert)\nfür den Schatten-Luminanzbereich fest. Der\nmaximal mögliche Wert wird vom Wert der Lichter-\nebenen begrenzt.\n\nBeeinflussbare Ebenen: Untergrenze bis Ebene 9 -TP_WAVELET_THRESHOLD;Lichterebenen TP_WAVELET_THRESHOLD_TOOLTIP;Legt die Ebene der Obergrenze für den Lichter\n-Luminanzbereich fest. Der Wert begrenzt die\nmaximal möglichen Schattenebenen.\n\nBeeinflussbare Ebenen: Ebene 1 bis Obergrenze TP_WAVELET_THRH;Lichter Schwelle TP_WAVELET_TILESBIG;Große Kacheln @@ -2027,9 +2026,6 @@ TP_WBALANCE_FLASH55;Leica TP_WBALANCE_FLASH60;Standard, Canon, Pentax, Olympus TP_WBALANCE_FLASH65;Nikon, Panasonic, Sony, Minolta TP_WBALANCE_FLASH_HEADER;Blitz -TP_WBALANCE_FLUO10;F10 - Philips TL85 -TP_WBALANCE_FLUO11;F11 - Philips TL84 -TP_WBALANCE_FLUO12;F12 - Philips TL83 TP_WBALANCE_FLUO1;F1 - Tageslicht TP_WBALANCE_FLUO2;F2 - Kaltweiß TP_WBALANCE_FLUO3;F3 - Weiß @@ -2039,6 +2035,9 @@ TP_WBALANCE_FLUO6;F6 - Weiß reduziert TP_WBALANCE_FLUO7;F7 - D65 Tageslichtsimulation TP_WBALANCE_FLUO8;F8 - D50 / Sylvania F40 Design TP_WBALANCE_FLUO9;F9 - Kaltweiß Deluxe +TP_WBALANCE_FLUO10;F10 - Philips TL85 +TP_WBALANCE_FLUO11;F11 - Philips TL84 +TP_WBALANCE_FLUO12;F12 - Philips TL83 TP_WBALANCE_FLUO_HEADER;Leuchtstofflampe TP_WBALANCE_GREEN;Tönung TP_WBALANCE_GTI;GTI @@ -2071,3 +2070,4 @@ ZOOMPANEL_ZOOMFITCROPSCREEN;Ausschnitt an Bildschirm anpassen\nTaste: Alt ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen\nTaste: f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - + diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 30e9bffab..cb0bfa7ad 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1019,7 +1019,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_EXPAUT;Expert !PREFERENCES_EXTERNALEDITOR;External Editor !PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILEFORMAT;File format !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field @@ -1113,7 +1113,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTLANG;Select language !PREFERENCES_SELECTTHEME;Select theme !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 63fe55143..f9aa862f4 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -948,7 +948,7 @@ !PREFERENCES_EXPAUT;Expert !PREFERENCES_EXTERNALEDITOR;External Editor !PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILEFORMAT;File format !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field @@ -1049,7 +1049,7 @@ !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SELECTLANG;Select language !PREFERENCES_SELECTTHEME;Select theme diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 5bc77fdd8..7dce64cdf 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1115,7 +1115,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field !PREFERENCES_FLATFIELDFOUND;Found @@ -1189,7 +1189,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 6643930de..e71a2c1e0 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1114,7 +1114,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field !PREFERENCES_FLATFIELDFOUND;Found @@ -1188,7 +1188,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 1c3a97c16..d0a5d9023 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1115,7 +1115,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field !PREFERENCES_FLATFIELDFOUND;Found @@ -1189,7 +1189,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index bc3546cba..4594b8250 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1115,7 +1115,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field !PREFERENCES_FLATFIELDFOUND;Found @@ -1189,7 +1189,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 79ad3ebfd..2525bb55e 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1114,7 +1114,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field !PREFERENCES_FLATFIELDFOUND;Found @@ -1188,7 +1188,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index b7ab9b7bf..a08f2453d 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -1115,7 +1115,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field !PREFERENCES_FLATFIELDFOUND;Found @@ -1189,7 +1189,7 @@ TP_WBALANCE_TEMPERATURE;Temperatura !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 070c2f4a1..4fbe51c42 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1165,7 +1165,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two. !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field !PREFERENCES_FLATFIELDFOUND;Found diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index d14a02808..aeed6500f 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1116,7 +1116,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field !PREFERENCES_FLATFIELDFOUND;Found @@ -1190,7 +1190,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index 03eb15ca3..e9da40531 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1115,7 +1115,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_EDITORLAYOUT;Editor Layout !PREFERENCES_EXPAUT;Expert -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar (de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) !PREFERENCES_FILMSIMULATION;Film Simulation !PREFERENCES_FLATFIELD;Flat-Field !PREFERENCES_FLATFIELDFOUND;Found @@ -1189,7 +1189,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". !PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels !PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements. -!PREFERENCES_SELECTFONT;Select global font +!PREFERENCES_SELECTFONT;Select main font !PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font !PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings !PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files From ef754f7593811182f0bfc640ea7a64b0130d7fd0 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 18 Feb 2017 16:01:41 +0100 Subject: [PATCH 15/15] LCP vignetting correction only works with undemosaiced raw files. fixes #3702 --- rtengine/rawimagesource.cc | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 049c509f5..5d4f51934 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -1769,14 +1769,31 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le if (pLCPProf) { // don't check focal length to allow distortion correction for lenses without chip, also pass dummy focal length 1 in case of 0 LCPMapper map(pLCPProf, max(idata->getFocalLen(), 1.0), idata->getFocalLen35mm(), idata->getFocusDist(), idata->getFNumber(), true, false, W, H, coarse, -1); +if (ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS || ri->get_colors() == 1) { #ifdef _OPENMP - #pragma omp parallel for + #pragma omp parallel for #endif - for (int y = 0; y < H; y++) { - for (int x = 0; x < W; x++) { - if (rawData[y][x] > 0) { - rawData[y][x] *= map.calcVignetteFac(x, y); + for (int y = 0; y < H; y++) { + for (int x = 0; x < W; x++) { + if (rawData[y][x] > 0) { + rawData[y][x] *= map.calcVignetteFac(x, y); + } + } + } + } else if(ri->get_colors() == 3) { +#ifdef _OPENMP + #pragma omp parallel for +#endif + + for (int y = 0; y < H; y++) { + for (int x = 0; x < W; x++) { + float vignFactor = map.calcVignetteFac(x, y); + for(int c = 0;c < 3; ++c) { + if (rawData[y][3 * x + c] > 0) { + rawData[y][3 * x + c] *= vignFactor; + } + } } } }