diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8dcf6793d..ea95d818c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,10 +1,8 @@
-if(WIN32)
- cmake_minimum_required(VERSION 2.8.4)
-elseif(APPLE)
+if(APPLE)
cmake_minimum_required(VERSION 3.3)
CMAKE_POLICY(SET CMP0025 NEW)
else()
- cmake_minimum_required(VERSION 2.6)
+ cmake_minimum_required(VERSION 2.8.8)
endif()
# Must stay before the PROJECT() command:
@@ -318,9 +316,9 @@ pkg_check_modules(LCMS REQUIRED lcms2>=2.6)
pkg_check_modules(EXPAT REQUIRED expat>=2.1)
pkg_check_modules(FFTW3F REQUIRED fftw3f)
pkg_check_modules(IPTCDATA REQUIRED libiptcdata)
+pkg_check_modules(TIFF REQUIRED libtiff-4>=4.0.4)
find_package(JPEG REQUIRED)
find_package(PNG REQUIRED)
-find_package(TIFF REQUIRED)
find_package(ZLIB REQUIRED)
if(WITH_SYSTEM_KLT)
find_package(KLT REQUIRED)
diff --git a/rawtherapee.astylerc b/rawtherapee.astylerc
new file mode 100644
index 000000000..3d49d821f
--- /dev/null
+++ b/rawtherapee.astylerc
@@ -0,0 +1,8 @@
+style=1tbs
+indent=spaces=4
+indent-switches
+break-blocks
+pad-oper
+convert-tabs
+pad-header
+unpad-paren
diff --git a/rtdata/dcpprofiles/NIKON D5000.dcp b/rtdata/dcpprofiles/NIKON D5000.dcp
new file mode 100644
index 000000000..13ce18123
Binary files /dev/null and b/rtdata/dcpprofiles/NIKON D5000.dcp differ
diff --git a/rtdata/dcpprofiles/Panasonic DC-GX9.dcp b/rtdata/dcpprofiles/Panasonic DC-GX9.dcp
new file mode 100644
index 000000000..7b8414e97
Binary files /dev/null and b/rtdata/dcpprofiles/Panasonic DC-GX9.dcp differ
diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala
index 4ef640e95..8f6faf352 100644
--- a/rtdata/languages/Catala
+++ b/rtdata/languages/Catala
@@ -1313,14 +1313,15 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -1328,9 +1329,17 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1374,6 +1383,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%.
!MONITOR_PROFILE_SYSTEM;System default
!NAVIGATOR_B;B:
!NAVIGATOR_G;G:
@@ -1401,13 +1411,16 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!PARTIALPASTE_PCVIGNETTE;Vignette filter
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_LMMSEITERATIONS;LMMSE enhancement steps
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1889,14 +1902,20 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!TP_RAWEXPOS_BLACK_GREEN;Green
!TP_RAWEXPOS_BLACK_RED;Red
!TP_RAWEXPOS_RGB;Red, Green, Blue
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1912,6 +1931,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1940,10 +1960,12 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
@@ -2028,9 +2050,13 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!TP_RGBCURVES_LUMAMODE_TOOLTIP;Luminosity mode allows to vary the contribution of R, G and B channels to the luminosity of the image, without altering image color.
!TP_SAVEDIALOG_OK_TIP;Shortcut: Ctrl-Enter
!TP_SHADOWSHLIGHTS_SHARPMASK;Sharp mask
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_WAVELET_1;Level 1
!TP_WAVELET_2;Level 2
@@ -2100,7 +2126,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified)
index 55c300e06..d81d1667e 100644
--- a/rtdata/languages/Chinese (Simplified)
+++ b/rtdata/languages/Chinese (Simplified)
@@ -1420,14 +1420,15 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -1435,9 +1436,17 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1486,6 +1495,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.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%.
!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%.
!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.
@@ -1493,7 +1503,10 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!PARTIALPASTE_ADVANCEDGROUP;Advanced Settings
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
+!PARTIALPASTE_RAW_BORDER;Raw border
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
!PREFERENCES_BEHSETALLHINT;Set all parameters to the Set mode.\nAdjustments of parameters in the batch tool panel will be absolute, the actual values will be displayed.
@@ -1862,17 +1875,23 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD;Method
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FALSECOLOR;False color suppression steps
!TP_RAW_FAST;Fast
@@ -1890,6 +1909,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1918,10 +1938,12 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
@@ -2003,12 +2025,16 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2095,7 +2121,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional)
index c84441c14..2bef0697a 100644
--- a/rtdata/languages/Chinese (Traditional)
+++ b/rtdata/languages/Chinese (Traditional)
@@ -975,14 +975,15 @@ TP_WBALANCE_TEMPERATURE;色溫
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -990,9 +991,17 @@ TP_WBALANCE_TEMPERATURE;色溫
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1064,6 +1073,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_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
@@ -1118,6 +1128,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1125,6 +1136,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1136,7 +1148,8 @@ TP_WBALANCE_TEMPERATURE;色溫
!PARTIALPASTE_RGBCURVES;RGB curves
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1810,17 +1823,23 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD;Method
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FALSECOLOR;False color suppression steps
!TP_RAW_FAST;Fast
@@ -1838,6 +1857,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1866,10 +1886,12 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1968,13 +1990,17 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2065,7 +2091,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech
index 3ffa280b7..7ee30d6d5 100644
--- a/rtdata/languages/Czech
+++ b/rtdata/languages/Czech
@@ -753,9 +753,6 @@ HISTORY_MSG_484;CAT02 - Automatická Yb scény
HISTORY_MSG_485;Korekce objektivu
HISTORY_MSG_486;Korekce objektivu - Fotoaparát
HISTORY_MSG_487;Korekce objektivu - Objektiv
-HISTORY_MSG_488;HDR Mapování tónů
-HISTORY_MSG_489;HDR TM - Práh
-HISTORY_MSG_490;HDR TM - Míra
HISTORY_MSG_491;Vyvážení bílé
HISTORY_MSG_492;RGB křivky
HISTORY_MSG_493;L*a*b* úpravy
@@ -770,7 +767,6 @@ HISTORY_MSG_LOCALCONTRAST_RADIUS;Místní kontrast - Poloměr
HISTORY_MSG_METADATA_MODE;Režim kopírování metadat
HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Směr filtru linkového rušení
HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;Filtr PDAF linek
-HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Kotva
HISTORY_NEWSNAPSHOT;Přidat
HISTORY_NEWSNAPSHOT_TOOLTIP;Zkratka: Alt-s
HISTORY_SNAPSHOT;Snímek
@@ -981,7 +977,6 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Stíny/Světla
PARTIALPASTE_SHARPENEDGE;Hrany
PARTIALPASTE_SHARPENING;Doostření (USM/RL)
PARTIALPASTE_SHARPENMICRO;Mikrokontrast
-PARTIALPASTE_TM_FATTAL;HDR mapování tónů
PARTIALPASTE_VIBRANCE;Živost
PARTIALPASTE_VIGNETTING;Korekce vinětace
PARTIALPASTE_WHITEBALANCE;Nastavení bílé
@@ -1982,10 +1977,6 @@ TP_SHARPENMICRO_AMOUNT;Kvantita
TP_SHARPENMICRO_LABEL;Mikrokontrast
TP_SHARPENMICRO_MATRIX;Matice 3×3 namísto 5×5
TP_SHARPENMICRO_UNIFORMITY;Jednolitost
-TP_TM_FATTAL_AMOUNT;Míra
-TP_TM_FATTAL_ANCHOR;Kotva
-TP_TM_FATTAL_LABEL;HDR Mapování tónů
-TP_TM_FATTAL_THRESHOLD;Práh
TP_VIBRANCE_AVOIDCOLORSHIFT;Zabránit posunu barev
TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tóny pleti
@@ -2239,7 +2230,42 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
!HISTORY_MSG_237;B&W - CM
!HISTORY_MSG_273;CT - Color Balance SMH
!HISTORY_MSG_392;W - Residual - Color Balance
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
+!PARTIALPASTE_RAW_BORDER;Raw border
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
!TP_BWMIX_MIXC;Channel Mixer
!TP_BWMIX_NEUTRAL;Reset
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_4PASS;3-pass+fast
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
+!TP_RAW_RCDVNG4;RCD+VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
+!TP_TM_FATTAL_AMOUNT;Amount
+!TP_TM_FATTAL_ANCHOR;Anchor
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
+!TP_TM_FATTAL_THRESHOLD;Threshold
diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk
index 75196d5c0..39dbfa855 100644
--- a/rtdata/languages/Dansk
+++ b/rtdata/languages/Dansk
@@ -970,14 +970,15 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -985,9 +986,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1060,6 +1069,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_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
@@ -1115,6 +1125,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1122,6 +1133,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1133,7 +1145,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_RGBCURVES;RGB curves
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1807,16 +1820,22 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1833,6 +1852,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1861,10 +1881,12 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1966,13 +1988,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2063,7 +2089,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch
index 1005a55e6..0a1608184 100644
--- a/rtdata/languages/Deutsch
+++ b/rtdata/languages/Deutsch
@@ -36,7 +36,7 @@
#35 2017-02-18 AWB bias (TooWaBoo) RT 5.0 r1
#36 2017-02-23 Korrekturen (TooWaBoo) RT 5.0 r1
#37 2017-03-06 Dynamisches Profil (TooWaBoo) RT 5.0 r1
-#38 2017-03-26 Pixel Shift (TooWaBoo) RT 5.0 r1
+#38 2017-03-26 Pixel-Shift (TooWaBoo) RT 5.0 r1
#39 06.04.2017 Fast Export (TooWaBoo) RT 5.0 r1
#40 30.04.2017 Erweiterung/Korrekturen (TooWaBoo) RT 5.0 r1
#41 03.05.2017 Erweiterung/Korrekturen (TooWaBoo) RT 5.0 r1
@@ -57,6 +57,15 @@
#56 27.04.2018 Erweiterung (TooWaBoo) RT 5.4
#57 17.05.2018 Erweiterung (TooWaBoo) RT 5.4
#58 19.05.2018 Erweiterung (TooWaBoo) RT 5.4
+#59 29.05.2018 Erweiterung (TooWaBoo) RT 5.4
+#60 14.06.2018 Erweiterung (TooWaBoo) RT 5.4
+#61 14.06.2018 Korrektur (TooWaBoo) RT 5.4
+#62 22.06.2018 Korrektur (TooWaBoo) RT 5.4
+#63 24.06.2018 DCB/RCD+VNG4 (TooWaBoo) RT 5.4
+#64 24.06.2018 Erweiterung/Korrektur (TooWaBoo) RT 5.4
+#65 25.06.2018 Korrekturen (TooWaBoo) RT 5.4
+#66 04.07.2018 Erweiterung (TooWaBoo) RT 5.4
+#67 05.07.2018 Erweiterung (TooWaBoo) RT 5.4
ABOUT_TAB_BUILD;Version
ABOUT_TAB_CREDITS;Danksagungen
@@ -462,11 +471,11 @@ HISTORY_MSG_154;(Dynamik)\nHautfarbtöne schützen
HISTORY_MSG_155;(Dynamik)\nFarbverschiebungen\nvermeiden
HISTORY_MSG_156;(Dynamik)\nPastell und gesättigte\nTöne koppeln
HISTORY_MSG_157;(Dynamik)\nPastell/gesättigte Töne\nSchwelle
-HISTORY_MSG_158;(Dynamikkompression)\nIntensität
-HISTORY_MSG_159;(Dynamikkompression)\nKantenschutz
-HISTORY_MSG_160;(Dynamikkompression)\nFaktor
-HISTORY_MSG_161;(Dynamikkompression)\nIterationen
-HISTORY_MSG_162;(Dynamikkompression)
+HISTORY_MSG_158;(Tonwertkorrektur)\nIntensität
+HISTORY_MSG_159;(Tonwertkorrektur)\nKantenschutz
+HISTORY_MSG_160;(Tonwertkorrektur)\nFaktor
+HISTORY_MSG_161;(Tonwertkorrektur)\nIterationen
+HISTORY_MSG_162;(Tonwertkorrektur)
HISTORY_MSG_163;(RGB-Kurven) - Rot
HISTORY_MSG_164;(RGB-Kurven) - Grün
HISTORY_MSG_165;(RGB-Kurven) - Blau
@@ -600,7 +609,7 @@ HISTORY_MSG_293;(Filmsimulation)
HISTORY_MSG_294;(Filmsimulation)\nIntensität
HISTORY_MSG_295;(Filmsimulation) - Film
HISTORY_MSG_296;(Rauschreduzierung)\nLuminanzkurve
-HISTORY_MSG_297;(Rauschreduzierung)\nQualität
+HISTORY_MSG_297;(Rauschreduzierung)\nModus
HISTORY_MSG_298;(Vorverarbeitung)\nDead-Pixel-Filter
HISTORY_MSG_299;(Rauschreduzierung)\nChrominanzkurve
HISTORY_MSG_300;-
@@ -663,7 +672,7 @@ HISTORY_MSG_356;(Wavelet)\nKantenschärfung\nSchwelle hoch
HISTORY_MSG_357;(Wavelet)\nRauschreduzierung\nSchärfung verknüpfen
HISTORY_MSG_358;(Wavelet) - Gamut\nKontrastkurve
HISTORY_MSG_359;(Vorverarbeitung)\nHot / Dead-Pixel-Filter\nSchwelle
-HISTORY_MSG_360;(Dynamikkompression)\nGamma
+HISTORY_MSG_360;(Tonwertkorrektur)\nGamma
HISTORY_MSG_361;(Wavelet) - Endretusche\nFarbausgleich
HISTORY_MSG_362;(Wavelet) - Restbild\nKompression
HISTORY_MSG_363;(Wavelet) - Restbild\nKompression - Intensität
@@ -749,20 +758,20 @@ HISTORY_MSG_442;(Retinex) - Einstellungen\nTransmission - Skalierung
HISTORY_MSG_443;(Farbmanagement)\nAusgabeprofil\nSchwarzpunkt-Kompensation
HISTORY_MSG_444;(Weißabgleich)\nAWB-Temperatur-Korrektur
HISTORY_MSG_445;(Sensor-Matrix)\nFarbinterpolation\nUnterbild
-HISTORY_MSG_449;(Sensor-Matrix)\nFarbinterpolation\nISO-Anpassung
-HISTORY_MSG_452;(Sensor-Matrix)\nFarbinterpolation\nBewegungsmaske\nanzeigen
-HISTORY_MSG_453;(Sensor-Matrix)\nFarbinterpolation\nNur Maske anzeigen
-HISTORY_MSG_457;(Sensor-Matrix)\nFarbinterpolation\nBewegung im Rot/Blau-\nKanal erkennen
-HISTORY_MSG_462;(Sensor-Matrix)\nFarbinterpolation\nBewegung im Grün-\nKanal erkennen
-HISTORY_MSG_464;(Sensor-Matrix)\nFarbinterpolation\nUnschärfebewegungsmaske
-HISTORY_MSG_465;(Sensor-Matrix)\nFarbinterpolation\nUnschärferadius
-HISTORY_MSG_468;(Sensor-Matrix)\nFarbinterpolation\nLücken in der Bewegungs-\nmaske erkennen
-HISTORY_MSG_469;(Sensor-Matrix)\nFarbinterpolation\nMedian
-HISTORY_MSG_471;(Sensor-Matrix)\nFarbinterpolation\nBewegungskorrektur
-HISTORY_MSG_472;(Sensor-Matrix)\nFarbinterpolation\nWeicher Übergang
-HISTORY_MSG_473;(Sensor-Matrix)\nFarbinterpolation\nLMMSE für Bewegungs-\nteile verwenden
-HISTORY_MSG_474;(Sensor-Matrix)\nFarbinterpolation\nFrame-Helligkeit angleichen
-HISTORY_MSG_475;(Sensor-Matrix)\nFarbinterpolation)\nAusgleich pro Kanal
+HISTORY_MSG_449;(Sensor-Matrix)\nFarbinterpolation - PS\nISO-Anpassung
+HISTORY_MSG_452;(Sensor-Matrix)\nFarbinterpolation - PS\nBewegungsmaske\nanzeigen
+HISTORY_MSG_453;(Sensor-Matrix)\nFarbinterpolation - PS\nNur Maske anzeigen
+HISTORY_MSG_457;(Sensor-Matrix)\nFarbinterpolation - PS\nBewegung im Rot/Blau-\nKanal erkennen
+HISTORY_MSG_462;(Sensor-Matrix)\nFarbinterpolation - PS\nBewegung im Grün-\nKanal erkennen
+HISTORY_MSG_464;(Sensor-Matrix)\nFarbinterpolation - PS\nUnschärfebewegungsmaske
+HISTORY_MSG_465;(Sensor-Matrix)\nFarbinterpolation - PS\nUnschärferadius
+HISTORY_MSG_468;(Sensor-Matrix)\nFarbinterpolation - PS\nLücken in der Bewegungs-\nmaske erkennen
+HISTORY_MSG_469;(Sensor-Matrix)\nFarbinterpolation - PS\nMedian
+HISTORY_MSG_471;(Sensor-Matrix)\nFarbinterpolation - PS\nBewegungskorrektur
+HISTORY_MSG_472;(Sensor-Matrix)\nFarbinterpolation - PS\nWeicher Übergang
+HISTORY_MSG_473;(Sensor-Matrix)\nFarbinterpolation - PS\nLMMSE für Bewegungs-\nteile verwenden
+HISTORY_MSG_474;(Sensor-Matrix)\nFarbinterpolation - PS\nFrame-Helligkeit angleichen
+HISTORY_MSG_475;(Sensor-Matrix)\nFarbinterpolation - PS\nAusgleich pro Kanal
HISTORY_MSG_476;(CIECAM02)\nBetrachtungsbed.\nFarbtemperatur
HISTORY_MSG_477;(CIECAM02)\nBetrachtungsbed.\nTönung
HISTORY_MSG_478;(CIECAM02)\nBetrachtungsbed.\nYb% (Ø Luminanz)
@@ -775,14 +784,15 @@ HISTORY_MSG_484;(CIECAM02) - Szene\nAuto Yb%
HISTORY_MSG_485;(Objektivkorrektur)\nProfil
HISTORY_MSG_486;(Objektivkorrektur)\nProfil - Kamera
HISTORY_MSG_487;(Objektivkorrektur)\nProfil - Objektiv
-HISTORY_MSG_488;(HDR-Dynamikkompression)
-HISTORY_MSG_489;(HDR-Dynamikkompression)\nSchwelle
-HISTORY_MSG_490;(HDR-Dynamikkompression)\nIntensität
+HISTORY_MSG_488;(Dynamikkompression)
+HISTORY_MSG_489;(Dynamikkompression)\nSchwelle
+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_DUALDEMOSAIC_CONTRAST;(Sensor-Matrix)\nFarbinterpolation\nKontrastschwelle
HISTORY_MSG_HISTMATCHING;(Belichtung)\nAuto-Tonwertkurve
HISTORY_MSG_LOCALCONTRAST_AMOUNT;(Lokaler Kontrast)\nIntensität
HISTORY_MSG_LOCALCONTRAST_DARKNESS;(Lokaler Kontrast)\nDunkle Bereiche
@@ -790,9 +800,17 @@ HISTORY_MSG_LOCALCONTRAST_ENABLED;(Lokaler Kontrast)
HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;(Lokaler Kontrast)\nHelle Bereiche
HISTORY_MSG_LOCALCONTRAST_RADIUS;(Lokaler Kontrast)\nRadius
HISTORY_MSG_METADATA_MODE;(Metadaten)\nKopiermodus
+HISTORY_MSG_MICROCONTRAST_CONTRAST;(Mikrokontrast)\nKontrastschwelle
+HISTORY_MSG_PIXELSHIFT_DEMOSAIC;(Sensor-Matrix)\nFarbinterpolation - PS\nBewegungsmethode
HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;(Sensor-Matrix)\nVorverarbeitung\nRichtung
HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;(Sensor-Matrix)\nVorverarbeitung\nPDAF-Zeilenfilter
-HISTORY_MSG_TM_FATTAL_ANCHOR;(HDR-Dynamikkompression)\nHelligkeitsverschiebung
+HISTORY_MSG_PRSHARPEN_CONTRAST;(Skalieren) - Schärfen\nKontrastschwelle
+HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand
+HISTORY_MSG_RESIZE_ALLOW_UPSCALING;(Skalieren)\nHochskalieren zulassen
+HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle
+HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht)
+HISTORY_MSG_SOFTLIGHT_STRENGTH;(Weiches Licht)\nIntensität
+HISTORY_MSG_TM_FATTAL_ANCHOR;(Dynamikkompression)\nHelligkeitsverschiebung
HISTORY_NEWSNAPSHOT;Hinzufügen
HISTORY_NEWSNAPSHOT_TOOLTIP;Taste: Alt + s
HISTORY_SNAPSHOT;Schnappschuss
@@ -913,6 +931,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_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
@@ -955,8 +974,8 @@ PARTIALPASTE_DIALOGLABEL;Selektives Einfügen des Bearbeitungsprofils
PARTIALPASTE_DIRPYRDENOISE;Rauschreduzierung
PARTIALPASTE_DIRPYREQUALIZER;Detailebenenkontrast
PARTIALPASTE_DISTORTION;Verzeichnungskorrektur
-PARTIALPASTE_EPD;Dynamikkompression
-PARTIALPASTE_EQUALIZER;Anzahl der Ebenen
+PARTIALPASTE_EPD;Tonwertkorrektur
+PARTIALPASTE_EQUALIZER;Wavelet
PARTIALPASTE_EVERYTHING;Alle Parameter aktivieren / deaktivieren
PARTIALPASTE_EXIFCHANGES;Änderungen an Exif-Daten
PARTIALPASTE_EXPOSURE;Belichtung
@@ -983,6 +1002,7 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Vorverarbeitung: Dead-Pixel-Filter
PARTIALPASTE_PREPROCESS_GREENEQUIL;Vorverarbeitung: Grün-Ausgleich
PARTIALPASTE_PREPROCESS_HOTPIXFILT;Vorverarbeitung: Hot-Pixel-Filter
PARTIALPASTE_PREPROCESS_LINEDENOISE;Vorverarbeitung: Zeilenrauschfilter
+PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;Vorverarbeitung: PDAF-Zeilenfilter
PARTIALPASTE_PRSHARPENING;Schärfung nach Größenänderung
PARTIALPASTE_RAWCACORR_AUTO;Chromatische Aberration: Automatische Korrektur
PARTIALPASTE_RAWCACORR_CAREDBLUE;Chromatische Aberration: Rot & Blau
@@ -990,13 +1010,14 @@ PARTIALPASTE_RAWEXPOS_BLACK;Weißpunkt: Schwarzpegel
PARTIALPASTE_RAWEXPOS_LINEAR;Weißpunkt: Korrekturfaktor
PARTIALPASTE_RAWEXPOS_PRESER;Weißpunkt: Lichter schützen (EV)
PARTIALPASTE_RAWGROUP;RAW
+PARTIALPASTE_RAW_BORDER;Farbinterpolation: Bildrand
PARTIALPASTE_RAW_DCBENHANCE;Farbinterpolation: DCB-Verbesserung
PARTIALPASTE_RAW_DCBITERATIONS;Farbinterpolation: Anzahl der DCB-Iterationen
PARTIALPASTE_RAW_DMETHOD;Farbinterpolation: Methode
PARTIALPASTE_RAW_FALSECOLOR;Farbinterpolation: Falschfarbenreduzierung
PARTIALPASTE_RAW_IMAGENUM;Farbinterpolation: Unterbild
PARTIALPASTE_RAW_LMMSEITERATIONS;Farbinterpolation: LMMSE-Verbesserungsstufen
-PARTIALPASTE_RAW_PIXELSHIFT;Farbinterpolation: Pixel Shift
+PARTIALPASTE_RAW_PIXELSHIFT;Farbinterpolation: Pixel-Shift
PARTIALPASTE_RESIZE;Skalieren
PARTIALPASTE_RETINEX;Retinex (Bildschleier entfernen)
PARTIALPASTE_RGBCURVES;RGB-Kurven
@@ -1005,7 +1026,8 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Schatten/Lichter
PARTIALPASTE_SHARPENEDGE;Kantenschärfung
PARTIALPASTE_SHARPENING;Schärfung
PARTIALPASTE_SHARPENMICRO;Mikrokontrast
-PARTIALPASTE_TM_FATTAL;HDR-Dynamikkompression
+PARTIALPASTE_SOFTLIGHT;Weiches Licht
+PARTIALPASTE_TM_FATTAL;Dynamikkompression
PARTIALPASTE_VIBRANCE;Dynamik
PARTIALPASTE_VIGNETTING;Vignettierungskorrektur
PARTIALPASTE_WAVELETGROUP;Wavelet
@@ -1274,7 +1296,7 @@ QINFO_FRAMECOUNT;%2 Frames
QINFO_HDR;HDR / %2 Frame(s)
QINFO_ISO;ISO
QINFO_NOEXIF;Keine Exif-Daten vorhanden.
-QINFO_PIXELSHIFT;Pixel Shift / %2 Frame(s)
+QINFO_PIXELSHIFT;Pixel-Shift / %2 Frame(s)
SAMPLEFORMAT_0;Unbekanntes Datenformat
SAMPLEFORMAT_1;8 Bit ohne Vorzeichen
SAMPLEFORMAT_2;16 Bit ohne Vorzeichen
@@ -1310,7 +1332,7 @@ THRESHOLDSELECTOR_HINT;Umschalt-Taste halten, um individuelle\nKontrollpu
THRESHOLDSELECTOR_T;Oben
THRESHOLDSELECTOR_TL;Oben-Links
THRESHOLDSELECTOR_TR;Oben-Rechts
-TOOLBAR_TOOLTIP_COLORPICKER;Farbwähler\n\nWenn eingeschaltet:\n- Mit der linken Maustaste können Sie einen Farbwähler setzen.\n- Zum Verschieben, linke Maustaste festhalten.\n- Umschalttaste + Rechts-Klick entfernt alle Farbwähler.\n- Rechts-Klick auf den Farbwählerbutton blendet die Farbwähler ein/aus\n- Rechts-Klick in einen freien Bereich schaltet auf das Hand-Werkzeug zurück.
+TOOLBAR_TOOLTIP_COLORPICKER;Farbwähler\n\nWenn eingeschaltet:\n- Mit der linken Maustaste können Sie einen Farbwähler setzen.\n- Zum Verschieben, linke Maustaste festhalten.\n- Umschalttaste + Rechts-Klick entfernt alle Farbwähler.\n- Rechts-Klick auf den Farbwählerbutton blendet die Farbwähler ein/aus\n- Rechts-Klick in einen freien Bereich schaltet auf das Hand-Werkzeug zurück.
TOOLBAR_TOOLTIP_CROP;Ausschnitt wählen\nTaste: c\n\nZum Verschieben des Ausschnitts,\nUmschalttaste festhalten.
TOOLBAR_TOOLTIP_HAND;Hand-Werkzeug\nTaste: h
TOOLBAR_TOOLTIP_STRAIGHTEN;Ausrichten / Drehen\nTaste: s\n\nRichtet das Bild entlang einer Leitlinie aus.
@@ -1461,8 +1483,8 @@ TP_COLORAPP_TCMODE_LABEL3;Farbkurve Modus
TP_COLORAPP_TCMODE_LIGHTNESS;Helligkeit (J)
TP_COLORAPP_TCMODE_SATUR;Sättigung (S)
TP_COLORAPP_TEMP_TOOLTIP;Um eine Farbtemperatur auszuwählen\nsetzen Sie die Tönung immer auf "1".\nA Temp=2856\nD50 Temp=5003\nD55 Temp=5503\nD65 Temp=6504\nD75 Temp=7504
-TP_COLORAPP_TONECIE;Dynamikkompression mittels\nCIECAM02-Helligkeit (Q)
-TP_COLORAPP_TONECIE_TOOLTIP;Wenn diese Option ausgeschaltet ist, wird die Dynamikkompression im L*a*b*-Farbraum durchgeführt.\nWenn die Option eingeschaltet ist, wird CIECAM02 für die Dynamikkompression verwendet. Das Werkzeug Dynamikkompression muss aktiviert sein, damit diese Option berücksichtigt wird.
+TP_COLORAPP_TONECIE;Tonwertkorrektur mittels\nCIECAM02-Helligkeit (Q)
+TP_COLORAPP_TONECIE_TOOLTIP;Wenn diese Option ausgeschaltet ist, wird die Tonwertkorrektur im L*a*b*-Farbraum durchgeführt.\nWenn die Option eingeschaltet ist, wird CIECAM02 für die Tonwertkorrektur verwendet. Das Werkzeug Tonwertkorrektur muss aktiviert sein, damit diese Option berücksichtigt wird.
TP_COLORAPP_WBCAM;[RT+CAT02] + [Ausgabe]
TP_COLORAPP_WBRT;[RT] + [Ausgabe]
TP_COLORAPP_YB;Yb% (Ø Luminanz)
@@ -1564,10 +1586,10 @@ TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB
TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Für RAW-Bilder kann entweder die RGB-\noder L*a*b*-Methode verwendet werden.\n\nFür andere Bilder wird unabhängig von der\nAuswahl immer die L*a*b*-Methode verwendet.
TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma
TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Mit Gamma kann die Intensität der\nRauschreduzierung über den Farbbereich\nvariiert werden. Bei kleinen Werten sind\nnur dunkle Farbtöne betroffen, bei\ngrößeren Werten wird der Effekt auf\nhellere Töne ausgeweitet.
-TP_DIRPYRDENOISE_MAIN_MODE;Qualität
-TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Hoch
-TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Standard
-TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;Einstellung der Qualität der Rauschreduzierung.\nDie Einstellung “Hoch“ verbessert die Rausch-\nreduzierung auf Kosten der Verarbeitungszeit.
+TP_DIRPYRDENOISE_MAIN_MODE;Modus
+TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressiv
+TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Konservativ
+TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Konservativ" bewahrt Tieffrequenz-Chroma-Muster,\nwährend "Aggressiv" sie entfernt.
TP_DIRPYRDENOISE_MEDIAN_METHOD;Methode
TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Nur Farbe
TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b*
@@ -1607,11 +1629,11 @@ TP_DISTORTION_AUTO_TIP;Korrigiert die Verzeichnung in RAW-Bildern durch Vergleic
TP_DISTORTION_LABEL;Verzeichnungskorrektur
TP_EPD_EDGESTOPPING;Kantenschutz
TP_EPD_GAMMA;Gamma
-TP_EPD_LABEL;Dynamikkompression
+TP_EPD_LABEL;Tonwertkorrektur
TP_EPD_REWEIGHTINGITERATES;Iterationen
TP_EPD_SCALE;Faktor
TP_EPD_STRENGTH;Intensität
-TP_EPD_TOOLTIP;Dynamikkompression ist mit dem L*a*b*- und CIECAM02-Modus möglich.\n\nFür den CIECAM02-Modus müssen folgende Optionen aktiviert sein:\n1. CIECAM02\n2. Algorithmus = Helligkeit + Farbigkeit (QM)\n3. Dynamikkompression mittels CIECAM02-Helligkeit (Q)
+TP_EPD_TOOLTIP;Tonwertkorrektur ist mit dem L*a*b*- und CIECAM02-Modus möglich.\n\nFür den CIECAM02-Modus müssen folgende Optionen aktiviert sein:\n1. CIECAM02\n2. Algorithmus = Helligkeit + Farbigkeit (QM)\n3. Tonwertkorrektur mittels CIECAM02-Helligkeit (Q)
TP_EXPOSURE_AUTOLEVELS;Auto
TP_EXPOSURE_AUTOLEVELS_TIP;Automatische Belichtungseinstellung\nbasierend auf Bildanalyse.
TP_EXPOSURE_BLACKLEVEL;Schwarzwert
@@ -1821,17 +1843,23 @@ TP_RAWEXPOS_LINEAR;Korrekturfaktor
TP_RAWEXPOS_PRESER;Weißpunkt: Lichter schützen
TP_RAWEXPOS_RGB;Rot, Grün, Blau
TP_RAWEXPOS_TWOGREEN;Grün-Werte automatisch angleichen
-TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-TP_RAW_3PASSBEST;3-Pass (Beste)
+TP_RAW_1PASSMEDIUM;1-Pass (Markesteijn)
+TP_RAW_2PASS;1-Pass + schnell
+TP_RAW_3PASSBEST;3-Pass (Markesteijn)
+TP_RAW_4PASS;3-Pass + schnell
TP_RAW_AHD;AHD
TP_RAW_AMAZE;AMaZE
+TP_RAW_AMAZEVNG4;AMaZE + VNG4
+TP_RAW_BORDER;Bildrand
TP_RAW_DCB;DCB
TP_RAW_DCBENHANCE;DCB-Verbesserung
TP_RAW_DCBITERATIONS;Anzahl der DCB-Iterationen
+TP_RAW_DCBVNG4;DCB + VNG4
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_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_DUALDEMOSAICCONTRAST;Kontrastschwelle
TP_RAW_EAHD;EAHD
TP_RAW_FALSECOLOR;Falschfarbenreduzierung
TP_RAW_FAST;Schnell
@@ -1840,16 +1868,17 @@ TP_RAW_HD_TOOLTIP;Je niedriger der Wert, umso empfindlicher reagiert\ndie “Hot
TP_RAW_HPHD;HPHD
TP_RAW_IGV;IGV
TP_RAW_IMAGENUM;Unterbild
-TP_RAW_IMAGENUM_TOOLTIP;Einige RAW-Formate enthalten mehrere Unterbilder (Pentax Pixel Shift,\nPentax 3-in-1 HDR, Canon Dual Pixel).\n\n> Auswahl des zu verwendenden Unterbildes (nicht bei Pixel Shift).\n\n> Legt das Unterbild für die Bewegungsbereiche bei Pixel Shift fest.
+TP_RAW_IMAGENUM_TOOLTIP;Einige RAW-Formate enthalten mehrere Unterbilder (Pentax Pixel-Shift,\nPentax 3-in-1 HDR, Canon Dual Pixel).\n\n> Auswahl des zu verwendenden Unterbildes (nicht bei Pixel-Shift).\n\n> Legt das Unterbild für die Bewegungsbereiche bei Pixel-Shift fest.
TP_RAW_LABEL;Farbinterpolation
TP_RAW_LMMSE;LMMSE
TP_RAW_LMMSEITERATIONS;LMMSE-Verbesserungsstufen
TP_RAW_LMMSE_TOOLTIP;Fügt Gamma (Stufe 1), Median (Stufe 2-4)\nund Optimierung (Stufe 5-6) zur Minimierung\nvon Artefakten hinzu und verbessert das\nSignalrauschverhältnis.
TP_RAW_MONO;Mono
TP_RAW_NONE;Keine
-TP_RAW_PIXELSHIFT;Pixel Shift
+TP_RAW_PIXELSHIFT;Pixel-Shift
TP_RAW_PIXELSHIFTADAPTIVE;Adaptive Erkennung
TP_RAW_PIXELSHIFTBLUR;Unschärfebewegungsmaske
+TP_RAW_PIXELSHIFTDMETHOD;Bewegungsmethode
TP_RAW_PIXELSHIFTEPERISO;Empfindlichkeit
TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;Der Standardwert 0 wird für die Basis-ISO empfohlen.\nHöhere Werte erhöhen die Empfindlichkeit der Bewegungserkennung.\nVerändern Sie den Wert in kleinen Schritten und beobachten Sie die\nBewegungsmaske. Erhöhen Sie die Empfindlichkeit für unterbelichtete\noder High-ISO-Bilder.
TP_RAW_PIXELSHIFTEQUALBRIGHT;Frame-Helligkeit angleichen
@@ -1896,10 +1925,12 @@ TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;StdDev factor Blue
TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;StdDev factor Green
TP_RAW_PIXELSHIFTSTDDEVFACTORRED;StdDev factor Red
TP_RAW_RCD;RCD
+TP_RAW_RCDVNG4;RCD + VNG4
TP_RAW_SENSOR_BAYER_LABEL;Sensor mit Bayer-Matrix
-TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;Mit “3-Pass“ erzielt man die besten Ergebnisse\n(empfohlen bei Bildern mit niedrigen ISO-Werten).\n\nBei hohen ISO-Werten unterscheidet sich “1-Pass“\nkaum gegenüber “3-Pass“, ist aber deutlich schneller.
+TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;Mit “3-Pass“ erzielt man die besten Ergebnisse\n(empfohlen bei Bildern mit niedrigen ISO-Werten).\n\nBei hohen ISO-Werten unterscheidet sich “1-Pass“\nkaum gegenüber “3-Pass“, ist aber deutlich schneller.\n\n"+ schnell" erzeugt weniger Artefakte in kontrast-\narmen Bereichen.
TP_RAW_SENSOR_XTRANS_LABEL;Sensor mit X-Trans-Matrix
TP_RAW_VNG4;VNG4
+TP_RESIZE_ALLOW_UPSCALING;Hochskalieren zulassen
TP_RESIZE_APPLIESTO;Anwenden auf:
TP_RESIZE_CROPPEDAREA;Ausschnitt
TP_RESIZE_FITBOX;Begrenzungsrahmen
@@ -2018,6 +2049,7 @@ TP_SHARPENEDGE_LABEL;Kantenschärfung
TP_SHARPENEDGE_PASSES;Iterationen
TP_SHARPENEDGE_THREE;Nur Luminanz
TP_SHARPENING_AMOUNT;Intensität
+TP_SHARPENING_CONTRAST;Kontrastschwelle
TP_SHARPENING_EDRADIUS;Radius
TP_SHARPENING_EDTOLERANCE;Kantentoleranz
TP_SHARPENING_HALOCONTROL;Halokontrolle
@@ -2033,12 +2065,15 @@ TP_SHARPENING_RLD_ITERATIONS;Iterationen
TP_SHARPENING_THRESHOLD;Schwelle
TP_SHARPENING_USM;Unschärfemaskierung
TP_SHARPENMICRO_AMOUNT;Intensität
+TP_SHARPENMICRO_CONTRAST;Kontrastschwelle
TP_SHARPENMICRO_LABEL;Mikrokontrast
TP_SHARPENMICRO_MATRIX;3×3-Matrix statt 5×5-Matrix
TP_SHARPENMICRO_UNIFORMITY;Gleichmäßigkeit
+TP_SOFTLIGHT_LABEL;Weiches Licht
+TP_SOFTLIGHT_STRENGTH;Intensität
TP_TM_FATTAL_AMOUNT;Intensität
TP_TM_FATTAL_ANCHOR;Helligkeitsverschiebung
-TP_TM_FATTAL_LABEL;HDR-Dynamikkompression
+TP_TM_FATTAL_LABEL;Dynamikkompression
TP_TM_FATTAL_THRESHOLD;Schwelle
TP_VIBRANCE_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden
TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2224,7 +2259,7 @@ TP_WAVELET_TILESIZE;Kachelgröße
TP_WAVELET_TILESLIT;Kleine Kacheln
TP_WAVELET_TILES_TOOLTIP;“Ganzes Bild“ (empfohlen) liefert eine bessere Qualität.\n“Kacheln“ benötigen weniger Speicher und ist nur für\nComputer mit wenig RAM zu empfehlen.
TP_WAVELET_TMSTRENGTH;Intensität
-TP_WAVELET_TMSTRENGTH_TOOLTIP;Kontrolliert die Intensität der Dynamik- oder\nKontrastkompression des Restbildes. Ist der\nWert ungleich 0, werden die Intensitäts- und\nGammaregler des Dynamikkompressions-\nWerkzeugs im Belichtungsreiter deaktiviert.
+TP_WAVELET_TMSTRENGTH_TOOLTIP;Kontrolliert die Intensität der Dynamik- oder\nKontrastkompression des Restbildes. Ist der\nWert ungleich 0, werden die Intensitäts- und\nGammaregler des Tonwertkorrektur-\nWerkzeugs im Belichtungsreiter deaktiviert.
TP_WAVELET_TMTYPE;Kompression
TP_WAVELET_TON;Tönung
TP_WBALANCE_AUTO;Automatisch
diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK)
index eeb88d099..25687187f 100644
--- a/rtdata/languages/English (UK)
+++ b/rtdata/languages/English (UK)
@@ -808,12 +808,13 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -821,9 +822,17 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT;Add
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!HISTORY_SNAPSHOT;Snapshot
@@ -937,6 +946,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_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
@@ -1004,6 +1014,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1011,6 +1022,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1025,7 +1037,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENING;Sharpening (USM/RL)
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PARTIALPASTE_VIGNETTING;Vignetting correction
!PARTIALPASTE_WHITEBALANCE;White balance
@@ -1770,17 +1783,23 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD;Method
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1797,6 +1816,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1824,10 +1844,12 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1945,6 +1967,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_AMOUNT;Amount
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENING_EDRADIUS;Radius
!TP_SHARPENING_EDTOLERANCE;Edge tolerance
!TP_SHARPENING_HALOCONTROL;Halo control
@@ -1960,12 +1983,15 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_SHARPENING_THRESHOLD;Threshold
!TP_SHARPENING_USM;Unsharp Mask
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
!TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones
@@ -2051,7 +2077,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US)
index e5388a850..7aff8a60c 100644
--- a/rtdata/languages/English (US)
+++ b/rtdata/languages/English (US)
@@ -720,14 +720,15 @@
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -735,9 +736,17 @@
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT;Add
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!HISTORY_SNAPSHOT;Snapshot
@@ -856,6 +865,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_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
@@ -926,6 +936,7 @@
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -933,6 +944,7 @@
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -948,7 +960,8 @@
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENING;Sharpening (USM/RL)
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PARTIALPASTE_VIGNETTING;Vignetting correction
!PARTIALPASTE_WHITEBALANCE;White balance
@@ -1757,17 +1770,23 @@
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD;Method
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FALSECOLOR;False color suppression steps
!TP_RAW_FAST;Fast
@@ -1785,6 +1804,7 @@
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1813,10 +1833,12 @@
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1935,6 +1957,7 @@
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
!TP_SHARPENING_AMOUNT;Amount
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENING_EDRADIUS;Radius
!TP_SHARPENING_EDTOLERANCE;Edge tolerance
!TP_SHARPENING_HALOCONTROL;Halo control
@@ -1950,12 +1973,15 @@
!TP_SHARPENING_THRESHOLD;Threshold
!TP_SHARPENING_USM;Unsharp Mask
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2049,7 +2075,7 @@
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol
index 645e61916..078424424 100644
--- a/rtdata/languages/Espanol
+++ b/rtdata/languages/Espanol
@@ -1700,14 +1700,15 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -1715,9 +1716,17 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1752,6 +1761,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%.
!MONITOR_PROFILE_SYSTEM;System default
!NAVIGATOR_B;B:
!NAVIGATOR_G;G:
@@ -1770,12 +1780,15 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!PARTIALPASTE_GRADIENT;Graduated filter
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1972,11 +1985,17 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_CASTR;Strength
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1990,6 +2009,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -2018,7 +2038,9 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
@@ -2099,9 +2121,13 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_WAVELET_1;Level 1
!TP_WAVELET_2;Level 2
@@ -2171,7 +2197,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara
index 700398d27..7a9f36f96 100644
--- a/rtdata/languages/Euskara
+++ b/rtdata/languages/Euskara
@@ -971,14 +971,15 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -986,9 +987,17 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1061,6 +1070,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_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
@@ -1116,6 +1126,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1123,6 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1134,7 +1146,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PARTIALPASTE_RGBCURVES;RGB curves
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1808,16 +1821,22 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1834,6 +1853,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1862,10 +1882,12 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1967,13 +1989,17 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2064,7 +2090,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais
index f14e304cf..ea8fbfc27 100644
--- a/rtdata/languages/Francais
+++ b/rtdata/languages/Francais
@@ -710,9 +710,6 @@ HISTORY_MSG_484;CAM02 - Yb auto scène
HISTORY_MSG_485;Correction d'Objectif
HISTORY_MSG_486;Corr. d'Obj. - Appareil
HISTORY_MSG_487;Corr. d'Obj. - Objectif
-HISTORY_MSG_488;Compression tonale HDR
-HISTORY_MSG_489;CT HDR - Seuil
-HISTORY_MSG_490;CT HDR - Quantité
HISTORY_MSG_491;Balances des Blancs
HISTORY_MSG_492;Courbes RVB
HISTORY_MSG_493;Ajustements L*a*b*
@@ -724,7 +721,6 @@ HISTORY_MSG_LOCALCONTRAST_ENABLED;Contraste Local
HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Contraste Local - H.L.
HISTORY_MSG_LOCALCONTRAST_RADIUS;Contraste Local - Rayon
HISTORY_MSG_METADATA_MODE;Mode de copie des métadonnées
-HISTORY_MSG_TM_FATTAL_ANCHOR;CT HDR - Ancre
HISTORY_NEWSNAPSHOT;Ajouter
HISTORY_NEWSNAPSHOT_TOOLTIP;Raccourci: Alt-s
HISTORY_SNAPSHOT;Capture
@@ -937,7 +933,6 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Ombres/Hautes lumières
PARTIALPASTE_SHARPENEDGE;Bords
PARTIALPASTE_SHARPENING;Netteté
PARTIALPASTE_SHARPENMICRO;Microcontraste
-PARTIALPASTE_TM_FATTAL;Compression tonale HDR
PARTIALPASTE_VIBRANCE;Vibrance
PARTIALPASTE_VIGNETTING;Correction du vignettage
PARTIALPASTE_WAVELETGROUP;Niveaux d'ondelette
@@ -1469,7 +1464,7 @@ TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manuel\nAgit sur l'image ent
TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manuel\nAgit sur l'image entière.\nVous controlez les paramètres de réduction de bruit manuellement.\n\nGlobal automatique\nAgit sur l'image entière.\n9 zones sont utilisées pour calculer un réglage de réduction de bruit de chroma.\n\nAutomatique multi-zones\nPas d'aperçu - ne fonctionne que lors de l'enregistrement, mais utiliser la méthode "Aperçu" en faisant correspondre la taille et le centre de la tuile à la taille et au centre de l'aperçu, vous permet d'avoir une idée des résultats attendus.\nL'image est divisé en tuiles (entre 10 et 70 en fonction de la taille de l'image) et chaque tuile reçoit son propre réglage de réduction de bruit de chrominance.\n\nAperçu\nAgit sur l'image entière.\nLa partie de l'image visible dans l'aperçu est utilisé pour calculer un réglage de réduction de bruit de chroma.
TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Aperçu multi-zones
TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Aperçu
-TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Affiche les niveaux de bruit résiduel de la partie de l'image visible dans l'aperçu après les ondelettes.\n\n>300 Très bruité\n100-300 Bruité\n50-100 Peu bruité\n<50 Très peu bruité\n\nAttention, les valeurs diffèreront entre le mode RVB et L*a*b*. Les valeurs RVB sont moins précises car le mode RVB ne séparent pas complètement la luminance et la chrominance.
+TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Affiche les niveaux de bruit résiduels de la partie de l'image visible dans l'aperçu après les ondelettes.\n\n>300 Très bruité\n100-300 Bruité\n50-100 Peu bruité\n<50 Très peu bruité\n\nAttention, les valeurs diffèreront entre le mode RVB et L*a*b*. Les valeurs RVB sont moins précises car le mode RVB ne séparent pas complètement la luminance et la chrominance.
TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Taille de l'aperçu=%1, Centre: Px=%2 Py=%3
TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Bruit de l'aperçu: Moyen=%1 Haut=%2
TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Bruit de l'aperçu: Moyen= - Haut= -
@@ -1483,18 +1478,18 @@ TP_DIRPYRDENOISE_LUMINANCE_CURVE;Courbe de luminance
TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Niveau de détails de Luminance
TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance
TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance
-TP_DIRPYRDENOISE_MAIN_COLORSPACE;Méthode
+TP_DIRPYRDENOISE_MAIN_COLORSPACE;Espace colorimétrique
TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;Lab
TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Réduction du bruit
TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RVB
TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Pour les images raw, les méthodes RVB ou Lab peuvent être utilisées.\n\nPour les images non-raw la méthode Lab sera utilisée, indépendamment de ce qu'indique ce bouton.
TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma
TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma fait varier la quantité de réduction de bruit sur l'échelle des tons. Les plus petites valeurs cibleront les ombres, les plus hautes valeurs cibleront les tons les plus clairs.
-TP_DIRPYRDENOISE_MAIN_MODE;Qualité
-TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Haut
-TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Standard
-TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;La qualité peut être adapté à la trame du bruit. Régler sur "haut" augmentera l'effet de la réduction de bruit au prix d'un temps de traitement plus long.
-TP_DIRPYRDENOISE_MEDIAN_METHOD;Méthode
+TP_DIRPYRDENOISE_MAIN_MODE;Mode
+TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Agressif
+TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservatif
+TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservatif" préserve les motifs chromatiques de basse fréquence tandis que "agressif" les efface.
+TP_DIRPYRDENOISE_MEDIAN_METHOD;Méthode médiane
TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma uniquement
TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b*
TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Filtre Médian
@@ -1952,10 +1947,6 @@ TP_SHARPENMICRO_AMOUNT;Quantité
TP_SHARPENMICRO_LABEL;Microcontraste
TP_SHARPENMICRO_MATRIX;Matrice 3×3 au lieu de 5×5
TP_SHARPENMICRO_UNIFORMITY;Uniformité
-TP_TM_FATTAL_AMOUNT;Quantité
-TP_TM_FATTAL_ANCHOR;Ancre
-TP_TM_FATTAL_LABEL;Compression Tonale HDR
-TP_TM_FATTAL_THRESHOLD;Seuil
TP_VIBRANCE_AVOIDCOLORSHIFT;Éviter les dérives de teinte
TP_VIBRANCE_CURVEEDITOR_SKINTONES;TT
TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tons chair
@@ -2210,9 +2201,27 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: -
!HISTORY_MSG_237;B&W - CM
!HISTORY_MSG_273;CT - Color Balance SMH
!HISTORY_MSG_392;W - Residual - Color Balance
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
+!PARTIALPASTE_RAW_BORDER;Raw border
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
@@ -2227,6 +2236,23 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: -
!TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical
!TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_4PASS;3-pass+fast
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion.
+!TP_RAW_RCDVNG4;RCD+VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
+!TP_TM_FATTAL_AMOUNT;Amount
+!TP_TM_FATTAL_ANCHOR;Anchor
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
+!TP_TM_FATTAL_THRESHOLD;Threshold
diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek
index 4df297ba9..16ee27341 100644
--- a/rtdata/languages/Greek
+++ b/rtdata/languages/Greek
@@ -970,14 +970,15 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -985,9 +986,17 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1060,6 +1069,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_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
@@ -1115,6 +1125,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1122,6 +1133,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1133,7 +1145,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PARTIALPASTE_RGBCURVES;RGB curves
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1807,16 +1820,22 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1833,6 +1852,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1861,10 +1881,12 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1966,13 +1988,17 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2063,7 +2089,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew
index 633739612..92a1c425d 100644
--- a/rtdata/languages/Hebrew
+++ b/rtdata/languages/Hebrew
@@ -971,14 +971,15 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -986,9 +987,17 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1061,6 +1070,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_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
@@ -1116,6 +1126,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1123,6 +1134,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1134,7 +1146,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PARTIALPASTE_RGBCURVES;RGB curves
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1808,16 +1821,22 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1834,6 +1853,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1862,10 +1882,12 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1967,13 +1989,17 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2064,7 +2090,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano
index 5f354a45d..4e146747d 100644
--- a/rtdata/languages/Italiano
+++ b/rtdata/languages/Italiano
@@ -1575,14 +1575,15 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -1590,9 +1591,17 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1628,6 +1637,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%.
!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.
@@ -1641,12 +1651,15 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!PARTIALPASTE_METADATA;Metadata mode
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1910,11 +1923,17 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!TP_RAWEXPOS_BLACK_GREEN;Green
!TP_RAWEXPOS_BLACK_RED;Red
!TP_RAWEXPOS_RGB;Red, Green, Blue
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1928,6 +1947,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1956,10 +1976,12 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
@@ -2040,9 +2062,13 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_WAVELET_1;Level 1
!TP_WAVELET_2;Level 2
@@ -2112,7 +2138,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese
index 361da9929..a573146ab 100644
--- a/rtdata/languages/Japanese
+++ b/rtdata/languages/Japanese
@@ -38,6 +38,7 @@ ABOUT_TAB_CREDITS;クレジット
ABOUT_TAB_LICENSE;ライセンス
ABOUT_TAB_RELEASENOTES;リリースノート
ABOUT_TAB_SPLASH;スプラッシュ
+ADJUSTER_RESET_TO_DEFAULT;クリック - デフォルト値にリセット\nCtrl+クリック - 初期値にリセット
BATCHQUEUE_AUTOSTART;オートスタート
BATCHQUEUE_AUTOSTARTHINT;新しいrawファイルが送られて来たら自動的に現像処理を開始します
BATCHQUEUE_DESTFILENAME;パスとファイル名
@@ -163,7 +164,7 @@ FILEBROWSER_MOVETODARKFDIR;ダークフレーム・ディレクトリに移動
FILEBROWSER_MOVETOFLATFIELDDIR;フラットフィールド・ディレクトリに移動
FILEBROWSER_NEW_NAME;新しい名前:
FILEBROWSER_OPENDEFAULTVIEWER;Windowsのデフォルト・ビューア(キュー処理)
-FILEBROWSER_PARTIALPASTEPROFILE;プロファイルの貼り付け - 一部
+FILEBROWSER_PARTIALPASTEPROFILE;プロファイルの貼り付け - 一部
FILEBROWSER_PASTEPROFILE;プロファイルの貼り付け
FILEBROWSER_POPUPCANCELJOB;ジョブ キャンセル
FILEBROWSER_POPUPCOLORLABEL;カラー・ラベル
@@ -185,11 +186,11 @@ FILEBROWSER_POPUPPROCESSFAST;キューに追加 (高速書き出し)
FILEBROWSER_POPUPPROFILEOPERATIONS;プロファイルの操作
FILEBROWSER_POPUPRANK;ランク
FILEBROWSER_POPUPRANK0;ランクなし
-FILEBROWSER_POPUPRANK1;ランク 1 *
+FILEBROWSER_POPUPRANK1;ランク 1 *
FILEBROWSER_POPUPRANK2;ランク 2 **
-FILEBROWSER_POPUPRANK3;ランク 3 ***
-FILEBROWSER_POPUPRANK4;ランク 4 ****
-FILEBROWSER_POPUPRANK5;ランク 5 *****
+FILEBROWSER_POPUPRANK3;ランク 3 ***
+FILEBROWSER_POPUPRANK4;ランク 4 ****
+FILEBROWSER_POPUPRANK5;ランク 5 *****
FILEBROWSER_POPUPREMOVE;ファイルシステムから削除
FILEBROWSER_POPUPREMOVEINCLPROC;ファイルシステムとバッチの結果から削除
FILEBROWSER_POPUPRENAME;名前変更
@@ -261,6 +262,7 @@ GENERAL_NONE;なし
GENERAL_OK;OK
GENERAL_OPEN;開く
GENERAL_PORTRAIT;縦
+GENERAL_RESET;リセット
GENERAL_SAVE;保存
GENERAL_SLIDER;スライダー
GENERAL_UNCHANGED;(変更なし)
@@ -291,8 +293,8 @@ HISTORY_MSG_10;シャドウ圧縮
HISTORY_MSG_11;トーンカーブ 1
HISTORY_MSG_12;自動露光補正
HISTORY_MSG_13;露光 クリッピング
-HISTORY_MSG_14;L*a*b* - 明度
-HISTORY_MSG_15;L*a*b* - コントラスト
+HISTORY_MSG_14;L*a*b* - 明度
+HISTORY_MSG_15;L*a*b* - コントラスト
HISTORY_MSG_16;輝度 黒レベル
HISTORY_MSG_17;輝度 ハイライト圧縮
HISTORY_MSG_18;輝度 シャドウ圧縮
@@ -372,7 +374,7 @@ HISTORY_MSG_91;色ノイズの低減
HISTORY_MSG_92;ノイズ低減のガンマ
HISTORY_MSG_93;ディテールのコントラスト係数
HISTORY_MSG_94;ディテールのコントラスト
-HISTORY_MSG_95;L*a*b*の色度
+HISTORY_MSG_95;L*a*b* - 色度
HISTORY_MSG_96;L*a*b* - a*カーブ
HISTORY_MSG_97;L*a*b* - b*カーブ
HISTORY_MSG_98;デモザイク 方式
@@ -388,9 +390,9 @@ HISTORY_MSG_107;フリンジ低減 しきい値
HISTORY_MSG_108;ハイライト圧縮 しきい値
HISTORY_MSG_109;リサイズ バウンディングボックス
HISTORY_MSG_110;リサイズの適用領域
-HISTORY_MSG_111;L*a*b* - 色ずれ回避
+HISTORY_MSG_111;L*a*b* - 色ずれの回避
HISTORY_MSG_112;--未使用--
-HISTORY_MSG_113;L*a*b* - レッドと肌色トーンを保護
+HISTORY_MSG_113;L*a*b* - レッドと肌色トーンを保護
HISTORY_MSG_114;DCB 反復
HISTORY_MSG_115;偽色抑制
HISTORY_MSG_116;DCB 拡張
@@ -511,7 +513,9 @@ HISTORY_MSG_231;白黒 ‘前の‘カーブ
HISTORY_MSG_232;白黒 ‘前の‘カーブのタイプ
HISTORY_MSG_233;白黒 ‘後の‘カーブ
HISTORY_MSG_234;白黒 ‘後の‘カーブのタイプ
+HISTORY_MSG_235;白黒 チャンネルミキサー 自動
HISTORY_MSG_236;--未使用--
+HISTORY_MSG_237;白黒 チャンネルミキサー
HISTORY_MSG_238;グラデーションフィルター フェザー処理
HISTORY_MSG_239;グラデーションフィルター 強さ
HISTORY_MSG_240;グラデーションフィルター 中央
@@ -521,20 +525,20 @@ HISTORY_MSG_243;半径
HISTORY_MSG_244;ビネットフィルター 強さ
HISTORY_MSG_245;ビネットフィルター 中央
HISTORY_MSG_246;L*a*b* CL カーブ
-HISTORY_MSG_247;L*a*b* LH カーブ
-HISTORY_MSG_248;L*a*b* HH カーブ
+HISTORY_MSG_247;L*a*b* LH カーブ
+HISTORY_MSG_248;L*a*b* HH カーブ
HISTORY_MSG_249;ディテールレベルのコントラスト - しきい値
HISTORY_MSG_250;ノイズ低減 - 強化
HISTORY_MSG_251;白黒 - アルゴリズム
-HISTORY_MSG_252;CbDL 肌色の目標/保護
-HISTORY_MSG_253;CbDL アーティファクトを軽減
-HISTORY_MSG_254;CbDL 肌色の色相
-HISTORY_MSG_255;ノイズ低減 - メディアン
+HISTORY_MSG_252;CbDL 肌色の目標/保護
+HISTORY_MSG_253;CbDL アーティファクトを軽減
+HISTORY_MSG_254;CbDL 肌色の色相
+HISTORY_MSG_255;ノイズ低減 - メディアン
HISTORY_MSG_256;ノイズ低減 - フィルターの種類
HISTORY_MSG_257;カラートーン調整
-HISTORY_MSG_258;カラートーン調整 - カラーのカーブ
+HISTORY_MSG_258;カラートーン調整 - カラーのカーブ
HISTORY_MSG_259;カラートーン調整 - 不透明度のカーブ
-HISTORY_MSG_260;カラートーン調整 - a*(b*)の不透明度
+HISTORY_MSG_260;カラートーン調整 - a*(b*)の不透明度
HISTORY_MSG_261;カラートーン調整 - 方法
HISTORY_MSG_262;カラートーン調整 - b*の不透明度
HISTORY_MSG_263;カラートーン調整 - シャドウのレッド
@@ -546,14 +550,15 @@ HISTORY_MSG_268;カラートーン調整 - 中間トーンのブルー
HISTORY_MSG_269;カラートーン調整 - ハイライトのレッド
HISTORY_MSG_270;カラートーン調整 - ハイライトのグリーン
HISTORY_MSG_271;カラートーン調整 - ハイライトのブルー
-HISTORY_MSG_272;カラートーン調整 - バランス
+HISTORY_MSG_272;カラートーン調整 - バランス
+HISTORY_MSG_273;カラートーン調整 - SMHでカラーバランス
HISTORY_MSG_274;カラートーン調整 - シャドウの彩度
HISTORY_MSG_275;カラートーン調整 - ハイライトの彩度
HISTORY_MSG_276;カラートーン調整 - 不透明度
HISTORY_MSG_277;カラートーン調整 - カーブをリセット
HISTORY_MSG_278;カラートーン調整 - 明度を維持
HISTORY_MSG_279;カラートーン調整 - シャドウ
-HISTORY_MSG_280;カラートーン調整 - ハイライト
+HISTORY_MSG_280;カラートーン調整 - ハイライト
HISTORY_MSG_281;カラートーン調整 - 彩度の保護
HISTORY_MSG_282;カラートーン調整 - 彩度のしきい値
HISTORY_MSG_283;カラートーン調整 - 強さを維持
@@ -577,73 +582,73 @@ HISTORY_MSG_300;-
HISTORY_MSG_301;輝度ノイズの調整方法
HISTORY_MSG_302;色ノイズの調整方法
HISTORY_MSG_303;色ノイズの調整方法
-HISTORY_MSG_304;W- コントラストレベル
-HISTORY_MSG_305;ウェーブレットのレベル
-HISTORY_MSG_306;W- プロセス
-HISTORY_MSG_307;W- プレビュー
-HISTORY_MSG_308;W- プレビューの方向
-HISTORY_MSG_309;W- ES ディテール
-HISTORY_MSG_310;W- 残差 青空の目標/保護
+HISTORY_MSG_304;W- コントラストレベル
+HISTORY_MSG_305;ウェーブレット
+HISTORY_MSG_306;W- プロセス
+HISTORY_MSG_307;W- プレビュー
+HISTORY_MSG_308;W- プレビューの方向
+HISTORY_MSG_309;W- ES ディテール
+HISTORY_MSG_310;W- 残差 青空の目標/保護
HISTORY_MSG_311;W- ウェーブレットのレベル
-HISTORY_MSG_312;W- 残差 シャドウのしきい値
-HISTORY_MSG_313;W- 色度 明星色/純色
-HISTORY_MSG_314;W- 色域 アーティファクトの軽減
-HISTORY_MSG_315;W- 残差 コントラスト
-HISTORY_MSG_316;W- 色域 肌色の目標/保護
-HISTORY_MSG_317;W- 色域 肌色の色相
-HISTORY_MSG_318;W- コントラスト ハイライトレベル
-HISTORY_MSG_319;W- コントラスト ハイライト範囲
-HISTORY_MSG_320;W- コントラスト シャドウ範囲
-HISTORY_MSG_321;W- コントラスト シャドウレベル
-HISTORY_MSG_322;W- 色域 色ずれの回避
-HISTORY_MSG_323;W- ES ローカルコントラスト
-HISTORY_MSG_324;W- 色度 明星色
-HISTORY_MSG_325;W- 色度 純色
-HISTORY_MSG_326;W- 色度 方法
-HISTORY_MSG_327;W- コントラスト 適用先
-HISTORY_MSG_328;W- 色度 リンクを強化
-HISTORY_MSG_329;W- 色調 R/Gの不透明度
-HISTORY_MSG_330;W- 色調 B/Yの不透明度
-HISTORY_MSG_331;W- コントラストレベル エキストラ
-HISTORY_MSG_332;W- タイルの種類
-HISTORY_MSG_333;W- 残差 シャドウ
-HISTORY_MSG_334;W- 残差 色度
-HISTORY_MSG_335;W- 残差 ハイライト
-HISTORY_MSG_336;W- 残差 ハイライトのしきい値
-HISTORY_MSG_337;W- 残差 青空の色相
-HISTORY_MSG_338;W- ES 半径
-HISTORY_MSG_339;W- ES 強さ
-HISTORY_MSG_340;W- 強さ
-HISTORY_MSG_341;W- エッジパフォーマンス
-HISTORY_MSG_342;W- ES 最初のレベル
-HISTORY_MSG_343;W- 色度のレベル
-HISTORY_MSG_344;W- 色度 方式 スライダー/カーブ
-HISTORY_MSG_345;W- ES ローカルコントラスト
-HISTORY_MSG_346;W- ES ローカルコントラスト 方式
-HISTORY_MSG_347;W- ノイズ低減とリファイン レベル1
-HISTORY_MSG_348;W- ノイズ低減とリファイン レベル2
-HISTORY_MSG_349;W- ノイズ低減とリファイン レベル3
-HISTORY_MSG_350;W- ES エッジ検出
-HISTORY_MSG_351;W- 残差 HHカーブ
-HISTORY_MSG_352;W- 背景色
-HISTORY_MSG_353;W- ES グラデーション感度
-HISTORY_MSG_354;W- ES 強化
-HISTORY_MSG_355;W- ES しきい値(低)
-HISTORY_MSG_356;W- ES しきい値(高)
-HISTORY_MSG_357;W- ノイズ低減 ESとリンク
-HISTORY_MSG_358;W- 色域 CHカーブ
+HISTORY_MSG_312;W- 残差 シャドウのしきい値
+HISTORY_MSG_313;W- 色度 明星色/純色
+HISTORY_MSG_314;W- 色域 アーティファクトの軽減
+HISTORY_MSG_315;W- 残差 コントラスト
+HISTORY_MSG_316;W- 色域 肌色の目標/保護
+HISTORY_MSG_317;W- 色域 肌色の色相
+HISTORY_MSG_318;W- コントラスト ハイライトレベル
+HISTORY_MSG_319;W- コントラスト ハイライト範囲
+HISTORY_MSG_320;W- コントラスト シャドウ範囲
+HISTORY_MSG_321;W- コントラスト シャドウレベル
+HISTORY_MSG_322;W- 色域 色ずれの回避
+HISTORY_MSG_323;W- ES ローカルコントラスト
+HISTORY_MSG_324;W- 色度 明星色
+HISTORY_MSG_325;W- 色度 純色
+HISTORY_MSG_326;W- 色度 方法
+HISTORY_MSG_327;W- コントラスト 適用先
+HISTORY_MSG_328;W- 色度 リンクを強化
+HISTORY_MSG_329;W- 色調 R/Gの不透明度
+HISTORY_MSG_330;W- 色調 B/Yの不透明度
+HISTORY_MSG_331;W- コントラストレベル エキストラ
+HISTORY_MSG_332;W- タイルの種類
+HISTORY_MSG_333;W- 残差 シャドウ
+HISTORY_MSG_334;W- 残差 色度
+HISTORY_MSG_335;W- 残差 ハイライト
+HISTORY_MSG_336;W- 残差 ハイライトのしきい値
+HISTORY_MSG_337;W- 残差 青空の色相
+HISTORY_MSG_338;W- ES 半径
+HISTORY_MSG_339;W- ES 強さ
+HISTORY_MSG_340;W- 強さ
+HISTORY_MSG_341;W- エッジパフォーマンス
+HISTORY_MSG_342;W- ES 最初のレベル
+HISTORY_MSG_343;W- 色度のレベル
+HISTORY_MSG_344;W- 色度 方式 スライダー/カーブ
+HISTORY_MSG_345;W- ES ローカルコントラスト
+HISTORY_MSG_346;W- ES ローカルコントラスト 方式
+HISTORY_MSG_347;W- ノイズ低減とリファイン レベル1
+HISTORY_MSG_348;W- ノイズ低減とリファイン レベル2
+HISTORY_MSG_349;W- ノイズ低減とリファイン レベル3
+HISTORY_MSG_350;W- ES エッジ検出
+HISTORY_MSG_351;W- 残差 HHカーブ
+HISTORY_MSG_352;W- 背景色
+HISTORY_MSG_353;W- ES グラデーション感度
+HISTORY_MSG_354;W- ES 強化
+HISTORY_MSG_355;W- ES しきい値(低)
+HISTORY_MSG_356;W- ES しきい値(高)
+HISTORY_MSG_357;W- ノイズ低減 ESとリンク
+HISTORY_MSG_358;W- 色域 CHカーブ
HISTORY_MSG_359;ホット/デッド しきい値
HISTORY_MSG_360;トーンマッピング ガンマ
-HISTORY_MSG_361;W- 最終 色度バランス
-HISTORY_MSG_362;W- 残差 圧縮の方法
-HISTORY_MSG_363;W- 残差 圧縮の強さ
-HISTORY_MSG_364;W- 最終 コントラストバランス
-HISTORY_MSG_365;W- 最終 デルタバランス
-HISTORY_MSG_366;W- 残差 圧縮のガンマ
-HISTORY_MSG_367;W- ES ローカルコントラストカーブ
-HISTORY_MSG_368;W- 最終 コントラストバランス
-HISTORY_MSG_369;W- 最終 バランスの方法
-HISTORY_MSG_370;W- 最終 ローカルコントラストカーブ
+HISTORY_MSG_361;W- 最終 色度バランス
+HISTORY_MSG_362;W- 残差 圧縮の方法
+HISTORY_MSG_363;W- 残差 圧縮の強さ
+HISTORY_MSG_364;W- 最終 コントラストバランス
+HISTORY_MSG_365;W- 最終 デルタバランス
+HISTORY_MSG_366;W- 残差 圧縮のガンマ
+HISTORY_MSG_367;W- ES ローカルコントラストカーブ
+HISTORY_MSG_368;W- 最終 コントラストバランス
+HISTORY_MSG_369;W- 最終 バランスの方法
+HISTORY_MSG_370;W- 最終 ローカルコントラストカーブ
HISTORY_MSG_371;リサイズ後のシャープ化(PRS)
HISTORY_MSG_372;PRS アンシャープマスク - 半径
HISTORY_MSG_373;PRS アンシャープマスク - 適用量
@@ -665,6 +670,7 @@ HISTORY_MSG_388;W - 残差 - CB 中間のグリーン
HISTORY_MSG_389;W - 残差 - CB 中間のブルー
HISTORY_MSG_390;W - 残差 - CB シャドウのグリーン
HISTORY_MSG_391;W - 残差 - CB シャドウのブルー
+HISTORY_MSG_392;W - 残差 - カラーバランス
HISTORY_MSG_393;DCP - ルックテーブル
HISTORY_MSG_394;DCP - 基本露出
HISTORY_MSG_395;DCP - ベーステーブル
@@ -744,14 +750,15 @@ HISTORY_MSG_484;CAM02 - 撮影環境のYb 自動
HISTORY_MSG_485;レンズ補正
HISTORY_MSG_486;レンズ補正 - カメラ
HISTORY_MSG_487;レンズ補正 - レンズ
-HISTORY_MSG_488;HDRトーンマッピング
-HISTORY_MSG_489;HDR TM - しきい値
-HISTORY_MSG_490;HDR TM - 量
+HISTORY_MSG_488;ダイナミックレンジ圧縮
+HISTORY_MSG_489;DRC - しきい値
+HISTORY_MSG_490;DRC - 量
HISTORY_MSG_491;ホワイトバランス
HISTORY_MSG_492;RGBカーブ
HISTORY_MSG_493;L*a*b*調整
HISTORY_MSG_CLAMPOOG;色域外の色を切り取る
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - カラー補正
+HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - コントラストのしきい値
HISTORY_MSG_HISTMATCHING;トーンカーブの自動調節
HISTORY_MSG_LOCALCONTRAST_AMOUNT;ローカルコントラスト - 量
HISTORY_MSG_LOCALCONTRAST_DARKNESS;ローカルコントラスト - 暗い部分
@@ -759,9 +766,17 @@ HISTORY_MSG_LOCALCONTRAST_ENABLED;ローカルコントラスト
HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;ローカルコントラスト - 明るい部分
HISTORY_MSG_LOCALCONTRAST_RADIUS;ローカルコントラスト - 半径
HISTORY_MSG_METADATA_MODE;メタデータ コピーモード
+HISTORY_MSG_MICROCONTRAST_CONTRAST;マイクロコントラスト - コントラストのしきい値
+HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - 振れに対するデモザイクの方式
HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;ラインノイズフィルタの方向
HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAFラインフィルタ
-HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - アンカー
+HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - コントラストのしきい値
+HISTORY_MSG_RAW_BORDER;Rawの境界
+HISTORY_MSG_RESIZE_ALLOW_UPSCALING;リサイズ - アップスケーリングを可能にする
+HISTORY_MSG_SHARPENING_CONTRAST;シャープ化 - コントラストのしきい値
+HISTORY_MSG_SOFTLIGHT_ENABLED;ソフトな明るさ
+HISTORY_MSG_SOFTLIGHT_STRENGTH;ソフトな明るさ - 強さ
+HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - アンカー
HISTORY_NEWSNAPSHOT;追加
HISTORY_NEWSNAPSHOT_TOOLTIP;ショートカット: Alt-s
HISTORY_SNAPSHOT;スナップショット
@@ -867,7 +882,6 @@ MAIN_TAB_RAW;raw
MAIN_TAB_RAW_TOOLTIP;ショートカット: Alt-r
MAIN_TAB_TRANSFORM;変形
MAIN_TAB_TRANSFORM_TOOLTIP;ショートカット: Alt-t
-MAIN_TAB_WAVELET;ウェーブレット
MAIN_TAB_WAVELET_TOOLTIP;ショートカット: Alt-w
MAIN_TOOLTIP_BACKCOLOR0;プレビューの背景色を指定します: テーマに基づく\nショートカット: 9
MAIN_TOOLTIP_BACKCOLOR1;プレビューの背景色を指定します: 黒\nショートカットt: 9
@@ -882,6 +896,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_QINFO;画像の情報\nショートカット: i
MAIN_TOOLTIP_SHOWHIDELP1;表示/非表示 左パネル\nショートカット: l
MAIN_TOOLTIP_SHOWHIDERP1;表示/非表示 右パネル\nショートカット: Alt-l
@@ -952,6 +967,7 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;デッドピクセルフィルターを適
PARTIALPASTE_PREPROCESS_GREENEQUIL;グリーン 平衡化
PARTIALPASTE_PREPROCESS_HOTPIXFILT;ホットピクセルフィルターを適用
PARTIALPASTE_PREPROCESS_LINEDENOISE;ラインノイズ フィルタ
+PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF ラインフィルタ
PARTIALPASTE_PRSHARPENING;リサイズ後のシャープ化
PARTIALPASTE_RAWCACORR_AUTO;自動色収差補正
PARTIALPASTE_RAWCACORR_CAREDBLUE;色収差 レッドとブルー
@@ -959,6 +975,7 @@ PARTIALPASTE_RAWEXPOS_BLACK;黒レベル
PARTIALPASTE_RAWEXPOS_LINEAR;raw ホワイトポイント リニア補正係数
PARTIALPASTE_RAWEXPOS_PRESER;raw ホワイトポイント ハイライトを保持したまま補正 (EV)
PARTIALPASTE_RAWGROUP;raw 設定
+PARTIALPASTE_RAW_BORDER;Rawの境界
PARTIALPASTE_RAW_DCBENHANCE;DCB 拡張処理適用
PARTIALPASTE_RAW_DCBITERATIONS;DCB反復の数
PARTIALPASTE_RAW_DMETHOD;デモザイクの方法
@@ -974,10 +991,10 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;シャドウ/ハイライト
PARTIALPASTE_SHARPENEDGE;エッジ
PARTIALPASTE_SHARPENING;シャープ化 (USM/RL)
PARTIALPASTE_SHARPENMICRO;マイクロコントラスト
-PARTIALPASTE_TM_FATTAL;HDR トーンマッピング
+PARTIALPASTE_SOFTLIGHT;ソフトな明るさ
+PARTIALPASTE_TM_FATTAL;ダイナミックレンジ圧縮
PARTIALPASTE_VIBRANCE;自然な彩度
PARTIALPASTE_VIGNETTING;周辺光量補正
-PARTIALPASTE_WAVELETGROUP;ウェーブレット処理
PARTIALPASTE_WHITEBALANCE;ホワイトバランス
PREFERENCES_ADD;追加
PREFERENCES_APPLNEXTSTARTUP;要再起動
@@ -1002,10 +1019,6 @@ PREFERENCES_CACHECLEARTHUMBS;サムネイルのクリア
PREFERENCES_CACHEMAXENTRIES;キャッシュエントリーの最大数
PREFERENCES_CACHEOPTS;cache オプション
PREFERENCES_CACHETHUMBHEIGHT;サムネイル縦の最大値
-PREFERENCES_CIEART;CIECAM02 最適化
-PREFERENCES_CIEART_FRAME;CIECAM02-特定の設定
-PREFERENCES_CIEART_LABEL;倍精度の代わりに単精度浮動小数点を使用
-PREFERENCES_CIEART_TOOLTIP;有効にした場合、 CIECAM02は倍精度浮動小数点形式の代わりに単精度で実行されます。これは品質を少し犠牲にし、速度を少し増加させます
PREFERENCES_CLIPPINGIND;クリッピング領域の表示
PREFERENCES_CLUTSCACHE;HaldCLUT cache
PREFERENCES_CLUTSCACHE_LABEL;cacheに置けるHaldCLUTの最大数
@@ -1256,7 +1269,6 @@ SAVEDLG_AUTOSUFFIX;ファイルが存在する場合、自動的に末尾に文
SAVEDLG_FILEFORMAT;ファイル形式
SAVEDLG_FORCEFORMATOPTS;強制保存オプション
SAVEDLG_JPEGQUAL;JPEG 品質
-SAVEDLG_PNGCOMPR;PNG 圧縮
SAVEDLG_PUTTOQUEUE;キュー処理に追加
SAVEDLG_PUTTOQUEUEHEAD;キュー処理の最初に追加
SAVEDLG_PUTTOQUEUETAIL;キュー処理の最後に追加
@@ -1315,6 +1327,8 @@ TP_BWMIX_MET;方法
TP_BWMIX_MET_CHANMIX;チャンネルミキサー
TP_BWMIX_MET_DESAT;彩度低減
TP_BWMIX_MET_LUMEQUAL;輝度イコライザー
+TP_BWMIX_MIXC;チャンネルミキサー
+TP_BWMIX_NEUTRAL;リセット
TP_BWMIX_RGBLABEL;R: %1%% G: %2%% B: %3%% トータル: %4%%
TP_BWMIX_RGBLABEL_HINT;ミキサーオプションの全てを考慮した最終のRGBファクター\nトータルは実際に適用されたRGBの合計を表示:\n- 常に100%相対モード\n- 絶対モード100%より高い(明るい)、或いは低い(暗い)
TP_BWMIX_RGB_TOOLTIP;RGBチャンネルをミックス。ガイダンスとしてプリセットを使います。\nマイナス値はアーティファクトの発生や誤った作用を起こすかもしれないことに注意します
@@ -1496,12 +1510,6 @@ TP_DARKFRAME_LABEL;ダークフレーム
TP_DEFRINGE_LABEL;フリンジ低減
TP_DEFRINGE_RADIUS;半径
TP_DEFRINGE_THRESHOLD;しきい値
-TP_DIRPYRDENOISE_3X3;3×3
-TP_DIRPYRDENOISE_3X3_SOFT;3×3 ソフト
-TP_DIRPYRDENOISE_5X5;5×5
-TP_DIRPYRDENOISE_5X5_SOFT;5×5 ソフト
-TP_DIRPYRDENOISE_7X7;7×7
-TP_DIRPYRDENOISE_9X9;9×9
TP_DIRPYRDENOISE_CHROMINANCE_AMZ;自動(多分割方式)
TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;自動(分割方式)
TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;色ノイズ低減の効果を確認して下さい\n注意:設定値の計算はあくまで平均的なもので、かなり主観的でです
@@ -1516,10 +1524,10 @@ TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;手動\n画像全体に作
TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;手動\n画像全体に作用します\nノイズ低減の設定を手動で行います\n\n自動(分割方式)\n画像全体に作用します\n画像を9つに分割して、そこから全体の色ノイズ低減に適した設定を自動的に行います\n\n自動(多分割方式)\nプレビュー画像には反映されません-保存画像だけに反映されます。但し、タイルサイズとその中心をプレビューサイズとその中心にマッチさせる〝プレビュー”方式を使えば、効果がどれ位か予測がつきます。\n画像をタイル状に分割し(タイル数は画像サイズ次第で、10~70枚になります)、各タイルにあった色ノイズ低減の設定を自動で行います\n\n自動(プレビュー方式)\n画像全体に作用します\nプレビューで見えている画像の一部を使って全体の色ノイズ低減に適した設定を自動で行います
TP_DIRPYRDENOISE_CHROMINANCE_PMZ;自動(プレビュー方式)
TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;プレビュー方式
-TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;ウェーブレット変換後、プレビューで見える部分画像で残ったノイズのレベルを表示します\n\n>300以上 非常にノイズが多い\n100~300 ノイズが多い\n50~100 ノイズが少ない\n50以下 ノイズが非常に少ない\n\n算出値はRGBとL*a*b*モードでは異なります。RGBモードは輝度と色を完全に切り離すことが出来ないので、算出値の精度は劣ります。
-TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;プレビューのサイズ=%1, 中心: Px=%2 Py=%3
-TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;プレビューのノイズ: 中間色度=%1 高色度=%2
-TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;プレビューのノイズ: 中間色度= - 高色度= -
+TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;ウェーブレット変換後、プレビューに表示されている画像のノイズのレベルを表示します\n\n>300以上 非常にノイズが多い\n100~300 ノイズが多い\n50~100 ノイズが少ない\n50以下 ノイズが非常に少ない\n\n算出値はRGBとL*a*b*モードでは異なります。RGBモードは輝度と色を完全に切り離すことが出来ないので、算出値の精度は劣ります。
+TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;プレビュー画像のサイズ=%1, 中心: Px=%2 Py=%3
+TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;プレビュー画像のノイズ: 平均値=%1 最大値=%2
+TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;プレビュー画像のノイズ: 平均値= - 最大値= -
TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;タイルのサイズ=%1, 中心位置: X座標=%2 Y座標=%3
TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;色差 レッド/グリーン
TP_DIRPYRDENOISE_ENH;強化モード
@@ -1530,17 +1538,16 @@ TP_DIRPYRDENOISE_LUMINANCE_CURVE;輝度カーブ
TP_DIRPYRDENOISE_LUMINANCE_DETAIL;輝度 細部の復元
TP_DIRPYRDENOISE_LUMINANCE_FRAME;輝度ノイズ
TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;輝度
-TP_DIRPYRDENOISE_MAIN_COLORSPACE;方式
+TP_DIRPYRDENOISE_MAIN_COLORSPACE;色空間
TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b*
-TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;ノイズ低減
TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB
TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;raw画像は、RGBまたはL*a*b*方式のいずれかを使用することができます。\n\nraw以外の画像は、選択にかかわらずL*a*b*方式が採用されます
TP_DIRPYRDENOISE_MAIN_GAMMA;ガンマ
TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;ガンマは、トーンの範囲全体でノイズ低減の量を変化させます。値が大きいほど明るいトーンに効果を及ぼし、値が小さいほどシャドウをターゲットにします
-TP_DIRPYRDENOISE_MAIN_MODE;ノイズ低減の質
-TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;高い
-TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;標準
-TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;ノイズの状態に応じて低減効果の質を選べます:1-標準 2-高い\n2の方がノイズ低減効果は高くなりますが、その分処理時間が増えます。
+TP_DIRPYRDENOISE_MAIN_MODE;モード
+TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;積極的
+TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;控えめ
+TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;”控えめ”モードは低周波の色度パターンが維持されますが、”積極的”モードではそれらも取り除かれます
TP_DIRPYRDENOISE_MEDIAN_METHOD;方式
TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;色ノイズだけ
TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b*
@@ -1554,6 +1561,12 @@ TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;計算領域が3x3ピクセルのメデ
TP_DIRPYRDENOISE_MEDIAN_TYPE;フィルターの種類
TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;適用するメディアンフィルタのサイズを決めます。大きくするとその分処理時間が増えます。大きいサイズを使うとそれだけ処理時間が増えます。\n\n3×3 ソフト: 3x3ピクセルの計算領域で5ピクセルを処理します\n3×3:3x3ピクセルの計算領域で9ピクセルを処理します\n5×5 ソフト: 5x5ピクセルの計算領域で13ピクセルを処理します\n5×5: 5x5ピクセルの計算領域で25ピクセルを処理します\n7×7: 7x7ピクセルの計算領域で49ピクセルを処理します\n9×9: 9x9ピクセルの計算領域で81ピクセルを処理します\n\n場合によっては、小さいウィンドウで複数回適用を繰り返す方が、大きいウィンドウを1回適用するより結果が良いことがあります。
TP_DIRPYRDENOISE_SLI;スライダー
+TP_DIRPYRDENOISE_TYPE_3X3;3×3
+TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 ソフト
+TP_DIRPYRDENOISE_TYPE_5X5;5×5
+TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 ソフト
+TP_DIRPYRDENOISE_TYPE_7X7;7×7
+TP_DIRPYRDENOISE_TYPE_9X9;9×9
TP_DIRPYREQUALIZER_ALGO;肌色の範囲
TP_DIRPYREQUALIZER_ALGO_TOOLTIP;ファイン:撮影の肌色に近い部分に働くアルゴリズム、他の色への影響を最小限に抑えます\n広範: アーティファクトの増加を避けるアルゴリズムです
TP_DIRPYREQUALIZER_ARTIF;アーティファクトを軽減
@@ -1607,7 +1620,7 @@ TP_EXPOSURE_TCMODE_SATANDVALBLENDING;彩度と明度のブレンド
TP_EXPOSURE_TCMODE_STANDARD;標準
TP_EXPOSURE_TCMODE_WEIGHTEDSTD;加重平均
TP_EXPOS_BLACKPOINT_LABEL;raw ブラック・ポイント
-TP_EXPOS_WHITEPOINT_LABEL;raw ホワイト・ポイント
+TP_EXPOS_WHITEPOINT_LABEL;raw ホワイト・ポイント
TP_FILMSIMULATION_LABEL;フィルムシミュレーション
TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapeeはフィルムシミュレーション機能に使う画像をHald CLUTフォルダーの中から探すよう設計されています(プログラムに組み込むにはフォルダーが大き過ぎるため)。\n変更するには、環境設定 > 画像処理 > フィルムシミュレーションと進み\nどのフォルダーが使われているか確認します。機能を利用する場合は、Hald CLUTだけが入っているフォルダーを指定するか、 この機能を使わない場合はそのフォルダーを空にしておきます。\n\n詳しくはRawPediaを参照して下さい。\n\nフィルム画像のスキャンを止めますか?
TP_FILMSIMULATION_STRENGTH;強さ
@@ -1789,16 +1802,22 @@ TP_RAWEXPOS_PRESER;ハイライトを保持
TP_RAWEXPOS_RGB;レッド、グリーン、ブルー
TP_RAWEXPOS_TWOGREEN;2つのグリーンを連動
TP_RAW_1PASSMEDIUM;1-パス (ミディアム)
+TP_RAW_2PASS;1-pass+fast
TP_RAW_3PASSBEST;3-Pass (最良)
+TP_RAW_4PASS;4-パス
TP_RAW_AHD;AHD
TP_RAW_AMAZE;AMaZE
+TP_RAW_AMAZEVNG4;AMaZE+VNG4
+TP_RAW_BORDER;境界
TP_RAW_DCB;DCB
TP_RAW_DCBENHANCE;DCB 拡張処理
TP_RAW_DCBITERATIONS;DCB 反復の数
+TP_RAW_DCBVNG4;DCB+VNG4
TP_RAW_DMETHOD;方式
TP_RAW_DMETHOD_PROGRESSBAR;%1 デモザイク中...
TP_RAW_DMETHOD_PROGRESSBAR_REFINE;デモザイク・リファイン中...
TP_RAW_DMETHOD_TOOLTIP;注: IGVとLMMSEは高ISO画像に適しています
+TP_RAW_DUALDEMOSAICCONTRAST;コントラストのしきい値
TP_RAW_EAHD;EAHD
TP_RAW_FALSECOLOR;偽色抑制処理の回数
TP_RAW_FAST;Fast
@@ -1816,6 +1835,7 @@ TP_RAW_MONO;Mono
TP_RAW_NONE;なし (センサーのパターンを表示)
TP_RAW_PIXELSHIFT;ピクセルシフト
TP_RAW_PIXELSHIFTBLUR;振れマスクのぼかし
+TP_RAW_PIXELSHIFTDMETHOD;振れに対するデモザイクの方式
TP_RAW_PIXELSHIFTEPERISO;ISOの適合
TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;通常のISOに関してはデフォルトの0で十分だと思われます。\n高いISOの場合は、振れの検知を良くするために設定値を上げます。\n少しづつ増加させ、振れのマスクの変化を見ます。
TP_RAW_PIXELSHIFTEQUALBRIGHT;構成画像の明るさを均等にする
@@ -1844,10 +1864,12 @@ TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;デフォルトで設定している値1.0で基
TP_RAW_PIXELSHIFTSMOOTH;境界部分を滑らかにする
TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;これは振れのある領域と振れがない領域の境を滑らかに補正するものです。\n0に設定すると機能の働きはありません。\n1に設定すると、選択された構成画像にAMaZEかLMMSEが使われた結果が得られます("LMMSEを使う"というオプション次第)、或いは"メディアンを使う"が選択されていれば全ての構成画像にメディアンが使われます。
TP_RAW_RCD;RCD
+TP_RAW_RCDVNG4;RCD+VNG4
TP_RAW_SENSOR_BAYER_LABEL;ベイヤー配列を使ったセンサー
TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-passが最適です(低ISO画像には奨められます)\n高ISO画像の場合、1-passと3-passの違いは殆どありません、処理速度は前者の方が速いです。
TP_RAW_SENSOR_XTRANS_LABEL;X-Transマトリクスを使ったセンサー
TP_RAW_VNG4;VNG4
+TP_RESIZE_ALLOW_UPSCALING;アップスケーリングを可能にする
TP_RESIZE_APPLIESTO;適用領域:
TP_RESIZE_CROPPEDAREA;切り抜き画像
TP_RESIZE_FITBOX;バウンディング・ボックス
@@ -1966,6 +1988,7 @@ TP_SHARPENEDGE_LABEL;エッジ
TP_SHARPENEDGE_PASSES;反復
TP_SHARPENEDGE_THREE;輝度のみ
TP_SHARPENING_AMOUNT;適用量
+TP_SHARPENING_CONTRAST;コントラストのしきい値
TP_SHARPENING_EDRADIUS;半径
TP_SHARPENING_EDTOLERANCE;エッジ許容
TP_SHARPENING_HALOCONTROL;ハロ抑制
@@ -1981,12 +2004,15 @@ TP_SHARPENING_RLD_ITERATIONS;繰返し
TP_SHARPENING_THRESHOLD;しきい値
TP_SHARPENING_USM;アンシャープマスク
TP_SHARPENMICRO_AMOUNT;適用量
+TP_SHARPENMICRO_CONTRAST;コントラストのしきい値
TP_SHARPENMICRO_LABEL;マイクロコントラスト
TP_SHARPENMICRO_MATRIX;3×3マトリクスの代わりに 5×5
TP_SHARPENMICRO_UNIFORMITY;均等
+TP_SOFTLIGHT_LABEL;ソフトな明るさ
+TP_SOFTLIGHT_STRENGTH;強さ
TP_TM_FATTAL_AMOUNT;量
TP_TM_FATTAL_ANCHOR;アンカー
-TP_TM_FATTAL_LABEL;HDRトーンマッピング
+TP_TM_FATTAL_LABEL;ダイナミックレンジ圧縮
TP_TM_FATTAL_THRESHOLD;しきい値
TP_VIBRANCE_AVOIDCOLORSHIFT;色ずれを回避
TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2231,21 +2257,3 @@ ZOOMPANEL_ZOOMFITSCREEN;画像全体を画面に合わせる\nショートカッ
ZOOMPANEL_ZOOMIN;ズームイン\nショートカット: +
ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: -
-!!!!!!!!!!!!!!!!!!!!!!!!!
-! Untranslated keys follow; remove the ! prefix after an entry is translated.
-!!!!!!!!!!!!!!!!!!!!!!!!!
-
-!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value.
-!GENERAL_RESET;Reset
-!HISTORY_MSG_235;B&W - CM - Auto
-!HISTORY_MSG_237;B&W - CM
-!HISTORY_MSG_273;CT - Color Balance SMH
-!HISTORY_MSG_392;W - Residual - Color Balance
-!TP_BWMIX_MIXC;Channel Mixer
-!TP_BWMIX_NEUTRAL;Reset
-!TP_DIRPYRDENOISE_TYPE_3X3;3×3
-!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft
-!TP_DIRPYRDENOISE_TYPE_5X5;5×5
-!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft
-!TP_DIRPYRDENOISE_TYPE_7X7;7×7
-!TP_DIRPYRDENOISE_TYPE_9X9;9×9
diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian
index 437fe7451..c39b5c03e 100644
--- a/rtdata/languages/Latvian
+++ b/rtdata/languages/Latvian
@@ -971,14 +971,15 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -986,9 +987,17 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1061,6 +1070,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_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
@@ -1116,6 +1126,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1123,6 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1134,7 +1146,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PARTIALPASTE_RGBCURVES;RGB curves
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1808,16 +1821,22 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1834,6 +1853,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1862,10 +1882,12 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1967,13 +1989,17 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2064,7 +2090,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar
index c73ef6469..0538c9bc5 100644
--- a/rtdata/languages/Magyar
+++ b/rtdata/languages/Magyar
@@ -1244,14 +1244,15 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -1259,9 +1260,17 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1308,6 +1317,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%.
!MONITOR_PROFILE_SYSTEM;System default
!NAVIGATOR_B;B:
!NAVIGATOR_G;G:
@@ -1337,13 +1347,16 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!PARTIALPASTE_PCVIGNETTE;Vignette filter
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_LMMSEITERATIONS;LMMSE enhancement steps
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1882,14 +1895,20 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!TP_RAWEXPOS_BLACK_GREEN;Green
!TP_RAWEXPOS_BLACK_RED;Red
!TP_RAWEXPOS_RGB;Red, Green, Blue
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1905,6 +1924,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1933,10 +1953,12 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
@@ -2021,9 +2043,13 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!TP_RGBCURVES_LUMAMODE_TOOLTIP;Luminosity mode allows to vary the contribution of R, G and B channels to the luminosity of the image, without altering image color.
!TP_SAVEDIALOG_OK_TIP;Shortcut: Ctrl-Enter
!TP_SHADOWSHLIGHTS_SHARPMASK;Sharp mask
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
!TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones
@@ -2103,7 +2129,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands
index b5a1475c7..48fd3852f 100644
--- a/rtdata/languages/Nederlands
+++ b/rtdata/languages/Nederlands
@@ -2135,14 +2135,15 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -2150,9 +2151,17 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
@@ -2161,13 +2170,17 @@ 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%.
!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.
!PARTIALPASTE_ADVANCEDGROUP;Advanced Settings
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
+!PARTIALPASTE_RAW_BORDER;Raw border
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
!PREFERENCES_CROP;Crop editing
!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area
@@ -2233,18 +2246,31 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical
!TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_4PASS;3-pass+fast
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Equalize per channel
!TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Enabled: Equalize the RGB channels individually.\nDisabled: Use same equalization factor for all channels.
!TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted
diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM
index b305128a8..405244ad1 100644
--- a/rtdata/languages/Norsk BM
+++ b/rtdata/languages/Norsk BM
@@ -970,14 +970,15 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -985,9 +986,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1060,6 +1069,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_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
@@ -1115,6 +1125,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1122,6 +1133,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1133,7 +1145,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_RGBCURVES;RGB curves
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1807,16 +1820,22 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1833,6 +1852,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1861,10 +1881,12 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1966,13 +1988,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2063,7 +2089,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish
index ec6ecddaa..1774227b8 100644
--- a/rtdata/languages/Polish
+++ b/rtdata/languages/Polish
@@ -1657,14 +1657,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -1672,9 +1673,17 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1710,6 +1719,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%.
!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.
@@ -1718,12 +1728,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!PARTIALPASTE_EQUALIZER;Wavelet levels
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1919,11 +1932,17 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_CASTR;Strength
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1937,6 +1956,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1965,7 +1985,9 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
@@ -2046,9 +2068,13 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_WAVELET_1;Level 1
!TP_WAVELET_2;Level 2
@@ -2118,7 +2144,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters)
index 22845989e..68619769d 100644
--- a/rtdata/languages/Polish (Latin Characters)
+++ b/rtdata/languages/Polish (Latin Characters)
@@ -1657,14 +1657,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -1672,9 +1673,17 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1710,6 +1719,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%.
!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.
@@ -1718,12 +1728,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!PARTIALPASTE_EQUALIZER;Wavelet levels
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1919,11 +1932,17 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_CASTR;Strength
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1937,6 +1956,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1965,7 +1985,9 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
@@ -2046,9 +2068,13 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_WAVELET_1;Level 1
!TP_WAVELET_2;Level 2
@@ -2118,7 +2144,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil)
index 0ffd63557..3c7548a80 100644
--- a/rtdata/languages/Portugues (Brasil)
+++ b/rtdata/languages/Portugues (Brasil)
@@ -1,10 +1,11 @@
-#01 2018-05-03 Digitalpix58
+#01 2018-06-30 Digitalpix58
ABOUT_TAB_BUILD;Versão
ABOUT_TAB_CREDITS;Créditos
ABOUT_TAB_LICENSE;Licença
ABOUT_TAB_RELEASENOTES;Nota de Lançamento
ABOUT_TAB_SPLASH;Splash
+ADJUSTER_RESET_TO_DEFAULT;Clique - restaurar para o valor padrão.\nCtrl+clique - restaurar para o valor inicial.
BATCHQUEUE_AUTOSTART;Início automático
BATCHQUEUE_AUTOSTARTHINT;Começa a processar automaticamente um novo trabalho.
BATCHQUEUE_DESTFILENAME;Caminho e nome do arquivo
@@ -16,10 +17,10 @@ CURVEEDITOR_AXIS_OUT;O:
CURVEEDITOR_AXIS_RIGHT_TAN;RT:
CURVEEDITOR_CURVE;Curva
CURVEEDITOR_CURVES;Curvas
-CURVEEDITOR_CUSTOM;Personalizados
+CURVEEDITOR_CUSTOM;Personalizado
CURVEEDITOR_DARKS;Escuros
CURVEEDITOR_EDITPOINT_HINT;Ativar edição dos valores de entrada/saída do nó.\n\nClique com o btão direito do mouse num nó para selecioná-lo.\nClique com o botão direito do mouse no espaço vazio para desmarcar o nó.
-CURVEEDITOR_HIGHLIGHTS;Destaques
+CURVEEDITOR_HIGHLIGHTS;Realces
CURVEEDITOR_LIGHTS;Luzes
CURVEEDITOR_LINEAR;Linear
CURVEEDITOR_LOADDLGLABEL;Carregar curva...
@@ -88,7 +89,7 @@ EXPORT_BYPASS_RAW_FF;Ignorar [raw] Flat-Field
EXPORT_BYPASS_RAW_GREENTHRESH;Ignorar [raw] Equilíbrio Verde
EXPORT_BYPASS_RAW_LINENOISE;Ignorar [raw] Filtro de Ruído de Linha
EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;Ignorar [raw] LMMSE Etapas de Aprimoramento
-EXPORT_BYPASS_SHARPENEDGE;Ignorar Afiação de Borda
+EXPORT_BYPASS_SHARPENEDGE;Ignorar Nitidez de Borda
EXPORT_BYPASS_SHARPENING;Ignorar Nitidez
EXPORT_BYPASS_SHARPENMICRO;Ignorar Microcontraste
EXPORT_BYPASS_SH_HQ;Ignorar Sombras/Realces da Máscara de Nitidez
@@ -228,6 +229,7 @@ GENERAL_NONE;None
GENERAL_OK;OK
GENERAL_OPEN;Abrir
GENERAL_PORTRAIT;Retrato
+GENERAL_RESET;Restaurar
GENERAL_SAVE;Salvar
GENERAL_SLIDER;Barra de volume
GENERAL_UNCHANGED;(Inalterado)
@@ -249,7 +251,7 @@ HISTORY_MSG_1;Foto Carregada
HISTORY_MSG_2;PP3 Perfil carregado
HISTORY_MSG_3;PP3 Perfil alterado
HISTORY_MSG_4;Histórico de navegação
-HISTORY_MSG_5;Exposição - Luminosidade
+HISTORY_MSG_5;Exposição - Claridade
HISTORY_MSG_6;Exposição - Contraste
HISTORY_MSG_7;Exposição - Preto
HISTORY_MSG_8;Exposição - Compensação
@@ -258,7 +260,7 @@ HISTORY_MSG_10;Exposição - Compressão de sombra
HISTORY_MSG_11;Exposição - Curva de tom 1
HISTORY_MSG_12;Exposição - Níveis automáticos
HISTORY_MSG_13;Exposição - Clip
-HISTORY_MSG_14;L*a*b* - Luminosidade
+HISTORY_MSG_14;L*a*b* - Claridade
HISTORY_MSG_15;L*a*b* - Contraste
HISTORY_MSG_16;-
HISTORY_MSG_17;-
@@ -267,8 +269,8 @@ HISTORY_MSG_19;L*a*b* - L* curva
HISTORY_MSG_20;Nitidez
HISTORY_MSG_21;USM - Raio
HISTORY_MSG_22;USM - Montante
-HISTORY_MSG_23;USM - Limiar
-HISTORY_MSG_24;USM - Nitidez nas bordas
+HISTORY_MSG_23;USM - Limite
+HISTORY_MSG_24;USM - Nitidez somente nas bordas
HISTORY_MSG_25;USM - Raio de detecção de borda
HISTORY_MSG_26;USM - Tolerância de borda
HISTORY_MSG_27;USM - Controle de halo
@@ -297,7 +299,7 @@ HISTORY_MSG_49;DCP illuminante
HISTORY_MSG_50;Sombras/Realces
HISTORY_MSG_51;S/H - Realces
HISTORY_MSG_52;S/H - Sombras
-HISTORY_MSG_53;S/H - Largura tonal do realces
+HISTORY_MSG_53;S/H - Largura tonal dos realces
HISTORY_MSG_54;S/H - Largura tonal das sombras
HISTORY_MSG_55;S/H - Contraste local
HISTORY_MSG_56;S/H - Raio
@@ -332,7 +334,7 @@ HISTORY_MSG_84;Correção de perspectiva
HISTORY_MSG_85;Correção de Lente - Arquivo LCP
HISTORY_MSG_86;RGB Curvas - Modo de lLuminosidade
HISTORY_MSG_87;Redução de Ruído por Impulso
-HISTORY_MSG_88;Limiar de Impulso NR
+HISTORY_MSG_88;Limite de Impulso NR
HISTORY_MSG_89;Redução de Ruído
HISTORY_MSG_90;NR - Luminância
HISTORY_MSG_91;NR - Crominância mestre
@@ -351,8 +353,8 @@ HISTORY_MSG_103;HSV - Valor
HISTORY_MSG_104;HSV Equalizador
HISTORY_MSG_105;Defringe
HISTORY_MSG_106;Defringe - Raio
-HISTORY_MSG_107;Defringe - Limiar
-HISTORY_MSG_108;Exposição - Limiar HLC
+HISTORY_MSG_107;Defringe - Limite
+HISTORY_MSG_108;Exposição - Limite HLC
HISTORY_MSG_109;Redimensionar - Caixa delimitadora
HISTORY_MSG_110;Redimensionar - Aplica-se a
HISTORY_MSG_111;L*a*b* - Evite mudança de cor
@@ -401,8 +403,8 @@ HISTORY_MSG_153;Vibração - Tons saturados
HISTORY_MSG_154;Vibração - Protege os tons da película
HISTORY_MSG_155;Vibração - Evita mudança de cor
HISTORY_MSG_156;Vibração - Link pastel/saturado
-HISTORY_MSG_157;Vibração - Limiar P/S
-HISTORY_MSG_158;TM - Robustez
+HISTORY_MSG_157;Vibração - Limite P/S
+HISTORY_MSG_158;TM - Intensidade
HISTORY_MSG_159;TM - Borda parando
HISTORY_MSG_160;TM - Escala
HISTORY_MSG_161;TM - Reponderar iteração
@@ -424,7 +426,7 @@ HISTORY_MSG_176;CAM02 - Visualizando surround
HISTORY_MSG_177;CAM02 - Luminosidade de cena
HISTORY_MSG_178;CAM02 - Visualizando luminosidade
HISTORY_MSG_179;CAM02 - Modelo de ponto branco
-HISTORY_MSG_180;CAM02 - Luminosidade (J)
+HISTORY_MSG_180;CAM02 - Claridade (J)
HISTORY_MSG_181;CAM02 - Croma (C)
HISTORY_MSG_182;CAM02 - Automático CAT02
HISTORY_MSG_183;CAM02 - Contraste (J)
@@ -455,7 +457,7 @@ HISTORY_MSG_207;Defringe - Curva de matiz
HISTORY_MSG_208;Equalizador WB - B/R
HISTORY_MSG_210;GF - Ângulo
HISTORY_MSG_211;Filtro Graduado
-HISTORY_MSG_212;VF - Robustez
+HISTORY_MSG_212;VF - Intensidade
HISTORY_MSG_213;Filtro de Vinheta
HISTORY_MSG_214;Preto-e-Branco
HISTORY_MSG_215;P&B - CM - Vermelho
@@ -478,19 +480,21 @@ HISTORY_MSG_231;P&B - Curva 'anterior'
HISTORY_MSG_232;P&B - Tipo de curva 'anterior'
HISTORY_MSG_233;P&B - Curva 'posterior'
HISTORY_MSG_234;P&B - Tipo de curva 'posterior'
+HISTORY_MSG_235;P&B - Misturador de canal automático
HISTORY_MSG_236;--sem uso--
-HISTORY_MSG_238;GF - Pena
-HISTORY_MSG_239;GF - Robustez
+HISTORY_MSG_237;P&B - Misturador
+HISTORY_MSG_238;GF - Difusão
+HISTORY_MSG_239;GF - Intensidade
HISTORY_MSG_240;GF - Centro
-HISTORY_MSG_241;VF - Pena
+HISTORY_MSG_241;VF - Difusão
HISTORY_MSG_242;VF - Arredondamento
HISTORY_MSG_243;VC - Raio
-HISTORY_MSG_244;VC - Robustez
+HISTORY_MSG_244;VC - Intensidade
HISTORY_MSG_245;VC - Centro
HISTORY_MSG_246;L*a*b* - Curva CL
HISTORY_MSG_247;L*a*b* - Curva LH
HISTORY_MSG_248;L*a*b* - Curva HH
-HISTORY_MSG_249;CbDL - Limiar
+HISTORY_MSG_249;CbDL - Limite
HISTORY_MSG_250;NR - Aprimorada
HISTORY_MSG_251;P&B - Algorítimo
HISTORY_MSG_252;CbDL - Película tar/prot
@@ -514,6 +518,7 @@ HISTORY_MSG_269;CT - Alto - Vermelho
HISTORY_MSG_270;CT - Alto - Verde
HISTORY_MSG_271;CT - Alto - Azul
HISTORY_MSG_272;CT - Balanço
+HISTORY_MSG_273;CT - Restaurar
HISTORY_MSG_274;CT - Sat. Sombras
HISTORY_MSG_275;CT - Sat. Realces
HISTORY_MSG_276;CT - Opacidade
@@ -521,9 +526,9 @@ HISTORY_MSG_277;--sem uso--
HISTORY_MSG_278;CT - Preserve luminância
HISTORY_MSG_279;CT - Sombras
HISTORY_MSG_280;CT - Realces
-HISTORY_MSG_281;CT - Sat. robustez
-HISTORY_MSG_282;CT - Sat. limiar
-HISTORY_MSG_283;CT - Robustez
+HISTORY_MSG_281;CT - Sat. intensidade
+HISTORY_MSG_282;CT - Sat. limite
+HISTORY_MSG_283;CT - Intensidade
HISTORY_MSG_284;CT - Proteção automática sat.
HISTORY_MSG_285;NR - Mediano - Método
HISTORY_MSG_286;NR - Mediano - Tipo
@@ -534,7 +539,7 @@ HISTORY_MSG_290;Nível de Preto - Vermelho
HISTORY_MSG_291;Nível de Preto - Verde
HISTORY_MSG_292;Nível de Preto - Azul
HISTORY_MSG_293;Simulação de Filme
-HISTORY_MSG_294;Simulação de Filme - Robustez
+HISTORY_MSG_294;Simulação de Filme - Intensidade
HISTORY_MSG_295;Simulação de Filme - Filme
HISTORY_MSG_296;NR - Curva de luminância
HISTORY_MSG_297;NR - Modo
@@ -552,7 +557,7 @@ HISTORY_MSG_308;W - Direção do processo
HISTORY_MSG_309;W - ES - Detalhe
HISTORY_MSG_310;W - Residual - Céu tar/prot
HISTORY_MSG_311;W - Níveis de Wavelet
-HISTORY_MSG_312;W - Residual - Limiar de sombras
+HISTORY_MSG_312;W - Residual - Limite de sombras
HISTORY_MSG_313;W - Croma - Sat/past
HISTORY_MSG_314;W - Gamut - Reduzir artefatos
HISTORY_MSG_315;W - Residual - Contraste
@@ -568,7 +573,7 @@ HISTORY_MSG_324;W - Croma - Pastel
HISTORY_MSG_325;W - Croma - Saturado
HISTORY_MSG_326;W - Croma - Método
HISTORY_MSG_327;W - Contraste - Aplicar para
-HISTORY_MSG_328;W - Croma - Robustez do link
+HISTORY_MSG_328;W - Croma - Intensidade do link
HISTORY_MSG_329;W - Tonificação - Opacidade RG
HISTORY_MSG_330;W - Tonificação - Opacidade BY
HISTORY_MSG_331;W - Níveis de contraste - Extra
@@ -576,11 +581,11 @@ HISTORY_MSG_332;W - Método de ladrilhos
HISTORY_MSG_333;W - Residual - Sombras
HISTORY_MSG_334;W - Residual - Croma
HISTORY_MSG_335;W - Residual - Realces
-HISTORY_MSG_336;W - Residual - Limiar de realces
+HISTORY_MSG_336;W - Residual - Limite de realces
HISTORY_MSG_337;W - Residual - Tonalidade do céu
HISTORY_MSG_338;W - ES - Raio
-HISTORY_MSG_339;W - ES - Robustez
-HISTORY_MSG_340;W - Robustez
+HISTORY_MSG_339;W - ES - Intensidade
+HISTORY_MSG_340;W - Intensidade
HISTORY_MSG_341;W - Performance de borda
HISTORY_MSG_342;W - ES - Primeiro nível
HISTORY_MSG_343;W - Níveis cromáticos
@@ -595,15 +600,15 @@ HISTORY_MSG_351;W - Residual - Curva HH
HISTORY_MSG_352;W - Fundo
HISTORY_MSG_353;W - ES - Sensibilidade Gradiente
HISTORY_MSG_354;W - ES - Aprimorada
-HISTORY_MSG_355;W - ES - Limiar baixo
-HISTORY_MSG_356;W - ES - Limiar alto
+HISTORY_MSG_355;W - ES - Limite baixo
+HISTORY_MSG_356;W - ES - Limite alto
HISTORY_MSG_357;W - Remoção de ruído - Link com ES
HISTORY_MSG_358;W - Gamut - CH
-HISTORY_MSG_359;Hot/Dead - Limiar
+HISTORY_MSG_359;Hot/Dead - Limite
HISTORY_MSG_360;TM - Gamma
HISTORY_MSG_361;W - Final - Balanço cromático
HISTORY_MSG_362;W - Residual - Método de compressão
-HISTORY_MSG_363;W - Residual - Robustez da compressão
+HISTORY_MSG_363;W - Residual - Intensidade da compressão
HISTORY_MSG_364;W - Final - Balanço de Contraste
HISTORY_MSG_365;W - Final - Balanço Delta
HISTORY_MSG_366;W - Residual - Gamma de compressão
@@ -614,7 +619,7 @@ HISTORY_MSG_370;W - Final - Curva de contraste local
HISTORY_MSG_371;Pós Redimensionamento de Nitidez
HISTORY_MSG_372;PRS USM - Raio
HISTORY_MSG_373;PRS USM - Montante
-HISTORY_MSG_374;PRS USM - Limiar
+HISTORY_MSG_374;PRS USM - Limite
HISTORY_MSG_375;PRS USM - Nitidez apenas nas bordas
HISTORY_MSG_376;PRS USM - Raio de detecção de borda
HISTORY_MSG_377;PRS USM - Tolerância de borda
@@ -632,6 +637,7 @@ HISTORY_MSG_388;W - Residual - CB verde médio
HISTORY_MSG_389;W - Residual - CB azul médio
HISTORY_MSG_390;W - Residual - CB verde baixo
HISTORY_MSG_391;W - Residual - CB azul baixo
+HISTORY_MSG_392;W - Residual - CB Restaurar
HISTORY_MSG_393;DCP - Mesa de Olhar
HISTORY_MSG_394;DCP - Exposição linha de base
HISTORY_MSG_395;DCP - Mesa base
@@ -649,28 +655,28 @@ HISTORY_MSG_406;W - ES - Pixels vizinhos
HISTORY_MSG_407;Retinex - Método
HISTORY_MSG_408;Retinex - Raio
HISTORY_MSG_409;Retinex - Contraste
-HISTORY_MSG_410;Retinex - Offset
-HISTORY_MSG_411;Retinex - Robustez
+HISTORY_MSG_410;Retinex - Compensação
+HISTORY_MSG_411;Retinex - Intensidade
HISTORY_MSG_412;Retinex - Gradiente de Gaussian
HISTORY_MSG_413;Retinex - Contraste
HISTORY_MSG_414;Retinex - Histograma - Laboratório
-HISTORY_MSG_415;Retinex - Transmição
+HISTORY_MSG_415;Retinex - Transmissão
HISTORY_MSG_416;Retinex
HISTORY_MSG_417;Retinex - Mediana de transmissão
-HISTORY_MSG_418;Retinex - Limiar
+HISTORY_MSG_418;Retinex - Limite
HISTORY_MSG_419;Retinex - Espaço colorido
HISTORY_MSG_420;Retinex - Histograma - HSL
HISTORY_MSG_421;Retinex - Gamma
HISTORY_MSG_422;Retinex - Gamma
HISTORY_MSG_423;Retinex - Inclinação gamma
-HISTORY_MSG_424;Retinex - Limiar HL
+HISTORY_MSG_424;Retinex - Limite HL
HISTORY_MSG_425;Retinex - Base de registro
HISTORY_MSG_426;Retinex - Equalizador de matiz
HISTORY_MSG_427;Intenção de renderização de saída
HISTORY_MSG_428;Intenção de renderização do monitor
HISTORY_MSG_429;Retinex - Iterações
HISTORY_MSG_430;Retinex - Gradiente de transmissão
-HISTORY_MSG_431;Retinex - Gradiente de robustez
+HISTORY_MSG_431;Retinex - Gradiente de intensidade
HISTORY_MSG_432;Retinex - M - Realces
HISTORY_MSG_433;Retinex - M - Realces TW
HISTORY_MSG_434;Retinex - M - Sombras
@@ -690,9 +696,9 @@ HISTORY_MSG_452;PS - Mostrar movimento
HISTORY_MSG_453;PS - Mostrar apenas a máscara
HISTORY_MSG_457;PS - Verificar vermelho/azul
HISTORY_MSG_462;PS - Verificar verde
-HISTORY_MSG_464;PS - Máscara de movimento borrar
-HISTORY_MSG_465;PS - Raio borrar
-HISTORY_MSG_468;PS - Preencher furos
+HISTORY_MSG_464;PS - Máscara de movimento de desfoque
+HISTORY_MSG_465;PS - Raio de desfoque
+HISTORY_MSG_468;PS - Preencher buracos
HISTORY_MSG_469;PS - Mediano
HISTORY_MSG_471;PS - Correção de movimento
HISTORY_MSG_472;PS - Transições suaves
@@ -711,14 +717,15 @@ HISTORY_MSG_484;CAM02 - Cena automática Yb
HISTORY_MSG_485;Correção de Lente
HISTORY_MSG_486;Correção de Lente - Câmera
HISTORY_MSG_487;Correção de Lente - Lente
-HISTORY_MSG_488;HDR Mpeamento de Tom
-HISTORY_MSG_489;HDR TM - Limiar
-HISTORY_MSG_490;HDR TM - Montante
+HISTORY_MSG_488;Compressão de Amplitude Dinâmica(DRC)
+HISTORY_MSG_489;DRC - Limite
+HISTORY_MSG_490;DRC - Montante
HISTORY_MSG_491;Balanço de Branco
HISTORY_MSG_492;Curvas RGB
HISTORY_MSG_493;L*a*b* Ajustes
-HISTORY_MSG_CLAMPOOG;Recorte de cor fora da gama
+HISTORY_MSG_CLAMPOOG;Recorte de cor fora do gamut
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Correção de cor
+HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Limite de contraste
HISTORY_MSG_HISTMATCHING;Curva de Tom Auto-compatível
HISTORY_MSG_LOCALCONTRAST_AMOUNT;Contraste Local - Montante
HISTORY_MSG_LOCALCONTRAST_DARKNESS;Contraste Local - Escuridão
@@ -726,9 +733,16 @@ HISTORY_MSG_LOCALCONTRAST_ENABLED;Contraste Local
HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Contraste Local - Claridade
HISTORY_MSG_LOCALCONTRAST_RADIUS;Contraste Local - Raio
HISTORY_MSG_METADATA_MODE;Modo de cópia de metadados
+HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontraste - Limite de contraste
+HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Método Demosaico para Movimento
HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Direção do filtro de ruído de linha
HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;Filtros de linha PDAF
-HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Âncora
+HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Limite de contraste
+HISTORY_MSG_RAW_BORDER;Borda raw
+HISTORY_MSG_SHARPENING_CONTRAST;Nitidez - Limite de contraste
+HISTORY_MSG_SOFTLIGHT_ENABLED;Luz suave
+HISTORY_MSG_SOFTLIGHT_STRENGTH;Luz suave - Intensidade
+HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Âncora
HISTORY_NEWSNAPSHOT;Adicionar
HISTORY_NEWSNAPSHOT_TOOLTIP;Atalho: Alt-s
HISTORY_SNAPSHOT;Instantâneo
@@ -847,11 +861,12 @@ 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_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
MAIN_TOOLTIP_SHOWHIDETP1;Mostrar/Ocultar o painel superior.\nAtalho: Shift-l
-MAIN_TOOLTIP_THRESHOLD;Limiar
+MAIN_TOOLTIP_THRESHOLD;Limite
MAIN_TOOLTIP_TOGGLE;Alternar o Antes/Depois visualização.\nAtalho: Shift-b
MONITOR_PROFILE_SYSTEM;Sistema padrão
NAVIGATOR_B;B:
@@ -883,7 +898,7 @@ PARTIALPASTE_COMPOSITIONGROUP;Configurações de composição
PARTIALPASTE_CROP;Cortar
PARTIALPASTE_DARKFRAMEAUTOSELECT;Auto-seleção de quadro escuro
PARTIALPASTE_DARKFRAMEFILE;Arquivo de quadro escuro
-PARTIALPASTE_DEFRINGE;Defeito
+PARTIALPASTE_DEFRINGE;Defringe
PARTIALPASTE_DETAILGROUP;Configurações de detalhes
PARTIALPASTE_DIALOGLABEL;Perfil de processamento de colagem parcial
PARTIALPASTE_DIRPYRDENOISE;Redução de ruído
@@ -895,7 +910,7 @@ PARTIALPASTE_EVERYTHING;Tudo
PARTIALPASTE_EXIFCHANGES;Exif
PARTIALPASTE_EXPOSURE;Exposição
PARTIALPASTE_FILMSIMULATION;Simulação de filme
-PARTIALPASTE_FLATFIELDAUTOSELECT;Auto-seleção de campo plano
+PARTIALPASTE_FLATFIELDAUTOSELECT;Seleção automática de campo plano
PARTIALPASTE_FLATFIELDBLURRADIUS;Raio de desfoque de campo plano
PARTIALPASTE_FLATFIELDBLURTYPE;Tipo de desfoque de campo plano
PARTIALPASTE_FLATFIELDCLIPCONTROL;Controle de clipe de campo plano
@@ -936,17 +951,17 @@ PARTIALPASTE_RETINEX;Retinex
PARTIALPASTE_RGBCURVES;Curvas RGB
PARTIALPASTE_ROTATION;Rotação
PARTIALPASTE_SHADOWSHIGHLIGHTS;Sombras/realces
-PARTIALPASTE_SHARPENEDGE;Arestas
+PARTIALPASTE_SHARPENEDGE;Bordas
PARTIALPASTE_SHARPENING;Nitidez (USM/RL)
PARTIALPASTE_SHARPENMICRO;Microcontraste
-PARTIALPASTE_TM_FATTAL;Mapeamento de tom HDR
+PARTIALPASTE_TM_FATTAL;Compressão de Amplitude Dinâmica(DRC)
PARTIALPASTE_VIBRANCE;Vibração
PARTIALPASTE_VIGNETTING;Correção de vinheta
PARTIALPASTE_WHITEBALANCE;Balanço de branco
PREFERENCES_ADD;Adicionar
PREFERENCES_APPLNEXTSTARTUP;é necessário reiniciar
PREFERENCES_AUTLISLOW;Baixo
-PREFERENCES_AUTLISMAX;Max - Média de todos os ladrilhos
+PREFERENCES_AUTLISMAX;Max - Média de todos os mosaicos
PREFERENCES_AUTLISSTD;Alto
PREFERENCES_AUTLISVLOW;Nenhum
PREFERENCES_AUTLOW;Baixo
@@ -982,7 +997,7 @@ PREFERENCES_CURVEBBOXPOS_ABOVE;Acima
PREFERENCES_CURVEBBOXPOS_BELOW;Abaixo
PREFERENCES_CURVEBBOXPOS_LEFT;Esquerda
PREFERENCES_CURVEBBOXPOS_RIGHT;Direita
-PREFERENCES_CUSTPROFBUILD;Construtor de Perfis de Processamento Customizado
+PREFERENCES_CUSTPROFBUILD;Construtor de Perfis de Processamento Personalizado
PREFERENCES_CUSTPROFBUILDHINT;Arquivo executável (ou script) chamado quando um novo perfil de processamento inicial deve ser gerado para uma imagem.\n\nO caminho do arquivo de comunicação (*.ini estilo, a.k.a. "Arquivo chave") é adicionado como um parâmetro de linha de comando. Ele contém vários parâmetros necessários para os scripts e a imagem Exif para permitir uma geração de perfil de processamento baseada em regras.\n\nATENÇÃO: Precisas usar aspas duplas quando estiver usando caminhos que contenham espaços.
PREFERENCES_CUSTPROFBUILDKEYFORMAT;Formato de chaves
PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nome
@@ -1041,7 +1056,7 @@ PREFERENCES_GREYSC18;Yb=18 CIE L#50
PREFERENCES_GREYSCA;Automático
PREFERENCES_HISTOGRAMPOSITIONLEFT;Histograma no painel esquerdo
PREFERENCES_HISTOGRAMWORKING;Use o perfil de trabalho para o histograma principal e o Navegador
-PREFERENCES_HISTOGRAM_TOOLTIP;Se ativado, o perfil de trabalho é usado para renderizar o histograma principal e o painel Navegador, caso contrário, o perfil de saída corrigido por gama é usado.
+PREFERENCES_HISTOGRAM_TOOLTIP;Se ativado, o perfil de trabalho é usado para renderizar o histograma principal e o painel Navegador, caso contrário, o perfil de saída corrigido por gamma é usado.
PREFERENCES_HLTHRESHOLD;Limite para realces recortados
PREFERENCES_ICCDIR;Diretório contendo perfis de cores
PREFERENCES_IMG_RELOAD_NEEDED;Essas alterações requerem que a imagem seja recarregada (ou que uma nova imagem seja aberta) para terem efeito.
@@ -1059,9 +1074,9 @@ PREFERENCES_LANGAUTODETECT;Use a linguagem do sistema
PREFERENCES_LEVAUTDN;Nível de remoção de ruídos
PREFERENCES_LEVDN;Tamanho da célula
PREFERENCES_LISS;Auto-suavização multizona
-PREFERENCES_MAX;Maxi (Ladrilho)
+PREFERENCES_MAX;Maxi (Mosaico)
PREFERENCES_MAXRECENTFOLDERS;Número máximo de pastas recentes
-PREFERENCES_MED;Médio (Ladrilho/2)
+PREFERENCES_MED;Médio (Mosaico/2)
PREFERENCES_MENUGROUPEXTPROGS;Grupo "Abrir com"
PREFERENCES_MENUGROUPFILEOPERATIONS;Grupo "operações de Arquivo"
PREFERENCES_MENUGROUPLABEL;Grupo "Etiqueta de cor"
@@ -1118,7 +1133,7 @@ PREFERENCES_RGBDTL_LABEL;Número máximo de threads para Redução de Ruído e N
PREFERENCES_RGBDTL_TOOLTIP;Deixe a configuração em "0" para usar automaticamente o maior número de threads possível. Quanto mais threads rodarem em paralelo, mais rápido será o cálculo. Consulte o RawPedia para requisitos de memória.
PREFERENCES_SAVE_TP_OPEN_NOW;Salvar ferramentas no estado recolhidas/expandididas agora
PREFERENCES_SELECTFONT;Selecione a fonte principal
-PREFERENCES_SELECTFONT_COLPICKER;Selecione a fonte de Cor Picker
+PREFERENCES_SELECTFONT_COLPICKER;Selecione a fonte do Seletor de Cor
PREFERENCES_SELECTLANG;Selecione linguagem
PREFERENCES_SELECTTHEME;Selecione tema
PREFERENCES_SERIALIZE_TIFF_READ;Configurações de leitura tiff
@@ -1129,7 +1144,7 @@ PREFERENCES_SHOWBASICEXIF;Mostrar informações Exif básicas
PREFERENCES_SHOWDATETIME;Mostrar data e hora
PREFERENCES_SHOWEXPOSURECOMPENSATION;Acrescentar compensação de exposição
PREFERENCES_SHOWFILMSTRIPTOOLBAR;Mostrar barra de ferramentas de diapositivos
-PREFERENCES_SHTHRESHOLD;Limiar para sombras recortadas
+PREFERENCES_SHTHRESHOLD;Limite para sombras recortadas
PREFERENCES_SIMPLAUT;Modo de ferramenta
PREFERENCES_SINGLETAB;Modo de Aba de Editor Único
PREFERENCES_SINGLETABVERTAB;Editor de Aba Única, Abas verticais
@@ -1153,7 +1168,7 @@ PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Imagem para mostrar
PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Renderização raw neutra
PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;JPEG incorporado se tamanho completo, raw neutro caso contrário
PREFERENCES_TIMAX;Alto
-PREFERENCES_TINB;Número de ladrilhos
+PREFERENCES_TINB;Número de mosaicos
PREFERENCES_TISTD;Padrão
PREFERENCES_TP_LABEL;Painel de ferramentas:
PREFERENCES_TP_USEICONORTEXT;Use ícones de guias em vez de texto
@@ -1204,6 +1219,14 @@ QINFO_HDR;HDR / %2 quadro(s)
QINFO_ISO;ISO
QINFO_NOEXIF;Dados exif não disponíveis.
QINFO_PIXELSHIFT;Mudança de Pixel / %2 quadro(s)
+SAMPLEFORMAT_0;Formato de dados desconhecido
+SAMPLEFORMAT_1;8 bits sem assinatura
+SAMPLEFORMAT_2;16-bits sem assinatura
+SAMPLEFORMAT_4;24-bits LogLuv
+SAMPLEFORMAT_8;32-bits LogLuv
+SAMPLEFORMAT_16;16-bits ponto flutante
+SAMPLEFORMAT_32;24-bits ponto flutuante
+SAMPLEFORMAT_64;32-bits ponto flutuante
SAVEDLG_AUTOSUFFIX;Adicionar automaticamente um sufixo se o arquivo já existir
SAVEDLG_FILEFORMAT;Formato de arquivo
SAVEDLG_FORCEFORMATOPTS;Forçar opções de salvar
@@ -1219,985 +1242,991 @@ SAVEDLG_SUBSAMP_2;Balanceado
SAVEDLG_SUBSAMP_3;Qualidade superior
SAVEDLG_SUBSAMP_TOOLTIP;Compressão superior:\nJ:a:b 4:2:0\nh/v 2/2\nCroma reduzido pela metade na horizontal e na vertical.\n\nBalanceado:\nJ:a:b 4:2:2\nh/v 2/1\nCroma reduzido pela metade na horizontal.\n\nQualidade superior:\nJ:a:b 4:4:4\nh/v 1/1\nSem subamostragem de croma.
SAVEDLG_TIFFUNCOMPRESSED;TIFF não comprimido
+SAVEDLG_WARNFILENAME;Arquivo será nomeado
+SHCSELECTOR_TOOLTIP;Clique com o botão direito do mouse para restaurar a posição desses 3 controles deslizantes.
+SOFTPROOF_GAMUTCHECK_TOOLTIP;Realce pixels com cores fora do gamut em relação a:\n- o perfil da impressora, se um estiver definido e soft-proofing estiver ativado,\n- o perfil de saída, se um perfil de impressora não estiver definido e soft-proofing estiver ativado,\n- o perfil do monitor, se o soft-proofing estiver desativado.
+SOFTPROOF_TOOLTIP;Soft-proofing simula a aparência da imagem:\n- quando impresso, se um perfil de impressora estiver definido em Preferências > Gerenciamento de Cor,\n- quando visualizado num monitor que usa o perfil de saída atual, se um perfil de impressora não estiver definido.
+THRESHOLDSELECTOR_B;Inferior
+THRESHOLDSELECTOR_BL;Inferior esquerdo
+THRESHOLDSELECTOR_BR;Inferior direito
+THRESHOLDSELECTOR_HINT;Segure a Shift tecla para mover pontos de controle individual.
+THRESHOLDSELECTOR_T;Superior
+THRESHOLDSELECTOR_TL;Superior esquerdo
+THRESHOLDSELECTOR_TR;Superior direito
+TOOLBAR_TOOLTIP_COLORPICKER;Seletor de Cores com Trava\n\nQuando ativado:\nClique na pré-visualização com o botão esquerdo do mouse para adicionar um seletor de cores\nArraste-o enquanto pressiona o botão esquerdo do mouse\nExclua o seletor de cores com um clique com o botão direito do mouse\nExclua todos os seletores de cores com Shift + clique com o botão direito do mouse\nClique com o botão direito do mouse em qualquer seletor de cores para voltar para a ferramenta de Mão
+TOOLBAR_TOOLTIP_CROP;Cortar seleção.\nAtalho: c\nMover a área de corte usando Shift-arrastar mouse
+TOOLBAR_TOOLTIP_HAND;Ferramenta de mão.\nAtalho: h
+TOOLBAR_TOOLTIP_STRAIGHTEN;Endireitar / rotação fina.\nAtalho: s\n\nIndique a vertical ou horizontal, desenhando uma linha guia sobre a visualização da imagem. O ângulo de rotação será mostrado ao lado da linha da guia. O centro de rotação é o centro geométrico da imagem.
+TOOLBAR_TOOLTIP_WB;Balanço de branco no local.\nAtalho: w
+TP_BWMIX_ALGO;Algorítimo OYCPM
+TP_BWMIX_ALGO_LI;Linear
+TP_BWMIX_ALGO_SP;Efeitos especiais
+TP_BWMIX_ALGO_TOOLTIP;Linear: irá produzir uma normal linear reação.\nproduzirá efeitos especiais misturando canais não linearmente.
+TP_BWMIX_AUTOCH;Automático
+TP_BWMIX_AUTOCH_TIP;Calcular valores otimizando o Misturador de Canais.
+TP_BWMIX_CC_ENABLED;Ajustar cor complementar
+TP_BWMIX_CC_TOOLTIP;Ative para permitir o ajuste automático de cores complementares no modo ROYGCBPM.
+TP_BWMIX_CHANNEL;Equalizador de Luminância
+TP_BWMIX_CURVEEDITOR1;Curva 'antes'
+TP_BWMIX_CURVEEDITOR2;Curva 'depois'
+TP_BWMIX_CURVEEDITOR_AFTER_TOOLTIP;Curva de tom, depois B&W conversão, no final do tratamento.
+TP_BWMIX_CURVEEDITOR_BEFORE_TOOLTIP;Curva de tom, pouco antes B&W conversão.\nPode levar em conta os componentes de cor.
+TP_BWMIX_CURVEEDITOR_LH_TOOLTIP;Luminância de acordo com a matiz L=f(H).\nPreste atenção aos valores extremos, pois eles podem causar artefatos.
+TP_BWMIX_FILTER;Filtro de Cores
+TP_BWMIX_FILTER_BLUE;Azul
+TP_BWMIX_FILTER_BLUEGREEN;Azul-Verde
+TP_BWMIX_FILTER_GREEN;Verde
+TP_BWMIX_FILTER_GREENYELLOW;Verde-Amarelo
+TP_BWMIX_FILTER_NONE;Nenhum
+TP_BWMIX_FILTER_PURPLE;Roxa
+TP_BWMIX_FILTER_RED;Vermelho
+TP_BWMIX_FILTER_REDYELLOW;Vermelho-Amarelo
+TP_BWMIX_FILTER_TOOLTIP;O filtro de cores simula fotos tiradas com um filtro colorido colocado na frente da lente. Filtros coloridos reduzem a transmissão de faixas de cores específicas e, portanto, afetam sua claridade. Por exemplo, um filtro vermelho escurece o céu azul.
+TP_BWMIX_FILTER_YELLOW;Amarelo
+TP_BWMIX_GAMMA;Correção de Gamma
+TP_BWMIX_GAM_TOOLTIP;Corrigir gamma para cada canal RGB.
+TP_BWMIX_LABEL;Preto e Branco
+TP_BWMIX_MET;Método
+TP_BWMIX_MET_CHANMIX;Misturador de Canais
+TP_BWMIX_MET_DESAT;Dessaturação
+TP_BWMIX_MET_LUMEQUAL;Equalizador de Luminância
+TP_BWMIX_MIXC;Misturador
+TP_BWMIX_NEUTRAL;Restabelecer misturador
+TP_BWMIX_NEUTRAL_TIP;Restaurar todos os valores (Filtro de Cores, Misturador de Canais) para o padrão.
+TP_BWMIX_RGBLABEL;R: %1%% G: %2%% B: %3%% Total: %4%%
+TP_BWMIX_RGBLABEL_HINT;Fatores finais do RGB que cuidam de todas as opções do misturador.\n"Total" exibe a soma dos valores RGB:\n- sempre 100% no modo relativo\n- mais alto (mais claro) ou mais baixo (mais escuro) que 100% no modo absoluto.
+TP_BWMIX_RGB_TOOLTIP;Misture os canais RGB. Use predefinições para orientação.\nPreste atenção aos valores negativos que podem causar artefatos ou comportamento errático.
+TP_BWMIX_SETTING;Predefinições
+TP_BWMIX_SETTING_TOOLTIP;Predefinições diferentes (filme, paisagem, etc.) ou configurações manuais do Misturador de Canais.
+TP_BWMIX_SET_HIGHCONTAST;Alto contraste
+TP_BWMIX_SET_HIGHSENSIT;Alta sensibilidade
+TP_BWMIX_SET_HYPERPANCHRO;Hiper Pancromático
+TP_BWMIX_SET_INFRARED;Infravermelho
+TP_BWMIX_SET_LANDSCAPE;Paisagem
+TP_BWMIX_SET_LOWSENSIT;Baixa sensibilidade
+TP_BWMIX_SET_LUMINANCE;Luminância
+TP_BWMIX_SET_NORMCONTAST;Contraste Normal
+TP_BWMIX_SET_ORTHOCHRO;Ortocromático
+TP_BWMIX_SET_PANCHRO;Pancromático
+TP_BWMIX_SET_PORTRAIT;Retrato
+TP_BWMIX_SET_RGBABS;RGB Aboluto
+TP_BWMIX_SET_RGBREL;RGB Relativo
+TP_BWMIX_SET_ROYGCBPMABS;ROYGCBPM Aboluto
+TP_BWMIX_SET_ROYGCBPMREL;ROYGCBPM Relativo
+TP_BWMIX_TCMODE_FILMLIKE;B&W Gostar Filme
+TP_BWMIX_TCMODE_SATANDVALBLENDING;B&W Saturação e mistura de valores
+TP_BWMIX_TCMODE_STANDARD;B&W Padrão
+TP_BWMIX_TCMODE_WEIGHTEDSTD;B&W Padrão Ponderado
+TP_BWMIX_VAL;L
+TP_CACORRECTION_BLUE;Azul
+TP_CACORRECTION_LABEL;Correção de Aberração Cromática
+TP_CACORRECTION_RED;Vermelho
+TP_CBDL_AFT;Preto-e-Branco Depois
+TP_CBDL_BEF;Preto-e-Branco Antes
+TP_CBDL_METHOD;Processo localizado
+TP_CBDL_METHOD_TOOLTIP;Escolha se a ferramenta de Contraste por Níveis de Detalhe deve ser posicionada após a ferramenta de Preto-e-Branco, que funciona no espaço L*a*b*, ou antes dele, que funciona no espaço RGB.
+TP_CHMIXER_BLUE;Canal azul
+TP_CHMIXER_GREEN;Canal verde
+TP_CHMIXER_LABEL;Misturador de canais
+TP_CHMIXER_RED;Canal vermelho
+TP_CHROMATABERR_LABEL;Aberração Cromática
+TP_COARSETRAF_TOOLTIP_HFLIP;Girar horizontalmente.
+TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotacione à esquerda.\n\nAtalhos:\n[ - Modo de Guias do Editor Múltiplo,\nAlt-[ - Modo de Guia do Editor Único.
+TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotacione à direita.\n\nAtalhos:\n] - Modo de Guias do Editor Múltiplo,\nAlt-] - Modo de Guia do Editor Único.
+TP_COARSETRAF_TOOLTIP_VFLIP;Girar verticalmente.
+TP_COLORAPP_ADAPTSCENE;Luminância absoluta da cena
+TP_COLORAPP_ADAPTSCENE_TOOLTIP;Luminância absoluta do ambiente da cena (cd/m²).\n1) Calculada a partir dos dados Exif:\nVelocidade do obturador - velocidade ISO - número F - correção de exposição da câmera.\n2) Calculado a partir do ponto branco raw e do controle deslizante de Compensação de Exposição do RT.
+TP_COLORAPP_ADAPTVIEWING;Visualizando luminância absoluta (cd/m²)
+TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Luminância absoluta do ambiente de visualização\n(usualmente 16cd/m²).
+TP_COLORAPP_ADAP_AUTO_TOOLTIP;Se a caixa de seleção estiver marcada (recommendado) RawTherapee calcula um valor ótimo a partir dos dados Exif.\nPara definir o valor manualmente, desmarque a caixa de seleção primeiro.
+TP_COLORAPP_ALGO;Algorimo
+TP_COLORAPP_ALGO_ALL;Tudo
+TP_COLORAPP_ALGO_JC;Claridade + Croma (JC)
+TP_COLORAPP_ALGO_JS;Claridade + Saturação (JS)
+TP_COLORAPP_ALGO_QM;Brilho + Colorido (QM)
+TP_COLORAPP_ALGO_TOOLTIP;Permite escolher entre subconjuntos de parâmetros ou todos os parâmetros.
+TP_COLORAPP_BADPIXSL;Filtro de pixel quente/ruim
+TP_COLORAPP_BADPIXSL_TOOLTIP;Supressão de pixels quentes/ruins (cores vivas).\n0 = Sem efeito\n1 = Mediano\n2 = Gaussian.\nAlternativamente, ajuste a imagem para evitar sombras muito escuras.\n\nEsses artefatos são devido a limitações do CIECAM02.
+TP_COLORAPP_BRIGHT;Brilho (Q)
+TP_COLORAPP_BRIGHT_TOOLTIP;O brilho no CIECAM02 leva em consideração a luminosidade do branco e difere do L*a*b* e do brilho RGB.
+TP_COLORAPP_CHROMA;Croma (C)
+TP_COLORAPP_CHROMA_M;Colorido (M)
+TP_COLORAPP_CHROMA_M_TOOLTIP;O colorido no CIECAM02 difere de L*a*b* e do colorido do RGB.
+TP_COLORAPP_CHROMA_S;Saturação (S)
+TP_COLORAPP_CHROMA_S_TOOLTIP;A saturação no CIECAM02 difere de L*a*b* e da saturação do RGB.
+TP_COLORAPP_CHROMA_TOOLTIP;Croma no CIECAM02 difere de L*a*b* e da croma no RGB.
+TP_COLORAPP_CIECAT_DEGREE;Adaptação CAT02
+TP_COLORAPP_CONTRAST;Contraste (J)
+TP_COLORAPP_CONTRAST_Q;Contraste (Q)
+TP_COLORAPP_CONTRAST_Q_TOOLTIP;Difere de L*a*b* e do contraste no RGB.
+TP_COLORAPP_CONTRAST_TOOLTIP;Difere de L*a*b* e do contraste no RGB.
+TP_COLORAPP_CURVEEDITOR1;Curva de tom 1
+TP_COLORAPP_CURVEEDITOR1_TOOLTIP;Mostra o histograma de L* (L*a*b*) antes de CIECAM02.\nSe a caixa de seleção "Mostrar histogramas de saída do CIECAM02 em curvas" estiver ativada, mostra o histograma de J ou Q depois de CIECAM02.\n\nJ e Q não são mostrados no painel principal do histograma.\n\nPara a saída final, consulte o painel principal do histograma.
+TP_COLORAPP_CURVEEDITOR2;Curva de tom 2
+TP_COLORAPP_CURVEEDITOR2_TOOLTIP;O mesmo uso da segunda curva de tons de exposição.
+TP_COLORAPP_CURVEEDITOR3;Curva de cor
+TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Ajustar croma, saturação ou colorido.\n\nMostra o histograma da cromaticidade (L*a*b*) antes de CIECAM02.\nSe a caixa de seleção "Mostrar histogramas de saída do CIECAM02 em curvas" estiver ativada, mostra o histograma de C, s ou M depois de CIECAM02.\n\nC, s e M não são mostrados no painel principal do histograma.\nPara a saída final, consulte o painel principal do histograma.
+TP_COLORAPP_DATACIE;Histogramas de saída em curvas do CIECAM02
+TP_COLORAPP_DATACIE_TOOLTIP;Quando ativado, os histogramas em curvas do CIECAM02 mostram valores/intervalos aproximados para J ou Q, e C, s ou M após os ajustes do CIECAM02.\nEsta seleção não afeta o painel principal do histograma.\n\nQuando desativado, os histogramas em curvas do CIECAM02 mostram L*a*b* valores antes dos ajustes do CIECAM02.
+TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Se a caixa de seleção estiver marcada (recomendado), RawTherapee calcula um valor ótimo, que será usado pelo CAT02, e também para todo o CIECAM02.\nPara definir o valor manualmente, primeiro desmarque a caixa de seleção (valores acima de 65 são recomendados).
+TP_COLORAPP_DEGREE_TOOLTIP;Quantidade de Adaptação Cromática CIE Transformar 2002.
+TP_COLORAPP_FREE;Temp+verde livre + CAT02 + [saída]
+TP_COLORAPP_GAMUT;Controle Gamut (L*a*b*)
+TP_COLORAPP_GAMUT_TOOLTIP;Permitir controle gamut no modo L*a*b*.
+TP_COLORAPP_HUE;Matiz (h)
+TP_COLORAPP_HUE_TOOLTIP;Matiz (h) - ângulo entre 0° e 360°.
+TP_COLORAPP_LABEL;Modelo de Aparência de Cor CIE 2002
+TP_COLORAPP_LABEL_CAM02;Ajustes de Imagem
+TP_COLORAPP_LABEL_SCENE;Condições de Cena
+TP_COLORAPP_LABEL_VIEWING;Condições de Visualização
+TP_COLORAPP_LIGHT;Claridade (J)
+TP_COLORAPP_LIGHT_TOOLTIP;Claridade no CIECAM02 difere de L*a*b* e da claridade em RGB.
+TP_COLORAPP_MODEL;Modelo de Ponto Branco
+TP_COLORAPP_MODEL_TOOLTIP;Modelo de Ponto Branco.\n\nWB [RT] + [saída]: O balanço de branco do RT é usado para a cena, CIECAM02 está definido para D50, e o balanço de branco do dispositivo de saída é definido em Condições de Visualização.\n\nWB [RT+CAT02] + [saída]: As configurações de balanço de branco do RT são usadas pelo CAT02 e o balanço de branco do dispositivo de saída é definido em Condições de Visualização.\n\nTemp+verde livre + CAT02 + [saída]: temp e verde são selecionados pelo usuário, o balanço de branco do dispositivo de saída é definido em Condições de Visualização.
+TP_COLORAPP_NEUTRAL;Restaurar
+TP_COLORAPP_NEUTRAL_TIP;Restaurar todas as caixas de seleção e curvas dos controles deslizantes para seus valores padrão
+TP_COLORAPP_RSTPRO;Proteção vermelho e de tons de pele
+TP_COLORAPP_RSTPRO_TOOLTIP;Vermelho & proteção de tons de pele afeta os controles deslizantes e as curvas.
+TP_COLORAPP_SHARPCIE;--sem uso--
+TP_COLORAPP_SHARPCIE_TOOLTIP;--sem uso--
+TP_COLORAPP_SURROUND;Borda
+TP_COLORAPP_SURROUND_AVER;Média
+TP_COLORAPP_SURROUND_DARK;Escuro
+TP_COLORAPP_SURROUND_DIM;Sombrio
+TP_COLORAPP_SURROUND_EXDARK;Extremamente Escuro (Camada de corte)
+TP_COLORAPP_SURROUND_TOOLTIP;Altera tons e cores de acordo com as condições de visualização do dispositivo de saída.\n\nMédia: Ambiente de luz médio (padrão). A imagem não vai mudar.\n\nSombrio: Ambiente sombrio (TV). A imagem ficará ligeiramente escura.\n\nEscuro: Ambiente escuro (projetor). A imagem ficará mais escura.\n\nExtremamente Escuro: Ambiente extremamente escuro (camada de corte). A imagem ficará muito escura.
+TP_COLORAPP_SURSOURCE;Borda escura
+TP_COLORAPP_SURSOURCE_TOOLTIP;Pode ser usado se a imagem tiver uma borda escura.
+TP_COLORAPP_TCMODE_BRIGHTNESS;Brilho
+TP_COLORAPP_TCMODE_CHROMA;Croma
+TP_COLORAPP_TCMODE_COLORF;Colorido
+TP_COLORAPP_TCMODE_LABEL1;Modo de curva 1
+TP_COLORAPP_TCMODE_LABEL2;Modo de curva 2
+TP_COLORAPP_TCMODE_LABEL3;Modo de croma da curva
+TP_COLORAPP_TCMODE_LIGHTNESS;Claridade
+TP_COLORAPP_TCMODE_SATUR;Saturação
+TP_COLORAPP_TEMP_TOOLTIP;Para selecionar um iluminante, defina sempre Matiz=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504
+TP_COLORAPP_TONECIE;Mapeamento de tom usando CIECAM02
+TP_COLORAPP_TONECIE_TOOLTIP;Se esta opção estiver desativada, o mapeamento de tom é feito no espaço L*a*b*.\nSe esta opção estiver habilitada, o mapeamento de tom é feito usando CIECAM02.\nA ferramenta de Mapeamento de Tom deve estar ativada para que esta configuração tenha efeito.
+TP_COLORAPP_WBCAM;WB [RT+CAT02] + [saída]
+TP_COLORAPP_WBRT;WB [RT] + [saída]
+TP_COLORAPP_YB;Yb% (média luminância)
+TP_COLORAPP_YBSCENE;Yb% (média luminância)
+TP_COLORAPP_YBSCENE_TOOLTIP;Se "auto" estiver ativado, Yb é calculado a partir do valor médio da luminância real da imagem
+TP_COLORTONING_AB;o C/L
+TP_COLORTONING_AUTOSAT;Automático
+TP_COLORTONING_BALANCE;Balanço
+TP_COLORTONING_BY;o C/L
+TP_COLORTONING_CHROMAC;Opacidade
+TP_COLORTONING_COLOR;Cor
+TP_COLORTONING_CURVEEDITOR_CL_TOOLTIP;Opacidade de croma em função da luminância oC=f(L)
+TP_COLORTONING_HIGHLIGHT;Realces
+TP_COLORTONING_HUE;Matiz
+TP_COLORTONING_LAB;Mistura L*a*b*
+TP_COLORTONING_LABEL;Tonificação de Cor
+TP_COLORTONING_LABGRID;L*a*b* grade de correção de cores
+TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4
+TP_COLORTONING_LUMA;Luminância
+TP_COLORTONING_LUMAMODE;Preserve a luminância
+TP_COLORTONING_LUMAMODE_TOOLTIP;Se ativado, quando você mudar de cor (vermelho, verde, ciano, azul, etc.) a luminância de cada pixel é preservada.
+TP_COLORTONING_METHOD;Método
+TP_COLORTONING_METHOD_TOOLTIP;"L*a*b* mistura", "Controles deslizantes RGB" e "Curvas RGB" usar mistura de cores interpoladas.\n"Balanço de Cor (Sombras/Meio-tons/Realces)" e "Saturação 2 cores" use cores diretas.\n\nA ferramenta Preto-e-Branco pode ser ativada ao usar qualquer método, que permita a tonificação de cores.
+TP_COLORTONING_MIDTONES;Meio-tons
+TP_COLORTONING_NEUTRAL;Restaurar controles deslizantes
+TP_COLORTONING_NEUTRAL_TIP;Restaurar todos os valores (Sombras, Meio-tons, Realces) para o padrão.
+TP_COLORTONING_OPACITY;Opacidade
+TP_COLORTONING_RGBCURVES;RGB - Curvas
+TP_COLORTONING_RGBSLIDERS;RGB - Controles deslizantes
+TP_COLORTONING_SA;Proteção da Saturação
+TP_COLORTONING_SATURATEDOPACITY;Intensidade
+TP_COLORTONING_SATURATIONTHRESHOLD;Limite
+TP_COLORTONING_SHADOWS;Sombras
+TP_COLORTONING_SPLITCO;Sombras/Meio-tons/Realces
+TP_COLORTONING_SPLITCOCO;Balanço de Cor Sombras/Meio-tons/Realces
+TP_COLORTONING_SPLITLR;Saturação 2 cores
+TP_COLORTONING_STR;Intensidade
+TP_COLORTONING_STRENGTH;Intensidade
+TP_COLORTONING_TWO2;Croma especial '2 cores'
+TP_COLORTONING_TWOALL;Croma especial
+TP_COLORTONING_TWOBY;Especial a* e b*
+TP_COLORTONING_TWOCOLOR_TOOLTIP;Croma padrão:\nResposta linear, a* = b*.\n\nCroma especial:\nResposta linear, a* = b*, mas não ligado - tente sob a diagonal.\n\nEspecial a* e b*:\nResposta linear não ligada com curvas separadas para a* e b*. Destinado a efeitos especiais.\n\nCroma espcial 2 cores:\nMais previsível.
+TP_COLORTONING_TWOSTD;Croma padrão
+TP_CROP_FIXRATIO;Taxa de bloqueio
+TP_CROP_GTDIAGONALS;Regra das Diagonais
+TP_CROP_GTEPASSPORT;Passaporte Biométrico
+TP_CROP_GTFRAME;Quadro
+TP_CROP_GTGRID;Grade
+TP_CROP_GTHARMMEANS;Meios Harmônicos
+TP_CROP_GTNONE;Nenhum
+TP_CROP_GTRULETHIRDS;Regra dos Terços
+TP_CROP_GTTRIANGLE1;Triângulos Dourados 1
+TP_CROP_GTTRIANGLE2;Triângulos Dourados 2
+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
+TP_DARKFRAME_AUTOSELECT;Auto-seleção
+TP_DARKFRAME_LABEL;Quadro Escuro
+TP_DEFRINGE_LABEL;Defringe
+TP_DEFRINGE_RADIUS;Raio
+TP_DEFRINGE_THRESHOLD;Limite
+TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zonas
+TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Global automático
+TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Tente avaliar o ruído de croma\nTenha cuidado, esse cálculo é mediano e é bastante subjetivo !
+TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Crominância - Azul-Amarelo
+TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Curva de crominância
+TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Aumentar (multiplicar) o valor de todos os controles deslizantes de crominância.\nEsta curva permite ajustar a intensidade da redução de ruído cromático em função da cromaticidade, por exemplo, para aumentar a ação em áreas de baixa saturação e diminuí-la nas de alta saturação.
+TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Crominância
+TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual
+TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Crominância - Mestre
+TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Método
+TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nAtua na imagem completa.\nControlas as configurações de redução de ruído manualmente.\n\nGlobal automático\nAtua na imagem completa.\n9 zonas são usadas para calcular uma configuração global de redução de ruído de crominância.\n\nVisualização\nAtua em toda a imagem.\nA parte da imagem visível na visualização é usada para calcular as configurações globais de redução de ruído de crominância.
+TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nAtua na imagem completa.\nControlas as configurações de redução de ruído manualmente.\n\nGlobal automático\nAtua na imagem completa.\n9 zonas são usadas para calcular uma configuração global de redução de ruído de crominância.\n\nMulti-zonas automáticas\nSem pré-visualização - funciona apenas durante a gravação, usando o método "Pré-visualização" para ajustar o tamanho do mosaico e o centro com o tamanho da visualização e o centro, podes ter uma idéia dos resultados esperados.\nA imagem é dividida em mosaicos (cerca de 10 a 70, dependendo do tamanho da imagem) e cada mosaico recebe suas próprias configurações de redução de ruído de crominância.\n\nPré-visualização\nAtua em toda a imagem.\nA parte da imagem visível na visualização é usada para calcular as configurações globais de redução de ruído de crominância.
+TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Pré-visualização multi-zonas
+TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Pré-visualização
+TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Exibe os níveis de ruído remanescentes da parte da imagem visível na visualização após wavelet.\n\n>300 Muito ruidoso\n100-300 Ruidoso\n50-100 Pouco ruidoso\n<50 Ruído muito baixo\n\nCuidado, os valores serão diferentes entre RGB e o modo L*a*b*. Os valores RGB são menos precisos porque o modo RGB não separa completamente luminância e crominância.
+TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Pré-visualização tamanho=%1, Centro: Px=%2 Py=%3
+TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Pré-visualização ruído: Médio=%1 Alto=%2
+TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Pré-visualização ruído: Médio= - Alto= -
+TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Mosaico tamanho=%1, Centro: Tx=%2 Ty=%3
+TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Crominância - Vermelho-Verde
+TP_DIRPYRDENOISE_ENH;Modo avançado
+TP_DIRPYRDENOISE_ENH_TOOLTIP;Aumenta a qualidade da redução de ruído em detrimento de um aumento de 20% no tempo de processamento.
+TP_DIRPYRDENOISE_LABEL;Redução de Ruído
+TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Controle de luminância
+TP_DIRPYRDENOISE_LUMINANCE_CURVE;Curva de luminância
+TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Recuperação de detalhes
+TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminância
+TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminância
+TP_DIRPYRDENOISE_MAIN_COLORSPACE;Espaço de cor
+TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b*
+TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB
+TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Para imagens raw, os métodos RGB ou L*a*b* podem ser usados.\n\nPara imagens não-raw, o método L*a*b* será usado, independentemente da seleção.
+TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma
+TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varia a intensidade da redução de ruído em toda a gama de tons. Valores menores atuam sobre sombras, enquanto valores maiores tem efeito sobre tons mais claros.
+TP_DIRPYRDENOISE_MAIN_MODE;Modo
+TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressivo
+TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservador
+TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservador" preserva padrões de croma de baixa frequência, enquanto "agressivo" os oblitera.
+TP_DIRPYRDENOISE_MEDIAN_METHOD;Método mediano
+TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Apenas Croma
+TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b*
+TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Filtro Mediano
+TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Apenas Luminância
+TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB
+TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;Ao usar os métodos "Apenas Luminância" e "L*a*b*", a filtragem mediana será realizada logo após a etapa wavelet no pipeline de redução de ruído.\nAo usar o modo "RGB", ele será executado no final do pipeline de redução de ruído.
+TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Pesada L* (pequeno) + a*b* (normal)
+TP_DIRPYRDENOISE_MEDIAN_PASSES;Iterações medianas
+TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;A aplicação de três iterações de filtro mediano com tamanho de janela 3×3 frequentemente dá resultados melhores do que usar uma iteração de filtro mediano com tamanho de janela 7×7.
+TP_DIRPYRDENOISE_MEDIAN_TYPE;Tipo mediano
+TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Aplique um filtro mediano do tamanho da janela. Quanto maior o tamanho da janela, mais tempo demora.\n\n3×3 suave: trata 5 pixels numa janela de 3×3 pixels.\n3×3: trata 9 pixels numa janela de 3×3 pixels.\n5×5 suave: trata 13 pixels nuam janela de 5×5 pixels.\n5×5: trata 25 pixels nuam janela de 5×5 pixels.\n7×7: trata 49 pixels nuam janelas de 7×7 pixels.\n9×9: trata 81 pixels numa janela de 9×9 pixels.\n\nÀs vezes é possível obter uma qualidade mais alta executando várias iterações com um tamanho de janela menor do que uma iteração com uma maior.
+TP_DIRPYRDENOISE_SLI;Controle deslizante
+TP_DIRPYRDENOISE_TYPE_3X3;3×3
+TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 suave
+TP_DIRPYRDENOISE_TYPE_5X5;5×5
+TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 suave
+TP_DIRPYRDENOISE_TYPE_7X7;7×7
+TP_DIRPYRDENOISE_TYPE_9X9;9×9
+TP_DIRPYREQUALIZER_ALGO;Faixa de Cor da Pele
+TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fino: mais próximo das cores da pele, minimizando a ação em outras cores\nLarga: evitar mais artefatos.
+TP_DIRPYREQUALIZER_ARTIF;Reduzir artefatos
+TP_DIRPYREQUALIZER_HUESKIN;Matiz da pele
+TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;Esta pirâmide é para a parte superior, na medida do algoritmo em sua máxima eficiência.\nPara a parte inferior, as zonas de transição.\nSe precisares mover a área significativamente para a esquerda ou para a direita - ou se houver artefatos: o Balanço de branco está incorreto\nPodes reduzir um pouco a zona para prevenirr que o resto da imagem seja afetado.
+TP_DIRPYREQUALIZER_LABEL;Contraste pelos Níveis de Detalhe
+TP_DIRPYREQUALIZER_LUMACOARSEST;Grosseiro
+TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contraste -
+TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contraste +
+TP_DIRPYREQUALIZER_LUMAFINEST;Refinado
+TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutro
+TP_DIRPYREQUALIZER_SKIN;Pele segmentação/proteção
+TP_DIRPYREQUALIZER_SKIN_TOOLTIP;São segmentados em -100 tons de pele.\nEm 0 todos os tons são tratados igualmente.\nEm +100 tons de pele são protegidos enquanto todos os outros tons são afetados.
+TP_DIRPYREQUALIZER_THRESHOLD;Limite
+TP_DIRPYREQUALIZER_TOOLTIP;Tenta reduzir artefatos nas transições entre as cores da pele (matiz, croma, luma) e o restante da imagem.
+TP_DISTORTION_AMOUNT;Montante
+TP_DISTORTION_AUTO_TIP;Corrige automaticamente a distorção da lente em arquivos RAW, combinando-a com a imagem JPEG incorporada, caso exista, e tenha sua distorção de lente corrigida automaticamente pela câmera.
+TP_DISTORTION_LABEL;Correção de Distorção
+TP_EPD_EDGESTOPPING;Borda parando
+TP_EPD_GAMMA;Gamma
+TP_EPD_LABEL;Mapeamento de Tom
+TP_EPD_REWEIGHTINGITERATES;Reponderando iterações
+TP_EPD_SCALE;Escala
+TP_EPD_STRENGTH;Intensidade
+TP_EPD_TOOLTIP;O mapeamento de tom é possível no modo L*a*b* (padão) e no modo CIECAM02.\n\nQuando no modo L*a*b*, o mapeamento de tom também pode ser usado na imagem residual da ferramenta de Níveis de Wavelet.\n\nPara ativar o modo de mapeamento de tom CIECAM02, habilite as seguintes configurações:\n1. CIECAM02\n2. Algorítimo = "Brilho + Colorido (QM)"\n3. "Mapeamento de tom usando o brilho do CIECAM02 (Q)"
+TP_EXPOSURE_AUTOLEVELS;Níveis Automáticos
+TP_EXPOSURE_AUTOLEVELS_TIP;Alterna a execução dos Níveis Automáticos para definir automaticamente os valores do controle deslizante de Exposição baseado numa análise de imagem.\nHabilita a Reconstrução de Realce se necessário.
+TP_EXPOSURE_BLACKLEVEL;Preto
+TP_EXPOSURE_BRIGHTNESS;Claridade
+TP_EXPOSURE_CLAMPOOG;Recortar cores fora da gama
+TP_EXPOSURE_CLIP;Recortar %
+TP_EXPOSURE_CLIP_TIP;A fração de pixels a ser recortada na operação Níveis Automáticos.
+TP_EXPOSURE_COMPRHIGHLIGHTS;Compressão de realce
+TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD;Limite de compressão de realce
+TP_EXPOSURE_COMPRSHADOWS;Compressão de sombra
+TP_EXPOSURE_CONTRAST;Contraste
+TP_EXPOSURE_CURVEEDITOR1;Curva de tom 1
+TP_EXPOSURE_CURVEEDITOR2;Curva de tom 2
+TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;Por favor, consulte o artigo no RawPedia "Exposição > Curvas de Tom" para aprender como obter os melhores resultados usando duas curvas de tom.
+TP_EXPOSURE_EXPCOMP;Compensação de exposição
+TP_EXPOSURE_HISTMATCHING;Curva de Tom Auto-Combinada
+TP_EXPOSURE_HISTMATCHING_TOOLTIP;Ajusta automaticamente controles deslizantes e curvas (exceto compensação de exposição) para corresponder à aparência da miniatura JPEG incorporada.
+TP_EXPOSURE_LABEL;Exposição
+TP_EXPOSURE_SATURATION;Saturação
+TP_EXPOSURE_TCMODE_FILMLIKE;Gostar filme
+TP_EXPOSURE_TCMODE_LABEL1;Modo de curva 1
+TP_EXPOSURE_TCMODE_LABEL2;Modo de curva 2
+TP_EXPOSURE_TCMODE_LUMINANCE;Luminância
+TP_EXPOSURE_TCMODE_PERCEPTUAL;Perceptivo
+TP_EXPOSURE_TCMODE_SATANDVALBLENDING;Saturação e Mistura de Valor
+TP_EXPOSURE_TCMODE_STANDARD;Padrão
+TP_EXPOSURE_TCMODE_WEIGHTEDSTD;Padrão Ponderado
+TP_EXPOS_BLACKPOINT_LABEL;Pontos Pretos Raw
+TP_EXPOS_WHITEPOINT_LABEL;Pontos Brancos Raw
+TP_FILMSIMULATION_LABEL;Simulação de Filme
+TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee está configurado para procurar por imagens Hald CLUT, que são usadas para a ferramenta Simulação de Filme, numa pasta que está demorando para carregar.\nVá para Preferências > Processamento de Imagem > Simulação de Filme\npara ver qual pasta está sendo usada. Deves apontar RawTherapee para uma pasta que contenha apenas imagens Hald CLUT e nada mais, ou para uma pasta vazia, se não quiseres usar a ferramenta Simulação de Filme.\n\nLeia o artigo sobre Simulação de Filme na RawPedia para mais informações.\n\nDesejas cancelar a verificação agora?
+TP_FILMSIMULATION_STRENGTH;Intensidade
+TP_FILMSIMULATION_ZEROCLUTSFOUND;Definir diretório HaldCLUT em Preferências
+TP_FLATFIELD_AUTOSELECT;Seleção automática
+TP_FLATFIELD_BLURRADIUS;Raio de desfoque
+TP_FLATFIELD_BLURTYPE;Tipo de desfoque
+TP_FLATFIELD_BT_AREA;Área
+TP_FLATFIELD_BT_HORIZONTAL;Horizontal
+TP_FLATFIELD_BT_VERTHORIZ;Vertical + Horizontal
+TP_FLATFIELD_BT_VERTICAL;Vertical
+TP_FLATFIELD_CLIPCONTROL;Controle de recorte
+TP_FLATFIELD_CLIPCONTROL_TOOLTIP;O controle de recorte evita realces recortados provocados pela aplicação do campo plano. Se já houver realces recortados antes da aplicação do campo plano, o controle de recorte pode levar à conversão de cores.
+TP_FLATFIELD_LABEL;Campo Plano
+TP_GAMMA_CURV;Gamma
+TP_GAMMA_FREE;Gamma livre
+TP_GAMMA_OUTPUT;Gamma de saída
+TP_GAMMA_SLOP;Declive (linear)
+TP_GENERAL_11SCALE_TOOLTIP;Os efeitos dessa ferramenta só são visíveis ou são precisos numa escala prévia de 1:1.
+TP_GRADIENT_CENTER;Centro
+TP_GRADIENT_CENTER_X;Centro X
+TP_GRADIENT_CENTER_X_TOOLTIP;Deslocar gradiente para a esquerda (valores negativos) ou para a direita (valores positivos).
+TP_GRADIENT_CENTER_Y;Centro Y
+TP_GRADIENT_CENTER_Y_TOOLTIP;Deslocar gradiente para cima (valores negativos) ou para baixo (valores positivos).
+TP_GRADIENT_DEGREE;ângulo
+TP_GRADIENT_DEGREE_TOOLTIP;Ângulo de rotação em graus.
+TP_GRADIENT_FEATHER;Difusão
+TP_GRADIENT_FEATHER_TOOLTIP;Largura do gradiente em porcentagem da diagonal da imagem.
+TP_GRADIENT_LABEL;Filtro Graduado
+TP_GRADIENT_STRENGTH;Intensidade
+TP_GRADIENT_STRENGTH_TOOLTIP;Intensidade do filtro nas paradas.
+TP_HLREC_BLEND;Mistura
+TP_HLREC_CIELAB;Misturando CIELab
+TP_HLREC_COLOR;Propagação de Cor
+TP_HLREC_ENA_TOOLTIP;Pode ser ativado para Níveis Automáticos.
+TP_HLREC_LABEL;Reconstrução de realce
+TP_HLREC_LUMINANCE;Recuperação de Luminância
+TP_HLREC_METHOD;Método:
+TP_HSVEQUALIZER_CHANNEL;Canal
+TP_HSVEQUALIZER_HUE;H
+TP_HSVEQUALIZER_LABEL;Equalizador HSV
+TP_HSVEQUALIZER_SAT;S
+TP_HSVEQUALIZER_VAL;V
+TP_ICM_APPLYBASELINEEXPOSUREOFFSET;Exposição de linha de base
+TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP;Empregue a compensação de exposição da linha de base do DCP incorporado. A configuração só estará disponível se o DCP estiver selecionado como um.
+TP_ICM_APPLYHUESATMAP;Tabela básica
+TP_ICM_APPLYHUESATMAP_TOOLTIP;Empregue a tabela básica DCP incorporada (MatizSatMap). A configuração só estará disponível se o DCP estiver selecionado como um.
+TP_ICM_APPLYLOOKTABLE;Tabela de aparência
+TP_ICM_APPLYLOOKTABLE_TOOLTIP;Empregue a tabela de aparência DCP incorporada. A configuração só estará disponível se o DCP estiver selecionado como um.
+TP_ICM_BLENDCMSMATRIX;Misture os realces do ICC com a matriz
+TP_ICM_BLENDCMSMATRIX_TOOLTIP;Ativar para recuperar realces recortados ao usar perfis ICC baseados em LUT.
+TP_ICM_BPC;Compensação de Ponto Preto
+TP_ICM_DCPILLUMINANT;Iluminante
+TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolado
+TP_ICM_DCPILLUMINANT_TOOLTIP;Selecione qual iluminante DCP incorporado deve ser usado. O padrão é "interpolado", que é uma mistura entre os dois baseado no balanço de branco. A configuração só estará disponível se um DCP de iluminação dupla com suporte de interpolação estiver selecionado.
+TP_ICM_INPUTCAMERA;Câmera padrão
+TP_ICM_INPUTCAMERAICC;Perfil de câmera auto-combinado
+TP_ICM_INPUTCAMERAICC_TOOLTIP;Use os perfis de cores de entrada DCP ou ICC específicos da câmera do RawTherapee. Esses perfis são mais precisos que os matriciais mais simples. Eles não estão disponíveis para todas as câmeras. Esses perfis são armazenados nas pastas /iccperfis/entrada e /dcpperfis e são recuperados automaticamente com base no nome do arquivo correspondente ao nome do modelo da câmera.
+TP_ICM_INPUTCAMERA_TOOLTIP;Use uma matriz de cores simples do dcraw, uma versão aprimorada do RawTherapee (a que estiver disponível baseada no modelo da câmera) ou uma incorporada no DNG.
+TP_ICM_INPUTCUSTOM;Personalizado
+TP_ICM_INPUTCUSTOM_TOOLTIP;Selecione seu próprio arquivo de perfil de cores DCP/ICC para a câmera.
+TP_ICM_INPUTDLGLABEL;Selecione o Perfil de entrada DCP/ICC...
+TP_ICM_INPUTEMBEDDED;Use incorporado, se possível
+TP_ICM_INPUTEMBEDDED_TOOLTIP;Use o perfil de cores incorporado em arquivos não-raw.
+TP_ICM_INPUTNONE;Sem perfil
+TP_ICM_INPUTNONE_TOOLTIP;Não use nenhum perfil de cor de entrada.\nUse somente em casos especiais.
+TP_ICM_INPUTPROFILE;Perfil de Entrada
+TP_ICM_LABEL;Gerenciamento de Cor
+TP_ICM_NOICM;No ICM: Saída sRGB
+TP_ICM_OUTPUTPROFILE;Perfil de Saída
+TP_ICM_PROFILEINTENT;Intenção de Renderização
+TP_ICM_SAVEREFERENCE;Salvar Imagem de Referência
+TP_ICM_SAVEREFERENCE_APPLYWB;Aplicar balanço de branco
+TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Geralmente, aplique o balanço de branco ao salvar imagens para criar perfis ICC e não aplique o balanço de branco para criar perfis DCP.
+TP_ICM_SAVEREFERENCE_TOOLTIP;Salve a imagem TIFF linear antes que o perfil de entrada seja aplicado. O resultado pode ser usado para fins de calibração e geração de um perfil de câmera.
+TP_ICM_TONECURVE;Curva de tom
+TP_ICM_TONECURVE_TOOLTIP;Empregue a curva de tom DCP incorporada. A configuração só estará disponível se o DCP selecionado tiver uma curva de tom.
+TP_ICM_WORKINGPROFILE;Perfil de Trabalho
+TP_IMPULSEDENOISE_LABEL;Redução de Ruído por Impulso
+TP_IMPULSEDENOISE_THRESH;Limite
+TP_LABCURVE_AVOIDCOLORSHIFT;Evite mudança de cor
+TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Ajuste as cores no gamut do espaço de cores de trabalho e aplique a correção Munsell.
+TP_LABCURVE_BRIGHTNESS;Claridade
+TP_LABCURVE_CHROMATICITY;Cromaticidade
+TP_LABCURVE_CHROMA_TOOLTIP;Para aplicar tonificação B&W, configure Cromaticidade para -100.
+TP_LABCURVE_CONTRAST;Contraste
+TP_LABCURVE_CURVEEDITOR;Curva de Luminância
+TP_LABCURVE_CURVEEDITOR_A_RANGE1;Verde Saturado
+TP_LABCURVE_CURVEEDITOR_A_RANGE2;Verde Pastel
+TP_LABCURVE_CURVEEDITOR_A_RANGE3;Vermelho Pastel
+TP_LABCURVE_CURVEEDITOR_A_RANGE4;Vermelho Saturado
+TP_LABCURVE_CURVEEDITOR_B_RANGE1;Azul Saturado
+TP_LABCURVE_CURVEEDITOR_B_RANGE2;Azul Pastel
+TP_LABCURVE_CURVEEDITOR_B_RANGE3;Amarelo Pastel
+TP_LABCURVE_CURVEEDITOR_B_RANGE4;Amarelo Saturado
+TP_LABCURVE_CURVEEDITOR_CC;CC
+TP_LABCURVE_CURVEEDITOR_CC_RANGE1;Neutro
+TP_LABCURVE_CURVEEDITOR_CC_RANGE2;Fosco
+TP_LABCURVE_CURVEEDITOR_CC_RANGE3;Pastel
+TP_LABCURVE_CURVEEDITOR_CC_RANGE4;Saturado
+TP_LABCURVE_CURVEEDITOR_CC_TOOLTIP;Cromaticidade de acordo com a cromaticidade C=f(C)
+TP_LABCURVE_CURVEEDITOR_CH;CH
+TP_LABCURVE_CURVEEDITOR_CH_TOOLTIP;Cromaticidade de acordo com a matiz C=f(H)
+TP_LABCURVE_CURVEEDITOR_CL;CL
+TP_LABCURVE_CURVEEDITOR_CL_TOOLTIP;Cromaticidade de acordo com a luminância C=f(L)
+TP_LABCURVE_CURVEEDITOR_HH;HH
+TP_LABCURVE_CURVEEDITOR_HH_TOOLTIP;Matiza de acordo com a matiz H=f(H)
+TP_LABCURVE_CURVEEDITOR_LC;LC
+TP_LABCURVE_CURVEEDITOR_LC_TOOLTIP;Luminância de acordo com a cromaticidade L=f(C)
+TP_LABCURVE_CURVEEDITOR_LH;LH
+TP_LABCURVE_CURVEEDITOR_LH_TOOLTIP;Luminância de acrodo com a matiz L=f(H)
+TP_LABCURVE_CURVEEDITOR_LL_TOOLTIP;Luminância de acorodo com a luminância L=f(L)
+TP_LABCURVE_LABEL;L*a*b* Ajustes
+TP_LABCURVE_LCREDSK;Restringir o LC aos tons vermelho e cor de pele
+TP_LABCURVE_LCREDSK_TIP;Se ativada, a curva LC afeta somente tons vermelhos e cor de pele.\nSe desativado, aplica-se a todos os tons.
+TP_LABCURVE_RSTPROTECTION;Proteção para tons verrmelho e cor de pele
+TP_LABCURVE_RSTPRO_TOOLTIP;Funciona no controle deslizante de cromaticidade e na curva CC.
+TP_LENSGEOM_AUTOCROP;Corte automático
+TP_LENSGEOM_FILL;Preenchimento automático
+TP_LENSGEOM_LABEL;Lente / Geometria
+TP_LENSPROFILE_LABEL;Correção de lente perfilada
+TP_LENSPROFILE_USECA;Correção da aberração cromática
+TP_LENSPROFILE_USEDIST;Correção de distorção
+TP_LENSPROFILE_USEVIGN;Correção de vinheta
+TP_LOCALCONTRAST_AMOUNT;Montante
+TP_LOCALCONTRAST_DARKNESS;Nível de escuridão
+TP_LOCALCONTRAST_LABEL;Contraste Local
+TP_LOCALCONTRAST_LIGHTNESS;Nível de claridade
+TP_LOCALCONTRAST_RADIUS;Raio
+TP_METADATA_EDIT;Aplicar modificações
+TP_METADATA_MODE;Modo de cópia de metadados
+TP_METADATA_STRIP;Remover todos os metadados
+TP_METADATA_TUNNEL;Copiar inalterado
+TP_NEUTRAL;Restaurar
+TP_NEUTRAL_TIP;Restaurar os controles deslizantes de exposição para valores neutros.\nAplica-se aos mesmos controles aplicados aos Níveis Automáticos, independentemente da utilização dos Níveis Automáticos.
+TP_PCVIGNETTE_FEATHER;Difusão
+TP_PCVIGNETTE_FEATHER_TOOLTIP;Difundindo:\n0 = apenas cantos,\n50 = a meio caminho do centro,\n100 = para centrar.
+TP_PCVIGNETTE_LABEL;Filtro de Vinheta
+TP_PCVIGNETTE_ROUNDNESS;Arredondamento
+TP_PCVIGNETTE_ROUNDNESS_TOOLTIP;Arredondamento:\n0 = retângulo,\n50 = elipse ajustada,\n100 = círculo.
+TP_PCVIGNETTE_STRENGTH;Intensidade
+TP_PCVIGNETTE_STRENGTH_TOOLTIP;Intensidade do filtro nas paradas (alcançada nos cantos).
+TP_PERSPECTIVE_HORIZONTAL;Horizontal
+TP_PERSPECTIVE_LABEL;Perspectiva
+TP_PERSPECTIVE_VERTICAL;Vertical
+TP_PFCURVE_CURVEEDITOR_CH;Matiz
+TP_PFCURVE_CURVEEDITOR_CH_TOOLTIP;Controla a Intensidade defringe por cor.\nHigher = more,\nInferior = menos.
+TP_PREPROCESS_DEADPIXFILT;Filtro de pixels mortos
+TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Tenta suprimir os pixels mortos.
+TP_PREPROCESS_GREENEQUIL;Equilíbrio verde
+TP_PREPROCESS_HOTPIXFILT;Filtro de pixel quente
+TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Tenta suprimir os pixels quentes.
+TP_PREPROCESS_LABEL;Pré-processando
+TP_PREPROCESS_LINEDENOISE;Filtro de ruído de linha
+TP_PREPROCESS_LINEDENOISE_DIRECTION;Direção
+TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Ambos
+TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal
+TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal apenas em linhas PDAF
+TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical
+TP_PREPROCESS_NO_FOUND;Nenhum encontrado
+TP_PREPROCESS_PDAFLINESFILTER;Filtro de linhas PDAF
+TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tenta suprimir o ruído de faixas causado por pixels PDAF no sensor, ocorrendo com algumas câmeras mirrorless da Sony em algumas cenas em contraluz com "flare" visível.
+TP_PRSHARPENING_LABEL;Pós-Redimensionamento de Nitidez
+TP_PRSHARPENING_TOOLTIP;Focaliza a imagem após o redimensionamento. Funciona somente quando o método de redimensionamento "Lanczos" é usado. É impossível visualizar os efeitos dessa ferramenta. 35/5000
+TP_RAWCACORR_AUTO;Auto correção
+TP_RAWCACORR_CABLUE;Azul
+TP_RAWCACORR_CARED;Vermelho
+TP_RAWCACORR_CASTR;Intensidade
+TP_RAWEXPOS_BLACKS;Níveis de Preto
+TP_RAWEXPOS_BLACK_0;Verde 1 (guia)
+TP_RAWEXPOS_BLACK_1;Vermelho
+TP_RAWEXPOS_BLACK_2;Azul
+TP_RAWEXPOS_BLACK_3;Verde 2
+TP_RAWEXPOS_BLACK_BLUE;Azul
+TP_RAWEXPOS_BLACK_GREEN;Verde
+TP_RAWEXPOS_BLACK_RED;Vermelho
+TP_RAWEXPOS_LINEAR;Correção de ponto branco
+TP_RAWEXPOS_PRESER;Preservação do realce
+TP_RAWEXPOS_RGB;Vermelho, Verde, Azul
+TP_RAWEXPOS_TWOGREEN;Ligações verdes
+TP_RAW_1PASSMEDIUM;1-Passar (Medio)
+TP_RAW_3PASSBEST;3-Passar (Superior)
+TP_RAW_4PASS;4-Passar
+TP_RAW_AHD;AHD
+TP_RAW_AMAZE;AMaZE
+TP_RAW_AMAZEVNG4;AMaZE+VNG4
+TP_RAW_DCB;DCB
+TP_RAW_DCBENHANCE;Aprimoramento DCB
+TP_RAW_DCBITERATIONS;Número de iterações DCB
+TP_RAW_DMETHOD;Método
+TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
+TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Refinamento Demosaicing...
+TP_RAW_DMETHOD_TOOLTIP;Nota: IGV e LMMSE são dedicados a imagens de ISO alto para auxiliar na redução de ruído sem levar a padrões de confusão, posterização ou aparência desbotada.\nPixel Shift é para arquivos Pentax/Sony Pixel Shift. Ele retorna ao AMaZE para arquivos não Pixel Shift.
+TP_RAW_DUALDEMOSAICCONTRAST;Limite de contraste
+TP_RAW_EAHD;EAHD
+TP_RAW_FALSECOLOR;Etapas de supressão de cores falsas
+TP_RAW_FAST;Rápido
+TP_RAW_HD;Limite
+TP_RAW_HD_TOOLTIP;Valores mais baixos tornam a detecção de pixels quentes/mortos mais agressiva, mas os falsos positivos podem levar a artefatos. Se perceberes algum artefato aparecendo ao habilitar os Filtros de Pixels Quentes/Morto, aumente gradualmente o valor limite até eles desaparecerem.
+TP_RAW_HPHD;HPHD
+TP_RAW_IGV;IGV
+TP_RAW_IMAGENUM;Sub-imagem
+TP_RAW_IMAGENUM_TOOLTIP;Alguns arquivos raw consistem em várias sub-imagens (Pentax/Sony Pixel Shift, Pentax 3-em-1 HDR, Canon Dual Pixel).\n\nUsando qualquer método demosaicing diferente de Pixel Shift, isto seleciona qual sub-imagem é usada.\n\nUsando o método demosaicing do Pixel Shift num Pixel Shift raw, todas as sub-imagens são usadas e isso seleciona qual sub-imagem deve ser usada para as partes móveis.
+TP_RAW_LABEL;Demosaicing
+TP_RAW_LMMSE;LMMSE
+TP_RAW_LMMSEITERATIONS;Etapas de aprimoramento LMMSE
+TP_RAW_LMMSE_TOOLTIP;Adiciona gamma (etapa 1), mediana (etapas 2-4) e refinamento (etapas 5-6) para reduzir artefatos e melhorar a relação sinal-ruído.
+TP_RAW_MONO;Mono
+TP_RAW_NONE;Nenhum (Mostra o padrão do sensor)
+TP_RAW_PIXELSHIFT;Pixel Shift
+TP_RAW_PIXELSHIFTBLUR;Máscara de movimento de desfoque
+TP_RAW_PIXELSHIFTDMETHOD;Método Demosaico para movimento
+TP_RAW_PIXELSHIFTEPERISO;Sensibilidade
+TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;O valor padrão de 0 deve funcionar bem para a base ISO.\nValores mais altos aumentam a sensibilidade da detecção de movimento.\nAltere em pequenas etapas e observe a máscara de movimento enquanto muda.\nAumentar a sensibilidade para imagens subexpostas ou de ISO alto.
+TP_RAW_PIXELSHIFTEQUALBRIGHT;Equaliza o brilho dos quadros
+TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Equaliza por canal
+TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Ativado: Equaliza os canais RGB individualmente.\nDesativado: usa o mesmo fator de equalização para todos os canais.
+TP_RAW_PIXELSHIFTEQUALBRIGHT_TOOLTIP;Equaliza o brilho dos quadros para o brilho do quadro selecionado.\nSe houver áreas superexpostas nos quadros, selecione o quadro mais claro para evitar que a cor magenta seja exposta em áreas superexpostas ou ative a correção de movimento.
+TP_RAW_PIXELSHIFTGREEN;Verifica o canal verde para movimento
+TP_RAW_PIXELSHIFTHOLEFILL;Preenche buracos na máscara de movimento
+TP_RAW_PIXELSHIFTHOLEFILL_TOOLTIP;Preenche buracos na máscara de movimento
+TP_RAW_PIXELSHIFTLMMSE;Usa LMMSE para partes móveis
+TP_RAW_PIXELSHIFTLMMSE_TOOLTIP;Usa LMMSE em vez de AMaZE para áreas de movimento.\nÚtil para imagens com ISO alto.
+TP_RAW_PIXELSHIFTMEDIAN;Usa mediana para partes móveis
+TP_RAW_PIXELSHIFTMEDIAN_TOOLTIP;Use a mediana de todos os quadros em vez do quadro selecionado para regiões com movimento.\nRemove objetos que estão em lugares diferentes em todos os quadros.\nDá efeito de movimento em objetos em movimento lento (sobreposição).
+TP_RAW_PIXELSHIFTMM_AUTO;Automático
+TP_RAW_PIXELSHIFTMM_CUSTOM;Personalizado
+TP_RAW_PIXELSHIFTMM_OFF;Desligado
+TP_RAW_PIXELSHIFTMOTIONMETHOD;Correção de Movimento
+TP_RAW_PIXELSHIFTMOTION_TOOLTIP;0 não há detecção de movimento.\n1 - 99 o movimento será detectado de acordo com este valor. Aumentar o valor para aumentar a taxa de detecção.\n100 o quadro demosaico AMaZE será usado.
+TP_RAW_PIXELSHIFTNONGREENCROSS;Checa os canais vermelho/azul para movimento
+TP_RAW_PIXELSHIFTSHOWMOTION;Mostra máscara de movimento
+TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY;Mostra somente máscara de movimento
+TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY_TOOLTIP;Mostra a máscara de movimento sem a imagem.
+TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Sobrepõe a imagem com uma máscara verde mostrando as regiões com movimento.
+TP_RAW_PIXELSHIFTSIGMA;Raio de desfoque
+TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;TO raio padrão de 1.0 geralmente se encaixa bem para a base ISO.\nAumente o valor para fotos de ISO alto, 5.0 é um bom ponto de partida.\nObserve a máscara de movimento enquanto altera o valor.
+TP_RAW_PIXELSHIFTSMOOTH;Transições suaves
+TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Transições suaves entre áreas com movimento e áreas sem.\nDefina 0 para desabilitar a transição suave.\nDefina 1 para obter o resultado AMaZE/LMMSE do quadro selecionado (dependendo se "Usar LMMSE" estiver selecionado) ou a mediana de todos os quatro quadros se "Usar mediana" estiver selecionado.
+TP_RAW_RCD;RCD
+TP_RAW_SENSOR_BAYER_LABEL;Sensor com Matriz Bayer
+TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-passe dá os melhores resultados (recomendado para imagens com ISO baixo).\n1-passe é quase indistinguível do 3-passe para imagens com ISO alto e é mais rápido.
+TP_RAW_SENSOR_XTRANS_LABEL;Sensor com Matriz X-Trans
+TP_RAW_VNG4;VNG4
+TP_RESIZE_APPLIESTO;Aplica-se a:
+TP_RESIZE_CROPPEDAREA;Área Recortada
+TP_RESIZE_FITBOX;Caixa Delimitadora
+TP_RESIZE_FULLIMAGE;Imagem Cheia
+TP_RESIZE_H;Altura:
+TP_RESIZE_HEIGHT;Altura
+TP_RESIZE_LABEL;Redimensionar
+TP_RESIZE_LANCZOS;Lanczos
+TP_RESIZE_METHOD;Método:
+TP_RESIZE_NEAREST;Mais próximo
+TP_RESIZE_SCALE;Escala
+TP_RESIZE_SPECIFY;Especificar:
+TP_RESIZE_W;Largura:
+TP_RESIZE_WIDTH;Largura
+TP_RETINEX_CONTEDIT_HSL;Equalizador de histograma HSL
+TP_RETINEX_CONTEDIT_LAB;Equalizador de histograma L*a*b*
+TP_RETINEX_CONTEDIT_LH;Equalizador de matiz
+TP_RETINEX_CONTEDIT_MAP;Equalizador de máscara
+TP_RETINEX_CURVEEDITOR_CD;L=f(L)
+TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminância de acordo com a luminância L=f(L)\nCorrija dados raw para reduzir halos e artefatos.
+TP_RETINEX_CURVEEDITOR_LH;Intensidade=f(M)
+TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Intensidade de acordo com a Intensidade da matiz=f(M)\nEsta curva também atua no croma ao usar o método retinex "Realce".
+TP_RETINEX_CURVEEDITOR_MAP;L=f(L)
+TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;Esta curva pode ser aplicada sozinha ou com uma máscara Gaussiana ou uma máscara wavelet.\nCuidado com os artefatos!
+TP_RETINEX_EQUAL;Equalizador
+TP_RETINEX_FREEGAMMA;Gamma livre
+TP_RETINEX_GAIN;Ganho
+TP_RETINEX_GAINOFFS;Ganho e Compensação (brilho)
+TP_RETINEX_GAINTRANSMISSION;Transmissão de ganho
+TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplifica ou reduz o mapa de transmissão para obter luminância.\nAbscissa: transmissão -min de 0, média e valores (max).\nOrdenado: ganho.
+TP_RETINEX_GAIN_TOOLTIP;Atua na imagem restaurada.\n\nIsso é muito diferente das outras configurações. Usado para pixels pretos ou brancos e para ajudar a equilibrar o histograma.
+TP_RETINEX_GAMMA;Gamma
+TP_RETINEX_GAMMA_FREE;Livre
+TP_RETINEX_GAMMA_HIGH;Alto
+TP_RETINEX_GAMMA_LOW;Baixo
+TP_RETINEX_GAMMA_MID;Médio
+TP_RETINEX_GAMMA_NONE;Nenhum
+TP_RETINEX_GAMMA_TOOLTIP;Restaura tons aplicando gamma antes e depois do Retinex. Diferente das curvas Retinex ou outras curvas (Lab, Exposição, etc.).
+TP_RETINEX_GRAD;Gradiente de transmissão
+TP_RETINEX_GRADS;Gradiente de intensidade
+TP_RETINEX_GRADS_TOOLTIP;Se o controle deslizante for 0, todas as iterações serão idênticas.\nSe > 0 a Intensidade é reduzida quando as iterações aumentam e, inversamente.
+TP_RETINEX_GRAD_TOOLTIP;Se o controle deslizante for 0, todas as iterações serão idênticas.\nSe > 0 Variância e Limite são reduzidos quando as iterações aumentam e, inversamente.
+TP_RETINEX_HIGH;Alto
+TP_RETINEX_HIGHLIG;Realce
+TP_RETINEX_HIGHLIGHT;Limite de realce
+TP_RETINEX_HIGHLIGHT_TOOLTIP;Aumenta a ação do algoritmo alto.\nPode exigir que reajustes "pixels vizinhos" e aumente a "Correção de ponto branco" na guia Raw -> ferramenta de Pontos Brancos Raw.
+TP_RETINEX_HSLSPACE_LIN;HSL-Linear
+TP_RETINEX_HSLSPACE_LOG;HSL-Logarítmica
+TP_RETINEX_ITER;Iterações (Mapeamento de tom)
+TP_RETINEX_ITERF;Mapeamento de tom
+TP_RETINEX_ITER_TOOLTIP;Simula um operador de mapeamento de tom.\nValores altos aumentam o tempo de processamento.
+TP_RETINEX_LABEL;Retinex
+TP_RETINEX_LABEL_MASK;Máscara
+TP_RETINEX_LABSPACE;L*a*b*
+TP_RETINEX_LOW;Baixo
+TP_RETINEX_MAP;Método de máscara
+TP_RETINEX_MAP_GAUS;Máscara gaussiana
+TP_RETINEX_MAP_MAPP;Máscara de nitidez (wavelet parcial)
+TP_RETINEX_MAP_MAPT;Máscara de nitidez (wavelet total)
+TP_RETINEX_MAP_METHOD_TOOLTIP;Usa a máscara gerada pela função Gaussiana acima (Raio, Método) para reduzir halos e artefatos.\n\nApenas curva: aplique uma curva de contraste diagonal na máscara.\nCuidado com os artefatos!\n\nMáscara gaussiana: gera e usa um desfoque gaussiano da máscara original.\nRápido.\n\nMáscara de nitidez: gera e usa uma wavelet na máscara original.\nLento.
+TP_RETINEX_MAP_NONE;Nenhum
+TP_RETINEX_MEDIAN;Filtro mediano de transmissão
+TP_RETINEX_METHOD;Método
+TP_RETINEX_METHOD_TOOLTIP;Baixo = Reforça a luz baixa.\nUniforme = Equaliza a ação.\nAlto = Reforça a luz alta.\nRealces = Remove magenta nos realces.
+TP_RETINEX_MLABEL;Restaurado sem névoa Min=%1 Max=%2
+TP_RETINEX_MLABEL_TOOLTIP;Deve estar perto min=0 max=32768\nImagem restaurada sem mistura.
+TP_RETINEX_NEIGHBOR;Raio
+TP_RETINEX_NEUTRAL;Restaurar
+TP_RETINEX_NEUTRAL_TIP;Restaura todos os controles deslizantes e curvas para seus valores padrão.
+TP_RETINEX_OFFSET;Compensação (brilho)
+TP_RETINEX_SCALES;Gradiente gaussiano
+TP_RETINEX_SCALES_TOOLTIP;Se o controle deslizante for 0, todas as iterações serão idênticas.\nSe > 0 Escala e raio são reduzidos quando as iterações aumentam e inversamente.
+TP_RETINEX_SETTINGS;Configurações
+TP_RETINEX_SKAL;Escala
+TP_RETINEX_SLOPE;Declive gamma livre
+TP_RETINEX_STRENGTH;Intensidade
+TP_RETINEX_THRESHOLD;Limite
+TP_RETINEX_THRESHOLD_TOOLTIP;Limites de entrada/saída.\nEntrada = fonte de imagem,\nSaída = imagem gaussiana.
+TP_RETINEX_TLABEL;TM Min=%1 Max=%2 Média=%3 Sigma=%4
+TP_RETINEX_TLABEL2;TM Tm=%1 TM=%2
+TP_RETINEX_TLABEL_TOOLTIP;Resultado do mapa de transmissão.\nMin e Max são usados pela Variância.\nMédia e Sigma.\nTm=Min TM=Max do mapa de transmissão.
+TP_RETINEX_TRANF;Transmissão
+TP_RETINEX_TRANSMISSION;Mapa de transmissão
+TP_RETINEX_TRANSMISSION_TOOLTIP;Transmissão de acordo com transmissão.\nAbscissa: transmissão de valores negativos (min), média e valores positivos (max).\nOrdenado: amplificação ou redução.
+TP_RETINEX_UNIFORM;Uniforme
+TP_RETINEX_VARIANCE;Contraste
+TP_RETINEX_VARIANCE_TOOLTIP;Baixa variância aumenta o contraste e a saturação local, mas pode levar a artefatos.
+TP_RETINEX_VIEW;Processo
+TP_RETINEX_VIEW_MASK;Máscara
+TP_RETINEX_VIEW_METHOD_TOOLTIP;Padrão - Exibição normal.\nMáscara - Exibe a máscara.\nMáscara não nítida - Exibe a imagem com uma máscara não nítida de raio alto.\nTransmissão - Auto/Fixo - Exibe o mapa de transmissão do arquivo, antes de qualquer ação de contraste e brilho.\n\nAtenção: a máscara não corresponde à realidade, mas é amplificada para torná-la mais visível.
+TP_RETINEX_VIEW_NONE;Padrão
+TP_RETINEX_VIEW_TRAN;Transmissão - Auto
+TP_RETINEX_VIEW_TRAN2;Transmissão - Fixo
+TP_RETINEX_VIEW_UNSHARP;Máscara não nítida
+TP_RGBCURVES_BLUE;B
+TP_RGBCURVES_CHANNEL;Canal
+TP_RGBCURVES_GREEN;G
+TP_RGBCURVES_LABEL;Curvas RGB
+TP_RGBCURVES_LUMAMODE;Modo de luminosidade
+TP_RGBCURVES_LUMAMODE_TOOLTIP;Modo de luminosidade permite variar a contribuição dos canais R, G e B para a luminosidade da imagem, sem alterar a cor da imagem.
+TP_RGBCURVES_RED;R
+TP_ROTATE_DEGREE;Grau
+TP_ROTATE_LABEL;Girar
+TP_ROTATE_SELECTLINE;Selecione Linha Reta
+TP_SAVEDIALOG_OK_TIP;Atalho: Ctrl-Enter
+TP_SHADOWSHLIGHTS_HIGHLIGHTS;Realces
+TP_SHADOWSHLIGHTS_HLTONALW;Largura tonal dos realces
+TP_SHADOWSHLIGHTS_LABEL;Sombras/Realces
+TP_SHADOWSHLIGHTS_LOCALCONTR;Contraste local
+TP_SHADOWSHLIGHTS_RADIUS;Raio
+TP_SHADOWSHLIGHTS_SHADOWS;Sombras
+TP_SHADOWSHLIGHTS_SHARPMASK;Máscara de nitidez
+TP_SHADOWSHLIGHTS_SHTONALW;Largura tonal das sombras
+TP_SHARPENEDGE_AMOUNT;Quantidade
+TP_SHARPENEDGE_LABEL;Bordas
+TP_SHARPENEDGE_PASSES;Iterações
+TP_SHARPENEDGE_THREE;Somente luminância
+TP_SHARPENING_AMOUNT;Montante
+TP_SHARPENING_CONTRAST;Limite de contraste
+TP_SHARPENING_EDRADIUS;Raio
+TP_SHARPENING_EDTOLERANCE;Tolerância de borda
+TP_SHARPENING_HALOCONTROL;Controle de halo
+TP_SHARPENING_HCAMOUNT;Montante
+TP_SHARPENING_LABEL;Nitidez
+TP_SHARPENING_METHOD;Método
+TP_SHARPENING_ONLYEDGES;Nitidez apenas nas bordas
+TP_SHARPENING_RADIUS;Raio
+TP_SHARPENING_RLD;Deconvolução RL
+TP_SHARPENING_RLD_AMOUNT;Montante
+TP_SHARPENING_RLD_DAMPING;Amortecimento
+TP_SHARPENING_RLD_ITERATIONS;Iterações
+TP_SHARPENING_THRESHOLD;Limite
+TP_SHARPENING_USM;Máscara Não Nítida
+TP_SHARPENMICRO_AMOUNT;Quantidade
+TP_SHARPENMICRO_CONTRAST;Limite de contraste
+TP_SHARPENMICRO_LABEL;Microcontraste
+TP_SHARPENMICRO_MATRIX;3×3 matriz em vez de 5×5
+TP_SHARPENMICRO_UNIFORMITY;Uniformidade
+TP_TM_FATTAL_AMOUNT;Montante
+TP_TM_FATTAL_ANCHOR;Âncora
+TP_TM_FATTAL_LABEL;Compressão de Amplitude Dinâmica(DRC)
+TP_TM_FATTAL_THRESHOLD;Limite
+TP_VIBRANCE_AVOIDCOLORSHIFT;Evite mudança de cor
+TP_VIBRANCE_CURVEEDITOR_SKINTONES;MM
+TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tons cor de pele
+TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE1;Vermelho/Roxo
+TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE2;Vermelho
+TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE3;Vermelho/Amarelo
+TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE4;Amarelo
+TP_VIBRANCE_CURVEEDITOR_SKINTONES_TOOLTIP;Matiz de acordo com matiz M=f(M)
+TP_VIBRANCE_LABEL;Vibração
+TP_VIBRANCE_PASTELS;Tons Pastéis
+TP_VIBRANCE_PASTSATTOG;Ligue tons pastéis e saturados
+TP_VIBRANCE_PROTECTSKINS;Protege os tons cor de pele
+TP_VIBRANCE_PSTHRESHOLD;Limite de tons pastel/saturado
+TP_VIBRANCE_PSTHRESHOLD_SATTHRESH;Limite de saturação
+TP_VIBRANCE_PSTHRESHOLD_TOOLTIP;O eixo vertical representa tons pastel na base e tons saturados no topo.\nO eixo horizontal representa a faixa de saturação.
+TP_VIBRANCE_PSTHRESHOLD_WEIGTHING;Ponderação da transição pastel/saturada
+TP_VIBRANCE_SATURATED;Tons Saturados
+TP_VIGNETTING_AMOUNT;Montante
+TP_VIGNETTING_CENTER;Centro
+TP_VIGNETTING_CENTER_X;Centro X
+TP_VIGNETTING_CENTER_Y;Centro Y
+TP_VIGNETTING_LABEL;Correção de Vinheta
+TP_VIGNETTING_RADIUS;Raio
+TP_VIGNETTING_STRENGTH;Intensidade
+TP_WAVELET_1;Nível 1
+TP_WAVELET_2;Nível 2
+TP_WAVELET_3;Nível 3
+TP_WAVELET_4;Nível 4
+TP_WAVELET_5;Nível 5
+TP_WAVELET_6;Nível 6
+TP_WAVELET_7;Nível 7
+TP_WAVELET_8;Nível 8
+TP_WAVELET_9;Nível 9
+TP_WAVELET_APPLYTO;Aplicar a
+TP_WAVELET_AVOID;Evite mudança de cor
+TP_WAVELET_B0;Preto
+TP_WAVELET_B1;Cinza
+TP_WAVELET_B2;Residual
+TP_WAVELET_BACKGROUND;Fundo
+TP_WAVELET_BACUR;Curva
+TP_WAVELET_BALANCE;Balanço de contraste d/v-h
+TP_WAVELET_BALANCE_TOOLTIP;Altera o equilíbrio entre as direções wavelet: vertical-horizontal e diagonal.\nSe o contraste, croma ou mapeamento de tom residual são ativados, o efeito devido ao equilíbrio é amplificado.
+TP_WAVELET_BALCHRO;Balanço cromático
+TP_WAVELET_BALCHRO_TOOLTIP;Se ativada, a curva ou o controle deslizante 'Balanço de contraste' também modifica o balanço cromático.
+TP_WAVELET_BANONE;Nenhum
+TP_WAVELET_BASLI;Controle deslizante
+TP_WAVELET_BATYPE;Método de balanço de contraste
+TP_WAVELET_CBENAB;Tonificação e Balanço de Cores
+TP_WAVELET_CB_TOOLTIP;Para valores fortes, tonalização de cores do produto, combinando ou não com níveis de decomposição 'tonificação'\nPara valores baixos, podes alterar o balanço de branco do plano de fundo (céu, ...) sem alterar o plano frontal, geralmente mais contrastado
+TP_WAVELET_CCURVE;Contraste local
+TP_WAVELET_CH1;Toda a gama de croma
+TP_WAVELET_CH2;Saturado/pastel
+TP_WAVELET_CH3;Ligue os níveis de contraste
+TP_WAVELET_CHCU;Curva
+TP_WAVELET_CHR;Intensidade de ligação do contraste cromático
+TP_WAVELET_CHRO;Limite saturado/pastel
+TP_WAVELET_CHRO_TOOLTIP;Define o nível de wavelet que será o limite entre as cores saturadas e pastel.\n1-x: saturada\nx-9: pastel\n\nSe o valor exceder o montante de níveis de wavelet que estiveres usando, ele será ignorado.
+TP_WAVELET_CHR_TOOLTIP;Ajusta o croma como uma função dos "níveis de contraste" e "intensidade de ligação do contraste cromático"
+TP_WAVELET_CHSL;Controles deslizantes
+TP_WAVELET_CHTYPE;Método de crominância
+TP_WAVELET_COLORT;Opacidade Vermelho-Verde
+TP_WAVELET_COMPCONT;Contraste
+TP_WAVELET_COMPGAMMA;Compressão gamma
+TP_WAVELET_COMPGAMMA_TOOLTIP;Ajustar o gamma da imagem residual permite equilibrar os dados e o histograma.
+TP_WAVELET_COMPTM;Mapeamento de tom
+TP_WAVELET_CONTEDIT;Curva de contraste 'depois'
+TP_WAVELET_CONTR;Gamut
+TP_WAVELET_CONTRA;Contraste
+TP_WAVELET_CONTRAST_MINUS;Contraste -
+TP_WAVELET_CONTRAST_PLUS;Contraste +
+TP_WAVELET_CONTRA_TOOLTIP;Altera o contraste da imagem residual.
+TP_WAVELET_CTYPE;Controle de crominância
+TP_WAVELET_CURVEEDITOR_CC_TOOLTIP;Modifica o contraste local como uma função do contraste local original (abscissa).\nValores baixos de abscissa representam pequeno contraste local (valores reais de 10..20).\n50% abscissa representa contraste local médio (valores reais de 100..300).\n66% abscissa representa desvio padrão do contraste local (valores reais de 300..800).\n100% abscissa representa contraste local máximo (valores reais de 3000..8000).
+TP_WAVELET_CURVEEDITOR_CH;Níveis de contraste=f(Matiz)
+TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Modifica cada nível de contraste como uma função da matiz.\nTome cuidado para não sobrescrever as alterações feitas com os controles de matiz da sub-ferramenta Gamut.\nA curva só terá efeito quando os controles deslizantes do nível de contraste da wavelet forem diferentes de zero.
+TP_WAVELET_CURVEEDITOR_CL;L
+TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Aplica uma curva de luminância de contraste final no fim do tratamento wavelet.
+TP_WAVELET_CURVEEDITOR_HH;MM
+TP_WAVELET_CURVEEDITOR_HH_TOOLTIP;Modifica a matiz da imagem residual como uma função de matiz.
+TP_WAVELET_DALL;Todas as direções
+TP_WAVELET_DAUB;Performance de borda
+TP_WAVELET_DAUB2;D2 - baixo
+TP_WAVELET_DAUB4;D4 - padrão
+TP_WAVELET_DAUB6;D6 - padrão plus
+TP_WAVELET_DAUB10;D10 - médio
+TP_WAVELET_DAUB14;D14 - alto
+TP_WAVELET_DAUB_TOOLTIP;Altera coeficientes Daubechies:\nD4 = Padrão,\nD14 = Frequentemente melhor desempenho, 10% mais tempo-intensivo.\n\nAfeta a detecção de bordas, bem como a qualidade geral dos primeiros níveis. No entanto, a qualidade não está estritamente relacionada a esse coeficiente e pode variar com imagens e usos.
+TP_WAVELET_DONE;Vertical
+TP_WAVELET_DTHR;Diagonal
+TP_WAVELET_DTWO;Horizontal
+TP_WAVELET_EDCU;Curva
+TP_WAVELET_EDGCONT;Contraste local
+TP_WAVELET_EDGCONT_TOOLTIP;Ajustar os pontos para a esquerda diminui o contraste, e para a direita aumenta.\nInferior esquerdo, Superior esquerdo, Superior direito, Inferior direito representam respectivamente contraste local para valores baixos, médio, médio + stdev, máximos
+TP_WAVELET_EDGE;Nitidez de borda
+TP_WAVELET_EDGEAMPLI;Amplificação de base
+TP_WAVELET_EDGEDETECT;Sensibilidade ao gradiente
+TP_WAVELET_EDGEDETECTTHR;Limite baixo (ruído)
+TP_WAVELET_EDGEDETECTTHR2;Limite alto (detecção)
+TP_WAVELET_EDGEDETECTTHR_TOOLTIP;Esse ajustador permite que segmentes a detecção de bordas, por exemplo, para evitar a aplicação de nitidez de borda a detalhes finos, como ruído no céu.
+TP_WAVELET_EDGEDETECT_TOOLTIP;Mover o controle deslizante para a direita aumenta a sensibilidade da borda. Isso afeta o contraste local, as configurações de borda e o ruído.
+TP_WAVELET_EDGESENSI;Sensibilidade de borda
+TP_WAVELET_EDGREINF_TOOLTIP;Reforce ou reduza a ação do primeiro nível, faça o oposto ao segundo nível e deixe o restante inalterado.
+TP_WAVELET_EDGTHRESH;Detalhe
+TP_WAVELET_EDGTHRESH_TOOLTIP;Altere a repartição entre os primeiros níveis e os outros. Quanto maior o limite, mais a ação é centrada nos primeiros níveis. Cuidado com valores negativos, eles aumentam a ação de níveis altos e podem introduzir artefatos.
+TP_WAVELET_EDRAD;Raio
+TP_WAVELET_EDRAD_TOOLTIP;Este ajuste de raio é muito diferente daqueles em outras ferramentas de nitidez. Seu valor é comparado a cada nível através de uma função complexa. Nesse sentido, um valor de zero ainda tem efeito.
+TP_WAVELET_EDSL;Controles Deslizantes do Limite
+TP_WAVELET_EDTYPE;Método de contraste local
+TP_WAVELET_EDVAL;Intensidade
+TP_WAVELET_FINAL;Retoque Final
+TP_WAVELET_FINEST;Melhor
+TP_WAVELET_HIGHLIGHT;Faixa de luminância do realce
+TP_WAVELET_HS1;Toda faixa de luminância
+TP_WAVELET_HS2;Sombras/Relces
+TP_WAVELET_HUESKIN;Matiz da pele
+TP_WAVELET_HUESKIN_TOOLTIP;Os pontos inferiores definem o início da zona de transição, e os pontos superiores o final, onde o efeito está no seu máximo.\n\nSe precisares mover a área significativamente, ou se houver artefatos, então o balanço de branco está incorreto.
+TP_WAVELET_HUESKY;Matiz do céu
+TP_WAVELET_HUESKY_TOOLTIP;Os pontos inferiores definem o início da zona de transição, e os pontos superiores o final, onde o efeito está no seu máximo.\n\nSe precisares mover a área significativamente, ou se houver artefatos, então o balanço de branco está incorreto.
+TP_WAVELET_ITER;Níveis de balanço delta
+TP_WAVELET_ITER_TOOLTIP;Esquerda: aumenta os níveis baixos e reduz os níveis altos,\nDireita: reduz os níveis baixos e aumenta os níveis altos.
+TP_WAVELET_LABEL;Níveis Wavelet
+TP_WAVELET_LARGEST;Grosseiro
+TP_WAVELET_LEVCH;Croma
+TP_WAVELET_LEVDIR_ALL;Todos os níveis em todas as direções
+TP_WAVELET_LEVDIR_INF;Abaixo ou igual ao nível
+TP_WAVELET_LEVDIR_ONE;Um nível
+TP_WAVELET_LEVDIR_SUP;Acima do nível
+TP_WAVELET_LEVELS;Níveis Wavelet
+TP_WAVELET_LEVELS_TOOLTIP;Escolha o número de níveis de detalhes para os quais a imagem será decomposta. Mais níveis requerem mais RAM e requerem um longo tempo de processamento.
+TP_WAVELET_LEVF;Contraste
+TP_WAVELET_LEVLABEL;Visualizar níveis máximos possíveis = %1
+TP_WAVELET_LEVONE;Nível 2
+TP_WAVELET_LEVTHRE;Nível 4
+TP_WAVELET_LEVTWO;Nível 3
+TP_WAVELET_LEVZERO;Nível 1
+TP_WAVELET_LINKEDG;Ligar com a Intensidade da Nitidez de Borda
+TP_WAVELET_LIPST;Algoritmo aprimorado
+TP_WAVELET_LOWLIGHT;Faixa de luminância da sombra
+TP_WAVELET_MEDGREINF;Primeiro nível
+TP_WAVELET_MEDI;Reduzir artefatos no céu azul
+TP_WAVELET_MEDILEV;Detecção de borda
+TP_WAVELET_MEDILEV_TOOLTIP;Quando habilitas a detecção de borda, é recomendado:\n- desativar níveis baixos de contraste para evitar artefatos,\n- usar valores altos de sensibilidade ao gradiente.\n\nPodes modular a intensidade com 'refinar' de Remoção de Ruído e Refinar.
+TP_WAVELET_NEUTRAL;Neutro
+TP_WAVELET_NOIS;Remoção de Ruído
+TP_WAVELET_NOISE;Remoção de Ruído e Refinar
+TP_WAVELET_NPHIGH;Alto
+TP_WAVELET_NPLOW;Baixo
+TP_WAVELET_NPNONE;Nenhum
+TP_WAVELET_NPTYPE;Pixels vizinhos
+TP_WAVELET_NPTYPE_TOOLTIP;Este algoritmo usa a proximidade de um pixel e oito de seus vizinhos. Se diferença for menor, bordas serão reforçadas.
+TP_WAVELET_OPACITY;Opacidade Azul-Amarela
+TP_WAVELET_OPACITYW;Curva do balanço de contraste d/v-h
+TP_WAVELET_OPACITYWL;Contraste local final
+TP_WAVELET_OPACITYWL_TOOLTIP;Modifica o contraste local final no fim do tratamento wavelet.\n\nÀ Esquerda representa o menor contraste local, progredindo para o maior contraste local à direita.
+TP_WAVELET_PASTEL;Croma pastel
+TP_WAVELET_PROC;Processo
+TP_WAVELET_RE1;Reforçado
+TP_WAVELET_RE2;Inalterado
+TP_WAVELET_RE3;Reduzido
+TP_WAVELET_RESCHRO;Croma
+TP_WAVELET_RESCON;Sombras
+TP_WAVELET_RESCONH;Realces
+TP_WAVELET_RESID;Imagem Residual
+TP_WAVELET_SAT;Croma saturado
+TP_WAVELET_SETTINGS;Configurações Wavelet
+TP_WAVELET_SKIN;Segmentação/proteção cor da pele
+TP_WAVELET_SKIN_TOOLTIP;Em -100 tons de pele são direcionados.\nEm 0 todos os tons são tratados igualmente.\nEm +100 tons de pele são protegidos enquanto todos os outros tons são afetados.
+TP_WAVELET_SKY;Segmentação/proteção cor do céu
+TP_WAVELET_SKY_TOOLTIP;Em -100 tons de pele são direcionados.\nEm 0 todos os tons são tratados igualmente.\nEm +100 tons de pele são protegidos enquanto todos os outros tons são afetados.
+TP_WAVELET_STREN;Intensidade
+TP_WAVELET_STRENGTH;Intensidade
+TP_WAVELET_SUPE;Extra
+TP_WAVELET_THR;Limite de sombras
+TP_WAVELET_THRESHOLD;Níveis de realces
+TP_WAVELET_THRESHOLD2;Níveis de sombras
+TP_WAVELET_THRESHOLD2_TOOLTIP;Apenas níveis entre 9 e menos 9 terão valores afetados pela faixa de luminância da sombra. Outros níveis serão totalmente tratados. O nível mais alto possível é limitado pelo valor do nível de realce (menos 9 valor do nível de realce).
+TP_WAVELET_THRESHOLD_TOOLTIP;Apenas níveis além do valor escolhido serão afetados pela faixa de luminância do realce. Outros níveis serão totalmente tratados. O valor escolhido aqui limita o maior valor possível dos níveis de sombra.
+TP_WAVELET_THRH;Limite de realces
+TP_WAVELET_TILESBIG;Mosaicos grandes
+TP_WAVELET_TILESFULL;Imagem cheia
+TP_WAVELET_TILESIZE;Método de mosaicos
+TP_WAVELET_TILESLIT;Mosaicos pequenos
+TP_WAVELET_TILES_TOOLTIP;O processamento da imagem cheia leva a uma melhor qualidade e é a opção recomendada, enquanto o uso de mosaicos é uma solução de retorno para usuários com pouca RAM. Consulte o RawPedia para requisitos de memória.
+TP_WAVELET_TMSTRENGTH;Intensidade de compressão
+TP_WAVELET_TMSTRENGTH_TOOLTIP;Controla a intensidade do mapeamento de tom ou a compressaõ de contraste da imagem residua. Quando o valor for diferente de 0, os controles deslizantes Intensidade e Gamma da ferramenta Mapeamento de Tom na guia Exposição ficarão esmaecidos.
+TP_WAVELET_TMTYPE;Método de compressão
+TP_WAVELET_TON;Tonificação
+TP_WBALANCE_AUTO;Automático
+TP_WBALANCE_CAMERA;Câmera
+TP_WBALANCE_CLOUDY;Nublado
+TP_WBALANCE_CUSTOM;Personalizado
+TP_WBALANCE_DAYLIGHT;Luz do dia (sol)
+TP_WBALANCE_EQBLUERED;Equalizador Azul/Vermelho
+TP_WBALANCE_EQBLUERED_TOOLTIP;Permite desviar do comportamento normal do "balanço de branco", modulando o balanço azul/vermelho.\nIsso pode ser útil ao fotografar condições:\na) estão longe do iluminante padrão (por exemplo, embaixo d'água),\nb) estão longe das condições em que as calibrações foram realizadas,\nc) onde as matrizes ou perfis ICC são inadequados.
+TP_WBALANCE_FLASH55;Leica
+TP_WBALANCE_FLASH60;Padrão, Canon, Pentax, Olympus
+TP_WBALANCE_FLASH65;Nikon, Panasonic, Sony, Minolta
+TP_WBALANCE_FLASH_HEADER;Flash
+TP_WBALANCE_FLUO1;F1 - Luz do Dia
+TP_WBALANCE_FLUO2;F2 - Branco Frio
+TP_WBALANCE_FLUO3;F3 - Branco
+TP_WBALANCE_FLUO4;F4 - Branco Quente
+TP_WBALANCE_FLUO5;F5 - Luz do Dia
+TP_WBALANCE_FLUO6;F6 - Branco Suave
+TP_WBALANCE_FLUO7;F7 - Simulador de Luz do Dia D65
+TP_WBALANCE_FLUO8;F8 - Modelo D50 / Sylvania F40
+TP_WBALANCE_FLUO9;F9 - Branco Frio de luxo
+TP_WBALANCE_FLUO10;F10 - Philips TL85
+TP_WBALANCE_FLUO11;F11 - Philips TL84
+TP_WBALANCE_FLUO12;F12 - Philips TL83
+TP_WBALANCE_FLUO_HEADER;Fluorescente
+TP_WBALANCE_GREEN;Tinto
+TP_WBALANCE_GTI;GTI
+TP_WBALANCE_HMI;HMI
+TP_WBALANCE_JUDGEIII;Juiz III
+TP_WBALANCE_LABEL;Balanço de Branco
+TP_WBALANCE_LAMP_HEADER;Lâmpada
+TP_WBALANCE_LED_CRS;CRS SP12 WWMR16
+TP_WBALANCE_LED_HEADER;LED
+TP_WBALANCE_LED_LSI;LSI Lumelex 2040
+TP_WBALANCE_METHOD;Método
+TP_WBALANCE_SHADE;Penumbra
+TP_WBALANCE_SIZE;Tamanho:
+TP_WBALANCE_SOLUX35;Solux 3500K
+TP_WBALANCE_SOLUX41;Solux 4100K
+TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
+TP_WBALANCE_SOLUX47_NG;Solux 4700K (Galeria Nat.)
+TP_WBALANCE_SPOTWB;Spot WB
+TP_WBALANCE_TEMPBIAS;Viés de temperatura AWB
+TP_WBALANCE_TEMPBIAS_TOOLTIP;Permite alterar o cálculo do "balanço de branco automático"\ninclinando-o para temperaturas mais quentes ou mais frias. O viés\né expresso como uma porcentagem da temperatura calculada,\npara que o resultado seja dado por "Temperatura calculada + Temperatura calculada * viés".
+TP_WBALANCE_TEMPERATURE;Temperatura
+TP_WBALANCE_TUNGSTEN;Tungstênio
+TP_WBALANCE_WATER1;Embaixo da Água 1
+TP_WBALANCE_WATER2;Embaixo da Água 2
+TP_WBALANCE_WATER_HEADER;Embaixo da Água
+Veja RawPedia para instruções de uso.
+ZOOMPANEL_100;(100%)
+ZOOMPANEL_NEWCROPWINDOW;Janela de detalhe aberta (nova)
+ZOOMPANEL_ZOOM100;Zoom para 100%\nAtalho: z
+ZOOMPANEL_ZOOMFITCROPSCREEN;Ajustar o corte à tela\nAtalho: f
+ZOOMPANEL_ZOOMFITSCREEN;Ajustar toda a imagem à tela\nAtalho: Alt-f
+ZOOMPANEL_ZOOMIN;Mais Zoom\nAtalho: +
+ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: -
!!!!!!!!!!!!!!!!!!!!!!!!!
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
-!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value.
-!GENERAL_RESET;Reset
-!HISTORY_MSG_235;B&W - CM - Auto
-!HISTORY_MSG_237;B&W - CM
-!HISTORY_MSG_273;CT - Color Balance SMH
-!HISTORY_MSG_392;W - Residual - Color Balance
-!SAMPLEFORMAT_0;Unknown data format
-!SAMPLEFORMAT_1;8-bit unsigned
-!SAMPLEFORMAT_2;16-bit unsigned
-!SAMPLEFORMAT_4;24-bit LogLuv
-!SAMPLEFORMAT_8;32-bit LogLuv
-!SAMPLEFORMAT_16;16-bit floating-point
-!SAMPLEFORMAT_32;24-bit floating-point
-!SAMPLEFORMAT_64;32-bit floating-point
-!SAVEDLG_WARNFILENAME;File will be named
-!SHCSELECTOR_TOOLTIP;Click right mouse button to reset the position of those 3 sliders.
-!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
-!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set.
-!THRESHOLDSELECTOR_B;Bottom
-!THRESHOLDSELECTOR_BL;Bottom-left
-!THRESHOLDSELECTOR_BR;Bottom-right
-!THRESHOLDSELECTOR_HINT;Hold the Shift key to move individual control points.
-!THRESHOLDSELECTOR_T;Top
-!THRESHOLDSELECTOR_TL;Top-left
-!THRESHOLDSELECTOR_TR;Top-right
-!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool
-!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop area using Shift-mouse drag
-!TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h
-!TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Center of rotation is the geometrical center of the image.
-!TOOLBAR_TOOLTIP_WB;Spot white balance.\nShortcut: w
-!TP_BWMIX_ALGO;Algorithm OYCPM
-!TP_BWMIX_ALGO_LI;Linear
-!TP_BWMIX_ALGO_SP;Special effects
-!TP_BWMIX_ALGO_TOOLTIP;Linear: will produce a normal linear response.\nSpecial effects: will produce special effects by mixing channels non-linearly.
-!TP_BWMIX_AUTOCH;Auto
-!TP_BWMIX_CC_ENABLED;Adjust complementary color
-!TP_BWMIX_CC_TOOLTIP;Enable to allow automatic adjustment of complementary colors in ROYGCBPM mode.
-!TP_BWMIX_CHANNEL;Luminance equalizer
-!TP_BWMIX_CURVEEDITOR1;'Before' curve
-!TP_BWMIX_CURVEEDITOR2;'After' curve
-!TP_BWMIX_CURVEEDITOR_AFTER_TOOLTIP;Tone curve, after B&W conversion, at the end of treatment.
-!TP_BWMIX_CURVEEDITOR_BEFORE_TOOLTIP;Tone curve, just before B&W conversion.\nMay take into account the color components.
-!TP_BWMIX_CURVEEDITOR_LH_TOOLTIP;Luminance according to hue L=f(H).\nPay attention to extreme values as they may cause artifacts.
-!TP_BWMIX_FILTER;Color Filter
-!TP_BWMIX_FILTER_BLUE;Blue
-!TP_BWMIX_FILTER_BLUEGREEN;Blue-Green
-!TP_BWMIX_FILTER_GREEN;Green
-!TP_BWMIX_FILTER_GREENYELLOW;Green-Yellow
-!TP_BWMIX_FILTER_NONE;None
-!TP_BWMIX_FILTER_PURPLE;Purple
-!TP_BWMIX_FILTER_RED;Red
-!TP_BWMIX_FILTER_REDYELLOW;Red-Yellow
-!TP_BWMIX_FILTER_TOOLTIP;The color filter simulates shots taken with a colored filter placed in front of the lens. Colored filters reduce the transmission of specific color ranges and therefore affect their lightness. E.g. a red filter darkens blue skies.
-!TP_BWMIX_FILTER_YELLOW;Yellow
-!TP_BWMIX_GAMMA;Gamma Correction
-!TP_BWMIX_GAM_TOOLTIP;Correct gamma for each RGB channel.
-!TP_BWMIX_LABEL;Black-and-White
-!TP_BWMIX_MET;Method
-!TP_BWMIX_MET_CHANMIX;Channel Mixer
-!TP_BWMIX_MET_DESAT;Desaturation
-!TP_BWMIX_MET_LUMEQUAL;Luminance Equalizer
-!TP_BWMIX_MIXC;Channel Mixer
-!TP_BWMIX_NEUTRAL;Reset
-!TP_BWMIX_RGBLABEL;R: %1%% G: %2%% B: %3%% Total: %4%%
-!TP_BWMIX_RGBLABEL_HINT;Final RGB factors that take care of all the mixer options.\n"Total" displays the sum of the RGB values:\n- always 100% in relative mode\n- higher (lighter) or lower (darker) than 100% in absolute mode.
-!TP_BWMIX_RGB_TOOLTIP;Mix the RGB channels. Use presets for guidance.\nPay attention to negative values that may cause artifacts or erratic behavior.
-!TP_BWMIX_SETTING;Presets
-!TP_BWMIX_SETTING_TOOLTIP;Different presets (film, landscape, etc.) or manual Channel Mixer settings.
-!TP_BWMIX_SET_HIGHCONTAST;High contrast
-!TP_BWMIX_SET_HIGHSENSIT;High Sensitivity
-!TP_BWMIX_SET_HYPERPANCHRO;Hyper Panchromatic
-!TP_BWMIX_SET_INFRARED;Infrared
-!TP_BWMIX_SET_LANDSCAPE;Landscape
-!TP_BWMIX_SET_LOWSENSIT;Low Sensitivity
-!TP_BWMIX_SET_LUMINANCE;Luminance
-!TP_BWMIX_SET_NORMCONTAST;Normal Contrast
-!TP_BWMIX_SET_ORTHOCHRO;Orthochromatic
-!TP_BWMIX_SET_PANCHRO;Panchromatic
-!TP_BWMIX_SET_PORTRAIT;Portrait
-!TP_BWMIX_SET_RGBABS;Absolute RGB
-!TP_BWMIX_SET_RGBREL;Relative RGB
-!TP_BWMIX_SET_ROYGCBPMABS;Absolute ROYGCBPM
-!TP_BWMIX_SET_ROYGCBPMREL;Relative ROYGCBPM
-!TP_BWMIX_TCMODE_FILMLIKE;B&W Film-like
-!TP_BWMIX_TCMODE_SATANDVALBLENDING;B&W Saturation and Value Blending
-!TP_BWMIX_TCMODE_STANDARD;B&W Standard
-!TP_BWMIX_TCMODE_WEIGHTEDSTD;B&W Weighted Standard
-!TP_BWMIX_VAL;L
-!TP_CACORRECTION_BLUE;Blue
-!TP_CACORRECTION_LABEL;Chromatic Aberration Correction
-!TP_CACORRECTION_RED;Red
-!TP_CBDL_AFT;After Black-and-White
-!TP_CBDL_BEF;Before Black-and-White
-!TP_CBDL_METHOD;Process located
-!TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space.
-!TP_CHMIXER_BLUE;Blue channel
-!TP_CHMIXER_GREEN;Green channel
-!TP_CHMIXER_LABEL;Channel Mixer
-!TP_CHMIXER_RED;Red channel
-!TP_CHROMATABERR_LABEL;Chromatic Aberration
-!TP_COARSETRAF_TOOLTIP_HFLIP;Flip horizontally.
-!TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Editor Tabs Mode,\nAlt-[ - Single Editor Tab Mode.
-!TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode.
-!TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically.
-!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance
-!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider.
-!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²)
-!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²).
-!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first.
-!TP_COLORAPP_ALGO;Algorithm
-!TP_COLORAPP_ALGO_ALL;All
-!TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC)
-!TP_COLORAPP_ALGO_JS;Lightness + Saturation (JS)
-!TP_COLORAPP_ALGO_QM;Brightness + Colorfulness (QM)
-!TP_COLORAPP_ALGO_TOOLTIP;Lets you choose between parameter subsets or all parameters.
-!TP_COLORAPP_BADPIXSL;Hot/bad pixel filter
-!TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02.
-!TP_COLORAPP_BRIGHT;Brightness (Q)
-!TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness.
-!TP_COLORAPP_CHROMA;Chroma (C)
-!TP_COLORAPP_CHROMA_M;Colorfulness (M)
-!TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness.
-!TP_COLORAPP_CHROMA_S;Saturation (S)
-!TP_COLORAPP_CHROMA_S_TOOLTIP;Saturation in CIECAM02 differs from L*a*b* and RGB saturation.
-!TP_COLORAPP_CHROMA_TOOLTIP;Chroma in CIECAM02 differs from L*a*b* and RGB chroma.
-!TP_COLORAPP_CIECAT_DEGREE;CAT02 adaptation
-!TP_COLORAPP_CONTRAST;Contrast (J)
-!TP_COLORAPP_CONTRAST_Q;Contrast (Q)
-!TP_COLORAPP_CONTRAST_Q_TOOLTIP;Differs from L*a*b* and RGB contrast.
-!TP_COLORAPP_CONTRAST_TOOLTIP;Differs from L*a*b* and RGB contrast.
-!TP_COLORAPP_CURVEEDITOR1;Tone curve 1
-!TP_COLORAPP_CURVEEDITOR1_TOOLTIP;Shows the histogram of L* (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of J or Q after CIECAM02.\n\nJ and Q are not shown in the main histogram panel.\n\nFor final output refer to the main histogram panel.
-!TP_COLORAPP_CURVEEDITOR2;Tone curve 2
-!TP_COLORAPP_CURVEEDITOR2_TOOLTIP;Same usage as with the second exposure tone curve.
-!TP_COLORAPP_CURVEEDITOR3;Color curve
-!TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel.
-!TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves
-!TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments.
-!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended).
-!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002.
-!TP_COLORAPP_FREE;Free temp+green + CAT02 + [output]
-!TP_COLORAPP_GAMUT;Gamut control (L*a*b*)
-!TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode.
-!TP_COLORAPP_HUE;Hue (h)
-!TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0° and 360°.
-!TP_COLORAPP_LABEL;CIE Color Appearance Model 2002
-!TP_COLORAPP_LABEL_CAM02;Image Adjustments
-!TP_COLORAPP_LABEL_SCENE;Scene Conditions
-!TP_COLORAPP_LABEL_VIEWING;Viewing Conditions
-!TP_COLORAPP_LIGHT;Lightness (J)
-!TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness.
-!TP_COLORAPP_MODEL;WP Model
-!TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions.
-!TP_COLORAPP_NEUTRAL;Reset
-!TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values
-!TP_COLORAPP_RSTPRO;Red & skin-tones protection
-!TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves.
-!TP_COLORAPP_SHARPCIE;--unused--
-!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused--
-!TP_COLORAPP_SURROUND;Surround
-!TP_COLORAPP_SURROUND_AVER;Average
-!TP_COLORAPP_SURROUND_DARK;Dark
-!TP_COLORAPP_SURROUND_DIM;Dim
-!TP_COLORAPP_SURROUND_EXDARK;Extremly Dark (Cutsheet)
-!TP_COLORAPP_SURROUND_TOOLTIP;Changes tones and colors to take into account the viewing conditions of the output device.\n\nAverage: Average light environment (standard). The image will not change.\n\nDim: Dim environment (TV). The image will become slighty dark.\n\nDark: Dark environment (projector). The image will become more dark.\n\nExtremly Dark: Extremly dark environment (cutsheet). The image will become very dark.
-!TP_COLORAPP_SURSOURCE;Dark surround
-!TP_COLORAPP_SURSOURCE_TOOLTIP;Can be used if image has a dark border.
-!TP_COLORAPP_TCMODE_BRIGHTNESS;Brightness
-!TP_COLORAPP_TCMODE_CHROMA;Chroma
-!TP_COLORAPP_TCMODE_COLORF;Colorfulness
-!TP_COLORAPP_TCMODE_LABEL1;Curve mode 1
-!TP_COLORAPP_TCMODE_LABEL2;Curve mode 2
-!TP_COLORAPP_TCMODE_LABEL3;Curve chroma mode
-!TP_COLORAPP_TCMODE_LIGHTNESS;Lightness
-!TP_COLORAPP_TCMODE_SATUR;Saturation
-!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_COLORAPP_TONECIE;Tone mapping using CIECAM02
-!TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect.
-!TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output]
-!TP_COLORAPP_WBRT;WB [RT] + [output]
-!TP_COLORAPP_YB;Yb% (mean luminance)
-!TP_COLORAPP_YBSCENE;Yb% (mean luminance)
-!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance
-!TP_COLORTONING_AB;o C/L
-!TP_COLORTONING_AUTOSAT;Automatic
-!TP_COLORTONING_BALANCE;Balance
-!TP_COLORTONING_BY;o C/L
-!TP_COLORTONING_CHROMAC;Opacity
-!TP_COLORTONING_COLOR;Color
-!TP_COLORTONING_CURVEEDITOR_CL_TOOLTIP;Chroma opacity as a function of luminance oC=f(L)
-!TP_COLORTONING_HIGHLIGHT;Highlights
-!TP_COLORTONING_HUE;Hue
-!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_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.
-!TP_COLORTONING_METHOD;Method
-!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_MIDTONES;Midtones
-!TP_COLORTONING_NEUTRAL;Reset sliders
-!TP_COLORTONING_NEUTRAL_TIP;Reset all values (Shadows, Midtones, Highlights) to default.
-!TP_COLORTONING_OPACITY;Opacity
-!TP_COLORTONING_RGBCURVES;RGB - Curves
-!TP_COLORTONING_RGBSLIDERS;RGB - Sliders
-!TP_COLORTONING_SA;Saturation Protection
-!TP_COLORTONING_SATURATEDOPACITY;Strength
-!TP_COLORTONING_SATURATIONTHRESHOLD;Threshold
-!TP_COLORTONING_SHADOWS;Shadows
-!TP_COLORTONING_SPLITCO;Shadows/Midtones/Highlights
-!TP_COLORTONING_SPLITCOCO;Color Balance Shadows/Midtones/Highlights
-!TP_COLORTONING_SPLITLR;Saturation 2 colors
-!TP_COLORTONING_STR;Strength
-!TP_COLORTONING_STRENGTH;Strength
-!TP_COLORTONING_TWO2;Special chroma '2 colors'
-!TP_COLORTONING_TWOALL;Special chroma
-!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_FIXRATIO;Lock ratio
-!TP_CROP_GTDIAGONALS;Rule of Diagonals
-!TP_CROP_GTEPASSPORT;Biometric Passport
-!TP_CROP_GTFRAME;Frame
-!TP_CROP_GTGRID;Grid
-!TP_CROP_GTHARMMEANS;Harmonic Means
-!TP_CROP_GTNONE;None
-!TP_CROP_GTRULETHIRDS;Rule of Thirds
-!TP_CROP_GTTRIANGLE1;Golden Triangles 1
-!TP_CROP_GTTRIANGLE2;Golden Triangles 2
-!TP_CROP_GUIDETYPE;Guide type:
-!TP_CROP_H;Height
-!TP_CROP_LABEL;Crop
-!TP_CROP_PPI;PPI=
-!TP_CROP_SELECTCROP;Select Crop
-!TP_CROP_W;Width
-!TP_CROP_X;X
-!TP_CROP_Y;Y
-!TP_DARKFRAME_AUTOSELECT;Auto-selection
-!TP_DARKFRAME_LABEL;Dark-Frame
-!TP_DEFRINGE_LABEL;Defringe
-!TP_DEFRINGE_RADIUS;Radius
-!TP_DEFRINGE_THRESHOLD;Threshold
-!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones
-!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global
-!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective !
-!TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Chrominance - Blue-Yellow
-!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve
-!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.
-!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance
-!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual
-!TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Chrominance - Master
-!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method
-!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings.
-!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings.
-!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones
-!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview
-!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance.
-!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3
-!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2
-!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= -
-!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3
-!TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Chrominance - Red-Green
-!TP_DIRPYRDENOISE_ENH;Enhanced mode
-!TP_DIRPYRDENOISE_ENH_TOOLTIP;Increases noise reduction quality at the expense of a 20% processing time increase.
-!TP_DIRPYRDENOISE_LABEL;Noise Reduction
-!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control
-!TP_DIRPYRDENOISE_LUMINANCE_CURVE;Luminance curve
-!TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detail recovery
-!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance
-!TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminance
-!TP_DIRPYRDENOISE_MAIN_COLORSPACE;Color space
-!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b*
-!TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB
-!TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;For raw images either RGB or L*a*b* methods can be used.\n\nFor non-raw images the L*a*b* method will be used, regardless of the selection.
-!TP_DIRPYRDENOISE_MAIN_GAMMA;Gamma
-!TP_DIRPYRDENOISE_MAIN_GAMMA_TOOLTIP;Gamma varies noise reduction strength across the range of tones. Smaller values will target shadows, while larger values will stretch the effect to the brighter tones.
-!TP_DIRPYRDENOISE_MAIN_MODE;Mode
-!TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Aggressive
-!TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Conservative
-!TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;"Conservative" preserves low frequency chroma patterns, while "aggressive" obliterates them.
-!TP_DIRPYRDENOISE_MEDIAN_METHOD;Median method
-!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only
-!TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b*
-!TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median Filter
-!TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Luminance only
-!TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB
-!TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;When using the "Luminance only" and "L*a*b*" methods, median filtering will be performed just after the wavelet step in the noise reduction pipeline.\nWhen using the "RGB" mode, it will be performed at the very end of the noise reduction pipeline.
-!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal)
-!TP_DIRPYRDENOISE_MEDIAN_PASSES;Median iterations
-!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size.
-!TP_DIRPYRDENOISE_MEDIAN_TYPE;Median type
-!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one.
-!TP_DIRPYRDENOISE_SLI;Slider
-!TP_DIRPYRDENOISE_TYPE_3X3;3×3
-!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft
-!TP_DIRPYRDENOISE_TYPE_5X5;5×5
-!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft
-!TP_DIRPYRDENOISE_TYPE_7X7;7×7
-!TP_DIRPYRDENOISE_TYPE_9X9;9×9
-!TP_DIRPYREQUALIZER_ALGO;Skin Color Range
-!TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colors of the skin, minimizing the action on other colors\nLarge: avoid more artifacts.
-!TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts
-!TP_DIRPYREQUALIZER_HUESKIN;Skin hue
-!TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;This pyramid is for the upper part, so far as the algorithm at its maximum efficiency.\nTo the lower part, the transition zones.\nIf you need to move the area significantly to the left or right - or if there are artifacts: the white balance is incorrect\nYou can slightly reduce the zone to prevent the rest of the image is affected.
-!TP_DIRPYREQUALIZER_LABEL;Contrast by Detail Levels
-!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
-!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast -
-!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast +
-!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
-!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
-!TP_DIRPYREQUALIZER_SKIN;Skin targetting/protection
-!TP_DIRPYREQUALIZER_SKIN_TOOLTIP;At -100 skin-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 skin-tones are protected while all other tones are affected.
-!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
-!TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts in the transitions between skin colors (hue, chroma, luma) and the rest of the image.
-!TP_DISTORTION_AMOUNT;Amount
-!TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera.
-!TP_DISTORTION_LABEL;Distortion Correction
-!TP_EPD_EDGESTOPPING;Edge stopping
-!TP_EPD_GAMMA;Gamma
-!TP_EPD_LABEL;Tone Mapping
-!TP_EPD_REWEIGHTINGITERATES;Reweighting iterates
-!TP_EPD_SCALE;Scale
-!TP_EPD_STRENGTH;Strength
-!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)"
-!TP_EXPOSURE_AUTOLEVELS;Auto Levels
-!TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary.
-!TP_EXPOSURE_BLACKLEVEL;Black
-!TP_EXPOSURE_BRIGHTNESS;Lightness
-!TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors
-!TP_EXPOSURE_CLIP;Clip %
-!TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation.
-!TP_EXPOSURE_COMPRHIGHLIGHTS;Highlight compression
-!TP_EXPOSURE_COMPRHIGHLIGHTSTHRESHOLD;Highlight compression threshold
-!TP_EXPOSURE_COMPRSHADOWS;Shadow compression
-!TP_EXPOSURE_CONTRAST;Contrast
-!TP_EXPOSURE_CURVEEDITOR1;Tone curve 1
-!TP_EXPOSURE_CURVEEDITOR2;Tone curve 2
-!TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;Please refer to the "Exposure > Tone Curves" RawPedia article to learn how to achieve the best results by using two tone curves.
-!TP_EXPOSURE_EXPCOMP;Exposure compensation
-!TP_EXPOSURE_HISTMATCHING;Auto-Matched Tone Curve
-!TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatically adjust sliders and curves (except exposure compensation) to match the look of the embedded JPEG thumbnail.
-!TP_EXPOSURE_LABEL;Exposure
-!TP_EXPOSURE_SATURATION;Saturation
-!TP_EXPOSURE_TCMODE_FILMLIKE;Film-like
-!TP_EXPOSURE_TCMODE_LABEL1;Curve mode 1
-!TP_EXPOSURE_TCMODE_LABEL2;Curve mode 2
-!TP_EXPOSURE_TCMODE_LUMINANCE;Luminance
-!TP_EXPOSURE_TCMODE_PERCEPTUAL;Perceptual
-!TP_EXPOSURE_TCMODE_SATANDVALBLENDING;Saturation and Value Blending
-!TP_EXPOSURE_TCMODE_STANDARD;Standard
-!TP_EXPOSURE_TCMODE_WEIGHTEDSTD;Weighted Standard
-!TP_EXPOS_BLACKPOINT_LABEL;Raw Black Points
-!TP_EXPOS_WHITEPOINT_LABEL;Raw White Points
-!TP_FILMSIMULATION_LABEL;Film Simulation
-!TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee is configured to look for Hald CLUT images, which are used for the Film Simulation tool, in a folder which is taking too long to load.\nGo to Preferences > Image Processing > Film Simulation\nto see which folder is being used. You should either point RawTherapee to a folder which contains only Hald CLUT images and nothing more, or to an empty folder if you don't want to use the Film Simulation tool.\n\nRead the Film Simulation article in RawPedia for more information.\n\nDo you want to cancel the scan now?
-!TP_FILMSIMULATION_STRENGTH;Strength
-!TP_FILMSIMULATION_ZEROCLUTSFOUND;Set HaldCLUT directory in Preferences
-!TP_FLATFIELD_AUTOSELECT;Auto-selection
-!TP_FLATFIELD_BLURRADIUS;Blur radius
-!TP_FLATFIELD_BLURTYPE;Blur type
-!TP_FLATFIELD_BT_AREA;Area
-!TP_FLATFIELD_BT_HORIZONTAL;Horizontal
-!TP_FLATFIELD_BT_VERTHORIZ;Vertical + Horizontal
-!TP_FLATFIELD_BT_VERTICAL;Vertical
-!TP_FLATFIELD_CLIPCONTROL;Clip control
-!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
-!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
-!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
-!TP_GRADIENT_CENTER;Center
-!TP_GRADIENT_CENTER_X;Center X
-!TP_GRADIENT_CENTER_X_TOOLTIP;Shift gradient to the left (negative values) or right (positive values).
-!TP_GRADIENT_CENTER_Y;Center Y
-!TP_GRADIENT_CENTER_Y_TOOLTIP;Shift gradient up (negative values) or down (positive values).
-!TP_GRADIENT_DEGREE;Angle
-!TP_GRADIENT_DEGREE_TOOLTIP;Rotation angle in degrees.
-!TP_GRADIENT_FEATHER;Feather
-!TP_GRADIENT_FEATHER_TOOLTIP;Gradient width in percent of the image diagonal.
-!TP_GRADIENT_LABEL;Graduated Filter
-!TP_GRADIENT_STRENGTH;Strength
-!TP_GRADIENT_STRENGTH_TOOLTIP;Filter strength in stops.
-!TP_HLREC_BLEND;Blend
-!TP_HLREC_CIELAB;CIELab Blending
-!TP_HLREC_COLOR;Color Propagation
-!TP_HLREC_ENA_TOOLTIP;Could be activated by Auto Levels.
-!TP_HLREC_LABEL;Highlight reconstruction
-!TP_HLREC_LUMINANCE;Luminance Recovery
-!TP_HLREC_METHOD;Method:
-!TP_HSVEQUALIZER_CHANNEL;Channel
-!TP_HSVEQUALIZER_HUE;H
-!TP_HSVEQUALIZER_LABEL;HSV Equalizer
-!TP_HSVEQUALIZER_SAT;S
-!TP_HSVEQUALIZER_VAL;V
-!TP_ICM_APPLYBASELINEEXPOSUREOFFSET;Baseline exposure
-!TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP;Employ the embedded DCP baseline exposure offset. The setting is only available if the selected DCP has one.
-!TP_ICM_APPLYHUESATMAP;Base table
-!TP_ICM_APPLYHUESATMAP_TOOLTIP;Employ the embedded DCP base table (HueSatMap). The setting is only available if the selected DCP has one.
-!TP_ICM_APPLYLOOKTABLE;Look table
-!TP_ICM_APPLYLOOKTABLE_TOOLTIP;Employ the embedded DCP look table. The setting is only available if the selected DCP has one.
-!TP_ICM_BLENDCMSMATRIX;Blend ICC highlights with matrix
-!TP_ICM_BLENDCMSMATRIX_TOOLTIP;Enable to recover clipped highlights when using LUT-based ICC profiles.
-!TP_ICM_BPC;Black Point Compensation
-!TP_ICM_DCPILLUMINANT;Illuminant
-!TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolated
-!TP_ICM_DCPILLUMINANT_TOOLTIP;Select which embedded DCP illuminant to employ. Default is "interpolated" which is a mix between the two based on white balance. The setting is only available if a dual-illuminant DCP with interpolation support is selected.
-!TP_ICM_INPUTCAMERA;Camera standard
-!TP_ICM_INPUTCAMERAICC;Auto-matched camera profile
-!TP_ICM_INPUTCAMERAICC_TOOLTIP;Use RawTherapee's camera-specific DCP or ICC input color profiles. These profiles are more precise than simpler matrix ones. They are not available for all cameras. These profiles are stored in the /iccprofiles/input and /dcpprofiles folders and are automatically retrieved based on a file name matching to the exact model name of the camera.
-!TP_ICM_INPUTCAMERA_TOOLTIP;Use a simple color matrix from dcraw, an enhanced RawTherapee version (whichever is available based on camera model) or one embedded in the DNG.
-!TP_ICM_INPUTCUSTOM;Custom
-!TP_ICM_INPUTCUSTOM_TOOLTIP;Select your own DCP/ICC color profile file for the camera.
-!TP_ICM_INPUTDLGLABEL;Select Input DCP/ICC Profile...
-!TP_ICM_INPUTEMBEDDED;Use embedded, if possible
-!TP_ICM_INPUTEMBEDDED_TOOLTIP;Use color profile embedded in non-raw files.
-!TP_ICM_INPUTNONE;No profile
-!TP_ICM_INPUTNONE_TOOLTIP;Use no input color profile at all.\nUse only in special cases.
-!TP_ICM_INPUTPROFILE;Input Profile
-!TP_ICM_LABEL;Color Management
-!TP_ICM_NOICM;No ICM: sRGB Output
-!TP_ICM_OUTPUTPROFILE;Output Profile
-!TP_ICM_PROFILEINTENT;Rendering Intent
-!TP_ICM_SAVEREFERENCE;Save Reference Image
-!TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance
-!TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles.
-!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
-!TP_ICM_TONECURVE;Tone curve
-!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
-!TP_ICM_WORKINGPROFILE;Working Profile
-!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
-!TP_IMPULSEDENOISE_THRESH;Threshold
-!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
-!TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Fit colors into gamut of the working color space and apply Munsell correction.
-!TP_LABCURVE_BRIGHTNESS;Lightness
-!TP_LABCURVE_CHROMATICITY;Chromaticity
-!TP_LABCURVE_CHROMA_TOOLTIP;To apply B&W toning, set Chromaticity to -100.
-!TP_LABCURVE_CONTRAST;Contrast
-!TP_LABCURVE_CURVEEDITOR;Luminance Curve
-!TP_LABCURVE_CURVEEDITOR_A_RANGE1;Green Saturated
-!TP_LABCURVE_CURVEEDITOR_A_RANGE2;Green Pastel
-!TP_LABCURVE_CURVEEDITOR_A_RANGE3;Red Pastel
-!TP_LABCURVE_CURVEEDITOR_A_RANGE4;Red Saturated
-!TP_LABCURVE_CURVEEDITOR_B_RANGE1;Blue Saturated
-!TP_LABCURVE_CURVEEDITOR_B_RANGE2;Blue Pastel
-!TP_LABCURVE_CURVEEDITOR_B_RANGE3;Yellow Pastel
-!TP_LABCURVE_CURVEEDITOR_B_RANGE4;Yellow Saturated
-!TP_LABCURVE_CURVEEDITOR_CC;CC
-!TP_LABCURVE_CURVEEDITOR_CC_RANGE1;Neutral
-!TP_LABCURVE_CURVEEDITOR_CC_RANGE2;Dull
-!TP_LABCURVE_CURVEEDITOR_CC_RANGE3;Pastel
-!TP_LABCURVE_CURVEEDITOR_CC_RANGE4;Saturated
-!TP_LABCURVE_CURVEEDITOR_CC_TOOLTIP;Chromaticity according to chromaticity C=f(C)
-!TP_LABCURVE_CURVEEDITOR_CH;CH
-!TP_LABCURVE_CURVEEDITOR_CH_TOOLTIP;Chromaticity according to hue C=f(H)
-!TP_LABCURVE_CURVEEDITOR_CL;CL
-!TP_LABCURVE_CURVEEDITOR_CL_TOOLTIP;Chromaticity according to luminance C=f(L)
-!TP_LABCURVE_CURVEEDITOR_HH;HH
-!TP_LABCURVE_CURVEEDITOR_HH_TOOLTIP;Hue according to hue H=f(H)
-!TP_LABCURVE_CURVEEDITOR_LC;LC
-!TP_LABCURVE_CURVEEDITOR_LC_TOOLTIP;Luminance according to chromaticity L=f(C)
-!TP_LABCURVE_CURVEEDITOR_LH;LH
-!TP_LABCURVE_CURVEEDITOR_LH_TOOLTIP;Luminance according to hue L=f(H)
-!TP_LABCURVE_CURVEEDITOR_LL_TOOLTIP;Luminance according to luminance L=f(L)
-!TP_LABCURVE_LABEL;L*a*b* Adjustments
-!TP_LABCURVE_LCREDSK;Restrict LC to red and skin-tones
-!TP_LABCURVE_LCREDSK_TIP;If enabled, the LC Curve affects only red and skin-tones.\nIf disabled, it applies to all tones.
-!TP_LABCURVE_RSTPROTECTION;Red and skin-tones protection
-!TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve.
-!TP_LENSGEOM_AUTOCROP;Auto-Crop
-!TP_LENSGEOM_FILL;Auto-fill
-!TP_LENSGEOM_LABEL;Lens / Geometry
-!TP_LENSPROFILE_LABEL;Profiled Lens Correction
-!TP_LENSPROFILE_USECA;Chromatic aberration correction
-!TP_LENSPROFILE_USEDIST;Distortion correction
-!TP_LENSPROFILE_USEVIGN;Vignetting correction
-!TP_LOCALCONTRAST_AMOUNT;Amount
-!TP_LOCALCONTRAST_DARKNESS;Darkness level
-!TP_LOCALCONTRAST_LABEL;Local Contrast
-!TP_LOCALCONTRAST_LIGHTNESS;Lightness level
-!TP_LOCALCONTRAST_RADIUS;Radius
-!TP_METADATA_EDIT;Apply modifications
-!TP_METADATA_MODE;Metadata copy mode
-!TP_METADATA_STRIP;Strip all metadata
-!TP_METADATA_TUNNEL;Copy unchanged
-!TP_NEUTRAL;Reset
-!TP_NEUTRAL_TIP;Resets exposure sliders to neutral values.\nApplies to the same controls that Auto Levels applies to, regardless of whether you used Auto Levels or not.
-!TP_PCVIGNETTE_FEATHER;Feather
-!TP_PCVIGNETTE_FEATHER_TOOLTIP;Feathering:\n0 = corners only,\n50 = halfway to center,\n100 = to center.
-!TP_PCVIGNETTE_LABEL;Vignette Filter
-!TP_PCVIGNETTE_ROUNDNESS;Roundness
-!TP_PCVIGNETTE_ROUNDNESS_TOOLTIP;Roundness:\n0 = rectangle,\n50 = fitted ellipse,\n100 = circle.
-!TP_PCVIGNETTE_STRENGTH;Strength
-!TP_PCVIGNETTE_STRENGTH_TOOLTIP;Filter strength in stops (reached in corners).
-!TP_PERSPECTIVE_HORIZONTAL;Horizontal
-!TP_PERSPECTIVE_LABEL;Perspective
-!TP_PERSPECTIVE_VERTICAL;Vertical
-!TP_PFCURVE_CURVEEDITOR_CH;Hue
-!TP_PFCURVE_CURVEEDITOR_CH_TOOLTIP;Controls defringe strength by color.\nHigher = more,\nLower = less.
-!TP_PREPROCESS_DEADPIXFILT;Dead pixel filter
-!TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Tries to suppress dead pixels.
-!TP_PREPROCESS_GREENEQUIL;Green equilibration
-!TP_PREPROCESS_HOTPIXFILT;Hot pixel filter
-!TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Tries to suppress hot pixels.
-!TP_PREPROCESS_LABEL;Preprocessing
-!TP_PREPROCESS_LINEDENOISE;Line noise filter
-!TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction
-!TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both
-!TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal
-!TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows
-!TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical
-!TP_PREPROCESS_NO_FOUND;None found
-!TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
-!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
-!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
-!TP_RAWCACORR_AUTO;Auto-correction
-!TP_RAWCACORR_CABLUE;Blue
-!TP_RAWCACORR_CARED;Red
-!TP_RAWCACORR_CASTR;Strength
-!TP_RAWEXPOS_BLACKS;Black Levels
-!TP_RAWEXPOS_BLACK_0;Green 1 (lead)
-!TP_RAWEXPOS_BLACK_1;Red
-!TP_RAWEXPOS_BLACK_2;Blue
-!TP_RAWEXPOS_BLACK_3;Green 2
-!TP_RAWEXPOS_BLACK_BLUE;Blue
-!TP_RAWEXPOS_BLACK_GREEN;Green
-!TP_RAWEXPOS_BLACK_RED;Red
-!TP_RAWEXPOS_LINEAR;White-point correction
-!TP_RAWEXPOS_PRESER;Highlight preservation
-!TP_RAWEXPOS_RGB;Red, Green, Blue
-!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
-!TP_RAW_AHD;AHD
-!TP_RAW_AMAZE;AMaZE
-!TP_RAW_DCB;DCB
-!TP_RAW_DCBENHANCE;DCB enhancement
-!TP_RAW_DCBITERATIONS;Number of DCB iterations
-!TP_RAW_DMETHOD;Method
-!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
-!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
-!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
-!TP_RAW_EAHD;EAHD
-!TP_RAW_FALSECOLOR;False color suppression steps
-!TP_RAW_FAST;Fast
-!TP_RAW_HD;Threshold
-!TP_RAW_HD_TOOLTIP;Lower values make hot/dead pixel detection more aggressive, but false positives may lead to artifacts. If you notice any artifacts appearing when enabling the Hot/Dead Pixel Filters, gradually increase the threshold value until they disappear.
-!TP_RAW_HPHD;HPHD
-!TP_RAW_IGV;IGV
-!TP_RAW_IMAGENUM;Sub-image
-!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
-!TP_RAW_LABEL;Demosaicing
-!TP_RAW_LMMSE;LMMSE
-!TP_RAW_LMMSEITERATIONS;LMMSE enhancement steps
-!TP_RAW_LMMSE_TOOLTIP;Adds gamma (step 1), median (steps 2-4) and refinement (steps 5-6) to reduce artifacts and improve the signal-to-noise ratio.
-!TP_RAW_MONO;Mono
-!TP_RAW_NONE;None (Shows sensor pattern)
-!TP_RAW_PIXELSHIFT;Pixel Shift
-!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
-!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
-!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
-!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
-!TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Equalize per channel
-!TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Enabled: Equalize the RGB channels individually.\nDisabled: Use same equalization factor for all channels.
-!TP_RAW_PIXELSHIFTEQUALBRIGHT_TOOLTIP;Equalize the brightness of the frames to the brightness of the selected frame.\nIf there are overexposed areas in the frames select the brightest frame to avoid magenta color cast in overexposed areas or enable motion correction.
-!TP_RAW_PIXELSHIFTGREEN;Check green channel for motion
-!TP_RAW_PIXELSHIFTHOLEFILL;Fill holes in motion mask
-!TP_RAW_PIXELSHIFTHOLEFILL_TOOLTIP;Fill holes in motion mask
-!TP_RAW_PIXELSHIFTLMMSE;Use LMMSE for moving parts
-!TP_RAW_PIXELSHIFTLMMSE_TOOLTIP;Use LMMSE instead of AMaZE for areas of motion.\nUseful for high ISO images.
-!TP_RAW_PIXELSHIFTMEDIAN;Use median for moving parts
-!TP_RAW_PIXELSHIFTMEDIAN_TOOLTIP;Use median of all frames instead of selected frame for regions with motion.\nRemoves objects which are at different places in all frames.\nGives motion effect on slow moving (overlapping) objects.
-!TP_RAW_PIXELSHIFTMM_AUTO;Automatic
-!TP_RAW_PIXELSHIFTMM_CUSTOM;Custom
-!TP_RAW_PIXELSHIFTMM_OFF;Off
-!TP_RAW_PIXELSHIFTMOTIONMETHOD;Motion Correction
-!TP_RAW_PIXELSHIFTMOTION_TOOLTIP;0 means no motion detection.\n1 - 99 means motion will be detected according to this value. Increase value to increase detection rate.\n100 means the AMaZE-demosaiced frame will be used.
-!TP_RAW_PIXELSHIFTNONGREENCROSS;Check red/blue channels for motion
-!TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask
-!TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY;Show only motion mask
-!TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY_TOOLTIP;Shows the motion mask without the image.
-!TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion.
-!TP_RAW_PIXELSHIFTSIGMA;Blur radius
-!TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;The default radius of 1.0 usually fits well for base ISO.\nIncrease the value for high ISO shots, 5.0 is a good starting point.\nWatch the motion mask while changing the value.
-!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
-!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
-!TP_RAW_RCD;RCD
-!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
-!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
-!TP_RAW_VNG4;VNG4
-!TP_RESIZE_APPLIESTO;Applies to:
-!TP_RESIZE_CROPPEDAREA;Cropped Area
-!TP_RESIZE_FITBOX;Bounding Box
-!TP_RESIZE_FULLIMAGE;Full Image
-!TP_RESIZE_H;Height:
-!TP_RESIZE_HEIGHT;Height
-!TP_RESIZE_LABEL;Resize
-!TP_RESIZE_LANCZOS;Lanczos
-!TP_RESIZE_METHOD;Method:
-!TP_RESIZE_NEAREST;Nearest
-!TP_RESIZE_SCALE;Scale
-!TP_RESIZE_SPECIFY;Specify:
-!TP_RESIZE_W;Width:
-!TP_RESIZE_WIDTH;Width
-!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
-!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
-!TP_RETINEX_CONTEDIT_LH;Hue equalizer
-!TP_RETINEX_CONTEDIT_MAP;Mask equalizer
-!TP_RETINEX_CURVEEDITOR_CD;L=f(L)
-!TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts.
-!TP_RETINEX_CURVEEDITOR_LH;Strength=f(H)
-!TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Strength according to hue Strength=f(H)\nThis curve also acts on chroma when using the "Highlight" retinex method.
-!TP_RETINEX_CURVEEDITOR_MAP;L=f(L)
-!TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts!
-!TP_RETINEX_EQUAL;Equalizer
-!TP_RETINEX_FREEGAMMA;Free gamma
-!TP_RETINEX_GAIN;Gain
-!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
-!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
-!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
-!TP_RETINEX_GAMMA;Gamma
-!TP_RETINEX_GAMMA_FREE;Free
-!TP_RETINEX_GAMMA_HIGH;High
-!TP_RETINEX_GAMMA_LOW;Low
-!TP_RETINEX_GAMMA_MID;Middle
-!TP_RETINEX_GAMMA_NONE;None
-!TP_RETINEX_GAMMA_TOOLTIP;Restore tones by applying gamma before and after Retinex. Different from Retinex curves or others curves (Lab, Exposure, etc.).
-!TP_RETINEX_GRAD;Transmission gradient
-!TP_RETINEX_GRADS;Strength gradient
-!TP_RETINEX_GRADS_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Strength is reduced when iterations increase, and conversely.
-!TP_RETINEX_GRAD_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Variance and Threshold are reduced when iterations increase, and conversely.
-!TP_RETINEX_HIGH;High
-!TP_RETINEX_HIGHLIG;Highlight
-!TP_RETINEX_HIGHLIGHT;Highlight threshold
-!TP_RETINEX_HIGHLIGHT_TOOLTIP;Increase action of High algorithm.\nMay require you to re-adjust "Neighboring pixels" and to increase the "White-point correction" in the Raw tab -> Raw White Points tool.
-!TP_RETINEX_HSLSPACE_LIN;HSL-Linear
-!TP_RETINEX_HSLSPACE_LOG;HSL-Logarithmic
-!TP_RETINEX_ITER;Iterations (Tone-mapping)
-!TP_RETINEX_ITERF;Tone mapping
-!TP_RETINEX_ITER_TOOLTIP;Simulate a tone-mapping operator.\nHigh values increase the processing time.
-!TP_RETINEX_LABEL;Retinex
-!TP_RETINEX_LABEL_MASK;Mask
-!TP_RETINEX_LABSPACE;L*a*b*
-!TP_RETINEX_LOW;Low
-!TP_RETINEX_MAP;Mask method
-!TP_RETINEX_MAP_GAUS;Gaussian mask
-!TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial)
-!TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total)
-!TP_RETINEX_MAP_METHOD_TOOLTIP;Use the mask generated by the Gaussian function above (Radius, Method) to reduce halos and artifacts.\n\nCurve only: apply a diagonal contrast curve on the mask.\nBeware of artifacts!\n\nGaussian mask: generate and use a Gaussian blur of the original mask.\nQuick.\n\nSharp mask: generate and use a wavelet on the original mask.\nSlow.
-!TP_RETINEX_MAP_NONE;None
-!TP_RETINEX_MEDIAN;Transmission median filter
-!TP_RETINEX_METHOD;Method
-!TP_RETINEX_METHOD_TOOLTIP;Low = Reinforce low light.\nUniform = Equalize action.\nHigh = Reinforce high light.\nHighlights = Remove magenta in highlights.
-!TP_RETINEX_MLABEL;Restored haze-free Min=%1 Max=%2
-!TP_RETINEX_MLABEL_TOOLTIP;Should be near min=0 max=32768\nRestored image with no mixture.
-!TP_RETINEX_NEIGHBOR;Radius
-!TP_RETINEX_NEUTRAL;Reset
-!TP_RETINEX_NEUTRAL_TIP;Reset all sliders and curves to their default values.
-!TP_RETINEX_OFFSET;Offset (brightness)
-!TP_RETINEX_SCALES;Gaussian gradient
-!TP_RETINEX_SCALES_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Scale and radius are reduced when iterations increase, and conversely.
-!TP_RETINEX_SETTINGS;Settings
-!TP_RETINEX_SKAL;Scale
-!TP_RETINEX_SLOPE;Free gamma slope
-!TP_RETINEX_STRENGTH;Strength
-!TP_RETINEX_THRESHOLD;Threshold
-!TP_RETINEX_THRESHOLD_TOOLTIP;Limits in/out.\nIn = image source,\nOut = image gauss.
-!TP_RETINEX_TLABEL;TM Min=%1 Max=%2 Mean=%3 Sigma=%4
-!TP_RETINEX_TLABEL2;TM Tm=%1 TM=%2
-!TP_RETINEX_TLABEL_TOOLTIP;Transmission map result.\nMin and Max are used by Variance.\nMean and Sigma.\nTm=Min TM=Max of transmission map.
-!TP_RETINEX_TRANF;Transmission
-!TP_RETINEX_TRANSMISSION;Transmission map
-!TP_RETINEX_TRANSMISSION_TOOLTIP;Transmission according to transmission.\nAbscissa: transmission from negative values (min), mean, and positives values (max).\nOrdinate: amplification or reduction.
-!TP_RETINEX_UNIFORM;Uniform
-!TP_RETINEX_VARIANCE;Contrast
-!TP_RETINEX_VARIANCE_TOOLTIP;Low variance increase local contrast and saturation, but can lead to artifacts.
-!TP_RETINEX_VIEW;Process
-!TP_RETINEX_VIEW_MASK;Mask
-!TP_RETINEX_VIEW_METHOD_TOOLTIP;Standard - Normal display.\nMask - Displays the mask.\nUnsharp mask - Displays the image with a high radius unsharp mask.\nTransmission - Auto/Fixed - Displays the file transmission-map, before any action on contrast and brightness.\n\nAttention: the mask does not correspond to reality, but is amplified to make it more visible.
-!TP_RETINEX_VIEW_NONE;Standard
-!TP_RETINEX_VIEW_TRAN;Transmission - Auto
-!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
-!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
-!TP_RGBCURVES_BLUE;B
-!TP_RGBCURVES_CHANNEL;Channel
-!TP_RGBCURVES_GREEN;G
-!TP_RGBCURVES_LABEL;RGB Curves
-!TP_RGBCURVES_LUMAMODE;Luminosity mode
-!TP_RGBCURVES_LUMAMODE_TOOLTIP;Luminosity mode allows to vary the contribution of R, G and B channels to the luminosity of the image, without altering image color.
-!TP_RGBCURVES_RED;R
-!TP_ROTATE_DEGREE;Degree
-!TP_ROTATE_LABEL;Rotate
-!TP_ROTATE_SELECTLINE;Select Straight Line
-!TP_SAVEDIALOG_OK_TIP;Shortcut: Ctrl-Enter
-!TP_SHADOWSHLIGHTS_HIGHLIGHTS;Highlights
-!TP_SHADOWSHLIGHTS_HLTONALW;Highlights tonal width
-!TP_SHADOWSHLIGHTS_LABEL;Shadows/Highlights
-!TP_SHADOWSHLIGHTS_LOCALCONTR;Local contrast
-!TP_SHADOWSHLIGHTS_RADIUS;Radius
-!TP_SHADOWSHLIGHTS_SHADOWS;Shadows
-!TP_SHADOWSHLIGHTS_SHARPMASK;Sharp mask
-!TP_SHADOWSHLIGHTS_SHTONALW;Shadows tonal width
-!TP_SHARPENEDGE_AMOUNT;Quantity
-!TP_SHARPENEDGE_LABEL;Edges
-!TP_SHARPENEDGE_PASSES;Iterations
-!TP_SHARPENEDGE_THREE;Luminance only
-!TP_SHARPENING_AMOUNT;Amount
-!TP_SHARPENING_EDRADIUS;Radius
-!TP_SHARPENING_EDTOLERANCE;Edge tolerance
-!TP_SHARPENING_HALOCONTROL;Halo control
-!TP_SHARPENING_HCAMOUNT;Amount
-!TP_SHARPENING_LABEL;Sharpening
-!TP_SHARPENING_METHOD;Method
-!TP_SHARPENING_ONLYEDGES;Sharpen only edges
-!TP_SHARPENING_RADIUS;Radius
-!TP_SHARPENING_RLD;RL Deconvolution
-!TP_SHARPENING_RLD_AMOUNT;Amount
-!TP_SHARPENING_RLD_DAMPING;Damping
-!TP_SHARPENING_RLD_ITERATIONS;Iterations
-!TP_SHARPENING_THRESHOLD;Threshold
-!TP_SHARPENING_USM;Unsharp Mask
-!TP_SHARPENMICRO_AMOUNT;Quantity
-!TP_SHARPENMICRO_LABEL;Microcontrast
-!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
-!TP_SHARPENMICRO_UNIFORMITY;Uniformity
-!TP_TM_FATTAL_AMOUNT;Amount
-!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
-!TP_TM_FATTAL_THRESHOLD;Threshold
-!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
-!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
-!TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones
-!TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE1;Red/Purple
-!TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE2;Red
-!TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE3;Red/Yellow
-!TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE4;Yellow
-!TP_VIBRANCE_CURVEEDITOR_SKINTONES_TOOLTIP;Hue according to hue H=f(H)
-!TP_VIBRANCE_LABEL;Vibrance
-!TP_VIBRANCE_PASTELS;Pastel Tones
-!TP_VIBRANCE_PASTSATTOG;Link pastel and saturated tones
-!TP_VIBRANCE_PROTECTSKINS;Protect skin-tones
-!TP_VIBRANCE_PSTHRESHOLD;Pastel/saturated tones threshold
-!TP_VIBRANCE_PSTHRESHOLD_SATTHRESH;Saturation threshold
-!TP_VIBRANCE_PSTHRESHOLD_TOOLTIP;The vertical axis represents pastel tones at the bottom and saturated tones at the top.\nThe horizontal axis represents the saturation range.
-!TP_VIBRANCE_PSTHRESHOLD_WEIGTHING;Pastel/saturated transition's weighting
-!TP_VIBRANCE_SATURATED;Saturated Tones
-!TP_VIGNETTING_AMOUNT;Amount
-!TP_VIGNETTING_CENTER;Center
-!TP_VIGNETTING_CENTER_X;Center X
-!TP_VIGNETTING_CENTER_Y;Center Y
-!TP_VIGNETTING_LABEL;Vignetting Correction
-!TP_VIGNETTING_RADIUS;Radius
-!TP_VIGNETTING_STRENGTH;Strength
-!TP_WAVELET_1;Level 1
-!TP_WAVELET_2;Level 2
-!TP_WAVELET_3;Level 3
-!TP_WAVELET_4;Level 4
-!TP_WAVELET_5;Level 5
-!TP_WAVELET_6;Level 6
-!TP_WAVELET_7;Level 7
-!TP_WAVELET_8;Level 8
-!TP_WAVELET_9;Level 9
-!TP_WAVELET_APPLYTO;Apply To
-!TP_WAVELET_AVOID;Avoid color shift
-!TP_WAVELET_B0;Black
-!TP_WAVELET_B1;Grey
-!TP_WAVELET_B2;Residual
-!TP_WAVELET_BACKGROUND;Background
-!TP_WAVELET_BACUR;Curve
-!TP_WAVELET_BALANCE;Contrast balance d/v-h
-!TP_WAVELET_BALANCE_TOOLTIP;Alters the balance between the wavelet directions: vertical-horizontal and diagonal.\nIf contrast, chroma or residual tone mapping are activated, the effect due to balance is amplified.
-!TP_WAVELET_BALCHRO;Chroma balance
-!TP_WAVELET_BALCHRO_TOOLTIP;If enabled, the 'Contrast balance' curve or slider also modifies chroma balance.
-!TP_WAVELET_BANONE;None
-!TP_WAVELET_BASLI;Slider
-!TP_WAVELET_BATYPE;Contrast balance method
-!TP_WAVELET_CBENAB;Toning and Color Balance
-!TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted
-!TP_WAVELET_CCURVE;Local contrast
-!TP_WAVELET_CH1;Whole chroma range
-!TP_WAVELET_CH2;Saturated/pastel
-!TP_WAVELET_CH3;Link contrast levels
-!TP_WAVELET_CHCU;Curve
-!TP_WAVELET_CHR;Chroma-contrast link strength
-!TP_WAVELET_CHRO;Saturated/pastel threshold
-!TP_WAVELET_CHRO_TOOLTIP;Sets the wavelet level which will be the threshold between saturated and pastel colors.\n1-x: saturated\nx-9: pastel\n\nIf the value exceeds the amount of wavelet levels you are using then it will be ignored.
-!TP_WAVELET_CHR_TOOLTIP;Adjusts chroma as a function of "contrast levels" and "chroma-contrast link strength"
-!TP_WAVELET_CHSL;Sliders
-!TP_WAVELET_CHTYPE;Chrominance method
-!TP_WAVELET_COLORT;Opacity Red-Green
-!TP_WAVELET_COMPCONT;Contrast
-!TP_WAVELET_COMPGAMMA;Compression gamma
-!TP_WAVELET_COMPGAMMA_TOOLTIP;Adjusting the gamma of the residual image allows you to equilibrate the data and histogram.
-!TP_WAVELET_COMPTM;Tone mapping
-!TP_WAVELET_CONTEDIT;'After' contrast curve
-!TP_WAVELET_CONTR;Gamut
-!TP_WAVELET_CONTRA;Contrast
-!TP_WAVELET_CONTRAST_MINUS;Contrast -
-!TP_WAVELET_CONTRAST_PLUS;Contrast +
-!TP_WAVELET_CONTRA_TOOLTIP;Changes contrast of the residual image.
-!TP_WAVELET_CTYPE;Chrominance control
-!TP_WAVELET_CURVEEDITOR_CC_TOOLTIP;Modifies local contrast as a function of the original local contrast (abscissa).\nLow abscissa values represent small local contrast (real values about 10..20).\n50% abscissa represents average local contrast (real value about 100..300).\n66% abscissa represents standard deviation of local contrast (real value about 300..800).\n100% abscissa represents maximum local contrast (real value about 3000..8000).
-!TP_WAVELET_CURVEEDITOR_CH;Contrast levels=f(Hue)
-!TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Modifies each level's contrast as a function of hue.\nTake care not to overwrite changes made with the Gamut sub-tool's hue controls.\nThe curve will only have an effect when wavelet contrast level sliders are non-zero.
-!TP_WAVELET_CURVEEDITOR_CL;L
-!TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Applies a final contrast luminance curve at the end of the wavelet treatment.
-!TP_WAVELET_CURVEEDITOR_HH;HH
-!TP_WAVELET_CURVEEDITOR_HH_TOOLTIP;Modifies the residual image's hue as a function of hue.
-!TP_WAVELET_DALL;All directions
-!TP_WAVELET_DAUB;Edge performance
-!TP_WAVELET_DAUB2;D2 - low
-!TP_WAVELET_DAUB4;D4 - standard
-!TP_WAVELET_DAUB6;D6 - standard plus
-!TP_WAVELET_DAUB10;D10 - medium
-!TP_WAVELET_DAUB14;D14 - high
-!TP_WAVELET_DAUB_TOOLTIP;Changes Daubechies coefficients:\nD4 = Standard,\nD14 = Often best performance, 10% more time-intensive.\n\nAffects edge detection as well as the general quality of the firsts levels. However the quality is not strictly related to this coefficient and can vary with images and uses.
-!TP_WAVELET_DONE;Vertical
-!TP_WAVELET_DTHR;Diagonal
-!TP_WAVELET_DTWO;Horizontal
-!TP_WAVELET_EDCU;Curve
-!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
-!TP_WAVELET_EDGE;Edge Sharpness
-!TP_WAVELET_EDGEAMPLI;Base amplification
-!TP_WAVELET_EDGEDETECT;Gradient sensitivity
-!TP_WAVELET_EDGEDETECTTHR;Threshold low (noise)
-!TP_WAVELET_EDGEDETECTTHR2;Threshold high (detection)
-!TP_WAVELET_EDGEDETECTTHR_TOOLTIP;This adjuster lets you target edge detection for example to avoid applying edge sharpness to fine details, such as noise in the sky.
-!TP_WAVELET_EDGEDETECT_TOOLTIP;Moving the slider to the right increases edge sensitivity. This affects local contrast, edge settings and noise.
-!TP_WAVELET_EDGESENSI;Edge sensitivity
-!TP_WAVELET_EDGREINF_TOOLTIP;Reinforce or reduce the action of the first level, do the opposite to the second level, and leave the rest unchanged.
-!TP_WAVELET_EDGTHRESH;Detail
-!TP_WAVELET_EDGTHRESH_TOOLTIP;Change the repartition between the first levels and the others. The higher the threshold the more the action is centered on the first levels. Be careful with negative values, they increase the action of high levels and can introduce artifacts.
-!TP_WAVELET_EDRAD;Radius
-!TP_WAVELET_EDRAD_TOOLTIP;This radius adjustment is very different from those in other sharpening tools. Its value is compared to each level through a complex function. In this sense, a value of zero still has an effect.
-!TP_WAVELET_EDSL;Threshold Sliders
-!TP_WAVELET_EDTYPE;Local contrast method
-!TP_WAVELET_EDVAL;Strength
-!TP_WAVELET_FINAL;Final Touchup
-!TP_WAVELET_FINEST;Finest
-!TP_WAVELET_HIGHLIGHT;Highlight luminance range
-!TP_WAVELET_HS1;Whole luminance range
-!TP_WAVELET_HS2;Shadows/Highlights
-!TP_WAVELET_HUESKIN;Skin hue
-!TP_WAVELET_HUESKIN_TOOLTIP;The bottom points set the beginning of the transition zone, and the upper points the end of it, where the effect is at its maximum.\n\nIf you need to move the area significantly, or if there are artifacts, then the white balance is incorrect.
-!TP_WAVELET_HUESKY;Sky hue
-!TP_WAVELET_HUESKY_TOOLTIP;The bottom points set the beginning of the transition zone, and the upper points the end of it, where the effect is at its maximum.\n\nIf you need to move the area significantly, or if there are artifacts, then the white balance is incorrect.
-!TP_WAVELET_ITER;Delta balance levels
-!TP_WAVELET_ITER_TOOLTIP;Left: increase low levels and reduce high levels,\nRight: reduce low levels and increase high levels.
-!TP_WAVELET_LABEL;Wavelet Levels
-!TP_WAVELET_LARGEST;Coarsest
-!TP_WAVELET_LEVCH;Chroma
-!TP_WAVELET_LEVDIR_ALL;All levels in all directions
-!TP_WAVELET_LEVDIR_INF;Below or equal the level
-!TP_WAVELET_LEVDIR_ONE;One level
-!TP_WAVELET_LEVDIR_SUP;Above the level
-!TP_WAVELET_LEVELS;Wavelet levels
-!TP_WAVELET_LEVELS_TOOLTIP;Choose the number of detail levels the image is to be decomposed into. More levels require more RAM and require a longer processing time.
-!TP_WAVELET_LEVF;Contrast
-!TP_WAVELET_LEVLABEL;Preview maximum possible levels = %1
-!TP_WAVELET_LEVONE;Level 2
-!TP_WAVELET_LEVTHRE;Level 4
-!TP_WAVELET_LEVTWO;Level 3
-!TP_WAVELET_LEVZERO;Level 1
-!TP_WAVELET_LINKEDG;Link with Edge Sharpness' Strength
-!TP_WAVELET_LIPST;Enhanced algoritm
-!TP_WAVELET_LOWLIGHT;Shadow luminance range
-!TP_WAVELET_MEDGREINF;First level
-!TP_WAVELET_MEDI;Reduce artifacts in blue sky
-!TP_WAVELET_MEDILEV;Edge detection
-!TP_WAVELET_MEDILEV_TOOLTIP;When you enable Edge Detection, it is recommanded:\n- to disabled low contrast levels to avoid artifacts,\n- to use high values of gradient sensitivity.\n\nYou can modulate the strength with 'refine' from Denoise and Refine.
-!TP_WAVELET_NEUTRAL;Neutral
-!TP_WAVELET_NOIS;Denoise
-!TP_WAVELET_NOISE;Denoise and Refine
-!TP_WAVELET_NPHIGH;High
-!TP_WAVELET_NPLOW;Low
-!TP_WAVELET_NPNONE;None
-!TP_WAVELET_NPTYPE;Neighboring pixels
-!TP_WAVELET_NPTYPE_TOOLTIP;This algorithm uses the proximity of a pixel and eight of its neighbors. If less difference, edges are reinforced.
-!TP_WAVELET_OPACITY;Opacity Blue-Yellow
-!TP_WAVELET_OPACITYW;Contrast balance d/v-h curve
-!TP_WAVELET_OPACITYWL;Final local contrast
-!TP_WAVELET_OPACITYWL_TOOLTIP;Modify the final local contrast at the end of the wavelet treatment.\n\nThe left side represents the smallest local contrast, progressing to the largest local contrast on the right.
-!TP_WAVELET_PASTEL;Pastel chroma
-!TP_WAVELET_PROC;Process
-!TP_WAVELET_RE1;Reinforced
-!TP_WAVELET_RE2;Unchanged
-!TP_WAVELET_RE3;Reduced
-!TP_WAVELET_RESCHRO;Chroma
-!TP_WAVELET_RESCON;Shadows
-!TP_WAVELET_RESCONH;Highlights
-!TP_WAVELET_RESID;Residual Image
-!TP_WAVELET_SAT;Saturated chroma
-!TP_WAVELET_SETTINGS;Wavelet Settings
-!TP_WAVELET_SKIN;Skin targetting/protection
-!TP_WAVELET_SKIN_TOOLTIP;At -100 skin-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 skin-tones are protected while all other tones are affected.
-!TP_WAVELET_SKY;Sky targetting/protection
-!TP_WAVELET_SKY_TOOLTIP;At -100 sky-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 sky-tones are protected while all other tones are affected.
-!TP_WAVELET_STREN;Strength
-!TP_WAVELET_STRENGTH;Strength
-!TP_WAVELET_SUPE;Extra
-!TP_WAVELET_THR;Shadows threshold
-!TP_WAVELET_THRESHOLD;Highlight levels
-!TP_WAVELET_THRESHOLD2;Shadow levels
-!TP_WAVELET_THRESHOLD2_TOOLTIP;Only levels between 9 and 9 minus the value will be affected by the shadow luminance range. Other levels will be fully treated. The highest level possible is limited by the highlight level value (9 minus highlight level value).
-!TP_WAVELET_THRESHOLD_TOOLTIP;Only levels beyond the chosen value will be affected by the highlight luminance range. Other levels will be fully treated. The chosen value here limits the highest possible value of the shadow levels.
-!TP_WAVELET_THRH;Highlights threshold
-!TP_WAVELET_TILESBIG;Big tiles
-!TP_WAVELET_TILESFULL;Full image
-!TP_WAVELET_TILESIZE;Tiling method
-!TP_WAVELET_TILESLIT;Little tiles
-!TP_WAVELET_TILES_TOOLTIP;Processing the full image leads to better quality and is the recommended option, while using tiles is a fall-back solution for users with little RAM. Refer to RawPedia for memory requirements.
-!TP_WAVELET_TMSTRENGTH;Compression strength
-!TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out.
-!TP_WAVELET_TMTYPE;Compression method
-!TP_WAVELET_TON;Toning
-!TP_WBALANCE_AUTO;Auto
-!TP_WBALANCE_CAMERA;Camera
-!TP_WBALANCE_CLOUDY;Cloudy
-!TP_WBALANCE_CUSTOM;Custom
-!TP_WBALANCE_DAYLIGHT;Daylight (sunny)
-!TP_WBALANCE_EQBLUERED;Blue/Red equalizer
-!TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behavior of "white balance" by modulating the blue/red balance.\nThis can be useful when shooting conditions:\na) are far from the standard illuminant (e.g. underwater),\nb) are far from conditions where calibrations were performed,\nc) where the matrices or ICC profiles are unsuitable.
-!TP_WBALANCE_FLASH55;Leica
-!TP_WBALANCE_FLASH60;Standard, Canon, Pentax, Olympus
-!TP_WBALANCE_FLASH65;Nikon, Panasonic, Sony, Minolta
-!TP_WBALANCE_FLASH_HEADER;Flash
-!TP_WBALANCE_FLUO1;F1 - Daylight
-!TP_WBALANCE_FLUO2;F2 - Cool White
-!TP_WBALANCE_FLUO3;F3 - White
-!TP_WBALANCE_FLUO4;F4 - Warm White
-!TP_WBALANCE_FLUO5;F5 - Daylight
-!TP_WBALANCE_FLUO6;F6 - Lite White
-!TP_WBALANCE_FLUO7;F7 - D65 Daylight Simulator
-!TP_WBALANCE_FLUO8;F8 - D50 / Sylvania F40 Design
-!TP_WBALANCE_FLUO9;F9 - Cool White Deluxe
-!TP_WBALANCE_FLUO10;F10 - Philips TL85
-!TP_WBALANCE_FLUO11;F11 - Philips TL84
-!TP_WBALANCE_FLUO12;F12 - Philips TL83
-!TP_WBALANCE_FLUO_HEADER;Fluorescent
-!TP_WBALANCE_GREEN;Tint
-!TP_WBALANCE_GTI;GTI
-!TP_WBALANCE_HMI;HMI
-!TP_WBALANCE_JUDGEIII;JudgeIII
-!TP_WBALANCE_LABEL;White Balance
-!TP_WBALANCE_LAMP_HEADER;Lamp
-!TP_WBALANCE_LED_CRS;CRS SP12 WWMR16
-!TP_WBALANCE_LED_HEADER;LED
-!TP_WBALANCE_LED_LSI;LSI Lumelex 2040
-!TP_WBALANCE_METHOD;Method
-!TP_WBALANCE_SHADE;Shade
-!TP_WBALANCE_SIZE;Size:
-!TP_WBALANCE_SOLUX35;Solux 3500K
-!TP_WBALANCE_SOLUX41;Solux 4100K
-!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
-!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
-!TP_WBALANCE_SPOTWB;Spot WB
-!TP_WBALANCE_TEMPBIAS;AWB temperature bias
-!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
-!TP_WBALANCE_TEMPERATURE;Temperature
-!TP_WBALANCE_TUNGSTEN;Tungsten
-!TP_WBALANCE_WATER1;UnderWater 1
-!TP_WBALANCE_WATER2;UnderWater 2
-!TP_WBALANCE_WATER_HEADER;UnderWater
-!ZOOMPANEL_100;(100%)
-!ZOOMPANEL_NEWCROPWINDOW;Open (new) detail window
-!ZOOMPANEL_ZOOM100;Zoom to 100%\nShortcut: z
-!ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: f
-!ZOOMPANEL_ZOOMFITSCREEN;Fit whole image to screen\nShortcut: Alt-f
-!ZOOMPANEL_ZOOMIN;Zoom In\nShortcut: +
-!ZOOMPANEL_ZOOMOUT;Zoom Out\nShortcut: -
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
+!PARTIALPASTE_RAW_BORDER;Raw border
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_BORDER;Border
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_RCDVNG4;RCD+VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian
index 98ab8d812..f79a3a6a5 100644
--- a/rtdata/languages/Russian
+++ b/rtdata/languages/Russian
@@ -483,9 +483,6 @@ HISTORY_MSG_250;ПШ: Улучшенный
HISTORY_MSG_251;Ч&Б: Алгоритм
HISTORY_MSG_277;--неиспользуемый--
HISTORY_MSG_300;-
-HISTORY_MSG_488;Отображение тонов HDR
-HISTORY_MSG_489;HDR: Порог
-HISTORY_MSG_490;HDR: Величина
HISTORY_MSG_491;Баланс белого
HISTORY_MSG_492;Кривые RGB
HISTORY_MSG_493;Настройки L*a*b*
@@ -496,7 +493,6 @@ HISTORY_MSG_LOCALCONTRAST_ENABLED;Лок.контраст
HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Лок.контраст: Светлые тона
HISTORY_MSG_LOCALCONTRAST_RADIUS;Лок.контраст: Радиус
HISTORY_MSG_METADATA_MODE;Режим копирования метаданных
-HISTORY_MSG_TM_FATTAL_ANCHOR;HDR: Точка привязки
HISTORY_NEWSNAPSHOT;Добавить
HISTORY_NEWSNAPSHOT_TOOLTIP;Горячая клавиша: Alt-s
HISTORY_SNAPSHOT;Снимок
@@ -665,7 +661,6 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Тени/света
PARTIALPASTE_SHARPENEDGE;Края
PARTIALPASTE_SHARPENING;Повышение резкости
PARTIALPASTE_SHARPENMICRO;Микроконтраст
-PARTIALPASTE_TM_FATTAL;Отображение тонов HDR
PARTIALPASTE_VIBRANCE;Красочность
PARTIALPASTE_VIGNETTING;Коррекция виньетирования
PARTIALPASTE_WHITEBALANCE;Баланс белого
@@ -1320,9 +1315,6 @@ TP_SHARPENMICRO_AMOUNT;Величина
TP_SHARPENMICRO_LABEL;Микроконтраст
TP_SHARPENMICRO_MATRIX;Матрица 3×3 вместо 5×5
TP_SHARPENMICRO_UNIFORMITY;Равномерность
-TP_TM_FATTAL_AMOUNT;Величина
-TP_TM_FATTAL_LABEL;Отображение тонов HDR
-TP_TM_FATTAL_THRESHOLD;Порог
TP_VIBRANCE_AVOIDCOLORSHIFT;Избегать сдвига цветов
TP_VIBRANCE_CURVEEDITOR_SKINTONES;ОО
TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Оттенки кожи
@@ -1648,10 +1640,23 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1679,6 +1684,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking.
!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%.
!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.
@@ -1689,11 +1695,15 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1940,11 +1950,18 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!TP_RAWEXPOS_BLACK_GREEN;Green
!TP_RAWEXPOS_BLACK_RED;Red
!TP_RAWEXPOS_RGB;Red, Green, Blue
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_IMAGENUM;Sub-image
!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts.
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1972,7 +1989,9 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;The default radius of 1.0 usually fits well for base ISO.\nIncrease the value for high ISO shots, 5.0 is a good starting point.\nWatch the motion mask while changing the value.
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_RCDVNG4;RCD+VNG4
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
@@ -2049,7 +2068,14 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
+!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
+!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_WAVELET_1;Level 1
!TP_WAVELET_2;Level 2
!TP_WAVELET_3;Level 3
@@ -2118,7 +2144,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters)
index fd747fde5..f4805db5d 100644
--- a/rtdata/languages/Serbian (Cyrilic Characters)
+++ b/rtdata/languages/Serbian (Cyrilic Characters)
@@ -1551,14 +1551,15 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -1566,9 +1567,17 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1603,6 +1612,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%.
!MONITOR_PROFILE_SYSTEM;System default
!NAVIGATOR_B;B:
!NAVIGATOR_G;G:
@@ -1627,12 +1637,15 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!PARTIALPASTE_METAGROUP;Metadata settings
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1911,11 +1924,17 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!TP_RAWEXPOS_BLACK_GREEN;Green
!TP_RAWEXPOS_BLACK_RED;Red
!TP_RAWEXPOS_RGB;Red, Green, Blue
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1929,6 +1948,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1957,10 +1977,12 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
@@ -2041,9 +2063,13 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_WAVELET_1;Level 1
!TP_WAVELET_2;Level 2
@@ -2113,7 +2139,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters)
index 8d051ef1d..b2b74a879 100644
--- a/rtdata/languages/Serbian (Latin Characters)
+++ b/rtdata/languages/Serbian (Latin Characters)
@@ -1551,14 +1551,15 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -1566,9 +1567,17 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1603,6 +1612,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%.
!MONITOR_PROFILE_SYSTEM;System default
!NAVIGATOR_B;B:
!NAVIGATOR_G;G:
@@ -1627,12 +1637,15 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!PARTIALPASTE_METAGROUP;Metadata settings
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1911,11 +1924,17 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!TP_RAWEXPOS_BLACK_GREEN;Green
!TP_RAWEXPOS_BLACK_RED;Red
!TP_RAWEXPOS_RGB;Red, Green, Blue
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1929,6 +1948,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1957,10 +1977,12 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
@@ -2041,9 +2063,13 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!TP_RETINEX_VIEW_TRAN;Transmission - Auto
!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed
!TP_RETINEX_VIEW_UNSHARP;Unsharp mask
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_WAVELET_1;Level 1
!TP_WAVELET_2;Level 2
@@ -2113,7 +2139,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak
index 1b0bb615c..001f83720 100644
--- a/rtdata/languages/Slovak
+++ b/rtdata/languages/Slovak
@@ -1033,14 +1033,15 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -1048,9 +1049,17 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1117,6 +1126,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_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
@@ -1169,6 +1179,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1176,6 +1187,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1187,7 +1199,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PARTIALPASTE_RGBCURVES;RGB curves
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
@@ -1822,14 +1835,20 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1846,6 +1865,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1874,10 +1894,12 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1976,13 +1998,17 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2073,7 +2099,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi
index 060addc5a..4fff8a26b 100644
--- a/rtdata/languages/Suomi
+++ b/rtdata/languages/Suomi
@@ -972,14 +972,15 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -987,9 +988,17 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1062,6 +1071,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_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
@@ -1117,6 +1127,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1124,6 +1135,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1135,7 +1147,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PARTIALPASTE_RGBCURVES;RGB curves
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1808,16 +1821,22 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1834,6 +1853,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1862,10 +1882,12 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1967,13 +1989,17 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2064,7 +2090,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish
index d81f939ad..25a3541f5 100644
--- a/rtdata/languages/Swedish
+++ b/rtdata/languages/Swedish
@@ -1937,14 +1937,15 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -1952,9 +1953,17 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1988,6 +1997,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%.
!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.
@@ -1996,10 +2006,13 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
!PREFERENCES_CMMBPC;Black point compensation
!PREFERENCES_CROP;Crop editing
@@ -2103,11 +2116,17 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical
!TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
+!TP_RAW_DCBVNG4;DCB+VNG4
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HPHD;HPHD
@@ -2119,6 +2138,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -2147,7 +2167,9 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_MAP;Mask equalizer
!TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts.
!TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts!
@@ -2171,9 +2193,13 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!TP_RETINEX_TRANSMISSION_TOOLTIP;Transmission according to transmission.\nAbscissa: transmission from negative values (min), mean, and positives values (max).\nOrdinate: amplification or reduction.
!TP_RETINEX_VIEW_MASK;Mask
!TP_RETINEX_VIEW_METHOD_TOOLTIP;Standard - Normal display.\nMask - Displays the mask.\nUnsharp mask - Displays the image with a high radius unsharp mask.\nTransmission - Auto/Fixed - Displays the file transmission-map, before any action on contrast and brightness.\n\nAttention: the mask does not correspond to reality, but is amplified to make it more visible.
+!TP_SHARPENING_CONTRAST;Contrast threshold
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_WAVELET_CBENAB;Toning and Color Balance
!TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted
@@ -2182,7 +2208,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!TP_WAVELET_CURVEEDITOR_CC_TOOLTIP;Modifies local contrast as a function of the original local contrast (abscissa).\nLow abscissa values represent small local contrast (real values about 10..20).\n50% abscissa represents average local contrast (real value about 100..300).\n66% abscissa represents standard deviation of local contrast (real value about 300..800).\n100% abscissa represents maximum local contrast (real value about 3000..8000).
!TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Modifies each level's contrast as a function of hue.\nTake care not to overwrite changes made with the Gamut sub-tool's hue controls.\nThe curve will only have an effect when wavelet contrast level sliders are non-zero.
!TP_WAVELET_DAUB_TOOLTIP;Changes Daubechies coefficients:\nD4 = Standard,\nD14 = Often best performance, 10% more time-intensive.\n\nAffects edge detection as well as the general quality of the firsts levels. However the quality is not strictly related to this coefficient and can vary with images and uses.
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGEDETECTTHR;Threshold low (noise)
!TP_WAVELET_EDGEDETECTTHR2;Threshold high (detection)
!TP_WAVELET_EDGREINF_TOOLTIP;Reinforce or reduce the action of the first level, do the opposite to the second level, and leave the rest unchanged.
diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish
index 4a830beae..4ede26e9f 100644
--- a/rtdata/languages/Turkish
+++ b/rtdata/languages/Turkish
@@ -971,14 +971,15 @@ TP_WBALANCE_TEMPERATURE;Isı
!HISTORY_MSG_485;Lens Correction
!HISTORY_MSG_486;Lens Correction - Camera
!HISTORY_MSG_487;Lens Correction - Lens
-!HISTORY_MSG_488;HDR Tone Mapping
-!HISTORY_MSG_489;HDR TM - Threshold
-!HISTORY_MSG_490;HDR TM - Amount
+!HISTORY_MSG_488;Dynamic Range Compression
+!HISTORY_MSG_489;DRC - Threshold
+!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -986,9 +987,17 @@ TP_WBALANCE_TEMPERATURE;Isı
!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
!HISTORY_MSG_METADATA_MODE;Metadata copy mode
+!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-!HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
@@ -1061,6 +1070,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_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
@@ -1116,6 +1126,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1123,6 +1134,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1134,7 +1146,8 @@ TP_WBALANCE_TEMPERATURE;Isı
!PARTIALPASTE_RGBCURVES;RGB curves
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
-!PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+!PARTIALPASTE_SOFTLIGHT;Soft light
+!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1807,16 +1820,22 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_RAWEXPOS_PRESER;Highlight preservation
!TP_RAWEXPOS_RGB;Red, Green, Blue
!TP_RAWEXPOS_TWOGREEN;Link greens
-!TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-!TP_RAW_3PASSBEST;3-Pass (Best)
+!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+!TP_RAW_2PASS;1-pass+fast
+!TP_RAW_3PASSBEST;3-pass (Markesteijn)
+!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AHD;AHD
!TP_RAW_AMAZE;AMaZE
+!TP_RAW_AMAZEVNG4;AMaZE+VNG4
+!TP_RAW_BORDER;Border
!TP_RAW_DCB;DCB
!TP_RAW_DCBENHANCE;DCB enhancement
!TP_RAW_DCBITERATIONS;Number of DCB iterations
+!TP_RAW_DCBVNG4;DCB+VNG4
!TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
!TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
!TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_EAHD;EAHD
!TP_RAW_FAST;Fast
!TP_RAW_HD;Threshold
@@ -1833,6 +1852,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_RAW_NONE;None (Shows sensor pattern)
!TP_RAW_PIXELSHIFT;Pixel Shift
!TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_PIXELSHIFTEPERISO;Sensitivity
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1861,10 +1881,12 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCD;RCD
+!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -1966,13 +1988,17 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_SHARPENEDGE_LABEL;Edges
!TP_SHARPENEDGE_PASSES;Iterations
!TP_SHARPENEDGE_THREE;Luminance only
+!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_AMOUNT;Quantity
+!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_LABEL;Microcontrast
!TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
!TP_SHARPENMICRO_UNIFORMITY;Uniformity
+!TP_SOFTLIGHT_LABEL;Soft Light
+!TP_SOFTLIGHT_STRENGTH;Strength
!TP_TM_FATTAL_AMOUNT;Amount
!TP_TM_FATTAL_ANCHOR;Anchor
-!TP_TM_FATTAL_LABEL;HDR Tone Mapping
+!TP_TM_FATTAL_LABEL;Dynamic Range Compression
!TP_TM_FATTAL_THRESHOLD;Threshold
!TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
!TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2063,7 +2089,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_WAVELET_DTWO;Horizontal
!TP_WAVELET_EDCU;Curve
!TP_WAVELET_EDGCONT;Local contrast
-!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
!TP_WAVELET_EDGE;Edge Sharpness
!TP_WAVELET_EDGEAMPLI;Base amplification
!TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/languages/default b/rtdata/languages/default
index 6c8f1c82b..99a23fb84 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -719,14 +719,15 @@ HISTORY_MSG_484;CAM02 - Auto Yb scene
HISTORY_MSG_485;Lens Correction
HISTORY_MSG_486;Lens Correction - Camera
HISTORY_MSG_487;Lens Correction - Lens
-HISTORY_MSG_488;HDR Tone Mapping
-HISTORY_MSG_489;HDR TM - Threshold
-HISTORY_MSG_490;HDR TM - Amount
+HISTORY_MSG_488;Dynamic Range Compression
+HISTORY_MSG_489;DRC - Threshold
+HISTORY_MSG_490;DRC - Amount
HISTORY_MSG_491;White Balance
HISTORY_MSG_492;RGB Curves
HISTORY_MSG_493;L*a*b* Adjustments
HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
+HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
@@ -734,9 +735,17 @@ HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness
HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius
HISTORY_MSG_METADATA_MODE;Metadata copy mode
+HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
+HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
-HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Anchor
+HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+HISTORY_MSG_RAW_BORDER;Raw border
+HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
+HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
+HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
+HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
HISTORY_NEWSNAPSHOT;Add
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
HISTORY_SNAPSHOT;Snapshot
@@ -855,6 +864,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_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
@@ -925,6 +935,7 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
PARTIALPASTE_PRSHARPENING;Post-resize sharpening
PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -932,6 +943,7 @@ PARTIALPASTE_RAWEXPOS_BLACK;Black levels
PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
PARTIALPASTE_RAWGROUP;Raw Settings
+PARTIALPASTE_RAW_BORDER;Raw border
PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -947,7 +959,8 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Shadows/highlights
PARTIALPASTE_SHARPENEDGE;Edges
PARTIALPASTE_SHARPENING;Sharpening (USM/RL)
PARTIALPASTE_SHARPENMICRO;Microcontrast
-PARTIALPASTE_TM_FATTAL;HDR Tone mapping
+PARTIALPASTE_SOFTLIGHT;Soft light
+PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
PARTIALPASTE_VIBRANCE;Vibrance
PARTIALPASTE_VIGNETTING;Vignetting correction
PARTIALPASTE_WHITEBALANCE;White balance
@@ -1756,17 +1769,23 @@ TP_RAWEXPOS_LINEAR;White-point correction
TP_RAWEXPOS_PRESER;Highlight preservation
TP_RAWEXPOS_RGB;Red, Green, Blue
TP_RAWEXPOS_TWOGREEN;Link greens
-TP_RAW_1PASSMEDIUM;1-Pass (Medium)
-TP_RAW_3PASSBEST;3-Pass (Best)
+TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
+TP_RAW_2PASS;1-pass+fast
+TP_RAW_3PASSBEST;3-pass (Markesteijn)
+TP_RAW_4PASS;3-pass+fast
TP_RAW_AHD;AHD
TP_RAW_AMAZE;AMaZE
+TP_RAW_AMAZEVNG4;AMaZE+VNG4
+TP_RAW_BORDER;Border
TP_RAW_DCB;DCB
TP_RAW_DCBENHANCE;DCB enhancement
TP_RAW_DCBITERATIONS;Number of DCB iterations
+TP_RAW_DCBVNG4;DCB+VNG4
TP_RAW_DMETHOD;Method
TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement...
TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files.
+TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
TP_RAW_EAHD;EAHD
TP_RAW_FALSECOLOR;False color suppression steps
TP_RAW_FAST;Fast
@@ -1784,6 +1803,7 @@ TP_RAW_MONO;Mono
TP_RAW_NONE;None (Shows sensor pattern)
TP_RAW_PIXELSHIFT;Pixel Shift
TP_RAW_PIXELSHIFTBLUR;Blur motion mask
+TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
TP_RAW_PIXELSHIFTEPERISO;Sensitivity
TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames
@@ -1812,10 +1832,12 @@ TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;The default radius of 1.0 usually fits well for b
TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions
TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
TP_RAW_RCD;RCD
+TP_RAW_RCDVNG4;RCD+VNG4
TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
-TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.
+TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
TP_RAW_VNG4;VNG4
+TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
TP_RESIZE_APPLIESTO;Applies to:
TP_RESIZE_CROPPEDAREA;Cropped Area
TP_RESIZE_FITBOX;Bounding Box
@@ -1934,6 +1956,7 @@ TP_SHARPENEDGE_LABEL;Edges
TP_SHARPENEDGE_PASSES;Iterations
TP_SHARPENEDGE_THREE;Luminance only
TP_SHARPENING_AMOUNT;Amount
+TP_SHARPENING_CONTRAST;Contrast threshold
TP_SHARPENING_EDRADIUS;Radius
TP_SHARPENING_EDTOLERANCE;Edge tolerance
TP_SHARPENING_HALOCONTROL;Halo control
@@ -1949,12 +1972,15 @@ TP_SHARPENING_RLD_ITERATIONS;Iterations
TP_SHARPENING_THRESHOLD;Threshold
TP_SHARPENING_USM;Unsharp Mask
TP_SHARPENMICRO_AMOUNT;Quantity
+TP_SHARPENMICRO_CONTRAST;Contrast threshold
TP_SHARPENMICRO_LABEL;Microcontrast
TP_SHARPENMICRO_MATRIX;3×3 matrix instead of 5×5
TP_SHARPENMICRO_UNIFORMITY;Uniformity
+TP_SOFTLIGHT_LABEL;Soft Light
+TP_SOFTLIGHT_STRENGTH;Strength
TP_TM_FATTAL_AMOUNT;Amount
TP_TM_FATTAL_ANCHOR;Anchor
-TP_TM_FATTAL_LABEL;HDR Tone Mapping
+TP_TM_FATTAL_LABEL;Dynamic Range Compression
TP_TM_FATTAL_THRESHOLD;Threshold
TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift
TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH
@@ -2048,7 +2074,7 @@ TP_WAVELET_DTHR;Diagonal
TP_WAVELET_DTWO;Horizontal
TP_WAVELET_EDCU;Curve
TP_WAVELET_EDGCONT;Local contrast
-TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, Top-Left, Top-Right, Bottom-right represent respectively local contast for low values, mean, mean+stdev, maxima
+TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima.
TP_WAVELET_EDGE;Edge Sharpness
TP_WAVELET_EDGEAMPLI;Base amplification
TP_WAVELET_EDGEDETECT;Gradient sensitivity
diff --git a/rtdata/profiles/Pixel Shift/PS ISO Low.pp3 b/rtdata/profiles/Pixel Shift/PS ISO Low.pp3
index 62374cb69..3f907a117 100644
--- a/rtdata/profiles/Pixel Shift/PS ISO Low.pp3
+++ b/rtdata/profiles/Pixel Shift/PS ISO Low.pp3
@@ -4,14 +4,16 @@ Version=332
[Sharpening]
Enabled=true
+Contrast=5
Method=rld
DeconvRadius=0.75
-DeconvAmount=75
+DeconvAmount=100
DeconvDamping=0
DeconvIterations=30
[SharpenMicro]
Enabled=true
+Contrast=15
Matrix=false
Strength=20
Uniformity=50
diff --git a/rtdata/profiles/Pixel Shift/PS No Motion.pp3 b/rtdata/profiles/Pixel Shift/PS No Motion.pp3
index 8f0cce13b..948c98a3a 100644
--- a/rtdata/profiles/Pixel Shift/PS No Motion.pp3
+++ b/rtdata/profiles/Pixel Shift/PS No Motion.pp3
@@ -4,14 +4,16 @@ Version=332
[Sharpening]
Enabled=true
+Contrast=5
Method=rld
DeconvRadius=0.75
-DeconvAmount=75
+DeconvAmount=100
DeconvDamping=0
DeconvIterations=30
[SharpenMicro]
Enabled=true
+Contrast=15
Matrix=false
Strength=20
Uniformity=50
diff --git a/rtdata/themes/RawTherapee-GTK3-20_.css b/rtdata/themes/RawTherapee-GTK3-20_.css
index ba58e412f..3f25ce509 100644
--- a/rtdata/themes/RawTherapee-GTK3-20_.css
+++ b/rtdata/themes/RawTherapee-GTK3-20_.css
@@ -18,19 +18,24 @@
along with RawTherapee. If not, see .
*/
-/* Scrollbar stuck workaround */
-scrollbar:not(.overlay-indicator):hover {
- min-width: 1px;
-}
+/* text-shadow causes a serious performance degradation in rendering the UI,
+ * at least in comboboxes with many entries (i.e. Profiled Lens Correction).
+*/
* {
color: #AAAAAA;
+ text-shadow: none;
}
*:disabled {
color: #666666;
}
+/* Scrollbar stuck workaround */
+scrollbar:not(.overlay-indicator):hover {
+ min-width: 1px;
+}
+
.view:selected:not(check):not(radio) {
color: #262626;
background-color: #AAAAAA
@@ -222,7 +227,7 @@ button {
padding: 0;
min-height: 5px;
min-width: 5px;
- background-image: linear-gradient(#343434, #2E2E2E, #292929);
+ background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
}
/* Curve mode buttons and drop-downs */
@@ -247,7 +252,7 @@ radiobutton > radio {
background-image: linear-gradient(#343434, #2E2E2E, #292929);
}
-button:hover , button.flat:hover, checkbutton:hover > check, radiobutton:hover > radio {
+button.flat:hover, checkbutton:hover > check, radiobutton:hover > radio {
background-image: linear-gradient(shade(#343434,1.3), shade(#2E2E2E,1.3), shade(#292929,1.3));
}
@@ -255,6 +260,22 @@ button.popupbutton-arrow {
min-width: 18px;
}
+button:hover {
+ background-image: linear-gradient(to bottom, rgba(150,150,150,.3), rgba(80,80,80,.3));
+}
+
+button:active {
+ background-image: linear-gradient(to bottom, rgba(30,30,30,.3), rgba(0,0,0,.3));
+}
+
+button:checked {
+ background-image: linear-gradient(to bottom, rgba(30,30,30,.8), rgba(0,0,0,.8));
+}
+
+button:checked:hover {
+ background-image: linear-gradient(to bottom, rgba(60,60,60,1), rgba(30,30,30,1));
+}
+
/* Save, Cancel, OK ... buttons */
.dialog-action-area button {
min-height: 24px;
diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css
index a65fb2d3e..68e54c966 100644
--- a/rtdata/themes/TooWaBlue-GTK3-20_.css
+++ b/rtdata/themes/TooWaBlue-GTK3-20_.css
@@ -2,7 +2,7 @@
This file is part of RawTherapee.
Copyright (c) 2016-2017 TooWaBoo
- Version 2.62
+ Version 2.66
RawTherapee is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -164,7 +164,7 @@ filechooser frame {
}
#PlacesPaned frame {
- margin: -8px 0 0;
+ margin: -5px 0 0;
}
frame > border {
@@ -215,7 +215,7 @@ dialog frame > label {
frame > label {
margin: 0;
- padding: 0.5em 0;
+ padding: 0.41667em 0 0.33334em 0.08334em;
color: @headline-frame;
}
frame > checkbutton label{
@@ -245,19 +245,22 @@ textview:selected, treeview:selected {
}
#PlacesPaned > box:nth-child(1) treeview {
- padding: 0.08334em 0 0.08334em 0.5em;
+ padding: 0.08334em 0 0.08334em 0.416667em;
-gtk-icon-style: symbolic;
}
#HistoryPanel {
- margin-top: 0.5em;
+ margin-top: 0.25em;
+}
+#RightNotebook #HistoryPanel {
+ margin-top: 0.33334em;
}
#HistoryPanel > border {
margin-top: 1.75em;
}
#HistoryPanel > label {
- margin: 0 0 -1.33334em 0;
- padding: 0;
+ margin: 0 0 -1.5em 0;
+ padding: 0 0 0 0.08334em;
}
#Snapshots > border {
@@ -284,24 +287,24 @@ textview:selected, treeview:selected {
/*Corrects the space of the snapshot view to the paned separator*/
#Snapshots {
- margin-top: -0.33334em;
+ margin-top: 0.16667em;
}
/**/
/*** end ***************************************************************************************/
/*** Navigator *********************************************************************************/
-#Navigator .drawingarea {
- border-top: 0.41667em solid @bg-dark-grey;
- border-bottom: 0.25em solid @bg-dark-grey;
-}
#Navigator {
- background-color: @bg-dark-grey;
+ padding-top: 0.75em;
padding-bottom: 0.25em;
+ background-color: @bg-dark-grey;
}
#Navigator box label {
padding: 0.16667em 0;
}
+#Navigator > label:nth-child(2) {
+ margin-top: 0.5em;
+}
/*** end ***************************************************************************************/
@@ -356,9 +359,34 @@ filechooser list row:selected {
/*** Histogram *********************************************************************************/
#HistogramPanel {
+ min-height: 0;
margin: -2px 0;
border: none;
+ background-color: transparent;
}
+
+#HistogramPanel > :nth-child(2) {
+ border: none;
+ border-left: 0.08334em solid @bg-light-grey;
+ background-color: @bg-dark-grey;
+}
+
+#HistogramPanel > :nth-child(1) {
+ border: none;
+ background-color: transparent;
+}
+
+#EditorLeftPaned #HistogramPanel > :nth-child(1) {
+ border: none;
+ border-right: 0.08334em solid @bg-light-grey;
+ background-color: @bg-dark-grey;
+}
+
+#EditorLeftPaned #HistogramPanel > :nth-child(2) {
+ border: none;
+ background-color: transparent;
+}
+
#HistogramArea,
#HistogramRGBArea {
border: 0.08334em solid @bg-dark-grey;
@@ -367,25 +395,24 @@ filechooser list row:selected {
#fullButton,
#histButton {
- padding: 0.47em 0.41667em;
+ padding: 0;
margin: 0;
- border-color: @bg-light-grey;
- border-style: solid;
- border-width: 0 0 0 0.08334em;
+ border:none;
background-color: @bg-dark-grey;
background-image: none;
box-shadow: none;
- min-height: 0;
- min-width: 0;
+ min-height: 1.58334em;
+ min-width: 1.5em;
border-radius: 0;
}
-#fullButton {
- padding: 0.47em 0.41667em 0.58334em;
+
+#histButton:first-child {
+ margin-top: 1px;
}
-#EditorLeftPaned #fullButton,
-#EditorLeftPaned #histButton {
- border-width: 0 0.08334em 0 0;
+#histButton:last-child {
+ margin-bottom: 1px;
}
+
/*** end ***************************************************************************************/
/*** Separator *********************************************************************************/
@@ -413,6 +440,7 @@ popover separator:not(:only-child) {
paned.horizontal > separator {
background-color: transparent;
+ background-image: none;
min-width: 0.41667em;
border-left: 0.25em solid @bg-light-grey;
border-right: 0.25em solid @bg-light-grey;
@@ -426,9 +454,16 @@ paned.vertical > separator {
min-height: 0.5em;
border-top: 1px solid @bg-light-grey;
border-bottom: 1px solid @bg-light-grey;
- margin: 0.25em 0 0;
+ margin: 0.25em 0 -0.5em;
padding: 0.2em 0 0;
}
+/*Filmstrip*/
+#EditorRightPaned > paned.horizontal > paned.vertical > separator {
+ margin-bottom: 0;
+}
+#EditorRightPaned > paned.horizontal:nth-child(1) > paned.vertical:nth-child(1) > separator {
+ margin-bottom: -0.5em;
+}
dialog paned.horizontal > separator {
background-color: @bg-grey;
@@ -451,8 +486,8 @@ menu separator {
#IopsPanel separator,
#FileBrowser separator {
background-color: shade(@bg-light-grey,.75);
- margin-top: 0.33334em;
- margin-bottom: 0.33334em;
+ margin-top: 0.16667em;
+ margin-bottom: 0.16667em;
}
#MyExpander separator {
@@ -1388,6 +1423,9 @@ button.MiddleH {
margin-bottom: -2px;
padding-bottom: 0.41667em;
}
+#ProfilePanel > label {
+ margin-bottom: 0.08334em;
+}
#ProfilePanel combobox {
margin-left: 0.16667em;
}
diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt
index 5ecd458be..ff3024beb 100644
--- a/rtengine/CMakeLists.txt
+++ b/rtengine/CMakeLists.txt
@@ -52,6 +52,7 @@ set(RTENGINESOURCEFILES
dfmanager.cc
diagonalcurves.cc
dirpyr_equalizer.cc
+ dual_demosaic_RT.cc
dynamicprofile.cc
expo_before_b.cc
fast_demo.cc
@@ -122,6 +123,8 @@ set(RTENGINESOURCEFILES
gamutwarning.cc
ipshadowshighlights.cc
xtrans_demosaic.cc
+ vng4_demosaic_RT.cc
+ ipsoftlight.cc
)
if(LENSFUN_HAS_LOAD_DIRECTORY)
diff --git a/rtengine/amaze_demosaic_RT.cc b/rtengine/amaze_demosaic_RT.cc
index 4fe0bee69..31419022d 100644
--- a/rtengine/amaze_demosaic_RT.cc
+++ b/rtengine/amaze_demosaic_RT.cc
@@ -38,7 +38,7 @@
namespace rtengine
{
-void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, array2D &rawData, array2D &red, array2D &green, array2D &blue)
+void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, const array2D &rawData, array2D &red, array2D &green, array2D &blue)
{
BENCHFUN
@@ -1584,6 +1584,9 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh, a
// clean up
free(buffer);
}
+ if(border < 4) {
+ border_interpolate2(W, H, 3, rawData, red, green, blue);
+ }
if(plistener) {
plistener->setProgress(1.0);
diff --git a/rtengine/camconst.cc b/rtengine/camconst.cc
index 3d4342ed9..43de5d688 100644
--- a/rtengine/camconst.cc
+++ b/rtengine/camconst.cc
@@ -25,6 +25,7 @@ CameraConst::CameraConst() : pdafOffset(0)
memset(raw_crop, 0, sizeof(raw_crop));
memset(raw_mask, 0, sizeof(raw_mask));
white_max = 0;
+ globalGreenEquilibration = -1;
}
@@ -310,17 +311,17 @@ CameraConst::parseEntry(void *cJSON_, const char *make_model)
}
}
- ji = cJSON_GetObjectItem(js, "pdafPattern");
+ ji = cJSON_GetObjectItem(js, "pdaf_pattern");
if (ji) {
if (ji->type != cJSON_Array) {
- fprintf(stderr, "\"pdafPattern\" must be an array\n");
+ fprintf(stderr, "\"pdaf_pattern\" must be an array\n");
goto parse_error;
}
for (ji = ji->child; ji != nullptr; ji = ji->next) {
if (ji->type != cJSON_Number) {
- fprintf(stderr, "\"pdafPattern\" array must contain numbers\n");
+ fprintf(stderr, "\"pdaf_pattern\" array must contain numbers\n");
goto parse_error;
}
@@ -328,17 +329,28 @@ CameraConst::parseEntry(void *cJSON_, const char *make_model)
}
}
- ji = cJSON_GetObjectItem(js, "pdafOffset");
+ ji = cJSON_GetObjectItem(js, "pdaf_offset");
if (ji) {
if (ji->type != cJSON_Number) {
- fprintf(stderr, "\"pdafOffset\" must contain a number\n");
+ fprintf(stderr, "\"pdaf_offset\" must contain a number\n");
goto parse_error;
}
cc->pdafOffset = ji->valueint;
}
+ ji = cJSON_GetObjectItem(js, "global_green_equilibration");
+
+ if (ji) {
+ if (ji->type != cJSON_False && ji->type != cJSON_True) {
+ fprintf(stderr, "\"global_green_equilibration\" must be a boolean\n");
+ goto parse_error;
+ }
+
+ cc->globalGreenEquilibration = (ji->type == cJSON_True);
+ }
+
return cc;
parse_error:
@@ -606,6 +618,24 @@ CameraConst::get_WhiteLevel(const int idx, const int iso_speed, const float fnum
return lvl.levels[idx];
}
+bool
+CameraConst::has_globalGreenEquilibration()
+{
+ return globalGreenEquilibration >= 0;
+}
+
+bool
+CameraConst::get_globalGreenEquilibration()
+{
+ return globalGreenEquilibration > 0;
+}
+
+void
+CameraConst::update_globalGreenEquilibration(bool other)
+{
+ globalGreenEquilibration = (other ? 1 : 0);
+}
+
bool
CameraConstantsStore::parse_camera_constants_file(Glib::ustring filename_)
{
@@ -739,6 +769,9 @@ CameraConstantsStore::parse_camera_constants_file(Glib::ustring filename_)
existingcc->update_Crop(cc);
existingcc->update_pdafPattern(cc->get_pdafPattern());
existingcc->update_pdafOffset(cc->get_pdafOffset());
+ if (cc->has_globalGreenEquilibration()) {
+ existingcc->update_globalGreenEquilibration(cc->get_globalGreenEquilibration());
+ }
if (settings->verbose) {
printf("Merging camera constants for \"%s\"\n", make_model.c_str());
diff --git a/rtengine/camconst.h b/rtengine/camconst.h
index 60e17201b..eb43da483 100644
--- a/rtengine/camconst.h
+++ b/rtengine/camconst.h
@@ -26,6 +26,8 @@ private:
std::map mApertureScaling;
std::vector pdafPattern;
int pdafOffset;
+ int globalGreenEquilibration;
+
CameraConst();
static bool parseLevels(CameraConst *cc, int bw, void *ji);
static bool parseApertureScaling(CameraConst *cc, void *ji);
@@ -45,10 +47,13 @@ public:
void get_rawMask(int idx, int& top, int& left, int& bottom, int& right);
int get_BlackLevel(int idx, int iso_speed);
int get_WhiteLevel(int idx, int iso_speed, float fnumber);
+ bool has_globalGreenEquilibration();
+ bool get_globalGreenEquilibration();
void update_Levels(const CameraConst *other);
void update_Crop(CameraConst *other);
void update_pdafPattern(const std::vector &other);
void update_pdafOffset(int other);
+ void update_globalGreenEquilibration(bool other);
};
class CameraConstantsStore
diff --git a/rtengine/camconst.json b/rtengine/camconst.json
index 405c5680a..449484e8a 100644
--- a/rtengine/camconst.json
+++ b/rtengine/camconst.json
@@ -83,10 +83,10 @@ Examples:
// instead, to take care of possible light leaks from the light sensing area to the optically black (masked)
// area or sensor imperfections at the outer borders.
- // list of indices of the rows with on-sensor PDAF pixels, for cameras that have such features. The indices here form a pattern that is repeated for the whole height of the sensor. The values are relative to the "pdafOffset" value (see below)
- "pdafPattern" : [ 0,12,36,54,72,90,114,126,144,162,180,204,216,240,252,270,294,306,324,342,366,384,396,414,432,450,474,492,504,522,540,564,576,594,606,630 ],
+ // list of indices of the rows with on-sensor PDAF pixels, for cameras that have such features. The indices here form a pattern that is repeated for the whole height of the sensor. The values are relative to the "pdaf_offset" value (see below)
+ "pdaf_pattern" : [ 0,12,36,54,72,90,114,126,144,162,180,204,216,240,252,270,294,306,324,342,366,384,396,414,432,450,474,492,504,522,540,564,576,594,606,630 ],
// index of the first row of the PDAF pattern in the sensor (0 is the topmost row). Allowed to be negative for convenience (this means that the first repetition of the pattern doesn't start from the first row)
- "pdafOffset" : 3
+ "pdaf_offset" : 3
},
{
@@ -278,12 +278,15 @@ About black levels:
can be derived from masked pixels (typical for Canon cameras) or otherwise be extracted from some tag.
Some formats have built-in subtraction information and are pre-processed by dcraw to end up at a black level of
- zero (Phase One's IIQ). For Panasonic raws beginning from dcraw v9.21 dcraw/RT reads base BL from Exif data (tags 0x001c
- BlackLevelRed, 0x001d BlackLevelGreen, 0x001e BlackLevelBlue) and we define in "ranges": { "black": the needed offset
- of around 15. The (total) BL RT displays is base+offset In all, you typically should not care about the black
- level in camconst.json, any information that can be derived from the raw file itself should not be specified in
- camconst.json! Sony's ARW2 is one of the few exceptions (with single black level around 512, or 800 for
- RX10/100 models), but dcraw generally has good constants for these already.
+ zero (Phase One's IIQ).
+
+ For Panasonic cameras, the black level defined in camconst.json is the black level offset, which comes from
+ BlackLevel3 + BlackLevel2. RawTherapee then reads the base black levels from Exif data (0x001c BlackLevelRed,
+ 0x001d BlackLevelGreen and 0x001e BlackLevelBlue) and adds them to the offset.
+
+ In all, you typically should not care about the black level in camconst.json, any information that can be derived from
+ the raw file itself should not be specified in camconst.json! Sony's ARW2 is one of the few exceptions (with a single
+ black level around 512, or 800 for RX10/100 models), but dcraw generally has good constants for these already.
Currently we have chosen not to provide any guide how to measure black levels as we don't think it will be a common task
(it's also more difficult to do than measure white levels). If you experience a black level issue it's more likely due
@@ -1601,6 +1604,7 @@ Camera constants:
{ // Quality B, missing per ISO samples
"make_model": "OLYMPUS E-M1",
+ "global_green_equilibration" : true,
"dcraw_matrix": [ 7687,-1984,-606,-4327,11928,2721,-1381,2339,6452 ], // dng d65
"ranges": { "white": 4080 } // nominal 4095-4094, spread with some settings as long exposure
},
@@ -1615,12 +1619,14 @@ Camera constants:
{ // Quality A, white level correction
"make_model": "OLYMPUS E-PM2",
+ "global_green_equilibration" : true,
"dcraw_matrix": [ 8380,-2630,-639,-2887,10725,2496,-627,1427,5438 ],
"ranges": { "white": 4040 } // nominal 4056
},
{ // Quality B, with long exposure noise reduction White Level gets WL-BL = around 256_12-bit levels less
"make_model": [ "OLYMPUS E-PL7", "OLYMPUS E-PL8" ],
+ "global_green_equilibration" : true,
"dcraw_matrix": [ 9197,-3190,-659,-2606,10830,2039,-458,1250,5458 ], // DNG_v9.8 D65
"ranges": { "white": 4080 } // nominal 4093
},
@@ -1637,10 +1643,23 @@ Camera constants:
"ranges": { "white": 4050 } // safe for worst case detected, nominal is 4093
},
-/* Since dcraw_v9.21 Panasonic base BL is read from Exif (tags 0x001c BlackLevelRed15 is BL offset.
- dcraw/RT read the base black from Exif and calculates total BL = BLbase+BLoffset, 0x001d BlackLevelGreen, 0x001e BlackLevelBlue
- and we define here the needed offset of around 15. The total BL is base+offset
-*/
+ { // Quality C, only green equilibration
+ "make_model" : ["OLYMPUS E-3", "OLYMPUS E-520"],
+ "global_green_equilibration" : true
+ },
+
+ { // Quality C, proper ISO 100-125-160 samples missing, pixelshift files have no black offset etc. #4574
+ "make_model": [ "Panasonic DC-G9" ],
+ "dcraw_matrix": [ 7685, -2375, -634, -3687, 11700, 2249, -748, 1546, 5111 ], // Adobe DNG Converter 10.3 ColorMatrix2
+ "ranges": {
+ "black": 15, // 15 is BL offset. dcraw/RT reads the base black from Exif and calculates total BL = BLbase+BLoffset
+ "white": [
+ { "iso": 100, "levels": 3000 }, // gaussian 3100-3600 Exif_linearitylimit 2111
+ { "iso": 125, "levels": 3500 }, // guessed
+ { "iso": [ 160, 200, 250, 320, 400,500, 640, 800, 1000, 1250, 1600, 2000, 2500, 3200, 4000, 5000, 6400, 12800, 25600 ], "levels": 4080 } // nominal 4095
+ ]
+ }
+ },
{ // Quality B, CameraPhone, some samples are missing but has the same sensor as FZ1000 ..
"make_model": [ "Panasonic DMC-CM1", "Panasonic DMC-CM10" ],
@@ -2258,8 +2277,8 @@ Camera constants:
"ranges": { "black": 512, "white": 16300 },
// detected by hand, using the picture from https://www.dpreview.com/forums/thread/3923513
// P 11 P 23 P 17 P 17 P 17 P 23 P 11 P 17 P 17 P 17 P 23 P 11 P 23 P 11 P 17 P 23 P 11 P 17 P 17 P 23 P 17 P 11 P 17 P 17 P 17 P 23 P 17 P 11 P 17 P 17 P 23 P 11 P 17 P 11 P 23
- "pdafPattern" : [ 0,12,36,54,72,90,114,126,144,162,180,204,216,240,252,270,294,306,324,342,366,384,396,414,432,450,474,492,504,522,540,564,576,594,606,630 ],
- "pdafOffset" : 3
+ "pdaf_pattern" : [ 0,12,36,54,72,90,114,126,144,162,180,204,216,240,252,270,294,306,324,342,366,384,396,414,432,450,474,492,504,522,540,564,576,594,606,630 ],
+ "pdaf_offset" : 3
},
{ // Quality A
@@ -2268,8 +2287,8 @@ Camera constants:
"raw_crop": [ 0, 0, 6024, 4024 ],
"ranges": { "black": 512, "white": 16300 },
// contributed by Horshak from https://www.dpreview.com/forums/post/60873077
- "pdafPattern" : [ 0,12,36,54,72,90,114,126,144,162,180,204,216,240,252,270,294,306,324,342,366,384,396,414,432,450,474,492,504,522,540,564,576,594,606,630 ],
- "pdafOffset" : 3
+ "pdaf_pattern" : [ 0,12,36,54,72,90,114,126,144,162,180,204,216,240,252,270,294,306,324,342,366,384,396,414,432,450,474,492,504,522,540,564,576,594,606,630 ],
+ "pdaf_offset" : 3
},
{ // Quality C, only pdaf data
@@ -2280,8 +2299,8 @@ Camera constants:
//
// rotated to match the start of the frame
// P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11 P 5 P 17 P 11 P 11 P 17 P 11 P 5
- "pdafPattern" : [ 0,12,24,36,54,66,72,84,96,114,120,132,150,156,174,180,192,204,216,234,240,252,264,276,282,300,306,324,336,342,360,372,384,402,414,420],
- "pdafOffset" : 9
+ "pdaf_pattern" : [ 0,12,24,36,54,66,72,84,96,114,120,132,150,156,174,180,192,204,216,234,240,252,264,276,282,300,306,324,336,342,360,372,384,402,414,420],
+ "pdaf_offset" : 9
},
{ // Quality A, correction for frame width
@@ -2303,8 +2322,8 @@ Camera constants:
"raw_crop": [ 0, 0, -36, 0 ], // full raw frame 8000x5320 - 36 rightmost columns are garbage
"ranges": { "black": 512, "white": 16300 },
// PDAF info provided by Horshack with the rawshack tool (http://testcams.com/rawshack/)
- "pdafPattern" : [ 0,24,36,60,84,120,132,156,192,204,240,252,276,300,324,360,372,396,420 ],
- "pdafOffset" : 31
+ "pdaf_pattern" : [ 0,24,36,60,84,120,132,156,192,204,240,252,276,300,324,360,372,396,420 ],
+ "pdaf_offset" : 31
},
{ // Quality C, color matrix copied from ILCE-9, LongExposures 2-3sec only
@@ -2334,8 +2353,8 @@ Camera constants:
"dcraw_matrix": [ 6640,-1847,-503,-5238,13010,2474,-993,1673,6527 ], // DNG_v10.1 D65
"raw_crop": [ 0, 0, -36, 0 ], // full raw frame 8000x5320 - 36 rightmost columns are garbage
"ranges": { "black": 512, "white": 16300 },
- "pdafPattern" : [0, 24, 36, 60, 84, 120, 132, 156, 192, 204, 240, 252, 276, 300, 324, 360, 372, 396, 420, 444, 480, 492, 504, 540, 564, 576, 612, 636, 660, 696, 720, 732, 756, 780, 804, 840],
- "pdafOffset" : 31
+ "pdaf_pattern" : [0, 24, 36, 60, 84, 120, 132, 156, 192, 204, 240, 252, 276, 300, 324, 360, 372, 396, 420, 444, 480, 492, 504, 540, 564, 576, 612, 636, 660, 696, 720, 732, 756, 780, 804, 840],
+ "pdaf_offset" : 31
},
{ // Quality B, color matrix copied from a7rm2
@@ -2346,8 +2365,8 @@ Camera constants:
// the A9 is the same as the A7III, rotated of 1 position
// source: https://www.dpreview.com/forums/post/60857788
// P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11 P 5 P 17 P 11 P 11 P 17 P 11 P 5
- "pdafPattern" : [ 0,12,24,36,54,66,72,84,96,114,120,132,150,156,174,180,192,204,216,234,240,252,264,276,282,300,306,324,336,342,360,372,384,402,414,420 ],
- "pdafOffset" : -7
+ "pdaf_pattern" : [ 0,12,24,36,54,66,72,84,96,114,120,132,150,156,174,180,192,204,216,234,240,252,264,276,282,300,306,324,336,342,360,372,384,402,414,420 ],
+ "pdaf_offset" : -7
},
{ // Quality B, correction for frame width
diff --git a/rtengine/color.cc b/rtengine/color.cc
index c4e3b6a68..3cedcaaa6 100644
--- a/rtengine/color.cc
+++ b/rtengine/color.cc
@@ -1837,6 +1837,45 @@ void Color::RGB2Lab(float *R, float *G, float *B, float *L, float *a, float *b,
}
}
+void Color::RGB2L(float *R, float *G, float *B, float *L, const float wp[3][3], int width)
+{
+
+#ifdef __SSE2__
+ vfloat minvalfv = F2V(0.f);
+ vfloat maxvalfv = F2V(MAXVALF);
+#endif
+ int i = 0;
+
+#ifdef __SSE2__
+ for(;i < width - 3; i+=4) {
+ const vfloat rv = LVFU(R[i]);
+ const vfloat gv = LVFU(G[i]);
+ const vfloat bv = LVFU(B[i]);
+ const vfloat yv = F2V(wp[1][0]) * rv + F2V(wp[1][1]) * gv + F2V(wp[1][2]) * bv;
+
+ vmask maxMask = vmaskf_gt(yv, maxvalfv);
+ vmask minMask = vmaskf_lt(yv, minvalfv);
+ if (_mm_movemask_ps((vfloat)vorm(maxMask, minMask))) {
+ // take slower code path for all 4 pixels if one of the values is > MAXVALF. Still faster than non SSE2 version
+ for(int k = 0; k < 4; ++k) {
+ float y = yv[k];
+ L[i + k] = computeXYZ2LabY(y);
+ }
+ } else {
+ STVFU(L[i], cachefy[yv]);
+ }
+ }
+#endif
+ for(;i < width; ++i) {
+ const float rv = R[i];
+ const float gv = G[i];
+ const float bv = B[i];
+ float y = wp[1][0] * rv + wp[1][1] * gv + wp[1][2] * bv;
+
+ L[i] = computeXYZ2LabY(y);
+ }
+}
+
void Color::XYZ2Lab(float X, float Y, float Z, float &L, float &a, float &b)
{
diff --git a/rtengine/color.h b/rtengine/color.h
index 5616a4079..3310f6fa6 100644
--- a/rtengine/color.h
+++ b/rtengine/color.h
@@ -611,6 +611,7 @@ public:
*/
static void XYZ2Lab(float x, float y, float z, float &L, float &a, float &b);
static void RGB2Lab(float *X, float *Y, float *Z, float *L, float *a, float *b, const float wp[3][3], int width);
+ static void RGB2L(float *X, float *Y, float *Z, float *L, const float wp[3][3], int width);
/**
* @brief Convert Lab in Yuv
diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc
index 164c7680e..c18ee8915 100644
--- a/rtengine/dcp.cc
+++ b/rtengine/dcp.cc
@@ -1795,51 +1795,51 @@ void DCPStore::init(const Glib::ustring& rt_profile_dir, bool loadAll)
file_std_profiles.clear();
if (!loadAll) {
- profileDir.assign (rt_profile_dir);
+ profileDir = { rt_profile_dir, Glib::build_filename(options.rtdir, "dcpprofiles") };
return;
}
- if (!rt_profile_dir.empty()) {
- std::deque dirs = {
- rt_profile_dir
- };
+ std::deque dirs = {
+ rt_profile_dir,
+ Glib::build_filename(options.rtdir, "dcpprofiles")
+ };
- while (!dirs.empty()) {
- // Process directory
- const Glib::ustring dirname = dirs.back();
- dirs.pop_back();
+ while (!dirs.empty()) {
+ // Process directory
+ const Glib::ustring dirname = dirs.back();
+ dirs.pop_back();
- std::unique_ptr dir;
+ std::unique_ptr dir;
- try {
- if (!Glib::file_test(dirname, Glib::FILE_TEST_IS_DIR)) {
- return;
- }
-
- dir.reset(new Glib::Dir(dirname));
- } catch (Glib::Exception& exception) {
- return;
+ try {
+ if (!Glib::file_test(dirname, Glib::FILE_TEST_IS_DIR)) {
+ continue;
}
- for (const Glib::ustring& sname : *dir) {
- const Glib::ustring fname = Glib::build_filename(dirname, sname);
+ dir.reset(new Glib::Dir(dirname));
+ } catch (Glib::Exception& exception) {
+ return;
+ }
- if (!Glib::file_test(fname, Glib::FILE_TEST_IS_DIR)) {
- // File
- const auto lastdot = sname.rfind('.');
+ for (const Glib::ustring& sname : *dir) {
+ const Glib::ustring fname = Glib::build_filename(dirname, sname);
- if (
- lastdot != Glib::ustring::npos
- && lastdot <= sname.size() - 4
- && !sname.casefold().compare(lastdot, 4, ".dcp")
+ if (!Glib::file_test(fname, Glib::FILE_TEST_IS_DIR)) {
+ // File
+ const auto lastdot = sname.rfind('.');
+
+ if (
+ lastdot != Glib::ustring::npos
+ && lastdot <= sname.size() - 4
+ && !sname.casefold().compare(lastdot, 4, ".dcp")
) {
- const Glib::ustring cam_short_name = sname.substr(0, lastdot).uppercase();
- file_std_profiles[cam_short_name] = fname; // They will be loaded and cached on demand
- }
- } else {
- // Directory
- dirs.push_front(fname);
+ const Glib::ustring cam_short_name = sname.substr(0, lastdot).uppercase();
+ file_std_profiles[cam_short_name] = fname; // They will be loaded and cached on demand
}
+ } else {
+ // Directory
+ dirs.push_front(fname);
+ }
}
}
@@ -1850,7 +1850,6 @@ void DCPStore::init(const Glib::ustring& rt_profile_dir, bool loadAll)
if (real != file_std_profiles.end()) {
file_std_profiles[alias_name] = real->second;
- }
}
}
}
@@ -1907,11 +1906,13 @@ DCPProfile* DCPStore::getStdProfile(const Glib::ustring& requested_cam_short_nam
}
// profile not found, looking if we're in loadAll=false mode
- if (!profileDir.empty()) {
- const Glib::ustring fname = Glib::build_filename(profileDir, requested_cam_short_name + Glib::ustring(".dcp"));
+ for (const auto &dir : profileDir) {
+ if (!dir.empty()) {
+ const Glib::ustring fname = Glib::build_filename(dir, requested_cam_short_name + Glib::ustring(".dcp"));
- if (Glib::file_test(fname, Glib::FILE_TEST_EXISTS)) {
- return getProfile(fname);
+ if (Glib::file_test(fname, Glib::FILE_TEST_EXISTS)) {
+ return getProfile(fname);
+ }
}
}
diff --git a/rtengine/dcp.h b/rtengine/dcp.h
index 10bbf8f7e..bedc7f76d 100644
--- a/rtengine/dcp.h
+++ b/rtengine/dcp.h
@@ -166,7 +166,7 @@ private:
DCPStore() = default;
mutable MyMutex mutex;
- Glib::ustring profileDir;
+ std::vector profileDir;
// these contain standard profiles from RT. keys are all in uppercase, file path is value
std::map file_std_profiles;
diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc
index 05f1a32a2..859aea3a1 100644
--- a/rtengine/dcraw.cc
+++ b/rtengine/dcraw.cc
@@ -9937,6 +9937,7 @@ static void decodeFPDeltaRow(Bytef * src, Bytef * dst, size_t tileWidth, size_t
}
+#ifndef __F16C__
// From DNG SDK dng_utils.h
static inline uint32_t DNG_HalfToFloat(uint16_t halfValue) {
int32_t sign = (halfValue >> 15) & 0x00000001;
@@ -9970,6 +9971,7 @@ static inline uint32_t DNG_HalfToFloat(uint16_t halfValue) {
// Assemble sign, exponent and mantissa.
return (uint32_t) ((sign << 31) | (exponent << 23) | mantissa);
}
+#endif
static inline uint32_t DNG_FP24ToFloat(const uint8_t * input) {
int32_t sign = (input [0] >> 7) & 0x01;
@@ -10006,11 +10008,32 @@ static inline uint32_t DNG_FP24ToFloat(const uint8_t * input) {
static void expandFloats(Bytef * dst, int tileWidth, int bytesps) {
if (bytesps == 2) {
- uint16_t * dst16 = (uint16_t *) dst;
- uint32_t * dst32 = (uint32_t *) dst;
+ uint16_t* const dst16 = reinterpret_cast(dst);
+#ifndef __F16C__
+ uint32_t* const dst32 = reinterpret_cast(dst);
for (int index = tileWidth - 1; index >= 0; --index) {
- dst32[index] = DNG_HalfToFloat(dst16[index]);
+ dst32[index] = DNG_HalfToFloat(dst16[index]);
}
+#else
+ float* const dst32 = reinterpret_cast(dst);
+ int index = tileWidth - 8;
+ for (; index >= 0; index -= 8) {
+ __m128i halfFloatv = _mm_loadu_si128((__m128i*)&dst16[index]);
+ STVFU(dst32[index], _mm_cvtph_ps(halfFloatv));
+ STVFU(dst32[index + 4], _mm_cvtph_ps(_mm_shuffle_epi32(halfFloatv, _MM_SHUFFLE(0,0,3,2))));
+ }
+ index += 4;
+ if(index >= 0) {
+ __m128i halfFloatv = _mm_loadu_si128((__m128i*)&dst16[index]);
+ STVFU(dst32[index], _mm_cvtph_ps(halfFloatv));
+ index--;
+ } else {
+ index += 3;
+ }
+ for (; index >= 0; --index) {
+ dst32[index] = _cvtsh_ss(dst16[index]);
+ }
+#endif
} else if (bytesps == 3) {
uint8_t * dst8 = ((uint8_t *) dst) + (tileWidth - 1) * 3;
uint32_t * dst32 = (uint32_t *) dst;
@@ -10020,29 +10043,6 @@ static void expandFloats(Bytef * dst, int tileWidth, int bytesps) {
}
}
-static void copyFloatDataToInt(float * src, ushort * dst, size_t size, float max) {
- bool negative = false, nan = false;
-
-#ifdef _OPENMP
-#pragma omp parallel for
-#endif
- for (size_t i = 0; i < size; ++i) {
- if (src[i] < 0.0f) {
- negative = true;
- src[i] = 0.0f;
- } else if (std::isnan(src[i])) {
- nan = true;
- src[i] = max;
- }
- // Copy the data to the integer buffer to build the thumbnail
- dst[i] = (ushort)src[i];
- }
- if (negative)
- fprintf(stderr, "DNG Float: Negative data found in input file\n");
- if (nan)
- fprintf(stderr, "DNG Float: NaN data found in input file\n");
-}
-
static int decompress(size_t srcLen, size_t dstLen, unsigned char *in, unsigned char *out) {
// At least in zlib 1.2.11 the uncompress function is not thread save while it is thread save in zlib 1.2.8
// This simple replacement is thread save. Used example code from https://zlib.net/zlib_how.html
@@ -10184,9 +10184,6 @@ void CLASS deflate_dng_load_raw() {
}
}
- if (ifd->sample_format == 3) { // Floating point data
- copyFloatDataToInt(float_raw_image, raw_image, raw_width*raw_height, maximum);
- }
}
/* RT: removed unused functions */
diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc
index 3ae8f1d65..99aeccbe8 100644
--- a/rtengine/dcrop.cc
+++ b/rtengine/dcrop.cc
@@ -42,7 +42,7 @@ extern const Settings* settings;
Crop::Crop (ImProcCoordinator* parent, EditDataProvider *editDataProvider, bool isDetailWindow)
: PipetteBuffer (editDataProvider), origCrop (nullptr), laboCrop (nullptr), labnCrop (nullptr),
- cropImg (nullptr), cbuf_real (nullptr), transCrop (nullptr), cieCrop (nullptr), cbuffer (nullptr),
+ cropImg (nullptr), transCrop (nullptr), cieCrop (nullptr),
updating (false), newUpdatePending (false), skip (10),
cropx (0), cropy (0), cropw (-1), croph (-1),
trafx (0), trafy (0), trafw (-1), trafh (-1),
@@ -865,7 +865,7 @@ void Crop::update (int todo)
if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) {
parent->ipf.MLmicrocontrast (labnCrop);
- parent->ipf.sharpening (labnCrop, (float**)cbuffer, params.sharpening);
+ parent->ipf.sharpening (labnCrop, params.sharpening, parent->sharpMask);
}
}
@@ -994,7 +994,7 @@ void Crop::update (int todo)
float d, dj, yb; // not used after this block
parent->ipf.ciecam_02float (cieCrop, float (adap), 1, 2, labnCrop, ¶ms, parent->customColCurve1, parent->customColCurve2, parent->customColCurve3,
- dummy, dummy, parent->CAMBrightCurveJ, parent->CAMBrightCurveQ, parent->CAMMean, 5, skip, execsharp, d, dj, yb, 1);
+ dummy, dummy, parent->CAMBrightCurveJ, parent->CAMBrightCurveQ, parent->CAMMean, 5, skip, execsharp, d, dj, yb, 1, parent->sharpMask);
} else {
// CIECAM is disabled, we free up its image buffer to save some space
if (cieCrop) {
@@ -1082,16 +1082,6 @@ void Crop::freeAll ()
cieCrop = nullptr;
}
- if (cbuf_real) {
- delete [] cbuf_real;
- cbuf_real = nullptr;
- }
-
- if (cbuffer ) {
- delete [] cbuffer;
- cbuffer = nullptr;
- }
-
PipetteBuffer::flush();
}
@@ -1269,21 +1259,6 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte
cieCrop = nullptr;
}
- if (cbuffer ) {
- delete [] cbuffer;
- }
-
- if (cbuf_real) {
- delete [] cbuf_real;
- }
-
- cbuffer = new float*[croph];
- cbuf_real = new float[ (croph + 2)*cropw];
-
- for (int i = 0; i < croph; i++) {
- cbuffer[i] = cbuf_real + cropw * i + cropw;
- }
-
if (editType == ET_PIPETTE) {
PipetteBuffer::resize (cropw, croph);
} else if (PipetteBuffer::bufferCreated()) {
diff --git a/rtengine/dcrop.h b/rtengine/dcrop.h
index 7ec346d3c..efd4a399a 100644
--- a/rtengine/dcrop.h
+++ b/rtengine/dcrop.h
@@ -44,13 +44,11 @@ protected:
LabImage* laboCrop; // "one chunk" allocation
LabImage* labnCrop; // "one chunk" allocation
Image8* cropImg; // "one chunk" allocation ; displayed image in monitor color space, showing the output profile as well (soft-proofing enabled, which then correspond to workimg) or not
- float * cbuf_real; // "one chunk" allocation
// --- automatically allocated and deleted when necessary, and only renewed on size changes
Imagefloat* transCrop; // "one chunk" allocation, allocated if necessary
CieImage* cieCrop; // allocating 6 images, each in "one chunk" allocation
// -----------------------------------------------------------------
- float** cbuffer;
bool updating; /// Flag telling if an updater thread is currently processing
bool newUpdatePending; /// Flag telling the updater thread that a new update is pending
diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc
index 582b00629..83439ba52 100644
--- a/rtengine/demosaic_algos.cc
+++ b/rtengine/demosaic_algos.cc
@@ -284,11 +284,11 @@ void RawImageSource::eahd_demosaic ()
// Interpolate R and B
for (int i = 0; i < H; i++) {
if (i == 0) {
- interpolate_row_rb_mul_pp (red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
+ interpolate_row_rb_mul_pp (rawData, red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
} else if (i == H - 1) {
- interpolate_row_rb_mul_pp (red[i], blue[i], green[i - 1], green[i], nullptr, i, 1.0, 1.0, 1.0, 0, W, 1);
+ interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], nullptr, i, 1.0, 1.0, 1.0, 0, W, 1);
} else {
- interpolate_row_rb_mul_pp (red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
+ interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
}
}
}
@@ -545,333 +545,21 @@ void RawImageSource::hphd_demosaic ()
for (int i = 0; i < H; i++) {
if (i == 0) {
- interpolate_row_rb_mul_pp (red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
+ interpolate_row_rb_mul_pp (rawData, red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
} else if (i == H - 1) {
- interpolate_row_rb_mul_pp (red[i], blue[i], green[i - 1], green[i], nullptr, i, 1.0, 1.0, 1.0, 0, W, 1);
+ interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], nullptr, i, 1.0, 1.0, 1.0, 0, W, 1);
} else {
- interpolate_row_rb_mul_pp (red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
+ interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
}
}
+ border_interpolate2(W, H, 4, rawData, red, green, blue);
+
if (plistener) {
plistener->setProgress (1.0);
}
}
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-#define fc(row,col) (prefilters >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3)
-typedef unsigned short ushort;
-void RawImageSource::vng4_demosaic ()
-{
- const signed short int *cp, terms[] = {
- -2, -2, +0, -1, 0, 0x01, -2, -2, +0, +0, 1, 0x01, -2, -1, -1, +0, 0, 0x01,
- -2, -1, +0, -1, 0, 0x02, -2, -1, +0, +0, 0, 0x03, -2, -1, +0, +1, 1, 0x01,
- -2, +0, +0, -1, 0, 0x06, -2, +0, +0, +0, 1, 0x02, -2, +0, +0, +1, 0, 0x03,
- -2, +1, -1, +0, 0, 0x04, -2, +1, +0, -1, 1, 0x04, -2, +1, +0, +0, 0, 0x06,
- -2, +1, +0, +1, 0, 0x02, -2, +2, +0, +0, 1, 0x04, -2, +2, +0, +1, 0, 0x04,
- -1, -2, -1, +0, 0, 0x80, -1, -2, +0, -1, 0, 0x01, -1, -2, +1, -1, 0, 0x01,
- -1, -2, +1, +0, 1, 0x01, -1, -1, -1, +1, 0, 0x88, -1, -1, +1, -2, 0, 0x40,
- -1, -1, +1, -1, 0, 0x22, -1, -1, +1, +0, 0, 0x33, -1, -1, +1, +1, 1, 0x11,
- -1, +0, -1, +2, 0, 0x08, -1, +0, +0, -1, 0, 0x44, -1, +0, +0, +1, 0, 0x11,
- -1, +0, +1, -2, 1, 0x40, -1, +0, +1, -1, 0, 0x66, -1, +0, +1, +0, 1, 0x22,
- -1, +0, +1, +1, 0, 0x33, -1, +0, +1, +2, 1, 0x10, -1, +1, +1, -1, 1, 0x44,
- -1, +1, +1, +0, 0, 0x66, -1, +1, +1, +1, 0, 0x22, -1, +1, +1, +2, 0, 0x10,
- -1, +2, +0, +1, 0, 0x04, -1, +2, +1, +0, 1, 0x04, -1, +2, +1, +1, 0, 0x04,
- +0, -2, +0, +0, 1, 0x80, +0, -1, +0, +1, 1, 0x88, +0, -1, +1, -2, 0, 0x40,
- +0, -1, +1, +0, 0, 0x11, +0, -1, +2, -2, 0, 0x40, +0, -1, +2, -1, 0, 0x20,
- +0, -1, +2, +0, 0, 0x30, +0, -1, +2, +1, 1, 0x10, +0, +0, +0, +2, 1, 0x08,
- +0, +0, +2, -2, 1, 0x40, +0, +0, +2, -1, 0, 0x60, +0, +0, +2, +0, 1, 0x20,
- +0, +0, +2, +1, 0, 0x30, +0, +0, +2, +2, 1, 0x10, +0, +1, +1, +0, 0, 0x44,
- +0, +1, +1, +2, 0, 0x10, +0, +1, +2, -1, 1, 0x40, +0, +1, +2, +0, 0, 0x60,
- +0, +1, +2, +1, 0, 0x20, +0, +1, +2, +2, 0, 0x10, +1, -2, +1, +0, 0, 0x80,
- +1, -1, +1, +1, 0, 0x88, +1, +0, +1, +2, 0, 0x08, +1, +0, +2, -1, 0, 0x40,
- +1, +0, +2, +1, 0, 0x10
- },
- chood[] = { -1, -1, -1, 0, -1, +1, 0, +1, +1, +1, +1, 0, +1, -1, 0, -1 };
-
- double progress = 0.0;
- const bool plistenerActive = plistener;
-
- if (plistenerActive) {
- plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::VNG4)));
- plistener->setProgress (progress);
- }
-
- const unsigned prefilters = ri->prefilters;
- const int width = W, height = H;
- constexpr unsigned int colors = 4;
- float (*image)[4];
-
- image = (float (*)[4]) calloc (height * width, sizeof * image);
-
-#ifdef _OPENMP
- #pragma omp parallel for
-#endif
-
- for (int ii = 0; ii < H; ii++)
- for (int jj = 0; jj < W; jj++) {
- image[ii * W + jj][fc(ii, jj)] = rawData[ii][jj];
- }
-
- {
- int lcode[16][16][32];
- float mul[16][16][8];
- float csum[16][16][4];
-
-// first linear interpolation
- for (int row = 0; row < 16; row++)
- for (int col = 0; col < 16; col++) {
- int * ip = lcode[row][col];
- int mulcount = 0;
- float sum[4];
- memset (sum, 0, sizeof sum);
-
- for (int y = -1; y <= 1; y++)
- for (int x = -1; x <= 1; x++) {
- int shift = (y == 0) + (x == 0);
-
- if (shift == 2) {
- continue;
- }
-
- int color = fc(row + y, col + x);
- *ip++ = (width * y + x) * 4 + color;
-
- mul[row][col][mulcount] = (1 << shift);
- *ip++ = color;
- sum[color] += (1 << shift);
- mulcount++;
- }
-
- int colcount = 0;
-
- for (unsigned int c = 0; c < colors; c++)
- if (c != fc(row, col)) {
- *ip++ = c;
- csum[row][col][colcount] = sum[c];
- colcount ++;
- }
- }
-
-#ifdef _OPENMP
- #pragma omp parallel for
-#endif
-
- for (int row = 1; row < height - 1; row++) {
- for (int col = 1; col < width - 1; col++) {
- float * pix = image[row * width + col];
- int * ip = lcode[row & 15][col & 15];
- float sum[4];
- memset (sum, 0, sizeof sum);
-
- for (int i = 0; i < 8; i++, ip += 2) {
- sum[ip[1]] += pix[ip[0]] * mul[row & 15][col & 15][i];
- }
-
- for (unsigned int i = 0; i < colors - 1; i++, ip++) {
- pix[ip[0]] = sum[ip[0]] / csum[row & 15][col & 15][i];
- }
- }
- }
- }
-
- const int prow = 7, pcol = 1;
- int *code[8][2];
- int t, g;
- int * ip = (int *) calloc ((prow + 1) * (pcol + 1), 1280);
-
- for (int row = 0; row <= prow; row++) /* Precalculate for VNG */
- for (int col = 0; col <= pcol; col++) {
- code[row][col] = ip;
-
- for (cp = terms, t = 0; t < 64; t++) {
- int y1 = *cp++;
- int x1 = *cp++;
- int y2 = *cp++;
- int x2 = *cp++;
- int weight = *cp++;
- int grads = *cp++;
- unsigned int color = fc(row + y1, col + x1);
-
- if (fc(row + y2, col + x2) != color) {
- continue;
- }
-
- int diag = (fc(row, col + 1) == color && fc(row + 1, col) == color) ? 2 : 1;
-
- if (abs(y1 - y2) == diag && abs(x1 - x2) == diag) {
- continue;
- }
-
- *ip++ = (y1 * width + x1) * 4 + color;
- *ip++ = (y2 * width + x2) * 4 + color;
- *ip++ = weight;
-
- for (g = 0; g < 8; g++)
- if (grads & (1 << g)) {
- *ip++ = g;
- }
-
- *ip++ = -1;
- }
-
- *ip++ = INT_MAX;
-
- for (cp = chood, g = 0; g < 8; g++) {
- int y = *cp++;
- int x = *cp++;
- *ip++ = (y * width + x) * 4;
- unsigned int color = fc(row, col);
-
- if (fc(row + y, col + x) != color && fc(row + y * 2, col + x * 2) == color) {
- *ip++ = (y * width + x) * 8 + color;
- } else {
- *ip++ = 0;
- }
- }
- }
-
- if(plistenerActive) {
- progress = 0.1;
- plistener->setProgress (progress);
- }
-
-
-#ifdef _OPENMP
- #pragma omp parallel
-#endif
- {
- float gval[8], thold, sum[3];
- int g;
- const int progressStep = 64;
- const double progressInc = (0.98 - progress) / ((height - 2) / progressStep);
-#ifdef _OPENMP
- #pragma omp for nowait
-#endif
-
- for (int row = 2; row < height - 2; row++) { /* Do VNG interpolation */
- for (int col = 2; col < width - 2; col++) {
- float * pix = image[row * width + col];
- int * ip = code[row & prow][col & pcol];
- memset (gval, 0, sizeof gval);
-
- while ((g = ip[0]) != INT_MAX) { /* Calculate gradients */
- float diff = fabsf(pix[g] - pix[ip[1]]) * (1 << ip[2]);
- gval[ip[3]] += diff;
- ip += 4;
-
- while ((g = *ip++) != -1) {
- gval[g] += diff;
- }
- }
-
- ip++;
- {
- float gmin, gmax;
- gmin = gmax = gval[0]; /* Choose a threshold */
-
- for (g = 1; g < 8; g++) {
- if (gmin > gval[g]) {
- gmin = gval[g];
- }
-
- if (gmax < gval[g]) {
- gmax = gval[g];
- }
- }
-
- thold = gmin + (gmax / 2);
- }
- memset (sum, 0, sizeof sum);
- float t1, t2;
- int color = fc(row, col);
- t1 = t2 = pix[color];
-
- if(color & 1) {
- int num = 0;
-
- for (g = 0; g < 8; g++, ip += 2) { /* Average the neighbors */
- if (gval[g] <= thold) {
- if(ip[1]) {
- sum[0] += (t1 + pix[ip[1]]) * 0.5f;
- }
-
- sum[1] += pix[ip[0] + (color ^ 2)];
- num++;
- }
- }
-
- t1 += (sum[1] - sum[0]) / num;
- } else {
- int num = 0;
-
- for (g = 0; g < 8; g++, ip += 2) { /* Average the neighbors */
- if (gval[g] <= thold) {
- sum[1] += pix[ip[0] + 1];
- sum[2] += pix[ip[0] + 3];
-
- if(ip[1]) {
- sum[0] += (t1 + pix[ip[1]]) * 0.5f;
- }
-
- num++;
- }
- }
-
- t1 += (sum[1] - sum[0]) / num;
- t2 += (sum[2] - sum[0]) / num;
- }
-
- green[row][col] = 0.5f * (t1 + t2);
- }
-
- if(plistenerActive) {
- if((row % progressStep) == 0)
-#ifdef _OPENMP
- #pragma omp critical (updateprogress)
-#endif
- {
- progress += progressInc;
- plistener->setProgress (progress);
- }
- }
- }
-
- }
- free (code[0][0]);
- free (image);
-
- if(plistenerActive) {
- plistener->setProgress (0.98);
- }
-
- // Interpolate R and B
-#ifdef _OPENMP
- #pragma omp parallel for
-#endif
-
- for (int i = 0; i < H; i++) {
- if (i == 0)
- // rm, gm, bm must be recovered
- //interpolate_row_rb_mul_pp (red, blue, NULL, green[i], green[i+1], i, rm, gm, bm, 0, W, 1);
- {
- interpolate_row_rb_mul_pp (red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
- } else if (i == H - 1) {
- interpolate_row_rb_mul_pp (red[i], blue[i], green[i - 1], green[i], nullptr, i, 1.0, 1.0, 1.0, 0, W, 1);
- } else {
- interpolate_row_rb_mul_pp (red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
- }
- }
-
- if(plistenerActive) {
- plistener->setProgress (1.0);
- }
-}
-
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
#undef fc
#define fc(row,col) \
(ri->get_filters() >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3)
@@ -1028,7 +716,7 @@ void RawImageSource::border_interpolate(unsigned int border, float (*image)[4],
}
}
-void RawImageSource::border_interpolate2( int winw, int winh, int lborders)
+void RawImageSource::border_interpolate2( int winw, int winh, int lborders, const array2D &rawData, array2D &red, array2D &green, array2D &blue)
{
int bord = lborders;
int width = winw;
@@ -1971,7 +1659,7 @@ void RawImageSource::igv_interpolate(int winw, int winh)
chr[2] = hdif;
chr[3] = vdif;
- border_interpolate2(winw, winh, 7);
+ border_interpolate2(winw, winh, 7, rawData, red, green, blue);
if (plistener) {
plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::IGV)));
@@ -2361,7 +2049,7 @@ void RawImageSource::igv_interpolate(int winw, int winh)
vdif = (float (*)) calloc(width * height / 2, sizeof * vdif);
hdif = (float (*)) calloc(width * height / 2, sizeof * hdif);
- border_interpolate2(winw, winh, 7);
+ border_interpolate2(winw, winh, 7, rawData, red, green, blue);
if (plistener) {
plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::IGV)));
diff --git a/rtengine/dual_demosaic_RT.cc b/rtengine/dual_demosaic_RT.cc
new file mode 100644
index 000000000..6e92fd1e2
--- /dev/null
+++ b/rtengine/dual_demosaic_RT.cc
@@ -0,0 +1,144 @@
+////////////////////////////////////////////////////////////////
+//
+// combine demosaic algorithms
+//
+//
+// copyright (c) 2018 Ingo Weyrich
+//
+// blends output of two demosaicers based on contrast
+//
+//
+// dual_demosaic_RT.cc is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+////////////////////////////////////////////////////////////////
+
+#include "jaggedarray.h"
+#include "rtengine.h"
+#include "rawimagesource.h"
+#include "rt_math.h"
+//#define BENCHMARK
+#include "StopWatch.h"
+#include "rt_algo.h"
+
+using namespace std;
+
+namespace rtengine
+{
+
+void RawImageSource::dual_demosaic_RT(bool isBayer, const RAWParams &raw, int winw, int winh, const array2D &rawData, array2D &red, array2D &green, array2D &blue, double &contrast, bool autoContrast, int autoX, int autoY)
+{
+ BENCHFUN
+
+ if (contrast == 0.0 && !autoContrast) {
+ // contrast == 0.0 means only first demosaicer will be used
+ if(isBayer) {
+ if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AMAZEVNG4) ) {
+ amaze_demosaic_RT(0, 0, winw, winh, rawData, red, green, blue);
+ } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::DCBVNG4) ) {
+ dcb_demosaic(raw.bayersensor.dcb_iterations, raw.bayersensor.dcb_enhance);
+ } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::RCDVNG4) ) {
+ rcd_demosaic();
+ }
+ } else {
+ if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FOUR_PASS) ) {
+ xtrans_interpolate (3, true);
+ } else {
+ xtrans_interpolate (1, false);
+ }
+ }
+
+ return;
+ }
+
+ array2D redTmp(winw, winh);
+ array2D greenTmp(winw, winh);
+ array2D blueTmp(winw, winh);
+ array2D L(winw, winh);
+
+ if (isBayer) {
+ vng4_demosaic(rawData, redTmp, greenTmp, blueTmp);
+
+ if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AMAZEVNG4) || raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::PIXELSHIFT)) {
+ amaze_demosaic_RT(0, 0, winw, winh, rawData, red, green, blue);
+ } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::DCBVNG4) ) {
+ dcb_demosaic(raw.bayersensor.dcb_iterations, raw.bayersensor.dcb_enhance);
+ } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::RCDVNG4) ) {
+ rcd_demosaic();
+ }
+ } else {
+ if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FOUR_PASS) ) {
+ xtrans_interpolate (3, true);
+ } else {
+ xtrans_interpolate (1, false);
+ }
+ fast_xtrans_interpolate(rawData, redTmp, greenTmp, blueTmp);
+ }
+
+ const float xyz_rgb[3][3] = { // XYZ from RGB
+ { 0.412453, 0.357580, 0.180423 },
+ { 0.212671, 0.715160, 0.072169 },
+ { 0.019334, 0.119193, 0.950227 }
+ };
+
+ if (autoContrast && autoX >= 0 && autoY >= 0) {
+ constexpr int rectSize = 40;
+ const int autoWidth = min(rectSize, winw - autoX);
+ const int autoHeight = min(rectSize, winh - autoY);
+ if (std::min(autoWidth, autoHeight) > 20) {
+ array2D autoL(autoWidth, autoHeight);
+ for(int i = 0; i < autoHeight; ++i) {
+ Color::RGB2L(red[i + autoY] + autoX, green[i + autoY] + autoX, blue[i + autoY] + autoX, autoL[i], xyz_rgb, autoWidth);
+ }
+ // calculate contrast based blend factors to use vng4 in regions with low contrast
+ JaggedArray blend(autoWidth - 2, autoHeight - 2);
+ int c = calcContrastThreshold(autoL, blend, autoWidth, autoHeight);
+ if(c < 100) {
+ contrast = c; // alternative : contrast = c - 1
+ }
+ }
+ }
+
+ #pragma omp parallel
+ {
+ #pragma omp for
+ for(int i = 0; i < winh; ++i) {
+ Color::RGB2L(red[i], green[i], blue[i], L[i], xyz_rgb, winw);
+ }
+ }
+ // calculate contrast based blend factors to use vng4 in regions with low contrast
+ JaggedArray blend(winw, winh);
+ buildBlendMask(L, blend, winw, winh, contrast / 100.f);
+
+ // the following is split into 3 loops intentionally to avoid cache conflicts on CPUs with only 4-way cache
+ #pragma omp parallel for
+ for(int i = 0; i < winh; ++i) {
+ for(int j = 0; j < winw; ++j) {
+ red[i][j] = intp(blend[i][j], red[i][j], redTmp[i][j]);
+ }
+ }
+ #pragma omp parallel for
+ for(int i = 0; i < winh; ++i) {
+ for(int j = 0; j < winw; ++j) {
+ green[i][j] = intp(blend[i][j], green[i][j], greenTmp[i][j]);
+ }
+ }
+ #pragma omp parallel for
+ for(int i = 0; i < winh; ++i) {
+ for(int j = 0; j < winw; ++j) {
+ blue[i][j] = intp(blend[i][j], blue[i][j], blueTmp[i][j]);
+ }
+ }
+
+}
+}
diff --git a/rtengine/expo_before_b.cc b/rtengine/expo_before_b.cc
index f94b2c292..eda8c9e37 100644
--- a/rtengine/expo_before_b.cc
+++ b/rtengine/expo_before_b.cc
@@ -82,7 +82,7 @@ void RawImageSource::processRawWhitepoint(float expos, float preser, array2DgetSensorType() == ST_BAYER) {
fast_demosaic();
} else {
- fast_xtrans_interpolate();
+ fast_xtrans_interpolate(rawData, red, green, blue);
}
}
diff --git a/rtengine/gauss.cc b/rtengine/gauss.cc
index 3b03afdee..ab080a3c4 100644
--- a/rtengine/gauss.cc
+++ b/rtengine/gauss.cc
@@ -163,15 +163,15 @@ template void gauss3x3div (T** RESTRICT src, T** RESTRICT dst, T** REST
#pragma omp single nowait
#endif
{
- dst[0][0] = divBuffer[0][0] / (src[0][0] > 0.f ? src[0][0] : 1.f);
+ dst[0][0] = rtengine::max(divBuffer[0][0] / (src[0][0] > 0.f ? src[0][0] : 1.f), 0.f);
for (int j = 1; j < W - 1; j++)
{
float tmp = (b1 * (src[0][j - 1] + src[0][j + 1]) + b0 * src[0][j]);
- dst[0][j] = divBuffer[0][j] / (tmp > 0.f ? tmp : 1.f);
+ dst[0][j] = rtengine::max(divBuffer[0][j] / (tmp > 0.f ? tmp : 1.f), 0.f);
}
- dst[0][W - 1] = divBuffer[0][W - 1] / (src[0][W - 1] > 0.f ? src[0][W - 1] : 1.f);
+ dst[0][W - 1] = rtengine::max(divBuffer[0][W - 1] / (src[0][W - 1] > 0.f ? src[0][W - 1] : 1.f), 0.f);
}
#ifdef _OPENMP
@@ -180,15 +180,15 @@ template void gauss3x3div (T** RESTRICT src, T** RESTRICT dst, T** REST
for (int i = 1; i < H - 1; i++) {
float tmp = (b1 * (src[i - 1][0] + src[i + 1][0]) + b0 * src[i][0]);
- dst[i][0] = divBuffer[i][0] / (tmp > 0.f ? tmp : 1.f);
+ dst[i][0] = rtengine::max(divBuffer[i][0] / (tmp > 0.f ? tmp : 1.f), 0.f);
for (int j = 1; j < W - 1; j++) {
tmp = (c2 * (src[i - 1][j - 1] + src[i - 1][j + 1] + src[i + 1][j - 1] + src[i + 1][j + 1]) + c1 * (src[i - 1][j] + src[i][j - 1] + src[i][j + 1] + src[i + 1][j]) + c0 * src[i][j]);
- dst[i][j] = divBuffer[i][j] / (tmp > 0.f ? tmp : 1.f);
+ dst[i][j] = rtengine::max(divBuffer[i][j] / (tmp > 0.f ? tmp : 1.f), 0.f);
}
tmp = (b1 * (src[i - 1][W - 1] + src[i + 1][W - 1]) + b0 * src[i][W - 1]);
- dst[i][W - 1] = divBuffer[i][W - 1] / (tmp > 0.f ? tmp : 1.f);
+ dst[i][W - 1] = rtengine::max(divBuffer[i][W - 1] / (tmp > 0.f ? tmp : 1.f), 0.f);
}
// last row
@@ -196,14 +196,14 @@ template void gauss3x3div (T** RESTRICT src, T** RESTRICT dst, T** REST
#pragma omp single
#endif
{
- dst[H - 1][0] = divBuffer[H - 1][0] / (src[H - 1][0] > 0.f ? src[H - 1][0] : 1.f);
+ dst[H - 1][0] = rtengine::max(divBuffer[H - 1][0] / (src[H - 1][0] > 0.f ? src[H - 1][0] : 1.f), 0.f);
for (int j = 1; j < W - 1; j++) {
float tmp = (b1 * (src[H - 1][j - 1] + src[H - 1][j + 1]) + b0 * src[H - 1][j]);
- dst[H - 1][j] = divBuffer[H - 1][j] / (tmp > 0.f ? tmp : 1.f);
+ dst[H - 1][j] = rtengine::max(divBuffer[H - 1][j] / (tmp > 0.f ? tmp : 1.f), 0.f);
}
- dst[H - 1][W - 1] = divBuffer[H - 1][W - 1] / (src[H - 1][W - 1] > 0.f ? src[H - 1][W - 1] : 1.f);
+ dst[H - 1][W - 1] = rtengine::max(divBuffer[H - 1][W - 1] / (src[H - 1][W - 1] > 0.f ? src[H - 1][W - 1] : 1.f), 0.f);
}
}
@@ -859,8 +859,8 @@ template void gaussVerticalSsediv (T** src, T** dst, T** divBuffer, con
Tv1 = Rv1;
Rv = LVF(tmp[j][0]) * Bv + Tv * b1v + Tm2v * b2v + Tm3v * b3v;
Rv1 = LVF(tmp[j][4]) * Bv + Tv1 * b1v + Tm2v1 * b2v + Tm3v1 * b3v;
- STVFU( dst[j][i], LVFU(divBuffer[j][i]) / vself(vmaskf_gt(Rv, ZEROV), Rv, onev));
- STVFU( dst[j][i + 4], LVFU(divBuffer[j][i + 4]) / vself(vmaskf_gt(Rv1, ZEROV), Rv1, onev));
+ STVFU( dst[j][i], vmaxf(LVFU(divBuffer[j][i]) / vself(vmaskf_gt(Rv, ZEROV), Rv, onev), ZEROV));
+ STVFU( dst[j][i + 4], vmaxf(LVFU(divBuffer[j][i + 4]) / vself(vmaskf_gt(Rv1, ZEROV), Rv1, onev), ZEROV));
Tm3v = Tm2v;
Tm3v1 = Tm2v1;
Tm2v = Tv;
@@ -895,7 +895,7 @@ template void gaussVerticalSsediv (T** src, T** dst, T** divBuffer, con
}
for (int j = 0; j < H; j++) {
- dst[j][i] = divBuffer[j][i] / (tmp[j][0] > 0.f ? tmp[j][0] : 1.f);
+ dst[j][i] = rtengine::max(divBuffer[j][i] / (tmp[j][0] > 0.f ? tmp[j][0] : 1.f), 0.f);
}
}
@@ -1020,14 +1020,14 @@ template void gaussVerticaldiv (T** src, T** dst, T** divBuffer, const
}
for (int k = 0; k < numcols; k++) {
- dst[H - 1][i + k] = divBuffer[H - 1][i + k] / (temp2[H - 1][k] = temp2Hm1[k]);
- dst[H - 2][i + k] = divBuffer[H - 2][i + k] / (temp2[H - 2][k] = B * temp2[H - 2][k] + b1 * temp2[H - 1][k] + b2 * temp2H[k] + b3 * temp2Hp1[k]);
- dst[H - 3][i + k] = divBuffer[H - 3][i + k] / (temp2[H - 3][k] = B * temp2[H - 3][k] + b1 * temp2[H - 2][k] + b2 * temp2[H - 1][k] + b3 * temp2H[k]);
+ dst[H - 1][i + k] = rtengine::max(divBuffer[H - 1][i + k] / (temp2[H - 1][k] = temp2Hm1[k]), 0.0);
+ dst[H - 2][i + k] = rtengine::max(divBuffer[H - 2][i + k] / (temp2[H - 2][k] = B * temp2[H - 2][k] + b1 * temp2[H - 1][k] + b2 * temp2H[k] + b3 * temp2Hp1[k]), 0.0);
+ dst[H - 3][i + k] = rtengine::max(divBuffer[H - 3][i + k] / (temp2[H - 3][k] = B * temp2[H - 3][k] + b1 * temp2[H - 2][k] + b2 * temp2[H - 1][k] + b3 * temp2H[k]), 0.0);
}
for (int j = H - 4; j >= 0; j--) {
for (int k = 0; k < numcols; k++) {
- dst[j][i + k] = divBuffer[j][i + k] / (temp2[j][k] = B * temp2[j][k] + b1 * temp2[j + 1][k] + b2 * temp2[j + 2][k] + b3 * temp2[j + 3][k]);
+ dst[j][i + k] = rtengine::max(divBuffer[j][i + k] / (temp2[j][k] = B * temp2[j][k] + b1 * temp2[j + 1][k] + b2 * temp2[j + 2][k] + b3 * temp2[j + 3][k]), 0.0);
}
}
}
@@ -1050,12 +1050,12 @@ template void gaussVerticaldiv (T** src, T** dst, T** divBuffer, const
double temp2H = src[H - 1][i] + M[1][0] * (temp2[H - 1][0] - src[H - 1][i]) + M[1][1] * (temp2[H - 2][0] - src[H - 1][i]) + M[1][2] * (temp2[H - 3][0] - src[H - 1][i]);
double temp2Hp1 = src[H - 1][i] + M[2][0] * (temp2[H - 1][0] - src[H - 1][i]) + M[2][1] * (temp2[H - 2][0] - src[H - 1][i]) + M[2][2] * (temp2[H - 3][0] - src[H - 1][i]);
- dst[H - 1][i] = divBuffer[H - 1][i] / (temp2[H - 1][0] = temp2Hm1);
- dst[H - 2][i] = divBuffer[H - 2][i] / (temp2[H - 2][0] = B * temp2[H - 2][0] + b1 * temp2[H - 1][0] + b2 * temp2H + b3 * temp2Hp1);
- dst[H - 3][i] = divBuffer[H - 3][i] / (temp2[H - 3][0] = B * temp2[H - 3][0] + b1 * temp2[H - 2][0] + b2 * temp2[H - 1][0] + b3 * temp2H);
+ dst[H - 1][i] = rtengine::max(divBuffer[H - 1][i] / (temp2[H - 1][0] = temp2Hm1), 0.0);
+ dst[H - 2][i] = rtengine::max(divBuffer[H - 2][i] / (temp2[H - 2][0] = B * temp2[H - 2][0] + b1 * temp2[H - 1][0] + b2 * temp2H + b3 * temp2Hp1), 0.0);
+ dst[H - 3][i] = rtengine::max(divBuffer[H - 3][i] / (temp2[H - 3][0] = B * temp2[H - 3][0] + b1 * temp2[H - 2][0] + b2 * temp2[H - 1][0] + b3 * temp2H), 0.0);
for (int j = H - 4; j >= 0; j--) {
- dst[j][i] = divBuffer[j][i] / (temp2[j][0] = B * temp2[j][0] + b1 * temp2[j + 1][0] + b2 * temp2[j + 2][0] + b3 * temp2[j + 3][0]);
+ dst[j][i] = rtengine::max(divBuffer[j][i] / (temp2[j][0] = B * temp2[j][0] + b1 * temp2[j + 1][0] + b2 * temp2[j + 2][0] + b3 * temp2[j + 3][0]), 0.0);
}
}
}
diff --git a/rtengine/green_equil_RT.cc b/rtengine/green_equil_RT.cc
index 934b7df4a..361bde882 100644
--- a/rtengine/green_equil_RT.cc
+++ b/rtengine/green_equil_RT.cc
@@ -46,7 +46,6 @@ void RawImageSource::green_equilibrate_global(array2D &rawData)
for (int i = border; i < H - border; i++) {
double avgg = 0.;
-
for (int j = border + ((FC(i, border) & 1) ^ 1); j < W - border; j += 2) {
avgg += rawData[i][j];
}
diff --git a/rtengine/hilite_recon.cc b/rtengine/hilite_recon.cc
index a1f5b5e4a..b8ad23e70 100644
--- a/rtengine/hilite_recon.cc
+++ b/rtengine/hilite_recon.cc
@@ -28,8 +28,6 @@
#include "rawimagesource.h"
#include "rt_math.h"
#include "opthelper.h"
-#include "gauss.h"
-
namespace rtengine
{
@@ -414,8 +412,6 @@ void RawImageSource :: HLRecovery_inpaint (float** red, float** green, float** b
constexpr float itrans[ColorCount][ColorCount] =
{ { 1.f, 0.8660254f, -0.5f }, { 1.f, -0.8660254f, -0.5f }, { 1.f, 0.f, 1.f } };
- std::unique_ptr recovered_partial;
-
if(settings->verbose)
for(int c = 0; c < 3; c++) {
printf("chmax[%d] : %f\tclmax[%d] : %f\tratio[%d] : %f\n", c, chmax[c], c, clmax[c], c, chmax[c] / clmax[c]);
@@ -570,7 +566,7 @@ void RawImageSource :: HLRecovery_inpaint (float** red, float** green, float** b
//blur highlight data
boxblur2(hilite_full[3], hilite_full4, temp, height, width, 1);
- //temp.free(); // free temporary buffer
+ temp.free(); // free temporary buffer
if(plistener) {
progress += 0.05;
@@ -1109,34 +1105,29 @@ void RawImageSource :: HLRecovery_inpaint (float** red, float** green, float** b
if (pixel[0] > max_f[0] && pixel[1] > max_f[1] && pixel[2] > max_f[2]) {
//all channels clipped
float Y = (0.299 * clipfix[0] + 0.587 * clipfix[1] + 0.114 * clipfix[2]);
+
float factor = whitept / Y;
- red[i][j] = CLIP(clipfix[0] * factor);
- green[i][j] = CLIP(clipfix[1] * factor);
- blue[i][j] = CLIP(clipfix[2] * factor);
-
+ red[i][j] = clipfix[0] * factor;
+ green[i][j] = clipfix[1] * factor;
+ blue[i][j] = clipfix[2] * factor;
} else {//some channels clipped
float notclipped[3] = {pixel[0] <= max_f[0] ? 1.f : 0.f, pixel[1] <= max_f[1] ? 1.f : 0.f, pixel[2] <= max_f[2] ? 1.f : 0.f};
if (notclipped[0] == 0.f) { //red clipped
- red[i][j] = CLIP((clipfix[0] * ((notclipped[1] * pixel[1] + notclipped[2] * pixel[2]) /
+ red[i][j] = max(red[i][j], (clipfix[0] * ((notclipped[1] * pixel[1] + notclipped[2] * pixel[2]) /
(notclipped[1] * clipfix[1] + notclipped[2] * clipfix[2] + epsilon))));
}
if (notclipped[1] == 0.f) { //green clipped
- green[i][j] = CLIP((clipfix[1] * ((notclipped[2] * pixel[2] + notclipped[0] * pixel[0]) /
+ green[i][j] = max(green[i][j], (clipfix[1] * ((notclipped[2] * pixel[2] + notclipped[0] * pixel[0]) /
(notclipped[2] * clipfix[2] + notclipped[0] * clipfix[0] + epsilon))));
}
if (notclipped[2] == 0.f) { //blue clipped
- blue[i][j] = CLIP((clipfix[2] * ((notclipped[0] * pixel[0] + notclipped[1] * pixel[1]) /
+ blue[i][j] = max(blue[i][j], (clipfix[2] * ((notclipped[0] * pixel[0] + notclipped[1] * pixel[1]) /
(notclipped[0] * clipfix[0] + notclipped[1] * clipfix[1] + epsilon))));
}
-
- if (!recovered_partial) {
- recovered_partial.reset(new PixelsMap(width, height));
- }
- recovered_partial->set(j, i);
- }
+ }
Y = (0.299 * red[i][j] + 0.587 * green[i][j] + 0.114 * blue[i][j]);
@@ -1150,33 +1141,6 @@ void RawImageSource :: HLRecovery_inpaint (float** red, float** green, float** b
}
}
- {
- for (int c = 0; c < 3; ++c) {
- float **color = c == 0 ? red : c == 1 ? green : blue;
-
- if (recovered_partial) {
-#ifdef _OPENMP
- #pragma omp parallel
-#endif
- gaussianBlur(color, temp, width, height, 1.5f);
-
-#ifdef _OPENMP
- #pragma omp parallel for
-#endif
- for (int i = 0; i < height; ++i) {
- for (int j = 0; j < width; ++j) {
- int skip = recovered_partial->skipIfZero(j, i);
- if (skip) {
- j += skip-1;
- } else if (recovered_partial->get(j, i)) {
- color[i][j] = temp[i][j];
- }
- }
- }
- }
- }
- }
-
if(plistener) {
plistener->setProgress(1.00);
}
diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc
index 0faa8c357..23def70ca 100644
--- a/rtengine/histmatching.cc
+++ b/rtengine/histmatching.cc
@@ -26,6 +26,7 @@
#include "iccstore.h"
#include "../rtgui/mydiagonalcurve.h"
#include "improcfun.h"
+//#define BENCHMARK
#include "StopWatch.h"
#include
@@ -51,7 +52,7 @@ CdfInfo getCdf(const IImage8 &img)
for (int y = 0; y < img.getHeight(); ++y) {
for (int x = 0; x < img.getWidth(); ++x) {
- int lum = LIM(0, int(Color::rgbLuminance(float(img.r(y, x)), float(img.g(y, x)), float(img.b(y, x)))), 255);
+ int lum = LIM(int(Color::rgbLuminance(float(img.r(y, x)), float(img.g(y, x)), float(img.b(y, x)))), 0, 255);
++ret.cdf[lum];
}
}
@@ -100,7 +101,6 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve)
{
curve.clear();
- const int npoints = 8;
int idx = 15;
for (; idx < int(mapping.size()); ++idx) {
if (mapping[idx] >= idx) {
@@ -114,7 +114,6 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve)
}
}
}
- int step = std::max(int(mapping.size())/npoints, 1);
auto coord = [](int v) -> double { return double(v)/255.0; };
auto doit =
@@ -147,9 +146,17 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve)
while (start < idx && (mapping[start] < 0 || start < idx / 2)) {
++start;
}
-
- doit(start, idx, idx > step ? step : idx / 2, true);
- doit(idx, int(mapping.size()), step, idx - step > step / 2 && std::abs(curve[curve.size()-2] - coord(idx)) > 0.01);
+
+ const int npoints = 8;
+ int step = std::max(int(mapping.size())/npoints, 1);
+ int end = mapping.size();
+ if (idx <= end / 3) {
+ doit(start, idx, idx / 2, true);
+ doit(idx, end, (end - idx) / 3, false);
+ } else {
+ doit(start, idx, idx > step ? step : idx / 2, true);
+ doit(idx, int(mapping.size()), step, idx - step > step / 2 && std::abs(curve[curve.size()-2] - coord(idx)) > 0.01);
+ }
if (curve.size() > 2 && (1 - curve[curve.size()-2] <= step / (256.0 * 3))) {
curve.pop_back();
@@ -200,6 +207,9 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st
int fw, fh;
getFullSize(fw, fh, TR_NONE);
+ if (getRotateDegree() == 90 || getRotateDegree() == 270) {
+ std::swap(fw, fh);
+ }
int skip = 3;
if (settings->verbose) {
diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc
index 50f249190..eeb9ef1c4 100644
--- a/rtengine/iccstore.cc
+++ b/rtengine/iccstore.cc
@@ -334,6 +334,8 @@ public:
fileStdProfilesFileNames.clear();
if (loadAll) {
loadProfiles(stdProfilesDir, nullptr, nullptr, &fileStdProfilesFileNames, true);
+ Glib::ustring user_input_icc_dir = Glib::build_filename(options.rtdir, "iccprofiles", "input");
+ loadProfiles(user_input_icc_dir, nullptr, nullptr, &fileStdProfilesFileNames, true);
}
defaultMonitorProfile = settings->monitorProfile;
diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h
index c0565a4a3..e01f22b16 100644
--- a/rtengine/imagesource.h
+++ b/rtengine/imagesource.h
@@ -68,7 +68,7 @@ public:
virtual ~ImageSource () {}
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) {};
+ virtual void demosaic (const RAWParams &raw, bool autoContrast, double &contrastThreshold) {};
virtual 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) {};
virtual void retinexPrepareCurves (const RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI) {};
virtual void retinexPrepareBuffers (const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) {};
@@ -80,6 +80,7 @@ public:
virtual bool isRGBSourceModified () const = 0; // tracks whether cached rgb output of demosaic has been modified
+ virtual void setBorder (unsigned int border) {}
virtual void setCurrentFrame (unsigned int frameNum) = 0;
virtual int getFrameCount () = 0;
diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc
index f39fe3415..2ec2df5fc 100644
--- a/rtengine/improccoordinator.cc
+++ b/rtengine/improccoordinator.cc
@@ -35,7 +35,7 @@ extern const Settings* settings;
ImProcCoordinator::ImProcCoordinator ()
: orig_prev (nullptr), oprevi (nullptr), oprevl (nullptr), nprevl (nullptr), fattal_11_dcrop_cache(nullptr), previmg (nullptr), workimg (nullptr),
ncie (nullptr), imgsrc (nullptr), lastAwbEqual (0.), lastAwbTempBias (0.0), ipf (¶ms, true), monitorIntent (RI_RELATIVE),
- softProof (false), gamutCheck (false), scale (10), highDetailPreprocessComputed (false), highDetailRawComputed (false),
+ softProof (false), gamutCheck (false), sharpMask(false), scale (10), highDetailPreprocessComputed (false), highDetailRawComputed (false),
allocated (false), bwAutoR (-9000.f), bwAutoG (-9000.f), bwAutoB (-9000.f), CAMMean (NAN),
hltonecurve (65536),
@@ -230,8 +230,17 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
printf ("Demosaic X-Trans image with using method: %s\n", rp.xtranssensor.method.c_str());
}
}
+ if(imgsrc->getSensorType() == ST_BAYER) {
+ if(params.raw.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::PIXELSHIFT)) {
+ imgsrc->setBorder(params.raw.bayersensor.border);
+ } else {
+ imgsrc->setBorder(std::max(params.raw.bayersensor.border, 2));
+ }
+ }
+ bool autoContrast = false;
+ double contrastThreshold = 0.f;
+ imgsrc->demosaic (rp, autoContrast, contrastThreshold); //enabled demosaic
- imgsrc->demosaic ( rp); //enabled demosaic
// if a demosaic happened we should also call getimage later, so we need to set the M_INIT flag
todo |= M_INIT;
@@ -430,7 +439,9 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, params.toneCurve.hrenabled);
}
if (params.toneCurve.histmatching) {
- imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve);
+ if (!params.toneCurve.fromHistMatching) {
+ imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve);
+ }
if (params.toneCurve.autoexp) {
params.toneCurve.expcomp = 0.0;
@@ -442,6 +453,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
params.toneCurve.brightness = 0;
params.toneCurve.contrast = 0;
params.toneCurve.black = 0;
+ params.toneCurve.fromHistMatching = true;
if (aeListener) {
aeListener->autoMatchedToneCurveChanged(params.toneCurve.curveMode, params.toneCurve.curve);
@@ -1160,6 +1172,11 @@ void ImProcCoordinator::getSoftProofing (bool &softProof, bool &gamutCheck)
gamutCheck = this->gamutCheck;
}
+void ImProcCoordinator::setSharpMask (bool sharpMask)
+{
+ this->sharpMask = sharpMask;
+}
+
void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool apply_wb)
{
@@ -1176,7 +1193,8 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool
ppar.icm.input = "(none)";
Imagefloat* im = new Imagefloat (fW, fH);
imgsrc->preprocess ( ppar.raw, ppar.lensProf, ppar.coarse );
- imgsrc->demosaic (ppar.raw );
+ double dummy = 0.0;
+ imgsrc->demosaic (ppar.raw, false, dummy);
ColorTemp currWB = ColorTemp (params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method);
if (params.wb.method == "Camera") {
diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h
index ada7ed754..aabc9000b 100644
--- a/rtengine/improccoordinator.h
+++ b/rtengine/improccoordinator.h
@@ -76,6 +76,7 @@ protected:
RenderingIntent monitorIntent;
bool softProof;
bool gamutCheck;
+ bool sharpMask;
int scale;
bool highDetailPreprocessComputed;
@@ -271,7 +272,7 @@ public:
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 ()
{
return updaterThreadStart.trylock();
diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc
index 5aea884fb..670a6c825 100644
--- a/rtengine/improcfun.cc
+++ b/rtengine/improcfun.cc
@@ -462,7 +462,8 @@ void ImProcFunctions::firstAnalysis (const Imagefloat* const original, const Pro
// Copyright (c) 2012 Jacques Desmis
void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pwb, LabImage* lab, const ProcParams* params,
const ColorAppearance & customColCurve1, const ColorAppearance & customColCurve2, const ColorAppearance & customColCurve3,
- LUTu & histLCAM, LUTu & histCCAM, LUTf & CAMBrightCurveJ, LUTf & CAMBrightCurveQ, float &mean, int Iterates, int scale, bool execsharp, float &d, float &dj, float &yb, int rtt)
+ LUTu & histLCAM, LUTu & histCCAM, LUTf & CAMBrightCurveJ, LUTf & CAMBrightCurveQ, float &mean, int Iterates, int scale, bool execsharp, float &d, float &dj, float &yb, int rtt,
+ bool showSharpMask)
{
if (params->colorappearance.enabled) {
@@ -1675,7 +1676,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
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); // sharpening adapted to CIECAM
+ ImProcFunctions::sharpeningcam (ncie, buffer, showSharpMask); // sharpening adapted to CIECAM
}
//if(params->dirpyrequalizer.enabled) if(execsharp) {
@@ -2254,15 +2255,15 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
float Balan = float (params->colorToning.balance);
- float chMixRR = float (params->chmixer.red[0]);
- float chMixRG = float (params->chmixer.red[1]);
- float chMixRB = float (params->chmixer.red[2]);
- float chMixGR = float (params->chmixer.green[0]);
- float chMixGG = float (params->chmixer.green[1]);
- float chMixGB = float (params->chmixer.green[2]);
- float chMixBR = float (params->chmixer.blue[0]);
- float chMixBG = float (params->chmixer.blue[1]);
- float chMixBB = float (params->chmixer.blue[2]);
+ float chMixRR = float (params->chmixer.red[0])/10.f;
+ float chMixRG = float (params->chmixer.red[1])/10.f;
+ float chMixRB = float (params->chmixer.red[2])/10.f;
+ float chMixGR = float (params->chmixer.green[0])/10.f;
+ float chMixGG = float (params->chmixer.green[1])/10.f;
+ float chMixGB = float (params->chmixer.green[2])/10.f;
+ float chMixBR = float (params->chmixer.blue[0])/10.f;
+ float chMixBG = float (params->chmixer.blue[1])/10.f;
+ float chMixBB = float (params->chmixer.blue[2])/10.f;
bool blackwhite = params->blackwhite.enabled;
bool complem = params->blackwhite.enabledcc;
@@ -3185,7 +3186,8 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
}
}
-
+ softLight(rtemp, gtemp, btemp, istart, jstart, tW, tH, TS);
+
if (!blackwhite) {
if (editImgFloat || editWhatever) {
for (int i = istart, ti = 0; i < tH; i++, ti++) {
@@ -5740,10 +5742,11 @@ void ImProcFunctions::lab2rgb (const LabImage &src, Imagefloat &dst, const Glib:
void ImProcFunctions::colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread)
{
const float factor = ColorToningParams::LABGRID_CORR_MAX * 3.f;
- float a_scale = (params->colorToning.labgridAHigh - params->colorToning.labgridALow) / factor;
- float a_base = params->colorToning.labgridALow;
- float b_scale = (params->colorToning.labgridBHigh - params->colorToning.labgridBLow) / factor;
- float b_base = params->colorToning.labgridBLow;
+ const float scaling = ColorToningParams::LABGRID_CORR_SCALE;
+ float a_scale = (params->colorToning.labgridAHigh - params->colorToning.labgridALow) / factor / scaling;
+ float a_base = params->colorToning.labgridALow / scaling;
+ float b_scale = (params->colorToning.labgridBHigh - params->colorToning.labgridBLow) / factor / scaling;
+ float b_base = params->colorToning.labgridBLow / scaling;
#ifdef _OPENMP
#pragma omp parallel for if (multiThread)
diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h
index ae6e3bcaa..92dbcba24 100644
--- a/rtengine/improcfun.h
+++ b/rtengine/improcfun.h
@@ -58,11 +58,6 @@ class ImProcFunctions
void transformGeneral(bool highQuality, Imagefloat *original, Imagefloat *transformed, int cx, int cy, int sx, int sy, int oW, int oH, int fW, int fH, const LensCorrection *pLCPMap);
void transformLCPCAOnly(Imagefloat *original, Imagefloat *transformed, int cx, int cy, const LensCorrection *pLCPMap);
- void sharpenHaloCtrl (float** luminance, float** blurmap, float** base, int W, int H, const SharpeningParams &sharpenParam);
- void sharpenHaloCtrl (LabImage* lab, float** blurmap, float** base, int W, int H, SharpeningParams &sharpenParam);
- void sharpenHaloCtrlcam (CieImage* ncie, float** blurmap, float** base, int W, int H);
- void dcdamping (float** aI, float** aO, float damping, int W, int H);
-
bool needsCA ();
bool needsDistortion ();
bool needsRotation ();
@@ -227,12 +222,13 @@ public:
void luminanceCurve (LabImage* lold, LabImage* lnew, LUTf &curve);
void ciecam_02float (CieImage* ncie, float adap, int pW, int pwb, LabImage* lab, const ProcParams* params,
const ColorAppearance & customColCurve1, const ColorAppearance & customColCurve, const ColorAppearance & customColCurve3,
- LUTu &histLCAM, LUTu &histCCAM, LUTf & CAMBrightCurveJ, LUTf & CAMBrightCurveQ, float &mean, int Iterates, int scale, bool execsharp, float &d, float &dj, float &yb, int rtt);
+ LUTu &histLCAM, LUTu &histCCAM, LUTf & CAMBrightCurveJ, LUTf & CAMBrightCurveQ, float &mean, int Iterates, int scale, bool execsharp, float &d, float &dj, float &yb, int rtt,
+ bool showSharpMask = false);
void chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW, LabImage* lold, LabImage* lnew, LUTf &acurve, LUTf &bcurve, LUTf & satcurve, LUTf & satclcurve, LUTf &clcurve, LUTf &curve, bool utili, bool autili, bool butili, bool ccutili, bool cclutili, bool clcutili, LUTu &histCCurve, LUTu &histLurve);
void vibrance (LabImage* lab);//Jacques' vibrance
// void colorCurve (LabImage* lold, LabImage* lnew);
- void sharpening (LabImage* lab, float** buffer, SharpeningParams &sharpenParam);
- void sharpeningcam (CieImage* ncie, float** buffer);
+ void sharpening (LabImage* lab, const SharpeningParams &sharpenParam, bool showMask = false);
+ void sharpeningcam (CieImage* ncie, float** buffer, bool showMask = false);
void transform (Imagefloat* original, Imagefloat* transformed, int cx, int cy, int sx, int sy, int oW, int oH, int fW, int fH, const FramesMetaData *metadata, int rawRotationDeg, bool fullImage);
float resizeScale (const ProcParams* params, int fw, int fh, int &imw, int &imh);
void lab2monitorRgb (LabImage* lab, Image8* image);
@@ -345,6 +341,7 @@ public:
void localContrast(LabImage *lab);
void colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread);
void shadowsHighlights(LabImage *lab);
+ void softLight(float *red, float *green, float *blue, int istart, int jstart, int tW, int tH, int TS);
Image8* lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings=true);
Imagefloat* lab2rgbOut (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga = nullptr);
diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc
index 3c455b03e..eaf0db732 100644
--- a/rtengine/ipsharpen.cc
+++ b/rtengine/ipsharpen.cc
@@ -16,36 +16,96 @@
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see .
*/
-#include "rtengine.h"
+
#include "improcfun.h"
#include "gauss.h"
#include "bilateral2.h"
+#include "jaggedarray.h"
#include "rt_math.h"
#include "sleef.c"
#include "opthelper.h"
-
+//#define BENCHMARK
+#include "StopWatch.h"
+#include "rt_algo.h"
using namespace std;
-namespace rtengine
+namespace {
+
+void sharpenHaloCtrl (float** luminance, float** blurmap, float** base, float** blend, int W, int H, const SharpeningParams &sharpenParam)
{
-#undef ABS
+ const float scale = (100.f - sharpenParam.halocontrol_amount) * 0.01f;
+ const float sharpFac = sharpenParam.amount * 0.01f;
+ float** nL = base;
-#define ABS(a) ((a)<0?-(a):(a))
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
-extern const Settings* settings;
-void ImProcFunctions::dcdamping (float** aI, float** aO, float damping, int W, int H)
+ for (int i = 2; i < H - 2; i++) {
+ float max1 = 0, max2 = 0, min1 = 0, min2 = 0;
+
+ for (int j = 2; j < W - 2; j++) {
+ // compute 3 iterations, only forward
+ float np1 = 2.f * (nL[i - 2][j] + nL[i - 2][j + 1] + nL[i - 2][j + 2] + nL[i - 1][j] + nL[i - 1][j + 1] + nL[i - 1][j + 2] + nL[i] [j] + nL[i] [j + 1] + nL[i] [j + 2]) / 27.f + nL[i - 1][j + 1] / 3.f;
+ float np2 = 2.f * (nL[i - 1][j] + nL[i - 1][j + 1] + nL[i - 1][j + 2] + nL[i] [j] + nL[i] [j + 1] + nL[i] [j + 2] + nL[i + 1][j] + nL[i + 1][j + 1] + nL[i + 1][j + 2]) / 27.f + nL[i] [j + 1] / 3.f;
+ float np3 = 2.f * (nL[i] [j] + nL[i] [j + 1] + nL[i] [j + 2] + nL[i + 1][j] + nL[i + 1][j + 1] + nL[i + 1][j + 2] + nL[i + 2][j] + nL[i + 2][j + 1] + nL[i + 2][j + 2]) / 27.f + nL[i + 1][j + 1] / 3.f;
+
+ // Max/Min of all these deltas and the last two max/min
+ float maxn = rtengine::max(np1, np2, np3);
+ float minn = rtengine::min(np1, np2, np3);
+ float max_ = rtengine::max(max1, max2, maxn);
+ float min_ = rtengine::min(min1, min2, minn);
+
+ // Shift the queue
+ max1 = max2;
+ max2 = maxn;
+ min1 = min2;
+ min2 = minn;
+ float labL = luminance[i][j];
+
+ if (max_ < labL) {
+ max_ = labL;
+ }
+
+ if (min_ > labL) {
+ min_ = labL;
+ }
+
+ // deviation from the environment as measurement
+ float diff = nL[i][j] - blurmap[i][j];
+
+ constexpr float upperBound = 2000.f; // WARNING: Duplicated value, it's baaaaaad !
+ float delta = sharpenParam.threshold.multiply(
+ rtengine::min(fabsf(diff), upperBound), // X axis value = absolute value of the difference
+ sharpFac * diff // Y axis max value = sharpening.amount * signed difference
+ );
+ float newL = labL + delta;
+
+ // applying halo control
+ if (newL > max_) {
+ newL = max_ + (newL - max_) * scale;
+ } else if (newL < min_) {
+ newL = min_ - (min_ - newL) * scale;
+ }
+
+ luminance[i][j] = intp(blend[i][j], newL, luminance[i][j]);
+ }
+ }
+}
+
+void dcdamping (float** aI, float** aO, float damping, int W, int H)
{
const float dampingFac = -2.0 / (damping * damping);
#ifdef __SSE2__
- __m128 Iv, Ov, Uv, zerov, onev, fourv, fivev, dampingFacv, Tv, Wv, Lv;
- zerov = _mm_setzero_ps( );
- onev = F2V( 1.0f );
- fourv = F2V( 4.0f );
- fivev = F2V( 5.0f );
- dampingFacv = F2V( dampingFac );
+ vfloat Iv, Ov, Uv, zerov, onev, fourv, fivev, dampingFacv, Tv, Wv, Lv;
+ zerov = _mm_setzero_ps();
+ onev = F2V(1.f);
+ fourv = F2V(4.f);
+ fivev = F2V(5.f);
+ dampingFacv = F2V(dampingFac);
#endif
#ifdef _OPENMP
#pragma omp for
@@ -56,8 +116,8 @@ void ImProcFunctions::dcdamping (float** aI, float** aO, float damping, int W, i
#ifdef __SSE2__
for (; j < W - 3; j += 4) {
- Iv = LVFU( aI[i][j] );
- Ov = LVFU( aO[i][j] );
+ Iv = LVFU(aI[i][j]);
+ Ov = LVFU(aO[i][j]);
Lv = xlogf(Iv / Ov);
Wv = Ov - Iv;
Uv = (Ov * Lv + Wv) * dampingFacv;
@@ -68,7 +128,7 @@ void ImProcFunctions::dcdamping (float** aI, float** aO, float damping, int W, i
Uv = (Wv / Iv) * Uv + onev;
Uv = vselfzero(vmaskf_gt(Iv, zerov), Uv);
Uv = vselfzero(vmaskf_gt(Ov, zerov), Uv);
- STVFU( aI[i][j], Uv );
+ STVFU(aI[i][j], Uv);
}
#endif
@@ -83,36 +143,44 @@ void ImProcFunctions::dcdamping (float** aI, float** aO, float damping, int W, i
}
float U = (O * xlogf(I / O) - I + O) * dampingFac;
- U = min(U, 1.0f);
+ U = rtengine::min(U, 1.0f);
U = U * U * U * U * (5.f - U * 4.f);
aI[i][j] = (O - I) / I * U + 1.f;
}
}
}
+}
+
+namespace rtengine
+{
+
+extern const Settings* settings;
+
void ImProcFunctions::deconvsharpening (float** luminance, float** tmp, int W, int H, const SharpeningParams &sharpenParam)
{
if (sharpenParam.deconvamount < 1) {
return;
}
+BENCHFUN
+ JaggedArray tmpI(W, H);
- float *tmpI[H] ALIGNED16;
-
- tmpI[0] = new float[W * H];
-
- for (int i = 1; i < H; i++) {
- tmpI[i] = tmpI[i - 1] + W;
- }
-
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
for (int i = 0; i < H; i++) {
for(int j = 0; j < W; j++) {
tmpI[i][j] = max(luminance[i][j], 0.f);
}
}
- float damping = sharpenParam.deconvdamping / 5.0;
- bool needdamp = sharpenParam.deconvdamping > 0;
- double sigma = sharpenParam.deconvradius / scale;
+ // calculate contrast based blend factors to reduce sharpening in regions with low contrast
+ JaggedArray blend(W, H);
+ buildBlendMask(luminance, blend, W, H, sharpenParam.contrast / 100.f, sharpenParam.deconvamount / 100.0);
+
+ const float damping = sharpenParam.deconvdamping / 5.0;
+ const bool needdamp = sharpenParam.deconvdamping > 0;
+ const double sigma = sharpenParam.deconvradius / scale;
#ifdef _OPENMP
#pragma omp parallel
@@ -121,61 +189,61 @@ void ImProcFunctions::deconvsharpening (float** luminance, float** tmp, int W, i
for (int k = 0; k < sharpenParam.deconviter; k++) {
if (!needdamp) {
// apply gaussian blur and divide luminance by result of gaussian blur
- gaussianBlur (tmpI, tmp, W, H, sigma, nullptr, GAUSS_DIV, luminance);
-#ifdef _OPENMP
- #pragma omp for
-#endif
- for (int i = 0; i < H; i++) {
- for(int j = 0; j < W; j++) {
- tmp[i][j] = max(tmp[i][j], 0.f);
- }
- }
+ gaussianBlur(tmpI, tmp, W, H, sigma, nullptr, GAUSS_DIV, luminance);
} else {
// apply gaussian blur + damping
- gaussianBlur (tmpI, tmp, W, H, sigma);
- dcdamping (tmp, luminance, damping, W, H);
+ gaussianBlur(tmpI, tmp, W, H, sigma);
+ dcdamping(tmp, luminance, damping, W, H);
}
-
- gaussianBlur (tmp, tmpI, W, H, sigma, nullptr, GAUSS_MULT);
-
+ gaussianBlur(tmp, tmpI, W, H, sigma, nullptr, GAUSS_MULT);
} // end for
- float p2 = sharpenParam.deconvamount / 100.0;
- float p1 = 1.0 - p2;
-
#ifdef _OPENMP
#pragma omp for
#endif
- for (int i = 0; i < H; i++)
- for (int j = 0; j < W; j++) {
- luminance[i][j] = luminance[i][j] * p1 + max(tmpI[i][j], 0.0f) * p2;
+ for (int i = 0; i < H; ++i) {
+ for (int j = 0; j < W; ++j) {
+ luminance[i][j] = intp(blend[i][j], max(tmpI[i][j], 0.0f), luminance[i][j]);
}
+ }
} // end parallel
-
- delete [] tmpI[0];
-
}
-void ImProcFunctions::sharpening (LabImage* lab, float** b2, SharpeningParams &sharpenParam)
+void ImProcFunctions::sharpening (LabImage* lab, const SharpeningParams &sharpenParam, bool showMask)
{
- if (!sharpenParam.enabled) {
- return;
- }
-
- if (sharpenParam.method == "rld") {
- deconvsharpening (lab->L, b2, lab->W, lab->H, sharpenParam);
- return;
- }
-
if ((!sharpenParam.enabled) || sharpenParam.amount < 1 || lab->W < 8 || lab->H < 8) {
return;
}
+ int W = lab->W, H = lab->H;
+
+ if(showMask) {
+ // calculate contrast based blend factors to reduce sharpening in regions with low contrast
+ JaggedArray blend(W, H);
+ buildBlendMask(lab->L, blend, W, H, sharpenParam.contrast / 100.f, sharpenParam.method == "rld" ? sharpenParam.deconvamount / 100.0 : 1.f);
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+
+ for (int i = 0; i < H; ++i) {
+ for (int j = 0; j < W; ++j) {
+ lab->L[i][j] = blend[i][j] * 32768.f;
+ }
+ }
+ return;
+ }
+
+ JaggedArray b2(W, H);
+
+ if (sharpenParam.method == "rld") {
+ deconvsharpening (lab->L, b2, lab->W, lab->H, sharpenParam);
+ return;
+ }
+BENCHFUN
// Rest is UNSHARP MASK
- int W = lab->W, H = lab->H;
float** b3 = nullptr;
if (sharpenParam.edgesonly) {
@@ -186,6 +254,10 @@ void ImProcFunctions::sharpening (LabImage* lab, float** b2, SharpeningParams &s
}
}
+ // calculate contrast based blend factors to reduce sharpening in regions with low contrast
+ JaggedArray blend(W, H);
+ buildBlendMask(lab->L, blend, W, H, sharpenParam.contrast / 100.f);
+
#ifdef _OPENMP
#pragma omp parallel
#endif
@@ -211,24 +283,18 @@ void ImProcFunctions::sharpening (LabImage* lab, float** b2, SharpeningParams &s
for (int i = 0; i < H; i++)
for (int j = 0; j < W; j++) {
- const float upperBound = 2000.f; // WARNING: Duplicated value, it's baaaaaad !
+ constexpr float upperBound = 2000.f; // WARNING: Duplicated value, it's baaaaaad !
float diff = base[i][j] - b2[i][j];
float delta = sharpenParam.threshold.multiply(
- min(ABS(diff), upperBound), // X axis value = absolute value of the difference, truncated to the max value of this field
+ min(fabsf(diff), upperBound), // X axis value = absolute value of the difference, truncated to the max value of this field
sharpenParam.amount * diff * 0.01f // Y axis max value
);
- lab->L[i][j] = lab->L[i][j] + delta;
+ lab->L[i][j] = intp(blend[i][j], lab->L[i][j] + delta, lab->L[i][j]);
}
} else {
- float** labCopy = nullptr;
-
if (!sharpenParam.edgesonly) {
// make a deep copy of lab->L
- labCopy = new float*[H];
-
- for( int i = 0; i < H; i++ ) {
- labCopy[i] = new float[W];
- }
+ JaggedArray labCopy(W, H);
#ifdef _OPENMP
#pragma omp parallel for
@@ -239,18 +305,11 @@ void ImProcFunctions::sharpening (LabImage* lab, float** b2, SharpeningParams &s
labCopy[i][j] = lab->L[i][j];
}
- base = labCopy;
+ sharpenHaloCtrl (lab->L, b2, labCopy, blend, W, H, sharpenParam);
+ } else {
+ sharpenHaloCtrl (lab->L, b2, base, blend, W, H, sharpenParam);
}
- sharpenHaloCtrl (lab->L, b2, base, W, H, sharpenParam);
-
- if (labCopy) {
- for( int i = 0; i < H; i++ ) {
- delete[] labCopy[i];
- }
-
- delete[] labCopy;
- }
}
if (sharpenParam.edgesonly) {
@@ -262,69 +321,6 @@ void ImProcFunctions::sharpening (LabImage* lab, float** b2, SharpeningParams &s
}
}
-void ImProcFunctions::sharpenHaloCtrl (float** luminance, float** blurmap, float** base, int W, int H, const SharpeningParams &sharpenParam)
-{
-
- float scale = (100.f - sharpenParam.halocontrol_amount) * 0.01f;
- float sharpFac = sharpenParam.amount * 0.01f;
- float** nL = base;
-
-#ifdef _OPENMP
- #pragma omp parallel for
-#endif
-
- for (int i = 2; i < H - 2; i++) {
- float max1 = 0, max2 = 0, min1 = 0, min2 = 0;
-
- for (int j = 2; j < W - 2; j++) {
- // compute 3 iterations, only forward
- float np1 = 2.f * (nL[i - 2][j] + nL[i - 2][j + 1] + nL[i - 2][j + 2] + nL[i - 1][j] + nL[i - 1][j + 1] + nL[i - 1][j + 2] + nL[i] [j] + nL[i] [j + 1] + nL[i] [j + 2]) / 27.f + nL[i - 1][j + 1] / 3.f;
- float np2 = 2.f * (nL[i - 1][j] + nL[i - 1][j + 1] + nL[i - 1][j + 2] + nL[i] [j] + nL[i] [j + 1] + nL[i] [j + 2] + nL[i + 1][j] + nL[i + 1][j + 1] + nL[i + 1][j + 2]) / 27.f + nL[i] [j + 1] / 3.f;
- float np3 = 2.f * (nL[i] [j] + nL[i] [j + 1] + nL[i] [j + 2] + nL[i + 1][j] + nL[i + 1][j + 1] + nL[i + 1][j + 2] + nL[i + 2][j] + nL[i + 2][j + 1] + nL[i + 2][j + 2]) / 27.f + nL[i + 1][j + 1] / 3.f;
-
- // Max/Min of all these deltas and the last two max/min
- float maxn = max(np1, np2, np3);
- float minn = min(np1, np2, np3);
- float max_ = max(max1, max2, maxn);
- float min_ = min(min1, min2, minn);
-
- // Shift the queue
- max1 = max2;
- max2 = maxn;
- min1 = min2;
- min2 = minn;
- float labL = luminance[i][j];
-
- if (max_ < labL) {
- max_ = labL;
- }
-
- if (min_ > labL) {
- min_ = labL;
- }
-
- // deviation from the environment as measurement
- float diff = nL[i][j] - blurmap[i][j];
-
- const float upperBound = 2000.f; // WARNING: Duplicated value, it's baaaaaad !
- float delta = sharpenParam.threshold.multiply(
- min(ABS(diff), upperBound), // X axis value = absolute value of the difference
- sharpFac * diff // Y axis max value = sharpening.amount * signed difference
- );
- float newL = labL + delta;
-
- // applying halo control
- if (newL > max_) {
- newL = max_ + (newL - max_) * scale;
- } else if (newL < min_) {
- newL = min_ - (min_ - newL) * scale;
- }
-
- luminance[i][j] = newL;
- }
- }
-}
-
// To the extent possible under law, Manuel Llorens
// has waived all copyright and related or neighboring rights to this work.
// This work is published from: Spain.
@@ -572,25 +568,15 @@ void ImProcFunctions::MLsharpen (LabImage* lab)
//! \param luminance : Luminance channel of image
void ImProcFunctions::MLmicrocontrast(float** luminance, int W, int H)
{
- if (!params->sharpenMicro.enabled) {
+ if (!params->sharpenMicro.enabled || params->sharpenMicro.contrast == 100 || params->sharpenMicro.amount < 1.0) {
return;
}
-
+BENCHFUN
const int k = params->sharpenMicro.matrix ? 1 : 2;
-
// k=2 matrix 5x5 k=1 matrix 3x3
const int width = W, height = H;
- const float uniform = params->sharpenMicro.uniformity; //between 0 to 100
- const int unif = (int)(uniform / 10.0f); //put unif between 0 to 10
- float amount = params->sharpenMicro.amount / 1500.0f; //amount 2000.0 quasi no artifacts ==> 1500 = maximum, after artifacts
-
- if (amount < 0.000001f) {
- return;
- }
-
- if (k == 1) {
- amount *= 2.7f; //25/9 if 3x3
- }
+ const int unif = params->sharpenMicro.uniformity / 10.0f; //put unif between 0 to 10
+ const float amount = (k == 1 ? 2.7f : 1.f) * params->sharpenMicro.amount / 1500.0f; //amount 2000.0 quasi no artifacts ==> 1500 = maximum, after artifacts, 25/9 if 3x3
if (settings->verbose) {
printf ("Micro-contrast amount %f\n", amount);
@@ -618,11 +604,14 @@ void ImProcFunctions::MLmicrocontrast(float** luminance, int W, int H)
const float Cont4[11] = {0.8f, 0.85f, 0.9f, 0.95f, 1.0f, 1.05f, 1.10f, 1.150f, 1.2f, 1.25f, 1.40f};
const float Cont5[11] = {1.0f, 1.1f, 1.2f, 1.25f, 1.3f, 1.4f, 1.45f, 1.50f, 1.6f, 1.65f, 1.80f};
- const float s = amount;
const float sqrt2 = sqrt(2.0);
const float sqrt1d25 = sqrt(1.25);
float *LM = new float[width * height]; //allocation for Luminance
+ // calculate contrast based blend factors to reduce sharpening in regions with low contrast
+ JaggedArray blend(W, H);
+ buildBlendMask(luminance, blend, W, H, params->sharpenMicro.contrast / 100.f);
+
#ifdef _OPENMP
#pragma omp parallel
#endif
@@ -654,9 +643,9 @@ void ImProcFunctions::MLmicrocontrast(float** luminance, int W, int H)
contrast = std::min(contrast, 1.f);
//matrix 5x5
- float temp = v + 4.f *( v * (s + sqrt2 * s)); //begin 3x3
- float temp1 = sqrt2 * s *(LM[offset - width - 1] + LM[offset - width + 1] + LM[offset + width - 1] + LM[offset + width + 1]);
- temp1 += s * (LM[offset - width] + LM[offset - 1] + LM[offset + 1] + LM[offset + width]);
+ float temp = v + 4.f *( v * (amount + sqrt2 * amount)); //begin 3x3
+ float temp1 = sqrt2 * amount *(LM[offset - width - 1] + LM[offset - width + 1] + LM[offset + width - 1] + LM[offset + width + 1]);
+ temp1 += amount * (LM[offset - width] + LM[offset - 1] + LM[offset + 1] + LM[offset + width]);
temp -= temp1;
@@ -669,19 +658,18 @@ void ImProcFunctions::MLmicrocontrast(float** luminance, int W, int H)
temp2 -= sqrt2 * (LM[offset + 2 * width - 2] + LM[offset + 2 * width + 2] + LM[offset - 2 * width - 2] + LM[offset - 2 * width + 2]);
temp2 += 18.601126159f * v ; // 18.601126159 = 4 + 4 * sqrt(2) + 8 * sqrt(1.25)
- temp2 *= 2.f * s;
+ temp2 *= 2.f * amount;
temp += temp2;
}
temp = std::max(temp, 0.f);
- for(int row = j + k, n = SQR(2*k+1) - 1; row >= j - k; row--) {
- for(int offset2 = row * width + i + k; offset2 >= row * width + i - k; offset2--) {
+ for(int row = j - k; row <= j + k; ++row) {
+ for(int offset2 = row * width + i - k; offset2 <= row * width + i + k; ++offset2) {
if((LM[offset2] - temp) * (v - LM[offset2]) > 0.f) {
temp = intp(0.75f, temp, LM[offset2]);
goto breakout;
}
- n--;
}
}
breakout:
@@ -751,7 +739,7 @@ void ImProcFunctions::MLmicrocontrast(float** luminance, int W, int H)
} else {
temp = 0.f;
}
- luminance[j][i] *= (temp * temp2 + 1.f);
+ luminance[j][i] = intp(blend[j][i], luminance[j][i] * (temp * temp2 + 1.f), luminance[j][i]);
} else {
float temp4 = LM[offset] / tempL; //
@@ -802,7 +790,7 @@ void ImProcFunctions::MLmicrocontrast(float** luminance, int W, int H)
} else {
temp = 0.f;
}
- luminance[j][i] /= (temp * temp4 + 1.f);
+ luminance[j][i] = intp(blend[j][i], luminance[j][i] / (temp * temp4 + 1.f), luminance[j][i]);
}
}
}
@@ -820,12 +808,31 @@ void ImProcFunctions::MLmicrocontrastcam(CieImage* ncie)
MLmicrocontrast(ncie->sh_p, ncie->W, ncie->H);
}
-void ImProcFunctions::sharpeningcam (CieImage* ncie, float** b2)
+void ImProcFunctions::sharpeningcam (CieImage* ncie, float** b2, bool showMask)
{
if ((!params->sharpening.enabled) || params->sharpening.amount < 1 || ncie->W < 8 || ncie->H < 8) {
return;
}
+ int W = ncie->W, H = ncie->H;
+
+ if(showMask) {
+ // calculate contrast based blend factors to reduce sharpening in regions with low contrast
+ JaggedArray blend(W, H);
+ buildBlendMask(ncie->sh_p, blend, W, H, params->sharpening.contrast / 100.f);
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+
+ for (int i = 0; i < H; ++i) {
+ for (int j = 0; j < W; ++j) {
+ ncie->sh_p[i][j] = blend[i][j] * 32768.f;
+ }
+ }
+ return;
+ }
+
+
if (params->sharpening.method == "rld") {
deconvsharpening (ncie->sh_p, b2, ncie->W, ncie->H, params->sharpening);
return;
@@ -833,7 +840,6 @@ void ImProcFunctions::sharpeningcam (CieImage* ncie, float** b2)
// Rest is UNSHARP MASK
- int W = ncie->W, H = ncie->H;
float** b3 = nullptr;
if (params->sharpening.edgesonly) {
@@ -844,6 +850,10 @@ void ImProcFunctions::sharpeningcam (CieImage* ncie, float** b2)
}
}
+ // calculate contrast based blend factors to reduce sharpening in regions with low contrast
+ JaggedArray blend(W, H);
+ buildBlendMask(ncie->sh_p, blend, W, H, params->sharpening.contrast / 100.f);
+
#ifdef _OPENMP
#pragma omp parallel
#endif
@@ -870,15 +880,15 @@ void ImProcFunctions::sharpeningcam (CieImage* ncie, float** b2)
for (int i = 0; i < H; i++)
for (int j = 0; j < W; j++) {
- const float upperBound = 2000.f; // WARNING: Duplicated value, it's baaaaaad !
+ constexpr float upperBound = 2000.f; // WARNING: Duplicated value, it's baaaaaad !
float diff = base[i][j] - b2[i][j];
float delta = params->sharpening.threshold.multiply(
- min(ABS(diff), upperBound), // X axis value = absolute value of the difference, truncated to the max value of this field
+ min(fabsf(diff), upperBound), // X axis value = absolute value of the difference, truncated to the max value of this field
params->sharpening.amount * diff * 0.01f // Y axis max value
);
if(ncie->J_p[i][j] > 8.0f && ncie->J_p[i][j] < 92.0f) {
- ncie->sh_p[i][j] = ncie->sh_p[i][j] + delta;
+ ncie->sh_p[i][j] = intp(blend[i][j], ncie->sh_p[i][j] + delta, ncie->sh_p[i][j]);
}
}
} else {
@@ -904,7 +914,7 @@ void ImProcFunctions::sharpeningcam (CieImage* ncie, float** b2)
base = ncieCopy;
}
- sharpenHaloCtrl (ncie->sh_p, b2, base, W, H, params->sharpening);
+ sharpenHaloCtrl (ncie->sh_p, b2, base, blend, W, H, params->sharpening);
if(ncieCopy) {
for( int i = 0; i < H; i++ ) {
diff --git a/rtengine/ipsoftlight.cc b/rtengine/ipsoftlight.cc
new file mode 100644
index 000000000..35bf9577a
--- /dev/null
+++ b/rtengine/ipsoftlight.cc
@@ -0,0 +1,73 @@
+/* -*- C++ -*-
+ *
+ * This file is part of RawTherapee.
+ *
+ * Copyright 2018 Alberto Griggio
+ *
+ * RawTherapee is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RawTherapee is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with RawTherapee. If not, see .
+ */
+
+#ifdef _OPENMP
+#include
+#endif
+
+#include "improcfun.h"
+
+namespace rtengine {
+
+void ImProcFunctions::softLight(float *red, float *green, float *blue, int istart, int jstart, int tW, int tH, int TS)
+{
+ if (!params->softlight.enabled || !params->softlight.strength) {
+ return;
+ }
+
+ const float blend = params->softlight.strength / 100.f;
+ const float orig = 1.f - blend;
+
+ const auto apply =
+ [=](float x) -> float
+ {
+ if (!OOG(x)) {
+ float v = Color::gamma_srgb(x) / MAXVALF;
+ // Pegtop's formula from
+ // https://en.wikipedia.org/wiki/Blend_modes#Soft_Light
+ float v2 = v * v;
+ float v22 = v2 * 2.f;
+ v = v2 + v22 - v22 * v;
+ x = blend * Color::igamma_srgb(v * MAXVALF) + orig * x;
+ }
+ return x;
+ };
+
+#ifdef _OPENMP
+ #pragma omp parallel if (multiThread)
+#endif
+ {
+ int ti = 0;
+#ifdef _OPENMP
+ #pragma omp for
+#endif
+ for (int i = istart; i < tH; i++) {
+ for (int j = jstart, tj = 0; j < tW; j++, tj++) {
+ const int idx = ti * TS + tj;
+ red[idx] = apply(red[idx]);
+ green[idx] = apply(green[idx]);
+ blue[idx] = apply(blue[idx]);
+ }
+ ++ti;
+ }
+ }
+}
+
+} // namespace rtengine
diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc
index 488538e8a..cdf4f990a 100644
--- a/rtengine/pixelshift.cc
+++ b/rtengine/pixelshift.cc
@@ -295,7 +295,7 @@ void calcFrameBrightnessFactor(unsigned int frame, uint32_t datalen, LUTu *histo
using namespace std;
using namespace rtengine;
-void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, const RAWParams::BayerSensor &bayerParamsIn, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection)
+void RawImageSource::pixelshift(int winx, int winy, int winw, int winh, const RAWParams &rawParamsIn, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection)
{
BENCHFUN
if(numFrames != 4) { // fallback for non pixelshift files
@@ -303,7 +303,7 @@ BENCHFUN
return;
}
- RAWParams::BayerSensor bayerParams = bayerParamsIn;
+ RAWParams::BayerSensor bayerParams = rawParamsIn.bayersensor;
bool motionDetection = true;
@@ -323,19 +323,22 @@ BENCHFUN
if(motionDetection) {
if(!showOnlyMask) {
if(bayerParams.pixelShiftMedian) { // We need the demosaiced frames for motion correction
- if(bayerParams.pixelShiftLmmse) {
+ if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) {
lmmse_interpolate_omp(winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.lmmse_iterations);
+ } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) {
+ dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.dualDemosaicContrast);
} else {
amaze_demosaic_RT(winx, winy, winw, winh, *(rawDataFrames[0]), red, green, blue);
}
-
multi_array2D redTmp(winw, winh);
multi_array2D greenTmp(winw, winh);
multi_array2D blueTmp(winw, winh);
for(int i = 0; i < 3; i++) {
- if(bayerParams.pixelShiftLmmse) {
+ if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) {
lmmse_interpolate_omp(winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.lmmse_iterations);
+ } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) {
+ dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.dualDemosaicContrast);
} else {
amaze_demosaic_RT(winx, winy, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i]);
}
@@ -359,8 +362,12 @@ BENCHFUN
}
}
} else {
- if(bayerParams.pixelShiftLmmse) {
+ if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) {
lmmse_interpolate_omp(winw, winh, rawData, red, green, blue, bayerParams.lmmse_iterations);
+ } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) {
+ RAWParams rawParamsTmp = rawParamsIn;
+ rawParamsTmp.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AMAZEVNG4);
+ dual_demosaic_RT (true, rawParamsTmp, winw, winh, rawData, red, green, blue, bayerParams.dualDemosaicContrast);
} else {
amaze_demosaic_RT(winx, winy, winw, winh, rawData, red, green, blue);
}
diff --git a/rtengine/previewimage.cc b/rtengine/previewimage.cc
index 0b3610de2..6c548f92a 100644
--- a/rtengine/previewimage.cc
+++ b/rtengine/previewimage.cc
@@ -113,7 +113,8 @@ PreviewImage::PreviewImage (const Glib::ustring &fname, const Glib::ustring &ext
params.raw.ca_autocorrect = false;
params.raw.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST);
rawImage.preprocess(params.raw, params.lensProf, params.coarse);
- rawImage.demosaic(params.raw);
+ double contrastThresholdDummy = 0.0;
+ rawImage.demosaic(params.raw, false, contrastThresholdDummy);
Imagefloat image(fw, fh);
rawImage.getImage (wb, TR_NONE, &image, pp, params.toneCurve, params.raw);
rtengine::Image8 output(fw, fh);
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index 276750786..4c3e47701 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -33,7 +33,6 @@
#include "../rtgui/version.h"
using namespace std;
-extern Options options;
namespace
{
@@ -329,6 +328,7 @@ ToneCurveParams::ToneCurveParams() :
hlcompr(0),
hlcomprthresh(33),
histmatching(false),
+ fromHistMatching(false),
clampOOG(true)
{
}
@@ -353,6 +353,7 @@ bool ToneCurveParams::operator ==(const ToneCurveParams& other) const
&& hlcompr == other.hlcompr
&& hlcomprthresh == other.hlcomprthresh
&& histmatching == other.histmatching
+ && fromHistMatching == other.fromHistMatching
&& clampOOG == other.clampOOG;
}
@@ -607,6 +608,7 @@ bool LocalContrastParams::operator!=(const LocalContrastParams &other) const
const double ColorToningParams::LABGRID_CORR_MAX = 12000.f;
+const double ColorToningParams::LABGRID_CORR_SCALE = 3.f;
ColorToningParams::ColorToningParams() :
enabled(false),
@@ -1007,6 +1009,7 @@ void ColorToningParams::getCurves(ColorGradientCurve& colorCurveLUT, OpacityCurv
SharpeningParams::SharpeningParams() :
enabled(false),
+ contrast(20.0),
radius(0.5),
amount(200),
threshold(20, 80, 2000, 1200, false),
@@ -1016,10 +1019,10 @@ SharpeningParams::SharpeningParams() :
halocontrol(false),
halocontrol_amount(85),
method("usm"),
- deconvamount(75),
+ deconvamount(100),
deconvradius(0.75),
deconviter(30),
- deconvdamping(20)
+ deconvdamping(0)
{
}
@@ -1027,6 +1030,7 @@ bool SharpeningParams::operator ==(const SharpeningParams& other) const
{
return
enabled == other.enabled
+ && contrast == other.contrast
&& radius == other.radius
&& amount == other.amount
&& threshold == other.threshold
@@ -1073,6 +1077,7 @@ SharpenMicroParams::SharpenMicroParams() :
enabled(false),
matrix(false),
amount(20.0),
+ contrast(20.0),
uniformity(50.0)
{
}
@@ -1083,6 +1088,7 @@ bool SharpenMicroParams::operator ==(const SharpenMicroParams& other) const
enabled == other.enabled
&& matrix == other.matrix
&& amount == other.amount
+ && contrast == other.contrast
&& uniformity == other.uniformity;
}
@@ -1783,19 +1789,19 @@ bool VignettingParams::operator !=(const VignettingParams& other) const
ChannelMixerParams::ChannelMixerParams() :
enabled(false),
red{
- 100,
+ 1000,
0,
0
},
green{
0,
- 100,
+ 1000,
0
},
blue{
0,
0,
- 100
+ 1000
}
{
}
@@ -1839,7 +1845,7 @@ BlackWhiteParams::BlackWhiteParams() :
enabledcc(true),
enabled(false),
filter("None"),
- setting("NormalContrast"),
+ setting("RGB-Rel"),
method("Desaturation"),
mixerRed(33),
mixerOrange(33),
@@ -1913,7 +1919,8 @@ ResizeParams::ResizeParams() :
method("Lanczos"),
dataspec(3),
width(900),
- height(900)
+ height(900),
+ allowUpscaling(false)
{
}
@@ -1926,7 +1933,8 @@ bool ResizeParams::operator ==(const ResizeParams& other) const
&& method == other.method
&& dataspec == other.dataspec
&& width == other.width
- && height == other.height;
+ && height == other.height
+ && allowUpscaling == other.allowUpscaling;
}
bool ResizeParams::operator !=(const ResizeParams& other) const
@@ -2339,8 +2347,28 @@ bool FilmSimulationParams::operator !=(const FilmSimulationParams& other) const
return !(*this == other);
}
+
+SoftLightParams::SoftLightParams() :
+ enabled(false),
+ strength(30)
+{
+}
+
+bool SoftLightParams::operator ==(const SoftLightParams& other) const
+{
+ return
+ enabled == other.enabled
+ && strength == other.strength;
+}
+
+bool SoftLightParams::operator !=(const SoftLightParams& other) const
+{
+ return !(*this == other);
+}
+
RAWParams::BayerSensor::BayerSensor() :
method(getMethodString(Method::AMAZE)),
+ border(4),
imageNum(0),
ccSteps(0),
black0(0.0),
@@ -2353,6 +2381,7 @@ RAWParams::BayerSensor::BayerSensor() :
greenthresh(0),
dcb_iterations(2),
lmmse_iterations(2),
+ dualDemosaicContrast(20),
pixelShiftMotionCorrectionMethod(PSMotionCorrectionMethod::AUTO),
pixelShiftEperIso(0.0),
pixelShiftSigma(1.0),
@@ -2363,10 +2392,10 @@ RAWParams::BayerSensor::BayerSensor() :
pixelShiftGreen(true),
pixelShiftBlur(true),
pixelShiftSmoothFactor(0.7),
- pixelShiftLmmse(false),
pixelShiftEqualBright(false),
pixelShiftEqualBrightChannel(false),
pixelShiftNonGreenCross(true),
+ pixelShiftDemosaicMethod(getPSDemosaicMethodString(PSDemosaicMethod::AMAZE)),
dcb_enhance(true),
pdafLinesFilter(false)
{
@@ -2376,6 +2405,7 @@ bool RAWParams::BayerSensor::operator ==(const BayerSensor& other) const
{
return
method == other.method
+ && border == other.border
&& imageNum == other.imageNum
&& ccSteps == other.ccSteps
&& black0 == other.black0
@@ -2388,6 +2418,7 @@ bool RAWParams::BayerSensor::operator ==(const BayerSensor& other) const
&& greenthresh == other.greenthresh
&& dcb_iterations == other.dcb_iterations
&& lmmse_iterations == other.lmmse_iterations
+ && dualDemosaicContrast == other.dualDemosaicContrast
&& pixelShiftMotionCorrectionMethod == other.pixelShiftMotionCorrectionMethod
&& pixelShiftEperIso == other.pixelShiftEperIso
&& pixelShiftSigma == other.pixelShiftSigma
@@ -2398,10 +2429,10 @@ bool RAWParams::BayerSensor::operator ==(const BayerSensor& other) const
&& pixelShiftGreen == other.pixelShiftGreen
&& pixelShiftBlur == other.pixelShiftBlur
&& pixelShiftSmoothFactor == other.pixelShiftSmoothFactor
- && pixelShiftLmmse == other.pixelShiftLmmse
&& pixelShiftEqualBright == other.pixelShiftEqualBright
&& pixelShiftEqualBrightChannel == other.pixelShiftEqualBrightChannel
&& pixelShiftNonGreenCross == other.pixelShiftNonGreenCross
+ && pixelShiftDemosaicMethod == other.pixelShiftDemosaicMethod
&& dcb_enhance == other.dcb_enhance
&& pdafLinesFilter == other.pdafLinesFilter;
}
@@ -2421,28 +2452,31 @@ void RAWParams::BayerSensor::setPixelShiftDefaults()
pixelShiftGreen = true;
pixelShiftBlur = true;
pixelShiftSmoothFactor = 0.7;
- pixelShiftLmmse = false;
pixelShiftEqualBright = false;
pixelShiftEqualBrightChannel = false;
pixelShiftNonGreenCross = true;
+ pixelShiftDemosaicMethod = getPSDemosaicMethodString(PSDemosaicMethod::AMAZE);
}
const std::vector& RAWParams::BayerSensor::getMethodStrings()
{
static const std::vector method_strings {
"amaze",
- "igv",
+ "amazevng4",
+ "rcd",
+ "rcdvng4",
+ "dcb",
+ "dcbvng4",
"lmmse",
+ "igv",
+ "ahd",
"eahd",
"hphd",
"vng4",
- "dcb",
- "ahd",
- "rcd",
"fast",
"mono",
- "none",
- "pixelshift"
+ "pixelshift",
+ "none"
};
return method_strings;
}
@@ -2452,8 +2486,26 @@ Glib::ustring RAWParams::BayerSensor::getMethodString(Method method)
return getMethodStrings()[toUnderlying(method)];
}
+const std::vector& RAWParams::BayerSensor::getPSDemosaicMethodStrings()
+{
+ static const std::vector method_strings {
+ "amaze",
+ "amazevng4",
+ "lmmse"
+ };
+ return method_strings;
+}
+
+Glib::ustring RAWParams::BayerSensor::getPSDemosaicMethodString(PSDemosaicMethod method)
+{
+ return getPSDemosaicMethodStrings()[toUnderlying(method)];
+}
+
+
+
RAWParams::XTransSensor::XTransSensor() :
method(getMethodString(Method::THREE_PASS)),
+ dualDemosaicContrast(20),
ccSteps(0),
blackred(0.0),
blackgreen(0.0),
@@ -2465,6 +2517,7 @@ bool RAWParams::XTransSensor::operator ==(const XTransSensor& other) const
{
return
method == other.method
+ && dualDemosaicContrast == other.dualDemosaicContrast
&& ccSteps == other.ccSteps
&& blackred == other.blackred
&& blackgreen == other.blackgreen
@@ -2479,7 +2532,9 @@ bool RAWParams::XTransSensor::operator !=(const XTransSensor& other) const
const std::vector& RAWParams::XTransSensor::getMethodStrings()
{
static const std::vector method_strings {
+ "4-pass",
"3-pass (best)",
+ "2-pass",
"1-pass (medium)",
"fast",
"mono",
@@ -2596,6 +2651,7 @@ void ProcParams::setDefaults ()
sharpening = SharpeningParams();
prsharpening = SharpeningParams();
+ prsharpening.contrast = 0.0;
prsharpening.method = "rld";
prsharpening.deconvamount = 100;
prsharpening.deconvradius = 0.45;
@@ -2658,6 +2714,8 @@ void ProcParams::setDefaults ()
filmSimulation = FilmSimulationParams();
+ softlight = SoftLightParams();
+
raw = RAWParams();
metadata = MetaDataParams();
@@ -2702,6 +2760,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->toneCurve.hlcomprthresh, "Exposure", "HighlightComprThreshold", toneCurve.hlcomprthresh, keyFile);
saveToKeyfile(!pedited || pedited->toneCurve.shcompr, "Exposure", "ShadowCompr", toneCurve.shcompr, keyFile);
saveToKeyfile(!pedited || pedited->toneCurve.histmatching, "Exposure", "HistogramMatching", toneCurve.histmatching, keyFile);
+ saveToKeyfile(!pedited || pedited->toneCurve.fromHistMatching, "Exposure", "FromHistogramMatching", toneCurve.fromHistMatching, keyFile);
saveToKeyfile(!pedited || pedited->toneCurve.clampOOG, "Exposure", "ClampOOG", toneCurve.clampOOG, keyFile);
// Highlight recovery
@@ -2851,6 +2910,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
// Sharpening
saveToKeyfile(!pedited || pedited->sharpening.enabled, "Sharpening", "Enabled", sharpening.enabled, keyFile);
+ saveToKeyfile(!pedited || pedited->sharpening.contrast, "Sharpening", "Contrast", sharpening.contrast, keyFile);
saveToKeyfile(!pedited || pedited->sharpening.method, "Sharpening", "Method", sharpening.method, keyFile);
saveToKeyfile(!pedited || pedited->sharpening.radius, "Sharpening", "Radius", sharpening.radius, keyFile);
saveToKeyfile(!pedited || pedited->sharpening.amount, "Sharpening", "Amount", sharpening.amount, keyFile);
@@ -2885,6 +2945,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->sharpenMicro.enabled, "SharpenMicro", "Enabled", sharpenMicro.enabled, keyFile);
saveToKeyfile(!pedited || pedited->sharpenMicro.matrix, "SharpenMicro", "Matrix", sharpenMicro.matrix, keyFile);
saveToKeyfile(!pedited || pedited->sharpenMicro.amount, "SharpenMicro", "Strength", sharpenMicro.amount, keyFile);
+ saveToKeyfile(!pedited || pedited->sharpenMicro.contrast, "SharpenMicro", "Contrast", sharpenMicro.contrast, keyFile);
saveToKeyfile(!pedited || pedited->sharpenMicro.uniformity, "SharpenMicro", "Uniformity", sharpenMicro.uniformity, keyFile);
// WB
@@ -3086,9 +3147,11 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->resize.dataspec, "Resize", "DataSpecified", resize.dataspec, keyFile);
saveToKeyfile(!pedited || pedited->resize.width, "Resize", "Width", resize.width, keyFile);
saveToKeyfile(!pedited || pedited->resize.height, "Resize", "Height", resize.height, keyFile);
+ saveToKeyfile(!pedited || pedited->resize.allowUpscaling, "Resize", "AllowUpscaling", resize.allowUpscaling, keyFile);
// Post resize sharpening
saveToKeyfile(!pedited || pedited->prsharpening.enabled, "PostResizeSharpening", "Enabled", prsharpening.enabled, keyFile);
+ saveToKeyfile(!pedited || pedited->prsharpening.contrast, "PostResizeSharpening", "Contrast", prsharpening.contrast, keyFile);
saveToKeyfile(!pedited || pedited->prsharpening.method, "PostResizeSharpening", "Method", prsharpening.method, keyFile);
saveToKeyfile(!pedited || pedited->prsharpening.radius, "PostResizeSharpening", "Radius", prsharpening.radius, keyFile);
saveToKeyfile(!pedited || pedited->prsharpening.amount, "PostResizeSharpening", "Amount", prsharpening.amount, keyFile);
@@ -3252,6 +3315,10 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->hsvequalizer.scurve, "HSV Equalizer", "SCurve", hsvequalizer.scurve, keyFile);
saveToKeyfile(!pedited || pedited->hsvequalizer.vcurve, "HSV Equalizer", "VCurve", hsvequalizer.vcurve, keyFile);
+// Soft Light
+ saveToKeyfile(!pedited || pedited->softlight.enabled, "SoftLight", "Enabled", softlight.enabled, keyFile);
+ saveToKeyfile(!pedited || pedited->softlight.strength, "SoftLight", "Strength", softlight.strength, keyFile);
+
// Film simulation
saveToKeyfile(!pedited || pedited->filmSimulation.enabled, "Film Simulation", "Enabled", filmSimulation.enabled, keyFile);
saveToKeyfile(!pedited || pedited->filmSimulation.clutFilename, "Film Simulation", "ClutFilename", filmSimulation.clutFilename, keyFile);
@@ -3311,6 +3378,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->raw.deadPixelFilter, "RAW", "DeadPixelFilter", raw.deadPixelFilter, keyFile);
saveToKeyfile(!pedited || pedited->raw.hotdeadpix_thresh, "RAW", "HotDeadPixelThresh", raw.hotdeadpix_thresh, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.method, "RAW Bayer", "Method", raw.bayersensor.method, keyFile);
+ saveToKeyfile(!pedited || pedited->raw.bayersensor.border, "RAW Bayer", "Border", raw.bayersensor.border, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.imageNum, "RAW Bayer", "ImageNum", raw.bayersensor.imageNum + 1, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.ccSteps, "RAW Bayer", "CcSteps", raw.bayersensor.ccSteps, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.exBlack0, "RAW Bayer", "PreBlack0", raw.bayersensor.black0, keyFile);
@@ -3324,6 +3392,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->raw.bayersensor.dcbIterations, "RAW Bayer", "DCBIterations", raw.bayersensor.dcb_iterations, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.dcbEnhance, "RAW Bayer", "DCBEnhance", raw.bayersensor.dcb_enhance, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.lmmseIterations, "RAW Bayer", "LMMSEIterations", raw.bayersensor.lmmse_iterations, keyFile);
+ saveToKeyfile(!pedited || pedited->raw.bayersensor.dualDemosaicContrast, "RAW Bayer", "DualDemosaicContrast", raw.bayersensor.dualDemosaicContrast, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftMotionCorrectionMethod, "RAW Bayer", "PixelShiftMotionCorrectionMethod", toUnderlying(raw.bayersensor.pixelShiftMotionCorrectionMethod), keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftEperIso, "RAW Bayer", "PixelShiftEperIso", raw.bayersensor.pixelShiftEperIso, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftSigma, "RAW Bayer", "PixelShiftSigma", raw.bayersensor.pixelShiftSigma, keyFile);
@@ -3334,12 +3403,13 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftGreen, "RAW Bayer", "pixelShiftGreen", raw.bayersensor.pixelShiftGreen, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftBlur, "RAW Bayer", "pixelShiftBlur", raw.bayersensor.pixelShiftBlur, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftSmooth, "RAW Bayer", "pixelShiftSmoothFactor", raw.bayersensor.pixelShiftSmoothFactor, keyFile);
- saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftLmmse, "RAW Bayer", "pixelShiftLmmse", raw.bayersensor.pixelShiftLmmse, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftEqualBright, "RAW Bayer", "pixelShiftEqualBright", raw.bayersensor.pixelShiftEqualBright, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftEqualBrightChannel, "RAW Bayer", "pixelShiftEqualBrightChannel", raw.bayersensor.pixelShiftEqualBrightChannel, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftNonGreenCross, "RAW Bayer", "pixelShiftNonGreenCross", raw.bayersensor.pixelShiftNonGreenCross, keyFile);
+ saveToKeyfile(!pedited || pedited->raw.bayersensor.pixelShiftDemosaicMethod, "RAW Bayer", "pixelShiftDemosaicMethod", raw.bayersensor.pixelShiftDemosaicMethod, keyFile);
saveToKeyfile(!pedited || pedited->raw.bayersensor.pdafLinesFilter, "RAW Bayer", "PDAFLinesFilter", raw.bayersensor.pdafLinesFilter, keyFile);
saveToKeyfile(!pedited || pedited->raw.xtranssensor.method, "RAW X-Trans", "Method", raw.xtranssensor.method, keyFile);
+ saveToKeyfile(!pedited || pedited->raw.xtranssensor.dualDemosaicContrast, "RAW X-Trans", "DualDemosaicContrast", raw.xtranssensor.dualDemosaicContrast, keyFile);
saveToKeyfile(!pedited || pedited->raw.xtranssensor.ccSteps, "RAW X-Trans", "CcSteps", raw.xtranssensor.ccSteps, keyFile);
saveToKeyfile(!pedited || pedited->raw.xtranssensor.exBlackRed, "RAW X-Trans", "PreBlackRed", raw.xtranssensor.blackred, keyFile);
saveToKeyfile(!pedited || pedited->raw.xtranssensor.exBlackGreen, "RAW X-Trans", "PreBlackGreen", raw.xtranssensor.blackgreen, keyFile);
@@ -3463,6 +3533,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Exposure", "Curve2", pedited, toneCurve.curve2, pedited->toneCurve.curve2);
}
assignFromKeyfile(keyFile, "Exposure", "HistogramMatching", pedited, toneCurve.histmatching, pedited->toneCurve.histmatching);
+ if (ppVersion < 340) {
+ toneCurve.fromHistMatching = false;
+ if (pedited) {
+ pedited->toneCurve.fromHistMatching = true;
+ }
+ } else {
+ assignFromKeyfile(keyFile, "Exposure", "FromHistogramMatching", pedited, toneCurve.fromHistMatching, pedited->toneCurve.fromHistMatching);
+ }
assignFromKeyfile(keyFile, "Exposure", "ClampOOG", pedited, toneCurve.clampOOG, pedited->toneCurve.clampOOG);
}
@@ -3490,6 +3568,13 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
memcpy (chmixer.green, gmix.data(), 3 * sizeof (int));
memcpy (chmixer.blue, bmix.data(), 3 * sizeof (int));
}
+ if (ppVersion < 338) {
+ for (int i = 0; i < 3; ++i) {
+ chmixer.red[i] *= 10;
+ chmixer.green[i] *= 10;
+ chmixer.blue[i] *= 10;
+ }
+ }
if (pedited) {
pedited->chmixer.red[0] = pedited->chmixer.red[1] = pedited->chmixer.red[2] = true;
@@ -3667,6 +3752,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
if (keyFile.has_group ("Sharpening")) {
assignFromKeyfile(keyFile, "Sharpening", "Enabled", pedited, sharpening.enabled, pedited->sharpening.enabled);
+ if (ppVersion >= 334) {
+ assignFromKeyfile(keyFile, "Sharpening", "Contrast", pedited, sharpening.contrast, pedited->sharpening.contrast);
+ } else {
+ sharpening.contrast = 0;
+ if (pedited) {
+ pedited->sharpening.contrast = true;
+ }
+ }
assignFromKeyfile(keyFile, "Sharpening", "Radius", pedited, sharpening.radius, pedited->sharpening.radius);
assignFromKeyfile(keyFile, "Sharpening", "Amount", pedited, sharpening.amount, pedited->sharpening.amount);
@@ -3710,6 +3803,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "SharpenMicro", "Enabled", pedited, sharpenMicro.enabled, pedited->sharpenMicro.enabled);
assignFromKeyfile(keyFile, "SharpenMicro", "Matrix", pedited, sharpenMicro.matrix, pedited->sharpenMicro.matrix);
assignFromKeyfile(keyFile, "SharpenMicro", "Strength", pedited, sharpenMicro.amount, pedited->sharpenMicro.amount);
+ if (ppVersion >= 334) {
+ assignFromKeyfile(keyFile, "SharpenMicro", "Contrast", pedited, sharpenMicro.contrast, pedited->sharpenMicro.contrast);
+ } else {
+ sharpenMicro.contrast = 0;
+ if (pedited) {
+ pedited->sharpenMicro.contrast = true;
+ }
+ }
assignFromKeyfile(keyFile, "SharpenMicro", "Uniformity", pedited, sharpenMicro.uniformity, pedited->sharpenMicro.uniformity);
}
@@ -4062,10 +4163,19 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Resize", "DataSpecified", pedited, resize.dataspec, pedited->resize.dataspec);
assignFromKeyfile(keyFile, "Resize", "Width", pedited, resize.width, pedited->resize.width);
assignFromKeyfile(keyFile, "Resize", "Height", pedited, resize.height, pedited->resize.height);
+ if (ppVersion >= 339) {
+ assignFromKeyfile(keyFile, "Resize", "AllowUpscaling", pedited, resize.allowUpscaling, pedited->resize.allowUpscaling);
+ } else {
+ resize.allowUpscaling = true;
+ if (pedited) {
+ pedited->resize.allowUpscaling = true;
+ }
+ }
}
if (keyFile.has_group ("PostResizeSharpening")) {
assignFromKeyfile(keyFile, "PostResizeSharpening", "Enabled", pedited, prsharpening.enabled, pedited->prsharpening.enabled);
+ assignFromKeyfile(keyFile, "PostResizeSharpening", "Contrast", pedited, prsharpening.contrast, pedited->prsharpening.contrast);
assignFromKeyfile(keyFile, "PostResizeSharpening", "Radius", pedited, prsharpening.radius, pedited->prsharpening.radius);
assignFromKeyfile(keyFile, "PostResizeSharpening", "Amount", pedited, prsharpening.amount, pedited->prsharpening.amount);
@@ -4440,6 +4550,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
+ if (keyFile.has_group("SoftLight")) {
+ assignFromKeyfile(keyFile, "SoftLight", "Enabled", pedited, softlight.enabled, pedited->softlight.enabled);
+ assignFromKeyfile(keyFile, "SoftLight", "Strength", pedited, softlight.strength, pedited->softlight.strength);
+ }
+
if (keyFile.has_group ("Film Simulation")) {
assignFromKeyfile(keyFile, "Film Simulation", "Enabled", pedited, filmSimulation.enabled, pedited->filmSimulation.enabled);
assignFromKeyfile(keyFile, "Film Simulation", "ClutFilename", pedited, filmSimulation.clutFilename, pedited->filmSimulation.clutFilename);
@@ -4542,6 +4657,13 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "ColorToning", "LabGridBLow", pedited, colorToning.labgridBLow, pedited->colorToning.labgridBLow);
assignFromKeyfile(keyFile, "ColorToning", "LabGridAHigh", pedited, colorToning.labgridAHigh, pedited->colorToning.labgridAHigh);
assignFromKeyfile(keyFile, "ColorToning", "LabGridBHigh", pedited, colorToning.labgridBHigh, pedited->colorToning.labgridBHigh);
+ if (ppVersion < 337) {
+ const double scale = ColorToningParams::LABGRID_CORR_SCALE;
+ colorToning.labgridALow *= scale;
+ colorToning.labgridAHigh *= scale;
+ colorToning.labgridBLow *= scale;
+ colorToning.labgridBHigh *= scale;
+ }
}
if (keyFile.has_group ("RAW")) {
@@ -4606,6 +4728,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
if (keyFile.has_group ("RAW Bayer")) {
assignFromKeyfile(keyFile, "RAW Bayer", "Method", pedited, raw.bayersensor.method, pedited->raw.bayersensor.method);
+ assignFromKeyfile(keyFile, "RAW Bayer", "Border", pedited, raw.bayersensor.border, pedited->raw.bayersensor.border);
if (keyFile.has_key ("RAW Bayer", "ImageNum")) {
raw.bayersensor.imageNum = keyFile.get_integer ("RAW Bayer", "ImageNum") - 1;
@@ -4632,6 +4755,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "RAW Bayer", "DCBIterations", pedited, raw.bayersensor.dcb_iterations, pedited->raw.bayersensor.dcbIterations);
assignFromKeyfile(keyFile, "RAW Bayer", "DCBEnhance", pedited, raw.bayersensor.dcb_enhance, pedited->raw.bayersensor.dcbEnhance);
assignFromKeyfile(keyFile, "RAW Bayer", "LMMSEIterations", pedited, raw.bayersensor.lmmse_iterations, pedited->raw.bayersensor.lmmseIterations);
+ assignFromKeyfile(keyFile, "RAW Bayer", "DualDemosaicContrast", pedited, raw.bayersensor.dualDemosaicContrast, pedited->raw.bayersensor.dualDemosaicContrast);
if (keyFile.has_key ("RAW Bayer", "PixelShiftMotionCorrectionMethod")) {
raw.bayersensor.pixelShiftMotionCorrectionMethod = (RAWParams::BayerSensor::PSMotionCorrectionMethod)keyFile.get_integer ("RAW Bayer", "PixelShiftMotionCorrectionMethod");
@@ -4653,15 +4777,32 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftGreen", pedited, raw.bayersensor.pixelShiftGreen, pedited->raw.bayersensor.pixelShiftGreen);
assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftBlur", pedited, raw.bayersensor.pixelShiftBlur, pedited->raw.bayersensor.pixelShiftBlur);
assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftSmoothFactor", pedited, raw.bayersensor.pixelShiftSmoothFactor, pedited->raw.bayersensor.pixelShiftSmooth);
- assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftLmmse", pedited, raw.bayersensor.pixelShiftLmmse, pedited->raw.bayersensor.pixelShiftLmmse);
assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftEqualBright", pedited, raw.bayersensor.pixelShiftEqualBright, pedited->raw.bayersensor.pixelShiftEqualBright);
assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftEqualBrightChannel", pedited, raw.bayersensor.pixelShiftEqualBrightChannel, pedited->raw.bayersensor.pixelShiftEqualBrightChannel);
assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftNonGreenCross", pedited, raw.bayersensor.pixelShiftNonGreenCross, pedited->raw.bayersensor.pixelShiftNonGreenCross);
+
+ if (ppVersion < 336) {
+ if (keyFile.has_key("RAW Bayer", "pixelShiftLmmse")) {
+ bool useLmmse = keyFile.get_boolean ("RAW Bayer", "pixelShiftLmmse");
+ if (useLmmse) {
+ raw.bayersensor.pixelShiftDemosaicMethod = raw.bayersensor.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::LMMSE);
+ } else {
+ raw.bayersensor.pixelShiftDemosaicMethod = raw.bayersensor.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZE);
+ }
+ if (pedited) {
+ pedited->raw.bayersensor.pixelShiftDemosaicMethod = true;
+ }
+ }
+ } else {
+ assignFromKeyfile(keyFile, "RAW Bayer", "pixelShiftDemosaicMethod", pedited, raw.bayersensor.pixelShiftDemosaicMethod, pedited->raw.bayersensor.pixelShiftDemosaicMethod);
+ }
+
assignFromKeyfile(keyFile, "RAW Bayer", "PDAFLinesFilter", pedited, raw.bayersensor.pdafLinesFilter, pedited->raw.bayersensor.pdafLinesFilter);
}
if (keyFile.has_group ("RAW X-Trans")) {
assignFromKeyfile(keyFile, "RAW X-Trans", "Method", pedited, raw.xtranssensor.method, pedited->raw.xtranssensor.method);
+ assignFromKeyfile(keyFile, "RAW X-Trans", "DualDemosaicContrast", pedited, raw.xtranssensor.dualDemosaicContrast, pedited->raw.xtranssensor.dualDemosaicContrast);
assignFromKeyfile(keyFile, "RAW X-Trans", "CcSteps", pedited, raw.xtranssensor.ccSteps, pedited->raw.xtranssensor.ccSteps);
assignFromKeyfile(keyFile, "RAW X-Trans", "PreBlackRed", pedited, raw.xtranssensor.blackred, pedited->raw.xtranssensor.exBlackRed);
assignFromKeyfile(keyFile, "RAW X-Trans", "PreBlackGreen", pedited, raw.xtranssensor.blackgreen, pedited->raw.xtranssensor.exBlackGreen);
@@ -4785,6 +4926,7 @@ bool ProcParams::operator ==(const ProcParams& other) const
&& dirpyrequalizer == other.dirpyrequalizer
&& hsvequalizer == other.hsvequalizer
&& filmSimulation == other.filmSimulation
+ && softlight == other.softlight
&& rgbCurves == other.rgbCurves
&& colorToning == other.colorToning
&& metadata == other.metadata
@@ -4917,10 +5059,14 @@ void PartialProfile::set(bool v)
}
}
-void PartialProfile::applyTo(ProcParams* destParams) const
+void PartialProfile::applyTo(ProcParams* destParams, bool fromLastSave) const
{
if (destParams && pparams && pedited) {
+ bool fromHistMatching = fromLastSave && destParams->toneCurve.histmatching && pparams->toneCurve.histmatching;
pedited->combine (*destParams, *pparams, true);
+ if (!fromLastSave) {
+ destParams->toneCurve.fromHistMatching = fromHistMatching;
+ }
}
}
diff --git a/rtengine/procparams.h b/rtengine/procparams.h
index 5e7b9ff2d..a3471fc65 100644
--- a/rtengine/procparams.h
+++ b/rtengine/procparams.h
@@ -281,6 +281,7 @@ struct ToneCurveParams {
int hlcompr; // Highlight Recovery's compression
int hlcomprthresh; // Highlight Recovery's threshold
bool histmatching; // histogram matching
+ bool fromHistMatching;
bool clampOOG; // clamp out of gamut colours
ToneCurveParams();
@@ -454,6 +455,7 @@ struct ColorToningParams {
double labgridAHigh;
double labgridBHigh;
static const double LABGRID_CORR_MAX;
+ static const double LABGRID_CORR_SCALE;
ColorToningParams();
@@ -473,6 +475,7 @@ struct ColorToningParams {
*/
struct SharpeningParams {
bool enabled;
+ double contrast;
double radius;
int amount;
Threshold threshold;
@@ -509,6 +512,7 @@ struct SharpenMicroParams {
bool enabled;
bool matrix;
double amount;
+ double contrast;
double uniformity;
SharpenMicroParams();
@@ -997,6 +1001,7 @@ struct ResizeParams {
int dataspec;
int width;
int height;
+ bool allowUpscaling;
ResizeParams();
@@ -1212,6 +1217,17 @@ struct FilmSimulationParams {
};
+struct SoftLightParams {
+ bool enabled;
+ int strength;
+
+ SoftLightParams();
+
+ bool operator==(const SoftLightParams &other) const;
+ bool operator!=(const SoftLightParams &other) const;
+};
+
+
/**
* Parameters for RAW demosaicing, common to all sensor type
*/
@@ -1222,18 +1238,21 @@ struct RAWParams {
struct BayerSensor {
enum class Method {
AMAZE,
- IGV,
+ AMAZEVNG4,
+ RCD,
+ RCDVNG4,
+ DCB,
+ DCBVNG4,
LMMSE,
+ IGV,
+ AHD,
EAHD,
HPHD,
VNG4,
- DCB,
- AHD,
- RCD,
FAST,
MONO,
- NONE,
- PIXELSHIFT
+ PIXELSHIFT,
+ NONE
};
enum class PSMotionCorrectionMethod {
@@ -1242,7 +1261,14 @@ struct RAWParams {
CUSTOM
};
+ enum class PSDemosaicMethod {
+ AMAZE,
+ AMAZEVNG4,
+ LMMSE
+ };
+
Glib::ustring method;
+ int border;
int imageNum;
int ccSteps;
double black0;
@@ -1261,6 +1287,7 @@ struct RAWParams {
int greenthresh;
int dcb_iterations;
int lmmse_iterations;
+ double dualDemosaicContrast;
PSMotionCorrectionMethod pixelShiftMotionCorrectionMethod;
double pixelShiftEperIso;
double pixelShiftSigma;
@@ -1271,10 +1298,10 @@ struct RAWParams {
bool pixelShiftGreen;
bool pixelShiftBlur;
double pixelShiftSmoothFactor;
- bool pixelShiftLmmse;
bool pixelShiftEqualBright;
bool pixelShiftEqualBrightChannel;
bool pixelShiftNonGreenCross;
+ Glib::ustring pixelShiftDemosaicMethod;
bool dcb_enhance;
bool pdafLinesFilter;
@@ -1287,6 +1314,9 @@ struct RAWParams {
static const std::vector& getMethodStrings();
static Glib::ustring getMethodString(Method method);
+
+ static const std::vector& getPSDemosaicMethodStrings();
+ static Glib::ustring getPSDemosaicMethodString(PSDemosaicMethod method);
};
/**
@@ -1294,7 +1324,9 @@ struct RAWParams {
*/
struct XTransSensor {
enum class Method {
+ FOUR_PASS,
THREE_PASS,
+ TWO_PASS,
ONE_PASS,
FAST,
MONO,
@@ -1302,6 +1334,7 @@ struct RAWParams {
};
Glib::ustring method;
+ double dualDemosaicContrast;
int ccSteps;
double blackred;
double blackgreen;
@@ -1403,6 +1436,7 @@ public:
DirPyrEqualizerParams dirpyrequalizer; ///< directional pyramid wavelet parameters
HSVEqualizerParams hsvequalizer; ///< hsv wavelet parameters
FilmSimulationParams filmSimulation; ///< film simulation parameters
+ SoftLightParams softlight; ///< softlight parameters
int rank; ///< Custom image quality ranking
int colorlabel; ///< Custom color label
bool inTrash; ///< Marks deleted image
@@ -1483,7 +1517,7 @@ public:
void clearGeneral();
int load(const Glib::ustring& fName);
void set(bool v);
- void applyTo(ProcParams* destParams) const ;
+ void applyTo(ProcParams* destParams, bool fromLastSaved = false) const ;
rtengine::procparams::ProcParams* pparams;
ParamsEdited* pedited;
diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc
index 1e8cb02ad..6ef110a03 100644
--- a/rtengine/rawimage.cc
+++ b/rtengine/rawimage.cc
@@ -118,6 +118,8 @@ void RawImage::get_colorsCoeff( float *pre_mul_, float *scale_mul_, float *cblac
}
memset(dsum, 0, sizeof dsum);
+ constexpr float blackThreshold = 8.f;
+ constexpr float whiteThreshold = 25.f;
if (this->isBayer()) {
// calculate number of pixels per color
dsum[FC(0, 0) + 4] += (int)(((W + 1) / 2) * ((H + 1) / 2));
@@ -135,8 +137,8 @@ void RawImage::get_colorsCoeff( float *pre_mul_, float *scale_mul_, float *cblac
float whitefloat[4];
for (int c = 0; c < 4; c++) {
- cblackfloat[c] = cblack_[c];
- whitefloat[c] = this->get_white(c) - 25;
+ cblackfloat[c] = cblack_[c] + blackThreshold;
+ whitefloat[c] = this->get_white(c) - whiteThreshold;
}
float *tempdata = data[0];
@@ -154,7 +156,7 @@ void RawImage::get_colorsCoeff( float *pre_mul_, float *scale_mul_, float *cblac
int c = FC(y, x);
val = tempdata[y * W + x];
- if (val > whitefloat[c]) { // calculate number of pixels to be substracted from sum and skip the block
+ if (val > whitefloat[c] || val < cblackfloat[c]) { // calculate number of pixels to be subtracted from sum and skip the block
dsumthr[FC(row, col) + 4] += (int)(((xmax - col + 1) / 2) * ((ymax - row + 1) / 2));
dsumthr[FC(row, col + 1) + 4] += (int)(((xmax - col) / 2) * ((ymax - row + 1) / 2));
dsumthr[FC(row + 1, col) + 4] += (int)(((xmax - col + 1) / 2) * ((ymax - row) / 2));
@@ -162,10 +164,6 @@ void RawImage::get_colorsCoeff( float *pre_mul_, float *scale_mul_, float *cblac
goto skip_block2;
}
- if (val < cblackfloat[c]) {
- val = cblackfloat[c];
- }
-
sum[c] += val;
}
@@ -202,11 +200,13 @@ skip_block2:
memset(dsumthr, 0, sizeof dsumthr);
float sum[8];
// make local copies of the black and white values to avoid calculations and conversions
+ float cblackfloat[4];
float whitefloat[4];
for (int c = 0; c < 4; c++)
{
- whitefloat[c] = this->get_white(c) - 25;
+ cblackfloat[c] = cblack_[c] + blackThreshold;
+ whitefloat[c] = this->get_white(c) - whiteThreshold;
}
#pragma omp for nowait
@@ -221,13 +221,11 @@ skip_block2:
int c = XTRANSFC(y, x);
float val = data[y][x];
- if (val > whitefloat[c]) {
+ if (val > whitefloat[c] || val < cblackfloat[c]) {
goto skip_block3;
}
- if ((val -= cblack_[c]) < 0) {
- val = 0;
- }
+ val -= cblack_[c];
sum[c] += val;
sum[c + 4]++;
@@ -262,27 +260,16 @@ skip_block3:
for (size_t y = row; y < row + 8 && y < H; y++)
for (size_t x = col; x < col + 8 && x < W; x++)
for (int c = 0; c < 3; c++) {
- if (this->isBayer()) {
- c = FC(y, x);
- val = data[y][x];
- } else {
- val = data[y][3 * x + c];
- }
+ val = data[y][3 * x + c];
- if (val > this->get_white(c) - 25) {
+ if (val > this->get_white(c) - whiteThreshold || val < cblack_[c] + blackThreshold) {
goto skip_block;
}
- if ((val -= cblack_[c]) < 0) {
- val = 0;
- }
+ val -= cblack_[c];
sum[c] += val;
sum[c + 4]++;
-
- if ( this->isBayer()) {
- break;
- }
}
for (c = 0; c < 8; c++) {
diff --git a/rtengine/rawimage.h b/rtengine/rawimage.h
index 95e7aea8d..7595ad196 100644
--- a/rtengine/rawimage.h
+++ b/rtengine/rawimage.h
@@ -167,10 +167,22 @@ public:
{
return top_margin;
}
+
+ int get_rawwidth() const
+ {
+ return raw_width;
+ }
+
int get_FujiWidth() const
{
return fuji_width;
}
+
+ float const * get_FloatRawImage() const
+ {
+ return float_raw_image;
+ }
+
eSensorType getSensorType();
void getRgbCam (float rgbcam[3][4]);
@@ -312,6 +324,11 @@ public:
return filters == 9;
}
+ bool isFloat() const
+ {
+ return float_raw_image;
+ }
+
public:
// dcraw functions
void pre_interpolate()
diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc
index 6f119a2ad..77cb6a522 100644
--- a/rtengine/rawimagesource.cc
+++ b/rtengine/rawimagesource.cc
@@ -35,6 +35,7 @@
#include "improcfun.h"
#include "rtlensfun.h"
#include "pdaflinesfilter.h"
+#include "camconst.h"
#ifdef _OPENMP
#include
#endif
@@ -589,8 +590,8 @@ void RawImageSource::transformRect (const PreviewProps &pp, int tran, int &ssx1,
} else {
ssx1 = sx1;
ssy1 = sy1;
- width = (sx2 - sx1) / pp.getSkip() + ((sx2 - sx1) % pp.getSkip() > 0);
- height = (sy2 - sy1) / pp.getSkip() + ((sy2 - sy1) % pp.getSkip() > 0);
+ width = (sx2 + 1 - sx1) / pp.getSkip() + ((sx2 + 1 - sx1) % pp.getSkip() > 0);
+ height = (sy2 + 1 - sy1) / pp.getSkip() + ((sy2 + 1 - sy1) % pp.getSkip() > 0);
}
}
@@ -745,14 +746,11 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima
for (int ix = 0; ix < imheight; ix++) {
int i = sy1 + skip * ix;
-
- if (i >= maxy - skip) {
- i = maxy - skip - 1; // avoid trouble
- }
+ i = std::min(i, maxy - skip); // avoid trouble
if (ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS || ri->get_colors() == 1) {
for (int j = 0, jx = sx1; j < imwidth; j++, jx += skip) {
- jx = std::min(jx, maxx - skip - 1); // avoid trouble
+ jx = std::min(jx, maxx - skip); // avoid trouble
float rtot = 0.f, gtot = 0.f, btot = 0.f;
@@ -1945,8 +1943,19 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le
}
}
- // check if it is an olympus E camera or green equilibration is enabled. If yes, compute G channel pre-compensation factors
- if ( ri->getSensorType() == ST_BAYER && (raw.bayersensor.greenthresh || (((idata->getMake().size() >= 7 && idata->getMake().substr(0, 7) == "OLYMPUS" && idata->getModel()[0] == 'E') || (idata->getMake().size() >= 9 && idata->getMake().substr(0, 9) == "Panasonic")) && raw.bayersensor.method != RAWParams::BayerSensor::getMethodString( RAWParams::BayerSensor::Method::VNG4))) ) {
+ // check if green equilibration is needed. If yes, compute G channel pre-compensation factors
+ const auto globalGreenEq =
+ [&]() -> bool
+ {
+ CameraConstantsStore *ccs = CameraConstantsStore::getInstance();
+ CameraConst *cc = ccs->get(ri->get_maker().c_str(), ri->get_model().c_str());
+ return cc && cc->get_globalGreenEquilibration();
+ };
+
+ if ( ri->getSensorType() == ST_BAYER && (raw.bayersensor.greenthresh || (globalGreenEq() && raw.bayersensor.method != RAWParams::BayerSensor::getMethodString( RAWParams::BayerSensor::Method::VNG4))) ) {
+ if (settings->verbose) {
+ printf("Performing global green equilibration...\n");
+ }
// global correction
if(numFrames == 4) {
for(int i = 0; i < 4; ++i) {
@@ -2059,7 +2068,7 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void RawImageSource::demosaic(const RAWParams &raw)
+void RawImageSource::demosaic(const RAWParams &raw, bool autoContrast, double &contrastThreshold)
{
MyTime t1, t2;
t1.set();
@@ -2068,13 +2077,22 @@ void RawImageSource::demosaic(const RAWParams &raw)
if ( raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::HPHD) ) {
hphd_demosaic ();
} else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::VNG4) ) {
- vng4_demosaic ();
+ vng4_demosaic (rawData, red, green, blue);
} else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AHD) ) {
ahd_demosaic ();
} else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AMAZE) ) {
amaze_demosaic_RT (0, 0, W, H, rawData, red, green, blue);
+ } else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AMAZEVNG4)
+ || raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::DCBVNG4)
+ || raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::RCDVNG4)) {
+ if (!autoContrast) {
+ double threshold = raw.bayersensor.dualDemosaicContrast;
+ dual_demosaic_RT (true, raw, W, H, rawData, red, green, blue, threshold, false);
+ } else {
+ dual_demosaic_RT (true, raw, W, H, rawData, red, green, blue, contrastThreshold, true, 0, 0);
+ }
} else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::PIXELSHIFT) ) {
- pixelshift(0, 0, W, H, raw.bayersensor, currFrame, ri->get_maker(), ri->get_model(), raw.expos);
+ pixelshift(0, 0, W, H, raw, currFrame, ri->get_maker(), ri->get_model(), raw.expos);
} else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::DCB) ) {
dcb_demosaic(raw.bayersensor.dcb_iterations, raw.bayersensor.dcb_enhance);
} else if (raw.bayersensor.method == RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::EAHD)) {
@@ -2092,16 +2110,20 @@ void RawImageSource::demosaic(const RAWParams &raw)
} else {
nodemosaic(false);
}
-
- //if (raw.all_enhance) refinement_lassus();
-
} else if (ri->getSensorType() == ST_FUJI_XTRANS) {
if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST) ) {
- fast_xtrans_interpolate();
+ fast_xtrans_interpolate(rawData, red, green, blue);
} else if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::ONE_PASS)) {
xtrans_interpolate(1, false);
} else if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::THREE_PASS) ) {
xtrans_interpolate(3, true);
+ } else if (raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FOUR_PASS) || raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::TWO_PASS)) {
+ if (!autoContrast) {
+ double threshold = raw.xtranssensor.dualDemosaicContrast;
+ dual_demosaic_RT (false, raw, W, H, rawData, red, green, blue, threshold, false);
+ } else {
+ dual_demosaic_RT (false, raw, W, H, rawData, red, green, blue, contrastThreshold, true, 0, 0);
+ }
} else if(raw.xtranssensor.method == RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::MONO) ) {
nodemosaic(true);
} else {
@@ -5139,7 +5161,7 @@ ColorTemp RawImageSource::getSpotWB (std::vector &red, std::vector &red, std::vector &red, std::vector &red, std::vector &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);
@@ -130,7 +130,7 @@ public:
void HLRecovery_Global (ToneCurveParams hrp);
void refinement_lassus (int PassCount);
void refinement(int PassCount);
-
+ void setBorder(unsigned int rawBorder) {border = rawBorder;}
bool isRGBSourceModified() const
{
return rgbSourceModified; // tracks whether cached rgb output of demosaic has been modified
@@ -243,7 +243,7 @@ protected:
inline void convert_to_cielab_row (float* ar, float* ag, float* ab, float* oL, float* oa, float* ob);
inline void interpolate_row_g (float* agh, float* agv, int i);
inline void interpolate_row_rb (float* ar, float* ab, float* pg, float* cg, float* ng, int i);
- inline void interpolate_row_rb_mul_pp (float* ar, float* ab, float* pg, float* cg, float* ng, int i, float r_mul, float g_mul, float b_mul, int x1, int width, int skip);
+ inline void interpolate_row_rb_mul_pp (const array2D &rawData, float* ar, float* ab, float* pg, float* cg, float* ng, int i, float r_mul, float g_mul, float b_mul, int x1, int width, int skip);
float* CA_correct_RT (const bool autoCA, const double cared, const double cablue, const double caautostrength, array2D &rawData, double *fitParamsTransfer, bool fitParamsIn, bool fitParamsOut, float * buffer, bool freeBuffer);
void ddct8x8s(int isgn, float a[8][8]);
@@ -262,18 +262,19 @@ protected:
void nodemosaic(bool bw);
void eahd_demosaic();
void hphd_demosaic();
- void vng4_demosaic();
+ void vng4_demosaic(const array2D &rawData, array2D &red, array2D &green, array2D &blue, bool keepGreens = false);
void ppg_demosaic();
void jdl_interpolate_omp();
void igv_interpolate(int winw, int winh);
void lmmse_interpolate_omp(int winw, int winh, array2D &rawData, array2D &red, array2D &green, array2D &blue, int iterations);
- void amaze_demosaic_RT(int winx, int winy, int winw, int winh, array2D &rawData, array2D &red, array2D &green, array2D &blue);//Emil's code for AMaZE
+ void amaze_demosaic_RT(int winx, int winy, int winw, int winh, const array2D &rawData, array2D &red, array2D &green, array2D &blue);//Emil's code for AMaZE
+ void dual_demosaic_RT(bool isBayer, const RAWParams &raw, int winw, int winh, const array2D &rawData, array2D &red, array2D &green, array2D &blue, double &contrast, bool autoContrast = false, int autoX = -1, int autoY = -1);
void fast_demosaic();//Emil's code for fast demosaicing
void dcb_demosaic(int iterations, bool dcb_enhance);
void ahd_demosaic();
void rcd_demosaic();
void border_interpolate(unsigned int border, float (*image)[4], unsigned int start = 0, unsigned int end = 0);
- void border_interpolate2(int winw, int winh, int lborders);
+ void border_interpolate2(int winw, int winh, int lborders, const array2D &rawData, array2D &red, array2D &green, array2D &blue);
void dcb_initTileLimits(int &colMin, int &rowMin, int &colMax, int &rowMax, int x0, int y0, int border);
void fill_raw( float (*cache )[3], int x0, int y0, float** rawData);
void fill_border( float (*cache )[3], int border, int x0, int y0);
@@ -289,10 +290,10 @@ protected:
void dcb_refinement(float (*image)[3], uint8_t *map, int x0, int y0);
void dcb_color_full(float (*image)[3], int x0, int y0, float (*chroma)[2]);
void cielab (const float (*rgb)[3], float* l, float* a, float *b, const int width, const int height, const int labWidth, const float xyz_cam[3][3]);
- void xtransborder_interpolate (int border);
+ void xtransborder_interpolate (int border, array2D &red, array2D &green, array2D &blue);
void xtrans_interpolate (const int passes, const bool useCieLab);
- void fast_xtrans_interpolate ();
- void pixelshift(int winx, int winy, int winw, int winh, const RAWParams::BayerSensor &bayerParams, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection);
+ 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);
diff --git a/rtengine/rawimagesource_i.h b/rtengine/rawimagesource_i.h
index 689ab03db..91d62ecab 100644
--- a/rtengine/rawimagesource_i.h
+++ b/rtengine/rawimagesource_i.h
@@ -276,7 +276,7 @@ inline void RawImageSource::interpolate_row_rb (float* ar, float* ab, float* pg,
}
}
-inline void RawImageSource::interpolate_row_rb_mul_pp (float* ar, float* ab, float* pg, float* cg, float* ng, int i, float r_mul, float g_mul, float b_mul, int x1, int width, int skip)
+inline void RawImageSource::interpolate_row_rb_mul_pp (const array2D &rawData, float* ar, float* ab, float* pg, float* cg, float* ng, int i, float r_mul, float g_mul, float b_mul, int x1, int width, int skip)
{
if ((ri->ISRED(i, 0) || ri->ISRED(i, 1)) && pg && ng) {
diff --git a/rtengine/rcd_demosaic.cc b/rtengine/rcd_demosaic.cc
index f131bc87e..01430a894 100644
--- a/rtengine/rcd_demosaic.cc
+++ b/rtengine/rcd_demosaic.cc
@@ -291,7 +291,7 @@ void RawImageSource::rcd_demosaic()
free(PQ_Dir);
}
- border_interpolate2(W, H, rcdBorder);
+ border_interpolate2(W, H, rcdBorder, rawData, red, green, blue);
if (plistener) {
plistener->setProgress(1);
diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc
index 79508cfb3..c56a72a2c 100644
--- a/rtengine/rt_algo.cc
+++ b/rtengine/rt_algo.cc
@@ -1,6 +1,8 @@
/*
* This file is part of RawTherapee.
*
+ * Copyright (c) 2017-2018 Ingo Weyrich
+ *
* RawTherapee is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
@@ -20,12 +22,36 @@
#include
#include
#include
-
+#include
#ifdef _OPENMP
#include
#endif
+#include "gauss.h"
+#include "opthelper.h"
#include "rt_algo.h"
+#include "rt_math.h"
+#include "sleef.c"
+
+namespace {
+float calcBlendFactor(float val, float threshold) {
+ // sigmoid function
+ // result is in ]0;1] range
+ // inflexion point is at (x, y) (threshold, 0.5)
+ return 1.f / (1.f + xexpf(16.f - 16.f * val / threshold));
+}
+
+#ifdef __SSE2__
+vfloat calcBlendFactor(vfloat valv, vfloat thresholdv) {
+ // sigmoid function
+ // result is in ]0;1] range
+ // inflexion point is at (x, y) (threshold, 0.5)
+ const vfloat onev = F2V(1.f);
+ const vfloat c16v = F2V(16.f);
+ return onev / (onev + xexpf(c16v - c16v * valv / thresholdv));
+}
+#endif
+}
namespace rtengine
{
@@ -164,4 +190,134 @@ void findMinMaxPercentile(const float* data, size_t size, float minPrct, float&
maxOut += minVal;
}
+void buildBlendMask(float** luminance, float **blend, int W, int H, float contrastThreshold, float amount) {
+
+ constexpr float scale = 0.0625f / 327.68f;
+
+ if(contrastThreshold == 0.f) {
+ for(int j = 0; j < H; ++j) {
+ for(int i = 0; i < W; ++i) {
+ blend[j][i] = amount;
+ }
+ }
+ } else {
+#ifdef _OPENMP
+ #pragma omp parallel
+#endif
+ {
+#ifdef __SSE2__
+ const vfloat contrastThresholdv = F2V(contrastThreshold);
+ const vfloat scalev = F2V(scale);
+ const vfloat amountv = F2V(amount);
+#endif
+#ifdef _OPENMP
+ #pragma omp for schedule(dynamic,16)
+#endif
+
+ for(int j = 2; j < H - 2; ++j) {
+ int i = 2;
+#ifdef __SSE2__
+ for(; i < W - 5; i += 4) {
+ vfloat contrastv = vsqrtf(SQRV(LVFU(luminance[j][i+1]) - LVFU(luminance[j][i-1])) + SQRV(LVFU(luminance[j+1][i]) - LVFU(luminance[j-1][i])) +
+ SQRV(LVFU(luminance[j][i+2]) - LVFU(luminance[j][i-2])) + SQRV(LVFU(luminance[j+2][i]) - LVFU(luminance[j-2][i]))) * scalev;
+
+ STVFU(blend[j][i], amountv * calcBlendFactor(contrastv, contrastThresholdv));
+ }
+#endif
+ for(; i < W - 2; ++i) {
+
+ float contrast = sqrtf(rtengine::SQR(luminance[j][i+1] - luminance[j][i-1]) + rtengine::SQR(luminance[j+1][i] - luminance[j-1][i]) +
+ rtengine::SQR(luminance[j][i+2] - luminance[j][i-2]) + rtengine::SQR(luminance[j+2][i] - luminance[j-2][i])) * scale;
+
+ blend[j][i] = amount * calcBlendFactor(contrast, contrastThreshold);
+ }
+ }
+
+#ifdef _OPENMP
+ #pragma omp single
+#endif
+ {
+ // upper border
+ for(int j = 0; j < 2; ++j) {
+ for(int i = 2; i < W - 2; ++i) {
+ blend[j][i] = blend[2][i];
+ }
+ }
+ // lower border
+ for(int j = H - 2; j < H; ++j) {
+ for(int i = 2; i < W - 2; ++i) {
+ blend[j][i] = blend[H-3][i];
+ }
+ }
+ for(int j = 0; j < H; ++j) {
+ // left border
+ blend[j][0] = blend[j][1] = blend[j][2];
+ // right border
+ blend[j][W - 2] = blend[j][W - 1] = blend[j][W - 3];
+ }
+ }
+
+ // blur blend mask to smooth transitions
+ gaussianBlur(blend, blend, W, H, 2.0);
+ }
+ }
+}
+
+int calcContrastThreshold(float** luminance, float **blend, int W, int H) {
+
+ constexpr float scale = 0.0625f / 327.68f;
+
+#ifdef __SSE2__
+ const vfloat scalev = F2V(scale);
+#endif
+
+ for(int j = 2; j < H - 2; ++j) {
+ int i = 2;
+#ifdef __SSE2__
+ for(; i < W - 5; i += 4) {
+ vfloat contrastv = vsqrtf(SQRV(LVFU(luminance[j][i+1]) - LVFU(luminance[j][i-1])) + SQRV(LVFU(luminance[j+1][i]) - LVFU(luminance[j-1][i])) +
+ SQRV(LVFU(luminance[j][i+2]) - LVFU(luminance[j][i-2])) + SQRV(LVFU(luminance[j+2][i]) - LVFU(luminance[j-2][i]))) * scalev;
+ STVFU(blend[j -2 ][i - 2], contrastv);
+ }
+#endif
+ for(; i < W - 2; ++i) {
+
+ float contrast = sqrtf(rtengine::SQR(luminance[j][i+1] - luminance[j][i-1]) + rtengine::SQR(luminance[j+1][i] - luminance[j-1][i]) +
+ rtengine::SQR(luminance[j][i+2] - luminance[j][i-2]) + rtengine::SQR(luminance[j+2][i] - luminance[j-2][i])) * scale;
+
+ blend[j -2][i- 2] = contrast;
+ }
+ }
+
+ const float limit = (W - 2) * (H - 2) / 100.f;
+
+ int c;
+ for (c = 1; c < 100; ++c) {
+ const float contrastThreshold = c / 100.f;
+ float sum = 0.f;
+#ifdef __SSE2__
+ const vfloat contrastThresholdv = F2V(contrastThreshold);
+ vfloat sumv = ZEROV;
+#endif
+
+ for(int j = 0; j < H - 4; ++j) {
+ int i = 0;
+#ifdef __SSE2__
+ for(; i < W - 7; i += 4) {
+ sumv += calcBlendFactor(LVFU(blend[j][i]), contrastThresholdv);
+ }
+#endif
+ for(; i < W - 4; ++i) {
+ sum += calcBlendFactor(blend[j][i], contrastThreshold);
+ }
+ }
+#ifdef __SSE2__
+ sum += vhadd(sumv);
+#endif
+ if (sum <= limit) {
+ break;
+ }
+ }
+ return c;
+}
}
diff --git a/rtengine/rt_algo.h b/rtengine/rt_algo.h
index 2630bbf41..e20713b8f 100644
--- a/rtengine/rt_algo.h
+++ b/rtengine/rt_algo.h
@@ -1,7 +1,7 @@
/*
* This file is part of RawTherapee.
*
- * Copyright (c) 2017 Ingo Weyrich
+ * Copyright (c) 2017-2018 Ingo Weyrich
*
* RawTherapee is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -23,7 +23,7 @@
namespace rtengine
{
-
void findMinMaxPercentile(const float* data, size_t size, float minPrct, float& minOut, float maxPrct, float& maxOut, bool multiThread = true);
-
+void buildBlendMask(float** luminance, float **blend, int W, int H, float contrastThreshold, float amount = 1.f);
+int calcContrastThreshold(float** luminance, float **blend, int W, int H);
}
diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h
index f50321775..c76c542e3 100644
--- a/rtengine/rtengine.h
+++ b/rtengine/rtengine.h
@@ -482,6 +482,7 @@ public:
virtual void getMonitorProfile (Glib::ustring& monitorProfile, RenderingIntent& intent) const = 0;
virtual void setSoftProofing (bool softProof, bool gamutCheck) = 0;
virtual void getSoftProofing (bool &softProof, bool &gamutCheck) = 0;
+ virtual void setSharpMask (bool sharpMask) = 0;
virtual ~StagedImageProcessor () {}
diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc
index 3c2d3e6f5..9279e8829 100644
--- a/rtengine/rtthumbnail.cc
+++ b/rtengine/rtthumbnail.cc
@@ -66,7 +66,11 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
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
@@ -76,8 +80,15 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
int col = 0;
for (; col < width - 1; col += 2) {
- float val0 = image[row * width + col][c0];
- float val1 = image[row * width + col + 1][c1];
+ float val0;
+ float val1;
+ if (isFloat) {
+ val0 = float_raw_image[(row + top_margin) * raw_width + col + left_margin];
+ val1 = float_raw_image[(row + top_margin) * raw_width + col + left_margin + 1];
+ } else {
+ val0 = image[row * width + col][c0];
+ val1 = image[row * width + col + 1][c1];
+ }
val0 -= cblack[c0];
val1 -= cblack[c1];
val0 *= scale_mul[c0];
@@ -87,7 +98,12 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
}
if (col < width) { // in case width is odd
- float val0 = image[row * width + col][c0];
+ float val0;
+ if (isFloat) {
+ val0 = float_raw_image[(row + top_margin) * raw_width + col + left_margin];
+ } else {
+ val0 = image[row * width + col][c0];
+ }
val0 -= cblack[c0];
val0 *= scale_mul[c0];
image[row * width + col][c0] = rtengine::CLIP (val0);
@@ -96,6 +112,11 @@ 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)
@@ -111,7 +132,12 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
for (; col < width - 5; col += 6) {
for (int i = 0; i < 6; ++i) {
const unsigned ccol = c[i];
- float val = image[row * width + col + i][ccol];
+ float val;
+ if (isFloat) {
+ val = float_raw_image[(row + top_margin) * raw_width + col + i + left_margin];
+ } else {
+ val = image[row * width + col + i][ccol];
+ }
val -= cblack[ccol];
val *= scale_mul[ccol];
image[row * width + col + i][ccol] = rtengine::CLIP (val);
@@ -120,7 +146,12 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
for (; col < width; ++col) { // remaining columns
const unsigned ccol = ri->XTRANSFC (row, col);
- float val = image[row * width + col][ccol];
+ float val;
+ if (isFloat) {
+ val = float_raw_image[(row + top_margin) * raw_width + col + left_margin];
+ } else {
+ val = image[row * width + col][ccol];
+ }
val -= cblack[ccol];
val *= scale_mul[ccol];
image[row * width + col][ccol] = rtengine::CLIP (val);
@@ -289,7 +320,8 @@ Image8 *load_inspector_mode(const Glib::ustring &fname, RawMetaDataLocation &rml
neutral.icm.working = "RT_sRGB";
src.preprocess(neutral.raw, neutral.lensProf, neutral.coarse, false);
- src.demosaic(neutral.raw);
+ double thresholdDummy = 0.f;
+ src.demosaic(neutral.raw, false, thresholdDummy);
PreviewProps pp(0, 0, w, h, 1);
diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc
index 6a59241e1..d57264406 100644
--- a/rtengine/simpleprocess.cc
+++ b/rtengine/simpleprocess.cc
@@ -159,6 +159,13 @@ private:
imgsrc = ii->getImageSource ();
tr = getCoarseBitMask (params.coarse);
+ if(imgsrc->getSensorType() == ST_BAYER) {
+ if(params.raw.bayersensor.method!= RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::PIXELSHIFT)) {
+ imgsrc->setBorder(params.raw.bayersensor.border);
+ } else {
+ imgsrc->setBorder(std::max(params.raw.bayersensor.border, 2));
+ }
+ }
imgsrc->getFullSize (fw, fh, tr);
// check the crop params
@@ -196,19 +203,20 @@ private:
ipf_p.reset (new ImProcFunctions (¶ms, true));
ImProcFunctions &ipf = * (ipf_p.get());
- pp = PreviewProps (0, 0, fw, fh, 1);
imgsrc->setCurrentFrame (params.raw.bayersensor.imageNum);
imgsrc->preprocess ( params.raw, params.lensProf, params.coarse, params.dirpyrDenoise.enabled);
if (pl) {
pl->setProgress (0.20);
}
+ double contrastThresholdDummy;
+ imgsrc->demosaic (params.raw, false, contrastThresholdDummy);
- imgsrc->demosaic ( params.raw);
if (pl) {
pl->setProgress (0.30);
}
+ pp = PreviewProps (0, 0, fw, fh, 1);
if (params.retinex.enabled) { //enabled Retinex
LUTf cdcurve (65536, 0);
@@ -741,7 +749,9 @@ private:
ipf.getAutoExp (aehist, aehistcompr, params.toneCurve.clip, expcomp, bright, contr, black, hlcompr, hlcomprthresh);
}
if (params.toneCurve.histmatching) {
- imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve);
+ if (!params.toneCurve.fromHistMatching) {
+ imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve);
+ }
if (params.toneCurve.autoexp) {
params.toneCurve.expcomp = 0.0;
@@ -753,7 +763,6 @@ private:
params.toneCurve.brightness = 0;
params.toneCurve.contrast = 0;
params.toneCurve.black = 0;
-
}
// at this stage, we can flush the raw data to free up quite an important amount of memory
@@ -1053,20 +1062,8 @@ private:
}
if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) && params.sharpening.enabled) {
+ ipf.sharpening (labView, params.sharpening);
- float **buffer = new float*[fh];
-
- for (int i = 0; i < fh; i++) {
- buffer[i] = new float[fw];
- }
-
- ipf.sharpening (labView, (float**)buffer, params.sharpening);
-
- for (int i = 0; i < fh; i++) {
- delete [] buffer[i];
- }
-
- delete [] buffer;
}
WaveletParams WaveParams = params.wavelet;
@@ -1165,7 +1162,7 @@ private:
int imw, imh;
double tmpScale = ipf.resizeScale (¶ms, fw, fh, imw, imh);
- bool labResize = params.resize.enabled && params.resize.method != "Nearest" && tmpScale != 1.0;
+ bool labResize = params.resize.enabled && params.resize.method != "Nearest" && (tmpScale != 1.0 || params.prsharpening.enabled);
LabImage *tmplab;
// crop and convert to rgb16
@@ -1196,33 +1193,24 @@ private:
}
if (labResize) { // resize lab data
- // resize image
- tmplab = new LabImage (imw, imh);
- ipf.Lanczos (labView, tmplab, tmpScale);
- delete labView;
- labView = tmplab;
+ if ((labView->W != imw || labView->H != imh) &&
+ (params.resize.allowUpscaling || (labView->W >= imw && labView->H >= imh))) {
+ // resize image
+ tmplab = new LabImage (imw, imh);
+ ipf.Lanczos (labView, tmplab, tmpScale);
+ delete labView;
+ labView = tmplab;
+ }
cw = labView->W;
ch = labView->H;
if (params.prsharpening.enabled) {
- for (int i = 0; i < ch; i++)
+ for (int i = 0; i < ch; i++) {
for (int j = 0; j < cw; j++) {
labView->L[i][j] = labView->L[i][j] < 0.f ? 0.f : labView->L[i][j];
}
-
- float **buffer = new float*[ch];
-
- for (int i = 0; i < ch; i++) {
- buffer[i] = new float[cw];
}
-
- ipf.sharpening (labView, (float**)buffer, params.prsharpening);
-
- for (int i = 0; i < ch; i++) {
- delete [] buffer[i];
- }
-
- delete [] buffer;
+ ipf.sharpening (labView, params.prsharpening);
}
}
@@ -1279,7 +1267,8 @@ private:
pl->setProgress (0.70);
}
- if (tmpScale != 1.0 && params.resize.method == "Nearest") { // resize rgb data (gamma applied)
+ if (tmpScale != 1.0 && params.resize.method == "Nearest" &&
+ (params.resize.allowUpscaling || (readyImg->getWidth() >= imw && readyImg->getHeight() >= imh))) { // resize rgb data (gamma applied)
Imagefloat* tempImage = new Imagefloat (imw, imh);
ipf.resize (readyImg, tempImage, tmpScale);
delete readyImg;
@@ -1397,7 +1386,7 @@ private:
assert (params.resize.enabled);
// resize image
- {
+ if (params.resize.allowUpscaling || (imw <= fw && imh <= fh)) {
std::unique_ptr resized (new LabImage (imw, imh));
ipf.Lanczos (tmplab.get(), resized.get(), scale_factor);
tmplab = std::move (resized);
@@ -1487,8 +1476,6 @@ private:
}
if (params.raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::PIXELSHIFT)) {
- params.raw.bayersensor.method = procparams::RAWParams::BayerSensor::getMethodString(params.raw.bayersensor.pixelShiftLmmse ? procparams::RAWParams::BayerSensor::Method::LMMSE : procparams::RAWParams::BayerSensor::Method::AMAZE);
- } else if (params.raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::AMAZE)) {
params.raw.bayersensor.method = procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::RCD);
}
diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc
new file mode 100644
index 000000000..8ed05dd09
--- /dev/null
+++ b/rtengine/vng4_demosaic_RT.cc
@@ -0,0 +1,345 @@
+////////////////////////////////////////////////////////////////
+//
+// VNG4 demosaic algorithm
+//
+// optimized for speed by Ingo Weyrich
+//
+//
+// vng4_interpolate_RT.cc is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+////////////////////////////////////////////////////////////////
+
+#include "rtengine.h"
+#include "rawimagesource.h"
+#include "rawimagesource_i.h"
+#include "../rtgui/multilangmgr.h"
+//#define BENCHMARK
+#include "StopWatch.h"
+
+namespace rtengine
+{
+#define fc(row,col) (prefilters >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3)
+typedef unsigned short ushort;
+void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &red, array2D &green, array2D &blue, bool keepGreens)
+{
+ BENCHFUN
+ const signed short int *cp, terms[] = {
+ -2, -2, +0, -1, 0, 0x01, -2, -2, +0, +0, 1, 0x01, -2, -1, -1, +0, 0, 0x01,
+ -2, -1, +0, -1, 0, 0x02, -2, -1, +0, +0, 0, 0x03, -2, -1, +0, +1, 1, 0x01,
+ -2, +0, +0, -1, 0, 0x06, -2, +0, +0, +0, 1, 0x02, -2, +0, +0, +1, 0, 0x03,
+ -2, +1, -1, +0, 0, 0x04, -2, +1, +0, -1, 1, 0x04, -2, +1, +0, +0, 0, 0x06,
+ -2, +1, +0, +1, 0, 0x02, -2, +2, +0, +0, 1, 0x04, -2, +2, +0, +1, 0, 0x04,
+ -1, -2, -1, +0, 0, 0x80, -1, -2, +0, -1, 0, 0x01, -1, -2, +1, -1, 0, 0x01,
+ -1, -2, +1, +0, 1, 0x01, -1, -1, -1, +1, 0, 0x88, -1, -1, +1, -2, 0, 0x40,
+ -1, -1, +1, -1, 0, 0x22, -1, -1, +1, +0, 0, 0x33, -1, -1, +1, +1, 1, 0x11,
+ -1, +0, -1, +2, 0, 0x08, -1, +0, +0, -1, 0, 0x44, -1, +0, +0, +1, 0, 0x11,
+ -1, +0, +1, -2, 1, 0x40, -1, +0, +1, -1, 0, 0x66, -1, +0, +1, +0, 1, 0x22,
+ -1, +0, +1, +1, 0, 0x33, -1, +0, +1, +2, 1, 0x10, -1, +1, +1, -1, 1, 0x44,
+ -1, +1, +1, +0, 0, 0x66, -1, +1, +1, +1, 0, 0x22, -1, +1, +1, +2, 0, 0x10,
+ -1, +2, +0, +1, 0, 0x04, -1, +2, +1, +0, 1, 0x04, -1, +2, +1, +1, 0, 0x04,
+ +0, -2, +0, +0, 1, 0x80, +0, -1, +0, +1, 1, 0x88, +0, -1, +1, -2, 0, 0x40,
+ +0, -1, +1, +0, 0, 0x11, +0, -1, +2, -2, 0, 0x40, +0, -1, +2, -1, 0, 0x20,
+ +0, -1, +2, +0, 0, 0x30, +0, -1, +2, +1, 1, 0x10, +0, +0, +0, +2, 1, 0x08,
+ +0, +0, +2, -2, 1, 0x40, +0, +0, +2, -1, 0, 0x60, +0, +0, +2, +0, 1, 0x20,
+ +0, +0, +2, +1, 0, 0x30, +0, +0, +2, +2, 1, 0x10, +0, +1, +1, +0, 0, 0x44,
+ +0, +1, +1, +2, 0, 0x10, +0, +1, +2, -1, 1, 0x40, +0, +1, +2, +0, 0, 0x60,
+ +0, +1, +2, +1, 0, 0x20, +0, +1, +2, +2, 0, 0x10, +1, -2, +1, +0, 0, 0x80,
+ +1, -1, +1, +1, 0, 0x88, +1, +0, +1, +2, 0, 0x08, +1, +0, +2, -1, 0, 0x40,
+ +1, +0, +2, +1, 0, 0x10
+ },
+ chood[] = { -1, -1, -1, 0, -1, +1, 0, +1, +1, +1, +1, 0, +1, -1, 0, -1 };
+
+ double progress = 0.0;
+ const bool plistenerActive = plistener;
+
+ if (plistenerActive) {
+ plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::VNG4)));
+ plistener->setProgress (progress);
+ }
+
+ const unsigned prefilters = ri->prefilters;
+ const int width = W, height = H;
+ constexpr unsigned int colors = 4;
+ float (*image)[4];
+
+ image = (float (*)[4]) calloc (height * width, sizeof * image);
+
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+
+ for (int ii = 0; ii < H; ii++)
+ for (int jj = 0; jj < W; jj++) {
+ image[ii * W + jj][fc(ii, jj)] = rawData[ii][jj];
+ }
+
+ {
+ int lcode[16][16][32];
+ float mul[16][16][8];
+ float csum[16][16][4];
+
+// first linear interpolation
+ for (int row = 0; row < 16; row++)
+ for (int col = 0; col < 16; col++) {
+ int * ip = lcode[row][col];
+ int mulcount = 0;
+ float sum[4];
+ memset (sum, 0, sizeof sum);
+
+ for (int y = -1; y <= 1; y++)
+ for (int x = -1; x <= 1; x++) {
+ int shift = (y == 0) + (x == 0);
+
+ if (shift == 2) {
+ continue;
+ }
+
+ int color = fc(row + y, col + x);
+ *ip++ = (width * y + x) * 4 + color;
+
+ mul[row][col][mulcount] = (1 << shift);
+ *ip++ = color;
+ sum[color] += (1 << shift);
+ mulcount++;
+ }
+
+ int colcount = 0;
+
+ for (unsigned int c = 0; c < colors; c++)
+ if (c != fc(row, col)) {
+ *ip++ = c;
+ csum[row][col][colcount] = sum[c];
+ colcount ++;
+ }
+ }
+
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+
+ for (int row = 1; row < height - 1; row++) {
+ for (int col = 1; col < width - 1; col++) {
+ float * pix = image[row * width + col];
+ int * ip = lcode[row & 15][col & 15];
+ float sum[4];
+ memset (sum, 0, sizeof sum);
+
+ for (int i = 0; i < 8; i++, ip += 2) {
+ sum[ip[1]] += pix[ip[0]] * mul[row & 15][col & 15][i];
+ }
+
+ for (unsigned int i = 0; i < colors - 1; i++, ip++) {
+ pix[ip[0]] = sum[ip[0]] / csum[row & 15][col & 15][i];
+ }
+ }
+ }
+ }
+
+ const int prow = 7, pcol = 1;
+ int *code[8][2];
+ int t, g;
+ int * ip = (int *) calloc ((prow + 1) * (pcol + 1), 1280);
+
+ for (int row = 0; row <= prow; row++) /* Precalculate for VNG */
+ for (int col = 0; col <= pcol; col++) {
+ code[row][col] = ip;
+
+ for (cp = terms, t = 0; t < 64; t++) {
+ int y1 = *cp++;
+ int x1 = *cp++;
+ int y2 = *cp++;
+ int x2 = *cp++;
+ int weight = *cp++;
+ int grads = *cp++;
+ unsigned int color = fc(row + y1, col + x1);
+
+ if (fc(row + y2, col + x2) != color) {
+ continue;
+ }
+
+ int diag = (fc(row, col + 1) == color && fc(row + 1, col) == color) ? 2 : 1;
+
+ if (abs(y1 - y2) == diag && abs(x1 - x2) == diag) {
+ continue;
+ }
+
+ *ip++ = (y1 * width + x1) * 4 + color;
+ *ip++ = (y2 * width + x2) * 4 + color;
+ *ip++ = weight;
+
+ for (g = 0; g < 8; g++)
+ if (grads & (1 << g)) {
+ *ip++ = g;
+ }
+
+ *ip++ = -1;
+ }
+
+ *ip++ = INT_MAX;
+
+ for (cp = chood, g = 0; g < 8; g++) {
+ int y = *cp++;
+ int x = *cp++;
+ *ip++ = (y * width + x) * 4;
+ unsigned int color = fc(row, col);
+
+ if (fc(row + y, col + x) != color && fc(row + y * 2, col + x * 2) == color) {
+ *ip++ = (y * width + x) * 8 + color;
+ } else {
+ *ip++ = 0;
+ }
+ }
+ }
+
+ if(plistenerActive) {
+ progress = 0.1;
+ plistener->setProgress (progress);
+ }
+
+#ifdef _OPENMP
+ #pragma omp parallel
+#endif
+ {
+ float gval[8], thold, sum[3];
+ int g;
+ const int progressStep = 64;
+ const double progressInc = (0.98 - progress) / ((height - 2) / progressStep);
+#ifdef _OPENMP
+ #pragma omp for schedule(dynamic, 16) nowait
+#endif
+
+ for (int row = 2; row < height - 2; row++) { /* Do VNG interpolation */
+ for (int col = 2; col < width - 2; col++) {
+ float * pix = image[row * width + col];
+ int color = fc(row, col);
+ if (keepGreens && (color & 1)) {
+ green[row][col] = pix[color];
+ } else {
+ int * ip = code[row & prow][col & pcol];
+ memset (gval, 0, sizeof gval);
+
+ while ((g = ip[0]) != INT_MAX) { /* Calculate gradients */
+ float diff = fabsf(pix[g] - pix[ip[1]]) * (1 << ip[2]);
+ gval[ip[3]] += diff;
+ ip += 4;
+
+ while ((g = *ip++) != -1) {
+ gval[g] += diff;
+ }
+ }
+
+ ip++;
+ {
+ float gmin, gmax;
+ gmin = gmax = gval[0]; /* Choose a threshold */
+
+ for (g = 1; g < 8; g++) {
+ if (gmin > gval[g]) {
+ gmin = gval[g];
+ }
+
+ if (gmax < gval[g]) {
+ gmax = gval[g];
+ }
+ }
+
+ thold = gmin + (gmax / 2);
+ }
+ memset (sum, 0, sizeof sum);
+ float t1, t2;
+ t1 = t2 = pix[color];
+
+ if(color & 1) {
+ int num = 0;
+
+ for (g = 0; g < 8; g++, ip += 2) { /* Average the neighbors */
+ if (gval[g] <= thold) {
+ if(ip[1]) {
+ sum[0] += (t1 + pix[ip[1]]) * 0.5f;
+ }
+
+ sum[1] += pix[ip[0] + (color ^ 2)];
+ num++;
+ }
+ }
+
+ t1 += (sum[1] - sum[0]) / num;
+ } else {
+ int num = 0;
+
+ for (g = 0; g < 8; g++, ip += 2) { /* Average the neighbors */
+ if (gval[g] <= thold) {
+ sum[1] += pix[ip[0] + 1];
+ sum[2] += pix[ip[0] + 3];
+
+ if(ip[1]) {
+ sum[0] += (t1 + pix[ip[1]]) * 0.5f;
+ }
+
+ num++;
+ }
+ }
+
+ t1 += (sum[1] - sum[0]) / num;
+ t2 += (sum[2] - sum[0]) / num;
+ }
+
+ green[row][col] = 0.5f * (t1 + t2);
+ }
+ }
+
+ if(plistenerActive) {
+ if((row % progressStep) == 0)
+#ifdef _OPENMP
+ #pragma omp critical (updateprogress)
+#endif
+ {
+ progress += progressInc;
+ plistener->setProgress (progress);
+ }
+ }
+ }
+
+ }
+ free (code[0][0]);
+ free (image);
+
+ if(plistenerActive) {
+ plistener->setProgress (0.98);
+ }
+
+ // Interpolate R and B
+#ifdef _OPENMP
+ #pragma omp parallel for
+#endif
+
+ for (int i = 0; i < H; i++) {
+ if (i == 0)
+ // rm, gm, bm must be recovered
+ //interpolate_row_rb_mul_pp (red, blue, NULL, green[i], green[i+1], i, rm, gm, bm, 0, W, 1);
+ {
+ interpolate_row_rb_mul_pp (rawData, red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
+ } else if (i == H - 1) {
+ interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], nullptr, i, 1.0, 1.0, 1.0, 0, W, 1);
+ } else {
+ interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1);
+ }
+ }
+ border_interpolate2(W, H, 3, rawData, red, green, blue);
+
+ if(plistenerActive) {
+ plistener->setProgress (1.0);
+ }
+}
+}
diff --git a/rtengine/xtrans_demosaic.cc b/rtengine/xtrans_demosaic.cc
index a8e964ad0..ed253749b 100644
--- a/rtengine/xtrans_demosaic.cc
+++ b/rtengine/xtrans_demosaic.cc
@@ -21,6 +21,7 @@
#include "rtengine.h"
#include "rawimagesource.h"
+#include "rt_algo.h"
#include "rt_math.h"
#include "../rtgui/multilangmgr.h"
#include "opthelper.h"
@@ -113,7 +114,7 @@ void RawImageSource::cielab (const float (*rgb)[3], float* l, float* a, float *b
#define fcol(row,col) xtrans[(row)%6][(col)%6]
#define isgreen(row,col) (xtrans[(row)%3][(col)%3]&1)
-void RawImageSource::xtransborder_interpolate (int border)
+void RawImageSource::xtransborder_interpolate (int border, array2D &red, array2D &green, array2D &blue)
{
const int height = H, width = W;
@@ -200,7 +201,7 @@ void RawImageSource::xtrans_interpolate (const int passes, const bool useCieLab)
// printf("%d-pass X-Trans interpolation using %s conversion...\n", passes, useCieLab ? "lab" : "yuv");
// }
- xtransborder_interpolate(6);
+ xtransborder_interpolate(6, red, green, blue);
float xyz_cam[3][3];
{
@@ -957,7 +958,7 @@ void RawImageSource::xtrans_interpolate (const int passes, const bool useCieLab)
}
#undef CLIP
-void RawImageSource::fast_xtrans_interpolate ()
+void RawImageSource::fast_xtrans_interpolate (const array2D &rawData, array2D &red, array2D &green, array2D &blue)
{
// if (settings->verbose) {
// printf("fast X-Trans interpolation...\n");
@@ -973,7 +974,7 @@ void RawImageSource::fast_xtrans_interpolate ()
const int height = H, width = W;
- xtransborder_interpolate (1);
+ xtransborder_interpolate (1, red, green, blue);
int xtrans[6][6];
ri->getXtransMatrix(xtrans);
@@ -1017,4 +1018,6 @@ void RawImageSource::fast_xtrans_interpolate ()
}
#undef fcol
#undef isgreen
-}
\ No newline at end of file
+
+}
+
diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt
index c39ed004c..f2167c654 100644
--- a/rtgui/CMakeLists.txt
+++ b/rtgui/CMakeLists.txt
@@ -154,6 +154,7 @@ set(NONCLISOURCEFILES
eventmapper.cc
metadatapanel.cc
labgrid.cc
+ softlight.cc
)
include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}")
diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h
index 49eefc794..95da5f900 100644
--- a/rtgui/addsetids.h
+++ b/rtgui/addsetids.h
@@ -134,6 +134,16 @@ enum {
ADDSET_LOCALCONTRAST_DARKNESS,
ADDSET_LOCALCONTRAST_LIGHTNESS,
ADDSET_FATTAL_ANCHOR,
+ ADDSET_SHARPENMICRO_CONTRAST,
+ ADDSET_SHARP_CONTRAST,
+ ADDSET_BAYER_FALSE_COLOR_SUPPRESSION,
+ ADDSET_BAYER_ITER,
+ ADDSET_BAYER_PS_SMOOTH,
+ ADDSET_BAYER_PS_EPERISO,
+ ADDSET_BAYER_PS_SIGMA,
+ ADDSET_BAYER_DUALDEMOZCONTRAST,
+ ADDSET_XTRANS_FALSE_COLOR_SUPPRESSION,
+ ADDSET_SOFTLIGHT_STRENGTH,
ADDSET_PARAM_NUM // THIS IS USED AS A DELIMITER!!
};
diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc
index d3c3fb4c6..cbbff4060 100644
--- a/rtgui/batchtoolpanelcoord.cc
+++ b/rtgui/batchtoolpanelcoord.cc
@@ -146,10 +146,10 @@ void BatchToolPanelCoordinator::initSession ()
gradient->setAdjusterBehavior (false, false, false, false);
pcvignette->setAdjusterBehavior (false, false, false);
cacorrection->setAdjusterBehavior (false);
- sharpening->setAdjusterBehavior (false, false, false, false, false, false);
- prsharpening->setAdjusterBehavior (false, false, false, false, false, false);
+ sharpening->setAdjusterBehavior (false, false, false, false, false, false, false);
+ prsharpening->setAdjusterBehavior (false, false, false, false, false, false, false);
sharpenEdge->setAdjusterBehavior (false, false);
- sharpenMicro->setAdjusterBehavior (false, false);
+ sharpenMicro->setAdjusterBehavior (false, false, false);
icm->setAdjusterBehavior (false, false);
epd->setAdjusterBehavior (false, false, false, false, false);
fattal->setAdjusterBehavior (false, false, false);
@@ -164,6 +164,8 @@ void BatchToolPanelCoordinator::initSession ()
dirpyrequalizer->setAdjusterBehavior (false, false, false);
wavelet->setAdjusterBehavior (false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false);
dirpyrdenoise->setAdjusterBehavior (false, false, false, false, false, false, false);
+ bayerprocess->setAdjusterBehavior(false, false, false, false, false, false);
+ xtransprocess->setAdjusterBehavior(false, false);
bayerpreprocess->setAdjusterBehavior (false, false);
rawcacorrection->setAdjusterBehavior (false);
flatfield->setAdjusterBehavior(false);
@@ -189,18 +191,19 @@ void BatchToolPanelCoordinator::initSession ()
gradient->setAdjusterBehavior (options.baBehav[ADDSET_GRADIENT_DEGREE], options.baBehav[ADDSET_GRADIENT_FEATHER], options.baBehav[ADDSET_GRADIENT_STRENGTH], options.baBehav[ADDSET_GRADIENT_CENTER]);
pcvignette->setAdjusterBehavior (options.baBehav[ADDSET_PCVIGNETTE_STRENGTH], options.baBehav[ADDSET_PCVIGNETTE_FEATHER], options.baBehav[ADDSET_PCVIGNETTE_ROUNDNESS]);
cacorrection->setAdjusterBehavior (options.baBehav[ADDSET_CA]);
- sharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_RADIUS], options.baBehav[ADDSET_SHARP_AMOUNT], options.baBehav[ADDSET_SHARP_DAMPING], options.baBehav[ADDSET_SHARP_ITER], options.baBehav[ADDSET_SHARP_EDGETOL], options.baBehav[ADDSET_SHARP_HALOCTRL]);
- prsharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_RADIUS], options.baBehav[ADDSET_SHARP_AMOUNT], options.baBehav[ADDSET_SHARP_DAMPING], options.baBehav[ADDSET_SHARP_ITER], options.baBehav[ADDSET_SHARP_EDGETOL], options.baBehav[ADDSET_SHARP_HALOCTRL]);
+ sharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_CONTRAST], options.baBehav[ADDSET_SHARP_RADIUS], options.baBehav[ADDSET_SHARP_AMOUNT], options.baBehav[ADDSET_SHARP_DAMPING], options.baBehav[ADDSET_SHARP_ITER], options.baBehav[ADDSET_SHARP_EDGETOL], options.baBehav[ADDSET_SHARP_HALOCTRL]);
+ prsharpening->setAdjusterBehavior (options.baBehav[ADDSET_SHARP_CONTRAST], options.baBehav[ADDSET_SHARP_RADIUS], options.baBehav[ADDSET_SHARP_AMOUNT], options.baBehav[ADDSET_SHARP_DAMPING], options.baBehav[ADDSET_SHARP_ITER], options.baBehav[ADDSET_SHARP_EDGETOL], options.baBehav[ADDSET_SHARP_HALOCTRL]);
epd->setAdjusterBehavior (options.baBehav[ADDSET_EPD_STRENGTH], options.baBehav[ADDSET_EPD_GAMMA], options.baBehav[ADDSET_EPD_EDGESTOPPING], options.baBehav[ADDSET_EPD_SCALE], options.baBehav[ADDSET_EPD_REWEIGHTINGITERATES]);
fattal->setAdjusterBehavior (options.baBehav[ADDSET_FATTAL_AMOUNT], options.baBehav[ADDSET_FATTAL_THRESHOLD], options.baBehav[ADDSET_FATTAL_ANCHOR]);
localContrast->setAdjusterBehavior(options.baBehav[ADDSET_LOCALCONTRAST_RADIUS], options.baBehav[ADDSET_LOCALCONTRAST_AMOUNT], options.baBehav[ADDSET_LOCALCONTRAST_DARKNESS], options.baBehav[ADDSET_LOCALCONTRAST_LIGHTNESS]);
sharpenEdge->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT], options.baBehav[ADDSET_SHARPENEDGE_PASS]);
- sharpenMicro->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT], options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]);
+ sharpenMicro->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT], options.baBehav[ADDSET_SHARPENMICRO_CONTRAST], options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]);
icm->setAdjusterBehavior (options.baBehav[ADDSET_FREE_OUPUT_GAMMA], options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]);
// colortoning->setAdjusterBehavior (options.baBehav[ADDSET_COLORTONING_SPLIT], options.baBehav[ADDSET_COLORTONING_SATTHRESHOLD], options.baBehav[ADDSET_COLORTONING_SATOPACITY], options.baBehav[ADDSET_COLORTONING_STRPROTECT], options.baBehav[ADDSET_COLORTONING_BALANCE]);
colortoning->setAdjusterBehavior (options.baBehav[ADDSET_COLORTONING_SPLIT], options.baBehav[ADDSET_COLORTONING_SATTHRESHOLD], options.baBehav[ADDSET_COLORTONING_SATOPACITY], options.baBehav[ADDSET_COLORTONING_STRENGTH], options.baBehav[ADDSET_COLORTONING_BALANCE]);
filmSimulation->setAdjusterBehavior(options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]);
+ softlight->setAdjusterBehavior(options.baBehav[ADDSET_SOFTLIGHT_STRENGTH]);
retinex->setAdjusterBehavior (options.baBehav[ADDSET_RETI_STR], options.baBehav[ADDSET_RETI_NEIGH], options.baBehav[ADDSET_RETI_LIMD], options.baBehav[ADDSET_RETI_OFFS], options.baBehav[ADDSET_RETI_VART], options.baBehav[ADDSET_RETI_GAM], options.baBehav[ADDSET_RETI_SLO]);
chmixer->setAdjusterBehavior (options.baBehav[ADDSET_CHMIXER] );
@@ -209,6 +212,8 @@ void BatchToolPanelCoordinator::initSession ()
dirpyrequalizer->setAdjusterBehavior (options.baBehav[ADDSET_DIRPYREQ], options.baBehav[ADDSET_DIRPYREQ_THRESHOLD], options.baBehav[ADDSET_DIRPYREQ_SKINPROTECT]);
wavelet->setAdjusterBehavior (options.baBehav[ADDSET_WA], options.baBehav[ADDSET_WA_THRESHOLD], options.baBehav[ADDSET_WA_THRESHOLD2], options.baBehav[ADDSET_WA_THRES], options.baBehav[ADDSET_WA_CHRO], options.baBehav[ADDSET_WA_CHROMA], options.baBehav[ADDSET_WA_CONTRAST], options.baBehav[ADDSET_WA_SKINPROTECT], options.baBehav[ADDSET_WA_RESCHRO], options.baBehav[ADDSET_WA_TMRS], options.baBehav[ADDSET_WA_RESCON], options.baBehav[ADDSET_WA_RESCONH], options.baBehav[ADDSET_WA_THRR], options.baBehav[ADDSET_WA_THRRH], options.baBehav[ADDSET_WA_SKYPROTECT], options.baBehav[ADDSET_WA_EDGRAD], options.baBehav[ADDSET_WA_EDGVAL], options.baBehav[ADDSET_WA_STRENGTH], options.baBehav[ADDSET_WA_GAMMA], options.baBehav[ADDSET_WA_EDGEDETECT], options.baBehav[ADDSET_WA_EDGEDETECTTHR], options.baBehav[ADDSET_WA_EDGEDETECTTHR2]);
dirpyrdenoise->setAdjusterBehavior (options.baBehav[ADDSET_DIRPYRDN_LUMA], options.baBehav[ADDSET_DIRPYRDN_LUMDET], options.baBehav[ADDSET_DIRPYRDN_CHROMA], options.baBehav[ADDSET_DIRPYRDN_CHROMARED], options.baBehav[ADDSET_DIRPYRDN_CHROMABLUE], options.baBehav[ADDSET_DIRPYRDN_GAMMA], options.baBehav[ADDSET_DIRPYRDN_PASSES]);
+ bayerprocess->setAdjusterBehavior(options.baBehav[ADDSET_BAYER_FALSE_COLOR_SUPPRESSION], options.baBehav[ADDSET_BAYER_ITER], options.baBehav[ADDSET_BAYER_DUALDEMOZCONTRAST], options.baBehav[ADDSET_BAYER_PS_SIGMA], options.baBehav[ADDSET_BAYER_PS_SMOOTH], options.baBehav[ADDSET_BAYER_PS_EPERISO]);
+ xtransprocess->setAdjusterBehavior(options.baBehav[ADDSET_BAYER_FALSE_COLOR_SUPPRESSION], options.baBehav[ADDSET_BAYER_DUALDEMOZCONTRAST]);
bayerpreprocess->setAdjusterBehavior (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE], options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]);
rawcacorrection->setAdjusterBehavior (options.baBehav[ADDSET_RAWCACORR]);
flatfield->setAdjusterBehavior(options.baBehav[ADDSET_RAWFFCLIPCONTROL]);
@@ -244,6 +249,7 @@ void BatchToolPanelCoordinator::initSession ()
if (options.baBehav[ADDSET_SHARP_HALOCTRL]) { pparams.sharpening.halocontrol_amount = pparams.prsharpening.halocontrol_amount = 0; }
if (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT]) { pparams.sharpenEdge.amount = 0; }
if (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT]) { pparams.sharpenMicro.amount = 0; }
+ if (options.baBehav[ADDSET_SHARPENMICRO_CONTRAST]) { pparams.sharpenMicro.contrast = 0; }
if (options.baBehav[ADDSET_SHARPENEDGE_PASS]) { pparams.sharpenEdge.passes = 0; }
if (options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]) { pparams.sharpenMicro.uniformity = 0; }
if (options.baBehav[ADDSET_CHMIXER]) for (int i = 0; i < 3; i++) { pparams.chmixer.red[i] = pparams.chmixer.green[i] = pparams.chmixer.blue[i] = 0; }
@@ -289,6 +295,7 @@ void BatchToolPanelCoordinator::initSession ()
if (options.baBehav[ADDSET_COLORTONING_BALANCE]) { pparams.colorToning.balance = 0; }
if (options.baBehav[ADDSET_COLORTONING_STRENGTH]) { pparams.colorToning.strength = 0; }
if (options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]) { pparams.filmSimulation.strength = 0; }
+ if (options.baBehav[ADDSET_SOFTLIGHT_STRENGTH]) { pparams.softlight.strength = 0; }
if (options.baBehav[ADDSET_ROTATE_DEGREE]) { pparams.rotate.degree = 0; }
if (options.baBehav[ADDSET_RESIZE_SCALE]) { pparams.resize.scale = 0; }
if (options.baBehav[ADDSET_DIST_AMOUNT]) { pparams.distortion.amount = 0; }
@@ -348,6 +355,13 @@ void BatchToolPanelCoordinator::initSession ()
pparams.raw.bayersensor.black0 = pparams.raw.bayersensor.black1 = pparams.raw.bayersensor.black2 = pparams.raw.bayersensor.black3 =
pparams.raw.xtranssensor.blackred = pparams.raw.xtranssensor.blackgreen = pparams.raw.xtranssensor.blackblue = 0;
}
+ if (options.baBehav[ADDSET_BAYER_FALSE_COLOR_SUPPRESSION]) { pparams.raw.bayersensor.ccSteps = 0; }
+ if (options.baBehav[ADDSET_BAYER_ITER]) { pparams.raw.bayersensor.dcb_iterations = 0; pparams.raw.bayersensor.lmmse_iterations = 0; }
+ if (options.baBehav[ADDSET_BAYER_PS_SMOOTH]) { pparams.raw.bayersensor.pixelShiftSmoothFactor = 0; }
+ if (options.baBehav[ADDSET_BAYER_PS_EPERISO]) { pparams.raw.bayersensor.pixelShiftEperIso = 0; }
+ if (options.baBehav[ADDSET_BAYER_PS_SIGMA]) { pparams.raw.bayersensor.pixelShiftSigma = 0; }
+ if (options.baBehav[ADDSET_BAYER_DUALDEMOZCONTRAST]) { pparams.raw.bayersensor.dualDemosaicContrast = 0; }
+ if (options.baBehav[ADDSET_XTRANS_FALSE_COLOR_SUPPRESSION]) { pparams.raw.xtranssensor.ccSteps = 0; }
if (options.baBehav[ADDSET_RAWFFCLIPCONTROL]) { pparams.raw.ff_clipControl = 0; }
if (options.baBehav[ADDSET_PREPROCESS_GREENEQUIL]) { pparams.raw.bayersensor.greenthresh = 0; }
if (options.baBehav[ADDSET_PREPROCESS_LINEDENOISE]) { pparams.raw.bayersensor.linenoise = 0; }
diff --git a/rtgui/bayerprocess.cc b/rtgui/bayerprocess.cc
index 73fea1aa3..1770dcbb0 100644
--- a/rtgui/bayerprocess.cc
+++ b/rtgui/bayerprocess.cc
@@ -17,6 +17,7 @@
* along with RawTherapee. If not, see .
*/
#include "bayerprocess.h"
+#include "eventmapper.h"
#include "options.h"
#include "guiutils.h"
using namespace rtengine;
@@ -25,6 +26,12 @@ using namespace rtengine::procparams;
BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RAW_LABEL"), true)
{
+
+ auto m = ProcEventMapper::getInstance();
+ EvDemosaicBorder = m->newEvent(DEMOSAIC, "HISTORY_MSG_RAW_BORDER");
+ EvDemosaicContrast = m->newEvent(DEMOSAIC, "HISTORY_MSG_DUALDEMOSAIC_CONTRAST");
+ EvDemosaicPixelshiftDemosaicMethod = m->newEvent(DEMOSAIC, "HISTORY_MSG_PIXELSHIFT_DEMOSAIC");
+
Gtk::HBox* hb1 = Gtk::manage (new Gtk::HBox ());
hb1->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_RAW_DMETHOD") + ": ")), Gtk::PACK_SHRINK, 4);
method = Gtk::manage (new MyComboBoxText ());
@@ -39,6 +46,18 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
hb1->pack_end (*method, Gtk::PACK_EXPAND_WIDGET, 4);
pack_start( *hb1, Gtk::PACK_SHRINK, 4);
+ borderbox = Gtk::manage(new Gtk::HBox());
+ border = Gtk::manage(new Adjuster(M("TP_RAW_BORDER"), 0, 16, 1, 4));
+ border->setAdjusterListener (this);
+
+ if (border->delay < options.adjusterMaxDelay) {
+ border->delay = options.adjusterMaxDelay;
+ }
+
+ border->show();
+ borderbox->pack_start(*border);
+ pack_start(*borderbox, Gtk::PACK_SHRINK, 4);
+
imageNumberBox = Gtk::manage (new Gtk::HBox ());
imageNumberBox->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_RAW_IMAGENUM") + ": ")), Gtk::PACK_SHRINK, 4);
imageNumber = Gtk::manage (new MyComboBoxText ());
@@ -93,18 +112,37 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
lmmseOptions->pack_start(*lmmseIterations);
pack_start( *lmmseOptions, Gtk::PACK_SHRINK, 4);
- pixelShiftFrame = Gtk::manage (new Gtk::VBox ());
- pixelShiftFrame->set_border_width(0);
+ dualDemosaicOptions = Gtk::manage (new Gtk::VBox ());
+
+ dualDemosaicContrast = Gtk::manage(new Adjuster (M("TP_RAW_DUALDEMOSAICCONTRAST"), 0, 100, 1, 20));
+ dualDemosaicContrast->setAdjusterListener (this);
+
+ if (dualDemosaicContrast->delay < options.adjusterMaxDelay) {
+ dualDemosaicContrast->delay = options.adjusterMaxDelay;
+ }
+
+ dualDemosaicContrast->show();
+ dualDemosaicOptions->pack_start(*dualDemosaicContrast);
+ pack_start( *dualDemosaicOptions, Gtk::PACK_SHRINK, 4);
+
+
+ // -------------------- PixelShift ----------------------
+
+
+ pixelShiftFrame = Gtk::manage(new Gtk::Frame(M("TP_RAW_PIXELSHIFT")));
+
+ Gtk::VBox *pixelShiftMainVBox = Gtk::manage (new Gtk::VBox ());
+ pixelShiftMainVBox->set_border_width(0);
pixelShiftEqualBright = Gtk::manage (new CheckBox(M("TP_RAW_PIXELSHIFTEQUALBRIGHT"), multiImage));
pixelShiftEqualBright->setCheckBoxListener (this);
pixelShiftEqualBright->set_tooltip_text (M("TP_RAW_PIXELSHIFTEQUALBRIGHT_TOOLTIP"));
- pixelShiftFrame->pack_start(*pixelShiftEqualBright);
+ pixelShiftMainVBox->pack_start(*pixelShiftEqualBright);
pixelShiftEqualBrightChannel = Gtk::manage (new CheckBox(M("TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL"), multiImage));
pixelShiftEqualBrightChannel->setCheckBoxListener (this);
pixelShiftEqualBrightChannel->set_tooltip_text (M("TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP"));
- pixelShiftFrame->pack_start(*pixelShiftEqualBrightChannel);
+ pixelShiftMainVBox->pack_start(*pixelShiftEqualBrightChannel);
Gtk::HBox* hb3 = Gtk::manage (new Gtk::HBox ());
hb3->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_RAW_PIXELSHIFTMOTIONMETHOD") + ": ")), Gtk::PACK_SHRINK, 4);
@@ -115,7 +153,7 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
pixelShiftMotionMethod->set_active(toUnderlying(RAWParams::BayerSensor::PSMotionCorrectionMethod::AUTO));
pixelShiftMotionMethod->show();
hb3->pack_start(*pixelShiftMotionMethod);
- pixelShiftFrame->pack_start(*hb3);
+ pixelShiftMainVBox->pack_start(*hb3);
pixelShiftOptions = Gtk::manage (new Gtk::VBox ());
pixelShiftOptions->set_border_width(0);
@@ -123,12 +161,23 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
pixelShiftShowMotion = Gtk::manage (new CheckBox(M("TP_RAW_PIXELSHIFTSHOWMOTION"), multiImage));
pixelShiftShowMotion->setCheckBoxListener (this);
pixelShiftShowMotion->set_tooltip_text (M("TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP"));
- pixelShiftFrame->pack_start(*pixelShiftShowMotion);
+ pixelShiftMainVBox->pack_start(*pixelShiftShowMotion);
pixelShiftShowMotionMaskOnly = Gtk::manage (new CheckBox(M("TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY"), multiImage));
pixelShiftShowMotionMaskOnly->setCheckBoxListener (this);
pixelShiftShowMotionMaskOnly->set_tooltip_text (M("TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY_TOOLTIP"));
- pixelShiftFrame->pack_start(*pixelShiftShowMotionMaskOnly);
+ pixelShiftMainVBox->pack_start(*pixelShiftShowMotionMaskOnly);
+
+
+ Gtk::HBox* hb4 = Gtk::manage (new Gtk::HBox ());
+ hb4->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_RAW_PIXELSHIFTDMETHOD") + ": ")), Gtk::PACK_SHRINK, 4);
+ pixelShiftDemosaicMethod = Gtk::manage (new MyComboBoxText ());
+ for(const auto method_string : procparams::RAWParams::BayerSensor::getPSDemosaicMethodStrings()) {
+ pixelShiftDemosaicMethod->append(M("TP_RAW_" + Glib::ustring(method_string).uppercase()));
+ }
+ pixelShiftDemosaicMethod->set_active(0);
+ hb4->pack_start(*pixelShiftDemosaicMethod);
+ pixelShiftOptions->pack_start(*hb4);
pixelShiftGreen = Gtk::manage (new CheckBox(M("TP_RAW_PIXELSHIFTGREEN"), multiImage));
pixelShiftGreen->setCheckBoxListener (this);
@@ -188,14 +237,8 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
pixelShiftMedian->set_tooltip_text (M("TP_RAW_PIXELSHIFTMEDIAN_TOOLTIP"));
pixelShiftOptions->pack_start(*pixelShiftMedian);
-
- pixelShiftLmmse = Gtk::manage (new CheckBox(M("TP_RAW_PIXELSHIFTLMMSE"), multiImage));
- pixelShiftLmmse->setCheckBoxListener (this);
- pixelShiftLmmse->set_tooltip_text (M("TP_RAW_PIXELSHIFTLMMSE_TOOLTIP"));
- pixelShiftOptions->pack_start(*pixelShiftLmmse);
-
-
- pixelShiftFrame->pack_start(*pixelShiftOptions);
+ pixelShiftMainVBox->pack_start(*pixelShiftOptions);
+ pixelShiftFrame->add(*pixelShiftMainVBox);
pixelShiftOptions->hide();
pack_start( *pixelShiftFrame, Gtk::PACK_SHRINK, 4);
@@ -203,6 +246,8 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
method->connect(method->signal_changed().connect( sigc::mem_fun(*this, &BayerProcess::methodChanged) ));
imageNumber->connect(imageNumber->signal_changed().connect( sigc::mem_fun(*this, &BayerProcess::imageNumberChanged) ));
pixelShiftMotionMethod->connect(pixelShiftMotionMethod->signal_changed().connect( sigc::mem_fun(*this, &BayerProcess::pixelShiftMotionMethodChanged) ));
+ pixelShiftDemosaicMethod->connect(pixelShiftDemosaicMethod->signal_changed().connect( sigc::mem_fun(*this, &BayerProcess::pixelShiftDemosaicMethodChanged) ));
+
}
@@ -211,9 +256,10 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params
disableListener ();
method->block (true);
imageNumber->block (true);
+ pixelShiftDemosaicMethod->block(true);
//allEnhconn.block (true);
- method->set_active(std::numeric_limits::max());
+ border->setValue(pp->raw.bayersensor.border);
imageNumber->set_active(pp->raw.bayersensor.imageNum);
for (size_t i = 0; i < procparams::RAWParams::BayerSensor::getMethodStrings().size(); ++i) {
@@ -223,31 +269,38 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params
break;
}
}
+ for (size_t i = 0; i < procparams::RAWParams::BayerSensor::getPSDemosaicMethodStrings().size(); ++i) {
+ if (pp->raw.bayersensor.pixelShiftDemosaicMethod == procparams::RAWParams::BayerSensor::getPSDemosaicMethodStrings()[i]) {
+ pixelShiftDemosaicMethod->set_active(i);
+ break;
+ }
+ }
- //allEnhance->set_active(pp->raw.bayersensor.all_enhance);
dcbIterations->setValue (pp->raw.bayersensor.dcb_iterations);
dcbEnhance->setValue (pp->raw.bayersensor.dcb_enhance);
pixelShiftShowMotion->setValue (pp->raw.bayersensor.pixelShiftShowMotion);
+ pixelShiftShowMotionMaskOnly->setValue (pp->raw.bayersensor.pixelShiftShowMotionMaskOnly);
if (!batchMode) {
pixelShiftShowMotionMaskOnly->set_sensitive (pp->raw.bayersensor.pixelShiftShowMotion);
}
- pixelShiftShowMotionMaskOnly->setValue (pp->raw.bayersensor.pixelShiftShowMotionMaskOnly);
pixelShiftHoleFill->setValue (pp->raw.bayersensor.pixelShiftHoleFill);
pixelShiftMedian->setValue (pp->raw.bayersensor.pixelShiftMedian);
pixelShiftGreen->setValue (pp->raw.bayersensor.pixelShiftGreen);
pixelShiftBlur->setValue (pp->raw.bayersensor.pixelShiftBlur);
+ pixelShiftSmooth->setValue (pp->raw.bayersensor.pixelShiftSmoothFactor);
if (!batchMode) {
pixelShiftSmooth->set_sensitive (pp->raw.bayersensor.pixelShiftBlur);
}
- pixelShiftSmooth->setValue (pp->raw.bayersensor.pixelShiftSmoothFactor);
- pixelShiftLmmse->setValue (pp->raw.bayersensor.pixelShiftLmmse);
pixelShiftEqualBright->setValue (pp->raw.bayersensor.pixelShiftEqualBright);
- pixelShiftEqualBrightChannel->set_sensitive (pp->raw.bayersensor.pixelShiftEqualBright);
pixelShiftEqualBrightChannel->setValue (pp->raw.bayersensor.pixelShiftEqualBrightChannel);
+ if (!batchMode) {
+ pixelShiftEqualBrightChannel->set_sensitive (pp->raw.bayersensor.pixelShiftEqualBright);
+ }
pixelShiftNonGreenCross->setValue (pp->raw.bayersensor.pixelShiftNonGreenCross);
ccSteps->setValue (pp->raw.bayersensor.ccSteps);
lmmseIterations->setValue (pp->raw.bayersensor.lmmse_iterations);
+ dualDemosaicContrast->setValue (pp->raw.bayersensor.dualDemosaicContrast);
pixelShiftMotionMethod->set_active ((int)pp->raw.bayersensor.pixelShiftMotionCorrectionMethod);
pixelShiftEperIso->setValue (pp->raw.bayersensor.pixelShiftEperIso);
pixelShiftSigma->setValue (pp->raw.bayersensor.pixelShiftSigma);
@@ -256,6 +309,7 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params
}
if(pedited) {
+ border->setEditedState (pedited->raw.bayersensor.border ? Edited : UnEdited);
ccSteps->setEditedState (pedited->raw.bayersensor.ccSteps ? Edited : UnEdited);
dcbIterations->setEditedState ( pedited->raw.bayersensor.dcbIterations ? Edited : UnEdited);
dcbEnhance->setEdited (pedited->raw.bayersensor.dcbEnhance);
@@ -266,51 +320,46 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params
pixelShiftGreen->setEdited (pedited->raw.bayersensor.pixelShiftGreen);
pixelShiftBlur->setEdited (pedited->raw.bayersensor.pixelShiftBlur);
pixelShiftSmooth->setEditedState ( pedited->raw.bayersensor.pixelShiftSmooth ? Edited : UnEdited);
- pixelShiftLmmse->setEdited (pedited->raw.bayersensor.pixelShiftLmmse);
pixelShiftEqualBright->setEdited (pedited->raw.bayersensor.pixelShiftEqualBright);
pixelShiftEqualBrightChannel->setEdited (pedited->raw.bayersensor.pixelShiftEqualBrightChannel);
pixelShiftNonGreenCross->setEdited (pedited->raw.bayersensor.pixelShiftNonGreenCross);
lmmseIterations->setEditedState ( pedited->raw.bayersensor.lmmseIterations ? Edited : UnEdited);
+ dualDemosaicContrast->setEditedState ( pedited->raw.bayersensor.dualDemosaicContrast ? Edited : UnEdited);
pixelShiftEperIso->setEditedState ( pedited->raw.bayersensor.pixelShiftEperIso ? Edited : UnEdited);
pixelShiftSigma->setEditedState ( pedited->raw.bayersensor.pixelShiftSigma ? Edited : UnEdited);
if(!pedited->raw.bayersensor.method) {
- method->set_active(std::numeric_limits::max()); // No name
+ method->set_active_text(M("GENERAL_UNCHANGED"));
}
+
if(!pedited->raw.bayersensor.imageNum) {
imageNumber->set_active_text(M("GENERAL_UNCHANGED"));
}
+
if(!pedited->raw.bayersensor.pixelShiftMotionCorrectionMethod) {
pixelShiftMotionMethod->set_active_text(M("GENERAL_UNCHANGED"));
}
+
+ if(!pedited->raw.bayersensor.pixelShiftDemosaicMethod) {
+ pixelShiftDemosaicMethod->set_active_text(M("GENERAL_UNCHANGED"));
+ }
+
}
if (!batchMode) {
- if (pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::DCB) ||
- method->get_active_row_number() == std::numeric_limits::max()) {
- dcbOptions->show();
- } else {
- dcbOptions->hide();
- }
- if (pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::LMMSE) ||
- method->get_active_row_number() == std::numeric_limits::max()) {
- lmmseOptions->show();
- } else {
- lmmseOptions->hide();
- }
- if (pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::PIXELSHIFT) ||
- method->get_active_row_number() == std::numeric_limits::max()) {
- if(pp->raw.bayersensor.pixelShiftMotionCorrectionMethod == RAWParams::BayerSensor::PSMotionCorrectionMethod::CUSTOM) {
- pixelShiftOptions->show();
- } else {
- pixelShiftOptions->hide();
- }
+ dcbOptions->set_visible(pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::DCB) || pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::DCBVNG4));
+ lmmseOptions->set_visible(pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::LMMSE));
+ dualDemosaicOptions->set_visible(pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::AMAZEVNG4)
+ || pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::DCBVNG4)
+ || pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::RCDVNG4));
+ if (pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::PIXELSHIFT)) {
+ pixelShiftOptions->set_visible(pp->raw.bayersensor.pixelShiftMotionCorrectionMethod == RAWParams::BayerSensor::PSMotionCorrectionMethod::CUSTOM);
pixelShiftFrame->show();
} else {
pixelShiftFrame->hide();
}
- // Flase color suppression is applied to all demozaicing method, so don't hide anything
+ // False color suppression is applied to all demozaicing method, so don't hide anything
/*if (pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::EAHD) ||
pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::HPHD) ||
pp->raw.bayersensor.method == procparams::RAWParams::BayerSensor::getMethodString(procparams::RAWParams::BayerSensor::Method::VNG4))
@@ -323,6 +372,7 @@ void BayerProcess::read(const rtengine::procparams::ProcParams* pp, const Params
method->block (false);
imageNumber->block (false);
+ pixelShiftDemosaicMethod->block(false);
//allEnhconn.block (false);
enableListener ();
@@ -333,8 +383,9 @@ void BayerProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pe
pp->raw.bayersensor.ccSteps = ccSteps->getIntValue();
pp->raw.bayersensor.dcb_iterations = dcbIterations->getIntValue();
pp->raw.bayersensor.dcb_enhance = dcbEnhance->getLastActive ();
- //pp->raw.bayersensor.all_enhance = allEnhance->getLastActive ();
+ pp->raw.bayersensor.border = border->getIntValue();
pp->raw.bayersensor.lmmse_iterations = lmmseIterations->getIntValue();
+ pp->raw.bayersensor.dualDemosaicContrast = dualDemosaicContrast->getValue();
pp->raw.bayersensor.pixelShiftMotionCorrectionMethod = (RAWParams::BayerSensor::PSMotionCorrectionMethod)pixelShiftMotionMethod->get_active_row_number();
pp->raw.bayersensor.pixelShiftEperIso = pixelShiftEperIso->getValue();
pp->raw.bayersensor.pixelShiftSigma = pixelShiftSigma->getValue();
@@ -345,31 +396,38 @@ void BayerProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pe
pp->raw.bayersensor.pixelShiftGreen = pixelShiftGreen->getLastActive ();
pp->raw.bayersensor.pixelShiftBlur = pixelShiftBlur->getLastActive ();
pp->raw.bayersensor.pixelShiftSmoothFactor = pixelShiftSmooth->getValue();
- pp->raw.bayersensor.pixelShiftLmmse = pixelShiftLmmse->getLastActive ();
pp->raw.bayersensor.pixelShiftEqualBright = pixelShiftEqualBright->getLastActive ();
pp->raw.bayersensor.pixelShiftEqualBrightChannel = pixelShiftEqualBrightChannel->getLastActive ();
pp->raw.bayersensor.pixelShiftNonGreenCross = pixelShiftNonGreenCross->getLastActive ();
int currentRow = method->get_active_row_number();
- if( currentRow >= 0 && currentRow < std::numeric_limits::max()) {
+ if( currentRow >= 0 && method->get_active_text() != M("GENERAL_UNCHANGED")) {
pp->raw.bayersensor.method = procparams::RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method(currentRow));
}
currentRow = imageNumber->get_active_row_number();
- if (currentRow < 4) {
+ if (currentRow >= 0 && imageNumber->get_active_text() != M("GENERAL_UNCHANGED")) {
pp->raw.bayersensor.imageNum = currentRow;
}
+ currentRow = pixelShiftDemosaicMethod->get_active_row_number();
+ if( currentRow >= 0 && pixelShiftDemosaicMethod->get_active_text() != M("GENERAL_UNCHANGED")) {
+ pp->raw.bayersensor.pixelShiftDemosaicMethod = procparams::RAWParams::BayerSensor::getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod(currentRow));
+ }
+
if (pedited) {
+ pedited->raw.bayersensor.border = border->getEditedState ();
pedited->raw.bayersensor.ccSteps = ccSteps->getEditedState ();
- pedited->raw.bayersensor.method = method->get_active_row_number() != std::numeric_limits::max();
+ pedited->raw.bayersensor.method = method->get_active_text() != M("GENERAL_UNCHANGED");
pedited->raw.bayersensor.imageNum = imageNumber->get_active_text() != M("GENERAL_UNCHANGED");
pedited->raw.bayersensor.dcbIterations = dcbIterations->getEditedState ();
pedited->raw.bayersensor.dcbEnhance = !dcbEnhance->get_inconsistent();
//pedited->raw.bayersensor.allEnhance = !allEnhance->get_inconsistent();
pedited->raw.bayersensor.lmmseIterations = lmmseIterations->getEditedState ();
+ pedited->raw.bayersensor.dualDemosaicContrast = dualDemosaicContrast->getEditedState ();
pedited->raw.bayersensor.pixelShiftMotionCorrectionMethod = pixelShiftMotionMethod->get_active_text() != M("GENERAL_UNCHANGED");
+ pedited->raw.bayersensor.pixelShiftDemosaicMethod = pixelShiftDemosaicMethod->get_active_text() != M("GENERAL_UNCHANGED");
pedited->raw.bayersensor.pixelShiftEperIso = pixelShiftEperIso->getEditedState ();
pedited->raw.bayersensor.pixelShiftSigma = pixelShiftSigma->getEditedState ();
pedited->raw.bayersensor.pixelShiftShowMotion = !pixelShiftShowMotion->get_inconsistent();
@@ -379,25 +437,52 @@ void BayerProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pe
pedited->raw.bayersensor.pixelShiftGreen = !pixelShiftGreen->get_inconsistent();
pedited->raw.bayersensor.pixelShiftBlur = !pixelShiftBlur->get_inconsistent();
pedited->raw.bayersensor.pixelShiftSmooth = pixelShiftSmooth->getEditedState();
- pedited->raw.bayersensor.pixelShiftLmmse = !pixelShiftLmmse->get_inconsistent();
pedited->raw.bayersensor.pixelShiftEqualBright = !pixelShiftEqualBright->get_inconsistent();
pedited->raw.bayersensor.pixelShiftEqualBrightChannel = !pixelShiftEqualBrightChannel->get_inconsistent();
pedited->raw.bayersensor.pixelShiftNonGreenCross = !pixelShiftNonGreenCross->get_inconsistent();
}
}
+void BayerProcess::setAdjusterBehavior (bool falsecoloradd, bool iteradd, bool dualdemozecontrastadd, bool pssigmaadd, bool pssmoothadd, bool pseperisoadd)
+{
+ border->setAddMode(false);
+ ccSteps->setAddMode(falsecoloradd);
+ dcbIterations->setAddMode(iteradd);
+ lmmseIterations->setAddMode(iteradd);
+ pixelShiftSmooth->setAddMode(pssmoothadd);
+ pixelShiftEperIso->setAddMode(pseperisoadd);
+ pixelShiftSigma->setAddMode(pssigmaadd);
+ dualDemosaicContrast->setAddMode(dualdemozecontrastadd);
+}
+
+void BayerProcess::trimValues (rtengine::procparams::ProcParams* pp)
+{
+ border->trimValue(pp->raw.bayersensor.border);
+ ccSteps->trimValue(pp->raw.bayersensor.ccSteps);
+ dcbIterations->trimValue(pp->raw.bayersensor.dcb_iterations);
+ lmmseIterations->trimValue(pp->raw.bayersensor.lmmse_iterations);
+ pixelShiftSmooth->trimValue(pp->raw.bayersensor.pixelShiftSmoothFactor);
+ pixelShiftEperIso->trimValue(pp->raw.bayersensor.pixelShiftEperIso);
+ pixelShiftSigma->trimValue(pp->raw.bayersensor.pixelShiftSigma);
+ dualDemosaicContrast->trimValue(pp->raw.bayersensor.dualDemosaicContrast);
+}
+
void BayerProcess::setBatchMode(bool batchMode)
{
method->append (M("GENERAL_UNCHANGED"));
- method->set_active(std::numeric_limits::max()); // No name
+ method->set_active_text(M("GENERAL_UNCHANGED")); // No name
pixelShiftMotionMethod->append (M("GENERAL_UNCHANGED"));
pixelShiftMotionMethod->set_active_text (M("GENERAL_UNCHANGED"));
+ pixelShiftDemosaicMethod->append (M("GENERAL_UNCHANGED"));
+ pixelShiftDemosaicMethod->set_active_text(M("GENERAL_UNCHANGED")); // No name
imageNumber->append (M("GENERAL_UNCHANGED"));
imageNumber->set_active_text (M("GENERAL_UNCHANGED"));
ToolPanel::setBatchMode (batchMode);
+ border->showEditedCB ();
ccSteps->showEditedCB ();
dcbIterations->showEditedCB ();
lmmseIterations->showEditedCB ();
+ dualDemosaicContrast->showEditedCB ();
pixelShiftEperIso->showEditedCB ();
pixelShiftSigma->showEditedCB ();
}
@@ -406,21 +491,27 @@ void BayerProcess::setDefaults(const rtengine::procparams::ProcParams* defParams
{
dcbIterations->setDefault( defParams->raw.bayersensor.dcb_iterations);
lmmseIterations->setDefault( defParams->raw.bayersensor.lmmse_iterations);
+ dualDemosaicContrast->setDefault( defParams->raw.bayersensor.dualDemosaicContrast);
pixelShiftEperIso->setDefault( defParams->raw.bayersensor.pixelShiftEperIso);
pixelShiftSigma->setDefault( defParams->raw.bayersensor.pixelShiftSigma);
+ border->setDefault (defParams->raw.bayersensor.border);
ccSteps->setDefault (defParams->raw.bayersensor.ccSteps);
if (pedited) {
dcbIterations->setDefaultEditedState( pedited->raw.bayersensor.dcbIterations ? Edited : UnEdited);
lmmseIterations->setDefaultEditedState( pedited->raw.bayersensor.lmmseIterations ? Edited : UnEdited);
+ dualDemosaicContrast->setDefaultEditedState( pedited->raw.bayersensor.dualDemosaicContrast ? Edited : UnEdited);
pixelShiftEperIso->setDefaultEditedState( pedited->raw.bayersensor.pixelShiftEperIso ? Edited : UnEdited);
pixelShiftSigma->setDefaultEditedState( pedited->raw.bayersensor.pixelShiftSigma ? Edited : UnEdited);
+ border->setDefaultEditedState(pedited->raw.bayersensor.border ? Edited : UnEdited);
ccSteps->setDefaultEditedState(pedited->raw.bayersensor.ccSteps ? Edited : UnEdited);
} else {
dcbIterations->setDefaultEditedState( Irrelevant );
lmmseIterations->setDefaultEditedState( Irrelevant );
+ dualDemosaicContrast->setDefaultEditedState( Irrelevant );
pixelShiftEperIso->setDefaultEditedState( Irrelevant );
pixelShiftSigma->setDefaultEditedState( Irrelevant );
+ border->setDefaultEditedState(Irrelevant);
ccSteps->setDefaultEditedState(Irrelevant );
}
}
@@ -434,35 +525,45 @@ void BayerProcess::adjusterChanged (Adjuster* a, double newval)
listener->panelChanged (EvDemosaicFalseColorIter, a->getTextValue() );
} else if (a == lmmseIterations) {
listener->panelChanged (EvDemosaicLMMSEIter, a->getTextValue() );
+ } else if (a == dualDemosaicContrast) {
+ listener->panelChanged (EvDemosaicContrast, a->getTextValue() );
} else if (a == pixelShiftEperIso) {
listener->panelChanged (EvPixelShiftEperIso, a->getTextValue() );
} else if (a == pixelShiftSigma) {
listener->panelChanged (EvPixelShiftSigma, a->getTextValue() );
} else if (a == pixelShiftSmooth) {
listener->panelChanged (EvPixelShiftSmooth, a->getTextValue() );
+ } else if (a == border) {
+ listener->panelChanged (EvDemosaicBorder, a->getTextValue() );
}
}
}
void BayerProcess::methodChanged ()
{
- const int curSelection = method->get_active_row_number();
- const RAWParams::BayerSensor::Method method = RAWParams::BayerSensor::Method(curSelection);
+ const int currentSelection = method->get_active_row_number();
+ const RAWParams::BayerSensor::Method currentMethod = RAWParams::BayerSensor::Method(currentSelection);
if (!batchMode) {
- if (method == procparams::RAWParams::BayerSensor::Method::DCB) {
+ if (currentMethod == procparams::RAWParams::BayerSensor::Method::DCB || currentMethod == procparams::RAWParams::BayerSensor::Method::DCBVNG4) {
dcbOptions->show();
} else {
dcbOptions->hide();
}
- if (method == procparams::RAWParams::BayerSensor::Method::LMMSE) {
+ if (currentMethod == procparams::RAWParams::BayerSensor::Method::LMMSE) {
lmmseOptions->show();
} else {
lmmseOptions->hide();
}
- if (method == procparams::RAWParams::BayerSensor::Method::PIXELSHIFT) {
+ if (currentMethod == procparams::RAWParams::BayerSensor::Method::AMAZEVNG4 || currentMethod == procparams::RAWParams::BayerSensor::Method::DCBVNG4 || currentMethod == procparams::RAWParams::BayerSensor::Method::RCDVNG4) {
+ dualDemosaicOptions->show();
+ } else {
+ dualDemosaicOptions->hide();
+ }
+
+ if (currentMethod == procparams::RAWParams::BayerSensor::Method::PIXELSHIFT) {
if(pixelShiftMotionMethod->get_active_row_number() == 2) {
pixelShiftOptions->show();
} else {
@@ -474,21 +575,22 @@ void BayerProcess::methodChanged ()
}
}
- Glib::ustring methodName = "";
- bool ppreq = false;
-
- if (curSelection >= 0 && curSelection < std::numeric_limits::max()) {
- methodName = procparams::RAWParams::BayerSensor::getMethodString(method);
-
- if (method == procparams::RAWParams::BayerSensor::Method::MONO || RAWParams::BayerSensor::Method(oldMethod) == procparams::RAWParams::BayerSensor::Method::MONO) {
- ppreq = true;
- }
+ if (listener && method->get_active_row_number() >= 0) {
+ listener->panelChanged (
+ currentMethod == procparams::RAWParams::BayerSensor::Method::MONO || RAWParams::BayerSensor::Method(oldMethod) == procparams::RAWParams::BayerSensor::Method::MONO
+ ? EvDemosaicMethodPreProc
+ : EvDemosaicMethod, method->get_active_text());
}
- oldMethod = curSelection;
+ oldMethod = currentSelection;
- if (listener) {
- listener->panelChanged (ppreq ? EvDemosaicMethodPreProc : EvDemosaicMethod, methodName);
+}
+
+void BayerProcess::pixelShiftDemosaicMethodChanged ()
+{
+
+ if (listener && pixelShiftDemosaicMethod->get_active_row_number() >= 0) {
+ listener->panelChanged (EvDemosaicPixelshiftDemosaicMethod, pixelShiftDemosaicMethod->get_active_text());
}
}
@@ -536,10 +638,6 @@ void BayerProcess::checkBoxToggled (CheckBox* c, CheckValue newval)
if (listener) {
listener->panelChanged (EvPixelShiftBlur, pixelShiftBlur->getValueAsStr ());
}
- } else if (c == pixelShiftLmmse) {
- if (listener) {
- listener->panelChanged (EvPixelShiftLmmse, pixelShiftLmmse->getValueAsStr ());
- }
} else if (c == pixelShiftEqualBright) {
if (!batchMode) {
pixelShiftEqualBrightChannel->set_sensitive(newval != CheckValue::off);
@@ -569,13 +667,13 @@ void BayerProcess::pixelShiftMotionMethodChanged ()
pixelShiftOptions->show();
pixelShiftShowMotion->show();
pixelShiftShowMotionMaskOnly->show();
- } else {
+ } else if(pixelShiftMotionMethod->get_active_row_number() > 0) {
pixelShiftOptions->hide();
pixelShiftShowMotion->show();
pixelShiftShowMotionMaskOnly->show();
}
}
- if (listener) {
+ if (listener && pixelShiftMotionMethod->get_active_row_number() >= 0) {
listener->panelChanged (EvPixelShiftMotionMethod, pixelShiftMotionMethod->get_active_text());
}
}
@@ -632,3 +730,4 @@ void BayerProcess::FrameCountChanged(int n, int frameNum)
// }
// imageNumber->block (false);
}
+
diff --git a/rtgui/bayerprocess.h b/rtgui/bayerprocess.h
index 48b445d90..cfd063ca9 100644
--- a/rtgui/bayerprocess.h
+++ b/rtgui/bayerprocess.h
@@ -31,7 +31,9 @@ class BayerProcess : public ToolParamBlock, public AdjusterListener, public Chec
protected:
MyComboBoxText* method;
+ Gtk::HBox* borderbox;
Gtk::HBox *imageNumberBox;
+ Adjuster* border;
MyComboBoxText* imageNumber;
Adjuster* ccSteps;
Gtk::VBox *dcbOptions;
@@ -39,9 +41,10 @@ protected:
CheckBox* dcbEnhance;
Gtk::VBox *lmmseOptions;
Adjuster* lmmseIterations;
- Gtk::VBox *pixelShiftFrame;
+ Gtk::Frame *pixelShiftFrame;
Gtk::VBox *pixelShiftOptions;
MyComboBoxText* pixelShiftMotionMethod;
+ MyComboBoxText* pixelShiftDemosaicMethod;
CheckBox* pixelShiftShowMotion;
CheckBox* pixelShiftShowMotionMaskOnly;
CheckBox* pixelShiftNonGreenCross;
@@ -49,29 +52,37 @@ protected:
CheckBox* pixelShiftBlur;
CheckBox* pixelShiftHoleFill;
CheckBox* pixelShiftMedian;
- CheckBox* pixelShiftLmmse;
CheckBox* pixelShiftEqualBright;
CheckBox* pixelShiftEqualBrightChannel;
Adjuster* pixelShiftSmooth;
Adjuster* pixelShiftEperIso;
Adjuster* pixelShiftSigma;
+ Gtk::VBox *dualDemosaicOptions;
+ Adjuster* dualDemosaicContrast;
int oldMethod;
IdleRegister idle_register;
+
+ rtengine::ProcEvent EvDemosaicBorder;
+ rtengine::ProcEvent EvDemosaicContrast;
+ rtengine::ProcEvent EvDemosaicPixelshiftDemosaicMethod;
public:
BayerProcess ();
- 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);
+ void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
+ 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 methodChanged ();
- void imageNumberChanged ();
- void adjusterChanged (Adjuster* a, double newval);
- void checkBoxToggled (CheckBox* c, CheckValue newval);
+ void methodChanged();
+ void imageNumberChanged();
+ void adjusterChanged(Adjuster* a, double newval);
+ void checkBoxToggled(CheckBox* c, CheckValue newval);
void pixelShiftMotionMethodChanged();
+ void pixelShiftDemosaicMethodChanged();
void FrameCountChanged(int n, int frameNum);
};
diff --git a/rtgui/blackwhite.cc b/rtgui/blackwhite.cc
index 38cfca43d..c7dfd0020 100644
--- a/rtgui/blackwhite.cc
+++ b/rtgui/blackwhite.cc
@@ -128,7 +128,7 @@ BlackWhite::BlackWhite (): FoldableToolPanel(this, "blackwhite", M("TP_BWMIX_LAB
setting->append (M("TP_BWMIX_SET_ROYGCBPMREL"));
setting->append (M("TP_BWMIX_SET_INFRARED"));
- setting->set_active (0);
+ setting->set_active (11);
settingHBox->pack_start (*setting);
mixerVBox->pack_start (*settingHBox);
settingconn = setting->signal_changed().connect ( sigc::mem_fun(*this, &BlackWhite::settingChanged) );
@@ -388,9 +388,21 @@ bool BlackWhite::BWComputed_ ()
disableListener ();
mixerRed->setValue (nextredbw);
+ adjusterChanged(mixerRed, mixerRed->getValue());
mixerGreen->setValue (nextgreenbw);
+ adjusterChanged(mixerGreen, mixerGreen->getValue());
mixerBlue->setValue (nextbluebw);
+ adjusterChanged(mixerBlue, mixerBlue->getValue());
+ autoconn.block (true);
+ autoch->set_active (true);
+ autoconn.block (false);
+ lastAuto = false;
+ nextcount++;
enableListener ();
+ if (listener && nextcount <= 1 ) {
+ // activated only 1 time, but perhaps in some cases if we want that all is update pp3, auto, sliders : nextcount <= 2 but it cost time and result is identical
+ listener->panelChanged (EvAutoch, M("GENERAL_ENABLED"));
+ }
updateRGBLabel();
@@ -789,6 +801,7 @@ void BlackWhite::filterChanged ()
if (listener && (multiImage || getEnabled())) {
listener->panelChanged (EvBWfilter, filter->get_active_text ());
+ listener->panelChanged (EvAutoch, M("GENERAL_ENABLED"));
}
}
@@ -884,6 +897,7 @@ void BlackWhite::neutral_pressed ()
updateRGBLabel();
+ nextcount = 0;
if(listener) {
listener->panelChanged (EvNeutralBW, M("GENERAL_RESET"));
}
@@ -1089,6 +1103,7 @@ void BlackWhite::adjusterChanged (Adjuster* a, double newval)
autoch->set_inconsistent (false);
}
+ nextcount = 0;
autoconn.block(true);
autoch->set_active (false);
autoconn.block(false);
diff --git a/rtgui/blackwhite.h b/rtgui/blackwhite.h
index 5f0ffec44..07ad6a160 100644
--- a/rtgui/blackwhite.h
+++ b/rtgui/blackwhite.h
@@ -138,6 +138,7 @@ private:
double nextredbw;
double nextgreenbw;
double nextbluebw;
+ int nextcount = 0;
IdleRegister idle_register;
};
diff --git a/rtgui/chmixer.cc b/rtgui/chmixer.cc
index b063736e2..c82c5c813 100644
--- a/rtgui/chmixer.cc
+++ b/rtgui/chmixer.cc
@@ -39,9 +39,10 @@ ChMixer::ChMixer (): FoldableToolPanel(this, "chmixer", M("TP_CHMIXER_LABEL"), f
rlabel->set_markup (Glib::ustring("\t") + M("TP_CHMIXER_RED") + Glib::ustring(":"));
rlabel->set_alignment(Gtk::ALIGN_START);
- red[0] = Gtk::manage (new Adjuster ("", -200, 200, 1, 100, imgIcon[0]));
- red[1] = Gtk::manage (new Adjuster ("", -200, 200, 1, 0, imgIcon[1]));
- red[2] = Gtk::manage (new Adjuster ("", -200, 200, 1, 0, imgIcon[2]));
+ constexpr double RANGE = 500.0;
+ red[0] = Gtk::manage (new Adjuster ("", -RANGE, RANGE, 0.1, 100, imgIcon[0]));
+ red[1] = Gtk::manage (new Adjuster ("", -RANGE, RANGE, 0.1, 0, imgIcon[1]));
+ red[2] = Gtk::manage (new Adjuster ("", -RANGE, RANGE, 0.1, 0, imgIcon[2]));
Gtk::HSeparator* rsep = Gtk::manage (new Gtk::HSeparator ());
@@ -58,9 +59,9 @@ ChMixer::ChMixer (): FoldableToolPanel(this, "chmixer", M("TP_CHMIXER_LABEL"), f
glabel->set_alignment(Gtk::ALIGN_START);
- green[0] = Gtk::manage (new Adjuster ("", -200, 200, 1, 0, imgIcon[3]));
- green[1] = Gtk::manage (new Adjuster ("", -200, 200, 1, 100, imgIcon[4]));
- green[2] = Gtk::manage (new Adjuster ("", -200, 200, 1, 0, imgIcon[5]));
+ green[0] = Gtk::manage (new Adjuster ("", -RANGE, RANGE, 0.1, 0, imgIcon[3]));
+ green[1] = Gtk::manage (new Adjuster ("", -RANGE, RANGE, 0.1, 100, imgIcon[4]));
+ green[2] = Gtk::manage (new Adjuster ("", -RANGE, RANGE, 0.1, 0, imgIcon[5]));
Gtk::HSeparator* gsep = Gtk::manage (new Gtk::HSeparator ());
@@ -75,9 +76,9 @@ ChMixer::ChMixer (): FoldableToolPanel(this, "chmixer", M("TP_CHMIXER_LABEL"), f
Gtk::Label* blabel = Gtk::manage (new Gtk::Label ());
blabel->set_markup (Glib::ustring("\t") + M("TP_CHMIXER_BLUE") + Glib::ustring(":"));
blabel->set_alignment(Gtk::ALIGN_START);
- blue[0] = Gtk::manage (new Adjuster ("", -200, 200, 1, 0, imgIcon[6]));
- blue[1] = Gtk::manage (new Adjuster ("", -200, 200, 1, 0, imgIcon[7]));
- blue[2] = Gtk::manage (new Adjuster ("", -200, 200, 1, 100, imgIcon[8]));
+ blue[0] = Gtk::manage (new Adjuster ("", -RANGE, RANGE, 0.1, 0, imgIcon[6]));
+ blue[1] = Gtk::manage (new Adjuster ("", -RANGE, RANGE, 0.1, 0, imgIcon[7]));
+ blue[2] = Gtk::manage (new Adjuster ("", -RANGE, RANGE, 0.1, 100, imgIcon[8]));
for (int i = 0; i < 3; i++) {
red[i]->setAdjusterListener (this);
@@ -111,9 +112,9 @@ void ChMixer::read (const ProcParams* pp, const ParamsEdited* pedited)
}
for (int i = 0; i < 3; i++) {
- red[i]->setValue (pp->chmixer.red[i]);
- green[i]->setValue (pp->chmixer.green[i]);
- blue[i]->setValue (pp->chmixer.blue[i]);
+ red[i]->setValue (pp->chmixer.red[i] / 10.0);
+ green[i]->setValue (pp->chmixer.green[i] / 10.0);
+ blue[i]->setValue (pp->chmixer.blue[i] / 10.0);
}
enableListener ();
@@ -123,9 +124,9 @@ void ChMixer::write (ProcParams* pp, ParamsEdited* pedited)
{
for (int i = 0; i < 3; i++) {
- pp->chmixer.red[i] = (int) red[i]->getValue ();
- pp->chmixer.green[i] = (int) green[i]->getValue ();
- pp->chmixer.blue[i] = (int) blue[i]->getValue ();
+ pp->chmixer.red[i] = red[i]->getValue() * 10;
+ pp->chmixer.green[i] = green[i]->getValue() * 10;
+ pp->chmixer.blue[i] = blue[i]->getValue() * 10;
}
pp->chmixer.enabled = getEnabled();
@@ -143,9 +144,9 @@ void ChMixer::setDefaults (const ProcParams* defParams, const ParamsEdited* pedi
{
for (int i = 0; i < 3; i++) {
- red[i]->setDefault (defParams->chmixer.red[i]);
- green[i]->setDefault (defParams->chmixer.green[i]);
- blue[i]->setDefault (defParams->chmixer.blue[i]);
+ red[i]->setDefault (defParams->chmixer.red[i] / 10.f);
+ green[i]->setDefault (defParams->chmixer.green[i] / 10.f);
+ blue[i]->setDefault (defParams->chmixer.blue[i] / 10.f);
}
if (pedited)
@@ -167,9 +168,9 @@ void ChMixer::adjusterChanged (Adjuster* a, double newval)
if (listener && getEnabled()) {
Glib::ustring descr = Glib::ustring::compose ("R=%1,%2,%3\nG=%4,%5,%6\nB=%7,%8,%9",
- (int)red[0]->getValue(), (int)red[1]->getValue(), (int)red[2]->getValue(),
- (int)green[0]->getValue(), (int)green[1]->getValue(), (int)green[2]->getValue(),
- (int)blue[0]->getValue(), (int)blue[1]->getValue(), (int)blue[2]->getValue());
+ red[0]->getValue(), red[1]->getValue(), red[2]->getValue(),
+ green[0]->getValue(), green[1]->getValue(), green[2]->getValue(),
+ blue[0]->getValue(), blue[1]->getValue(), blue[2]->getValue());
listener->panelChanged (EvChMixer, descr);
}
}
@@ -215,8 +216,14 @@ void ChMixer::trimValues (rtengine::procparams::ProcParams* pp)
{
for (int i = 0; i < 3; i++) {
- red[i]->trimValue(pp->chmixer.red[i]);
- green[i]->trimValue(pp->chmixer.green[i]);
- blue[i]->trimValue(pp->chmixer.blue[i]);
+ double r = pp->chmixer.red[i] / 10.0;
+ double g = pp->chmixer.green[i] / 10.0;
+ double b = pp->chmixer.blue[i] / 10.0;
+ red[i]->trimValue(r);
+ green[i]->trimValue(g);
+ blue[i]->trimValue(b);
+ pp->chmixer.red[i] = r * 10;
+ pp->chmixer.green[i] = g * 10;
+ pp->chmixer.blue[i] = b * 10;
}
}
diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc
index 4cfac68be..d0bee943d 100644
--- a/rtgui/dirbrowser.cc
+++ b/rtgui/dirbrowser.cc
@@ -48,14 +48,26 @@ std::vector listSubDirs (const Glib::RefPtr& dir, bool
auto enumerator = dir->enumerate_children ("standard::name,standard::type,standard::is-hidden");
- while (auto file = enumerator->next_file ()) {
- if (file->get_file_type () != Gio::FILE_TYPE_DIRECTORY) {
- continue;
+ while (true) {
+ try {
+ auto file = enumerator->next_file ();
+ if (!file) {
+ break;
+ }
+ if (file->get_file_type () != Gio::FILE_TYPE_DIRECTORY) {
+ continue;
+ }
+ if (!addHidden && file->is_hidden ()) {
+ continue;
+ }
+ subDirs.push_back (file->get_name ());
+ } catch (const Glib::Exception& exception) {
+
+ if (options.rtSettings.verbose) {
+ std::cerr << exception.what () << std::endl;
+ }
+
}
- if (!addHidden && file->is_hidden ()) {
- continue;
- }
- subDirs.push_back (file->get_name ());
}
} catch (const Glib::Exception& exception) {
diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc
index 9824915dd..0406cd5e2 100644
--- a/rtgui/editorpanel.cc
+++ b/rtgui/editorpanel.cc
@@ -1023,6 +1023,7 @@ void EditorPanel::open (Thumbnail* tmb, rtengine::InitialImage* isrc)
ipc->setPreviewScale (10); // Important
tpc->initImage (ipc, tmb->getType() == FT_Raw);
ipc->setHistogramListener (this);
+ iareapanel->imageArea->indClippedPanel->silentlyDisableSharpMask();
// iarea->fitZoom (); // tell to the editorPanel that the next image has to be fitted to the screen
iareapanel->imageArea->setPreviewHandler (previewHandler);
diff --git a/rtgui/exportpanel.cc b/rtgui/exportpanel.cc
index 12a9d721a..3a74d3ca3 100644
--- a/rtgui/exportpanel.cc
+++ b/rtgui/exportpanel.cc
@@ -60,7 +60,7 @@ ExportPanel::ExportPanel () : listener (nullptr)
// ---------------------- Bayer sensor frame -----------------------
- Gtk::Frame *bayerFrame = Gtk::manage ( new Gtk::Frame (M ("TP_RAW_SENSOR_BAYER")));
+ Gtk::Frame *bayerFrame = Gtk::manage ( new Gtk::Frame (M ("TP_RAW_SENSOR_BAYER_LABEL")));
Gtk::VBox* bayerFrameVBox = Gtk::manage (new Gtk::VBox ());
Gtk::HBox* hb_raw_bayer_method = Gtk::manage (new Gtk::HBox ());
@@ -83,7 +83,7 @@ ExportPanel::ExportPanel () : listener (nullptr)
// ---------------------- Bayer sensor frame -----------------------
- Gtk::Frame *xtransFrame = Gtk::manage ( new Gtk::Frame (M ("TP_RAW_SENSOR_XTRANS")));
+ Gtk::Frame *xtransFrame = Gtk::manage ( new Gtk::Frame (M ("TP_RAW_SENSOR_XTRANS_LABEL")));
Gtk::VBox* xtransFrameVBox = Gtk::manage (new Gtk::VBox ());
Gtk::HBox* hb_raw_xtrans_method = Gtk::manage (new Gtk::HBox ());
@@ -130,9 +130,11 @@ ExportPanel::ExportPanel () : listener (nullptr)
bayerFrameVBox->pack_start (*bypass_raw_bayer_linenoise, Gtk::PACK_SHRINK, 4);
bayerFrameVBox->pack_start (*bypass_raw_bayer_greenthresh, Gtk::PACK_SHRINK, 4);
bayerFrame->add (*bayerFrameVBox);
+ bypass_box->pack_start(*bayerFrame, Gtk::PACK_SHRINK, 4);
xtransFrameVBox->pack_start (*hb_raw_xtrans_method, Gtk::PACK_SHRINK, 4);
xtransFrame->add (*xtransFrameVBox);
+ bypass_box->pack_start(*xtransFrame, Gtk::PACK_SHRINK, 4);
bypass_box->pack_start (*bypass_raw_ccSteps, Gtk::PACK_SHRINK, 4);
bypass_box->pack_start (*bypass_raw_ca, Gtk::PACK_SHRINK, 4);
@@ -271,14 +273,14 @@ void ExportPanel::SaveSettingsAsDefault()
//saving Bayer demosaic_method
int currentRow = raw_bayer_method->get_active_row_number();
- if (currentRow >= 0 && currentRow < std::numeric_limits::max()) {
+ if (currentRow >= 0) {
FE_OPT_STORE_ (options.fastexport_raw_bayer_method, procparams::RAWParams::BayerSensor::getMethodStrings()[currentRow]);
}
//saving X-Trans demosaic_method
currentRow = raw_xtrans_method->get_active_row_number();
- if (currentRow >= 0 && currentRow < std::numeric_limits::max()) {
+ if (currentRow >= 0) {
FE_OPT_STORE_ (options.fastexport_raw_xtrans_method, procparams::RAWParams::XTransSensor::getMethodStrings()[currentRow]);
}
@@ -332,7 +334,7 @@ void ExportPanel::LoadDefaultSettings()
bypass_raw_ff->set_active (options.fastexport_bypass_raw_ff );
// Bayer demosaic method
- raw_bayer_method->set_active(std::numeric_limits::max());
+ raw_bayer_method->set_active(0);
for (size_t i = 0; i < RAWParams::BayerSensor::getMethodStrings().size(); ++i)
if (options.fastexport_raw_bayer_method == procparams::RAWParams::BayerSensor::getMethodStrings()[i]) {
@@ -341,7 +343,7 @@ void ExportPanel::LoadDefaultSettings()
}
// X-Trans demosaic method
- raw_xtrans_method->set_active(std::numeric_limits::max());
+ raw_xtrans_method->set_active(0);
for (size_t i = 0; i < procparams::RAWParams::XTransSensor::getMethodStrings().size(); ++i)
if (options.fastexport_raw_xtrans_method == procparams::RAWParams::XTransSensor::getMethodStrings()[i]) {
diff --git a/rtgui/filebrowserentry.cc b/rtgui/filebrowserentry.cc
index 4ef8c3fd0..974b7a36f 100644
--- a/rtgui/filebrowserentry.cc
+++ b/rtgui/filebrowserentry.cc
@@ -211,19 +211,8 @@ void FileBrowserEntry::procParamsChanged (Thumbnail* thm, int whoChangedIt)
void FileBrowserEntry::updateImage (rtengine::IImage8* img, double scale, rtengine::procparams::CropParams cropParams)
{
-
- {
- GThreadLock lock;
-
- if ( feih == nullptr ||
- feih->destroyed ) {
- img->free();
- return;
- }
-
- redrawRequests++;
- feih->pending++;
- }
+ redrawRequests++;
+ feih->pending++;
struct tiupdate {
FileBrowserEntryIdleHelper* feih;
diff --git a/rtgui/filebrowserentry.h b/rtgui/filebrowserentry.h
index 423128ddb..ada726dfc 100644
--- a/rtgui/filebrowserentry.h
+++ b/rtgui/filebrowserentry.h
@@ -19,23 +19,27 @@
#ifndef _FILEBROWSERENTRY_
#define _FILEBROWSERENTRY_
+#include
+
#include
-#include "thumbbrowserentrybase.h"
-#include "thumbnail.h"
-#include "filethumbnailbuttonset.h"
-#include "thumbnaillistener.h"
-#include "thumbimageupdater.h"
-#include "imageareatoollistener.h"
-#include "editenums.h"
+
#include "../rtengine/rtengine.h"
+
#include "crophandler.h"
+#include "editenums.h"
+#include "filethumbnailbuttonset.h"
+#include "imageareatoollistener.h"
+#include "thumbbrowserentrybase.h"
+#include "thumbimageupdater.h"
+#include "thumbnail.h"
+#include "thumbnaillistener.h"
class FileBrowserEntry;
struct FileBrowserEntryIdleHelper {
FileBrowserEntry* fbentry;
bool destroyed;
- int pending;
+ std::atomic pending;
};
class FileThumbnailButtonSet;
diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc
index 6d78115fe..79e433d70 100644
--- a/rtgui/filecatalog.cc
+++ b/rtgui/filecatalog.cc
@@ -500,6 +500,7 @@ void FileCatalog::exifInfoButtonToggled()
}
fileBrowser->refreshThumbImages ();
+ refreshHeight();
}
void FileCatalog::on_realize()
@@ -574,21 +575,31 @@ std::vector FileCatalog::getFileList ()
auto enumerator = dir->enumerate_children ("standard::name");
- while (auto file = enumerator->next_file ()) {
+ while (true) {
+ try {
+ auto file = enumerator->next_file ();
+ if (!file) {
+ break;
+ }
- const Glib::ustring fname = file->get_name ();
+ const Glib::ustring fname = file->get_name ();
- auto lastdot = fname.find_last_of ('.');
- if (lastdot >= fname.length () - 1) {
- continue;
+ auto lastdot = fname.find_last_of ('.');
+ if (lastdot >= fname.length () - 1) {
+ continue;
+ }
+
+ const auto fext = fname.substr (lastdot + 1).lowercase ();
+ if (extensions.count (fext) == 0) {
+ continue;
+ }
+
+ names.emplace_back (Glib::build_filename (selectedDirectory, fname));
+ } catch (Glib::Exception& exception) {
+ if (options.rtSettings.verbose) {
+ std::cerr << exception.what () << std::endl;
+ }
}
-
- const auto fext = fname.substr (lastdot + 1).lowercase ();
- if (extensions.count (fext) == 0) {
- continue;
- }
-
- names.emplace_back (Glib::build_filename (selectedDirectory, fname));
}
} catch (Glib::Exception& exception) {
@@ -1211,6 +1222,7 @@ void FileCatalog::developRequested (std::vector tbe, bool fas
params.resize.appliesTo = options.fastexport_resize_appliesTo;
params.resize.method = options.fastexport_resize_method;
params.resize.dataspec = options.fastexport_resize_dataspec;
+ params.resize.allowUpscaling = false;
}
rtengine::ProcessingJob* pjob = rtengine::ProcessingJob::create (fbe->filename, th->getType() == FT_Raw, params, fastmode && options.fastexport_use_fast_pipeline);
diff --git a/rtgui/filepanel.cc b/rtgui/filepanel.cc
index 40e9440f6..260a6f448 100644
--- a/rtgui/filepanel.cc
+++ b/rtgui/filepanel.cc
@@ -81,6 +81,7 @@ FilePanel::FilePanel () : parent(nullptr), error(0)
tpc->addPParamsChangeListener (history);
history->setProfileChangeListener (tpc);
+ history->set_size_request(-1, 50);
Gtk::ScrolledWindow* sFilterPanel = Gtk::manage ( new Gtk::ScrolledWindow() );
filterPanel = Gtk::manage ( new FilterPanel () );
@@ -120,7 +121,7 @@ FilePanel::FilePanel () : parent(nullptr), error(0)
tpcPaned = Gtk::manage ( new Gtk::VPaned () );
tpcPaned->pack1 (*tpc->toolPanelNotebook, false, true);
- tpcPaned->pack2 (*history, true, true);
+ tpcPaned->pack2 (*history, true, false);
rightNotebook->append_page (*sFilterPanel, *filtLab);
rightNotebook->append_page (*inspectorPanel, *inspectLab);
diff --git a/rtgui/flatfield.cc b/rtgui/flatfield.cc
index 22df8df77..1b77ae316 100644
--- a/rtgui/flatfield.cc
+++ b/rtgui/flatfield.cc
@@ -136,7 +136,7 @@ void FlatField::read(const rtengine::procparams::ProcParams* pp, const ParamsEdi
flatFieldClipControl->setAutoInconsistent(multiImage && !pedited->raw.ff_AutoClipControl);
if( !pedited->raw.ff_BlurType ) {
- flatFieldBlurType->set_active(std::numeric_limits::max()); // No name
+ flatFieldBlurType->set_active_text(M("GENERAL_UNCHANGED"));
}
}
@@ -217,7 +217,7 @@ void FlatField::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedit
int currentRow = flatFieldBlurType->get_active_row_number();
- if( currentRow >= 0 && currentRow < std::numeric_limits::max()) {
+ if( currentRow >= 0 && flatFieldBlurType->get_active_text() != M("GENERAL_UNCHANGED")) {
pp->raw.ff_BlurType = procparams::RAWParams::getFlatFieldBlurTypeStrings()[currentRow];
}
@@ -227,7 +227,7 @@ void FlatField::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedit
pedited->raw.ff_BlurRadius = flatFieldBlurRadius->getEditedState ();
pedited->raw.ff_clipControl = flatFieldClipControl->getEditedState ();
pedited->raw.ff_AutoClipControl = !flatFieldClipControl->getAutoInconsistent();
- pedited->raw.ff_BlurType = flatFieldBlurType->get_active_row_number() != std::numeric_limits::max();
+ pedited->raw.ff_BlurType = flatFieldBlurType->get_active_text() != M("GENERAL_UNCHANGED");
}
}
@@ -340,20 +340,14 @@ void FlatField::flatFieldBlurTypeChanged ()
const int curSelection = flatFieldBlurType->get_active_row_number();
const RAWParams::FlatFieldBlurType blur_type = RAWParams::FlatFieldBlurType(curSelection);
- Glib::ustring s;
-
- if (curSelection >= 0 && curSelection < std::numeric_limits::max()) {
- s = flatFieldBlurType->get_active_text();
- }
-
if (multiImage || blur_type == procparams::RAWParams::FlatFieldBlurType::AREA) {
flatFieldClipControl->show();
} else {
flatFieldClipControl->hide();
}
- if (listener) {
- listener->panelChanged (EvFlatFieldBlurType, s);
+ if (listener && curSelection >= 0) {
+ listener->panelChanged (EvFlatFieldBlurType, flatFieldBlurType->get_active_text());
}
}
diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc
index 956d23159..c8afaa491 100644
--- a/rtgui/icmpanel.cc
+++ b/rtgui/icmpanel.cc
@@ -651,6 +651,7 @@ void ICMPanel::write (ProcParams* pp, ParamsEdited* pedited)
pp->icm.gampos = (double) gampos->getValue();
pp->icm.slpos = (double) slpos->getValue();
pp->icm.outputBPC = obpc->get_active ();
+ pp->toneCurve.fromHistMatching = false;
if (pedited) {
pedited->icm.input = !iunchanged->get_active ();
diff --git a/rtgui/imagearea.cc b/rtgui/imagearea.cc
index 038e04629..b5989b098 100644
--- a/rtgui/imagearea.cc
+++ b/rtgui/imagearea.cc
@@ -241,13 +241,14 @@ bool ImageArea::on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr)
mainCropWindow->expose (cr);
}
+ for (std::list::reverse_iterator i = cropWins.rbegin(); i != cropWins.rend(); ++i) {
+ (*i)->expose (cr);
+ }
+
if (options.showInfo && infotext != "") {
iBackBuffer.copySurface(cr);
}
- for (std::list::reverse_iterator i = cropWins.rbegin(); i != cropWins.rend(); ++i) {
- (*i)->expose (cr);
- }
return true;
}
@@ -560,6 +561,14 @@ void ImageArea::spotWBSelected (int x, int y)
}
}
+void ImageArea::sharpMaskSelected (bool sharpMask)
+{
+
+ if (listener) {
+ listener->sharpMaskSelected (sharpMask);
+ }
+}
+
void ImageArea::getScrollImageSize (int& w, int& h)
{
diff --git a/rtgui/imagearea.h b/rtgui/imagearea.h
index 65fc14cce..de9ba1f71 100644
--- a/rtgui/imagearea.h
+++ b/rtgui/imagearea.h
@@ -131,6 +131,7 @@ public:
void setToolHand ();
void straightenReady (double rotDeg);
void spotWBSelected (int x, int y);
+ void sharpMaskSelected (bool sharpMask);
int getSpotWBRectSize ();
void redraw ();
diff --git a/rtgui/imageareatoollistener.h b/rtgui/imageareatoollistener.h
index b7d5cec94..d11ec2e6f 100644
--- a/rtgui/imageareatoollistener.h
+++ b/rtgui/imageareatoollistener.h
@@ -29,6 +29,7 @@ class ImageAreaToolListener
public:
virtual ~ImageAreaToolListener() {}
virtual void spotWBselected (int x, int y, Thumbnail* thm = nullptr) {}
+ virtual void sharpMaskSelected (bool sharpMask) {}
virtual int getSpotWBRectSize ()
{
return 8;
diff --git a/rtgui/indclippedpanel.cc b/rtgui/indclippedpanel.cc
index a50d0665a..233562ecf 100644
--- a/rtgui/indclippedpanel.cc
+++ b/rtgui/indclippedpanel.cc
@@ -27,11 +27,20 @@ IndicateClippedPanel::IndicateClippedPanel (ImageArea* ia) : imageArea(ia)
iFon = new RTImage ("focusscreen-on.png");
iFoff = new RTImage ("focusscreen-off.png");
+ // for previewSharpMask, needs to be replaced with different icons
+ iSon = new RTImage ("previewmodeF-focusScreen-on.png");
+ iSoff = new RTImage ("previewmodeF-focusScreen-off.png");
+
previewFocusMask = Gtk::manage (new Gtk::ToggleButton ());
previewFocusMask->set_relief(Gtk::RELIEF_NONE);
previewFocusMask->set_tooltip_markup (M("MAIN_TOOLTIP_PREVIEWFOCUSMASK"));
previewFocusMask->set_image(*iFoff);
+ previewSharpMask = Gtk::manage (new Gtk::ToggleButton ());
+ previewSharpMask->set_relief(Gtk::RELIEF_NONE);
+ previewSharpMask->set_tooltip_markup (M("MAIN_TOOLTIP_PREVIEWSHARPMASK"));
+ previewSharpMask->set_image(*iSoff);
+
Glib::ustring tt;
indClippedH = Gtk::manage (new Gtk::ToggleButton ());
@@ -57,13 +66,16 @@ IndicateClippedPanel::IndicateClippedPanel (ImageArea* ia) : imageArea(ia)
}
previewFocusMask->set_active (false);
+ previewSharpMask->set_active (false);
indClippedH->set_active (options.showClippedHighlights);
indClippedS->set_active (options.showClippedShadows);
pack_start (*previewFocusMask, Gtk::PACK_SHRINK, 0);
+ pack_start (*previewSharpMask, Gtk::PACK_SHRINK, 0);
pack_start (*indClippedS, Gtk::PACK_SHRINK, 0);
pack_start (*indClippedH, Gtk::PACK_SHRINK, 0);
+ connSharpMask = previewSharpMask->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &IndicateClippedPanel::buttonToggled), previewSharpMask) );
connFocusMask = previewFocusMask->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &IndicateClippedPanel::buttonToggled), previewFocusMask) );
connClippedS = indClippedS->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &IndicateClippedPanel::buttonToggled), indClippedS) );
connClippedH = indClippedH->signal_toggled().connect( sigc::bind(sigc::mem_fun(*this, &IndicateClippedPanel::buttonToggled), indClippedH) );
@@ -86,27 +98,54 @@ void IndicateClippedPanel::toggleFocusMask ()
previewFocusMask->set_active(!previewFocusMask->get_active());
}
+void IndicateClippedPanel::silentlyDisableSharpMask ()
+{
+ ConnectionBlocker conBlocker(connSharpMask);
+ previewSharpMask->set_active(false);
+ previewSharpMask->set_image(*iSoff);
+
+}
+
+void IndicateClippedPanel::toggleSharpMask ()
+{
+ previewSharpMask->set_active(!previewSharpMask->get_active());
+}
+
void IndicateClippedPanel::buttonToggled (Gtk::ToggleButton* tb)
{
connFocusMask.block(true);
+ connSharpMask.block(true);
connClippedS.block(true);
connClippedH.block(true);
- if (tb != previewFocusMask) {
- previewFocusMask->set_active(false);
- } else {
+ if (tb == previewFocusMask) {
if (indClippedS->get_active()) {
indClippedS->set_active(false);
}
if (indClippedH->get_active()) {
indClippedH->set_active(false);
}
+ previewSharpMask->set_active(false);
+ } else if (tb == previewSharpMask) {
+ if (indClippedS->get_active()) {
+ indClippedS->set_active(false);
+ }
+ if (indClippedH->get_active()) {
+ indClippedH->set_active(false);
+ }
+ previewFocusMask->set_active(false);
+ } else {
+ previewFocusMask->set_active(false);
+ previewSharpMask->set_active(false);
}
+ imageArea->sharpMaskSelected(previewSharpMask->get_active());
previewFocusMask->set_image(previewFocusMask->get_active() ? *iFon : *iFoff);
+ previewSharpMask->set_image(previewSharpMask->get_active() ? *iSon : *iSoff);
connFocusMask.block(false);
+ connSharpMask.block(false);
connClippedS.block(false);
connClippedH.block(false);
@@ -123,4 +162,6 @@ IndicateClippedPanel::~IndicateClippedPanel ()
{
delete iFon;
delete iFoff;
+ delete iSon;
+ delete iSoff;
}
diff --git a/rtgui/indclippedpanel.h b/rtgui/indclippedpanel.h
index 1da4b61de..95e870e95 100644
--- a/rtgui/indclippedpanel.h
+++ b/rtgui/indclippedpanel.h
@@ -19,13 +19,15 @@
#define _INDCLIPPEDPANEL_
#include
+#include
class ImageArea;
class IndicateClippedPanel : public Gtk::HBox
{
protected:
- Gtk::Image* iFon, *iFoff;
+ Gtk::Image* iFon, *iFoff, *iSon, *iSoff;
+ Gtk::ToggleButton* previewSharpMask;
Gtk::ToggleButton* previewFocusMask;
Gtk::ToggleButton* indClippedH;
Gtk::ToggleButton* indClippedS;
@@ -38,8 +40,10 @@ public:
void buttonToggled(Gtk::ToggleButton* tb);
void toggleClipped(bool highlights); // inverts a toggle programmatically
void toggleFocusMask();
+ void silentlyDisableSharpMask(); // toggle the button off without throwing a toggle event
+ void toggleSharpMask();
- sigc::connection connFocusMask, connClippedS, connClippedH;
+ sigc::connection connFocusMask, connSharpMask, connClippedS, connClippedH;
bool showFocusMask ()
diff --git a/rtgui/labgrid.cc b/rtgui/labgrid.cc
index 945073221..a52ba9163 100644
--- a/rtgui/labgrid.cc
+++ b/rtgui/labgrid.cc
@@ -74,10 +74,12 @@ void LabGrid::getParams(double &la, double &lb, double &ha, double &hb) const
void LabGrid::setParams(double la, double lb, double ha, double hb, bool notify)
{
- low_a = la;
- low_b = lb;
- high_a = ha;
- high_b = hb;
+ const double lo = -rtengine::ColorToningParams::LABGRID_CORR_MAX;
+ const double hi = rtengine::ColorToningParams::LABGRID_CORR_MAX;
+ low_a = rtengine::LIM(la, lo, hi);
+ low_b = rtengine::LIM(lb, lo, hi);
+ high_a = rtengine::LIM(ha, lo, hi);
+ high_b = rtengine::LIM(hb, lo, hi);
queue_draw();
if (notify) {
notifyListener();
diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc
index 391228c9b..5ff8d1c54 100644
--- a/rtgui/paramsedited.cc
+++ b/rtgui/paramsedited.cc
@@ -50,6 +50,7 @@ void ParamsEdited::set (bool v)
toneCurve.hrenabled = v;
toneCurve.method = v;
toneCurve.histmatching = v;
+ toneCurve.fromHistMatching = v;
toneCurve.clampOOG = v;
retinex.cdcurve = v;
retinex.mapcurve = v;
@@ -142,6 +143,7 @@ void ParamsEdited::set (bool v)
colorToning.labgridBHigh = v;
sharpening.enabled = v;
+ sharpening.contrast = v;
sharpening.radius = v;
sharpening.amount = v;
sharpening.threshold = v;
@@ -156,6 +158,7 @@ void ParamsEdited::set (bool v)
sharpening.deconviter = v;
sharpening.deconvdamping = v;
prsharpening.enabled = v;
+ prsharpening.contrast = v;
prsharpening.radius = v;
prsharpening.amount = v;
prsharpening.threshold = v;
@@ -175,6 +178,7 @@ void ParamsEdited::set (bool v)
sharpenEdge.threechannels = v;
sharpenMicro.enabled = v;
sharpenMicro.matrix = v;
+ sharpenMicro.contrast = v;
sharpenMicro.amount = v;
sharpenMicro.uniformity = v;
vibrance.enabled = v;
@@ -374,6 +378,7 @@ void ParamsEdited::set (bool v)
resize.width = v;
resize.height = v;
resize.enabled = v;
+ resize.allowUpscaling = v;
icm.input = v;
icm.toneCurve = v;
icm.applyLookTable = v;
@@ -389,6 +394,7 @@ void ParamsEdited::set (bool v)
icm.gampos = v;
icm.slpos = v;
raw.bayersensor.method = v;
+ raw.bayersensor.border = v;
raw.bayersensor.imageNum = v;
raw.bayersensor.ccSteps = v;
raw.bayersensor.exBlack0 = v;
@@ -400,6 +406,7 @@ void ParamsEdited::set (bool v)
raw.bayersensor.dcbEnhance = v;
//raw.bayersensor.allEnhance = v;
raw.bayersensor.lmmseIterations = v;
+ raw.bayersensor.dualDemosaicContrast = v;
raw.bayersensor.pixelShiftMotionCorrectionMethod = v;
raw.bayersensor.pixelShiftEperIso = v;
raw.bayersensor.pixelShiftSigma = v;
@@ -410,15 +417,16 @@ void ParamsEdited::set (bool v)
raw.bayersensor.pixelShiftGreen = v;
raw.bayersensor.pixelShiftBlur = v;
raw.bayersensor.pixelShiftSmooth = v;
- raw.bayersensor.pixelShiftLmmse = v;
raw.bayersensor.pixelShiftEqualBright = v;
raw.bayersensor.pixelShiftEqualBrightChannel = v;
raw.bayersensor.pixelShiftNonGreenCross = v;
+ raw.bayersensor.pixelShiftDemosaicMethod = v;
raw.bayersensor.greenEq = v;
raw.bayersensor.linenoise = v;
raw.bayersensor.linenoiseDirection = v;
raw.bayersensor.pdafLinesFilter = v;
raw.xtranssensor.method = v;
+ raw.xtranssensor.dualDemosaicContrast = v;
raw.xtranssensor.ccSteps = v;
raw.xtranssensor.exBlackRed = v;
raw.xtranssensor.exBlackGreen = v;
@@ -554,6 +562,8 @@ void ParamsEdited::set (bool v)
filmSimulation.enabled = v;
filmSimulation.clutFilename = v;
filmSimulation.strength = v;
+ softlight.enabled = v;
+ softlight.strength = v;
metadata.mode = v;
exif = v;
@@ -593,6 +603,7 @@ void ParamsEdited::initFrom (const std::vector
toneCurve.hrenabled = toneCurve.hrenabled && p.toneCurve.hrenabled == other.toneCurve.hrenabled;
toneCurve.method = toneCurve.method && p.toneCurve.method == other.toneCurve.method;
toneCurve.histmatching = toneCurve.histmatching && p.toneCurve.histmatching == other.toneCurve.histmatching;
+ toneCurve.fromHistMatching = toneCurve.fromHistMatching && p.toneCurve.fromHistMatching == other.toneCurve.fromHistMatching;
toneCurve.clampOOG = toneCurve.clampOOG && p.toneCurve.clampOOG == other.toneCurve.clampOOG;
retinex.cdcurve = retinex.cdcurve && p.retinex.cdcurve == other.retinex.cdcurve;
retinex.mapcurve = retinex.mapcurve && p.retinex.mapcurve == other.retinex.mapcurve;
@@ -691,8 +702,10 @@ void ParamsEdited::initFrom (const std::vector
sharpenMicro.enabled = sharpenMicro.enabled && p.sharpenMicro.enabled == other.sharpenMicro.enabled;
sharpenMicro.matrix = sharpenMicro.matrix && p.sharpenMicro.matrix == other.sharpenMicro.matrix;
sharpenMicro.amount = sharpenMicro.amount && p.sharpenMicro.amount == other.sharpenMicro.amount;
+ sharpenMicro.contrast = sharpenMicro.contrast && p.sharpenMicro.contrast == other.sharpenMicro.contrast;
sharpenMicro.uniformity = sharpenMicro.uniformity && p.sharpenMicro.uniformity == other.sharpenMicro.uniformity;
sharpening.enabled = sharpening.enabled && p.sharpening.enabled == other.sharpening.enabled;
+ sharpening.contrast = sharpening.contrast && p.sharpening.contrast == other.sharpening.contrast;
sharpening.radius = sharpening.radius && p.sharpening.radius == other.sharpening.radius;
sharpening.amount = sharpening.amount && p.sharpening.amount == other.sharpening.amount;
sharpening.threshold = sharpening.threshold && p.sharpening.threshold == other.sharpening.threshold;
@@ -707,6 +720,7 @@ void ParamsEdited::initFrom (const std::vector
sharpening.deconviter = sharpening.deconviter && p.sharpening.deconviter == other.sharpening.deconviter;
sharpening.deconvdamping = sharpening.deconvdamping && p.sharpening.deconvdamping == other.sharpening.deconvdamping;
prsharpening.enabled = prsharpening.enabled && p.prsharpening.enabled == other.prsharpening.enabled;
+ prsharpening.contrast = prsharpening.contrast && p.prsharpening.contrast == other.prsharpening.contrast;
prsharpening.radius = prsharpening.radius && p.prsharpening.radius == other.prsharpening.radius;
prsharpening.amount = prsharpening.amount && p.prsharpening.amount == other.prsharpening.amount;
prsharpening.threshold = prsharpening.threshold && p.prsharpening.threshold == other.prsharpening.threshold;
@@ -920,6 +934,7 @@ void ParamsEdited::initFrom (const std::vector
resize.width = resize.width && p.resize.width == other.resize.width;
resize.height = resize.height && p.resize.height == other.resize.height;
resize.enabled = resize.enabled && p.resize.enabled == other.resize.enabled;
+ resize.allowUpscaling = resize.allowUpscaling && p.resize.allowUpscaling == other.resize.allowUpscaling;
icm.input = icm.input && p.icm.input == other.icm.input;
icm.toneCurve = icm.toneCurve && p.icm.toneCurve == other.icm.toneCurve;
icm.applyLookTable = icm.applyLookTable && p.icm.applyLookTable == other.icm.applyLookTable;
@@ -935,6 +950,7 @@ void ParamsEdited::initFrom (const std::vector
icm.gampos = icm.gampos && p.icm.gampos == other.icm.gampos;
icm.slpos = icm.slpos && p.icm.slpos == other.icm.slpos;
raw.bayersensor.method = raw.bayersensor.method && p.raw.bayersensor.method == other.raw.bayersensor.method;
+ raw.bayersensor.border = raw.bayersensor.border && p.raw.bayersensor.border == other.raw.bayersensor.border;
raw.bayersensor.imageNum = raw.bayersensor.imageNum && p.raw.bayersensor.imageNum == other.raw.bayersensor.imageNum;
raw.bayersensor.ccSteps = raw.bayersensor.ccSteps && p.raw.bayersensor.ccSteps == other.raw.bayersensor.ccSteps;
raw.bayersensor.exBlack0 = raw.bayersensor.exBlack0 && p.raw.bayersensor.black0 == other.raw.bayersensor.black0;
@@ -946,6 +962,7 @@ void ParamsEdited::initFrom (const std::vector
raw.bayersensor.dcbEnhance = raw.bayersensor.dcbEnhance && p.raw.bayersensor.dcb_enhance == other.raw.bayersensor.dcb_enhance;
//raw.bayersensor.allEnhance = raw.bayersensor.allEnhance && p.raw.bayersensor.all_enhance == other.raw.bayersensor.all_enhance;
raw.bayersensor.lmmseIterations = raw.bayersensor.lmmseIterations && p.raw.bayersensor.lmmse_iterations == other.raw.bayersensor.lmmse_iterations;
+ raw.bayersensor.dualDemosaicContrast = raw.bayersensor.dualDemosaicContrast && p.raw.bayersensor.dualDemosaicContrast == other.raw.bayersensor.dualDemosaicContrast;
raw.bayersensor.pixelShiftMotionCorrectionMethod = raw.bayersensor.pixelShiftMotionCorrectionMethod && p.raw.bayersensor.pixelShiftMotionCorrectionMethod == other.raw.bayersensor.pixelShiftMotionCorrectionMethod;
raw.bayersensor.pixelShiftEperIso = raw.bayersensor.pixelShiftEperIso && p.raw.bayersensor.pixelShiftEperIso == other.raw.bayersensor.pixelShiftEperIso;
raw.bayersensor.pixelShiftSigma = raw.bayersensor.pixelShiftSigma && p.raw.bayersensor.pixelShiftSigma == other.raw.bayersensor.pixelShiftSigma;
@@ -956,15 +973,16 @@ void ParamsEdited::initFrom (const std::vector
raw.bayersensor.pixelShiftGreen = raw.bayersensor.pixelShiftGreen && p.raw.bayersensor.pixelShiftGreen == other.raw.bayersensor.pixelShiftGreen;
raw.bayersensor.pixelShiftBlur = raw.bayersensor.pixelShiftBlur && p.raw.bayersensor.pixelShiftBlur == other.raw.bayersensor.pixelShiftBlur;
raw.bayersensor.pixelShiftSmooth = raw.bayersensor.pixelShiftSmooth && p.raw.bayersensor.pixelShiftSmoothFactor == other.raw.bayersensor.pixelShiftSmoothFactor;
- raw.bayersensor.pixelShiftLmmse = raw.bayersensor.pixelShiftLmmse && p.raw.bayersensor.pixelShiftLmmse == other.raw.bayersensor.pixelShiftLmmse;
raw.bayersensor.pixelShiftEqualBright = raw.bayersensor.pixelShiftEqualBright && p.raw.bayersensor.pixelShiftEqualBright == other.raw.bayersensor.pixelShiftEqualBright;
raw.bayersensor.pixelShiftEqualBrightChannel = raw.bayersensor.pixelShiftEqualBrightChannel && p.raw.bayersensor.pixelShiftEqualBrightChannel == other.raw.bayersensor.pixelShiftEqualBrightChannel;
raw.bayersensor.pixelShiftNonGreenCross = raw.bayersensor.pixelShiftNonGreenCross && p.raw.bayersensor.pixelShiftNonGreenCross == other.raw.bayersensor.pixelShiftNonGreenCross;
+ raw.bayersensor.pixelShiftDemosaicMethod = raw.bayersensor.pixelShiftDemosaicMethod && p.raw.bayersensor.pixelShiftDemosaicMethod == other.raw.bayersensor.pixelShiftDemosaicMethod;
raw.bayersensor.greenEq = raw.bayersensor.greenEq && p.raw.bayersensor.greenthresh == other.raw.bayersensor.greenthresh;
raw.bayersensor.linenoise = raw.bayersensor.linenoise && p.raw.bayersensor.linenoise == other.raw.bayersensor.linenoise;
raw.bayersensor.linenoiseDirection = raw.bayersensor.linenoiseDirection && p.raw.bayersensor.linenoiseDirection == other.raw.bayersensor.linenoiseDirection;
raw.bayersensor.pdafLinesFilter = raw.bayersensor.pdafLinesFilter && p.raw.bayersensor.pdafLinesFilter == other.raw.bayersensor.pdafLinesFilter;
raw.xtranssensor.method = raw.xtranssensor.method && p.raw.xtranssensor.method == other.raw.xtranssensor.method;
+ raw.xtranssensor.dualDemosaicContrast = raw.xtranssensor.dualDemosaicContrast && p.raw.xtranssensor.dualDemosaicContrast == other.raw.xtranssensor.dualDemosaicContrast;
raw.xtranssensor.ccSteps = raw.xtranssensor.ccSteps && p.raw.xtranssensor.ccSteps == other.raw.xtranssensor.ccSteps;
raw.xtranssensor.exBlackRed = raw.xtranssensor.exBlackRed && p.raw.xtranssensor.blackred == other.raw.xtranssensor.blackred;
raw.xtranssensor.exBlackGreen = raw.xtranssensor.exBlackGreen && p.raw.xtranssensor.blackgreen == other.raw.xtranssensor.blackgreen;
@@ -1095,6 +1113,8 @@ void ParamsEdited::initFrom (const std::vector
filmSimulation.enabled = filmSimulation.enabled && p.filmSimulation.enabled == other.filmSimulation.enabled;
filmSimulation.clutFilename = filmSimulation.clutFilename && p.filmSimulation.clutFilename == other.filmSimulation.clutFilename;
filmSimulation.strength = filmSimulation.strength && p.filmSimulation.strength == other.filmSimulation.strength;
+ softlight.enabled = softlight.enabled && p.softlight.enabled == other.softlight.enabled;
+ softlight.strength = softlight.strength && p.softlight.strength == other.softlight.strength;
metadata.mode = metadata.mode && p.metadata.mode == other.metadata.mode;
// How the hell can we handle that???
@@ -1176,6 +1196,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.toneCurve.histmatching = mods.toneCurve.histmatching;
}
+ if (toneCurve.fromHistMatching) {
+ toEdit.toneCurve.fromHistMatching = mods.toneCurve.fromHistMatching;
+ }
+
if (toneCurve.clampOOG) {
toEdit.toneCurve.clampOOG = mods.toneCurve.clampOOG;
}
@@ -1564,6 +1588,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.sharpenMicro.amount = dontforceSet && options.baBehav[ADDSET_SHARPENMICRO_AMOUNT] ? toEdit.sharpenMicro.amount + mods.sharpenMicro.amount : mods.sharpenMicro.amount;
}
+ if (sharpenMicro.contrast) {
+ toEdit.sharpenMicro.contrast = dontforceSet && options.baBehav[ADDSET_SHARPENMICRO_CONTRAST] ? toEdit.sharpenMicro.contrast + mods.sharpenMicro.contrast : mods.sharpenMicro.contrast;
+ }
+
if (sharpenMicro.uniformity) {
toEdit.sharpenMicro.uniformity = dontforceSet && options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY] ? toEdit.sharpenMicro.uniformity + mods.sharpenMicro.uniformity : mods.sharpenMicro.uniformity;
}
@@ -1572,6 +1600,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.sharpening.enabled = mods.sharpening.enabled;
}
+ if (sharpening.contrast) {
+ toEdit.sharpening.contrast = dontforceSet && options.baBehav[ADDSET_SHARP_CONTRAST] ? toEdit.sharpening.contrast + mods.sharpening.contrast : mods.sharpening.contrast;
+ }
+
if (sharpening.radius) {
toEdit.sharpening.radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.radius + mods.sharpening.radius : mods.sharpening.radius;
}
@@ -1628,6 +1660,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.prsharpening.enabled = mods.prsharpening.enabled;
}
+ if (prsharpening.contrast) {
+ toEdit.prsharpening.contrast = dontforceSet && options.baBehav[ADDSET_SHARP_CONTRAST] ? toEdit.prsharpening.contrast + mods.prsharpening.contrast : mods.prsharpening.contrast;
+ }
+
if (prsharpening.radius) {
toEdit.prsharpening.radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.prsharpening.radius + mods.prsharpening.radius : mods.prsharpening.radius;
}
@@ -2378,6 +2414,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.resize.enabled = mods.resize.enabled;
}
+ if (resize.allowUpscaling) {
+ toEdit.resize.allowUpscaling = mods.resize.allowUpscaling;
+ }
+
if (icm.input) {
toEdit.icm.input = mods.icm.input;
}
@@ -2438,6 +2478,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.raw.bayersensor.method = mods.raw.bayersensor.method;
}
+ if (raw.bayersensor.border) {
+ toEdit.raw.bayersensor.border = mods.raw.bayersensor.border;
+ }
+
if (raw.bayersensor.imageNum) {
toEdit.raw.bayersensor.imageNum = mods.raw.bayersensor.imageNum;
}
@@ -2478,6 +2522,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.raw.bayersensor.lmmse_iterations = mods.raw.bayersensor.lmmse_iterations;
}
+ if (raw.bayersensor.dualDemosaicContrast) {
+ toEdit.raw.bayersensor.dualDemosaicContrast = mods.raw.bayersensor.dualDemosaicContrast;
+ }
+
if (raw.bayersensor.pixelShiftMotionCorrectionMethod) {
toEdit.raw.bayersensor.pixelShiftMotionCorrectionMethod = mods.raw.bayersensor.pixelShiftMotionCorrectionMethod;
}
@@ -2518,10 +2566,6 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.raw.bayersensor.pixelShiftSmoothFactor = mods.raw.bayersensor.pixelShiftSmoothFactor;
}
- if (raw.bayersensor.pixelShiftLmmse) {
- toEdit.raw.bayersensor.pixelShiftLmmse = mods.raw.bayersensor.pixelShiftLmmse;
- }
-
if (raw.bayersensor.pixelShiftEqualBright) {
toEdit.raw.bayersensor.pixelShiftEqualBright = mods.raw.bayersensor.pixelShiftEqualBright;
}
@@ -2534,6 +2578,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.raw.bayersensor.pixelShiftNonGreenCross = mods.raw.bayersensor.pixelShiftNonGreenCross;
}
+ if (raw.bayersensor.pixelShiftDemosaicMethod) {
+ toEdit.raw.bayersensor.pixelShiftDemosaicMethod = mods.raw.bayersensor.pixelShiftDemosaicMethod;
+ }
+
if (raw.bayersensor.greenEq) {
toEdit.raw.bayersensor.greenthresh = dontforceSet && options.baBehav[ADDSET_PREPROCESS_GREENEQUIL] ? toEdit.raw.bayersensor.greenthresh + mods.raw.bayersensor.greenthresh : mods.raw.bayersensor.greenthresh;
}
@@ -2554,6 +2602,10 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.raw.xtranssensor.method = mods.raw.xtranssensor.method;
}
+ if (raw.xtranssensor.dualDemosaicContrast) {
+ toEdit.raw.xtranssensor.dualDemosaicContrast = mods.raw.xtranssensor.dualDemosaicContrast;
+ }
+
if (raw.xtranssensor.ccSteps) {
toEdit.raw.xtranssensor.ccSteps = mods.raw.xtranssensor.ccSteps;
}
@@ -3035,6 +3087,14 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.filmSimulation.strength = dontforceSet && options.baBehav[ADDSET_FILMSIMULATION_STRENGTH] ? toEdit.filmSimulation.strength + mods.filmSimulation.strength : mods.filmSimulation.strength;
}
+ if (softlight.enabled) {
+ toEdit.softlight.enabled = mods.softlight.enabled;
+ }
+
+ if (softlight.strength) {
+ toEdit.softlight.strength = dontforceSet && options.baBehav[ADDSET_SOFTLIGHT_STRENGTH] ? toEdit.softlight.strength + mods.softlight.strength : mods.softlight.strength;
+ }
+
if (metadata.mode) {
toEdit.metadata.mode = mods.metadata.mode;
}
@@ -3054,9 +3114,9 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
bool RAWParamsEdited::BayerSensor::isUnchanged() const
{
- return method && imageNum && dcbIterations && dcbEnhance && lmmseIterations/*&& allEnhance*/ && greenEq
+ return method && border && imageNum && dcbIterations && dcbEnhance && lmmseIterations && dualDemosaicContrast /*&& allEnhance*/ && greenEq
&& pixelShiftMotionCorrectionMethod && pixelShiftEperIso && pixelShiftSigma && pixelShiftShowMotion && pixelShiftShowMotionMaskOnly
- && pixelShiftHoleFill && pixelShiftMedian && pixelShiftNonGreenCross && pixelShiftGreen && pixelShiftBlur && pixelShiftSmooth && pixelShiftLmmse && pixelShiftEqualBright && pixelShiftEqualBrightChannel
+ && pixelShiftHoleFill && pixelShiftMedian && pixelShiftNonGreenCross && pixelShiftDemosaicMethod && pixelShiftGreen && pixelShiftBlur && pixelShiftSmooth && pixelShiftEqualBright && pixelShiftEqualBrightChannel
&& linenoise && linenoiseDirection && pdafLinesFilter && exBlack0 && exBlack1 && exBlack2 && exBlack3 && exTwoGreen;
}
diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h
index e28a83a6f..974a1a31f 100644
--- a/rtgui/paramsedited.h
+++ b/rtgui/paramsedited.h
@@ -54,6 +54,7 @@ public:
bool hrenabled;
bool method;
bool histmatching;
+ bool fromHistMatching;
bool clampOOG;
};
@@ -194,6 +195,7 @@ public :
bool enabled;
bool matrix;
bool amount;
+ bool contrast;
bool uniformity;
};
@@ -203,6 +205,7 @@ class SharpeningParamsEdited
public:
bool enabled;
+ bool contrast;
bool radius;
bool amount;
bool threshold;
@@ -567,6 +570,7 @@ public:
bool width;
bool height;
bool enabled;
+ bool allowUpscaling;
};
class ColorManagementParamsEdited
@@ -710,6 +714,13 @@ public:
bool strength;
};
+class SoftLightParamsEdited
+{
+public:
+ bool enabled;
+ bool strength;
+};
+
class RAWParamsEdited
{
@@ -719,6 +730,7 @@ public:
public:
bool method;
+ bool border;
bool imageNum;
bool ccSteps;
bool exBlack0;
@@ -729,6 +741,7 @@ public:
bool dcbIterations;
bool dcbEnhance;
bool lmmseIterations;
+ bool dualDemosaicContrast;
bool pixelShiftMotionCorrectionMethod;
bool pixelShiftEperIso;
bool pixelShiftSigma;
@@ -739,10 +752,10 @@ public:
bool pixelShiftGreen;
bool pixelShiftBlur;
bool pixelShiftSmooth;
- bool pixelShiftLmmse;
bool pixelShiftEqualBright;
bool pixelShiftEqualBrightChannel;
bool pixelShiftNonGreenCross;
+ bool pixelShiftDemosaicMethod;
//bool allEnhance;
bool greenEq;
@@ -758,6 +771,7 @@ public:
public:
bool method;
+ bool dualDemosaicContrast;
bool ccSteps;
bool exBlackRed;
bool exBlackGreen;
@@ -844,6 +858,7 @@ public:
WaveletParamsEdited wavelet;
HSVEqualizerParamsEdited hsvequalizer;
FilmSimulationParamsEdited filmSimulation;
+ SoftLightParamsEdited softlight;
MetaDataParamsEdited metadata;
bool exif;
bool iptc;
diff --git a/rtgui/partialpastedlg.cc b/rtgui/partialpastedlg.cc
index c9ed1cd14..eb1bbbfee 100644
--- a/rtgui/partialpastedlg.cc
+++ b/rtgui/partialpastedlg.cc
@@ -78,6 +78,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
blackwhite = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_CHANNELMIXERBW")));
hsveq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_HSVEQUALIZER")));
filmSimulation = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_FILMSIMULATION")) );
+ softlight = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_SOFTLIGHT")) );
rgbcurves = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RGBCURVES")));
colortoning = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_COLORTONING")));
@@ -104,6 +105,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
// Raw Settings:
raw_method = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_DMETHOD")));
raw_imagenum = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_IMAGENUM")));
+ raw_border = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_BORDER")));
raw_pixelshift = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_PIXELSHIFT")));
raw_ccSteps = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_FALSECOLOR")));
raw_dcb_iterations = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAW_DCBITERATIONS")));
@@ -175,6 +177,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
vboxes[2]->pack_start (*blackwhite, Gtk::PACK_SHRINK, 2);
vboxes[2]->pack_start (*hsveq, Gtk::PACK_SHRINK, 2);
vboxes[2]->pack_start (*filmSimulation, Gtk::PACK_SHRINK, 2);
+ vboxes[2]->pack_start (*softlight, Gtk::PACK_SHRINK, 2);
vboxes[2]->pack_start (*rgbcurves, Gtk::PACK_SHRINK, 2);
vboxes[2]->pack_start (*colortoning, Gtk::PACK_SHRINK, 2);
@@ -215,6 +218,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
vboxes[7]->pack_start (*raw, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*hseps[7], Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_method, Gtk::PACK_SHRINK, 2);
+ vboxes[7]->pack_start (*raw_border, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_imagenum, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_pixelshift, Gtk::PACK_SHRINK, 2);
vboxes[7]->pack_start (*raw_ccSteps, Gtk::PACK_SHRINK, 2);
@@ -334,6 +338,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
chmixerbwConn = blackwhite->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
hsveqConn = hsveq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
filmSimulationConn = filmSimulation->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
+ softlightConn = softlight->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
rgbcurvesConn = rgbcurves->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
colortoningConn = colortoning->signal_toggled().connect (sigc::bind (sigc::mem_fun(*color, &Gtk::CheckButton::set_inconsistent), true));
@@ -359,6 +364,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren
// Raw Settings:
raw_methodConn = raw_method->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
+ raw_borderConn = raw_border->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
raw_imagenumConn = raw_imagenum->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
raw_pixelshiftConn = raw_pixelshift->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
raw_ccStepsConn = raw_ccSteps->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true));
@@ -434,6 +440,7 @@ void PartialPasteDlg::rawToggled ()
{
ConnectionBlocker raw_methodBlocker(raw_methodConn);
+ ConnectionBlocker raw_borderBlocker(raw_borderConn);
ConnectionBlocker raw_imagenumBlocker(raw_imagenumConn);
ConnectionBlocker raw_pixelshiftBlocker(raw_pixelshiftConn);
ConnectionBlocker raw_ccStepsBlocker(raw_ccStepsConn);
@@ -461,6 +468,7 @@ void PartialPasteDlg::rawToggled ()
raw->set_inconsistent (false);
raw_method->set_active (raw->get_active ());
+ raw_border->set_active (raw->get_active ());
raw_imagenum->set_active (raw->get_active ());
raw_pixelshift->set_active (raw->get_active ());
raw_ccSteps->set_active (raw->get_active ());
@@ -557,6 +565,7 @@ void PartialPasteDlg::colorToggled ()
ConnectionBlocker chmixerbwBlocker(chmixerbwConn);
ConnectionBlocker hsveqBlocker(hsveqConn);
ConnectionBlocker filmSimulationBlocker(filmSimulationConn);
+ ConnectionBlocker softlightBlocker(softlightConn);
ConnectionBlocker rgbcurvesBlocker(rgbcurvesConn);
ConnectionBlocker colortoningBlocker(colortoningConn);
@@ -568,6 +577,7 @@ void PartialPasteDlg::colorToggled ()
blackwhite->set_active (color->get_active ());
hsveq->set_active (color->get_active ());
filmSimulation->set_active (color->get_active ());
+ softlight->set_active (color->get_active ());
rgbcurves->set_active (color->get_active ());
colortoning->set_active(color->get_active ());
}
@@ -743,6 +753,10 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param
filterPE.filmSimulation = falsePE.filmSimulation;
}
+ if (!softlight->get_active ()) {
+ filterPE.softlight = falsePE.softlight;
+ }
+
if (!rgbcurves->get_active ()) {
filterPE.rgbCurves = falsePE.rgbCurves;
}
@@ -809,7 +823,13 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param
if (!raw_method->get_active ()) {
filterPE.raw.bayersensor.method = falsePE.raw.bayersensor.method;
+ filterPE.raw.bayersensor.dualDemosaicContrast = falsePE.raw.bayersensor.dualDemosaicContrast;
filterPE.raw.xtranssensor.method = falsePE.raw.xtranssensor.method;
+ filterPE.raw.xtranssensor.dualDemosaicContrast = falsePE.raw.xtranssensor.dualDemosaicContrast;
+ }
+
+ if (!raw_border->get_active ()) {
+ filterPE.raw.bayersensor.border = falsePE.raw.bayersensor.border;
}
if (!raw_imagenum->get_active ()) {
@@ -852,7 +872,7 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param
filterPE.raw.bayersensor.pixelShiftEqualBrightChannel = falsePE.raw.bayersensor.pixelShiftEqualBrightChannel;
filterPE.raw.bayersensor.pixelShiftGreen = falsePE.raw.bayersensor.pixelShiftGreen;
filterPE.raw.bayersensor.pixelShiftHoleFill = falsePE.raw.bayersensor.pixelShiftHoleFill;
- filterPE.raw.bayersensor.pixelShiftLmmse = falsePE.raw.bayersensor.pixelShiftLmmse;
+ filterPE.raw.bayersensor.pixelShiftDemosaicMethod = falsePE.raw.bayersensor.pixelShiftDemosaicMethod;
filterPE.raw.bayersensor.pixelShiftMedian = falsePE.raw.bayersensor.pixelShiftMedian;
filterPE.raw.bayersensor.pixelShiftMotionCorrectionMethod = falsePE.raw.bayersensor.pixelShiftMotionCorrectionMethod;
filterPE.raw.bayersensor.pixelShiftNonGreenCross = falsePE.raw.bayersensor.pixelShiftNonGreenCross;
diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h
index b404db156..7f903730b 100644
--- a/rtgui/partialpastedlg.h
+++ b/rtgui/partialpastedlg.h
@@ -73,6 +73,7 @@ public:
Gtk::CheckButton* chmixer;
Gtk::CheckButton* blackwhite;
Gtk::CheckButton* hsveq;
+ Gtk::CheckButton* softlight;
Gtk::CheckButton* filmSimulation;
Gtk::CheckButton* rgbcurves;
Gtk::CheckButton* colortoning;
@@ -110,6 +111,7 @@ public:
Gtk::CheckButton* raw_linenoise;
Gtk::CheckButton* raw_greenthresh;
Gtk::CheckButton* raw_method;
+ Gtk::CheckButton* raw_border;
Gtk::CheckButton* raw_imagenum;
Gtk::CheckButton* raw_ccSteps;
Gtk::CheckButton* raw_dcb_iterations;
@@ -129,12 +131,12 @@ public:
sigc::connection wbConn, exposureConn, localcontrastConn, shConn, pcvignetteConn, gradientConn, labcurveConn, colorappearanceConn;
sigc::connection sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, dirpyrdenConn, defringeConn, epdConn, fattalConn, dirpyreqConn, waveletConn, retinexConn;
- sigc::connection vibranceConn, chmixerConn, hsveqConn, rgbcurvesConn, chmixerbwConn, colortoningConn, filmSimulationConn;
+ sigc::connection vibranceConn, chmixerConn, hsveqConn, rgbcurvesConn, chmixerbwConn, colortoningConn, filmSimulationConn, softlightConn;
sigc::connection distortionConn, cacorrConn, vignettingConn, lcpConn;
sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, prsharpeningConn, perspectiveConn, commonTransConn;
sigc::connection metadataConn, exifchConn, iptcConn, icmConn;
sigc::connection df_fileConn, df_AutoSelectConn, ff_fileConn, ff_AutoSelectConn, ff_BlurRadiusConn, ff_BlurTypeConn, ff_ClipControlConn;
- sigc::connection raw_caredblueConn, raw_ca_autocorrectConn, raw_hotpix_filtConn, raw_deadpix_filtConn, raw_pdaf_lines_filterConn, raw_linenoiseConn, raw_greenthreshConn, raw_ccStepsConn, raw_methodConn, raw_imagenumConn, raw_dcb_iterationsConn, raw_lmmse_iterationsConn, raw_pixelshiftConn, raw_dcb_enhanceConn, raw_exposConn, raw_preserConn, raw_blackConn;
+ sigc::connection raw_caredblueConn, raw_ca_autocorrectConn, raw_hotpix_filtConn, raw_deadpix_filtConn, raw_pdaf_lines_filterConn, raw_linenoiseConn, raw_greenthreshConn, raw_ccStepsConn, raw_methodConn, raw_borderConn, raw_imagenumConn, raw_dcb_iterationsConn, raw_lmmse_iterationsConn, raw_pixelshiftConn, raw_dcb_enhanceConn, raw_exposConn, raw_preserConn, raw_blackConn;
public:
PartialPasteDlg (const Glib::ustring &title, Gtk::Window* parent);
diff --git a/rtgui/ppversion.h b/rtgui/ppversion.h
index 1265d9969..a09f59d7a 100644
--- a/rtgui/ppversion.h
+++ b/rtgui/ppversion.h
@@ -1,11 +1,25 @@
#pragma once
// This number has to be incremented whenever the PP3 file format is modified or the behaviour of a tool changes
-#define PPVERSION 333
+#define PPVERSION 340
#define PPVERSION_AEXP 301 //value of PPVERSION when auto exposure algorithm was modified
/*
Log of version changes
+ 340 2018-07-08
+ store whether curve is from histogram matching
+ 339 2018-07-04
+ added allowUpscaling to ResizeParams
+ 338 2018-06-15
+ increased precision for the channel mixer
+ 337 2018-06-13
+ new scales for the LabGrid color toning parameters
+ 336 2018-06-01
+ new demosaic method combobox for pixelshift
+ 335 2018-05-30
+ new contrast adjuster in Bayer process tool
+ 334 2018-05-13
+ new contrast threshold adjuster in Microcontrast tool
333 2018-04-26
new Shadows/Highlights tool
332 2018-04-18
diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc
index e418bd729..5a59b875a 100644
--- a/rtgui/preferences.cc
+++ b/rtgui/preferences.cc
@@ -225,6 +225,7 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
mi = behModel->append (); // Used for both Resize and Post-Resize sharpening
mi->set_value (behavColumns.label, M ("TP_SHARPENING_LABEL"));
+ appendBehavList (mi, M ("TP_SHARPENING_CONTRAST"), ADDSET_SHARP_CONTRAST, false);
appendBehavList (mi, M ("TP_SHARPENING_RADIUS"), ADDSET_SHARP_RADIUS, false);
appendBehavList (mi, M ("TP_SHARPENING_AMOUNT"), ADDSET_SHARP_AMOUNT, false);
appendBehavList (mi, M ("TP_SHARPENING_RLD_DAMPING"), ADDSET_SHARP_DAMPING, false);
@@ -248,6 +249,7 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
mi = behModel->append ();
mi->set_value (behavColumns.label, M ("TP_SHARPENMICRO_LABEL"));
appendBehavList (mi, M ("TP_SHARPENMICRO_AMOUNT"), ADDSET_SHARPENMICRO_AMOUNT, false);
+ appendBehavList (mi, M ("TP_SHARPENMICRO_CONTRAST"), ADDSET_SHARPENMICRO_CONTRAST, false);
appendBehavList (mi, M ("TP_SHARPENMICRO_UNIFORMITY"), ADDSET_SHARPENMICRO_UNIFORMITY, false);
mi = behModel->append ();
@@ -306,6 +308,10 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
mi->set_value ( behavColumns.label, M ("TP_FILMSIMULATION_LABEL") );
appendBehavList ( mi, M ( "TP_FILMSIMULATION_STRENGTH" ), ADDSET_FILMSIMULATION_STRENGTH, true );
+ mi = behModel->append ();
+ mi->set_value ( behavColumns.label, M ("TP_SOFTLIGHT_LABEL") );
+ appendBehavList ( mi, M ( "TP_SOFTLIGHT_STRENGTH" ), ADDSET_SOFTLIGHT_STRENGTH, true );
+
mi = behModel->append ();
mi->set_value (behavColumns.label, M ("TP_COLORTONING_LABEL"));
appendBehavList (mi, M ("TP_COLORTONING_SPLITCOCO"), ADDSET_COLORTONING_SPLIT, true);
@@ -385,6 +391,19 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
appendBehavList (mi, M ("TP_WAVELET_EDGEDETECTTHR"), ADDSET_WA_EDGEDETECTTHR, true);
appendBehavList (mi, M ("TP_WAVELET_EDGEDETECTTHR2"), ADDSET_WA_EDGEDETECTTHR2, true);
+ mi = behModel->append ();
+ mi->set_value (behavColumns.label, M ("TP_RAW_SENSOR_BAYER_LABEL"));
+ appendBehavList (mi, M ("TP_RAW_FALSECOLOR"), ADDSET_BAYER_FALSE_COLOR_SUPPRESSION, false);
+ appendBehavList (mi, M ("TP_RAW_DCBITERATIONS") + ", " + M("TP_RAW_LMMSEITERATIONS"), ADDSET_BAYER_ITER, false);
+ appendBehavList (mi, M ("TP_RAW_DUALDEMOSAICCONTRAST"), ADDSET_BAYER_DUALDEMOZCONTRAST, false);
+ appendBehavList (mi, M ("TP_RAW_PIXELSHIFTSIGMA"), ADDSET_BAYER_PS_SIGMA, false);
+ appendBehavList (mi, M ("TP_RAW_PIXELSHIFTSMOOTH"), ADDSET_BAYER_PS_SMOOTH, false);
+ appendBehavList (mi, M ("TP_RAW_PIXELSHIFTEPERISO"), ADDSET_BAYER_PS_EPERISO, false);
+
+ mi = behModel->append ();
+ mi->set_value (behavColumns.label, M ("TP_RAW_SENSOR_XTRANS_LABEL"));
+ appendBehavList (mi, M ("TP_RAW_FALSECOLOR"), ADDSET_XTRANS_FALSE_COLOR_SUPPRESSION, false);
+
mi = behModel->append ();
mi->set_value (behavColumns.label, M ("TP_PREPROCESS_LABEL"));
appendBehavList (mi, M ("TP_PREPROCESS_GREENEQUIL"), ADDSET_PREPROCESS_GREENEQUIL, false);
diff --git a/rtgui/profilechangelistener.h b/rtgui/profilechangelistener.h
index b3baa62d7..79705b114 100644
--- a/rtgui/profilechangelistener.h
+++ b/rtgui/profilechangelistener.h
@@ -27,7 +27,7 @@ class ProfileChangeListener
public:
virtual ~ProfileChangeListener() {}
- virtual void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr) {}
+ virtual void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr, bool fromLastSaved = false) {}
virtual void setDefaults (rtengine::procparams::ProcParams* defparams) {}
};
diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc
index 3374f5b86..b1ab05eda 100644
--- a/rtgui/profilepanel.cc
+++ b/rtgui/profilepanel.cc
@@ -797,7 +797,7 @@ void ProfilePanel::initProfile (const Glib::ustring& profileFullPath, ProcParams
if (tpc) {
tpc->setDefaults (lastsaved->pparams);
- tpc->profileChange (lastsaved, EvPhotoLoaded, profiles->getSelectedEntry()->label);
+ tpc->profileChange (lastsaved, EvPhotoLoaded, profiles->getSelectedEntry()->label, nullptr, true);
}
} else {
if (pse) {
diff --git a/rtgui/prsharpening.cc b/rtgui/prsharpening.cc
index 94034b471..8179efcd8 100644
--- a/rtgui/prsharpening.cc
+++ b/rtgui/prsharpening.cc
@@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see .
*/
-#include "prsharpening.h"
#include
+#include "eventmapper.h"
+#include "prsharpening.h"
using namespace rtengine;
using namespace rtengine::procparams;
@@ -25,6 +26,9 @@ using namespace rtengine::procparams;
PrSharpening::PrSharpening () : FoldableToolPanel(this, "prsharpening", M("TP_PRSHARPENING_LABEL"), false, true)
{
+ auto m = ProcEventMapper::getInstance();
+ EvPrShrContrast = m->newEvent(RESIZE, "HISTORY_MSG_PRSHARPEN_CONTRAST");
+
std::vector milestones;
milestones.push_back( GradientMilestone(0.0, 0.0, 0.0, 0.0) );
milestones.push_back( GradientMilestone(1.0, 1.0, 1.0, 1.0) );
@@ -33,6 +37,11 @@ PrSharpening::PrSharpening () : FoldableToolPanel(this, "prsharpening", M("TP_PR
Gtk::HBox* hb = Gtk::manage (new Gtk::HBox ());
hb->show ();
+ contrast = Gtk::manage(new Adjuster (M("TP_SHARPENING_CONTRAST"), 0, 200, 1, 0));
+ contrast->setAdjusterListener (this);
+ pack_start(*contrast);
+ contrast->show();
+
Gtk::Label* ml = Gtk::manage (new Gtk::Label (M("TP_SHARPENING_METHOD") + ":"));
ml->show ();
method = Gtk::manage (new MyComboBoxText ());
@@ -150,6 +159,7 @@ void PrSharpening::read (const ProcParams* pp, const ParamsEdited* pedited)
disableListener ();
if (pedited) {
+ contrast->setEditedState (pedited->prsharpening.contrast ? Edited : UnEdited);
amount->setEditedState (pedited->prsharpening.amount ? Edited : UnEdited);
radius->setEditedState (pedited->prsharpening.radius ? Edited : UnEdited);
threshold->setEditedState (pedited->prsharpening.threshold ? Edited : UnEdited);
@@ -178,6 +188,7 @@ void PrSharpening::read (const ProcParams* pp, const ParamsEdited* pedited)
hcConn.block (false);
lastHaloControl = pp->prsharpening.halocontrol;
+ contrast->setValue (pp->prsharpening.contrast);
amount->setValue (pp->prsharpening.amount);
radius->setValue (pp->prsharpening.radius);
threshold->setValue(pp->prsharpening.threshold);
@@ -219,6 +230,7 @@ void PrSharpening::read (const ProcParams* pp, const ParamsEdited* pedited)
void PrSharpening::write (ProcParams* pp, ParamsEdited* pedited)
{
+ pp->prsharpening.contrast = contrast->getValue ();
pp->prsharpening.amount = (int)amount->getValue();
pp->prsharpening.enabled = getEnabled ();
pp->prsharpening.radius = radius->getValue ();
@@ -240,6 +252,7 @@ void PrSharpening::write (ProcParams* pp, ParamsEdited* pedited)
}
if (pedited) {
+ pedited->prsharpening.contrast = contrast->getEditedState ();
pedited->prsharpening.amount = amount->getEditedState ();
pedited->prsharpening.radius = radius->getEditedState ();
pedited->prsharpening.threshold = threshold->getEditedState ();
@@ -260,6 +273,7 @@ void PrSharpening::write (ProcParams* pp, ParamsEdited* pedited)
void PrSharpening::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited)
{
+ contrast->setDefault (defParams->prsharpening.contrast);
amount->setDefault (defParams->prsharpening.amount);
radius->setDefault (defParams->prsharpening.radius);
threshold->setDefault (defParams->prsharpening.threshold);
@@ -272,6 +286,7 @@ void PrSharpening::setDefaults (const ProcParams* defParams, const ParamsEdited*
ddamping->setDefault (defParams->prsharpening.deconvdamping);
if (pedited) {
+ contrast->setDefaultEditedState (pedited->prsharpening.contrast ? Edited : UnEdited);
amount->setDefaultEditedState (pedited->prsharpening.amount ? Edited : UnEdited);
radius->setDefaultEditedState (pedited->prsharpening.radius ? Edited : UnEdited);
threshold->setDefaultEditedState (pedited->prsharpening.threshold ? Edited : UnEdited);
@@ -283,6 +298,7 @@ void PrSharpening::setDefaults (const ProcParams* defParams, const ParamsEdited*
diter->setDefaultEditedState (pedited->prsharpening.deconviter ? Edited : UnEdited);
ddamping->setDefaultEditedState (pedited->prsharpening.deconvdamping ? Edited : UnEdited);
} else {
+ contrast->setDefaultEditedState (Irrelevant);
amount->setDefaultEditedState (Irrelevant);
radius->setDefaultEditedState (Irrelevant);
threshold->setDefaultEditedState (Irrelevant);
@@ -311,7 +327,9 @@ void PrSharpening::adjusterChanged (Adjuster* a, double newval)
costr = Glib::ustring::format ((int)a->getValue());
}
- if (a == amount) {
+ if (a == contrast) {
+ listener->panelChanged (EvPrShrContrast, costr);
+ } else if (a == amount) {
listener->panelChanged (EvPrShrAmount, costr);
} else if (a == radius) {
listener->panelChanged (EvPrShrRadius, costr);
@@ -457,6 +475,7 @@ void PrSharpening::setBatchMode (bool batchMode)
edgebin->pack_start (*edgebox);
pack_start (*rld);
+ contrast->showEditedCB ();
radius->showEditedCB ();
amount->showEditedCB ();
threshold->showEditedCB ();
@@ -470,9 +489,10 @@ void PrSharpening::setBatchMode (bool batchMode)
method->append (M("GENERAL_UNCHANGED"));
}
-void PrSharpening::setAdjusterBehavior (bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd)
+void PrSharpening::setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd)
{
+ contrast->setAddMode(contrastadd);
radius->setAddMode(radiusadd);
dradius->setAddMode(radiusadd);
amount->setAddMode(amountadd);
@@ -487,6 +507,7 @@ void PrSharpening::setAdjusterBehavior (bool radiusadd, bool amountadd, bool dam
void PrSharpening::trimValues (rtengine::procparams::ProcParams* pp)
{
+ contrast->trimValue(pp->prsharpening.contrast);
radius->trimValue(pp->prsharpening.radius);
dradius->trimValue(pp->prsharpening.deconvradius);
amount->trimValue(pp->prsharpening.amount);
diff --git a/rtgui/prsharpening.h b/rtgui/prsharpening.h
index 50dc91258..bac0b9240 100644
--- a/rtgui/prsharpening.h
+++ b/rtgui/prsharpening.h
@@ -28,6 +28,7 @@ class PrSharpening : public ToolParamBlock, public ThresholdAdjusterListener, pu
{
protected:
+ Adjuster* contrast;
MyComboBoxText* method;
Adjuster* dradius;
Adjuster* damount;
@@ -52,7 +53,7 @@ protected:
Gtk::CheckButton* halocontrol;
bool lastHaloControl;
sigc::connection hcConn;
-
+ rtengine::ProcEvent EvPrShrContrast;
public:
PrSharpening ();
@@ -70,7 +71,7 @@ public:
void method_changed ();
void adjusterChanged (ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR);
- void setAdjusterBehavior (bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd);
+ void setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
diff --git a/rtgui/resize.cc b/rtgui/resize.cc
index 971901b84..d72b606ad 100644
--- a/rtgui/resize.cc
+++ b/rtgui/resize.cc
@@ -18,12 +18,15 @@
*/
#include "resize.h"
#include "guiutils.h"
+#include "eventmapper.h"
using namespace rtengine;
using namespace rtengine::procparams;
Resize::Resize () : FoldableToolPanel(this, "resize", M("TP_RESIZE_LABEL"), false, true), maxw(100000), maxh(100000)
{
+ auto m = ProcEventMapper::getInstance();
+ EvResizeAllowUpscaling = m->newEvent(RESIZE, "HISTORY_MSG_RESIZE_ALLOW_UPSCALING");
cropw = 0;
croph = 0;
@@ -65,7 +68,7 @@ Resize::Resize () : FoldableToolPanel(this, "resize", M("TP_RESIZE_LABEL"), fals
pack_start (*combos, Gtk::PACK_SHRINK, 4);
- scale = new Adjuster (M("TP_RESIZE_SCALE"), 0.01, 4, 0.01, 1.);
+ scale = new Adjuster (M("TP_RESIZE_SCALE"), 0.01, MAX_SCALE, 0.01, 1.);
scale->setAdjusterListener (this);
pack_start (*scale, Gtk::PACK_SHRINK, 4);
@@ -88,18 +91,23 @@ Resize::Resize () : FoldableToolPanel(this, "resize", M("TP_RESIZE_LABEL"), fals
sbox->pack_start (*hbox);
sizeBox->pack_start (*sbox, Gtk::PACK_SHRINK, 0);
+
+ allowUpscaling = Gtk::manage(new Gtk::CheckButton(M("TP_RESIZE_ALLOW_UPSCALING")));
+ sizeBox->pack_start(*allowUpscaling);
+ allowUpscaling->signal_toggled().connect(sigc::mem_fun(*this, &Resize::allowUpscalingChanged));
+
sizeBox->show_all ();
sizeBox->reference ();
w->set_digits (0);
w->set_increments (1, 100);
w->set_value (800);
- w->set_range (32, 4 * maxw);
+ w->set_range (32, MAX_SCALE * maxw);
h->set_digits (0);
h->set_increments (1, 100);
h->set_value (600);
- h->set_range (32, 4 * maxh);
+ h->set_range (32, MAX_SCALE * maxh);
wconn = w->signal_value_changed().connect ( sigc::mem_fun(*this, &Resize::entryWChanged), true);
hconn = h->signal_value_changed().connect ( sigc::mem_fun(*this, &Resize::entryHChanged), true);
@@ -137,6 +145,7 @@ void Resize::read (const ProcParams* pp, const ParamsEdited* pedited)
h->set_value (pp->resize.height);
setEnabled (pp->resize.enabled);
spec->set_active (pp->resize.dataspec);
+ allowUpscaling->set_active(pp->resize.allowUpscaling);
updateGUI();
appliesTo->set_active (0);
@@ -175,6 +184,7 @@ void Resize::read (const ProcParams* pp, const ParamsEdited* pedited)
spec->set_active (4);
}
+ allowUpscaling->set_inconsistent(!pedited->resize.allowUpscaling);
set_inconsistent (multiImage && !pedited->resize.enabled);
}
@@ -214,9 +224,11 @@ void Resize::write (ProcParams* pp, ParamsEdited* pedited)
pp->resize.enabled = getEnabled ();
//printf(" L:%d H:%d\n", pp->resize.width, pp->resize.height);
+ pp->resize.allowUpscaling = allowUpscaling->get_active();
+
if (pedited) {
pedited->resize.enabled = !get_inconsistent();
- pedited->resize.dataspec = dataSpec != 4;
+ pedited->resize.dataspec = dataSpec != MAX_SCALE;
pedited->resize.appliesTo = appliesTo->get_active_row_number() != 2;
pedited->resize.method = method->get_active_row_number() != 3;
@@ -229,6 +241,7 @@ void Resize::write (ProcParams* pp, ParamsEdited* pedited)
pedited->resize.width = false;
pedited->resize.height = false;
}
+ pedited->resize.allowUpscaling = !allowUpscaling->get_inconsistent();
}
}
@@ -370,8 +383,8 @@ void Resize::setDimensions ()
refh = self->maxh;
}
- self->w->set_range(32, 4 * refw);
- self->h->set_range(32, 4 * refh);
+ self->w->set_range(32, MAX_SCALE * refw);
+ self->h->set_range(32, MAX_SCALE * refh);
switch (self->spec->get_active_row_number()) {
case 0: {
@@ -620,6 +633,22 @@ void Resize::enabledChanged ()
}
}
+
+void Resize::allowUpscalingChanged()
+{
+
+ if (listener) {
+ if (allowUpscaling->get_inconsistent()) {
+ listener->panelChanged(EvResizeAllowUpscaling, M("GENERAL_UNCHANGED"));
+ } else if (allowUpscaling->get_active()) {
+ listener->panelChanged(EvResizeAllowUpscaling, M("GENERAL_ENABLED"));
+ } else {
+ listener->panelChanged(EvResizeAllowUpscaling, M("GENERAL_DISABLED"));
+ }
+ }
+}
+
+
void Resize::setAdjusterBehavior (bool scaleadd)
{
diff --git a/rtgui/resize.h b/rtgui/resize.h
index 2b2c2ea26..0534e292a 100644
--- a/rtgui/resize.h
+++ b/rtgui/resize.h
@@ -66,7 +66,9 @@ private:
int getComputedHeight ();
void notifyBBox ();
void updateGUI ();
+ void allowUpscalingChanged();
+ rtengine::ProcEvent EvResizeAllowUpscaling;
Adjuster* scale;
Gtk::VBox* sizeBox;
MyComboBoxText* appliesTo;
@@ -74,12 +76,15 @@ private:
MyComboBoxText* spec;
MySpinButton* w;
MySpinButton* h;
+ Gtk::CheckButton *allowUpscaling;
int maxw, maxh;
int cropw, croph;
sigc::connection sconn, aconn, wconn, hconn;
bool wDirty, hDirty;
ToolParamBlock* packBox;
IdleRegister idle_register;
+
+ static constexpr int MAX_SCALE = 16; // 16 to match the main preview max scale of 1600%
};
#endif
diff --git a/rtgui/sharpening.cc b/rtgui/sharpening.cc
index 9abfc6de8..f3bad9f3a 100644
--- a/rtgui/sharpening.cc
+++ b/rtgui/sharpening.cc
@@ -16,17 +16,25 @@
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see .
*/
-#include "sharpening.h"
#include
+#include "eventmapper.h"
+#include "sharpening.h"
using namespace rtengine;
using namespace rtengine::procparams;
Sharpening::Sharpening () : FoldableToolPanel(this, "sharpening", M("TP_SHARPENING_LABEL"), true, true)
{
+ auto m = ProcEventMapper::getInstance();
+ EvSharpenContrast = m->newEvent(SHARPENING, "HISTORY_MSG_SHARPENING_CONTRAST");
Gtk::HBox* hb = Gtk::manage (new Gtk::HBox ());
hb->show ();
+ contrast = Gtk::manage(new Adjuster (M("TP_SHARPENING_CONTRAST"), 0, 200, 1, 20));
+ contrast->setAdjusterListener (this);
+ pack_start(*contrast);
+ contrast->show();
+
Gtk::Label* ml = Gtk::manage (new Gtk::Label (M("TP_SHARPENING_METHOD") + ":"));
ml->show ();
method = Gtk::manage (new MyComboBoxText ());
@@ -39,8 +47,8 @@ Sharpening::Sharpening () : FoldableToolPanel(this, "sharpening", M("TP_SHARPENI
rld = new Gtk::VBox ();
dradius = Gtk::manage (new Adjuster (M("TP_SHARPENING_EDRADIUS"), 0.4, 2.5, 0.01, 0.75));
- damount = Gtk::manage (new Adjuster (M("TP_SHARPENING_RLD_AMOUNT"), 0.0, 100, 1, 75));
- ddamping = Gtk::manage (new Adjuster (M("TP_SHARPENING_RLD_DAMPING"), 0, 100, 1, 20));
+ damount = Gtk::manage (new Adjuster (M("TP_SHARPENING_RLD_AMOUNT"), 0.0, 100, 1, 100));
+ ddamping = Gtk::manage (new Adjuster (M("TP_SHARPENING_RLD_DAMPING"), 0, 100, 1, 0));
diter = Gtk::manage (new Adjuster (M("TP_SHARPENING_RLD_ITERATIONS"), 5, 100, 1, 30));
rld->pack_start (*dradius);
rld->pack_start (*damount);
@@ -144,6 +152,7 @@ void Sharpening::read (const ProcParams* pp, const ParamsEdited* pedited)
disableListener ();
if (pedited) {
+ contrast->setEditedState (pedited->sharpening.contrast ? Edited : UnEdited);
amount->setEditedState (pedited->sharpening.amount ? Edited : UnEdited);
radius->setEditedState (pedited->sharpening.radius ? Edited : UnEdited);
threshold->setEditedState (pedited->sharpening.threshold ? Edited : UnEdited);
@@ -172,6 +181,7 @@ void Sharpening::read (const ProcParams* pp, const ParamsEdited* pedited)
hcConn.block (false);
lastHaloControl = pp->sharpening.halocontrol;
+ contrast->setValue (pp->sharpening.contrast);
amount->setValue (pp->sharpening.amount);
radius->setValue (pp->sharpening.radius);
threshold->setValue(pp->sharpening.threshold);
@@ -213,6 +223,7 @@ void Sharpening::read (const ProcParams* pp, const ParamsEdited* pedited)
void Sharpening::write (ProcParams* pp, ParamsEdited* pedited)
{
+ pp->sharpening.contrast = contrast->getValue ();
pp->sharpening.amount = (int)amount->getValue();
pp->sharpening.enabled = getEnabled ();
pp->sharpening.radius = radius->getValue ();
@@ -234,6 +245,7 @@ void Sharpening::write (ProcParams* pp, ParamsEdited* pedited)
}
if (pedited) {
+ pedited->sharpening.contrast = contrast->getEditedState ();
pedited->sharpening.amount = amount->getEditedState ();
pedited->sharpening.radius = radius->getEditedState ();
pedited->sharpening.threshold = threshold->getEditedState ();
@@ -253,7 +265,7 @@ void Sharpening::write (ProcParams* pp, ParamsEdited* pedited)
void Sharpening::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited)
{
-
+ contrast->setDefault (defParams->sharpening.contrast);
amount->setDefault (defParams->sharpening.amount);
radius->setDefault (defParams->sharpening.radius);
threshold->setDefault (defParams->sharpening.threshold);
@@ -266,6 +278,7 @@ void Sharpening::setDefaults (const ProcParams* defParams, const ParamsEdited* p
ddamping->setDefault (defParams->sharpening.deconvdamping);
if (pedited) {
+ contrast->setDefaultEditedState (pedited->sharpening.contrast ? Edited : UnEdited);
amount->setDefaultEditedState (pedited->sharpening.amount ? Edited : UnEdited);
radius->setDefaultEditedState (pedited->sharpening.radius ? Edited : UnEdited);
threshold->setDefaultEditedState (pedited->sharpening.threshold ? Edited : UnEdited);
@@ -277,6 +290,7 @@ void Sharpening::setDefaults (const ProcParams* defParams, const ParamsEdited* p
diter->setDefaultEditedState (pedited->sharpening.deconviter ? Edited : UnEdited);
ddamping->setDefaultEditedState (pedited->sharpening.deconvdamping ? Edited : UnEdited);
} else {
+ contrast->setDefaultEditedState (Irrelevant);
amount->setDefaultEditedState (Irrelevant);
radius->setDefaultEditedState (Irrelevant);
threshold->setDefaultEditedState (Irrelevant);
@@ -305,7 +319,9 @@ void Sharpening::adjusterChanged (Adjuster* a, double newval)
costr = Glib::ustring::format ((int)a->getValue());
}
- if (a == amount) {
+ if (a == contrast) {
+ listener->panelChanged (EvSharpenContrast, costr);
+ } else if (a == amount) {
listener->panelChanged (EvShrAmount, costr);
} else if (a == radius) {
listener->panelChanged (EvShrRadius, costr);
@@ -451,6 +467,7 @@ void Sharpening::setBatchMode (bool batchMode)
edgebin->pack_start (*edgebox);
pack_start (*rld);
+ contrast->showEditedCB ();
radius->showEditedCB ();
amount->showEditedCB ();
threshold->showEditedCB ();
@@ -464,9 +481,10 @@ void Sharpening::setBatchMode (bool batchMode)
method->append (M("GENERAL_UNCHANGED"));
}
-void Sharpening::setAdjusterBehavior (bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd)
+void Sharpening::setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd)
{
+ contrast->setAddMode(contrastadd);
radius->setAddMode(radiusadd);
dradius->setAddMode(radiusadd);
amount->setAddMode(amountadd);
@@ -480,7 +498,7 @@ void Sharpening::setAdjusterBehavior (bool radiusadd, bool amountadd, bool dampi
void Sharpening::trimValues (rtengine::procparams::ProcParams* pp)
{
-
+ contrast->trimValue(pp->sharpening.contrast);
radius->trimValue(pp->sharpening.radius);
dradius->trimValue(pp->sharpening.deconvradius);
amount->trimValue(pp->sharpening.amount);
diff --git a/rtgui/sharpening.h b/rtgui/sharpening.h
index 2901036f5..9bcbbbc20 100644
--- a/rtgui/sharpening.h
+++ b/rtgui/sharpening.h
@@ -28,6 +28,7 @@ class Sharpening : public ToolParamBlock, public ThresholdAdjusterListener, publ
{
protected:
+ Adjuster* contrast;
MyComboBoxText* method;
Adjuster* dradius;
Adjuster* damount;
@@ -53,6 +54,7 @@ protected:
bool lastHaloControl;
sigc::connection hcConn;
+ rtengine::ProcEvent EvSharpenContrast;
public:
Sharpening ();
@@ -70,7 +72,7 @@ public:
void halocontrol_toggled ();
void method_changed ();
- void setAdjusterBehavior (bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd);
+ void setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd);
void trimValues (rtengine::procparams::ProcParams* pp);
};
diff --git a/rtgui/sharpenmicro.cc b/rtgui/sharpenmicro.cc
index 871e0d38b..7c2b4d9fb 100644
--- a/rtgui/sharpenmicro.cc
+++ b/rtgui/sharpenmicro.cc
@@ -16,10 +16,11 @@
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see .
*/
+#include
+#include
#include "sharpenmicro.h"
#include "guiutils.h"
-#include
-#include
+#include "eventmapper.h"
using namespace rtengine;
using namespace rtengine::procparams;
@@ -28,28 +29,27 @@ using namespace rtengine::procparams;
SharpenMicro::SharpenMicro () : FoldableToolPanel(this, "sharpenmicro", M("TP_SHARPENMICRO_LABEL"), true, true)
{
+ auto m = ProcEventMapper::getInstance();
+ EvSharpenMicroContrast = m->newEvent(SHARPENING, "HISTORY_MSG_MICROCONTRAST_CONTRAST");
+
+ contrast = Gtk::manage(new Adjuster (M("TP_SHARPENMICRO_CONTRAST"), 0, 100, 1, 20));
+ contrast->setAdjusterListener (this);
+ contrast->show();
+
amount = Gtk::manage(new Adjuster (M("TP_SHARPENMICRO_AMOUNT"), 0, 100, 1, 20));
amount->setAdjusterListener (this);
-
- if (amount->delay < options.adjusterMaxDelay) {
- amount->delay = options.adjusterMaxDelay;
- }
-
amount->show();
+
uniformity = Gtk::manage(new Adjuster (M("TP_SHARPENMICRO_UNIFORMITY"), 0, 100, 10, 50));
-
uniformity->setAdjusterListener (this);
-
- if (uniformity->delay < options.adjusterMaxDelay) {
- uniformity->delay = options.adjusterMaxDelay;
- }
-
uniformity->show();
+
matrix = Gtk::manage (new Gtk::CheckButton (M("TP_SHARPENMICRO_MATRIX")));
matrix->set_active (true);
pack_start(*matrix, Gtk::PACK_SHRINK, 0);
matrix->show ();
+ pack_start( *contrast, Gtk::PACK_SHRINK, 0);
pack_start( *amount, Gtk::PACK_SHRINK, 0);
pack_start( *uniformity, Gtk::PACK_SHRINK, 0);
@@ -64,6 +64,7 @@ void SharpenMicro::read(const ProcParams* pp, const ParamsEdited* pedited)
set_inconsistent (multiImage && !pedited->sharpenMicro.enabled);
matrix->set_inconsistent (!pedited->sharpenMicro.matrix);
amount->setEditedState (pedited->sharpenMicro.amount ? Edited : UnEdited);
+ contrast->setEditedState (pedited->sharpenMicro.contrast ? Edited : UnEdited);
uniformity->setEditedState (pedited->sharpenMicro.uniformity ? Edited : UnEdited);
}
@@ -75,6 +76,7 @@ void SharpenMicro::read(const ProcParams* pp, const ParamsEdited* pedited)
lastmatrix = pp->sharpenMicro.matrix;
amount->setValue (pp->sharpenMicro.amount);
+ contrast->setValue (pp->sharpenMicro.contrast);
uniformity->setValue (pp->sharpenMicro.uniformity);
enableListener ();
@@ -85,12 +87,14 @@ void SharpenMicro::write( ProcParams* pp, ParamsEdited* pedited)
pp->sharpenMicro.enabled = getEnabled();
pp->sharpenMicro.matrix = matrix->get_active ();
pp->sharpenMicro.amount = amount->getValue ();
+ pp->sharpenMicro.contrast = contrast->getValue ();
pp->sharpenMicro.uniformity = uniformity->getValue ();
if (pedited) {
pedited->sharpenMicro.enabled = !get_inconsistent();
pedited->sharpenMicro.matrix = !matrix->get_inconsistent();
pedited->sharpenMicro.amount = amount->getEditedState ();
+ pedited->sharpenMicro.contrast = contrast->getEditedState ();
pedited->sharpenMicro.uniformity = uniformity->getEditedState ();
}
}
@@ -139,9 +143,11 @@ void SharpenMicro::adjusterChanged (Adjuster* a, double newval)
Glib::ustring value = a->getTextValue();
if (a == amount) {
- listener->panelChanged (EvSharpenMicroAmount, value );
+ listener->panelChanged (EvSharpenMicroAmount, value);
+ } else if (a == contrast) {
+ listener->panelChanged (EvSharpenMicroContrast, value);
} else if (a == uniformity) {
- listener->panelChanged (EvSharpenMicroUniformity, value );
+ listener->panelChanged (EvSharpenMicroUniformity, value);
}
}
}
@@ -149,31 +155,37 @@ void SharpenMicro::adjusterChanged (Adjuster* a, double newval)
void SharpenMicro::setBatchMode(bool batchMode)
{
amount->showEditedCB ();
+ contrast->showEditedCB ();
uniformity->showEditedCB ();
}
void SharpenMicro::setDefaults(const ProcParams* defParams, const ParamsEdited* pedited)
{
amount->setDefault (defParams->sharpenMicro.amount);
+ contrast->setDefault (defParams->sharpenMicro.contrast);
uniformity->setDefault (defParams->sharpenMicro.uniformity);
if (pedited) {
amount->setDefaultEditedState (pedited->sharpenMicro.amount ? Edited : UnEdited);
+ contrast->setDefaultEditedState (pedited->sharpenMicro.contrast ? Edited : UnEdited);
uniformity->setDefaultEditedState (pedited->sharpenMicro.uniformity ? Edited : UnEdited);
} else {
amount->setDefaultEditedState (Irrelevant);
+ contrast->setDefaultEditedState (Irrelevant);
uniformity->setDefaultEditedState (Irrelevant);
}
}
-void SharpenMicro::setAdjusterBehavior (bool amountadd, bool uniformityadd )
+void SharpenMicro::setAdjusterBehavior (bool amountadd, bool contrastadd, bool uniformityadd)
{
amount->setAddMode (amountadd);
+ contrast->setAddMode (contrastadd);
uniformity->setAddMode (uniformityadd);
}
void SharpenMicro::trimValues (ProcParams* pp)
{
amount->trimValue (pp->sharpenMicro.amount);
+ contrast->trimValue (pp->sharpenMicro.contrast);
uniformity->trimValue (pp->sharpenMicro.uniformity);
}
diff --git a/rtgui/sharpenmicro.h b/rtgui/sharpenmicro.h
index 03a75eaa5..e1fc0d7e0 100644
--- a/rtgui/sharpenmicro.h
+++ b/rtgui/sharpenmicro.h
@@ -36,6 +36,9 @@ protected:
Gtk::CheckButton* matrix;
Adjuster* amount;
Adjuster* uniformity;
+ Adjuster* contrast;
+
+ rtengine::ProcEvent EvSharpenMicroContrast;
sigc::connection matrixconn;
bool lastmatrix;
@@ -49,7 +52,7 @@ public:
void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
void setBatchMode (bool batchMode);
void trimValues (rtengine::procparams::ProcParams* pp);
- void setAdjusterBehavior (bool amountadd, bool uniformityadd );
+ void setAdjusterBehavior (bool amountadd, bool contrastadd, bool uniformityadd);
void adjusterChanged (Adjuster* a, double newval);
void enabledChanged ();
diff --git a/rtgui/softlight.cc b/rtgui/softlight.cc
new file mode 100644
index 000000000..cac534ce3
--- /dev/null
+++ b/rtgui/softlight.cc
@@ -0,0 +1,115 @@
+/** -*- C++ -*-
+ *
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2018 Alberto Griggio
+ *
+ * RawTherapee is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RawTherapee is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with RawTherapee. If not, see .
+ */
+#include "softlight.h"
+#include "eventmapper.h"
+#include
+#include
+
+using namespace rtengine;
+using namespace rtengine::procparams;
+
+SoftLight::SoftLight(): FoldableToolPanel(this, "softlight", M("TP_SOFTLIGHT_LABEL"), false, true)
+{
+ auto m = ProcEventMapper::getInstance();
+ EvSoftLightEnabled = m->newEvent(RGBCURVE, "HISTORY_MSG_SOFTLIGHT_ENABLED");
+ EvSoftLightStrength = m->newEvent(RGBCURVE, "HISTORY_MSG_SOFTLIGHT_STRENGTH");
+
+ strength = Gtk::manage(new Adjuster(M("TP_SOFTLIGHT_STRENGTH"), 0., 100., 1., 30.));
+ strength->setAdjusterListener(this);
+ strength->show();
+
+ pack_start(*strength);
+}
+
+
+void SoftLight::read(const ProcParams *pp, const ParamsEdited *pedited)
+{
+ disableListener();
+
+ if (pedited) {
+ strength->setEditedState(pedited->softlight.strength ? Edited : UnEdited);
+ set_inconsistent(multiImage && !pedited->softlight.enabled);
+ }
+
+ setEnabled(pp->softlight.enabled);
+ strength->setValue(pp->softlight.strength);
+
+ enableListener();
+}
+
+
+void SoftLight::write(ProcParams *pp, ParamsEdited *pedited)
+{
+ pp->softlight.strength = strength->getValue();
+ pp->softlight.enabled = getEnabled();
+
+ if (pedited) {
+ pedited->softlight.strength = strength->getEditedState();
+ pedited->softlight.enabled = !get_inconsistent();
+ }
+}
+
+void SoftLight::setDefaults(const ProcParams *defParams, const ParamsEdited *pedited)
+{
+ strength->setDefault(defParams->softlight.strength);
+
+ if (pedited) {
+ strength->setDefaultEditedState(pedited->softlight.strength ? Edited : UnEdited);
+ } else {
+ strength->setDefaultEditedState(Irrelevant);
+ }
+}
+
+
+void SoftLight::adjusterChanged(Adjuster* a, double newval)
+{
+ if (listener && getEnabled()) {
+ listener->panelChanged(EvSoftLightStrength, a->getTextValue());
+ }
+}
+
+
+void SoftLight::enabledChanged ()
+{
+ if (listener) {
+ if (get_inconsistent()) {
+ listener->panelChanged(EvSoftLightEnabled, M("GENERAL_UNCHANGED"));
+ } else if (getEnabled()) {
+ listener->panelChanged(EvSoftLightEnabled, M("GENERAL_ENABLED"));
+ } else {
+ listener->panelChanged(EvSoftLightEnabled, M("GENERAL_DISABLED"));
+ }
+ }
+}
+
+
+void SoftLight::setBatchMode(bool batchMode)
+{
+ ToolPanel::setBatchMode(batchMode);
+
+ strength->showEditedCB();
+}
+
+
+void SoftLight::setAdjusterBehavior(bool strengthAdd)
+{
+ strength->setAddMode(strengthAdd);
+}
+
diff --git a/rtgui/softlight.h b/rtgui/softlight.h
new file mode 100644
index 000000000..dc51ac730
--- /dev/null
+++ b/rtgui/softlight.h
@@ -0,0 +1,47 @@
+/** -*- C++ -*-
+ *
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2018 Alberto Griggio
+ *
+ * RawTherapee is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RawTherapee is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with RawTherapee. If not, see .
+ */
+#pragma once
+
+#include
+#include "adjuster.h"
+#include "toolpanel.h"
+
+class SoftLight: public ToolParamBlock, public AdjusterListener, public FoldableToolPanel
+{
+private:
+ Adjuster *strength;
+
+ rtengine::ProcEvent EvSoftLightEnabled;
+ rtengine::ProcEvent EvSoftLightStrength;
+
+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 adjusterChanged(Adjuster *a, double newval);
+ void enabledChanged();
+ void setAdjusterBehavior(bool strengthAdd);
+};
+
diff --git a/rtgui/thumbbrowserbase.cc b/rtgui/thumbbrowserbase.cc
index 2d27550bc..829aec9f7 100644
--- a/rtgui/thumbbrowserbase.cc
+++ b/rtgui/thumbbrowserbase.cc
@@ -501,8 +501,8 @@ void ThumbBrowserBase::configScrollBars ()
vscroll.get_adjustment()->set_upper (inH);
hscroll.get_adjustment()->set_lower (0);
vscroll.get_adjustment()->set_lower (0);
- hscroll.get_adjustment()->set_step_increment (32);
- vscroll.get_adjustment()->set_step_increment (32);
+ hscroll.get_adjustment()->set_step_increment (!fd.empty() ? fd[0]->getEffectiveHeight() : 0);
+ vscroll.get_adjustment()->set_step_increment (!fd.empty() ? fd[0]->getEffectiveHeight() : 0);
hscroll.get_adjustment()->set_page_increment (iw);
vscroll.get_adjustment()->set_page_increment (ih);
hscroll.get_adjustment()->set_page_size (iw);
@@ -567,7 +567,7 @@ void ThumbBrowserBase::arrangeFiles()
MYREADERLOCK_RELEASE(l);
// This will require a Writer access
- resizeThumbnailArea(currx, rowHeight);
+ resizeThumbnailArea(currx, !fd.empty() ? fd[0]->getEffectiveHeight() : rowHeight);
} else {
const int availWidth = internal.get_width();
diff --git a/rtgui/thumbbrowserentrybase.cc b/rtgui/thumbbrowserentrybase.cc
index 2fff95904..34557ccc4 100644
--- a/rtgui/thumbbrowserentrybase.cc
+++ b/rtgui/thumbbrowserentrybase.cc
@@ -23,6 +23,103 @@
#include "../rtengine/mytime.h"
+namespace
+{
+
+Glib::ustring getPaddedName(const Glib::ustring& name)
+{
+ enum class State {
+ OTHER,
+ NUMBER
+ };
+
+ constexpr unsigned int pad_width = 16;
+
+ Glib::ustring res;
+
+ State state = State::OTHER;
+ Glib::ustring number;
+
+ for (auto c : name) {
+ switch (state) {
+ case State::OTHER: {
+ switch (c) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': {
+ number += c;
+
+ state = State::NUMBER;
+ break;
+ }
+
+ default: {
+ res += c;
+ break;
+ }
+ }
+ break;
+ }
+
+ case State::NUMBER: {
+ switch (c) {
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': {
+ number += c;
+ break;
+ }
+
+ default: {
+ if (number.size() < pad_width) {
+ res.append(pad_width - number.size(), '0');
+ }
+ res += number;
+ res += c;
+ number.clear();
+
+ state = State::OTHER;
+ break;
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ switch (state) {
+ case State::OTHER: {
+ break;
+ }
+
+ case State::NUMBER: {
+ if (number.size() < pad_width) {
+ res.append(pad_width - number.size(), '0');
+ }
+ res += number;
+ break;
+ }
+ }
+
+ return res;
+}
+
+}
+
ThumbBrowserEntryBase::ThumbBrowserEntryBase (const Glib::ustring& fname) :
fnlabw(0),
fnlabh(0),
@@ -57,7 +154,7 @@ ThumbBrowserEntryBase::ThumbBrowserEntryBase (const Glib::ustring& fname) :
bbFramed(false),
bbPreview(nullptr),
cursor_type(CSUndefined),
- collate_name(dispname.casefold().collate_key()),
+ collate_name(getPaddedName(dispname).casefold_collate_key()),
thumbnail(nullptr),
filename(fname),
shortname(dispname),
diff --git a/rtgui/thumbbrowserentrybase.h b/rtgui/thumbbrowserentrybase.h
index 0ebf597e2..8237b7c6b 100644
--- a/rtgui/thumbbrowserentrybase.h
+++ b/rtgui/thumbbrowserentrybase.h
@@ -19,12 +19,15 @@
#ifndef _THUMBNAILBROWSERENTRYBASE_
#define _THUMBNAILBROWSERENTRYBASE_
+#include
+
#include
-#include "lwbuttonset.h"
-#include "thumbnail.h"
-#include "threadutils.h"
-#include "guiutils.h"
+
#include "cursormanager.h"
+#include "guiutils.h"
+#include "lwbuttonset.h"
+#include "threadutils.h"
+#include "thumbnail.h"
class ThumbBrowserBase;
class ThumbBrowserEntryBase
@@ -71,7 +74,7 @@ protected:
int ofsX, ofsY; // offset due to the scrolling of the parent
- int redrawRequests;
+ std::atomic redrawRequests;
ThumbBrowserBase* parent;
ThumbBrowserEntryBase* original;
diff --git a/rtgui/thumbimageupdater.cc b/rtgui/thumbimageupdater.cc
index 696c68811..992b38812 100644
--- a/rtgui/thumbimageupdater.cc
+++ b/rtgui/thumbimageupdater.cc
@@ -17,9 +17,13 @@
* along with RawTherapee. If not, see .
*/
+#include
#include
-#include "thumbimageupdater.h"
+
#include
+
+#include "thumbimageupdater.h"
+
#include "guiutils.h"
#include "threadutils.h"
@@ -83,7 +87,7 @@ public:
JobList jobs_;
- unsigned int active_;
+ std::atomic active_;
bool inactive_waiting_;
@@ -157,13 +161,11 @@ public:
j.listener_->updateImage(img, scale, thm->getProcParams().crop);
}
- {
+ if ( --active_ == 0 ) {
Glib::Threads::Mutex::Lock lock(mutex_);
-
- if ( --active_ == 0 &&
- inactive_waiting_ ) {
+ if (inactive_waiting_) {
inactive_waiting_ = false;
- inactive_.signal();
+ inactive_.broadcast();
}
}
}
@@ -181,8 +183,7 @@ ThumbImageUpdater::ThumbImageUpdater():
{
}
-void
-ThumbImageUpdater::add(ThumbBrowserEntryBase* tbe, bool* priority, bool upgrade, ThumbImageUpdateListener* l)
+void ThumbImageUpdater::add(ThumbBrowserEntryBase* tbe, bool* priority, bool upgrade, ThumbImageUpdateListener* l)
{
// nobody listening?
if ( l == nullptr ) {
@@ -216,49 +217,51 @@ ThumbImageUpdater::add(ThumbBrowserEntryBase* tbe, bool* priority, bool upgrade,
}
-void
-ThumbImageUpdater::removeJobs(ThumbImageUpdateListener* listener)
+void ThumbImageUpdater::removeJobs(ThumbImageUpdateListener* listener)
{
DEBUG("removeJobs(%p)", listener);
- Glib::Threads::Mutex::Lock lock(impl_->mutex_);
+ {
+ Glib::Threads::Mutex::Lock lock(impl_->mutex_);
- for( Impl::JobList::iterator i(impl_->jobs_.begin()); i != impl_->jobs_.end(); ) {
- if (i->listener_ == listener) {
- DEBUG("erasing specific job");
- Impl::JobList::iterator e(i++);
- impl_->jobs_.erase(e);
- } else {
- ++i;
+ for( Impl::JobList::iterator i(impl_->jobs_.begin()); i != impl_->jobs_.end(); ) {
+ if (i->listener_ == listener) {
+ DEBUG("erasing specific job");
+ Impl::JobList::iterator e(i++);
+ impl_->jobs_.erase(e);
+ } else {
+ ++i;
+ }
}
}
while ( impl_->active_ != 0 ) {
- // XXX this is nasty... it would be nicer if we weren't called with
- // this lock held
- GThreadUnLock unlock;
DEBUG("waiting for running jobs1");
- impl_->inactive_waiting_ = true;
- impl_->inactive_.wait(impl_->mutex_);
+ {
+ Glib::Threads::Mutex::Lock lock(impl_->mutex_);
+ impl_->inactive_waiting_ = true;
+ impl_->inactive_.wait(impl_->mutex_);
+ }
}
}
-void
-ThumbImageUpdater::removeAllJobs()
+void ThumbImageUpdater::removeAllJobs()
{
DEBUG("stop");
- Glib::Threads::Mutex::Lock lock(impl_->mutex_);
+ {
+ Glib::Threads::Mutex::Lock lock(impl_->mutex_);
- impl_->jobs_.clear();
+ impl_->jobs_.clear();
+ }
while ( impl_->active_ != 0 ) {
- // XXX this is nasty... it would be nicer if we weren't called with
- // this lock held
- GThreadUnLock unlock;
DEBUG("waiting for running jobs2");
- impl_->inactive_waiting_ = true;
- impl_->inactive_.wait(impl_->mutex_);
+ {
+ Glib::Threads::Mutex::Lock lock(impl_->mutex_);
+ impl_->inactive_waiting_ = true;
+ impl_->inactive_.wait(impl_->mutex_);
+ }
}
}
diff --git a/rtgui/tonecurve.cc b/rtgui/tonecurve.cc
index be683c3ee..30c9dadee 100644
--- a/rtgui/tonecurve.cc
+++ b/rtgui/tonecurve.cc
@@ -243,6 +243,7 @@ void ToneCurve::read (const ProcParams* pp, const ParamsEdited* pedited)
toneCurveMode2->set_active(rtengine::toUnderlying(pp->toneCurve.curveMode2));
histmatching->set_active(pp->toneCurve.histmatching);
+ fromHistMatching = pp->toneCurve.fromHistMatching;
clampOOG->set_active(pp->toneCurve.clampOOG);
if (pedited) {
@@ -366,6 +367,7 @@ void ToneCurve::write (ProcParams* pp, ParamsEdited* pedited)
}
pp->toneCurve.histmatching = histmatching->get_active();
+ pp->toneCurve.fromHistMatching = fromHistMatching;
pp->toneCurve.clampOOG = clampOOG->get_active();
if (pedited) {
@@ -386,6 +388,7 @@ void ToneCurve::write (ProcParams* pp, ParamsEdited* pedited)
pedited->toneCurve.method = method->get_active_row_number() != 4;
pedited->toneCurve.hrenabled = !hrenabled->get_inconsistent();
pedited->toneCurve.histmatching = !histmatching->get_inconsistent();
+ pedited->toneCurve.fromHistMatching = true;
pedited->toneCurve.clampOOG = !clampOOG->get_inconsistent();
}
@@ -916,6 +919,7 @@ void ToneCurve::updateCurveBackgroundHistogram (LUTu & histToneCurve, LUTu & his
void ToneCurve::setHistmatching(bool enabled)
{
+ fromHistMatching = enabled;
if (histmatching->get_active()) {
histmatchconn.block(true);
histmatching->set_active(enabled);
@@ -930,6 +934,7 @@ void ToneCurve::histmatchingToggled()
if (listener) {
if (!batchMode) {
if (histmatching->get_active()) {
+ fromHistMatching = false;
listener->panelChanged(EvHistMatching, M("GENERAL_ENABLED"));
waitForAutoExp();
} else {
@@ -984,6 +989,7 @@ bool ToneCurve::histmatchingComputed()
shape->openIfNonlinear();
enableListener();
+ fromHistMatching = true;
return false;
}
diff --git a/rtgui/tonecurve.h b/rtgui/tonecurve.h
index 7d4440e2c..ce431986a 100644
--- a/rtgui/tonecurve.h
+++ b/rtgui/tonecurve.h
@@ -58,6 +58,7 @@ protected:
MyComboBoxText* toneCurveMode;
MyComboBoxText* toneCurveMode2;
Gtk::ToggleButton *histmatching;
+ bool fromHistMatching;
Gtk::CheckButton *clampOOG;
bool clipDirty, lastAuto;
diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc
index c674ec861..5a69119c2 100644
--- a/rtgui/toolpanelcoord.cc
+++ b/rtgui/toolpanelcoord.cc
@@ -76,6 +76,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan
dirpyrequalizer = Gtk::manage (new DirPyrEqualizer ());
hsvequalizer = Gtk::manage (new HSVEqualizer ());
filmSimulation = Gtk::manage (new FilmSimulation ());
+ softlight = Gtk::manage(new SoftLight());
sensorbayer = Gtk::manage (new SensorBayer ());
sensorxtrans = Gtk::manage (new SensorXTrans ());
bayerprocess = Gtk::manage (new BayerProcess ());
@@ -111,6 +112,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan
addPanel (detailsPanel, sharpenMicro);
addPanel (colorPanel, hsvequalizer);
addPanel (colorPanel, filmSimulation);
+ addPanel (colorPanel, softlight);
addPanel (colorPanel, rgbcurves);
addPanel (colorPanel, colortoning);
addPanel (exposurePanel, epd);
@@ -401,7 +403,7 @@ void ToolPanelCoordinator::panelChanged (rtengine::ProcEvent event, const Glib::
}
}
-void ToolPanelCoordinator::profileChange (const PartialProfile *nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited)
+void ToolPanelCoordinator::profileChange (const PartialProfile *nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited, bool fromLastSave)
{
int fw, fh, tr;
@@ -423,7 +425,7 @@ void ToolPanelCoordinator::profileChange (const PartialProfile *nparams, rtengi
}
// And apply the partial profile nparams to mergedParams
- nparams->applyTo (mergedParams);
+ nparams->applyTo (mergedParams, fromLastSave);
// Derive the effective changes, if it's a profile change, to prevent slow RAW rerendering if not necessary
bool filterRawRefresh = false;
@@ -656,6 +658,16 @@ void ToolPanelCoordinator::spotWBselected (int x, int y, Thumbnail* thm)
}
}
+void ToolPanelCoordinator::sharpMaskSelected(bool sharpMask)
+{
+
+ if (!ipc) {
+ return;
+ }
+ ipc->beginUpdateParams ();
+ ipc->setSharpMask(sharpMask);
+ ipc->endUpdateParams (rtengine::EvShrEnabled);
+}
diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h
index 5b9822ef2..3b70b392d 100644
--- a/rtgui/toolpanelcoord.h
+++ b/rtgui/toolpanelcoord.h
@@ -79,6 +79,7 @@
#include "prsharpening.h"
#include "fattaltonemap.h"
#include "localcontrast.h"
+#include "softlight.h"
#include "guiutils.h"
class ImageEditorCoordinator;
@@ -134,6 +135,7 @@ protected:
Wavelet * wavelet;
DirPyrEqualizer* dirpyrequalizer;
HSVEqualizer* hsvequalizer;
+ SoftLight *softlight;
FilmSimulation *filmSimulation;
SensorBayer * sensorbayer;
SensorXTrans * sensorxtrans;
@@ -220,7 +222,7 @@ public:
void imageTypeChanged (bool isRaw, bool isBayer, bool isXtrans, bool isMono = false);
// profilechangelistener interface
- void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr);
+ void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr, bool fromLastSave = false);
void setDefaults (rtengine::procparams::ProcParams* defparams);
// DirSelectionListener interface
@@ -280,6 +282,7 @@ public:
// imageareatoollistener interface
void spotWBselected (int x, int y, Thumbnail* thm = nullptr);
+ void sharpMaskSelected (bool sharpMask);
void cropSelectionReady ();
void rotateSelectionReady (double rotate_deg, Thumbnail* thm = nullptr);
ToolBar* getToolBar ()
diff --git a/rtgui/xtransprocess.cc b/rtgui/xtransprocess.cc
index 9e0c94ea0..27b5810c4 100644
--- a/rtgui/xtransprocess.cc
+++ b/rtgui/xtransprocess.cc
@@ -16,6 +16,7 @@
* You should have received a copy of the GNU General Public License
* along with RawTherapee. If not, see .
*/
+#include "eventmapper.h"
#include "xtransprocess.h"
#include "options.h"
#include "guiutils.h"
@@ -25,6 +26,9 @@ using namespace rtengine::procparams;
XTransProcess::XTransProcess () : FoldableToolPanel(this, "xtransprocess", M("TP_RAW_LABEL"), true)
{
+ auto m = ProcEventMapper::getInstance();
+ EvDemosaicContrast = m->newEvent(DEMOSAIC, "HISTORY_MSG_DUALDEMOSAIC_CONTRAST");
+
Gtk::HBox* hb1 = Gtk::manage (new Gtk::HBox ());
hb1->pack_start (*Gtk::manage (new Gtk::Label ( M("TP_RAW_DMETHOD") + ": ")), Gtk::PACK_SHRINK, 4);
method = Gtk::manage (new MyComboBoxText ());
@@ -63,6 +67,19 @@ XTransProcess::XTransProcess () : FoldableToolPanel(this, "xtransprocess", M("TP
hb1->pack_end (*method, Gtk::PACK_EXPAND_WIDGET, 4);
pack_start( *hb1, Gtk::PACK_SHRINK, 4);
+ dualDemosaicOptions = Gtk::manage (new Gtk::VBox ());
+
+ dualDemosaicContrast = Gtk::manage(new Adjuster (M("TP_RAW_DUALDEMOSAICCONTRAST"), 0, 100, 1, 20));
+ dualDemosaicContrast->setAdjusterListener (this);
+
+ if (dualDemosaicContrast->delay < options.adjusterMaxDelay) {
+ dualDemosaicContrast->delay = options.adjusterMaxDelay;
+ }
+
+ dualDemosaicContrast->show();
+ dualDemosaicOptions->pack_start(*dualDemosaicContrast);
+ pack_start( *dualDemosaicOptions, Gtk::PACK_SHRINK, 4);
+
pack_start( *Gtk::manage( new Gtk::HSeparator()), Gtk::PACK_SHRINK, 0 );
ccSteps = Gtk::manage (new Adjuster (M("TP_RAW_FALSECOLOR"), 0, 5, 1, 0 ));
ccSteps->setAdjusterListener (this);
@@ -83,8 +100,6 @@ void XTransProcess::read(const rtengine::procparams::ProcParams* pp, const Param
disableListener ();
methodconn.block (true);
- method->set_active(std::numeric_limits::max());
-
for (size_t i = 0; i < RAWParams::XTransSensor::getMethodStrings().size(); ++i)
if( pp->raw.xtranssensor.method == RAWParams::XTransSensor::getMethodStrings()[i]) {
method->set_active(i);
@@ -93,14 +108,19 @@ void XTransProcess::read(const rtengine::procparams::ProcParams* pp, const Param
}
if(pedited ) {
+ dualDemosaicContrast->setEditedState ( pedited->raw.xtranssensor.dualDemosaicContrast ? Edited : UnEdited);
ccSteps->setEditedState (pedited->raw.xtranssensor.ccSteps ? Edited : UnEdited);
if( !pedited->raw.xtranssensor.method ) {
- method->set_active(std::numeric_limits::max()); // No name
+ method->set_active_text(M("GENERAL_UNCHANGED"));
}
}
-
+ dualDemosaicContrast->setValue (pp->raw.xtranssensor.dualDemosaicContrast);
ccSteps->setValue (pp->raw.xtranssensor.ccSteps);
+ if (!batchMode) {
+ dualDemosaicOptions->set_visible(pp->raw.xtranssensor.method == procparams::RAWParams::XTransSensor::getMethodString(procparams::RAWParams::XTransSensor::Method::FOUR_PASS)
+ || pp->raw.xtranssensor.method == procparams::RAWParams::XTransSensor::getMethodString(procparams::RAWParams::XTransSensor::Method::TWO_PASS));
+ }
methodconn.block (false);
@@ -109,35 +129,47 @@ void XTransProcess::read(const rtengine::procparams::ProcParams* pp, const Param
void XTransProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedited)
{
+ pp->raw.xtranssensor.dualDemosaicContrast = dualDemosaicContrast->getValue();
pp->raw.xtranssensor.ccSteps = ccSteps->getIntValue();
int currentRow = method->get_active_row_number();
- if (currentRow >= 0 && currentRow < std::numeric_limits::max()) {
+ if (currentRow >= 0 && method->get_active_text() != M("GENERAL_UNCHANGED")) {
pp->raw.xtranssensor.method = procparams::RAWParams::XTransSensor::getMethodStrings()[currentRow];
}
if (pedited) {
- pedited->raw.xtranssensor.method = method->get_active_row_number() != std::numeric_limits::max();
+ pedited->raw.xtranssensor.method = method->get_active_text() != M("GENERAL_UNCHANGED");
+ pedited->raw.xtranssensor.dualDemosaicContrast = dualDemosaicContrast->getEditedState ();
pedited->raw.xtranssensor.ccSteps = ccSteps->getEditedState ();
}
}
+void XTransProcess::setAdjusterBehavior (bool falsecoloradd, bool dualDemosaicContrastAdd)
+{
+ dualDemosaicContrast->setAddMode(dualDemosaicContrastAdd);
+ ccSteps->setAddMode(falsecoloradd);
+}
+
void XTransProcess::setBatchMode(bool batchMode)
{
method->append (M("GENERAL_UNCHANGED"));
- method->set_active(std::numeric_limits::max()); // No name
+ method->set_active_text(M("GENERAL_UNCHANGED"));
ToolPanel::setBatchMode (batchMode);
+ dualDemosaicContrast->showEditedCB ();
ccSteps->showEditedCB ();
}
void XTransProcess::setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited)
{
+ dualDemosaicContrast->setDefault( defParams->raw.xtranssensor.dualDemosaicContrast);
ccSteps->setDefault (defParams->raw.xtranssensor.ccSteps);
if (pedited) {
+ dualDemosaicContrast->setDefaultEditedState( pedited->raw.xtranssensor.dualDemosaicContrast ? Edited : UnEdited);
ccSteps->setDefaultEditedState(pedited->raw.xtranssensor.ccSteps ? Edited : UnEdited);
} else {
+ dualDemosaicContrast->setDefaultEditedState(Irrelevant );
ccSteps->setDefaultEditedState(Irrelevant );
}
}
@@ -147,6 +179,8 @@ void XTransProcess::adjusterChanged (Adjuster* a, double newval)
if (listener) {
if (a == ccSteps) {
listener->panelChanged (EvDemosaicFalseColorIter, a->getTextValue() );
+ } else if (a == dualDemosaicContrast) {
+ listener->panelChanged (EvDemosaicContrast, a->getTextValue() );
}
}
}
@@ -154,22 +188,22 @@ void XTransProcess::adjusterChanged (Adjuster* a, double newval)
void XTransProcess::methodChanged ()
{
const int curSelection = method->get_active_row_number();
- const RAWParams::XTransSensor::Method method = RAWParams::XTransSensor::Method(curSelection);
-
- Glib::ustring methodName;
- bool ppreq = false;
-
- if (curSelection >= 0 && curSelection < std::numeric_limits::max()) {
- methodName = RAWParams::XTransSensor::getMethodStrings()[curSelection];
-
- if (method == RAWParams::XTransSensor::Method::MONO || RAWParams::XTransSensor::Method(oldSelection) == RAWParams::XTransSensor::Method::MONO) {
- ppreq = true;
- }
- }
+ const RAWParams::XTransSensor::Method currentMethod = RAWParams::XTransSensor::Method(curSelection);
oldSelection = curSelection;
- if (listener) {
- listener->panelChanged (ppreq ? EvDemosaicMethodPreProc : EvDemosaicMethod, methodName);
+ if (!batchMode) {
+ if (currentMethod == procparams::RAWParams::XTransSensor::Method::FOUR_PASS || currentMethod == procparams::RAWParams::XTransSensor::Method::TWO_PASS) {
+ dualDemosaicOptions->show();
+ } else {
+ dualDemosaicOptions->hide();
+ }
+
+ }
+ if (listener && method->get_active_row_number() >= 0) {
+ listener->panelChanged (
+ currentMethod == RAWParams::XTransSensor::Method::MONO || RAWParams::XTransSensor::Method(oldSelection) == RAWParams::XTransSensor::Method::MONO
+ ? EvDemosaicMethodPreProc
+ : EvDemosaicMethod, method->get_active_text());
}
}
diff --git a/rtgui/xtransprocess.h b/rtgui/xtransprocess.h
index 44ed2e670..edc0965b8 100644
--- a/rtgui/xtransprocess.h
+++ b/rtgui/xtransprocess.h
@@ -32,21 +32,25 @@ protected:
MyComboBoxText* method;
Adjuster* ccSteps;
+ Gtk::VBox *dualDemosaicOptions;
+ Adjuster* dualDemosaicContrast;
int oldSelection;
sigc::connection methodconn;
+ rtengine::ProcEvent EvDemosaicContrast;
public:
XTransProcess ();
- 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);
+ void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
+ void setAdjusterBehavior(bool falsecoloradd, bool dualDemosaicContrastAdd);
+ void setBatchMode(bool batchMode);
+ void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void methodChanged ();
- void adjusterChanged (Adjuster* a, double newval);
+ void methodChanged();
+ void adjusterChanged(Adjuster* a, double newval);
};
#endif