Merge with branch 'dev/newlocallab'...

This commit is contained in:
Pandagrapher 2019-01-25 12:58:28 +01:00
commit 8c90b560d7
50 changed files with 1667 additions and 1874 deletions

View File

@ -1358,6 +1358,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1442,6 +1443,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!MAIN_MSG_WRITEFAILED;Failed to write\n<b>"%1"</b>\n\nMake sure that the folder exists and that you have write permission to it.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: <b>Alt-w</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: <b>middle grey</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the <b>sharpening contrast mask</b>.\nShortcut: <b>p</b>\n\nOnly works when sharpening is enabled and zoom >= 100%.
@ -2132,6 +2135,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: <b>-</b>
!TP_RGBCURVES_LUMAMODE_TOOLTIP;<b>Luminosity mode</b> allows to vary the contribution of R, G and B channels to the luminosity of the image, without altering image color.
!TP_SAVEDIALOG_OK_TIP;Shortcut: <b>Ctrl-Enter</b>
!TP_SHADOWSHLIGHTS_SHARPMASK;Sharp mask
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light

View File

@ -1429,6 +1429,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1511,6 +1512,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: <b>-</b>
!MAIN_MSG_WRITEFAILED;Failed to write\n<b>"%1"</b>\n\nMake sure that the folder exists and that you have write permission to it.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: <b>Alt-w</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: <b>theme-based</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: <b>black</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: <b>white</b>\nShortcut: <b>9</b>
@ -2102,6 +2105,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: <b>-</b>
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast

View File

@ -1026,6 +1026,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1125,6 +1126,8 @@ TP_WBALANCE_TEMPERATURE;色溫
!MAIN_TAB_DETAIL_TOOLTIP;Shortcut: <b>Alt-d</b>
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
!MAIN_TAB_RAW;Raw
@ -2067,6 +2070,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
!TP_SHARPENMICRO_CONTRAST;Contrast threshold

View File

@ -2344,3 +2344,11 @@ ZOOMPANEL_ZOOMFITSCREEN;Přizpůsobit celý obrázek obrazovce\nZkratka: <b>Alt<
ZOOMPANEL_ZOOMIN;Přiblížit\nZkratka: <b>+</b>
ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: <b>-</b>
!!!!!!!!!!!!!!!!!!!!!!!!!
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!TP_SHARPENING_BLUR;Blur radius

View File

@ -1021,6 +1021,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1121,6 +1122,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!MAIN_TAB_DETAIL_TOOLTIP;Shortcut: <b>Alt-d</b>
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
!MAIN_TAB_RAW;Raw
@ -2065,6 +2068,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
!TP_SHARPENMICRO_CONTRAST;Contrast threshold

View File

@ -2408,3 +2408,11 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: <b>Alt</b> + <b>f</b>
ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: <b>+</b>
ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: <b>-</b>
!!!!!!!!!!!!!!!!!!!!!!!!!
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!TP_SHARPENING_BLUR;Blur radius

View File

@ -865,6 +865,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
@ -1002,6 +1003,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE;Exposure
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_FILTER; Filter
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_IPTC;IPTC
@ -2044,6 +2047,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_AMOUNT;Amount
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENING_EDRADIUS;Radius
!TP_SHARPENING_EDTOLERANCE;Edge tolerance

View File

@ -776,6 +776,7 @@
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -915,6 +916,8 @@
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE;Exposure
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_FILTER; Filter
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_IPTC;IPTC
@ -2034,6 +2037,7 @@
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_AMOUNT;Amount
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENING_EDRADIUS;Radius
!TP_SHARPENING_EDTOLERANCE;Edge tolerance

View File

@ -2459,3 +2459,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: <b>-</b>
!!!!!!!!!!!!!!!!!!!!!!!!!
!CURVEEDITOR_CATMULLROM;Flexible
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!TP_SHARPENING_BLUR;Blur radius

View File

@ -1022,6 +1022,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1122,6 +1123,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!MAIN_TAB_DETAIL_TOOLTIP;Shortcut: <b>Alt-d</b>
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
!MAIN_TAB_RAW;Raw
@ -2066,6 +2069,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
!TP_SHARPENMICRO_CONTRAST;Contrast threshold

View File

@ -2333,3 +2333,11 @@ ZOOMPANEL_ZOOMFITSCREEN;Affiche l'image entière\nRaccourci: <b>Alt</b>-<b>f</b>
ZOOMPANEL_ZOOMIN;Zoom Avant\nRaccourci: <b>+</b>
ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
!!!!!!!!!!!!!!!!!!!!!!!!!
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!TP_SHARPENING_BLUR;Blur radius

View File

@ -1021,6 +1021,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1121,6 +1122,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!MAIN_TAB_DETAIL_TOOLTIP;Shortcut: <b>Alt-d</b>
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
!MAIN_TAB_RAW;Raw
@ -2065,6 +2068,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
!TP_SHARPENMICRO_CONTRAST;Contrast threshold

View File

@ -1022,6 +1022,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1122,6 +1123,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!MAIN_TAB_DETAIL_TOOLTIP;Shortcut: <b>Alt-d</b>
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
!MAIN_TAB_RAW;Raw
@ -2066,6 +2069,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
!TP_SHARPENMICRO_CONTRAST;Contrast threshold

View File

@ -1605,6 +1605,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1681,6 +1682,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: <b>Alt-w</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: <b>middle grey</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the <b>sharpening contrast mask</b>.\nShortcut: <b>p</b>\n\nOnly works when sharpening is enabled and zoom >= 100%.
@ -2141,6 +2144,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: <b>-</b>
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light

View File

@ -2337,3 +2337,11 @@ ZOOMPANEL_ZOOMFITSCREEN;画像全体を画面に合わせる\nショートカッ
ZOOMPANEL_ZOOMIN;ズームイン\nショートカット: <b>+</b>
ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: <b>-</b>
!!!!!!!!!!!!!!!!!!!!!!!!!
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!TP_SHARPENING_BLUR;Blur radius

View File

@ -1022,6 +1022,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1122,6 +1123,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!MAIN_TAB_DETAIL_TOOLTIP;Shortcut: <b>Alt-d</b>
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
!MAIN_TAB_RAW;Raw
@ -2066,6 +2069,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
!TP_SHARPENMICRO_CONTRAST;Contrast threshold

View File

@ -1291,6 +1291,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1375,6 +1376,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!MAIN_MSG_WRITEFAILED;Failed to write\n<b>"%1"</b>\n\nMake sure that the folder exists and that you have write permission to it.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: <b>Alt-w</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: <b>theme-based</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: <b>black</b>\nShortcut: <b>9</b>
@ -2124,6 +2127,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés <b>-</b>
!TP_RGBCURVES_LUMAMODE_TOOLTIP;<b>Luminosity mode</b> allows to vary the contribution of R, G and B channels to the luminosity of the image, without altering image color.
!TP_SAVEDIALOG_OK_TIP;Shortcut: <b>Ctrl-Enter</b>
!TP_SHADOWSHLIGHTS_SHARPMASK;Sharp mask
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light

View File

@ -2135,6 +2135,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -2185,6 +2186,8 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: <b>-</b>
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: <b>Alt-w</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: <b>middle grey</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the <b>sharpening contrast mask</b>.\nShortcut: <b>p</b>\n\nOnly works when sharpening is enabled and zoom >= 100%.
!OPTIONS_BUNDLED_MISSING;The bundled profile "<b>%1</b>" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead.
@ -2343,6 +2346,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: <b>-</b>
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_MAP;Method
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light

View File

@ -1021,6 +1021,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1121,6 +1122,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!MAIN_TAB_DETAIL_TOOLTIP;Shortcut: <b>Alt-d</b>
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
!MAIN_TAB_RAW;Raw
@ -2065,6 +2068,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
!TP_SHARPENMICRO_CONTRAST;Contrast threshold

View File

@ -1687,6 +1687,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1763,6 +1764,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: <b>Alt-w</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: <b>middle grey</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the <b>sharpening contrast mask</b>.\nShortcut: <b>p</b>\n\nOnly works when sharpening is enabled and zoom >= 100%.
@ -2147,6 +2150,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: <b>-</b>
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light

View File

@ -1687,6 +1687,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1763,6 +1764,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: <b>-</b>
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: <b>Alt-w</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: <b>middle grey</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the <b>sharpening contrast mask</b>.\nShortcut: <b>p</b>\n\nOnly works when sharpening is enabled and zoom >= 100%.
@ -2147,6 +2150,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: <b>-</b>
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light

View File

@ -2248,8 +2248,11 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!PARTIALPASTE_DEHAZE;Haze removal
!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift
!PREFERENCES_APPEARANCE;Appearance
@ -2313,5 +2316,6 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: <b>-</b>
!TP_RETINEX_CONTEDIT_MAP;Equalizer
!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_MAP;Method
!TP_SHARPENING_BLUR;Blur radius
!TP_TM_FATTAL_THRESHOLD;Detail
!TP_WBALANCE_PICKER;Pick

View File

@ -1770,6 +1770,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!ICCPROFCREATOR_COPYRIGHT;Copyright:
@ -1814,6 +1815,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking.
!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: <b>middle grey</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the <b>sharpening contrast mask</b>.\nShortcut: <b>p</b>\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MONITOR_PROFILE_SYSTEM;System default
@ -2158,6 +2161,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: <b>-</b>
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
!TP_SHARPENING_BLUR;Blur radius
!TP_WAVELET_1;Level 1
!TP_WAVELET_2;Level 2
!TP_WAVELET_3;Level 3

View File

@ -1581,6 +1581,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1656,6 +1657,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: <b>Alt-w</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: <b>middle grey</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the <b>sharpening contrast mask</b>.\nShortcut: <b>p</b>\n\nOnly works when sharpening is enabled and zoom >= 100%.
@ -2142,6 +2145,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике <b>-</b>
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light

View File

@ -1581,6 +1581,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1656,6 +1657,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike <b>-</b>
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: <b>Alt-w</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: <b>middle grey</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the <b>sharpening contrast mask</b>.\nShortcut: <b>p</b>\n\nOnly works when sharpening is enabled and zoom >= 100%.
@ -2142,6 +2145,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike <b>-</b>
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light

View File

@ -1083,6 +1083,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1177,6 +1178,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
!MAIN_TAB_DETAIL_TOOLTIP;Shortcut: <b>Alt-d</b>
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
!MAIN_TAB_RAW;Raw
@ -2075,6 +2078,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť <b>-</b>
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
!TP_SHARPENMICRO_CONTRAST;Contrast threshold

View File

@ -1023,6 +1023,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1123,6 +1124,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!MAIN_TAB_DETAIL_TOOLTIP;Shortcut: <b>Alt-d</b>
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
!MAIN_TAB_RAW;Raw
@ -2066,6 +2069,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
!TP_SHARPENMICRO_CONTRAST;Contrast threshold

View File

@ -1940,6 +1940,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -2015,6 +2016,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: <b>Alt-w</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: <b>middle grey</b>\nShortcut: <b>9</b>
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the <b>sharpening contrast mask</b>.\nShortcut: <b>p</b>\n\nOnly works when sharpening is enabled and zoom >= 100%.
!OPTIONS_BUNDLED_MISSING;The bundled profile "<b>%1</b>" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead.
@ -2271,6 +2274,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: <b>-</b>
!TP_RETINEX_TRANSMISSION_TOOLTIP;Transmission according to transmission.\nAbscissa: transmission from negative values (min), mean, and positives values (max).\nOrdinate: amplification or reduction.
!TP_RETINEX_VIEW_MASK;Mask
!TP_RETINEX_VIEW_METHOD_TOOLTIP;Standard - Normal display.\nMask - Displays the mask.\nUnsharp mask - Displays the image with a high radius unsharp mask.\nTransmission - Auto/Fixed - Displays the file transmission-map, before any action on contrast and brightness.\n\nAttention: the mask does not correspond to reality, but is amplified to make it more visible.
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light

View File

@ -1022,6 +1022,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
@ -1122,6 +1123,8 @@ TP_WBALANCE_TEMPERATURE;Isı
!MAIN_TAB_DETAIL_TOOLTIP;Shortcut: <b>Alt-d</b>
!MAIN_TAB_EXPORT; Fast Export
!MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
!MAIN_TAB_FAVORITES;Favorites
!MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
!MAIN_TAB_INSPECT; Inspect
!MAIN_TAB_METADATA_TOOLTIP;Shortcut: <b>Alt-m</b>
!MAIN_TAB_RAW;Raw
@ -2065,6 +2068,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_BLUR;Blur radius
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
!TP_SHARPENMICRO_CONTRAST;Contrast threshold

View File

@ -864,8 +864,14 @@ HISTORY_MSG_608;Local - Color Mask L
HISTORY_MSG_609;Local - Exp Mask C
HISTORY_MSG_610;Local - Exp Mask L
HISTORY_MSG_611;Local - Color Mask H
HISTORY_MSG_612;Local - Use Color Mask
HISTORY_MSG_613;Local - Use Exp Mask
HISTORY_MSG_612;Local - Color Structure
HISTORY_MSG_613;Local - Exp Structure
HISTORY_MSG_614;Local - Exp Mask H
HISTORY_MSG_615;Local - Blend color
HISTORY_MSG_616;Local - Blend Exp
HISTORY_MSG_617;Local - Blur Exp
HISTORY_MSG_618;Local - Use Color Mask
HISTORY_MSG_619;Local - Use Exp Mask
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
@ -1042,8 +1048,6 @@ MAIN_TAB_ADVANCED;Advanced
MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: <b>Alt-w</b>
MAIN_TAB_COLOR;Color
MAIN_TAB_COLOR_TOOLTIP;Shortcut: <b>Alt-c</b>
MAIN_TAB_FAVORITES;Favorites
MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
MAIN_TAB_DETAIL;Detail
MAIN_TAB_DETAIL_TOOLTIP;Shortcut: <b>Alt-d</b>
MAIN_TAB_DEVELOP; Batch Edit
@ -1051,6 +1055,8 @@ MAIN_TAB_EXIF;Exif
MAIN_TAB_EXPORT; Fast Export
MAIN_TAB_EXPOSURE;Exposure
MAIN_TAB_EXPOSURE_TOOLTIP;Shortcut: <b>Alt-e</b>
MAIN_TAB_FAVORITES;Favorites
MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: <b>Alt-u</b>
MAIN_TAB_FILTER; Filter
MAIN_TAB_INSPECT; Inspect
MAIN_TAB_IPTC;IPTC
@ -1934,8 +1940,10 @@ TP_LOCALLAB_ARTIF;Reduce artifacts - Improve algoritm
TP_LOCALLAB_ARTIF_TOOLTIP;Only active for Color-light, Exposure, Retinex, Vibrance, ToneMapping, CBDL.
TP_LOCALLAB_AVOID;Avoid color shift
TP_LOCALLAB_BILATERAL;Bilateral filter
TP_LOCALLAB_BLENDMASKCOL;Blend
TP_LOCALLAB_BLMETHOD_TOOLTIP;Normal - direct blur and noise with all settings.\nInverse - Inverse blur and noise without scope and whithout enhanced algorithm.\nSymmetric - inverse blur and noise with all settings. Be careful some results may be curious
TP_LOCALLAB_BLUFR;Blur & Noise
TP_LOCALLAB_BLURDE;Blur Shape detection
TP_LOCALLAB_BLNORM;Normal
TP_LOCALLAB_BLINV;Inverse
TP_LOCALLAB_BLSYM;Symmetric
@ -2038,10 +2046,12 @@ TP_LOCALLAB_SHOWMNONE;None
TP_LOCALLAB_SHOWMODIF;Show modifications whithout mask
TP_LOCALLAB_SHOWMODIFMASK;Show modifications whith mask
TP_LOCALLAB_SHOWMASK;Show mask
TP_LOCALLAB_SHOWSTRUC;Show structure
TP_LOCALLAB_USEMASK;Use mask
TP_LOCALLAB_SOFT;Soft Light
TP_LOCALLAB_STRENG;Strength
TP_LOCALLAB_STRENGTH;Noise
TP_LOCALLAB_STRUCCOL;Structure
TP_LOCALLAB_STYPE;Shape method
TP_LOCALLAB_STYPE_TOOLTIP;You can choose between:\nSymmetrical - left handle linked to right, top handle linked to bottom.\nIndependent - all handles are independent.
TP_LOCALLAB_SYMSL;Symmetrical (mouse + sliders)

View File

@ -1054,8 +1054,8 @@ void CurveFactory::complexCurve(double ecomp, double black, double hlcompr, doub
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void CurveFactory::complexCurvelocal(double ecomp, double black, double hlcompr, double hlcomprthresh,
double shcompr, double br, double cont, LUTu & histogram,
LUTf & hlCurve, LUTf & shCurve, LUTf & outCurve, LUTf & lightCurveloc,
double shcompr, double br, double cont, LUTu & histogram, double lumare,
LUTf & hlCurve, LUTf & shCurve, LUTf & outCurve, LUTf & lightCurveloc, float avg,
int skip)
{
@ -1124,19 +1124,22 @@ void CurveFactory::complexCurvelocal(double ecomp, double black, double hlcompr,
if (cont > 0.00001 || cont < -0.00001) {
// compute mean luminance of the image with the curve applied
int sum = 0;
float avg = 0;
// int sum = 0;
// float avg = 0;
for (int i = 0; i < 32768; i++) {
avg += lightCurveloc[i] * histogram[i];
sum += histogram[i];
}
// for (int i = 0; i < 32768; i++) {
// avg += lightCurveloc[i] * histogram[i];
// sum += histogram[i];
// }
int k = avg * 32768;
avg = lightCurveloc[k];
// printf("avg=%f lumaref=%f\n", avg, lumare/100.f);
std::vector<double> contrastcurvePoints;
if (sum) {
avg /= sum;
bool lumm = true;
if (lumm) {
// avg /= sum;
// avg = lumare / 100.f;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
contrastcurvePoints.resize(9);
contrastcurvePoints.at(0) = double (DCT_NURBS);
@ -1570,6 +1573,55 @@ void LocretigainCurverab::Set(const std::vector<double> &curvePoints)
}
}
LocHHmaskexpCurve::LocHHmaskexpCurve() : sum(0.f) {};
void LocHHmaskexpCurve::Reset()
{
lutLocHHmaskexpCurve.reset();
sum = 0.f;
}
void LocHHmaskexpCurve::Set(const Curve &pCurve)
{
if (pCurve.isIdentity()) {
Reset(); // raise this value if the quality suffers from this number of samples
return;
}
lutLocHHmaskexpCurve(501); // raise this value if the quality suffers from this number of samples
sum = 0.f;
for (int i = 0; i < 501; i++) {
lutLocHHmaskexpCurve[i] = pCurve.getVal(double (i) / 500.);
if (lutLocHHmaskexpCurve[i] < 0.02f) {
lutLocHHmaskexpCurve[i] = 0.02f;
}
sum += lutLocHHmaskexpCurve[i];
}
//lutLocHHCurve.dump("wav");
}
void LocHHmaskexpCurve::Set(const std::vector<double> &curvePoints, bool & lhmasexputili)
{
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
ttcurve.setIdentityValue(0.);
lhmasexputili = true;
Set(ttcurve);
} else {
Reset();
}
}
LocLLmaskexpCurve::LocLLmaskexpCurve() : sum(0.f) {};
void LocLLmaskexpCurve::Reset()
@ -1603,12 +1655,13 @@ void LocLLmaskexpCurve::Set(const Curve &pCurve)
void LocLLmaskexpCurve::Set(const std::vector<double> &curvePoints)
void LocLLmaskexpCurve::Set(const std::vector<double> &curvePoints, bool & llmasexputili)
{
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
ttcurve.setIdentityValue(0.);
llmasexputili = true;
Set(ttcurve);
} else {
Reset();
@ -1651,12 +1704,13 @@ void LocCCmaskexpCurve::Set(const Curve &pCurve)
void LocCCmaskexpCurve::Set(const std::vector<double> &curvePoints)
void LocCCmaskexpCurve::Set(const std::vector<double> &curvePoints, bool & lcmasexputili)
{
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
ttcurve.setIdentityValue(0.);
lcmasexputili = true;
Set(ttcurve);
} else {
Reset();
@ -1697,12 +1751,13 @@ void LocHHmaskCurve::Set(const Curve &pCurve)
void LocHHmaskCurve::Set(const std::vector<double> &curvePoints)
void LocHHmaskCurve::Set(const std::vector<double> &curvePoints, bool & lhmasutili)
{
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
ttcurve.setIdentityValue(0.);
lhmasutili = true;
Set(ttcurve);
} else {
Reset();
@ -1746,12 +1801,13 @@ void LocCCmaskCurve::Set(const Curve &pCurve)
void LocCCmaskCurve::Set(const std::vector<double> &curvePoints)
void LocCCmaskCurve::Set(const std::vector<double> &curvePoints, bool & lcmasutili)
{
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
ttcurve.setIdentityValue(0.);
lcmasutili = true;
Set(ttcurve);
} else {
Reset();
@ -1791,12 +1847,13 @@ void LocLLmaskCurve::Set(const Curve &pCurve)
void LocLLmaskCurve::Set(const std::vector<double> &curvePoints)
void LocLLmaskCurve::Set(const std::vector<double> &curvePoints, bool & llmasutili)
{
// if (HHutili && !curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
if (!curvePoints.empty() && curvePoints[0] > FCT_Linear && curvePoints[0] < FCT_Unchanged) {
FlatCurve ttcurve(curvePoints, false, CURVES_MIN_POLY_POINTS / 2);
ttcurve.setIdentityValue(0.);
llmasutili = true;
Set(ttcurve);
} else {
Reset();

View File

@ -345,8 +345,8 @@ public:
int skip = 1);
static void complexCurvelocal(double ecomp, double black, double hlcompr, double hlcomprthresh, double shcompr, double br, double cont, LUTu & histogram,
LUTf & hlCurve, LUTf & shCurve, LUTf & outCurve, LUTf & lightCurveloc,
static void complexCurvelocal(double ecomp, double black, double hlcompr, double hlcomprthresh, double shcompr, double br, double cont, LUTu & histogram, double lumare,
LUTf & hlCurve, LUTf & shCurve, LUTf & outCurve, LUTf & lightCurveloc, float avg,
int skip = 1);
static void curveBW(const std::vector<double>& curvePointsbw, const std::vector<double>& curvePointsbw2, const LUTu & histogrambw, LUTu & outBeforeCCurveHistogrambw,
@ -632,6 +632,35 @@ public:
}
};
class LocHHmaskexpCurve
{
private:
LUTf lutLocHHmaskexpCurve; // 0xffff range
void Set(const Curve &pCurve);
public:
float sum;
virtual ~LocHHmaskexpCurve() {};
LocHHmaskexpCurve();
void Reset();
void Set(const std::vector<double> &curvePoints, bool & lhmasexputili);
float getSum() const
{
return sum;
}
float operator[](float index) const
{
return lutLocHHmaskexpCurve[index];
}
operator bool (void) const
{
return lutLocHHmaskexpCurve;
}
};
class LocCCmaskexpCurve
{
private:
@ -644,7 +673,7 @@ public:
virtual ~LocCCmaskexpCurve() {};
LocCCmaskexpCurve();
void Reset();
void Set(const std::vector<double> &curvePoints);
void Set(const std::vector<double> &curvePoints, bool & lcmasexputili);
float getSum() const
{
return sum;
@ -672,7 +701,7 @@ public:
virtual ~LocLLmaskexpCurve() {};
LocLLmaskexpCurve();
void Reset();
void Set(const std::vector<double> &curvePoints);
void Set(const std::vector<double> &curvePoints, bool & llmasexputili);
float getSum() const
{
return sum;
@ -700,7 +729,7 @@ public:
virtual ~LocHHmaskCurve() {};
LocHHmaskCurve();
void Reset();
void Set(const std::vector<double> &curvePoints);
void Set(const std::vector<double> &curvePoints, bool & lhmasutili);
float getSum() const
{
return sum;
@ -729,7 +758,7 @@ public:
virtual ~LocCCmaskCurve() {};
LocCCmaskCurve();
void Reset();
void Set(const std::vector<double> &curvePoints);
void Set(const std::vector<double> &curvePoints, bool & lcmasutili);
float getSum() const
{
return sum;
@ -757,7 +786,7 @@ public:
virtual ~LocLLmaskCurve() {};
LocLLmaskCurve();
void Reset();
void Set(const std::vector<double> &curvePoints);
void Set(const std::vector<double> &curvePoints, bool & llmasutili);
float getSum() const
{
return sum;

View File

@ -895,6 +895,14 @@ void Crop::update(int todo)
LUTu lhist16loc2(32770, 0);
bool LHutili = parent->LHutili;
bool HHutili = parent->HHutili;
bool llmasutili = parent->llmasutili;
bool lhmasutili = parent->lhmasutili;
bool lcmasutili = parent->lcmasutili;
bool lhmasexputili = parent->lhmasexputili;
bool lcmasexputili = parent->lcmasexputili;
bool llmasexputili = parent->llmasexputili;
float avg = parent->avg;
LUTu dummy;
bool needslocal = params.locallab.enabled;
LocretigainCurve locRETgainCurve;
@ -905,6 +913,7 @@ void Crop::update(int todo)
LocHHmaskCurve lochhmasCurve;
LocCCmaskexpCurve locccmasexpCurve;
LocLLmaskexpCurve locllmasexpCurve;
LocHHmaskexpCurve lochhmasexpCurve;
LocretigainCurverab locRETgainCurverab;
locallutili = false;
@ -918,11 +927,12 @@ void Crop::update(int todo)
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
loclhCurve.Set(params.locallab.spots.at(sp).LHcurve, LHutili);
lochhCurve.Set(params.locallab.spots.at(sp).HHcurve, HHutili);
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve);
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve);
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve, lcmasutili);
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve, llmasutili);
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve, lhmasutili);
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve, lcmasexputili);
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve, llmasexputili);
lochhmasexpCurve.Set(params.locallab.spots.at(sp).HHmaskexpcurve, lhmasexputili);
locallutili = false;
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve2, sca);
localcutili = false;
@ -947,23 +957,32 @@ void Crop::update(int todo)
chromare = parent->chromarefs[sp];
lumare = parent->lumarefs[sp];
sobelre = parent->sobelrefs[sp];
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lhist16loc2,
hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2,
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lhist16loc2, lumare,
hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, avg,
sca);
// Locallab mask are only shown for selected spot
if (sp == parent->params.locallab.selspot) {
parent->ipf.Lab_Local(1, sp, parent->sobelrefs, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve, LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, huere, chromare, lumare, sobelre, parent->locallColorMask, parent->locallExpMask);
parent->ipf.Lab_Local(1, sp, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
loclhCurve, lochhCurve, locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, huere, chromare, lumare, sobelre, parent->locallColorMask, parent->locallExpMask);
} else {
parent->ipf.Lab_Local(1, sp, parent->sobelrefs, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve, LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, huere, chromare, lumare, sobelre, 0, 0);
parent->ipf.Lab_Local(1, sp, (float**)shbuffer, labnCrop, labnCrop, reservCrop, cropx / skip, cropy / skip, skips(parent->fw, skip), skips(parent->fh, skip), skip, locRETgainCurve, lllocalcurve2,
loclhCurve, lochhCurve, locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili, LHutili, HHutili, cclocalcurve2, localskutili, sklocalcurve2, localexutili, exlocalcurve2, hltonecurveloc2, shtonecurveloc2, tonecurveloc2, lightCurveloc2, huerefblu, huere, chromare, lumare, sobelre, 0, 0);
}
lllocalcurve2.clear();
cclocalcurve2.clear();
sklocalcurve2.clear();
exlocalcurve2.clear();
locRETgainCurve.Reset();
loclhCurve.Reset();
lochhCurve.Reset();
locccmasCurve.Reset();
locllmasCurve.Reset();
lochhmasCurve.Reset();
locllmasexpCurve.Reset();
locccmasexpCurve.Reset();
lochhmasexpCurve.Reset();
if (skip <= 2) {
usleep(settings->cropsleep); //wait to avoid crash when crop 100% and move window

View File

@ -27,6 +27,7 @@
#include <fstream>
#include <string>
#include <unistd.h>
#include "jaggedarray.h"
#include "iccstore.h"
#include <iostream>
@ -122,6 +123,7 @@ ImProcCoordinator::ImProcCoordinator()
lastspotdup(false),
locallColorMask(0),
locallExpMask(0),
avg(0),
retistrsav(nullptr)
{}
@ -774,6 +776,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
float **shbuffer = nullptr;
int sca = 1;
double huere, chromare, lumare, huerefblu, sobelre;
JaggedArray<float> blend(pW, pH);
for (int sp = 0; sp < params.locallab.nbspot && sp < (int)params.locallab.spots.size(); sp++) {
// Set local curves of current spot to LUT
@ -783,14 +786,21 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
localexutili = false;
localcutili = false;
localskutili = false;
llmasutili = false;
lcmasexputili = false;
lhmasexputili = false;
llmasexputili = false;
lhmasutili = false;
lcmasutili = false;
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
loclhCurve.Set(params.locallab.spots.at(sp).LHcurve, LHutili);
lochhCurve.Set(params.locallab.spots.at(sp).HHcurve, HHutili);
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve);
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve);
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve, lcmasutili);
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve, llmasutili);
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve, lhmasutili);
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve, llmasexputili);
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve, lcmasexputili);
lochhmasexpCurve.Set(params.locallab.spots.at(sp).HHmaskexpcurve, lhmasexputili);
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, sca);
CurveFactory::curveCCLocal(localcutili, params.locallab.spots.at(sp).cccurve, cclocalcurve, sca);
CurveFactory::curveskLocal(localskutili, params.locallab.spots.at(sp).skintonescurve, sklocalcurve, sca);
@ -804,22 +814,22 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
double cont = params.locallab.spots.at(sp).contrast;
lhist16loc.clear();
// Reference parameters computation
if (params.locallab.spots.at(sp).spotMethod == "exc") {
ipf.calc_ref(sp, reserv, reserv, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
ipf.calc_ref(sp, reserv, reserv, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc, avg);
} else {
ipf.calc_ref(sp, nprevl, nprevl, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
ipf.calc_ref(sp, nprevl, nprevl, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc, avg);
}
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lhist16loc,
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
sca);
// printf("improc avg=%f\n", avg);
huerblu = huerefblurs[sp] = huerefblu;
huer = huerefs[sp] = huere;
chromar = chromarefs[sp] = chromare;
lumar = lumarefs[sp] = lumare ;
sobeler = sobelrefs[sp] = sobelre;
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lhist16loc, lumar,
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, avg,
sca);
if (locallListener) {
locallListener->refChanged(huer, lumar, chromar);
@ -833,13 +843,28 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
*/
// Locallab mask are only shown for selected spot
if (sp == params.locallab.selspot) {
ipf.Lab_Local(3, sp, sobelrefs, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve,
ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, huer, chromar, lumar, sobeler, locallColorMask, locallExpMask);
} else {
ipf.Lab_Local(3, sp, sobelrefs, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve,
ipf.Lab_Local(3, sp, (float**)shbuffer, nprevl, nprevl, reserv, 0, 0, pW, pH, scale, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerblu, huer, chromar, lumar, sobeler, 0, 0);
}
lllocalcurve.clear();
cclocalcurve.clear();
sklocalcurve.clear();
exlocalcurve.clear();
locRETgainCurve.Reset();
loclhCurve.Reset();
lochhCurve.Reset();
locccmasCurve.Reset();
locllmasCurve.Reset();
lochhmasCurve.Reset();
locllmasexpCurve.Reset();
locccmasexpCurve.Reset();
lochhmasexpCurve.Reset();
/*
if (params.locallab.spots.at(sp).spotMethod == "exc") {
ipf.calc_ref(sp, reserv, reserv, 0, 0, pW, pH, scale, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
} else {
@ -851,7 +876,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
cclocalcurve.clear();
sklocalcurve.clear();
exlocalcurve.clear();
*/
}
/*
for (int sp = 0; sp < params.locallab.nbspot && sp < (int)params.locallab.spots.size(); sp++) {
//update references after threatment
if (params.locallab.spots.at(sp).spotMethod == "exc") {
@ -864,7 +891,9 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
chromar = chromarefs[sp] = chromare;
lumar = lumarefs[sp] = lumare ;
sobeler = sobelrefs[sp] = sobelre;
}
*/
}
//*************************************************************

View File

@ -240,11 +240,18 @@ protected:
LocHHmaskCurve lochhmasCurve;
LocCCmaskexpCurve locccmasexpCurve;
LocLLmaskexpCurve locllmasexpCurve;
LocHHmaskexpCurve lochhmasexpCurve;
ProcParams nextParams2;
bool locallutili;
bool localcutili;
bool localskutili;
bool localexutili;
bool llmasutili;
bool lhmasutili;
bool lcmasutili;
bool lcmasexputili;
bool lhmasexputili;
bool llmasexputili;
bool LHutili;
bool HHutili;
LUTf huerefs;
@ -256,6 +263,7 @@ protected:
bool lastspotdup;
int locallColorMask;
int locallExpMask;
float avg;
public:

View File

@ -286,10 +286,10 @@ public:
//locallab
void MSRLocal(int sp, float** luminance, float** templ, const float* const *originalLuminance, const int width, const int height, const LocallabParams &loc, const int skip, const LocretigainCurve &locRETgainCcurve, const int chrome, const int scall, const float krad, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax);
// void calc_ref (LabImage* original, LabImage* transformed, int cx, int cy, int oW, int oH, int sk, double &huere, double &chromare, double &lumare, double &sobelref);
void calc_ref(int sp, LabImage* original, LabImage* transformed, int cx, int cy, int oW, int oH, int sk, double &huerefblur, double &huere, double &chromare, double &lumare, double &sobelref, LUTu & histogram);
void calc_ref(int sp, LabImage* original, LabImage* transformed, int cx, int cy, int oW, int oH, int sk, double &huerefblur, double &huere, double &chromare, double &lumare, double &sobelref, LUTu & histogram, float &avg);
void copy_ref(LabImage* spotbuffer, LabImage* original, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp, double &huerefspot, double &chromarefspot, double &lumarefspot);
void paste_ref(LabImage* spotbuffer, LabImage* transformed, int cx, int cy, int sk, const struct local_params & lp);
void Lab_Local(int call, int sp, LUTf & sobelrefs, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, const LocLLmaskCurve & locllmasCurve, const LocHHmaskCurve & lochhmasCurve, const LocCCmaskexpCurve & locccmasexpCurve, const LocLLmaskexpCurve & locllmasexpCurve, bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, LUTf & lightCurveloc, double & huerefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, int llColorMask, int llExpMask);
void Lab_Local(int call, int sp, float** shbuffer, LabImage* original, LabImage* transformed, LabImage* reserved, int cx, int cy, int oW, int oH, int sk, const LocretigainCurve & locRETgainCcurve, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, const LocCCmaskCurve & locccmasCurve, bool & lcmasutili, const LocLLmaskCurve & locllmasCurve, bool & llmasutili, const LocHHmaskCurve & lochhmasCurve, bool & lhmasutili, const LocCCmaskexpCurve & locccmasexpCurve, bool &lcmasexputili, const LocLLmaskexpCurve & locllmasexpCurve, bool &llmasexputili, const LocHHmaskexpCurve & lochhmasexpCurve, bool & lhmasexputili, bool &LHutili, bool &HHutili, LUTf & cclocalcurve, bool & localskutili, LUTf & sklocalcurve, bool & localexutili, LUTf & exlocalcurve, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve, LUTf & lightCurveloc, double & huerefblur, double &hueref, double &chromaref, double &lumaref, double &sobelref, int llColorMask, int llExpMask);
void addGaNoise(LabImage *lab, LabImage *dst, const float mean, const float variance, const int sk);
void BlurNoise_Localold(int call, const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
void InverseBlurNoise_Local(const struct local_params& lp, LabImage* original, LabImage* transformed, const LabImage* const tmp1, int cx, int cy);
@ -302,7 +302,7 @@ public:
void vibrancelocal(int sp, int bfw, int bfh, LabImage* lab, LabImage* dest, bool & localskutili, LUTf & sklocalcurve);
// void Expo_vibr_Local(float moddE, float powdE, int senstype, float **buflight, float **bufchro, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, const struct local_params & lp, LabImage * original, LabImage * transformed, const LabImage * const tmp1, int cx, int cy, int sk);
void Expo_vibr_Local(float moddE, float powdE, int senstype, LabImage * originalmask, float **buflight, float **bufchro, float **buf_a_cat, float ** buf_b_cat, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, const struct local_params & lp, LabImage * original, LabImage * transformed, LabImage * difLab, const LabImage * const tmp1, int cx, int cy, int sk);
void Expo_vibr_Local(int senstype, LabImage * bufexporig, LabImage * originalmask, float **buflight, float **bufchro, float **buf_a_cat, float ** buf_b_cat, const float hueref, const float chromaref, const float lumaref, float sobelref, float ** blend2, const struct local_params & lp, LabImage * original, LabImage * transformed, int cx, int cy, int sk);
void exlabLocal(const local_params& lp, int bfh, int bfw, LabImage* bufexporig, LabImage* lab, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve);
void Exclude_Local(float moddE, float powdE, int sen, float **deltaso, float **buflight, float **bufchro, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, const struct local_params & lp, LabImage * original, LabImage * transformed, LabImage * rsv, LabImage * reserv, int cx, int cy, int sk);
@ -311,7 +311,7 @@ public:
void fftw_denoise(int GW, int GH, int max_numblox_W, int min_numblox_W, float **tmp1, array2D<float> *Lin, int numThreads, const struct local_params & lp, int chrom);
void ColorLight_Local(float moddE, float powdE, int call, LabImage * bufcolorig, LabImage * originalmask, float **buflight, float **bufchro, float **bufchroslid, float ** bufhh, float ** buflightslid, bool &LHutili, bool &HHutili, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, LUTf & lightCurveloc, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);
void ColorLight_Local(float moddE, float powdE, int call, LabImage * bufcolorig, LabImage * originalmask, float **buflight, float **bufchro, float **bufchroslid, float ** bufhh, float ** buflightslid, bool &LHutili, bool &HHutili, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, float sobelref, float ** blend2, LUTf & lllocalcurve, const LocLHCurve & loclhCurve, const LocHHCurve & lochhCurve, LUTf & lightCurveloc, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);
void InverseColorLight_Local(const struct local_params& lp, LUTf & lightCurveloc, LabImage* original, LabImage* transformed, int cx, int cy, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const float lumaref, int sk);
void Sharp_Local(int call, float **loctemp, int senstype, const float hueplus, const float huemoins, const float hueref, const float dhue, const float chromaref, const local_params& lp, LabImage* original, LabImage* transformed, int cx, int cy, int sk);

File diff suppressed because it is too large Load Diff

View File

@ -638,8 +638,14 @@ enum ProcEventCode {
EvlocallabCCmaskexpshape = 608,
EvlocallabLLmaskexpshape = 609,
EvlocallabHHmaskshape = 610,
EvLocallabEnaColorMask = 611,
EvLocallabEnaExpMask = 612,
Evlocallabstructcol = 611,
Evlocallabstructexp = 612,
EvlocallabHHmaskexpshape = 613,
Evlocallabblendmaskcol = 614,
Evlocallabblendmaskexp = 615,
Evlocallabblurexpde = 616,
EvLocallabEnaColorMask = 617,
EvLocallabEnaExpMask = 618,
NUMOFEVENTS
};

View File

@ -2362,6 +2362,8 @@ LocallabParams::LocallabSpot::LocallabSpot() :
contrast(0),
chroma(0),
sensi(19),
structcol(0),
blendmaskcol(0),
qualitycurveMethod("none"),
llcurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
cccurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
@ -2369,22 +2371,26 @@ LocallabParams::LocallabSpot::LocallabSpot() :
HHcurve{(double)FCT_MinMaxCPoints, 0.0, 0.50, 0.35, 0.35, 0.166, 0.50, 0.35, 0.35, 0.333, 0.50, 0.35, 0.35, 0.50, 0.50, 0.35, 0.35, 0.666, 0.50, 0.35, 0.35, 0.833, 0.50, 0.35, 0.35},
invers(false),
enaColorMask(false),
CCmaskcurve{(double)FCT_MinMaxCPoints, 0., 1., 0.35, 0.35, 1., 1., 0.35, 0.35},
LLmaskcurve{(double)FCT_MinMaxCPoints, 0., 1., 0.35, 0.35, 1., 1., 0.35, 0.35},
HHmaskcurve{(double)FCT_MinMaxCPoints, 0., 1., 0.35, 0.35, 1., 1., 0.35, 0.35},
CCmaskcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.00, 1.0, 0.35, 0.35 },
LLmaskcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.00, 1.0, 0.35, 0.35 },
HHmaskcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.00, 1.0, 0.35, 0.35 },
// Exposure
expexpose(false),
expcomp(0),
hlcompr(20),
hlcompr(60),
hlcomprthresh(33),
black(0),
shcompr(50),
warm(0),
sensiex(19),
sensiex(15),
structexp(0),
blurexpde(5),
excurve{(double)DCT_NURBS, 0.0, 0.0, 1.0, 1.0},
enaExpMask(false),
CCmaskexpcurve{(double)FCT_MinMaxCPoints, 0., 1., 0.35, 0.35, 1., 1., 0.35, 0.35},
LLmaskexpcurve{(double)FCT_MinMaxCPoints, 0., 1., 0.35, 0.35, 1., 1., 0.35, 0.35},
CCmaskexpcurve{(double)FCT_MinMaxCPoints,0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35 },
LLmaskexpcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35},
HHmaskexpcurve{(double)FCT_MinMaxCPoints, 0.0, 1.0, 0.35, 0.35, 0.50, 1.0, 0.35, 0.35, 1.0, 1.0, 0.35, 0.35},
blendmaskexp(0),
// Vibrance
expvibrance(false),
saturated(0),
@ -2497,6 +2503,8 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
&& contrast == other.contrast
&& chroma == other.chroma
&& sensi == other.sensi
&& structcol == other.structcol
&& blendmaskcol == other.blendmaskcol
&& qualitycurveMethod == other.qualitycurveMethod
&& llcurve == other.llcurve
&& cccurve == other.cccurve
@ -2516,10 +2524,14 @@ bool LocallabParams::LocallabSpot::operator ==(const LocallabSpot& other) const
&& shcompr == other.shcompr
&& warm == other.warm
&& sensiex == other.sensiex
&& structexp == other.structexp
&& blurexpde == other.blurexpde
&& excurve == other.excurve
&& enaExpMask == other.enaExpMask
&& CCmaskexpcurve == other.CCmaskexpcurve
&& LLmaskexpcurve == other.LLmaskexpcurve
&& HHmaskexpcurve == other.HHmaskexpcurve
&& blendmaskexp == other.blendmaskexp
// Vibrance
&& expvibrance == other.expvibrance
&& saturated == other.saturated
@ -3585,6 +3597,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).contrast, "Locallab", "Contrast_" + std::to_string(i), spot.contrast, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).chroma, "Locallab", "Chroma_" + std::to_string(i), spot.chroma, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sensi, "Locallab", "Sensi_" + std::to_string(i), spot.sensi, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).structcol, "Locallab", "Structcol_" + std::to_string(i), spot.structcol, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blendmaskcol, "Locallab", "Blendmaskcol_" + std::to_string(i), spot.blendmaskcol, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).qualitycurveMethod, "Locallab", "QualityCurveMethod_" + std::to_string(i), spot.qualitycurveMethod, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).llcurve, "Locallab", "LLCurve_" + std::to_string(i), spot.llcurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).cccurve, "Locallab", "CCCurve_" + std::to_string(i), spot.cccurve, keyFile);
@ -3604,10 +3618,14 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).shcompr, "Locallab", "Shcompr_" + std::to_string(i), spot.shcompr, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).warm, "Locallab", "Warm_" + std::to_string(i), spot.warm, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).sensiex, "Locallab", "Sensiex_" + std::to_string(i), spot.sensiex, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).structexp, "Locallab", "Structexp_" + std::to_string(i), spot.structexp, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blurexpde, "Locallab", "Blurexpde_" + std::to_string(i), spot.blurexpde, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).excurve, "Locallab", "ExCurve_" + std::to_string(i), spot.excurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).enaExpMask, "Locallab", "EnaExpMask_" + std::to_string(i), spot.enaExpMask, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).CCmaskexpcurve, "Locallab", "CCmaskexpCurve_" + std::to_string(i), spot.CCmaskexpcurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).LLmaskexpcurve, "Locallab", "LLmaskexpCurve_" + std::to_string(i), spot.LLmaskexpcurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).HHmaskexpcurve, "Locallab", "HHmaskexpCurve_" + std::to_string(i), spot.HHmaskexpcurve, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).blendmaskexp, "Locallab", "Blendmaskexp_" + std::to_string(i), spot.blendmaskexp, keyFile);
// Vibrance
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).expvibrance, "Locallab", "Expvibrance_" + std::to_string(i), spot.expvibrance, keyFile);
saveToKeyfile(!pedited || pedited->locallab.spots.at(i).saturated, "Locallab", "Saturated_" + std::to_string(i), spot.saturated, keyFile);
@ -4800,6 +4818,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Locallab", "Contrast_" + std::to_string(i), pedited, spot.contrast, spotEdited.contrast);
assignFromKeyfile(keyFile, "Locallab", "Chroma_" + std::to_string(i), pedited, spot.chroma, spotEdited.chroma);
assignFromKeyfile(keyFile, "Locallab", "Sensi_" + std::to_string(i), pedited, spot.sensi, spotEdited.sensi);
assignFromKeyfile(keyFile, "Locallab", "Structcol_" + std::to_string(i), pedited, spot.structcol, spotEdited.structcol);
assignFromKeyfile(keyFile, "Locallab", "Blendmaskcol_" + std::to_string(i), pedited, spot.blendmaskcol, spotEdited.blendmaskcol);
assignFromKeyfile(keyFile, "Locallab", "QualityCurveMethod_" + std::to_string(i), pedited, spot.qualitycurveMethod, spotEdited.qualitycurveMethod);
assignFromKeyfile(keyFile, "Locallab", "LLCurve_" + std::to_string(i), pedited, spot.llcurve, spotEdited.llcurve);
assignFromKeyfile(keyFile, "Locallab", "CCCurve_" + std::to_string(i), pedited, spot.cccurve, spotEdited.cccurve);
@ -4819,10 +4839,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Locallab", "Shcompr_" + std::to_string(i), pedited, spot.shcompr, spotEdited.shcompr);
assignFromKeyfile(keyFile, "Locallab", "Warm_" + std::to_string(i), pedited, spot.warm, spotEdited.warm);
assignFromKeyfile(keyFile, "Locallab", "Sensiex_" + std::to_string(i), pedited, spot.sensiex, spotEdited.sensiex);
assignFromKeyfile(keyFile, "Locallab", "Structexp_" + std::to_string(i), pedited, spot.structexp, spotEdited.structexp);
assignFromKeyfile(keyFile, "Locallab", "Blurexpde_" + std::to_string(i), pedited, spot.blurexpde, spotEdited.blurexpde);
assignFromKeyfile(keyFile, "Locallab", "ExCurve_" + std::to_string(i), pedited, spot.excurve, spotEdited.excurve);
assignFromKeyfile(keyFile, "Locallab", "EnaExpMask_" + std::to_string(i), pedited, spot.enaExpMask, spotEdited.enaExpMask);
assignFromKeyfile(keyFile, "Locallab", "CCmaskexpCurve_" + std::to_string(i), pedited, spot.CCmaskexpcurve, spotEdited.CCmaskexpcurve);
assignFromKeyfile(keyFile, "Locallab", "LLmaskexpCurve_" + std::to_string(i), pedited, spot.LLmaskexpcurve, spotEdited.LLmaskexpcurve);
assignFromKeyfile(keyFile, "Locallab", "HHmaskexpCurve_" + std::to_string(i), pedited, spot.HHmaskexpcurve, spotEdited.HHmaskexpcurve);
assignFromKeyfile(keyFile, "Locallab", "Blendmaskexp_" + std::to_string(i), pedited, spot.blendmaskexp, spotEdited.blendmaskexp);
// Vibrance
assignFromKeyfile(keyFile, "Locallab", "Expvibrance_" + std::to_string(i), pedited, spot.expvibrance, spotEdited.expvibrance);
assignFromKeyfile(keyFile, "Locallab", "Saturated_" + std::to_string(i), pedited, spot.saturated, spotEdited.saturated);

View File

@ -50,6 +50,9 @@ class LocHHCurve;
class LocLLmaskCurve;
class LocCCmaskCurve;
class LocHHmaskCurve;
class LocLLmaskexpCurve;
class LocCCmaskexpCurve;
class LocHHmaskexpCurve;
enum RenderingIntent {
RI_PERCEPTUAL = INTENT_PERCEPTUAL,
@ -959,6 +962,8 @@ struct LocallabParams {
int contrast;
int chroma;
int sensi;
int structcol;
int blendmaskcol;
Glib::ustring qualitycurveMethod;
std::vector<double> llcurve;
std::vector<double> cccurve;
@ -978,10 +983,14 @@ struct LocallabParams {
int shcompr;
int warm;
int sensiex;
int structexp;
int blurexpde;
std::vector<double> excurve;
bool enaExpMask;
std::vector<double> CCmaskexpcurve;
std::vector<double> LLmaskexpcurve;
std::vector<double> HHmaskexpcurve;
int blendmaskexp;
// Vibrance
bool expvibrance;
int saturated;

View File

@ -638,6 +638,12 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
LUMINANCECURVE, // EvlocallabCCmaskexpshape
LUMINANCECURVE, // EvlocallabLLmaskexpshape
LUMINANCECURVE, // EvlocallabHHmaskshape
LUMINANCECURVE, // Evlocallabstructcol
LUMINANCECURVE, // Evlocallabstructexp
LUMINANCECURVE, // EvlocallabHHmaskexpshape
LUMINANCECURVE, // Evlocallabblendmaskcol
LUMINANCECURVE, // Evlocallabblendmaskexp
LUMINANCECURVE, // Evlocallabblurexpde
LUMINANCECURVE, // EvLocallabEnaColorMask
LUMINANCECURVE // EvLocallabEnaExpMask
};

View File

@ -32,6 +32,7 @@
#include <iostream>
#include <fstream>
#include <string>
#include "jaggedarray.h"
#undef THREAD_PRIORITY_NORMAL
@ -1079,6 +1080,7 @@ private:
LocHHmaskCurve lochhmasCurve;
LocCCmaskexpCurve locccmasexpCurve;
LocLLmaskexpCurve locllmasexpCurve;
LocHHmaskexpCurve lochhmasexpCurve;
LUTf lllocalcurve(65536, 0);
LUTf cclocalcurve(65536, 0);
LUTf sklocalcurve(65536, 0);
@ -1086,11 +1088,12 @@ private:
LUTf shtonecurveloc(65536, 0);
LUTf tonecurveloc(65536, 0);
LUTf lightCurveloc(32770, 0);
LUTu lhist16loc(32768, 0);
LUTu lhist16loc(32770, 0);
LUTf exlocalcurve(65536, 0);
// int maxspot = 1;
float** shbuffer = nullptr;
JaggedArray<float> blend(fw, fh);
for (int sp = 0; sp < params.locallab.nbspot && sp < (int)params.locallab.spots.size(); sp++) {
if (params.locallab.spots.at(sp).inverssha) {
@ -1108,14 +1111,21 @@ private:
bool localcutili = false;
bool localskutili = false;
bool localexutili = false;
bool llmasutili = false;
bool lcmasexputili = false;
bool lhmasexputili = false;
bool llmasexputili = false;
bool lcmasutili = false;
bool lhmasutili = false;
locRETgainCurve.Set(params.locallab.spots.at(sp).localTgaincurve);
loclhCurve.Set(params.locallab.spots.at(sp).LHcurve, LHutili);
lochhCurve.Set(params.locallab.spots.at(sp).HHcurve, HHutili);
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve);
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve);
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve);
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve);
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve);
locccmasCurve.Set(params.locallab.spots.at(sp).CCmaskcurve, lcmasutili);
locllmasCurve.Set(params.locallab.spots.at(sp).LLmaskcurve, llmasutili);
lochhmasCurve.Set(params.locallab.spots.at(sp).HHmaskcurve, lhmasutili);
locccmasexpCurve.Set(params.locallab.spots.at(sp).CCmaskexpcurve, lcmasexputili);
locllmasexpCurve.Set(params.locallab.spots.at(sp).LLmaskexpcurve, llmasexputili);
lochhmasexpCurve.Set(params.locallab.spots.at(sp).HHmaskexpcurve, lhmasexputili);
CurveFactory::curveLocal(locallutili, params.locallab.spots.at(sp).llcurve, lllocalcurve, 1);
CurveFactory::curveCCLocal(localcutili, params.locallab.spots.at(sp).cccurve, cclocalcurve, 1);
CurveFactory::curveskLocal(localskutili, params.locallab.spots.at(sp).skintonescurve, sklocalcurve, 1);
@ -1131,18 +1141,18 @@ private:
// Reference parameters computation
double huere, chromare, lumare, huerefblu, sobelre;
float avg = 0.f;
if (params.locallab.spots.at(sp).spotMethod == "exc") {
ipf.calc_ref(sp, reservView, reservView, 0, 0, fw, fh, 1, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
ipf.calc_ref(sp, reservView, reservView, 0, 0, fw, fh, 1, huerefblu, huere, chromare, lumare, sobelre, lhist16loc, avg);
} else {
ipf.calc_ref(sp, labView, labView, 0, 0, fw, fh, 1, huerefblu, huere, chromare, lumare, sobelre, lhist16loc);
ipf.calc_ref(sp, labView, labView, 0, 0, fw, fh, 1, huerefblu, huere, chromare, lumare, sobelre, lhist16loc, avg);
}
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lhist16loc,
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc,
CurveFactory::complexCurvelocal(ecomp, black / 65535., hlcompr, hlcomprthresh, shcompr, br, cont, lhist16loc, lumare,
hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, avg,
1);
// No Locallab mask is shown in exported picture
ipf.Lab_Local(2, sp, sobelrefs, (float**)shbuffer, labView, labView, reservView, 0, 0, fw, fh, 1, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, locllmasCurve, lochhmasCurve, locccmasexpCurve, locllmasexpCurve,
ipf.Lab_Local(2, sp, (float**)shbuffer, labView, labView, reservView, 0, 0, fw, fh, 1, locRETgainCurve, lllocalcurve, loclhCurve, lochhCurve, locccmasCurve, lcmasutili, locllmasCurve, llmasutili, lochhmasCurve, lhmasutili, locccmasexpCurve, lcmasexputili, locllmasexpCurve, llmasexputili, lochhmasexpCurve, lhmasexputili,
LHutili, HHutili, cclocalcurve, localskutili, sklocalcurve, localexutili, exlocalcurve, hltonecurveloc, shtonecurveloc, tonecurveloc, lightCurveloc, huerefblu, huere, chromare, lumare, sobelre, 0, 0);
// Clear local curves

View File

@ -1427,5 +1427,21 @@ static INLINE void vconvertrgbrgbrgbrgb2rrrrggggbbbb (const float * src, vfloat
bv = _mm_setr_ps(src[2],src[5],src[8],src[11]);
}
#if defined( __SSE4_1__ ) && defined( __x86_64__ )
static INLINE vfloat vceilf(vfloat x) {
return _mm_round_ps(x, _MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC);
}
#else
static INLINE vfloat vceilf(vfloat x) {
__m128i zerov = _mm_setzero_si128();
zerov = _mm_cmpeq_epi32(zerov, zerov);
const vfloat onev = (vfloat)_mm_slli_epi32(_mm_srli_epi32(zerov, 25), 23); //create vector 1.0f
const vfloat xi = _mm_cvtepi32_ps(_mm_cvttps_epi32(x));
return xi + _mm_and_ps(_mm_cmplt_ps(xi, x), onev);
}
#endif
#endif // __SSE2__
#endif // SLEEFSSEAVX

View File

@ -960,59 +960,62 @@ void RawImageSource::xtrans_interpolate (const int passes, const bool useCieLab)
#undef CLIP
void RawImageSource::fast_xtrans_interpolate (const array2D<float> &rawData, array2D<float> &red, array2D<float> &green, array2D<float> &blue)
{
// if (settings->verbose) {
// printf("fast X-Trans interpolation...\n");
// }
double progress = 0.0;
const bool plistenerActive = plistener;
if (plistenerActive) {
if (plistener) {
plistener->setProgressStr(Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), "fast Xtrans"));
plistener->setProgress (progress);
plistener->setProgress(0.0);
}
const int height = H, width = W;
xtransborder_interpolate(1, red, green, blue);
int xtrans[6][6];
ri->getXtransMatrix(xtrans);
#pragma omp parallel for
for(int row = 1; row < height - 1; row++) {
for(int col = 1; col < width - 1; col++) {
float sum[3] = {0.f};
const float weight[3][3] = {
{0.25f, 0.5f, 0.25f},
{0.5f, 0.f, 0.5f},
{0.25f, 0.5f, 0.25f}
};
#ifdef _OPENMP
#pragma omp parallel for schedule(dynamic, 16)
#endif
for (int row = 1; row < H - 1; ++row) {
for (int col = 1; col < W - 1; ++col) {
float sum[3] = {};
for (int v = -1; v <= 1; v++) {
for (int h = -1; h <= 1; h++) {
sum[fcol(row + v, col + h)] += rawData[row + v][(col + h)];
sum[fcol(row + v, col + h)] += rawData[row + v][(col + h)] * weight[v + 1][h + 1];
}
}
switch(fcol(row, col)) {
case 0:
case 0: // red pixel
red[row][col] = rawData[row][col];
green[row][col] = sum[1] * 0.2f;
blue[row][col] = sum[2] * 0.33333333f;
green[row][col] = sum[1] * 0.5f;
blue[row][col] = sum[2];
break;
case 1:
red[row][col] = sum[0] * 0.5f;
case 1: // green pixel
green[row][col] = rawData[row][col];
blue[row][col] = sum[2] * 0.5f;
if (fcol(row, col - 1) == fcol(row, col + 1)) { // Solitary green pixel always has exactly two direct red and blue neighbors in 3x3 grid
red[row][col] = sum[0];
blue[row][col] = sum[2];
} else { // Non solitary green pixel always has one direct and one diagonal red and blue neighbor in 3x3 grid
red[row][col] = sum[0] * 1.3333333f;
blue[row][col] = sum[2] * 1.3333333f;
}
break;
case 2:
red[row][col] = sum[0] * 0.33333333f;
green[row][col] = sum[1] * 0.2f;
case 2: // blue pixel
red[row][col] = sum[0];
green[row][col] = sum[1] * 0.5f;
blue[row][col] = rawData[row][col];
break;
}
}
}
if (plistenerActive) {
if (plistener) {
plistener->setProgress (1.0);
}
}

View File

@ -1083,6 +1083,10 @@ void EditorPanel::open (Thumbnail* tmb, rtengine::InitialImage* isrc)
history->resetSnapShotNumber();
navigator->setInvalid(ipc->getFullWidth(),ipc->getFullHeight());
// When passing a photo as an argument to the RawTherapee executable, the user wants
// this auto-loaded photo's thumbnail to be selected and visible in the Filmstrip.
EditorPanel::syncFileBrowser();
}
void EditorPanel::close ()

View File

@ -76,14 +76,19 @@ Locallab::Locallab():
contrast(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CONTRAST"), -100, 100, 1, 0))),
chroma(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROMA"), -100, 150, 1, 0))),
sensi(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 19))),
structcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL"), 0, 100, 1, 0))),
blendmaskcol(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKCOL"), -100, 150, 1, 0))),
// Exposure
expcomp(Gtk::manage(new Adjuster(M("TP_EXPOSURE_EXPCOMP"), -200, 200, 5, 0))),
expcomp(Gtk::manage(new Adjuster(M("TP_EXPOSURE_EXPCOMP"), -200, 400, 5, 0))),
hlcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTS"), 0, 500, 1, 60))),
hlcomprthresh(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD"), 0, 100, 1, 33))),
black(Gtk::manage(new Adjuster(M("TP_EXPOSURE_BLACKLEVEL"), -16384, 32768, 50, 0))),
shcompr(Gtk::manage(new Adjuster(M("TP_EXPOSURE_COMPRSHADOWS"), 0, 100, 1, 50))),
warm(Gtk::manage(new Adjuster(M("TP_LOCALLAB_WARM"), -100., 100., 1., 0., Gtk::manage(new RTImage("circle-blue-small.png")), Gtk::manage(new RTImage("circle-orange-small.png"))))),
sensiex(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 19))),
sensiex(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSI"), 0, 100, 1, 15))),
structexp(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STRUCCOL"), 0, 100, 1, 0))),
blurexpde(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLURDE"), 2, 100, 1, 5))),
blendmaskexp(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLENDMASKCOL"), -100, 150, 1, 0))),
// Vibrance
saturated(Gtk::manage(new Adjuster(M("TP_VIBRANCE_SATURATED"), -100., 100., 1., 0.))),
pastels(Gtk::manage(new Adjuster(M("TP_VIBRANCE_PASTELS"), -100., 100., 1., 0.))),
@ -105,7 +110,7 @@ Locallab::Locallab():
// Retinex
str(Gtk::manage(new Adjuster(M("TP_LOCALLAB_STR"), 0, 100, 1, 0))),
chrrt(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHRRT"), 0, 100, 1, 0))),
neigh(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NEIGH"), 14, 150, 1, 50))),
neigh(Gtk::manage(new Adjuster(M("TP_LOCALLAB_NEIGH"), -100, 150, 1, 100))),//14, 150, 1, 50))),
vart(Gtk::manage(new Adjuster(M("TP_LOCALLAB_VART"), 50, 500, 1, 200))),
dehaz(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DEHAZ"), 0, 100, 1, 0))),
sensih(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIH"), 0, 100, 1, 19))),
@ -221,6 +226,10 @@ Locallab::Locallab():
sensi->set_tooltip_text(M("TP_LOCALLAB_SENSI_TOOLTIP"));
sensi->setAdjusterListener(this);
structcol->setAdjusterListener(this);
blendmaskcol->setAdjusterListener(this);
qualitycurveMethod->append(M("TP_LOCALLAB_CURVNONE"));
qualitycurveMethod->append(M("TP_LOCALLAB_CURVCURR"));
qualitycurveMethod->append(M("TP_LOCALLAB_CURVENH"));
@ -293,6 +302,7 @@ Locallab::Locallab():
showmaskcolMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
showmaskcolMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
showmaskcolMethod->append(M("TP_LOCALLAB_SHOWMASK"));
showmaskcolMethod->append(M("TP_LOCALLAB_SHOWSTRUC"));
showmaskcolMethod->set_active(0);
showmaskcolMethod->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKCOL_TOOLTIP"));
@ -317,7 +327,7 @@ Locallab::Locallab():
HHmaskshape = static_cast<FlatCurveEditor *>(maskCurveEditorG->addCurve(CT_Flat, "LC(H)", nullptr, false, true));
HHmaskshape->setIdentityValue(0.);
HHmaskshape->setResetCurve(FlatCurveType(defSpot.LLmaskcurve.at(0)), defSpot.LLmaskcurve);
HHmaskshape->setResetCurve(FlatCurveType(defSpot.HHmaskcurve.at(0)), defSpot.HHmaskcurve);
HHmaskshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
HHmaskshape->setCurveColorProvider(this, 6);
HHmaskshape->setBottomBarColorProvider(this, 6);
@ -335,6 +345,7 @@ Locallab::Locallab():
superFrame->add(*superBox);
colorBox->pack_start(*superFrame);
colorBox->pack_start(*sensi);
colorBox->pack_start(*structcol);
Gtk::HBox* const qualcurvbox = Gtk::manage(new Gtk::HBox());
qualcurvbox->pack_start(*labqualcurv, Gtk::PACK_SHRINK, 4);
qualcurvbox->pack_start(*qualitycurveMethod);
@ -347,6 +358,7 @@ Locallab::Locallab():
maskcolBox->pack_start(*showmaskcolMethod, Gtk::PACK_SHRINK, 0);
maskcolBox->pack_start(*enaColorMask, Gtk::PACK_SHRINK, 0);
maskcolBox->pack_start(*maskCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
maskcolBox->pack_start(*blendmaskcol, Gtk::PACK_SHRINK, 0);
maskcolFrame->add(*maskcolBox);
colorBox->pack_start(*maskcolFrame);
@ -375,6 +387,12 @@ Locallab::Locallab():
sensiex->set_tooltip_text(M("TP_LOCALLAB_SENSI_TOOLTIP"));
sensiex->setAdjusterListener(this);
structexp->setAdjusterListener(this);
blurexpde->setAdjusterListener(this);
blendmaskexp->setAdjusterListener(this);
curveEditorG->setCurveListener(this);
shapeexpos = static_cast<DiagonalCurveEditor*>(curveEditorG->addCurve(CT_Diagonal, ""));
@ -394,6 +412,7 @@ Locallab::Locallab():
showmaskexpMethod->append(M("TP_LOCALLAB_SHOWMODIF"));
showmaskexpMethod->append(M("TP_LOCALLAB_SHOWMODIFMASK"));
showmaskexpMethod->append(M("TP_LOCALLAB_SHOWMASK"));
showmaskexpMethod->append(M("TP_LOCALLAB_SHOWSTRUC"));
showmaskexpMethod->set_active(0);
showmaskexpMethod->set_tooltip_markup(M("TP_LOCALLAB_SHOWMASKCOL_TOOLTIP"));
@ -413,6 +432,13 @@ Locallab::Locallab():
LLmaskexpshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
LLmaskexpshape->setBottomBarBgGradient(mllshape);
HHmaskexpshape = static_cast<FlatCurveEditor *>(maskexpCurveEditorG->addCurve(CT_Flat, "LC(H)", nullptr, false, true));
HHmaskexpshape->setIdentityValue(0.);
HHmaskexpshape->setResetCurve(FlatCurveType(defSpot.HHmaskexpcurve.at(0)), defSpot.HHmaskexpcurve);
HHmaskexpshape->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_CC_TOOLTIP"));
HHmaskexpshape->setCurveColorProvider(this, 6);
HHmaskexpshape->setBottomBarColorProvider(this, 6);
maskexpCurveEditorG->curveListComplete();
ToolParamBlock* const exposeBox = Gtk::manage(new ToolParamBlock());
@ -423,14 +449,17 @@ Locallab::Locallab():
exposeBox->pack_start(*shcompr);
exposeBox->pack_start(*warm);
exposeBox->pack_start(*sensiex);
exposeBox->pack_start(*structexp);
exposeBox->pack_start(*blurexpde);
exposeBox->pack_start(*curveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
Gtk::Frame* const maskexpFrame = Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SHOW")));
maskexpFrame->set_label_align(0.025, 0.5);
ToolParamBlock* const maskexpBox = Gtk::manage(new ToolParamBlock());
maskexpBox->pack_start(*transLabels2, Gtk::PACK_SHRINK, 4);
maskexpBox->pack_start(*enaExpMask, Gtk::PACK_SHRINK, 0);
maskexpBox->pack_start(*showmaskexpMethod, Gtk::PACK_SHRINK, 0);
maskexpBox->pack_start(*enaExpMask, Gtk::PACK_SHRINK, 0);
maskexpBox->pack_start(*maskexpCurveEditorG, Gtk::PACK_SHRINK, 4); // Padding is mandatory to correct behavior of curve editor
maskexpBox->pack_start(*blendmaskexp, Gtk::PACK_SHRINK, 0);
maskexpFrame->add(*maskexpBox);
exposeBox->pack_start(*maskexpFrame);
@ -1480,6 +1509,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pp->locallab.spots.at(pp->locallab.selspot).contrast = contrast->getIntValue();
pp->locallab.spots.at(pp->locallab.selspot).chroma = chroma->getIntValue();
pp->locallab.spots.at(pp->locallab.selspot).sensi = sensi->getIntValue();
pp->locallab.spots.at(pp->locallab.selspot).structcol = structcol->getIntValue();
if (qualitycurveMethod->get_active_row_number() == 0) {
pp->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = "none";
@ -1498,6 +1528,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pp->locallab.spots.at(pp->locallab.selspot).CCmaskcurve = CCmaskshape->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).LLmaskcurve = LLmaskshape->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).HHmaskcurve = HHmaskshape->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).blendmaskcol = blendmaskcol->getIntValue();
// Exposure
pp->locallab.spots.at(pp->locallab.selspot).expexpose = expexpose->getEnabled();
pp->locallab.spots.at(pp->locallab.selspot).expcomp = expcomp->getIntValue();
@ -1507,10 +1538,14 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pp->locallab.spots.at(pp->locallab.selspot).shcompr = shcompr->getIntValue();
pp->locallab.spots.at(pp->locallab.selspot).warm = warm->getIntValue();
pp->locallab.spots.at(pp->locallab.selspot).sensiex = sensiex->getIntValue();
pp->locallab.spots.at(pp->locallab.selspot).structexp = structexp->getIntValue();
pp->locallab.spots.at(pp->locallab.selspot).blurexpde = blurexpde->getIntValue();
pp->locallab.spots.at(pp->locallab.selspot).excurve = shapeexpos->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).enaExpMask = enaExpMask->get_active();
pp->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve = LLmaskexpshape->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve = CCmaskexpshape->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).HHmaskexpcurve = HHmaskexpshape->getCurve();
pp->locallab.spots.at(pp->locallab.selspot).blendmaskexp = blendmaskexp->getIntValue();
// Vibrance
pp->locallab.spots.at(pp->locallab.selspot).expvibrance = expvibrance->getEnabled();
pp->locallab.spots.at(pp->locallab.selspot).saturated = saturated->getIntValue();
@ -1641,6 +1676,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pe->locallab.spots.at(pp->locallab.selspot).contrast = pe->locallab.spots.at(pp->locallab.selspot).contrast || contrast->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).chroma = pe->locallab.spots.at(pp->locallab.selspot).chroma || chroma->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).sensi = pe->locallab.spots.at(pp->locallab.selspot).sensi || sensi->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).structcol = pe->locallab.spots.at(pp->locallab.selspot).structcol || structcol->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = pe->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod || qualitycurveMethod->get_active_text() != M("GENERAL_UNCHANGED");
pe->locallab.spots.at(pp->locallab.selspot).llcurve = pe->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).cccurve = pe->locallab.spots.at(pp->locallab.selspot).cccurve || !ccshape->isUnChanged();
@ -1651,6 +1687,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pe->locallab.spots.at(pp->locallab.selspot).CCmaskcurve = pe->locallab.spots.at(pp->locallab.selspot).CCmaskcurve || !CCmaskshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).LLmaskcurve = pe->locallab.spots.at(pp->locallab.selspot).LLmaskcurve || !LLmaskshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).HHmaskcurve = pe->locallab.spots.at(pp->locallab.selspot).HHmaskcurve || !HHmaskshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).blendmaskcol = pe->locallab.spots.at(pp->locallab.selspot).blendmaskcol || blendmaskcol->getEditedState();
// Exposure
pe->locallab.spots.at(pp->locallab.selspot).expexpose = pe->locallab.spots.at(pp->locallab.selspot).expexpose || !expexpose->get_inconsistent();
pe->locallab.spots.at(pp->locallab.selspot).expcomp = pe->locallab.spots.at(pp->locallab.selspot).expcomp || expcomp->getEditedState();
@ -1660,10 +1697,14 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pe->locallab.spots.at(pp->locallab.selspot).shcompr = pe->locallab.spots.at(pp->locallab.selspot).shcompr || shcompr->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).warm = pe->locallab.spots.at(pp->locallab.selspot).warm || warm->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).sensiex = pe->locallab.spots.at(pp->locallab.selspot).sensiex || sensiex->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).structexp = pe->locallab.spots.at(pp->locallab.selspot).structexp || structexp->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).blurexpde = pe->locallab.spots.at(pp->locallab.selspot).blurexpde || blurexpde->getEditedState();
pe->locallab.spots.at(pp->locallab.selspot).excurve = pe->locallab.spots.at(pp->locallab.selspot).excurve || !shapeexpos->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).enaExpMask = pe->locallab.spots.at(pp->locallab.selspot).enaExpMask || !enaExpMask->get_inconsistent();
pe->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve = pe->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve || !CCmaskexpshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve = pe->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve || !LLmaskexpshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).HHmaskexpcurve = pe->locallab.spots.at(pp->locallab.selspot).HHmaskexpcurve || !HHmaskexpshape->isUnChanged();
pe->locallab.spots.at(pp->locallab.selspot).blendmaskexp = pe->locallab.spots.at(pp->locallab.selspot).blendmaskexp || blendmaskexp->getEditedState();
// Vibrance
pe->locallab.spots.at(pp->locallab.selspot).expvibrance = pe->locallab.spots.at(pp->locallab.selspot).expvibrance || !expvibrance->get_inconsistent();
pe->locallab.spots.at(pp->locallab.selspot).saturated = pe->locallab.spots.at(pp->locallab.selspot).saturated || saturated->getEditedState();
@ -1781,6 +1822,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pedited->locallab.spots.at(pp->locallab.selspot).contrast = pedited->locallab.spots.at(pp->locallab.selspot).contrast || contrast->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).chroma = pedited->locallab.spots.at(pp->locallab.selspot).chroma || chroma->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).sensi = pedited->locallab.spots.at(pp->locallab.selspot).sensi || sensi->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).structcol = pedited->locallab.spots.at(pp->locallab.selspot).structcol || structcol->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod = pedited->locallab.spots.at(pp->locallab.selspot).qualitycurveMethod || qualitycurveMethod->get_active_text() != M("GENERAL_UNCHANGED");
pedited->locallab.spots.at(pp->locallab.selspot).llcurve = pedited->locallab.spots.at(pp->locallab.selspot).llcurve || !llshape->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).cccurve = pedited->locallab.spots.at(pp->locallab.selspot).cccurve || !ccshape->isUnChanged();
@ -1791,6 +1833,7 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pedited->locallab.spots.at(pp->locallab.selspot).CCmaskcurve = pedited->locallab.spots.at(pp->locallab.selspot).CCmaskcurve || !CCmaskshape->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).LLmaskcurve = pedited->locallab.spots.at(pp->locallab.selspot).LLmaskcurve || !LLmaskshape->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).HHmaskcurve = pedited->locallab.spots.at(pp->locallab.selspot).HHmaskcurve || !HHmaskshape->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcol = pedited->locallab.spots.at(pp->locallab.selspot).blendmaskcol || blendmaskcol->getEditedState();
// Exposure
pedited->locallab.spots.at(pp->locallab.selspot).expexpose = pedited->locallab.spots.at(pp->locallab.selspot).expexpose || !expexpose->get_inconsistent();
pedited->locallab.spots.at(pp->locallab.selspot).expcomp = pedited->locallab.spots.at(pp->locallab.selspot).expcomp || expcomp->getEditedState();
@ -1800,10 +1843,14 @@ void Locallab::write(ProcParams* pp, ParamsEdited* pedited)
pedited->locallab.spots.at(pp->locallab.selspot).shcompr = pedited->locallab.spots.at(pp->locallab.selspot).shcompr || shcompr->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).warm = pedited->locallab.spots.at(pp->locallab.selspot).warm || warm->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).sensiex = pedited->locallab.spots.at(pp->locallab.selspot).sensiex || sensiex->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).structexp = pedited->locallab.spots.at(pp->locallab.selspot).structexp || structexp->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).blurexpde = pedited->locallab.spots.at(pp->locallab.selspot).blurexpde || blurexpde->getEditedState();
pedited->locallab.spots.at(pp->locallab.selspot).excurve = pedited->locallab.spots.at(pp->locallab.selspot).excurve || !shapeexpos->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).enaExpMask = pedited->locallab.spots.at(pp->locallab.selspot).enaExpMask || !enaExpMask->get_inconsistent();
pedited->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve = pedited->locallab.spots.at(pp->locallab.selspot).CCmaskexpcurve || !CCmaskexpshape->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve = pedited->locallab.spots.at(pp->locallab.selspot).LLmaskexpcurve || !LLmaskexpshape->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).HHmaskexpcurve = pedited->locallab.spots.at(pp->locallab.selspot).HHmaskexpcurve || !HHmaskexpshape->isUnChanged();
pedited->locallab.spots.at(pp->locallab.selspot).blendmaskexp = pedited->locallab.spots.at(pp->locallab.selspot).blendmaskexp || blendmaskexp->getEditedState();
// Vibrance
pedited->locallab.spots.at(pp->locallab.selspot).expvibrance = pedited->locallab.spots.at(pp->locallab.selspot).expvibrance || !expvibrance->get_inconsistent();
pedited->locallab.spots.at(pp->locallab.selspot).saturated = pedited->locallab.spots.at(pp->locallab.selspot).saturated || saturated->getEditedState();
@ -2054,6 +2101,11 @@ void Locallab::curveChanged(CurveEditor* ce)
}
}
if (ce == HHmaskexpshape) {
if (listener) {
listener->panelChanged(EvlocallabHHmaskexpshape, M("HISTORY_CUSTOMCURVE"));
}
}
}
// Vibrance
@ -2463,6 +2515,8 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
contrast->setDefault((double)defSpot->contrast);
chroma->setDefault((double)defSpot->chroma);
sensi->setDefault((double)defSpot->sensi);
structcol->setDefault((double)defSpot->structcol);
blendmaskcol->setDefault((double)defSpot->blendmaskcol);
// Exposure
expcomp->setDefault((double)defSpot->expcomp);
hlcompr->setDefault((double)defSpot->hlcompr);
@ -2471,6 +2525,9 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
shcompr->setDefault((double)defSpot->shcompr);
warm->setDefault((double)defSpot->warm);
sensiex->setDefault((double)defSpot->sensiex);
structexp->setDefault((double)defSpot->structexp);
blurexpde->setDefault((double)defSpot->blurexpde);
blendmaskexp->setDefault((double)defSpot->blendmaskexp);
// Vibrance
saturated->setDefault((double)defSpot->saturated);
pastels->setDefault((double)defSpot->pastels);
@ -2537,6 +2594,8 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
contrast->setDefaultEditedState(Irrelevant);
chroma->setDefaultEditedState(Irrelevant);
sensi->setDefaultEditedState(Irrelevant);
structcol->setDefaultEditedState(Irrelevant);
blendmaskcol->setDefaultEditedState(Irrelevant);
// Exposure
expcomp->setDefaultEditedState(Irrelevant);
hlcompr->setDefaultEditedState(Irrelevant);
@ -2545,6 +2604,9 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
shcompr->setDefaultEditedState(Irrelevant);
warm->setDefaultEditedState(Irrelevant);
sensiex->setDefaultEditedState(Irrelevant);
structexp->setDefaultEditedState(Irrelevant);
blurexpde->setDefaultEditedState(Irrelevant);
blendmaskexp->setDefaultEditedState(Irrelevant);
// Vibrance
saturated->setDefaultEditedState(Irrelevant);
pastels->setDefaultEditedState(Irrelevant);
@ -2615,6 +2677,8 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
contrast->setDefaultEditedState(defSpotState->contrast ? Edited : UnEdited);
chroma->setDefaultEditedState(defSpotState->chroma ? Edited : UnEdited);
sensi->setDefaultEditedState(defSpotState->sensi ? Edited : UnEdited);
structcol->setDefaultEditedState(defSpotState->structcol ? Edited : UnEdited);
blendmaskcol->setDefaultEditedState(defSpotState->blendmaskcol ? Edited : UnEdited);
// Exposure
expcomp->setDefaultEditedState(defSpotState->expcomp ? Edited : UnEdited);
hlcompr->setDefaultEditedState(defSpotState->hlcompr ? Edited : UnEdited);
@ -2623,6 +2687,9 @@ void Locallab::setDefaults(const ProcParams * defParams, const ParamsEdited * pe
shcompr->setDefaultEditedState(defSpotState->shcompr ? Edited : UnEdited);
warm->setDefaultEditedState(defSpotState->warm ? Edited : UnEdited);
sensiex->setDefaultEditedState(defSpotState->sensiex ? Edited : UnEdited);
structexp->setDefaultEditedState(defSpotState->structexp ? Edited : UnEdited);
blurexpde->setDefaultEditedState(defSpotState->blurexpde ? Edited : UnEdited);
blendmaskexp->setDefaultEditedState(defSpotState->blendmaskexp ? Edited : UnEdited);
// Vibrance
saturated->setDefaultEditedState(defSpotState->saturated ? Edited : UnEdited);
pastels->setDefaultEditedState(defSpotState->pastels ? Edited : UnEdited);
@ -2748,6 +2815,19 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
listener->panelChanged(Evlocallabsensi, sensi->getTextValue());
}
}
if (a == structcol) {
if (listener) {
listener->panelChanged(Evlocallabstructcol, structcol->getTextValue());
}
}
if (a == blendmaskcol) {
if (listener) {
listener->panelChanged(Evlocallabblendmaskcol, blendmaskcol->getTextValue());
}
}
}
// Exposure
@ -2802,6 +2882,25 @@ void Locallab::adjusterChanged(Adjuster * a, double newval)
listener->panelChanged(Evlocallabsensiex, sensiex->getTextValue());
}
}
if (a == structexp) {
if (listener) {
listener->panelChanged(Evlocallabstructexp, structexp->getTextValue());
}
}
if (a == blurexpde) {
if (listener) {
listener->panelChanged(Evlocallabblurexpde, blurexpde->getTextValue());
}
}
if (a == blendmaskexp) {
if (listener) {
listener->panelChanged(Evlocallabblendmaskexp, blendmaskexp->getTextValue());
}
}
}
// Vibrance
@ -3187,6 +3286,8 @@ void Locallab::setBatchMode(bool batchMode)
contrast->showEditedCB();
chroma->showEditedCB();
sensi->showEditedCB();
structcol->showEditedCB();
blendmaskcol->showEditedCB();
// Exposure
expcomp->showEditedCB();
hlcompr->showEditedCB();
@ -3195,6 +3296,9 @@ void Locallab::setBatchMode(bool batchMode)
shcompr->showEditedCB();
warm->showEditedCB();
sensiex->showEditedCB();
structexp->showEditedCB();
blurexpde->showEditedCB();
blendmaskexp->showEditedCB();
// Vibrance
saturated->showEditedCB();
pastels->showEditedCB();
@ -3400,12 +3504,12 @@ void Locallab::enableListener()
curvactivConn.block(false);
qualitycurveMethodConn.block(false);
inversConn.block(false);
enaColorMaskConn.block(false);
showmaskcolMethodConn.block(false);
enaColorMaskConn.block(false);
// Exposure
enableexposeConn.block(false);
enaExpMaskConn.block(false);
showmaskexpMethodConn.block(false);
enaExpMaskConn.block(false);
// Vibrance
enablevibranceConn.block(false);
pskinsconn.block(false);
@ -3447,12 +3551,12 @@ void Locallab::disableListener()
curvactivConn.block(true);
qualitycurveMethodConn.block(true);
inversConn.block(true);
enaColorMaskConn.block(true);
showmaskcolMethodConn.block(true);
enaColorMaskConn.block(true);
// Exposure
enableexposeConn.block(true);
enaExpMaskConn.block(true);
showmaskexpMethodConn.block(true);
enaExpMaskConn.block(true);
// Vibrance
enablevibranceConn.block(true);
pskinsconn.block(true);
@ -3497,6 +3601,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
contrast->setValue(pp->locallab.spots.at(index).contrast);
chroma->setValue(pp->locallab.spots.at(index).chroma);
sensi->setValue(pp->locallab.spots.at(index).sensi);
structcol->setValue(pp->locallab.spots.at(index).structcol);
if (pp->locallab.spots.at(index).qualitycurveMethod == "none") {
qualitycurveMethod->set_active(0);
@ -3521,6 +3626,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
CCmaskshape->setCurve(pp->locallab.spots.at(index).CCmaskcurve);
LLmaskshape->setCurve(pp->locallab.spots.at(index).LLmaskcurve);
HHmaskshape->setCurve(pp->locallab.spots.at(index).HHmaskcurve);
blendmaskcol->setValue(pp->locallab.spots.at(index).blendmaskcol);
// Exposure
expexpose->setEnabled(pp->locallab.spots.at(index).expexpose);
@ -3531,10 +3637,14 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
shcompr->setValue(pp->locallab.spots.at(index).shcompr);
warm->setValue(pp->locallab.spots.at(index).warm);
sensiex->setValue(pp->locallab.spots.at(index).sensiex);
structexp->setValue(pp->locallab.spots.at(index).structexp);
blurexpde->setValue(pp->locallab.spots.at(index).blurexpde);
shapeexpos->setCurve(pp->locallab.spots.at(index).excurve);
enaExpMask->set_active(pp->locallab.spots.at(index).enaExpMask);
CCmaskexpshape->setCurve(pp->locallab.spots.at(index).CCmaskexpcurve);
LLmaskexpshape->setCurve(pp->locallab.spots.at(index).LLmaskexpcurve);
HHmaskexpshape->setCurve(pp->locallab.spots.at(index).HHmaskexpcurve);
blendmaskexp->setValue(pp->locallab.spots.at(index).blendmaskexp);
// Vibrance
expvibrance->setEnabled(pp->locallab.spots.at(index).expvibrance);
@ -3687,6 +3797,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
contrast->setEditedState(spotState->contrast ? Edited : UnEdited);
chroma->setEditedState(spotState->chroma ? Edited : UnEdited);
sensi->setEditedState(spotState->sensi ? Edited : UnEdited);
structcol->setEditedState(spotState->structcol ? Edited : UnEdited);
if (!spotState->qualitycurveMethod) {
qualitycurveMethod->set_active_text(M("GENERAL_UNCHANGED"));
@ -3701,7 +3812,7 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
CCmaskshape->setUnChanged(!spotState->CCmaskcurve);
LLmaskshape->setUnChanged(!spotState->LLmaskcurve);
HHmaskshape->setUnChanged(!spotState->HHmaskcurve);
blendmaskcol->setEditedState(spotState->blendmaskcol ? Edited : UnEdited);
// Exposure
expexpose->set_inconsistent(!spotState->expexpose);
@ -3712,10 +3823,14 @@ void Locallab::updateLocallabGUI(const rtengine::procparams::ProcParams* pp, con
warm->setEditedState(spotState->warm ? Edited : UnEdited);
shcompr->setEditedState(spotState->shcompr ? Edited : UnEdited);
sensiex->setEditedState(spotState->sensiex ? Edited : UnEdited);
structexp->setEditedState(spotState->structexp ? Edited : UnEdited);
blurexpde->setEditedState(spotState->blurexpde ? Edited : UnEdited);
shapeexpos->setUnChanged(!spotState->excurve);
enaExpMask->set_inconsistent(multiImage && !spotState->enaExpMask);
CCmaskexpshape->setUnChanged(!spotState->CCmaskexpcurve);
LLmaskexpshape->setUnChanged(!spotState->LLmaskexpcurve);
HHmaskexpshape->setUnChanged(!spotState->HHmaskexpcurve);
blendmaskexp->setEditedState(spotState->blendmaskexp ? Edited : UnEdited);
// Vibrance
expvibrance->set_inconsistent(!spotState->expvibrance);

View File

@ -78,6 +78,7 @@ private:
DiagonalCurveEditor* shapeexpos;
FlatCurveEditor* CCmaskexpshape;
FlatCurveEditor* LLmaskexpshape;
FlatCurveEditor* HHmaskexpshape;
// Vibrance
CurveEditorGroup* const curveEditorGG;
DiagonalCurveEditor* skinTonesCurve;
@ -91,6 +92,8 @@ private:
Adjuster* const contrast;
Adjuster* const chroma;
Adjuster* const sensi;
Adjuster* const structcol;
Adjuster* const blendmaskcol;
// Exposure
Adjuster* const expcomp;
Adjuster* const hlcompr;
@ -99,6 +102,9 @@ private:
Adjuster* const shcompr;
Adjuster* const warm;
Adjuster* const sensiex;
Adjuster* const structexp;
Adjuster* const blurexpde;
Adjuster* const blendmaskexp;
// Vibrance
Adjuster* const saturated;
Adjuster* const pastels;

View File

@ -209,6 +209,27 @@ Glib::ustring MultiLangMgr::getOSUserLanguage ()
{
Glib::ustring langName ("default");
#if defined (WIN32)
const LCID localeID = GetUserDefaultLCID ();
TCHAR localeName[18];
const int langLen = GetLocaleInfo (localeID, LOCALE_SISO639LANGNAME, localeName, 9);
if (langLen <= 0) {
return langName;
}
localeName[langLen - 1] = '-';
const int countryLen = GetLocaleInfo (localeID, LOCALE_SISO3166CTRYNAME, &localeName[langLen], 9);
if (countryLen <= 0) {
return langName;
}
langName = localeToLang (localeName);
#elif defined (__linux__) || defined (__APPLE__)
// Query the current locale and force decimal point to dot.
const char *locale = getenv("LANG");
if (locale || (locale = setlocale (LC_CTYPE, ""))) {
@ -217,5 +238,7 @@ Glib::ustring MultiLangMgr::getOSUserLanguage ()
setlocale (LC_NUMERIC, "C");
#endif
return langName;
}

View File

@ -948,6 +948,8 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
locallab.spots.at(j).contrast = locallab.spots.at(j).contrast && pSpot.contrast == otherSpot.contrast;
locallab.spots.at(j).chroma = locallab.spots.at(j).chroma && pSpot.chroma == otherSpot.chroma;
locallab.spots.at(j).sensi = locallab.spots.at(j).sensi && pSpot.sensi == otherSpot.sensi;
locallab.spots.at(j).structcol = locallab.spots.at(j).structcol && pSpot.structcol == otherSpot.structcol;
locallab.spots.at(j).blendmaskcol = locallab.spots.at(j).blendmaskcol && pSpot.blendmaskcol == otherSpot.blendmaskcol;
locallab.spots.at(j).qualitycurveMethod = locallab.spots.at(j).qualitycurveMethod && pSpot.qualitycurveMethod == otherSpot.qualitycurveMethod;
locallab.spots.at(j).llcurve = locallab.spots.at(j).llcurve && pSpot.llcurve == otherSpot.llcurve;
locallab.spots.at(j).cccurve = locallab.spots.at(j).cccurve && pSpot.cccurve == otherSpot.cccurve;
@ -967,10 +969,14 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
locallab.spots.at(j).shcompr = locallab.spots.at(j).shcompr && pSpot.shcompr == otherSpot.shcompr;
locallab.spots.at(j).warm = locallab.spots.at(j).warm && pSpot.warm == otherSpot.warm;
locallab.spots.at(j).sensiex = locallab.spots.at(j).sensiex && pSpot.sensiex == otherSpot.sensiex;
locallab.spots.at(j).structexp = locallab.spots.at(j).structexp && pSpot.structexp == otherSpot.structexp;
locallab.spots.at(j).blurexpde = locallab.spots.at(j).blurexpde && pSpot.blurexpde == otherSpot.blurexpde;
locallab.spots.at(j).excurve = locallab.spots.at(j).excurve && pSpot.excurve == otherSpot.excurve;
locallab.spots.at(j).enaExpMask = locallab.spots.at(j).enaExpMask && pSpot.enaExpMask == otherSpot.enaExpMask;
locallab.spots.at(j).CCmaskexpcurve = locallab.spots.at(j).CCmaskexpcurve && pSpot.CCmaskexpcurve == otherSpot.CCmaskexpcurve;
locallab.spots.at(j).LLmaskexpcurve = locallab.spots.at(j).LLmaskexpcurve && pSpot.LLmaskexpcurve == otherSpot.LLmaskexpcurve;
locallab.spots.at(j).HHmaskexpcurve = locallab.spots.at(j).HHmaskexpcurve && pSpot.HHmaskexpcurve == otherSpot.HHmaskexpcurve;
locallab.spots.at(j).blendmaskexp = locallab.spots.at(j).blendmaskexp && pSpot.blendmaskexp == otherSpot.blendmaskexp;
// Vibrance
locallab.spots.at(j).expvibrance = locallab.spots.at(j).expvibrance && pSpot.expvibrance == otherSpot.expvibrance;
locallab.spots.at(j).saturated = locallab.spots.at(j).saturated && pSpot.saturated == otherSpot.saturated;
@ -2575,6 +2581,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.locallab.spots.at(i).sensi = mods.locallab.spots.at(i).sensi;
}
if (locallab.spots.at(i).structcol) {
toEdit.locallab.spots.at(i).structcol = mods.locallab.spots.at(i).structcol;
}
if (locallab.spots.at(i).blendmaskcol) {
toEdit.locallab.spots.at(i).blendmaskcol = mods.locallab.spots.at(i).blendmaskcol;
}
if (locallab.spots.at(i).qualitycurveMethod) {
toEdit.locallab.spots.at(i).qualitycurveMethod = mods.locallab.spots.at(i).qualitycurveMethod;
}
@ -2648,6 +2662,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.locallab.spots.at(i).sensiex = mods.locallab.spots.at(i).sensiex;
}
if (locallab.spots.at(i).structexp) {
toEdit.locallab.spots.at(i).structexp = mods.locallab.spots.at(i).structexp;
}
if (locallab.spots.at(i).blurexpde) {
toEdit.locallab.spots.at(i).blurexpde = mods.locallab.spots.at(i).blurexpde;
}
if (locallab.spots.at(i).excurve) {
toEdit.locallab.spots.at(i).excurve = mods.locallab.spots.at(i).excurve;
}
@ -2664,6 +2686,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
toEdit.locallab.spots.at(i).LLmaskexpcurve = mods.locallab.spots.at(i).LLmaskexpcurve;
}
if (locallab.spots.at(i).HHmaskexpcurve) {
toEdit.locallab.spots.at(i).HHmaskexpcurve = mods.locallab.spots.at(i).HHmaskexpcurve;
}
if (locallab.spots.at(i).blendmaskexp) {
toEdit.locallab.spots.at(i).blendmaskexp = mods.locallab.spots.at(i).blendmaskexp;
}
// Vibrance
if (locallab.spots.at(i).expvibrance) {
toEdit.locallab.spots.at(i).expvibrance = mods.locallab.spots.at(i).expvibrance;
@ -3915,6 +3945,8 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
contrast(v),
chroma(v),
sensi(v),
structcol(v),
blendmaskcol(v),
qualitycurveMethod(v),
llcurve(v),
cccurve(v),
@ -3934,10 +3966,14 @@ LocallabParamsEdited::LocallabSpotEdited::LocallabSpotEdited(bool v) :
shcompr(v),
warm(v),
sensiex(v),
structexp(v),
blurexpde(v),
excurve(v),
enaExpMask(v),
CCmaskexpcurve(v),
LLmaskexpcurve(v),
HHmaskexpcurve(v),
blendmaskexp(v),
// Vibrance
expvibrance(v),
saturated(v),
@ -4047,6 +4083,8 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
contrast = v;
chroma = v;
sensi = v;
structcol = v;
blendmaskcol = v;
qualitycurveMethod = v;
llcurve = v;
cccurve = v;
@ -4066,10 +4104,14 @@ void LocallabParamsEdited::LocallabSpotEdited::set(bool v)
shcompr = v;
warm = v;
sensiex = v;
structexp = v;
blurexpde = v;
excurve = v;
enaExpMask = v;
CCmaskexpcurve = v;
LLmaskexpcurve = v;
HHmaskexpcurve = v;
blendmaskexp = v;
// Vibrance
expvibrance = v;
saturated = v;

View File

@ -487,6 +487,8 @@ public:
bool contrast;
bool chroma;
bool sensi;
bool structcol;
bool blendmaskcol;
bool qualitycurveMethod;
bool llcurve;
bool cccurve;
@ -506,10 +508,14 @@ public:
bool shcompr;
bool warm;
bool sensiex;
bool structexp;
bool blurexpde;
bool excurve;
bool enaExpMask;
bool CCmaskexpcurve;
bool LLmaskexpcurve;
bool HHmaskexpcurve;
bool blendmaskexp;
// Vibrance
bool expvibrance;
bool saturated;