diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala
index c9b6b4408..bf1a12876 100644
--- a/rtdata/languages/Catala
+++ b/rtdata/languages/Catala
@@ -658,7 +658,6 @@ TP_CROP_GUIDETYPE;Tipus de guia:
TP_CROP_H;Alt
TP_CROP_LABEL;Cropa
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP;Selecc. cropar
TP_CROP_W;Ample
TP_CROP_X;x
TP_CROP_Y;y
@@ -1317,13 +1316,18 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1438,7 +1442,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MONITOR_PROFILE_SYSTEM;System default
!NAVIGATOR_B;B:
!NAVIGATOR_G;G:
@@ -1752,16 +1756,25 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1790,6 +1803,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!TP_CROP_GTHARMMEANS;Harmonic Means
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified)
index 850d028b2..38c4a37fe 100644
--- a/rtdata/languages/Chinese (Simplified)
+++ b/rtdata/languages/Chinese (Simplified)
@@ -496,10 +496,6 @@ PREFERENCES_BLACKBODY;钨丝灯
PREFERENCES_CACHEMAXENTRIES;最大缓存数量
PREFERENCES_CACHEOPTS;缓存选项
PREFERENCES_CACHETHUMBHEIGHT;最大缩略图高度
-PREFERENCES_CIEART;CIECAM02 优化
-PREFERENCES_CIEART_FRAME;CIECAM02-特定选项
-PREFERENCES_CIEART_LABEL;使用单浮点精度而不是双精度
-PREFERENCES_CIEART_TOOLTIP;如果启用, CIECAM02 将使用单精度浮点计算, 结果是品质轻微下降, 速度则可以提高一些
PREFERENCES_CLIPPINGIND;高光溢出提示
PREFERENCES_CLUTSCACHE;HaldCLUT 缓存
PREFERENCES_CLUTSCACHE_LABEL;CLUTs 最大缓存数
@@ -765,7 +761,6 @@ TP_CROP_GUIDETYPE;辅助方式:
TP_CROP_H;高
TP_CROP_LABEL;剪裁
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP;选择预设
TP_CROP_W;宽
TP_CROP_X;x
TP_CROP_Y;y
@@ -1392,13 +1387,18 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1518,7 +1518,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images.
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MONITOR_PROFILE_SYSTEM;System default
!OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead.
!OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead.
@@ -1704,16 +1704,25 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1739,6 +1748,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!TP_COLORTONING_TWOBY;Special a* and b*
!TP_COLORTONING_TWOCOLOR_TOOLTIP;Standard chroma:\nLinear response, a* = b*.\n\nSpecial chroma:\nLinear response, a* = b*, but unbound - try under the diagonal.\n\nSpecial a* and b*:\nLinear response unbound with separate curves for a* and b*. Intended for special effects.\n\nSpecial chroma 2 colors:\nMore predictable.
!TP_COLORTONING_TWOSTD;Standard chroma
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEFRINGE_THRESHOLD;Threshold
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional)
index 84f99ba81..4c4e727c1 100644
--- a/rtdata/languages/Chinese (Traditional)
+++ b/rtdata/languages/Chinese (Traditional)
@@ -339,7 +339,6 @@ TP_CROP_GTRULETHIRDS;1/3法則
TP_CROP_GUIDETYPE;輔助方式:
TP_CROP_H;高
TP_CROP_LABEL;剪裁
-TP_CROP_SELECTCROP; 選擇預設
TP_CROP_W;寬
TP_CROP_X;x
TP_CROP_Y;y
@@ -985,13 +984,18 @@ TP_WBALANCE_TEMPERATURE;色溫
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1134,7 +1138,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
!MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l
@@ -1555,16 +1559,25 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1597,6 +1610,8 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
!TP_CROP_PPI;PPI=
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech
index 16c68ec5d..51873b391 100644
--- a/rtdata/languages/Czech
+++ b/rtdata/languages/Czech
@@ -1425,7 +1425,6 @@ TP_CROP_GUIDETYPE;Druh vodítek:
TP_CROP_H;Výška
TP_CROP_LABEL;Ořez
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP;Vyznačit výřez
TP_CROP_W;Šířka
TP_CROP_X;X
TP_CROP_Y;Y
@@ -2180,13 +2179,18 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
!HISTORY_MSG_489;DRC - Detail
!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -2253,7 +2257,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
!ICCPROFCREATOR_SLOPE;Slope
!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!PARTIALPASTE_DEHAZE;Haze removal
!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift
@@ -2283,16 +2287,27 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance
!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended.
!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%)
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk
index 1e83b4951..beb4f2711 100644
--- a/rtdata/languages/Dansk
+++ b/rtdata/languages/Dansk
@@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Reglen om tredjedele
TP_CROP_GUIDETYPE;Hjælpelinjer:
TP_CROP_H;H
TP_CROP_LABEL;Beskær
-TP_CROP_SELECTCROP; Vælg beskæring
TP_CROP_W;B
TP_CROP_X;x
TP_CROP_Y;y
@@ -980,13 +979,18 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1130,7 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
!MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l
@@ -1552,16 +1556,25 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1594,6 +1607,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
!TP_CROP_PPI;PPI=
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch
index 6baf1640c..8cc1bc000 100644
--- a/rtdata/languages/Deutsch
+++ b/rtdata/languages/Deutsch
@@ -71,6 +71,8 @@
#70 25.07.2018 Korrekturen (TooWaBoo) RT 5.4
#71 28.09.2018 Korrekturen (TooWaBoo) RT 5.5
#72 05.10.2018 Korrekturen (TooWaBoo) RT 5.5
+#73 21.11.2018 Erweiterung (TooWaBoo) RT 5.5
+#74 24.11.2018 Erweiterung (TooWaBoo) RT 5.5
ABOUT_TAB_BUILD;Version
ABOUT_TAB_CREDITS;Danksagungen
@@ -113,6 +115,10 @@ DYNPROFILEEDITOR_DELETE;Löschen
DYNPROFILEEDITOR_EDIT;Ändern
DYNPROFILEEDITOR_EDIT_RULE;Profilregel ändern
DYNPROFILEEDITOR_ENTRY_TOOLTIP;Groß-/Kleinschreibung wird NICHT berücksichtigt.\nFür einen regulären Ausdruck benutzen Sie bitte\n"re:" als Prefix.
+DYNPROFILEEDITOR_IMGTYPE_ANY;Alle
+DYNPROFILEEDITOR_IMGTYPE_HDR;HDR
+DYNPROFILEEDITOR_IMGTYPE_PS;Pixel-Shift
+DYNPROFILEEDITOR_IMGTYPE_STD;Standard
DYNPROFILEEDITOR_MOVE_DOWN;Runter
DYNPROFILEEDITOR_MOVE_UP;Hoch
DYNPROFILEEDITOR_NEW;Neu
@@ -152,15 +158,15 @@ EXPORT_BYPASS_DEFRINGE;Farbsaum entfernen überspringen
EXPORT_BYPASS_DIRPYRDENOISE;Rauschreduzierung überspringen
EXPORT_BYPASS_DIRPYREQUALIZER;Detailebenenkontrast überspringen
EXPORT_BYPASS_EQUALIZER;Waveletebenen überspringen
-EXPORT_BYPASS_RAW_CA;CA-Korrektur überspringen [RAW]
-EXPORT_BYPASS_RAW_CCSTEPS;Falschfarbenreduzierung überspringen\n[RAW]
-EXPORT_BYPASS_RAW_DCB_ENHANCE;DCB-Verbesserungsstufen überspringen\n[RAW]
-EXPORT_BYPASS_RAW_DCB_ITERATIONS;DCB-Interationen überspringen [RAW]
-EXPORT_BYPASS_RAW_DF;Dunkelbild überspringen [RAW]
-EXPORT_BYPASS_RAW_FF;Weißbild überspringen [RAW]
-EXPORT_BYPASS_RAW_GREENTHRESH;Grün-Ausgleich überspringen [RAW]
-EXPORT_BYPASS_RAW_LINENOISE;Zeilenrauschfilter überspringen [RAW]
-EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;LMMSE-Verbesserungsstufen überspringen [RAW]
+EXPORT_BYPASS_RAW_CA;CA-Korrektur überspringen
+EXPORT_BYPASS_RAW_CCSTEPS;Falschfarbenreduzierung überspringen
+EXPORT_BYPASS_RAW_DCB_ENHANCE;DCB-Verbesserungsstufen überspringen
+EXPORT_BYPASS_RAW_DCB_ITERATIONS;DCB-Interationen überspringen
+EXPORT_BYPASS_RAW_DF;Dunkelbild überspringen
+EXPORT_BYPASS_RAW_FF;Weißbild überspringen
+EXPORT_BYPASS_RAW_GREENTHRESH;Grün-Ausgleich überspringen
+EXPORT_BYPASS_RAW_LINENOISE;Zeilenrauschfilter überspringen
+EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;LMMSE-Verbesserungsstufen überspringen
EXPORT_BYPASS_SHARPENEDGE;Kantenschärfung überspringen
EXPORT_BYPASS_SHARPENING;Schärfung überspringen
EXPORT_BYPASS_SHARPENMICRO;Mikrokontrast überspringen
@@ -173,7 +179,7 @@ EXPORT_PIPELINE;Verarbeitungspipeline
EXPORT_PUTTOQUEUEFAST; Zur Warteschlange “Schneller Export“ hinzufügen
EXPORT_RAW_DMETHOD;Demosaikmethode
EXPORT_USE_FAST_PIPELINE;Priorität Geschwindigkeit
-EXPORT_USE_FAST_PIPELINE_TIP;Wendet alle Bearbeitungsschritte, im Gegensatz\nzu „Standard“ , auf das bereits skalierte Bild an.\nDadurch steigt die Verarbeitungsgeschwindigkeit\nauf Kosten der Qualität.
+EXPORT_USE_FAST_PIPELINE_TIP;Wendet alle Bearbeitungsschritte, im Gegensatz\nzu „Standard“, auf das bereits skalierte Bild an.\nDadurch steigt die Verarbeitungsgeschwindigkeit\nauf Kosten der Qualität.
EXPORT_USE_NORMAL_PIPELINE;Standard
EXTPROGTARGET_1;RAW
EXTPROGTARGET_2;Stapelverarbeitung beendet
@@ -185,6 +191,8 @@ FILEBROWSER_AUTOFLATFIELD;Automatisches Weißbild
FILEBROWSER_BROWSEPATHBUTTONHINT;Ausgewählten Pfad öffnen.
FILEBROWSER_BROWSEPATHHINT;Einen Pfad eingeben:\nTaste:\nStrg + o Setzt den Cursor in das Eingabefeld\nEnter Öffnet den Pfad\nEsc Änderungen verwerfen\nUmschalt + Esc Eingabefeld verlassen\n\nSchnellnavigation:\nTaste:\n~ “Home“-Verzeichnis des Benutzers\n! Bilder-Verzeichnis des Benutzers
FILEBROWSER_CACHE;Festplatten-Cache
+FILEBROWSER_CACHECLEARFROMFULL;Alle zwischengespeicherte Profile löschen
+FILEBROWSER_CACHECLEARFROMPARTIAL;Alle NICHT zwischengespeicherte Profile löschen
FILEBROWSER_CLEARPROFILE;Profil löschen
FILEBROWSER_COLORLABEL_TOOLTIP;Farbmarkierung\n\nTaste: Strg + Umschalt + 0 Ohne\nTaste: Strg + Umschalt + 1 Rot\nTaste: Strg + Umschalt + 2 Gelb\nTaste: Strg + Umschalt + 3 Grün\nTaste: Strg + Umschalt + 4 Blau\nTaste: Strg + Umschalt + 5 Violett
FILEBROWSER_COPYPROFILE;Profil kopieren
@@ -354,7 +362,7 @@ HISTORY_MSG_32;(Schärfung) - RLD\nDämpfung
HISTORY_MSG_33;(Schärfung) - RLD\nIterationen
HISTORY_MSG_34;(Objektivkorrektur)\nProfil - Verzeichnung
HISTORY_MSG_35;(Objektivkorrektur)\nProfil - Vignettierung
-HISTORY_MSG_36;(Objektivkorrektur)\nProfil - CA-Korrektur
+HISTORY_MSG_36;(Objektivkorrektur)\nProfil - CA
HISTORY_MSG_37;(Belichtung) - Auto
HISTORY_MSG_38;(Weißabgleich) - Methode
HISTORY_MSG_39;(Weißabgleich)\nFarbtemperatur
@@ -790,12 +798,31 @@ HISTORY_MSG_485;(Objektivkorrektur)\nProfil
HISTORY_MSG_486;(Objektivkorrektur)\nProfil - Kamera
HISTORY_MSG_487;(Objektivkorrektur)\nProfil - Objektiv
HISTORY_MSG_488;(Dynamikkompression)
+HISTORY_MSG_489;(Dynamikkompression)\nDetails
HISTORY_MSG_490;(Dynamikkompression)\nIntensität
HISTORY_MSG_491;(Weißabgleich)
HISTORY_MSG_492;(RGB-Kurven)
HISTORY_MSG_493;(L*a*b*)
HISTORY_MSG_CLAMPOOG;(Belichtung) - Farben\nauf Farbraum beschränken
-HISTORY_MSG_COLORTONING_LABGRID_VALUE;(Farbanpassungen)\nL*a*b* - Farbkorrektur
+HISTORY_MSG_COLORTONING_LABGRID_VALUE;(Farbanpassungen)\nL*a*b*-Farbkorrektur
+HISTORY_MSG_COLORTONING_LABREGION_AB;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich
+HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Kanal
+HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - C-Maske
+HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - H-Maske
+HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Helligkeit
+HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - L-Maske
+HISTORY_MSG_COLORTONING_LABREGION_LIST;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Liste
+HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maskenunschärfe
+HISTORY_MSG_COLORTONING_LABREGION_OFFSET;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Versatz
+HISTORY_MSG_COLORTONING_LABREGION_POWER;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Verstärkung
+HISTORY_MSG_COLORTONING_LABREGION_SATURATION;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Sättigung
+HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maske anzeigen
+HISTORY_MSG_COLORTONING_LABREGION_SLOPE;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Steigung
+HISTORY_MSG_DEHAZE_DEPTH;(Bildschleier entfernen)\nTiefe
+HISTORY_MSG_DEHAZE_ENABLED;(Bildschleier entfernen)
+HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;(Bildschleier entfernen)\nMaske anzeigen
+HISTORY_MSG_DEHAZE_STRENGTH;(Bildschleier entfernen)\nIntensität
+HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;(Sensor—Matrix)\nFarbinterpolation\nAuto-Kontrastschwelle
HISTORY_MSG_DUALDEMOSAIC_CONTRAST;(Sensor-Matrix)\nFarbinterpolation\nKontrastschwelle
HISTORY_MSG_HISTMATCHING;(Belichtung)\nAuto-Tonwertkurve
HISTORY_MSG_ICM_OUTPUT_PRIMARIES;(Farbmanagement)\nAusgabeprofil\nVorlagen
@@ -820,6 +847,7 @@ HISTORY_MSG_RAWCACORR_COLORSHIFT;(Sensor-Matrix)\nChromatische Aberration\nFarbv
HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand
HISTORY_MSG_RESIZE_ALLOWUPSCALING;(Skalieren)\nHochskalieren zulassen
HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle
+HISTORY_MSG_SH_COLORSPACE;Farbraum
HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht)
HISTORY_MSG_SOFTLIGHT_STRENGTH;(Weiches Licht)\nIntensität
HISTORY_MSG_TM_FATTAL_ANCHOR;(Dynamikkompression)\nHelligkeitsverschiebung
@@ -982,7 +1010,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Vorschau Fokusmaske\nTaste: Umschalt + f
MAIN_TOOLTIP_PREVIEWG;Vorschau Grün-Kanal\nTaste: g
MAIN_TOOLTIP_PREVIEWL;Vorschau Helligkeit\nTaste: v\n\n0.299·R + 0.587·G + 0.114·B
MAIN_TOOLTIP_PREVIEWR;Vorschau Rot-Kanal\nTaste: r
-MAIN_TOOLTIP_PREVIEWSHARPMASK;Schärfungs-Kontroll-Maske ein-/ausschalten.\n\nFunktioniert nur bei aktivierter Schärfung\nund Zoom >= 100%.
+MAIN_TOOLTIP_PREVIEWSHARPMASK;Schärfungs-Kontroll-Maske ein-/ausschalten.\n\nFunktioniert nur bei aktivierter Schärfung\nund Zoom >= 100%.\nTaste: p
MAIN_TOOLTIP_QINFO;Bildinformationen ein-/ausblenden.\nTaste: i
MAIN_TOOLTIP_SHOWHIDELP1;Linkes Bedienfeld ein-/ausblenden.\nTaste: l
MAIN_TOOLTIP_SHOWHIDERP1;Rechtes Bedienfeld ein-/ausblenden.\nTaste: Alt + l
@@ -1020,6 +1048,7 @@ PARTIALPASTE_CROP;Ausschnitt
PARTIALPASTE_DARKFRAMEAUTOSELECT;Dunkelbild: Automatische Auswahl
PARTIALPASTE_DARKFRAMEFILE;Dunkelbild: Datei
PARTIALPASTE_DEFRINGE;Farbsaum entfernen (Defringe)
+PARTIALPASTE_DEHAZE;Bildschleier entfernen
PARTIALPASTE_DETAILGROUP;Detailparameter
PARTIALPASTE_DIALOGLABEL;Selektives Einfügen des Bearbeitungsprofils
PARTIALPASTE_DIRPYRDENOISE;Rauschreduzierung
@@ -1085,9 +1114,15 @@ PARTIALPASTE_VIGNETTING;Vignettierungskorrektur
PARTIALPASTE_WAVELETGROUP;Wavelet
PARTIALPASTE_WHITEBALANCE;Weißabgleich
PREFERENCES_ADD;HINZU
+PREFERENCES_APPEARANCE;Oberflächendesign (erfordert Neustart)
+PREFERENCES_APPEARANCE_COLORPICKERFONT;Schriftart Farbwähler
+PREFERENCES_APPEARANCE_CROPMASKCOLOR;Farbe/Transparenz für Schnittmaske
+PREFERENCES_APPEARANCE_MAINFONT;Schriftart:
PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Farbe der Navigationshilfe
+PREFERENCES_APPEARANCE_THEME;Oberflächendesign
PREFERENCES_APPLNEXTSTARTUP;erfordert Neustart
PREFERENCES_AUTOMONPROFILE;Automatisch das für den aktuellen Monitor festgelegte Profil verwenden
+PREFERENCES_AUTOSAVE_TP_OPEN;Werkzeugstatus vor dem Beenden automatisch speichern
PREFERENCES_BATCH_PROCESSING;Stapelverarbeitung
PREFERENCES_BEHADDALL;Alle hinzufügen
PREFERENCES_BEHADDALLHINT;Setzt alle Parameter auf Hinzufügen.\nAnpassungen der Parameter in der Hintergrundstapelverarbeitung werden als Deltas zu den gespeicherten Werten interpretiert.
@@ -1095,13 +1130,14 @@ PREFERENCES_BEHAVIOR;Verhalten
PREFERENCES_BEHSETALL;Alle setzen
PREFERENCES_BEHSETALLHINT;Setzt alle Parameter auf Setzen.\nAnpassungen der Parameter in der Hintergrundstapelverarbeitung werden als Absolut zu den gespeicherten Werten interpretiert.
PREFERENCES_BLACKBODY;Wolfram
+PREFERENCES_CACHECLEAR;Löschen
+PREFERENCES_CACHECLEAR_ALL;Alle Dateien im Zwischenspeicher löschen:
+PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Alle Dateien im Zwischenspeicher löschen mit Ausnahme der Bearbeitungsprofile:
+PREFERENCES_CACHECLEAR_ONLYPROFILES;Alle Bearbeitungsprofile im Zwischenspeicher löschen:
+PREFERENCES_CACHECLEAR_SAFETY;Nur Dateien im Zwischenspeicher werden gelöscht. Bearbeitungsprofile im Bildordner bleiben unberührt.
PREFERENCES_CACHEMAXENTRIES;Maximale Anzahl der Miniaturbilder im Festplatten-Cache
PREFERENCES_CACHEOPTS;Einstellungen des Festplatten-Cache für Miniaturbilder
PREFERENCES_CACHETHUMBHEIGHT;Maximale Höhe der Miniaturbilder
-PREFERENCES_CIEART;CIECAM02-Optimierung
-PREFERENCES_CIEART_FRAME;CIECAM02-spezifische Einstellungen
-PREFERENCES_CIEART_LABEL;Einfache statt doppelte Genauigkeit
-PREFERENCES_CIEART_TOOLTIP;Wenn aktiviert, werden CIECAM02-Berechnungen mit einfacher Genauigkeit statt doppelter durchgeführt. Dadurch wird der Vorgang etwas beschleunigt. Die Qualität nimmt jedoch geringfügig ab.
PREFERENCES_CLIPPINGIND;Anzeige zu heller/dunkler Bereiche
PREFERENCES_CLUTSCACHE;HaldCLUT-Zwischenspeicher
PREFERENCES_CLUTSCACHE_LABEL;Maximale Anzahl CLUTs im Zwischenspeicher
@@ -1145,6 +1181,7 @@ PREFERENCES_EDITORCMDLINE;Benutzerdefinierte Befehlszeile
PREFERENCES_EDITORLAYOUT;Editor-Layout
PREFERENCES_EXTERNALEDITOR;Externer Editor
PREFERENCES_FBROWSEROPTS;Bildinformationen und Miniaturbilder
+PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Einzeilige Toolbar
PREFERENCES_FILEFORMAT;Dateiformat
PREFERENCES_FLATFIELDFOUND;Gefunden
PREFERENCES_FLATFIELDSDIR;Weißbild-Verzeichnis
@@ -1176,7 +1213,7 @@ PREFERENCES_HISTOGRAM_TOOLTIP;Wenn aktiviert, wird das Arbeitsprofil für die Da
PREFERENCES_HLTHRESHOLD;Lichter - Schwelle
PREFERENCES_ICCDIR;ICC-Profile-Verzeichnis
PREFERENCES_IMG_RELOAD_NEEDED;Änderungen werden nur auf neu geöffnete Bilder angewendet
-PREFERENCES_IMPROCPARAMS;Standard-Bildverarbeitungsparameter
+PREFERENCES_IMPROCPARAMS;Standard-Bearbeitungsprofile
PREFERENCES_INSPECT_LABEL;Bildzwischenspeicher
PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximale Anzahl Bilder im Zwischenspeicher
PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Legt die maximale Anzahl Bilder fest, die im Zwischenspeicher gehalten werden, wenn man in der Dateiverwaltung mit der Maus über ein Bild fährt.\n\nAuf Systemen mit nicht mehr als 2GB RAM, sollte der Wert nicht größer als 2 gewählt werden.
@@ -1228,9 +1265,9 @@ PREFERENCES_PROFILEHANDLING;Behandlung der Bearbeitungsprofile
PREFERENCES_PROFILELOADPR;Priorität der Profile beim Laden
PREFERENCES_PROFILEPRCACHE;Bearbeitungsprofil im Festplatten-Cache
PREFERENCES_PROFILEPRFILE;Bearbeitungsprofil welches dem geladenen Bild beiliegt (Sidecar)
-PREFERENCES_PROFILESAVEBOTH;Verarbeitungsparameter im Festplatten-Cache und zusammen mit dem Bild speichern
-PREFERENCES_PROFILESAVECACHE;Verarbeitungsparameter im Festplatten-Cache speichern
-PREFERENCES_PROFILESAVEINPUT;Verarbeitungsparameter zusammen mit dem Bild speichern (Sidecar)
+PREFERENCES_PROFILESAVEBOTH;Bearbeitungsprofile im Festplatten-Cache und zusammen mit dem Bild speichern
+PREFERENCES_PROFILESAVECACHE;Bearbeitungsprofile im Festplatten-Cache speichern
+PREFERENCES_PROFILESAVEINPUT;Bearbeitungsprofile zusammen mit dem Bild speichern (Sidecar)
PREFERENCES_PROFILESAVELOCATION;Speicherort der Profile
PREFERENCES_PROFILE_NONE;Kein Farbprofil
PREFERENCES_PROPERTY;Eigenschaft
@@ -1330,7 +1367,7 @@ SAVEDLG_PUTTOQUEUE;Zur Warteschlange hinzufügen
SAVEDLG_PUTTOQUEUEHEAD;An den Anfang der Warteschlange hinzufügen
SAVEDLG_PUTTOQUEUETAIL;An das Ende der Warteschlange hinzufügen
SAVEDLG_SAVEIMMEDIATELY;Sofort speichern
-SAVEDLG_SAVESPP;Verarbeitungsparameter mit dem Bild speichern
+SAVEDLG_SAVESPP;Bearbeitungsprofile mit dem Bild speichern
SAVEDLG_SUBSAMP;Komprimierung
SAVEDLG_SUBSAMP_1;Beste Kompression
SAVEDLG_SUBSAMP_2;Ausgeglichen
@@ -1427,6 +1464,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Horizontal spiegeln.
TP_COARSETRAF_TOOLTIP_ROTLEFT;Nach links drehen.\nTaste: [
TP_COARSETRAF_TOOLTIP_ROTRIGHT;Nach rechts drehen.\nTaste: ]
TP_COARSETRAF_TOOLTIP_VFLIP;Vertikal spiegeln.
+TP_COLORAPP_ABSOLUTELUMINANCE;Absolute Luminanz
TP_COLORAPP_ALGO;Algorithmus
TP_COLORAPP_ALGO_ALL;Alle
TP_COLORAPP_ALGO_JC;Helligkeit + Buntheit (JH)
@@ -1437,6 +1475,7 @@ TP_COLORAPP_BADPIXSL;Hot / Bad-Pixelfilter
TP_COLORAPP_BADPIXSL_TOOLTIP;Unterdrückt “Hot / Bad“-Pixel\n\n0 = keine Auswirkung\n1 = Mittel\n2 = Gaussian
TP_COLORAPP_BRIGHT;Helligkeit (Q)
TP_COLORAPP_BRIGHT_TOOLTIP;Helligkeit in CIECAM02 berücksichtigt die Weißintensität und unterscheidet sich von L*a*b* und RGB-Helligkeit.
+TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;Bei manueller Einstellung werden Werte über 65 empfohlen.
TP_COLORAPP_CHROMA;Buntheit (H)
TP_COLORAPP_CHROMA_M;Farbigkeit (M)
TP_COLORAPP_CHROMA_M_TOOLTIP;Die Farbigkeit in CIECAM02 unterscheidet sich\nvon L*a*b*- und RGB-Farbigkeit.
@@ -1467,6 +1506,7 @@ TP_COLORAPP_LABEL_SCENE;Umgebungsbedingungen (Szene)
TP_COLORAPP_LABEL_VIEWING;Betrachtungsbedingungen
TP_COLORAPP_LIGHT;Helligkeit (J)
TP_COLORAPP_LIGHT_TOOLTIP;Helligkeit in CIECAM02 unterscheidet sich\nvon L*a*b* und RGB Helligkeit.
+TP_COLORAPP_MEANLUMINANCE;Mittlere Luminanz (Yb%)
TP_COLORAPP_MODEL;Weißpunktmodell
TP_COLORAPP_MODEL_TOOLTIP;Weißabgleich [RT] + [Ausgabe]:\nRT's Weißabgleich wird für die Szene verwendet,\nCIECAM02 auf D50 gesetzt und der Weißabgleich\ndes Ausgabegerätes kann unter:\nEinstellungen > Farb-Management\neingestellt werden.\n\nWeißabgleich [RT+CAT02] + [Ausgabe]:\nRT's Weißabgleich wird für CAT02 verwendet und\nder Weißabgleich des Ausgabegerätes kann unter\nEinstellungen > Farb-Management\neingestellt werden.
TP_COLORAPP_NEUTRAL;Zurücksetzen
@@ -1506,8 +1546,27 @@ TP_COLORTONING_HIGHLIGHT;Lichter
TP_COLORTONING_HUE;Farbton
TP_COLORTONING_LAB;L*a*b*-Überlagerung
TP_COLORTONING_LABEL;Farbanpassungen
-TP_COLORTONING_LABGRID;L*a*b* - Farbkorrektur
+TP_COLORTONING_LABGRID;L*a*b*-Farbkorrektur
TP_COLORTONING_LABGRID_VALUES;HL: a=%1, b=%2\nS: a=%3, b=%4
+TP_COLORTONING_LABREGIONS;L*a*b*-Farbkorrektur Bereiche
+TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+TP_COLORTONING_LABREGION_CHANNEL;Kanal
+TP_COLORTONING_LABREGION_CHANNEL_ALL;Alle
+TP_COLORTONING_LABREGION_CHANNEL_B;Blau
+TP_COLORTONING_LABREGION_CHANNEL_G;Grün
+TP_COLORTONING_LABREGION_CHANNEL_R;Rot
+TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
+TP_COLORTONING_LABREGION_HUEMASK;H
+TP_COLORTONING_LABREGION_LIGHTNESS;Helligkeit
+TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
+TP_COLORTONING_LABREGION_LIST_TITLE;Farbkorrektur
+TP_COLORTONING_LABREGION_MASK;Maske
+TP_COLORTONING_LABREGION_MASKBLUR;Maskenunschärfe
+TP_COLORTONING_LABREGION_OFFSET;Versatz
+TP_COLORTONING_LABREGION_POWER;Verstärkung
+TP_COLORTONING_LABREGION_SATURATION;Sättigung
+TP_COLORTONING_LABREGION_SHOWMASK;Maske anzeigen
+TP_COLORTONING_LABREGION_SLOPE;Steigung
TP_COLORTONING_LUMA;Luminanz
TP_COLORTONING_LUMAMODE;Luminanz schützen
TP_COLORTONING_LUMAMODE_TOOLTIP;Wenn aktiviert, wird die Luminanz der Farben Rot, Grün, Cyan, Blau... geschützt.
@@ -1546,16 +1605,21 @@ TP_CROP_GTTRIANGLE2;Goldenes Dreieck 2
TP_CROP_GUIDETYPE;Hilfslinien:
TP_CROP_H;Höhe
TP_CROP_LABEL;Ausschnitt
-TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP;Ausschnitt wählen
+TP_CROP_PPI;PPI =
+TP_CROP_RESETCROP;Zurücksetzen
+TP_CROP_SELECTCROP;Ausschnitt
TP_CROP_W;Breite
-TP_CROP_X;x
-TP_CROP_Y;y
+TP_CROP_X;Links
+TP_CROP_Y;Oben
TP_DARKFRAME_AUTOSELECT;Automatische Auswahl
TP_DARKFRAME_LABEL;Dunkelbild
TP_DEFRINGE_LABEL;Farbsaum entfernen (Defringe)
TP_DEFRINGE_RADIUS;Radius
TP_DEFRINGE_THRESHOLD;Schwelle
+TP_DEHAZE_DEPTH;Tiefe
+TP_DEHAZE_LABEL;Bildschleier entfernen
+TP_DEHAZE_SHOW_DEPTH_MAP;Maske anzeigen
+TP_DEHAZE_STRENGTH;Intensität
TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto-Multizonen
TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatisch Global
TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Bewertung des Farbrauschens.\nDie Bewertung ist ungenau und sehr subjektiv!
@@ -1794,7 +1858,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Kann mit dem Chromatizitätsregler und\nder CC-Kurve
TP_LENSGEOM_AUTOCROP;Auto-Schneiden
TP_LENSGEOM_FILL;Auto-Füllen
TP_LENSGEOM_LABEL;Objektivkorrekturen
+TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatisch (Lensfun)
+TP_LENSPROFILE_CORRECTION_LCPFILE;LCP-Datei
+TP_LENSPROFILE_CORRECTION_MANUAL;Benutzerdefiniert (Lensfun)
TP_LENSPROFILE_LABEL;Objektivkorrekturprofil
+TP_LENSPROFILE_LENS_WARNING;Achtung: Der Crop-Faktor des Profils entspricht\nnicht dem der Kamera.\nDie Ergebnisse sind möglicherweise falsch.
+TP_LENSPROFILE_MODE_HEADER;Profil auswählen
+TP_LENSPROFILE_USE_CA;CA
+TP_LENSPROFILE_USE_GEOMETRIC;Verzeichnung
+TP_LENSPROFILE_USE_HEADER;Korrektur auswählen
+TP_LENSPROFILE_USE_VIGNETTING;Vignettierung
TP_LOCALCONTRAST_AMOUNT;Intensität
TP_LOCALCONTRAST_DARKNESS;Dunkle Bereiche
TP_LOCALCONTRAST_LABEL;Lokaler Kontrast
@@ -1835,8 +1908,9 @@ TP_PREPROCESS_PDAFLINESFILTER;PDAF-Zeilenfilter
TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Minimiert Streifenrauschen, das bei Gegenlichtaufnahmen mit\nsichtbaren Flares einiger spiegellosen Sony-Kameras entsteht.
TP_PRSHARPENING_LABEL;Nach Skalierung schärfen
TP_PRSHARPENING_TOOLTIP;Schärft das Bild nach der Größenänderung.\nFunktioniert nur mit der Methode “Lanczos“.\nDas Ergebnis wird nicht in RawTherapee\nangezeigt.\n\nWeitere Informationen finden Sie auf “RawPedia“.
-TP_RAWCACORR_AUTO;Automatische Korrektur
+TP_RAWCACORR_AUTO;Autokorrektur
TP_RAWCACORR_AUTOIT;Iterationen
+TP_RAWCACORR_AUTOIT_TOOLTIP;Diese Einstellung ist verfügbar, wenn "Autokorrektur" aktiviert ist.\nDie Autokorrektur ist konservativ, d.h. sie korrigiert häufig nicht alle\nchromatischen Aberrationen. Um die verbleibenden chromatischen\nAberrationen zu korrigieren, können Sie bis zu fünf Iterationen\nverwenden. Jede Iteration verringert die verbleibende chromatische\nAberration auf Kosten zusätzlicher Verarbeitungszeit.
TP_RAWCACORR_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden
TP_RAWCACORR_CABLUE;Blau
TP_RAWCACORR_CARED;Rot
@@ -1869,6 +1943,8 @@ TP_RAW_DMETHOD;Methode
TP_RAW_DMETHOD_PROGRESSBAR;%1 verarbeitet
TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaikoptimierung
TP_RAW_DMETHOD_TOOLTIP;IGV und LMMSE sind speziel für High-ISO-Aufnahmen um die\nRauschreduzierung zu unterstützen ohne zu Maze-Mustern,\nPosterisierung oder einem ausgewaschenen Look zu führen.\n\nPixel-Shift ist für “Pentax Pixel-Shift“-Dateien. Für "Nicht-Pixel-\nShift"-Dateien wird automatisch AMaZE verwendet.
+TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto-Kontrastschwelle
+TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;Wenn das Kontrollkästchen aktiviert ist (empfohlen), berechnet\nRawTherapee einen optimalen Wert auf der Grundlage homogener\nBereiche im Bild. Wenn kein homogener Bereich vorhanden ist oder\ndas Bild zu sehr rauscht, wird der Wert auf 0 gesetzt.
TP_RAW_DUALDEMOSAICCONTRAST;Kontrastschwelle
TP_RAW_EAHD;EAHD
TP_RAW_FALSECOLOR;Falschfarbenreduzierung
@@ -2084,6 +2160,7 @@ TP_SOFTLIGHT_STRENGTH;Intensität
TP_TM_FATTAL_AMOUNT;Intensität
TP_TM_FATTAL_ANCHOR;Helligkeitsverschiebung
TP_TM_FATTAL_LABEL;Dynamikkompression
+TP_TM_FATTAL_THRESHOLD;Details
TP_VIBRANCE_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden
TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Hautfarbtöne
@@ -2305,6 +2382,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16
TP_WBALANCE_LED_HEADER;LED
TP_WBALANCE_LED_LSI;LSI Lumelex 2040
TP_WBALANCE_METHOD;Methode
+TP_WBALANCE_PICKER;Farbwähler
TP_WBALANCE_SHADE;Schatten
TP_WBALANCE_SIZE;Größe:
TP_WBALANCE_SOLUX35;Solux 3500K
@@ -2327,72 +2405,3 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f
ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: +
ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: -
-!!!!!!!!!!!!!!!!!!!!!!!!!
-! Untranslated keys follow; remove the ! prefix after an entry is translated.
-!!!!!!!!!!!!!!!!!!!!!!!!!
-
-!DYNPROFILEEDITOR_IMGTYPE_ANY;Any
-!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR
-!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift
-!DYNPROFILEEDITOR_IMGTYPE_STD;Standard
-!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles
-!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles
-!HISTORY_MSG_489;DRC - Detail
-!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
-!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
-!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
-!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
-!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
-!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
-!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
-!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
-!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
-!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength
-!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
-!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace
-!PARTIALPASTE_DEHAZE;Haze removal
-!PREFERENCES_APPEARANCE;Appearance
-!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font
-!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color
-!PREFERENCES_APPEARANCE_MAINFONT;Main font
-!PREFERENCES_APPEARANCE_THEME;Theme
-!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit
-!PREFERENCES_CACHECLEAR;Clear
-!PREFERENCES_CACHECLEAR_ALL;Clear all cached files:
-!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles:
-!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles:
-!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched.
-!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser
-!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance
-!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended.
-!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%)
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
-!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
-!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
-!TP_COLORTONING_LABREGION_HUEMASK;H
-!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
-!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
-!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
-!TP_COLORTONING_LABREGION_MASK;Mask
-!TP_COLORTONING_LABREGION_SATURATION;Saturation
-!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
-!TP_DEHAZE_DEPTH;Depth
-!TP_DEHAZE_LABEL;Haze Removal
-!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
-!TP_DEHAZE_STRENGTH;Strength
-!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically
-!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file
-!TP_LENSPROFILE_CORRECTION_MANUAL;Manually
-!TP_LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
-!TP_LENSPROFILE_MODE_HEADER;Select the lens profile:
-!TP_LENSPROFILE_USE_CA;Chromatic aberration
-!TP_LENSPROFILE_USE_GEOMETRIC;Geometric
-!TP_LENSPROFILE_USE_HEADER;Select distortions to correct:
-!TP_LENSPROFILE_USE_VIGNETTING;Vignetting
-!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time.
-!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold
-!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image).
-!TP_TM_FATTAL_THRESHOLD;Detail
-!TP_WBALANCE_PICKER;Pick
diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK)
index a266349cd..648eca675 100644
--- a/rtdata/languages/English (UK)
+++ b/rtdata/languages/English (UK)
@@ -73,6 +73,7 @@ TP_COLORAPP_TCMODE_COLORF;Colourfulness
TP_COLORTONING_COLOR;Colour
TP_COLORTONING_LABEL;Colour Toning
TP_COLORTONING_LABGRID;L*a*b* colour correction grid
+TP_COLORTONING_LABREGIONS;Colour correction regions
TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change colour (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
TP_COLORTONING_METHOD_TOOLTIP;"L*a*b* blending", "RGB sliders" and "RGB curves" use interpolated colour blending.\n"Colour balance (Shadows/Midtones/Highlights)" and "Saturation 2 colours" use direct colours.\n\nThe Black-and-White tool can be enabled when using any colour toning method, which allows for colour toning.
TP_COLORTONING_SPLITCOCO;Colour Balance Shadows/Midtones/Highlights
@@ -824,13 +825,18 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1013,7 +1019,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
@@ -1510,16 +1516,24 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_COLORTONING_HUE;Hue
!TP_COLORTONING_LAB;L*a*b* blending
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_METHOD;Method
@@ -1553,10 +1567,11 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_CROP_H;Height
!TP_CROP_LABEL;Crop
!TP_CROP_PPI;PPI=
-!TP_CROP_SELECTCROP;Select Crop
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_CROP_W;Width
-!TP_CROP_X;X
-!TP_CROP_Y;Y
+!TP_CROP_X;Left
+!TP_CROP_Y;Top
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US)
index 49553272b..ead6f7abb 100644
--- a/rtdata/languages/English (US)
+++ b/rtdata/languages/English (US)
@@ -734,13 +734,18 @@
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -930,7 +935,7 @@
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
@@ -1466,16 +1471,25 @@
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1515,10 +1529,11 @@
!TP_CROP_H;Height
!TP_CROP_LABEL;Crop
!TP_CROP_PPI;PPI=
-!TP_CROP_SELECTCROP;Select Crop
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_CROP_W;Width
-!TP_CROP_X;X
-!TP_CROP_Y;Y
+!TP_CROP_X;Left
+!TP_CROP_Y;Top
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol
index abac30029..dfd0bc84b 100644
--- a/rtdata/languages/Espanol
+++ b/rtdata/languages/Espanol
@@ -725,9 +725,6 @@ PREFERENCES_BLACKBODY;Tungsteno
PREFERENCES_CACHEMAXENTRIES;Cantidad máxima de entradas en la memoria intermedia
PREFERENCES_CACHEOPTS;Opciones de memoria intermedia
PREFERENCES_CACHETHUMBHEIGHT;Altura máxima de las miniaturas
-PREFERENCES_CIEART;Optimización CIECAM02
-PREFERENCES_CIEART_LABEL;Usar precisión flotante simple en lugar de doble.
-PREFERENCES_CIEART_TOOLTIP;Si se habilita, los cálculos CIECAM02 se realizan con precisión flotante simple en lugar de doble. Esto provee un pequeño aumento en la velocidad de cálculo a expensas de una casi imperceptible pérdida de calidad
PREFERENCES_CLIPPINGIND;Indicación de recortes
PREFERENCES_CLUTSDIR;Directorio HaldCLUT
PREFERENCES_CUSTPROFBUILD;Programa generador de perfiles de procesamiento de imagen del usuario
@@ -1078,7 +1075,6 @@ TP_CROP_GUIDETYPE;Clase de guía:
TP_CROP_H;Al
TP_CROP_LABEL;Recortar
TP_CROP_PPI;Ptos/Pulgada=
-TP_CROP_SELECTCROP;Seleccionar recorte
TP_CROP_W;Ancho
TP_CROP_X;x
TP_CROP_Y;y
@@ -1693,13 +1689,18 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1805,7 +1806,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MONITOR_PROFILE_SYSTEM;System default
!NAVIGATOR_B;B:
!NAVIGATOR_G;G:
@@ -1942,19 +1943,30 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_CROP_GTHARMMEANS;Harmonic Means
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara
index 1a3f3f036..33cb478a3 100644
--- a/rtdata/languages/Euskara
+++ b/rtdata/languages/Euskara
@@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Herenen erregela
TP_CROP_GUIDETYPE;Gida mota:
TP_CROP_H;H
TP_CROP_LABEL;Moztu
-TP_CROP_SELECTCROP; Mozketa hautatu
TP_CROP_W;W
TP_CROP_X;x
TP_CROP_Y;y
@@ -981,13 +980,18 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1131,7 +1135,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
!MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l
@@ -1553,16 +1557,25 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1595,6 +1608,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
!TP_CROP_PPI;PPI=
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais
index 976324a51..94f0f3fc9 100644
--- a/rtdata/languages/Francais
+++ b/rtdata/languages/Francais
@@ -932,7 +932,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Affichage du Masque du focus\nRaccourci: canal Vert\nRaccourci: g
MAIN_TOOLTIP_PREVIEWL;Affichage de la Luminosité\nRaccourci: v\n\n0.299*R + 0.587*V + 0.114*B
MAIN_TOOLTIP_PREVIEWR;Affichage du canal Rouge\nRaccourci: r
-MAIN_TOOLTIP_PREVIEWSHARPMASK;Prévisualiser le masque de contraste de netteté.\nRaccourci: Aucun\n\nNe fonctionne que si l'outil Netteté est activé et pour un zomm >= 100%.
+MAIN_TOOLTIP_PREVIEWSHARPMASK;Prévisualiser le masque de contraste de netteté.\nRaccourci: p\n\nNe fonctionne que si l'outil Netteté est activé et pour un zomm >= 100%.
MAIN_TOOLTIP_QINFO;Informations rapide sur l'image\nRaccourci: i
MAIN_TOOLTIP_SHOWHIDELP1;Montrer/Cacher le panneau gauche\nRaccourci: l
MAIN_TOOLTIP_SHOWHIDERP1;Afficher/Cacher le panneau droit\nRaccourci: Alt-l
@@ -1054,10 +1054,6 @@ PREFERENCES_CACHECLEAR_SAFETY;Seuls les fichiers mis en cache sont effacés. Les
PREFERENCES_CACHEMAXENTRIES;Nombre maximal d'éléments dans le Cache
PREFERENCES_CACHEOPTS;Options du Cache
PREFERENCES_CACHETHUMBHEIGHT;Hauteur maximale des vignettes
-PREFERENCES_CIEART;CIECAM02 optimisation
-PREFERENCES_CIEART_FRAME;Réglages spécifiques à CIECAM02
-PREFERENCES_CIEART_LABEL;Utilise la précision float au lieu de double pour CIECAM02
-PREFERENCES_CIEART_TOOLTIP;Si activé, les calculs CIECAM sont réalisés en précision float au lieu de précision double. Cela amène un léger accroissement de vitesse, et une légère réduction de qualité
PREFERENCES_CLIPPINGIND;Indication du dépassement de plage dynamique
PREFERENCES_CLUTSCACHE;Cache HaldCLUT
PREFERENCES_CLUTSCACHE_LABEL;Nombre maximum de chache CLUT
@@ -1513,7 +1509,6 @@ TP_CROP_GUIDETYPE;Type de guide:
TP_CROP_H;H
TP_CROP_LABEL;Recadrage
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP; Sélection du recadrage
TP_CROP_W;L
TP_CROP_X;X
TP_CROP_Y;Y
@@ -2303,6 +2298,11 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: -
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!PREFERENCES_APPEARANCE;Appearance
!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font
!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color
@@ -2313,6 +2313,17 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: -
!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance
!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended.
!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%)
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
+!TP_COLORTONING_LABREGION_SLOPE;Slope
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically
!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file
!TP_LENSPROFILE_CORRECTION_MANUAL;Manually
diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek
index eff50dc3a..d930c3948 100644
--- a/rtdata/languages/Greek
+++ b/rtdata/languages/Greek
@@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Κανόνας τρίτων
TP_CROP_GUIDETYPE;Είδος βοηθών:
TP_CROP_H;H
TP_CROP_LABEL;Αποκοπή
-TP_CROP_SELECTCROP; Επιλογή αποκοπής
TP_CROP_W;W
TP_CROP_X;x
TP_CROP_Y;y
@@ -980,13 +979,18 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1130,7 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
!MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l
@@ -1552,16 +1556,25 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1594,6 +1607,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
!TP_CROP_PPI;PPI=
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew
index f1bbde6f9..64b29759a 100644
--- a/rtdata/languages/Hebrew
+++ b/rtdata/languages/Hebrew
@@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;כלל השליש
TP_CROP_GUIDETYPE;סוג מדריך
TP_CROP_H;גובה
TP_CROP_LABEL;גזור
-TP_CROP_SELECTCROP;בחור גזירה
TP_CROP_W;רוחב
TP_CROP_X;x
TP_CROP_Y;y
@@ -981,13 +980,18 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1131,7 +1135,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
!MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l
@@ -1553,16 +1557,25 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1595,6 +1608,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
!TP_CROP_PPI;PPI=
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano
index 6155ae7b5..6b3e6ef4d 100644
--- a/rtdata/languages/Italiano
+++ b/rtdata/languages/Italiano
@@ -631,9 +631,6 @@ PREFERENCES_BLACKBODY;Tungsteno
PREFERENCES_CACHEMAXENTRIES;Numero massimo di voci in memoria
PREFERENCES_CACHEOPTS;Opzioni della memoria
PREFERENCES_CACHETHUMBHEIGHT;Massima altezza delle miniature
-PREFERENCES_CIEART;Ottimizzazione CIECAM02
-PREFERENCES_CIEART_LABEL;Utilizza precisione singola anziché doppia
-PREFERENCES_CIEART_TOOLTIP;Se abilitata, i calcoli CIECAM02 sono effettuati in formato a virgola mobile a precisione singola anziché doppia. Questo permette un piccolo incremento di velocità al costo di una trascurabile perdita di qualità.
PREFERENCES_CLIPPINGIND;Indicazione di tosaggio
PREFERENCES_CUSTPROFBUILD;Generatore profili personalizzati
PREFERENCES_CUSTPROFBUILDHINT;File eseguibile (o script) richiamato quando è necessario generare un nuovo profilo per un'immagine.\nIl percorso del file di comunicazione (del tipo *.ini, detto "Keyfile") è aggiunto come parametro da linea di comando. Contiene diversi paramentri necessari agli script e ai dati Exif per generare un profilo di elaborazione.\n\nATTENZIONE:: Devi utilizzare le virgolette doppie quando necessario se utilizzi percorsi contenenti spazi.
@@ -947,7 +944,6 @@ TP_CROP_GUIDETYPE;Tipo di guida:
TP_CROP_H;A
TP_CROP_LABEL;Ritaglio
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP; Seleziona Area
TP_CROP_W;L
TP_CROP_X;X
TP_CROP_Y;Y
@@ -1568,13 +1564,18 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1681,7 +1682,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MONITOR_PROFILE_SYSTEM;System default
!OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead.
!OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead.
@@ -1825,16 +1826,25 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1863,6 +1873,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!TP_CROP_GTHARMMEANS;Harmonic Means
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese
index cbab4ca3f..568d7c842 100644
--- a/rtdata/languages/Japanese
+++ b/rtdata/languages/Japanese
@@ -962,7 +962,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;フォーカス・マスク表示\nショ
MAIN_TOOLTIP_PREVIEWG;グリーン チャンネル表示\nショートカット: g
MAIN_TOOLTIP_PREVIEWL;輝度表示\nショートカット: v\n\n0.299*R + 0.587*G + 0.114*B
MAIN_TOOLTIP_PREVIEWR;レッド チャンネル表示\nショートカット: r
-MAIN_TOOLTIP_PREVIEWSHARPMASK;プレビューで見るシャープ化機能のコントラストマスク\nショートカット: なし\n\nこの機能が使えるのはシャープ化機能が有効で、画像が100%以上に拡大されている場合だけ
+MAIN_TOOLTIP_PREVIEWSHARPMASK;プレビューで見るシャープ化機能のコントラストマスク\nショートカット: p\n\nこの機能が使えるのはシャープ化機能が有効で、画像が100%以上に拡大されている場合だけ
MAIN_TOOLTIP_QINFO;画像の情報\nショートカット: i
MAIN_TOOLTIP_SHOWHIDELP1;表示/非表示 左パネル\nショートカット: l
MAIN_TOOLTIP_SHOWHIDERP1;表示/非表示 右パネル\nショートカット: Alt-l
@@ -1537,7 +1537,6 @@ TP_CROP_GUIDETYPE;ガイドタイプ:
TP_CROP_H;高さ
TP_CROP_LABEL;切り抜き
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP; 選択範囲切り抜き
TP_CROP_W;W 幅
TP_CROP_X;X
TP_CROP_Y;Y
@@ -2302,6 +2301,11 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: -
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!PREFERENCES_APPEARANCE;Appearance
!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font
!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color
@@ -2312,6 +2316,17 @@ ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: -
!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance
!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended.
!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%)
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
+!TP_COLORTONING_LABREGION_SLOPE;Slope
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically
!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file
!TP_LENSPROFILE_CORRECTION_MANUAL;Manually
diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian
index 0cfcb9e04..45d06fdd8 100644
--- a/rtdata/languages/Latvian
+++ b/rtdata/languages/Latvian
@@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Trešdaļas
TP_CROP_GUIDETYPE;Vadlīnijas:
TP_CROP_H;A
TP_CROP_LABEL;Kadrējums
-TP_CROP_SELECTCROP; Norādīt kadrējumu
TP_CROP_W;P
TP_CROP_X;x
TP_CROP_Y;y
@@ -981,13 +980,18 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1131,7 +1135,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
!MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l
@@ -1553,16 +1557,25 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1595,6 +1608,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
!TP_CROP_PPI;PPI=
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar
index af10a8272..9a459d5be 100644
--- a/rtdata/languages/Magyar
+++ b/rtdata/languages/Magyar
@@ -626,7 +626,6 @@ TP_CROP_GUIDETYPE;Segédvonal típusa:
TP_CROP_H;M
TP_CROP_LABEL;Kivágás
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP; Kijelölés egérrel
TP_CROP_W;Sz
TP_CROP_X;x
TP_CROP_Y;y
@@ -1250,13 +1249,18 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1374,7 +1378,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9
!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MONITOR_PROFILE_SYSTEM;System default
!NAVIGATOR_B;B:
!NAVIGATOR_G;G:
@@ -1705,16 +1709,25 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1744,6 +1757,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!TP_CROP_GTHARMMEANS;Harmonic Means
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands
index 7afbdb57c..e9b05ab7f 100644
--- a/rtdata/languages/Nederlands
+++ b/rtdata/languages/Nederlands
@@ -916,10 +916,6 @@ PREFERENCES_BLACKBODY;Tungsten(wolfraam)
PREFERENCES_CACHEMAXENTRIES;Maximaal aantal elementen in cache
PREFERENCES_CACHEOPTS;Cache-opties
PREFERENCES_CACHETHUMBHEIGHT;Maximale hoogte miniaturen
-PREFERENCES_CIEART;CIECAM02 optimalisatie
-PREFERENCES_CIEART_FRAME;CIECAM02-Specifieke instellingen
-PREFERENCES_CIEART_LABEL;Gebruik float precisie in plaats van double
-PREFERENCES_CIEART_TOOLTIP;Indien aangezet worden CIECAM02 berekening uitgevoerd in het single-precision floating-point formaat in plaats van double-precision. Dit levert een iets hogere verwerkingssnelheid ten koste van een verwaarloosbaar verlies aan kwaliteit
PREFERENCES_CLIPPINGIND;Indicatie over-/onderbelichting
PREFERENCES_CLUTSCACHE;HaldCLUT cache
PREFERENCES_CLUTSCACHE_LABEL;Maximum aantal cached Cluts
@@ -1323,7 +1319,6 @@ TP_CROP_GUIDETYPE;Hulplijnen:
TP_CROP_H;Hoogte
TP_CROP_LABEL;Bijsnijden
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP;Selecteer gebied
TP_CROP_W;Breedte
TP_CROP_X;X
TP_CROP_Y;Y
@@ -2099,13 +2094,18 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -2185,7 +2185,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead.
!OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead.
!OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead.
@@ -2256,16 +2256,27 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM
index 06a675819..3db05ead0 100644
--- a/rtdata/languages/Norsk BM
+++ b/rtdata/languages/Norsk BM
@@ -330,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Tredjedelsreglen
TP_CROP_GUIDETYPE;Guidetype:
TP_CROP_H;H
TP_CROP_LABEL;Beskjæring
-TP_CROP_SELECTCROP;Velg beskjæringsområde
TP_CROP_W;B
TP_CROP_X;x
TP_CROP_Y;y
@@ -980,13 +979,18 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1130,7 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
!MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l
@@ -1552,16 +1556,25 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1594,6 +1607,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
!TP_CROP_PPI;PPI=
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish
index 385f71041..1026e9bd1 100644
--- a/rtdata/languages/Polish
+++ b/rtdata/languages/Polish
@@ -680,9 +680,6 @@ PREFERENCES_BLACKBODY;Wolfram
PREFERENCES_CACHEMAXENTRIES;Maksymalna liczba wpisów w pamięci podręcznej
PREFERENCES_CACHEOPTS;Opcje pamięci podręcznej
PREFERENCES_CACHETHUMBHEIGHT;Maksymalna wysokość miniatury
-PREFERENCES_CIEART;CIECAM02 optymalizacja
-PREFERENCES_CIEART_LABEL;Użyj precyzję zmiennoprzecinkową zamiast podwójną.
-PREFERENCES_CIEART_TOOLTIP;Gdy umożliwione, kalkulacje CIECAM02 są wykonywane w notacji zmiennoprzecinkowej o pojedyńczej precyzji zamiast podwójnej. Skraca to czas egzekucji kosztem nieistotnej zmiany w jakości.
PREFERENCES_CLIPPINGIND;Pokazywanie obciętych prześwietleń/cieni
PREFERENCES_CLUTSDIR;Folder obrazów HaldCLUT
PREFERENCES_CUSTPROFBUILD;Zewnętrzny kreator profilów przetwarzania
@@ -1033,7 +1030,6 @@ TP_CROP_GUIDETYPE;Typ pomocy:
TP_CROP_H;Wysokość
TP_CROP_LABEL;Kadrowanie
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP;Wybierz kadr
TP_CROP_W;Szerokość
TP_CROP_X;X
TP_CROP_Y;Y
@@ -1650,13 +1646,18 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1763,7 +1764,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MONITOR_PROFILE_SYSTEM;System default
!OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead.
!OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead.
@@ -1890,19 +1891,30 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_CROP_GTHARMMEANS;Harmonic Means
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters)
index df6e5c941..7f3271885 100644
--- a/rtdata/languages/Polish (Latin Characters)
+++ b/rtdata/languages/Polish (Latin Characters)
@@ -680,9 +680,6 @@ PREFERENCES_BLACKBODY;Wolfram
PREFERENCES_CACHEMAXENTRIES;Maksymalna liczba wpisow w pamieci podrecznej
PREFERENCES_CACHEOPTS;Opcje pamieci podrecznej
PREFERENCES_CACHETHUMBHEIGHT;Maksymalna wysokosc miniatury
-PREFERENCES_CIEART;CIECAM02 optymalizacja
-PREFERENCES_CIEART_LABEL;Uzyj precyzje zmiennoprzecinkowa zamiast podwojna.
-PREFERENCES_CIEART_TOOLTIP;Gdy umozliwione, kalkulacje CIECAM02 sa wykonywane w notacji zmiennoprzecinkowej o pojedynczej precyzji zamiast podwojnej. Skraca to czas egzekucji kosztem nieistotnej zmiany w jakosci.
PREFERENCES_CLIPPINGIND;Pokazywanie obcietych przeswietlen/cieni
PREFERENCES_CLUTSDIR;Folder obrazow HaldCLUT
PREFERENCES_CUSTPROFBUILD;Zewnetrzny kreator profilow przetwarzania
@@ -1033,7 +1030,6 @@ TP_CROP_GUIDETYPE;Typ pomocy:
TP_CROP_H;Wysokosc
TP_CROP_LABEL;Kadrowanie
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP;Wybierz kadr
TP_CROP_W;Szerokosc
TP_CROP_X;X
TP_CROP_Y;Y
@@ -1650,13 +1646,18 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1763,7 +1764,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MONITOR_PROFILE_SYSTEM;System default
!OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead.
!OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead.
@@ -1890,19 +1891,30 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_CROP_GTHARMMEANS;Harmonic Means
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil)
index 95923c6f0..b8d85ed59 100644
--- a/rtdata/languages/Portugues (Brasil)
+++ b/rtdata/languages/Portugues (Brasil)
@@ -905,7 +905,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Pré-visualize a Máscara de Foco.\nAtalho:
MAIN_TOOLTIP_PREVIEWG;Pré-visualize o Canal verde.\nAtalho: g
MAIN_TOOLTIP_PREVIEWL;Pré-visualize a Luminosidade.\nAtalho: v\n\n0.299*R + 0.587*G + 0.114*B
MAIN_TOOLTIP_PREVIEWR;Pré-visualize o Canal vermelho.\nAtalho: r
-MAIN_TOOLTIP_PREVIEWSHARPMASK;Pré-visualize a Máscara de Contraste de Nitidez.\nAtalho: Nenhum\n\nSó funciona quando a nitidez e o zoom estão ativados >= 100%.
+MAIN_TOOLTIP_PREVIEWSHARPMASK;Pré-visualize a Máscara de Contraste de Nitidez.\nAtalho: p\n\nSó funciona quando a nitidez e o zoom estão ativados >= 100%.
MAIN_TOOLTIP_QINFO;Informação rápida na imagem.\nAtalho: i
MAIN_TOOLTIP_SHOWHIDELP1;Mostrar/Ocultar o painel esquerdo.\nShortcut: l
MAIN_TOOLTIP_SHOWHIDERP1;Mostrar/Ocultar o painel direito.\nAtalho: Alt-l
@@ -1461,7 +1461,6 @@ TP_CROP_GUIDETYPE;Tipo de guia:
TP_CROP_H;Altura
TP_CROP_LABEL;Cortar
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP;Selecione para Cortar
TP_CROP_W;Largura
TP_CROP_X;X
TP_CROP_Y;Y
@@ -2229,13 +2228,18 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: -
!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_489;DRC - Detail
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -2267,16 +2271,27 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: -
!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance
!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended.
!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%)
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian
index d07ef6f6d..c930b43d8 100644
--- a/rtdata/languages/Russian
+++ b/rtdata/languages/Russian
@@ -705,9 +705,6 @@ PREFERENCES_BLACKBODY;Лампа накаливания
PREFERENCES_CACHEMAXENTRIES;Максимальное число элементов в кэше
PREFERENCES_CACHEOPTS;Параметры кэширования
PREFERENCES_CACHETHUMBHEIGHT;Максимальная высота эскиза
-PREFERENCES_CIEART;Оптимизация CIECAM02
-PREFERENCES_CIEART_LABEL;Использовать числа с плавающей запятой вместо двойной точности
-PREFERENCES_CIEART_TOOLTIP;Если включено, вычисления CIECAM02 будут выполняться в формате плавающей запятой с одинарной точностью вместо использования двойной точности. Это обеспечит небольшое увеличение скорости с несущественной потерей качества.
PREFERENCES_CLIPPINGIND;Индикация пересветов/затемнений
PREFERENCES_CURVEBBOXPOS;Позиция кнопок для копирования и вставки кривых
PREFERENCES_CURVEBBOXPOS_ABOVE;Выше
@@ -1007,7 +1004,6 @@ TP_CROP_GUIDETYPE;Тип направляющей:
TP_CROP_H;Высота
TP_CROP_LABEL;Кадрирование
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP;Включить режим обрезки
TP_CROP_W;Ширина
TP_CROP_X;x
TP_CROP_Y;y
@@ -1672,13 +1668,18 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!HISTORY_MSG_489;DRC - Detail
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold
!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
@@ -1767,7 +1768,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MONITOR_PROFILE_SYSTEM;System default
!PARTIALPASTE_COLORTONING;Color toning
!PARTIALPASTE_DEHAZE;Haze removal
@@ -1919,16 +1920,25 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1954,6 +1964,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!TP_COLORTONING_TWOBY;Special a* and b*
!TP_COLORTONING_TWOCOLOR_TOOLTIP;Standard chroma:\nLinear response, a* = b*.\n\nSpecial chroma:\nLinear response, a* = b*, but unbound - try under the diagonal.\n\nSpecial a* and b*:\nLinear response unbound with separate curves for a* and b*. Intended for special effects.\n\nSpecial chroma 2 colors:\nMore predictable.
!TP_COLORTONING_TWOSTD;Standard chroma
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones
!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective !
!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation.
diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters)
index 37ca4dc1e..fe64675c8 100644
--- a/rtdata/languages/Serbian (Cyrilic Characters)
+++ b/rtdata/languages/Serbian (Cyrilic Characters)
@@ -600,9 +600,6 @@ PREFERENCES_BLACKBODY;Обична сијалица
PREFERENCES_CACHEMAXENTRIES;Највећи број мест у остави
PREFERENCES_CACHEOPTS;Подешавање оставе
PREFERENCES_CACHETHUMBHEIGHT;Највећа висина приказа
-PREFERENCES_CIEART;CIECAM02 оптимизација
-PREFERENCES_CIEART_LABEL;Једнострука тачност уместо двоструке
-PREFERENCES_CIEART_TOOLTIP;Уколико је омогућено, ради CIECAM02 рачунања са једноструком тачношћу уместо са двоструком. Ово даје мало повећање брзине уз неизоставан губитак на квалитету.
PREFERENCES_CLIPPINGIND;Показивачи одсечених делова
PREFERENCES_CUSTPROFBUILD;Изградња произвољног почетног профила слике
PREFERENCES_CUSTPROFBUILDHINT;Извршна датотека (или скрипта) која се позива када изграђујете нови почетни профил за слику.nПрихвата параметре из командне линије ради прављења .pp3 датотеке на основу неких правила:n[Путања до RAW/JPG] [Путања подразумеваног профила] [Бленда] [Експозиција у s] [Жижна дужина mm] [ИСО] [Објектив] [Фото-апарат]
@@ -912,7 +909,6 @@ TP_CROP_GUIDETYPE;Вођицe:
TP_CROP_H;В
TP_CROP_LABEL;Исецање
TP_CROP_PPI;ППИ=
-TP_CROP_SELECTCROP; Изабери област
TP_CROP_W;Ш
TP_CROP_X;x
TP_CROP_Y;y
@@ -1544,13 +1540,18 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1656,7 +1657,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MONITOR_PROFILE_SYSTEM;System default
!NAVIGATOR_B;B:
!NAVIGATOR_G;G:
@@ -1817,16 +1818,25 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1855,6 +1865,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!TP_CROP_GTHARMMEANS;Harmonic Means
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters)
index c33abc2e7..9cffebc2f 100644
--- a/rtdata/languages/Serbian (Latin Characters)
+++ b/rtdata/languages/Serbian (Latin Characters)
@@ -600,9 +600,6 @@ PREFERENCES_BLACKBODY;Obična sijalica
PREFERENCES_CACHEMAXENTRIES;Najveći broj mest u ostavi
PREFERENCES_CACHEOPTS;Podešavanje ostave
PREFERENCES_CACHETHUMBHEIGHT;Najveća visina prikaza
-PREFERENCES_CIEART;CIECAM02 optimizacija
-PREFERENCES_CIEART_LABEL;Jednostruka tačnost umesto dvostruke
-PREFERENCES_CIEART_TOOLTIP;Ukoliko je omogućeno, radi CIECAM02 računanja sa jednostrukom tačnošću umesto sa dvostrukom. Ovo daje malo povećanje brzine uz neizostavan gubitak na kvalitetu.
PREFERENCES_CLIPPINGIND;Pokazivači odsečenih delova
PREFERENCES_CUSTPROFBUILD;Izgradnja proizvoljnog početnog profila slike
PREFERENCES_CUSTPROFBUILDHINT;Izvršna datoteka (ili skripta) koja se poziva kada izgrađujete novi početni profil za sliku.nPrihvata parametre iz komandne linije radi pravljenja .pp3 datoteke na osnovu nekih pravila:n[Putanja do RAW/JPG] [Putanja podrazumevanog profila] [Blenda] [Ekspozicija u s] [Žižna dužina mm] [ISO] [Objektiv] [Foto-aparat]
@@ -912,7 +909,6 @@ TP_CROP_GUIDETYPE;Vođice:
TP_CROP_H;V
TP_CROP_LABEL;Isecanje
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP; Izaberi oblast
TP_CROP_W;Š
TP_CROP_X;x
TP_CROP_Y;y
@@ -1544,13 +1540,18 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1656,7 +1657,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
!MAIN_TAB_INSPECT; Inspect
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MONITOR_PROFILE_SYSTEM;System default
!NAVIGATOR_B;B:
!NAVIGATOR_G;G:
@@ -1817,16 +1818,25 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1855,6 +1865,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!TP_CROP_GTHARMMEANS;Harmonic Means
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak
index ac6dc7928..09c4d83db 100644
--- a/rtdata/languages/Slovak
+++ b/rtdata/languages/Slovak
@@ -384,7 +384,6 @@ TP_CROP_GTRULETHIRDS;Pravidlo tretín
TP_CROP_GUIDETYPE;Type vodidiel:
TP_CROP_H;V
TP_CROP_LABEL;Orezanie
-TP_CROP_SELECTCROP; Vyberte Orez
TP_CROP_W;Š
TP_CROP_X;x
TP_CROP_Y;y
@@ -1042,13 +1041,18 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1186,7 +1190,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
!MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l
@@ -1592,16 +1596,25 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1634,6 +1647,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
!TP_CROP_PPI;PPI=
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi
index 3d450a65c..9e05dc05b 100644
--- a/rtdata/languages/Suomi
+++ b/rtdata/languages/Suomi
@@ -331,7 +331,6 @@ TP_CROP_GTRULETHIRDS;Kolmijako
TP_CROP_GUIDETYPE;Sommittelumalli:
TP_CROP_H;Kork.
TP_CROP_LABEL;Rajaus
-TP_CROP_SELECTCROP;Valitse alue
TP_CROP_W;Lev.
TP_CROP_X; x
TP_CROP_Y; y
@@ -982,13 +981,18 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1132,7 +1136,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
!MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l
@@ -1553,16 +1557,25 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1595,6 +1608,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
!TP_CROP_PPI;PPI=
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish
index 7022c8554..a063f0516 100644
--- a/rtdata/languages/Swedish
+++ b/rtdata/languages/Swedish
@@ -821,10 +821,6 @@ PREFERENCES_BLACKBODY;Glödlampa
PREFERENCES_CACHEMAXENTRIES;Maximalt antal cachefiler
PREFERENCES_CACHEOPTS;Cacheinställningar
PREFERENCES_CACHETHUMBHEIGHT;Maximal höjd på miniatyrbilderna
-PREFERENCES_CIEART;CIECAM02-optimering
-PREFERENCES_CIEART_FRAME;CIECAM02-Specifika inställningar
-PREFERENCES_CIEART_LABEL;Använd flyttalsprecision istället för dubbel
-PREFERENCES_CIEART_TOOLTIP;Om aktiverat, så kommer alla CIECAM02-beräkningar att utföras med enkel precision i flyttalsformatet istället för med dubbel precision. Detta ger en liten sänkning av beräkningstiden, till ett pris av en försumbar kvalitetsförsämring.
PREFERENCES_CLIPPINGIND;Klippindikering
PREFERENCES_CLUTSCACHE;HaldCLUT cache
PREFERENCES_CLUTSCACHE_LABEL;Maximalt antal cachade CLUTs
@@ -1210,7 +1206,6 @@ TP_CROP_GUIDETYPE;Guidetyp:
TP_CROP_H;Höjd
TP_CROP_LABEL;Beskär
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP;Välj beskärningsområde
TP_CROP_W;Bredd
TP_CROP_X;x
TP_CROP_Y;y
@@ -1904,13 +1899,18 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -2015,7 +2015,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead.
!OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead.
!OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead.
@@ -2106,18 +2106,29 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_METHOD_TOOLTIP;"L*a*b* blending", "RGB sliders" and "RGB curves" use interpolated color blending.\n"Color balance (Shadows/Midtones/Highlights)" and "Saturation 2 colors" use direct colors.\n\nThe Black-and-White tool can be enabled when using any color toning method, which allows for color toning.
!TP_COLORTONING_TWOCOLOR_TOOLTIP;Standard chroma:\nLinear response, a* = b*.\n\nSpecial chroma:\nLinear response, a* = b*, but unbound - try under the diagonal.\n\nSpecial a* and b*:\nLinear response unbound with separate curves for a* and b*. Intended for special effects.\n\nSpecial chroma 2 colors:\nMore predictable.
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DEHAZE_DEPTH;Depth
!TP_DEHAZE_LABEL;Haze Removal
!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map
diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish
index 37338ba52..36e5033c4 100644
--- a/rtdata/languages/Turkish
+++ b/rtdata/languages/Turkish
@@ -331,7 +331,6 @@ TP_CROP_GTRULETHIRDS;Üçler kuralı
TP_CROP_GUIDETYPE;Kılavuz türü:
TP_CROP_H;Y
TP_CROP_LABEL;Kırp
-TP_CROP_SELECTCROP; Kırpma alanı seç
TP_CROP_W;G
TP_CROP_X;x
TP_CROP_Y;y
@@ -981,13 +980,18 @@ TP_WBALANCE_TEMPERATURE;Isı
!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1131,7 +1135,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
!MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
!MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
!MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l
@@ -1552,16 +1556,25 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_COLORTONING_LABEL;Color Toning
!TP_COLORTONING_LABGRID;L*a*b* color correction grid
!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-!TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+!TP_COLORTONING_LABREGIONS;Color correction regions
!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+!TP_COLORTONING_LABREGION_CHANNEL;Channel
+!TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+!TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+!TP_COLORTONING_LABREGION_CHANNEL_G;Green
+!TP_COLORTONING_LABREGION_CHANNEL_R;Red
!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
!TP_COLORTONING_LABREGION_HUEMASK;H
!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
!TP_COLORTONING_LABREGION_LIST_TITLE;Correction
!TP_COLORTONING_LABREGION_MASK;Mask
+!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+!TP_COLORTONING_LABREGION_OFFSET;Offset
+!TP_COLORTONING_LABREGION_POWER;Power
!TP_COLORTONING_LABREGION_SATURATION;Saturation
!TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+!TP_COLORTONING_LABREGION_SLOPE;Slope
!TP_COLORTONING_LUMA;Luminance
!TP_COLORTONING_LUMAMODE;Preserve luminance
!TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1594,6 +1607,8 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_CROP_GTTRIANGLE1;Golden Triangles 1
!TP_CROP_GTTRIANGLE2;Golden Triangles 2
!TP_CROP_PPI;PPI=
+!TP_CROP_RESETCROP;Reset
+!TP_CROP_SELECTCROP;Select
!TP_DARKFRAME_AUTOSELECT;Auto-selection
!TP_DARKFRAME_LABEL;Dark-Frame
!TP_DEFRINGE_LABEL;Defringe
diff --git a/rtdata/languages/default b/rtdata/languages/default
index 2337d2935..571e624f4 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -847,13 +847,18 @@ HISTORY_MSG_591;Local - Avoid color shift
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction
-HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - C mask
+HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel
+HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask
HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask
HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness
HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask
HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List
+HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur
+HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset
+HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power
HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation
-HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - Show mask
+HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask
+HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope
HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth
HISTORY_MSG_DEHAZE_ENABLED;Haze Removal
HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map
@@ -1045,7 +1050,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift
MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g
MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B
MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r
-MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%.
MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i
MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l
MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l
@@ -1583,16 +1588,25 @@ TP_COLORTONING_LAB;L*a*b* blending
TP_COLORTONING_LABEL;Color Toning
TP_COLORTONING_LABGRID;L*a*b* color correction grid
TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
-TP_COLORTONING_LABREGIONS;L*a*b* correction regions
+TP_COLORTONING_LABREGIONS;Color correction regions
TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2
+TP_COLORTONING_LABREGION_CHANNEL;Channel
+TP_COLORTONING_LABREGION_CHANNEL_ALL;All
+TP_COLORTONING_LABREGION_CHANNEL_B;Blue
+TP_COLORTONING_LABREGION_CHANNEL_G;Green
+TP_COLORTONING_LABREGION_CHANNEL_R;Red
TP_COLORTONING_LABREGION_CHROMATICITYMASK;C
TP_COLORTONING_LABREGION_HUEMASK;H
TP_COLORTONING_LABREGION_LIGHTNESS;Lightness
TP_COLORTONING_LABREGION_LIGHTNESSMASK;L
TP_COLORTONING_LABREGION_LIST_TITLE;Correction
TP_COLORTONING_LABREGION_MASK;Mask
+TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur
+TP_COLORTONING_LABREGION_OFFSET;Offset
+TP_COLORTONING_LABREGION_POWER;Power
TP_COLORTONING_LABREGION_SATURATION;Saturation
TP_COLORTONING_LABREGION_SHOWMASK;Show mask
+TP_COLORTONING_LABREGION_SLOPE;Slope
TP_COLORTONING_LUMA;Luminance
TP_COLORTONING_LUMAMODE;Preserve luminance
TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved.
@@ -1632,10 +1646,11 @@ TP_CROP_GUIDETYPE;Guide type:
TP_CROP_H;Height
TP_CROP_LABEL;Crop
TP_CROP_PPI;PPI=
-TP_CROP_SELECTCROP;Select Crop
+TP_CROP_RESETCROP;Reset
+TP_CROP_SELECTCROP;Select
TP_CROP_W;Width
-TP_CROP_X;X
-TP_CROP_Y;Y
+TP_CROP_X;Left
+TP_CROP_Y;Top
TP_DARKFRAME_AUTOSELECT;Auto-selection
TP_DARKFRAME_LABEL;Dark-Frame
TP_DEFRINGE_LABEL;Defringe
diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc
index caf01c988..d4562a127 100644
--- a/rtengine/FTblockDN.cc
+++ b/rtengine/FTblockDN.cc
@@ -807,8 +807,8 @@ BENCHFUN
#endif
const std::size_t blox_array_size = denoiseNestedLevels * numthreads;
- float *LbloxArray[blox_array_size] = {};
- float *fLbloxArray[blox_array_size] = {};
+ float *LbloxArray[blox_array_size];
+ float *fLbloxArray[blox_array_size];
for (std::size_t i = 0; i < blox_array_size; ++i) {
LbloxArray[i] = nullptr;
@@ -1749,7 +1749,7 @@ BENCHFUN
}
- for (int i = 0; i < denoiseNestedLevels * numthreads; ++i) {
+ for (size_t i = 0; i < blox_array_size; ++i) {
if (LbloxArray[i]) {
fftwf_free(LbloxArray[i]);
}
diff --git a/rtengine/ciecam02.cc b/rtengine/ciecam02.cc
index c5e172478..86b67e000 100644
--- a/rtengine/ciecam02.cc
+++ b/rtengine/ciecam02.cc
@@ -191,26 +191,26 @@ float Ciecam02::calculate_fl_from_la_ciecam02float ( float la )
return (0.2f * k * la5) + (0.1f * (1.0f - k) * (1.0f - k) * std::cbrt (la5));
}
-float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb, int gamu )
+float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb )
{
float r, g, b;
float rc, gc, bc;
float rp, gp, bp;
float rpa, gpa, bpa;
- gamu = 1;
- xyz_to_cat02float ( r, g, b, x, y, z, gamu );
+// gamu = 1;
+ xyz_to_cat02float ( r, g, b, x, y, z);
rc = r * (((y * d) / r) + (1.0f - d));
gc = g * (((y * d) / g) + (1.0f - d));
bc = b * (((y * d) / b) + (1.0f - d));
- cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc, gamu );
+ cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc);
- if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk
- rp = MAXR (rp, 0.0f);
- gp = MAXR (gp, 0.0f);
- bp = MAXR (bp, 0.0f);
- }
+// if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk
+ rp = MAXR (rp, 0.0f);
+ gp = MAXR (gp, 0.0f);
+ bp = MAXR (bp, 0.0f);
+// }
rpa = nonlinear_adaptationfloat ( rp, fl );
gpa = nonlinear_adaptationfloat ( gp, fl );
@@ -219,22 +219,22 @@ float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, f
return ((2.0f * rpa) + gpa + ((1.0f / 20.0f) * bpa) - 0.305f) * nbb;
}
-void Ciecam02::xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z, int gamu )
+void Ciecam02::xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z)
{
- gamu = 1;
-
- if (gamu == 0) {
- r = ( 0.7328f * x) + (0.4296f * y) - (0.1624f * z);
- g = (-0.7036f * x) + (1.6975f * y) + (0.0061f * z);
- b = ( 0.0030f * x) + (0.0136f * y) + (0.9834f * z);
- } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk
- //r = ( 0.7328 * x) + (0.4296 * y) - (0.1624 * z);
- //g = (-0.7036 * x) + (1.6975 * y) + (0.0061 * z);
- //b = ( 0.0000 * x) + (0.0000 * y) + (1.0000 * z);
- r = ( 1.007245f * x) + (0.011136f * y) - (0.018381f * z); //Changjun Li
- g = (-0.318061f * x) + (1.314589f * y) + (0.003471f * z);
- b = ( 0.0000f * x) + (0.0000f * y) + (1.0000f * z);
- }
+// gamu = 1;
+//
+// if (gamu == 0) {
+// r = ( 0.7328f * x) + (0.4296f * y) - (0.1624f * z);
+// g = (-0.7036f * x) + (1.6975f * y) + (0.0061f * z);
+// b = ( 0.0030f * x) + (0.0136f * y) + (0.9834f * z);
+// } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk
+ //r = ( 0.7328 * x) + (0.4296 * y) - (0.1624 * z);
+ //g = (-0.7036 * x) + (1.6975 * y) + (0.0061 * z);
+ //b = ( 0.0000 * x) + (0.0000 * y) + (1.0000 * z);
+ r = ( 1.007245f * x) + (0.011136f * y) - (0.018381f * z); //Changjun Li
+ g = (-0.318061f * x) + (1.314589f * y) + (0.003471f * z);
+ b = ( 0.0000f * x) + (0.0000f * y) + (1.0000f * z);
+// }
}
#ifdef __SSE2__
void Ciecam02::xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vfloat y, vfloat z )
@@ -246,22 +246,22 @@ void Ciecam02::xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vf
}
#endif
-void Ciecam02::cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b, int gamu )
+void Ciecam02::cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b)
{
- gamu = 1;
-
- if (gamu == 0) {
- x = ( 1.096124f * r) - (0.278869f * g) + (0.182745f * b);
- y = ( 0.454369f * r) + (0.473533f * g) + (0.072098f * b);
- z = (-0.009628f * r) - (0.005698f * g) + (1.015326f * b);
- } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk
- //x = ( 1.0978566 * r) - (0.277843 * g) + (0.179987 * b);
- //y = ( 0.455053 * r) + (0.473938 * g) + (0.0710096* b);
- //z = ( 0.000000 * r) - (0.000000 * g) + (1.000000 * b);
- x = ( 0.99015849f * r) - (0.00838772f * g) + (0.018229217f * b); //Changjun Li
- y = ( 0.239565979f * r) + (0.758664642f * g) + (0.001770137f * b);
- z = ( 0.000000f * r) - (0.000000f * g) + (1.000000f * b);
- }
+// gamu = 1;
+//
+// if (gamu == 0) {
+// x = ( 1.096124f * r) - (0.278869f * g) + (0.182745f * b);
+// y = ( 0.454369f * r) + (0.473533f * g) + (0.072098f * b);
+// z = (-0.009628f * r) - (0.005698f * g) + (1.015326f * b);
+// } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk
+ //x = ( 1.0978566 * r) - (0.277843 * g) + (0.179987 * b);
+ //y = ( 0.455053 * r) + (0.473938 * g) + (0.0710096* b);
+ //z = ( 0.000000 * r) - (0.000000 * g) + (1.000000 * b);
+ x = ( 0.99015849f * r) - (0.00838772f * g) + (0.018229217f * b); //Changjun Li
+ y = ( 0.239565979f * r) + (0.758664642f * g) + (0.001770137f * b);
+ z = ( 0.000000f * r) - (0.000000f * g) + (1.000000f * b);
+// }
}
#ifdef __SSE2__
void Ciecam02::cat02_to_xyzfloat ( vfloat &x, vfloat &y, vfloat &z, vfloat r, vfloat g, vfloat b )
@@ -288,19 +288,19 @@ void Ciecam02::hpe_to_xyzfloat ( vfloat &x, vfloat &y, vfloat &z, vfloat r, vflo
}
#endif
-void Ciecam02::cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b, int gamu )
+void Ciecam02::cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b)
{
- gamu = 1;
-
- if (gamu == 0) {
- rh = ( 0.7409792f * r) + (0.2180250f * g) + (0.0410058f * b);
- gh = ( 0.2853532f * r) + (0.6242014f * g) + (0.0904454f * b);
- bh = (-0.0096280f * r) - (0.0056980f * g) + (1.0153260f * b);
- } else if (gamu == 1) { //Changjun Li
- rh = ( 0.550930835f * r) + (0.519435987f * g) - ( 0.070356303f * b);
- gh = ( 0.055954056f * r) + (0.89973132f * g) + (0.044315524f * b);
- bh = (0.0f * r) - (0.0f * g) + (1.0f * b);
- }
+// gamu = 1;
+//
+// if (gamu == 0) {
+// rh = ( 0.7409792f * r) + (0.2180250f * g) + (0.0410058f * b);
+// gh = ( 0.2853532f * r) + (0.6242014f * g) + (0.0904454f * b);
+// bh = (-0.0096280f * r) - (0.0056980f * g) + (1.0153260f * b);
+// } else if (gamu == 1) { //Changjun Li
+ rh = ( 0.550930835f * r) + (0.519435987f * g) - ( 0.070356303f * b);
+ gh = ( 0.055954056f * r) + (0.89973132f * g) + (0.044315524f * b);
+ bh = (0.0f * r) - (0.0f * g) + (1.0f * b);
+// }
}
#ifdef __SSE2__
@@ -407,7 +407,7 @@ void Ciecam02::calculate_abfloat ( vfloat &aa, vfloat &bb, vfloat h, vfloat e, v
#endif
-void Ciecam02::initcam1float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
+void Ciecam02::initcam1float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
float &cz, float &aw, float &wh, float &pfl, float &fl, float &c)
{
n = yb / yw;
@@ -421,7 +421,7 @@ void Ciecam02::initcam1float (float gamu, float yb, float pilotd, float f, float
fl = calculate_fl_from_la_ciecam02float ( la );
nbb = ncb = 0.725f * pow_F ( 1.0f / n, 0.2f );
cz = 1.48f + sqrt ( n );
- aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb, gamu );
+ aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb);
wh = ( 4.0f / c ) * ( aw + 4.0f ) * pow_F ( fl, 0.25f );
pfl = pow_F ( fl, 0.25f );
#ifdef _DEBUG
@@ -433,7 +433,7 @@ void Ciecam02::initcam1float (float gamu, float yb, float pilotd, float f, float
#endif
}
-void Ciecam02::initcam2float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
+void Ciecam02::initcam2float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
float &cz, float &aw, float &fl)
{
n = yb / yw;
@@ -448,7 +448,7 @@ void Ciecam02::initcam2float (float gamu, float yb, float pilotd, float f, float
fl = calculate_fl_from_la_ciecam02float ( la );
nbb = ncb = 0.725f * pow_F ( 1.0f / n, 0.2f );
cz = 1.48f + sqrt ( n );
- aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb, gamu );
+ aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb);
#ifdef _DEBUG
if (settings->verbose) {
@@ -460,7 +460,7 @@ void Ciecam02::initcam2float (float gamu, float yb, float pilotd, float f, float
void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q, float &M, float &s, float aw, float fl, float wh,
float x, float y, float z, float xw, float yw, float zw,
- float c, float nc, int gamu, float pow1, float nbb, float ncb, float pfl, float cz, float d)
+ float c, float nc, float pow1, float nbb, float ncb, float pfl, float cz, float d)
{
float r, g, b;
@@ -471,20 +471,20 @@ void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q
float a, ca, cb;
float e, t;
float myh;
- gamu = 1;
- xyz_to_cat02float ( r, g, b, x, y, z, gamu );
- xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, gamu );
+// gamu = 1;
+ xyz_to_cat02float ( r, g, b, x, y, z);
+ xyz_to_cat02float ( rw, gw, bw, xw, yw, zw);
rc = r * (((yw * d) / rw) + (1.f - d));
gc = g * (((yw * d) / gw) + (1.f - d));
bc = b * (((yw * d) / bw) + (1.f - d));
- cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc, gamu );
+ cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc);
- if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk
- rp = MAXR (rp, 0.0f);
- gp = MAXR (gp, 0.0f);
- bp = MAXR (bp, 0.0f);
- }
+// if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk
+ rp = MAXR (rp, 0.0f);
+ gp = MAXR (gp, 0.0f);
+ bp = MAXR (bp, 0.0f);
+// }
rpa = nonlinear_adaptationfloat ( rp, fl );
gpa = nonlinear_adaptationfloat ( gp, fl );
@@ -501,9 +501,9 @@ void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q
a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb;
- if (gamu == 1) {
- a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk
- }
+// if (gamu == 1) {
+ a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk
+// }
J = pow_F ( a / aw, c * cz * 0.5f);
@@ -590,20 +590,20 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f
float a, ca, cb;
float e, t;
float myh;
- int gamu = 1;
- xyz_to_cat02float ( r, g, b, x, y, z, gamu );
- xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, gamu );
+// int gamu = 1;
+ xyz_to_cat02float ( r, g, b, x, y, z);
+ xyz_to_cat02float ( rw, gw, bw, xw, yw, zw);
rc = r * (((yw * d) / rw) + (1.f - d));
gc = g * (((yw * d) / gw) + (1.f - d));
bc = b * (((yw * d) / bw) + (1.f - d));
- cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc, gamu );
+ cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc);
- if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk
- rp = MAXR (rp, 0.0f);
- gp = MAXR (gp, 0.0f);
- bp = MAXR (bp, 0.0f);
- }
+// if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk
+ rp = MAXR (rp, 0.0f);
+ gp = MAXR (gp, 0.0f);
+ bp = MAXR (bp, 0.0f);
+// }
#ifdef __SSE2__
vfloat pv = _mm_setr_ps(rp, gp, bp, 1.f);
@@ -629,9 +629,9 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f
a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb;
- if (gamu == 1) {
- a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk
- }
+// if (gamu == 1) {
+ a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk
+// }
J = pow_F ( a / aw, c * cz * 0.5f);
@@ -646,7 +646,7 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f
void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, float C, float h,
float xw, float yw, float zw,
- float c, float nc, int gamu, float pow1, float nbb, float ncb, float fl, float cz, float d, float aw)
+ float c, float nc, float pow1, float nbb, float ncb, float fl, float cz, float d, float aw)
{
float r, g, b;
float rc, gc, bc;
@@ -655,8 +655,8 @@ void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, fl
float rw, gw, bw;
float a, ca, cb;
float e, t;
- gamu = 1;
- xyz_to_cat02float(rw, gw, bw, xw, yw, zw, gamu);
+// gamu = 1;
+ xyz_to_cat02float(rw, gw, bw, xw, yw, zw);
e = ((961.53846f) * nc * ncb) * (xcosf(h * rtengine::RT_PI_F_180 + 2.0f) + 3.8f);
#ifdef __SSE2__
@@ -686,13 +686,13 @@ void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, fl
bp = inverse_nonlinear_adaptationfloat(bpa, fl);
#endif
hpe_to_xyzfloat(x, y, z, rp, gp, bp);
- xyz_to_cat02float(rc, gc, bc, x, y, z, gamu);
+ xyz_to_cat02float(rc, gc, bc, x, y, z);
r = rc / (((yw * d) / rw) + (1.0f - d));
g = gc / (((yw * d) / gw) + (1.0f - d));
b = bc / (((yw * d) / bw) + (1.0f - d));
- cat02_to_xyzfloat(x, y, z, r, g, b, gamu);
+ cat02_to_xyzfloat(x, y, z, r, g, b);
}
#ifdef __SSE2__
diff --git a/rtengine/ciecam02.h b/rtengine/ciecam02.h
index d55b1a405..68763b965 100644
--- a/rtengine/ciecam02.h
+++ b/rtengine/ciecam02.h
@@ -30,9 +30,9 @@ class Ciecam02
private:
static float d_factorfloat ( float f, float la );
static float calculate_fl_from_la_ciecam02float ( float la );
- static float achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb, int gamu );
- static void xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z, int gamu );
- static void cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b, int gamu );
+ static float achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb);
+ static void xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z);
+ static void cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b);
#ifdef __SSE2__
static void xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vfloat y, vfloat z );
@@ -46,7 +46,7 @@ private:
static void calculate_abfloat ( float &aa, float &bb, float h, float e, float t, float nbb, float a );
static void Aab_to_rgbfloat ( float &r, float &g, float &b, float A, float aa, float bb, float nbb );
static void hpe_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b );
- static void cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b, int gamu );
+ static void cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b);
#ifdef __SSE2__
static vfloat inverse_nonlinear_adaptationfloat ( vfloat c, vfloat fl );
static void calculate_abfloat ( vfloat &aa, vfloat &bb, vfloat h, vfloat e, vfloat t, vfloat nbb, vfloat a );
@@ -66,7 +66,7 @@ public:
static void jch2xyz_ciecam02float ( float &x, float &y, float &z,
float J, float C, float h,
float xw, float yw, float zw,
- float c, float nc, int gamu, float n, float nbb, float ncb, float fl, float cz, float d, float aw );
+ float c, float nc, float n, float nbb, float ncb, float fl, float cz, float d, float aw );
#ifdef __SSE2__
static void jch2xyz_ciecam02float ( vfloat &x, vfloat &y, vfloat &z,
vfloat J, vfloat C, vfloat h,
@@ -76,10 +76,10 @@ public:
/**
* Forward transform from XYZ to CIECAM02 JCh.
*/
- static void initcam1float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
+ static void initcam1float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
float &cz, float &aw, float &wh, float &pfl, float &fl, float &c);
- static void initcam2float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
+ static void initcam2float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb,
float &cz, float &aw, float &fl);
static void xyz2jch_ciecam02float ( float &J, float &C, float &h,
@@ -92,7 +92,7 @@ public:
float &Q, float &M, float &s, float aw, float fl, float wh,
float x, float y, float z,
float xw, float yw, float zw,
- float c, float nc, int gamu, float n, float nbb, float ncb, float pfl, float cz, float d );
+ float c, float nc, float n, float nbb, float ncb, float pfl, float cz, float d );
#ifdef __SSE2__
static void xyz2jchqms_ciecam02float ( vfloat &J, vfloat &C, vfloat &h,
diff --git a/rtengine/cplx_wavelet_dec.cc b/rtengine/cplx_wavelet_dec.cc
index eafadaa54..a43a7b8b6 100644
--- a/rtengine/cplx_wavelet_dec.cc
+++ b/rtengine/cplx_wavelet_dec.cc
@@ -39,5 +39,5 @@ wavelet_decomposition::~wavelet_decomposition()
}
}
-};
+}
diff --git a/rtengine/cplx_wavelet_dec.h b/rtengine/cplx_wavelet_dec.h
index 45e829322..ccecef819 100644
--- a/rtengine/cplx_wavelet_dec.h
+++ b/rtengine/cplx_wavelet_dec.h
@@ -266,6 +266,6 @@ void wavelet_decomposition::reconstruct(E * dst, const float blend)
coeff0 = nullptr;
}
-};
+}
#endif
diff --git a/rtengine/cplx_wavelet_filter_coeffs.h b/rtengine/cplx_wavelet_filter_coeffs.h
index ff22c9812..bd333d4b9 100644
--- a/rtengine/cplx_wavelet_filter_coeffs.h
+++ b/rtengine/cplx_wavelet_filter_coeffs.h
@@ -50,5 +50,5 @@ const float Daub4_anal16[2][16] ALIGNED16 = {//Daub 14
};
// if necessary ?? we can add D20 !!
-};
+}
diff --git a/rtengine/cplx_wavelet_level.h b/rtengine/cplx_wavelet_level.h
index 9996ec2af..cab0d8e3e 100644
--- a/rtengine/cplx_wavelet_level.h
+++ b/rtengine/cplx_wavelet_level.h
@@ -758,6 +758,6 @@ template template void wavelet_level::reconstruct_lev
}
}
#endif
-};
+}
#endif
diff --git a/rtengine/curves.cc b/rtengine/curves.cc
index cc618858e..bb892b2a4 100644
--- a/rtengine/curves.cc
+++ b/rtengine/curves.cc
@@ -1669,7 +1669,7 @@ void ColorAppearance::Set(const Curve &pCurve)
}
//
-RetinextransmissionCurve::RetinextransmissionCurve() {};
+RetinextransmissionCurve::RetinextransmissionCurve() {}
void RetinextransmissionCurve::Reset()
{
@@ -1702,7 +1702,7 @@ void RetinextransmissionCurve::Set(const std::vector &curvePoints)
}
-RetinexgaintransmissionCurve::RetinexgaintransmissionCurve() {};
+RetinexgaintransmissionCurve::RetinexgaintransmissionCurve() {}
void RetinexgaintransmissionCurve::Reset()
{
@@ -1812,7 +1812,7 @@ void OpacityCurve::Set(const std::vector &curvePoints, bool &opautili)
}
-WavCurve::WavCurve() : sum(0.f) {};
+WavCurve::WavCurve() : sum(0.f) {}
void WavCurve::Reset()
{
@@ -1855,7 +1855,7 @@ void WavCurve::Set(const std::vector &curvePoints)
}
-WavOpacityCurveRG::WavOpacityCurveRG() {};
+WavOpacityCurveRG::WavOpacityCurveRG() {}
void WavOpacityCurveRG::Reset()
{
@@ -1888,7 +1888,7 @@ void WavOpacityCurveRG::Set(const std::vector &curvePoints)
}
-WavOpacityCurveBY::WavOpacityCurveBY() {};
+WavOpacityCurveBY::WavOpacityCurveBY() {}
void WavOpacityCurveBY::Reset()
{
@@ -1920,7 +1920,7 @@ void WavOpacityCurveBY::Set(const std::vector &curvePoints)
}
}
-WavOpacityCurveW::WavOpacityCurveW() {};
+WavOpacityCurveW::WavOpacityCurveW() {}
void WavOpacityCurveW::Reset()
{
@@ -1952,7 +1952,7 @@ void WavOpacityCurveW::Set(const std::vector &curvePoints)
}
}
-WavOpacityCurveWL::WavOpacityCurveWL() {};
+WavOpacityCurveWL::WavOpacityCurveWL() {}
void WavOpacityCurveWL::Reset()
{
@@ -1985,7 +1985,7 @@ void WavOpacityCurveWL::Set(const std::vector &curvePoints)
}
-NoiseCurve::NoiseCurve() : sum(0.f) {};
+NoiseCurve::NoiseCurve() : sum(0.f) {}
void NoiseCurve::Reset()
{
@@ -2684,7 +2684,7 @@ void PerceptualToneCurve::BatchApply(const size_t start, const size_t end, float
Ciecam02::jch2xyz_ciecam02float(x, y, z,
J, C, h,
xw, yw, zw,
- c, nc, 1, pow1, nbb, ncb, fl, cz, d, aw);
+ c, nc, pow1, nbb, ncb, fl, cz, d, aw );
if (!isfinite(x) || !isfinite(y) || !isfinite(z)) {
// can happen for colours on the rim of being outside gamut, that worked without chroma scaling but not with. Then we return only the curve's result.
@@ -2767,7 +2767,7 @@ void PerceptualToneCurve::BatchApply(const size_t start, const size_t end, float
}
float PerceptualToneCurve::cf_range[2];
float PerceptualToneCurve::cf[1000];
-float PerceptualToneCurve::f, PerceptualToneCurve::c, PerceptualToneCurve::nc, PerceptualToneCurve::yb, PerceptualToneCurve::la, PerceptualToneCurve::xw, PerceptualToneCurve::yw, PerceptualToneCurve::zw, PerceptualToneCurve::gamut;
+float PerceptualToneCurve::f, PerceptualToneCurve::c, PerceptualToneCurve::nc, PerceptualToneCurve::yb, PerceptualToneCurve::la, PerceptualToneCurve::xw, PerceptualToneCurve::yw, PerceptualToneCurve::zw;
float PerceptualToneCurve::n, PerceptualToneCurve::d, PerceptualToneCurve::nbb, PerceptualToneCurve::ncb, PerceptualToneCurve::cz, PerceptualToneCurve::aw, PerceptualToneCurve::wh, PerceptualToneCurve::pfl, PerceptualToneCurve::fl, PerceptualToneCurve::pow1;
void PerceptualToneCurve::init()
@@ -2783,7 +2783,7 @@ void PerceptualToneCurve::init()
c = 0.69f;
nc = 1.00f;
- Ciecam02::initcam1float(gamut, yb, 1.f, f, la, xw, yw, zw, n, d, nbb, ncb,
+ Ciecam02::initcam1float(yb, 1.f, f, la, xw, yw, zw, n, d, nbb, ncb,
cz, aw, wh, pfl, fl, c);
pow1 = pow_F(1.64f - pow_F(0.29f, n), 0.73f);
diff --git a/rtengine/curves.h b/rtengine/curves.h
index 33e944959..dece79471 100644
--- a/rtengine/curves.h
+++ b/rtengine/curves.h
@@ -473,11 +473,11 @@ protected:
public:
DiagonalCurve(const std::vector& points, int ppn = CURVES_MIN_POLY_POINTS);
- virtual ~DiagonalCurve();
+ ~DiagonalCurve () override;
- double getVal(double t) const;
- void getVal(const std::vector& t, std::vector& res) const;
- bool isIdentity() const
+ double getVal (double t) const override;
+ void getVal (const std::vector& t, std::vector& res) const override;
+ bool isIdentity () const override
{
return kind == DCT_Empty;
};
@@ -498,12 +498,12 @@ private:
public:
FlatCurve(const std::vector& points, bool isPeriodic = true, int ppn = CURVES_MIN_POLY_POINTS);
- virtual ~FlatCurve();
+ ~FlatCurve () override;
- double getVal(double t) const;
- void getVal(const std::vector& t, std::vector& res) const;
+ double getVal (double t) const override;
+ void getVal (const std::vector& t, std::vector& res) const override;
bool setIdentityValue(double iVal);
- bool isIdentity() const
+ bool isIdentity () const override
{
return kind == FCT_Empty;
};
@@ -1051,7 +1051,7 @@ private:
static float cf_range[2];
static float cf[1000];
// for ciecam02
- static float f, c, nc, yb, la, xw, yw, zw, gamut;
+ static float f, c, nc, yb, la, xw, yw, zw;
static float n, d, nbb, ncb, cz, aw, wh, pfl, fl, pow1;
static void cubic_spline(const float x[], const float y[], const int len, const float out_x[], float out_y[], const int out_len);
diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc
index 0d5870b6a..7d4ec4376 100644
--- a/rtengine/dcraw.cc
+++ b/rtengine/dcraw.cc
@@ -34,6 +34,10 @@
//#define BENCHMARK
#include "StopWatch.h"
+#include
+#include
+
+
/*
dcraw.c -- Dave Coffin's raw photo decoder
Copyright 1997-2018 by Dave Coffin, dcoffin a cybercom o net
@@ -1229,23 +1233,46 @@ void CLASS lossless_dng_load_raw()
}
}
+static uint32_t DNG_HalfToFloat(uint16_t halfValue);
+
void CLASS packed_dng_load_raw()
{
ushort *pixel, *rp;
int row, col;
+ int isfloat = (tiff_nifds == 1 && tiff_ifd[0].sample_format == 3 && (tiff_bps == 16 || tiff_bps == 32));
+ if (isfloat) {
+ float_raw_image = new float[raw_width * raw_height];
+ }
pixel = (ushort *) calloc (raw_width, tiff_samples*sizeof *pixel);
merror (pixel, "packed_dng_load_raw()");
for (row=0; row < raw_height; row++) {
- if (tiff_bps == 16)
+ if (tiff_bps == 16) {
read_shorts (pixel, raw_width * tiff_samples);
- else {
+ if (isfloat) {
+ uint32_t *dst = reinterpret_cast(&float_raw_image[row*raw_width]);
+ for (col = 0; col < raw_width; col++) {
+ uint32_t f = DNG_HalfToFloat(pixel[col]);
+ dst[col] = f;
+ }
+ }
+ } else if (isfloat) {
+ if (fread(&float_raw_image[row*raw_width], sizeof(float), raw_width, ifp) != raw_width) {
+ derror();
+ }
+ if ((order == 0x4949) == (ntohs(0x1234) == 0x1234)) {
+ char *d = reinterpret_cast(float_raw_image);
+ rtengine::swab(d, d, sizeof(float)*raw_width);
+ }
+ } else {
getbits(-1);
for (col=0; col < raw_width * tiff_samples; col++)
pixel[col] = getbits(tiff_bps);
}
- for (rp=pixel, col=0; col < raw_width; col++)
- adobe_copy_pixel (row, col, &rp);
+ if (!isfloat) {
+ for (rp=pixel, col=0; col < raw_width; col++)
+ adobe_copy_pixel (row, col, &rp);
+ }
}
free (pixel);
}
@@ -6041,7 +6068,7 @@ int CLASS parse_tiff_ifd (int base)
char software[64], *cbuf, *cp;
uchar cfa_pat[16], cfa_pc[] = { 0,1,2,3 }, tab[256];
double cc[2][4][4];
- double cm[2][4][3] = {NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN};
+ double cm[2][4][3] = {{{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN}},{{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN}}};
double cam_xyz[4][3], num;
double ab[]={ 1,1,1,1 }, asn[] = { 0,0,0,0 }, xyz[] = { 1,1,1 };
unsigned sony_curve[] = { 0,0,0,0,0,4095 };
@@ -6173,6 +6200,7 @@ int CLASS parse_tiff_ifd (int base)
break;
case 305: case 11: /* Software */
fgets (software, 64, ifp);
+ RT_software = software;
if (!strncmp(software,"Adobe",5) ||
!strncmp(software,"dcraw",5) ||
!strncmp(software,"UFRaw",5) ||
@@ -6441,6 +6469,7 @@ guess_cfa_pc:
case 61450:
cblack[4] = cblack[5] = MIN(sqrt(len),64);
case 50714: /* BlackLevel */
+ RT_blacklevel_from_constant = ThreeValBool::F;
if(cblack[4] * cblack[5] == 0) {
int dblack[] = { 0,0,0,0 };
black = getreal(type);
@@ -6461,9 +6490,11 @@ guess_cfa_pc:
for (num=i=0; i < (len & 0xffff); i++)
num += getreal(type);
black += num/len + 0.5;
+ RT_blacklevel_from_constant = ThreeValBool::F;
break;
case 50717: /* WhiteLevel */
maximum = getint(type);
+ RT_whitelevel_from_constant = ThreeValBool::F;
break;
case 50718: /* DefaultScale */
pixel_aspect = getreal(type);
@@ -6492,6 +6523,14 @@ guess_cfa_pc:
xyz[2] = 1 - xyz[0] - xyz[1];
FORC3 xyz[c] /= d65_white[c];
break;
+ case 50730: /* BaselineExposure */
+ if (dng_version) {
+ double be = getreal(type);
+ if (!std::isnan(be)) {
+ RT_baseline_exposure = be;
+ }
+ }
+ break;
case 50740: /* DNGPrivateData */
if (dng_version) break;
parse_minolta (j = get4()+base);
@@ -6601,8 +6640,6 @@ guess_cfa_pc:
if (!use_cm)
FORCC pre_mul[c] /= cc[cm_D65][c][c];
- RT_from_adobe_dng_converter = !strncmp(software, "Adobe DNG Converter", 19);
-
return 0;
}
@@ -8665,11 +8702,31 @@ void CLASS adobe_coeff (const char *make, const char *model)
int i, j;
sprintf (name, "%s %s", make, model);
+
+
+ // -- RT --------------------------------------------------------------------
+ const bool is_pentax_dng = dng_version && !strncmp(RT_software.c_str(), "PENTAX", 6);
+ // indicate that DCRAW wants these from constants (rather than having loaded these from RAW file
+ // note: this is simplified so far, in some cases dcraw calls this when it has say the black level
+ // from file, but then we will not provide any black level in the tables. This case is mainly just
+ // to avoid loading table values if we have loaded a DNG conversion of a raw file (which already
+ // have constants stored in the file).
+ if (RT_whitelevel_from_constant == ThreeValBool::X || is_pentax_dng) {
+ RT_whitelevel_from_constant = ThreeValBool::T;
+ }
+ if (RT_blacklevel_from_constant == ThreeValBool::X || is_pentax_dng) {
+ RT_blacklevel_from_constant = ThreeValBool::T;
+ }
+ if (RT_matrix_from_constant == ThreeValBool::X) {
+ RT_matrix_from_constant = ThreeValBool::T;
+ }
+ // -- RT --------------------------------------------------------------------
+
for (i=0; i < sizeof table / sizeof *table; i++)
if (!strncmp (name, table[i].prefix, strlen(table[i].prefix))) {
- if (table[i].black) black = (ushort) table[i].black;
- if (table[i].maximum) maximum = (ushort) table[i].maximum;
- if (table[i].trans[0]) {
+ if (RT_blacklevel_from_constant == ThreeValBool::T && table[i].black) black = (ushort) table[i].black;
+ if (RT_whitelevel_from_constant == ThreeValBool::T && table[i].maximum) maximum = (ushort) table[i].maximum;
+ if (RT_matrix_from_constant == ThreeValBool::T && table[i].trans[0]) {
for (raw_color = j=0; j < 12; j++)
((double *)cam_xyz)[j] = table[i].trans[j] / 10000.0;
cam_xyz_coeff (rgb_cam, cam_xyz);
@@ -10107,14 +10164,16 @@ bw: colors = 1;
dng_skip:
if ((use_camera_matrix & (use_camera_wb || dng_version))
&& cmatrix[0][0] > 0.125
- && !RT_from_adobe_dng_converter /* RT -- do not use the embedded
- * matrices for DNGs coming from the
- * Adobe DNG Converter, to ensure
- * consistency of WB values between
- * DNG-converted and original raw
- * files. See #4129 */) {
+ && strncmp(RT_software.c_str(), "Adobe DNG Converter", 19) != 0
+ /* RT -- do not use the embedded
+ * matrices for DNGs coming from the
+ * Adobe DNG Converter, to ensure
+ * consistency of WB values between
+ * DNG-converted and original raw
+ * files. See #4129 */) {
memcpy (rgb_cam, cmatrix, sizeof cmatrix);
- raw_color = 0;
+// raw_color = 0;
+ RT_matrix_from_constant = ThreeValBool::F;
}
if(!strncmp(make, "Panasonic", 9) && !strncmp(model, "DMC-LX100",9))
adobe_coeff (make, model);
@@ -10148,7 +10207,14 @@ dng_skip:
if (raw_width < width ) raw_width = width;
}
if (!tiff_bps) tiff_bps = 12;
- if (!maximum) maximum = ((uint64_t)1 << tiff_bps) - 1; // use uint64_t to avoid overflow if tiff_bps == 32
+ if (!maximum) {
+ if (tiff_nifds == 1 && tiff_ifd[0].sample_format == 3) {
+ // float DNG, default white level is 1.0
+ maximum = 1;
+ } else {
+ maximum = ((uint64_t)1 << tiff_bps) - 1; // use uint64_t to avoid overflow if tiff_bps == 32
+ }
+ }
if (!load_raw || height < 22 || width < 22 ||
tiff_samples > 6 || colors > 4)
is_raw = 0;
@@ -10231,8 +10297,8 @@ notraw:
/* RT: DNG Float */
-#include
-#include
+// #include
+// #include
static void decodeFPDeltaRow(Bytef * src, Bytef * dst, size_t tileWidth, size_t realTileWidth, int bytesps, int factor) {
// DecodeDeltaBytes
@@ -10264,9 +10330,10 @@ static void decodeFPDeltaRow(Bytef * src, Bytef * dst, size_t tileWidth, size_t
}
-#ifndef __F16C__
+#if 1 //ndef __F16C__
// From DNG SDK dng_utils.h
-static inline uint32_t DNG_HalfToFloat(uint16_t halfValue) {
+static //inline
+uint32_t DNG_HalfToFloat(uint16_t halfValue) {
int32_t sign = (halfValue >> 15) & 0x00000001;
int32_t exponent = (halfValue >> 10) & 0x0000001f;
int32_t mantissa = halfValue & 0x000003ff;
diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h
index dd4831625..923d6190f 100644
--- a/rtengine/dcraw.h
+++ b/rtengine/dcraw.h
@@ -57,10 +57,10 @@ public:
,verbose(0)
,use_auto_wb(0),use_camera_wb(0),use_camera_matrix(1)
,output_color(1),output_bps(8),output_tiff(0),med_passes(0),no_auto_bright(0)
- ,RT_whitelevel_from_constant(0)
- ,RT_blacklevel_from_constant(0)
- ,RT_matrix_from_constant(0)
- ,RT_from_adobe_dng_converter(false)
+ ,RT_whitelevel_from_constant(ThreeValBool::X)
+ ,RT_blacklevel_from_constant(ThreeValBool::X)
+ ,RT_matrix_from_constant(ThreeValBool::X)
+ ,RT_baseline_exposure(0)
,getbithuff(this,ifp,zero_after_ff)
,nikbithuff(ifp)
{
@@ -152,10 +152,12 @@ protected:
int output_color, output_bps, output_tiff, med_passes;
int no_auto_bright;
unsigned greybox[4] ;
- int RT_whitelevel_from_constant;
- int RT_blacklevel_from_constant;
- int RT_matrix_from_constant;
- bool RT_from_adobe_dng_converter;
+ enum class ThreeValBool { X = -1, F, T };
+ ThreeValBool RT_whitelevel_from_constant;
+ ThreeValBool RT_blacklevel_from_constant;
+ ThreeValBool RT_matrix_from_constant;
+ std::string RT_software;
+ double RT_baseline_exposure;
float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4];
@@ -259,7 +261,7 @@ getbithuff_t getbithuff;
class nikbithuff_t
{
public:
- nikbithuff_t(IMFILE *&i):bitbuf(0),errors(0),vbits(0),ifp(i){}
+ explicit nikbithuff_t(IMFILE *&i):bitbuf(0),errors(0),vbits(0),ifp(i){}
void operator()() {bitbuf = vbits = 0;};
unsigned operator()(int nbits, ushort *huff);
unsigned errorCount() { return errors; }
@@ -426,6 +428,7 @@ void kodak_thumb_load_raw();
// sony_decrypt(unsigned *data, int len, int start, int key);
class sony_decrypt_t{
public:
+ explicit sony_decrypt_t() : p(0) {}
void operator()(unsigned *data, int len, int start, int key);
private:
unsigned pad[128], p;
diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc
index 7578f2761..aee608c09 100644
--- a/rtengine/dcrop.cc
+++ b/rtengine/dcrop.cc
@@ -817,59 +817,58 @@ void Crop::update(int todo)
}
- if (todo & (M_AUTOEXP | M_RGBCURVE)) {
+ if (todo & M_RGBCURVE) {
+ Imagefloat *workingCrop = baseCrop;
+
if (params.icm.workingTRC == "Custom") { //exec TRC IN free
- Glib::ustring profile;
- profile = params.icm.workingProfile;
+ const Glib::ustring profile = params.icm.workingProfile;
if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") {
-
+ int cw = baseCrop->getWidth();
+ int ch = baseCrop->getHeight();
+ workingCrop = new Imagefloat(cw, ch);
+ baseCrop->copyData(workingCrop);
//first put gamma TRC to 1
- int cw = baseCrop->getWidth();
- int ch = baseCrop->getHeight();
- Imagefloat* readyImg0 = NULL;
-
- readyImg0 = parent->ipf.workingtrc(baseCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310);
+ Imagefloat* readyImg0 = parent->ipf.workingtrc(workingCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310);
#pragma omp parallel for
for (int row = 0; row < ch; row++) {
for (int col = 0; col < cw; col++) {
- baseCrop->r(row, col) = (float)readyImg0->r(row, col);
- baseCrop->g(row, col) = (float)readyImg0->g(row, col);
- baseCrop->b(row, col) = (float)readyImg0->b(row, col);
+ workingCrop->r(row, col) = (float)readyImg0->r(row, col);
+ workingCrop->g(row, col) = (float)readyImg0->g(row, col);
+ workingCrop->b(row, col) = (float)readyImg0->b(row, col);
}
}
delete readyImg0;
//adjust gamma TRC
- Imagefloat* readyImg = NULL;
- readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope);
+ Imagefloat* readyImg = parent->ipf.workingtrc(workingCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope);
#pragma omp parallel for
for (int row = 0; row < ch; row++) {
for (int col = 0; col < cw; col++) {
- baseCrop->r(row, col) = (float)readyImg->r(row, col);
- baseCrop->g(row, col) = (float)readyImg->g(row, col);
- baseCrop->b(row, col) = (float)readyImg->b(row, col);
+ workingCrop->r(row, col) = (float)readyImg->r(row, col);
+ workingCrop->g(row, col) = (float)readyImg->g(row, col);
+ workingCrop->b(row, col) = (float)readyImg->b(row, col);
}
}
delete readyImg;
}
}
- }
-
- if (todo & M_RGBCURVE) {
double rrm, ggm, bbm;
DCPProfile::ApplyState as;
DCPProfile *dcpProf = parent->imgsrc->getDCP(params.icm, as);
LUTu histToneCurve;
- parent->ipf.rgbProc(baseCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve,
+ parent->ipf.rgbProc (workingCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve,
params.toneCurve.saturation, parent->rCurve, parent->gCurve, parent->bCurve, parent->colourToningSatLimit, parent->colourToningSatLimitOpacity, parent->ctColorCurve, parent->ctOpacityCurve, parent->opautili, parent->clToningcurve, parent->cl2Toningcurve,
parent->customToneCurve1, parent->customToneCurve2, parent->beforeToneCurveBW, parent->afterToneCurveBW, rrm, ggm, bbm,
parent->bwAutoR, parent->bwAutoG, parent->bwAutoB, dcpProf, as, histToneCurve);
+ if (workingCrop != baseCrop) {
+ delete workingCrop;
+ }
}
/*xref=000;yref=000;
diff --git a/rtengine/dcrop.h b/rtengine/dcrop.h
index c2e3fe84c..bfd41e5ef 100644
--- a/rtengine/dcrop.h
+++ b/rtengine/dcrop.h
@@ -74,12 +74,12 @@ protected:
public:
Crop(ImProcCoordinator* parent, EditDataProvider *editDataProvider, bool isDetailWindow);
- virtual ~Crop();
+ ~Crop () override;
// MyMutex* locMutex;
void setEditSubscriber(EditSubscriber* newSubscriber);
bool hasListener();
void update(int todo);
- void setWindow(int cropX, int cropY, int cropW, int cropH, int skip)
+ void setWindow (int cropX, int cropY, int cropW, int cropH, int skip) override
{
setCropSizes(cropX, cropY, cropW, cropH, skip, false);
}
@@ -87,12 +87,12 @@ public:
/** @brief Synchronously look out if a full update is necessary
* First try, only make fullUpdate if this returns false
*/
- bool tryUpdate();
+ bool tryUpdate () override;
/** @brief Asynchronously reprocess the detailed crop */
- void fullUpdate(); // called via thread
+ void fullUpdate () override; // called via thread
- void setListener(DetailedCropListener* il);
- void destroy();
+ void setListener (DetailedCropListener* il) override;
+ void destroy () override;
int get_skip();
int getLeftBorder();
int getUpperBorder();
diff --git a/rtengine/eahd_demosaic.cc b/rtengine/eahd_demosaic.cc
index 4ebeb2d66..816f4bf55 100644
--- a/rtengine/eahd_demosaic.cc
+++ b/rtengine/eahd_demosaic.cc
@@ -163,7 +163,7 @@ inline void RawImageSource::interpolate_row_rb (float* ar, float* ab, float* pg,
n++;
}
- nonGreen2[j] = cg[j] + nonGreen / n;
+ nonGreen2[j] = cg[j] + nonGreen / std::max(n, 1);
// linear R-G interp. horizontally
float val1;
diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc
index 2bc0e940e..da95946e7 100644
--- a/rtengine/histmatching.cc
+++ b/rtengine/histmatching.cc
@@ -114,7 +114,7 @@ public:
spline_cubic_set();
}
- double getVal(double t) const
+ double getVal(double t) const override
{
// values under and over the first and last point
if (t > x[N - 1]) {
diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc
index 1f24852d0..e8463a1d8 100644
--- a/rtengine/iccstore.cc
+++ b/rtengine/iccstore.cc
@@ -623,7 +623,7 @@ private:
struct PMatrix {
double matrix[3][3];
PMatrix(): matrix{} {}
- PMatrix(const CMatrix &m)
+ explicit PMatrix(const CMatrix &m)
{
set(m);
}
diff --git a/rtengine/iimage.h b/rtengine/iimage.h
index 5738b4655..3549d4dae 100644
--- a/rtengine/iimage.h
+++ b/rtengine/iimage.h
@@ -257,7 +257,7 @@ public:
/* If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed
* Can be safely used to reallocate an existing image */
- void allocate (int W, int H)
+ void allocate (int W, int H) override
{
if (W == width && H == height) {
@@ -327,7 +327,7 @@ public:
}
}
- void rotate (int deg)
+ void rotate (int deg) override
{
if (deg == 90) {
@@ -446,7 +446,7 @@ public:
}
}
- void hflip ()
+ void hflip () override
{
int width2 = width / 2;
@@ -470,7 +470,7 @@ public:
#endif
}
- void vflip ()
+ void vflip () override
{
int height2 = height / 2;
@@ -648,7 +648,7 @@ public:
/* If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed
* Can be safely used to reallocate an existing image */
- void allocate (int W, int H)
+ void allocate (int W, int H) override
{
if (W == width && H == height) {
@@ -736,7 +736,7 @@ public:
}
}
- void rotate (int deg)
+ void rotate (int deg) override
{
if (deg == 90) {
@@ -863,7 +863,7 @@ public:
}
}
- void hflip ()
+ void hflip () override
{
int width2 = width / 2;
@@ -895,7 +895,7 @@ public:
#endif
}
- void vflip ()
+ void vflip () override
{
int height2 = height / 2;
@@ -961,7 +961,7 @@ public:
}
}
- void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const
+ void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override
{
histogram.clear();
avg_r = avg_g = avg_b = 0.;
@@ -993,7 +993,7 @@ public:
}
}
- void getAutoWBMultipliers (double &rm, double &gm, double &bm) const
+ void getAutoWBMultipliers (double &rm, double &gm, double &bm) const override
{
double avg_r = 0.;
@@ -1067,9 +1067,9 @@ public:
}
}
- virtual void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn,
+ void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn,
std::vector &red, std::vector &green, std::vector &blue,
- int tran) const
+ int tran) const override
{
int x;
int y;
@@ -1297,7 +1297,7 @@ public:
* If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed
* Can be safely used to reallocate an existing image or to free up it's memory with "allocate (0,0);"
*/
- void allocate (int W, int H)
+ void allocate (int W, int H) override
{
if (W == width && H == height) {
@@ -1351,7 +1351,7 @@ public:
memcpy (dest->data, data, 3 * width * height * sizeof(T));
}
- void rotate (int deg)
+ void rotate (int deg) override
{
if (deg == 90) {
@@ -1485,7 +1485,7 @@ public:
}
}
- void hflip ()
+ void hflip () override
{
int width2 = width / 2;
@@ -1521,7 +1521,7 @@ public:
}
}
- void vflip ()
+ void vflip () override
{
AlignedBuffer lBuffer(3 * width);
@@ -1570,7 +1570,7 @@ public:
}
}
- void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const
+ void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override
{
histogram.clear();
avg_r = avg_g = avg_b = 0.;
@@ -1602,7 +1602,7 @@ public:
}
}
- void getAutoWBMultipliers (double &rm, double &gm, double &bm) const
+ void getAutoWBMultipliers (double &rm, double &gm, double &bm) const override
{
double avg_r = 0.;
@@ -1676,9 +1676,9 @@ public:
}
}
- virtual void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn,
+ void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn,
std::vector &red, std::vector &green, std::vector &blue,
- int tran) const
+ int tran) const override
{
int x;
int y;
@@ -1782,14 +1782,14 @@ public:
class IImagefloat : public IImage, public PlanarRGBData
{
public:
- virtual ~IImagefloat() {}
+ ~IImagefloat() override {}
};
/** @brief This class represents an image having a classical 8 bits/pixel representation */
class IImage8 : public IImage, public ChunkyRGBData
{
public:
- virtual ~IImage8() {}
+ ~IImage8() override {}
};
/** @brief This class represents an image having a 16 bits/pixel planar representation.
@@ -1797,7 +1797,7 @@ public:
class IImage16 : public IImage, public PlanarRGBData
{
public:
- virtual ~IImage16() {}
+ ~IImage16() override {}
};
}
diff --git a/rtengine/image16.h b/rtengine/image16.h
index 940416254..9f73c322b 100644
--- a/rtengine/image16.h
+++ b/rtengine/image16.h
@@ -38,7 +38,7 @@ public:
Image16();
Image16(int width, int height);
- ~Image16();
+ ~Image16() override;
Image16* copy() const;
diff --git a/rtengine/image8.h b/rtengine/image8.h
index 2cc670a4a..8928cf85b 100644
--- a/rtengine/image8.h
+++ b/rtengine/image8.h
@@ -36,7 +36,7 @@ public:
Image8 ();
Image8 (int width, int height);
- ~Image8 ();
+ ~Image8 () override;
Image8* copy () const;
diff --git a/rtengine/imagedata.h b/rtengine/imagedata.h
index 1c3aff7e9..7aa4812d0 100644
--- a/rtengine/imagedata.h
+++ b/rtengine/imagedata.h
@@ -98,35 +98,35 @@ private:
public:
FramesData (const Glib::ustring& fname, std::unique_ptr rml = nullptr, bool firstFrameOnly = false);
- ~FramesData ();
+ ~FramesData () override;
void setDCRawFrameCount (unsigned int frameCount);
- unsigned int getRootCount () const;
- unsigned int getFrameCount () const;
- bool getPixelShift () const;
- bool getHDR (unsigned int frame = 0) const;
- std::string getImageType (unsigned int frame) const;
- IIOSampleFormat getSampleFormat (unsigned int frame = 0) const;
- rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const;
- rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const;
- rtexif::TagDirectory* getBestExifData (ImageSource *imgSource, procparams::RAWParams *rawParams) const;
- procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const;
- bool hasExif (unsigned int frame = 0) const;
- bool hasIPTC (unsigned int frame = 0) const;
- tm getDateTime (unsigned int frame = 0) const;
- time_t getDateTimeAsTS (unsigned int frame = 0) const;
- int getISOSpeed (unsigned int frame = 0) const;
- double getFNumber (unsigned int frame = 0) const;
- double getFocalLen (unsigned int frame = 0) const;
- double getFocalLen35mm (unsigned int frame = 0) const;
- float getFocusDist (unsigned int frame = 0) const;
- double getShutterSpeed (unsigned int frame = 0) const;
- double getExpComp (unsigned int frame = 0) const;
- std::string getMake (unsigned int frame = 0) const;
- std::string getModel (unsigned int frame = 0) const;
- std::string getLens (unsigned int frame = 0) const;
+ unsigned int getRootCount () const override;
+ unsigned int getFrameCount () const override;
+ bool getPixelShift () const override;
+ bool getHDR (unsigned int frame = 0) const override;
+ std::string getImageType (unsigned int frame) const override;
+ IIOSampleFormat getSampleFormat (unsigned int frame = 0) const override;
+ rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const override;
+ rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const override;
+ rtexif::TagDirectory* getBestExifData (ImageSource *imgSource, procparams::RAWParams *rawParams) const override;
+ procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const override;
+ bool hasExif (unsigned int frame = 0) const override;
+ bool hasIPTC (unsigned int frame = 0) const override;
+ tm getDateTime (unsigned int frame = 0) const override;
+ time_t getDateTimeAsTS (unsigned int frame = 0) const override;
+ int getISOSpeed (unsigned int frame = 0) const override;
+ double getFNumber (unsigned int frame = 0) const override;
+ double getFocalLen (unsigned int frame = 0) const override;
+ double getFocalLen35mm (unsigned int frame = 0) const override;
+ float getFocusDist (unsigned int frame = 0) const override;
+ double getShutterSpeed (unsigned int frame = 0) const override;
+ double getExpComp (unsigned int frame = 0) const override;
+ std::string getMake (unsigned int frame = 0) const override;
+ std::string getModel (unsigned int frame = 0) const override;
+ std::string getLens (unsigned int frame = 0) const override;
std::string getSerialNumber (unsigned int frame = 0) const;
- std::string getOrientation (unsigned int frame = 0) const;
+ std::string getOrientation (unsigned int frame = 0) const override;
};
diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h
index bd7ae2a46..9d7c69aef 100644
--- a/rtengine/imagefloat.h
+++ b/rtengine/imagefloat.h
@@ -42,7 +42,7 @@ public:
Imagefloat ();
Imagefloat (int width, int height);
- ~Imagefloat ();
+ ~Imagefloat () override;
Imagefloat* copy () const;
@@ -218,7 +218,7 @@ public:
return (uint32_t) ((sign << 31) | (exponent << 23) | mantissa);
}
- virtual void normalizeFloat(float srcMinVal, float srcMaxVal);
+ void normalizeFloat(float srcMinVal, float srcMaxVal) override;
void normalizeFloatTo1();
void normalizeFloatTo65535();
void calcCroppedHistogram(const ProcParams ¶ms, float scale, LUTu & hist);
diff --git a/rtengine/imageio.h b/rtengine/imageio.h
index 5970866f0..60bf6bc43 100644
--- a/rtengine/imageio.h
+++ b/rtengine/imageio.h
@@ -72,7 +72,7 @@ public:
loadedProfileLength(0), iptc(nullptr), exifRoot (nullptr), sampleFormat(IIOSF_UNKNOWN),
sampleArrangement(IIOSA_UNKNOWN) {}
- virtual ~ImageIO ();
+ ~ImageIO () override;
void setProgressListener (ProgressListener* l);
void setSampleFormat(IIOSampleFormat sFormat);
diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h
index 2c7ded588..c87ce4b0d 100644
--- a/rtengine/imagesource.h
+++ b/rtengine/imagesource.h
@@ -65,7 +65,7 @@ public:
ImageSource () : references (1), redAWBMul(-1.), greenAWBMul(-1.), blueAWBMul(-1.),
embProfile(nullptr), idata(nullptr), dirpyrdenoiseExpComp(INFINITY) {}
- virtual ~ImageSource () {}
+ ~ImageSource () override {}
virtual int load (const Glib::ustring &fname) = 0;
virtual void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse, bool prepareDenoise = true) {};
virtual void demosaic (const RAWParams &raw, bool autoContrast, double &contrastThreshold) {};
@@ -119,11 +119,11 @@ public:
virtual void setProgressListener (ProgressListener* pl) {}
- void increaseRef ()
+ void increaseRef () override
{
references++;
}
- void decreaseRef ()
+ void decreaseRef () override
{
references--;
@@ -151,19 +151,19 @@ public:
return dirpyrdenoiseExpComp;
}
// functions inherited from the InitialImage interface
- virtual Glib::ustring getFileName ()
+ Glib::ustring getFileName () override
{
return fileName;
}
- virtual cmsHPROFILE getEmbeddedProfile ()
+ cmsHPROFILE getEmbeddedProfile () override
{
return embProfile;
}
- virtual const FramesMetaData* getMetaData ()
+ const FramesMetaData* getMetaData () override
{
return idata;
}
- virtual ImageSource* getImageSource ()
+ ImageSource* getImageSource () override
{
return this;
}
diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc
index 53845e9ba..e45e45011 100644
--- a/rtengine/improccoordinator.cc
+++ b/rtengine/improccoordinator.cc
@@ -202,13 +202,13 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
if (!highDetailNeeded) {
// if below 100% magnification, take a fast path
- if (rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE) && rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE)) {
+ if (rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE) && rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::MONO)) {
rp.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST);
}
//bayerrp.all_enhance = false;
- if (rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE) && rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE)) {
+ if (rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE) && rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::MONO)) {
rp.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST);
}
@@ -535,15 +535,18 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
if (todo & (M_AUTOEXP | M_RGBCURVE)) {
if (params.icm.workingTRC == "Custom") { //exec TRC IN free
- Glib::ustring profile;
- profile = params.icm.workingProfile;
+ if (oprevi == orig_prev) {
+ oprevi = new Imagefloat(pW, pH);
+ orig_prev->copyData(oprevi);
+ }
+
+ Glib::ustring profile = params.icm.workingProfile;
if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") {
int cw = oprevi->getWidth();
int ch = oprevi->getHeight();
// put gamma TRC to 1
- Imagefloat* readyImg0 = NULL;
- readyImg0 = ipf.workingtrc(oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310);
+ Imagefloat* readyImg0 = ipf.workingtrc(oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310);
#pragma omp parallel for
for (int row = 0; row < ch; row++) {
@@ -556,8 +559,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange)
delete readyImg0;
//adjust TRC
- Imagefloat* readyImg = NULL;
- readyImg = ipf.workingtrc(oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope);
+ Imagefloat* readyImg = ipf.workingtrc(oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope);
#pragma omp parallel for
for (int row = 0; row < ch; row++) {
diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h
index 54e1c45af..77035f251 100644
--- a/rtengine/improccoordinator.h
+++ b/rtengine/improccoordinator.h
@@ -262,104 +262,87 @@ protected:
public:
- ImProcCoordinator();
- ~ImProcCoordinator();
- void assign(ImageSource* imgsrc);
+ ImProcCoordinator ();
+ ~ImProcCoordinator () override;
+ void assign (ImageSource* imgsrc);
- void getParams(procparams::ProcParams* dst)
+ void getParams (procparams::ProcParams* dst) override
{
*dst = params;
}
- void startProcessing(int changeCode);
- ProcParams* beginUpdateParams();
- void endUpdateParams(ProcEvent change); // must be called after beginUpdateParams, triggers update
- void endUpdateParams(int changeFlags);
- void stopProcessing();
-// void updatePreviewImage (int todo, Crop* cropCall = NULL);
-
-// Glib::ustring datal;
+ void startProcessing (int changeCode) override;
+ ProcParams* beginUpdateParams () override;
+ void endUpdateParams (ProcEvent change) override; // must be called after beginUpdateParams, triggers update
+ void endUpdateParams (int changeFlags) override;
+ void stopProcessing () override;
std::string *retistrsav;
-
-
- void setPreviewScale(int scale)
+ void setPreviewScale (int scale) override
{
setScale(scale);
}
- int getPreviewScale()
+ int getPreviewScale () override
{
return scale;
}
//void fullUpdatePreviewImage ();
- int getFullWidth()
+ int getFullWidth () override
{
return fullw;
}
- int getFullHeight()
+ int getFullHeight () override
{
return fullh;
}
- int getPreviewWidth()
+ int getPreviewWidth () override
{
return pW;
}
- int getPreviewHeight()
+ int getPreviewHeight () override
{
return pH;
}
- DetailedCrop* createCrop(::EditDataProvider *editDataProvider, bool isDetailWindow);
- /*
- <<<<<<< HEAD
- bool getAutoWB(double& temp, double& green, double equal, double tempBias);
- void getCamWB(double& temp, double& green);
- void getSpotWB(int x, int y, int rectSize, double& temp, double& green);
- void getAutoCrop(double ratio, int &x, int &y, int &w, int &h);
+ DetailedCrop* createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow) override;
- void setMonitorProfile(const Glib::ustring& profile, RenderingIntent intent);
- void getMonitorProfile(Glib::ustring& profile, RenderingIntent& intent) const;
- void setSoftProofing(bool softProof, bool gamutCheck);
- void getSoftProofing(bool &softProof, bool &gamutCheck);
- =======
- */
- bool getAutoWB(double& temp, double& green, double equal, double tempBias);
- void getCamWB(double& temp, double& green);
- void getSpotWB(int x, int y, int rectSize, double& temp, double& green);
- void getAutoCrop(double ratio, int &x, int &y, int &w, int &h);
- bool getHighQualComputed();
- void setHighQualComputed();
- void setMonitorProfile(const Glib::ustring& profile, RenderingIntent intent);
- void getMonitorProfile(Glib::ustring& profile, RenderingIntent& intent) const;
- void setSoftProofing(bool softProof, bool gamutCheck);
- void getSoftProofing(bool &softProof, bool &gamutCheck);
- void setSharpMask(bool sharpMask);
- bool updateTryLock()
+ bool getAutoWB (double& temp, double& green, double equal, double tempBias) override;
+ void getCamWB (double& temp, double& green) override;
+ void getSpotWB (int x, int y, int rectSize, double& temp, double& green) override;
+ void getAutoCrop (double ratio, int &x, int &y, int &w, int &h) override;
+ bool getHighQualComputed() override;
+ void setHighQualComputed() override;
+ void setMonitorProfile (const Glib::ustring& profile, RenderingIntent intent) override;
+ void getMonitorProfile (Glib::ustring& profile, RenderingIntent& intent) const override;
+ void setSoftProofing (bool softProof, bool gamutCheck) override;
+ void getSoftProofing (bool &softProof, bool &gamutCheck) override;
+ void setSharpMask (bool sharpMask) override;
+ bool updateTryLock () override
{
return updaterThreadStart.trylock();
}
- void updateUnLock()
+ void updateUnLock () override
{
updaterThreadStart.unlock();
}
- void setProgressListener(ProgressListener* pl)
+ void setProgressListener (ProgressListener* pl) override
{
plistener = pl;
}
- void setPreviewImageListener(PreviewImageListener* il)
+ void setPreviewImageListener (PreviewImageListener* il) override
{
imageListener = il;
}
- void setSizeListener(SizeListener* il)
+ void setSizeListener (SizeListener* il) override
{
sizeListeners.push_back(il);
}
- void delSizeListener(SizeListener* il)
+ void delSizeListener (SizeListener* il) override
{
std::vector::iterator it = std::find(sizeListeners.begin(), sizeListeners.end(), il);
@@ -367,71 +350,70 @@ public:
sizeListeners.erase(it);
}
}
- void setAutoExpListener(AutoExpListener* ael)
+ void setAutoExpListener (AutoExpListener* ael) override
{
aeListener = ael;
}
- void setHistogramListener(HistogramListener *h)
+ void setHistogramListener (HistogramListener *h) override
{
hListener = h;
}
- void setAutoCamListener(AutoCamListener* acl)
+ void setAutoCamListener (AutoCamListener* acl) override
{
acListener = acl;
}
- void setAutoBWListener(AutoBWListener* abw)
+ void setAutoBWListener (AutoBWListener* abw) override
{
abwListener = abw;
}
-
- void setAutoWBListener(AutoWBListener* awb)
+ void setAutoWBListener (AutoWBListener* awb) override
{
awbListener = awb;
}
- void setAutoColorTonListener(AutoColorTonListener* bwct)
+ void setAutoColorTonListener (AutoColorTonListener* bwct) override
{
actListener = bwct;
}
- void setAutoChromaListener(AutoChromaListener* adn)
+ void setAutoChromaListener (AutoChromaListener* adn) override
{
adnListener = adn;
}
- void setRetinexListener(RetinexListener* adh)
+ void setRetinexListener (RetinexListener* adh) override
{
dehaListener = adh;
}
- void setWaveletListener(WaveletListener* awa)
+ void setWaveletListener (WaveletListener* awa) override
{
awavListener = awa;
}
- void setFrameCountListener(FrameCountListener* fcl)
+ void setFrameCountListener (FrameCountListener* fcl) override
{
frameCountListener = fcl;
}
- void setFlatFieldAutoClipListener (FlatFieldAutoClipListener* ffacl)
+ void setFlatFieldAutoClipListener (FlatFieldAutoClipListener* ffacl) override
{
flatFieldAutoClipListener = ffacl;
}
- void setBayerAutoContrastListener (AutoContrastListener* acl)
+ void setBayerAutoContrastListener (AutoContrastListener* acl) override
{
bayerAutoContrastListener = acl;
}
- void setXtransAutoContrastListener (AutoContrastListener* acl)
+ void setXtransAutoContrastListener (AutoContrastListener* acl) override
{
xtransAutoContrastListener = acl;
}
- void setImageTypeListener(ImageTypeListener* itl)
+ void setImageTypeListener (ImageTypeListener* itl) override
{
imageTypeListener = itl;
}
- void saveInputICCReference(const Glib::ustring& fname, bool apply_wb);
+ void saveInputICCReference (const Glib::ustring& fname, bool apply_wb) override;
- InitialImage* getInitialImage()
+ InitialImage* getInitialImage () override
{
return imgsrc;
}
diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc
index 396d7176c..46a30b3e4 100644
--- a/rtengine/improcfun.cc
+++ b/rtengine/improcfun.cc
@@ -936,12 +936,12 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
float cz, wh, pfl;
- Ciecam02::initcam1float(gamu, yb, pilot, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c);
+ Ciecam02::initcam1float (yb, pilot, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c);
//printf ("wh=%f \n", wh);
const float pow1 = pow_F(1.64f - pow_F(0.29f, n), 0.73f);
float nj, nbbj, ncbj, czj, awj, flj;
- Ciecam02::initcam2float(gamu, yb2, pilotout, f2, la2, xw2, yw2, zw2, nj, dj, nbbj, ncbj, czj, awj, flj);
+ Ciecam02::initcam2float (yb2, pilotout, f2, la2, xw2, yw2, zw2, nj, dj, nbbj, ncbj, czj, awj, flj);
#ifdef __SSE2__
const float reccmcz = 1.f / (c2 * czj);
#endif
@@ -1056,7 +1056,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
Q, M, s, aw, fl, wh,
x, y, z,
xw1, yw1, zw1,
- c, nc, gamu, pow1, nbb, ncb, pfl, cz, d);
+ c, nc, pow1, nbb, ncb, pfl, cz, d);
Jbuffer[k] = J;
Cbuffer[k] = C;
hbuffer[k] = h;
@@ -1094,7 +1094,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
Q, M, s, aw, fl, wh,
x, y, z,
xw1, yw1, zw1,
- c, nc, gamu, pow1, nbb, ncb, pfl, cz, d);
+ c, nc, pow1, nbb, ncb, pfl, cz, d);
#endif
float Jpro, Cpro, hpro, Qpro, Mpro, spro;
Jpro = J;
@@ -1509,7 +1509,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
Ciecam02::jch2xyz_ciecam02float(xx, yy, zz,
J, C, h,
xw2, yw2, zw2,
- c2, nc2, gamu, pow1n, nbbj, ncbj, flj, czj, dj, awj);
+ c2, nc2, pow1n, nbbj, ncbj, flj, czj, dj, awj);
float x, y, z;
x = xx * 655.35f;
y = yy * 655.35f;
@@ -1664,7 +1664,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
if (params->defringe.enabled)
if (execsharp) {
lab->deleteLab();
- ImProcFunctions::defringecam(ncie); //defringe adapted to CIECAM
+ defringecam (ncie);//defringe adapted to CIECAM
lab->reallocLab();
}
@@ -1675,7 +1675,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
const bool hotbad = params->dirpyrequalizer.skinprotect != 0.0;
lab->deleteLab();
- ImProcFunctions::badpixcam(ncie, artifact / scale, 5, 2, chrom, hotbad); //enabled remove artifacts for cbDL
+ badpixcam (ncie, artifact / scale, 5, 2, chrom, hotbad); //enabled remove artifacts for cbDL
lab->reallocLab();
}
@@ -1683,7 +1683,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
if (params->colorappearance.badpixsl > 0 && execsharp) {
int mode = params->colorappearance.badpixsl;
lab->deleteLab();
- ImProcFunctions::badpixcam(ncie, 3.0, 10, mode, 0, true); //for bad pixels CIECAM
+ badpixcam (ncie, 3.0, 10, mode, 0, true);//for bad pixels CIECAM
lab->reallocLab();
}
@@ -1692,17 +1692,17 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
buffers[0] = lab->L;
buffers[1] = lab->a;
buffers[2] = lab->b;
- ImProcFunctions::impulsedenoisecam(ncie, buffers); //impulse adapted to CIECAM
+ impulsedenoisecam (ncie, buffers); //impulse adapted to CIECAM
}
if (params->sharpenMicro.enabled)if (execsharp) {
- ImProcFunctions::MLmicrocontrastcam(ncie);
+ MLmicrocontrastcam (ncie);
}
if (params->sharpening.enabled)
if (execsharp) {
float **buffer = lab->L; // We can use the L-buffer from lab as buffer to save some memory
- ImProcFunctions::sharpeningcam(ncie, buffer, showSharpMask); // sharpening adapted to CIECAM
+ sharpeningcam (ncie, buffer, showSharpMask); // sharpening adapted to CIECAM
}
//if(params->dirpyrequalizer.enabled) if(execsharp) {
@@ -1758,7 +1758,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
if (epdEnabled && params->colorappearance.tonecie && algepd) {
lab->deleteLab();
- ImProcFunctions::EPDToneMapCIE(ncie, a_w, c_, width, height, minQ, maxQ, Iterates, scale);
+ EPDToneMapCIE (ncie, a_w, c_, width, height, minQ, maxQ, Iterates, scale );
lab->reallocLab();
}
@@ -1842,7 +1842,7 @@ void ImProcFunctions::ciecam_02float(CieImage* ncie, float adap, int pW, int pwb
Ciecam02::jch2xyz_ciecam02float(xx, yy, zz,
ncie->J_p[i][j], ncie_C_p, ncie->h_p[i][j],
xw2, yw2, zw2,
- c2, nc2, gamu, pow1n, nbbj, ncbj, flj, czj, dj, awj);
+ c2, nc2, pow1n, nbbj, ncbj, flj, czj, dj, awj);
float x = (float)xx * 655.35f;
float y = (float)yy * 655.35f;
float z = (float)zz * 655.35f;
diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc
index d2380494a..28e7ddad3 100644
--- a/rtengine/iplabregions.cc
+++ b/rtengine/iplabregions.cc
@@ -143,8 +143,12 @@ BENCHFUN
}
for (int i = begin_idx; i < end_idx; ++i) {
- rtengine::guidedFilter(guide, abmask[i], abmask[i], max(int(4 / scale + 0.5), 1), 0.001, multiThread);
- rtengine::guidedFilter(guide, Lmask[i], Lmask[i], max(int(25 / scale + 0.5), 1), 0.0001, multiThread);
+ float blur = params->colorToning.labregions[i].maskBlur;
+ blur = blur < 0.f ? -1.f/blur : 1.f + blur;
+ int r1 = max(int(4 / scale * blur + 0.5), 1);
+ int r2 = max(int(25 / scale * blur + 0.5), 1);
+ rtengine::guidedFilter(guide, abmask[i], abmask[i], r1, 0.001, multiThread);
+ rtengine::guidedFilter(guide, Lmask[i], Lmask[i], r2, 0.0001, multiThread);
}
if (show_mask_idx >= 0) {
@@ -166,21 +170,115 @@ BENCHFUN
const auto abcoord =
[](float x) -> float
{
- return 12000.f * SGN(x) * xlog2lin(std::abs(x), 4.f);
+ return /*12000.f **/ SGN(x) * xlog2lin(std::abs(x), 4.f);
};
float abca[n];
float abcb[n];
float rs[n];
- float rl[n];
+ float slope[n];
+ float offset[n];
+ float power[n];
+ int channel[n];
for (int i = 0; i < n; ++i) {
auto &r = params->colorToning.labregions[i];
abca[i] = abcoord(r.a);
abcb[i] = abcoord(r.b);
- rs[i] = 1.f + r.saturation / 100.f;
- rl[i] = 1.f + r.lightness / 500.f;
+ rs[i] = 1.f + r.saturation / (SGN(r.saturation) > 0 ? 50.f : 100.f);
+ slope[i] = r.slope;
+ offset[i] = r.offset;
+ power[i] = r.power;
+ channel[i] = r.channel;
}
+ TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile);
+ TMatrix iws = ICCStore::getInstance()->workingSpaceInverseMatrix(params->icm.workingProfile);
+
+ const auto CDL =
+ [=](float &l, float &a, float &b, float slope, float offset, float power, float saturation) -> void
+ {
+ if (slope != 1.f || offset != 0.f || power != 1.f || saturation != 1.f) {
+ float rgb[3];
+ float x, y, z;
+ Color::Lab2XYZ(l, a, b, x, y, z);
+ Color::xyz2rgb(x, y, z, rgb[0], rgb[1], rgb[2], iws);
+ for (int i = 0; i < 3; ++i) {
+ rgb[i] = (pow_F(max((rgb[i] / 65535.f) * slope + offset, 0.f), power)) * 65535.f;
+ }
+ if (saturation != 1.f) {
+ float Y = Color::rgbLuminance(rgb[0], rgb[1], rgb[2], ws);
+ for (int i = 0; i < 3; ++i) {
+ rgb[i] = max(Y + saturation * (rgb[i] - Y), 0.f);
+ }
+ }
+ Color::rgbxyz(rgb[0], rgb[1], rgb[2], x, y, z, ws);
+ Color::XYZ2Lab(x, y, z, l, a, b);
+ }
+ };
+
+ const auto chan =
+ [=](float prev_l, float prev_a, float prev_b, float &l, float &a, float &b, int channel) -> void
+ {
+ if (channel >= 0) {
+ float prev_rgb[3];
+ float rgb[3];
+ float x, y, z;
+ Color::Lab2XYZ(l, a, b, x, y, z);
+ Color::xyz2rgb(x, y, z, rgb[0], rgb[1], rgb[2], iws);
+ Color::Lab2XYZ(prev_l, prev_a, prev_b, x, y, z);
+ Color::xyz2rgb(x, y, z, prev_rgb[0], prev_rgb[1], prev_rgb[2], iws);
+ prev_rgb[channel] = rgb[channel];
+ Color::rgbxyz(prev_rgb[0], prev_rgb[1], prev_rgb[2], x, y, z, ws);
+ Color::XYZ2Lab(x, y, z, l, a, b);
+ }
+ };
+
+#ifdef __SSE2__
+ const auto CDL_v =
+ [=](vfloat &l, vfloat &a, vfloat &b, float slope, float offset, float power, float saturation) -> void
+ {
+ if (slope != 1.f || offset != 0.f || power != 1.f || saturation != 1.f) {
+ float ll[4];
+ float aa[4];
+ float bb[4];
+ STVFU(ll[0], l);
+ STVFU(aa[0], a);
+ STVFU(bb[0], b);
+ for (int i = 0; i < 4; ++i) {
+ CDL(ll[i], aa[i], bb[i], slope, offset, power, saturation);
+ }
+ l = LVFU(ll[0]);
+ a = LVFU(aa[0]);
+ b = LVFU(bb[0]);
+ }
+ };
+
+ const auto chan_v =
+ [=](vfloat prev_l, vfloat prev_a, vfloat prev_b, vfloat &l, vfloat &a, vfloat &b, int channel) -> void
+ {
+ if (channel >= 0) {
+ float ll[4];
+ float aa[4];
+ float bb[4];
+ STVFU(ll[0], l);
+ STVFU(aa[0], a);
+ STVFU(bb[0], b);
+ float prev_ll[4];
+ float prev_aa[4];
+ float prev_bb[4];
+ STVFU(prev_ll[0], prev_l);
+ STVFU(prev_aa[0], prev_a);
+ STVFU(prev_bb[0], prev_b);
+ for (int i = 0; i < 4; ++i) {
+ chan(prev_ll[i], prev_aa[i], prev_bb[i], ll[i], aa[i], bb[i], channel);
+ }
+ l = LVFU(ll[0]);
+ a = LVFU(aa[0]);
+ b = LVFU(bb[0]);
+ }
+ };
+#endif
+
#ifdef _OPENMP
#pragma omp parallel if (multiThread)
#endif
@@ -188,7 +286,6 @@ BENCHFUN
#ifdef __SSE2__
vfloat c42000v = F2V(42000.f);
vfloat cm42000v = F2V(-42000.f);
- vfloat c32768v = F2V(32768.f);
#endif
#ifdef _OPENMP
#pragma omp for
@@ -203,10 +300,12 @@ BENCHFUN
for (int i = 0; i < n; ++i) {
vfloat blendv = LVFU(abmask[i][y][x]);
- vfloat sv = F2V(rs[i]);
- vfloat a_newv = vclampf(sv * (av + F2V(abca[i])), cm42000v, c42000v);
- vfloat b_newv = vclampf(sv * (bv + F2V(abcb[i])), cm42000v, c42000v);
- vfloat l_newv = vclampf(lv * F2V(rl[i]), ZEROV, c32768v);
+ vfloat l_newv = lv;
+ vfloat a_newv = vclampf(av + lv * F2V(abca[i]), cm42000v, c42000v);
+ vfloat b_newv = vclampf(bv + lv * F2V(abcb[i]), cm42000v, c42000v);
+ CDL_v(l_newv, a_newv, b_newv, slope[i], offset[i], power[i], rs[i]);
+ l_newv = vmaxf(l_newv, ZEROV);
+ chan_v(lv, av, bv, l_newv, a_newv, b_newv, channel[i]);
lv = vintpf(LVFU(Lmask[i][y][x]), l_newv, lv);
av = vintpf(blendv, a_newv, av);
bv = vintpf(blendv, b_newv, bv);
@@ -223,10 +322,12 @@ BENCHFUN
for (int i = 0; i < n; ++i) {
float blend = abmask[i][y][x];
- float s = rs[i];
- float a_new = LIM(s * (a + abca[i]), -42000.f, 42000.f);
- float b_new = LIM(s * (b + abcb[i]), -42000.f, 42000.f);
- float l_new = LIM(l * rl[i], 0.f, 32768.f);
+ float l_new = l;
+ float a_new = LIM(a + l * abca[i], -42000.f, 42000.f);
+ float b_new = LIM(b + l * abcb[i], -42000.f, 42000.f);
+ CDL(l_new, a_new, b_new, slope[i], offset[i], power[i], rs[i]);
+ l_new = max(l_new, 0.f);
+ chan(l, a, b, l_new, a_new, b_new, channel[i]);
l = intp(Lmask[i][y][x], l_new, l);
a = intp(blend, a_new, a);
b = intp(blend, b_new, b);
diff --git a/rtengine/iplocallab.cc b/rtengine/iplocallab.cc
index 738b6eff0..3e2a00d4a 100644
--- a/rtengine/iplocallab.cc
+++ b/rtengine/iplocallab.cc
@@ -824,11 +824,11 @@ void ImProcFunctions::ciecamloc_02float(int sp, LabImage* lab, LabImage* dest)
zw2 = zwd;
float cz, wh, pfl;
- Ciecam02::initcam1float(gamu, yb, pilot, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c);
+ Ciecam02::initcam1float(yb, pilot, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c);
// const float chr = 0.f;
const float pow1 = pow_F(1.64f - pow_F(0.29f, n), 0.73f);
float nj, nbbj, ncbj, czj, awj, flj;
- Ciecam02::initcam2float(gamu, yb2, pilotout, f2, la2, xw2, yw2, zw2, nj, dj, nbbj, ncbj, czj, awj, flj);
+ Ciecam02::initcam2float(yb2, pilotout, f2, la2, xw2, yw2, zw2, nj, dj, nbbj, ncbj, czj, awj, flj);
const float reccmcz = 1.f / (c2 * czj);
const float pow1n = pow_F(1.64f - pow_F(0.29f, nj), 0.73f);
// const float QproFactor = (0.4f / c) * (aw + 4.0f) ;
@@ -896,7 +896,7 @@ void ImProcFunctions::ciecamloc_02float(int sp, LabImage* lab, LabImage* dest)
Q, M, s, aw, fl, wh,
x, y, z,
xw1, yw1, zw1,
- c, nc, gamu, pow1, nbb, ncb, pfl, cz, d);
+ c, nc, pow1, nbb, ncb, pfl, cz, d);
Jbuffer[k] = J;
Cbuffer[k] = C;
hbuffer[k] = h;
@@ -934,7 +934,7 @@ void ImProcFunctions::ciecamloc_02float(int sp, LabImage* lab, LabImage* dest)
Q, M, s, aw, fl, wh,
x, y, z,
xw1, yw1, zw1,
- c, nc, gamu, pow1, nbb, ncb, pfl, cz, d);
+ c, nc, pow1, nbb, ncb, pfl, cz, d);
#endif
float Jpro, Cpro, hpro, Qpro, Mpro, spro;
Jpro = J;
@@ -968,7 +968,7 @@ void ImProcFunctions::ciecamloc_02float(int sp, LabImage* lab, LabImage* dest)
Ciecam02::jch2xyz_ciecam02float(xx, yy, zz,
J, C, h,
xw2, yw2, zw2,
- f2, c2, nc2, gamu, pow1n, nbbj, ncbj, flj, czj, dj, awj);
+ f2, c2, nc2, pow1n, nbbj, ncbj, flj, czj, dj, awj);
float x, y, z;
x = xx * 655.35f;
y = yy * 655.35f;
diff --git a/rtengine/ipresize.cc b/rtengine/ipresize.cc
index f33b8f0c9..2d12417e1 100644
--- a/rtengine/ipresize.cc
+++ b/rtengine/ipresize.cc
@@ -231,7 +231,8 @@ void ImProcFunctions::Lanczos (const LabImage* src, LabImage* dst, float scale)
float* const la = aligned_buffer_la.data;
float* const lb = aligned_buffer_lb.data;
// weights for interpolation in y direction
- float w[support] ALIGNED64 = {};
+ float w[support] ALIGNED64;
+ memset(w, 0, sizeof(w));
// Phase 2: do actual interpolation
#ifdef _OPENMP
diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc
index 414ae2d59..3109a3380 100644
--- a/rtengine/ipwavelet.cc
+++ b/rtengine/ipwavelet.cc
@@ -2772,8 +2772,8 @@ void ImProcFunctions::ContAllL (float *koeLi[12], float *maxkoeLi, bool lipschit
}
} else if (cp.EDmet == 1) { //threshold adjuster
float MaxPCompare = MaxP[level] * SQR (cp.edg_max / 100.f); //100 instead of b_r...case if b_r < 100
- float MaxNCompare = MaxN[level] * SQR (cp.edg_max / 100.f); //always rduce a little edge for near max values
- float edgeSdCompare = (mean[level] + 1.5f * sigma[level]) * SQR (cp.edg_sd / t_r); // 1.5 standard deviation #80% range between mean 50% and 80%
+ float MaxNCompare = MaxN[level] * SQR(cp.edg_max / 100.f); //always reduce a little edge for near max values
+ float edgeSdCompare = (mean[level] + 1.5f * sigma[level]) * SQR(cp.edg_sd / t_r); // 1.5 standard deviation #80% range between mean 50% and 80%
float edgeMeanCompare = mean[level] * SQR (cp.edg_mean / t_l);
float edgeLowCompare = (5.f + SQR (cp.edg_low));
float edgeMeanFactor = cbrt (cp.edg_mean / t_l);
@@ -2817,7 +2817,7 @@ void ImProcFunctions::ContAllL (float *koeLi[12], float *maxkoeLi, bool lipschit
edge = edgePrecalc;
}
- //algorithm that take into account local contrast
+ //algorithm that takes into account local contrast
// I use a thresholdadjuster with
// Bottom left ==> minimal low value for local contrast (not 0, but 5...we can change)
// 0 10*10 35*35 100*100 substantially correspond to the true distribution of low value, mean, standard-deviation and max (ed 5, 50, 400, 4000
@@ -2865,7 +2865,7 @@ void ImProcFunctions::ContAllL (float *koeLi[12], float *maxkoeLi, bool lipschit
if (edge < 1.f) {
edge = 1.f;
}
- }//mofify effect if sd change
+ }//modify effect if sd change
if (fabs (WavCoeffs_L[dir][k]) < edgeMeanCompare) {
edge *= edgeMeanFactor;
diff --git a/rtengine/klt/trackFeatures.cc b/rtengine/klt/trackFeatures.cc
index 474d0f5f5..a99225543 100644
--- a/rtengine/klt/trackFeatures.cc
+++ b/rtengine/klt/trackFeatures.cc
@@ -23,14 +23,14 @@ typedef float *_FloatWindow;
/*********************************************************************
* _interpolate
- *
- * Given a point (x,y) in an image, computes the bilinear interpolated
- * gray-level value of the point in the image.
+ *
+ * Given a point (x,y) in an image, computes the bilinear interpolated
+ * gray-level value of the point in the image.
*/
static float _interpolate(
- float x,
- float y,
+ float x,
+ float y,
_KLT_FloatImage img)
{
int xt = (int) x; /* coordinates of top-left corner */
@@ -61,7 +61,7 @@ static float _interpolate(
* _computeIntensityDifference
*
* Given two images and the window center in both images,
- * aligns the images wrt the window and computes the difference
+ * aligns the images wrt the window and computes the difference
* between the two overlaid images.
*/
@@ -91,7 +91,7 @@ static void _computeIntensityDifference(
* _computeGradientSum
*
* Given two gradients and the window center in both images,
- * aligns the gradients wrt the window and computes the sum of the two
+ * aligns the gradients wrt the window and computes the sum of the two
* overlaid gradients.
*/
@@ -126,7 +126,7 @@ static void _computeGradientSum(
* _computeIntensityDifferenceLightingInsensitive
*
* Given two images and the window center in both images,
- * aligns the images wrt the window and computes the difference
+ * aligns the images wrt the window and computes the difference
* between the two overlaid images; normalizes for overall gain and bias.
*/
@@ -141,7 +141,7 @@ static void _computeIntensityDifferenceLightingInsensitive(
int hw = width/2, hh = height/2;
float g1, g2, sum1_squared = 0, sum2_squared = 0;
int i, j;
-
+
float sum1 = 0, sum2 = 0;
float mean1, mean2,alpha,belta;
/* Compute values */
@@ -165,7 +165,7 @@ static void _computeIntensityDifferenceLightingInsensitive(
g1 = _interpolate(x1+i, y1+j, img1);
g2 = _interpolate(x2+i, y2+j, img2);
*imgdiff++ = g1- g2*alpha-belta;
- }
+ }
}
@@ -173,7 +173,7 @@ static void _computeIntensityDifferenceLightingInsensitive(
* _computeGradientSumLightingInsensitive
*
* Given two gradients and the window center in both images,
- * aligns the gradients wrt the window and computes the sum of the two
+ * aligns the gradients wrt the window and computes the sum of the two
* overlaid gradients; normalizes for overall gain and bias.
*/
@@ -184,7 +184,7 @@ static void _computeGradientSumLightingInsensitive(
_KLT_FloatImage grady2,
_KLT_FloatImage img1, /* images */
_KLT_FloatImage img2,
-
+
float x1, float y1, /* center of window in 1st img */
float x2, float y2, /* center of window in 2nd img */
int width, int height, /* size of window */
@@ -194,7 +194,7 @@ static void _computeGradientSumLightingInsensitive(
int hw = width/2, hh = height/2;
float g1, g2, sum1_squared = 0, sum2_squared = 0;
int i, j;
-
+
float mean1, mean2, alpha;
for (j = -hh ; j <= hh ; j++)
for (i = -hw ; i <= hw ; i++) {
@@ -205,7 +205,7 @@ static void _computeGradientSumLightingInsensitive(
mean1 = sum1_squared/(width*height);
mean2 = sum2_squared/(width*height);
alpha = (float) sqrt(mean1/mean2);
-
+
/* Compute values */
for (j = -hh ; j <= hh ; j++)
for (i = -hw ; i <= hw ; i++) {
@@ -215,7 +215,7 @@ static void _computeGradientSumLightingInsensitive(
g1 = _interpolate(x1+i, y1+j, grady1);
g2 = _interpolate(x2+i, y2+j, grady2);
*grady++ = g1+ g2*alpha;
- }
+ }
}
/*********************************************************************
@@ -229,8 +229,8 @@ static void _compute2by2GradientMatrix(
int width, /* size of window */
int height,
float *gxx, /* return values */
- float *gxy,
- float *gyy)
+ float *gxy,
+ float *gyy)
{
float gx, gy;
@@ -246,8 +246,8 @@ static void _compute2by2GradientMatrix(
*gyy += gy*gy;
}
}
-
-
+
+
/*********************************************************************
* _compute2by1ErrorVector
*
@@ -267,7 +267,7 @@ static void _compute2by1ErrorVector(
int i;
/* Compute values */
- *ex = 0; *ey = 0;
+ *ex = 0; *ey = 0;
for (i = 0 ; i < width * height ; i++) {
diff = *imgdiff++;
*ex += diff * (*gradx++);
@@ -297,7 +297,7 @@ static int _solveEquation(
{
float det = gxx*gyy - gxy*gxy;
-
+
if (det < small) return KLT_SMALL_DET;
*dx = (gyy*ex - gxy*ey)/det;
@@ -309,7 +309,7 @@ static int _solveEquation(
/*********************************************************************
* _allocateFloatWindow
*/
-
+
static _FloatWindow _allocateFloatWindow(
int width,
int height)
@@ -347,7 +347,7 @@ static void _printFloatWindow(
}
}
*/
-
+
/*********************************************************************
* _sumAbsFloatWindow
@@ -385,10 +385,10 @@ static int _trackFeature(
float y1,
float *x2, /* starting location of search in second image */
float *y2,
- _KLT_FloatImage img1,
+ _KLT_FloatImage img1,
_KLT_FloatImage gradx1,
_KLT_FloatImage grady1,
- _KLT_FloatImage img2,
+ _KLT_FloatImage img2,
_KLT_FloatImage gradx2,
_KLT_FloatImage grady2,
int width, /* size of window */
@@ -410,7 +410,7 @@ static int _trackFeature(
int nr = img1->nrows;
float one_plus_eps = 1.001f; /* To prevent rounding errors */
-
+
/* Allocate memory for windows */
imgdiff = _allocateFloatWindow(width, height);
gradx = _allocateFloatWindow(width, height);
@@ -430,24 +430,24 @@ static int _trackFeature(
/* Compute gradient and difference windows */
if (lighting_insensitive) {
- _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2,
+ _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2,
width, height, imgdiff);
- _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2,
+ _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2,
img1, img2, x1, y1, *x2, *y2, width, height, gradx, grady);
} else {
- _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2,
+ _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2,
width, height, imgdiff);
- _computeGradientSum(gradx1, grady1, gradx2, grady2,
+ _computeGradientSum(gradx1, grady1, gradx2, grady2,
x1, y1, *x2, *y2, width, height, gradx, grady);
}
-
+
/* Use these windows to construct matrices */
- _compute2by2GradientMatrix(gradx, grady, width, height,
+ _compute2by2GradientMatrix(gradx, grady, width, height,
&gxx, &gxy, &gyy);
_compute2by1ErrorVector(imgdiff, gradx, grady, width, height, step_factor,
&ex, &ey);
-
+
/* Using matrices, solve equation for new displacement */
status = _solveEquation(gxx, gxy, gyy, ex, ey, small, &dx, &dy);
if (status == KLT_SMALL_DET) break;
@@ -459,19 +459,19 @@ static int _trackFeature(
} while ((fabs(dx)>=th || fabs(dy)>=th) && iteration < max_iterations);
/* Check whether window is out of bounds */
- if (*x2-hw < 0.0f || nc-(*x2+hw) < one_plus_eps ||
+ if (*x2-hw < 0.0f || nc-(*x2+hw) < one_plus_eps ||
*y2-hh < 0.0f || nr-(*y2+hh) < one_plus_eps)
status = KLT_OOB;
/* Check whether residue is too large */
if (status == KLT_TRACKED) {
if (lighting_insensitive)
- _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2,
+ _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2,
width, height, imgdiff);
else
- _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2,
+ _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2,
width, height, imgdiff);
- if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue)
+ if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue)
status = KLT_LARGE_RESIDUE;
}
@@ -505,25 +505,25 @@ static KLT_BOOL _outOfBounds(
-/**********************************************************************
+/**********************************************************************
* CONSISTENCY CHECK OF FEATURES BY AFFINE MAPPING (BEGIN)
-*
-* Created by: Thorsten Thormaehlen (University of Hannover) June 2004
+*
+* Created by: Thorsten Thormaehlen (University of Hannover) June 2004
* thormae@tnt.uni-hannover.de
-*
+*
* Permission is granted to any individual or institution to use, copy, modify,
-* and distribute this part of the software, provided that this complete authorship
-* and permission notice is maintained, intact, in all copies.
+* and distribute this part of the software, provided that this complete authorship
+* and permission notice is maintained, intact, in all copies.
*
* This software is provided "as is" without express or implied warranty.
*
*
* The following static functions are helpers for the affine mapping.
-* They all start with "_am".
+* They all start with "_am".
* There are also small changes in other files for the
* affine mapping these are all marked by "for affine mapping"
-*
-* Thanks to Kevin Koeser (koeser@mip.informatik.uni-kiel.de) for fixing a bug
+*
+* Thanks to Kevin Koeser (koeser@mip.informatik.uni-kiel.de) for fixing a bug
*/
#define SWAP_ME(X,Y) {temp=(X);(X)=(Y);(Y)=temp;}
@@ -613,7 +613,7 @@ static int _am_gauss_jordan_elimination(float **a, int n, float **b, int m)
/*********************************************************************
* _am_getGradientWinAffine
*
- * aligns the gradients with the affine transformed window
+ * aligns the gradients with the affine transformed window
*/
static void _am_getGradientWinAffine(
@@ -628,7 +628,7 @@ static void _am_getGradientWinAffine(
int hw = width/2, hh = height/2;
int i, j;
float mi, mj;
-
+
/* Compute values */
for (j = -hh ; j <= hh ; j++)
for (i = -hw ; i <= hw ; i++) {
@@ -637,19 +637,19 @@ static void _am_getGradientWinAffine(
*out_gradx++ = _interpolate(x+mi, y+mj, in_gradx);
*out_grady++ = _interpolate(x+mi, y+mj, in_grady);
}
-
+
}
///*********************************************************************
// * _computeAffineMappedImage
// * used only for DEBUG output
-// *
+// *
//*/
//
//static void _am_computeAffineMappedImage(
// _KLT_FloatImage img, /* images */
// float x, float y, /* center of window */
-// float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */
+// float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */
// int width, int height, /* size of window */
// _FloatWindow imgdiff) /* output */
//{
@@ -679,14 +679,14 @@ static void _am_getSubFloatImage(
int hw = window->ncols/2, hh = window->nrows/2;
int x0 = (int) x;
int y0 = (int) y;
- float * windata = window->data;
+ float * windata = window->data;
int offset;
int i, j;
assert(x0 - hw >= 0);
assert(y0 - hh >= 0);
assert(x0 + hw <= img->ncols);
- assert(y0 + hh <= img->nrows);
+ assert(y0 + hh <= img->nrows);
/* copy values */
for (j = -hh ; j <= hh ; j++)
@@ -700,10 +700,10 @@ static void _am_getSubFloatImage(
* _am_computeIntensityDifferenceAffine
*
* Given two images and the window center in both images,
- * aligns the images with the window and computes the difference
+ * aligns the images with the window and computes the difference
* between the two overlaid images using the affine mapping.
* A = [ Axx Axy]
- * [ Ayx Ayy]
+ * [ Ayx Ayy]
*/
static void _am_computeIntensityDifferenceAffine(
@@ -711,7 +711,7 @@ static void _am_computeIntensityDifferenceAffine(
_KLT_FloatImage img2,
float x1, float y1, /* center of window in 1st img */
float x2, float y2, /* center of window in 2nd img */
- float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */
+ float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */
int width, int height, /* size of window */
_FloatWindow imgdiff) /* output */
{
@@ -746,15 +746,15 @@ static void _am_compute6by6GradientMatrix(
int hw = width/2, hh = height/2;
int i, j;
float gx, gy, gxx, gxy, gyy, x, y, xx, xy, yy;
-
-
- /* Set values to zero */
+
+
+ /* Set values to zero */
for (j = 0 ; j < 6 ; j++) {
for (i = j ; i < 6 ; i++) {
T[j][i] = 0.0;
}
}
-
+
for (j = -hh ; j <= hh ; j++) {
for (i = -hw ; i <= hw ; i++) {
gx = *gradx++;
@@ -762,41 +762,41 @@ static void _am_compute6by6GradientMatrix(
gxx = gx * gx;
gxy = gx * gy;
gyy = gy * gy;
- x = (float) i;
- y = (float) j;
+ x = (float) i;
+ y = (float) j;
xx = x * x;
xy = x * y;
yy = y * y;
-
- T[0][0] += xx * gxx;
+
+ T[0][0] += xx * gxx;
T[0][1] += xx * gxy;
T[0][2] += xy * gxx;
T[0][3] += xy * gxy;
T[0][4] += x * gxx;
T[0][5] += x * gxy;
-
+
T[1][1] += xx * gyy;
T[1][2] += xy * gxy;
T[1][3] += xy * gyy;
T[1][4] += x * gxy;
T[1][5] += x * gyy;
-
+
T[2][2] += yy * gxx;
T[2][3] += yy * gxy;
T[2][4] += y * gxx;
T[2][5] += y * gxy;
-
+
T[3][3] += yy * gyy;
T[3][4] += y * gxy;
- T[3][5] += y * gyy;
+ T[3][5] += y * gyy;
- T[4][4] += gxx;
+ T[4][4] += gxx;
T[4][5] += gxy;
-
- T[5][5] += gyy;
+
+ T[5][5] += gyy;
}
}
-
+
for (j = 0 ; j < 5 ; j++) {
for (i = j+1 ; i < 6 ; i++) {
T[i][j] = T[j][i];
@@ -824,9 +824,9 @@ static void _am_compute6by1ErrorVector(
int i, j;
float diff, diffgradx, diffgrady;
- /* Set values to zero */
- for(i = 0; i < 6; i++) e[i][0] = 0.0;
-
+ /* Set values to zero */
+ for(i = 0; i < 6; i++) e[i][0] = 0.0;
+
/* Compute values */
for (j = -hh ; j <= hh ; j++) {
for (i = -hw ; i <= hw ; i++) {
@@ -835,15 +835,15 @@ static void _am_compute6by1ErrorVector(
diffgrady = diff * (*grady++);
e[0][0] += diffgradx * i;
e[1][0] += diffgrady * i;
- e[2][0] += diffgradx * j;
- e[3][0] += diffgrady * j;
+ e[2][0] += diffgradx * j;
+ e[3][0] += diffgrady * j;
e[4][0] += diffgradx;
- e[5][0] += diffgrady;
+ e[5][0] += diffgrady;
}
}
-
+
for(i = 0; i < 6; i++) e[i][0] *= 0.5;
-
+
}
@@ -862,37 +862,37 @@ static void _am_compute4by4GradientMatrix(
int hw = width/2, hh = height/2;
int i, j;
float gx, gy, x, y;
-
-
- /* Set values to zero */
+
+
+ /* Set values to zero */
for (j = 0 ; j < 4 ; j++) {
for (i = 0 ; i < 4 ; i++) {
T[j][i] = 0.0;
}
}
-
+
for (j = -hh ; j <= hh ; j++) {
for (i = -hw ; i <= hw ; i++) {
gx = *gradx++;
gy = *grady++;
- x = (float) i;
- y = (float) j;
+ x = (float) i;
+ y = (float) j;
T[0][0] += (x*gx+y*gy) * (x*gx+y*gy);
T[0][1] += (x*gx+y*gy)*(x*gy-y*gx);
T[0][2] += (x*gx+y*gy)*gx;
T[0][3] += (x*gx+y*gy)*gy;
-
+
T[1][1] += (x*gy-y*gx) * (x*gy-y*gx);
T[1][2] += (x*gy-y*gx)*gx;
T[1][3] += (x*gy-y*gx)*gy;
-
+
T[2][2] += gx*gx;
T[2][3] += gx*gy;
-
+
T[3][3] += gy*gy;
}
}
-
+
for (j = 0 ; j < 3 ; j++) {
for (i = j+1 ; i < 4 ; i++) {
T[i][j] = T[j][i];
@@ -918,9 +918,9 @@ static void _am_compute4by1ErrorVector(
int i, j;
float diff, diffgradx, diffgrady;
- /* Set values to zero */
- for(i = 0; i < 4; i++) e[i][0] = 0.0;
-
+ /* Set values to zero */
+ for(i = 0; i < 4; i++) e[i][0] = 0.0;
+
/* Compute values */
for (j = -hh ; j <= hh ; j++) {
for (i = -hw ; i <= hw ; i++) {
@@ -933,9 +933,9 @@ static void _am_compute4by1ErrorVector(
e[3][0] += diffgrady;
}
}
-
+
for(i = 0; i < 4; i++) e[i][0] *= 0.5;
-
+
}
@@ -950,7 +950,7 @@ static void _am_compute4by1ErrorVector(
* KLT_TRACKED otherwise.
*/
-/* if you enalbe the DEBUG_AFFINE_MAPPING make sure you have created a directory "./debug" */
+/* if you enable the DEBUG_AFFINE_MAPPING make sure you have created a directory "./debug" */
/* #define DEBUG_AFFINE_MAPPING */
#ifdef DEBUG_AFFINE_MAPPING
@@ -963,10 +963,10 @@ static int _am_trackFeatureAffine(
float y1,
float *x2, /* starting location of search in second image */
float *y2,
- _KLT_FloatImage img1,
+ _KLT_FloatImage img1,
_KLT_FloatImage gradx1,
_KLT_FloatImage grady1,
- _KLT_FloatImage img2,
+ _KLT_FloatImage img2,
_KLT_FloatImage gradx2,
_KLT_FloatImage grady2,
int width, /* size of window */
@@ -980,7 +980,7 @@ static int _am_trackFeatureAffine(
int lighting_insensitive, /* whether to normalize for gain and bias */
int affine_map, /* whether to evaluates the consistency of features with affine mapping */
float mdd, /* difference between the displacements */
- float *Axx, float *Ayx,
+ float *Axx, float *Ayx,
float *Axy, float *Ayy) /* used affine mapping */
{
@@ -996,7 +996,7 @@ static int _am_trackFeatureAffine(
int nc2 = img2->ncols;
int nr2 = img2->nrows;
float **a;
- float **T;
+ float **T;
float one_plus_eps = 1.001f; /* To prevent rounding errors */
float old_x2 = *x2;
float old_y2 = *y2;
@@ -1007,7 +1007,7 @@ static int _am_trackFeatureAffine(
_KLT_FloatImage aff_diff_win = _KLTCreateFloatImage(width,height);
printf("starting location x2=%f y2=%f\n", *x2, *y2);
#endif
-
+
/* Allocate memory for windows */
imgdiff = _allocateFloatWindow(width, height);
gradx = _allocateFloatWindow(width, height);
@@ -1019,7 +1019,7 @@ static int _am_trackFeatureAffine(
do {
if(!affine_map) {
/* pure translation tracker */
-
+
/* If out of bounds, exit loop */
if ( x1-hw < 0.0f || nc1-( x1+hw) < one_plus_eps ||
*x2-hw < 0.0f || nc2-(*x2+hw) < one_plus_eps ||
@@ -1028,47 +1028,47 @@ static int _am_trackFeatureAffine(
status = KLT_OOB;
break;
}
-
+
/* Compute gradient and difference windows */
if (lighting_insensitive) {
- _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2,
+ _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2,
width, height, imgdiff);
- _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2,
+ _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2,
img1, img2, x1, y1, *x2, *y2, width, height, gradx, grady);
} else {
- _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2,
+ _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2,
width, height, imgdiff);
- _computeGradientSum(gradx1, grady1, gradx2, grady2,
+ _computeGradientSum(gradx1, grady1, gradx2, grady2,
x1, y1, *x2, *y2, width, height, gradx, grady);
}
-
-#ifdef DEBUG_AFFINE_MAPPING
+
+#ifdef DEBUG_AFFINE_MAPPING
aff_diff_win->data = imgdiff;
sprintf(fname, "./debug/kltimg_trans_diff_win%03d.%03d.pgm", glob_index, counter);
printf("%s\n", fname);
_KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0);
printf("iter = %d translation tracker res: %f\n", iteration, _sumAbsFloatWindow(imgdiff, width, height)/(width*height));
#endif
-
+
/* Use these windows to construct matrices */
- _compute2by2GradientMatrix(gradx, grady, width, height,
+ _compute2by2GradientMatrix(gradx, grady, width, height,
&gxx, &gxy, &gyy);
_compute2by1ErrorVector(imgdiff, gradx, grady, width, height, step_factor,
&ex, &ey);
-
+
/* Using matrices, solve equation for new displacement */
status = _solveEquation(gxx, gxy, gyy, ex, ey, small, &dx, &dy);
convergence = (fabs(dx) < th && fabs(dy) < th);
-
+
*x2 += dx;
*y2 += dy;
-
+
}else{
/* affine tracker */
-
+
float ul_x = *Axx * (-hw) + *Axy * hh + *x2; /* upper left corner */
- float ul_y = *Ayx * (-hw) + *Ayy * hh + *y2;
+ float ul_y = *Ayx * (-hw) + *Ayy * hh + *y2;
float ll_x = *Axx * (-hw) + *Axy * (-hh) + *x2; /* lower left corner */
float ll_y = *Ayx * (-hw) + *Ayy * (-hh) + *y2;
float ur_x = *Axx * hw + *Axy * hh + *x2; /* upper right corner */
@@ -1098,25 +1098,25 @@ static int _am_trackFeatureAffine(
sprintf(fname, "./debug/kltimg_aff_diff_win%03d.%03d_1.pgm", glob_index, counter);
printf("%s\n", fname);
_KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0);
-
+
_am_computeAffineMappedImage(img2, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy, width, height, imgdiff);
aff_diff_win->data = imgdiff;
sprintf(fname, "./debug/kltimg_aff_diff_win%03d.%03d_2.pgm", glob_index, counter);
printf("%s\n", fname);
_KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0);
#endif
-
+
_am_computeIntensityDifferenceAffine(img1, img2, x1, y1, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy,
width, height, imgdiff);
-#ifdef DEBUG_AFFINE_MAPPING
+#ifdef DEBUG_AFFINE_MAPPING
aff_diff_win->data = imgdiff;
sprintf(fname, "./debug/kltimg_aff_diff_win%03d.%03d_3.pgm", glob_index,counter);
printf("%s\n", fname);
_KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0);
-
+
printf("iter = %d affine tracker res: %f\n", iteration, _sumAbsFloatWindow(imgdiff, width, height)/(width*height));
-#endif
-
+#endif
+
_am_getGradientWinAffine(gradx2, grady2, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy,
width, height, gradx, grady);
@@ -1124,24 +1124,24 @@ static int _am_trackFeatureAffine(
case 1:
_am_compute4by1ErrorVector(imgdiff, gradx, grady, width, height, a);
_am_compute4by4GradientMatrix(gradx, grady, width, height, T);
-
+
status = _am_gauss_jordan_elimination(T,4,a,1);
-
+
*Axx += a[0][0];
*Ayx += a[1][0];
*Ayy = *Axx;
*Axy = -(*Ayx);
-
+
dx = a[2][0];
dy = a[3][0];
-
+
break;
case 2:
_am_compute6by1ErrorVector(imgdiff, gradx, grady, width, height, a);
_am_compute6by6GradientMatrix(gradx, grady, width, height, T);
-
+
status = _am_gauss_jordan_elimination(T,6,a,1);
-
+
*Axx += a[0][0];
*Ayx += a[1][0];
*Axy += a[2][0];
@@ -1149,30 +1149,30 @@ static int _am_trackFeatureAffine(
dx = a[4][0];
dy = a[5][0];
-
+
break;
}
-
+
*x2 += dx;
*y2 += dy;
-
+
/* old upper left corner - new upper left corner */
- ul_x -= *Axx * (-hw) + *Axy * hh + *x2;
- ul_y -= *Ayx * (-hw) + *Ayy * hh + *y2;
+ ul_x -= *Axx * (-hw) + *Axy * hh + *x2;
+ ul_y -= *Ayx * (-hw) + *Ayy * hh + *y2;
/* old lower left corner - new lower left corner */
- ll_x -= *Axx * (-hw) + *Axy * (-hh) + *x2;
+ ll_x -= *Axx * (-hw) + *Axy * (-hh) + *x2;
ll_y -= *Ayx * (-hw) + *Ayy * (-hh) + *y2;
/* old upper right corner - new upper right corner */
- ur_x -= *Axx * hw + *Axy * hh + *x2;
+ ur_x -= *Axx * hw + *Axy * hh + *x2;
ur_y -= *Ayx * hw + *Ayy * hh + *y2;
/* old lower right corner - new lower right corner */
- lr_x -= *Axx * hw + *Axy * (-hh) + *x2;
+ lr_x -= *Axx * hw + *Axy * (-hh) + *x2;
lr_y -= *Ayx * hw + *Ayy * (-hh) + *y2;
-#ifdef DEBUG_AFFINE_MAPPING
+#ifdef DEBUG_AFFINE_MAPPING
printf ("iter = %d, ul_x=%f ul_y=%f ll_x=%f ll_y=%f ur_x=%f ur_y=%f lr_x=%f lr_y=%f \n",
iteration, ul_x, ul_y, ll_x, ll_y, ur_x, ur_y, lr_x, lr_y);
-#endif
+#endif
convergence = (fabs(dx) < th && fabs(dy) < th &&
fabs(ul_x) < th_aff && fabs(ul_y) < th_aff &&
@@ -1180,19 +1180,19 @@ static int _am_trackFeatureAffine(
fabs(ur_x) < th_aff && fabs(ur_y) < th_aff &&
fabs(lr_x) < th_aff && fabs(lr_y) < th_aff);
}
-
+
if (status == KLT_SMALL_DET) break;
iteration++;
-#ifdef DEBUG_AFFINE_MAPPING
+#ifdef DEBUG_AFFINE_MAPPING
printf ("iter = %d, x1=%f, y1=%f, x2=%f, y2=%f, Axx=%f, Ayx=%f , Axy=%f, Ayy=%f \n",iteration, x1, y1, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy);
-#endif
- } while ( !convergence && iteration < max_iterations);
+#endif
+ } while ( !convergence && iteration < max_iterations);
/*} while ( (fabs(dx)>=th || fabs(dy)>=th || (affine_map && iteration < 8) ) && iteration < max_iterations); */
_am_free_matrix(T);
_am_free_matrix(a);
/* Check whether window is out of bounds */
- if (*x2-hw < 0.0f || nc2-(*x2+hw) < one_plus_eps ||
+ if (*x2-hw < 0.0f || nc2-(*x2+hw) < one_plus_eps ||
*y2-hh < 0.0f || nr2-(*y2+hh) < one_plus_eps)
status = KLT_OOB;
@@ -1203,7 +1203,7 @@ static int _am_trackFeatureAffine(
/* Check whether residue is too large */
if (status == KLT_TRACKED) {
if(!affine_map){
- _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2,
+ _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2,
width, height, imgdiff);
}else{
_am_computeIntensityDifferenceAffine(img1, img2, x1, y1, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy,
@@ -1211,8 +1211,8 @@ static int _am_trackFeatureAffine(
}
#ifdef DEBUG_AFFINE_MAPPING
printf("iter = %d final_res = %f\n", iteration, _sumAbsFloatWindow(imgdiff, width, height)/(width*height));
-#endif
- if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue)
+#endif
+ if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue)
status = KLT_LARGE_RESIDUE;
}
@@ -1222,8 +1222,8 @@ static int _am_trackFeatureAffine(
#ifdef DEBUG_AFFINE_MAPPING
printf("iter = %d status=%d\n", iteration, status);
_KLTFreeFloatImage( aff_diff_win );
-#endif
-
+#endif
+
/* Return appropriate value */
return status;
}
@@ -1313,7 +1313,7 @@ void KLTTrackFeatures(
pyramid1_gradx = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels);
pyramid1_grady = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels);
for (i = 0 ; i < tc->nPyramidLevels ; i++)
- _KLTComputeGradients(pyramid1->img[i], tc->grad_sigma,
+ _KLTComputeGradients(pyramid1->img[i], tc->grad_sigma,
pyramid1_gradx->img[i],
pyramid1_grady->img[i]);
}
@@ -1327,7 +1327,7 @@ void KLTTrackFeatures(
pyramid2_gradx = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels);
pyramid2_grady = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels);
for (i = 0 ; i < tc->nPyramidLevels ; i++)
- _KLTComputeGradients(pyramid2->img[i], tc->grad_sigma,
+ _KLTComputeGradients(pyramid2->img[i], tc->grad_sigma,
pyramid2_gradx->img[i],
pyramid2_grady->img[i]);
@@ -1372,11 +1372,11 @@ void KLTTrackFeatures(
xloc *= subsampling; yloc *= subsampling;
xlocout *= subsampling; ylocout *= subsampling;
- val = _trackFeature(xloc, yloc,
+ val = _trackFeature(xloc, yloc,
&xlocout, &ylocout,
- pyramid1->img[r],
- pyramid1_gradx->img[r], pyramid1_grady->img[r],
- pyramid2->img[r],
+ pyramid1->img[r],
+ pyramid1_gradx->img[r], pyramid1_grady->img[r],
+ pyramid2->img[r],
pyramid2_gradx->img[r], pyramid2_grady->img[r],
tc->window_width, tc->window_height,
tc->step_factor,
@@ -1449,7 +1449,7 @@ void KLTTrackFeatures(
if (tc->affineConsistencyCheck >= 0 && val == KLT_TRACKED) { /*for affine mapping*/
int border = 2; /* add border for interpolation */
-#ifdef DEBUG_AFFINE_MAPPING
+#ifdef DEBUG_AFFINE_MAPPING
glob_index = indx;
#endif
@@ -1467,10 +1467,10 @@ void KLTTrackFeatures(
/* affine tracking */
val = _am_trackFeatureAffine(featurelist->feature[indx]->aff_x, featurelist->feature[indx]->aff_y,
&xlocout, &ylocout,
- featurelist->feature[indx]->aff_img,
- featurelist->feature[indx]->aff_img_gradx,
+ featurelist->feature[indx]->aff_img,
+ featurelist->feature[indx]->aff_img_gradx,
featurelist->feature[indx]->aff_img_grady,
- pyramid2->img[0],
+ pyramid2->img[0],
pyramid2_gradx->img[0], pyramid2_grady->img[0],
tc->affine_window_width, tc->affine_window_height,
tc->step_factor,
@@ -1478,14 +1478,14 @@ void KLTTrackFeatures(
tc->min_determinant,
tc->min_displacement,
tc->affine_min_displacement,
- tc->affine_max_residue,
+ tc->affine_max_residue,
tc->lighting_insensitive,
tc->affineConsistencyCheck,
tc->affine_max_displacement_differ,
&featurelist->feature[indx]->aff_Axx,
&featurelist->feature[indx]->aff_Ayx,
&featurelist->feature[indx]->aff_Axy,
- &featurelist->feature[indx]->aff_Ayy
+ &featurelist->feature[indx]->aff_Ayy
);
featurelist->feature[indx]->val = val;
if(val != KLT_TRACKED){
@@ -1538,5 +1538,3 @@ void KLTTrackFeatures(
}
}
-
-
diff --git a/rtengine/labimage.cc b/rtengine/labimage.cc
index a6c369d3d..ae0a8e1f6 100644
--- a/rtengine/labimage.cc
+++ b/rtengine/labimage.cc
@@ -101,7 +101,7 @@ void LabImage::deleteLab()
void LabImage::reallocLab()
{
allocLab(W, H);
-};
+}
void LabImage::clear(bool multiThread) {
#ifdef _OPENMP
diff --git a/rtengine/lcp.h b/rtengine/lcp.h
index d588ac381..2d9707907 100644
--- a/rtengine/lcp.h
+++ b/rtengine/lcp.h
@@ -153,7 +153,7 @@ public:
Glib::ustring getDefaultCommonDirectory() const;
private:
- LCPStore(unsigned int _cache_size = 32);
+ explicit LCPStore(unsigned int _cache_size = 32);
// Maps file name to profile as cache
mutable Cache> cache;
@@ -190,11 +190,11 @@ public:
);
- void correctDistortion(double &x, double &y, int cx, int cy, double scale) const; // MUST be the first stage
- bool isCACorrectionAvailable() const;
- void correctCA(double& x, double& y, int cx, int cy, int channel) const;
- void processVignetteLine(int width, int y, float* line) const;
- void processVignetteLine3Channels(int width, int y, float* line) const;
+ void correctDistortion(double &x, double &y, int cx, int cy, double scale) const override; // MUST be the first stage
+ bool isCACorrectionAvailable() const override;
+ void correctCA(double& x, double& y, int cx, int cy, int channel) const override;
+ void processVignetteLine(int width, int y, float* line) const override;
+ void processVignetteLine3Channels(int width, int y, float* line) const override;
private:
bool enableCA; // is the mapper capable if CA correction?
diff --git a/rtengine/pdaflinesfilter.cc b/rtengine/pdaflinesfilter.cc
index 86c6f2d4c..0c5b2d786 100644
--- a/rtengine/pdaflinesfilter.cc
+++ b/rtengine/pdaflinesfilter.cc
@@ -62,7 +62,7 @@ public:
++r[col / TILE_SIZE];
}
- float operator()(int row, int col) const
+ float operator()(int row, int col) const override
{
int y = row / TILE_SIZE;
int x = col / TILE_SIZE;
@@ -136,7 +136,7 @@ public:
offset_(offset)
{}
- float operator()(int row) const
+ float operator()(int row) const override
{
static constexpr float BORDER[] = { 1.f, 1.f, 0.8f, 0.5f, 0.2f };
static constexpr int BORDER_WIDTH = sizeof(BORDER)/sizeof(float) - 1;
diff --git a/rtengine/pdaflinesfilter.h b/rtengine/pdaflinesfilter.h
index 9837db5b6..b1f7bf650 100644
--- a/rtengine/pdaflinesfilter.h
+++ b/rtengine/pdaflinesfilter.h
@@ -27,7 +27,7 @@ namespace rtengine {
class PDAFLinesFilter {
public:
- PDAFLinesFilter(RawImage *ri);
+ explicit PDAFLinesFilter(RawImage *ri);
~PDAFLinesFilter();
int mark(array2D &rawData, PixelsMap &bpMap);
diff --git a/rtengine/processingjob.h b/rtengine/processingjob.h
index c7f49192e..026bd4924 100644
--- a/rtengine/processingjob.h
+++ b/rtengine/processingjob.h
@@ -43,14 +43,14 @@ public:
iImage->increaseRef();
}
- ~ProcessingJobImpl ()
+ ~ProcessingJobImpl () override
{
if (initialImage) {
initialImage->decreaseRef();
}
}
- bool fastPipeline() const { return fast; }
+ bool fastPipeline() const override { return fast; }
};
}
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index 18e034f2f..e28aab84d 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -611,7 +611,9 @@ ColorToningParams::LabCorrectionRegion::LabCorrectionRegion():
a(0),
b(0),
saturation(0),
- lightness(0),
+ slope(1),
+ offset(0),
+ power(1),
hueMask{
FCT_MinMaxCPoints,
0.166666667,
@@ -644,7 +646,9 @@ ColorToningParams::LabCorrectionRegion::LabCorrectionRegion():
1.,
0.35,
0.35
- }
+ },
+ maskBlur(0),
+ channel(ColorToningParams::LabCorrectionRegion::CHAN_ALL)
{
}
@@ -654,10 +658,14 @@ bool ColorToningParams::LabCorrectionRegion::operator==(const LabCorrectionRegio
return a == other.a
&& b == other.b
&& saturation == other.saturation
- && lightness == other.lightness
+ && slope == other.slope
+ && offset == other.offset
+ && power == other.power
&& hueMask == other.hueMask
&& chromaticityMask == other.chromaticityMask
- && lightnessMask == other.lightnessMask;
+ && lightnessMask == other.lightnessMask
+ && maskBlur == other.maskBlur
+ && channel == other.channel;
}
@@ -3843,10 +3851,14 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
putToKeyfile("ColorToning", Glib::ustring("LabRegionA_") + n, l.a, keyFile);
putToKeyfile("ColorToning", Glib::ustring("LabRegionB_") + n, l.b, keyFile);
putToKeyfile("ColorToning", Glib::ustring("LabRegionSaturation_") + n, l.saturation, keyFile);
- putToKeyfile("ColorToning", Glib::ustring("LabRegionLightness_") + n, l.lightness, keyFile);
+ putToKeyfile("ColorToning", Glib::ustring("LabRegionSlope_") + n, l.slope, keyFile);
+ putToKeyfile("ColorToning", Glib::ustring("LabRegionOffset_") + n, l.offset, keyFile);
+ putToKeyfile("ColorToning", Glib::ustring("LabRegionPower_") + n, l.power, keyFile);
putToKeyfile("ColorToning", Glib::ustring("LabRegionHueMask_") + n, l.hueMask, keyFile);
putToKeyfile("ColorToning", Glib::ustring("LabRegionChromaticityMask_") + n, l.chromaticityMask, keyFile);
putToKeyfile("ColorToning", Glib::ustring("LabRegionLightnessMask_") + n, l.lightnessMask, keyFile);
+ putToKeyfile("ColorToning", Glib::ustring("LabRegionMaskBlur_") + n, l.maskBlur, keyFile);
+ putToKeyfile("ColorToning", Glib::ustring("LabRegionChannel_") + n, l.channel, keyFile);
}
}
saveToKeyfile(!pedited || pedited->colorToning.labregionsShowMask, "ColorToning", "LabRegionsShowMask", colorToning.labregionsShowMask, keyFile);
@@ -5483,7 +5495,15 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
found = true;
done = false;
}
- if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionLightness_") + n, pedited, cur.lightness, pedited->colorToning.labregions)) {
+ if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionSlope_") + n, pedited, cur.slope, pedited->colorToning.labregions)) {
+ found = true;
+ done = false;
+ }
+ if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionOffset_") + n, pedited, cur.offset, pedited->colorToning.labregions)) {
+ found = true;
+ done = false;
+ }
+ if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionPower_") + n, pedited, cur.power, pedited->colorToning.labregions)) {
found = true;
done = false;
}
@@ -5499,6 +5519,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
found = true;
done = false;
}
+ if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionMaskBlur_") + n, pedited, cur.maskBlur, pedited->colorToning.labregions)) {
+ found = true;
+ done = false;
+ }
+ if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionChannel_") + n, pedited, cur.channel, pedited->colorToning.labregions)) {
+ found = true;
+ done = false;
+ }
if (!done) {
lg.emplace_back(cur);
}
@@ -5699,8 +5727,6 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
if (keyFile.has_group("Exif")) {
- std::vector keys = keyFile.get_keys("Exif");
-
for (const auto& key : keyFile.get_keys("Exif")) {
exif[key] = keyFile.get_string("Exif", key);
diff --git a/rtengine/procparams.h b/rtengine/procparams.h
index cae5959b6..2ba032042 100644
--- a/rtengine/procparams.h
+++ b/rtengine/procparams.h
@@ -26,8 +26,6 @@
#include
#include
-#include "coord.h"
-#include "LUT.h"
#include "noncopyable.h"
class ParamsEdited;
@@ -460,13 +458,18 @@ struct ColorToningParams {
static const double LABGRID_CORR_SCALE;
struct LabCorrectionRegion {
+ enum { CHAN_ALL = -1, CHAN_R, CHAN_G, CHAN_B };
double a;
double b;
double saturation;
- double lightness;
+ double slope;
+ double offset;
+ double power;
std::vector hueMask;
std::vector chromaticityMask;
std::vector lightnessMask;
+ double maskBlur;
+ int channel;
LabCorrectionRegion();
bool operator==(const LabCorrectionRegion &other) const;
diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc
index 7ab2e5e7b..93fdec94c 100644
--- a/rtengine/rawimage.cc
+++ b/rtengine/rawimage.cc
@@ -30,9 +30,9 @@ RawImage::RawImage(const Glib::ustring &name)
, allocation(nullptr)
{
memset(maximum_c4, 0, sizeof(maximum_c4));
- RT_matrix_from_constant = 0;
- RT_blacklevel_from_constant = 0;
- RT_whitelevel_from_constant = 0;
+ RT_matrix_from_constant = ThreeValBool::X;
+ RT_blacklevel_from_constant = ThreeValBool::X;
+ RT_whitelevel_from_constant = ThreeValBool::X;
}
RawImage::~RawImage()
@@ -504,6 +504,10 @@ int RawImage::loadRaw(bool loadData, unsigned int imageNum, bool closeFile, Prog
fseek(ifp, data_offset, SEEK_SET);
(this->*load_raw)();
+ if (!float_raw_image) { // apply baseline exposure only for float DNGs
+ RT_baseline_exposure = 0;
+ }
+
if (plistener) {
plistener->setProgress(0.9 * progressRange);
}
@@ -602,14 +606,14 @@ int RawImage::loadRaw(bool loadData, unsigned int imageNum, bool closeFile, Prog
if (cc) {
for (int i = 0; i < 4; i++) {
- if (RT_blacklevel_from_constant) {
+ if (RT_blacklevel_from_constant == ThreeValBool::T) {
int blackFromCc = cc->get_BlackLevel(i, iso_speed);
// if black level from camconst > 0xffff it is an absolute value.
black_c4[i] = blackFromCc > 0xffff ? (blackFromCc & 0xffff) : blackFromCc + cblack[i];
}
// load 4 channel white level here, will be used if available
- if (RT_whitelevel_from_constant) {
+ if (RT_whitelevel_from_constant == ThreeValBool::T) {
maximum_c4[i] = cc->get_WhiteLevel(i, iso_speed, aperture);
if (tiff_bps > 0 && maximum_c4[i] > 0 && !isFoveon()) {
@@ -1053,16 +1057,31 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is
*black_level = -1;
*white_level = -1;
+
+ const bool is_pentax_dng = dng_version && !strncmp(RT_software.c_str(), "PENTAX", 6);
+
+ if (RT_blacklevel_from_constant == ThreeValBool::F && !is_pentax_dng) {
+ *black_level = black;
+ }
+ if (RT_whitelevel_from_constant == ThreeValBool::F && !is_pentax_dng) {
+ *white_level = maximum;
+ }
memset(trans, 0, sizeof(*trans) * 12);
- // indicate that DCRAW wants these from constants (rather than having loaded these from RAW file
- // note: this is simplified so far, in some cases dcraw calls this when it has say the black level
- // from file, but then we will not provide any black level in the tables. This case is mainly just
- // to avoid loading table values if we have loaded a DNG conversion of a raw file (which already
- // have constants stored in the file).
- RT_whitelevel_from_constant = 1;
- RT_blacklevel_from_constant = 1;
- RT_matrix_from_constant = 1;
+ // // indicate that DCRAW wants these from constants (rather than having loaded these from RAW file
+ // // note: this is simplified so far, in some cases dcraw calls this when it has say the black level
+ // // from file, but then we will not provide any black level in the tables. This case is mainly just
+ // // to avoid loading table values if we have loaded a DNG conversion of a raw file (which already
+ // // have constants stored in the file).
+ // if (RT_whitelevel_from_constant == ThreeValBool::X || is_pentax_dng) {
+ // RT_whitelevel_from_constant = ThreeValBool::T;
+ // }
+ // if (RT_blacklevel_from_constant == ThreeValBool::X || is_pentax_dng) {
+ // RT_blacklevel_from_constant = ThreeValBool::T;
+ // }
+ // if (RT_matrix_from_constant == ThreeValBool::X) {
+ // RT_matrix_from_constant = ThreeValBool::T;
+ // }
{
// test if we have any information in the camera constants store, if so we take that.
@@ -1070,10 +1089,14 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is
rtengine::CameraConst *cc = ccs->get(make, model);
if (cc) {
- *black_level = cc->get_BlackLevel(0, iso_speed);
- *white_level = cc->get_WhiteLevel(0, iso_speed, aperture);
+ if (RT_blacklevel_from_constant == ThreeValBool::T) {
+ *black_level = cc->get_BlackLevel(0, iso_speed);
+ }
+ if (RT_whitelevel_from_constant == ThreeValBool::T) {
+ *white_level = cc->get_WhiteLevel(0, iso_speed, aperture);
+ }
- if (cc->has_dcrawMatrix()) {
+ if (RT_matrix_from_constant == ThreeValBool::T && cc->has_dcrawMatrix()) {
const short *mx = cc->get_dcrawMatrix();
for (int j = 0; j < 12; j++) {
@@ -1090,8 +1113,12 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is
for (size_t i = 0; i < sizeof table / sizeof(table[0]); i++) {
if (strcasecmp(name, table[i].prefix) == 0) {
- *black_level = table[i].black_level;
- *white_level = table[i].white_level;
+ if (RT_blacklevel_from_constant == ThreeValBool::T) {
+ *black_level = table[i].black_level;
+ }
+ if (RT_whitelevel_from_constant == ThreeValBool::T) {
+ *white_level = table[i].white_level;
+ }
for (int j = 0; j < 12; j++) {
trans[j] = table[i].trans[j];
diff --git a/rtengine/rawimage.h b/rtengine/rawimage.h
index 2cd406fec..3cedbab87 100644
--- a/rtengine/rawimage.h
+++ b/rtengine/rawimage.h
@@ -124,10 +124,10 @@ public:
float** compress_image(unsigned int frameNum, bool freeImage = true); // revert to compressed pixels format and release image data
float** data; // holds pixel values, data[i][j] corresponds to the ith row and jth column
unsigned prefilters; // original filters saved ( used for 4 color processing )
- unsigned int getFrameCount() const
- {
- return is_raw;
- }
+ unsigned int getFrameCount() const { return is_raw; }
+
+ double getBaselineExposure() const { return RT_baseline_exposure; }
+
protected:
Glib::ustring filename; // complete filename
int rotate_deg; // 0,90,180,270 degree of rotation: info taken by dcraw from exif
diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc
index 4db368b7b..959e0a62e 100644
--- a/rtengine/rawimagesource.cc
+++ b/rtengine/rawimagesource.cc
@@ -717,6 +717,11 @@ void RawImageSource::getImage(const ColorTemp &ctemp, int tran, Imagefloat* imag
gm /= area;
bm /= area;
bool doHr = (hrp.hrenabled && hrp.method != "Color");
+ const float expcomp = std::pow(2, ri->getBaselineExposure());
+ rm *= expcomp;
+ gm *= expcomp;
+ bm *= expcomp;
+
#ifdef _OPENMP
#pragma omp parallel if(!d1x) // omp disabled for D1x to avoid race conditions (see Issue 1088 http://code.google.com/p/rawtherapee/issues/detail?id=1088)
{
@@ -4402,17 +4407,11 @@ bool RawImageSource::findInputProfile(Glib::ustring inProfile, cmsHPROFILE embed
// very effective to reduce (or remove) the magenta, but with levels of grey !
void RawImageSource::HLRecovery_blend(float* rin, float* gin, float* bin, int width, float maxval, float* hlmax)
{
- const int ColorCount = 3;
+ constexpr int ColorCount = 3;
// Transform matrixes rgb>lab and back
- static const float trans[2][ColorCount][ColorCount] = {
- { { 1, 1, 1 }, { 1.7320508, -1.7320508, 0 }, { -1, -1, 2 } },
- { { 1, 1, 1 }, { 1, -1, 1 }, { 1, 1, -1 } }
- };
- static const float itrans[2][ColorCount][ColorCount] = {
- { { 1, 0.8660254, -0.5 }, { 1, -0.8660254, -0.5 }, { 1, 0, 1 } },
- { { 1, 1, 1 }, { 1, -1, 1 }, { 1, 1, -1 } }
- };
+ constexpr float trans[ColorCount][ColorCount] = { { 1, 1, 1 }, { 1.7320508, -1.7320508, 0 }, { -1, -1, 2 } };
+ constexpr float itrans[ColorCount][ColorCount] = { { 1, 0.8660254, -0.5 }, { 1, -0.8660254, -0.5 }, { 1, 0, 1 } };
#define FOREACHCOLOR for (int c=0; c < ColorCount; c++)
@@ -4469,7 +4468,7 @@ void RawImageSource::HLRecovery_blend(float* rin, float* gin, float* bin, int wi
for (int j = 0; j < ColorCount; j++)
{
- lab[i][c] += trans[ColorCount - 3][c][j] * cam[i][j];
+ lab[i][c] += trans[c][j] * cam[i][j];
}
}
@@ -4493,7 +4492,7 @@ void RawImageSource::HLRecovery_blend(float* rin, float* gin, float* bin, int wi
for (int j = 0; j < ColorCount; j++)
{
- cam[0][c] += itrans[ColorCount - 3][c][j] * lab[0][j];
+ cam[0][c] += itrans[c][j] * lab[0][j];
}
}
FOREACHCOLOR rgb[c] = cam[0][c] / ColorCount;
diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h
index 2e96c97ae..4d49f08b2 100644
--- a/rtengine/rawimagesource.h
+++ b/rtengine/rawimagesource.h
@@ -110,23 +110,23 @@ protected:
public:
- RawImageSource();
- ~RawImageSource();
+ RawImageSource ();
+ ~RawImageSource () override;
- int load(const Glib::ustring &fname) { return load(fname, false); }
+ int load(const Glib::ustring &fname) override { return load(fname, false); }
int load(const Glib::ustring &fname, bool firstFrameOnly);
- void preprocess(const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse, bool prepareDenoise = true);
- void demosaic (const RAWParams &raw, bool autoContrast, double &contrastThreshold);
- void retinex (const ColorManagementParams& cmp, const RetinexParams &deh, const ToneCurveParams& Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI);
- void retinexPrepareCurves(const RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI);
- void retinexPrepareBuffers(const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI);
- void flushRawData();
- void flushRGB();
- void HLRecovery_Global (const ToneCurveParams &hrp);
- void refinement_lassus(int PassCount);
+ void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse, bool prepareDenoise = true) override;
+ void demosaic (const RAWParams &raw, bool autoContrast, double &contrastThreshold) override;
+ void retinex (const ColorManagementParams& cmp, const RetinexParams &deh, const ToneCurveParams& Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI) override;
+ void retinexPrepareCurves (const RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI) override;
+ void retinexPrepareBuffers (const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) override;
+ void flushRawData () override;
+ void flushRGB () override;
+ void HLRecovery_Global (const ToneCurveParams &hrp) override;
+ void refinement_lassus (int PassCount);
void refinement(int PassCount);
- void setBorder(unsigned int rawBorder) {border = rawBorder;}
- bool isRGBSourceModified() const
+ void setBorder(unsigned int rawBorder) override {border = rawBorder;}
+ bool isRGBSourceModified() const override
{
return rgbSourceModified; // tracks whether cached rgb output of demosaic has been modified
}
@@ -136,57 +136,57 @@ public:
void cfaboxblur(RawImage *riFlatFile, float* cfablur, int boxH, int boxW);
void scaleColors(int winx, int winy, int winw, int winh, const RAWParams &raw, array2D &rawData); // raw for cblack
- void getImage(const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw);
- eSensorType getSensorType() const
+ void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw) override;
+ eSensorType getSensorType () const override
{
return ri != nullptr ? ri->getSensorType() : ST_NONE;
}
- bool isMono () const
+ bool isMono () const override
{
return ri->get_colors() == 1;
}
- ColorTemp getWB() const
+ ColorTemp getWB () const override
{
return camera_wb;
}
- void getAutoWBMultipliers(double &rm, double &gm, double &bm);
- ColorTemp getSpotWB(std::vector &red, std::vector &green, std::vector &blue, int tran, double equal);
- bool isWBProviderReady()
+ void getAutoWBMultipliers (double &rm, double &gm, double &bm) override;
+ ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal) override;
+ bool isWBProviderReady () override
{
return rawData;
}
- double getDefGain() const
+ double getDefGain () const override
{
return defGain;
}
- void getFullSize(int& w, int& h, int tr = TR_NONE);
- void getSize(const PreviewProps &pp, int& w, int& h);
- int getRotateDegree() const
+ void getFullSize (int& w, int& h, int tr = TR_NONE) override;
+ void getSize (const PreviewProps &pp, int& w, int& h) override;
+ int getRotateDegree() const override
{
return ri->get_rotateDegree();
}
- ImageMatrices* getImageMatrices()
+ ImageMatrices* getImageMatrices () override
{
return &imatrices;
}
- bool isRAW() const
+ bool isRAW() const override
{
return true;
}
- void setProgressListener(ProgressListener* pl)
+ void setProgressListener (ProgressListener* pl) override
{
plistener = pl;
}
- void getAutoExpHistogram(LUTu & histogram, int& histcompr);
- void getRAWHistogram(LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw);
- void getAutoMatchedToneCurve(const ColorManagementParams &cp, std::vector &outCurve);
- DCPProfile *getDCP(const ColorManagementParams &cmp, DCPProfile::ApplyState &as);
+ void getAutoExpHistogram (LUTu & histogram, int& histcompr) override;
+ void getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw) override;
+ void getAutoMatchedToneCurve(const ColorManagementParams &cp, std::vector &outCurve) override;
+ DCPProfile *getDCP(const ColorManagementParams &cmp, DCPProfile::ApplyState &as) override;
- void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb);
+ void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb) override;
static bool findInputProfile(Glib::ustring inProfile, cmsHPROFILE embedded, std::string camName, DCPProfile **dcpProf, cmsHPROFILE& in);
static void colorSpaceConversion(Imagefloat* im, const ColorManagementParams& cmp, const ColorTemp &wb, double pre_mul[3], cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], const std::string &camName)
{
@@ -197,20 +197,18 @@ public:
void boxblur2(float** src, float** dst, float** temp, int H, int W, int box);
void boxblur_resamp(float **src, float **dst, float** temp, int H, int W, int box, int samp);
void MSR(float** luminance, float **originalLuminance, float **exLuminance, LUTf & mapcurve, bool &mapcontlutili, int width, int height, const RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax);
- void HLRecovery_inpaint(float** red, float** green, float** blue);
- static void HLRecovery_Luminance(float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval);
- static void HLRecovery_CIELab(float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval, double cam[3][3], double icam[3][3]);
- static void HLRecovery_blend(float* rin, float* gin, float* bin, int width, float maxval, float* hlmax);
- static void init();
- static void cleanup();
- void setCurrentFrame(unsigned int frameNum)
- {
+ void HLRecovery_inpaint (float** red, float** green, float** blue) override;
+ static void HLRecovery_Luminance (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval);
+ static void HLRecovery_CIELab (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval, double cam[3][3], double icam[3][3]);
+ static void HLRecovery_blend (float* rin, float* gin, float* bin, int width, float maxval, float* hlmax);
+ static void init ();
+ static void cleanup ();
+ void setCurrentFrame(unsigned int frameNum) override {
currFrame = std::min(numFrames - 1, frameNum);
ri = riFrames[currFrame];
}
- int getFrameCount(){return numFrames;}
- int getFlatFieldAutoClipValue() {return flatFieldAutoClipValue;}
-
+ int getFrameCount() override {return numFrames;}
+ int getFlatFieldAutoClipValue() override {return flatFieldAutoClipValue;}
class GreenEqulibrateThreshold {
public:
@@ -299,9 +297,9 @@ protected:
void xtrans_interpolate(const int passes, const bool useCieLab);
void fast_xtrans_interpolate (const array2D &rawData, array2D &red, array2D &green, array2D &blue);
void pixelshift(int winx, int winy, int winw, int winh, const RAWParams &rawParams, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection);
- void hflip(Imagefloat* im);
- void vflip(Imagefloat* im);
- void getRawValues(int x, int y, int rotate, int &R, int &G, int &B);
+ void hflip (Imagefloat* im);
+ void vflip (Imagefloat* im);
+ void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) override;
};
}
diff --git a/rtengine/rawmetadatalocation.h b/rtengine/rawmetadatalocation.h
index 40ac6cc3e..de6c6a0d7 100644
--- a/rtengine/rawmetadatalocation.h
+++ b/rtengine/rawmetadatalocation.h
@@ -30,7 +30,7 @@ public:
int ciffLength;
RawMetaDataLocation () : exifBase(-1), ciffBase(-1), ciffLength(-1) {}
- RawMetaDataLocation (int exifBase) : exifBase(exifBase), ciffBase(-1), ciffLength(-1) {}
+ explicit RawMetaDataLocation (int exifBase) : exifBase(exifBase), ciffBase(-1), ciffLength(-1) {}
RawMetaDataLocation (int ciffBase, int ciffLength) : exifBase(-1), ciffBase(ciffBase), ciffLength(ciffLength) {}
RawMetaDataLocation (int exifBase, int ciffBase, int ciffLength) : exifBase(exifBase), ciffBase(ciffBase), ciffLength(ciffLength) {}
};
diff --git a/rtengine/rtlensfun.h b/rtengine/rtlensfun.h
index ef6d2192b..c196a4765 100644
--- a/rtengine/rtlensfun.h
+++ b/rtengine/rtlensfun.h
@@ -38,7 +38,7 @@ class LFModifier final :
public NonCopyable
{
public:
- ~LFModifier();
+ ~LFModifier() override;
explicit operator bool() const;
diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc
index 1efe66a5c..6cf123da0 100644
--- a/rtengine/rtthumbnail.cc
+++ b/rtengine/rtthumbnail.cc
@@ -62,15 +62,15 @@ bool checkRawImageThumb (const rtengine::RawImage& raw_image)
void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], bool multiThread)
{
DCraw::dcrawImage_t image = ri->get_image();
+ const int height = ri->get_iheight();
+ const int width = ri->get_iwidth();
+ const int top_margin = ri->get_topmargin();
+ const int left_margin = ri->get_leftmargin();
+ const int raw_width = ri->get_rawwidth();
+ const bool isFloat = ri->isFloat();
+ const float * const float_raw_image = ri->get_FloatRawImage();
if (ri->isBayer()) {
- const int height = ri->get_iheight();
- const int width = ri->get_iwidth();
- const bool isFloat = ri->isFloat();
- const int top_margin = ri->get_topmargin();
- const int left_margin = ri->get_leftmargin();
- const int raw_width = ri->get_rawwidth();
- const float * const float_raw_image = ri->get_FloatRawImage();
#ifdef _OPENMP
#pragma omp parallel for if(multiThread)
#endif
@@ -110,14 +110,6 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
}
}
} else if (ri->isXtrans()) {
- const int height = ri->get_iheight();
- const int width = ri->get_iwidth();
- const bool isFloat = ri->isFloat();
- const int top_margin = ri->get_topmargin();
- const int left_margin = ri->get_leftmargin();
- const int raw_width = ri->get_rawwidth();
- const float * const float_raw_image = ri->get_FloatRawImage();
-
#ifdef _OPENMP
#pragma omp parallel for if(multiThread)
#endif
@@ -157,6 +149,20 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
image[row * width + col][ccol] = rtengine::CLIP (val);
}
}
+ } else if (isFloat) {
+#ifdef _OPENMP
+ #pragma omp parallel for if(multiThread)
+#endif
+ for (int row = 0; row < height; ++row) {
+ for (int col = 0; col < width; ++col) {
+ for (int i = 0; i < ri->get_colors(); ++i) {
+ float val = float_raw_image[(row + top_margin) * raw_width + col + left_margin + i];
+ val -= cblack[i];
+ val *= scale_mul[i];
+ image[row * width + col][i] = val;
+ }
+ }
+ }
} else {
const int size = ri->get_iheight() * ri->get_iwidth();
@@ -574,6 +580,7 @@ Thumbnail* Thumbnail::loadFromRaw (const Glib::ustring& fname, RawMetaDataLocati
tpp->camwbBlue = tpp->blueMultiplier / pre_mul[2]; //ri->get_pre_mul(2);
//tpp->defGain = 1.0 / min(ri->get_pre_mul(0), ri->get_pre_mul(1), ri->get_pre_mul(2));
tpp->defGain = max (scale_mul[0], scale_mul[1], scale_mul[2], scale_mul[3]) / min (scale_mul[0], scale_mul[1], scale_mul[2], scale_mul[3]);
+ tpp->defGain *= std::pow(2, ri->getBaselineExposure());
tpp->gammaCorrected = true;
diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h
index 667d8e1c9..c01aa81ee 100644
--- a/rtengine/rtthumbnail.h
+++ b/rtengine/rtthumbnail.h
@@ -156,7 +156,7 @@ public:
}
return imgPtr;
- };
+ }
};
}
diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc
index 0262af472..a089639fa 100644
--- a/rtengine/simpleprocess.cc
+++ b/rtengine/simpleprocess.cc
@@ -909,8 +909,7 @@ private:
int cw = baseImg->getWidth();
int ch = baseImg->getHeight();
// put gamma TRC to 1
- Imagefloat* readyImg0 = NULL;
- readyImg0 = ipf.workingtrc(baseImg, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310);
+ Imagefloat* readyImg0 = ipf.workingtrc(baseImg, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310);
#pragma omp parallel for
for (int row = 0; row < ch; row++) {
@@ -924,8 +923,7 @@ private:
delete readyImg0;
//adjust TRC
- Imagefloat* readyImg = NULL;
- readyImg = ipf.workingtrc(baseImg, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope);
+ Imagefloat* readyImg = ipf.workingtrc(baseImg, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope);
#pragma omp parallel for
for (int row = 0; row < ch; row++) {
@@ -1376,7 +1374,6 @@ private:
}
}
- Imagefloat* readyImg = nullptr;
cmsHPROFILE jprof = nullptr;
constexpr bool customGamma = false;
constexpr bool useLCMS = false;
@@ -1388,7 +1385,7 @@ private:
// if Default gamma mode: we use the profile selected in the "Output profile" combobox;
// gamma come from the selected profile, otherwise it comes from "Free gamma" tool
- readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm);
+ Imagefloat* readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm);
if (settings->verbose) {
printf ("Output profile_: \"%s\"\n", params.icm.outputProfile.c_str());
diff --git a/rtengine/stdimagesource.h b/rtengine/stdimagesource.h
index 605b2926c..500641f72 100644
--- a/rtengine/stdimagesource.h
+++ b/rtengine/stdimagesource.h
@@ -40,66 +40,66 @@ protected:
public:
StdImageSource ();
- ~StdImageSource ();
+ ~StdImageSource () override;
- int load (const Glib::ustring &fname);
- void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw);
- ColorTemp getWB () const
+ int load (const Glib::ustring &fname) override;
+ void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw) override;
+ ColorTemp getWB () const override
{
return wb;
}
- void getAutoWBMultipliers (double &rm, double &gm, double &bm);
- ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal);
+ void getAutoWBMultipliers (double &rm, double &gm, double &bm) override;
+ ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal) override;
- eSensorType getSensorType() const {return ST_NONE;}
- bool isMono() const {return false;}
+ eSensorType getSensorType() const override {return ST_NONE;}
+ bool isMono() const override {return false;}
- bool isWBProviderReady ()
+ bool isWBProviderReady () override
{
return true;
};
- void getAutoExpHistogram (LUTu &histogram, int& histcompr);
+ void getAutoExpHistogram (LUTu &histogram, int& histcompr) override;
- double getDefGain () const
+ double getDefGain () const override
{
return 0.0;
}
- void getFullSize (int& w, int& h, int tr = TR_NONE);
- void getSize (const PreviewProps &pp, int& w, int& h);
+ void getFullSize (int& w, int& h, int tr = TR_NONE) override;
+ void getSize (const PreviewProps &pp, int& w, int& h) override;
ImageIO* getImageIO ()
{
return img;
}
- ImageMatrices* getImageMatrices ()
+ ImageMatrices* getImageMatrices () override
{
return (ImageMatrices*)nullptr;
}
- bool isRAW() const
+ bool isRAW() const override
{
return false;
}
- void setProgressListener (ProgressListener* pl)
+ void setProgressListener (ProgressListener* pl) override
{
plistener = pl;
}
- void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb);// RAWParams raw will not be used for non-raw files (see imagesource.h)
+ void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb) override;// RAWParams raw will not be used for non-raw files (see imagesource.h)
static void colorSpaceConversion (Imagefloat* im, const ColorManagementParams &cmp, cmsHPROFILE embedded, IIOSampleFormat sampleFormat);
- bool isRGBSourceModified() const
+ bool isRGBSourceModified() const override
{
return rgbSourceModified;
}
- void setCurrentFrame(unsigned int frameNum) {}
- int getFrameCount() {return 1;}
- int getFlatFieldAutoClipValue() {return 0;}
+ void setCurrentFrame(unsigned int frameNum) override {}
+ int getFrameCount() override {return 1;}
+ int getFlatFieldAutoClipValue() override {return 0;}
- void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) { R = G = B = 0;}
+ void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) override { R = G = B = 0;}
};
diff --git a/rtexif/canonattribs.cc b/rtexif/canonattribs.cc
index 17ce4f343..940206e31 100644
--- a/rtexif/canonattribs.cc
+++ b/rtexif/canonattribs.cc
@@ -32,7 +32,7 @@ namespace rtexif
class CAOnOffInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int n = t->toInt();
@@ -51,7 +51,7 @@ class CAIntSerNumInterpreter : public Interpreter
{
public:
CAIntSerNumInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
return "";
}
@@ -63,7 +63,7 @@ class CAApertureInterpreter : public Interpreter
{
public:
CAApertureInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
double v = pow (2.0, t->toDouble() / 64.0);
@@ -92,7 +92,7 @@ CAMacroModeInterpreter caMacroModeInterpreter;
class CASelfTimerInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int sec = t->toInt (0, SHORT);
@@ -385,7 +385,7 @@ CAExposureModeInterpreter caExposureModeInterpreter;
class CAFlashBitsInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::ostringstream s;
unsigned bits = t->toInt (0, SHORT);
@@ -533,7 +533,7 @@ CARAWQualityInterpreter caRAWQualityInterpreter;
class CAFocalInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
Tag *unitTag = t->getParent()->getRoot()->findTag ("FocalUnits");
double v = unitTag ? unitTag->toDouble() : 1.;
@@ -956,7 +956,7 @@ public:
};
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int lensID = t->toInt();
@@ -1108,7 +1108,7 @@ CAFocalTypeInterpreter caFocalTypeInterpreter;
class CAFocalPlaneInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int val = t->toInt();
@@ -1126,7 +1126,7 @@ CAFocalPlaneInterpreter caFocalPlaneInterpreter;
class CAExposureTimeInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
double d = pow (2, - t->toInt() / 32.0);
@@ -1138,7 +1138,7 @@ CAExposureTimeInterpreter caExposureTimeInterpreter;
class CAEVInterpreter : public Interpreter
{
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
sprintf (buffer, "%.1f", t->toDouble() / 32.0 );
@@ -1150,14 +1150,14 @@ CAEVInterpreter caEVInterpreter;
class CABaseISOInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
int a = t->toInt();
sprintf (buffer, "%d", a);
return buffer;
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a = Interpreter::toInt (t, ofs);
@@ -1168,7 +1168,7 @@ public:
return 0.;
}
}
- virtual int toInt (const Tag* t, int ofs, TagType astype)
+ int toInt (const Tag* t, int ofs, TagType astype) override
{
int a = Interpreter::toInt (t, ofs, astype);
@@ -1287,7 +1287,7 @@ CASlowShutterInterpreter caSlowShutterInterpreter;
class CAFlashGuideNumberInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int n = t->toInt();
@@ -1348,7 +1348,7 @@ CAControModeInterpreter caControModeInterpreter;
class CAFocusDistanceInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
sprintf (buffer, "%.2f", t->toDouble() / 100 );
@@ -1360,7 +1360,7 @@ CAFocusDistanceInterpreter caFocusDistanceInterpreter;
class CAMeasuredEVInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
sprintf (buffer, "%.1f", t->toDouble() / 8 - 6 );
@@ -1495,7 +1495,7 @@ CAToningEffectInterpreter caToningEffectInterpreter;
class CAFileNumberInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
unsigned long val = t->toInt (0, LONG);
char buffer[32];
diff --git a/rtexif/nikonattribs.cc b/rtexif/nikonattribs.cc
index e534f8123..888bebe5a 100644
--- a/rtexif/nikonattribs.cc
+++ b/rtexif/nikonattribs.cc
@@ -34,7 +34,7 @@ class NAISOInterpreter : public Interpreter
{
public:
NAISOInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
sprintf (buffer, "%d", t->toInt (2));
@@ -47,14 +47,14 @@ class NAISOInfoISOInterpreter : public Interpreter
{
public:
NAISOInfoISOInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
int a = t->toInt();
sprintf (buffer, "%d", a);
return buffer;
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a = t->getValue()[ofs];
@@ -65,7 +65,7 @@ public:
return 0.;
}
}
- virtual int toInt (const Tag* t, int ofs, TagType astype)
+ int toInt (const Tag* t, int ofs, TagType astype) override
{
int a = t->getValue()[ofs];
@@ -83,7 +83,7 @@ class NAISOExpansionInterpreter : public Interpreter
{
public:
NAISOExpansionInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt();
@@ -142,7 +142,7 @@ class NALensTypeInterpreter : public Interpreter
{
public:
NALensTypeInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt();
std::ostringstream str;
@@ -191,7 +191,7 @@ class NAShootingModeInterpreter : public Interpreter
{
public:
NAShootingModeInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt();
std::ostringstream str;
@@ -234,7 +234,7 @@ public:
afpchoices[0x9] = "Far Left";
afpchoices[0xa] = "Far Right";
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int am = t->toInt (0, BYTE);
int afp = t->toInt (1, BYTE);
@@ -314,7 +314,7 @@ class NALensDataInterpreter : public Interpreter
static const std::map lenses;
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
static const unsigned char xlat[2][256] = {
diff --git a/rtexif/olympusattribs.cc b/rtexif/olympusattribs.cc
index 8084637c9..e590a71de 100644
--- a/rtexif/olympusattribs.cc
+++ b/rtexif/olympusattribs.cc
@@ -33,7 +33,7 @@ class OLOnOffInterpreter : public Interpreter
{
public:
OLOnOffInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
if (t->toInt() == 0) {
return "Off";
@@ -48,7 +48,7 @@ class OLYesNoInterpreter : public Interpreter
{
public:
OLYesNoInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
if (t->toInt() == 0) {
return "No";
@@ -63,7 +63,7 @@ class OLApertureInterpreter : public Interpreter
{
public:
OLApertureInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::ostringstream str;
str.precision (2);
@@ -194,7 +194,7 @@ public:
lenses["03 02 00"] = "Leica D Summilux 25mm f/1.4 Asph.";
lenses["05 01 10"] = "Tamron 14-150mm f/3.5-5.8 Di III";
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::ostringstream lid;
lid.setf (std::ios_base::hex, std::ios_base::basefield);
@@ -465,7 +465,7 @@ class OLNoiseFilterInterpreter : public Interpreter
{
public:
OLNoiseFilterInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt (0);
int b = t->toInt (2);
@@ -490,7 +490,7 @@ class OLFlashModeInterpreter : public Interpreter
{
public:
OLFlashModeInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::ostringstream str;
int a = t->toInt ();
@@ -509,7 +509,7 @@ class OLNoiseReductionInterpreter : public Interpreter
{
public:
OLNoiseReductionInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::ostringstream str;
int a = t->toInt ();
diff --git a/rtexif/pentaxattribs.cc b/rtexif/pentaxattribs.cc
index 0968271e5..4120f6b46 100644
--- a/rtexif/pentaxattribs.cc
+++ b/rtexif/pentaxattribs.cc
@@ -415,7 +415,7 @@ class PAFNumberInterpreter: public Interpreter
{
public:
PAFNumberInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
double v = t->toDouble() / 10;
@@ -610,7 +610,7 @@ public:
choices[256 * 255 + 0] = "Video (Auto Aperture)";
choices[256 * 255 + 4] = "Video (4)";
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int c = 256 * t->toInt (0, BYTE) + t->toInt (1, BYTE);
std::map::iterator r = choices.find (c);
@@ -669,7 +669,7 @@ public:
choices3[224] = "HDR Auto";
choices3[255] = "Video";
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::map::iterator r = choices.find (t->toInt (0, BYTE));
std::map::iterator r1 = choices1.find (t->toInt (1, BYTE));
@@ -993,7 +993,7 @@ public:
choices.insert (p_t (256 * 22 + 4, "04 Toy Lens Wide 6.3mm f/7.1"));
choices.insert (p_t (256 * 22 + 5, "05 Toy Lens Telephoto 18mm f/8"));
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
double *liArray = nullptr;
double maxApertureAtFocal = 0.;
@@ -1061,7 +1061,7 @@ class PASRResultInterpreter: public Interpreter
{
public:
PASRResultInterpreter() { }
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::ostringstream str;
int b = t->toInt (0, BYTE);
@@ -1146,7 +1146,7 @@ public:
choices[ 2 << 8 | 4 ] = "Auto";
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int idx = 0;
@@ -1173,7 +1173,7 @@ public:
choices[2] = "Standard";
choices[3] = "Fast";
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::map::iterator r = choices.find (t->toInt (0, BYTE));
std::ostringstream s;
@@ -1211,7 +1211,7 @@ public:
choices[2] = "Medium";
choices[3] = "High";
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::map::iterator r = choices.find (t->toInt (0, BYTE));
std::ostringstream s;
@@ -1243,7 +1243,7 @@ public:
choices2[8] = "2 EV";
choices2[12] = "3 EV";
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::map::iterator r = choices.find (t->toInt (0, BYTE));
std::map::iterator r1 = choices1.find (t->toInt (1, BYTE));
@@ -1290,7 +1290,7 @@ class PALensModelQInterpreter: public Interpreter
{
public:
PALensModelQInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[31];
buffer[0] = 0; //
@@ -1308,7 +1308,7 @@ class PALensInfoQInterpreter: public Interpreter
{
public:
PALensInfoQInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[21];
buffer[0] = 0;
@@ -1326,7 +1326,7 @@ class PAFlashExposureCompInterpreter: public Interpreter
{
public:
PAFlashExposureCompInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a;
@@ -1340,7 +1340,7 @@ public:
sprintf (buffer, "%d", a );
return buffer;
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a;
@@ -1359,7 +1359,7 @@ class PAFocalLengthInterpreter: public Interpreter
{
public:
PAFocalLengthInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
double a = double (t->toInt (0, LONG));
@@ -1371,7 +1371,7 @@ public:
return "n/a";
}
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
double a = double (t->toInt (0, LONG));
@@ -1388,7 +1388,7 @@ class PALensDataFocalLengthInterpreter: public Interpreter
{
public:
PALensDataFocalLengthInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt (0, BYTE);
float b = float (10 * int (a >> 2)) * pow (4.f, float (int (a & 0x03) - 2));
@@ -1401,7 +1401,7 @@ public:
return "n/a";
}
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a = t->toInt (ofs, BYTE);
float b = float (10 * int (a >> 2)) * pow (4.f, float (int (a & 0x03) - 2));
@@ -1419,7 +1419,7 @@ class PAISOfInterpreter: public Interpreter
{
public:
PAISOfInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt (0, BYTE);
char buffer[32];
@@ -1427,7 +1427,7 @@ public:
sprintf (buffer, "%.1f", v );
return buffer;
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a = t->toInt (0, BYTE);
return 100.*exp (double (a - 32) * log (2.) / 8.);
@@ -1439,7 +1439,7 @@ class PAMaxApertureInterpreter: public Interpreter
{
public:
PAMaxApertureInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt (0, BYTE);
a &= 0x7F;
@@ -1458,7 +1458,7 @@ public:
return "n/a";
}
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a = t->toInt (0, BYTE);
a &= 0x7F;
@@ -1476,7 +1476,7 @@ class PAAEXvInterpreter: public Interpreter
{
public:
PAAEXvInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt (0, BYTE);
char buffer[32];
@@ -1484,7 +1484,7 @@ public:
sprintf (buffer, "%.1f", v );
return buffer;
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a = t->toInt (0, BYTE);
return double (a - 64) / 8.;
@@ -1496,7 +1496,7 @@ class PAAEBXvInterpreter: public Interpreter
{
public:
PAAEBXvInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt (0, SBYTE);
char buffer[32];
@@ -1504,7 +1504,7 @@ public:
sprintf (buffer, "%.1f", v );
return buffer;
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a = t->toInt (0, SBYTE);
return double (a) / 8.;
@@ -1516,7 +1516,7 @@ class PAApertureInterpreter: public Interpreter
{
public:
PAApertureInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt (0, BYTE);
char buffer[32];
@@ -1524,7 +1524,7 @@ public:
sprintf (buffer, "%.1f", v );
return buffer;
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a = t->toInt (0, BYTE);
return exp ((double (a) - 68.) * log (2.) / 16.);
@@ -1536,7 +1536,7 @@ class PAExposureTimeInterpreter: public Interpreter
{
public:
PAExposureTimeInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt (0, BYTE);
char buffer[32];
@@ -1544,7 +1544,7 @@ public:
sprintf (buffer, "%.6f", v );
return buffer;
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a = t->toInt (0, BYTE);
return 24.*exp (- (double (a) - 32.) * log (2.) / 8.);
@@ -1556,7 +1556,7 @@ class PANominalMinApertureInterpreter: public Interpreter
{
public:
PANominalMinApertureInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
int a = t->toInt (0, BYTE);
@@ -1564,7 +1564,7 @@ public:
sprintf (buffer, "%.1f", double (int (pow (2.0, double (mina + 10) / 4.0) + 0.2)));
return buffer;
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a = t->toInt (0, BYTE) & 0x0F;
return double (int (pow (2.0, double (a + 10) / 4.0) + 0.2));
@@ -1576,7 +1576,7 @@ class PANominalMaxApertureInterpreter: public Interpreter
{
public:
PANominalMaxApertureInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
int a = t->toInt (0, BYTE);
@@ -1584,7 +1584,7 @@ public:
sprintf (buffer, "%.1f", double (int (pow (2.0, double (maxa) / 4.0) + 0.2)) );
return buffer;
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
int a = ( t->toInt (0, BYTE) & 0xF0) >> 4;
return double (int (pow (2.0, double (a) / 4.0) + 0.2));
@@ -1694,7 +1694,7 @@ class PAExternalFlashGNInterpreter: public Interpreter
{
public:
PAExternalFlashGNInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
int b = t->toInt (0, BYTE) & 0x1F;
@@ -1708,7 +1708,7 @@ class PAEVStepsInterpreter: public Interpreter
{
public:
PAEVStepsInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::ostringstream str;
@@ -1727,7 +1727,7 @@ class PAEDialinInterpreter: public Interpreter
{
public:
PAEDialinInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::ostringstream str;
@@ -1746,7 +1746,7 @@ class PAApertureRingUseInterpreter: public Interpreter
{
public:
PAApertureRingUseInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::ostringstream str;
@@ -1776,7 +1776,7 @@ public:
choices[9] = "Slow-sync, Red-eye reduction";
choices[10] = "Trailing-curtain Sync";
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::map::iterator r = choices.find (t->toInt (0, BYTE) >> 4);
@@ -1795,7 +1795,7 @@ class PAMeteringMode2Interpreter: public Interpreter
{
public:
PAMeteringMode2Interpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::ostringstream str;
int v = (t->toInt (0, BYTE) & 0xF);
@@ -1859,7 +1859,7 @@ class PAProgramLineInterpreter: public Interpreter
{
public:
PAProgramLineInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::ostringstream str;
int c = t->toInt (0, BYTE);
@@ -1899,7 +1899,7 @@ class PAAFModeInterpreter: public Interpreter
{
public:
PAAFModeInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
switch (t->toInt (0, BYTE) & 0x3) {
case 0:
@@ -1925,7 +1925,7 @@ class PAAFPointSelectedInterpreter: public Interpreter
{
public:
PAAFPointSelectedInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int c = t->toInt (0, SHORT);
@@ -1949,7 +1949,7 @@ class PADriveMode2Interpreter: public Interpreter
{
public:
PADriveMode2Interpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int c = t->toInt (0, BYTE);
diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc
index 893d0fe22..39d85ace9 100644
--- a/rtexif/rtexif.cc
+++ b/rtexif/rtexif.cc
@@ -362,23 +362,25 @@ Glib::ustring TagDirectory::getDumpKey (int tagID, const Glib::ustring &tagName)
return key;
}
-void TagDirectory::addTag (Tag* tag)
+void TagDirectory::addTag (Tag* &tag)
{
// look up if it already exists:
if (getTag (tag->getID())) {
delete tag;
+ tag = nullptr;
} else {
tags.push_back (tag);
}
}
-void TagDirectory::addTagFront (Tag* tag)
+void TagDirectory::addTagFront (Tag* &tag)
{
// look up if it already exists:
if (getTag (tag->getID())) {
delete tag;
+ tag = nullptr;
} else {
tags.insert (tags.begin(), tag);
}
@@ -720,7 +722,7 @@ int TagDirectory::write (int start, unsigned char* buffer)
return maxPos;
}
-void TagDirectory::applyChange (std::string name, Glib::ustring value)
+void TagDirectory::applyChange (const std::string &name, const Glib::ustring &value)
{
std::string::size_type dp = name.find_first_of ('.');
@@ -842,14 +844,15 @@ TagDirectoryTable::TagDirectoryTable (TagDirectory* p, FILE* f, int memsize, int
: TagDirectory (p, ta, border), zeroOffset (offs), valuesSize (memsize), defaultType ( type )
{
values = new unsigned char[valuesSize];
- fread (values, 1, valuesSize, f);
+ if (fread (values, 1, valuesSize, f) == static_cast(valuesSize)) {
- // Security ; will avoid to read above the buffer limit if the RT's tagDirectoryTable is longer that what's in the file
- int count = valuesSize / getTypeSize (type);
+ // Security ; will avoid to read above the buffer limit if the RT's tagDirectoryTable is longer that what's in the file
+ int count = valuesSize / getTypeSize (type);
- for (const TagAttrib* tattr = ta; tattr->ignore != -1 && tattr->ID < count; ++tattr) {
- Tag* newTag = new Tag (this, tattr, (values + zeroOffset + tattr->ID * getTypeSize (type)), tattr->type == AUTO ? type : tattr->type);
- tags.push_back (newTag); // Here we can insert more tag in the same offset because of bitfield meaning
+ for (const TagAttrib* tattr = ta; tattr->ignore != -1 && tattr->ID < count; ++tattr) {
+ Tag* newTag = new Tag (this, tattr, (values + zeroOffset + tattr->ID * getTypeSize (type)), tattr->type == AUTO ? type : tattr->type);
+ tags.push_back (newTag); // Here we can insert more tag in the same offset because of bitfield meaning
+ }
}
}
TagDirectory* TagDirectoryTable::clone (TagDirectory* parent)
@@ -1204,8 +1207,8 @@ Tag::Tag (TagDirectory* p, FILE* f, int base)
} else {
// read value
value = new unsigned char [valuesize + 1];
- fread (value, 1, valuesize, f);
- value[valuesize] = '\0';
+ auto readSize = fread (value, 1, valuesize, f);
+ value[readSize] = '\0';
}
// seek back to the saved position
@@ -1215,32 +1218,33 @@ Tag::Tag (TagDirectory* p, FILE* f, int base)
defsubdirs:
// read value
value = new unsigned char [valuesize];
- fread (value, 1, valuesize, f);
-
- // count the number of valid subdirs
- int sdcount = count;
-
- if (sdcount > 0) {
- if (parent->getAttribTable() == olympusAttribs) {
- sdcount = 1;
- }
-
- // allocate space
- directory = new TagDirectory*[sdcount + 1];
-
- // load directories
- for (size_t j = 0, i = 0; j < count; j++, i++) {
- int newpos = base + toInt (j * 4, LONG);
- fseek (f, newpos, SEEK_SET);
- directory[i] = new TagDirectory (parent, f, base, attrib->subdirAttribs, order);
- }
-
- // set the terminating NULL
- directory[sdcount] = nullptr;
- } else {
+ if (fread (value, 1, valuesize, f) != static_cast(valuesize)) {
type = INVALID;
- }
+ } else {
+ // count the number of valid subdirs
+ int sdcount = count;
+ if (sdcount > 0) {
+ if (parent->getAttribTable() == olympusAttribs) {
+ sdcount = 1;
+ }
+
+ // allocate space
+ directory = new TagDirectory*[sdcount + 1];
+
+ // load directories
+ for (size_t j = 0, i = 0; j < count; j++, i++) {
+ int newpos = base + toInt (j * 4, LONG);
+ fseek (f, newpos, SEEK_SET);
+ directory[i] = new TagDirectory (parent, f, base, attrib->subdirAttribs, order);
+ }
+
+ // set the terminating NULL
+ directory[sdcount] = nullptr;
+ } else {
+ type = INVALID;
+ }
+ }
// seek back to the saved position
fseek (f, save, SEEK_SET);
return;
@@ -2104,10 +2108,12 @@ void ExifManager::parseCIFF ()
TagDirectory* root = new TagDirectory (nullptr, ifdAttribs, INTEL);
Tag* exif = new Tag (root, lookupAttrib (ifdAttribs, "Exif"));
exif->initSubDir ();
- Tag* mn = new Tag (exif->getDirectory(), lookupAttrib (exifAttribs, "MakerNote"));
- mn->initMakerNote (IFD, canonAttribs);
root->addTag (exif);
- exif->getDirectory()->addTag (mn);
+ if (exif) {
+ Tag* mn = new Tag (exif->getDirectory(), lookupAttrib (exifAttribs, "MakerNote"));
+ mn->initMakerNote (IFD, canonAttribs);
+ exif->getDirectory()->addTag (mn);
+ }
parseCIFF (rml->ciffLength, root);
root->sort ();
}
@@ -2143,10 +2149,14 @@ void ExifManager::parseCIFF (int length, TagDirectory* root)
char buffer[1024];
Tag* t;
- fseek (f, rml->ciffBase + length - 4, SEEK_SET);
+ if (fseek(f, rml->ciffBase + length - 4, SEEK_SET)) {
+ return;
+ }
int dirStart = get4 (f, INTEL) + rml->ciffBase;
- fseek (f, dirStart, SEEK_SET);
+ if (fseek(f, dirStart, SEEK_SET)) {
+ return;
+ }
int numOfTags = get2 (f, INTEL);
@@ -2508,7 +2518,7 @@ parse_leafdata (TagDirectory* root, ByteOrder order)
root->addTagFront (exif);
}
- if (!exif->getDirectory()->getTag ("ISOSpeedRatings")) {
+ if (exif && !exif->getDirectory()->getTag ("ISOSpeedRatings")) {
Tag *t = new Tag (exif->getDirectory(), exif->getDirectory()->getAttrib ("ISOSpeedRatings"));
t->initInt (iso_speed, LONG);
exif->getDirectory()->addTagFront (t);
@@ -2834,7 +2844,7 @@ void ExifManager::parse (bool isRaw, bool skipIgnored)
exif->initSubDir (exifdir);
root->addTagFront (exif);
- if (!exif->getDirectory()->getTag ("ISOSpeedRatings") && exif->getDirectory()->getTag ("ExposureIndex")) {
+ if (exif && !exif->getDirectory()->getTag ("ISOSpeedRatings") && exif->getDirectory()->getTag ("ExposureIndex")) {
Tag* niso = new Tag (exif->getDirectory(), exif->getDirectory()->getAttrib ("ISOSpeedRatings"));
niso->initInt (exif->getDirectory()->getTag ("ExposureIndex")->toInt(), SHORT);
exif->getDirectory()->addTagFront (niso);
diff --git a/rtexif/rtexif.h b/rtexif/rtexif.h
index 1beba92ec..2b68a6754 100644
--- a/rtexif/rtexif.h
+++ b/rtexif/rtexif.h
@@ -155,11 +155,11 @@ public:
virtual Tag* findTagUpward (const char* name) const;
bool getXMPTagValue (const char* name, char* value) const;
- void keepTag (int ID);
- virtual void addTag (Tag* a);
- virtual void addTagFront (Tag* a);
- virtual void replaceTag (Tag* a);
- inline Tag* getTagByIndex (int ix)
+ void keepTag (int ID);
+ void addTag (Tag* &a);
+ void addTagFront (Tag* &a);
+ void replaceTag (Tag* a);
+ inline Tag* getTagByIndex (int ix)
{
return tags[ix];
}
@@ -171,7 +171,7 @@ public:
virtual int calculateSize ();
virtual int write (int start, unsigned char* buffer);
virtual TagDirectory* clone (TagDirectory* parent);
- virtual void applyChange (std::string field, Glib::ustring value);
+ void applyChange (const std::string &field, const Glib::ustring &value);
virtual void printAll (unsigned int level = 0) const; // reentrant debug function, keep level=0 on first call !
virtual bool CPBDump (const Glib::ustring &commFName, const Glib::ustring &imageFName, const Glib::ustring &profileFName, const Glib::ustring &defaultPParams,
@@ -191,10 +191,10 @@ public:
TagDirectoryTable();
TagDirectoryTable (TagDirectory* p, unsigned char *v, int memsize, int offs, TagType type, const TagAttrib* ta, ByteOrder border);
TagDirectoryTable (TagDirectory* p, FILE* f, int memsize, int offset, TagType type, const TagAttrib* ta, ByteOrder border);
- virtual ~TagDirectoryTable();
- virtual int calculateSize ();
- virtual int write (int start, unsigned char* buffer);
- virtual TagDirectory* clone (TagDirectory* parent);
+ ~TagDirectoryTable() override;
+ int calculateSize () override;
+ int write (int start, unsigned char* buffer) override;
+ TagDirectory* clone (TagDirectory* parent) override;
};
// a class representing a single tag
@@ -488,7 +488,7 @@ protected:
std::map choices;
public:
ChoiceInterpreter () {};
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::map::iterator r = choices.find (t->toInt());
diff --git a/rtexif/sonyminoltaattribs.cc b/rtexif/sonyminoltaattribs.cc
index 76ed788c2..04cb6a548 100644
--- a/rtexif/sonyminoltaattribs.cc
+++ b/rtexif/sonyminoltaattribs.cc
@@ -1150,7 +1150,7 @@ public:
};
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int lensID = t->toInt();
Tag *lensInfoTag = t->getParent()->getRoot()->findTag ("LensInfo");
@@ -1297,7 +1297,7 @@ public:
choices.insert (p_t (51507, "Samyang AF 35mm f/1.4"));
}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int lensID = t->toInt();
Tag *lensInfoTag = t->getParent()->getRoot()->findTag ("LensInfo");
@@ -2091,7 +2091,7 @@ class SAExposureTimeInterpreter : public Interpreter
{
public:
SAExposureTimeInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
double a = t->toDouble();
@@ -2103,7 +2103,7 @@ public:
return "n/a";
}
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
// Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT
TagType astype = t->getType();
@@ -2122,7 +2122,7 @@ public:
return 0.;
}
}
- virtual int toInt (const Tag* t, int ofs, TagType astype)
+ int toInt (const Tag* t, int ofs, TagType astype) override
{
// Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT
int a = 0;
@@ -2151,7 +2151,7 @@ class SAFNumberInterpreter : public Interpreter
{
public:
SAFNumberInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
double a = double (t->toDouble());
@@ -2163,7 +2163,7 @@ public:
return "n/a";
}
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
// Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT
TagType astype = t->getType();
@@ -2182,7 +2182,7 @@ public:
return 0.;
}
}
- virtual int toInt (const Tag* t, int ofs, TagType astype)
+ int toInt (const Tag* t, int ofs, TagType astype) override
{
// Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT
int a = 0;
@@ -2211,7 +2211,7 @@ class SAISOSettingInterpreter : public Interpreter
{
public:
SAISOSettingInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->toInt();
@@ -2223,7 +2223,7 @@ public:
return "Auto";
}
}
- virtual int toInt (const Tag* t, int ofs, TagType astype)
+ int toInt (const Tag* t, int ofs, TagType astype) override
{
// Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT
int a = 0;
@@ -2252,14 +2252,14 @@ class SAExposureCompSetInterpreter : public Interpreter
{
public:
SAExposureCompSetInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
double a = t->toDouble();
char buffer[32];
sprintf (buffer, "%.2f", a );
return buffer;
}
- virtual double toDouble (const Tag* t, int ofs)
+ double toDouble (const Tag* t, int ofs) override
{
// Get the value
int a = t->getValue()[ofs];
@@ -2273,13 +2273,13 @@ class SAAFMicroAdjValueInterpreter : public Interpreter
{
public:
SAAFMicroAdjValueInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
sprintf (buffer, "%d", t->getValue()[0] - 20);
return buffer;
}
- virtual int toInt (const Tag* t, int ofs, TagType astype)
+ int toInt (const Tag* t, int ofs, TagType astype) override
{
return t->getValue()[0] - 20;
}
@@ -2290,7 +2290,7 @@ class SAAFMicroAdjModeInterpreter : public Interpreter
{
public:
SAAFMicroAdjModeInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int a = t->getValue()[0] & 0x80;
@@ -2300,7 +2300,7 @@ public:
return "Off";
}
- virtual int toInt (const Tag* t, int ofs, TagType astype)
+ int toInt (const Tag* t, int ofs, TagType astype) override
{
return (t->getValue()[0] & 0x80) == 0x80 ? 1 : 0;
}
@@ -2312,13 +2312,13 @@ class SAAFMicroAdjRegisteredLensesInterpreter : public Interpreter
{
public:
SAAFMicroAdjRegisteredLensesInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
sprintf (buffer, "%d", t->getValue()[0] & 0x7f);
return buffer;
}
- virtual int toInt (const Tag* t, int ofs, TagType astype)
+ int toInt (const Tag* t, int ofs, TagType astype) override
{
return t->getValue()[0] & 0x7f;
}
@@ -2329,7 +2329,7 @@ class SAFocusStatusInterpreter : public Interpreter
{
public:
SAFocusStatusInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
std::string retval;
int a = t->toInt();
@@ -2368,13 +2368,13 @@ class SAColorTemperatureSettingInterpreter : public Interpreter
{
public:
SAColorTemperatureSettingInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
sprintf (buffer, "%d", t->toInt());
return buffer;
}
- virtual int toInt (const Tag* t, int ofs, TagType astype)
+ int toInt (const Tag* t, int ofs, TagType astype) override
{
int a = 0;
diff --git a/rtexif/stdattribs.cc b/rtexif/stdattribs.cc
index fc1383839..76ba1f633 100644
--- a/rtexif/stdattribs.cc
+++ b/rtexif/stdattribs.cc
@@ -327,7 +327,7 @@ class FNumberInterpreter : public Interpreter
{
public:
FNumberInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
double v = t->toDouble();
@@ -346,7 +346,7 @@ class ApertureInterpreter : public Interpreter
{
public:
ApertureInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
double v = pow (2.0, t->toDouble() / 2.0);
@@ -365,7 +365,7 @@ class ExposureBiasInterpreter : public Interpreter
{
public:
ExposureBiasInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
double v = t->toDouble();
@@ -384,7 +384,7 @@ class ShutterSpeedInterpreter : public Interpreter
{
public:
ShutterSpeedInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
double d = pow (2.0, -t->toDouble());
@@ -404,7 +404,7 @@ class ExposureTimeInterpreter : public Interpreter
{
public:
ExposureTimeInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
double d = t->toDouble();
@@ -424,7 +424,7 @@ class FocalLengthInterpreter : public Interpreter
{
public:
FocalLengthInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char buffer[32];
double v = t->toDouble();
@@ -443,7 +443,7 @@ class UserCommentInterpreter : public Interpreter
{
public:
UserCommentInterpreter () {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int count = t->getCount();
@@ -563,7 +563,7 @@ public:
delete [] buffer;
return retVal;
}
- virtual void fromString (Tag* t, const std::string& value)
+ void fromString (Tag* t, const std::string& value) override
{
Glib::ustring tmpStr(value);
t->userCommentFromString (tmpStr);
@@ -575,7 +575,7 @@ class CFAInterpreter : public Interpreter
{
public:
CFAInterpreter() {}
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
char colors[] = "RGB";
char buffer[1024];
@@ -632,7 +632,7 @@ UTF8BinInterpreter utf8BinInterpreter;
class RawImageSegmentationInterpreter : public Interpreter
{
public:
- virtual std::string toString (Tag* t)
+ std::string toString (Tag* t) override
{
int segmentNumber = t->toInt(0, SHORT);
int segmentWidth = t->toInt(2, SHORT);
diff --git a/rtgui/adjuster.h b/rtgui/adjuster.h
index bd7f426ef..169bd7d12 100644
--- a/rtgui/adjuster.h
+++ b/rtgui/adjuster.h
@@ -87,7 +87,7 @@ public:
int delay;
Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep, double vdefault, Gtk::Image *imgIcon1 = nullptr, Gtk::Image *imgIcon2 = nullptr, double2double_fun slider2value = nullptr, double2double_fun value2slider = nullptr);
- virtual ~Adjuster ();
+ ~Adjuster () override;
// Add an "Automatic" checkbox next to the reset button.
void addAutoButton(Glib::ustring tooltip = "");
diff --git a/rtgui/batchqueue.h b/rtgui/batchqueue.h
index a922e5e1f..c05ca54fe 100644
--- a/rtgui/batchqueue.h
+++ b/rtgui/batchqueue.h
@@ -44,7 +44,7 @@ class BatchQueue final :
{
public:
explicit BatchQueue (FileCatalog* aFileCatalog);
- ~BatchQueue ();
+ ~BatchQueue () override;
void addEntries (const std::vector& entries, bool head = false, bool save = true);
void cancelItems (const std::vector& items);
@@ -62,17 +62,17 @@ public:
return (!fd.empty());
}
- void setProgress(double p);
- void setProgressStr(const Glib::ustring& str);
- void setProgressState(bool inProcessing);
- void error(const Glib::ustring& descr);
- rtengine::ProcessingJob* imageReady(rtengine::IImagefloat* img);
+ void setProgress(double p) override;
+ void setProgressStr(const Glib::ustring& str) override;
+ void setProgressState(bool inProcessing) override;
+ void error(const Glib::ustring& descr) override;
+ rtengine::ProcessingJob* imageReady(rtengine::IImagefloat* img) override;
- void rightClicked (ThumbBrowserEntryBase* entry);
- void doubleClicked (ThumbBrowserEntryBase* entry);
- bool keyPressed (GdkEventKey* event);
- void buttonPressed (LWButton* button, int actionCode, void* actionData);
- void redrawNeeded (LWButton* button);
+ void rightClicked (ThumbBrowserEntryBase* entry) override;
+ void doubleClicked (ThumbBrowserEntryBase* entry) override;
+ bool keyPressed (GdkEventKey* event) override;
+ void buttonPressed (LWButton* button, int actionCode, void* actionData) override;
+ void redrawNeeded (LWButton* button) override;
void setBatchQueueListener (BatchQueueListener* l)
{
@@ -86,9 +86,9 @@ public:
static int calcMaxThumbnailHeight();
protected:
- int getMaxThumbnailHeight() const;
- void saveThumbnailHeight (int height);
- int getThumbnailHeight ();
+ int getMaxThumbnailHeight() const override;
+ void saveThumbnailHeight (int height) override;
+ int getThumbnailHeight () override;
Glib::ustring autoCompleteFileName (const Glib::ustring& fileName, const Glib::ustring& format);
Glib::ustring getTempFilenameForParams( const Glib::ustring &filename );
diff --git a/rtgui/batchqueueentry.h b/rtgui/batchqueueentry.h
index caf1b8eff..2b75922b7 100644
--- a/rtgui/batchqueueentry.h
+++ b/rtgui/batchqueueentry.h
@@ -56,21 +56,21 @@ public:
bool fast_pipeline;
BatchQueueEntry (rtengine::ProcessingJob* job, const rtengine::procparams::ProcParams& pparams, Glib::ustring fname, int prevw, int prevh, Thumbnail* thm = nullptr);
- ~BatchQueueEntry ();
+ ~BatchQueueEntry () override;
- void refreshThumbnailImage ();
- void calcThumbnailSize ();
+ void refreshThumbnailImage () override;
+ void calcThumbnailSize () override;
- void drawProgressBar (Glib::RefPtr win, const Gdk::RGBA& foregr, const Gdk::RGBA& backgr, int x, int w, int y, int h);
+ void drawProgressBar (Glib::RefPtr win, const Gdk::RGBA& foregr, const Gdk::RGBA& backgr, int x, int w, int y, int h) override;
void removeButtonSet ();
- virtual std::vector > getIconsOnImageArea ();
- virtual void getIconSize (int& w, int& h);
- virtual Glib::ustring getToolTip (int x, int y);
+ std::vector > getIconsOnImageArea () override;
+ void getIconSize (int& w, int& h) override;
+ Glib::ustring getToolTip (int x, int y) override;
// bqentryupdatelistener interface
- void updateImage (guint8* img, int w, int h, int origw, int origh, guint8* newOPreview);
+ void updateImage (guint8* img, int w, int h, int origw, int origh, guint8* newOPreview) override;
void _updateImage (guint8* img, int w, int h); // inside gtk thread
};
diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h
index e21e01352..a1ee7326f 100644
--- a/rtgui/batchqueuepanel.h
+++ b/rtgui/batchqueuepanel.h
@@ -59,7 +59,7 @@ class BatchQueuePanel : public Gtk::VBox,
public:
explicit BatchQueuePanel (FileCatalog* aFileCatalog);
- ~BatchQueuePanel();
+ ~BatchQueuePanel() override;
void init (RTWindow* parent);
@@ -69,8 +69,8 @@ public:
bool handleShortcutKey (GdkEventKey* event);
// batchqueuelistener interface
- void queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage);
- bool canStartNext();
+ void queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage) override;
+ bool canStartNext() override;
private:
void startBatchProc ();
diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc
index cc9fa96e4..31e475811 100644
--- a/rtgui/batchtoolpanelcoord.cc
+++ b/rtgui/batchtoolpanelcoord.cc
@@ -107,7 +107,7 @@ void BatchToolPanelCoordinator::initSession ()
// compare all the ProcParams and describe which parameters has different (i.e. inconsistent) values in pparamsEdited
pparamsEdited.initFrom (initialPP);
- crop->setDimensions (100000, 100000);
+ //crop->setDimensions (100000, 100000);
/* if (!selected.empty()) {
pparams = selected[0]->getProcParams ();
@@ -126,6 +126,10 @@ void BatchToolPanelCoordinator::initSession ()
pparams = selected[0]->getProcParams ();
coarse->initBatchBehavior ();
+
+ int w,h;
+ selected[0]->getOriginalSize(w,h);
+ crop->setDimensions (w, h);
if (selected.size() == 1) {
diff --git a/rtgui/batchtoolpanelcoord.h b/rtgui/batchtoolpanelcoord.h
index 204750047..f5889f967 100644
--- a/rtgui/batchtoolpanelcoord.h
+++ b/rtgui/batchtoolpanelcoord.h
@@ -67,7 +67,7 @@ public:
// wbprovider interface
void getAutoWB (double& temp, double& green, double equal, double tempBias) override;
- void getCamWB (double& temp, double& green);
+ void getCamWB (double& temp, double& green) override;
// thumbnaillistener interface
void procParamsChanged (Thumbnail* thm, int whoChangedIt) override;
diff --git a/rtgui/bayerpreprocess.h b/rtgui/bayerpreprocess.h
index 18bf35026..e06a46d31 100644
--- a/rtgui/bayerpreprocess.h
+++ b/rtgui/bayerpreprocess.h
@@ -41,17 +41,17 @@ public:
BayerPreProcess ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
- void adjusterChanged(Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void adjusterChanged(Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
void hotDeadPixelChanged();
void setAdjusterBehavior (bool linedenoiseadd, bool greenequiladd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
void lineDenoiseDirectionChanged();
void pdafLinesFilterChanged();
};
diff --git a/rtgui/bayerprocess.h b/rtgui/bayerprocess.h
index b0974e7a4..df0c39d00 100644
--- a/rtgui/bayerprocess.h
+++ b/rtgui/bayerprocess.h
@@ -70,24 +70,24 @@ protected:
public:
BayerProcess ();
- ~BayerProcess ();
+ ~BayerProcess () override;
- void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
+ void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
void setAdjusterBehavior(bool falsecoloradd, bool iteradd, bool dualdemozecontrastadd, bool pssigmaadd, bool pssmoothadd, bool pseperisoadd);
- void trimValues(rtengine::procparams::ProcParams* pp);
- void setBatchMode(bool batchMode);
- void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
+ void trimValues(rtengine::procparams::ProcParams* pp) override;
+ void setBatchMode(bool batchMode) override;
+ void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
void methodChanged();
void imageNumberChanged();
- void adjusterChanged(Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
- void checkBoxToggled(CheckBox* c, CheckValue newval);
+ void adjusterChanged(Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
+ void checkBoxToggled(CheckBox* c, CheckValue newval) override;
void pixelShiftMotionMethodChanged();
void pixelShiftDemosaicMethodChanged();
- void autoContrastChanged (double autoContrast);
- void FrameCountChanged(int n, int frameNum);
+ void autoContrastChanged (double autoContrast) override;
+ void FrameCountChanged(int n, int frameNum) override;
};
#endif
diff --git a/rtgui/bayerrawexposure.h b/rtgui/bayerrawexposure.h
index a368eea3f..08d415838 100644
--- a/rtgui/bayerrawexposure.h
+++ b/rtgui/bayerrawexposure.h
@@ -38,15 +38,15 @@ public:
BayerRAWExposure ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
- void checkBoxToggled (CheckBox* c, CheckValue newval);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
+ void checkBoxToggled (CheckBox* c, CheckValue newval) override;
void setAdjusterBehavior (bool pexblackadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
};
#endif
diff --git a/rtgui/blackwhite.h b/rtgui/blackwhite.h
index 43e4b5384..45f1e5b7b 100644
--- a/rtgui/blackwhite.h
+++ b/rtgui/blackwhite.h
@@ -39,32 +39,32 @@ class BlackWhite final :
public:
BlackWhite ();
- ~BlackWhite ();
+ ~BlackWhite () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void autoOpenCurve ();
- void setEditProvider (EditDataProvider *provider);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void autoOpenCurve () override;
+ void setEditProvider (EditDataProvider *provider) override;
void autoch_toggled ();
void neutral_pressed ();
void updateRGBLabel ();
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
void setAdjusterBehavior (bool bwadd, bool bwgadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
void enabledcc_toggled ();
- void enabledChanged ();
+ void enabledChanged () override;
void methodChanged ();
void filterChanged ();
void settingChanged ();
- virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller);
- void BWChanged (double redbw, double greenbw, double bluebw);
+ void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
+ void BWChanged (double redbw, double greenbw, double bluebw) override;
bool BWComputed_ ();
- void curveChanged (CurveEditor* ce);
+ void curveChanged (CurveEditor* ce) override;
void curveMode1Changed ();
bool curveMode1Changed_ ();
void curveMode1Changed2 ();
diff --git a/rtgui/cacheimagedata.h b/rtgui/cacheimagedata.h
index d204f1ff9..f146f2ce0 100644
--- a/rtgui/cacheimagedata.h
+++ b/rtgui/cacheimagedata.h
@@ -87,30 +87,30 @@ public:
// FramesMetaData interface
//-------------------------------------------------------------------------
- unsigned int getRootCount () const { return -1; }
- unsigned int getFrameCount () const { return frameCount; }
- bool hasExif (unsigned int frame = 0) const { return false; }
- rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const { return nullptr; }
- rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const { return nullptr; }
- rtexif::TagDirectory* getBestExifData (rtengine::ImageSource *imgSource, rtengine::procparams::RAWParams *rawParams) const { return nullptr; }
- bool hasIPTC (unsigned int frame = 0) const { return false; }
- rtengine::procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const { return rtengine::procparams::IPTCPairs(); }
- tm getDateTime (unsigned int frame = 0) const { return tm{}; }
- time_t getDateTimeAsTS(unsigned int frame = 0) const { return time_t(-1); }
- int getISOSpeed (unsigned int frame = 0) const { return iso; }
- double getFNumber (unsigned int frame = 0) const { return fnumber; }
- double getFocalLen (unsigned int frame = 0) const { return focalLen; }
- double getFocalLen35mm (unsigned int frame = 0) const { return focalLen35mm; }
- float getFocusDist (unsigned int frame = 0) const { return focusDist; }
- double getShutterSpeed (unsigned int frame = 0) const { return shutter; }
- double getExpComp (unsigned int frame = 0) const { return atof(expcomp.c_str()); }
- std::string getMake (unsigned int frame = 0) const { return camMake; }
- std::string getModel (unsigned int frame = 0) const { return camModel; }
- std::string getLens (unsigned int frame = 0) const { return lens; }
- std::string getOrientation (unsigned int frame = 0) const { return ""; } // TODO
- bool getPixelShift () const { return isPixelShift; }
- bool getHDR (unsigned int frame = 0) const { return isHDR; }
- std::string getImageType (unsigned int frame) const { return isPixelShift ? "PS" : isHDR ? "HDR" : "STD"; }
- rtengine::IIOSampleFormat getSampleFormat (unsigned int frame = 0) const { return sampleFormat; }
+ unsigned int getRootCount () const override { return -1; }
+ unsigned int getFrameCount () const override { return frameCount; }
+ bool hasExif (unsigned int frame = 0) const override { return false; }
+ rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const override { return nullptr; }
+ rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const override { return nullptr; }
+ rtexif::TagDirectory* getBestExifData (rtengine::ImageSource *imgSource, rtengine::procparams::RAWParams *rawParams) const override { return nullptr; }
+ bool hasIPTC (unsigned int frame = 0) const override { return false; }
+ rtengine::procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const override { return rtengine::procparams::IPTCPairs(); }
+ tm getDateTime (unsigned int frame = 0) const override { return tm{}; }
+ time_t getDateTimeAsTS(unsigned int frame = 0) const override { return time_t(-1); }
+ int getISOSpeed (unsigned int frame = 0) const override { return iso; }
+ double getFNumber (unsigned int frame = 0) const override { return fnumber; }
+ double getFocalLen (unsigned int frame = 0) const override { return focalLen; }
+ double getFocalLen35mm (unsigned int frame = 0) const override { return focalLen35mm; }
+ float getFocusDist (unsigned int frame = 0) const override { return focusDist; }
+ double getShutterSpeed (unsigned int frame = 0) const override { return shutter; }
+ double getExpComp (unsigned int frame = 0) const override { return atof(expcomp.c_str()); }
+ std::string getMake (unsigned int frame = 0) const override { return camMake; }
+ std::string getModel (unsigned int frame = 0) const override { return camModel; }
+ std::string getLens (unsigned int frame = 0) const override { return lens; }
+ std::string getOrientation (unsigned int frame = 0) const override { return ""; } // TODO
+ bool getPixelShift () const override { return isPixelShift; }
+ bool getHDR (unsigned int frame = 0) const override { return isHDR; }
+ std::string getImageType (unsigned int frame) const override { return isPixelShift ? "PS" : isHDR ? "HDR" : "STD"; }
+ rtengine::IIOSampleFormat getSampleFormat (unsigned int frame = 0) const override { return sampleFormat; }
};
#endif
diff --git a/rtgui/cacorrection.h b/rtgui/cacorrection.h
index 2de510968..198037060 100644
--- a/rtgui/cacorrection.h
+++ b/rtgui/cacorrection.h
@@ -34,15 +34,15 @@ public:
CACorrection ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
void setAdjusterBehavior (bool badd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
};
#endif
diff --git a/rtgui/chmixer.h b/rtgui/chmixer.h
index 0ec28da3d..7e372cbc2 100644
--- a/rtgui/chmixer.h
+++ b/rtgui/chmixer.h
@@ -36,16 +36,16 @@ public:
ChMixer ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
void setAdjusterBehavior (bool rgbadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
- void enabledChanged();
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
+ void enabledChanged() override;
};
#endif
diff --git a/rtgui/coarsepanel.h b/rtgui/coarsepanel.h
index 7ac1bccc5..bd4668eea 100644
--- a/rtgui/coarsepanel.h
+++ b/rtgui/coarsepanel.h
@@ -37,8 +37,8 @@ public:
CoarsePanel ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
void initBatchBehavior ();
void rotateLeft ();
diff --git a/rtgui/colorappearance.h b/rtgui/colorappearance.h
index 5dd8a2e82..3f95d9f74 100644
--- a/rtgui/colorappearance.h
+++ b/rtgui/colorappearance.h
@@ -38,16 +38,16 @@ class ColorAppearance final :
{
public:
ColorAppearance ();
- ~ColorAppearance ();
+ ~ColorAppearance () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
// void adjusterAdapToggled (Adjuster* a, bool newval);
- void enabledChanged ();
+ void enabledChanged () override;
void surroundChanged ();
void surrsrcChanged ();
void wbmodelChanged ();
@@ -58,14 +58,14 @@ public:
void datacie_toggled ();
void tonecie_toggled ();
// void sharpcie_toggled ();
- void autoCamChanged (double ccam, double ccamout);
+ void autoCamChanged (double ccam, double ccamout) override;
bool autoCamComputed_ ();
- void adapCamChanged (double cadap);
+ void adapCamChanged (double cadap) override;
bool adapCamComputed_ ();
- void ybCamChanged (int yb);
+ void ybCamChanged (int yb) override;
bool ybCamComputed_ ();
- void curveChanged (CurveEditor* ce);
+ void curveChanged (CurveEditor* ce) override;
void curveMode1Changed ();
bool curveMode1Changed_ ();
void curveMode2Changed ();
@@ -76,10 +76,10 @@ public:
void expandCurve (bool isExpanded);
bool isCurveExpanded ();
- void autoOpenCurve ();
+ void autoOpenCurve () override;
void setAdjusterBehavior (bool degreeadd, bool adapscenadd, bool adaplumadd, bool badpixsladd, bool jlightadd, bool chromaadd, bool contrastadd, bool rstprotectionadd, bool qbrightadd, bool qcontrastadd, bool schromaadd, bool mchromaadd, bool colorhadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
void updateCurveBackgroundHistogram(
const LUTu& histToneCurve,
const LUTu& histLCurve,
@@ -92,7 +92,7 @@ public:
const LUTu& histLuma,
const LUTu& histLRETI
);
- virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller *caller);
+ void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller *caller) override;
void updateToolState (std::vector &tpOpen);
void writeOptions (std::vector &tpOpen);
diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc
index 3ec149a0a..ec89118df 100644
--- a/rtgui/colortoning.cc
+++ b/rtgui/colortoning.cc
@@ -361,14 +361,19 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR
EvLabRegionAB = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_AB");
EvLabRegionSaturation = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_SATURATION");
EvLabRegionLightness = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS");
+ EvLabRegionSlope = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_SLOPE");
+ EvLabRegionOffset = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_OFFSET");
+ EvLabRegionPower = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_POWER");
EvLabRegionHueMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_HUEMASK");
EvLabRegionChromaticityMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK");
EvLabRegionLightnessMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK");
+ EvLabRegionMaskBlur = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR");
EvLabRegionShowMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK");
+ EvLabRegionChannel = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_CHANNEL");
labRegionBox = Gtk::manage(new Gtk::VBox());
labRegionList = Gtk::manage(new Gtk::ListViewText(3));
- labRegionList->set_size_request(-1, 100);
+ labRegionList->set_size_request(-1, 150);
labRegionList->set_can_focus(false);
labRegionList->set_column_title(0, "#");
labRegionList->set_column_title(1, M("TP_COLORTONING_LABREGION_LIST_TITLE"));
@@ -394,6 +399,10 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR
labRegionDown->add(*Gtk::manage(new RTImage("arrow-down-small.png")));
labRegionDown->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionDownPressed));
add_button(labRegionDown, vb);
+ labRegionCopy = Gtk::manage(new Gtk::Button());
+ labRegionCopy->add(*Gtk::manage(new RTImage("arrow-right-small.png")));
+ labRegionCopy->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionCopyPressed));
+ add_button(labRegionCopy, vb);
hb->pack_start(*vb, Gtk::PACK_SHRINK);
labRegionBox->pack_start(*hb, true, true);
@@ -403,9 +412,33 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR
labRegionSaturation = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_SATURATION"), -100, 100, 1, 0));
labRegionSaturation->setAdjusterListener(this);
labRegionBox->pack_start(*labRegionSaturation);
- labRegionLightness = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_LIGHTNESS"), -100, 100, 1, 0));
- labRegionLightness->setAdjusterListener(this);
- labRegionBox->pack_start(*labRegionLightness);
+
+ labRegionSlope = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_SLOPE"), 0.1, 4.0, 0.001, 1));
+ labRegionSlope->setLogScale(4, 0.1);
+ labRegionSlope->setAdjusterListener(this);
+ labRegionBox->pack_start(*labRegionSlope);
+ labRegionOffset = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_OFFSET"), -0.1, 0.1, 0.001, 0));
+ labRegionOffset->setAdjusterListener(this);
+ labRegionBox->pack_start(*labRegionOffset);
+ labRegionPower = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_POWER"), 0.1, 4.0, 0.001, 1));
+ labRegionPower->setAdjusterListener(this);
+ labRegionPower->setLogScale(4, 0.1);
+ labRegionBox->pack_start(*labRegionPower);
+
+ hb = Gtk::manage(new Gtk::HBox());
+ labRegionChannel = Gtk::manage(new MyComboBoxText());
+ labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_ALL"));
+ labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_R"));
+ labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_G"));
+ labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_B"));
+ labRegionChannel->set_active(0);
+ labRegionChannel->signal_changed().connect(sigc::mem_fun(*this, &ColorToning::labRegionChannelChanged));
+
+ hb->pack_start(*Gtk::manage(new Gtk::Label(M("TP_COLORTONING_LABREGION_CHANNEL") + ": ")), Gtk::PACK_SHRINK);
+ hb->pack_start(*labRegionChannel);
+ labRegionBox->pack_start(*hb);
+
+ labRegionBox->pack_start(*Gtk::manage(new Gtk::HSeparator()));
CurveEditorGroup *labRegionEditorG = Gtk::manage(new CurveEditorGroup(options.lastColorToningCurvesDir, M("TP_COLORTONING_LABREGION_MASK")));
labRegionEditorG->setCurveListener(this);
@@ -440,11 +473,22 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR
labRegionEditorG->show();
labRegionBox->pack_start(*labRegionEditorG, Gtk::PACK_SHRINK, 2);
+ labRegionMaskBlur = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_MASKBLUR"), -10, 100, 0.1, 0));
+ labRegionMaskBlur->setLogScale(10, 0);
+ labRegionMaskBlur->setAdjusterListener(this);
+ labRegionBox->pack_start(*labRegionMaskBlur);
+
labRegionShowMask = Gtk::manage(new Gtk::CheckButton(M("TP_COLORTONING_LABREGION_SHOWMASK")));
labRegionShowMask->signal_toggled().connect(sigc::mem_fun(*this, &ColorToning::labRegionShowMaskChanged));
labRegionBox->pack_start(*labRegionShowMask, Gtk::PACK_SHRINK, 4);
pack_start(*labRegionBox, Gtk::PACK_EXPAND_WIDGET, 4);
+
+ labRegionSaturation->delay = options.adjusterMaxDelay;
+ labRegionSlope->delay = options.adjusterMaxDelay;
+ labRegionOffset->delay = options.adjusterMaxDelay;
+ labRegionPower->delay = options.adjusterMaxDelay;
+ labRegionMaskBlur->delay = options.adjusterMaxDelay;
//------------------------------------------------------------------------
show_all();
@@ -1335,8 +1379,14 @@ void ColorToning::adjusterChanged(Adjuster* a, double newval)
listener->panelChanged (EvColorToningStrength, a->getTextValue());
} else if (a == labRegionSaturation) {
listener->panelChanged(EvLabRegionSaturation, a->getTextValue());
- } else if (a == labRegionLightness) {
- listener->panelChanged(EvLabRegionLightness, a->getTextValue());
+ } else if (a == labRegionSlope) {
+ listener->panelChanged(EvLabRegionSlope, a->getTextValue());
+ } else if (a == labRegionOffset) {
+ listener->panelChanged(EvLabRegionOffset, a->getTextValue());
+ } else if (a == labRegionPower) {
+ listener->panelChanged(EvLabRegionPower, a->getTextValue());
+ } else if (a == labRegionMaskBlur) {
+ listener->panelChanged(EvLabRegionMaskBlur, a->getTextValue());
}
}
@@ -1395,10 +1445,14 @@ void ColorToning::labRegionGet(int idx)
double la, lb;
labRegionAB->getParams(la, lb, r.a, r.b);
r.saturation = labRegionSaturation->getValue();
- r.lightness = labRegionLightness->getValue();
+ r.slope = labRegionSlope->getValue();
+ r.offset = labRegionOffset->getValue();
+ r.power = labRegionPower->getValue();
r.hueMask = labRegionHueMask->getCurve();
r.chromaticityMask = labRegionChromaticityMask->getCurve();
r.lightnessMask = labRegionLightnessMask->getCurve();
+ r.maskBlur = labRegionMaskBlur->getValue();
+ r.channel = labRegionChannel->get_active_row_number() - 1;
}
@@ -1462,6 +1516,21 @@ void ColorToning::labRegionDownPressed()
}
+void ColorToning::labRegionCopyPressed()
+{
+ if (labRegionSelected < int(labRegionData.size())) {
+ auto r = labRegionData[labRegionSelected];
+ labRegionData.push_back(r);
+ labRegionSelected = labRegionData.size()-1;
+ labRegionPopulateList();
+
+ if (listener) {
+ listener->panelChanged(EvLabRegionList, M("HISTORY_CHANGED"));
+ }
+ }
+}
+
+
void ColorToning::labRegionShowMaskChanged()
{
if (listener) {
@@ -1479,13 +1548,26 @@ void ColorToning::labRegionPopulateList()
for (size_t i = 0; i < labRegionData.size(); ++i) {
auto &r = labRegionData[i];
auto j = labRegionList->append(std::to_string(i+1));
- labRegionList->set_text(j, 1, Glib::ustring::compose("a=%1 b=%2 s=%3 l=%4", round_ab(r.a), round_ab(r.b), r.saturation, r.lightness));
+ labRegionList->set_text(j, 1, Glib::ustring::compose("a=%1 b=%2 S=%3\ns=%4 o=%5 p=%6", round_ab(r.a), round_ab(r.b), r.saturation, r.slope, r.offset, r.power));
+ const char *ch = "";
+ switch (r.channel) {
+ case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_R:
+ ch = "\n[Red]"; break;
+ case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_G:
+ ch = "\n[Green]"; break;
+ case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_B:
+ ch = "\n[Blue]"; break;
+ default:
+ ch = "";
+ }
labRegionList->set_text(
j, 2, Glib::ustring::compose(
- "%1%2%3",
+ "%1%2%3%4%5",
hasMask(dflt.hueMask, r.hueMask) ? "H" : "",
hasMask(dflt.chromaticityMask, r.chromaticityMask) ? "C" : "",
- hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : ""));
+ hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : "",
+ r.maskBlur ? Glib::ustring::compose(" b=%1", r.maskBlur) : "",
+ ch));
}
}
@@ -1501,18 +1583,34 @@ void ColorToning::labRegionShow(int idx, bool list_only)
if (!list_only) {
labRegionAB->setParams(0, 0, r.a, r.b, false);
labRegionSaturation->setValue(r.saturation);
- labRegionLightness->setValue(r.lightness);
+ labRegionSlope->setValue(r.slope);
+ labRegionOffset->setValue(r.offset);
+ labRegionPower->setValue(r.power);
labRegionHueMask->setCurve(r.hueMask);
labRegionChromaticityMask->setCurve(r.chromaticityMask);
labRegionLightnessMask->setCurve(r.lightnessMask);
+ labRegionMaskBlur->setValue(r.maskBlur);
+ labRegionChannel->set_active(r.channel+1);
+ }
+ labRegionList->set_text(idx, 1, Glib::ustring::compose("a=%1 b=%2 S=%3\ns=%4 o=%5 p=%6", round_ab(r.a), round_ab(r.b), r.saturation, r.slope, r.offset, r.power));
+ const char *ch = "";
+ switch (r.channel) {
+ case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_R:
+ ch = "\n[Red]"; break;
+ case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_G:
+ ch = "\n[Green]"; break;
+ case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_B:
+ ch = "\n[Blue]"; break;
+ default:
+ ch = "";
}
- labRegionList->set_text(idx, 1, Glib::ustring::compose("a=%1 b=%2 s=%3 l=%4", round_ab(r.a), round_ab(r.b), r.saturation, r.lightness));
labRegionList->set_text(
idx, 2, Glib::ustring::compose(
- "%1%2%3",
+ "%1%2%3%4%5",
hasMask(dflt.hueMask, r.hueMask) ? "H" : "",
hasMask(dflt.chromaticityMask, r.chromaticityMask) ? "C" : "",
- hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : ""));
+ hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : "",
+ r.maskBlur ? Glib::ustring::compose(" b=%1", r.maskBlur) : "", ch));
Gtk::TreePath pth;
pth.push_back(idx);
labRegionList->get_selection()->select(pth);
@@ -1522,6 +1620,14 @@ void ColorToning::labRegionShow(int idx, bool list_only)
}
+void ColorToning::labRegionChannelChanged()
+{
+ if (listener) {
+ listener->panelChanged(EvLabRegionChannel, labRegionChannel->get_active_text());
+ }
+}
+
+
void ColorToning::setEditProvider(EditDataProvider *provider)
{
labRegionHueMask->setEditProvider(provider);
diff --git a/rtgui/colortoning.h b/rtgui/colortoning.h
index 8fb640cba..29a71b03b 100644
--- a/rtgui/colortoning.h
+++ b/rtgui/colortoning.h
@@ -25,41 +25,41 @@ class ColorToning final :
{
public:
ColorToning ();
- ~ColorToning();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void trimValues (rtengine::procparams::ProcParams* pp);
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
+ ~ColorToning() override;
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
void setAdjusterBehavior (bool splitAdd, bool satThresholdAdd, bool satOpacityAdd, bool strprotectAdd, bool balanceAdd);
void neutral_pressed ();
//void neutralCurves_pressed ();
- void autoColorTonChanged (int bwct, int satthres, int satprot);
+ void autoColorTonChanged (int bwct, int satthres, int satprot) override;
bool CTComp_ ();
- void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop);
- void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight);
- void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop);
- void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight);
- void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR);
+ void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override;
+ void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
- void enabledChanged ();
- void curveChanged (CurveEditor* ce);
+ void enabledChanged () override;
+ void curveChanged (CurveEditor* ce) override;
void autosatChanged ();
- void autoOpenCurve ();
+ void autoOpenCurve () override;
void methodChanged ();
void twocolorChanged (bool changedbymethod);
void twoColorChangedByGui ();
void lumamodeChanged ();
- void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller);
+ void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
- void setListener(ToolPanelListener *tpl);
+ void setListener(ToolPanelListener *tpl) override;
- void setEditProvider(EditDataProvider *provider);
- float blendPipetteValues(CurveEditor *ce, float chan1, float chan2, float chan3);
+ void setEditProvider(EditDataProvider *provider) override;
+ float blendPipetteValues(CurveEditor *ce, float chan1, float chan2, float chan3) override;
private:
void onLabRegionSelectionChanged();
@@ -67,7 +67,9 @@ private:
void labRegionRemovePressed();
void labRegionUpPressed();
void labRegionDownPressed();
+ void labRegionCopyPressed();
void labRegionShowMaskChanged();
+ void labRegionChannelChanged();
void labRegionPopulateList();
void labRegionShow(int idx, bool list_only=false);
void labRegionGet(int idx);
@@ -130,10 +132,15 @@ private:
rtengine::ProcEvent EvLabRegionAB;
rtengine::ProcEvent EvLabRegionSaturation;
rtengine::ProcEvent EvLabRegionLightness;
+ rtengine::ProcEvent EvLabRegionSlope;
+ rtengine::ProcEvent EvLabRegionOffset;
+ rtengine::ProcEvent EvLabRegionPower;
rtengine::ProcEvent EvLabRegionHueMask;
rtengine::ProcEvent EvLabRegionChromaticityMask;
rtengine::ProcEvent EvLabRegionLightnessMask;
+ rtengine::ProcEvent EvLabRegionMaskBlur;
rtengine::ProcEvent EvLabRegionShowMask;
+ rtengine::ProcEvent EvLabRegionChannel;
Gtk::VBox *labRegionBox;
Gtk::ListViewText *labRegionList;
@@ -141,12 +148,17 @@ private:
Gtk::Button *labRegionRemove;
Gtk::Button *labRegionUp;
Gtk::Button *labRegionDown;
+ Gtk::Button *labRegionCopy;
LabGrid *labRegionAB;
Adjuster *labRegionSaturation;
- Adjuster *labRegionLightness;
+ Adjuster *labRegionSlope;
+ Adjuster *labRegionOffset;
+ Adjuster *labRegionPower;
+ MyComboBoxText *labRegionChannel;
FlatCurveEditor *labRegionHueMask;
FlatCurveEditor *labRegionChromaticityMask;
FlatCurveEditor *labRegionLightnessMask;
+ Adjuster *labRegionMaskBlur;
Gtk::CheckButton *labRegionShowMask;
std::vector labRegionData;
int labRegionSelected;
diff --git a/rtgui/coordinateadjuster.h b/rtgui/coordinateadjuster.h
index 08f2fb479..33ea92bb2 100644
--- a/rtgui/coordinateadjuster.h
+++ b/rtgui/coordinateadjuster.h
@@ -136,7 +136,7 @@ public:
/// For more complex adjuster
CoordinateAdjuster(CoordinateProvider *provider, CurveEditorSubGroup *parent, const std::vector &axis);
- virtual ~CoordinateAdjuster();
+ ~CoordinateAdjuster() override;
// Update the Axis list, e.g. on Curve change, but MUST have the same axis count
void setAxis(const std::vector &axis);
diff --git a/rtgui/crop.cc b/rtgui/crop.cc
index d5b246107..2484b9060 100644
--- a/rtgui/crop.cc
+++ b/rtgui/crop.cc
@@ -99,89 +99,129 @@ Crop::Crop():
maxw = 3000;
maxh = 2000;
- Gtk::HBox* hb1 = Gtk::manage (new Gtk::HBox ());
+ methodgrid = Gtk::manage(new Gtk::Grid());
+ methodgrid->get_style_context()->add_class("grid-spacing");
+ setExpandAlignProperties(methodgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
- hb1->pack_start (*Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("TP_CROP_X") + ": ")));
+ Gtk::Label* xlab = Gtk::manage (new Gtk::Label (M("TP_CROP_X") + ":"));
+ setExpandAlignProperties(xlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+
x = Gtk::manage (new MySpinButton ());
- x->set_size_request (60, -1);
- hb1->pack_start (*x);
+ setExpandAlignProperties(x, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER);
+ x->set_width_chars(6);
- hb1->pack_start (*Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("TP_CROP_Y") + ": ")));
+ Gtk::Label* ylab = Gtk::manage (new Gtk::Label (M("TP_CROP_Y") + ":"));
+ setExpandAlignProperties(ylab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+
y = Gtk::manage (new MySpinButton ());
- y->set_size_request (60, -1);
- hb1->pack_start (*y);
-
- pack_start (*hb1, Gtk::PACK_SHRINK, 2);
-
- Gtk::HBox* hb2 = Gtk::manage (new Gtk::HBox ());
-
- hb2->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_W") + ": ")));
+ setExpandAlignProperties(y, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER);
+ y->set_width_chars(6);
+
+ Gtk::Label* wlab = Gtk::manage (new Gtk::Label (M("TP_CROP_W") + ":"));
+ setExpandAlignProperties(wlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+
w = Gtk::manage (new MySpinButton ());
- w->set_size_request (60, -1);
- hb2->pack_start (*w);
+ setExpandAlignProperties(w, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER);
+ w->set_width_chars(6);
- hb2->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_H") + ": ")));
+ Gtk::Label* hlab = Gtk::manage (new Gtk::Label (M("TP_CROP_H") + ":"));
+ setExpandAlignProperties(hlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+
h = Gtk::manage (new MySpinButton ());
- h->set_size_request (60, -1);
- hb2->pack_start (*h);
-
- pack_start (*hb2, Gtk::PACK_SHRINK, 4);
+ setExpandAlignProperties(h, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER);
+ h->set_width_chars(6);
selectCrop = Gtk::manage (new Gtk::Button (M("TP_CROP_SELECTCROP")));
+ setExpandAlignProperties(selectCrop, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
selectCrop->get_style_context()->add_class("independent");
selectCrop->set_image (*Gtk::manage (new RTImage ("crop-small.png")));
- pack_start (*selectCrop, Gtk::PACK_SHRINK, 2);
+ resetCrop = Gtk::manage (new Gtk::Button (M("TP_CROP_RESETCROP")));
+ setExpandAlignProperties(resetCrop, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
+ resetCrop->get_style_context()->add_class("independent");
+ resetCrop->set_image (*Gtk::manage (new RTImage ("undo-small.png")));
+
+ methodgrid->attach (*xlab, 0, 0, 1, 1);
+ methodgrid->attach (*x, 1, 0, 1, 1);
+ methodgrid->attach (*ylab, 2, 0, 1, 1);
+ methodgrid->attach (*y, 3, 0, 1, 1);
+ methodgrid->attach (*wlab, 0, 1, 1, 1);
+ methodgrid->attach (*w, 1, 1, 1, 1);
+ methodgrid->attach (*hlab, 2, 1, 1, 1);
+ methodgrid->attach (*h, 3, 1, 1, 1);
+ methodgrid->attach (*selectCrop, 0, 2, 2, 1);
+ methodgrid->attach (*resetCrop, 2, 2, 2, 1);
+ pack_start (*methodgrid, Gtk::PACK_EXPAND_WIDGET, 0 );
+
+ Gtk::HSeparator* methodseparator = Gtk::manage (new Gtk::HSeparator());
+ methodseparator->get_style_context()->add_class("grid-row-separator");
+ pack_start (*methodseparator, Gtk::PACK_SHRINK, 0);
- Gtk::HBox* hb3 = Gtk::manage (new Gtk::HBox ());
+ Gtk::Grid* settingsgrid = Gtk::manage(new Gtk::Grid());
+ settingsgrid->get_style_context()->add_class("grid-spacing");
+ setExpandAlignProperties(settingsgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
fixr = Gtk::manage (new Gtk::CheckButton (M("TP_CROP_FIXRATIO")));
+ setExpandAlignProperties(fixr, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
fixr->set_active (1);
- hb3->pack_start (*fixr, Gtk::PACK_SHRINK, 4);
-
ratio = Gtk::manage (new MyComboBoxText ());
- hb3->pack_start (*ratio, Gtk::PACK_EXPAND_WIDGET, 4);
+ setExpandAlignProperties(ratio, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
orientation = Gtk::manage (new MyComboBoxText ());
- hb3->pack_start (*orientation);
+ setExpandAlignProperties(orientation, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
- pack_start (*hb3, Gtk::PACK_SHRINK, 4);
-
- Gtk::HBox* hb31 = Gtk::manage (new Gtk::HBox ());
-
- hb31->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_GUIDETYPE"))), Gtk::PACK_SHRINK, 4);
+ Gtk::Label* guidelab = Gtk::manage (new Gtk::Label (M("TP_CROP_GUIDETYPE")));
+ setExpandAlignProperties(guidelab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+
guide = Gtk::manage (new MyComboBoxText ());
- hb31->pack_start (*guide);
+ setExpandAlignProperties(guide, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
+
+ settingsgrid->attach (*fixr, 0, 0, 1, 1);
+ settingsgrid->attach (*ratio, 1, 0, 1, 1);
+ settingsgrid->attach (*orientation, 2, 0, 1, 1);
+ settingsgrid->attach (*guidelab, 0, 1, 1, 1);
+ settingsgrid->attach (*guide, 1, 1, 2, 1);
+ pack_start (*settingsgrid, Gtk::PACK_SHRINK, 0 );
- pack_start (*hb31, Gtk::PACK_SHRINK, 4);
- // ppibox START
- ppibox = Gtk::manage (new Gtk::VBox());
- ppibox->pack_start (*Gtk::manage (new Gtk::HSeparator()), Gtk::PACK_SHRINK, 2);
+ // ppigrid START
+ ppigrid = Gtk::manage(new Gtk::Grid());
+ ppigrid->get_style_context()->add_class("grid-spacing");
+ ppigrid->set_column_homogeneous (true);
+ setExpandAlignProperties(ppigrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
- Gtk::HBox* hb4 = Gtk::manage (new Gtk::HBox ());
- hb4->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_PPI"))));
+ Gtk::HSeparator* ppiseparator = Gtk::manage (new Gtk::HSeparator());
+ ppiseparator->get_style_context()->add_class("grid-row-separator");
+
+ Gtk::Grid* ppisubgrid = Gtk::manage(new Gtk::Grid());
+ ppisubgrid->get_style_context()->add_class("grid-spacing");
+ setExpandAlignProperties(ppisubgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
+
+ Gtk::Label* ppilab = Gtk::manage (new Gtk::Label (M("TP_CROP_PPI")));
+ setExpandAlignProperties(ppilab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+
ppi = Gtk::manage (new MySpinButton ());
- ppi->set_size_request (60, -1);
- hb4->pack_start (*ppi);
-
- sizebox = Gtk::manage (new Gtk::VBox());
+ setExpandAlignProperties(ppi, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER);
+ ppi->set_width_chars(6);
+
+ ppisubgrid->attach (*ppilab, 0, 0, 1, 1);
+ ppisubgrid->attach (*ppi, 1, 0, 1, 1);
sizecm = Gtk::manage (new Gtk::Label (M("GENERAL_NA") + " cm x " + M("GENERAL_NA") + " cm"));
+ setExpandAlignProperties(sizecm, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
+
sizein = Gtk::manage (new Gtk::Label (M("GENERAL_NA") + " in x " + M("GENERAL_NA") + " in"));
-
- sizebox->pack_start (*sizecm, Gtk::PACK_SHRINK, 4);
- sizebox->pack_start (*Gtk::manage (new Gtk::HSeparator()), Gtk::PACK_SHRINK, 6);
- sizebox->pack_start (*sizein, Gtk::PACK_SHRINK, 4);
- sizebox->pack_start (*Gtk::manage (new Gtk::HSeparator()), Gtk::PACK_SHRINK, 6);
- sizebox->pack_start (*hb4, Gtk::PACK_SHRINK, 2);
-
- ppibox->pack_start (*sizebox, Gtk::PACK_SHRINK, 1);
- pack_start (*ppibox, Gtk::PACK_SHRINK, 0);
+ setExpandAlignProperties(sizein, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
+
+ ppigrid->attach (*ppiseparator, 0, 0, 2, 1);
+ ppigrid->attach (*sizecm, 1, 1, 1, 1);
+ ppigrid->attach (*sizein, 1, 2, 1, 1);
+ ppigrid->attach (*ppisubgrid, 0, 1, 1, 2);
+ pack_start (*ppigrid, Gtk::PACK_SHRINK, 0 );
ppi->set_value (300);
- // ppibox END
+ // ppigrid END
// Populate the combobox
for (const auto& crop_ratio : crop_ratios) {
@@ -241,6 +281,7 @@ Crop::Crop():
oconn = orientation->signal_changed().connect( sigc::mem_fun(*this, &Crop::ratioChanged) );
gconn = guide->signal_changed().connect( sigc::mem_fun(*this, &Crop::notifyListener) );
selectCrop->signal_pressed().connect( sigc::mem_fun(*this, &Crop::selectPressed) );
+ resetCrop->signal_pressed().connect( sigc::mem_fun(*this, &Crop::doresetCrop) );
ppi->signal_value_changed().connect( sigc::mem_fun(*this, &Crop::refreshSize) );
nx = ny = nw = nh = 0;
@@ -482,6 +523,23 @@ void Crop::selectPressed ()
}
}
+void Crop::doresetCrop ()
+{
+ xDirty = true;
+ yDirty = true;
+ wDirty = true;
+ hDirty = true;
+
+ int X = 0;
+ int Y = 0;
+ int W = maxw;
+ int H = maxh;
+ cropResized (X, Y, W, H);
+ idle_register.add(notifyListenerUI, this);
+
+ refreshSpins();
+}
+
void Crop::notifyListener ()
{
@@ -1296,5 +1354,7 @@ void Crop::setBatchMode (bool batchMode)
ratio->append (M("GENERAL_UNCHANGED"));
orientation->append (M("GENERAL_UNCHANGED"));
guide->append (M("GENERAL_UNCHANGED"));
- removeIfThere (this, ppibox);
+ removeIfThere (this, ppigrid);
+ removeIfThere (methodgrid, selectCrop);
+ removeIfThere (methodgrid, resetCrop);
}
diff --git a/rtgui/crop.h b/rtgui/crop.h
index d3b5c7b6b..a16683d1b 100644
--- a/rtgui/crop.h
+++ b/rtgui/crop.h
@@ -41,42 +41,43 @@ class Crop final :
{
public:
Crop();
- ~Crop();
+ ~Crop() override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
void ratioChanged ();
void ratioFixedChanged (); // The toggle button
void refreshSize ();
void selectPressed ();
+ void doresetCrop ();
void setDimensions (int mw, int mh);
- void enabledChanged ();
+ void enabledChanged () override;
void positionChanged ();
void widthChanged ();
void heightChanged ();
bool refreshSpins (bool notify = false);
void notifyListener ();
- void sizeChanged (int w, int h, int ow, int oh);
+ void sizeChanged (int w, int h, int ow, int oh) override;
void trim (rtengine::procparams::ProcParams* pp, int ow, int oh);
void readOptions ();
void writeOptions ();
- void cropMoved (int &x, int &y, int &w, int &h);
- void cropWidth1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f);
- void cropWidth2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f);
- void cropHeight1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f);
- void cropHeight2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f);
- void cropTopLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f);
- void cropTopRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f);
- void cropBottomLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f);
- void cropBottomRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f);
- void cropInit (int &x, int &y, int &w, int &h);
- void cropResized (int &x, int &y, int& x2, int& y2);
- void cropManipReady ();
- bool inImageArea (int x, int y);
- double getRatio () const;
+ void cropMoved (int &x, int &y, int &w, int &h) override;
+ void cropWidth1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override;
+ void cropWidth2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override;
+ void cropHeight1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override;
+ void cropHeight2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override;
+ void cropTopLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override;
+ void cropTopRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override;
+ void cropBottomLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override;
+ void cropBottomRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override;
+ void cropInit (int &x, int &y, int &w, int &h) override;
+ void cropResized (int &x, int &y, int& x2, int& y2) override;
+ void cropManipReady () override;
+ bool inImageArea (int x, int y) override;
+ double getRatio () const override;
void setCropPanelListener (CropPanelListener* cl)
{
@@ -102,7 +103,9 @@ private:
MyComboBoxText* ratio;
MyComboBoxText* orientation;
MyComboBoxText* guide;
+
Gtk::Button* selectCrop;
+ Gtk::Button* resetCrop;
CropPanelListener* clistener;
int opt;
MySpinButton* x;
@@ -112,8 +115,9 @@ private:
MySpinButton* ppi;
Gtk::Label* sizecm;
Gtk::Label* sizein;
- Gtk::VBox* ppibox;
- Gtk::VBox* sizebox;
+ Gtk::Grid* ppigrid;
+ Gtk::Grid* methodgrid;
+
int maxw, maxh;
double nx, ny;
int nw, nh;
diff --git a/rtgui/crophandler.h b/rtgui/crophandler.h
index 14dd5062d..2690ca002 100644
--- a/rtgui/crophandler.h
+++ b/rtgui/crophandler.h
@@ -51,7 +51,7 @@ class CropHandler final :
{
public:
CropHandler ();
- ~CropHandler ();
+ ~CropHandler () override;
void setDisplayHandler (CropDisplayHandler* l)
{
@@ -96,11 +96,11 @@ public:
int cw,
int ch,
int skip
- );
- void getWindow(int& cwx, int& cwy, int& cww, int& cwh, int& cskip);
+ ) override;
+ void getWindow(int& cwx, int& cwy, int& cww, int& cwh, int& cskip) override;
// SizeListener interface
- void sizeChanged (int w, int h, int ow, int oh);
+ void sizeChanged (int w, int h, int ow, int oh) override;
void update ();
diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc
index 374b755ae..45372f1f5 100644
--- a/rtgui/cropwindow.cc
+++ b/rtgui/cropwindow.cc
@@ -44,7 +44,7 @@ CropWindow::CropWindow (ImageArea* parent, bool isLowUpdatePriority_, bool isDet
crop_custom_ratio(0.f)
{
initZoomSteps();
-
+
Glib::RefPtr context = parent->get_pango_context () ;
Pango::FontDescription fontd = context->get_font_description ();
fontd.set_weight (Pango::WEIGHT_BOLD);
@@ -351,7 +351,7 @@ void CropWindow::buttonPress (int button, int type, int bstate, int x, int y)
if ((bstate & GDK_SHIFT_MASK) && cropHandler.cropParams.w > 0 && cropHandler.cropParams.h > 0) {
crop_custom_ratio = float(cropHandler.cropParams.w) / float(cropHandler.cropParams.h);
}
-
+
if (iarea->getToolMode () == TMColorPicker) {
if (hoveredPicker) {
if ((bstate & GDK_CONTROL_MASK) && !(bstate & GDK_SHIFT_MASK)) {
@@ -1385,7 +1385,7 @@ void CropWindow::expose (Cairo::RefPtr cr)
}
}
bool useBgColor = (state == SNormal || state == SDragPicker || state == SDeletePicker || state == SEditDrag1);
-
+
if (cropHandler.cropPixbuf) {
imgW = cropHandler.cropPixbuf->get_width ();
imgH = cropHandler.cropPixbuf->get_height ();
@@ -1653,7 +1653,7 @@ void CropWindow::expose (Cairo::RefPtr cr)
const int shThreshold = options.shadowThreshold;
const float ShawdowFac = 64.f / (options.shadowThreshold + 1);
const float HighlightFac = 64.f / (256 - options.highlightThreshold);
- const bool showclippedAny = (!showR && !showG && !showB && !showL); // will show clipping if any (all) of RGB chanels is (shadow) clipped
+ const bool showclippedAny = (!showR && !showG && !showB && !showL); // will show clipping if any (all) of RGB channels is (shadow) clipped
#ifdef _OPENMP
#pragma omp parallel for schedule(dynamic,16)
diff --git a/rtgui/cropwindow.h b/rtgui/cropwindow.h
index 71729e66e..395b1b621 100644
--- a/rtgui/cropwindow.h
+++ b/rtgui/cropwindow.h
@@ -134,7 +134,7 @@ class CropWindow : public LWButtonListener, public CropDisplayHandler, public Ed
public:
CropHandler cropHandler;
CropWindow (ImageArea* parent, bool isLowUpdatePriority_, bool isDetailWindow);
- ~CropWindow ();
+ ~CropWindow () override;
void setDecorated (bool decorated)
{
@@ -150,19 +150,19 @@ public:
}
void deleteColorPickers ();
- void screenCoordToCropBuffer (int phyx, int phyy, int& cropx, int& cropy);
- void screenCoordToImage (int phyx, int phyy, int& imgx, int& imgy);
+ void screenCoordToCropBuffer (int phyx, int phyy, int& cropx, int& cropy) override;
+ void screenCoordToImage (int phyx, int phyy, int& imgx, int& imgy) override;
void screenCoordToCropCanvas (int phyx, int phyy, int& prevx, int& prevy);
- void imageCoordToCropCanvas (int imgx, int imgy, int& phyx, int& phyy);
- void imageCoordToScreen (int imgx, int imgy, int& phyx, int& phyy);
- void imageCoordToCropBuffer (int imgx, int imgy, int& phyx, int& phyy);
- void imageCoordToCropImage (int imgx, int imgy, int& phyx, int& phyy);
- int scaleValueToImage (int value);
- float scaleValueToImage (float value);
- double scaleValueToImage (double value);
- int scaleValueToCanvas (int value);
- float scaleValueToCanvas (float value);
- double scaleValueToCanvas (double value);
+ void imageCoordToCropCanvas (int imgx, int imgy, int& phyx, int& phyy) override;
+ void imageCoordToScreen (int imgx, int imgy, int& phyx, int& phyy) override;
+ void imageCoordToCropBuffer (int imgx, int imgy, int& phyx, int& phyy) override;
+ void imageCoordToCropImage (int imgx, int imgy, int& phyx, int& phyy) override;
+ int scaleValueToImage (int value) override;
+ float scaleValueToImage (float value) override;
+ double scaleValueToImage (double value) override;
+ int scaleValueToCanvas (int value) override;
+ float scaleValueToCanvas (float value) override;
+ double scaleValueToCanvas (double value) override;
double getZoomFitVal ();
void setPosition (int x, int y);
void getPosition (int& x, int& y);
@@ -197,8 +197,8 @@ public:
void setEditSubscriber (EditSubscriber* newSubscriber);
// interface lwbuttonlistener
- void buttonPressed (LWButton* button, int actionCode, void* actionData);
- void redrawNeeded (LWButton* button);
+ void buttonPressed (LWButton* button, int actionCode, void* actionData) override;
+ void redrawNeeded (LWButton* button) override;
// crop handling
void getCropRectangle (int& x, int& y, int& w, int& h);
@@ -220,10 +220,10 @@ public:
void delCropWindowListener (CropWindowListener* l);
// crophandlerlistener interface
- void cropImageUpdated ();
- void cropWindowChanged ();
- void initialImageArrived ();
- void setDisplayPosition (int x, int y);
+ void cropImageUpdated () override;
+ void cropWindowChanged () override;
+ void initialImageArrived () override;
+ void setDisplayPosition (int x, int y) override;
void remoteMove (int deltaX, int deltaY);
void remoteMoveReady ();
diff --git a/rtgui/curveeditor.h b/rtgui/curveeditor.h
index afd4a1211..14699b42a 100644
--- a/rtgui/curveeditor.h
+++ b/rtgui/curveeditor.h
@@ -88,7 +88,7 @@ protected:
public:
CurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup);
- virtual ~CurveEditor ();
+ ~CurveEditor () override;
void typeSelectionChanged (int n);
void curveTypeToggled();
bool isUnChanged ();
@@ -127,12 +127,12 @@ public:
sigc::signal signal_curvepoint_click();
sigc::signal signal_curvepoint_release();
- void switchOffEditMode ();
- bool mouseOver(const int modifierKey);
- bool button1Pressed(const int modifierKey);
- bool button1Released();
- bool drag1(const int modifierKey);
- CursorShape getCursor(const int objectID);
+ void switchOffEditMode () override;
+ bool mouseOver(const int modifierKey) override;
+ bool button1Pressed(const int modifierKey) override;
+ bool button1Released() override;
+ bool drag1(const int modifierKey) override;
+ CursorShape getCursor(const int objectID) override;
};
@@ -161,7 +161,7 @@ protected:
public:
DiagonalCurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup);
- std::vector getCurve ();
+ std::vector getCurve () override;
void setRangeLabels(Glib::ustring r1, Glib::ustring r2, Glib::ustring r3, Glib::ustring r4);
void getRangeLabels(Glib::ustring &r1, Glib::ustring &r2, Glib::ustring &r3, Glib::ustring &r4);
void setRangeDefaultMilestones(double m1, double m2, double m3);
@@ -191,15 +191,15 @@ protected:
public:
FlatCurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup, bool isPeriodic = true);
- virtual void setIdentityValue (const double iValue = 0.5)
+ void setIdentityValue (const double iValue = 0.5) override
{
identityValue = iValue;
}
- virtual double getIdentityValue ()
+ double getIdentityValue () override
{
return identityValue;
};
- std::vector getCurve ();
+ std::vector getCurve () override;
// set the reset curve for a given curve type. This is optional; all curve type have a default reset curve
void setResetCurve(FlatCurveType cType, const std::vector &resetCurve);
diff --git a/rtgui/curveeditorgroup.h b/rtgui/curveeditorgroup.h
index ffd522fae..80a1a95a4 100644
--- a/rtgui/curveeditorgroup.h
+++ b/rtgui/curveeditorgroup.h
@@ -71,7 +71,7 @@ public:
*/
CurveEditorGroup(Glib::ustring& curveDir, Glib::ustring groupLabel = "");
- ~CurveEditorGroup();
+ ~CurveEditorGroup() override;
void newLine();
void curveListComplete();
void setBatchMode (bool batchMode);
@@ -97,8 +97,8 @@ protected:
void hideCurrentCurve ();
void updateGUI (CurveEditor* ce);
void curveResetPressed ();
- void curveChanged ();
- float blendPipetteValues(CurveEditor* ce, float chan1, float chan2, float chan3);
+ void curveChanged () override;
+ float blendPipetteValues(CurveEditor* ce, float chan1, float chan2, float chan3) override;
void setUnChanged (bool uc, CurveEditor* ce);
};
diff --git a/rtgui/darkframe.h b/rtgui/darkframe.h
index 0660c953d..c385a2153 100644
--- a/rtgui/darkframe.h
+++ b/rtgui/darkframe.h
@@ -55,8 +55,8 @@ public:
DarkFrame ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
void darkFrameChanged ();
void darkFrameReset ();
diff --git a/rtgui/defringe.h b/rtgui/defringe.h
index 81b870675..1aa6cc303 100644
--- a/rtgui/defringe.h
+++ b/rtgui/defringe.h
@@ -41,18 +41,18 @@ protected:
public:
Defringe ();
- ~Defringe ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void autoOpenCurve ();
- void curveChanged ();
+ ~Defringe () override;
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void autoOpenCurve () override;
+ void curveChanged () override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged ();
- virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged () override;
+ void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
};
diff --git a/rtgui/dehaze.h b/rtgui/dehaze.h
index 0ae7749e4..322e0bf0c 100644
--- a/rtgui/dehaze.h
+++ b/rtgui/dehaze.h
@@ -39,15 +39,15 @@ public:
Dehaze();
- void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr);
- void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr);
- void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr);
- void setBatchMode(bool batchMode);
+ void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr) override;
+ void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr) override;
+ void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr) override;
+ void setBatchMode(bool batchMode) override;
- void adjusterChanged(Adjuster *a, double newval);
- void enabledChanged();
+ void adjusterChanged(Adjuster *a, double newval) override;
+ void enabledChanged() override;
void showDepthMapChanged();
void setAdjusterBehavior(bool strengthAdd);
- void adjusterAutoToggled(Adjuster* a, bool newval) {}
+ void adjusterAutoToggled(Adjuster* a, bool newval) override {}
};
diff --git a/rtgui/diagonalcurveeditorsubgroup.h b/rtgui/diagonalcurveeditorsubgroup.h
index c9dafeadd..39cc86973 100644
--- a/rtgui/diagonalcurveeditorsubgroup.h
+++ b/rtgui/diagonalcurveeditorsubgroup.h
@@ -75,37 +75,37 @@ protected:
public:
DiagonalCurveEditorSubGroup(CurveEditorGroup* prt, Glib::ustring& curveDir);
- virtual ~DiagonalCurveEditorSubGroup();
+ ~DiagonalCurveEditorSubGroup() override;
DiagonalCurveEditor* addCurve(Glib::ustring curveLabel = "");
- virtual void updateBackgroundHistogram (CurveEditor* ce);
- void switchGUI();
- void refresh(CurveEditor *curveToRefresh);
- void editModeSwitchedOff ();
- void pipetteMouseOver(EditDataProvider *provider, int modifierKey);
- bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
- void pipetteButton1Released(EditDataProvider *provider);
- void pipetteDrag(EditDataProvider *provider, int modifierKey);
- void showCoordinateAdjuster(CoordinateProvider *provider);
- void stopNumericalAdjustment();
+ void updateBackgroundHistogram (CurveEditor* ce) override;
+ void switchGUI() override;
+ void refresh(CurveEditor *curveToRefresh) override;
+ void editModeSwitchedOff () override;
+ void pipetteMouseOver(EditDataProvider *provider, int modifierKey) override;
+ bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override;
+ void pipetteButton1Released(EditDataProvider *provider) override;
+ void pipetteDrag(EditDataProvider *provider, int modifierKey) override;
+ void showCoordinateAdjuster(CoordinateProvider *provider) override;
+ void stopNumericalAdjustment() override;
- bool curveReset (CurveEditor *ce);
+ bool curveReset (CurveEditor *ce) override;
protected:
- void storeCurveValues (CurveEditor* ce, const std::vector& p);
- void storeDisplayedCurve ();
- void restoreDisplayedHistogram ();
+ void storeCurveValues (CurveEditor* ce, const std::vector& p) override;
+ void storeDisplayedCurve () override;
+ void restoreDisplayedHistogram () override;
void savePressed ();
void loadPressed ();
void copyPressed ();
void pastePressed ();
void editPointToggled(Gtk::ToggleButton *button);
void editToggled (Gtk::ToggleButton *button);
- void removeEditor ();
- const std::vector getCurveFromGUI (int type);
- void shcChanged ();
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void removeEditor () override;
+ const std::vector getCurveFromGUI (int type) override;
+ void shcChanged () override;
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
bool adjusterEntered (GdkEventCrossing* ev, int ac);
bool adjusterLeft (GdkEventCrossing* ev, int ac);
void setSubGroupRangeLabels(Glib::ustring r1, Glib::ustring r2, Glib::ustring r3, Glib::ustring r4);
diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc
index 9ed8455fe..81ee85fed 100644
--- a/rtgui/dirbrowser.cc
+++ b/rtgui/dirbrowser.cc
@@ -220,7 +220,7 @@ void DirBrowser::updateDirTree (const Gtk::TreeModel::iterator& iter)
void DirBrowser::updateVolumes ()
{
- int nvolumes = GetLogicalDrives ();
+ unsigned int nvolumes = GetLogicalDrives ();
if (nvolumes != volumes) {
GThreadLock lock;
diff --git a/rtgui/dirbrowser.h b/rtgui/dirbrowser.h
index e8eefdd36..9d004f5f9 100644
--- a/rtgui/dirbrowser.h
+++ b/rtgui/dirbrowser.h
@@ -84,12 +84,12 @@ private:
bool expandSuccess;
#ifdef WIN32
- int volumes;
+ unsigned int volumes;
public:
void updateVolumes ();
void updateDirTree (const Gtk::TreeModel::iterator& iter);
void updateDirTreeRoot ();
- void winDirChanged ();
+ void winDirChanged () override;
private:
void addRoot (char letter);
#endif
@@ -101,7 +101,7 @@ private:
public:
DirBrowser ();
- ~DirBrowser();
+ ~DirBrowser() override;
void fillDirTree ();
void on_sort_column_changed() const;
diff --git a/rtgui/dirpyrdenoise.h b/rtgui/dirpyrdenoise.h
index 26a55ba20..2ee1863ab 100644
--- a/rtgui/dirpyrdenoise.h
+++ b/rtgui/dirpyrdenoise.h
@@ -38,25 +38,25 @@ class DirPyrDenoise final :
{
public:
DirPyrDenoise ();
- ~DirPyrDenoise ();
+ ~DirPyrDenoise () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void curveChanged (CurveEditor* ce);
- void setEditProvider (EditDataProvider *provider);
- void autoOpenCurve ();
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void curveChanged (CurveEditor* ce) override;
+ void setEditProvider (EditDataProvider *provider) override;
+ void autoOpenCurve () override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged ();
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged () override;
void medianChanged ();
- void chromaChanged (double autchroma, double autred, double autblue);
+ void chromaChanged (double autchroma, double autred, double autblue) override;
bool chromaComputed_ ();
- void noiseChanged (double nresid, double highresid);
+ void noiseChanged (double nresid, double highresid) override;
bool noiseComputed_ ();
- void noiseTilePrev (int tileX, int tileY, int prevX, int prevY, int sizeT, int sizeP);
+ void noiseTilePrev (int tileX, int tileY, int prevX, int prevY, int sizeT, int sizeP) override;
bool TilePrevComputed_ ();
// void perform_toggled ();
@@ -72,10 +72,10 @@ public:
void methodmedChanged ();
void rgbmethodChanged ();
void smethodChanged ();
- virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller);
+ void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
void setAdjusterBehavior (bool lumaadd, bool lumdetadd, bool chromaadd, bool chromaredadd, bool chromablueadd, bool gammaadd, bool passesadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
Glib::ustring getSettingString ();
private:
diff --git a/rtgui/dirpyrequalizer.h b/rtgui/dirpyrequalizer.h
index 3b5549e55..d7903116b 100644
--- a/rtgui/dirpyrequalizer.h
+++ b/rtgui/dirpyrequalizer.h
@@ -55,28 +55,28 @@ protected:
public:
DirPyrEqualizer ();
- virtual ~DirPyrEqualizer ();
+ ~DirPyrEqualizer () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
void setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool skinadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
void cbdlMethodChanged();
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged();
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged() override;
void gamutlabToggled ();
void lumaneutralPressed ();
void lumacontrastPlusPressed ();
void lumacontrastMinusPressed ();
- void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop);
- void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight);
- void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop);
- void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight);
- void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR);
+ void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override;
+ void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
};
#endif
diff --git a/rtgui/distortion.h b/rtgui/distortion.h
index b1134e426..ce1e81046 100644
--- a/rtgui/distortion.h
+++ b/rtgui/distortion.h
@@ -37,15 +37,15 @@ public:
Distortion ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
void setAdjusterBehavior (bool vadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
void idPressed ();
void setLensGeomListener (LensGeomListener* l)
{
diff --git a/rtgui/edit.h b/rtgui/edit.h
index 6c360e426..42db681a1 100644
--- a/rtgui/edit.h
+++ b/rtgui/edit.h
@@ -348,9 +348,9 @@ public:
Circle (rtengine::Coord& center, int radius, bool filled = false, bool radiusInImageSpace = false);
Circle (int centerX, int centerY, int radius, bool filled = false, bool radiusInImageSpace = false);
- void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
- void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
- void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
+ void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
+ void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
+ void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
};
class Arcellipse : public Geometry
@@ -407,9 +407,9 @@ public:
Line (rtengine::Coord& begin, rtengine::Coord& end);
Line (int beginX, int beginY, int endX, int endY);
- void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
- void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
- void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
+ void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
+ void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
+ void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
};
class Polyline : public Geometry
@@ -420,9 +420,9 @@ public:
Polyline ();
- void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
- void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
- void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
+ void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
+ void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
+ void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
};
class Rectangle : public Geometry
@@ -438,9 +438,9 @@ public:
void setXYXY (int left, int top, int right, int bottom);
void setXYWH (rtengine::Coord topLeft, rtengine::Coord widthHeight);
void setXYXY (rtengine::Coord topLeft, rtengine::Coord bottomRight);
- void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
- void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
- void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
+ void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
+ void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
+ void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
};
class OPIcon : public Geometry // OP stands for "On Preview"
@@ -475,9 +475,9 @@ public:
const Cairo::RefPtr getActiveImg();
const Cairo::RefPtr getDraggedImg();
const Cairo::RefPtr getInsensitiveImg();
- void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
- void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
- void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem);
+ void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
+ void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
+ void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override;
};
class OPAdjuster : public Geometry // OP stands for "On Preview"
diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc
index 1f46d60e7..f44e682f2 100644
--- a/rtgui/editorpanel.cc
+++ b/rtgui/editorpanel.cc
@@ -1640,6 +1640,10 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event)
iareapanel->imageArea->previewModePanel->toggleB();
return true;
+ case GDK_KEY_p: //preview mode Sharpening Contrast mask
+ iareapanel->imageArea->indClippedPanel->toggleSharpMask();
+ return true;
+
case GDK_KEY_v: //preview mode Luminosity
iareapanel->imageArea->previewModePanel->toggleL();
return true;
diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h
index 29ca70554..de5360646 100644
--- a/rtgui/editorpanel.h
+++ b/rtgui/editorpanel.h
@@ -56,11 +56,11 @@ class EditorPanel final :
{
public:
explicit EditorPanel (FilePanel* filePanel = nullptr);
- ~EditorPanel ();
+ ~EditorPanel () override;
void open (Thumbnail* tmb, rtengine::InitialImage* isrc);
void setAspect ();
- void on_realize ();
+ void on_realize () override;
void leftPaneButtonReleased (GdkEventButton *event);
void rightPaneButtonReleased (GdkEventButton *event);
@@ -83,10 +83,10 @@ public:
return realized;
}
// ProgressListener interface
- void setProgress(double p);
- void setProgressStr(const Glib::ustring& str);
- void setProgressState(bool inProcessing);
- void error(const Glib::ustring& descr);
+ void setProgress(double p) override;
+ void setProgressStr(const Glib::ustring& str) override;
+ void setProgressState(bool inProcessing) override;
+ void error(const Glib::ustring& descr) override;
void error(const Glib::ustring& title, const Glib::ustring& descr);
void displayError(const Glib::ustring& title, const Glib::ustring& descr); // this is called by error in the gtk thread
@@ -98,14 +98,14 @@ public:
const rtengine::ProcEvent& ev,
const Glib::ustring& descr,
const ParamsEdited* paramsEdited = nullptr
- );
- void clearParamChanges();
+ ) override;
+ void clearParamChanges() override;
// thumbnaillistener interface
- void procParamsChanged (Thumbnail* thm, int whoChangedIt);
+ void procParamsChanged (Thumbnail* thm, int whoChangedIt) override;
// HistoryBeforeLineListener
- void historyBeforeLineChanged (const rtengine::procparams::ProcParams& params);
+ void historyBeforeLineChanged (const rtengine::procparams::ProcParams& params) override;
// HistogramListener
void histogramChanged(
@@ -123,7 +123,7 @@ public:
const LUTu& histBlueRaw,
const LUTu& histChroma,
const LUTu& histLRETI
- );
+ ) override;
// event handlers
void info_toggled ();
diff --git a/rtgui/editwindow.h b/rtgui/editwindow.h
index 8cf93dbf8..736e46bd4 100644
--- a/rtgui/editwindow.h
+++ b/rtgui/editwindow.h
@@ -55,12 +55,12 @@ public:
void toFront();
bool keyPressed (GdkEventKey* event);
- bool on_configure_event(GdkEventConfigure* event);
- bool on_delete_event(GdkEventAny* event);
+ bool on_configure_event(GdkEventConfigure* event) override;
+ bool on_delete_event(GdkEventAny* event) override;
//bool on_window_state_event(GdkEventWindowState* event);
void on_mainNB_switch_page(Gtk::Widget* page, guint page_num);
void set_title_decorated(Glib::ustring fname);
- void on_realize ();
+ void on_realize () override;
};
#endif
diff --git a/rtgui/epd.h b/rtgui/epd.h
index c40133c3a..f2073a976 100644
--- a/rtgui/epd.h
+++ b/rtgui/epd.h
@@ -36,14 +36,14 @@ public:
EdgePreservingDecompositionUI();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged ();
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged () override;
void setAdjusterBehavior (bool stAdd, bool gAdd, bool esAdd, bool scAdd, bool rAdd);
};
diff --git a/rtgui/exifpanel.cc b/rtgui/exifpanel.cc
index fa362a351..20416c549 100644
--- a/rtgui/exifpanel.cc
+++ b/rtgui/exifpanel.cc
@@ -261,7 +261,7 @@ void ExifPanel::addDirectory (const TagDirectory* dir, Gtk::TreeModel::Children
Tag* t2 = (const_cast (dir))->getTagByIndex (j);
const TagAttrib* currAttrib = t2->getAttrib();
- if (currAttrib && ((options.lastShowAllExif) || (!options.lastShowAllExif && currAttrib->action != AC_SYSTEM))) {
+ if (currAttrib && (options.lastShowAllExif || currAttrib->action != AC_SYSTEM)) {
addSeparator();
hasContent = true;
break;
diff --git a/rtgui/exifpanel.h b/rtgui/exifpanel.h
index 5121eff4f..cd27cb780 100644
--- a/rtgui/exifpanel.h
+++ b/rtgui/exifpanel.h
@@ -97,11 +97,11 @@ private:
public:
ExifPanel ();
- virtual ~ExifPanel();
+ ~ExifPanel() override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
void setImageData (const rtengine::FramesMetaData* id);
diff --git a/rtgui/fattaltonemap.h b/rtgui/fattaltonemap.h
index fb6f1acd6..76e850c4e 100644
--- a/rtgui/fattaltonemap.h
+++ b/rtgui/fattaltonemap.h
@@ -36,14 +36,14 @@ public:
FattalToneMapping();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged ();
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged () override;
void setAdjusterBehavior(bool amountAdd, bool thresholdAdd, bool anchorAdd);
};
diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h
index 5debe9a6c..f15c7c5e8 100644
--- a/rtgui/filebrowser.h
+++ b/rtgui/filebrowser.h
@@ -136,7 +136,7 @@ protected:
public:
FileBrowser ();
- ~FileBrowser ();
+ ~FileBrowser () override;
void addEntry (FileBrowserEntry* entry); // can be called from any thread
void addEntry_ (FileBrowserEntry* entry); // this must be executed inside the gtk thread
@@ -164,17 +164,17 @@ public:
return numFiltered;
}
- void buttonPressed (LWButton* button, int actionCode, void* actionData);
- void redrawNeeded (LWButton* button);
- bool checkFilter (ThumbBrowserEntryBase* entry);
- void rightClicked (ThumbBrowserEntryBase* entry);
- void doubleClicked (ThumbBrowserEntryBase* entry);
- bool keyPressed (GdkEventKey* event);
+ void buttonPressed (LWButton* button, int actionCode, void* actionData) override;
+ void redrawNeeded (LWButton* button) override;
+ bool checkFilter (ThumbBrowserEntryBase* entry) override;
+ void rightClicked (ThumbBrowserEntryBase* entry) override;
+ void doubleClicked (ThumbBrowserEntryBase* entry) override;
+ bool keyPressed (GdkEventKey* event) override;
- void saveThumbnailHeight (int height);
- int getThumbnailHeight ();
+ void saveThumbnailHeight (int height) override;
+ int getThumbnailHeight () override;
- bool isInTabMode()
+ bool isInTabMode() override
{
return tbl ? tbl->isInTabMode() : false;
}
@@ -191,18 +191,18 @@ public:
void openDefaultViewer (int destination);
#endif
- void thumbRearrangementNeeded ();
+ void thumbRearrangementNeeded () override;
void _thumbRearrangementNeeded ();
- void selectionChanged ();
+ void selectionChanged () override;
void setExportPanel (ExportPanel* expanel);
// exportpanel interface
- void exportRequested();
+ void exportRequested() override;
- void storeCurrentValue();
- void updateProfileList();
- void restoreValue();
+ void storeCurrentValue() override;
+ void updateProfileList() override;
+ void restoreValue() override;
type_trash_changed trash_changed();
};
diff --git a/rtgui/filebrowserentry.h b/rtgui/filebrowserentry.h
index 5d5bd7e8e..b1fa8c54b 100644
--- a/rtgui/filebrowserentry.h
+++ b/rtgui/filebrowserentry.h
@@ -67,7 +67,7 @@ class FileBrowserEntry : public ThumbBrowserEntryBase,
bool onArea (CursorArea a, int x, int y);
void updateCursor (int x, int y);
void drawStraightenGuide (Cairo::RefPtr c);
- void customBackBufferUpdate (Cairo::RefPtr c);
+ void customBackBufferUpdate (Cairo::RefPtr c) override;
public:
@@ -78,8 +78,8 @@ public:
static Glib::RefPtr ps;
FileBrowserEntry (Thumbnail* thm, const Glib::ustring& fname);
- ~FileBrowserEntry ();
- void draw (Cairo::RefPtr cc);
+ ~FileBrowserEntry () override;
+ void draw (Cairo::RefPtr cc) override;
void setImageAreaToolListener (ImageAreaToolListener* l)
{
@@ -88,23 +88,23 @@ public:
FileThumbnailButtonSet* getThumbButtonSet ();
- void refreshThumbnailImage ();
- void refreshQuickThumbnailImage ();
- void calcThumbnailSize ();
+ void refreshThumbnailImage () override;
+ void refreshQuickThumbnailImage () override;
+ void calcThumbnailSize () override;
- virtual std::vector > getIconsOnImageArea ();
- virtual std::vector > getSpecificityIconsOnImageArea ();
- virtual void getIconSize (int& w, int& h);
+ std::vector > getIconsOnImageArea () override;
+ std::vector > getSpecificityIconsOnImageArea () override;
+ void getIconSize (int& w, int& h) override;
// thumbnaillistener interface
- void procParamsChanged (Thumbnail* thm, int whoChangedIt);
+ void procParamsChanged (Thumbnail* thm, int whoChangedIt) override;
// thumbimageupdatelistener interface
- void updateImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cropParams);
+ void updateImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cropParams) override;
void _updateImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cropParams); // inside gtk thread
- virtual bool motionNotify (int x, int y);
- virtual bool pressNotify (int button, int type, int bstate, int x, int y);
- virtual bool releaseNotify (int button, int type, int bstate, int x, int y);
+ bool motionNotify (int x, int y) override;
+ bool pressNotify (int button, int type, int bstate, int x, int y) override;
+ bool releaseNotify (int button, int type, int bstate, int x, int y) override;
};
#endif
diff --git a/rtgui/filecatalog.h b/rtgui/filecatalog.h
index 0af52fd28..407535ba0 100644
--- a/rtgui/filecatalog.h
+++ b/rtgui/filecatalog.h
@@ -164,14 +164,14 @@ public:
ToolBar* toolBar;
FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel);
- ~FileCatalog();
+ ~FileCatalog() override;
void dirSelected (const Glib::ustring& dirname, const Glib::ustring& openfile);
void closeDir ();
void refreshEditedState (const std::set& efiles);
// previewloaderlistener interface
- void previewReady (int dir_id, FileBrowserEntry* fdn);
- void previewsFinished (int dir_id);
+ void previewReady (int dir_id, FileBrowserEntry* fdn) override;
+ void previewsFinished (int dir_id) override;
void previewsFinishedUI ();
void _refreshProgressBar ();
@@ -195,10 +195,10 @@ public:
}
// filterpanel interface
- void exifFilterChanged ();
+ void exifFilterChanged () override;
// exportpanel interface
- void exportRequested();
+ void exportRequested() override;
Glib::ustring lastSelectedDir ()
{
@@ -212,15 +212,15 @@ public:
void refreshThumbImages ();
void refreshHeight ();
- void filterApplied();
- void openRequested(const std::vector& tbe);
- void deleteRequested(const std::vector& tbe, bool inclBatchProcessed);
- void copyMoveRequested(const std::vector& tbe, bool moveRequested);
- void developRequested(const std::vector& tbe, bool fastmode);
- void renameRequested(const std::vector& tbe);
- void selectionChanged(const std::vector& tbe);
- void clearFromCacheRequested(const std::vector& tbe, bool leavenotrace);
- bool isInTabMode() const;
+ void filterApplied() override;
+ void openRequested(const std::vector& tbe) override;
+ void deleteRequested(const std::vector& tbe, bool inclBatchProcessed) override;
+ void copyMoveRequested(const std::vector& tbe, bool moveRequested) override;
+ void developRequested(const std::vector& tbe, bool fastmode) override;
+ void renameRequested(const std::vector& tbe) override;
+ void selectionChanged(const std::vector& tbe) override;
+ void clearFromCacheRequested(const std::vector& tbe, bool leavenotrace) override;
+ bool isInTabMode() const override;
void emptyTrash ();
bool trashIsEmpty ();
@@ -247,7 +247,7 @@ public:
void filterChanged ();
void runFilterDialog ();
- void on_realize();
+ void on_realize() override;
void reparseDirectory ();
void _openImage (std::vector tmb);
diff --git a/rtgui/filepanel.h b/rtgui/filepanel.h
index 8be0229bc..df61cb60d 100644
--- a/rtgui/filepanel.h
+++ b/rtgui/filepanel.h
@@ -40,7 +40,7 @@ class FilePanel final :
{
public:
FilePanel ();
- ~FilePanel ();
+ ~FilePanel () override;
Gtk::Paned* placespaned;
Gtk::HPaned* dirpaned;
@@ -58,7 +58,7 @@ public:
parent = p;
}
void init (); // don't call it directly, the constructor calls it as idle source
- void on_realize ();
+ void on_realize () override;
void setAspect();
void open (const Glib::ustring& d); // open a file or a directory
void refreshEditedState (const std::set& efiles)
@@ -71,8 +71,8 @@ public:
void saveOptions ();
// interface fileselectionlistener
- bool fileSelected(Thumbnail* thm);
- bool addBatchQueueJobs(const std::vector& entries);
+ bool fileSelected(Thumbnail* thm) override;
+ bool addBatchQueueJobs(const std::vector& entries) override;
void optionsChanged ();
bool imageLoaded( Thumbnail* thm, ProgressConnector * );
diff --git a/rtgui/filmsimulation.h b/rtgui/filmsimulation.h
index 72ef019c5..5f66b579e 100644
--- a/rtgui/filmsimulation.h
+++ b/rtgui/filmsimulation.h
@@ -11,7 +11,7 @@
class ClutComboBox : public MyComboBox
{
public:
- ClutComboBox(const Glib::ustring &path);
+ explicit ClutComboBox(const Glib::ustring &path);
//int fillFromDir (const Glib::ustring& path);
int foundClutsCount() const;
Glib::ustring getSelectedClut();
@@ -34,7 +34,7 @@ private:
Glib::RefPtr m_model;
ClutColumns m_columns;
int count;
- ClutModel(const Glib::ustring &path);
+ explicit ClutModel(const Glib::ustring &path);
int parseDir (const Glib::ustring& path);
};
@@ -53,17 +53,17 @@ class FilmSimulation : public ToolParamBlock, public AdjusterListener, public Fo
public:
FilmSimulation();
- void adjusterChanged(Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void setBatchMode(bool batchMode);
- void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
+ void adjusterChanged(Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void setBatchMode(bool batchMode) override;
+ void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
void setAdjusterBehavior(bool strength);
- void trimValues(rtengine::procparams::ProcParams* pp);
+ void trimValues(rtengine::procparams::ProcParams* pp) override;
private:
void onClutSelected();
- void enabledChanged();
+ void enabledChanged() override;
void updateDisable( bool value );
diff --git a/rtgui/flatcurveeditorsubgroup.h b/rtgui/flatcurveeditorsubgroup.h
index 0dc040cfe..ab2abedfb 100644
--- a/rtgui/flatcurveeditorsubgroup.h
+++ b/rtgui/flatcurveeditorsubgroup.h
@@ -46,32 +46,32 @@ protected:
public:
FlatCurveEditorSubGroup(CurveEditorGroup* prt, Glib::ustring& curveDir);
- virtual ~FlatCurveEditorSubGroup();
+ ~FlatCurveEditorSubGroup() override;
FlatCurveEditor* addCurve(Glib::ustring curveLabel = "", bool periodic = true);
//virtual void updateBackgroundHistogram (CurveEditor* ce);
- void switchGUI();
- void refresh(CurveEditor *curveToRefresh);
- void editModeSwitchedOff();
- void pipetteMouseOver(EditDataProvider *provider, int modifierKey);
- bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
- void pipetteButton1Released(EditDataProvider *provider);
- void pipetteDrag(EditDataProvider *provider, int modifierKey);
- void showCoordinateAdjuster(CoordinateProvider *provider);
- void stopNumericalAdjustment();
+ void switchGUI() override;
+ void refresh(CurveEditor *curveToRefresh) override;
+ void editModeSwitchedOff() override;
+ void pipetteMouseOver(EditDataProvider *provider, int modifierKey) override;
+ bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override;
+ void pipetteButton1Released(EditDataProvider *provider) override;
+ void pipetteDrag(EditDataProvider *provider, int modifierKey) override;
+ void showCoordinateAdjuster(CoordinateProvider *provider) override;
+ void stopNumericalAdjustment() override;
- bool curveReset (CurveEditor *ce);
+ bool curveReset (CurveEditor *ce) override;
protected:
- void storeCurveValues (CurveEditor* ce, const std::vector& p);
- void storeDisplayedCurve ();
- void restoreDisplayedHistogram ();
+ void storeCurveValues (CurveEditor* ce, const std::vector& p) override;
+ void storeDisplayedCurve () override;
+ void restoreDisplayedHistogram () override;
void savePressed ();
void loadPressed ();
void copyPressed ();
void pastePressed ();
- void removeEditor ();
- const std::vector getCurveFromGUI (int type);
+ void removeEditor () override;
+ const std::vector getCurveFromGUI (int type) override;
void editPointToggled(Gtk::ToggleButton *button);
void editToggled (Gtk::ToggleButton *button);
};
diff --git a/rtgui/flatfield.h b/rtgui/flatfield.h
index 599589b68..46e2f6ddd 100644
--- a/rtgui/flatfield.h
+++ b/rtgui/flatfield.h
@@ -62,17 +62,17 @@ protected:
public:
FlatField ();
- ~FlatField ();
+ ~FlatField () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
void setAdjusterBehavior (bool clipctrladd);
- void trimValues (rtengine::procparams::ProcParams* pp);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
void flatFieldFileChanged ();
void flatFieldFile_Reset ();
void flatFieldAutoSelectChanged ();
@@ -82,7 +82,7 @@ public:
{
ffp = p;
};
- void flatFieldAutoClipValueChanged(int n = 0);
+ void flatFieldAutoClipValueChanged(int n = 0) override;
};
#endif
diff --git a/rtgui/gradient.h b/rtgui/gradient.h
index c34364cb5..8812d6670 100644
--- a/rtgui/gradient.h
+++ b/rtgui/gradient.h
@@ -35,29 +35,29 @@ protected:
public:
Gradient ();
- ~Gradient ();
+ ~Gradient () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged ();
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged () override;
void setAdjusterBehavior (bool degreeadd, bool featheradd, bool strengthadd, bool centeradd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
void updateGeometry (const int centerX, const int centerY, const double feather, const double degree, const int fullWidth=-1, const int fullHeight=-1);
- void setEditProvider (EditDataProvider* provider);
+ void setEditProvider (EditDataProvider* provider) override;
// EditSubscriber interface
- CursorShape getCursor(const int objectID);
- bool mouseOver(const int modifierKey);
- bool button1Pressed(const int modifierKey);
- bool button1Released();
- bool drag1(const int modifierKey);
- void switchOffEditMode ();
+ CursorShape getCursor(const int objectID) override;
+ bool mouseOver(const int modifierKey) override;
+ bool button1Pressed(const int modifierKey) override;
+ bool button1Released() override;
+ bool drag1(const int modifierKey) override;
+ void switchOffEditMode () override;
};
#endif
diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h
index 8816eca4f..074e3bacc 100644
--- a/rtgui/guiutils.h
+++ b/rtgui/guiutils.h
@@ -149,7 +149,7 @@ private:
public:
explicit ExpanderBox( Gtk::Container *p);
- ~ExpanderBox( )
+ ~ExpanderBox( ) override
{
delete pC;
}
@@ -285,9 +285,9 @@ public:
class MyScrolledWindow : public Gtk::ScrolledWindow
{
- bool on_scroll_event (GdkEventScroll* event);
- void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
+ bool on_scroll_event (GdkEventScroll* event) override;
+ void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
public:
MyScrolledWindow();
@@ -299,7 +299,7 @@ public:
class MyScrolledToolbar : public Gtk::ScrolledWindow
{
- bool on_scroll_event (GdkEventScroll* event);
+ bool on_scroll_event (GdkEventScroll* event) override;
void get_preferred_height (int &minimumHeight, int &naturalHeight);
public:
@@ -313,9 +313,9 @@ class MyComboBox : public Gtk::ComboBox
{
int naturalWidth, minimumWidth;
- bool on_scroll_event (GdkEventScroll* event);
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
+ bool on_scroll_event (GdkEventScroll* event) override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
public:
MyComboBox ();
@@ -331,9 +331,9 @@ class MyComboBoxText : public Gtk::ComboBoxText
int naturalWidth, minimumWidth;
sigc::connection myConnection;
- bool on_scroll_event (GdkEventScroll* event);
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
+ bool on_scroll_event (GdkEventScroll* event) override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
public:
explicit MyComboBoxText (bool has_entry = false);
@@ -350,8 +350,8 @@ class MySpinButton : public Gtk::SpinButton
{
protected:
- bool on_scroll_event (GdkEventScroll* event);
- bool on_key_press_event (GdkEventKey* event);
+ bool on_scroll_event (GdkEventScroll* event) override;
+ bool on_key_press_event (GdkEventKey* event) override;
public:
MySpinButton ();
@@ -364,8 +364,8 @@ public:
class MyHScale : public Gtk::HScale
{
- bool on_scroll_event (GdkEventScroll* event);
- bool on_key_press_event (GdkEventKey* event);
+ bool on_scroll_event (GdkEventScroll* event) override;
+ bool on_key_press_event (GdkEventKey* event) override;
};
/**
@@ -388,9 +388,9 @@ private:
sigc::signal selection_changed_;
protected:
- bool on_scroll_event (GdkEventScroll* event);
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
+ bool on_scroll_event (GdkEventScroll* event) override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
void set_none();
@@ -484,8 +484,8 @@ class MyProgressBar : public Gtk::ProgressBar
private:
int w;
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
public:
explicit MyProgressBar(int width);
diff --git a/rtgui/histogrampanel.h b/rtgui/histogrampanel.h
index 9a8f58938..f34b07c39 100644
--- a/rtgui/histogrampanel.h
+++ b/rtgui/histogrampanel.h
@@ -81,7 +81,7 @@ protected:
public:
HistogramRGBArea();
- ~HistogramRGBArea();
+ ~HistogramRGBArea() override;
void updateBackBuffer (int r, int g, int b, const Glib::ustring &profile = "", const Glib::ustring &profileW = "");
bool getShow ();
@@ -93,17 +93,17 @@ public:
void update (int val, int rh, int gh, int bh);
void updateOptions (bool r, bool g, bool b, bool l, bool c, bool raw, bool show);
- void on_realize();
- bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
- bool on_button_press_event (GdkEventButton* event);
+ void on_realize() override;
+ bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override;
+ bool on_button_press_event (GdkEventButton* event) override;
void factorChanged (double newFactor);
private:
- Gtk::SizeRequestMode get_request_mode_vfunc () const;
- void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const;
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
- void get_preferred_width_for_height_vfunc (int h, int &minimum_width, int &natural_width) const;
+ Gtk::SizeRequestMode get_request_mode_vfunc () const override;
+ void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_for_height_vfunc (int h, int &minimum_width, int &natural_width) const override;
};
@@ -141,7 +141,7 @@ protected:
public:
explicit HistogramArea(DrawModeListener *fml = nullptr);
- ~HistogramArea();
+ ~HistogramArea() override;
void updateBackBuffer ();
void update(
@@ -155,21 +155,21 @@ public:
const LUTu& histBlueRaw
);
void updateOptions (bool r, bool g, bool b, bool l, bool c, bool raw, int mode);
- void on_realize();
- bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
- bool on_button_press_event (GdkEventButton* event);
- bool on_button_release_event (GdkEventButton* event);
- bool on_motion_notify_event (GdkEventMotion* event);
+ void on_realize() override;
+ bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override;
+ bool on_button_press_event (GdkEventButton* event) override;
+ bool on_button_release_event (GdkEventButton* event) override;
+ bool on_motion_notify_event (GdkEventMotion* event) override;
type_signal_factor_changed signal_factor_changed();
private:
void drawCurve(Cairo::RefPtr &cr, LUTu & data, double scale, int hsize, int vsize);
void drawMarks(Cairo::RefPtr &cr, LUTu & data, double scale, int hsize, int & ui, int & oi);
- Gtk::SizeRequestMode get_request_mode_vfunc () const;
- void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const;
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
+ Gtk::SizeRequestMode get_request_mode_vfunc () const override;
+ void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
};
class HistogramPanel : public Gtk::Grid, public PointerMotionListener, public DrawModeListener
@@ -216,7 +216,7 @@ protected:
public:
HistogramPanel ();
- ~HistogramPanel ();
+ ~HistogramPanel () override;
void histogramChanged(
const LUTu& histRed,
@@ -231,7 +231,7 @@ public:
histogramArea->update(histRed, histGreen, histBlue, histLuma, histChroma, histRedRaw, histGreenRaw, histBlueRaw);
}
// pointermotionlistener interface
- void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool isRaw = false);
+ void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool isRaw = false) override;
// TODO should be protected
void setHistRGBInvalid ();
@@ -249,7 +249,7 @@ public:
void resized (Gtk::Allocation& req);
// drawModeListener interface
- void toggleButtonMode ();
+ void toggleButtonMode () override;
};
#endif
diff --git a/rtgui/history.h b/rtgui/history.h
index 4b9499502..196b29b67 100644
--- a/rtgui/history.h
+++ b/rtgui/history.h
@@ -111,8 +111,8 @@ public:
const rtengine::ProcEvent& ev,
const Glib::ustring& descr,
const ParamsEdited* paramsEdited = nullptr
- );
- void clearParamChanges ();
+ ) override;
+ void clearParamChanges () override;
void historySelectionChanged ();
void bookmarkSelectionChanged ();
diff --git a/rtgui/hsvequalizer.h b/rtgui/hsvequalizer.h
index 2d80bb626..8d34b486b 100644
--- a/rtgui/hsvequalizer.h
+++ b/rtgui/hsvequalizer.h
@@ -42,19 +42,19 @@ protected:
public:
HSVEqualizer ();
- virtual ~HSVEqualizer ();
+ ~HSVEqualizer () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void curveChanged (CurveEditor* ce);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void curveChanged (CurveEditor* ce) override;
//void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
- void setBatchMode (bool batchMode);
- void setEditProvider (EditDataProvider *provider);
- void autoOpenCurve ();
- virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller);
+ void setBatchMode (bool batchMode) override;
+ void setEditProvider (EditDataProvider *provider) override;
+ void autoOpenCurve () override;
+ void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
//void adjusterChanged (Adjuster* a, double newval);
- void enabledChanged();
+ void enabledChanged() override;
};
#endif
diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc
index 60b45519a..584412120 100644
--- a/rtgui/iccprofilecreator.cc
+++ b/rtgui/iccprofilecreator.cc
@@ -833,23 +833,29 @@ void ICCProfileCreator::savePressed()
} else if (gammaPreset == "sRGB_g2.4_s12.92") {
sGammaPreset = "sRGB_g=2.4_s=12.92310";
ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom
- ga[1] = 0.947858;
- ga[2] = 0.052142;
- ga[3] = 0.077399;
- ga[4] = 0.039293;
+ ga[1] = 0.947867;
+ ga[2] = 0.052133;
+ ga[3] = 0.077381;
+ ga[4] = 0.039286;
+ //g3 = 0.00340
+ //g4 = 0.0550
+ //g5 = 0.449842
presetGamma = 2.4;
presetSlope = 12.92310;
} else if (gammaPreset == "BT709_g2.2_s4.5") {
sGammaPreset = "BT709_g=2.2_s=4.5";
- ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin
+ ga[0] = 2.22; //BT709 2.22 4.5 - my preferred as D.Coffin
ga[1] = 0.909995;
ga[2] = 0.090005;
ga[3] = 0.222222;
ga[4] = 0.081071;
- presetGamma = 2.2;
+ //g3=0.018016
+ //g4=0.098907
+ //g5=0.517448
+ presetGamma = 2.22;
presetSlope = 4.5;
-
+
} else if (gammaPreset == "linear_g1.0") {
sGammaPreset = "Linear_g=1.0";
ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...)
@@ -1125,7 +1131,7 @@ void ICCProfileCreator::savePressed()
//calculate XYZ matrix for each primaries and each temp (D50, D65...)
- // reduce coordonate of primaries
+ // reduce coordinate of primaries
//printf("p0=%f p1=%f p2=%f p3=%f p4=%f p5=%f \n", p[0], p[1], p[2], p[3],p[4], p[5]);
double Xr = p[0] / p[1];
double Yr = 1.0;
diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h
index 74fa4bc54..23e5b86c8 100644
--- a/rtgui/iccprofilecreator.h
+++ b/rtgui/iccprofilecreator.h
@@ -91,8 +91,8 @@ private:
void primariesChanged();
void illuminantChanged();
void trcPresetsChanged();
- void adjusterChanged(Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void adjusterChanged(Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
static std::vector getGamma();
Glib::ustring getPrimariesPresetName(const Glib::ustring &preset);
void getPrimaries(const Glib::ustring &preset, double *p, ColorTemp &temp);
diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h
index bd4aa493e..b1106b6e1 100644
--- a/rtgui/icmpanel.h
+++ b/rtgui/icmpanel.h
@@ -121,12 +121,12 @@ private:
public:
ICMPanel();
- void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode(bool batchMode);
- void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void adjusterChanged(Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode(bool batchMode) override;
+ void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void adjusterChanged(Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
void wpChanged();
void wtrcinChanged();
diff --git a/rtgui/ilabel.h b/rtgui/ilabel.h
index 26b29061f..1f5340fa2 100644
--- a/rtgui/ilabel.h
+++ b/rtgui/ilabel.h
@@ -28,9 +28,9 @@ class ILabel : public Gtk::DrawingArea
public:
explicit ILabel (const Glib::ustring &lab);
- bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
- void on_realize();
- void on_style_updated ();
+ bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override;
+ void on_realize() override;
+ void on_style_updated () override;
};
#endif
diff --git a/rtgui/imagearea.h b/rtgui/imagearea.h
index de9ba1f71..f95045532 100644
--- a/rtgui/imagearea.h
+++ b/rtgui/imagearea.h
@@ -59,11 +59,11 @@ protected:
ImageAreaToolListener* listener;
CropWindow* getCropWindow (int x, int y);
- Gtk::SizeRequestMode get_request_mode_vfunc () const;
- void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const;
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
+ Gtk::SizeRequestMode get_request_mode_vfunc () const override;
+ void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
int fullImageWidth, fullImageHeight;
public:
@@ -75,7 +75,7 @@ public:
ImageArea* iLinkedImageArea; // used to set a reference to the Before image area, which is set when before/after view is enabled
explicit ImageArea (ImageAreaPanel* p);
- ~ImageArea ();
+ ~ImageArea () override;
rtengine::StagedImageProcessor* getImProcCoordinator() const;
void setImProcCoordinator(rtengine::StagedImageProcessor* ipc_);
@@ -97,15 +97,15 @@ public:
void infoEnabled (bool e);
// widget base events
- void on_realize ();
- bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr);
- bool on_motion_notify_event (GdkEventMotion* event);
- bool on_button_press_event (GdkEventButton* event);
- bool on_button_release_event (GdkEventButton* event);
- bool on_scroll_event (GdkEventScroll* event);
- bool on_leave_notify_event (GdkEventCrossing* event);
+ void on_realize () override;
+ bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr) override;
+ bool on_motion_notify_event (GdkEventMotion* event) override;
+ bool on_button_press_event (GdkEventButton* event) override;
+ bool on_button_release_event (GdkEventButton* event) override;
+ bool on_scroll_event (GdkEventScroll* event) override;
+ bool on_leave_notify_event (GdkEventCrossing* event) override;
void on_resized (Gtk::Allocation& req);
- void on_style_updated ();
+ void on_style_updated () override;
void syncBeforeAfterViews ();
void setCropGUIListener (CropGUIListener* l);
@@ -140,18 +140,18 @@ public:
void setZoom (double zoom);
// EditDataProvider interface
- void subscribe(EditSubscriber *subscriber);
- void unsubscribe();
- void getImageSize (int &w, int&h);
+ void subscribe(EditSubscriber *subscriber) override;
+ void unsubscribe() override;
+ void getImageSize (int &w, int&h) override;
// CropWindowListener interface
- void cropPositionChanged (CropWindow* cw);
- void cropWindowSizeChanged (CropWindow* cw);
- void cropZoomChanged (CropWindow* cw);
- void initialImageArrived ();
+ void cropPositionChanged (CropWindow* cw) override;
+ void cropWindowSizeChanged (CropWindow* cw) override;
+ void cropZoomChanged (CropWindow* cw) override;
+ void initialImageArrived () override;
// LockablePickerToolListener interface
- void switchPickerVisibility (bool isVisible);
+ void switchPickerVisibility (bool isVisible) override;
CropWindow* getMainCropWindow ()
{
diff --git a/rtgui/imageareapanel.h b/rtgui/imageareapanel.h
index a0c5c8df2..13fd6650b 100644
--- a/rtgui/imageareapanel.h
+++ b/rtgui/imageareapanel.h
@@ -35,7 +35,7 @@ public:
ImageArea* imageArea;
ImageAreaPanel ();
- ~ImageAreaPanel ();
+ ~ImageAreaPanel () override;
void zoomChanged ();
diff --git a/rtgui/impulsedenoise.h b/rtgui/impulsedenoise.h
index 14b51eb7a..79484dc65 100644
--- a/rtgui/impulsedenoise.h
+++ b/rtgui/impulsedenoise.h
@@ -34,17 +34,17 @@ public:
ImpulseDenoise ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged ();
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged () override;
void setAdjusterBehavior (bool threshadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
};
#endif
diff --git a/rtgui/indclippedpanel.h b/rtgui/indclippedpanel.h
index 95e870e95..c026d4611 100644
--- a/rtgui/indclippedpanel.h
+++ b/rtgui/indclippedpanel.h
@@ -35,7 +35,7 @@ protected:
public:
explicit IndicateClippedPanel(ImageArea* ia);
- ~IndicateClippedPanel();
+ ~IndicateClippedPanel() override;
void buttonToggled(Gtk::ToggleButton* tb);
void toggleClipped(bool highlights); // inverts a toggle programmatically
diff --git a/rtgui/inspector.h b/rtgui/inspector.h
index ac8f52ee2..d5ed327b8 100644
--- a/rtgui/inspector.h
+++ b/rtgui/inspector.h
@@ -51,14 +51,14 @@ private:
sigc::connection delayconn;
Glib::ustring next_image_path;
- bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
+ bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override;
void deleteBuffers();
bool doSwitchImage();
public:
Inspector();
- ~Inspector();
+ ~Inspector() override;
/** @brief Mouse movement to a new position
* @param pos Location of the mouse, in percentage (i.e. [0;1] range) relative to the full size image ; -1,-1 == out of the image
@@ -92,11 +92,11 @@ public:
return active;
};
- Gtk::SizeRequestMode get_request_mode_vfunc () const;
- void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const;
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
+ Gtk::SizeRequestMode get_request_mode_vfunc () const override;
+ void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
};
diff --git a/rtgui/iptcpanel.h b/rtgui/iptcpanel.h
index b216cf638..5574fe884 100644
--- a/rtgui/iptcpanel.h
+++ b/rtgui/iptcpanel.h
@@ -71,9 +71,9 @@ private:
public:
IPTCPanel ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
void setImageData (const rtengine::FramesMetaData* id);
diff --git a/rtgui/labcurve.h b/rtgui/labcurve.h
index d15f7d144..eb582035a 100644
--- a/rtgui/labcurve.h
+++ b/rtgui/labcurve.h
@@ -62,20 +62,20 @@ protected:
public:
LCurve ();
- ~LCurve ();
+ ~LCurve () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void autoOpenCurve ();
- void setEditProvider (EditDataProvider *provider);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void autoOpenCurve () override;
+ void setEditProvider (EditDataProvider *provider) override;
void setAdjusterBehavior (bool bradd, bool contradd, bool satadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
- void curveChanged (CurveEditor* ce);
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void curveChanged (CurveEditor* ce) override;
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
void avoidcolorshift_toggled ();
void lcredsk_toggled();
@@ -92,9 +92,9 @@ public:
const LUTu& histLRETI
);
- virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller);
+ void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
- void enabledChanged();
+ void enabledChanged() override;
};
#endif
diff --git a/rtgui/labgrid.h b/rtgui/labgrid.h
index 30f6e76e5..00266c91b 100644
--- a/rtgui/labgrid.h
+++ b/rtgui/labgrid.h
@@ -85,14 +85,14 @@ public:
bool lowEnabled() const;
void setLowEnabled(bool yes);
- bool on_draw(const ::Cairo::RefPtr &crf);
- void on_style_updated ();
- bool on_button_press_event(GdkEventButton *event);
- bool on_button_release_event(GdkEventButton *event);
- bool on_motion_notify_event(GdkEventMotion *event);
- Gtk::SizeRequestMode get_request_mode_vfunc() const;
- void get_preferred_width_vfunc(int &minimum_width, int &natural_width) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
+ bool on_draw(const ::Cairo::RefPtr &crf) override;
+ void on_style_updated () override;
+ bool on_button_press_event(GdkEventButton *event) override;
+ bool on_button_release_event(GdkEventButton *event) override;
+ bool on_motion_notify_event(GdkEventMotion *event) override;
+ Gtk::SizeRequestMode get_request_mode_vfunc() const override;
+ void get_preferred_width_vfunc(int &minimum_width, int &natural_width) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
};
diff --git a/rtgui/lensgeom.h b/rtgui/lensgeom.h
index 29b0c7f20..20bb4b7eb 100644
--- a/rtgui/lensgeom.h
+++ b/rtgui/lensgeom.h
@@ -37,16 +37,16 @@ protected:
public:
LensGeometry ();
- ~LensGeometry ();
+ ~LensGeometry () override;
Gtk::Box* getPackBox ()
{
return packBox;
}
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
void fillPressed ();
void autoCropPressed ();
diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc
index 0d5d9a0c3..e110792ec 100644
--- a/rtgui/lensprofile.cc
+++ b/rtgui/lensprofile.cc
@@ -194,6 +194,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa
switch (pp->lensProf.lcMode) {
case procparams::LensProfParams::LcMode::LCP: {
corrLcpFileRB->set_active(true);
+ setManualParamsVisibility(false);
break;
}
@@ -209,6 +210,7 @@ void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const Pa
case procparams::LensProfParams::LcMode::NONE: {
corrOffRB->set_active(true);
+ setManualParamsVisibility(false);
break;
}
}
diff --git a/rtgui/lensprofile.h b/rtgui/lensprofile.h
index 42b60a414..76c15aa9a 100644
--- a/rtgui/lensprofile.h
+++ b/rtgui/lensprofile.h
@@ -31,8 +31,8 @@ class LensProfilePanel final :
public:
LensProfilePanel();
- void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
+ void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
void setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta);
void onLCPFileChanged();
@@ -40,7 +40,7 @@ public:
void onUseVignChanged();
void onUseCAChanged();
- void setBatchMode(bool yes);
+ void setBatchMode(bool yes) override;
void onLensfunCameraChanged();
void onLensfunLensChanged();
diff --git a/rtgui/localcontrast.h b/rtgui/localcontrast.h
index 89341c976..efe7a18f0 100644
--- a/rtgui/localcontrast.h
+++ b/rtgui/localcontrast.h
@@ -41,14 +41,14 @@ public:
LocalContrast();
- void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr);
- void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr);
- void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr);
- void setBatchMode(bool batchMode);
+ void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr) override;
+ void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr) override;
+ void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr) override;
+ void setBatchMode(bool batchMode) override;
- void adjusterChanged(Adjuster *a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged();
+ void adjusterChanged(Adjuster *a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged() override;
void setAdjusterBehavior(bool radiusAdd, bool amountAdd, bool darknessAdd, bool lightnessAdd);
};
diff --git a/rtgui/main-cli.cc b/rtgui/main-cli.cc
index 66e0b9cfc..be225378e 100644
--- a/rtgui/main-cli.cc
+++ b/rtgui/main-cli.cc
@@ -203,7 +203,9 @@ int main (int argc, char **argv)
// Move the old path to the new one if the new does not exist
if (Glib::file_test (Glib::build_filename (options.rtdir, "cache"), Glib::FILE_TEST_IS_DIR) && !Glib::file_test (options.cacheBaseDir, Glib::FILE_TEST_IS_DIR)) {
- g_rename (Glib::build_filename (options.rtdir, "cache").c_str (), options.cacheBaseDir.c_str ());
+ if (g_rename (Glib::build_filename (options.rtdir, "cache").c_str (), options.cacheBaseDir.c_str ()) == -1) {
+ std::cout << "g_rename " << Glib::build_filename (options.rtdir, "cache").c_str () << " => " << options.cacheBaseDir.c_str () << " failed." << std::endl;
+ }
}
#endif
diff --git a/rtgui/main.cc b/rtgui/main.cc
index 1de74ecb6..e486379be 100644
--- a/rtgui/main.cc
+++ b/rtgui/main.cc
@@ -359,7 +359,7 @@ public:
{
}
- ~RTApplication()
+ ~RTApplication() override
{
if (rtWindow) {
delete rtWindow;
diff --git a/rtgui/metadatapanel.h b/rtgui/metadatapanel.h
index a2c1f43ac..d34a04585 100644
--- a/rtgui/metadatapanel.h
+++ b/rtgui/metadatapanel.h
@@ -36,14 +36,14 @@ private:
public:
MetaDataPanel();
- ~MetaDataPanel();
+ ~MetaDataPanel() override;
- void setBatchMode(bool batchMode);
- void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
+ void setBatchMode(bool batchMode) override;
+ void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
void setImageData(const rtengine::FramesMetaData* id);
- void setListener(ToolPanelListener *tpl);
+ void setListener(ToolPanelListener *tpl) override;
};
diff --git a/rtgui/mycurve.h b/rtgui/mycurve.h
index 8521b5748..f555ab7ef 100644
--- a/rtgui/mycurve.h
+++ b/rtgui/mycurve.h
@@ -109,7 +109,7 @@ protected:
public:
MyCurve ();
- ~MyCurve ();
+ ~MyCurve () override;
void setCurveListener (CurveListener* cl)
{
@@ -126,10 +126,10 @@ public:
{
curveIsDirty = true;
}
- void on_style_updated ();
+ void on_style_updated () override;
virtual std::vector getPoints () = 0;
virtual void setPoints (const std::vector& p) = 0;
- virtual bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) = 0;
+ bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override = 0;
virtual bool handleEvents (GdkEvent* event) = 0;
virtual void reset (const std::vector &resetCurve, double identityValue = 0.5) = 0;
@@ -138,11 +138,11 @@ public:
virtual void pipetteButton1Released(EditDataProvider *provider) = 0;
virtual void pipetteDrag(EditDataProvider *provider, int modifierKey) = 0;
- Gtk::SizeRequestMode get_request_mode_vfunc () const;
- void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const;
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
+ Gtk::SizeRequestMode get_request_mode_vfunc () const override;
+ void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
};
class MyCurveIdleHelper
diff --git a/rtgui/mydiagonalcurve.cc b/rtgui/mydiagonalcurve.cc
index 0bc58f28e..5eacdcc46 100644
--- a/rtgui/mydiagonalcurve.cc
+++ b/rtgui/mydiagonalcurve.cc
@@ -545,7 +545,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event)
double minDistanceY = double(MIN_DISTANCE) / double(graphH - 1);
switch (event->type) {
- case Gdk::BUTTON_PRESS:
+ case GDK_BUTTON_PRESS:
snapToElmt = -100;
if (curve.type != DCT_Parametric) {
@@ -694,7 +694,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event)
break;
- case Gdk::BUTTON_RELEASE:
+ case GDK_BUTTON_RELEASE:
snapToElmt = -100;
if (curve.type != DCT_Parametric && edited_point == -1) {
@@ -755,7 +755,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event)
break;
- case Gdk::LEAVE_NOTIFY:
+ case GDK_LEAVE_NOTIFY:
// Pointer can LEAVE even when dragging the point, so we don't modify the cursor in this case
// The cursor will have to LEAVE another time after the drag...
@@ -772,7 +772,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event)
retval = true;
break;
- case Gdk::MOTION_NOTIFY:
+ case GDK_MOTION_NOTIFY:
snapToElmt = -100;
if (curve.type == DCT_Linear || curve.type == DCT_Spline || curve.type == DCT_NURBS) {
diff --git a/rtgui/mydiagonalcurve.h b/rtgui/mydiagonalcurve.h
index abb8d3dc6..9433c42b5 100644
--- a/rtgui/mydiagonalcurve.h
+++ b/rtgui/mydiagonalcurve.h
@@ -72,7 +72,7 @@ protected:
void interpolate ();
void findClosestPoint();
CursorShape motionNotify(CursorShape type, double minDistanceX, double minDistanceY, int num);
- std::vector get_vector (int veclen);
+ std::vector get_vector (int veclen) override;
void get_LUT (LUTf &lut);
// Get the cursor position and unclamped position from the curve given an X value ; BEWARE: can be time consuming, use with care
void getCursorPositionFromCurve(float x);
@@ -82,23 +82,23 @@ protected:
public:
MyDiagonalCurve ();
- ~MyDiagonalCurve ();
- std::vector getPoints ();
- void setPoints (const std::vector& p);
+ ~MyDiagonalCurve () override;
+ std::vector getPoints () override;
+ void setPoints (const std::vector& p) override;
void setType (DiagonalCurveType t);
- bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
- bool handleEvents (GdkEvent* event);
+ bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override;
+ bool handleEvents (GdkEvent* event) override;
void setActiveParam (int ac);
- void reset (const std::vector &resetCurve, double identityValue = 0.5);
+ void reset (const std::vector &resetCurve, double identityValue = 0.5) override;
void updateBackgroundHistogram (LUTu & hist);
- void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey);
- bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
- void pipetteButton1Released(EditDataProvider *provider);
- void pipetteDrag(EditDataProvider *provider, int modifierKey);
+ void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey) override;
+ bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override;
+ void pipetteButton1Released(EditDataProvider *provider) override;
+ void pipetteDrag(EditDataProvider *provider, int modifierKey) override;
- virtual void setPos(double pos, int chanIdx);
- virtual void stopNumericalAdjustment();
+ void setPos(double pos, int chanIdx) override;
+ void stopNumericalAdjustment() override;
};
#endif
diff --git a/rtgui/myflatcurve.cc b/rtgui/myflatcurve.cc
index 70fc0c7d7..9b64ee516 100644
--- a/rtgui/myflatcurve.cc
+++ b/rtgui/myflatcurve.cc
@@ -613,7 +613,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event)
switch (event->type) {
- case Gdk::BUTTON_PRESS:
+ case GDK_BUTTON_PRESS:
if (edited_point == -1) { //curve.type!=FCT_Parametric) {
if (event->button.button == 1) {
buttonPressed = true;
@@ -816,7 +816,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event)
break;
- case Gdk::BUTTON_RELEASE:
+ case GDK_BUTTON_RELEASE:
if (edited_point == -1) { //curve.type!=FCT_Parametric) {
if (buttonPressed && event->button.button == 1) {
buttonPressed = false;
@@ -908,7 +908,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event)
break;
- case Gdk::MOTION_NOTIFY:
+ case GDK_MOTION_NOTIFY:
if (curve.type == FCT_Linear || curve.type == FCT_MinMaxCPoints) {
int previous_lit_point = lit_point;
@@ -1178,7 +1178,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event)
retval = true;
break;
- case Gdk::LEAVE_NOTIFY:
+ case GDK_LEAVE_NOTIFY:
// Pointer can LEAVE even when dragging the point, so we don't modify the cursor in this case
// The cursor will have to LEAVE another time after the drag...
diff --git a/rtgui/myflatcurve.h b/rtgui/myflatcurve.h
index 65a1e2230..c0223bfcf 100644
--- a/rtgui/myflatcurve.h
+++ b/rtgui/myflatcurve.h
@@ -112,31 +112,31 @@ protected:
void getMouseOverArea ();
bool getHandles(int n);
CursorShape motionNotify(CursorShape type, double minDistanceX, double minDistanceY, int num);
- std::vector get_vector (int veclen);
+ std::vector get_vector (int veclen) override;
void get_LUT (LUTf &lut);
public:
MyFlatCurve ();
//~MyFlatCurve ();
- std::vector getPoints ();
+ std::vector getPoints () override;
void setPeriodicity (bool isPeriodic)
{
periodic = isPeriodic;
};
- void setPoints (const std::vector& p);
+ void setPoints (const std::vector& p) override;
void setType (FlatCurveType t);
- bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
- bool handleEvents (GdkEvent* event);
- void reset (const std::vector &resetCurve, double identityValue = 0.5);
+ bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override;
+ bool handleEvents (GdkEvent* event) override;
+ void reset (const std::vector &resetCurve, double identityValue = 0.5) override;
//void updateBackgroundHistogram (unsigned int* hist);
- void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey);
- bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey);
- void pipetteButton1Released(EditDataProvider *provider);
- void pipetteDrag(EditDataProvider *provider, int modifierKey);
+ void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey) override;
+ bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override;
+ void pipetteButton1Released(EditDataProvider *provider) override;
+ void pipetteDrag(EditDataProvider *provider, int modifierKey) override;
- void setPos(double pos, int chanIdx);
- virtual void stopNumericalAdjustment();
+ void setPos(double pos, int chanIdx) override;
+ void stopNumericalAdjustment() override;
};
#endif
diff --git a/rtgui/navigator.h b/rtgui/navigator.h
index e7689b7c2..1b898f895 100644
--- a/rtgui/navigator.h
+++ b/rtgui/navigator.h
@@ -55,12 +55,12 @@ public:
// pointermotionlistener interface
// void pointerMoved (bool validPos, int x, int y, int r, int g, int b);
- void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool raw = false);
+ void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool raw = false) override;
void setInvalid (int fullWidth = -1, int fullHeight = -1);
- void getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB, bool isRaw = false);
- void getHSVText (float h, float s, float v, Glib::ustring &sH, Glib::ustring &sS, Glib::ustring &sV);
- void getLABText (float l, float a, float b, Glib::ustring &sL, Glib::ustring &sA, Glib::ustring &sB);
+ void getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB, bool isRaw = false) override;
+ void getHSVText (float h, float s, float v, Glib::ustring &sH, Glib::ustring &sS, Glib::ustring &sV) override;
+ void getLABText (float l, float a, float b, Glib::ustring &sL, Glib::ustring &sA, Glib::ustring &sB) override;
};
diff --git a/rtgui/options.h b/rtgui/options.h
index 20c60e69d..5bb3b25f6 100644
--- a/rtgui/options.h
+++ b/rtgui/options.h
@@ -108,8 +108,8 @@ public:
class Error: public std::exception
{
public:
- Error (const Glib::ustring &msg): msg_ (msg) {}
- const char *what() const throw()
+ explicit Error (const Glib::ustring &msg): msg_ (msg) {}
+ const char *what() const throw() override
{
return msg_.c_str();
}
diff --git a/rtgui/pcvignette.h b/rtgui/pcvignette.h
index 91e876947..98d42a477 100644
--- a/rtgui/pcvignette.h
+++ b/rtgui/pcvignette.h
@@ -20,16 +20,16 @@ public:
PCVignette ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged ();
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged () override;
void setAdjusterBehavior (bool strengthadd, bool featheradd, bool roundnessadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
};
#endif
diff --git a/rtgui/perspective.h b/rtgui/perspective.h
index a97d5d347..8038120fa 100644
--- a/rtgui/perspective.h
+++ b/rtgui/perspective.h
@@ -34,15 +34,15 @@ public:
PerspCorrection ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
void setAdjusterBehavior (bool badd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
};
#endif
diff --git a/rtgui/popupbutton.h b/rtgui/popupbutton.h
index 245d29aee..be08cd1ba 100644
--- a/rtgui/popupbutton.h
+++ b/rtgui/popupbutton.h
@@ -34,7 +34,7 @@ public:
void set_sensitive (bool isSensitive=true);
protected:
- bool on_button_release_event (GdkEventButton* event);
+ bool on_button_release_event (GdkEventButton* event) override;
private:
bool nextOnClicked;
diff --git a/rtgui/preferences.h b/rtgui/preferences.h
index a77e3ea82..3b78c0472 100644
--- a/rtgui/preferences.h
+++ b/rtgui/preferences.h
@@ -258,7 +258,7 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener
public:
explicit Preferences (RTWindow *rtwindow);
- ~Preferences ();
+ ~Preferences () override;
void savePressed ();
void loadPressed ();
@@ -288,9 +288,9 @@ public:
void behAddAllPressed ();
void behSetAllPressed ();
- virtual void storeCurrentValue();
- virtual void updateProfileList();
- virtual void restoreValue();
+ void storeCurrentValue() override;
+ void updateProfileList() override;
+ void restoreValue() override;
// void selectICCProfileDir ();
// void selectMonitorProfile ();
diff --git a/rtgui/preprocess.h b/rtgui/preprocess.h
index 64ed110fb..58cc2c2de 100644
--- a/rtgui/preprocess.h
+++ b/rtgui/preprocess.h
@@ -40,15 +40,15 @@ public:
PreProcess ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
//void setBatchMode (bool batchMode);
//void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL);
void hotPixelChanged();
void deadPixelChanged();
- void adjusterChanged(Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void adjusterChanged(Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
//void adjusterChanged (Adjuster* a, double newval);
diff --git a/rtgui/previewhandler.h b/rtgui/previewhandler.h
index 7fae4121e..81a68e05c 100644
--- a/rtgui/previewhandler.h
+++ b/rtgui/previewhandler.h
@@ -64,7 +64,7 @@ protected:
public:
PreviewHandler ();
- virtual ~PreviewHandler ();
+ ~PreviewHandler () override;
void addPreviewImageListener (PreviewListener* l)
{
@@ -72,9 +72,9 @@ public:
}
// previewimagelistener
- void setImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cp);
- void delImage(rtengine::IImage8* img);
- void imageReady(const rtengine::procparams::CropParams& cp);
+ void setImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cp) override;
+ void delImage(rtengine::IImage8* img) override;
+ void imageReady(const rtengine::procparams::CropParams& cp) override;
// this function is called when a new preview image arrives from rtengine
void previewImageChanged ();
diff --git a/rtgui/previewmodepanel.h b/rtgui/previewmodepanel.h
index 1d7b99625..4924b77af 100644
--- a/rtgui/previewmodepanel.h
+++ b/rtgui/previewmodepanel.h
@@ -47,7 +47,7 @@ protected:
public:
explicit PreviewModePanel (ImageArea* ia);
- ~PreviewModePanel();
+ ~PreviewModePanel() override;
void toggleR ();
void toggleG ();
diff --git a/rtgui/previewwindow.h b/rtgui/previewwindow.h
index ba9d8f633..c89c89d4e 100644
--- a/rtgui/previewwindow.h
+++ b/rtgui/previewwindow.h
@@ -50,26 +50,26 @@ public:
void setPreviewHandler (PreviewHandler* ph);
void setImageArea (ImageArea* ia);
- void on_realize ();
+ void on_realize () override;
void on_resized (Gtk::Allocation& req);
- bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr);
- bool on_motion_notify_event (GdkEventMotion* event);
- bool on_button_press_event (GdkEventButton* event);
- bool on_button_release_event(GdkEventButton* event);
- Gtk::SizeRequestMode get_request_mode_vfunc () const;
- void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const;
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
+ bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr) override;
+ bool on_motion_notify_event (GdkEventMotion* event) override;
+ bool on_button_press_event (GdkEventButton* event) override;
+ bool on_button_release_event(GdkEventButton* event) override;
+ Gtk::SizeRequestMode get_request_mode_vfunc () const override;
+ void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
// PreviewListener interface
- void previewImageChanged ();
+ void previewImageChanged () override;
// CropWindowListener interface
- void cropPositionChanged(CropWindow* w);
- void cropWindowSizeChanged(CropWindow* w);
- void cropZoomChanged(CropWindow* w);
- void initialImageArrived();
+ void cropPositionChanged(CropWindow* w) override;
+ void cropWindowSizeChanged(CropWindow* w) override;
+ void cropZoomChanged(CropWindow* w) override;
+ void initialImageArrived() override;
};
#endif
diff --git a/rtgui/profilepanel.h b/rtgui/profilepanel.h
index 509800aaa..b0fb42ab7 100644
--- a/rtgui/profilepanel.h
+++ b/rtgui/profilepanel.h
@@ -72,7 +72,7 @@ protected:
public:
explicit ProfilePanel ();
- virtual ~ProfilePanel ();
+ ~ProfilePanel () override;
void setProfileChangeListener (ProfileChangeListener* ppl)
{
@@ -81,9 +81,9 @@ public:
static void init (Gtk::Window* parentWindow);
static void cleanup ();
- void storeCurrentValue();
- void updateProfileList ();
- void restoreValue();
+ void storeCurrentValue() override;
+ void updateProfileList () override;
+ void restoreValue() override;
void initProfile (const Glib::ustring& profileFullPath, rtengine::procparams::ProcParams* lastSaved);
void setInitialFileName (const Glib::ustring& filename);
@@ -94,8 +94,8 @@ public:
const rtengine::ProcEvent& ev,
const Glib::ustring& descr,
const ParamsEdited* paramsEdited = nullptr
- );
- void clearParamChanges();
+ ) override;
+ void clearParamChanges() override;
// gui callbacks
void save_clicked (GdkEventButton* event);
diff --git a/rtgui/profilestorecombobox.cc b/rtgui/profilestorecombobox.cc
index 186309aa3..b4e893c1d 100644
--- a/rtgui/profilestorecombobox.cc
+++ b/rtgui/profilestorecombobox.cc
@@ -337,7 +337,7 @@ Gtk::TreeIter ProfileStoreComboBox::getRowFromLabel (Glib::ustring name)
const ProfileStoreEntry *pse = currRow[methodColumns.profileStoreEntry];
if (pse->label == name) {
- return currRow;
+ return std::move(currRow);
}
}
}
diff --git a/rtgui/progressconnector.h b/rtgui/progressconnector.h
index 12a2bf82f..394ad3909 100644
--- a/rtgui/progressconnector.h
+++ b/rtgui/progressconnector.h
@@ -36,12 +36,12 @@ public:
}
// ProgressListener interface
- void setProgress(double p)
+ void setProgress(double p) override
{
GThreadLock lock;
pl->setProgress(p);
}
- void setProgressStr(const Glib::ustring& str)
+ void setProgressStr(const Glib::ustring& str) override
{
GThreadLock lock;
Glib::ustring progrstr;
@@ -49,13 +49,13 @@ public:
pl->setProgressStr(progrstr);
}
- void setProgressState(bool inProcessing)
+ void setProgressState(bool inProcessing) override
{
GThreadLock lock;
pl->setProgressState(inProcessing);
}
- void error(const Glib::ustring& descr)
+ void error(const Glib::ustring& descr) override
{
GThreadLock lock;
pl->error(descr);
diff --git a/rtgui/prsharpening.h b/rtgui/prsharpening.h
index 8b2c02e25..0bceca856 100644
--- a/rtgui/prsharpening.h
+++ b/rtgui/prsharpening.h
@@ -57,28 +57,28 @@ protected:
public:
PrSharpening ();
- virtual ~PrSharpening ();
+ ~PrSharpening () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged ();
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged () override;
void edgesonly_toggled ();
void halocontrol_toggled ();
void method_changed ();
- void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop);
- void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight);
- void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop);
- void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight);
- void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR);
+ void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override;
+ void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
void setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
};
#endif
diff --git a/rtgui/rawcacorrection.h b/rtgui/rawcacorrection.h
index 3bb511885..13db1d1e3 100644
--- a/rtgui/rawcacorrection.h
+++ b/rtgui/rawcacorrection.h
@@ -42,16 +42,16 @@ public:
RAWCACorr ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
void setAdjusterBehavior (bool caadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
- void checkBoxToggled (CheckBox* c, CheckValue newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
+ void checkBoxToggled (CheckBox* c, CheckValue newval) override;
};
#endif
diff --git a/rtgui/rawexposure.h b/rtgui/rawexposure.h
index 6153ae98b..a04d0e3db 100644
--- a/rtgui/rawexposure.h
+++ b/rtgui/rawexposure.h
@@ -37,14 +37,14 @@ public:
RAWExposure ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
void setAdjusterBehavior (bool pexposadd, bool pexpreseradd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
};
#endif
diff --git a/rtgui/resize.h b/rtgui/resize.h
index e403e5d6f..3c599808d 100644
--- a/rtgui/resize.h
+++ b/rtgui/resize.h
@@ -33,20 +33,20 @@ class Resize final :
{
public:
Resize ();
- ~Resize ();
+ ~Resize () override;
Gtk::Box* getPackBox ()
{
return packBox;
}
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
void entryWChanged ();
void entryHChanged ();
void appliesToChanged ();
@@ -54,12 +54,12 @@ public:
void specChanged ();
void update (bool isCropped, int cw, int ch, int ow = 0, int oh = 0);
void setGUIFromCrop (bool isCropped, int cw, int ch);
- void sizeChanged (int w, int h, int ow, int oh);
+ void sizeChanged (int w, int h, int ow, int oh) override;
void setDimensions ();
- void enabledChanged ();
+ void enabledChanged () override;
void setAdjusterBehavior (bool scaleadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
private:
void fitBoxScale ();
diff --git a/rtgui/retinex.cc b/rtgui/retinex.cc
index 08883708e..a271efc0a 100644
--- a/rtgui/retinex.cc
+++ b/rtgui/retinex.cc
@@ -11,7 +11,6 @@ using namespace rtengine::procparams;
Retinex::Retinex () : FoldableToolPanel (this, "retinex", M ("TP_RETINEX_LABEL"), false, true), lastmedianmap (false)
{
CurveListener::setMulti (true);
- std::vector defaultCurve;
std::vector milestones;
nextmin = 0.;
nextmax = 0.;
diff --git a/rtgui/retinex.h b/rtgui/retinex.h
index e0d0d7695..b9ed3c927 100644
--- a/rtgui/retinex.h
+++ b/rtgui/retinex.h
@@ -96,25 +96,25 @@ protected:
public:
Retinex ();
- ~Retinex ();
+ ~Retinex () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void trimValues (rtengine::procparams::ProcParams* pp);
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
- void autoOpenCurve ();
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
+ void autoOpenCurve () override;
void medianmapChanged ();
- void minmaxChanged (double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax);
+ void minmaxChanged (double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax) override;
bool minmaxComputed_ ();
void updateLabel ();
void updateTrans ();
void neutral_pressed ();
- void enabledChanged ();
- void curveChanged (CurveEditor* ce);
+ void enabledChanged () override;
+ void curveChanged (CurveEditor* ce) override;
void retinexMethodChanged();
void mapMethodChanged();
void viewMethodChanged();
@@ -137,7 +137,7 @@ public:
const LUTu& histLRETI
);
- virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller);
+ void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
private:
void foldAllButMe (GdkEventButton* event, MyExpander *expander);
diff --git a/rtgui/rgbcurves.h b/rtgui/rgbcurves.h
index 2bb24a10f..a7846f9ab 100644
--- a/rtgui/rgbcurves.h
+++ b/rtgui/rgbcurves.h
@@ -42,15 +42,15 @@ protected:
public:
RGBCurves ();
- ~RGBCurves ();
+ ~RGBCurves () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void setEditProvider (EditDataProvider *provider);
- void autoOpenCurve ();
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void setEditProvider (EditDataProvider *provider) override;
+ void autoOpenCurve () override;
- void curveChanged (CurveEditor* ce);
+ void curveChanged (CurveEditor* ce) override;
void updateCurveBackgroundHistogram(
const LUTu& histToneCurve,
const LUTu& histLCurve,
@@ -64,7 +64,7 @@ public:
const LUTu& histLRETI
);
void lumamodeChanged ();
- void enabledChanged();
+ void enabledChanged() override;
};
#endif
diff --git a/rtgui/rotate.h b/rtgui/rotate.h
index 5361cd80e..c23807361 100644
--- a/rtgui/rotate.h
+++ b/rtgui/rotate.h
@@ -36,17 +36,17 @@ public:
Rotate ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
void straighten (double deg);
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
void setAdjusterBehavior (bool rotadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
void selectStraightPressed ();
void setLensGeomListener (LensGeomListener* l)
{
diff --git a/rtgui/rtwindow.h b/rtgui/rtwindow.h
index 61b961b64..5b58ab0eb 100644
--- a/rtgui/rtwindow.h
+++ b/rtgui/rtwindow.h
@@ -68,7 +68,7 @@ private:
public:
RTWindow ();
- ~RTWindow();
+ ~RTWindow() override;
#if defined(__APPLE__)
bool osxFileOpenEvent (Glib::ustring path);
@@ -81,20 +81,20 @@ public:
void addBatchQueueJobs (const std::vector& entries);
bool keyPressed (GdkEventKey* event);
- bool on_configure_event (GdkEventConfigure* event);
- bool on_delete_event (GdkEventAny* event);
- bool on_window_state_event (GdkEventWindowState* event);
+ bool on_configure_event (GdkEventConfigure* event) override;
+ bool on_delete_event (GdkEventAny* event) override;
+ bool on_window_state_event (GdkEventWindowState* event) override;
void on_mainNB_switch_page (Gtk::Widget* widget, guint page_num);
void showICCProfileCreator ();
void showPreferences ();
- void on_realize ();
+ void on_realize () override;
void toggle_fullscreen ();
- void setProgress(double p);
- void setProgressStr(const Glib::ustring& str);
- void setProgressState(bool inProcessing);
- void error(const Glib::ustring& descr);
+ void setProgress(double p) override;
+ void setProgressStr(const Glib::ustring& str) override;
+ void setProgressState(bool inProcessing) override;
+ void error(const Glib::ustring& descr) override;
rtengine::ProgressListener* getProgressListener ()
{
diff --git a/rtgui/saveformatpanel.h b/rtgui/saveformatpanel.h
index e6560d73d..48fa97e13 100644
--- a/rtgui/saveformatpanel.h
+++ b/rtgui/saveformatpanel.h
@@ -49,7 +49,7 @@ protected:
public:
SaveFormatPanel ();
- ~SaveFormatPanel ();
+ ~SaveFormatPanel () override;
void setListener (FormatChangeListener* l)
{
listener = l;
@@ -59,8 +59,8 @@ public:
SaveFormat getFormat ();
void formatChanged ();
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
};
#endif
diff --git a/rtgui/shadowshighlights.h b/rtgui/shadowshighlights.h
index 4b6daa9dc..e04e2000a 100644
--- a/rtgui/shadowshighlights.h
+++ b/rtgui/shadowshighlights.h
@@ -40,17 +40,17 @@ public:
ShadowsHighlights ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged ();
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged () override;
void setAdjusterBehavior (bool hadd, bool sadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
void colorspaceChanged();
};
diff --git a/rtgui/sharpenedge.h b/rtgui/sharpenedge.h
index 82f796cb5..8bf5647ed 100644
--- a/rtgui/sharpenedge.h
+++ b/rtgui/sharpenedge.h
@@ -44,16 +44,16 @@ public:
SharpenEdge ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
void setAdjusterBehavior (bool amountadd, bool passadd);
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
- void enabledChanged ();
+ void enabledChanged () override;
void chanthree_toggled ();
};
diff --git a/rtgui/sharpening.h b/rtgui/sharpening.h
index ed22357fa..fa5c956da 100644
--- a/rtgui/sharpening.h
+++ b/rtgui/sharpening.h
@@ -58,28 +58,28 @@ protected:
public:
Sharpening ();
- virtual ~Sharpening ();
+ ~Sharpening () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged(Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged ();
+ void adjusterChanged(Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged () override;
void edgesonly_toggled ();
void halocontrol_toggled ();
void method_changed ();
- void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop);
- void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight);
- void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop);
- void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight);
- void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR);
+ void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override;
+ void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
void setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
};
#endif
diff --git a/rtgui/sharpenmicro.h b/rtgui/sharpenmicro.h
index 19c962841..6dfccea85 100644
--- a/rtgui/sharpenmicro.h
+++ b/rtgui/sharpenmicro.h
@@ -47,16 +47,16 @@ public:
SharpenMicro ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
void setAdjusterBehavior (bool amountadd, bool contrastadd, bool uniformityadd);
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
- void enabledChanged ();
+ void enabledChanged () override;
void matrix_toggled ();
diff --git a/rtgui/shcselector.h b/rtgui/shcselector.h
index 5e02342d5..ac6c8afed 100644
--- a/rtgui/shcselector.h
+++ b/rtgui/shcselector.h
@@ -51,16 +51,16 @@ protected:
SHCListener* cl;
- Gtk::SizeRequestMode get_request_mode_vfunc () const;
- void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const;
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
- void on_realize();
- bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
- bool on_button_press_event (GdkEventButton* event);
- bool on_button_release_event (GdkEventButton* event);
- bool on_motion_notify_event (GdkEventMotion* event);
+ Gtk::SizeRequestMode get_request_mode_vfunc () const override;
+ void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
+ void on_realize() override;
+ bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override;
+ bool on_button_press_event (GdkEventButton* event) override;
+ bool on_button_release_event (GdkEventButton* event) override;
+ bool on_motion_notify_event (GdkEventMotion* event) override;
void updateBackBuffer();
public:
diff --git a/rtgui/softlight.h b/rtgui/softlight.h
index ad537894e..a036592e4 100644
--- a/rtgui/softlight.h
+++ b/rtgui/softlight.h
@@ -35,14 +35,14 @@ public:
SoftLight();
- void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr);
- void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr);
- void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr);
- void setBatchMode(bool batchMode);
+ void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr) override;
+ void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr) override;
+ void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr) override;
+ void setBatchMode(bool batchMode) override;
- void adjusterChanged(Adjuster *a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void enabledChanged();
+ void adjusterChanged(Adjuster *a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void enabledChanged() override;
void setAdjusterBehavior(bool strengthAdd);
};
diff --git a/rtgui/splash.h b/rtgui/splash.h
index 4769700f6..b35021c65 100644
--- a/rtgui/splash.h
+++ b/rtgui/splash.h
@@ -30,12 +30,12 @@ private:
public:
SplashImage ();
- bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
- Gtk::SizeRequestMode get_request_mode_vfunc () const;
- void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const;
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
+ bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override;
+ Gtk::SizeRequestMode get_request_mode_vfunc () const override;
+ void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
};
//class Splash : public Gtk::Window {
diff --git a/rtgui/thresholdadjuster.h b/rtgui/thresholdadjuster.h
index fea4e9094..54026a183 100644
--- a/rtgui/thresholdadjuster.h
+++ b/rtgui/thresholdadjuster.h
@@ -91,7 +91,7 @@ public:
double defTopLeft, double defBottomRight, double defTopRight, unsigned int precision,
bool startAtOne, bool editedCheckBox = false);
- virtual ~ThresholdAdjuster ();
+ ~ThresholdAdjuster () override;
void setAdjusterListener (ThresholdAdjusterListener* alistener)
{
adjusterListener = alistener;
diff --git a/rtgui/thresholdselector.h b/rtgui/thresholdselector.h
index 32b423e64..0b0f46d5f 100644
--- a/rtgui/thresholdselector.h
+++ b/rtgui/thresholdselector.h
@@ -111,17 +111,17 @@ protected:
void updateTooltip();
void updateBackBuffer();
- Gtk::SizeRequestMode get_request_mode_vfunc () const;
- void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const;
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
- void on_realize ();
- bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
- bool on_button_press_event (GdkEventButton* event);
- bool on_button_release_event (GdkEventButton* event);
- bool on_motion_notify_event (GdkEventMotion* event);
- bool on_leave_notify_event (GdkEventCrossing* event);
+ Gtk::SizeRequestMode get_request_mode_vfunc () const override;
+ void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
+ void on_realize () override;
+ bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override;
+ bool on_button_press_event (GdkEventButton* event) override;
+ bool on_button_release_event (GdkEventButton* event) override;
+ bool on_motion_notify_event (GdkEventMotion* event) override;
+ bool on_leave_notify_event (GdkEventCrossing* event) override;
public:
diff --git a/rtgui/thumbbrowserbase.h b/rtgui/thumbbrowserbase.h
index 02bea3646..dbc9374a0 100644
--- a/rtgui/thumbbrowserbase.h
+++ b/rtgui/thumbbrowserbase.h
@@ -49,21 +49,21 @@ class ThumbBrowserBase : public Gtk::Grid
public:
Internal ();
void setParent (ThumbBrowserBase* p);
- void on_realize();
- void on_style_updated();
- bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
+ void on_realize() override;
+ void on_style_updated() override;
+ bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override;
- Gtk::SizeRequestMode get_request_mode_vfunc () const;
- void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const;
- void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
- void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
- void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
+ Gtk::SizeRequestMode get_request_mode_vfunc () const override;
+ void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override;
+ void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override;
+ void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override;
- bool on_button_press_event (GdkEventButton* event);
- bool on_button_release_event (GdkEventButton* event);
- bool on_motion_notify_event (GdkEventMotion* event);
- bool on_scroll_event (GdkEventScroll* event);
- bool on_key_press_event (GdkEventKey* event);
+ bool on_button_press_event (GdkEventButton* event) override;
+ bool on_button_release_event (GdkEventButton* event) override;
+ bool on_motion_notify_event (GdkEventMotion* event) override;
+ bool on_scroll_event (GdkEventScroll* event) override;
+ bool on_key_press_event (GdkEventKey* event) override;
bool on_query_tooltip (int x, int y, bool keyboard_tooltip, const Glib::RefPtr& tooltip);
void setPosition (int x, int y);
@@ -199,7 +199,7 @@ public:
{
return fd;
}
- void on_style_updated ();
+ void on_style_updated () override;
void redraw (); // arrange files and draw area
void refreshThumbImages (); // refresh thumbnail sizes, re-generate thumbnail images, arrange and draw
void refreshQuickThumbImages (); // refresh thumbnail sizes, re-generate thumbnail images, arrange and draw
diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc
index 846802e2c..44a18f14f 100644
--- a/rtgui/thumbnail.cc
+++ b/rtgui/thumbnail.cc
@@ -619,6 +619,11 @@ void Thumbnail::getFinalSize (const rtengine::procparams::ProcParams& pparams, i
}
}
+void Thumbnail::getOriginalSize (int& w, int& h)
+{
+ w = tw;
+ h = th;
+}
rtengine::IImage8* Thumbnail::processThumbImage (const rtengine::procparams::ProcParams& pparams, int h, double& scale)
{
diff --git a/rtgui/thumbnail.h b/rtgui/thumbnail.h
index ae627c22f..28762e505 100644
--- a/rtgui/thumbnail.h
+++ b/rtgui/thumbnail.h
@@ -114,6 +114,7 @@ public:
rtengine::IImage8* upgradeThumbImage (const rtengine::procparams::ProcParams& pparams, int h, double& scale);
void getThumbnailSize (int &w, int &h, const rtengine::procparams::ProcParams *pparams = nullptr);
void getFinalSize (const rtengine::procparams::ProcParams& pparams, int& w, int& h);
+ void getOriginalSize (int& w, int& h);
const Glib::ustring& getExifString () const;
const Glib::ustring& getDateTimeString () const;
diff --git a/rtgui/tonecurve.h b/rtgui/tonecurve.h
index 53ec2fa9f..d95049d1c 100644
--- a/rtgui/tonecurve.h
+++ b/rtgui/tonecurve.h
@@ -88,21 +88,21 @@ protected:
public:
ToneCurve ();
- ~ToneCurve ();
+ ~ToneCurve () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
void setAdjusterBehavior (bool expadd, bool hlcompadd, bool hlcompthreshadd, bool bradd, bool blackadd, bool shcompadd, bool contradd, bool satadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
- void autoOpenCurve ();
- void setEditProvider (EditDataProvider *provider);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
+ void autoOpenCurve () override;
+ void setEditProvider (EditDataProvider *provider) override;
- virtual float blendPipetteValues (CurveEditor *ce, float chan1, float chan2, float chan3);
+ float blendPipetteValues (CurveEditor *ce, float chan1, float chan2, float chan3) override;
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
void neutral_pressed ();
void autolevels_toggled ();
void clip_changed ();
@@ -110,7 +110,7 @@ public:
void waitForAutoExp ();
bool autoExpComputed_ ();
void enableAll ();
- void curveChanged (CurveEditor* ce);
+ void curveChanged (CurveEditor* ce) override;
void curveMode1Changed ();
bool curveMode1Changed_ ();
void curveMode2Changed ();
@@ -133,8 +133,8 @@ public:
void histmatchingToggled();
bool histmatchingComputed();
- void autoExpChanged(double expcomp, int bright, int contr, int black, int hlcompr, int hlcomprthresh, bool hlrecons);
- void autoMatchedToneCurveChanged(rtengine::procparams::ToneCurveParams::TcMode curveMode, const std::vector& curve);
+ void autoExpChanged(double expcomp, int bright, int contr, int black, int hlcompr, int hlcomprthresh, bool hlrecons) override;
+ void autoMatchedToneCurveChanged(rtengine::procparams::ToneCurveParams::TcMode curveMode, const std::vector& curve) override;
void setRaw (bool raw);
diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h
index 9f2d031c0..39abd03fa 100644
--- a/rtgui/toolpanel.h
+++ b/rtgui/toolpanel.h
@@ -148,11 +148,11 @@ public:
FoldableToolPanel(Gtk::Box* content, Glib::ustring toolName, Glib::ustring UILabel, bool need11 = false, bool useEnabled = false);
- MyExpander* getExpander()
+ MyExpander* getExpander() override
{
return exp;
}
- void setExpanded (bool expanded)
+ void setExpanded (bool expanded) override
{
if (exp) {
exp->set_expanded( expanded );
@@ -170,7 +170,7 @@ public:
exp->show();
}
}
- bool getExpanded ()
+ bool getExpanded () override
{
if (exp) {
return exp->get_expanded();
@@ -178,11 +178,11 @@ public:
return false;
}
- void setParent (Gtk::Box* parent)
+ void setParent (Gtk::Box* parent) override
{
parentContainer = parent;
}
- Gtk::Box* getParent ()
+ Gtk::Box* getParent () override
{
return parentContainer;
}
diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h
index c92001607..8b76cda63 100644
--- a/rtgui/toolpanelcoord.h
+++ b/rtgui/toolpanelcoord.h
@@ -208,7 +208,7 @@ public:
Gtk::Notebook* toolPanelNotebook;
ToolPanelCoordinator(bool batch = false);
- virtual ~ToolPanelCoordinator();
+ ~ToolPanelCoordinator () override;
bool getChangedState()
{
@@ -235,9 +235,9 @@ public:
}
// toolpanellistener interface
- void panelChanged(const rtengine::ProcEvent& event, const Glib::ustring& descr);
+ void panelChanged(const rtengine::ProcEvent& event, const Glib::ustring& descr) override;
- void imageTypeChanged(bool isRaw, bool isBayer, bool isXtrans, bool isMono = false);
+ void imageTypeChanged (bool isRaw, bool isBayer, bool isXtrans, bool isMono = false) override;
// void autoContrastChanged (double autoContrast);
// profilechangelistener interface
@@ -247,8 +247,8 @@ public:
const Glib::ustring& descr,
const ParamsEdited* paramsEdited = nullptr,
bool fromLastSave = false
- );
- void setDefaults(const rtengine::procparams::ProcParams* defparams);
+ ) override;
+ void setDefaults(const rtengine::procparams::ProcParams* defparams) override;
// DirSelectionListener interface
void dirSelected(const Glib::ustring& dirname, const Glib::ustring& openfile);
@@ -271,13 +271,13 @@ public:
// wbprovider interface
- void getAutoWB(double& temp, double& green, double equal, double tempBias)
+ void getAutoWB (double& temp, double& green, double equal, double tempBias) override
{
if (ipc) {
ipc->getAutoWB(temp, green, equal, tempBias);
}
}
- void getCamWB(double& temp, double& green)
+ void getCamWB (double& temp, double& green) override
{
if (ipc) {
ipc->getCamWB(temp, green);
@@ -285,41 +285,41 @@ public:
}
//DFProvider interface
- rtengine::RawImage* getDF();
+ rtengine::RawImage* getDF() override;
//FFProvider interface
- rtengine::RawImage* getFF();
- Glib::ustring GetCurrentImageFilePath();
+ rtengine::RawImage* getFF() override;
+ Glib::ustring GetCurrentImageFilePath() override;
// rotatelistener interface
- void straightenRequested();
- void autoCropRequested();
- double autoDistorRequested();
+ void straightenRequested () override;
+ void autoCropRequested () override;
+ double autoDistorRequested () override;
// spotwblistener interface
- void spotWBRequested(int size);
+ void spotWBRequested (int size) override;
// croppanellistener interface
- void cropSelectRequested();
+ void cropSelectRequested () override;
// icmpanellistener interface
- void saveInputICCReference(const Glib::ustring& fname, bool apply_wb);
+ void saveInputICCReference(const Glib::ustring& fname, bool apply_wb) override;
// imageareatoollistener interface
- void spotWBselected(int x, int y, Thumbnail* thm = nullptr);
- void sharpMaskSelected(bool sharpMask);
- int getSpotWBRectSize() const;
- void cropSelectionReady();
- void rotateSelectionReady(double rotate_deg, Thumbnail* thm = nullptr);
- ToolBar* getToolBar() const;
- CropGUIListener* startCropEditing(Thumbnail* thm = nullptr);
+ void spotWBselected(int x, int y, Thumbnail* thm = nullptr) override;
+ void sharpMaskSelected(bool sharpMask) override;
+ int getSpotWBRectSize() const override;
+ void cropSelectionReady() override;
+ void rotateSelectionReady(double rotate_deg, Thumbnail* thm = nullptr) override;
+ ToolBar* getToolBar() const override;
+ CropGUIListener* startCropEditing(Thumbnail* thm = nullptr) override;
void updateTPVScrollbar(bool hide);
bool handleShortcutKey(GdkEventKey* event);
// ToolBarListener interface
- void toolSelected(ToolMode tool);
- void editModeSwitchedOff();
+ void toolSelected (ToolMode tool) override;
+ void editModeSwitchedOff () override;
void setEditProvider(EditDataProvider *provider);
diff --git a/rtgui/vibrance.h b/rtgui/vibrance.h
index 62faf0c85..ed3e10059 100644
--- a/rtgui/vibrance.h
+++ b/rtgui/vibrance.h
@@ -52,30 +52,30 @@ protected:
public:
Vibrance ();
- ~Vibrance ();
+ ~Vibrance () override;
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
void setAdjusterBehavior (bool pastelsadd, bool saturatedadd);
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
- void curveChanged ();
- void autoOpenCurve ();
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
+ void curveChanged () override;
+ void autoOpenCurve () override;
- void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop);
- void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight);
- void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop);
- void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight);
- void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR);
+ void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override;
+ void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
- void enabledChanged ();
+ void enabledChanged () override;
void protectskins_toggled ();
void avoidcolorshift_toggled ();
void pastsattog_toggled ();
- std::vector getCurvePoints(ThresholdSelector* tAdjuster) const;
+ std::vector getCurvePoints(ThresholdSelector* tAdjuster) const override;
};
diff --git a/rtgui/vignetting.h b/rtgui/vignetting.h
index 975bf7344..5432b6178 100644
--- a/rtgui/vignetting.h
+++ b/rtgui/vignetting.h
@@ -37,15 +37,15 @@ public:
Vignetting ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
- void adjusterChanged(Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void adjusterChanged(Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
void setAdjusterBehavior (bool amountadd, bool radiusadd, bool strengthadd, bool centeradd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
};
#endif
diff --git a/rtgui/wavelet.h b/rtgui/wavelet.h
index 5cbb5bfe3..163395d52 100644
--- a/rtgui/wavelet.h
+++ b/rtgui/wavelet.h
@@ -40,32 +40,32 @@ class Wavelet :
{
public:
Wavelet ();
- ~Wavelet ();
+ ~Wavelet () override;
bool wavComputed_ ();
- void adjusterChanged(Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
- void autoOpenCurve ();
- void curveChanged (CurveEditor* ce);
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
+ void adjusterChanged(Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
+ void autoOpenCurve () override;
+ void curveChanged (CurveEditor* ce) override;
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
void setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool threshold2add, bool thresadd, bool chroadd, bool chromaadd, bool contrastadd, bool skinadd, bool reschroadd, bool tmrsadd, bool resconadd, bool resconHadd, bool thradd, bool thrHadd, bool skyadd, bool edgradadd, bool edgvaladd, bool strengthadd, bool gammaadd, bool edgedetectadd, bool edgedetectthradd, bool edgedetectthr2add);
- void setBatchMode (bool batchMode);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setEditProvider (EditDataProvider *provider);
+ void setBatchMode (bool batchMode) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setEditProvider (EditDataProvider *provider) override;
void updateToolState (std::vector &tpOpen);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
void writeOptions (std::vector &tpOpen);
- void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop);
- void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight);
- void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop);
- void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight);
- void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR);
+ void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override;
+ void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override;
+ void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override;
private:
void foldAllButMe (GdkEventButton* event, MyExpander *expander);
- virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller);
+ void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override;
void BAmethodChanged ();
void NPmethodChanged ();
void BackmethodChanged ();
@@ -84,7 +84,7 @@ private:
void contrastMinusPressed ();
void contrastPlusPressed ();
void daubcoeffmethodChanged ();
- void enabledChanged ();
+ void enabledChanged () override;
void linkedgToggled ();
void lipstToggled ();
void medianToggled ();
@@ -94,7 +94,7 @@ private:
void neutralchPressed ();
void tmrToggled ();
void updatewavLabel ();
- void wavChanged (double nlevel);
+ void wavChanged (double nlevel) override;
void HSmethodUpdateUI();
void CHmethodUpdateUI();
diff --git a/rtgui/whitebalance.h b/rtgui/whitebalance.h
index 08ec05047..2db46b7af 100644
--- a/rtgui/whitebalance.h
+++ b/rtgui/whitebalance.h
@@ -94,20 +94,20 @@ protected:
public:
WhiteBalance ();
- ~WhiteBalance ();
+ ~WhiteBalance () override;
static void init ();
static void cleanup ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
void optChanged ();
void spotPressed ();
void spotSizeChanged ();
- void adjusterChanged(Adjuster* a, double newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void adjusterChanged(Adjuster* a, double newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
int getSize ();
void setWBProvider (WBProvider* p)
{
@@ -118,11 +118,11 @@ public:
wblistener = l;
}
void setWB (int temp, double green);
- void WBChanged (double temp, double green);
+ void WBChanged (double temp, double green) override;
void setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd, bool tempbiasadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
- void enabledChanged();
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
+ void enabledChanged() override;
};
#endif
diff --git a/rtgui/xtransprocess.h b/rtgui/xtransprocess.h
index 7a706b1ac..cd60337dc 100644
--- a/rtgui/xtransprocess.h
+++ b/rtgui/xtransprocess.h
@@ -46,19 +46,19 @@ protected:
public:
XTransProcess ();
- ~XTransProcess ();
+ ~XTransProcess () override;
- void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
+ void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
void setAdjusterBehavior(bool falsecoloradd, bool dualDemosaicContrastAdd);
- void setBatchMode(bool batchMode);
- void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
+ void setBatchMode(bool batchMode) override;
+ void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
void methodChanged();
- void autoContrastChanged (double autoContrast);
- void adjusterChanged(Adjuster* a, double newval);
- void checkBoxToggled(CheckBox* c, CheckValue newval);
- void adjusterAutoToggled(Adjuster* a, bool newval);
+ void autoContrastChanged (double autoContrast) override;
+ void adjusterChanged(Adjuster* a, double newval) override;
+ void checkBoxToggled(CheckBox* c, CheckValue newval) override;
+ void adjusterAutoToggled(Adjuster* a, bool newval) override;
};
#endif
diff --git a/rtgui/xtransrawexposure.h b/rtgui/xtransrawexposure.h
index fc95d5743..75bdbd0e2 100644
--- a/rtgui/xtransrawexposure.h
+++ b/rtgui/xtransrawexposure.h
@@ -38,14 +38,14 @@ public:
XTransRAWExposure ();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void adjusterChanged (Adjuster* a, double newval);
- void adjusterAutoToggled (Adjuster* a, bool newval);
+ void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
+ void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
+ void setBatchMode (bool batchMode) override;
+ void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override;
+ void adjusterChanged (Adjuster* a, double newval) override;
+ void adjusterAutoToggled (Adjuster* a, bool newval) override;
void setAdjusterBehavior (bool pexblackadd);
- void trimValues (rtengine::procparams::ProcParams* pp);
+ void trimValues (rtengine::procparams::ProcParams* pp) override;
};
#endif