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