diff --git a/COMPILE.txt b/COMPILE.txt
index 013fda0ca..08ba4ae59 100644
--- a/COMPILE.txt
+++ b/COMPILE.txt
@@ -1,44 +1,80 @@
+If you have problems with the compilation, identified the reason and fixed
+the bug, please send me the updated build scripts (CMakeLists.txt files) to:
+hgabor@rawtherapee.com
Windows
-------
-Requirements:
-- MinGW + MSYS
-- CMake
-- GTK and GTKMM development environments
+ METHOD 1:
+ Requirements:
+ - MinGW + MSYS
+ - CMake
+ - GTK and GTKMM development environments
+
+ Compile:
+ - Start MSYS
+ - Enter the root directory of the RawTherapee source tree
+ - Type: cmake -G "MSYS Makefiles" .
+ - Type: make install
+ - You find the compiled program in the release directory
-Compile:
-- Start MSYS
-- Enter the root directory of the RawTherapee source tree
-- Type: cmake -G "MSYS Makefiles" .
-- Type: make install
-- You find the compiled program in the release directory
+ METHOD 2:
+ Requirements:
+ - tdm-gcc (http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.5.1.exe/download)
+ - cmake (http://www.cmake.org/cmake/resources/software.html)
+ - mercurial (http://mercurial.selenic.com/wiki/WindowsInstall)
+ - gtkmm (http://ftp.se.debian.org/pub/gnome/binaries/win32/gtkmm/2.22/)
+
+ Compile:
+ - Enter the root directory of the RawTherapee source tree
+ - Type: cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=.
+ - Type: mingw32-make.exe install
+ - You find the compiled program in the "release" directory
Linux
-----
-Requirements:
-- CMake
-- GTK and GTKMM development packages
-- libtiff, libpng, libjpeg, lcms, libiptcdata development packages
-- ...did I forget something?
+ Requirements:
+ - CMake
+ - GTK and GTKMM development packages
+ - libtiff, libpng, libjpeg, lcms, libiptcdata development packages
+ - ...did I forget something?
-On Ubuntu/Debian the requirements can be installed by running:
-sudo apt-get install build-essential cmake libgtk2.0-dev libgtkmm-2.4-dev libtiff-dev libpng-dev libjpeg-dev liblcms-dev libiptcdata-dev merciurial
+ On Ubuntu/Debian the requirements can be installed by running:
+ sudo apt-get install build-essential cmake libgtk2.0-dev libgtkmm-2.4-dev libtiff-dev libpng-dev libjpeg-dev liblcms-dev libiptcdata-dev merciurial
-Compile:
-- Enter the root directory of the RawTherapee source tree
-- Type: cmake -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=.
-- Type: make install
-- You find the compiled program in the release directory (you can copy it
-anywhere you want)
+ Compile:
+ - Enter the root directory of the RawTherapee source tree
+ - Type: cmake -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=.
+ - Type: make install
+ - You find the compiled program in the release directory (you can copy it
+ anywhere you want)
-(By changing the cmake flags, you can change where the release is. By removing all flags it should go to the standard system install location).
+ (By changing the cmake flags, you can change where the release is. By removing all flags it should go to the standard system install location).
-...If you have problems with the compilation, identified the reason and fixed
-the bug, please send me the updated build scripts (CMakeLists.txt files) to:
-hgabor@rawtherapee.com
+ Using Eclipse under Linux:
+
+ Eclipse mercurial plugin:
+ click Help -> Install new Software.
+ The Eclipse Update Site for MercurialEclipse is available at this URL:
+ http://cbes.javaforge.com/update
+
+ Import the rawtherapee mercurial repository:
+ File->new->'other'->mercurial->Clone existing repository
+ fill in URL: https://rawtherapee.googlecode.com/hg
+
+ Enter root directory of RawTherapee source tree from a terminal window.
+ configure the source for Eclipse with:
+ cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_INSTALL_PREFIX=./release -DBINDIR=. -DDATADIR=. -DLIBDIR=. -DCMAKE_BUILD_TYPE=Release
+
+ Eclipse does not do 'make install' but only 'make all' so to get the release there are 2 ways.
+ 1. type 'make install' in the console or,
+ 2. in 'Project'->'properties'->'C/C++ Make Project'->'Build (incremental build)' change 'all' to 'install'
+
+
+...
+
OSX
---
diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala
index 972811e43..1493e59c6 100644
--- a/rtdata/languages/Catala
+++ b/rtdata/languages/Catala
@@ -598,7 +598,7 @@ ZOOMBAR_SMALL;Petit
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -649,6 +649,12 @@ ZOOMBAR_SMALL;Petit
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -656,26 +662,42 @@ ZOOMBAR_SMALL;Petit
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -684,6 +706,11 @@ ZOOMBAR_SMALL;Petit
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified)
index af3bec853..9b21d8c71 100644
--- a/rtdata/languages/Chinese (Simplified)
+++ b/rtdata/languages/Chinese (Simplified)
@@ -602,7 +602,7 @@ ZOOMBAR_SMALL;小
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -653,6 +653,12 @@ ZOOMBAR_SMALL;小
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -660,26 +666,42 @@ ZOOMBAR_SMALL;小
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -688,6 +710,11 @@ ZOOMBAR_SMALL;小
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional)
index 9645fe547..bc80b9a9d 100644
--- a/rtdata/languages/Chinese (Traditional)
+++ b/rtdata/languages/Chinese (Traditional)
@@ -615,7 +615,7 @@ ZOOMBAR_SMALL;小
!!!!!!!!!!!!!!!!!!!!!!!!!
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -656,6 +656,12 @@ ZOOMBAR_SMALL;小
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -663,25 +669,41 @@ ZOOMBAR_SMALL;小
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -690,6 +712,11 @@ ZOOMBAR_SMALL;小
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech
index d9fdd1691..f63fdee13 100644
--- a/rtdata/languages/Czech
+++ b/rtdata/languages/Czech
@@ -602,7 +602,7 @@ ZOOMBAR_SMALL;Malý
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -653,6 +653,12 @@ ZOOMBAR_SMALL;Malý
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -660,25 +666,41 @@ ZOOMBAR_SMALL;Malý
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -687,6 +709,11 @@ ZOOMBAR_SMALL;Malý
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk
index 085fb18d6..6425c8827 100644
--- a/rtdata/languages/Dansk
+++ b/rtdata/languages/Dansk
@@ -600,7 +600,7 @@ ZOOMBAR_SMALL;Lille
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -651,6 +651,12 @@ ZOOMBAR_SMALL;Lille
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -658,26 +664,42 @@ ZOOMBAR_SMALL;Lille
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -686,6 +708,11 @@ ZOOMBAR_SMALL;Lille
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch
index 683df28a9..da2c41ac9 100644
--- a/rtdata/languages/Deutsch
+++ b/rtdata/languages/Deutsch
@@ -9,6 +9,8 @@
#07 22.12.2007
#08 4.4.2008: Anpassungen für 2.4
#09 Leichte Anpassungen (keenonkites/klonk)
+#10 Erweiterung (oduis)
+ADJUSTER_RESET_TO_DEFAULT;Standard wiederherstellen
BATCHQUEUE_AUTOSTART;Automatisch starten
BATCH_PROCESSING;Batch-Verarbeitung
CURVEEDITOR_CUSTOM;Angepasst
@@ -19,6 +21,7 @@ CURVEEDITOR_HIGHLIGHTS;Spitzlichter
CURVEEDITOR_LIGHTS;Lichter
CURVEEDITOR_LINEAR;Linear
CURVEEDITOR_LOADDLGLABEL;Kurve Laden...
+CURVEEDITOR_NURBS;NURBS-Kurve
CURVEEDITOR_PARAMETRIC;Parametrisch
CURVEEDITOR_SAVEDLGLABEL;Kurve Speichern...
CURVEEDITOR_SHADOWS;Schatten
@@ -32,7 +35,7 @@ EXIFFILTER_DIALOGLABEL;Exif Filter
EXIFFILTER_FOCALLEN;Brennweite
EXIFFILTER_ISO;ISO
EXIFFILTER_LENS;Objektiv
-EXIFFILTER_METADATAFILTER;Metadaten Filter einschalten
+EXIFFILTER_METADATAFILTER;Metadaten-Filter einschalten
EXIFFILTER_SHUTTER;Verschlusszeit
EXIFPANEL_ADDEDIT;Neu/Ändern
EXIFPANEL_ADDEDITHINT;Hinzufügen eines neuen oder Ändern eines bestehenden Attributs
@@ -48,14 +51,14 @@ EXIFPANEL_RESETALL;Alle zurücksetzen
EXIFPANEL_RESETALLHINT;Alle Attribute zu den ursrpünglichen Werten zurücksetzen
EXIFPANEL_RESETHINT;Gewählte Attribute zu den ursprünglich Werten zurücksetzen
EXIFPANEL_SUBDIRECTORY;Unterverzeichnis
-FILEBROWSER_ADDDELTEMPLATE;Vorlagen hinzu/löschen...
+FILEBROWSER_ADDDELTEMPLATE;Vorlagen hinzu/entfernen...
FILEBROWSER_APPLYPROFILE;Profil anwenden
FILEBROWSER_ARRANGEMENTHINT;Wechseln zwischen vertikaler und horizontaler Ausrichtung der Voransichten
FILEBROWSER_CLEARPROFILE;Profil löschen
FILEBROWSER_COPYPROFILE;Profil kopieren
FILEBROWSER_CURRENT_NAME;Aktueller Name:
FILEBROWSER_DELETEDLGLABEL;Bestätige Löschen von Dateien
-FILEBROWSER_DELETEDLGMSG;Wollen sie wirklich %1 Dateien löschen?
+FILEBROWSER_DELETEDLGMSG;Wollen sie wirklich %1 Datei(en) löschen?
FILEBROWSER_EMPTYTRASH;Papierkorb leeren
FILEBROWSER_EMPTYTRASHHINT;Endgültiges Löschen der Dateien im Papierkorb
FILEBROWSER_EXIFFILTERAPPLY;Anwenden
@@ -109,10 +112,10 @@ GENERAL_ABOUT;Über
GENERAL_AFTER;Nachher
GENERAL_BEFORE;Vorher
GENERAL_CANCEL;Abbruch
-GENERAL_DISABLE;ausschalten
-GENERAL_DISABLED;ausgeschaltet
-GENERAL_ENABLE;einschalten
-GENERAL_ENABLED;eingeschaltet
+GENERAL_DISABLE;deaktivieren
+GENERAL_DISABLED;deaktiviert
+GENERAL_ENABLE;Aktivieren
+GENERAL_ENABLED;Aktiv
GENERAL_HIGH_QUALITY;Hohe Qualität
GENERAL_LANDSCAPE;Quer
GENERAL_LOAD;Laden
@@ -150,17 +153,17 @@ HISTORY_MSG_19;Luminanz Kurve
HISTORY_MSG_1;Bild geladen
HISTORY_MSG_20;Schärfen
HISTORY_MSG_21;Schärfen Radius
-HISTORY_MSG_22;Schärfen Menge
+HISTORY_MSG_22;Schärfen Stärke
HISTORY_MSG_23;Schärfen Schwellwert
HISTORY_MSG_24;Schärfen nur Kanten
HISTORY_MSG_25;Schärfen Kantensuche Radius
HISTORY_MSG_26;Schärfen Kanten-Toleranz
HISTORY_MSG_27;Schärfen Halo-Kontrolle
-HISTORY_MSG_28;Schärfen Halo-Kontrolle Menge
+HISTORY_MSG_28;Schärfen Halo-Kontrolle Stärke
HISTORY_MSG_29;Schärfen Methode
HISTORY_MSG_2;Profil geladen
HISTORY_MSG_30;Dekonvolution Radius
-HISTORY_MSG_31;Dekonvolution Menge
+HISTORY_MSG_31;Dekonvolution Stärke
HISTORY_MSG_32;Dekonvolution Dämpfung
HISTORY_MSG_33;Dekonvolution Iterationen
HISTORY_MSG_34;Verhindere Farbbeschneidungen
@@ -199,13 +202,13 @@ HISTORY_MSG_63;Variante gewählt
HISTORY_MSG_64;Bild beschneiden
HISTORY_MSG_65;Farbsaum-Entfernung
HISTORY_MSG_66;Lichter wiederherstellen
-HISTORY_MSG_67;Lichter wiederherstellen Menge
+HISTORY_MSG_67;Lichter wiederherstellen Stärke
HISTORY_MSG_68;Lichter wiederherstellen Methode
HISTORY_MSG_69;Aktueller Farbraum
HISTORY_MSG_6;Kontrast
HISTORY_MSG_70;Farbraum für Ausgabe
HISTORY_MSG_71;Farbraum für Eingabe
-HISTORY_MSG_72;Korrektur Randlichtabfall
+HISTORY_MSG_72;Vignettierungs-Korrektur
HISTORY_MSG_73;Kanal-Mixer
HISTORY_MSG_74;Änderung Größe - Maßstab
HISTORY_MSG_75;Änderung Größe - Methode
@@ -216,7 +219,17 @@ HISTORY_MSG_79;Änderung Größe - Breite
HISTORY_MSG_7;Schwarz
HISTORY_MSG_80;Änderung Größe - Höhe
HISTORY_MSG_81;Änderung Größe - eingeschaltet
+HISTORY_MSG_82;Profil geändert
+HISTORY_MSG_83;Schatten/Lichter hohe Qualität
+HISTORY_MSG_84;Perspektivische Korrektur
+HISTORY_MSG_85;Wavelet Koeffizienten
+HISTORY_MSG_86;Wavelet Equalizer
+HISTORY_MSG_87;Impulsrauschfilter
+HISTORY_MSG_89;Gerichtete Pyramide
HISTORY_MSG_8;Belichtungskorrektur
+HISTORY_MSG_90;Gerichtete Pyramide Luminanz
+HISTORY_MSG_91;Gerichtete Pyramide Chrominanz
+HISTORY_MSG_92;Gerichtete Pyramide Gamma
HISTORY_MSG_9;Lichter-Kompression
HISTORY_NEWSNAPSHOT;Neue Variante
HISTORY_NEWSNAPSHOTAS;als...
@@ -231,7 +244,7 @@ ICMPANEL_GAMMABEFOREINPUT;Profil enthält Gammaanpassung
ICMPANEL_INPUTCAMERA;Kamera-Standard
ICMPANEL_INPUTCUSTOM;Benutzerdefiniert
ICMPANEL_INPUTDLGLABEL;Wähle Eingabe-ICC-Profil...
-ICMPANEL_INPUTEMBEDDED;Verwende eingebettetes, wenn möglich
+ICMPANEL_INPUTEMBEDDED;Eingebettetes verwenden, wenn möglich
ICMPANEL_INPUTPROFILE;Eingabeprofil
ICMPANEL_NOICM;Kein ICM: sRGB-Ausgabe
ICMPANEL_OUTPUTDLGLABEL;Wähle Ausgabe-ICC-Profil...
@@ -284,18 +297,21 @@ IPTCPANEL_TRANSREFERENCEHINT;Ein Code, der den ursprünglichen Ort der Übertrag
MAIN_BUTTON_EXIT;Verlassen
MAIN_BUTTON_FULLSCREEN;Vollbild
MAIN_BUTTON_PREFERENCES;Einstellungen
-MAIN_BUTTON_PUTTOQUEUE;Auf die Warteschlange
-MAIN_BUTTON_QUEUE;Auf die Warteschlange
+MAIN_BUTTON_PUTTOQUEUE;In Warteschlange
+MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Reiht aktuelles Bild in die Warteschlange ein Strg+Q
+MAIN_BUTTON_QUEUE;In die Warteschlange
MAIN_BUTTON_SAVE;Bild speichern
-MAIN_BUTTON_SAVEAS;unter...
-MAIN_BUTTON_SENDTOEDITOR;Im Editor laden
+MAIN_BUTTON_SAVEAS;Speichern unter...
+MAIN_BUTTON_SAVE_TOOLTIP;Aktuelles Bild speichern Ctrl+S
+MAIN_BUTTON_SENDTOEDITOR;Im Editor öffnen
+MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Öffnes das aktuelle Bild im externen Editor Strg+E
MAIN_BUTTON_UNFULLSCREEN;Vollbild beenden
MAIN_FRAME_BATCHQUEUE;Warteschlange
MAIN_FRAME_FILEBROWSER;Dateiverwaltung
-MAIN_FRAME_PLACES;Orte
-MAIN_FRAME_PLACES_ADD;Hinzu
-MAIN_FRAME_PLACES_DEL;Löschen
-MAIN_FRAME_RECENT;Verwendete Ordner
+MAIN_FRAME_PLACES;Favoriten
+MAIN_FRAME_PLACES_ADD;Hinzuf.
+MAIN_FRAME_PLACES_DEL;Entf.
+MAIN_FRAME_RECENT;Zuletzt besucht
MAIN_MSG_ALREADYEXISTS;Diese Datei existiert schon.
MAIN_MSG_CANNOTLOAD;Bild kann nicht geladen werden
MAIN_MSG_CANNOTSAVE;Fehler beim Speichern
@@ -303,11 +319,11 @@ MAIN_MSG_CANNOTSTARTEDITOR;Der Editor kann nicht gestartet werden.
MAIN_MSG_CANNOTSTARTEDITOR_SECONDARY;Setzen Sie bitte den richtigen Pfad in den Einstellungen.
MAIN_MSG_ERRORDURINGIMAGESAVING;Fehler beim Speichern des Bildes
MAIN_MSG_EXITJOBSINQUEUEINFO;Unverarbeitete Bilder in der Warteschlange gehen beim Verlassen der Anwendung verloren.
-MAIN_MSG_EXITJOBSINQUEUEQUEST;Wollen Sie die Anwendung wirklich schliessen ? Es hat noch unverarbeitete Bilder in der Warteschlange.
+MAIN_MSG_EXITJOBSINQUEUEQUEST;Wollen Sie die Anwendung wirklich schliessen? Es hat noch unverarbeitete Bilder in der Warteschlange.
MAIN_MSG_JOBSINQUEUE;Job in Bearbeitung
MAIN_MSG_NAVIGATOR;Navigator
MAIN_MSG_PLACES;Orte
-MAIN_MSG_QOVERWRITE;Wollen sie die Datei überschreiben ?
+MAIN_MSG_QOVERWRITE;Wollen sie die Datei überschreiben?
MAIN_TAB_BASIC;Basis
MAIN_TAB_COLOR;Farbe
MAIN_TAB_DETAIL;Detail
@@ -317,7 +333,7 @@ MAIN_TAB_EXPOSURE;Belichtung
MAIN_TAB_FILTER;Metadaten-Filter
MAIN_TAB_ICM;ICM
MAIN_TAB_IPTC;IPTC
-MAIN_TAB_METADATA;Metadata
+MAIN_TAB_METADATA;Meta-Daten
MAIN_TAB_TAGGING;Tagging
MAIN_TAB_TRANSFORM;Verändern
MAIN_TOGGLE_BEFORE_AFTER;V|N
@@ -360,6 +376,7 @@ PARTIALPASTE_EXPOSURE;Belichtung
PARTIALPASTE_HLRECOVERY;Lichter wiederherstellen
PARTIALPASTE_ICMSETTINGS;Einstellungen ICM
PARTIALPASTE_IPTCINFO;IPTC Informationen
+PARTIALPASTE_LABCURVE;LAB-Kurve
PARTIALPASTE_LENSGROUP;Gruppe Farbeinstellungen
PARTIALPASTE_LUMACURVE;Luminanzkurve
PARTIALPASTE_LUMADENOISE;Luminanz-Rauschfilter
@@ -369,7 +386,7 @@ PARTIALPASTE_RESIZE;Grösse ändern
PARTIALPASTE_ROTATION;Drehen
PARTIALPASTE_SHADOWSHIGHLIGHTS;Schatten/Lichter
PARTIALPASTE_SHARPENING;Schärfen
-PARTIALPASTE_VIGNETTING;Korrektur Randlichtabfall
+PARTIALPASTE_VIGNETTING;Korrektur Vignettierung
PARTIALPASTE_WHITEBALANCE;Weissabgleich
PREFERENCES_ADD;HINZU
PREFERENCES_APPLNEXTSTARTUP;beim nächsten Programmstart aktiv
@@ -388,6 +405,7 @@ PREFERENCES_CACHESTRAT2;Priorität auf minimierten Speicherverbrauch (geringere
PREFERENCES_CACHESTRAT;Strategie des Zwischenspeichers
PREFERENCES_CACHETHUMBFORM;Format des Zwischenspeichers
PREFERENCES_CACHETHUMBHEIGHT;Maximale Höhe der Voransichten
+PREFERENCES_CACORRECTION;Autom. Korrektur Chrom. Abberation
PREFERENCES_CLEARDLG_LINE1;Löschen des Zwischenspeichers
PREFERENCES_CLEARDLG_LINE2;Das kann einige Sekunden dauern.
PREFERENCES_CLEARDLG_TITLE;Bitte warten
@@ -406,25 +424,31 @@ PREFERENCES_DIROTHER;Anderes
PREFERENCES_DIRSELECTDLG;Wähle das Bild-Verzeichnis beim Programmstart...
PREFERENCES_DIRSOFTWARE;Installationsverzeichnis
PREFERENCES_DMETHOD;Methode
+PREFERENCES_DMETHODBATCH;Warteschlange
PREFERENCES_EDITORCMDLINE;Andere Befehlszeile
+PREFERENCES_EDITORLAYOUT;Editor-Layout
PREFERENCES_EXTERNALEDITOR;Externer Editor
-PREFERENCES_FALSECOLOR;Stufen zur Unterdrückung von Falschfarben
+PREFERENCES_FALSECOLOR;Stufen Falschfarben-Unterdrückung
PREFERENCES_FBROWSEROPTS;Datei-Browser-Einstellungen
PREFERENCES_FILEFORMAT;Datei-Format
PREFERENCES_FORIMAGE;Für Bild-Dateien
PREFERENCES_FORRAW;Für RAW-Dateien
-PREFERENCES_GIMPPATH;GIMP Installations Verzeichnis
+PREFERENCES_GIMPPATH;GIMP Installations-Verzeichnis
+PREFERENCES_GREENEQUIL;Grün-Ausgleich
PREFERENCES_GTKTHEME;Standard GTK
PREFERENCES_HINT;Erklärungen
PREFERENCES_HLTHRESHOLD;Schwellwert - zu hell
+PREFERENCES_HOTDEADPIXFILT;Hot/Dead Pixel Filter anwenden
PREFERENCES_ICCDIR;ICC-Profile-Verzeichnis
PREFERENCES_IMPROCPARAMS;Standard-Bildbearbeitungsparameter
PREFERENCES_INTENT_ABSOLUTE;Absolut farbmetrisch
PREFERENCES_INTENT_PERCEPTUAL;Wahrnehmungsabhängig
-PREFERENCES_INTENT_RELATIVE;Relative farbmetrisch
+PREFERENCES_INTENT_RELATIVE;Relativ farbmetrisch
PREFERENCES_INTENT_SATURATION;Sättigung
+PREFERENCES_LINEDENOISE;Zeilenrausch-Filter
PREFERENCES_LIVETHUMBNAILS;Live Voransichten (langsamer)
PREFERENCES_MONITORICC;Monitor-Profil
+PREFERENCES_MULTITAB;Multi-Reiter Modus
PREFERENCES_OUTDIR;Ausgabe-Verzeichnis
PREFERENCES_OUTDIRFOLDER;Speichern in Verzeichnis
PREFERENCES_OUTDIRFOLDERHINT;Ablegen der gespeicherten Bilder in ein ausgewähltes Verzeichnis
@@ -439,20 +463,22 @@ PREFERENCES_PARSEDEXTDELHINT;Lösche den ausgewählten Datei-Typ von der Liste
PREFERENCES_PROFILEHANDLING;Behandlung der Bearbeitungsprofile
PREFERENCES_PROFILELOADPR;Priorität der Profile beim Laden
PREFERENCES_PROFILEPRCACHE;Bearbeitungsprofil im Zwischenspeicher (Cache)
-PREFERENCES_PROFILEPRFILE;Bearbeitungsprofile bei der urpsrünglich geladenen Datei
+PREFERENCES_PROFILEPRFILE;Bearbeitungsprofile bei der ursprünglich geladenen Datei
PREFERENCES_PROFILESAVECACHE;Speichern der Verarbeitungsparameter im Zwischenspeicher (Cache)
PREFERENCES_PROFILESAVEINPUT;Speichern der Verarbeitungsparameter zusammen mit der ursprünglich geladenen Datei
PREFERENCES_PROPERTY;Eigenschaft
-PREFERENCES_PSPATH;Adobe Photoshop Installations Verzeichnis
+PREFERENCES_PSPATH;Adobe Photoshop Installations-Verzeichnis
+PREFERENCES_SELECTFONT;Schriftart
PREFERENCES_SELECTICCDIRDLG;Wähle ICC-Profile-Verzeichnis...
PREFERENCES_SELECTLANG;Sprache
PREFERENCES_SELECTMONITORPROFDLG;Wähle ICC-Profil für den Monitor...
-PREFERENCES_SELECTTHEME;Wähle Oberflächendesign
+PREFERENCES_SELECTTHEME;Oberflächendesign
PREFERENCES_SET;SETZEN
PREFERENCES_SHOWBASICEXIF;Zeige grundlegende Exif-Informationen
PREFERENCES_SHOWDATETIME;Zeige Datum und Zeit
PREFERENCES_SHOWONLYRAW;Zeige nur Rohdateien (RAW)
PREFERENCES_SHTHRESHOLD;Schwellwert - zu dunkel
+PREFERENCES_SINGLETAB;Ein-Reiter Modus
PREFERENCES_STARTUPIMDIR;Bild-Verzeichnis beim Programmstart
PREFERENCES_TAB_BROWSER;Datei-Browser
PREFERENCES_TAB_COLORMGR;Farbmanagement
@@ -460,6 +486,8 @@ PREFERENCES_TAB_GENERAL;Allgemein
PREFERENCES_TAB_IMPROC;Bildbearbeitung
PREFERENCES_TAB_OUTPUT;Ausgabe
PREFERENCES_THUMBSIZE;Größe der Vorschau
+PREFERENCES_USESYSTEMTHEME; System-Overfläche verwenden
+PREFERENCES_WORKFLOW;Workflow
PROFILEPANEL_FILEDLGFILTERANY;Alle Dateien
PROFILEPANEL_FILEDLGFILTERPP;Bearbeitungsprofile
PROFILEPANEL_LABEL;Bearbeitungsprofile
@@ -493,6 +521,7 @@ QINFO_FOCALLENGTH;Brennweite
QINFO_ISO;ISO
QINFO_LENS;Objektiv
QINFO_NOEXIF;Keine Exif-Daten vorhanden.
+SAVEDLG_AUTOSUFFIX;Suffix an Dateinamen hängen falls schon vorhanden
SAVEDLG_FILEFORMAT;Dateiformat
SAVEDLG_JPEGQUAL;JPEG-Qualität
SAVEDLG_JPGFILTER;JPEG-Datei
@@ -501,8 +530,8 @@ SAVEDLG_PNGFILTER;PNG-Datei
SAVEDLG_PUTTOQUEUE;In Warteschlange für Verarbeitung legen
SAVEDLG_PUTTOQUEUEHEAD;An Anfang der Warteschlange für Verarbeitung legen
SAVEDLG_PUTTOQUEUETAIL;Ans Ende der Warteschlange für Verarbeitung legen
-SAVEDLG_SAVEIMMEDIATELY;Sofort Speichern
-SAVEDLG_SAVESPP;Speichere die Prozessparameter mit dem Bild
+SAVEDLG_SAVEIMMEDIATELY;Sofort speichern
+SAVEDLG_SAVESPP;Speichere Prozessparameter mit dem Bild
SAVEDLG_TIFFFILTER;TIFF-Datei
SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
TOOLBAR_TOOLTIP_CROP;Auswahl des Ausschnitts (Taste C)
@@ -522,7 +551,7 @@ TP_COARSETRAF_TOOLTIP_ROTLEFT;nach links drehen
TP_COARSETRAF_TOOLTIP_ROTRIGHT;nach rechts drehen
TP_COARSETRAF_TOOLTIP_VFLIP;vertikal spiegeln
TP_COLORBOOST_ACHANNEL;Kanal "a"
-TP_COLORBOOST_AMOUNT;Menge
+TP_COLORBOOST_AMOUNT;Stärke
TP_COLORBOOST_AVOIDCOLORCLIP;Verhindere Übersättigung
TP_COLORBOOST_BCHANNEL;Kanal "b"
TP_COLORBOOST_CHAB;a & b
@@ -550,27 +579,44 @@ TP_CROP_GTRULETHIRDS;Goldener Schnitt
TP_CROP_GUIDETYPE;Hilfslinien:
TP_CROP_H;H
TP_CROP_LABEL;Ausschnitt
-TP_CROP_SELECTCROP; Wähle Ausschnitt
+TP_CROP_SELECTCROP;Ausschnitt wählen
TP_CROP_W;W
TP_CROP_X;x
TP_CROP_Y;y
-TP_DETAIL_AMOUNT;Menge
+TP_DETAIL_AMOUNT;Stärke
+TP_DIRPYRDENOISE_CHROMA;Chrominanz
+TP_DIRPYRDENOISE_GAMMA;Gamma
+TP_DIRPYRDENOISE_LABEL;Direktionale Pyramiden-Rauschminderung
+TP_DIRPYRDENOISE_LUMA;Luminanz
+TP_DIRPYREQUALIZER_LABEL;Direktionaler Pyramiden-Equalizer
+TP_DIRPYREQUALIZER_LUMACOARSEST;Gröbstes
+TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Kontrast-
+TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Kontrast+
+TP_DIRPYREQUALIZER_LUMAFINEST;Feinstes
+TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+TP_DIRPYREQUALIZER_THRESHOLD;Schwellwert
TP_DISTORTION_AMOUNT;Menge
TP_DISTORTION_LABEL;Entzerrung
-TP_EXPOSURE_AUTOLEVELS;autom.
-TP_EXPOSURE_BLACKLEVEL;schwarz
+TP_EQUALIZER_CONTRAST_MINUS;Kontrast-
+TP_EQUALIZER_CONTRAST_PLUS;Kontrast+
+TP_EQUALIZER_FINEST;Feinstes
+TP_EQUALIZER_LABEL;Wavelet-Equalizer
+TP_EQUALIZER_LARGEST;Gröbstes
+TP_EQUALIZER_NEUTRAL;Neutral
+TP_EXPOSURE_AUTOLEVELS;Auto
+TP_EXPOSURE_BLACKLEVEL;Schwarzpegel
TP_EXPOSURE_BRIGHTNESS;Helligkeit
-TP_EXPOSURE_CLIP;beschneiden
+TP_EXPOSURE_CLIP;Grenzwert
TP_EXPOSURE_COMPRHIGHLIGHTS;Lichter-Kompression
TP_EXPOSURE_COMPRSHADOWS;Schatten-Kompression
TP_EXPOSURE_CONTRAST;Kontrast
TP_EXPOSURE_CURVEEDITOR;Tonwertkurve
-TP_EXPOSURE_EXPCOMP;Bel.Korrektur
+TP_EXPOSURE_EXPCOMP;Belichtungskorrektur
TP_EXPOSURE_LABEL;Belichtung
TP_HLREC_CIELAB;CIELab Überlagerung
TP_HLREC_COLOR;Farbübertragung
TP_HLREC_LABEL;Lichter wiederherstellen
-TP_HLREC_LUMINANCE;Luminanz herstellen
+TP_HLREC_LUMINANCE;Luminanz wiederherstellen
TP_HLREC_METHOD;Methode:
TP_ICM_FILEDLGFILTERANY;Alle Dateien
TP_ICM_FILEDLGFILTERICM;ICC-Profildateien
@@ -586,6 +632,16 @@ TP_ICM_OUTPUTDLGLABEL;Wähle Ausgabe-ICC-Profil...
TP_ICM_OUTPUTPROFILE;Ausgabeprofil
TP_ICM_SAVEREFERENCE;Speichere Referenzbild für die Profilierung
TP_ICM_WORKINGPROFILE;Arbeitsfarbraum
+TP_IMPULSEDENOISE_LABEL;Impulsrauschminderung
+TP_IMPULSEDENOISE_THRESH;Schwellwert
+TP_LABCURVE_BRIGHTNESS;Helligkeit
+TP_LABCURVE_CONTRAST;Kontrast
+TP_LABCURVE_CURVEEDITOR;Luminanzkurve
+TP_LABCURVE_LABEL;Luminanzkurve
+TP_LABCURVE_SATURATION;Sättigung
+TP_LENSGEOM_AUTOCROP;Auto-Schneiden
+TP_LENSGEOM_FILL;Auto-Füllen
+TP_LENSGEOM_LABEL;Objektivkorrekturen
TP_LUMACURVE_BLACKLEVEL;schwarz
TP_LUMACURVE_BRIGHTNESS;Helligkeit
TP_LUMACURVE_COMPRHIGHLIGHTS;Lichter-Kompression
@@ -596,6 +652,9 @@ TP_LUMACURVE_LABEL;Luminanzkurve
TP_LUMADENOISE_EDGETOLERANCE;Kanten-Toleranz
TP_LUMADENOISE_LABEL;Luminanz-Rauschfilter
TP_LUMADENOISE_RADIUS;Radius
+TP_PERSPECTIVE_HORIZONTAL;Horizontal
+TP_PERSPECTIVE_LABEL;Perspektive
+TP_PERSPECTIVE_VERTICAL;Vertikal
TP_RESIZE_BICUBIC;Bikubisch
TP_RESIZE_BICUBICSF;Bikubisch (Weicher)
TP_RESIZE_BICUBICSH;Bikubisch (Schärfer)
@@ -624,23 +683,23 @@ TP_SHADOWSHLIGHTS_LOCALCONTR;Lokaler Kontrast
TP_SHADOWSHLIGHTS_RADIUS;Radius
TP_SHADOWSHLIGHTS_SHADOWS;Schatten
TP_SHADOWSHLIGHTS_SHTONALW;Farbtonbereich
-TP_SHARPENING_AMOUNT;Menge
+TP_SHARPENING_AMOUNT;Stärke
TP_SHARPENING_EDRADIUS;Radius
TP_SHARPENING_EDTOLERANCE;Kanten-Toleranz
TP_SHARPENING_HALOCONTROL;Halo-Kontrolle
-TP_SHARPENING_HCAMOUNT;Menge
+TP_SHARPENING_HCAMOUNT;Stärke
TP_SHARPENING_LABEL;Schärfen
TP_SHARPENING_METHOD;Methode
TP_SHARPENING_ONLYEDGES;nur Kanten schärfen
TP_SHARPENING_RADIUS;Radius
-TP_SHARPENING_RLD;R-L Bildrestaurierung
-TP_SHARPENING_RLD_AMOUNT;Menge
+TP_SHARPENING_RLD;R-L Deconvolution
+TP_SHARPENING_RLD_AMOUNT;Stärke
TP_SHARPENING_RLD_DAMPING;Dämpfung
TP_SHARPENING_RLD_ITERATIONS;Iterationen
TP_SHARPENING_THRESHOLD;Schwellwert
-TP_SHARPENING_USM;Unscharf maskieren
-TP_VIGNETTING_AMOUNT;Menge
-TP_VIGNETTING_LABEL;Korrektur Randlichtabfall
+TP_SHARPENING_USM;Unschärfemaske
+TP_VIGNETTING_AMOUNT;Stärke
+TP_VIGNETTING_LABEL;Vignettierungs-Korrektur
TP_VIGNETTING_RADIUS;Radius
TP_WBALANCE_AUTO;Automatisch
TP_WBALANCE_CAMERA;Kamera
@@ -649,7 +708,7 @@ TP_WBALANCE_GREEN;Farbton
TP_WBALANCE_LABEL;Weißabgleich
TP_WBALANCE_METHOD;Methode
TP_WBALANCE_SIZE;Größe:
-TP_WBALANCE_SPOTWB;manuel setzen
+TP_WBALANCE_SPOTWB;Manuell setzen
TP_WBALANCE_TEMPERATURE;Farbtemperatur
ZOOMBAR_DETAIL;Detail
ZOOMBAR_HUGE;riesig
@@ -662,9 +721,9 @@ ZOOMPANEL_100;(100%)
ZOOMPANEL_NEWCROPWINDOW;(Neues) Detailfenster öffnen
ZOOMPANEL_ZOOM100;Zoom 100%
ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen
-ZOOMPANEL_ZOOMIN;Hinein zoomen
-ZOOMPANEL_ZOOMOUT;Heraus zoomen
-ADJUSTER_RESET_TO_DEFAULT;Zurück zum Standard
+ZOOMPANEL_ZOOMIN;Hineinzoomen
+ZOOMPANEL_ZOOMOUT;Herauszoomen
+
!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -672,41 +731,9 @@ ZOOMPANEL_ZOOMOUT;Heraus zoomen
!!!!!!!!!!!!!!!!!!!!!!!!!
-!ADJUSTER_RESET_TO_DEFAULT;Reset to default
-!CURVEEDITOR_NURBS;Control cage
-!HISTORY_MSG_82;Profile Changed
-!HISTORY_MSG_83;High quality shadows/highlights
-!HISTORY_MSG_84;Perspective correction
-!HISTORY_MSG_85;Wavelet coefficients
-!HISTORY_MSG_86;Wavelet equalizer
-!HISTORY_MSG_87;Impulse noise reduction
-!HISTORY_MSG_89;Directional pyramid
-!HISTORY_MSG_90;Directional pyramid luminance
-!HISTORY_MSG_91;Directional pyramid chominance
-!HISTORY_MSG_92;Directional pyramid gamma
-!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Add current image to processing queue Ctrl+Q
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image Ctrl+S
-!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor Ctrl+E
-!PREFERENCES_CACORRECTION;Apply CA auto correction
-!PREFERENCES_GREENEQUIL;Green equilibration
-!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
-!PREFERENCES_LINEDENOISE;Line noise filter
-!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
-!TP_DIRPYRDENOISE_CHROMA;Chrominance
-!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
-!TP_DIRPYRDENOISE_LUMA;Luminance
-!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
-!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
-!TP_EQUALIZER_FINEST;finest
-!TP_EQUALIZER_LABEL;Wavelet equalizer
-!TP_EQUALIZER_LARGEST;coarsest
-!TP_EQUALIZER_NEUTRAL;Neutral
-!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
-!TP_IMPULSEDENOISE_THRESH;Threshold
-!TP_LENSGEOM_AUTOCROP;Auto Crop
-!TP_LENSGEOM_FILL;Auto Fill
-!TP_LENSGEOM_LABEL;Lens / Geometry
-!TP_PERSPECTIVE_HORIZONTAL;Horizontal
-!TP_PERSPECTIVE_LABEL;Perspective
-!TP_PERSPECTIVE_VERTICAL;Vertical
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
diff --git a/rtdata/languages/English b/rtdata/languages/English
index e82253e1e..1776f0002 100644
--- a/rtdata/languages/English
+++ b/rtdata/languages/English
@@ -9,7 +9,7 @@
!ADJUSTER_RESET_TO_DEFAULT;Reset to default
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_FILEDLGFILTERANY;Any files
@@ -349,6 +349,12 @@
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -373,8 +379,9 @@
!PARTIALPASTE_HLRECOVERY;Highlight recovery
!PARTIALPASTE_ICMSETTINGS;ICM settings
!PARTIALPASTE_IPTCINFO;IPTC info
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PARTIALPASTE_LENSGROUP;Lens related settings
-!PARTIALPASTE_LUMACURVE;Luminance curve
!PARTIALPASTE_LUMADENOISE;Luminance noise reduction
!PARTIALPASTE_LUMINANCEGROUP;Luminance related settings
!PARTIALPASTE_METAICMGROUP;Metadata/ICM settings
@@ -385,7 +392,7 @@
!PARTIALPASTE_VIGNETTING;Vignetting correction
!PARTIALPASTE_WHITEBALANCE;White balance
!PREFERENCES_ADD;ADD
-!PREFERENCES_APPLNEXTSTARTUP;applied at next startup
+!PREFERENCES_APPLNEXTSTARTUP;restart required
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_BLINKCLIPPED;Blink clipped areas
@@ -402,9 +409,6 @@
!PREFERENCES_CACHETHUMBFORM;Cache Thumbnail Format
!PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height
!PREFERENCES_CACORRECTION;Apply CA auto correction
-!PREFERENCES_CLEARDLG_LINE1;Clearing cache
-!PREFERENCES_CLEARDLG_LINE2;This may take a few seconds.
-!PREFERENCES_CLEARDLG_TITLE;Please wait
!PREFERENCES_CLIPPINGIND;Clipping indication
!PREFERENCES_CMETRICINTENT;Colorimetric Intent
!PREFERENCES_DATEFORMAT;Date Format
@@ -419,8 +423,10 @@
!PREFERENCES_DIROTHER;Other
!PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup...
!PREFERENCES_DIRSOFTWARE;Installation directory
-!PREFERENCES_DMETHOD;Method
+!PREFERENCES_DMETHOD;Preview
+!PREFERENCES_DMETHODBATCH;Batch
!PREFERENCES_EDITORCMDLINE;Other command line
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_EXTERNALEDITOR;External editor
!PREFERENCES_FALSECOLOR;False color suppression steps
!PREFERENCES_FBROWSEROPTS;File Browser Options
@@ -442,12 +448,13 @@
!PREFERENCES_LINEDENOISE;Line noise filter
!PREFERENCES_LIVETHUMBNAILS;Live Thumbnails (slower)
!PREFERENCES_MONITORICC;Monitor Profile
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OUTDIR;Output Directory
!PREFERENCES_OUTDIRFOLDER;Save to folder
!PREFERENCES_OUTDIRFOLDERHINT;Put the saved images to the selected folder
-!PREFERENCES_OUTDIRHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the directories and sub-paths of the path of the raw file.nnFor example, if /home/tom/image/02-09-2006/dsc0012.nefhas been opened, the meaning of the formatting strings are:n%f=dsc0012, %d1=02-09-2006, %d2=image, ...n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, %p3=/home/tom, ...nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory 'converted' located the directory of the original, write:n%p1/converted/%fnnIf you want to save the output image in directory '/home/tom/converted' with keeping the same subdirectory of dates, write:n%p2/converted/%d1/%f
+!PREFERENCES_OUTDIRHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the different parts of the photo's pathname.nnFor example, if the photo being processed has the following pathname:n/home/tom/photos/2010-10-31/dsc0042.nefnthe meaning of the formatting strings are:n%d4 = homen%d3 = tomn%d2 = photosn%d1 = 2010-10-31n%f = dsc0042n%p1 = /home/tom/photos/2010-10-31/n%p2 = /home/tom/photos/n%p3 = /home/tom/n%p4 = /home/nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:n%p1/converted/%fnnIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:n%p2/converted/%d1/%f
!PREFERENCES_OUTDIRTEMPLATE;Use Template
-!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the directories and sub-paths of the path of the raw file.nnFor example, if /home/tom/image/02-09-2006/dsc0012.nefhas been opened, the meaning of the formatting strings are:n%f=dsc0012, %d1=02-09-2006, %d2=image, ...n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, %p3=/home/tom, ...nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory 'converted' located the directory of the original, write:n%p1/converted/%fnnIf you want to save the output image in directory '/home/tom/converted' with keeping the same subdirectory of dates, write:n%p2/converted/%d1/%f
+!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the different parts of the photo's pathname.nnFor example, if the photo being processed has the following pathname:n/home/tom/photos/2010-10-31/dsc0042.nefnthe meaning of the formatting strings are:n%d4 = homen%d3 = tomn%d2 = photosn%d1 = 2010-10-31n%f = dsc0042n%p1 = /home/tom/photos/2010-10-31/n%p2 = /home/tom/photos/n%p3 = /home/tom/n%p4 = /home/nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:n%p1/converted/%fnnIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:n%p2/converted/%d1/%f
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PARSEDEXT;Parsed Extensions
!PREFERENCES_PARSEDEXTADD;Add Extension
@@ -461,6 +468,7 @@
!PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File
!PREFERENCES_PROPERTY;Property
!PREFERENCES_PSPATH;Adobe Photoshop installation directory
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SELECTICCDIRDLG;Select ICC Profile Directory...
!PREFERENCES_SELECTLANG;Select language
!PREFERENCES_SELECTMONITORPROFDLG;Select ICC Profile of the Display...
@@ -470,6 +478,7 @@
!PREFERENCES_SHOWDATETIME;Show date and time
!PREFERENCES_SHOWONLYRAW;Show only RAW files
!PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows
+!PREFERENCES_SINGLETAB;Single tab mode
!PREFERENCES_STARTUPIMDIR;Image directory at startup
!PREFERENCES_TAB_BROWSER;File Browser
!PREFERENCES_TAB_COLORMGR;Color Management
@@ -477,6 +486,8 @@
!PREFERENCES_TAB_IMPROC;Image Processing
!PREFERENCES_TAB_OUTPUT;Output Options
!PREFERENCES_THUMBSIZE;Thumbnail Size
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROFILEPANEL_FILEDLGFILTERANY;Any files
!PROFILEPANEL_FILEDLGFILTERPP;Postprocessing profiles
!PROFILEPANEL_LABEL;Postprocessing Profiles
@@ -575,8 +586,15 @@
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_DISTORTION_AMOUNT;Amount
!TP_DISTORTION_LABEL;Distortion
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
@@ -589,15 +607,15 @@
!TP_EXPOSURE_BLACKLEVEL;Black
!TP_EXPOSURE_BRIGHTNESS;Brightness
!TP_EXPOSURE_CLIP;Clip
-!TP_EXPOSURE_COMPRHIGHLIGHTS;Highlight compression
-!TP_EXPOSURE_COMPRSHADOWS;Shadow compression
+!TP_EXPOSURE_COMPRHIGHLIGHTS;Highlight recovery
+!TP_EXPOSURE_COMPRSHADOWS;Shadow recovery
!TP_EXPOSURE_CONTRAST;Contrast
!TP_EXPOSURE_CURVEEDITOR;Tone Curve
!TP_EXPOSURE_EXPCOMP;Exp. Comp.
!TP_EXPOSURE_LABEL;Exposure
!TP_HLREC_CIELAB;CIELab Blending
!TP_HLREC_COLOR;Color Propagation
-!TP_HLREC_LABEL;Highlight Recovery
+!TP_HLREC_LABEL;Highlight Reconstruction
!TP_HLREC_LUMINANCE;Luminance Recovery
!TP_HLREC_METHOD;Method:
!TP_ICM_FILEDLGFILTERANY;Any files
@@ -616,16 +634,14 @@
!TP_ICM_WORKINGPROFILE;Working Profile
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
-!TP_LUMACURVE_BLACKLEVEL;Black
-!TP_LUMACURVE_BRIGHTNESS;Brightness
-!TP_LUMACURVE_COMPRHIGHLIGHTS;Highlight compression
-!TP_LUMACURVE_COMPRSHADOWS;Shadow compression
-!TP_LUMACURVE_CONTRAST;Contrast
-!TP_LUMACURVE_CURVEEDITOR;Luminance Curve
-!TP_LUMACURVE_LABEL;Luminance Curve
!TP_LUMADENOISE_EDGETOLERANCE;Edge Tolerance
!TP_LUMADENOISE_LABEL;Luminance Noise Reduction
!TP_LUMADENOISE_RADIUS;Radius
diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK)
index f3c31a19a..8d0099ac2 100644
--- a/rtdata/languages/English (UK)
+++ b/rtdata/languages/English (UK)
@@ -1,9 +1,8 @@
#00 English (UK)
-#01 16.01.2009: Richard Regal
+#01 17.10.2010: Richard Regal
HISTORY_MSG_34;Avoid Colour Clipping
HISTORY_MSG_37;Colour Boost
-HISTORY_MSG_38;White Balance Method
HISTORY_MSG_39;Colour Temperature
HISTORY_MSG_41;Colour Shift "A"
HISTORY_MSG_42;Colour Shift "B"
@@ -14,6 +13,9 @@ HISTORY_MSG_49;Edge Sensitive Colour Denoising
HISTORY_MSG_69;Working Colour Space
HISTORY_MSG_70;Output Colour Space
HISTORY_MSG_71;Input Colour Space
+IPTCPANEL_DATECREATEDHINT;The date the intellectual content of the image was created; Format: YYYYMMMDD (Date Created).
+IPTCPANEL_PROVINCE;County
+IPTCPANEL_PROVINCEHINT;The County where the image originates (County).
MAIN_TAB_COLOR;Colour
PARTIALPASTE_COLORBOOST;Colour boost
PARTIALPASTE_COLORDENOISE;Colour denoise
@@ -36,7 +38,7 @@ TP_HLREC_COLOR;Colour Propagation
!ADJUSTER_RESET_TO_DEFAULT;Reset to default
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_FILEDLGFILTERANY;Any files
@@ -192,6 +194,7 @@ TP_HLREC_COLOR;Colour Propagation
!HISTORY_MSG_33;Deconvolution Iterations
!HISTORY_MSG_35;Saturation Limiter
!HISTORY_MSG_36;Saturation Limit
+!HISTORY_MSG_38;White Balance Method
!HISTORY_MSG_40;White Balance Tint
!HISTORY_MSG_43;Luminance Denoising
!HISTORY_MSG_44;Lum. Denoising Radius
@@ -278,8 +281,6 @@ TP_HLREC_COLOR;Colour Propagation
!IPTCPANEL_COUNTRYHINT;The name of the country/primary location where the image was created (Country - Primary Location Name).
!IPTCPANEL_CREDIT;Credit
!IPTCPANEL_CREDITHINT;Identifies the provider of the image, not necessarily the owner/creator (Credit).
-!IPTCPANEL_DATECREATED;Date Created
-!IPTCPANEL_DATECREATEDHINT;The date the intellectual content of the image was created; Format: JJJJMMTT (Date Created).
!IPTCPANEL_EMBEDDED;Embedded
!IPTCPANEL_EMBEDDEDHINT;Reset to IPTC data embedded in the image file
!IPTCPANEL_HEADLINE;Headline
@@ -289,8 +290,6 @@ TP_HLREC_COLOR;Colour Propagation
!IPTCPANEL_KEYWORDS;Keywords
!IPTCPANEL_KEYWORDSHINT;Used to indicate specific information retrieval words (Keywords).
!IPTCPANEL_PASTEHINT;Paste IPTC settings from clipboard
-!IPTCPANEL_PROVINCE;Province
-!IPTCPANEL_PROVINCEHINT;The Province/State where the image originates (Province-State).
!IPTCPANEL_RESET;Reset
!IPTCPANEL_RESETHINT;Reset to profile default
!IPTCPANEL_SOURCE;Source
@@ -358,6 +357,12 @@ TP_HLREC_COLOR;Colour Propagation
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -377,8 +382,9 @@ TP_HLREC_COLOR;Colour Propagation
!PARTIALPASTE_HLRECOVERY;Highlight recovery
!PARTIALPASTE_ICMSETTINGS;ICM settings
!PARTIALPASTE_IPTCINFO;IPTC info
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PARTIALPASTE_LENSGROUP;Lens related settings
-!PARTIALPASTE_LUMACURVE;Luminance curve
!PARTIALPASTE_LUMADENOISE;Luminance noise reduction
!PARTIALPASTE_LUMINANCEGROUP;Luminance related settings
!PARTIALPASTE_METAICMGROUP;Metadata/ICM settings
@@ -389,7 +395,7 @@ TP_HLREC_COLOR;Colour Propagation
!PARTIALPASTE_VIGNETTING;Vignetting correction
!PARTIALPASTE_WHITEBALANCE;White balance
!PREFERENCES_ADD;ADD
-!PREFERENCES_APPLNEXTSTARTUP;applied at next startup
+!PREFERENCES_APPLNEXTSTARTUP;restart required
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_BLINKCLIPPED;Blink clipped areas
@@ -406,9 +412,6 @@ TP_HLREC_COLOR;Colour Propagation
!PREFERENCES_CACHETHUMBFORM;Cache Thumbnail Format
!PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height
!PREFERENCES_CACORRECTION;Apply CA auto correction
-!PREFERENCES_CLEARDLG_LINE1;Clearing cache
-!PREFERENCES_CLEARDLG_LINE2;This may take a few seconds.
-!PREFERENCES_CLEARDLG_TITLE;Please wait
!PREFERENCES_CLIPPINGIND;Clipping indication
!PREFERENCES_CMETRICINTENT;Colorimetric Intent
!PREFERENCES_DATEFORMAT;Date Format
@@ -423,8 +426,10 @@ TP_HLREC_COLOR;Colour Propagation
!PREFERENCES_DIROTHER;Other
!PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup...
!PREFERENCES_DIRSOFTWARE;Installation directory
-!PREFERENCES_DMETHOD;Method
+!PREFERENCES_DMETHOD;Preview
+!PREFERENCES_DMETHODBATCH;Batch
!PREFERENCES_EDITORCMDLINE;Other command line
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_EXTERNALEDITOR;External editor
!PREFERENCES_FBROWSEROPTS;File Browser Options
!PREFERENCES_FILEFORMAT;File format
@@ -445,12 +450,13 @@ TP_HLREC_COLOR;Colour Propagation
!PREFERENCES_LINEDENOISE;Line noise filter
!PREFERENCES_LIVETHUMBNAILS;Live Thumbnails (slower)
!PREFERENCES_MONITORICC;Monitor Profile
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OUTDIR;Output Directory
!PREFERENCES_OUTDIRFOLDER;Save to folder
!PREFERENCES_OUTDIRFOLDERHINT;Put the saved images to the selected folder
-!PREFERENCES_OUTDIRHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the directories and sub-paths of the path of the raw file.nnFor example, if /home/tom/image/02-09-2006/dsc0012.nefhas been opened, the meaning of the formatting strings are:n%f=dsc0012, %d1=02-09-2006, %d2=image, ...n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, %p3=/home/tom, ...nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory 'converted' located the directory of the original, write:n%p1/converted/%fnnIf you want to save the output image in directory '/home/tom/converted' with keeping the same subdirectory of dates, write:n%p2/converted/%d1/%f
+!PREFERENCES_OUTDIRHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the different parts of the photo's pathname.nnFor example, if the photo being processed has the following pathname:n/home/tom/photos/2010-10-31/dsc0042.nefnthe meaning of the formatting strings are:n%d4 = homen%d3 = tomn%d2 = photosn%d1 = 2010-10-31n%f = dsc0042n%p1 = /home/tom/photos/2010-10-31/n%p2 = /home/tom/photos/n%p3 = /home/tom/n%p4 = /home/nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:n%p1/converted/%fnnIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:n%p2/converted/%d1/%f
!PREFERENCES_OUTDIRTEMPLATE;Use Template
-!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the directories and sub-paths of the path of the raw file.nnFor example, if /home/tom/image/02-09-2006/dsc0012.nefhas been opened, the meaning of the formatting strings are:n%f=dsc0012, %d1=02-09-2006, %d2=image, ...n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, %p3=/home/tom, ...nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory 'converted' located the directory of the original, write:n%p1/converted/%fnnIf you want to save the output image in directory '/home/tom/converted' with keeping the same subdirectory of dates, write:n%p2/converted/%d1/%f
+!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the different parts of the photo's pathname.nnFor example, if the photo being processed has the following pathname:n/home/tom/photos/2010-10-31/dsc0042.nefnthe meaning of the formatting strings are:n%d4 = homen%d3 = tomn%d2 = photosn%d1 = 2010-10-31n%f = dsc0042n%p1 = /home/tom/photos/2010-10-31/n%p2 = /home/tom/photos/n%p3 = /home/tom/n%p4 = /home/nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:n%p1/converted/%fnnIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:n%p2/converted/%d1/%f
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PARSEDEXT;Parsed Extensions
!PREFERENCES_PARSEDEXTADD;Add Extension
@@ -464,6 +470,7 @@ TP_HLREC_COLOR;Colour Propagation
!PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File
!PREFERENCES_PROPERTY;Property
!PREFERENCES_PSPATH;Adobe Photoshop installation directory
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SELECTICCDIRDLG;Select ICC Profile Directory...
!PREFERENCES_SELECTLANG;Select language
!PREFERENCES_SELECTMONITORPROFDLG;Select ICC Profile of the Display...
@@ -473,12 +480,15 @@ TP_HLREC_COLOR;Colour Propagation
!PREFERENCES_SHOWDATETIME;Show date and time
!PREFERENCES_SHOWONLYRAW;Show only RAW files
!PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows
+!PREFERENCES_SINGLETAB;Single tab mode
!PREFERENCES_STARTUPIMDIR;Image directory at startup
!PREFERENCES_TAB_BROWSER;File Browser
!PREFERENCES_TAB_GENERAL;General
!PREFERENCES_TAB_IMPROC;Image Processing
!PREFERENCES_TAB_OUTPUT;Output Options
!PREFERENCES_THUMBSIZE;Thumbnail Size
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROFILEPANEL_FILEDLGFILTERANY;Any files
!PROFILEPANEL_FILEDLGFILTERPP;Postprocessing profiles
!PROFILEPANEL_LABEL;Postprocessing Profiles
@@ -573,8 +583,15 @@ TP_HLREC_COLOR;Colour Propagation
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_DISTORTION_AMOUNT;Amount
!TP_DISTORTION_LABEL;Distortion
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
@@ -587,14 +604,14 @@ TP_HLREC_COLOR;Colour Propagation
!TP_EXPOSURE_BLACKLEVEL;Black
!TP_EXPOSURE_BRIGHTNESS;Brightness
!TP_EXPOSURE_CLIP;Clip
-!TP_EXPOSURE_COMPRHIGHLIGHTS;Highlight compression
-!TP_EXPOSURE_COMPRSHADOWS;Shadow compression
+!TP_EXPOSURE_COMPRHIGHLIGHTS;Highlight recovery
+!TP_EXPOSURE_COMPRSHADOWS;Shadow recovery
!TP_EXPOSURE_CONTRAST;Contrast
!TP_EXPOSURE_CURVEEDITOR;Tone Curve
!TP_EXPOSURE_EXPCOMP;Exp. Comp.
!TP_EXPOSURE_LABEL;Exposure
!TP_HLREC_CIELAB;CIELab Blending
-!TP_HLREC_LABEL;Highlight Recovery
+!TP_HLREC_LABEL;Highlight Reconstruction
!TP_HLREC_LUMINANCE;Luminance Recovery
!TP_HLREC_METHOD;Method:
!TP_ICM_FILEDLGFILTERANY;Any files
@@ -613,16 +630,14 @@ TP_HLREC_COLOR;Colour Propagation
!TP_ICM_WORKINGPROFILE;Working Profile
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
-!TP_LUMACURVE_BLACKLEVEL;Black
-!TP_LUMACURVE_BRIGHTNESS;Brightness
-!TP_LUMACURVE_COMPRHIGHLIGHTS;Highlight compression
-!TP_LUMACURVE_COMPRSHADOWS;Shadow compression
-!TP_LUMACURVE_CONTRAST;Contrast
-!TP_LUMACURVE_CURVEEDITOR;Luminance Curve
-!TP_LUMACURVE_LABEL;Luminance Curve
!TP_LUMADENOISE_EDGETOLERANCE;Edge Tolerance
!TP_LUMADENOISE_LABEL;Luminance Noise Reduction
!TP_LUMADENOISE_RADIUS;Radius
diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US)
index 688d9536f..b1307a18e 100644
--- a/rtdata/languages/English (US)
+++ b/rtdata/languages/English (US)
@@ -1,4 +1,5 @@
+#00 English (US)
!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -8,7 +9,7 @@
!ADJUSTER_RESET_TO_DEFAULT;Reset to default
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_FILEDLGFILTERANY;Any files
@@ -348,6 +349,12 @@
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -372,8 +379,9 @@
!PARTIALPASTE_HLRECOVERY;Highlight recovery
!PARTIALPASTE_ICMSETTINGS;ICM settings
!PARTIALPASTE_IPTCINFO;IPTC info
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PARTIALPASTE_LENSGROUP;Lens related settings
-!PARTIALPASTE_LUMACURVE;Luminance curve
!PARTIALPASTE_LUMADENOISE;Luminance noise reduction
!PARTIALPASTE_LUMINANCEGROUP;Luminance related settings
!PARTIALPASTE_METAICMGROUP;Metadata/ICM settings
@@ -384,7 +392,7 @@
!PARTIALPASTE_VIGNETTING;Vignetting correction
!PARTIALPASTE_WHITEBALANCE;White balance
!PREFERENCES_ADD;ADD
-!PREFERENCES_APPLNEXTSTARTUP;applied at next startup
+!PREFERENCES_APPLNEXTSTARTUP;restart required
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_BLINKCLIPPED;Blink clipped areas
@@ -401,9 +409,6 @@
!PREFERENCES_CACHETHUMBFORM;Cache Thumbnail Format
!PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height
!PREFERENCES_CACORRECTION;Apply CA auto correction
-!PREFERENCES_CLEARDLG_LINE1;Clearing cache
-!PREFERENCES_CLEARDLG_LINE2;This may take a few seconds.
-!PREFERENCES_CLEARDLG_TITLE;Please wait
!PREFERENCES_CLIPPINGIND;Clipping indication
!PREFERENCES_CMETRICINTENT;Colorimetric Intent
!PREFERENCES_DATEFORMAT;Date Format
@@ -418,8 +423,10 @@
!PREFERENCES_DIROTHER;Other
!PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup...
!PREFERENCES_DIRSOFTWARE;Installation directory
-!PREFERENCES_DMETHOD;Method
+!PREFERENCES_DMETHOD;Preview
+!PREFERENCES_DMETHODBATCH;Batch
!PREFERENCES_EDITORCMDLINE;Other command line
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_EXTERNALEDITOR;External editor
!PREFERENCES_FALSECOLOR;False color suppression steps
!PREFERENCES_FBROWSEROPTS;File Browser Options
@@ -441,12 +448,13 @@
!PREFERENCES_LINEDENOISE;Line noise filter
!PREFERENCES_LIVETHUMBNAILS;Live Thumbnails (slower)
!PREFERENCES_MONITORICC;Monitor Profile
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OUTDIR;Output Directory
!PREFERENCES_OUTDIRFOLDER;Save to folder
!PREFERENCES_OUTDIRFOLDERHINT;Put the saved images to the selected folder
-!PREFERENCES_OUTDIRHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the directories and sub-paths of the path of the raw file.nnFor example, if /home/tom/image/02-09-2006/dsc0012.nefhas been opened, the meaning of the formatting strings are:n%f=dsc0012, %d1=02-09-2006, %d2=image, ...n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, %p3=/home/tom, ...nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory 'converted' located the directory of the original, write:n%p1/converted/%fnnIf you want to save the output image in directory '/home/tom/converted' with keeping the same subdirectory of dates, write:n%p2/converted/%d1/%f
+!PREFERENCES_OUTDIRHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the different parts of the photo's pathname.nnFor example, if the photo being processed has the following pathname:n/home/tom/photos/2010-10-31/dsc0042.nefnthe meaning of the formatting strings are:n%d4 = homen%d3 = tomn%d2 = photosn%d1 = 2010-10-31n%f = dsc0042n%p1 = /home/tom/photos/2010-10-31/n%p2 = /home/tom/photos/n%p3 = /home/tom/n%p4 = /home/nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:n%p1/converted/%fnnIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:n%p2/converted/%d1/%f
!PREFERENCES_OUTDIRTEMPLATE;Use Template
-!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the directories and sub-paths of the path of the raw file.nnFor example, if /home/tom/image/02-09-2006/dsc0012.nefhas been opened, the meaning of the formatting strings are:n%f=dsc0012, %d1=02-09-2006, %d2=image, ...n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, %p3=/home/tom, ...nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory 'converted' located the directory of the original, write:n%p1/converted/%fnnIf you want to save the output image in directory '/home/tom/converted' with keeping the same subdirectory of dates, write:n%p2/converted/%d1/%f
+!PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:n%f, %d1, %d2, ..., %p1, %p2, ...nnThese formatting strings refer to the different parts of the photo's pathname.nnFor example, if the photo being processed has the following pathname:n/home/tom/photos/2010-10-31/dsc0042.nefnthe meaning of the formatting strings are:n%d4 = homen%d3 = tomn%d2 = photosn%d1 = 2010-10-31n%f = dsc0042n%p1 = /home/tom/photos/2010-10-31/n%p2 = /home/tom/photos/n%p3 = /home/tom/n%p4 = /home/nnIf you want to save the output image where the original is, write:n%p1/%fnnIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:n%p1/converted/%fnnIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:n%p2/converted/%d1/%f
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PARSEDEXT;Parsed Extensions
!PREFERENCES_PARSEDEXTADD;Add Extension
@@ -460,6 +468,7 @@
!PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File
!PREFERENCES_PROPERTY;Property
!PREFERENCES_PSPATH;Adobe Photoshop installation directory
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SELECTICCDIRDLG;Select ICC Profile Directory...
!PREFERENCES_SELECTLANG;Select language
!PREFERENCES_SELECTMONITORPROFDLG;Select ICC Profile of the Display...
@@ -469,6 +478,7 @@
!PREFERENCES_SHOWDATETIME;Show date and time
!PREFERENCES_SHOWONLYRAW;Show only RAW files
!PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows
+!PREFERENCES_SINGLETAB;Single tab mode
!PREFERENCES_STARTUPIMDIR;Image directory at startup
!PREFERENCES_TAB_BROWSER;File Browser
!PREFERENCES_TAB_COLORMGR;Color Management
@@ -476,6 +486,8 @@
!PREFERENCES_TAB_IMPROC;Image Processing
!PREFERENCES_TAB_OUTPUT;Output Options
!PREFERENCES_THUMBSIZE;Thumbnail Size
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROFILEPANEL_FILEDLGFILTERANY;Any files
!PROFILEPANEL_FILEDLGFILTERPP;Postprocessing profiles
!PROFILEPANEL_LABEL;Postprocessing Profiles
@@ -574,8 +586,15 @@
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_DISTORTION_AMOUNT;Amount
!TP_DISTORTION_LABEL;Distortion
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
@@ -588,15 +607,15 @@
!TP_EXPOSURE_BLACKLEVEL;Black
!TP_EXPOSURE_BRIGHTNESS;Brightness
!TP_EXPOSURE_CLIP;Clip
-!TP_EXPOSURE_COMPRHIGHLIGHTS;Highlight compression
-!TP_EXPOSURE_COMPRSHADOWS;Shadow compression
+!TP_EXPOSURE_COMPRHIGHLIGHTS;Highlight recovery
+!TP_EXPOSURE_COMPRSHADOWS;Shadow recovery
!TP_EXPOSURE_CONTRAST;Contrast
!TP_EXPOSURE_CURVEEDITOR;Tone Curve
!TP_EXPOSURE_EXPCOMP;Exp. Comp.
!TP_EXPOSURE_LABEL;Exposure
!TP_HLREC_CIELAB;CIELab Blending
!TP_HLREC_COLOR;Color Propagation
-!TP_HLREC_LABEL;Highlight Recovery
+!TP_HLREC_LABEL;Highlight Reconstruction
!TP_HLREC_LUMINANCE;Luminance Recovery
!TP_HLREC_METHOD;Method:
!TP_ICM_FILEDLGFILTERANY;Any files
@@ -615,16 +634,14 @@
!TP_ICM_WORKINGPROFILE;Working Profile
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
-!TP_LUMACURVE_BLACKLEVEL;Black
-!TP_LUMACURVE_BRIGHTNESS;Brightness
-!TP_LUMACURVE_COMPRHIGHLIGHTS;Highlight compression
-!TP_LUMACURVE_COMPRSHADOWS;Shadow compression
-!TP_LUMACURVE_CONTRAST;Contrast
-!TP_LUMACURVE_CURVEEDITOR;Luminance Curve
-!TP_LUMACURVE_LABEL;Luminance Curve
!TP_LUMADENOISE_EDGETOLERANCE;Edge Tolerance
!TP_LUMADENOISE_LABEL;Luminance Noise Reduction
!TP_LUMADENOISE_RADIUS;Radius
diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol
index 07a63ba18..e63654138 100644
--- a/rtdata/languages/Espanol
+++ b/rtdata/languages/Espanol
@@ -606,7 +606,7 @@ ZOOMBAR_SMALL;Pequeño
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -657,6 +657,12 @@ ZOOMBAR_SMALL;Pequeño
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -664,26 +670,42 @@ ZOOMBAR_SMALL;Pequeño
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -692,6 +714,11 @@ ZOOMBAR_SMALL;Pequeño
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara
index 2eb9b2aef..a344ac0f1 100644
--- a/rtdata/languages/Euskara
+++ b/rtdata/languages/Euskara
@@ -600,7 +600,7 @@ ZOOMBAR_SMALL;Txikia
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -651,6 +651,12 @@ ZOOMBAR_SMALL;Txikia
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -658,26 +664,42 @@ ZOOMBAR_SMALL;Txikia
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -686,6 +708,11 @@ ZOOMBAR_SMALL;Txikia
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais
index 6e0b3a4e9..2fcbf6483 100644
--- a/rtdata/languages/Francais
+++ b/rtdata/languages/Francais
@@ -216,7 +216,14 @@ HISTORY_MSG_81;Redimensionnement activé
HISTORY_MSG_82;Changement de profil
HISTORY_MSG_83;Ombres/Hautes lumières haute qualité
HISTORY_MSG_84;Correction de la perspective
+HISTORY_MSG_85;Coefficients d'ondelette
+HISTORY_MSG_86;Égaliseur d'ondelette
+HISTORY_MSG_87;Réduction du bruit d'impulsion
+HISTORY_MSG_89;Réd. du bruit présevant les bords
HISTORY_MSG_8;Compensation d'exposition
+HISTORY_MSG_90;Réd. de bruit Luminance
+HISTORY_MSG_91;Réd. de bruit Chominance
+HISTORY_MSG_92;Réd. de bruit Gamma
HISTORY_MSG_9;Compression des hautes lumières
HISTORY_NEWSNAPSHOT;Ajouter
HISTORY_NEWSNAPSHOTAS;Sous...
@@ -293,7 +300,6 @@ MAIN_BUTTON_SAVE_TOOLTIP;Enregistrer l'image courante Ctrl+S
MAIN_BUTTON_SENDTOEDITOR;Envoyer vers l'éditeur
MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Éditer l'image courante dans l'éditeur externe Ctrl+E
MAIN_BUTTON_UNFULLSCREEN;Quitter le plein écran
-MAIN_BUTTON_UNFULLSCREEN;Quitter plein écran
MAIN_FRAME_BATCHQUEUE;File d'attente
MAIN_FRAME_FILEBROWSER;Explorateur de fichiers
MAIN_FRAME_PLACES;Emplacements
@@ -411,7 +417,9 @@ PREFERENCES_DIROTHER;Autre
PREFERENCES_DIRSELECTDLG;Choix du dossier Image au lancement...
PREFERENCES_DIRSOFTWARE;Dossier d'installation
PREFERENCES_DMETHOD;Méthode
+PREFERENCES_DMETHODBATCH;Batch
PREFERENCES_EDITORCMDLINE;Autre ligne de commande
+PREFERENCES_EDITORLAYOUT;Disposition de l'éditeur
PREFERENCES_EXTERNALEDITOR;Éditeur externe
PREFERENCES_FALSECOLOR;Itérations pour la suppression des fausses couleurs
PREFERENCES_FBROWSEROPTS;Options du navigateur de fichiers
@@ -433,6 +441,7 @@ PREFERENCES_INTENT_SATURATION;Saturation
PREFERENCES_LINEDENOISE;Filtre de bruit de Ligne
PREFERENCES_LIVETHUMBNAILS;Vignettes "Live" (plus lent)
PREFERENCES_MONITORICC;Profil du moniteur
+PREFERENCES_MULTITAB;Mode éditeurs multiple
PREFERENCES_OUTDIR;Dossier de sortie
PREFERENCES_OUTDIRFOLDER;Dossier de sauvegarde
PREFERENCES_OUTDIRFOLDERHINT;Place les images traitées dans le dossier selectionné
@@ -452,6 +461,7 @@ PREFERENCES_PROFILESAVECACHE;Enregistrer la paramètres de traitement dans le Ca
PREFERENCES_PROFILESAVEINPUT;Enregistrer la paramètres de traitement accolé au fichier d'entrée
PREFERENCES_PROPERTY;Propriété
PREFERENCES_PSPATH;Dossier d'installation d'Adobe Photoshop
+PREFERENCES_SELECTFONT;Police de caractère
PREFERENCES_SELECTICCDIRDLG;Choix du dossier des profils ICC...
PREFERENCES_SELECTLANG;Choix de la langue
PREFERENCES_SELECTMONITORPROFDLG;Choix du profil ICC de l'affichage...
@@ -461,6 +471,7 @@ PREFERENCES_SHOWBASICEXIF;Voir les infos EXIF basiques
PREFERENCES_SHOWDATETIME;Voir la date et l'heure
PREFERENCES_SHOWONLYRAW;Voir seulement les fichiers RAW
PREFERENCES_SHTHRESHOLD;Seuil pour le dépassement de domaine inférieur
+PREFERENCES_SINGLETAB;Mode éditeur unique
PREFERENCES_STARTUPIMDIR;Répertoire Image au démarrage
PREFERENCES_TAB_BROWSER;Navigateur de fichiers
PREFERENCES_TAB_COLORMGR;Gestion des couleurs
@@ -468,6 +479,8 @@ PREFERENCES_TAB_GENERAL;Général
PREFERENCES_TAB_IMPROC;Traitement de l'Image
PREFERENCES_TAB_OUTPUT;Options de sortie
PREFERENCES_THUMBSIZE;Tailles des vignettes
+PREFERENCES_USESYSTEMTHEME; Utiliser le thème système
+PREFERENCES_WORKFLOW;Habitudes de travail
PROFILEPANEL_FILEDLGFILTERANY;Tous les fichiers
PROFILEPANEL_FILEDLGFILTERPP;Profils de post-traitement
PROFILEPANEL_LABEL;Profils de post-traitement
@@ -568,6 +581,13 @@ TP_DIRPYRDENOISE_CHROMA;Chrominance
TP_DIRPYRDENOISE_GAMMA;Gamma
TP_DIRPYRDENOISE_LABEL;Réduction du bruit présevant les bords
TP_DIRPYRDENOISE_LUMA;Luminance
+TP_DIRPYREQUALIZER_LABEL;Égaliseur d'amas
+TP_DIRPYREQUALIZER_LUMACOARSEST;les plus gros
+TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contraste-
+TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contraste+
+TP_DIRPYREQUALIZER_LUMAFINEST;les plus petits
+TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutre
+TP_DIRPYREQUALIZER_THRESHOLD;Seuil
TP_DISTORTION_AMOUNT;Quantité
TP_DISTORTION_LABEL;Distorsion
TP_EQUALIZER_CONTRAST_MINUS;Contraste-
@@ -696,10 +716,16 @@ ZOOMPANEL_ZOOMOUT;Zoom -
!!!!!!!!!!!!!!!!!!!!!!!!!
-!HISTORY_MSG_85;Wavelet coefficients
-!HISTORY_MSG_86;Wavelet equalizer
-!HISTORY_MSG_87;Impulse noise reduction
-!HISTORY_MSG_89;Directional pyramid
-!HISTORY_MSG_90;Directional pyramid luminance
-!HISTORY_MSG_91;Directional pyramid chominance
-!HISTORY_MSG_92;Directional pyramid gamma
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek
index 5968baa69..84688af57 100644
--- a/rtdata/languages/Greek
+++ b/rtdata/languages/Greek
@@ -598,7 +598,7 @@ ZOOMBAR_SMALL;Μικρό
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -649,6 +649,12 @@ ZOOMBAR_SMALL;Μικρό
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -656,26 +662,42 @@ ZOOMBAR_SMALL;Μικρό
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -684,6 +706,11 @@ ZOOMBAR_SMALL;Μικρό
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew
index 845bb6a9b..a133876f1 100644
--- a/rtdata/languages/Hebrew
+++ b/rtdata/languages/Hebrew
@@ -599,7 +599,7 @@ ZOOMBAR_SMALL;קטן
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -650,6 +650,12 @@ ZOOMBAR_SMALL;קטן
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -657,26 +663,42 @@ ZOOMBAR_SMALL;קטן
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -685,6 +707,11 @@ ZOOMBAR_SMALL;קטן
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Italian b/rtdata/languages/Italian
index a9068a8b9..2748ac8b7 100644
--- a/rtdata/languages/Italian
+++ b/rtdata/languages/Italian
@@ -602,7 +602,7 @@ ZOOMBAR_SMALL;Piccola
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -653,6 +653,12 @@ ZOOMBAR_SMALL;Piccola
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -660,26 +666,42 @@ ZOOMBAR_SMALL;Piccola
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -688,6 +710,11 @@ ZOOMBAR_SMALL;Piccola
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese
index 4c5ba9b65..f9789c28d 100644
--- a/rtdata/languages/Japanese
+++ b/rtdata/languages/Japanese
@@ -2,7 +2,7 @@
#00 Japanese
#01 2009-02-18 by A3novy
#02 updated to RT2.4-RC by paul.matthijsse
-#03 2010-06-20 updated to RT3.0 alpha 1 by A3novy
+#03 2010-10-24 updated to RT3.0 alpha 1 by A3novy
ADJUSTER_RESET_TO_DEFAULT;リセット初期化
BATCHQUEUE_AUTOSTART;オートスタート
BATCH_PROCESSING;バッチ処理
@@ -14,6 +14,7 @@ CURVEEDITOR_HIGHLIGHTS;ハイライト
CURVEEDITOR_LIGHTS;ライト
CURVEEDITOR_LINEAR;リニア
CURVEEDITOR_LOADDLGLABEL;カーブ読み込み...
+CURVEEDITOR_NURBS;ナーブス カーブ
CURVEEDITOR_PARAMETRIC;パラメトリック
CURVEEDITOR_SAVEDLGLABEL;カーブ保存...
CURVEEDITOR_SHADOWS;シャドウ
@@ -136,12 +137,12 @@ HISTORY_MSG_10;シャドウ補正
HISTORY_MSG_11;トーンカーブ
HISTORY_MSG_12;露出 オート
HISTORY_MSG_13;露出 クリッピング
-HISTORY_MSG_14;輝度 明るさ
-HISTORY_MSG_15;輝度 コントラスト
+HISTORY_MSG_14;Lab 明るさ
+HISTORY_MSG_15;Lab コントラスト
HISTORY_MSG_16;輝度 黒レベル
HISTORY_MSG_17;輝度 ハイライト圧縮
HISTORY_MSG_18;輝度 シャドウ圧縮
-HISTORY_MSG_19;輝度 カーブ
+HISTORY_MSG_19;Lab 輝度カーブ
HISTORY_MSG_1;写真を読み込みました
HISTORY_MSG_20;シャープ
HISTORY_MSG_21;シャープ 半径
@@ -214,7 +215,19 @@ HISTORY_MSG_81;リサイズ 有効
HISTORY_MSG_82;プロファイル変更
HISTORY_MSG_83;高画質 シャドウ/ハイライト
HISTORY_MSG_84;パースペクティブ コレクション
+HISTORY_MSG_85;ウェーブレット係数
+HISTORY_MSG_86;ウェーブレット イコライザ
+HISTORY_MSG_87;インパルス ノイズ除去
+HISTORY_MSG_89;指向性ピラミッド
HISTORY_MSG_8;露出補正
+HISTORY_MSG_90;指向性ピラミッド 輝度
+HISTORY_MSG_91;指向性ピラミッド 色度
+HISTORY_MSG_92;指向性ピラミッド ガンマ
+HISTORY_MSG_93;指向性ピラミッド係数
+HISTORY_MSG_94;指向性ピラミッド イコライザ
+HISTORY_MSG_95;Lab 彩度
+HISTORY_MSG_96;Lab aカーブ
+HISTORY_MSG_97;Lab bカーブ
HISTORY_MSG_9;ハイライト補正
HISTORY_NEWSNAPSHOT;追加
HISTORY_NEWSNAPSHOTAS;ラベル
@@ -283,10 +296,13 @@ MAIN_BUTTON_EXIT;終了
MAIN_BUTTON_FULLSCREEN;フルスクリーン
MAIN_BUTTON_PREFERENCES;環境設定
MAIN_BUTTON_PUTTOQUEUE;キューに追加
+MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;現在の画像をキュー処理に加える Ctrl+Q
MAIN_BUTTON_QUEUE;キューに追加
MAIN_BUTTON_SAVE;画像の保存
MAIN_BUTTON_SAVEAS;別途保存
+MAIN_BUTTON_SAVE_TOOLTIP;現在の画像を保存 Ctrl+S
MAIN_BUTTON_SENDTOEDITOR;エディタに送る
+MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;現在の画像を外部エディターで編集 Ctrl+E
MAIN_BUTTON_UNFULLSCREEN;フルスクリーン解除
MAIN_FRAME_BATCHQUEUE;バッチ キュー
MAIN_FRAME_FILEBROWSER;ファイルブラウザ
@@ -334,6 +350,12 @@ NAVIGATOR_G_NA;G = n/a
NAVIGATOR_G_VALUE;G = %1
NAVIGATOR_H_NA;H = n/a
NAVIGATOR_H_VALUE;H = %1
+NAVIGATOR_LAB_A_NA;A = n/a
+NAVIGATOR_LAB_A_VALUE;A = %1
+NAVIGATOR_LAB_B_NA;B = n/a
+NAVIGATOR_LAB_B_VALUE;B = %1
+NAVIGATOR_LAB_L_NA;L = n/a
+NAVIGATOR_LAB_L_VALUE;L = %1
NAVIGATOR_R_NA;R = n/a
NAVIGATOR_R_VALUE;R = %1
NAVIGATOR_S_NA;S = n/a
@@ -358,8 +380,8 @@ PARTIALPASTE_EXPOSURE;露出
PARTIALPASTE_HLRECOVERY;ハイライト修復
PARTIALPASTE_ICMSETTINGS;ICM 設定
PARTIALPASTE_IPTCINFO;IPTC 情報
+PARTIALPASTE_LABCURVE;Lab カーブ
PARTIALPASTE_LENSGROUP;レンズ設定
-PARTIALPASTE_LUMACURVE;輝度カーブ
PARTIALPASTE_LUMADENOISE;輝度 ノイズ除去
PARTIALPASTE_LUMINANCEGROUP;輝度設定
PARTIALPASTE_METAICMGROUP;メタデータ/ICM 設定
@@ -386,6 +408,7 @@ PREFERENCES_CACHESTRAT2;メモリ消費重視
PREFERENCES_CACHESTRAT;キャッシュ運用の方針
PREFERENCES_CACHETHUMBFORM;キャッシュのサムネイル形式
PREFERENCES_CACHETHUMBHEIGHT;サムネイル縦の最大値
+PREFERENCES_CACORRECTION;色収差補正を適応
PREFERENCES_CLEARDLG_LINE1;キャッシュの削除
PREFERENCES_CLEARDLG_LINE2;数秒掛かるかも・・
PREFERENCES_CLEARDLG_TITLE;ちょっと待って・・
@@ -404,7 +427,9 @@ PREFERENCES_DIROTHER;他
PREFERENCES_DIRSELECTDLG;起動時の画像・ディレクトリ選択...
PREFERENCES_DIRSOFTWARE;インストール・ディレクトリ
PREFERENCES_DMETHOD;方法
+PREFERENCES_DMETHODBATCH;バッチ
PREFERENCES_EDITORCMDLINE;その他・コマンド入力
+PREFERENCES_EDITORLAYOUT;エディタ レイアウト
PREFERENCES_EXTERNALEDITOR;外部エディタ
PREFERENCES_FALSECOLOR;偽色 補間ステップ
PREFERENCES_FBROWSEROPTS;ファイルブラウザのオプション
@@ -412,17 +437,21 @@ PREFERENCES_FILEFORMAT;ファイル形式
PREFERENCES_FORIMAGE;画像ファイル
PREFERENCES_FORRAW;RAW ファイル
PREFERENCES_GIMPPATH;GIMP インストール ディレクトリ
+PREFERENCES_GREENEQUIL;グリーン 平衡化
PREFERENCES_GTKTHEME;GTK デフォルト
PREFERENCES_HINT;ヒント
PREFERENCES_HLTHRESHOLD;ハイライト・クリッピング領域のしきい値
+PREFERENCES_HOTDEADPIXFILT;ホット/デッド ピクセル・フィルターを適応
PREFERENCES_ICCDIR;ICCプロファイルのディレクトリ
PREFERENCES_IMPROCPARAMS;画像処理の規定値
PREFERENCES_INTENT_ABSOLUTE;絶対的な色域を維持
PREFERENCES_INTENT_PERCEPTUAL;知覚的
PREFERENCES_INTENT_RELATIVE;相対的な色域を維持
PREFERENCES_INTENT_SATURATION;彩度
+PREFERENCES_LINEDENOISE;ライン ノイズフィルタ
PREFERENCES_LIVETHUMBNAILS;ライブ・サムネイル (遅い)
PREFERENCES_MONITORICC;モニタープロファイル
+PREFERENCES_MULTITAB;マルチ タブモード
PREFERENCES_OUTDIR;出力ディレクトリ
PREFERENCES_OUTDIRFOLDER;フォルダに保存
PREFERENCES_OUTDIRFOLDERHINT;選択したフォルダに画像を保存します
@@ -442,6 +471,7 @@ PREFERENCES_PROFILESAVECACHE;処理済みのプロファイル・パラメータ
PREFERENCES_PROFILESAVEINPUT;処理済みプロファイル・パラメータを入力ファイルと同じディレクトリに保存
PREFERENCES_PROPERTY;プロパティ
PREFERENCES_PSPATH;Adobe Photoshop のインストール・ディレクトリ
+PREFERENCES_SELECTFONT;フォント選択
PREFERENCES_SELECTICCDIRDLG;ICCプロファイル・ディレクトリ選択...
PREFERENCES_SELECTLANG;言語選択
PREFERENCES_SELECTMONITORPROFDLG;ディスプレイのICCプロファイルを選択...
@@ -451,6 +481,7 @@ PREFERENCES_SHOWBASICEXIF;基本Exif情報 表示
PREFERENCES_SHOWDATETIME;日付表示
PREFERENCES_SHOWONLYRAW;RAWファイルのみ表示
PREFERENCES_SHTHRESHOLD;シャドウ・クリッピング領域のしきい値
+PREFERENCES_SINGLETAB;シングル タブモード
PREFERENCES_STARTUPIMDIR;起動時の画像・ディレクトリ
PREFERENCES_TAB_BROWSER;ファイルブラウザ
PREFERENCES_TAB_COLORMGR;カラーマネジメント
@@ -458,6 +489,8 @@ PREFERENCES_TAB_GENERAL;一般
PREFERENCES_TAB_IMPROC;画像処理
PREFERENCES_TAB_OUTPUT;出力オプション
PREFERENCES_THUMBSIZE;サムネイル・サイズ
+PREFERENCES_USESYSTEMTHEME;システムのテーマを使う
+PREFERENCES_WORKFLOW;ワークフロー
PROFILEPANEL_FILEDLGFILTERANY;すべてのファイル
PROFILEPANEL_FILEDLGFILTERPP;処理済みプロファイル
PROFILEPANEL_LABEL;処理済みプロファイル
@@ -491,6 +524,7 @@ QINFO_FOCALLENGTH;焦点距離
QINFO_ISO;ISO
QINFO_LENS;レンズ
QINFO_NOEXIF;Exifデータがありません
+SAVEDLG_AUTOSUFFIX;ファイルが存在する場合、自動的に末尾に文字を加える
SAVEDLG_FILEFORMAT;ファイル形式
SAVEDLG_JPEGQUAL;JPEG 品質
SAVEDLG_JPGFILTER;JPEG ファイル
@@ -553,8 +587,25 @@ TP_CROP_W;W
TP_CROP_X;x
TP_CROP_Y;y
TP_DETAIL_AMOUNT;量
+TP_DIRPYRDENOISE_CHROMA;色度
+TP_DIRPYRDENOISE_GAMMA;ガンマ
+TP_DIRPYRDENOISE_LABEL;指向性ピラミッド ノイズ除去
+TP_DIRPYRDENOISE_LUMA;輝度
+TP_DIRPYREQUALIZER_LABEL;指向性ピラミッド イコライザ
+TP_DIRPYREQUALIZER_LUMACOARSEST;粗い
+TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;コントラスト-
+TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;コントラスト+
+TP_DIRPYREQUALIZER_LUMAFINEST;細い
+TP_DIRPYREQUALIZER_LUMANEUTRAL;ニュートラル
+TP_DIRPYREQUALIZER_THRESHOLD;しきい値
TP_DISTORTION_AMOUNT;量
TP_DISTORTION_LABEL;歪曲収差補正
+TP_EQUALIZER_CONTRAST_MINUS;コントラスト-
+TP_EQUALIZER_CONTRAST_PLUS;コントラスト+
+TP_EQUALIZER_FINEST;細い
+TP_EQUALIZER_LABEL;ウェーブレット イコライザ
+TP_EQUALIZER_LARGEST;粗い
+TP_EQUALIZER_NEUTRAL;ニュートラル
TP_EXPOSURE_AUTOLEVELS;オートレベル
TP_EXPOSURE_BLACKLEVEL;黒レベル
TP_EXPOSURE_BRIGHTNESS;明るさ
@@ -584,16 +635,17 @@ TP_ICM_OUTPUTDLGLABEL;出力 ICC プロファイルを選択...
TP_ICM_OUTPUTPROFILE;出力プロファイル
TP_ICM_SAVEREFERENCE;プロファイリングの参照する画像を保存
TP_ICM_WORKINGPROFILE;作業プロファイル
+TP_IMPULSEDENOISE_LABEL;インパルス ノイズ除去
+TP_IMPULSEDENOISE_THRESH;しきい値
+TP_LABCURVE_BRIGHTNESS;明るさ
+TP_LABCURVE_CONTRAST;コントラスト
+TP_LABCURVE_CURVEEDITOR
+TP_LABCURVE_CURVEEDITOR;Lab 輝度カーブ
+TP_LABCURVE_LABEL;Lab カーブ
+TP_LABCURVE_SATURATION;彩度
TP_LENSGEOM_AUTOCROP;自動的に切り抜き選択
TP_LENSGEOM_FILL;オートフィル
TP_LENSGEOM_LABEL;レンズ / 形状
-TP_LUMACURVE_BLACKLEVEL;黒レベル
-TP_LUMACURVE_BRIGHTNESS;明るさ
-TP_LUMACURVE_COMPRHIGHLIGHTS;ハイライト圧縮
-TP_LUMACURVE_COMPRSHADOWS;シャドウ圧縮
-TP_LUMACURVE_CONTRAST;コントラスト
-TP_LUMACURVE_CURVEEDITOR;輝度カーブエディタ
-TP_LUMACURVE_LABEL;輝度カーブ
TP_LUMADENOISE_EDGETOLERANCE;エッジの許容度
TP_LUMADENOISE_LABEL;輝度 ノイズ除去
TP_LUMADENOISE_RADIUS;半径
@@ -676,31 +728,3 @@ ZOOMPANEL_ZOOMOUT;ズームアウト
!!!!!!!!!!!!!!!!!!!!!!!!!
-!CURVEEDITOR_NURBS;Control cage
-!HISTORY_MSG_85;Wavelet coefficients
-!HISTORY_MSG_86;Wavelet equalizer
-!HISTORY_MSG_87;Impulse noise reduction
-!HISTORY_MSG_89;Directional pyramid
-!HISTORY_MSG_90;Directional pyramid luminance
-!HISTORY_MSG_91;Directional pyramid chominance
-!HISTORY_MSG_92;Directional pyramid gamma
-!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Add current image to processing queue Ctrl+Q
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image Ctrl+S
-!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor Ctrl+E
-!PREFERENCES_CACORRECTION;Apply CA auto correction
-!PREFERENCES_GREENEQUIL;Green equilibration
-!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
-!PREFERENCES_LINEDENOISE;Line noise filter
-!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
-!TP_DIRPYRDENOISE_CHROMA;Chrominance
-!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
-!TP_DIRPYRDENOISE_LUMA;Luminance
-!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
-!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
-!TP_EQUALIZER_FINEST;finest
-!TP_EQUALIZER_LABEL;Wavelet equalizer
-!TP_EQUALIZER_LARGEST;coarsest
-!TP_EQUALIZER_NEUTRAL;Neutral
-!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
-!TP_IMPULSEDENOISE_THRESH;Threshold
diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian
index 8bfacd794..990976527 100644
--- a/rtdata/languages/Latvian
+++ b/rtdata/languages/Latvian
@@ -598,7 +598,7 @@ ZOOMBAR_SMALL;Mazs
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -649,6 +649,12 @@ ZOOMBAR_SMALL;Mazs
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -656,26 +662,42 @@ ZOOMBAR_SMALL;Mazs
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -684,6 +706,11 @@ ZOOMBAR_SMALL;Mazs
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar
index 4eea760cb..2551397ec 100644
--- a/rtdata/languages/Magyar
+++ b/rtdata/languages/Magyar
@@ -597,7 +597,7 @@ ZOOMBAR_SMALL;Kicsi
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -648,6 +648,12 @@ ZOOMBAR_SMALL;Kicsi
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -655,26 +661,42 @@ ZOOMBAR_SMALL;Kicsi
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -683,6 +705,11 @@ ZOOMBAR_SMALL;Kicsi
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands
index e4f801712..64d09b2bb 100644
--- a/rtdata/languages/Nederlands
+++ b/rtdata/languages/Nederlands
@@ -683,15 +683,37 @@ ZOOMPANEL_ZOOMOUT;Zoom uit
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Add current image to processing queue Ctrl+Q
!MAIN_BUTTON_SAVE_TOOLTIP;Save current image Ctrl+S
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor Ctrl+E
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_CACORRECTION;Apply CA auto correction
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
+!PREFERENCES_SELECTFONT;Select font
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -700,6 +722,11 @@ ZOOMPANEL_ZOOMOUT;Zoom uit
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM
index f9f357dc7..d6ea811f4 100644
--- a/rtdata/languages/Norsk BM
+++ b/rtdata/languages/Norsk BM
@@ -599,7 +599,7 @@ ZOOMBAR_SMALL;Liten
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -650,6 +650,12 @@ ZOOMBAR_SMALL;Liten
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -657,26 +663,42 @@ ZOOMBAR_SMALL;Liten
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -685,6 +707,11 @@ ZOOMBAR_SMALL;Liten
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish
index 6dfde0550..de1813711 100644
--- a/rtdata/languages/Polish
+++ b/rtdata/languages/Polish
@@ -604,7 +604,7 @@ ZOOMBAR_SMALL;Mała
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -655,6 +655,12 @@ ZOOMBAR_SMALL;Mała
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -662,25 +668,41 @@ ZOOMBAR_SMALL;Mała
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -689,6 +711,11 @@ ZOOMBAR_SMALL;Mała
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters)
index fb72ef43a..5a05b67bd 100644
--- a/rtdata/languages/Polish (Latin Characters)
+++ b/rtdata/languages/Polish (Latin Characters)
@@ -602,7 +602,7 @@ ZOOMBAR_SMALL;Mala
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -653,6 +653,12 @@ ZOOMBAR_SMALL;Mala
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -660,26 +666,42 @@ ZOOMBAR_SMALL;Mala
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -688,6 +710,11 @@ ZOOMBAR_SMALL;Mala
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil)
index a14bd297a..e173b6664 100644
--- a/rtdata/languages/Portugues (Brasil)
+++ b/rtdata/languages/Portugues (Brasil)
@@ -599,7 +599,7 @@ ZOOMBAR_SMALL;Pequeno
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -650,6 +650,12 @@ ZOOMBAR_SMALL;Pequeno
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -657,26 +663,42 @@ ZOOMBAR_SMALL;Pequeno
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -685,6 +707,11 @@ ZOOMBAR_SMALL;Pequeno
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian
index e22b04b14..fabd39572 100644
--- a/rtdata/languages/Russian
+++ b/rtdata/languages/Russian
@@ -603,7 +603,7 @@ ZOOMBAR_SMALL;Минимальное
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -654,6 +654,12 @@ ZOOMBAR_SMALL;Минимальное
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -661,26 +667,42 @@ ZOOMBAR_SMALL;Минимальное
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -689,6 +711,11 @@ ZOOMBAR_SMALL;Минимальное
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters)
index 375520165..302b1c869 100644
--- a/rtdata/languages/Serbian (Cyrilic Characters)
+++ b/rtdata/languages/Serbian (Cyrilic Characters)
@@ -1,3 +1,4 @@
+
# Serbian translation
#00 Serbian (Cyrilic)
#01 by gpopac 2010-09-21
@@ -702,3 +703,30 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!HISTORY_MSG_90;Directional pyramid luminance
!HISTORY_MSG_91;Directional pyramid chominance
!HISTORY_MSG_92;Directional pyramid gamma
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
+!PREFERENCES_MULTITAB;Multiple tabs mode
+!PREFERENCES_SELECTFONT;Select font
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters)
index 0ac8b9510..e51bec1e5 100644
--- a/rtdata/languages/Serbian (Latin Characters)
+++ b/rtdata/languages/Serbian (Latin Characters)
@@ -1,3 +1,4 @@
+
# Serbian translation
#00 Serbian (Cyrilic)
#01 by gpopac 2010-09-21
@@ -702,3 +703,30 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!HISTORY_MSG_90;Directional pyramid luminance
!HISTORY_MSG_91;Directional pyramid chominance
!HISTORY_MSG_92;Directional pyramid gamma
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
+!PREFERENCES_MULTITAB;Multiple tabs mode
+!PREFERENCES_SELECTFONT;Select font
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak
index 32e63978f..519973d6d 100644
--- a/rtdata/languages/Slovak
+++ b/rtdata/languages/Slovak
@@ -1,23 +1,38 @@
-#00 Sloven?~Mina
+#00 Slovenčina
#01 08.05.2008
#02 01.02.2009
-#03 (Slapo)
+#03 23.10.2010
+#04 (Slapo)
+
+
+
ADJUSTER_RESET_TO_DEFAULT;Resetovať na predvolené nastavenia
+BATCHQUEUE_AUTOSTART;Auto štart
+BATCH_PROCESSING;Dávkové spracovanie
+CURVEEDITOR_CUSTOM;Vlastné
+CURVEEDITOR_DARKS;Tiene
CURVEEDITOR_FILEDLGFILTERANY;Všetky súbory
CURVEEDITOR_FILEDLGFILTERCURVE;Súbory kriviek
+CURVEEDITOR_HIGHLIGHTS;Najvyššie svetlá
+CURVEEDITOR_LIGHTS;Svetlá
CURVEEDITOR_LINEAR;Lineárna
CURVEEDITOR_LOADDLGLABEL;Načítať krivku...
+CURVEEDITOR_NURBS;Kontrolná klietka
+CURVEEDITOR_PARAMETRIC;Parametricky
CURVEEDITOR_SAVEDLGLABEL;Uložiť krivku...
+CURVEEDITOR_SHADOWS;Hlboké tiene
CURVEEDITOR_TOOLTIPLINEAR;Resetovať krivku na lineárnu
CURVEEDITOR_TOOLTIPLOAD;Načítať krivku zo súboru
CURVEEDITOR_TOOLTIPSAVE;Uložiť súčasnú krivku
+CURVEEDITOR_TYPE;Typ:
EXIFFILTER_APERTURE;Clona
EXIFFILTER_CAMERA;Fotoaparát
EXIFFILTER_DIALOGLABEL;Exif filter
EXIFFILTER_FOCALLEN;Ohnisková vzdialenosť
EXIFFILTER_ISO;ISO
EXIFFILTER_LENS;Objektív
+EXIFFILTER_METADATAFILTER;Povoliť filtre meta údajov
EXIFFILTER_SHUTTER;Uzávierka
EXIFPANEL_ADDEDIT;Pridať/Upraviť
EXIFPANEL_ADDEDITHINT;Pridať novú značku alebo upraviť značku
@@ -33,10 +48,12 @@ EXIFPANEL_RESETALL;Resetovať všetky
EXIFPANEL_RESETALLHINT;Resetovať všetky značky na ich pôvodné hodnoty
EXIFPANEL_RESETHINT;Resetovať vybrané značky na ich pôvodné hodnoty
EXIFPANEL_SUBDIRECTORY;Podadresár
+FILEBROWSER_ADDDELTEMPLATE;Pridať/Odstrániť šablóny...
FILEBROWSER_APPLYPROFILE;Použiť profil
FILEBROWSER_ARRANGEMENTHINT;Zmeniť medzi vertikálnym/horizontálnym zarovnaním zmenšenín
FILEBROWSER_CLEARPROFILE;Vyčistiť profil
FILEBROWSER_COPYPROFILE;Kopírovať profil
+FILEBROWSER_CURRENT_NAME;Súčasný názov:
FILEBROWSER_DELETEDLGLABEL;Potvrdenie odstránenia súboru
FILEBROWSER_DELETEDLGMSG;Ste si istí, že chcete odstrániť vybrané %1 súbory?
FILEBROWSER_EMPTYTRASH;Vyprázdniť kôš
@@ -46,6 +63,7 @@ FILEBROWSER_EXIFFILTERAPPLYHINT;Zapnúť/vypnúť EXIF filter prehliadača súbo
FILEBROWSER_EXIFFILTERLABEL;Exif Filter
FILEBROWSER_EXIFFILTERSETTINGS;Nastavenia
FILEBROWSER_EXIFFILTERSETTINGSHINT;Zmeňte nastavenia EXIF filtra
+FILEBROWSER_NEW_NAME;Nový názov:
FILEBROWSER_PARTIALPASTEPROFILE;Čiastočné vloženie
FILEBROWSER_PASTEPROFILE;Vložiť profil
FILEBROWSER_POPUPCANCELJOB;Zrušiť úlohu
@@ -69,6 +87,7 @@ FILEBROWSER_PROCESSINGSETTINGSHINT;Nastaviť formát súborov a výstupný adres
FILEBROWSER_RENAMEDLGLABEL;Premenovať súbor
FILEBROWSER_RENAMEDLGMSG;Premenovať súbor "%1" na:
FILEBROWSER_SHOWDIRHINT;Ukázať všetky obrázky v adresári
+FILEBROWSER_SHOWEXIFINFO;Ukázať EXIF info i
FILEBROWSER_SHOWQUEUEHINT;Zobraziť obsah radu na spracovanie
FILEBROWSER_SHOWRANK1HINT;Ukázať obrázky triedy 1 hviezda
FILEBROWSER_SHOWRANK2HINT;Ukázať obrázky triedy 2 hviezda
@@ -82,14 +101,19 @@ FILEBROWSER_STARTPROCESSINGHINT;Začať spracovanie/ukladanie obrázkov v rade
FILEBROWSER_STOPPROCESSING;Zastaviť spracovanie
FILEBROWSER_STOPPROCESSINGHINT;Zastaviť spracovanie obrázkov
FILEBROWSER_THUMBSIZE;Veľkosť zmenšenín
+FILEBROWSER_TOOLTIP_STOPPROCESSING;Začať spracovanie automaticky, keď príde nová úloha
+FILEBROWSER_USETEMPLATE;Použiť šablónu:
FILEBROWSER_ZOOMINHINT;Zväčšiť veľkosť zmenšenín
FILEBROWSER_ZOOMOUTHINT;Zmenšiť veľkosť zmenšenín
GENERAL_ABOUT;O programe
+GENERAL_AFTER;Potom
+GENERAL_BEFORE;Predtým
GENERAL_CANCEL;Zrušiť
GENERAL_DISABLE;Zakázať
GENERAL_DISABLED;Zakázané
GENERAL_ENABLE;Povoliť
GENERAL_ENABLED;Povolené
+GENERAL_HIGH_QUALITY;Vysoká kvalita
GENERAL_LANDSCAPE;Krajina
GENERAL_LOAD;Načítať
GENERAL_NA;n/a
@@ -97,17 +121,23 @@ GENERAL_NO;Nie
GENERAL_OK;OK
GENERAL_PORTRAIT;Portrét
GENERAL_SAVE;Uložiť
+GENERAL_UNCHANGED;(Nezmenené)
GENERAL_YES;Áno
+HISTOGRAM_BUTTON_B;B
+HISTOGRAM_BUTTON_G;G
+HISTOGRAM_BUTTON_L;L
+HISTOGRAM_BUTTON_R;R
HISTOGRAM_LABEL;Histogram
HISTOGRAM_TOOLTIP_B;Zobraziť/Schovať MODRÝ histogram
HISTOGRAM_TOOLTIP_G;Zobraziť/Schovať ZELENÝ histogram
HISTOGRAM_TOOLTIP_L;Zobraziť/Schovať histogram CIELAB svietivosti
HISTOGRAM_TOOLTIP_R;Zobraziť/Schovať ČERVENÝ histogram
-HISTORY_CHANGED;Zmenené
HISTORY_CUSTOMCURVE;Vlastná krivka
HISTORY_DELSNAPSHOT;Odstrániť Snímok
HISTORY_FROMCLIPBOARD;Zo schránky
+HISTORY_CHANGED;Zmenené
HISTORY_LABEL;História
+HISTORY_MSG_1;Fotka načítaná
HISTORY_MSG_10;Kompresia tieňov
HISTORY_MSG_11;Krivka tónov
HISTORY_MSG_12;Auto expozícia
@@ -118,7 +148,7 @@ HISTORY_MSG_16;Čierna svietivosti
HISTORY_MSG_17;Kompresia najvyšších svetiel v oblasti svietivosti
HISTORY_MSG_18;Kompresia tieňov v oblasti svietivosti
HISTORY_MSG_19;Krivka svietivosti
-HISTORY_MSG_1;Fotka načítaná
+HISTORY_MSG_2;Profil načítaný
HISTORY_MSG_20;Doostrenie
HISTORY_MSG_21;Polomer doostrenia
HISTORY_MSG_22;Množstvo doostrenia
@@ -129,7 +159,7 @@ HISTORY_MSG_26;Tolerancia okrajov pri doostrení
HISTORY_MSG_27;Kontrola svätožiary pri doostrení
HISTORY_MSG_28;Množstvo kontroly svätožiary
HISTORY_MSG_29;Doostrovacia metóda
-HISTORY_MSG_2;Profil načítaný
+HISTORY_MSG_3;Profil zmenený
HISTORY_MSG_30;Polomer dekonvolúcie
HISTORY_MSG_31;Množstvo dekonvolúcie
HISTORY_MSG_32;Tlmenie dekonvolúcie
@@ -140,7 +170,7 @@ HISTORY_MSG_36;Hranica sýtosti
HISTORY_MSG_37;Zosilnenie farieb
HISTORY_MSG_38;Metóda vyváženia bielej
HISTORY_MSG_39;Farebná teplota
-HISTORY_MSG_3;Profil zmenený
+HISTORY_MSG_4;História prehliadania
HISTORY_MSG_40;Nádych vyváženia bielej
HISTORY_MSG_41;Farebný posun "A"
HISTORY_MSG_42;Farebný posun "B"
@@ -151,7 +181,7 @@ HISTORY_MSG_46;Farebné odšumenie
HISTORY_MSG_47;Polomer farebného odšumenia
HISTORY_MSG_48;Tolerancia okrajov farebného odšumenia
HISTORY_MSG_49;Citlivosť na okraje pri farebnom odšumení
-HISTORY_MSG_4;História prehliadania
+HISTORY_MSG_5;Jas
HISTORY_MSG_50;Nástroj Tiene/Najvyššie svetlá
HISTORY_MSG_51;Zosilnenie najvyšších svetiel
HISTORY_MSG_52;Zosilnenie tieňov
@@ -162,7 +192,7 @@ HISTORY_MSG_56;Polomer Tiene/Najvyššie svetlá
HISTORY_MSG_57;Hrubé otočenie
HISTORY_MSG_58;Horizontálne preklápanie
HISTORY_MSG_59;Vertikálne preklápanie
-HISTORY_MSG_5;Jas
+HISTORY_MSG_6;Kontrast
HISTORY_MSG_60;Otočenie
HISTORY_MSG_61;Otočenie
HISTORY_MSG_62;Korekcia zakrivenia objektívu
@@ -173,7 +203,7 @@ HISTORY_MSG_66;Obnova najvyšších svetiel
HISTORY_MSG_67;Množstvo obnovy najvyšších svetiel
HISTORY_MSG_68;Metóda obnovy najvyšších svetiel
HISTORY_MSG_69;Pracovný farebný priestor
-HISTORY_MSG_6;Kontrast
+HISTORY_MSG_7;Čierna
HISTORY_MSG_70;Výstupný farebný priestor
HISTORY_MSG_71;Vstupný farebný priestor
HISTORY_MSG_72;Korekcia vignetácie
@@ -182,13 +212,22 @@ HISTORY_MSG_74;Zmeniť veľkosť - Rozmer
HISTORY_MSG_75;Zmeniť veľkosť - Metóda
HISTORY_MSG_76;Exif Metadáta
HISTORY_MSG_77;IPTC Metadáta
-HISTORY_MSG_78;Data specified for resize
-HISTORY_MSG_79;Resize width
-HISTORY_MSG_7;Čierna
-HISTORY_MSG_80;Resize height
-HISTORY_MSG_81;Resize enabled
+HISTORY_MSG_78;Zadané údaje pre zmenu veľkosti
+HISTORY_MSG_79;Zmena veľkosti podľa šírky
HISTORY_MSG_8;Kompenzácia expozície
+HISTORY_MSG_80;Zmena veľkosti podľa výšky
+HISTORY_MSG_81;Zmena veľkosti povolená
+HISTORY_MSG_82;Profil zmenený
+HISTORY_MSG_83;Tiene/najvyšie svetlá vyskokej kvality
+HISTORY_MSG_84;Náprava perspektívy
+HISTORY_MSG_85;Koeficienty vlnky
+HISTORY_MSG_86;Vyrovnávač vlnky
+HISTORY_MSG_87;Impulzná redukcia šumu
+HISTORY_MSG_89;Smerová pyramída
HISTORY_MSG_9;Kompresia najvyšších svetiel
+HISTORY_MSG_90;Svietivosť smerovej pyramídy
+HISTORY_MSG_91;Farebnosť smerovej pyramídy
+HISTORY_MSG_92;Gamma smerovej pyramídy
HISTORY_NEWSNAPSHOT;Nový Snímok
HISTORY_NEWSNAPSHOTAS;Ako...
HISTORY_NEWSSDIALOGLABEL;Menovka snímku:
@@ -252,31 +291,40 @@ IPTCPANEL_TITLE;Názov
IPTCPANEL_TITLEHINT;Krátka referencia pre obrázok (Meno objektu).
IPTCPANEL_TRANSREFERENCE;Referencia prenosu
IPTCPANEL_TRANSREFERENCEHINT;Kód reprezentujúci miesto pôvodného prenosu (Pôvodná referencia prenosu).
-MAIN_BUTTON_EXIT;Exit
+MAIN_BUTTON_EXIT;Ukončiť
+MAIN_BUTTON_FULLSCREEN;Celá obrazovka
MAIN_BUTTON_PREFERENCES;Predvoľby
-MAIN_BUTTON_QUEUE;Put to queue
+MAIN_BUTTON_PUTTOQUEUE;Vložiť do radu
+MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Pridať súčasný obrázok do radu na spracovanie Ctrl+Q
+MAIN_BUTTON_QUEUE;Vložiť do radu
MAIN_BUTTON_SAVE;Uložiť obrázok
+MAIN_BUTTON_SAVE_TOOLTIP;Uložiť súčasný obrázok Ctrl+S
MAIN_BUTTON_SAVEAS;Ako...
MAIN_BUTTON_SENDTOEDITOR;Odoslať do editora
-MAIN_FRAME_BATCHQUEUE;Batch Queue
-MAIN_FRAME_FILEBROWSER;File Browser
-MAIN_FRAME_PLACES;Places
-MAIN_FRAME_PLACES_ADD;Add
-MAIN_FRAME_PLACES_DEL;Del
-MAIN_FRAME_RECENT;Recent Folders
+MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Upraviť súčasný obrázok v externom editore Ctrl+E
+MAIN_BUTTON_UNFULLSCREEN;Ukončiť zobrazenie na celú obrazovku
+MAIN_FRAME_BATCHQUEUE;Dávkový rad
+MAIN_FRAME_FILEBROWSER;Prehliadač súborov
+MAIN_FRAME_PLACES;Miesta
+MAIN_FRAME_PLACES_ADD;Pridať
+MAIN_FRAME_PLACES_DEL;Odstrániť
+MAIN_FRAME_RECENT;Nedávne priečinky
MAIN_MSG_ALREADYEXISTS;Súbor už existuje.
MAIN_MSG_CANNOTLOAD;Nemôžem načítať obrázok
MAIN_MSG_CANNOTSAVE;Chyba pri ukladaní súboru
MAIN_MSG_CANNOTSTARTEDITOR;Nebolo možné spustiť editor.
MAIN_MSG_CANNOTSTARTEDITOR_SECONDARY;Prosím, nastavte správnu cestu v dialógu "Predvoľby".
+MAIN_MSG_ERRORDURINGIMAGESAVING;Chyba pri ukladaní obrázka
MAIN_MSG_EXITJOBSINQUEUEINFO;Nespracované obrázky v rade budú pri ukončení programu stratené.
MAIN_MSG_EXITJOBSINQUEUEQUEST;Ste si istí, že chcete ukončiť program? V rade sú nespracované obrázky.
MAIN_MSG_JOBSINQUEUE;Úlohy v rade
+MAIN_MSG_NAVIGATOR;Navigátor
+MAIN_MSG_PLACES;Miesta
MAIN_MSG_QOVERWRITE;Chcete ho prepísať?
MAIN_TAB_BASIC;Základné
MAIN_TAB_COLOR;Farba
MAIN_TAB_DETAIL;Detail
-MAIN_TAB_DEVELOP;Develop
+MAIN_TAB_DEVELOP;Vyvinúť
MAIN_TAB_EXIF;Exif
MAIN_TAB_EXPOSURE;Expozícia
MAIN_TAB_FILTER;Filter
@@ -285,6 +333,7 @@ MAIN_TAB_IPTC;IPTC
MAIN_TAB_METADATA;Metadáta
MAIN_TAB_TAGGING;Tagging
MAIN_TAB_TRANSFORM;Transformácie
+MAIN_TOGGLE_BEFORE_AFTER;B|A
MAIN_TOOLTIP_HIDEFP;Zobraziť/ukázať panel tlačidiel (prehliadač adresárov a súborov, shortcut key: F)
MAIN_TOOLTIP_HIDEHP;Zobraziť/ukázať ľavý panel (vrátane histórie, shortcut key: H)
MAIN_TOOLTIP_INDCLIPPEDH;Indikácia orezania najvyšších svetiel
@@ -293,6 +342,20 @@ MAIN_TOOLTIP_PREFERENCES;Nastaviť predvoľby
MAIN_TOOLTIP_QINFO;Rýchle informácie o obrázku
MAIN_TOOLTIP_SAVE;Uložiť obrázok do predvoleného adresára
MAIN_TOOLTIP_SAVEAS;Uložiť obrázok do vybraného adresára
+MAIN_TOOLTIP_TOGGLE;Prepnúť pohľad predtým/potom B
+NAVIGATOR_B_NA;B = n/a
+NAVIGATOR_B_VALUE;B = %1
+NAVIGATOR_G_NA;G = n/a
+NAVIGATOR_G_VALUE;G = %1
+NAVIGATOR_H_NA;H = n/a
+NAVIGATOR_H_VALUE;H = %1
+NAVIGATOR_R_NA;R = n/a
+NAVIGATOR_R_VALUE;R = %1
+NAVIGATOR_S_NA;S = n/a
+NAVIGATOR_S_VALUE;S = %1
+NAVIGATOR_V_NA;V = n/a
+NAVIGATOR_V_VALUE;V = %1
+NAVIGATOR_XY_NA;x = n/a, y = n/a
PARTIALPASTE_BASICGROUP;Základné nastavenia
PARTIALPASTE_CACORRECTION;Korekcia C/A
PARTIALPASTE_COARSETRANS;90° otočenie/preklopenie
@@ -310,6 +373,7 @@ PARTIALPASTE_EXPOSURE;Expozícia
PARTIALPASTE_HLRECOVERY;Obnova najvyšších svetiel
PARTIALPASTE_ICMSETTINGS;Nastavenia ICM
PARTIALPASTE_IPTCINFO;IPTC informácie
+PARTIALPASTE_LABCURVE;Krivka svietivosti
PARTIALPASTE_LENSGROUP;Nastavenia súvisiace s objektívom
PARTIALPASTE_LUMACURVE;Krivka svietivosti
PARTIALPASTE_LUMADENOISE;Redukcia šumu v oblasti svietivosti
@@ -321,8 +385,12 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Tiene/Najvyššie svetlá
PARTIALPASTE_SHARPENING;Doostrenie
PARTIALPASTE_VIGNETTING;Korekcia vignetácie
PARTIALPASTE_WHITEBALANCE;Vyváženie bielej
+PREFERENCES_ADD;Pridať
PREFERENCES_APPLNEXTSTARTUP;Aplikovaný pri ďalšom spustení
+PREFERENCES_BATCH_PROCESSING;dávkové spracovanie
+PREFERENCES_BEHAVIOR;Správanie sa
PREFERENCES_BLINKCLIPPED;Blikať orezanými miestami
+PREFERENCES_CACORRECTION;Použiť automatickú úpravu CA
PREFERENCES_CACHECLEARALL;Vyčistiť všetko
PREFERENCES_CACHECLEARPROFILES;Vyčistiť profily
PREFERENCES_CACHECLEARTHUMBS;Vyčistiť zmenšeniny
@@ -330,9 +398,9 @@ PREFERENCES_CACHEFORMAT1;Vlastné (rýchlejšie a kvalitnejšie)
PREFERENCES_CACHEFORMAT2;JPEG (menšia veľkosť na disku)
PREFERENCES_CACHEMAXENTRIES;Maximálny počet vstupov v cache
PREFERENCES_CACHEOPTS;Možnosti cache
+PREFERENCES_CACHESTRAT;Stratégia použitia cache
PREFERENCES_CACHESTRAT1;Uprednostniť rýchlosť pred malou spotrebou pamäte
PREFERENCES_CACHESTRAT2;Uprednostniť malú spotrebu pamäte pred rýchlosťou
-PREFERENCES_CACHESTRAT;Stratégia použitia cache
PREFERENCES_CACHETHUMBFORM;Formát zmenšenín pre cache
PREFERENCES_CACHETHUMBHEIGHT;Maximálna výška zmenšenín
PREFERENCES_CLEARDLG_LINE1;Čistím cache
@@ -342,6 +410,8 @@ PREFERENCES_CLIPPINGIND;Indikácia orezu
PREFERENCES_CMETRICINTENT;Kolorimetrický zámer
PREFERENCES_DATEFORMAT;Formát dátumu
PREFERENCES_DATEFORMATHINT;Môžete použiť nasledujúce formátovacie reťazce:\n%y : rok\n%m : mesiac\n%d : deň\n\nNapríklad, slovenský formát je:\n%d.%m.%y
+PREFERENCES_DCBENHANCE;Použiť vylepšovací krok DCB
+PREFERENCES_DCBITERATIONS;Počet iterácií DCB
PREFERENCES_DEFAULTLANG;Predvolený jazyk
PREFERENCES_DEFAULTTHEME;Predvolený vzhľad
PREFERENCES_DEMOSAICINGALGO;Demozaikovací algoritmus
@@ -351,7 +421,9 @@ PREFERENCES_DIROTHER;Iný
PREFERENCES_DIRSELECTDLG;Vybrať adresár s obrázkami pri spustení...
PREFERENCES_DIRSOFTWARE;Inštalačný adresár
PREFERENCES_DMETHOD;Metóda
+PREFERENCES_DMETHODBATCH;Dávka
PREFERENCES_EDITORCMDLINE;Iný príkazový riadok
+PREFERENCES_EDITORLAYOUT;Rozloženie editora
PREFERENCES_EXTERNALEDITOR;Externý editor
PREFERENCES_FALSECOLOR;Kroky potlačenia chybných farieb
PREFERENCES_FBROWSEROPTS;Voľby prehliadača súborov
@@ -359,23 +431,28 @@ PREFERENCES_FILEFORMAT;Formát súborov
PREFERENCES_FORIMAGE;Pre obrazové súbory
PREFERENCES_FORRAW;Pre RAW súbory
PREFERENCES_GIMPPATH;Inštalačný adresár GIMPu
+PREFERENCES_GREENEQUIL;Vyvažovanie zelenej
PREFERENCES_GTKTHEME;GTK predvolený
PREFERENCES_HINT;Tip
PREFERENCES_HLTHRESHOLD;Prah pre orezanie najvyšších svetiel
+PREFERENCES_HOTDEADPIXFILT;Použiť filter na horúce/mŕtve pixely
PREFERENCES_ICCDIR;Adresár s ICC profilmy
PREFERENCES_IMPROCPARAMS;Predvolené parametre spracovania obrazu
PREFERENCES_INTENT_ABSOLUTE;Absolútny kolorimetrický
PREFERENCES_INTENT_PERCEPTUAL;Vnímaný
PREFERENCES_INTENT_RELATIVE;Relatívny kolorimetrický
PREFERENCES_INTENT_SATURATION;Sýtosť
+PREFERENCES_LINEDENOISE;Filter šumu vedenia
PREFERENCES_LIVETHUMBNAILS;Živé zmenšeniny (pomalšie)
PREFERENCES_MONITORICC;Profil monitora
+PREFERENCES_MULTITAB;Režim viacerých kariet
PREFERENCES_OUTDIR;Výstupný adresár
PREFERENCES_OUTDIRFOLDER;Uložiť do adresára
PREFERENCES_OUTDIRFOLDERHINT;Uložiť obrázky do vybraného adresára
PREFERENCES_OUTDIRHINT;Môžete použiť nasledujúce formátovacie reťazce:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nTieto formátovacie reťazce odkazujú na adresáre a časti cesty k raw súboru.\n\nNapríklad, ak bol /home/tom/image/02-09-2006/dsc0012.nefotvorený, význam formátovacích reťazcov je:\n%f=dsc0012, %d1=02-09-2006, %d2=image, ...\n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, p3=/home/tom, ...\n\nAk chcete uložiť výstupný obraz tam, kde je originál, napíšte:\n%p1/%f\n\nAk chcete uložiť výstupný obraz v adresári 'converted' nachádzajúcom sa v adresári s originálom, napíšte:\n%p1/converted/%f\n\nAk chcete uložiť výstupný obraz v adresári '/home/tom/converted' pri zachovaní toho istého podadresára s dátumami, napíšte:\n%p2/converted/%d1/%f
PREFERENCES_OUTDIRTEMPLATE;Použiť šablónu
PREFERENCES_OUTDIRTEMPLATEHINT;Môžete použiť nasledujúce formátovacie reťazce:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nTieto formátovacie reťazce odkazujú na adresáre a časti cesty k raw súboru.\n\nNapríklad, ak bol /home/tom/image/02-09-2006/dsc0012.nefotvorený, význam formátovacích reťazcov je:\n%f=dsc0012, %d1=02-09-2006, %d2=image, ...\n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, p3=/home/tom, ...\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory 'converted' located the directory of the original, write:\n%p1/converted/%f\n\nAk chcete uložiť výstupný obraz tam, kde je originál, napíšte:\n%p1/%f\n\nAk chcete uložiť výstupný obraz v adresári 'converted' nachádzajúcom sa v adresári s originálom, napíšte:\n%p1/converted/%f\n\nAk chcete uložiť výstupný obraz v adresári '/home/tom/converted' pri zachovaní toho istého podadresára s dátumami, napíšte:\n%p2/converted/%d1/%f
+PREFERENCES_OVERLAY_FILENAMES;Prekryť mená súborov cez zmenšeniny
PREFERENCES_PARSEDEXT;Spracúvané prípony
PREFERENCES_PARSEDEXTADD;Pridať príponu
PREFERENCES_PARSEDEXTADDHINT;Napíšte príponu a stlačte tento gombík pre pripojenie k zoznamu
@@ -386,15 +463,19 @@ PREFERENCES_PROFILEPRCACHE;Profil v cache
PREFERENCES_PROFILEPRFILE;Profil pri vstupnom súbore
PREFERENCES_PROFILESAVECACHE;Uložiť parametre spracovania do cache
PREFERENCES_PROFILESAVEINPUT;Uložiť parametre spracovania k vstupnému súboru
+PREFERENCES_PROPERTY;Vlastnosť
PREFERENCES_PSPATH;Inštalačný adresár Adobe Photoshop
+PREFERENCES_SELECTFONT;Vybrať písmo
PREFERENCES_SELECTICCDIRDLG;Vybrať adresár s ICC profilmi...
PREFERENCES_SELECTLANG;Vybrať si jazyk
PREFERENCES_SELECTMONITORPROFDLG;Vybrať ICC profil monitora...
PREFERENCES_SELECTTHEME;Vybrať vzhľad
+PREFERENCES_SET;Nastaviť
PREFERENCES_SHOWBASICEXIF;Zobrazovať základné EXIF informácie
PREFERENCES_SHOWDATETIME;Ukázovať dátum a čas
PREFERENCES_SHOWONLYRAW;Ukazovať len RAW súbory
PREFERENCES_SHTHRESHOLD;Prah pre orezané tiene
+PREFERENCES_SINGLETAB;Režim jednej karty
PREFERENCES_STARTUPIMDIR;Adresár s obrázkami pri spustení
PREFERENCES_TAB_BROWSER;Prehliadač súborov
PREFERENCES_TAB_COLORMGR;Správa farieb
@@ -402,6 +483,8 @@ PREFERENCES_TAB_GENERAL;Všeobecné
PREFERENCES_TAB_IMPROC;Spracovanie obrazu
PREFERENCES_TAB_OUTPUT;Výstupné možnosti
PREFERENCES_THUMBSIZE;Veľkosť zmenšeniny
+PREFERENCES_USESYSTEMTHEME; Použiť systémový vzhľad
+PREFERENCES_WORKFLOW;Tok práce
PROFILEPANEL_FILEDLGFILTERANY;Všetky súbory
PROFILEPANEL_FILEDLGFILTERPP;Profily spracovania
PROFILEPANEL_LABEL;Profily spracovania
@@ -429,11 +512,13 @@ PROGRESSBAR_SAVEPNG;Ukladám PNG súbor...
PROGRESSBAR_SAVETIFF;Ukladám TIFF súbor...
PROGRESSDLG_LOADING;Načítava sa súbor...
PROGRESSDLG_PROCESSING;Spracúva sa obrázok...
+PROGRESSDLG_PROFILECHANGEDINBROWSER;Profil zmenený v prehliadači
PROGRESSDLG_SAVING;Ukladá sa súbor...
QINFO_FOCALLENGTH;Ohnisková vzdialenosť
QINFO_ISO;ISO
QINFO_LENS;Objektív
QINFO_NOEXIF;Exif údaje sú nedostupné.
+SAVEDLG_AUTOSUFFIX;Automaticky pridať príponu, ak už súbor existuje
SAVEDLG_FILEFORMAT;Formát súboru
SAVEDLG_JPEGQUAL;JPEG Kvalita
SAVEDLG_JPGFILTER;JPEG súbory
@@ -445,6 +530,7 @@ SAVEDLG_PUTTOQUEUETAIL;Presunúť na koniec radu na spracovanie
SAVEDLG_SAVEIMMEDIATELY;Uložiť okamžite
SAVEDLG_SAVESPP;Uložiť parametre spracovania s obrázkom
SAVEDLG_TIFFFILTER;TIFF súbory
+SAVEDLG_TIFFUNCOMPRESSED;Nekomprimovaný TIFF
TOOLBAR_TOOLTIP_CROP;Orezanie výberu (shortcut key: C)
TOOLBAR_TOOLTIP_HAND;Nástroj ruka (shortcut key: N)
TOOLBAR_TOOLTIP_STRAIGHTEN;Výber rovnej čiary (shortcut key: S)
@@ -461,10 +547,10 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Prevrátiť horizontálne
TP_COARSETRAF_TOOLTIP_ROTLEFT;Otočiť doľava
TP_COARSETRAF_TOOLTIP_ROTRIGHT;Otočiť doprava
TP_COARSETRAF_TOOLTIP_VFLIP;Prevrátiť vertikálne
-TP_COLORBOOST_ACHANNEL;kanál "a"
+TP_COLORBOOST_ACHANNEL;Kanál "a"
TP_COLORBOOST_AMOUNT;Množstvo
TP_COLORBOOST_AVOIDCOLORCLIP;Vyhnúť sa orezaniu farieb
-TP_COLORBOOST_BCHANNEL;kanál "b"
+TP_COLORBOOST_BCHANNEL;Kanál "b"
TP_COLORBOOST_CHAB;a & b
TP_COLORBOOST_CHANNEL;Kanál
TP_COLORBOOST_CHSEPARATE;oddelené
@@ -494,8 +580,26 @@ TP_CROP_SELECTCROP; Vyberte Orez
TP_CROP_W;Š
TP_CROP_X;x
TP_CROP_Y;y
+TP_DETAIL_AMOUNT;Množstvo
+TP_DIRPYRDENOISE_CHROMA;Farebnosť
+TP_DIRPYRDENOISE_GAMMA;Gamma
+TP_DIRPYRDENOISE_LABEL;Redukcia šumu pomocou smerovej pyramídy
+TP_DIRPYRDENOISE_LUMA;Svietivosť
+TP_DIRPYREQUALIZER_LABEL;Vyrovnávač smerovej pyramídy
+TP_DIRPYREQUALIZER_LUMACOARSEST;Najhrubšie
+TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Kontrast-
+TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Kontrast+
+TP_DIRPYREQUALIZER_LUMAFINEST;Najjemnejšie
+TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutrálne
+TP_DIRPYREQUALIZER_THRESHOLD;Threshold
TP_DISTORTION_AMOUNT;Množstvo
TP_DISTORTION_LABEL;Zakrivenie
+TP_EQUALIZER_CONTRAST_MINUS;Kontrast-
+TP_EQUALIZER_CONTRAST_PLUS;Kontrast+
+TP_EQUALIZER_FINEST;najjemnejšie
+TP_EQUALIZER_LABEL;Vyrovnávač vlnky
+TP_EQUALIZER_LARGEST;najhrubšie
+TP_EQUALIZER_NEUTRAL;Neutrálne
TP_EXPOSURE_AUTOLEVELS;Auto úrovne
TP_EXPOSURE_BLACKLEVEL;Čierna
TP_EXPOSURE_BRIGHTNESS;Jas
@@ -525,6 +629,16 @@ TP_ICM_OUTPUTDLGLABEL;Vybrať výstupný ICC profil...
TP_ICM_OUTPUTPROFILE;Výstupný profil
TP_ICM_SAVEREFERENCE;Uložiť referenčný obrázok pre tvorbu profilu
TP_ICM_WORKINGPROFILE;Pracovný profil
+TP_IMPULSEDENOISE_LABEL;Impulzná redukcia šumu
+TP_IMPULSEDENOISE_THRESH;Prah
+TP_LABCURVE_BRIGHTNESS;Jas
+TP_LABCURVE_CONTRAST;Kontrast
+TP_LABCURVE_CURVEEDITOR;Krivka svietivosti
+TP_LABCURVE_LABEL;Krivka svietivosti
+TP_LABCURVE_SATURATION;Sýtosť
+TP_LENSGEOM_AUTOCROP;Automatické orezanie
+TP_LENSGEOM_FILL;Automatické vyplnenie
+TP_LENSGEOM_LABEL;Objektív/Geometria
TP_LUMACURVE_BLACKLEVEL;Čierna
TP_LUMACURVE_BRIGHTNESS;Jas
TP_LUMACURVE_COMPRHIGHLIGHTS;Kompresia najvyšších svetiel
@@ -535,17 +649,25 @@ TP_LUMACURVE_LABEL;Krivka svietivosti
TP_LUMADENOISE_EDGETOLERANCE;Tolerancia okrajov
TP_LUMADENOISE_LABEL;Redukcia šumu v oblasti svietivosti
TP_LUMADENOISE_RADIUS;Polomer
+TP_PERSPECTIVE_HORIZONTAL;Horizontálne
+TP_PERSPECTIVE_LABEL;Perspektíva
+TP_PERSPECTIVE_VERTICAL;Vertikálne
TP_RESIZE_BICUBIC;Bikubická
TP_RESIZE_BICUBICSF;Bikubická (Mäkšia)
TP_RESIZE_BICUBICSH;Bikubická (Ostrejšia)
TP_RESIZE_BILINEAR;Bilineárna
+TP_RESIZE_DOWNSCALEB;Downscale (Lepšie)
+TP_RESIZE_DOWNSCALEF;Downscale (Rýchlejšie)
TP_RESIZE_FULLSIZE;Celá veľkosť obrázka:
TP_RESIZE_H;V:
+TP_RESIZE_HEIGHT;Výška
TP_RESIZE_LABEL;Zmeniť veľkosť
TP_RESIZE_METHOD;Metóda:
TP_RESIZE_NEAREST;Najbližšie
-TP_RESIZE_SCALE;Rozmer
+TP_RESIZE_SCALE;Pomer
+TP_RESIZE_SPECIFY;Zadať:
TP_RESIZE_W;Š:
+TP_RESIZE_WIDTH;Šírka
TP_ROTATE_AUTOCROP;Automatické orezanie
TP_ROTATE_DEGREE;Stupeň
TP_ROTATE_FILL;Výplň
@@ -592,114 +714,9 @@ ZOOMBAR_NORMAL;Normálny
ZOOMBAR_PREVIEW;Náhľad
ZOOMBAR_SCALE;Rozmer
ZOOMBAR_SMALL;Malý
-
-
-!!!!!!!!!!!!!!!!!!!!!!!!!
-! Untranslated keys follow; remove the ! prefix after an entry is translated.
-!!!!!!!!!!!!!!!!!!!!!!!!!
-
-
-!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
-!CURVEEDITOR_CUSTOM;Custom
-!CURVEEDITOR_DARKS;Darks
-!CURVEEDITOR_HIGHLIGHTS;Highlights
-!CURVEEDITOR_LIGHTS;Lights
-!CURVEEDITOR_NURBS;Control cage
-!CURVEEDITOR_PARAMETRIC;Parametric
-!CURVEEDITOR_SHADOWS;Shadows
-!CURVEEDITOR_TYPE;Type:
-!EXIFFILTER_METADATAFILTER;Enable Metadata Filters
-!FILEBROWSER_ADDDELTEMPLATE;Add/Del templates...
-!FILEBROWSER_CURRENT_NAME;Current name:
-!FILEBROWSER_NEW_NAME;New name:
-!FILEBROWSER_SHOWEXIFINFO;Show EXIF info i
-!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives
-!FILEBROWSER_USETEMPLATE;Use template:
-!GENERAL_AFTER;After
-!GENERAL_BEFORE;Before
-!GENERAL_HIGH_QUALITY;High Quality
-!GENERAL_UNCHANGED;(Unchanged)
-!HISTOGRAM_BUTTON_B;B
-!HISTOGRAM_BUTTON_G;G
-!HISTOGRAM_BUTTON_L;L
-!HISTOGRAM_BUTTON_R;R
-!HISTORY_MSG_82;Profile Changed
-!HISTORY_MSG_83;High quality shadows/highlights
-!HISTORY_MSG_84;Perspective correction
-!HISTORY_MSG_85;Wavelet coefficients
-!HISTORY_MSG_86;Wavelet equalizer
-!HISTORY_MSG_87;Impulse noise reduction
-!HISTORY_MSG_89;Directional pyramid
-!HISTORY_MSG_90;Directional pyramid luminance
-!HISTORY_MSG_91;Directional pyramid chominance
-!HISTORY_MSG_92;Directional pyramid gamma
-!MAIN_BUTTON_FULLSCREEN;Fullscreen
-!MAIN_BUTTON_PUTTOQUEUE;Put to queue
-!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Add current image to processing queue Ctrl+Q
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image Ctrl+S
-!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor Ctrl+E
-!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen
-!MAIN_MSG_ERRORDURINGIMAGESAVING;Error during image saving
-!MAIN_MSG_NAVIGATOR;Navigator
-!MAIN_MSG_PLACES;Places
-!MAIN_TOGGLE_BEFORE_AFTER;B|A
-!MAIN_TOOLTIP_TOGGLE;Toggle before/after view B
-!NAVIGATOR_B_NA;B = n/a
-!NAVIGATOR_B_VALUE;B = %1
-!NAVIGATOR_G_NA;G = n/a
-!NAVIGATOR_G_VALUE;G = %1
-!NAVIGATOR_H_NA;H = n/a
-!NAVIGATOR_H_VALUE;H = %1
-!NAVIGATOR_R_NA;R = n/a
-!NAVIGATOR_R_VALUE;R = %1
-!NAVIGATOR_S_NA;S = n/a
-!NAVIGATOR_S_VALUE;S = %1
-!NAVIGATOR_V_NA;V = n/a
-!NAVIGATOR_V_VALUE;V = %1
-!NAVIGATOR_XY_NA;x = n/a, y = n/a
-!PREFERENCES_ADD;ADD
-!PREFERENCES_BATCH_PROCESSING;batch processing
-!PREFERENCES_BEHAVIOR;Behavior
-!PREFERENCES_CACORRECTION;Apply CA auto correction
-!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
-!PREFERENCES_DCBITERATIONS;Number of DCB iterations
-!PREFERENCES_GREENEQUIL;Green equilibration
-!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
-!PREFERENCES_LINEDENOISE;Line noise filter
-!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
-!PREFERENCES_PROPERTY;Property
-!PREFERENCES_SET;SET
-!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
-!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
-!SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
-!TP_DETAIL_AMOUNT;Amount
-!TP_DIRPYRDENOISE_CHROMA;Chrominance
-!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
-!TP_DIRPYRDENOISE_LUMA;Luminance
-!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
-!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
-!TP_EQUALIZER_FINEST;finest
-!TP_EQUALIZER_LABEL;Wavelet equalizer
-!TP_EQUALIZER_LARGEST;coarsest
-!TP_EQUALIZER_NEUTRAL;Neutral
-!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
-!TP_IMPULSEDENOISE_THRESH;Threshold
-!TP_LENSGEOM_AUTOCROP;Auto Crop
-!TP_LENSGEOM_FILL;Auto Fill
-!TP_LENSGEOM_LABEL;Lens / Geometry
-!TP_PERSPECTIVE_HORIZONTAL;Horizontal
-!TP_PERSPECTIVE_LABEL;Perspective
-!TP_PERSPECTIVE_VERTICAL;Vertical
-!TP_RESIZE_DOWNSCALEB;Downscale (Better)
-!TP_RESIZE_DOWNSCALEF;Downscale (Faster)
-!TP_RESIZE_HEIGHT;Height
-!TP_RESIZE_SPECIFY;Specify:
-!TP_RESIZE_WIDTH;Width
-!ZOOMPANEL_100;(100%)
-!ZOOMPANEL_NEWCROPWINDOW;Open (new) detail window
-!ZOOMPANEL_ZOOM100;Zoom to 100% 1
-!ZOOMPANEL_ZOOMFITSCREEN;Fit to screen F
-!ZOOMPANEL_ZOOMIN;Zoom In +
-!ZOOMPANEL_ZOOMOUT;Zoom Out -
+ZOOMPANEL_100;(100%)
+ZOOMPANEL_NEWCROPWINDOW;Otvoriť (nové) okno s detailom
+ZOOMPANEL_ZOOM100;Priblíženie na 100% 1
+ZOOMPANEL_ZOOMFITSCREEN;Prispôsobiť obrazovke F
+ZOOMPANEL_ZOOMIN;Priblížiť +
+ZOOMPANEL_ZOOMOUT;Oddialiť -
diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi
index 914592b0b..86bbe46e1 100644
--- a/rtdata/languages/Suomi
+++ b/rtdata/languages/Suomi
@@ -600,7 +600,7 @@ ZOOMBAR_SMALL;Pieni
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -651,6 +651,12 @@ ZOOMBAR_SMALL;Pieni
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -658,25 +664,41 @@ ZOOMBAR_SMALL;Pieni
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -685,6 +707,11 @@ ZOOMBAR_SMALL;Pieni
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish
index a40b41d80..770208395 100644
--- a/rtdata/languages/Swedish
+++ b/rtdata/languages/Swedish
@@ -2,110 +2,135 @@
#00 Swedish
#01 Translated by Emil Ericsson
#02 2008-01-22
+#03 2010-10-12, 2010-10-18, 2010-10-24 update by Johan Andersson
ADJUSTER_RESET_TO_DEFAULT;Återställ till standard
+BATCHQUEUE_AUTOSTART;Autostart
+BATCH_PROCESSING;Batchbehandling
+CURVEEDITOR_CUSTOM;Egen
+CURVEEDITOR_DARKS;Svärta
CURVEEDITOR_FILEDLGFILTERANY;Vilka filer som helst
CURVEEDITOR_FILEDLGFILTERCURVE;Kurvfiler
+CURVEEDITOR_HIGHLIGHTS;Högdagrar
+CURVEEDITOR_LIGHTS;Högdagrar
CURVEEDITOR_LINEAR;Linjär
CURVEEDITOR_LOADDLGLABEL;Ladda kurva...
+CURVEEDITOR_PARAMETRIC;Parametisk
CURVEEDITOR_SAVEDLGLABEL;Spara kurva...
+CURVEEDITOR_SHADOWS;Skuggor
CURVEEDITOR_TOOLTIPLINEAR;Återställ kurva till linjär
CURVEEDITOR_TOOLTIPLOAD;Ladda kurva från fil
CURVEEDITOR_TOOLTIPSAVE;Spara nuvarande kurva
-EXIFFILTER_APERTURE;Aperture
-EXIFFILTER_CAMERA;Camera
-EXIFFILTER_DIALOGLABEL;Exif Filter
-EXIFFILTER_FOCALLEN;Focal Length
+CURVEEDITOR_TYPE;Typ:
+EXIFFILTER_APERTURE;Bländare
+EXIFFILTER_CAMERA;Kamera
+EXIFFILTER_DIALOGLABEL;EXIFfilter
+EXIFFILTER_FOCALLEN;Brännvidd
EXIFFILTER_ISO;ISO
-EXIFFILTER_LENS;Lens
-EXIFFILTER_SHUTTER;Shutter
-EXIFPANEL_ADDEDIT;Add/Edit
-EXIFPANEL_ADDEDITHINT;Add new tag or edit tag
-EXIFPANEL_ADDTAGDLG_ENTERVALUE;Enter value
-EXIFPANEL_ADDTAGDLG_SELECTTAG;Select tag
-EXIFPANEL_ADDTAGDLG_TITLE;Add/Edit Tag
-EXIFPANEL_KEEP;Keep
-EXIFPANEL_KEEPHINT;Keep the selected tags when writing output file
-EXIFPANEL_REMOVE;Remove
-EXIFPANEL_REMOVEHINT;Remove the selected tags when writing output file
-EXIFPANEL_RESET;Reset
-EXIFPANEL_RESETALL;Reset All
-EXIFPANEL_RESETALLHINT;Reset all tags to their original values
-EXIFPANEL_RESETHINT;Reset the selected tags to their original values
-EXIFPANEL_SUBDIRECTORY;Subdirectory
-FILEBROWSER_APPLYPROFILE;Apply profile
-FILEBROWSER_ARRANGEMENTHINT;Change between vertical/horizontal alignment of thumbnails
-FILEBROWSER_CLEARPROFILE;Clear profile
-FILEBROWSER_COPYPROFILE;Copy profile
-FILEBROWSER_DELETEDLGLABEL;File delete confirmation
-FILEBROWSER_DELETEDLGMSG;Are you sure you want to delete the selected %1 files?
-FILEBROWSER_EMPTYTRASH;Empty Trash
-FILEBROWSER_EMPTYTRASHHINT;Permanently delete the files of the trash
-FILEBROWSER_EXIFFILTERAPPLY;Apply
-FILEBROWSER_EXIFFILTERAPPLYHINT;Switch on/off exif filter of the file browser
-FILEBROWSER_EXIFFILTERLABEL;Exif Filter
-FILEBROWSER_EXIFFILTERSETTINGS;Setup
-FILEBROWSER_EXIFFILTERSETTINGSHINT;Change settings of the exif filter
-FILEBROWSER_PARTIALPASTEPROFILE;Partial paste
-FILEBROWSER_PASTEPROFILE;Paste profile
-FILEBROWSER_POPUPCANCELJOB;Cancel job
-FILEBROWSER_POPUPMOVEEND;Move to end of queue
-FILEBROWSER_POPUPMOVEHEAD;Move to head of queue
-FILEBROWSER_POPUPOPEN;Open
-FILEBROWSER_POPUPPROCESS;Put to processing queue
-FILEBROWSER_POPUPRANK1;Rank 1
-FILEBROWSER_POPUPRANK2;Rank 2
-FILEBROWSER_POPUPRANK3;Rank 3
-FILEBROWSER_POPUPRANK4;Rank 4
-FILEBROWSER_POPUPRANK5;Rank 5
-FILEBROWSER_POPUPREMOVE;Remove from filesystem
-FILEBROWSER_POPUPRENAME;Rename
-FILEBROWSER_POPUPSELECTALL;Select all
-FILEBROWSER_POPUPTRASH;Move to trash
-FILEBROWSER_POPUPUNRANK;Unrank
-FILEBROWSER_POPUPUNTRASH;Remove from trash
-FILEBROWSER_PROCESSINGSETTINGS;Settings
-FILEBROWSER_PROCESSINGSETTINGSHINT;Set the file format and output directory
-FILEBROWSER_RENAMEDLGLABEL;Rename file
-FILEBROWSER_RENAMEDLGMSG;Rename file "%1" to:
-FILEBROWSER_SHOWDIRHINT;Show all images of the directory
-FILEBROWSER_SHOWQUEUEHINT;Show content of the processing queue
-FILEBROWSER_SHOWRANK1HINT;Show images ranked as 1 star
-FILEBROWSER_SHOWRANK2HINT;Show images ranked as 2 star
-FILEBROWSER_SHOWRANK3HINT;Show images ranked as 3 star
-FILEBROWSER_SHOWRANK4HINT;Show images ranked as 4 star
-FILEBROWSER_SHOWRANK5HINT;Show images ranked as 5 star
-FILEBROWSER_SHOWTRASHHINT;Show content of the trash
-FILEBROWSER_SHOWUNRANKHINT;Show unranked images
-FILEBROWSER_STARTPROCESSING;Start Processing
-FILEBROWSER_STARTPROCESSINGHINT;Start processing/saving of images in the queue
-FILEBROWSER_STOPPROCESSING;Stop processing
-FILEBROWSER_STOPPROCESSINGHINT;Stop processing of images
-FILEBROWSER_THUMBSIZE;Thumb. size
-FILEBROWSER_ZOOMINHINT;Increase thumbnail size
-FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size
+EXIFFILTER_LENS;Objektiv
+EXIFFILTER_METADATAFILTER;Använd metadatafilter
+EXIFFILTER_SHUTTER;Slutartid
+EXIFPANEL_ADDEDIT;Lägg till/Redigera
+EXIFPANEL_ADDEDITHINT;Lägg till en ny eller redigera en etikett
+EXIFPANEL_ADDTAGDLG_ENTERVALUE;Ange värde
+EXIFPANEL_ADDTAGDLG_SELECTTAG;Välj etikett
+EXIFPANEL_ADDTAGDLG_TITLE;Lägg till/redigera etikett
+EXIFPANEL_KEEP;Behåll
+EXIFPANEL_KEEPHINT;Behåll de valda etiketterna vid spara
+EXIFPANEL_REMOVE;Ta bort
+EXIFPANEL_REMOVEHINT;Ta bort de valda etiketterna vid spara
+EXIFPANEL_RESET;Återställ
+EXIFPANEL_RESETALL;Återställ alla
+EXIFPANEL_RESETALLHINT;Återställ alla etiketter till deras originalvärden
+EXIFPANEL_RESETHINT;Återställ de valda etiketterna till deras originalvärden
+EXIFPANEL_SUBDIRECTORY;Underkatalog
+FILEBROWSER_ADDDELTEMPLATE;Lägg till/ta bort förinställningar...
+FILEBROWSER_APPLYPROFILE;Använd profil
+FILEBROWSER_ARRANGEMENTHINT;Växla mellan vertikal och horistonell visning av miniatyrbilder
+FILEBROWSER_CLEARPROFILE;Återställ profilen
+FILEBROWSER_COPYPROFILE;Kopiera profil
+FILEBROWSER_CURRENT_NAME;Nuvarande namn:
+FILEBROWSER_DELETEDLGLABEL;Bekräftelse vid borttag
+FILEBROWSER_DELETEDLGMSG;Är du säker på att du vill ta bort de valda %1 filerna?
+FILEBROWSER_EMPTYTRASH;Töm papperskorgen
+FILEBROWSER_EMPTYTRASHHINT;Ta bort papperskorgens filer permanent
+FILEBROWSER_EXIFFILTERAPPLY;Använd
+FILEBROWSER_EXIFFILTERAPPLYHINT;Visa/dölj EXIF-filtret i filhanteraren
+FILEBROWSER_EXIFFILTERLABEL;EXIF-filter
+FILEBROWSER_EXIFFILTERSETTINGS;Inställningar
+FILEBROWSER_EXIFFILTERSETTINGSHINT;Ändra inställningar för EXIF-filtret
+FILEBROWSER_NEW_NAME;Nytt namn:
+FILEBROWSER_PARTIALPASTEPROFILE;Klistra in partiell profil
+FILEBROWSER_PASTEPROFILE;Klistra in profil
+FILEBROWSER_POPUPCANCELJOB;Avbryt
+FILEBROWSER_POPUPMOVEEND;Flytta till slutet av behandlingskön
+FILEBROWSER_POPUPMOVEHEAD;Flytta till början av behandlingskön
+FILEBROWSER_POPUPOPEN;Öppna
+FILEBROWSER_POPUPPROCESS;Flytta till behandlingskön
+FILEBROWSER_POPUPRANK1;Betyg 1
+FILEBROWSER_POPUPRANK2;Betyg 2
+FILEBROWSER_POPUPRANK3;Betyg 3
+FILEBROWSER_POPUPRANK4;Betyg 4
+FILEBROWSER_POPUPRANK5;Betyg 5
+FILEBROWSER_POPUPREMOVE;Ta bort från filsystemet
+FILEBROWSER_POPUPRENAME;Byt namn
+FILEBROWSER_POPUPSELECTALL;Markera allt
+FILEBROWSER_POPUPTRASH;Flytta till papperskorgen
+FILEBROWSER_POPUPUNRANK;Ta bort betyg
+FILEBROWSER_POPUPUNTRASH;Ta bort från papperskorgen
+FILEBROWSER_PROCESSINGSETTINGS;Inställningar
+FILEBROWSER_PROCESSINGSETTINGSHINT;Ange filformat och målmapp
+FILEBROWSER_RENAMEDLGLABEL;Byt namn
+FILEBROWSER_RENAMEDLGMSG;Byt namn på "%1" till:
+FILEBROWSER_SHOWDIRHINT;Visa alla bilder i biblioteket
+FILEBROWSER_SHOWEXIFINFO;Visa EXIF-information
+FILEBROWSER_SHOWQUEUEHINT;Visa innehållet i behandlingskön
+FILEBROWSER_SHOWRANK1HINT;Visa bilder med betyg 1
+FILEBROWSER_SHOWRANK2HINT;Visa bilder med betyg 2
+FILEBROWSER_SHOWRANK3HINT;Visa bilder med betyg 3
+FILEBROWSER_SHOWRANK4HINT;Visa bilder med betyg 4
+FILEBROWSER_SHOWRANK5HINT;Visa bilder med betyg 5
+FILEBROWSER_SHOWTRASHHINT;Visa innehållet i papperskorgen
+FILEBROWSER_SHOWUNRANKHINT;Visa icke-betygsatta bilder
+FILEBROWSER_STARTPROCESSING;Börja behandlingen
+FILEBROWSER_STARTPROCESSINGHINT;Börja behandlingen och spara bilderna i behandlingskön
+FILEBROWSER_STOPPROCESSING;Avbryt behandlingen
+FILEBROWSER_STOPPROCESSINGHINT;Avbryt behandlingen av bilderna
+FILEBROWSER_THUMBSIZE;Miniatyrbildens storlek
+FILEBROWSER_TOOLTIP_STOPPROCESSING;Påbörja behandling automatiskt när ett nytt objekt kommer in
+FILEBROWSER_USETEMPLATE;Använd förinställning:
+FILEBROWSER_ZOOMINHINT;Öka miniatyrbildernas storlek
+FILEBROWSER_ZOOMOUTHINT;Minska miniatyrbildernas storlek
GENERAL_ABOUT;Om
+GENERAL_AFTER;Efter
+GENERAL_BEFORE;Före
GENERAL_CANCEL;Avbryt
GENERAL_DISABLE;Avaktivera
GENERAL_DISABLED;Avaktivera
GENERAL_ENABLE;Verkställ
GENERAL_ENABLED;Verkställ
+GENERAL_HIGH_QUALITY;Hög kvalitet
GENERAL_LANDSCAPE;Landskap
GENERAL_LOAD;Ladda
-GENERAL_NA;n/a
+GENERAL_NA;Ej tillgänglig
GENERAL_NO;Nej
GENERAL_OK;Ok
GENERAL_PORTRAIT;Porträtt
GENERAL_SAVE;Spara
+GENERAL_UNCHANGED;(Oförändrad)
GENERAL_YES;Ja
+HISTOGRAM_BUTTON_B;B
+HISTOGRAM_BUTTON_G;G
+HISTOGRAM_BUTTON_L;L
+HISTOGRAM_BUTTON_R;R
HISTOGRAM_LABEL;Histogram
-HISTOGRAM_TOOLTIP_B;Visa/göm blått histogram
-HISTOGRAM_TOOLTIP_G;Visa/göm grönt histogram
-HISTOGRAM_TOOLTIP_L;Visa/göm CIELAB Luminans histogram
-HISTOGRAM_TOOLTIP_R;Visa/göm rött histogram
-HISTORY_CHANGED;Changed
+HISTOGRAM_TOOLTIP_B;Visa/dölj blått histogram
+HISTOGRAM_TOOLTIP_G;Visa/dölj grönt histogram
+HISTOGRAM_TOOLTIP_L;Visa/dölj CIELAB Luminans histogram
+HISTOGRAM_TOOLTIP_R;Visa/dölj rött histogram
+HISTORY_CHANGED;Ändrad
HISTORY_CUSTOMCURVE;Egen kurva
HISTORY_DELSNAPSHOT;Ta bort bokmärke
-HISTORY_FROMCLIPBOARD;From clipboard
+HISTORY_FROMCLIPBOARD;Från klippbordet
HISTORY_LABEL;Historia
HISTORY_MSG_10;Skuggkomprimering
HISTORY_MSG_11;Tonkurva
@@ -114,10 +139,10 @@ HISTORY_MSG_13;Exponeringsmarkering
HISTORY_MSG_14;Luminansljusstyrka
HISTORY_MSG_15;Luminanskontrast
HISTORY_MSG_16;Svart luminans
-HISTORY_MSG_17;Luminans högdager kompr.
-HISTORY_MSG_18;Luminans skugg kompr.
+HISTORY_MSG_17;Luminans högdagerkompr.
+HISTORY_MSG_18;Luminans skuggkompr.
HISTORY_MSG_19;Luminanskurva
-HISTORY_MSG_1;Foto laddat
+HISTORY_MSG_1;Fotot laddades
HISTORY_MSG_20;Skärpning
HISTORY_MSG_21;Skärpningsradie
HISTORY_MSG_22;Skärpningsmängd
@@ -140,54 +165,59 @@ HISTORY_MSG_37;Färgförstärkning
HISTORY_MSG_38;Vitbalansmetod
HISTORY_MSG_39;Färgtemperatur
HISTORY_MSG_3;Profil ändrad
-HISTORY_MSG_40;Vitbalansnyans
+HISTORY_MSG_40;Färgton
HISTORY_MSG_41;Färgskiftning "A"
HISTORY_MSG_42;Färgskiftning "B"
HISTORY_MSG_43;Luminans brusborttagning
-HISTORY_MSG_44;Lum. brusborttagnings-radie
-HISTORY_MSG_45;Lum. brusborttagnings kanttolerans
+HISTORY_MSG_44;Borttagningsradie för luminansbrusreducering
+HISTORY_MSG_45;Kanttolerans för luminansbrusreducering
HISTORY_MSG_46;Färgbrusborttagning
-HISTORY_MSG_47;Färgbrusborttagnings-radie
-HISTORY_MSG_48;Färgbrusborttagnings-kanttolerans
-HISTORY_MSG_49;Kantkänslig färgbrusborttagning
+HISTORY_MSG_47;Radie för färgbrusreducering
+HISTORY_MSG_48;Kanttolerans för färgbrusreducering
+HISTORY_MSG_49;Kantkänslighet för färgbrusreducering
HISTORY_MSG_4;Historia-bläddrande
-HISTORY_MSG_50;Skugg/högdager verktyg
-HISTORY_MSG_51;Högdager-förstärkning
+HISTORY_MSG_50;Skugg/högdagerverktyg
+HISTORY_MSG_51;Högdagerförstärkning
HISTORY_MSG_52;Skuggförstärkning
-HISTORY_MSG_53;Högdager-tonvidd
-HISTORY_MSG_54;Skugg-tonvidd
+HISTORY_MSG_53;Högdagertonvidd
+HISTORY_MSG_54;Skuggtonvidd
HISTORY_MSG_55;Lokal kontrast
-HISTORY_MSG_56;Skugg/högdager -radie
+HISTORY_MSG_56;Skugg/högdagerradie
HISTORY_MSG_57;Enkel rotation
HISTORY_MSG_58;Vänd horisontellt
HISTORY_MSG_59;Vänd vertikalt
HISTORY_MSG_5;Ljusstyrka
HISTORY_MSG_60;Rotation
-HISTORY_MSG_61;Rotation
-HISTORY_MSG_62;Objektivdistorsions-korrigering
+HISTORY_MSG_61;Fyll automatiskt
+HISTORY_MSG_62;Korrigering av objektivdistorsion
HISTORY_MSG_63;Valt bokmärke
HISTORY_MSG_64;Beskär foto
-HISTORY_MSG_65;C/A korrigering
-HISTORY_MSG_66;Högdager-förbättring
-HISTORY_MSG_67;Högdager-förbättringsstorlek
-HISTORY_MSG_68;Högdager-förbättringsmetod
+HISTORY_MSG_65;Korrigera kromatiska abberationer
+HISTORY_MSG_66;Högdagerförbättring
+HISTORY_MSG_67;Mängd på högdagerförbättringen
+HISTORY_MSG_68;Metod för högdagerförbättring
HISTORY_MSG_69;Arbetsfärgrymd
HISTORY_MSG_6;Kontrast
HISTORY_MSG_70;Utmatningsfärgrymd
HISTORY_MSG_71;Inmatningsfärgrymd
-HISTORY_MSG_72;Vinjettering-korrigering
+HISTORY_MSG_72;Korrigering av vinjettering
HISTORY_MSG_73;Kanalmixer
HISTORY_MSG_74;Ändra storleksskala
-HISTORY_MSG_75;Ändra storleks metod
-HISTORY_MSG_76;Exif Metadata
+HISTORY_MSG_75;Ändra storleksmetod
+HISTORY_MSG_76;EXIF Metadata
HISTORY_MSG_77;IPTC Metadata
-HISTORY_MSG_78;Data specified for resize
-HISTORY_MSG_79;Resize width
-HISTORY_MSG_7;Svart
-HISTORY_MSG_80;Resize height
-HISTORY_MSG_81;Resize enabled
-HISTORY_MSG_8;Exponerings-komprimering
-HISTORY_MSG_9;Högdager-komprimering
+HISTORY_MSG_79;Storleksförändring, bredd
+HISTORY_MSG_7;Svärta
+HISTORY_MSG_80;Storleksförändring, höjd
+HISTORY_MSG_81;Storleksförändring aktiverad
+HISTORY_MSG_82;Profilen har ändrats
+HISTORY_MSG_83;Högkvalitet Skuggor/högdager
+HISTORY_MSG_84;Korrigering av perspektiv
+HISTORY_MSG_85;Wavelet koefficienter
+HISTORY_MSG_86;Wavelet equalizer
+HISTORY_MSG_87;Brusreducering mha av stegsvar
+HISTORY_MSG_8;Exponeringskomprimering
+HISTORY_MSG_9;Högdagerkomprimering
HISTORY_NEWSNAPSHOT;Nytt bokmärke
HISTORY_NEWSNAPSHOTAS;Som...
HISTORY_NEWSSDIALOGLABEL;Namn på bokmärket:
@@ -197,7 +227,7 @@ HISTORY_SNAPSHOT;Bokmärke
HISTORY_SNAPSHOTS;Bokmärken
ICMPANEL_FILEDLGFILTERANY;Vilka filer som helst
ICMPANEL_FILEDLGFILTERICM;ICC profilfiler
-ICMPANEL_GAMMABEFOREINPUT;Profile applies Gamma
+ICMPANEL_GAMMABEFOREINPUT;Profilapplicerad gamma
ICMPANEL_INPUTCAMERA;Kameraval
ICMPANEL_INPUTCUSTOM;Egen
ICMPANEL_INPUTDLGLABEL;Välj inmatnings ICC-profil...
@@ -206,251 +236,272 @@ ICMPANEL_INPUTPROFILE;Inmatningsprofil
ICMPANEL_NOICM;Ingen ICM: sRGB-utmatning
ICMPANEL_OUTPUTDLGLABEL;Välj utmatnings ICC-profil...
ICMPANEL_OUTPUTPROFILE;Utmatningsprofil
-ICMPANEL_SAVEREFERENCE;Save reference image for profiling
+ICMPANEL_SAVEREFERENCE;Spara referensbild för profilering
ICMPANEL_WORKINGPROFILE;Arbetsprofil
IMAGEAREA_DETAILVIEW;Detalj
-IPTCPANEL_AUTHOR;Author
-IPTCPANEL_AUTHORHINT;Name of the creator of the object, e.g. writer, photographer or graphic artist (By-line).
-IPTCPANEL_AUTHORSPOSITION;Author's position
-IPTCPANEL_AUTHORSPOSITIONHINT;Title of the creator or creators of the object (By-line Title).
-IPTCPANEL_CAPTION;Caption
-IPTCPANEL_CAPTIONHINT;A textual description of the data (Caption - Abstract).
-IPTCPANEL_CAPTIONWRITER;Caption Writer
-IPTCPANEL_CAPTIONWRITERHINT;The name of the person involved in the writing, editing or correcting the image or caption/abstract (Writer - Editor).
-IPTCPANEL_CATEGORY;Category
-IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider (Category).
-IPTCPANEL_CITY;City
-IPTCPANEL_CITYHINT;City of image origin (City).
-IPTCPANEL_COPYHINT;Copy IPTC settings to clipboard
-IPTCPANEL_COPYRIGHT;Copyright
-IPTCPANEL_COPYRIGHTHINT;Any necessary copyright notice (Copyright Notice).
-IPTCPANEL_COUNTRY;Country
-IPTCPANEL_COUNTRYHINT;The name of the country/primary location where the image was created (Country - Primary Location Name).
-IPTCPANEL_CREDIT;Credit
-IPTCPANEL_CREDITHINT;Identifies the provider of the image, not necessarily the owner/creator (Credit).
-IPTCPANEL_DATECREATED;Date Created
-IPTCPANEL_DATECREATEDHINT;The date the intellectual content of the image was created; Format: JJJJMMTT (Date Created).
-IPTCPANEL_EMBEDDED;Embedded
-IPTCPANEL_EMBEDDEDHINT;Reset to IPTC data embedded in the image file
-IPTCPANEL_HEADLINE;Headline
-IPTCPANEL_HEADLINEHINT;A publishable entry providing a synopsis of the contents of the image (Headline).
-IPTCPANEL_INSTRUCTIONS;Instructions
-IPTCPANEL_INSTRUCTIONSHINT;Other editorial instructions concerning the use of the image (Special Instructions).
-IPTCPANEL_KEYWORDS;Keywords
-IPTCPANEL_KEYWORDSHINT;Used to indicate specific information retrieval words (Keywords).
-IPTCPANEL_PASTEHINT;Paste IPTC settings from clipboard
-IPTCPANEL_PROVINCE;Province
-IPTCPANEL_PROVINCEHINT;The Province/State where the image originates (Province-State).
-IPTCPANEL_RESET;Reset
-IPTCPANEL_RESETHINT;Reset to profile default
-IPTCPANEL_SOURCE;Source
-IPTCPANEL_SOURCEHINT;The original owner of the intellectual content of the image (Source).
-IPTCPANEL_SUPPCATEGORIES;Suppl. Categories
-IPTCPANEL_SUPPCATEGORIESHINT;Further refines the subject of the image (Supplemental Categories).
-IPTCPANEL_TITLE;Title
-IPTCPANEL_TITLEHINT;A shorthand reference for the image (Object Name).
-IPTCPANEL_TRANSREFERENCE;Trans. Reference
-IPTCPANEL_TRANSREFERENCEHINT;A code representing the location of original transmission (Original Transmission Reference).
-MAIN_BUTTON_EXIT;Exit
+IPTCPANEL_AUTHOR;Upphovsman
+IPTCPANEL_AUTHORHINT;Namn på skaparen, t ex skribenten, fotografen eller den grafiska artisten (by-line)
+IPTCPANEL_CATEGORY;Kategori
+IPTCPANEL_CITY;Stad
+IPTCPANEL_COUNTRY;Land
+IPTCPANEL_EMBEDDED;Inbäddad
+IPTCPANEL_INSTRUCTIONS;Instruktioner
+IPTCPANEL_KEYWORDS;Nyckelord
+IPTCPANEL_RESET;Återställ
+IPTCPANEL_RESETHINT;Återställ till standardprofilen
+IPTCPANEL_SOURCE;Källa
+IPTCPANEL_TITLE;Titel
+MAIN_BUTTON_EXIT;Avsluta
+MAIN_BUTTON_FULLSCREEN;Helskärm
MAIN_BUTTON_PREFERENCES;Inställningar
-MAIN_BUTTON_QUEUE;Put to queue
+MAIN_BUTTON_PUTTOQUEUE;Flytta till behandlingskön
+MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Lägg till nuvarande bild i behandlingskön Ctrl+Q
+MAIN_BUTTON_QUEUE;Placera i behandlingskön
MAIN_BUTTON_SAVE;Spara bild
MAIN_BUTTON_SAVEAS;Som...
-MAIN_BUTTON_SENDTOEDITOR;Send to editor
-MAIN_FRAME_BATCHQUEUE;Batch Queue
-MAIN_FRAME_FILEBROWSER;File Browser
-MAIN_FRAME_PLACES;Places
-MAIN_FRAME_PLACES_ADD;Add
-MAIN_FRAME_PLACES_DEL;Del
-MAIN_FRAME_RECENT;Recent Folders
+MAIN_BUTTON_SAVE_TOOLTIP;Spara nuvarande bild Ctrl+S
+MAIN_BUTTON_SENDTOEDITOR;Skicka till externt bildbehandlingsprogram
+MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Redigera nuvarande bild i externt bildredigeringsprogram Ctrl+E
+MAIN_BUTTON_UNFULLSCREEN;Avsluta helskärm
+MAIN_FRAME_BATCHQUEUE;Batchkö
+MAIN_FRAME_FILEBROWSER;Filhanterare
+MAIN_FRAME_PLACES;Platser
+MAIN_FRAME_PLACES_ADD;Lägg till
+MAIN_FRAME_PLACES_DEL;Ta bort
+MAIN_FRAME_RECENT;Nyligen använda mappar
MAIN_MSG_ALREADYEXISTS;Filen existerar redan.
MAIN_MSG_CANNOTLOAD;Kan inte ladda bilden
MAIN_MSG_CANNOTSAVE;Filsparningsfel
-MAIN_MSG_CANNOTSTARTEDITOR;Can not start editor.
-MAIN_MSG_CANNOTSTARTEDITOR_SECONDARY;Please set the correct path in the "Preferences" dialog.
-MAIN_MSG_EXITJOBSINQUEUEINFO;Unprocessed images in the queue will be lost on exit.
-MAIN_MSG_EXITJOBSINQUEUEQUEST;Are you sure you want to exit? There are unprocessed images waiting in the queue.
+MAIN_MSG_CANNOTSTARTEDITOR;Kan ej starta externt redigeringsprogram
+MAIN_MSG_CANNOTSTARTEDITOR_SECONDARY;Var vänlig och ange rätt sökväg i inställningarna
+MAIN_MSG_ERRORDURINGIMAGESAVING;Fel uppstod när bilden sparades
+MAIN_MSG_EXITJOBSINQUEUEINFO;Obehandlade bilder i behandlingskön kommer att gå förlorade om programmet stängs av.
+MAIN_MSG_EXITJOBSINQUEUEQUEST;Är du säker på att du vill avsluta? Det finns obehandlade bilder i behandlingskön.
MAIN_MSG_JOBSINQUEUE;Arbete(n) i kö
+MAIN_MSG_NAVIGATOR;Översikt
+MAIN_MSG_PLACES;Platser
MAIN_MSG_QOVERWRITE;Vill du skriva över den?
MAIN_TAB_BASIC;Grund
-MAIN_TAB_COLOR;Color
-MAIN_TAB_DETAIL;Detail
-MAIN_TAB_DEVELOP;Develop
-MAIN_TAB_EXIF;Exif
-MAIN_TAB_EXPOSURE;Exposure
+MAIN_TAB_COLOR;Färger
+MAIN_TAB_DETAIL;Detaljer
+MAIN_TAB_DEVELOP;Framkalla
+MAIN_TAB_EXIF;EXIF
+MAIN_TAB_EXPOSURE;Exponering
MAIN_TAB_FILTER;Filter
MAIN_TAB_ICM;ICM
MAIN_TAB_IPTC;IPTC
MAIN_TAB_METADATA;Metadata
-MAIN_TAB_TAGGING;Tagging
+MAIN_TAB_TAGGING;Etiketter
MAIN_TAB_TRANSFORM;Omvandla
-MAIN_TOOLTIP_HIDEFP;Visa/göm den nedre panelen (katalog och filbläddrare, shortcut key: F)
-MAIN_TOOLTIP_HIDEHP;Visa/göm den vänstra panelen (innehåller historiken, shortcut key: H)
-MAIN_TOOLTIP_INDCLIPPEDH;Markerad högdager-indikation
-MAIN_TOOLTIP_INDCLIPPEDS;Markerad skugg-indikation
+MAIN_TOGGLE_BEFORE_AFTER;B|A
+MAIN_TOOLTIP_HIDEFP;Visa/göm den nedre panelen (katalog och filbläddrare, Kortkommando: F)
+MAIN_TOOLTIP_HIDEHP;Visa/göm den vänstra panelen (innehåller historiken, Kortkommando: H)
+MAIN_TOOLTIP_INDCLIPPEDH;Markerad högdagerindikation
+MAIN_TOOLTIP_INDCLIPPEDS;Markerad skuggindikation
MAIN_TOOLTIP_PREFERENCES;Ställ in inställningar
-MAIN_TOOLTIP_QINFO;Snabb info om bilden
+MAIN_TOOLTIP_QINFO;Visa kortfattad information om bilden
MAIN_TOOLTIP_SAVE;Spara bilden till standardmappen
MAIN_TOOLTIP_SAVEAS;Spara bilden till en vald mapp
-PARTIALPASTE_BASICGROUP;Basic settings
-PARTIALPASTE_CACORRECTION;C/A correction
-PARTIALPASTE_COARSETRANS;90 deg rotation / flipping
-PARTIALPASTE_COLORBOOST;Color boost
-PARTIALPASTE_COLORDENOISE;Color denoise
-PARTIALPASTE_COLORGROUP;Color related settings
-PARTIALPASTE_COLORMIXER;Color mixer
-PARTIALPASTE_COLORSHIFT;Color shift
-PARTIALPASTE_COMPOSITIONGROUP;Composition settings
-PARTIALPASTE_CROP;Crop
-PARTIALPASTE_DIALOGLABEL;Partial paste processing profile
-PARTIALPASTE_DISTORTION;Distortion correction
-PARTIALPASTE_EXIFCHANGES;Changes to exif data
-PARTIALPASTE_EXPOSURE;Exposure
-PARTIALPASTE_HLRECOVERY;Highlight recovery
-PARTIALPASTE_ICMSETTINGS;ICM settings
+MAIN_TOOLTIP_TOGGLE;Växla före/efter vy B
+NAVIGATOR_B_NA;B = -
+NAVIGATOR_B_VALUE;B = %1
+NAVIGATOR_G_NA;G = -
+NAVIGATOR_G_VALUE;G = %1
+NAVIGATOR_H_NA;H = -
+NAVIGATOR_H_VALUE;H = %1
+NAVIGATOR_LAB_A_NA;A = -
+NAVIGATOR_LAB_A_VALUE;A = %1
+NAVIGATOR_LAB_B_NA;B = -
+NAVIGATOR_LAB_B_VALUE;B = %1
+NAVIGATOR_LAB_L_NA;L = -
+NAVIGATOR_LAB_L_VALUE;L = %1
+NAVIGATOR_R_NA;R = -
+NAVIGATOR_R_VALUE;R = %1
+NAVIGATOR_S_NA;S = -
+NAVIGATOR_S_VALUE;S = %1
+NAVIGATOR_V_NA;V = -
+NAVIGATOR_V_VALUE;V = %1
+NAVIGATOR_XY_NA;x = -, y = -
+PARTIALPASTE_BASICGROUP;Grundläggande inställningar
+PARTIALPASTE_CACORRECTION;Reducera kromatiska abberationer
+PARTIALPASTE_COARSETRANS;90-graders rotering
+PARTIALPASTE_COLORBOOST;Förstärk färger
+PARTIALPASTE_COLORDENOISE;Reducera färgbrus
+PARTIALPASTE_COLORGROUP;Färgrelaterade inställningar
+PARTIALPASTE_COLORMIXER;Färgmixer
+PARTIALPASTE_COLORSHIFT;Färgskift
+PARTIALPASTE_COMPOSITIONGROUP;Komponeringsinställningar
+PARTIALPASTE_CROP;Beskär
+PARTIALPASTE_DIALOGLABEL;Partiell inklistring av processprofiler
+PARTIALPASTE_DISTORTION;Distortionsrättning
+PARTIALPASTE_EXIFCHANGES;Förändringar i EXIF-informationen
+PARTIALPASTE_EXPOSURE;Exponering
+PARTIALPASTE_HLRECOVERY;Högdageråterskapning
+PARTIALPASTE_ICMSETTINGS;ICM-inställningar
PARTIALPASTE_IPTCINFO;IPTC info
-PARTIALPASTE_LENSGROUP;Lens related settings
-PARTIALPASTE_LUMACURVE;Luminance curve
-PARTIALPASTE_LUMADENOISE;Luminance noise reduction
-PARTIALPASTE_LUMINANCEGROUP;Luminance related settings
-PARTIALPASTE_METAICMGROUP;Metadata/ICM settings
-PARTIALPASTE_RESIZE;Resize
-PARTIALPASTE_ROTATION;Rotation
-PARTIALPASTE_SHADOWSHIGHLIGHTS;Shadows/Highlights
-PARTIALPASTE_SHARPENING;Sharpening
-PARTIALPASTE_VIGNETTING;Vignetting correction
-PARTIALPASTE_WHITEBALANCE;White balance
-PREFERENCES_APPLNEXTSTARTUP;ändras vid nästa uppstart
+PARTIALPASTE_LABCURVE;Labkurva
+PARTIALPASTE_LABCURVE;Luminanskurva
+PARTIALPASTE_LENSGROUP;Objektivrelaterade inställningar
+PARTIALPASTE_LUMACURVE;Luminanskurva
+PARTIALPASTE_LUMADENOISE;Reducera luminansbrus
+PARTIALPASTE_LUMINANCEGROUP;Luminansrelaterade inställningar
+PARTIALPASTE_METAICMGROUP;Metadata/ICM inställningar
+PARTIALPASTE_RESIZE;Ändra storlek
+PARTIALPASTE_ROTATION;Rotering
+PARTIALPASTE_SHADOWSHIGHLIGHTS;Skuggor/Högdagrar
+PARTIALPASTE_SHARPENING;Skärpa
+PARTIALPASTE_VIGNETTING;Reducera vinjettering
+PARTIALPASTE_WHITEBALANCE;Vitbalans
+PREFERENCES_ADD;Lägg till
+PREFERENCES_APPLNEXTSTARTUP;Ändras vid nästa uppstart
+PREFERENCES_BATCH_PROCESSING;Batchbehandling
+PREFERENCES_BEHAVIOR;Uppträdande
PREFERENCES_BLINKCLIPPED;Blinka markerade områden
-PREFERENCES_CACHECLEARALL;Clear All
-PREFERENCES_CACHECLEARPROFILES;Clear Profiles
-PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails
-PREFERENCES_CACHEFORMAT1;Proprietary (faster and better quality)
-PREFERENCES_CACHEFORMAT2;JPEG (smaller disk footprint)
-PREFERENCES_CACHEMAXENTRIES;Maximal Number of Cache Entries
-PREFERENCES_CACHEOPTS;Cache Options
-PREFERENCES_CACHESTRAT1;Prefer Speed to Low Memory Consumption
-PREFERENCES_CACHESTRAT2;Prefer Low Memory Consumption to Speed
-PREFERENCES_CACHESTRAT;Cache Strategy
-PREFERENCES_CACHETHUMBFORM;Cache Thumbnail Format
-PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height
-PREFERENCES_CLEARDLG_LINE1;Clearing cache
-PREFERENCES_CLEARDLG_LINE2;This may take a few seconds.
-PREFERENCES_CLEARDLG_TITLE;Please wait
-PREFERENCES_CLIPPINGIND;Markerings-indikation
-PREFERENCES_CMETRICINTENT;Colorimetric Intent
+PREFERENCES_CACHECLEARALL;Återställ alla
+PREFERENCES_CACHECLEARPROFILES;Återställ profiler
+PREFERENCES_CACHECLEARTHUMBS;Ta bort cachade miniatyrbilder
+PREFERENCES_CACHEFORMAT1;Proprietär (snabbare och med bättre kvalitet)
+PREFERENCES_CACHEFORMAT2;JPEG (tar mindre plats)
+PREFERENCES_CACHEMAXENTRIES;Maximalt antal cachefiler
+PREFERENCES_CACHEOPTS;Cacheinställningar
+PREFERENCES_CACHESTRAT1;Föredra hastighet framför låg minnesanvändning
+PREFERENCES_CACHESTRAT2;Föredra låg minnesanvändning framför hastighet
+PREFERENCES_CACHESTRAT;Cachestrategi
+PREFERENCES_CACHETHUMBFORM;Miniatyrbildens format i cachen
+PREFERENCES_CACHETHUMBHEIGHT;Maximal storlek på miniatyrbilderna
+PREFERENCES_CACORRECTION;Använd autoreducering av kromatiska abberationer (CA)
+PREFERENCES_CLEARDLG_LINE1;Rensa cache
+PREFERENCES_CLEARDLG_LINE2;Det här tar kanske ett par sekunder...
+PREFERENCES_CLEARDLG_TITLE;Var vänlig vänta
+PREFERENCES_CLIPPINGIND;Markeringsindikation
+PREFERENCES_CMETRICINTENT;Kolorimetrisk återgivning
PREFERENCES_DATEFORMAT;Datumformat
-PREFERENCES_DATEFORMATHINT;You can use the following formatting strings:\n%y : year\n%m : month\n%d : day\n\nFor example, the hungarian date format is:\n%y/%m/%d
+PREFERENCES_DATEFORMATHINT;Du kan använda de följande formatteringssträngarna:\n%y : år\n%m : månad\n%d : dag\n\nTill exempel är det svenska datumformatet:-n%y-%m-%d
+PREFERENCES_DCBENHANCE;Applicera DCB-förbättringssteg
+PREFERENCES_DCBITERATIONS;Antal DCB-iterationer
PREFERENCES_DEFAULTLANG;Förvalt språk
-PREFERENCES_DEFAULTTHEME;Default theme
-PREFERENCES_DEMOSAICINGALGO;Demosaicing Algorithm
+PREFERENCES_DEFAULTTHEME;Förvalt tema
+PREFERENCES_DEMOSAICINGALGO;Algoritm för demosaicing
PREFERENCES_DIRHOME;Hemkatalog
PREFERENCES_DIRLAST;Senaste besökta katalog
PREFERENCES_DIROTHER;Annan
-PREFERENCES_DIRSELECTDLG;Välj Bildkatalog vid uppstart...
-PREFERENCES_DIRSOFTWARE;Installations-katalog
+PREFERENCES_DIRSELECTDLG;Välj bildkatalog vid uppstart...
+PREFERENCES_DIRSOFTWARE;Installationskatalog
PREFERENCES_DMETHOD;Metod
-PREFERENCES_EDITORCMDLINE;Other command line
-PREFERENCES_EXTERNALEDITOR;External editor
+PREFERENCES_DMETHODBATCH;Batch
+PREFERENCES_EDITORCMDLINE;Annan kommandorad
+PREFERENCES_EDITORLAYOUT;Layout på redigeringsvyn
+PREFERENCES_EXTERNALEDITOR;Externt bildredigeringsprogram
PREFERENCES_FALSECOLOR;Falskt färgbortträngningssteg
-PREFERENCES_FBROWSEROPTS;Filbläddrar-inställningar
+PREFERENCES_FBROWSEROPTS;Filbläddrarinställningar
PREFERENCES_FILEFORMAT;Filformat
PREFERENCES_FORIMAGE;För bildfiler
-PREFERENCES_FORRAW;För RAW-filer
-PREFERENCES_GIMPPATH;GIMP installation directory
-PREFERENCES_GTKTHEME;GTK default
+PREFERENCES_FORRAW;För råfiler
+PREFERENCES_GIMPPATH;Installationskatalog för GIMP
+PREFERENCES_GTKTHEME;GTK standard
PREFERENCES_HINT;Tips
-PREFERENCES_HLTHRESHOLD;Tröskelvärde för markerade högdager
+PREFERENCES_HLTHRESHOLD;Tröskelvärde för högdagrar
+PREFERENCES_HOTDEADPIXFILT;Applicera het/död-pixelfilter
PREFERENCES_ICCDIR;Katalog för ICC-profiler
-PREFERENCES_IMPROCPARAMS;Standard-bildbehandlingsparametrar
-PREFERENCES_INTENT_ABSOLUTE;Total colorimetric
-PREFERENCES_INTENT_PERCEPTUAL;Perceptual
-PREFERENCES_INTENT_RELATIVE;Relativ colorimetric
+PREFERENCES_IMPROCPARAMS;Standardprofiler
+PREFERENCES_INTENT_ABSOLUTE;Totalkolorimetrisk
+PREFERENCES_INTENT_PERCEPTUAL;Upplevd
+PREFERENCES_INTENT_RELATIVE;Relativ kolorimetrisk
PREFERENCES_INTENT_SATURATION;Mättnad
-PREFERENCES_LIVETHUMBNAILS;Live Thumbnails (slower)
+PREFERENCES_LIVETHUMBNAILS;Alltid uppdaterade miniatyrbilder(långsammare)
PREFERENCES_MONITORICC;Skärmprofil
+PREFERENCES_MULTITAB;Öppna bilderna i olika flikar
PREFERENCES_OUTDIR;Utmatningskatalog
-PREFERENCES_OUTDIRFOLDER;Save to folder
-PREFERENCES_OUTDIRFOLDERHINT;Put the saved images to the seledted folder
-PREFERENCES_OUTDIRHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nThese formatting strings refer to the directories and sub-paths of the path of the raw file.\n\nFor example, if /home/tom/image/02-09-2006/dsc0012.nefhas been opened, the meaning of the formatting strings are:\n%f=dsc0012, %d1=02-09-2006, %d2=image, ...\n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, p3=/home/tom, ...\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory 'converted' located the directory of the original, write:\n%p1/converted/%f\n\nIf you want to save the output image in directory '/home/tom/converted' with keeping the same subdirectory of dates, write:\n%p2/converted/%d1/%f
-PREFERENCES_OUTDIRTEMPLATE;Use Template
-PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nThese formatting strings refer to the directories and sub-paths of the path of the raw file.\n\nFor example, if /home/tom/image/02-09-2006/dsc0012.nefhas been opened, the meaning of the formatting strings are:\n%f=dsc0012, %d1=02-09-2006, %d2=image, ...\n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, p3=/home/tom, ...\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory 'converted' located the directory of the original, write:\n%p1/converted/%f\n\nIf you want to save the output image in directory '/home/tom/converted' with keeping the same subdirectory of dates, write:\n%p2/converted/%d1/%f
-PREFERENCES_PARSEDEXT;Parsed Extensions
-PREFERENCES_PARSEDEXTADD;Add Extension
-PREFERENCES_PARSEDEXTADDHINT;Type an extension and press this button to append list
-PREFERENCES_PARSEDEXTDELHINT;Delete selected extension from the list
-PREFERENCES_PROFILEHANDLING;Processing Profile Handling
-PREFERENCES_PROFILELOADPR;Profile Loading Priority
-PREFERENCES_PROFILEPRCACHE;Profile in Cache
-PREFERENCES_PROFILEPRFILE;Profile Next to the Input File
-PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache
-PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File
-PREFERENCES_PSPATH;Adobe Photoshop installation directory
+PREFERENCES_OUTDIRFOLDER;Spara till katalog
+PREFERENCES_OUTDIRFOLDERHINT;Flytta de sparade filerna i den valda katalogen
+PREFERENCES_OUTDIRHINT;Du kan använda de följande formatteringssträngarna:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nDe här formatsträngarna hänvisar till katalogerna och underkatalogerna till råfilens sökväg.\n\nTill exempel, om /home/tom/bilder/2010-09-02/dsc0012.nefhar öppnats, betyder formatsträngen:\n%f=dsc0012, %d1=2010-09-02, %d2=bildfilen, ...\n%p1=/home/tom/bilder/2010-09-02, %p2=/home/tom/bilder, p3=/home/tom, ...\n\nOm du vill spara den behandlade filen där originalet finns, skriver du:\n%p1/%f\n\nOm du vill spara den behandlade filen i en katalog som heter "Konverterade filer", belägen i originalets katalog, skriver du:\n%p1/Konverterade filer/%f\n\nOm du vill spara den behandlade filen i en katalog '/home/tom/Konverterade filer' där du behåller samma underkatalog med datum, skriver du:\n%p2/Konverterade filer/%d1/%f
+PREFERENCES_OUTDIRTEMPLATE;Använd förinställning
+PREFERENCES_OUTDIRTEMPLATEHINT;Du kan använda de följande formatteringssträngarna:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nDe här formatsträngarna hänvisar till katalogerna och underkatalogerna till råfilens sökväg.\n\nTill exempel, om /home/tom/bilder/2010-09-02/dsc0012.nefhar öppnats, betyder formatsträngen följande:\n%f=dsc0012, %d1=2010-09-02, %d2=bildfilen, ...\n%p1=/home/tom/bilder/2010-09-02, %p2=/home/tom/bilder, p3=/home/tom, ...\n\nOm du vill spara den behandlade filen där originalet finns, skriver du:\n%p1/%f\n\nOm du vill spara den behandlade filen i en katalog som heter "Konverterade filer", belägen i originalets katalog, skriver du:\n%p1/Konverterade filer/%f\n\nOm du vill spara den behandlade filen i en katalog '/home/tom/Konverterade filer' där du behåller samma underkatalog med datum, skriver du:\n%p2/Konverterade filer/%d1/%f
+PREFERENCES_OVERLAY_FILENAMES;Visa filnamn över miniatyrbilder
+PREFERENCES_PARSEDEXT;Behandlade filtyper
+PREFERENCES_PARSEDEXTADD;Lägg till filtyp
+PREFERENCES_PARSEDEXTADDHINT;Skriv in en filändelse och tryck på den här knappen för att lägga till den i listan
+PREFERENCES_PARSEDEXTDELHINT;Ta bort de markerade filändelserna från listan
+PREFERENCES_PROFILEHANDLING;Hantering av bildbehandlingsparametrar
+PREFERENCES_PROFILELOADPR;Laddningsprioritet för profil
+PREFERENCES_PROFILEPRCACHE;Profil i cache
+PREFERENCES_PROFILEPRFILE;Profil i indatafilen
+PREFERENCES_PROFILESAVECACHE;Spara behandlingsparametrar till cachen
+PREFERENCES_PROFILESAVEINPUT;Spara behandlingsparametrar med indatabildfilen
+PREFERENCES_PROPERTY;Egenskaper
+PREFERENCES_PSPATH;Adobe Photoshops installationskatalog
+PREFERENCES_SELECTFONT;Välj typsnitt
PREFERENCES_SELECTICCDIRDLG;Välj ICC-profil katalog...
PREFERENCES_SELECTLANG;Välj språk
PREFERENCES_SELECTMONITORPROFDLG;Välj ICC-profil för skärmen...
-PREFERENCES_SELECTTHEME;Select theme
-PREFERENCES_SHOWBASICEXIF;Visa grundlig Exif-information
+PREFERENCES_SELECTTHEME;Välj tema
+PREFERENCES_SET;Aktivera
+PREFERENCES_SHOWBASICEXIF;Visa grundlig EXIF-information
PREFERENCES_SHOWDATETIME;Visa datum och tid
PREFERENCES_SHOWONLYRAW;Visa bara RAW-filer
-PREFERENCES_SHTHRESHOLD;Tröskelvärde för markerade skuggor
+PREFERENCES_SHTHRESHOLD;Tröskelvärde för skuggor
+PREFERENCES_SINGLETAB;Öppna en bild åt gången
PREFERENCES_STARTUPIMDIR;Bildkatalog som visas vid uppstart
PREFERENCES_TAB_BROWSER;Filbläddrare
PREFERENCES_TAB_COLORMGR;Färghantering
PREFERENCES_TAB_GENERAL;Allmän
PREFERENCES_TAB_IMPROC;Bildbehandling
-PREFERENCES_TAB_OUTPUT;Utmatnings-inställningar
+PREFERENCES_TAB_OUTPUT;Utmatningsinställningar
PREFERENCES_THUMBSIZE;Miniatyrbildstorlek
+PREFERENCES_USESYSTEMTHEME;Använd systemtema
+PREFERENCES_WORKFLOW;Arbetsflöde
PROFILEPANEL_FILEDLGFILTERANY;Vilka filer som helst
-PROFILEPANEL_FILEDLGFILTERPP;Postbehandlar profiler
-PROFILEPANEL_LABEL;Postbehandlar profiler
-PROFILEPANEL_LOADDLGLABEL;Ladda Postbehandlingsparametrar...
+PROFILEPANEL_FILEDLGFILTERPP;Efterbehandlingsprofiler
+PROFILEPANEL_LABEL;Efterbehandlingsprofiler
+PROFILEPANEL_LOADDLGLABEL;Ladda efterbehandlingsparametrar...
PROFILEPANEL_PCUSTOM;Egen
PROFILEPANEL_PFILE;Från fil
PROFILEPANEL_PLASTPHOTO;Senaste foto
PROFILEPANEL_PLASTSAVED;Senast sparad
PROFILEPANEL_PROFILE;Profil
-PROFILEPANEL_SAVEDLGLABEL;Spara Postbehandlingsparametrar...
-PROFILEPANEL_TOOLTIPCOPY;Copy current profile to clipboard
+PROFILEPANEL_SAVEDLGLABEL;Spara efterbehandlingsparametrar...
+PROFILEPANEL_TOOLTIPCOPY;Kopiera nuvarande profil till klippbordet
PROFILEPANEL_TOOLTIPLOAD;Ladda profil från fil
-PROFILEPANEL_TOOLTIPPASTE; Paste profile from clipboard
+PROFILEPANEL_TOOLTIPPASTE; Klistra in profil från klippbordet
PROFILEPANEL_TOOLTIPSAVE;Spara nuvarande profil
-PROGRESSBAR_DECODING;Avkodar Raw-fil...
+PROGRESSBAR_DECODING;Avkodar råfil...
PROGRESSBAR_DEMOSAICING;Demosaicing...
PROGRESSBAR_LOADING;Laddar bild...
PROGRESSBAR_LOADJPEG;Laddar JPEG-fil...
PROGRESSBAR_LOADPNG;Laddar PNG-fil...
PROGRESSBAR_LOADTIFF;Laddar TIFF-fil...
-PROGRESSBAR_PROCESSING;Bearbetar Bild...
-PROGRESSBAR_READY;Klar.
+PROGRESSBAR_PROCESSING;Bearbetar bild...
+PROGRESSBAR_READY;Klar
PROGRESSBAR_SAVEJPEG;Sparar JPEG-fil...
PROGRESSBAR_SAVEPNG;Sparar PNG-fil...
PROGRESSBAR_SAVETIFF;Sparar TIFF-fil...
PROGRESSDLG_LOADING;Loading file...
-PROGRESSDLG_PROCESSING;Processing image...
-PROGRESSDLG_SAVING;Saving file...
+PROGRESSDLG_PROCESSING;Bearbetar bild...
+PROGRESSDLG_PROFILECHANGEDINBROWSER;Profilen har ändrats i filhanteraren
+PROGRESSDLG_SAVING;Sparar fil...
QINFO_FOCALLENGTH;Brännvidd
QINFO_ISO;ISO
-QINFO_LENS;Lens
-QINFO_NOEXIF;Exifdata otillgänglig.
+QINFO_LENS;Objektiv
+QINFO_NOEXIF;EXIF-information ej tillgänglig.
+SAVEDLG_AUTOSUFFIX;Lägg automatiskt till en ändelse om filnamnet redan existerar
SAVEDLG_FILEFORMAT;Filformat
SAVEDLG_JPEGQUAL;JPEG-kvalitet
SAVEDLG_JPGFILTER;JPEG-filer
SAVEDLG_PNGCOMPR;PNG-komprimering
SAVEDLG_PNGFILTER;PNG-filer
-SAVEDLG_PUTTOQUEUE;Put into processing queue
-SAVEDLG_PUTTOQUEUEHEAD;Put to the head of the processing queue
-SAVEDLG_PUTTOQUEUETAIL;Put to the end of the processing queue
-SAVEDLG_SAVEIMMEDIATELY;Save immediately
+SAVEDLG_PUTTOQUEUE;Lägg till i behandlingskön
+SAVEDLG_PUTTOQUEUEHEAD;Flytta längst fram i behandlingskön
+SAVEDLG_PUTTOQUEUETAIL;Flytta längst bak i behandlingskön
+SAVEDLG_SAVEIMMEDIATELY;Spara direkt
SAVEDLG_SAVESPP;Spara behandlingsparametrarna med bilderna
SAVEDLG_TIFFFILTER;TIFF-filer
-SAVEDLG_TIFFUNCOMPRESSED;Uncompressed TIFF
-TOOLBAR_TOOLTIP_CROP;Välj beskärningsområde (shortcut key: C)
-TOOLBAR_TOOLTIP_HAND;Handverktyg (shortcut key: N)
-TOOLBAR_TOOLTIP_STRAIGHTEN;Räta ut (shortcut key: S)
-TOOLBAR_TOOLTIP_WB;Punkt-vitbalans (shortcut key: W)
+SAVEDLG_TIFFUNCOMPRESSED;Okomprimerad TIFF
+TOOLBAR_TOOLTIP_CROP;Välj beskärningsområde (Kortkommando: C)
+TOOLBAR_TOOLTIP_HAND;Handverktyg (Kortkommando: N)
+TOOLBAR_TOOLTIP_STRAIGHTEN;Räta ut (Kortkommando: S)
+TOOLBAR_TOOLTIP_WB;Egen vitbalans (Kortkommando: W)
TP_CACORRECTION_BLUE;Blå
-TP_CACORRECTION_LABEL;C/A justering
+TP_CACORRECTION_LABEL;Korrigera kromatiska abberationer
TP_CACORRECTION_RED;Röd
TP_CHMIXER_BLUE;Blå
TP_CHMIXER_GREEN;Grön
@@ -461,59 +512,75 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Vänd horisontellt
TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotera åt vänster
TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotera åt höger
TP_COARSETRAF_TOOLTIP_VFLIP;Vänd vertikalt
-TP_COLORBOOST_ACHANNEL;kanal "a"
+TP_COLORBOOST_ACHANNEL;Kanal "a"
TP_COLORBOOST_AMOUNT;Mängd
-TP_COLORBOOST_AVOIDCOLORCLIP;Undvik färgclipping
-TP_COLORBOOST_BCHANNEL;kanal "b"
+TP_COLORBOOST_AVOIDCOLORCLIP;Undvik att färgen klipper
+TP_COLORBOOST_BCHANNEL;Kanal "b"
TP_COLORBOOST_CHAB;a & b
TP_COLORBOOST_CHANNEL;Kanal
-TP_COLORBOOST_CHSEPARATE;separat
+TP_COLORBOOST_CHSEPARATE;Separat
TP_COLORBOOST_ENABLESATLIMITER;Verkställ mättnadsgräns
TP_COLORBOOST_LABEL;Färgförstärkning
TP_COLORBOOST_SATLIMIT;Mättnadsgräns
TP_COLORDENOISE_EDGESENSITIVE;Kantkänslighet
TP_COLORDENOISE_EDGETOLERANCE;Kanttolerans
-TP_COLORDENOISE_LABEL;Färgbrus-reducering
+TP_COLORDENOISE_LABEL;Färgbrusreducering
TP_COLORDENOISE_RADIUS;Radie
TP_COLORSHIFT_BLUEYELLOW;Blå-Gul
TP_COLORSHIFT_GREENMAGENTA;Grön-Magenta
TP_COLORSHIFT_LABEL;Färgskiftningar
TP_CROP_DPI;DPI=
-TP_CROP_FIXRATIO;Fixa proportion
+TP_CROP_FIXRATIO;Fix proportion
TP_CROP_GTDIAGONALS;Diagonalregeln
-TP_CROP_GTHARMMEANS1;Harmonic means 1
-TP_CROP_GTHARMMEANS2;Harmonic means 2
-TP_CROP_GTHARMMEANS3;Harmonic means 3
-TP_CROP_GTHARMMEANS4;Harmonic means 4
+TP_CROP_GTHARMMEANS1;Harmoniskt medel 1
+TP_CROP_GTHARMMEANS2;Harmoniskt medel 2
+TP_CROP_GTHARMMEANS3;Harmoniskt medel 3
+TP_CROP_GTHARMMEANS4;Harmoniskt medel 4
TP_CROP_GTNONE;Ingen
TP_CROP_GTRULETHIRDS;Tredjedelsregeln
TP_CROP_GUIDETYPE;Guidetyp:
TP_CROP_H;H
TP_CROP_LABEL;Beskär
-TP_CROP_SELECTCROP; Välj beskärningsområde
+TP_CROP_SELECTCROP;Välj beskärningsområde
TP_CROP_W;B
TP_CROP_X;x
TP_CROP_Y;y
+TP_DETAIL_AMOUNT;Mängd
+TP_DIRPYRDENOISE_CHROMA;Krominans
+TP_DIRPYRDENOISE_GAMMA;Gamma
+TP_DIRPYRDENOISE_LUMA;Luminans
+TP_DIRPYREQUALIZER_LUMACOARSEST;Grovast
+TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Minska kontrasten
+TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Öka kontrasten
+TP_DIRPYREQUALIZER_LUMAFINEST;Finaste
+TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutralt
+TP_DIRPYREQUALIZER_THRESHOLD;Tröskelvärde
TP_DISTORTION_AMOUNT;Mängd
TP_DISTORTION_LABEL;Distorsion
+TP_EQUALIZER_CONTRAST_MINUS;Minska kontrasten
+TP_EQUALIZER_CONTRAST_PLUS;Öka kontrasten
+TP_EQUALIZER_FINEST;Finast
+TP_EQUALIZER_LABEL;Waveletequalizer
+TP_EQUALIZER_LARGEST;Grovast
+TP_EQUALIZER_NEUTRAL;Neutral
TP_EXPOSURE_AUTOLEVELS;Autonivåer
-TP_EXPOSURE_BLACKLEVEL;Svart
+TP_EXPOSURE_BLACKLEVEL;Svärta
TP_EXPOSURE_BRIGHTNESS;Ljusstyrka
-TP_EXPOSURE_CLIP;Clip
+TP_EXPOSURE_CLIP;Klippnivå
TP_EXPOSURE_COMPRHIGHLIGHTS;Högdagerkomprimering
TP_EXPOSURE_COMPRSHADOWS;Skuggkomprimering
TP_EXPOSURE_CONTRAST;Kontrast
TP_EXPOSURE_CURVEEDITOR;Tonkurva
-TP_EXPOSURE_EXPCOMP;Exp. Comp.
+TP_EXPOSURE_EXPCOMP;Exponeringskompensation
TP_EXPOSURE_LABEL;Exponering
-TP_HLREC_CIELAB;CIELab Blending
+TP_HLREC_CIELAB;CIELab mix
TP_HLREC_COLOR;Färgspridning
-TP_HLREC_LABEL;Högdager-förbättring
+TP_HLREC_LABEL;Högdagerförbättring
TP_HLREC_LUMINANCE;Bättring av luminans
TP_HLREC_METHOD;Metod:
TP_ICM_FILEDLGFILTERANY;Vilka filer som helst
TP_ICM_FILEDLGFILTERICM;ICC profilfiler
-TP_ICM_GAMMABEFOREINPUT;Profile applies Gamma
+TP_ICM_GAMMABEFOREINPUT;Profilapplicerad gamma
TP_ICM_INPUTCAMERA;Kameraval
TP_ICM_INPUTCUSTOM;Egen
TP_ICM_INPUTDLGLABEL;Välj inmatnings ICC-profil...
@@ -523,9 +590,19 @@ TP_ICM_LABEL;ICM
TP_ICM_NOICM;Ingen ICM: sRGB-utmatning
TP_ICM_OUTPUTDLGLABEL;Välj utmatnings ICC-profil...
TP_ICM_OUTPUTPROFILE;Utmatningsprofil
-TP_ICM_SAVEREFERENCE;Save reference image for profiling
+TP_ICM_SAVEREFERENCE;Spara referensbild för profilering
TP_ICM_WORKINGPROFILE;Arbetsprofil
-TP_LUMACURVE_BLACKLEVEL;Svart
+TP_IMPULSEDENOISE_LABEL;Brusreducering, stegsvar
+TP_IMPULSEDENOISE_THRESH;Tröskelvärde
+TP_LABCURVE_BRIGHTNESS;Ljushet
+TP_LABCURVE_CONTRAST;Kontrast
+TP_LABCURVE_CURVEEDITOR;Luminanskurva
+TP_LABCURVE_LABEL;Labkurvor
+TP_LABCURVE_SATURATION;Mättnad
+TP_LENSGEOM_AUTOCROP;Autobeskärning
+TP_LENSGEOM_FILL;Fyll automatiskt
+TP_LENSGEOM_LABEL;Geometri- och distorsionskorrigering
+TP_LUMACURVE_BLACKLEVEL;Svärta
TP_LUMACURVE_BRIGHTNESS;Ljusstyrka
TP_LUMACURVE_COMPRHIGHLIGHTS;Högdagerkomprimering
TP_LUMACURVE_COMPRSHADOWS;Skuggkomprimering
@@ -533,57 +610,65 @@ TP_LUMACURVE_CONTRAST;Kontrast
TP_LUMACURVE_CURVEEDITOR;Luminanskurva
TP_LUMACURVE_LABEL;Luminanskurva
TP_LUMADENOISE_EDGETOLERANCE;Kanttolerans
-TP_LUMADENOISE_LABEL;Luminans-brusreducering
+TP_LUMADENOISE_LABEL;Reducering av luminansbrus
TP_LUMADENOISE_RADIUS;Radie
-TP_RESIZE_BICUBIC;Bicubic
-TP_RESIZE_BICUBICSF;Bicubic (Mjukare)
-TP_RESIZE_BICUBICSH;Bicubic (Skarpare)
+TP_PERSPECTIVE_HORIZONTAL;Horisontell
+TP_PERSPECTIVE_LABEL;Perspektiv
+TP_PERSPECTIVE_VERTICAL;Vertikal
+TP_RESIZE_BICUBIC;Bikubisk
+TP_RESIZE_BICUBICSF;Bikubisk (Mjukare)
+TP_RESIZE_BICUBICSH;Bikubisk (Skarpare)
TP_RESIZE_BILINEAR;Bilinjär
+TP_RESIZE_DOWNSCALEB;Nedsampla (Bättre)
+TP_RESIZE_DOWNSCALEF;Skala ned (Snabbare)
TP_RESIZE_FULLSIZE;Full bildstorlek:
TP_RESIZE_H;H:
+TP_RESIZE_HEIGHT;Höjd
TP_RESIZE_LABEL;Ändra storlek
TP_RESIZE_METHOD;Metod:
TP_RESIZE_NEAREST;Närmast
TP_RESIZE_SCALE;Skala
+TP_RESIZE_SPECIFY;Specificera:
TP_RESIZE_W;B:
+TP_RESIZE_WIDTH;Bredd
TP_ROTATE_AUTOCROP;Autobeskär
TP_ROTATE_DEGREE;Antal grader
TP_ROTATE_FILL;Fyll
TP_ROTATE_LABEL;Räta ut
-TP_ROTATE_SELECTLINE; Välj rak linje
+TP_ROTATE_SELECTLINE;Välj rak linje
TP_SHADOWSHLIGHTS_HIGHLIGHTS;Högdager
-TP_SHADOWSHLIGHTS_HLTONALW;Tonvidd
-TP_SHADOWSHLIGHTS_LABEL;Skuggor/högdager
-TP_SHADOWSHLIGHTS_LOCALCONTR;Lokal konstrast
+TP_SHADOWSHLIGHTS_HLTONALW;Tonvidd (Högdagrar)
+TP_SHADOWSHLIGHTS_LABEL;Skuggor/högdagrar
+TP_SHADOWSHLIGHTS_LOCALCONTR;Lokal kontrast
TP_SHADOWSHLIGHTS_RADIUS;Radie
TP_SHADOWSHLIGHTS_SHADOWS;Skuggor
-TP_SHADOWSHLIGHTS_SHTONALW;Tonvidd
+TP_SHADOWSHLIGHTS_SHTONALW;Tonvidd (Skuggor)
TP_SHARPENING_AMOUNT;Mängd
TP_SHARPENING_EDRADIUS;Radie
TP_SHARPENING_EDTOLERANCE;Kanttolerans
-TP_SHARPENING_HALOCONTROL;Halo-kontrol
+TP_SHARPENING_HALOCONTROL;Halo-kontroll
TP_SHARPENING_HCAMOUNT;Mängd
TP_SHARPENING_LABEL;Skärpa
TP_SHARPENING_METHOD;Metod
TP_SHARPENING_ONLYEDGES;Skärp bara kanter
TP_SHARPENING_RADIUS;Radie
-TP_SHARPENING_RLD;RL Deconvolution
+TP_SHARPENING_RLD;RL-dekonvolution
TP_SHARPENING_RLD_AMOUNT;Mängd
TP_SHARPENING_RLD_DAMPING;Dämpning
TP_SHARPENING_RLD_ITERATIONS;Upprepningar
TP_SHARPENING_THRESHOLD;Tröskelvärde
TP_SHARPENING_USM;Oskarp mask
TP_VIGNETTING_AMOUNT;Mängd
-TP_VIGNETTING_LABEL;Vinjettering-korrigering
+TP_VIGNETTING_LABEL;Vinjetteringskorrigering
TP_VIGNETTING_RADIUS;Radie
TP_WBALANCE_AUTO;Auto
TP_WBALANCE_CAMERA;Kamera
TP_WBALANCE_CUSTOM;Egen
-TP_WBALANCE_GREEN;Nyans
+TP_WBALANCE_GREEN;Färgton
TP_WBALANCE_LABEL;Vitbalans
TP_WBALANCE_METHOD;Metod
TP_WBALANCE_SIZE;Storlek:
-TP_WBALANCE_SPOTWB;Punkt VB
+TP_WBALANCE_SPOTWB;Vitbalansväljare
TP_WBALANCE_TEMPERATURE;Temperatur
ZOOMBAR_DETAIL;Lupp
ZOOMBAR_HUGE;Enorm
@@ -592,6 +677,12 @@ ZOOMBAR_NORMAL;Normal
ZOOMBAR_PREVIEW;Förhandsvisning
ZOOMBAR_SCALE;Skala
ZOOMBAR_SMALL;Liten
+ZOOMPANEL_100;(100%)
+ZOOMPANEL_NEWCROPWINDOW;Öppna (nytt) detaljfönster
+ZOOMPANEL_ZOOM100;Zooma till 100% 1
+ZOOMPANEL_ZOOMFITSCREEN;Passa till skärmenF
+ZOOMPANEL_ZOOMIN;Zooma in +
+ZOOMPANEL_ZOOMOUT;Zooma ut -
!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -599,106 +690,43 @@ ZOOMBAR_SMALL;Liten
!!!!!!!!!!!!!!!!!!!!!!!!!
-!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
-!CURVEEDITOR_CUSTOM;Custom
-!CURVEEDITOR_DARKS;Darks
-!CURVEEDITOR_HIGHLIGHTS;Highlights
-!CURVEEDITOR_LIGHTS;Lights
!CURVEEDITOR_NURBS;Control cage
-!CURVEEDITOR_PARAMETRIC;Parametric
-!CURVEEDITOR_SHADOWS;Shadows
-!CURVEEDITOR_TYPE;Type:
-!EXIFFILTER_METADATAFILTER;Enable Metadata Filters
-!FILEBROWSER_ADDDELTEMPLATE;Add/Del templates...
-!FILEBROWSER_CURRENT_NAME;Current name:
-!FILEBROWSER_NEW_NAME;New name:
-!FILEBROWSER_SHOWEXIFINFO;Show EXIF info i
-!FILEBROWSER_TOOLTIP_STOPPROCESSING;Start processing automatically when a new job arrives
-!FILEBROWSER_USETEMPLATE;Use template:
-!GENERAL_AFTER;After
-!GENERAL_BEFORE;Before
-!GENERAL_HIGH_QUALITY;High Quality
-!GENERAL_UNCHANGED;(Unchanged)
-!HISTOGRAM_BUTTON_B;B
-!HISTOGRAM_BUTTON_G;G
-!HISTOGRAM_BUTTON_L;L
-!HISTOGRAM_BUTTON_R;R
-!HISTORY_MSG_82;Profile Changed
-!HISTORY_MSG_83;High quality shadows/highlights
-!HISTORY_MSG_84;Perspective correction
-!HISTORY_MSG_85;Wavelet coefficients
-!HISTORY_MSG_86;Wavelet equalizer
-!HISTORY_MSG_87;Impulse noise reduction
+!HISTORY_MSG_78;Data specified for resize
!HISTORY_MSG_89;Directional pyramid
!HISTORY_MSG_90;Directional pyramid luminance
!HISTORY_MSG_91;Directional pyramid chominance
!HISTORY_MSG_92;Directional pyramid gamma
-!MAIN_BUTTON_FULLSCREEN;Fullscreen
-!MAIN_BUTTON_PUTTOQUEUE;Put to queue
-!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Add current image to processing queue Ctrl+Q
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image Ctrl+S
-!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor Ctrl+E
-!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen
-!MAIN_MSG_ERRORDURINGIMAGESAVING;Error during image saving
-!MAIN_MSG_NAVIGATOR;Navigator
-!MAIN_MSG_PLACES;Places
-!MAIN_TOGGLE_BEFORE_AFTER;B|A
-!MAIN_TOOLTIP_TOGGLE;Toggle before/after view B
-!NAVIGATOR_B_NA;B = n/a
-!NAVIGATOR_B_VALUE;B = %1
-!NAVIGATOR_G_NA;G = n/a
-!NAVIGATOR_G_VALUE;G = %1
-!NAVIGATOR_H_NA;H = n/a
-!NAVIGATOR_H_VALUE;H = %1
-!NAVIGATOR_R_NA;R = n/a
-!NAVIGATOR_R_VALUE;R = %1
-!NAVIGATOR_S_NA;S = n/a
-!NAVIGATOR_S_VALUE;S = %1
-!NAVIGATOR_V_NA;V = n/a
-!NAVIGATOR_V_VALUE;V = %1
-!NAVIGATOR_XY_NA;x = n/a, y = n/a
-!PREFERENCES_ADD;ADD
-!PREFERENCES_BATCH_PROCESSING;batch processing
-!PREFERENCES_BEHAVIOR;Behavior
-!PREFERENCES_CACORRECTION;Apply CA auto correction
-!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
-!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!IPTCPANEL_AUTHORSPOSITION;Author's position
+!IPTCPANEL_AUTHORSPOSITIONHINT;Title of the creator or creators of the object (By-line Title).
+!IPTCPANEL_CAPTION;Caption
+!IPTCPANEL_CAPTIONHINT;A textual description of the data (Caption - Abstract).
+!IPTCPANEL_CAPTIONWRITER;Caption Writer
+!IPTCPANEL_CAPTIONWRITERHINT;The name of the person involved in the writing, editing or correcting the image or caption/abstract (Writer - Editor).
+!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider (Category).
+!IPTCPANEL_CITYHINT;City of image origin (City).
+!IPTCPANEL_COPYHINT;Copy IPTC settings to clipboard
+!IPTCPANEL_COPYRIGHT;Copyright
+!IPTCPANEL_COPYRIGHTHINT;Any necessary copyright notice (Copyright Notice).
+!IPTCPANEL_COUNTRYHINT;The name of the country/primary location where the image was created (Country - Primary Location Name).
+!IPTCPANEL_CREDIT;Credit
+!IPTCPANEL_CREDITHINT;Identifies the provider of the image, not necessarily the owner/creator (Credit).
+!IPTCPANEL_DATECREATED;Date Created
+!IPTCPANEL_DATECREATEDHINT;The date the intellectual content of the image was created; Format: JJJJMMTT (Date Created).
+!IPTCPANEL_EMBEDDEDHINT;Reset to IPTC data embedded in the image file
+!IPTCPANEL_HEADLINE;Headline
+!IPTCPANEL_HEADLINEHINT;A publishable entry providing a synopsis of the contents of the image (Headline).
+!IPTCPANEL_INSTRUCTIONSHINT;Other editorial instructions concerning the use of the image (Special Instructions).
+!IPTCPANEL_KEYWORDSHINT;Used to indicate specific information retrieval words (Keywords).
+!IPTCPANEL_PASTEHINT;Paste IPTC settings from clipboard
+!IPTCPANEL_PROVINCE;Province
+!IPTCPANEL_PROVINCEHINT;The Province/State where the image originates (Province-State).
+!IPTCPANEL_SOURCEHINT;The original owner of the intellectual content of the image (Source).
+!IPTCPANEL_SUPPCATEGORIES;Suppl. Categories
+!IPTCPANEL_SUPPCATEGORIESHINT;Further refines the subject of the image (Supplemental Categories).
+!IPTCPANEL_TITLEHINT;A shorthand reference for the image (Object Name).
+!IPTCPANEL_TRANSREFERENCE;Trans. Reference
+!IPTCPANEL_TRANSREFERENCEHINT;A code representing the location of original transmission (Original Transmission Reference).
!PREFERENCES_GREENEQUIL;Green equilibration
-!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
-!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
-!PREFERENCES_PROPERTY;Property
-!PREFERENCES_SET;SET
-!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
-!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
-!TP_DETAIL_AMOUNT;Amount
-!TP_DIRPYRDENOISE_CHROMA;Chrominance
-!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
-!TP_DIRPYRDENOISE_LUMA;Luminance
-!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
-!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
-!TP_EQUALIZER_FINEST;finest
-!TP_EQUALIZER_LABEL;Wavelet equalizer
-!TP_EQUALIZER_LARGEST;coarsest
-!TP_EQUALIZER_NEUTRAL;Neutral
-!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
-!TP_IMPULSEDENOISE_THRESH;Threshold
-!TP_LENSGEOM_AUTOCROP;Auto Crop
-!TP_LENSGEOM_FILL;Auto Fill
-!TP_LENSGEOM_LABEL;Lens / Geometry
-!TP_PERSPECTIVE_HORIZONTAL;Horizontal
-!TP_PERSPECTIVE_LABEL;Perspective
-!TP_PERSPECTIVE_VERTICAL;Vertical
-!TP_RESIZE_DOWNSCALEB;Downscale (Better)
-!TP_RESIZE_DOWNSCALEF;Downscale (Faster)
-!TP_RESIZE_HEIGHT;Height
-!TP_RESIZE_SPECIFY;Specify:
-!TP_RESIZE_WIDTH;Width
-!ZOOMPANEL_100;(100%)
-!ZOOMPANEL_NEWCROPWINDOW;Open (new) detail window
-!ZOOMPANEL_ZOOM100;Zoom to 100% 1
-!ZOOMPANEL_ZOOMFITSCREEN;Fit to screen F
-!ZOOMPANEL_ZOOMIN;Zoom In +
-!ZOOMPANEL_ZOOMOUT;Zoom Out -
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish
index e9c6de3c6..dddc8e31f 100644
--- a/rtdata/languages/Turkish
+++ b/rtdata/languages/Turkish
@@ -600,7 +600,7 @@ ZOOMBAR_SMALL;Küçük
!BATCHQUEUE_AUTOSTART;Auto start
-!BATCH_PROCESSING;batch processing
+!BATCH_PROCESSING;Batch processing
!CURVEEDITOR_CUSTOM;Custom
!CURVEEDITOR_DARKS;Darks
!CURVEEDITOR_HIGHLIGHTS;Highlights
@@ -651,6 +651,12 @@ ZOOMBAR_SMALL;Küçük
!NAVIGATOR_G_VALUE;G = %1
!NAVIGATOR_H_NA;H = n/a
!NAVIGATOR_H_VALUE;H = %1
+!NAVIGATOR_LAB_A_NA;A = n/a
+!NAVIGATOR_LAB_A_VALUE;A = %1
+!NAVIGATOR_LAB_B_NA;B = n/a
+!NAVIGATOR_LAB_B_VALUE;B = %1
+!NAVIGATOR_LAB_L_NA;L = n/a
+!NAVIGATOR_LAB_L_VALUE;L = %1
!NAVIGATOR_R_NA;R = n/a
!NAVIGATOR_R_VALUE;R = %1
!NAVIGATOR_S_NA;S = n/a
@@ -658,25 +664,41 @@ ZOOMBAR_SMALL;Küçük
!NAVIGATOR_V_NA;V = n/a
!NAVIGATOR_V_VALUE;V = %1
!NAVIGATOR_XY_NA;x = n/a, y = n/a
+!PARTIALPASTE_LABCURVE;Lab curve
+!PARTIALPASTE_LABCURVE;Luminance curve
!PREFERENCES_ADD;ADD
!PREFERENCES_BATCH_PROCESSING;batch processing
!PREFERENCES_BEHAVIOR;Behavior
!PREFERENCES_CACORRECTION;Apply CA auto correction
!PREFERENCES_DCBENHANCE;Apply DCB enhancement step
!PREFERENCES_DCBITERATIONS;Number of DCB iterations
+!PREFERENCES_DMETHODBATCH;Batch
+!PREFERENCES_EDITORLAYOUT;Editor Layout
!PREFERENCES_GREENEQUIL;Green equilibration
!PREFERENCES_HOTDEADPIXFILT;Apply hot/dead pixel filter
!PREFERENCES_LINEDENOISE;Line noise filter
+!PREFERENCES_MULTITAB;Multiple tabs mode
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
!PREFERENCES_PROPERTY;Property
+!PREFERENCES_SELECTFONT;Select font
!PREFERENCES_SET;SET
+!PREFERENCES_SINGLETAB;Single tab mode
+!PREFERENCES_USESYSTEMTHEME; Use System Theme
+!PREFERENCES_WORKFLOW;Workflow
!PROGRESSDLG_PROFILECHANGEDINBROWSER;Profile changed in browser
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!TP_DETAIL_AMOUNT;Amount
!TP_DIRPYRDENOISE_CHROMA;Chrominance
!TP_DIRPYRDENOISE_GAMMA;Gamma
-!TP_DIRPYRDENOISE_LABEL;Directional Pyramid Noise Reduction
+!TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
!TP_DIRPYRDENOISE_LUMA;Luminance
+!TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
+!TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
+!TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
+!TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
+!TP_DIRPYREQUALIZER_LUMAFINEST;Finest
+!TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
+!TP_DIRPYREQUALIZER_THRESHOLD;Threshold
!TP_EQUALIZER_CONTRAST_MINUS;Contrast-
!TP_EQUALIZER_CONTRAST_PLUS;Contrast+
!TP_EQUALIZER_FINEST;finest
@@ -685,6 +707,11 @@ ZOOMBAR_SMALL;Küçük
!TP_EQUALIZER_NEUTRAL;Neutral
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
+!TP_LABCURVE_BRIGHTNESS;Brightness
+!TP_LABCURVE_CONTRAST;Contrast
+!TP_LABCURVE_CURVEEDITOR;Luminance Curve
+!TP_LABCURVE_LABEL;Lab Curves
+!TP_LABCURVE_SATURATION;Saturation
!TP_LENSGEOM_AUTOCROP;Auto Crop
!TP_LENSGEOM_FILL;Auto Fill
!TP_LENSGEOM_LABEL;Lens / Geometry
diff --git a/rtdata/languages/default b/rtdata/languages/default
index 236d23aa8..72a1b51ad 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -2,7 +2,7 @@
#01 Developers should add translations to this file and then run 'generateDifferences.sh' script to update other locales.
ADJUSTER_RESET_TO_DEFAULT;Reset to default
BATCHQUEUE_AUTOSTART;Auto start
-BATCH_PROCESSING;batch processing
+BATCH_PROCESSING;Batch processing
CURVEEDITOR_CUSTOM;Custom
CURVEEDITOR_DARKS;Darks
CURVEEDITOR_FILEDLGFILTERANY;Any files
@@ -345,6 +345,12 @@ NAVIGATOR_G_NA;G = n/a
NAVIGATOR_G_VALUE;G = %1
NAVIGATOR_H_NA;H = n/a
NAVIGATOR_H_VALUE;H = %1
+NAVIGATOR_LAB_A_NA;A = n/a
+NAVIGATOR_LAB_A_VALUE;A = %1
+NAVIGATOR_LAB_B_NA;B = n/a
+NAVIGATOR_LAB_B_VALUE;B = %1
+NAVIGATOR_LAB_L_NA;L = n/a
+NAVIGATOR_LAB_L_VALUE;L = %1
NAVIGATOR_R_NA;R = n/a
NAVIGATOR_R_VALUE;R = %1
NAVIGATOR_S_NA;S = n/a
@@ -369,8 +375,9 @@ PARTIALPASTE_EXPOSURE;Exposure
PARTIALPASTE_HLRECOVERY;Highlight recovery
PARTIALPASTE_ICMSETTINGS;ICM settings
PARTIALPASTE_IPTCINFO;IPTC info
+PARTIALPASTE_LABCURVE;Lab curve
+PARTIALPASTE_LABCURVE;Luminance curve
PARTIALPASTE_LENSGROUP;Lens related settings
-PARTIALPASTE_LUMACURVE;Luminance curve
PARTIALPASTE_LUMADENOISE;Luminance noise reduction
PARTIALPASTE_LUMINANCEGROUP;Luminance related settings
PARTIALPASTE_METAICMGROUP;Metadata/ICM settings
@@ -381,7 +388,7 @@ PARTIALPASTE_SHARPENING;Sharpening
PARTIALPASTE_VIGNETTING;Vignetting correction
PARTIALPASTE_WHITEBALANCE;White balance
PREFERENCES_ADD;ADD
-PREFERENCES_APPLNEXTSTARTUP;applied at next startup
+PREFERENCES_APPLNEXTSTARTUP;restart required
PREFERENCES_BATCH_PROCESSING;batch processing
PREFERENCES_BEHAVIOR;Behavior
PREFERENCES_BLINKCLIPPED;Blink clipped areas
@@ -398,9 +405,6 @@ PREFERENCES_CACHESTRAT;Cache Strategy
PREFERENCES_CACHETHUMBFORM;Cache Thumbnail Format
PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height
PREFERENCES_CACORRECTION;Apply CA auto correction
-PREFERENCES_CLEARDLG_LINE1;Clearing cache
-PREFERENCES_CLEARDLG_LINE2;This may take a few seconds.
-PREFERENCES_CLEARDLG_TITLE;Please wait
PREFERENCES_CLIPPINGIND;Clipping indication
PREFERENCES_CMETRICINTENT;Colorimetric Intent
PREFERENCES_DARKFRAME;Dark frame
@@ -417,8 +421,10 @@ PREFERENCES_DIRLAST;Last visited directory
PREFERENCES_DIROTHER;Other
PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup...
PREFERENCES_DIRSOFTWARE;Installation directory
-PREFERENCES_DMETHOD;Method
+PREFERENCES_DMETHOD;Preview
+PREFERENCES_DMETHODBATCH;Batch
PREFERENCES_EDITORCMDLINE;Other command line
+PREFERENCES_EDITORLAYOUT;Editor Layout
PREFERENCES_EXTERNALEDITOR;External editor
PREFERENCES_FALSECOLOR;False color suppression steps
PREFERENCES_FBROWSEROPTS;File Browser Options
@@ -440,12 +446,13 @@ PREFERENCES_INTENT_SATURATION;Saturation
PREFERENCES_LINEDENOISE;Line noise filter
PREFERENCES_LIVETHUMBNAILS;Live Thumbnails (slower)
PREFERENCES_MONITORICC;Monitor Profile
+PREFERENCES_MULTITAB;Multiple tabs mode
PREFERENCES_OUTDIR;Output Directory
PREFERENCES_OUTDIRFOLDER;Save to folder
PREFERENCES_OUTDIRFOLDERHINT;Put the saved images to the selected folder
-PREFERENCES_OUTDIRHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nThese formatting strings refer to the directories and sub-paths of the path of the raw file.\n\nFor example, if /home/tom/image/02-09-2006/dsc0012.nefhas been opened, the meaning of the formatting strings are:\n%f=dsc0012, %d1=02-09-2006, %d2=image, ...\n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, %p3=/home/tom, ...\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory 'converted' located the directory of the original, write:\n%p1/converted/%f\n\nIf you want to save the output image in directory '/home/tom/converted' with keeping the same subdirectory of dates, write:\n%p2/converted/%d1/%f
+PREFERENCES_OUTDIRHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nThese formatting strings refer to the different parts of the photo's pathname.\n\nFor example, if the photo being processed has the following pathname:\n/home/tom/photos/2010-10-31/dsc0042.nef\nthe meaning of the formatting strings are:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2010-10-31\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:\n%p1/converted/%f\n\nIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:\n%p2/converted/%d1/%f
PREFERENCES_OUTDIRTEMPLATE;Use Template
-PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nThese formatting strings refer to the directories and sub-paths of the path of the raw file.\n\nFor example, if /home/tom/image/02-09-2006/dsc0012.nefhas been opened, the meaning of the formatting strings are:\n%f=dsc0012, %d1=02-09-2006, %d2=image, ...\n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, %p3=/home/tom, ...\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory 'converted' located the directory of the original, write:\n%p1/converted/%f\n\nIf you want to save the output image in directory '/home/tom/converted' with keeping the same subdirectory of dates, write:\n%p2/converted/%d1/%f
+PREFERENCES_OUTDIRTEMPLATEHINT;You can use the following formatting strings:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nThese formatting strings refer to the different parts of the photo's pathname.\n\nFor example, if the photo being processed has the following pathname:\n/home/tom/photos/2010-10-31/dsc0042.nef\nthe meaning of the formatting strings are:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2010-10-31\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\nIf you want to save the output image where the original is, write:\n%p1/%f\n\nIf you want to save the output image in a directory named "converted" located in the directory of the opened image, write:\n%p1/converted/%f\n\nIf you want to save the output image in a directory named "/home/tom/photos/converted/2010-10-31", write:\n%p2/converted/%d1/%f
PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails
PREFERENCES_PARSEDEXT;Parsed Extensions
PREFERENCES_PARSEDEXTADD;Add Extension
@@ -459,6 +466,7 @@ PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache
PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File
PREFERENCES_PROPERTY;Property
PREFERENCES_PSPATH;Adobe Photoshop installation directory
+PREFERENCES_SELECTFONT;Select font
PREFERENCES_SELECTICCDIRDLG;Select ICC Profile Directory...
PREFERENCES_SELECTLANG;Select language
PREFERENCES_SELECTMONITORPROFDLG;Select ICC Profile of the Display...
@@ -468,6 +476,7 @@ PREFERENCES_SHOWBASICEXIF;Show basic Exif info
PREFERENCES_SHOWDATETIME;Show date and time
PREFERENCES_SHOWONLYRAW;Show only RAW files
PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows
+PREFERENCES_SINGLETAB;Single tab mode
PREFERENCES_STARTUPIMDIR;Image directory at startup
PREFERENCES_TAB_BROWSER;File Browser
PREFERENCES_TAB_COLORMGR;Color Management
@@ -475,6 +484,8 @@ PREFERENCES_TAB_GENERAL;General
PREFERENCES_TAB_IMPROC;Image Processing
PREFERENCES_TAB_OUTPUT;Output Options
PREFERENCES_THUMBSIZE;Thumbnail Size
+PREFERENCES_USESYSTEMTHEME; Use System Theme
+PREFERENCES_WORKFLOW;Workflow
PROFILEPANEL_FILEDLGFILTERANY;Any files
PROFILEPANEL_FILEDLGFILTERPP;Postprocessing profiles
PROFILEPANEL_LABEL;Postprocessing Profiles
@@ -575,12 +586,12 @@ TP_DIRPYRDENOISE_CHROMA;Chrominance
TP_DIRPYRDENOISE_GAMMA;Gamma
TP_DIRPYRDENOISE_LABEL;Directional pyramid noise reduction
TP_DIRPYRDENOISE_LUMA;Luminance
+TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
TP_DIRPYREQUALIZER_LUMACOARSEST;Coarsest
TP_DIRPYREQUALIZER_LUMACONTRAST_MINUS;Contrast-
TP_DIRPYREQUALIZER_LUMACONTRAST_PLUS;Contrast+
TP_DIRPYREQUALIZER_LUMAFINEST;Finest
TP_DIRPYREQUALIZER_LUMANEUTRAL;Neutral
-TP_DIRPYREQUALIZER_LABEL;Directional pyramid equalizer
TP_DIRPYREQUALIZER_THRESHOLD;Threshold
TP_DISTORTION_AMOUNT;Amount
TP_DISTORTION_LABEL;Distortion
@@ -594,15 +605,15 @@ TP_EXPOSURE_AUTOLEVELS;Auto Levels
TP_EXPOSURE_BLACKLEVEL;Black
TP_EXPOSURE_BRIGHTNESS;Brightness
TP_EXPOSURE_CLIP;Clip
-TP_EXPOSURE_COMPRHIGHLIGHTS;Highlight compression
-TP_EXPOSURE_COMPRSHADOWS;Shadow compression
+TP_EXPOSURE_COMPRHIGHLIGHTS;Highlight recovery
+TP_EXPOSURE_COMPRSHADOWS;Shadow recovery
TP_EXPOSURE_CONTRAST;Contrast
TP_EXPOSURE_CURVEEDITOR;Tone Curve
TP_EXPOSURE_EXPCOMP;Exp. Comp.
TP_EXPOSURE_LABEL;Exposure
TP_HLREC_CIELAB;CIELab Blending
TP_HLREC_COLOR;Color Propagation
-TP_HLREC_LABEL;Highlight Recovery
+TP_HLREC_LABEL;Highlight Reconstruction
TP_HLREC_LUMINANCE;Luminance Recovery
TP_HLREC_METHOD;Method:
TP_ICM_FILEDLGFILTERANY;Any files
@@ -621,16 +632,14 @@ TP_ICM_SAVEREFERENCE;Save reference image for profiling
TP_ICM_WORKINGPROFILE;Working Profile
TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
TP_IMPULSEDENOISE_THRESH;Threshold
+TP_LABCURVE_BRIGHTNESS;Brightness
+TP_LABCURVE_CONTRAST;Contrast
+TP_LABCURVE_CURVEEDITOR;Luminance Curve
+TP_LABCURVE_LABEL;Lab Curves
+TP_LABCURVE_SATURATION;Saturation
TP_LENSGEOM_AUTOCROP;Auto Crop
TP_LENSGEOM_FILL;Auto Fill
TP_LENSGEOM_LABEL;Lens / Geometry
-TP_LUMACURVE_BLACKLEVEL;Black
-TP_LUMACURVE_BRIGHTNESS;Brightness
-TP_LUMACURVE_COMPRHIGHLIGHTS;Highlight compression
-TP_LUMACURVE_COMPRSHADOWS;Shadow compression
-TP_LUMACURVE_CONTRAST;Contrast
-TP_LUMACURVE_CURVEEDITOR;Luminance Curve
-TP_LUMACURVE_LABEL;Luminance Curve
TP_LUMADENOISE_EDGETOLERANCE;Edge Tolerance
TP_LUMADENOISE_LABEL;Luminance Noise Reduction
TP_LUMADENOISE_RADIUS;Radius
@@ -683,6 +692,10 @@ TP_SHARPENING_USM;Unsharp Mask
TP_VIGNETTING_AMOUNT;Amount
TP_VIGNETTING_LABEL;Vignetting Correction
TP_VIGNETTING_RADIUS;Radius
+TP_VIGNETTING_STRENGTH;Strength
+TP_VIGNETTING_CENTER_X;Center X
+TP_VIGNETTING_CENTER_Y;Center Y
+TP_VIGNETTING_CENTER;Center
TP_WBALANCE_AUTO;Auto
TP_WBALANCE_CAMERA;Camera
TP_WBALANCE_CUSTOM;Custom
diff --git a/rtdata/options/options.lin b/rtdata/options/options.lin
index aa64fe988..02016e9e4 100644
--- a/rtdata/options/options.lin
+++ b/rtdata/options/options.lin
@@ -1,5 +1,6 @@
[General]
+TabbedEditor=true
StoreLastProfile=true
StartupDirectory=last
StartupPath=
@@ -9,6 +10,7 @@ DualProcSupport=true
MultiUser=true
Language=English (US)
Theme=Gray
+UseSystemTheme=false
Version=300
FirstRun=true
@@ -39,6 +41,9 @@ RenameUseTemplates=false
ThumbnailZoomRatios=0.2;0.3;0.45;0.6;0.8;1;
OverlayedFileNames=true
+# if TRUE, only fast, internal preview images are taken if the image is not edited yet
+InternalThumbIfUntouched=true
+
[Clipping Indication]
HighlightThreshold=253
ShadowThreshold=8
@@ -56,6 +61,9 @@ PathFolder=
UsePathTemplate=true
LastSaveAsPath=
+# if TRUE, existing output JPGs/PNGs are overwritten, instead of adding ..-1.jpg, -2.jpg etc.
+OverwriteOutputFile=false
+
[Profiles]
Directory=profiles
RawDefault=default
@@ -85,6 +93,7 @@ ToolPanelsExpanded=1;1;0;0;0;1;1;0;0;0;0;1;1;0;0;0;0;0;
[Algorithms]
DemosaicMethod=hphd
+DemosaicMethodBatch=hphd
ColorCorrection=1
[Crop Settings]
diff --git a/rtdata/options/options.osx b/rtdata/options/options.osx
index a7c5e6ec3..f05215ae6 100644
--- a/rtdata/options/options.osx
+++ b/rtdata/options/options.osx
@@ -1,5 +1,6 @@
[General]
+TabbedEditor=true
StoreLastProfile=true
StartupDirectory=last
StartupPath=
@@ -9,6 +10,7 @@ DualProcSupport=true
MultiUser=true
Language=English (US)
Theme=Gray Textured
+UseSystemTheme=false
Version=300
FirstRun=true
@@ -39,6 +41,9 @@ RenameUseTemplates=false
ThumbnailZoomRatios=0.2;0.3;0.45;0.6;0.8;1;
OverlayedFileNames=true
+# if TRUE, only fast, internal preview images are taken if the image is not edited yet
+InternalThumbIfUntouched=true
+
[Clipping Indication]
HighlightThreshold=253
ShadowThreshold=8
@@ -56,6 +61,9 @@ PathFolder=
UsePathTemplate=true
LastSaveAsPath=
+# if TRUE, existing output JPGs/PNGs are overwritten, instead of adding ..-1.jpg, -2.jpg etc.
+OverwriteOutputFile=false
+
[Profiles]
Directory=profiles
RawDefault=default
@@ -85,6 +93,7 @@ ToolPanelsExpanded=1;1;0;0;0;1;1;0;0;0;0;1;1;0;0;0;0;0;
[Algorithms]
DemosaicMethod=hphd
+DemosaicMethodBatch=hphd
ColorCorrection=1
[Crop Settings]
diff --git a/rtdata/options/options.win b/rtdata/options/options.win
index f589ba814..8834ed124 100644
--- a/rtdata/options/options.win
+++ b/rtdata/options/options.win
@@ -1,5 +1,6 @@
[General]
+TabbedEditor=true
StoreLastProfile=true
StartupDirectory=last
StartupPath=
@@ -9,6 +10,7 @@ DualProcSupport=true
MultiUser=true
Language=English (US)
Theme=Gray
+UseSystemTheme=false
Version=300
FirstRun=true
@@ -39,6 +41,9 @@ RenameUseTemplates=false
ThumbnailZoomRatios=0.2;0.3;0.45;0.6;0.8;1;
OverlayedFileNames=true
+# if TRUE, only fast, internal preview images are taken if the image is not edited yet
+InternalThumbIfUntouched=true
+
[Clipping Indication]
HighlightThreshold=253
ShadowThreshold=8
@@ -56,6 +61,9 @@ PathFolder=
UsePathTemplate=true
LastSaveAsPath=
+# if TRUE, existing output JPGs/PNGs are overwritten, instead of adding ..-1.jpg, -2.jpg etc.
+OverwriteOutputFile=false
+
[Profiles]
Directory=profiles
RawDefault=default
@@ -85,6 +93,7 @@ ToolPanelsExpanded=1;1;0;0;0;1;1;0;0;0;0;1;1;0;0;0;0;0;
[Algorithms]
DemosaicMethod=hphd
+DemosaicMethodBatch=hphd
ColorCorrection=1
[Crop Settings]
diff --git a/rtdata/profiles/crisp.pp3 b/rtdata/profiles/crisp.pp3
index b49fe52b4..75b7910cc 100644
--- a/rtdata/profiles/crisp.pp3
+++ b/rtdata/profiles/crisp.pp3
@@ -1,16 +1,16 @@
[Version]
-Version=231
+Version=466
[Exposure]
Auto=true
-Clip=0.02
+Clip=0.001
Compensation=0
Brightness=0
Contrast=12
Black=0
-HighlightCompr=100
-ShadowCompr=100
+HighlightCompr=70
+ShadowCompr=25
Curve=1;0;0;1;1;
[Channel Mixer]
diff --git a/rtdata/profiles/default.pp3 b/rtdata/profiles/default.pp3
index a76f8d10c..fd8f1c188 100644
--- a/rtdata/profiles/default.pp3
+++ b/rtdata/profiles/default.pp3
@@ -1,16 +1,16 @@
[Version]
-Version=231
+Version=466
[Exposure]
Auto=true
-Clip=0.01
+Clip=0.001
Compensation=0
Brightness=0
Contrast=0
Black=0
-HighlightCompr=100
-ShadowCompr=100
+HighlightCompr=70
+ShadowCompr=25
Curve=1;0;0;1;1;
[Channel Mixer]
diff --git a/rtdata/profiles/neutral.pp3 b/rtdata/profiles/neutral.pp3
index 7d9000170..6c8070367 100644
--- a/rtdata/profiles/neutral.pp3
+++ b/rtdata/profiles/neutral.pp3
@@ -1,16 +1,16 @@
[Version]
-Version=231
+Version=466
[Exposure]
Auto=false
-Clip=0.01
+Clip=0.001
Compensation=0
Brightness=0
Contrast=0
Black=0
-HighlightCompr=100
-ShadowCompr=100
+HighlightCompr=70
+ShadowCompr=25
Curve=1;0;0;1;1;
[Channel Mixer]
diff --git a/rtdata/themes/ClearLooks (Dark Orange) b/rtdata/themes/ClearLooks (Dark Orange)
index dc86995e6..281bd7c01 100644
--- a/rtdata/themes/ClearLooks (Dark Orange)
+++ b/rtdata/themes/ClearLooks (Dark Orange)
@@ -21,9 +21,8 @@
# Color scheme contributed by Franco Gotusso based on Clearlooks-DarkCoffee by Chibi
# and edited by bvc as Clearlooks-DarkCoffee2. Downloaded from http://art.gnome.org/themes/gtk2/1065
-style "clearlooks-default"
-{
- font_name = "sans 8"
+style "clearlooks-default" {
+
GtkMenuItem::selected_shadow_type = none
GtkWidget::interior_focus = 1
GtkButton::default_border = { 3, 3, 3, 3 }
diff --git a/rtdata/themes/Dark b/rtdata/themes/Dark
index 3d1d6dded..06ddc5e25 100644
--- a/rtdata/themes/Dark
+++ b/rtdata/themes/Dark
@@ -23,10 +23,8 @@
# which is based on Bluecurve
# Created by Richard Stellingwerff, Emil Jacobs and Daniel Borgmann.
+style "clearlooks-default" {
-style "clearlooks-default"
-{
- font_name = "sans 8"
GtkButton ::default_border = { 0, 0, 0, 0 }
GtkComboBox ::default_border = { 0, 0, 0, 0 }
GtkRange ::trough_border = 0
diff --git a/rtdata/themes/Default b/rtdata/themes/Default
index 600eeefa2..92aa17c3a 100644
--- a/rtdata/themes/Default
+++ b/rtdata/themes/Default
@@ -23,10 +23,8 @@
# which is based on Bluecurve
# Created by Richard Stellingwerff, Emil Jacobs and Daniel Borgmann.
+style "clearlooks-default" {
-style "clearlooks-default"
-{
- font_name = "sans 8"
GtkButton ::default_border = { 0, 0, 0, 0 }
GtkRange ::trough_border = 0
GtkPaned ::handle_size = 6
diff --git a/rtdata/themes/Gray b/rtdata/themes/Gray
index 9a5cf0170..c43833218 100644
--- a/rtdata/themes/Gray
+++ b/rtdata/themes/Gray
@@ -17,9 +17,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-style "theme-default" {
-
- font_name = "sans 8"
+style "clearlooks-default" {
GtkButton ::default_border = { 0, 0, 0, 0 }
GtkRange ::trough_border = 1
@@ -65,31 +63,31 @@ style "theme-default" {
}
}
-style "theme-wide" = "theme-default" {
+style "clearlooks-wide" = "clearlooks-default" {
xthickness = 3
ythickness = 3
}
-style "theme-text" = "theme-default" {
+style "clearlooks-text" = "clearlooks-default" {
#base[SELECTED] = "#fc9747" # Outline?
}
-style "theme-toolbar" = "theme-default" {
+style "clearlooks-toolbar" = "clearlooks-default" {
bg[NORMAL] = "#A1A1A1"
}
-style "theme-tasklist" = "theme-default" {
+style "clearlooks-tasklist" = "clearlooks-default" {
xthickness = 5
ythickness = 3
}
-style "theme-menu" = "theme-default" {
+style "clearlooks-menu" = "clearlooks-default" {
xthickness = 2
ythickness = 2
bg[NORMAL] = "#A1A1A1"
}
-style "theme-menu-item" = "theme-default" {
+style "clearlooks-menu-item" = "clearlooks-default" {
xthickness = 1
ythickness = 1
fg[PRELIGHT] = "#ffffff"
@@ -97,60 +95,60 @@ style "theme-menu-item" = "theme-default" {
base[PRELIGHT] = "#A1A1A1"
}
-style "theme-menu-itembar" = "theme-default" {
+style "clearlooks-menu-itembar" = "clearlooks-default" {
xthickness = 0
ythickness = 0
}
-style "theme-tree" = "theme-default" {
+style "clearlooks-tree" = "clearlooks-default" {
xthickness = 2
ythickness = 2
GtkTreeView::odd_row_color = "#f7f7ff"
GtkTreeView::even_row_color = "#ffffff"
}
-style "theme-frame-title" = "theme-default" {
+style "clearlooks-frame-title" = "clearlooks-default" {
fg[NORMAL] = "#2a2a2a"
}
-style "theme-panel" = "theme-default" {
+style "clearlooks-panel" = "clearlooks-default" {
xthickness = 3
ythickness = 3
}
-style "theme-tooltips" = "theme-default" {
+style "clearlooks-tooltips" = "clearlooks-default" {
xthickness = 4
ythickness = 4
bg[NORMAL] = { 1.0,1.0,0.75 }
}
-style "theme-progressbar" = "theme-default" {
+style "clearlooks-progressbar" = "clearlooks-default" {
xthickness = 1
ythickness = 1
fg[PRELIGHT] = "#ffffff"
}
-style "theme-combo" = "theme-default" {
+style "clearlooks-combo" = "clearlooks-default" {
xthickness = 2
ythickness = 0
}
-style "theme-button" = "theme-wide" {
+style "clearlooks-button" = "clearlooks-wide" {
xthickness = 1
ythickness = 1
#bg[NORMAL] = "#31353A"
#bg[PRELIGHT] = "#555555"
#bg[NORMAL] = "#31353A"
}
-style "theme-check" = "theme-button" {
+style "clearlooks-check" = "clearlooks-button" {
}
-style "theme-panel" = "theme-default" {
+style "clearlooks-panel" = "clearlooks-default" {
xthickness = 3
ythickness = 3
}
-style "theme-notebook" = "theme-wide" {
+style "clearlooks-notebook" = "clearlooks-wide" {
base[SELECTED] = "#A1A1A1"
bg[ACTIVE] = "#A1A1A1"
base[PRELIGHT] = "#A1A1A1"
@@ -161,7 +159,7 @@ style "metacity-frame" {
bg[SELECTED] = "#5c82b5"
}
-style "theme-slab" = "theme-default" {
+style "clearlooks-slab" = "clearlooks-default" {
bg[SELECTED] = "#84b0da"
bg[NORMAL] = "#fdfbf7"
bg[ACTIVE] = "#e9eef5"
@@ -169,11 +167,11 @@ style "theme-slab" = "theme-default" {
fg[INSENSITIVE] = "#5c8dbf"
}
-style "theme-slab-group" = "theme-default" {
+style "clearlooks-slab-group" = "clearlooks-default" {
#bg[SELECTED] = "#adc09b" # Slab group text
}
-style "theme-shell" = "theme-default" {
+style "clearlooks-shell" = "clearlooks-default" {
bg[ACTIVE] = "#e9eef5" # Left side bg color
fg[NORMAL] = "#5c8dbf" # Left side text color
fg[INSENSITIVE] = "#bdcce1" # Left side line
@@ -189,53 +187,47 @@ style "evolution-hack" = "clearlooks-default" {
fg[SELECTED] = "#ffffff"
}
-style "theme-shell-highlight" = "theme-default" {
+style "clearlooks-shell-highlight" = "clearlooks-default" {
}
-style "extra-view" {
- bg[NORMAL] = "#729fcf"
- font = "Sans 6"
-}
-
-style "rox" = "theme-default" {
+style "rox" = "clearlooks-default" {
bg[NORMAL] = "#ffffff"
bg[ACTIVE] = "#ffffff"
fg[NORMAL] = "#000000"
fg[ACTIVE] = "#000000"
}
-class "GtkWidget" style "theme-default"
-class "GtkButton" style "theme-button"
-class "GtkCombo" style "theme-button"
-class "GtkRange" style "theme-wide"
-class "GtkFrame" style "theme-wide"
-class "GtkMenu" style "theme-menu"
-class "GtkEntry" style "theme-button"
-class "GtkMenuItem" style "theme-menu-item"
-class "GtkStatusbar" style "theme-wide"
-class "GtkNotebook" style "theme-notebook"
-class "GtkProgressBar" style "theme-progressbar"
-class "GtkCheckButton" style "theme-check"
-class "GtkRadioButton" style "theme-check"
+class "GtkWidget" style "clearlooks-default"
+class "GtkButton" style "clearlooks-button"
+class "GtkCombo" style "clearlooks-button"
+class "GtkRange" style "clearlooks-wide"
+class "GtkFrame" style "clearlooks-wide"
+class "GtkMenu" style "clearlooks-menu"
+class "GtkEntry" style "clearlooks-button"
+class "GtkMenuItem" style "clearlooks-menu-item"
+class "GtkStatusbar" style "clearlooks-wide"
+class "GtkNotebook" style "clearlooks-notebook"
+class "GtkProgressBar" style "clearlooks-progressbar"
+class "GtkCheckButton" style "clearlooks-check"
+class "GtkRadioButton" style "clearlooks-check"
-widget_class "*MenuItem.*" style "theme-menu-item"
-widget_class "*.GtkComboBox.GtkButton" style "theme-combo"
-widget_class "*.GtkCombo.GtkButton" style "theme-combo"
-widget_class "*.tooltips.*.GtkToggleButton" style "theme-tasklist"
-widget "gtk-tooltip" style "theme-tooltips"
-widget_class "*.GtkTreeView.GtkButton" style "theme-tree"
-widget_class "*.GtkCTree.GtkButton" style "theme-tree"
-widget_class "*.GtkList.GtkButton" style "theme-tree"
-widget_class "*.GtkCList.GtkButton" style "theme-tree"
-widget_class "*.GtkFrame.GtkLabel" style "theme-frame-title"
-widget_class "*.GtkNotebook.*.GtkEventBox" style "theme-notebook"
-widget_class "*.GtkNotebook.*.GtkViewport" style "theme-notebook"
+widget_class "*MenuItem.*" style "clearlooks-menu-item"
+widget_class "*.GtkComboBox.GtkButton" style "clearlooks-combo"
+widget_class "*.GtkCombo.GtkButton" style "clearlooks-combo"
+widget_class "*.tooltips.*.GtkToggleButton" style "clearlooks-tasklist"
+widget "gtk-tooltip" style "clearlooks-tooltips"
+widget_class "*.GtkTreeView.GtkButton" style "clearlooks-tree"
+widget_class "*.GtkCTree.GtkButton" style "clearlooks-tree"
+widget_class "*.GtkList.GtkButton" style "clearlooks-tree"
+widget_class "*.GtkCList.GtkButton" style "clearlooks-tree"
+widget_class "*.GtkFrame.GtkLabel" style "clearlooks-frame-title"
+widget_class "*.GtkNotebook.*.GtkEventBox" style "clearlooks-notebook"
+widget_class "*.GtkNotebook.*.GtkViewport" style "clearlooks-notebook"
class "MetaFrames" style "metacity-frame"
-widget_class "BasePWidget.GtkEventBox.GtkTable.GtkFrame" style "theme-panel"
-widget "*.nautilus-extra-view-widget" style:highest "extra-view"
-class "SlabWindow" style "theme-slab"
-class "ShellWindow" style "theme-shell"
-widget_class "ShellWindow.*.GtkEventBox" style "theme-shell-highlight"
+widget_class "BasePWidget.GtkEventBox.GtkTable.GtkFrame" style "clearlooks-panel"
+class "SlabWindow" style "clearlooks-slab"
+class "ShellWindow" style "clearlooks-shell"
+widget_class "ShellWindow.*.GtkEventBox" style "clearlooks-shell-highlight"
widget_class "*GtkCTree*" style "evolution-hack"
widget_class "*GtkList*" style "evolution-hack"
widget_class "*GtkCList*" style "evolution-hack"
diff --git a/rtdata/themes/Gray Textured b/rtdata/themes/Gray Textured
index f906abd87..bdaa0d8be 100644
--- a/rtdata/themes/Gray Textured
+++ b/rtdata/themes/Gray Textured
@@ -22,17 +22,8 @@
# Modified by Wyatt Olson.
# Sneaking through the code are we.? ;)
-style "clearlooks-default"
-{
- #This is actually just a non-existant font to force RT to load
- # the default system font. On OSX the GTK default will show some
- # incorrect ligatures (e.g., fi is interpreted as the double dagger
- # symbol), but by reverting to system default it works. You could
- # actually use any non-font here and it will work, e.g. "Foo". To
- # change it to use an actual font, enter the full name of the font
- # here, along with optional style and size, e.g.
- # "Monaco Bold 15".
- font_name = "sans 10"
+
+style "clearlooks-default" {
GtkRange::trough_border = 0
GtkRange::slider_width = 14
diff --git a/rtdata/themes/Light b/rtdata/themes/Light
index 05e7d6621..383034a59 100644
--- a/rtdata/themes/Light
+++ b/rtdata/themes/Light
@@ -21,9 +21,8 @@
# Created by Richard Stellingwerff, Emil Jacobs and Daniel Borgmann.
-style "clearlooks-default"
-{
- font_name = "sans 8"
+style "clearlooks-default" {
+
GtkButton ::default_border = { 0, 0, 0, 0 }
GtkRange ::trough_border = 0
GtkPaned ::handle_size = 6
diff --git a/rtdata/themes/Unity_Gray b/rtdata/themes/Unity_Gray
new file mode 100644
index 000000000..b70e09ac4
--- /dev/null
+++ b/rtdata/themes/Unity_Gray
@@ -0,0 +1,453 @@
+# Set GtkSettings color scheme property.
+# This can be overriden (via an xsetting) with eg. the gnome-appearance-properties.
+gtk_color_scheme = "fg_color:#0A0A0A\nbg_color:#A1A1A1\nbase_color:#dddddd\ntext_color:#000\nselected_bg_color:#95B0DB\nselected_fg_color:#fff\ntooltip_bg_color:#F5F5B5\ntooltip_fg_color:#000"
+
+style "clearlooks-default"
+{
+ ########
+ # Style Properties
+ ########
+ GtkButton ::child-displacement-x = 1
+ GtkButton ::child-displacement-y = 1
+ GtkButton ::default-border = { 0, 0, 0, 0 }
+ GtkCheckButton ::indicator-size = 14
+
+ GtkPaned ::handle-size = 6
+
+ GtkRange ::trough-border = 0
+ GtkRange ::slider-width = 15
+ GtkRange ::stepper-size = 15
+
+ GtkScale ::slider-length = 23
+ GtkScale ::trough-side-details = 1
+ GtkScrollbar ::min-slider-length = 30
+
+ GtkMenuBar ::internal-padding = 0
+ GtkExpander ::expander-size = 14
+ GtkToolbar ::internal-padding = 1
+ GtkTreeView ::expander-size = 12
+ GtkTreeView ::vertical-separator = 0
+
+ GtkMenu ::horizontal-padding = 0
+ GtkMenu ::vertical-padding = 0
+
+ # Glow the tasklist by changing the color, instead of overlaying it with a rectangle
+ WnckTasklist ::fade-overlay-rect = 0
+
+ xthickness = 1
+ ythickness = 1
+
+
+ fg[NORMAL] = @fg_color
+ fg[PRELIGHT] = @fg_color
+ fg[SELECTED] = @selected_fg_color
+ fg[ACTIVE] = @fg_color
+ fg[INSENSITIVE] = darker (@bg_color)
+
+ bg[NORMAL] = @bg_color
+ bg[PRELIGHT] = shade (1.02, @bg_color)
+ bg[SELECTED] = @selected_bg_color
+ bg[INSENSITIVE] = @bg_color
+ bg[ACTIVE] = shade (0.9, @bg_color)
+
+ base[NORMAL] = @base_color
+ base[PRELIGHT] = shade (0.95, @bg_color)
+ base[ACTIVE] = shade (0.9, @selected_bg_color)
+ base[SELECTED] = @selected_bg_color
+ base[INSENSITIVE] = @bg_color
+
+ text[NORMAL] = @text_color
+ text[PRELIGHT] = @text_color
+ text[ACTIVE] = @selected_fg_color
+ text[SELECTED] = @selected_fg_color
+ text[INSENSITIVE] = darker (@bg_color)
+
+ engine "clearlooks"
+ {
+ colorize_scrollbar = TRUE
+ reliefstyle = 1
+ menubarstyle = 2 # 0 = flat, 1 = sunken, 2 = flat gradient
+ toolbarstyle = 1 # 0 = flat, 1 = enable effects
+ animation = FALSE
+ style = GUMMY
+ radius = 4.0
+
+ # Set a hint to disable backward compatibility fallbacks.
+ hint = "use-hints"
+ }
+}
+
+style "clearlooks-wide"
+{
+ xthickness = 2
+ ythickness = 2
+}
+
+style "clearlooks-wider"
+{
+ xthickness = 3
+ ythickness = 3
+}
+
+style "clearlooks-button"
+{
+ xthickness = 3
+ ythickness = 3
+
+ bg[NORMAL] = shade (1.07, @bg_color)
+ bg[PRELIGHT] = shade (1.09, @bg_color)
+ bg[ACTIVE] = shade (0.85, @bg_color)
+
+ engine "clearlooks"
+ {
+ hint = "scrollbar"
+ radius = 5.0
+ }
+}
+
+style "clearlooks-notebook-bg"
+{
+ bg[NORMAL] = shade (1.05, @bg_color)
+ bg[ACTIVE] = shade (0.98, @bg_color)
+}
+
+style "clearlooks-notebook" = "clearlooks-notebook-bg"
+{
+ xthickness = 3
+ ythickness = 3
+}
+
+style "clearlooks-tasklist"
+{
+ xthickness = 5
+ ythickness = 3
+}
+
+style "clearlooks-menu"
+{
+ xthickness = 0
+ ythickness = 0
+
+ bg[NORMAL] = shade (1.09, @bg_color)
+
+ # Radius of the menu items (inside menus)
+ engine "clearlooks"
+ {
+ radius = 0.0
+ }
+}
+
+style "clearlooks-menu-item"
+{
+ xthickness = 2
+ ythickness = 3
+
+ fg[PRELIGHT] = @selected_fg_color
+}
+
+style "clearlooks-separator-menu-item"
+{
+ GtkSeparatorMenuItem::horizontal-padding = 0
+ # We are setting the desired height by using wide-separators
+ # There is no other way to get the odd height ...
+ GtkWidget::wide-separators = 1
+ GtkWidget::separator-width = 1
+ GtkWidget::separator-height = 5
+ xthickness = 1
+ ythickness = 0
+}
+
+style "clearlooks-treeview"
+{
+ engine "clearlooks" {
+ hint = "treeview"
+ }
+}
+
+# Based on the default style so that the colors from the button
+# style are overriden again.
+style "clearlooks-treeview-header" = "clearlooks-default"
+{
+ xthickness = 2
+ ythickness = 1
+
+ bg[NORMAL] = shade (1.07, @bg_color)
+
+ engine "clearlooks" {
+ hint = "treeview-header"
+ }
+}
+
+style "clearlooks-frame-title"
+{
+ fg[NORMAL] = lighter (@fg_color)
+}
+
+style "clearlooks-tooltips"
+{
+ xthickness = 4
+ ythickness = 4
+
+ bg[NORMAL] = @tooltip_bg_color
+ fg[NORMAL] = @tooltip_fg_color
+}
+
+style "clearlooks-progressbar"
+{
+ xthickness = 1
+ ythickness = 1
+
+ fg[PRELIGHT] = @selected_fg_color
+
+ engine "clearlooks"
+ {
+ # Explicitly set the radius, for progress
+ # bars inside menuitems
+ radius = 3.0
+
+ hint = "progressbar"
+ }
+}
+
+style "clearlooks-statusbar"
+{
+ engine "clearlooks"
+ {
+ hint = "statusbar"
+ }
+}
+
+style "clearlooks-comboboxentry"
+{
+ # NOTE:
+ # If you set the appears-as-list option on comboboxes in the theme
+ # you should set this hint on the combobox instead.
+ engine "clearlooks"
+ {
+ hint = "comboboxentry"
+ }
+}
+
+style "clearlooks-spinbutton"
+{
+ engine "clearlooks"
+ {
+ hint = "spinbutton"
+ }
+}
+
+style "clearlooks-scale-bg"
+{
+ bg[NORMAL] = shade (1.07, @bg_color)
+ bg[PRELIGHT] = shade (1.09, @bg_color)
+}
+
+style "clearlooks-scale" = "clearlooks-scale-bg"
+{
+ engine "clearlooks"
+ {
+ hint = "scale"
+ }
+}
+
+style "clearlooks-hscale" = "clearlooks-scale-bg"
+{
+ engine "clearlooks"
+ {
+ hint = "hscale"
+ }
+}
+
+style "clearlooks-vscale" = "clearlooks-scale-bg"
+{
+ engine "clearlooks"
+ {
+ hint = "vscale"
+ }
+}
+
+style "clearlooks-scrollbar"
+{
+ bg[NORMAL] = shade (1.07, @bg_color)
+
+ engine "clearlooks"
+ {
+ hint = "scrollbar"
+ }
+}
+
+style "clearlooks-hscrollbar"
+{
+ engine "clearlooks"
+ {
+ hint = "hscrollbar"
+ }
+}
+
+style "clearlooks-vscrollbar"
+{
+ engine "clearlooks"
+ {
+ hint = "vscrollbar"
+ }
+}
+
+style "clearlooks-toolbar"
+{
+ bg[NORMAL] = shade (1.07, @bg_color)
+
+ engine "clearlooks" {
+ contrast = 1.16
+ }
+}
+
+style "clearlooks-menubar"
+{
+ engine "clearlooks"
+ {
+ contrast = 1.1
+ hint = "menubar"
+ }
+}
+
+style "clearlooks-nautilus-location"
+{
+ bg[NORMAL] = mix(0.60, shade (1.05,@bg_color), @selected_bg_color)
+}
+
+
+#########################################
+# Matches
+#########################################
+
+# Clearlooks default style is applied to every widget
+class "GtkWidget" style "clearlooks-default"
+
+# Increase the x/ythickness in some widgets
+class "GtkToolbar" style "clearlooks-toolbar"
+class "GtkRange" style "clearlooks-wide"
+class "GtkFrame" style "clearlooks-wide"
+class "GtkSeparator" style "clearlooks-wide"
+class "GtkEntry" style "clearlooks-wider"
+
+class "GtkSpinButton" style "clearlooks-spinbutton"
+class "GtkScale" style "clearlooks-scale"
+class "GtkVScale" style "clearlooks-vscale"
+class "GtkHScale" style "clearlooks-hscale"
+class "GtkScrollbar" style "clearlooks-scrollbar"
+class "GtkVScrollbar" style "clearlooks-vscrollbar"
+class "GtkHScrollbar" style "clearlooks-hscrollbar"
+
+# General matching following, the order is choosen so that the right styles override each other
+# eg. progressbar needs to be more important then the menu match.
+
+# This is not perfect, it could be done better
+# (That is modify *every* widget in the notebook, and change those back that
+# we really don't want changed)
+widget_class "**" style "clearlooks-notebook-bg"
+widget_class "**" style "clearlooks-notebook-bg"
+widget_class "**" style "clearlooks-notebook-bg"
+
+widget_class "*" style "clearlooks-button"
+widget_class "*" style "clearlooks-notebook"
+widget_class "**" style "clearlooks-statusbar"
+
+widget_class "**" style "clearlooks-comboboxentry"
+widget_class "**" style "clearlooks-comboboxentry"
+
+widget_class "**" style "clearlooks-menubar"
+widget_class "**" style "clearlooks-menu"
+widget_class "**" style "clearlooks-menu-item"
+widget_class "**" style "clearlooks-separator-menu-item"
+
+widget_class "*.." style "clearlooks-frame-title"
+widget_class "*.*" style "clearlooks-treeview"
+
+widget_class "*" style "clearlooks-progressbar"
+
+# Treeview header
+widget_class "*.." style "clearlooks-treeview-header"
+widget_class "*.." style "clearlooks-treeview-header"
+widget_class "*.." style "clearlooks-treeview-header"
+widget_class "*.." style "clearlooks-treeview-header"
+
+# Workarounds for Evolution
+widget_class "*.ETable.ECanvas" style "clearlooks-treeview-header"
+widget_class "*.ETree.ECanvas" style "clearlooks-treeview-header"
+
+# The window of the tooltip is called "gtk-tooltip"
+################################
+# FIXME:
+# This will not work if one embeds eg. a button into the tooltip.
+# As far as I can tell right now we will need to rework the theme
+# quite a bit to get this working correctly.
+# (It will involve setting different priorities, etc.)
+################################
+widget "gtk-tooltip*" style "clearlooks-tooltips"
+
+###################################################
+# Special cases and work arounds
+###################################################
+
+# Special case the nautilus-extra-view-widget
+# ToDo: A more generic approach for all applications that have a widget like this.
+widget "*.nautilus-extra-view-widget" style : highest "clearlooks-nautilus-location"
+
+# Work around for http://bugzilla.gnome.org/show_bug.cgi?id=382646
+# Note that the work around assumes that the combobox is _not_ in
+# appears-as-list mode.
+# Similar hack also in the menuitem style.
+# This style does not affect GtkComboBoxEntry, it does have an effect
+# on comboboxes in appears-as-list mode though.
+style "clearlooks-text-is-fg-color-workaround"
+{
+ text[NORMAL] = @fg_color
+ text[PRELIGHT] = @fg_color
+ text[SELECTED] = @selected_fg_color
+ text[ACTIVE] = @fg_color
+ text[INSENSITIVE] = darker (@bg_color)
+}
+widget_class "*.." style "clearlooks-text-is-fg-color-workaround"
+
+style "clearlooks-menuitem-text-is-fg-color-workaround"
+{
+ text[NORMAL] = @fg_color
+ text[PRELIGHT] = @selected_fg_color
+ text[SELECTED] = @selected_fg_color
+ text[ACTIVE] = @fg_color
+ text[INSENSITIVE] = darker (@bg_color)
+}
+widget "*.gtk-combobox-popup-menu.*" style "clearlooks-menuitem-text-is-fg-color-workaround"
+
+# Work around the usage of GtkLabel inside GtkListItems to display text.
+# This breaks because the label is shown on a background that is based on the
+# base color set.
+style "clearlooks-fg-is-text-color-workaround"
+{
+ fg[NORMAL] = @text_color
+ fg[PRELIGHT] = @text_color
+ fg[ACTIVE] = @selected_fg_color
+ fg[SELECTED] = @selected_fg_color
+ fg[INSENSITIVE] = darker (@bg_color)
+}
+widget_class "**" style "clearlooks-fg-is-text-color-workaround"
+# The same problem also exists for GtkCList and GtkCTree
+# Only match GtkCList and not the parent widgets, because that would also change the headers.
+widget_class "*" style "clearlooks-fg-is-text-color-workaround"
+
+# Work around the evolution "New" button bug by making the toolbar flat.
+# http://bugzilla.gnome.org/show_bug.cgi?id=446953
+# Maybe remove this workaround in unstable releases.
+style "clearlooks-evo-new-button-workaround"
+{
+ GtkMenuBar ::shadow-type = GTK_SHADOW_NONE
+ GtkToolbar ::shadow-type = GTK_SHADOW_NONE
+
+ bg[NORMAL] = @bg_color
+
+ engine "clearlooks"
+ {
+ toolbarstyle = 0
+ }
+}
+widget_class "EShellWindow.GtkVBox.BonoboDock.BonoboDockBand.BonoboDockItem*" style "clearlooks-evo-new-button-workaround"
diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc
index 86ca4a973..69f4f14b6 100644
--- a/rtengine/CA_correct_RT.cc
+++ b/rtengine/CA_correct_RT.cc
@@ -382,8 +382,8 @@ void RawImageSource::CA_correct_RT() {
// along line segments, find the point along each segment that minimizes the color variance
// averaged over the tile; evaluate for up/down and left/right away from R/B grid point
- for (rr=8; rr < rr1-8; rr++)
- for (cc=8+(FC(rr,2)&1), indx=rr*TS+cc, c = FC(rr,cc); cc < cc1-8; cc+=2, indx+=2) {
+ for (rr=rrmin+8; rr < rrmax-8; rr++)
+ for (cc=ccmin+8+(FC(rr,2)&1), indx=rr*TS+cc, c = FC(rr,cc); cc < ccmax-8; cc+=2, indx+=2) {
if (rgb[indx][c]>0.8*clip_pt || Gtmp[indx]>0.8*clip_pt) continue;
@@ -422,7 +422,9 @@ void RawImageSource::CA_correct_RT() {
for (c=0; c<3; c+=2){
for (j=0; j<2; j++) {// vert/hor
//printf("hblock %d vblock %d j %d c %d areawt %d \n",hblock,vblock,j,c,areawt[j][c]);
- if (areawt[j][c]>500) {
+ //printf("hblock %d vblock %d j %d c %d areawt %d ",hblock,vblock,j,c,areawt[j][c]);
+
+ if (areawt[j][c]>0) {
CAshift[j][c]=coeff[j][1][c]/coeff[j][2][c];
blockwt[vblock*hblsz+hblock]= areawt[j][c];//*coeff[j][2][c]/(eps+coeff[j][0][c]) ;
} else {
@@ -430,6 +432,8 @@ void RawImageSource::CA_correct_RT() {
blockwt[vblock*hblsz+hblock]=0;
}
+ //printf("%f \n",CAshift[j][c]);
+
//CAshift[j][c]=coeff[j][1][c]/coeff[j][2][c];
//blockwt[vblock*hblsz+hblock] = (float)(rr1-8)*(cc1-8)/4 * coeff[j][2][c]/(eps+coeff[j][0][c]) ;
@@ -482,7 +486,7 @@ void RawImageSource::CA_correct_RT() {
}
}
- //if (verbose) fprintf (stderr,_("tile variances %f %f %f %f \n"),blockvar[0][0],blockvar[1][0],blockvar[0][2],blockvar[1][2] );
+ //printf ("tile variances %f %f %f %f \n",blockvar[0][0],blockvar[1][0],blockvar[0][2],blockvar[1][2] );
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt
index cfa804fa9..181f05037 100644
--- a/rtengine/CMakeLists.txt
+++ b/rtengine/CMakeLists.txt
@@ -2,7 +2,7 @@
include_directories (${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../rtexif
${EXTRA_INCDIR} ${GTHREAD_INCLUDE_DIRS} ${GOBJECT_INCLUDE_DIRS} ${GLIB2_INCLUDE_DIRS}
${GLIBMM_INCLUDE_DIRS} ${IPTCDATA_INCLUDE_DIRS} ${LCMS_INCLUDE_DIRS}
- ${CMAKE_CURRENT_SOURCE_DIR}/../rtgui ${GTKMM_INCLUDE_DIRS})
+ ${CMAKE_CURRENT_SOURCE_DIR}/../rtgui ${GTKMM_INCLUDE_DIRS} ${GTK_INCLUDE_DIRS})
link_directories (${CMAKE_CURRENT_SOURCE_DIR}/../rtexif ${EXTRA_LIBDIR} ${GTHREAD_LIBRARY_DIRS}
${GOBJECT_LIBRARY_DIRS} ${GLIB2_LIBRARY_DIRS} ${GLIBMM_LIBRARY_DIRS}
${IPTCDATA_LIBRARY_DIRS} ${LCMS_LIBRARY_DIRS})
@@ -13,6 +13,7 @@ set (RTENGINESOURCEFILES colortemp.cc curves.cc dcraw.cc iccstore.cc dfmanager.c
stdimagesource.cc myfile.cc iccjpeg.c hlmultipliers.cc improccoordinator.cc
processingjob.cc rtthumbnail.cc utils.cc labimage.cc slicer.cc
iplab2rgb.cc ipsharpen.cc iptransform.cc ipresize.cc
+ jpeg_memsrc.c
wavelet_dec.cc ipequalizer.cc dirpyrLab_denoise.cc dirpyrLab_equalizer.cc dirpyr_equalizer.cc)
add_library (rtengine ${RTENGINESOURCEFILES})
diff --git a/rtengine/bilateral2.h b/rtengine/bilateral2.h
index 0a7cb7bb8..242595db4 100644
--- a/rtengine/bilateral2.h
+++ b/rtengine/bilateral2.h
@@ -334,9 +334,11 @@ template void bilateral25 (T** src, T** dst, T** buffer, int W
// main bilateral filter
template void bilateral (T** src, T** dst, T** buffer, int W, int H, double sigma, double sens, bool multiThread) {
-
- if (sigma<0.45)
- #pragma omp parallel for if (multiThread)
+//parallel if (multiThread)
+ if (sigma<0.45)
+#ifdef _OPENMP
+#pragma omp for
+#endif
for (int i=0; idefgain;
+
+ float eps=1e-5; //tolerance to avoid dividing by zero
float gauss[5] = {0.20416368871516755, 0.18017382291138087, 0.1238315368057753, 0.0662822452863612, 0.02763055063889883};
float rolloff[8] = {0, 0.135335, 0.249352, 0.411112, 0.606531, 0.800737, 0.945959, 1}; //gaussian with sigma=3
@@ -189,7 +191,8 @@ void RawImageSource::CLASS cfa_linedn(float noise)
for (rr=16; rr < numrows-16; rr++) {
row = rr + top;
for (col=16+left, indx=rr*TS+16; indx < rr*TS+numcols-16; indx++, col++) {
- rawData[row][col] = CLIP((int)(cfadn[indx]+ 0.5));
+ if (rawData[row][col]setProgress(fabs((float)top/height));
diff --git a/rtengine/curves.cc b/rtengine/curves.cc
index 6922441d4..236c95b58 100644
--- a/rtengine/curves.cc
+++ b/rtengine/curves.cc
@@ -51,7 +51,8 @@ Curve::Curve (const std::vector& p, int poly_pn) : x(NULL), y(NULL), ypp
if (kind==Spline)
spline_cubic_set ();
else if (kind==NURBS && N > 2)
- NURBS_set ();
+ NURBS_set ();
+ else kind=Linear;
}
else if (kind==Parametric) {
if (p.size()!=8 && p.size()!=9)
@@ -110,7 +111,7 @@ void Curve::NURBS_set () {
std::vector sc_x(nbSubCurvesPoints); // X sub-curve points ( XP0,XP1,XP2, XP2,XP3,XP4, ...)
std::vector sc_y(nbSubCurvesPoints); // Y sub-curve points ( YP0,YP1,YP2, YP2,YP3,YP4, ...)
- std::vector sc_length(N-2); // Length of the subcurves
+ std::vector sc_length(N+2); // Length of the subcurves
double total_length=0.;
// Create the list of Bezier sub-curves
@@ -120,6 +121,8 @@ void Curve::NURBS_set () {
int k = 0;
for (int i = 0; i < N-1;) {
double length;
+ double dx;
+ double dy;
// first point (on the curve)
if (!i) {
@@ -146,7 +149,9 @@ void Curve::NURBS_set () {
sc_x[j] = (x[i-1] + x[i]) / 2.;
sc_y[j] = (y[i-1] + y[i]) / 2.;
}
- length += sqrt(pow(sc_x[j] - sc_x[j-1],2) + pow(sc_y[j] - sc_y[j-1],2));
+ dx = sc_x[j] - sc_x[j-1];
+ dy = sc_y[j] - sc_y[j-1];
+ length += sqrt(dx*dx + dy*dy);
j++;
// Storing the length of all sub-curves and the total length (to have a better distribution
@@ -155,24 +160,24 @@ void Curve::NURBS_set () {
total_length += length;
}
- unsigned int total_points = 0;
- for (unsigned int i=0; i < sc_x.size(); i+=3) {
- total_points += (int)(((double)ppn+N-2) * sc_length[i/3] / total_length) + (i==0 ? 1 : 0) - 1;
- }
- poly_x.resize(total_points);
- poly_y.resize(total_points);
-
+ poly_x.clear();
+ poly_y.clear();
+ unsigned int sc_xsize=j-1;
j = 0;
// create the polyline with the number of points adapted to the X range of the sub-curve
- for (unsigned int i=0; i < sc_x.size(); i+=3) {
+ for (unsigned int i=0; i < sc_xsize /*sc_x.size()*/; i+=3) {
// TODO: Speeding-up the interface by caching the polyline, instead of rebuilding it at each action on sliders !!!
- int nbr_points = (int)(((double)ppn+N-2) * sc_length[i/3] / total_length);
-
+ int nbr_points = (int)(((double)(ppn+N-2) * sc_length[i/3] )/ total_length);
+ if (nbr_points<0){
+ for(int it=0;it < sc_x.size(); it+=3) printf("sc_length[%d/3]=%f \n",it,sc_length[it/3]);
+ printf("NURBS: error detected!\n i=%d nbr_points=%d ppn=%d N=%d sc_length[i/3]=%f total_length=%f",i,nbr_points,ppn,N,sc_length[i/3],total_length);
+ exit(0);
+ }
// increment along the curve, not along the X axis
double increment = 1.0 / (double)(nbr_points-1);
if (!i) {
- poly_x[j ] = sc_x[i];
- poly_y[j++] = sc_y[i];
+ poly_x.push_back( sc_x[i]);
+ poly_y.push_back(sc_y[i]);
}
for (k=1; k<(nbr_points-1); k++) {
double t = k*increment;
@@ -182,12 +187,12 @@ void Curve::NURBS_set () {
double tr2t = tr*2*t;
// adding a point to the polyline
- poly_x[j ] = tr2*sc_x[i] + tr2t*sc_x[i+1] + t2*sc_x[i+2];
- poly_y[j++] = tr2*sc_y[i] + tr2t*sc_y[i+1] + t2*sc_y[i+2];
+ poly_x.push_back( tr2*sc_x[i] + tr2t*sc_x[i+1] + t2*sc_x[i+2]);
+ poly_y.push_back( tr2*sc_y[i] + tr2t*sc_y[i+1] + t2*sc_y[i+2]);
}
// adding the last point of the sub-curve
- poly_x[j ] = sc_x[i+2];
- poly_y[j++] = sc_y[i+2];
+ poly_x.push_back( sc_x[i+2]);
+ poly_y.push_back(sc_y[i+2]);
}
}
@@ -417,8 +422,11 @@ if (igamma) {
delete [] dcurve;
}*/
+/*
void CurveFactory::complexCurve (double ecomp, double black, double hlcompr, double shcompr, double br, double contr, double defmul, double gamma_, bool igamma, const std::vector& curvePoints, unsigned int* histogram, int* outCurve, unsigned int* outBeforeCCurveHistogram, int skip) {
+ printf ("ecomp= %f black= %f hlcompr= %f shcompr= %f br= %f contr= %f defmul= %f gamma= %f, skip= %d \n",ecomp,black,hlcompr,shcompr,br,contr,defmul,gamma_,skip);
+
double def_mul = pow (2.0, defmul);
// compute parameters of the gamma curve
@@ -428,7 +436,7 @@ void CurveFactory::complexCurve (double ecomp, double black, double hlcompr, dou
double add = 0.099;
// theoretical maximum of the curve
- double D = /* gamma_>0 ? gamma (def_mul, gamma_, start, slope, mul, add) : */ def_mul;
+ double D = def_mul;
// a: slope of the curve, black: starting point at the x axis
double a = pow (2.0, ecomp);
@@ -450,9 +458,6 @@ void CurveFactory::complexCurve (double ecomp, double black, double hlcompr, dou
// clear array that stores histogram valid before applying the custom curve
if (outBeforeCCurveHistogram)
memset (outBeforeCCurveHistogram, 0, 256*sizeof(int));
-
- //float atmp=a;
- //a = 1;
for (int i=0; i<=0xffff; i+= i<0xffff-skip ? skip : 1 ) {
@@ -461,13 +466,7 @@ void CurveFactory::complexCurve (double ecomp, double black, double hlcompr, dou
// apply default multiplier (that is >1 if highlight recovery is on)
val *= def_mul;
-
- //exposure compensation
- //val *= atmp;
- //black *= atmp;
- //D *= atmp;
-
-
+
// apply base curve, thus, exposure compensation and black point with shadow and highlight protection
val = basecurve (val, a, black, D, hlcompr/100.0, shcompr/100.0);
@@ -539,7 +538,391 @@ void CurveFactory::complexCurve (double ecomp, double black, double hlcompr, dou
outCurve[i] = (int) (65535.0 * dcurve[i]);
delete [] dcurve;
}
+*/
+/*
+ void CurveFactory::complexsgnCurve (double satclip, double satcompr, double saturation, double colormult, const std::vector& curvePoints, int* outCurve, int skip) {
+
+ //colormult = chroma_scale for Lab manipulations
+
+ bool needsaturation = (saturation<-0.0001 || saturation>0.0001);
+
+ // curve without contrast
+ double* dcurve = new double[65536];
+
+ // create a curve if needed
+ Curve* tcurve = NULL;
+ if (curvePoints.size()>0 && curvePoints[0]!=0)
+ tcurve = new Curve (curvePoints, CURVES_MIN_POLY_POINTS/skip);
+
+ for (int i=0; i<=0xffff; i+= i<0xffff-skip ? skip : 1 ) {
+
+ // change to [0,1] range
+ double val = (double)i / 65535.0;
+
+ // apply default multiplier (that is >1 if highlight recovery is on)
+ val *= colormult;
+
+ // apply base curve, thus, exposure compensation and black point with shadow and highlight protection
+ //val = basecurve (val, 1.0, 0, colormult, satcompr/100.0, satcompr/100.0);
+
+ // apply custom/parametric/NURBS curve, if any
+ if (tcurve) {
+ val = tcurve->getVal (val);
+ }
+
+ // store result in a temporary array
+ dcurve[i] = CLIPD(val);
+ }
+ delete tcurve;
+
+ // if skip>1, let apply linear interpolation in the skipped points of the curve
+ int prev = 0;
+ for (int i=1; i<=0xffff-skip; i++) {
+ if (i%skip==0) {
+ prev+=skip;
+ continue;
+ }
+ dcurve[i] = ( dcurve[prev] * (skip - i%skip) + dcurve[prev+skip] * (i%skip) ) / skip;
+ }
+
+ if (needsaturation) {
+ float avg = 0.5;
+
+ // compute contrast parameter
+ double saturation_b = saturation / 20;
+ if (saturation_b>=0 && saturation_b < 0.00001)
+ saturation_b = 0.00001;
+ else if (saturation_b<0 && saturation_b > -0.00001)
+ saturation_b = -0.00001;
+
+ // apply contrast enhancement
+ for (int i=0; i<=0xffff; i++) {
+ double val = centercontrast (dcurve[i], saturation_b, avg);
+ outCurve[i] = (int) (65535.0 * CLIPD(val));
+ }
+ }
+ else
+ for (int i=0; i<=0xffff; i++)
+ outCurve[i] = (int) (65535.0 * dcurve[i]);
+ delete [] dcurve;
+ }
+ */
+ void CurveFactory::complexsgnCurve (double satclip, double satcompr, double saturation, double colormult, const std::vector& curvePoints, int* outCurve, int skip) {
+
+ //colormult = chroma_scale for Lab manipulations
+
+ // check if contrast curve is needed
+ bool needsaturation = (saturation<-0.0001 || saturation>0.0001);
+
+ // curve without contrast
+ double* dcurve = new double[65536];
+
+ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ std::vector satcurvePoints;
+ satcurvePoints.push_back((double)((CurveType)NURBS));
+ if (saturation>0) {
+ satcurvePoints.push_back(0); //black point. Value in [0 ; 1] range
+ satcurvePoints.push_back(0); //black point. Value in [0 ; 1] range
+
+ satcurvePoints.push_back(0.25+saturation/500.0); //toe point
+ satcurvePoints.push_back(0.25-saturation/500.0); //value at toe point
+
+ satcurvePoints.push_back(0.75-saturation/500.0); //shoulder point
+ satcurvePoints.push_back(0.75+saturation/500.0); //value at shoulder point
+
+ satcurvePoints.push_back(1); // white point
+ satcurvePoints.push_back(1); // value at white point
+ } else {
+ satcurvePoints.push_back(0);
+ satcurvePoints.push_back(-0.5*(saturation/100.0));
+
+ satcurvePoints.push_back(1);
+ satcurvePoints.push_back(1+saturation/200.0);
+ }
+ Curve* satcurve = NULL;
+ satcurve = new Curve (satcurvePoints, CURVES_MIN_POLY_POINTS/skip); // Actually, CURVES_MIN_POLY_POINTS = 1000,
+ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ // create a curve if needed
+ Curve* tcurve = NULL;
+ if (curvePoints.size()>0 && curvePoints[0]!=0)
+ tcurve = new Curve (curvePoints, CURVES_MIN_POLY_POINTS/skip);
+
+ for (int i=0; i<=0xffff; i+= i<0xffff-skip ? skip : 1 ) {
+
+ // change to [0,1] range
+ double val = (double)i / 65535.0;
+
+ // apply default multiplier (that is >1 if highlight recovery is on)
+ val *= colormult;
+
+ // apply saturation curve
+ if (needsaturation)
+ val = satcurve->getVal (val);
+
+ // apply custom/parametric/NURBS curve, if any
+ if (tcurve) {
+ val = tcurve->getVal (val);
+ }
+
+ // store result in a temporary array
+ dcurve[i] = CLIPD(val);
+ }
+ delete tcurve;
+
+ // if skip>1, let apply linear interpolation in the skipped points of the curve
+ int prev = 0;
+ for (int i=1; i<=0xffff-skip; i++) {
+ if (i%skip==0) {
+ prev+=skip;
+ continue;
+ }
+ dcurve[i] = ( dcurve[prev] * (skip - i%skip) + dcurve[prev+skip] * (i%skip) ) / skip;
+ }
+
+ for (int i=0; i<=0xffff; i++)
+ outCurve[i] = (int) (65535.0 * dcurve[i]);
+ delete [] dcurve;
+ delete satcurve;
+ }
+
+
+ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ void CurveFactory::complexCurve (double ecomp, double black, double hlcompr, double shcompr, double br, double contr, double defmul, double gamma_, bool igamma, const std::vector& curvePoints, unsigned int* histogram, int* outCurve1, int* outCurve2, unsigned int* outBeforeCCurveHistogram, int skip) {
+
+ double def_mul = pow (2.0, defmul);
+
+ //printf ("def_mul= %f ecomp= %f black= %f hlcompr= %f shcompr= %f br= %f contr= %f defmul= %f gamma= %f, skip= %d \n",def_mul,ecomp,black,hlcompr,shcompr,br,contr,defmul,gamma_,skip);
+
+ // compute parameters of the gamma curve
+ double start = exp(gamma_*log( -0.099 / ((1.0/gamma_-1.0)*1.099 )));
+ double slope = 1.099 * pow (start, 1.0/gamma_-1) - 0.099/start;
+ double mul = 1.099;
+ double add = 0.099;
+
+ // a: slope of the curve, black: starting point at the x axis
+ double a = pow (2.0, ecomp);
+
+ // curve without contrast
+ double* dcurve = new double[65536];
+
+ // check if contrast curve is needed
+ bool needcontrast = contr>0.00001 || contr<-0.00001;
+
+ // check if inverse gamma is needed at the end
+ bool needigamma = !needcontrast && igamma && gamma_>0;
+
+ // create a curve if needed
+ Curve* tcurve = NULL;
+ if (curvePoints.size()>0 && curvePoints[0]!=0)
+ tcurve = new Curve (curvePoints, CURVES_MIN_POLY_POINTS/skip);
+
+ // clear array that stores histogram valid before applying the custom curve
+ if (outBeforeCCurveHistogram)
+ memset (outBeforeCCurveHistogram, 0, 256*sizeof(int));
+
+ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ // tone curve base. a: slope (from exp.comp.), b: black, def_mul: max. x value (can be>1), hr,sr: highlight,shadow recovery
+
+ std::vector basecurvePoints;
+ basecurvePoints.push_back((double)((CurveType)NURBS));
+ //float toex = MIN(1,black/(a*def_mul));
+ //float toey = MAX(0,toex*a*def_mul*(shcompr/25.0-1));
+ float toex = black;
+ float toey = MAX(0,toex*(shcompr/25.0-1));
+ float shoulderx = MAX(black,1/(a*def_mul));//point in x at which line of slope a starting at (0,0) reaches y=1
+ float shouldery=1;
+ float toneslope=(shouldery-toey)/(shoulderx-toex);
+ if (shoulderx<1) {//a>1; positive EC
+ //move shoulder down if there is highlight rolloff
+ shouldery = shouldery-(0.3)*(hlcompr/100.0);
+ shoulderx = shoulderx - (1-shouldery)/toneslope;
+ } else {//a<1; negative EC
+ //if (shoulderx>1) {
+ shoulderx = 1;
+ shouldery = a*def_mul;
+ }
+ /*float shoulderx = toex+(1-toey)/a;//point in x at which line of slope a starting at toe point reaches y=1
+ float shouldery;
+ if (shoulderx<1) {
+ shouldery = MAX(2*toey, 1-(1-shoulderx)*(hlcompr/200.0));
+ shoulderx = shoulderx - (1-shouldery)/a;
+ } else {
+ shoulderx = 1;
+ shouldery = toey + (1-toex)*a;
+ }*/
+
+ basecurvePoints.push_back(MAX(0,0.99*toex*(1-shcompr/25.0))); //black point. Value in [0 ; 1] range
+ basecurvePoints.push_back(0); //black point. Value in [0 ; 1] range
+
+ basecurvePoints.push_back(toex); //toe point
+ basecurvePoints.push_back(toey); //value at toe point
+
+ if (toex<1) {
+ //add a point along the line between the toe point and shoulder point
+ basecurvePoints.push_back(0.4*toex+0.6*shoulderx); //mid point
+ basecurvePoints.push_back(0.4*toey+0.6*shouldery); //value at mid point
+
+ basecurvePoints.push_back(shoulderx); //shoulder point
+ basecurvePoints.push_back(shouldery); //value at shoulder point
+ if (shoulderx<1) {
+ basecurvePoints.push_back(1-0.95*(1-shoulderx)*(1-hlcompr/105.0)); // lead into point
+ basecurvePoints.push_back(1); // value near white point
+ basecurvePoints.push_back(1); // white point
+ basecurvePoints.push_back(1); // value at white point
+ }
+ }
+ Curve* basecurve = NULL;
+ basecurve = new Curve (basecurvePoints, CURVES_MIN_POLY_POINTS/skip); // Actually, CURVES_MIN_POLY_POINTS = 1000,
+ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ std::vector brightcurvePoints;
+ brightcurvePoints.push_back((double)((CurveType)NURBS));
+
+ brightcurvePoints.push_back(0); //black point. Value in [0 ; 1] range
+ brightcurvePoints.push_back(0); //black point. Value in [0 ; 1] range
+
+ if(br>0) {
+ brightcurvePoints.push_back(0.1); //toe point
+ brightcurvePoints.push_back(0.1+br/150.0); //value at toe point
+
+ brightcurvePoints.push_back(0.7); //shoulder point
+ brightcurvePoints.push_back(MIN(1.0,0.7+br/300.0)); //value at shoulder point
+ } else {
+ brightcurvePoints.push_back(0.1-br/150.0); //toe point
+ brightcurvePoints.push_back(0.1); //value at toe point
+
+ brightcurvePoints.push_back(MIN(1.0,0.7-br/300.0)); //shoulder point
+ brightcurvePoints.push_back(0.7); //value at shoulder point
+ }
+ brightcurvePoints.push_back(1); // white point
+ brightcurvePoints.push_back(1); // value at white point
+
+ Curve* brightcurve = NULL;
+ brightcurve = new Curve (brightcurvePoints, CURVES_MIN_POLY_POINTS/skip); // Actually, CURVES_MIN_POLY_POINTS = 1000,
+ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ for (int i=0; i<=0xffff; i+= i<0xffff-skip ? skip : 1 ) {
+
+ // change to [0,1] range
+ double val = (double)i / 65535.0;
+
+ // apply default multiplier (that is >1 if highlight recovery is on)
+ // val *= def_mul;
+
+ // apply base curve, thus, exposure compensation and black point with shadow and highlight protection
+ //val = basecurve (val, a, black, def_mul, hlcompr/100.0, shcompr/100.0);
+ val = basecurve->getVal (val);
+
+ outCurve1[i] = (int) (65535.0 * CLIPD(val));
+
+ // change to [0,1] range
+ val = (double)i / 65535.0;
+
+ // gamma correction
+ if (gamma_>0)
+ val = gamma (val, gamma_, start, slope, mul, add);
+
+ // apply brightness curve
+ //val = brightness (val, br/100.0);
+ val = brightcurve->getVal (val);
+
+ // apply custom/parametric/NURBS curve, if any
+ if (tcurve) {
+ if (outBeforeCCurveHistogram) {
+ double hval = val;
+ //if (needigamma)
+ // hval = igamma2 (hval);
+ int hi = (int)(255.0*CLIPD(hval));
+ outBeforeCCurveHistogram[hi]+=histogram[i] ;
+ }
+ val = tcurve->getVal (val);
+ }
+
+ // if inverse gamma is needed, do it (standard sRGB inverse gamma is applied)
+ if (needigamma)
+ val = igamma2 (val);
+
+ // store result in a temporary array
+ dcurve[i] = CLIPD(val);
+ }
+ delete tcurve;
+
+ delete basecurve; // ...when you don't need it anymore
+ delete brightcurve;
+
+ // if skip>1, let apply linear interpolation in the skipped points of the curve
+ int prev = 0;
+ for (int i=1; i<=0xffff-skip; i++) {
+ if (i%skip==0) {
+ prev+=skip;
+ continue;
+ }
+ outCurve1[i] = ( outCurve1[prev] * (skip - i%skip) + outCurve1[prev+skip] * (i%skip) ) / skip;
+ dcurve[i] = ( dcurve[prev] * (skip - i%skip) + dcurve[prev+skip] * (i%skip) ) / skip;
+ }
+
+ if (needcontrast) {
+ // compute mean luminance of the image with the curve applied
+ int sum = 0;
+ double avg = 0;
+ //double sqavg = 0;
+ for (int i=0; i<=0xffff; i++) {
+ avg += dcurve[i] * histogram[i];
+ //sqavg += dcurve[i]*dcurve[i] * histogram[i];
+ sum += histogram[i];
+ }
+ avg /= sum;
+ //sqavg /= sum;
+ //double stddev = sqrt(sqavg-avg*avg);
+ float contrslope = (50)/(50-0.25*contr);
+ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ std::vector contrastcurvePoints;
+ contrastcurvePoints.push_back((double)((CurveType)NURBS));
+
+ contrastcurvePoints.push_back(0); //black point. Value in [0 ; 1] range
+ contrastcurvePoints.push_back(0); //black point. Value in [0 ; 1] range
+
+ contrastcurvePoints.push_back(avg*(1-1/contrslope)); //toe point
+ contrastcurvePoints.push_back(0); //value at toe point
+
+ contrastcurvePoints.push_back(avg); //mid point
+ contrastcurvePoints.push_back(avg); //value at mid point
+
+ contrastcurvePoints.push_back(avg+(1-avg)/contrslope); // shoulder point
+ contrastcurvePoints.push_back(1); // value at shoulder point
+
+ contrastcurvePoints.push_back(1); // white point
+ contrastcurvePoints.push_back(1); // value at white point
+
+ Curve* contrastcurve = NULL;
+ contrastcurve = new Curve (contrastcurvePoints, CURVES_MIN_POLY_POINTS/skip); // Actually, CURVES_MIN_POLY_POINTS = 1000,
+ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ // apply contrast enhancement
+ for (int i=0; i<=0xffff; i++) {
+ //double val = centercontrast (dcurve[i], contr_b, avg);
+ double val = contrastcurve->getVal (dcurve[i]);
+ if (igamma && gamma_>0)
+ val = igamma2 (val);
+ outCurve2[i] = (int) (65535.0 * CLIPD(val));
+ }
+ }
+ else
+ for (int i=0; i<=0xffff; i++)
+ outCurve2[i] = (int) (65535.0 * dcurve[i]);
+ delete [] dcurve;
+ }
+
+ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+ //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
int CurveFactory::gammatab [65536];
int CurveFactory::igammatab_srgb [65536];
diff --git a/rtengine/curves.h b/rtengine/curves.h
index 59b3a326d..fb81f3ce6 100644
--- a/rtengine/curves.h
+++ b/rtengine/curves.h
@@ -101,6 +101,7 @@ class CurveFactory {
else
return 1.0 - brightnessbase (1.0-x, -amount);
}
+
public:
@@ -127,7 +128,8 @@ class CurveFactory {
public:
// static void updateCurve3 (int* curve, int* ohistogram, const std::vector& cpoints, double defmul, double ecomp, int black, double hlcompr, double shcompr, double br, double contr, double gamma_, bool igamma, int skip=1);
- static void complexCurve (double ecomp, double black, double hlcompr, double shcompr, double br, double contr, double defmul, double gamma_, bool igamma, const std::vector& curvePoints, unsigned int* histogram, int* outCurve, unsigned int* outBeforeCCurveHistogram, int skip=1);
+ static void complexCurve (double ecomp, double black, double hlcompr, double shcompr, double br, double contr, double defmul, double gamma_, bool igamma, const std::vector& curvePoints, unsigned int* histogram, int* outCurve1, int* outCurve2, unsigned int* outBeforeCCurveHistogram, int skip=1);
+ static void complexsgnCurve (double satclip, double satcompr, double saturation, double colormult, const std::vector& curvePoints, int* outCurve, int skip=1);
};
@@ -160,6 +162,6 @@ class Curve {
double getVal (double x);
void getVal (const std::vector& t, std::vector& res);
};
-};
+}
#endif
diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc
index 0c5c1a015..e7f0e5a65 100644
--- a/rtengine/dcraw.cc
+++ b/rtengine/dcraw.cc
@@ -1,6 +1,5 @@
/*RT*/#include
/*RT*/#include
-/*RT*/int ciff_base, ciff_len, exif_base, pre_filters;
/*RT*/#undef MAX
/*RT*/#undef MIN
/*RT*/#define NO_LCMS
@@ -111,60 +110,70 @@ typedef unsigned long long UINT64;
typedef unsigned char uchar;
typedef unsigned short ushort;
+// RT specify thread local storage
+#ifdef __GNUC__
+#define THREAD_LOCAL static __thread
+#define THREAD_LOCK
+#else
+#define THREAD_LOCAL
+#define THREAD_LOCK Glib::Mutex::Lock locker(*dcrMutex);
+#endif
+
/*
All global variables are defined here, and all functions that
access them are prefixed with "CLASS". Note that a thread-safe
C++ class cannot have non-const static local variables.
*/
-/*RT*/IMFILE *ifp;
-FILE * ofp;
-short order;
-const char *ifname;
-char *meta_data;
-char cdesc[5], desc[512], make[64], model[64], model2[64], artist[64];
-float flash_used, canon_ev, iso_speed, shutter, aperture, focal_len;
-time_t timestamp;
-unsigned shot_order, kodak_cbpp, filters, exif_cfa, unique_id;
-off_t strip_offset, data_offset;
-off_t thumb_offset, meta_offset, profile_offset;
-unsigned thumb_length, meta_length, profile_length;
-unsigned thumb_misc, *oprof, fuji_layout, shot_select=0, multi_out=0;
-unsigned tiff_nifds, tiff_samples, tiff_bps, tiff_compress;
-unsigned black, cblack[8], maximum, mix_green, raw_color, zero_is_bad;
-unsigned zero_after_ff, is_raw, dng_version, is_foveon, data_error;
-unsigned tile_width, tile_length, gpsdata[32], load_flags;
-ushort raw_height, raw_width, height, width, top_margin, left_margin;
-ushort shrink, iheight, iwidth, fuji_width, thumb_width, thumb_height;
-int flip, tiff_flip, colors;
-double pixel_aspect, aber[4]={1,1,1,1}, gamm[6]={ 0.45,4.5,0,0,0,0 };
-ushort (*image)[4], white[8][8], curve[0x10000], cr2_slice[3], sraw_mul[4];
-float bright=1, user_mul[4]={0,0,0,0}, threshold=0;
-int half_size=0, four_color_rgb=0, document_mode=0, highlight=0;
-int verbose=0, use_auto_wb=0, use_camera_wb=0, use_camera_matrix=-1;
-int output_color=1, output_bps=8, output_tiff=0, med_passes=0;
-int no_auto_bright=0;
-unsigned greybox[4] = { 0, 0, UINT_MAX, UINT_MAX };
-float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4];
-const double xyz_rgb[3][3] = { /* XYZ from RGB */
+/*RT*/THREAD_LOCAL int ciff_base, ciff_len, exif_base, pre_filters;
+/*RT*/THREAD_LOCAL IMFILE *ifp;
+THREAD_LOCAL FILE * ofp;
+THREAD_LOCAL short order;
+THREAD_LOCAL const char *ifname;
+THREAD_LOCAL char *meta_data;
+THREAD_LOCAL char cdesc[5], desc[512], make[64], model[64], model2[64], artist[64];
+THREAD_LOCAL float flash_used, canon_ev, iso_speed, shutter, aperture, focal_len;
+THREAD_LOCAL time_t timestamp;
+THREAD_LOCAL unsigned shot_order, kodak_cbpp, filters, exif_cfa, unique_id;
+THREAD_LOCAL off_t strip_offset, data_offset;
+THREAD_LOCAL off_t thumb_offset, meta_offset, profile_offset;
+THREAD_LOCAL unsigned thumb_length, meta_length, profile_length;
+THREAD_LOCAL unsigned thumb_misc, *oprof, fuji_layout, shot_select=0, multi_out=0;
+THREAD_LOCAL unsigned tiff_nifds, tiff_samples, tiff_bps, tiff_compress;
+THREAD_LOCAL unsigned black, cblack[8], maximum, mix_green, raw_color, zero_is_bad;
+THREAD_LOCAL unsigned zero_after_ff, is_raw, dng_version, is_foveon, data_error;
+THREAD_LOCAL unsigned tile_width, tile_length, gpsdata[32], load_flags;
+THREAD_LOCAL ushort raw_height, raw_width, height, width, top_margin, left_margin;
+THREAD_LOCAL ushort shrink, iheight, iwidth, fuji_width, thumb_width, thumb_height;
+THREAD_LOCAL int flip, tiff_flip, colors;
+THREAD_LOCAL double pixel_aspect, aber[4]={1,1,1,1}, gamm[6]={ 0.45,4.5,0,0,0,0 };
+THREAD_LOCAL ushort (*image)[4], white[8][8], curve[0x10000], cr2_slice[3], sraw_mul[4];
+THREAD_LOCAL float bright=1, user_mul[4]={0,0,0,0}, threshold=0;
+THREAD_LOCAL int half_size=0, four_color_rgb=0, document_mode=0, highlight=0;
+THREAD_LOCAL int verbose=0, use_auto_wb=0, use_camera_wb=0, use_camera_matrix=-1;
+THREAD_LOCAL int output_color=1, output_bps=8, output_tiff=0, med_passes=0;
+THREAD_LOCAL int no_auto_bright=0;
+THREAD_LOCAL unsigned greybox[4] = { 0, 0, UINT_MAX, UINT_MAX };
+THREAD_LOCAL float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4];
+static const double 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 } };
-const float d65_white[3] = { 0.950456, 1, 1.088754 };
-int histogram[4][0x2000];
-void (*write_thumb)(), (*write_fun)();
-void (*load_raw)(), (*thumb_load_raw)();
-jmp_buf failure;
+static const float d65_white[3] = { 0.950456, 1, 1.088754 };
+THREAD_LOCAL int histogram[4][0x2000];
+THREAD_LOCAL void (*write_thumb)(), (*write_fun)();
+THREAD_LOCAL void (*load_raw)(), (*thumb_load_raw)();
+THREAD_LOCAL jmp_buf failure;
-struct decode {
+THREAD_LOCAL struct decode {
struct decode *branch[2];
int leaf;
} first_decode[2048], *second_decode, *free_decode;
-struct tiff_ifd {
+THREAD_LOCAL struct tiff_ifd {
int width, height, bps, comp, phint, offset, flip, samples, bytes;
} tiff_ifd[10];
-struct ph1 {
+THREAD_LOCAL struct ph1 {
int format, key_off, black, black_off, split_col, tag_21a;
float tag_210;
} ph1;
@@ -555,8 +564,8 @@ int CLASS canon_s2is()
*/
unsigned CLASS getbithuff (int nbits, ushort *huff)
{
- static unsigned bitbuf=0;
- static int vbits=0, reset=0;
+ THREAD_LOCAL unsigned bitbuf=0;
+ THREAD_LOCAL int vbits=0, reset=0;
unsigned c;
if (nbits == -1)
@@ -1577,8 +1586,8 @@ void CLASS phase_one_load_raw()
unsigned CLASS ph1_bithuff (int nbits, ushort *huff)
{
- static UINT64 bitbuf=0;
- static int vbits=0;
+ THREAD_LOCAL UINT64 bitbuf=0;
+ THREAD_LOCAL int vbits=0;
unsigned c;
if (nbits == -1)
@@ -1840,8 +1849,8 @@ void CLASS nokia_load_raw()
unsigned CLASS pana_bits (int nbits)
{
- static uchar buf[0x4000];
- static int vbits;
+ THREAD_LOCAL uchar buf[0x4000];
+ THREAD_LOCAL int vbits;
int byte;
if (!nbits) return vbits=0;
@@ -2130,7 +2139,7 @@ void CLASS kodak_jpeg_load_raw() {}
METHODDEF(boolean)
fill_input_buffer (j_decompress_ptr cinfo)
{
- static uchar jpeg_buffer[4096];
+ THREAD_LOCAL uchar jpeg_buffer[4096];
size_t nbytes;
nbytes = fread (jpeg_buffer, 1, 4096, ifp);
@@ -2408,7 +2417,7 @@ void CLASS kodak_thumb_load_raw()
void CLASS sony_decrypt (unsigned *data, int len, int start, int key)
{
- static unsigned pad[128], p;
+ THREAD_LOCAL unsigned pad[128], p;
if (start) {
for (p=0; p < 4; p++)
@@ -2655,7 +2664,7 @@ void CLASS smal_v9_load_raw()
void CLASS foveon_decoder (unsigned size, unsigned code)
{
- static unsigned huff[1024];
+ THREAD_LOCAL unsigned huff[1024];
struct decode *cur;
int i, len;
@@ -6894,6 +6903,8 @@ void CLASS identify()
if (height == 3136 && width == 4736) /* Pentax K-7 */
{ height = 3122; width = 4684;
top_margin = 2; filters = 0x16161616; }
+ if (height == 2868 && width == 4352) /* Pentax K-x */
+ width = 4308;
if (height == 3014 && width == 4096) /* Ricoh GX200 */
width = 4014;
if (dng_version) {
@@ -7227,6 +7238,8 @@ canon_cr2:
} else if (!strcmp(model,"D1X")) {
width -= 4;
pixel_aspect = 0.5;
+ } else if (!strcmp(model,"D7000")) {
+ width -= 40;
} else if (!strcmp(model,"D40X") ||
!strcmp(model,"D60") ||
!strcmp(model,"D80") ||
@@ -7441,7 +7454,7 @@ konica_400z:
} else if (!strcmp(model,"K20D")) {
filters = 0x16161616;
} else if (!strcmp(model,"K-x")) {
- width = 4309;
+ width = 4308;
filters = 0x16161616;
} else if (!strcmp(model,"Optio S")) {
if (fsize == 3178560) {
@@ -8930,6 +8943,7 @@ Glib::Mutex* dcrMutex=NULL;
int RawImage::loadRaw (bool loadData) {
Glib::Mutex::Lock lock(*dcrMutex); // auto unlock
+ THREAD_LOCK
ifname = fname.c_str();
image = NULL;
@@ -9073,9 +9087,9 @@ int RawImage::loadRaw (bool loadData) {
int getRawFileBasicInfo (const Glib::ustring& fname, rtengine::RawMetaDataLocation& rml, int& rotation, int& thumbWidth, int& thumbHeight, int& thumbOffset, int& thumbType) {
- int status=0;
+ THREAD_LOCK
-dcrMutex->lock ();
+ int status=0;
exif_base = -1;
ciff_base = -1;
@@ -9094,14 +9108,12 @@ dcrMutex->lock ();
ifname = fname.c_str();
if (!(ifp = gfopen (ifname))) {
status = 2;
- dcrMutex->unlock ();
return status;
}
identify ();
if (!is_raw || colors>3) {
status = 3;
fclose (ifp);
- dcrMutex->unlock ();
return status;
}
@@ -9133,15 +9145,78 @@ dcrMutex->lock ();
rml.ciffLength = ciff_len;
fclose (ifp);
-dcrMutex->unlock ();
return !is_raw;
}
#include
+rtengine::Thumbnail* rtengine::Thumbnail::loadQuickFromRaw (const Glib::ustring& fname, rtengine::RawMetaDataLocation& rml, int &w, int &h, int fixwh) {
+
+ THREAD_LOCK
+
+ image = NULL;
+ ifname = fname.c_str();
+ exif_base = -1;
+ ciff_base = -1;
+ ciff_len = -1;
+ verbose = settings->verbose;
+ oprof = NULL;
+ ifp = gfopen (fname.c_str());
+ if (!ifp) {
+ printf("DCRAW: failed0\n");
+ return NULL;
+ }
+
+ if (setjmp (failure)) {
+ printf("DCRAW: failed1\n");
+ fclose (ifp);
+ return NULL;
+ }
+
+ identify ();
+ if (!is_raw || colors>3) {
+ printf("DCRAW: failed2\n");
+ fclose(ifp);
+ return NULL;
+ }
+
+ rml.exifBase = exif_base;
+ rml.ciffBase = ciff_base;
+ rml.ciffLength = ciff_len;
+
+ char thumb_buffer[thumb_length];
+ fseek(ifp,thumb_offset,SEEK_SET);
+ fread(thumb_buffer,1,thumb_length,ifp);
+ fclose(ifp);
+
+ rtengine::Thumbnail* tpp = rtengine::Thumbnail::loadFromMemory(thumb_buffer,thumb_length,w,h,fixwh);
+ if ( tpp == 0 )
+ {
+ printf("DCRAW: failed3\n");
+ return NULL;
+ }
+
+ int deg = 0;
+ if (flip==5)
+ deg = 270;
+ else if (flip==3)
+ deg = 180;
+ else if (flip==6)
+ deg = 90;
+
+ if (deg>0) {
+ Image16* rot = tpp->thumbImg->rotate (deg);
+ delete tpp->thumbImg;
+ tpp->thumbImg = rot;
+ }
+
+ return tpp;
+}
+
rtengine::Thumbnail* rtengine::Thumbnail::loadFromRaw (const Glib::ustring& fname, rtengine::RawMetaDataLocation& rml, int &w, int &h, int fixwh) {
-dcrMutex->lock ();
+ THREAD_LOCK
+
MyTime t0, t1, t2, t3, t4, t5, t6;
t0.set ();
@@ -9154,7 +9229,6 @@ t0.set ();
oprof = NULL;
ifp = gfopen (fname.c_str());
if (!ifp) {
- dcrMutex->unlock ();
return NULL;
}
@@ -9164,7 +9238,6 @@ t1.set ();
if (image)
free (image);
fclose (ifp);
- dcrMutex->unlock ();
return NULL;
}
@@ -9176,7 +9249,6 @@ t1.set ();
use_camera_wb = 1;
if (!is_raw || colors>3) {
fclose(ifp);
- dcrMutex->unlock ();
return NULL;
}
@@ -9438,8 +9510,6 @@ if (settings->verbose) printf ("0: %d, 1: %d, 2: %d, 3: %d, 4: %d, 5: %d All: %d
free (image);
-dcrMutex->unlock ();
-
return tpp;
}
diff --git a/rtengine/dcraw.patch b/rtengine/dcraw.patch
index 826580dff..fec902bbc 100644
--- a/rtengine/dcraw.patch
+++ b/rtengine/dcraw.patch
@@ -1,9 +1,8 @@
---- dcraw.c 2010-06-30 10:40:16.000000000 -0600
-+++ dcraw.cc 2010-06-30 10:36:00.000000000 -0600
-@@ -1,3 +1,16 @@
+--- dcraw.c 2010-10-25 09:45:14.000000000 -0400
++++ dcraw.cc 2010-10-27 11:30:33.000000000 -0400
+@@ -1,3 +1,15 @@
+/*RT*/#include
+/*RT*/#include
-+/*RT*/int ciff_base, ciff_len, exif_base, pre_filters;
+/*RT*/#undef MAX
+/*RT*/#undef MIN
+/*RT*/#define NO_LCMS
@@ -17,7 +16,7 @@
/*
dcraw.c -- Dave Coffin's raw photo decoder
Copyright 1997-2010 by Dave Coffin, dcoffin a cybercom o net
-@@ -46,7 +59,9 @@
+@@ -46,7 +58,9 @@
NO_LCMS disables the "-p" option.
*/
#ifndef NO_JPEG
@@ -28,17 +27,115 @@
#endif
#ifndef NO_LCMS
#include
-@@ -101,7 +116,8 @@
+@@ -96,59 +110,70 @@
+ typedef unsigned char uchar;
+ typedef unsigned short ushort;
+
++// RT specify thread local storage
++#ifdef __GNUC__
++#define THREAD_LOCAL static __thread
++#define THREAD_LOCK
++#else
++#define THREAD_LOCAL
++#define THREAD_LOCK Glib::Mutex::Lock locker(*dcrMutex);
++#endif
++
+ /*
+ All global variables are defined here, and all functions that
access them are prefixed with "CLASS". Note that a thread-safe
C++ class cannot have non-const static local variables.
*/
-FILE *ifp, *ofp;
-+/*RT*/IMFILE *ifp;
-+FILE * ofp;
- short order;
- const char *ifname;
- char *meta_data;
-@@ -271,6 +287,7 @@
+-short order;
+-const char *ifname;
+-char *meta_data;
+-char cdesc[5], desc[512], make[64], model[64], model2[64], artist[64];
+-float flash_used, canon_ev, iso_speed, shutter, aperture, focal_len;
+-time_t timestamp;
+-unsigned shot_order, kodak_cbpp, filters, exif_cfa, unique_id;
+-off_t strip_offset, data_offset;
+-off_t thumb_offset, meta_offset, profile_offset;
+-unsigned thumb_length, meta_length, profile_length;
+-unsigned thumb_misc, *oprof, fuji_layout, shot_select=0, multi_out=0;
+-unsigned tiff_nifds, tiff_samples, tiff_bps, tiff_compress;
+-unsigned black, cblack[8], maximum, mix_green, raw_color, zero_is_bad;
+-unsigned zero_after_ff, is_raw, dng_version, is_foveon, data_error;
+-unsigned tile_width, tile_length, gpsdata[32], load_flags;
+-ushort raw_height, raw_width, height, width, top_margin, left_margin;
+-ushort shrink, iheight, iwidth, fuji_width, thumb_width, thumb_height;
+-int flip, tiff_flip, colors;
+-double pixel_aspect, aber[4]={1,1,1,1}, gamm[6]={ 0.45,4.5,0,0,0,0 };
+-ushort (*image)[4], white[8][8], curve[0x10000], cr2_slice[3], sraw_mul[4];
+-float bright=1, user_mul[4]={0,0,0,0}, threshold=0;
+-int half_size=0, four_color_rgb=0, document_mode=0, highlight=0;
+-int verbose=0, use_auto_wb=0, use_camera_wb=0, use_camera_matrix=-1;
+-int output_color=1, output_bps=8, output_tiff=0, med_passes=0;
+-int no_auto_bright=0;
+-unsigned greybox[4] = { 0, 0, UINT_MAX, UINT_MAX };
+-float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4];
+-const double xyz_rgb[3][3] = { /* XYZ from RGB */
++/*RT*/THREAD_LOCAL int ciff_base, ciff_len, exif_base, pre_filters;
++/*RT*/THREAD_LOCAL IMFILE *ifp;
++THREAD_LOCAL FILE * ofp;
++THREAD_LOCAL short order;
++THREAD_LOCAL const char *ifname;
++THREAD_LOCAL char *meta_data;
++THREAD_LOCAL char cdesc[5], desc[512], make[64], model[64], model2[64], artist[64];
++THREAD_LOCAL float flash_used, canon_ev, iso_speed, shutter, aperture, focal_len;
++THREAD_LOCAL time_t timestamp;
++THREAD_LOCAL unsigned shot_order, kodak_cbpp, filters, exif_cfa, unique_id;
++THREAD_LOCAL off_t strip_offset, data_offset;
++THREAD_LOCAL off_t thumb_offset, meta_offset, profile_offset;
++THREAD_LOCAL unsigned thumb_length, meta_length, profile_length;
++THREAD_LOCAL unsigned thumb_misc, *oprof, fuji_layout, shot_select=0, multi_out=0;
++THREAD_LOCAL unsigned tiff_nifds, tiff_samples, tiff_bps, tiff_compress;
++THREAD_LOCAL unsigned black, cblack[8], maximum, mix_green, raw_color, zero_is_bad;
++THREAD_LOCAL unsigned zero_after_ff, is_raw, dng_version, is_foveon, data_error;
++THREAD_LOCAL unsigned tile_width, tile_length, gpsdata[32], load_flags;
++THREAD_LOCAL ushort raw_height, raw_width, height, width, top_margin, left_margin;
++THREAD_LOCAL ushort shrink, iheight, iwidth, fuji_width, thumb_width, thumb_height;
++THREAD_LOCAL int flip, tiff_flip, colors;
++THREAD_LOCAL double pixel_aspect, aber[4]={1,1,1,1}, gamm[6]={ 0.45,4.5,0,0,0,0 };
++THREAD_LOCAL ushort (*image)[4], white[8][8], curve[0x10000], cr2_slice[3], sraw_mul[4];
++THREAD_LOCAL float bright=1, user_mul[4]={0,0,0,0}, threshold=0;
++THREAD_LOCAL int half_size=0, four_color_rgb=0, document_mode=0, highlight=0;
++THREAD_LOCAL int verbose=0, use_auto_wb=0, use_camera_wb=0, use_camera_matrix=-1;
++THREAD_LOCAL int output_color=1, output_bps=8, output_tiff=0, med_passes=0;
++THREAD_LOCAL int no_auto_bright=0;
++THREAD_LOCAL unsigned greybox[4] = { 0, 0, UINT_MAX, UINT_MAX };
++THREAD_LOCAL float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4];
++static const double 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 } };
+-const float d65_white[3] = { 0.950456, 1, 1.088754 };
+-int histogram[4][0x2000];
+-void (*write_thumb)(), (*write_fun)();
+-void (*load_raw)(), (*thumb_load_raw)();
+-jmp_buf failure;
++static const float d65_white[3] = { 0.950456, 1, 1.088754 };
++THREAD_LOCAL int histogram[4][0x2000];
++THREAD_LOCAL void (*write_thumb)(), (*write_fun)();
++THREAD_LOCAL void (*load_raw)(), (*thumb_load_raw)();
++THREAD_LOCAL jmp_buf failure;
+
+-struct decode {
++THREAD_LOCAL struct decode {
+ struct decode *branch[2];
+ int leaf;
+ } first_decode[2048], *second_decode, *free_decode;
+
+-struct tiff_ifd {
++THREAD_LOCAL struct tiff_ifd {
+ int width, height, bps, comp, phint, offset, flip, samples, bytes;
+ } tiff_ifd[10];
+
+-struct ph1 {
++THREAD_LOCAL struct ph1 {
+ int format, key_off, black, black_off, split_col, tag_21a;
+ float tag_210;
+ } ph1;
+@@ -271,6 +296,7 @@
fprintf (stderr,_("Corrupt data near 0x%llx\n"), (INT64) ftello(ifp));
}
data_error++;
@@ -46,7 +143,7 @@
}
ushort CLASS sget2 (uchar *s)
-@@ -344,7 +361,7 @@
+@@ -344,7 +370,7 @@
{
if (fread (pixel, 2, count, ifp) < count) derror();
if ((order == 0x4949) == (ntohs(0x1234) == 0x1234))
@@ -55,7 +152,45 @@
}
void CLASS canon_600_fixed_wb (int temp)
-@@ -2117,7 +2134,7 @@
+@@ -538,8 +564,8 @@
+ */
+ unsigned CLASS getbithuff (int nbits, ushort *huff)
+ {
+- static unsigned bitbuf=0;
+- static int vbits=0, reset=0;
++ THREAD_LOCAL unsigned bitbuf=0;
++ THREAD_LOCAL int vbits=0, reset=0;
+ unsigned c;
+
+ if (nbits == -1)
+@@ -1560,8 +1586,8 @@
+
+ unsigned CLASS ph1_bithuff (int nbits, ushort *huff)
+ {
+- static UINT64 bitbuf=0;
+- static int vbits=0;
++ THREAD_LOCAL UINT64 bitbuf=0;
++ THREAD_LOCAL int vbits=0;
+ unsigned c;
+
+ if (nbits == -1)
+@@ -1823,8 +1849,8 @@
+
+ unsigned CLASS pana_bits (int nbits)
+ {
+- static uchar buf[0x4000];
+- static int vbits;
++ THREAD_LOCAL uchar buf[0x4000];
++ THREAD_LOCAL int vbits;
+ int byte;
+
+ if (!nbits) return vbits=0;
+@@ -2113,11 +2139,11 @@
+ METHODDEF(boolean)
+ fill_input_buffer (j_decompress_ptr cinfo)
+ {
+- static uchar jpeg_buffer[4096];
++ THREAD_LOCAL uchar jpeg_buffer[4096];
size_t nbytes;
nbytes = fread (jpeg_buffer, 1, 4096, ifp);
@@ -64,7 +199,25 @@
cinfo->src->next_input_byte = jpeg_buffer;
cinfo->src->bytes_in_buffer = nbytes;
return TRUE;
-@@ -3765,6 +3782,7 @@
+@@ -2391,7 +2417,7 @@
+
+ void CLASS sony_decrypt (unsigned *data, int len, int start, int key)
+ {
+- static unsigned pad[128], p;
++ THREAD_LOCAL unsigned pad[128], p;
+
+ if (start) {
+ for (p=0; p < 4; p++)
+@@ -2638,7 +2664,7 @@
+
+ void CLASS foveon_decoder (unsigned size, unsigned code)
+ {
+- static unsigned huff[1024];
++ THREAD_LOCAL unsigned huff[1024];
+ struct decode *cur;
+ int i, len;
+
+@@ -3765,6 +3791,7 @@
for (row = FC(1,0) >> 1; row < height; row+=2)
for (col = FC(row,1) & 1; col < width; col+=2)
image[row*width+col][1] = image[row*width+col][3];
@@ -72,7 +225,7 @@
filters &= ~((filters & 0x55555555) << 1);
}
}
-@@ -4817,7 +4835,7 @@
+@@ -4817,7 +4844,7 @@
unsigned sony_curve[] = { 0,0,0,0,0,4095 };
unsigned *buf, sony_offset=0, sony_length=0, sony_key=0;
struct jhead jh;
@@ -81,7 +234,7 @@
if (tiff_nifds >= sizeof tiff_ifd / sizeof tiff_ifd[0])
return 1;
-@@ -5225,12 +5243,13 @@
+@@ -5225,12 +5252,13 @@
fread (buf, sony_length, 1, ifp);
sony_decrypt (buf, sony_length/4, 1, sony_key);
sfp = ifp;
@@ -100,7 +253,7 @@
ifp = sfp;
free (buf);
}
-@@ -5256,6 +5275,8 @@
+@@ -5256,6 +5284,8 @@
int doff, max_samp=0, raw=-1, thm=-1, i;
struct jhead jh;
@@ -109,7 +262,7 @@
fseek (ifp, base, SEEK_SET);
order = get2();
if (order != 0x4949 && order != 0x4d4d) return;
-@@ -5424,7 +5445,7 @@
+@@ -5424,7 +5454,7 @@
{
const char *file, *ext;
char *jname, *jfile, *jext;
@@ -118,7 +271,7 @@
ext = strrchr (ifname, '.');
file = strrchr (ifname, '/');
-@@ -5452,7 +5473,8 @@
+@@ -5452,7 +5482,8 @@
*jext = '0';
}
if (strcmp (jname, ifname)) {
@@ -128,7 +281,7 @@
if (verbose)
fprintf (stderr,_("Reading metadata from %s ...\n"), jname);
parse_tiff (12);
-@@ -5790,7 +5812,11 @@
+@@ -5790,7 +5821,11 @@
order = get2();
hlen = get4();
if (get4() == 0x48454150) /* "HEAP" */
@@ -140,7 +293,7 @@
parse_tiff (save+6);
fseek (ifp, save+len, SEEK_SET);
}
-@@ -6738,6 +6764,12 @@
+@@ -6738,6 +6773,12 @@
fread (head, 1, 32, ifp);
fseek (ifp, 0, SEEK_END);
flen = fsize = ftell(ifp);
@@ -153,7 +306,7 @@
if ((cp = (char *) memmem (head, 32, "MMMM", 4)) ||
(cp = (char *) memmem (head, 32, "IIII", 4))) {
parse_phase_one (cp-head);
-@@ -6745,6 +6777,8 @@
+@@ -6745,6 +6786,8 @@
} else if (order == 0x4949 || order == 0x4d4d) {
if (!memcmp (head+6,"HEAPCCDR",8)) {
data_offset = hlen;
@@ -162,7 +315,25 @@
parse_ciff (hlen, flen - hlen);
} else {
parse_tiff(0);
-@@ -8494,13 +8528,13 @@
+@@ -6858,6 +6901,8 @@
+ if (height == 3136 && width == 4736) /* Pentax K-7 */
+ { height = 3122; width = 4684;
+ top_margin = 2; filters = 0x16161616; }
++ if (height == 2868 && width == 4352) /* Pentax K-x */
++ width = 4308;
+ if (height == 3014 && width == 4096) /* Ricoh GX200 */
+ width = 4014;
+ if (dng_version) {
+@@ -7405,7 +7450,7 @@
+ } else if (!strcmp(model,"K20D")) {
+ filters = 0x16161616;
+ } else if (!strcmp(model,"K-x")) {
+- width = 4309;
++ width = 4308;
+ filters = 0x16161616;
+ } else if (!strcmp(model,"Optio S")) {
+ if (fsize == 3178560) {
+@@ -8494,13 +8539,13 @@
FORCC ppm [col*colors+c] = curve[image[soff][c]] >> 8;
else FORCC ppm2[col*colors+c] = curve[image[soff][c]];
if (output_bps == 16 && !output_tiff && htons(0x55aa) != 0x55aa)
@@ -178,7 +349,7 @@
{
int arg, status=0;
int timestamp_only=0, thumbnail_only=0, identify_only=0;
-@@ -8613,7 +8647,7 @@
+@@ -8613,7 +8658,7 @@
case 'i': identify_only = 1; break;
case 'c': write_to_stdout = 1; break;
case 'v': verbose = 1; break;
@@ -187,7 +358,7 @@
case 'f': four_color_rgb = 1; break;
case 'A': FORC4 greybox[c] = atoi(argv[arg++]);
case 'a': use_auto_wb = 1; break;
-@@ -8877,3 +8911,537 @@
+@@ -8877,3 +8922,526 @@
}
return status;
}
@@ -213,7 +384,7 @@
+ { 0.222507, 0.716888, 0.060608 },
+ { 0.013930, 0.097097, 0.714022 } };
+
-+dcrMutex->lock ();
++ THREAD_LOCK
+
+ ifname = fname;//strdup (fname);
+ image = NULL;
@@ -228,7 +399,6 @@
+ ri->profile_data = NULL;
+ ifp = gfopen (fname);
+ if (!ifp) {
-+ dcrMutex->unlock ();
+ return 3;
+ }
+
@@ -240,7 +410,6 @@
+ use_camera_wb = 1;
+ if (!is_raw) {
+ fclose(ifp);
-+ dcrMutex->unlock ();
+ return 2;
+ }
+
@@ -259,7 +428,6 @@
+ if (ri->data)
+ free(ri->data);
+ fclose (ifp);
-+ dcrMutex->unlock ();
+ return 100;
+ }
+
@@ -346,15 +514,14 @@
+ ri->coeff[a][b] = rgb_cam[a][b];
+
+ free (image);
-+dcrMutex->unlock ();
+ return 0;
+}
+
+int getRawFileBasicInfo (const Glib::ustring& fname, rtengine::RawMetaDataLocation& rml, int& rotation, int& thumbWidth, int& thumbHeight, int& thumbOffset, int& thumbType) {
+
-+ int status=0;
++ THREAD_LOCK
+
-+dcrMutex->lock ();
++ int status=0;
+
+ exif_base = -1;
+ ciff_base = -1;
@@ -373,14 +540,12 @@
+ ifname = fname.c_str();
+ if (!(ifp = gfopen (ifname))) {
+ status = 2;
-+ dcrMutex->unlock ();
+ return status;
+ }
+ identify ();
+ if (!is_raw || colors>3) {
+ status = 3;
+ fclose (ifp);
-+ dcrMutex->unlock ();
+ return status;
+ }
+
@@ -412,7 +577,6 @@
+ rml.ciffLength = ciff_len;
+
+ fclose (ifp);
-+dcrMutex->unlock ();
+ return !is_raw;
+}
+
@@ -420,7 +584,8 @@
+
+rtengine::Thumbnail* rtengine::Thumbnail::loadFromRaw (const Glib::ustring& fname, rtengine::RawMetaDataLocation& rml, int &w, int &h, int fixwh) {
+
-+dcrMutex->lock ();
++ THREAD_LOCK
++
+MyTime t0, t1, t2, t3, t4, t5, t6;
+t0.set ();
+
@@ -433,7 +598,6 @@
+ oprof = NULL;
+ ifp = gfopen (fname.c_str());
+ if (!ifp) {
-+ dcrMutex->unlock ();
+ return NULL;
+ }
+
@@ -443,7 +607,6 @@
+ if (image)
+ free (image);
+ fclose (ifp);
-+ dcrMutex->unlock ();
+ return NULL;
+ }
+
@@ -455,7 +618,6 @@
+ use_camera_wb = 1;
+ if (!is_raw || colors>3) {
+ fclose(ifp);
-+ dcrMutex->unlock ();
+ return NULL;
+ }
+
@@ -610,7 +772,7 @@
+
+ // generate histogram for auto exposure
+ tpp->aeHistCompression = 3;
-+ tpp->aeHistogram = new int[65536>>tpp->aeHistCompression];
++ tpp->aeHistogram = new unsigned int[65536>>tpp->aeHistCompression];
+ memset (tpp->aeHistogram, 0, (65536>>tpp->aeHistCompression)*sizeof(int));
+ int radd = 4;
+ int gadd = 2;
@@ -717,8 +879,6 @@
+
+ free (image);
+
-+dcrMutex->unlock ();
-+
+ return tpp;
+}
+
diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc
index 7c0f5b8fd..dc54910cf 100644
--- a/rtengine/dcrop.cc
+++ b/rtengine/dcrop.cc
@@ -167,13 +167,16 @@ void Crop::update (int todo, bool internal) {
// shadows & highlights & tone curve & convert to cielab
if (todo & M_RGBCURVE)
- parent->ipf.rgbProc (baseCrop, laboCrop, parent->tonecurve, cshmap);
+ parent->ipf.rgbProc (baseCrop, laboCrop, parent->tonecurve1, parent->tonecurve2, cshmap);
// apply luminance operations
if (todo & (M_LUMINANCE+M_COLOR)) {
- parent->ipf.luminanceCurve (laboCrop, labnCrop, parent->lumacurve, 0, croph);
- parent->ipf.colorCurve (laboCrop, labnCrop);
+ parent->ipf.luminanceCurve (laboCrop, labnCrop, parent->lumacurve2, 0, croph);
+ parent->ipf.chrominanceCurve (laboCrop, labnCrop, 0, parent->chroma_acurve, 0, croph);
+ parent->ipf.chrominanceCurve (laboCrop, labnCrop, 1, parent->chroma_bcurve, 0, croph);
+
+ parent->ipf.colorCurve (labnCrop, labnCrop);
if (skip==1) {
parent->ipf.impulsedenoise (labnCrop);
@@ -347,7 +350,9 @@ void Crop::fullUpdate () {
parent->updaterThreadStart.lock ();
if (parent->updaterRunning && parent->thread) {
- parent->changeSinceLast = 0;
+ // Do NOT reset changes here, since in a long chain of events it will lead to chroma_scale not being updated,
+ // causing ImProcFunctions::lab2rgb to return a black image on some opens
+ //parent->changeSinceLast = 0;
parent->thread->join ();
}
diff --git a/rtengine/dirpyr_equalizer.cc b/rtengine/dirpyr_equalizer.cc
index 67ce8f1f0..6c6cb82bc 100644
--- a/rtengine/dirpyr_equalizer.cc
+++ b/rtengine/dirpyr_equalizer.cc
@@ -194,7 +194,7 @@ namespace rtengine {
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- };
+ }
void ImProcFunctions::dirpyr_channel(unsigned short ** data_fine, unsigned short ** data_coarse, int width, int height, int * rangefn, int level, int scale, const double * mult )
{
@@ -220,7 +220,7 @@ namespace rtengine {
#endif
for(int i = 0; i < height; i++) {
for(int j = 0; j < width; j++)
- {
+ {
float val=0;
float norm=0;
@@ -238,14 +238,12 @@ namespace rtengine {
- };
+ }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void ImProcFunctions::idirpyr_eq_channel(unsigned short ** data_coarse, unsigned short ** data_fine, int ** buffer, int width, int height, int level, const double * mult )
{
- int hipass;
-
float noisehi = 1.33*noise*mult[4]/pow(3,level), noiselo = 0.66*noise*mult[4]/pow(3,level);
float * irangefn = new float [0x20000];
@@ -265,15 +263,16 @@ namespace rtengine {
#ifdef _OPENMP
#pragma omp parallel for
#endif
- for(int i = 0; i < height; i++)
+ for(int i = 0; i < height; i++) {
for(int j = 0; j < width; j++) {
- hipass = (data_fine[i][j]-data_coarse[i][j]);
+ int hipass = (data_fine[i][j]-data_coarse[i][j]);
buffer[i][j] += irangefn[hipass+0x10000] * hipass ;
}
+ }
delete [] irangefn;
- };
+ }
#undef DIRWT_L
diff --git a/rtengine/gauss.h b/rtengine/gauss.h
index 527274b02..c3eaf408b 100644
--- a/rtengine/gauss.h
+++ b/rtengine/gauss.h
@@ -31,13 +31,12 @@
template void gaussHorizontal3 (T** src, T** dst, T* buffer, int W, int H, const float c0, const float c1, bool multiThread) {
- #pragma omp parallel for if (multiThread)
- for (int i=0; i void gaussHorizontal3 (T** src, T** dst, T* buffer, int W, int
template void gaussVertical3 (T** src, T** dst, T* buffer, int W, int H, const float c0, const float c1, bool multiThread) {
- #pragma omp parallel for if (multiThread)
- for (int i=0; i void gaussHorizontal (T** src, T** dst, AlignedBuffer*
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
M[i][j] /= (1.0+b1-b2+b3)*(1.0+b2+(b1-b3)*b3);
-
- #pragma omp parallel for if (multiThread)
+ // if (multiThread)
+ #pragma omp for
for (int i=0; idata + omp_get_thread_num() * W;
-#else
double* temp2 = buffer->data;
-#endif
temp2[0] = B * src[i][0] + b1*src[i][0] + b2*src[i][0] + b3*src[i][0];
temp2[1] = B * src[i][1] + b1*temp2[0] + b2*src[i][0] + b3*src[i][0];
temp2[2] = B * src[i][2] + b1*temp2[1] + b2*temp2[0] + b3*src[i][0];
@@ -192,14 +186,11 @@ template void gaussVertical (T** src, T** dst, AlignedBuffer* b
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
M[i][j] /= (1.0+b1-b2+b3)*(1.0+b2+(b1-b3)*b3);
-
- #pragma omp parallel for if (multiThread)
- for (int i=0; idata + omp_get_thread_num() * H;
-#else
- double* temp2 = buffer->data;
+#pragma omp for
#endif
+ for (int i=0; idata;
temp2[0] = B * src[0][i] + b1*src[0][i] + b2*src[0][i] + b3*src[0][i];
temp2[1] = B * src[1][i] + b1*temp2[0] + b2*src[0][i] + b3*src[0][i];
temp2[2] = B * src[2][i] + b1*temp2[1] + b2*temp2[0] + b3*src[0][i];
diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc
index 8e9ba21ef..f5e96f713 100644
--- a/rtengine/iccstore.cc
+++ b/rtengine/iccstore.cc
@@ -27,8 +27,6 @@
namespace rtengine {
-ICCStore iccStore;
-
const double (*wprofiles[])[3] = {sRGB_d50, adobe_d50, prophoto_d50, widegamut_d50, bruce_d50, beta_d50, best_d50};
const double (*iwprofiles[])[3] = {d50_sRGB, d50_adobe, d50_prophoto, d50_widegamut, d50_bruce, d50_beta, d50_best};
const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB"};
@@ -43,11 +41,13 @@ std::vector getWorkingProfiles () {
std::vector getOutputProfiles () {
- return iccStore.getOutputProfiles ();
+ return iccStore->getOutputProfiles ();
}
std::vector ICCStore::getOutputProfiles () {
+ Glib::Mutex::Lock lock(mutex_);
+
std::vector res;
for (std::map::iterator i=fileProfiles.begin(); i!=fileProfiles.end(); i++)
res.push_back (i->first);
@@ -55,14 +55,30 @@ std::vector ICCStore::getOutputProfiles () {
}
-ICCStore::ICCStore () {
+ICCStore*
+ICCStore::getInstance(void)
+{
+ static ICCStore* instance_ = 0;
+ if ( instance_ == 0 )
+ {
+ static Glib::Mutex smutex_;
+ Glib::Mutex::Lock lock(smutex_);
+ if ( instance_ == 0 )
+ {
+ instance_ = new ICCStore();
+ }
+ }
+ return instance_;
+}
+ICCStore::ICCStore ()
+{
cmsErrorAction (LCMS_ERROR_SHOW);
int N = sizeof(wpnames)/sizeof(wpnames[0]);
for (int i=0; i::iterator r = fileProfiles.find (name);
if (r!=fileProfiles.end())
@@ -137,11 +154,15 @@ cmsHPROFILE ICCStore::getProfile (Glib::ustring name) {
ProfileContent ICCStore::getContent (Glib::ustring name) {
+ Glib::Mutex::Lock lock(mutex_);
+
return fileProfileContents[name];
}
std::vector ICCStore::parseDir (Glib::ustring pdir) {
+ Glib::Mutex::Lock lock(mutex_);
+
fileProfiles.clear ();
fileProfileContents.clear ();
std::vector result;
@@ -164,7 +185,7 @@ std::vector ICCStore::parseDir (Glib::ustring pdir) {
// ignore directories
if (!Glib::file_test (fname, Glib::FILE_TEST_IS_DIR)) {
int lastdot = sname.find_last_of ('.');
- if (lastdot!=Glib::ustring::npos && lastdot<=sname.size()-4 && (!sname.casefold().compare (lastdot, 4, ".icm") || !sname.casefold().compare (lastdot, 4, ".icc"))) {
+ if (lastdot!=Glib::ustring::npos && lastdot<=(int)sname.size()-4 && (!sname.casefold().compare (lastdot, 4, ".icm") || !sname.casefold().compare (lastdot, 4, ".icc"))) {
// printf ("processing file %s...\n", fname.c_str());
Glib::ustring name = sname.substr(0,lastdot);
ProfileContent pc (fname);
@@ -309,6 +330,8 @@ cmsHPROFILE ICCStore::createFromMatrix (const double matrix[3][3], bool gamma, G
strcpy ((char *)oprof+pbody[5]+12, name.c_str());
- return cmsOpenProfileFromMem (oprof, ntohl(oprof[0]));
+ cmsHPROFILE p = cmsOpenProfileFromMem (oprof, ntohl(oprof[0]));
+ delete [] oprof;
+ return p;
}
}
diff --git a/rtengine/iccstore.h b/rtengine/iccstore.h
index 3c0a9dc49..5e67b55a7 100644
--- a/rtengine/iccstore.h
+++ b/rtengine/iccstore.h
@@ -54,9 +54,14 @@ class ICCStore {
cmsHPROFILE xyz;
cmsHPROFILE srgb;
+
+ Glib::Mutex mutex_;
+
+ ICCStore ();
public:
- ICCStore ();
+
+ static ICCStore* getInstance(void);
int numOfWProfiles ();
cmsHPROFILE createFromMatrix (const double matrix[3][3], bool gamma=false, Glib::ustring name="");
@@ -74,7 +79,7 @@ class ICCStore {
std::vector getOutputProfiles ();
};
-extern ICCStore iccStore;
+#define iccStore ICCStore::getInstance()
//extern const char* wpnames[];
}
diff --git a/rtengine/image16.cc b/rtengine/image16.cc
index 1afe0e258..1f6227f98 100644
--- a/rtengine/image16.cc
+++ b/rtengine/image16.cc
@@ -17,6 +17,7 @@
* along with RawTherapee. If not, see .
*/
#include
+#include
#include
#include
@@ -239,3 +240,19 @@ Image16* Image16::resize (int nw, int nh, TypeInterpolation interp) {
}
return NULL;
}
+
+Image8*
+Image16::to8() const
+{
+ Image8* img8 = new Image8(width,height);
+ for ( int h = 0; h < height; ++h )
+ {
+ for ( int w = 0; w < width; ++w )
+ {
+ img8->r(h,w,r[h][w] >> 8);
+ img8->g(h,w,g[h][w] >> 8);
+ img8->b(h,w,b[h][w] >> 8);
+ }
+ }
+ return img8;
+}
diff --git a/rtengine/image16.h b/rtengine/image16.h
index 8a778215b..ba719535b 100644
--- a/rtengine/image16.h
+++ b/rtengine/image16.h
@@ -29,6 +29,8 @@ namespace rtengine {
enum TypeInterpolation { TI_Nearest, TI_Bilinear };
+class Image8;
+
class Image16 : public ImageIO, public IImage16 {
private:
@@ -54,6 +56,8 @@ class Image16 : public ImageIO, public IImage16 {
Image16* copy ();
+ Image8* to8() const;
+
Image16* rotate (int deg);
Image16* hflip ();
Image16* vflip ();
diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc
index e2523a3c9..2146a4d79 100644
--- a/rtengine/imagedata.cc
+++ b/rtengine/imagedata.cc
@@ -95,7 +95,7 @@ ImageData::ImageData (Glib::ustring fname, RawMetaDataLocation* ri) {
extractInfo ();
}
}
- else if (dotpos
- *
- * 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
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-extern "C" {
-#include "jdatasrc.c"
-#include
-#include
-}
-#ifdef WIN32
-#include
-#else
-#include
-#endif
-#include
-#include
-
-Glib::ustring safe_locale_to_utf8 (const std::string& src);
-
-using namespace rtengine;
-using namespace rtengine::procparams;
-
-Glib::ustring ImageIO::errorMsg[6] = {"Success", "Cannot read file.", "Invalid header.","Error while reading header.","File reading error", "Image format not supported."};
-
-void ImageIO::setMetadata (const rtexif::TagDirectory* eroot, const std::vector& exif, const std::vector& iptcc) {
-
- // store exif info
- exifChange.resize (exif.size());
- for (int i=0; iclone (NULL);
-
- if (iptc)
- iptc_data_free (iptc);
- iptc = NULL;
-
- // build iptc structures for libiptcdata
- if (iptcc.size()==0)
- return;
-
- iptc = iptc_data_new ();
- for (int i=0; i0) {
- for (int j=0; j0) {
- for (int j=0; j0) {
- IptcDataSet * ds = iptc_dataset_new ();
- iptc_dataset_set_tag (ds, IPTC_RECORD_APP_2, strTags[j].tag);
- std::string loc = safe_locale_to_utf8(iptcc[i].values[0]);
- iptc_dataset_set_data (ds, (unsigned char*)loc.c_str(), MIN(strTags[j].size,loc.size()), IPTC_DONT_VALIDATE);
- iptc_data_add_dataset (iptc, ds);
- iptc_dataset_unref (ds);
- }
- }
- iptc_data_sort (iptc);
-}
-
-void ImageIO::setOutputProfile (char* pdata, int plen) {
-
- delete [] profileData;
- if (pdata) {
- profileData = new char [plen];
- memcpy (profileData, pdata, plen);
- }
- else
- profileData = NULL;
- profileLength = plen;
-}
-
-ImageIO::~ImageIO () {
-
- if (embProfile)
- cmsCloseProfile(embProfile);
- delete loadedProfileData;
- delete exifRoot;
- delete profileData;
-}
-
-void png_read_data(png_struct_def *png_ptr, unsigned char *data, size_t length);
-void png_write_data(png_struct_def *png_ptr, unsigned char *data, size_t length);
-void png_flush(png_struct_def *png_ptr);
-
-int ImageIO::loadPNG (Glib::ustring fname) {
-
- FILE *file = g_fopen (fname.c_str(),"rb");
- if (!file)
- return IMIO_CANNOTREADFILE;
-
- if (pl) {
- pl->setProgressStr ("Loading PNG file...");
- pl->setProgress (0.0);
- }
-
- //reading PNG header
- unsigned char header[8];
- fread (header, 1, 8, file);
- if (png_sig_cmp (header, 0, 8)) {
- fclose(file);
- return IMIO_HEADERERROR;
- }
- //initializing main structures
- png_structp png = png_create_read_struct (PNG_LIBPNG_VER_STRING, 0, 0, 0);
- if (!png) {
- fclose (file);
- return IMIO_HEADERERROR;
- }
- png_infop info = png_create_info_struct (png);
- png_infop end_info = png_create_info_struct (png);
- if (!end_info || !info) {
- png_destroy_read_struct (&png, &info, &end_info);
- fclose (file);
- return IMIO_HEADERERROR;
- }
-
- if (setjmp (png_jmpbuf(png))) {
- png_destroy_read_struct (&png, &info, &end_info);
- fclose (file);
- return IMIO_READERROR;
- }
-
- //set up png read
- png_set_read_fn (png, file, png_read_data);
- png_set_sig_bytes (png,8);
-
- png_read_info(png,info);
-
- embProfile = NULL;
-
- //retrieving image information
- png_uint_32 width,height;
- int bit_depth,color_type,interlace_type,compression_type,filter_method;
- png_get_IHDR(png,info,&width,&height,&bit_depth,&color_type,&interlace_type,
- &compression_type, &filter_method);
-
- //converting to 32bpp format
- if (color_type==PNG_COLOR_TYPE_PALETTE) png_set_palette_to_rgb(png);
-
- if (color_type==PNG_COLOR_TYPE_GRAY || color_type==PNG_COLOR_TYPE_GRAY_ALPHA)
- png_set_gray_to_rgb(png);
-
- if (png_get_valid(png,info,PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png);
-
- if (interlace_type!=PNG_INTERLACE_NONE) {
- png_destroy_read_struct (&png, &info, &end_info);
- fclose (file);
- return IMIO_VARIANTNOTSUPPORTED;
- }
-
- if (color_type & PNG_COLOR_MASK_ALPHA)
- png_set_strip_alpha(png);
-
- //setting gamma
- double gamma;
- if (png_get_gAMA(png,info,&gamma))
- png_set_gamma(png, 2.0, gamma);
- else
- png_set_gamma(png,2.0, 0.45455);
-
- int bps = getBPS ();
-
-
-// if (bps==8 && bit_depth==16) png_set_strip_16(png);
-
- //updating png info struct
- png_read_update_info(png,info);
- png_get_IHDR(png,info,&width,&height,&bit_depth,&color_type,&interlace_type,
- &compression_type, &filter_method);
-
- if (color_type & PNG_COLOR_MASK_ALPHA)
- png_set_strip_alpha(png);
-
- png_read_update_info(png,info);
- png_get_IHDR(png,info,&width,&height,&bit_depth,&color_type,&interlace_type,
- &compression_type, &filter_method);
-
- allocate (width, height);
-
- int rowlen = width*3*bit_depth/8;
- unsigned char *row = new unsigned char [rowlen];
-
- for (unsigned int i=0;isetProgress ((double)(i+1)/height);
- }
-
- png_read_end (png, 0);
- png_destroy_read_struct (&png, &info, &end_info);
-
- delete [] row;
- fclose(file);
- if (pl) {
- pl->setProgressStr ("Ready.");
- pl->setProgress (1.0);
- }
- return IMIO_SUCCESS;
-}
-
-extern jmp_buf jpeg_jmp_buf;
-
-int ImageIO::loadJPEG (Glib::ustring fname) {
-
- FILE *file=g_fopen(fname.c_str(),"rb");
- if (!file)
- return IMIO_CANNOTREADFILE;
-
- jpeg_decompress_struct cinfo;
- jpeg_error_mgr jerr;
- cinfo.err = my_jpeg_std_error(&jerr);
- jpeg_create_decompress(&cinfo);
- my_jpeg_stdio_src (&cinfo,file);
-
- if (pl) {
- pl->setProgressStr ("Loading JPEG file...");
- pl->setProgress (0.0);
-
- }
-
- setup_read_icc_profile (&cinfo);
-
- if (!setjmp(jpeg_jmp_buf)) {
- jpeg_stdio_src(&cinfo,file);
- jpeg_read_header(&cinfo, TRUE);
-
- unsigned int proflen;
- delete loadedProfileData;
- loadedProfileData = NULL;
- bool hasprofile = read_icc_profile (&cinfo, (JOCTET**)&loadedProfileData, (unsigned int*)&loadedProfileLength);
- if (hasprofile)
- embProfile = cmsOpenProfileFromMem (loadedProfileData, loadedProfileLength);
- else
- embProfile = NULL;
-
- jpeg_start_decompress(&cinfo);
-
- int width = cinfo.output_width;
- int height = cinfo.output_height;
-
- allocate (width, height);
-
- unsigned char *row=new unsigned char[width*3];
- while (cinfo.output_scanline < height) {
- if (jpeg_read_scanlines(&cinfo,&row,1) < 1) {
- jpeg_finish_decompress(&cinfo);
- jpeg_destroy_decompress(&cinfo);
- delete [] row;
- return IMIO_READERROR;
- }
- setScanline (cinfo.output_scanline-1, row, 8);
-
- if (pl && !(cinfo.output_scanline%100))
- pl->setProgress ((double)(cinfo.output_scanline)/cinfo.output_height);
- }
- delete [] row;
-
- jpeg_finish_decompress(&cinfo);
- jpeg_destroy_decompress(&cinfo);
- fclose(file);
- if (pl) {
- pl->setProgressStr ("Ready.");
- pl->setProgress (1.0);
- }
- return IMIO_SUCCESS;
- }
- else {
- jpeg_destroy_decompress(&cinfo);
- return IMIO_READERROR;
- }
-}
-
-int ImageIO::loadTIFF (Glib::ustring fname) {
-
-#ifdef WIN32
- wchar_t *wfilename = (wchar_t*)g_utf8_to_utf16 (fname.c_str(), -1, NULL, NULL, NULL);
- TIFF* in = TIFFOpenW (wfilename, "r");
- g_free (wfilename);
-#else
- TIFF* in = TIFFOpen(fname.c_str(), "r");
-#endif
- if (in == NULL)
- return IMIO_CANNOTREADFILE;
-
- if (pl) {
- pl->setProgressStr ("Loading TIFF file...");
- pl->setProgress (0.0);
- }
-
- int width, height;
- TIFFGetField(in, TIFFTAG_IMAGEWIDTH, &width);
- TIFFGetField(in, TIFFTAG_IMAGELENGTH, &height);
-
- uint16 bitspersample, samplesperpixel;
- TIFFGetField(in, TIFFTAG_BITSPERSAMPLE, &bitspersample);
- TIFFGetField(in, TIFFTAG_SAMPLESPERPIXEL, &samplesperpixel);
- uint16 photometric;
- if (!TIFFGetField(in, TIFFTAG_PHOTOMETRIC, &photometric) ||
- photometric != PHOTOMETRIC_RGB || samplesperpixel < 3) {
- TIFFClose(in);
- return IMIO_VARIANTNOTSUPPORTED;
- }
-
- uint16 config;
- TIFFGetField(in, TIFFTAG_PLANARCONFIG, &config);
- if (config != PLANARCONFIG_CONTIG) {
- TIFFClose(in);
- return IMIO_VARIANTNOTSUPPORTED;
- }
-
- char* profdata;
- delete loadedProfileData;
- loadedProfileData = NULL;
- if (TIFFGetField(in, TIFFTAG_ICCPROFILE, &loadedProfileLength, &profdata)) {
- embProfile = cmsOpenProfileFromMem (profdata, loadedProfileLength);
- loadedProfileData = new char [loadedProfileLength];
- memcpy (loadedProfileData, profdata, loadedProfileLength);
- }
- else
- embProfile = NULL;
-
-
- allocate (width, height);
-
- unsigned char* linebuffer = new unsigned char[TIFFScanlineSize(in)];
- for (int row = 0; row < height; row++) {
- if (TIFFReadScanline(in, linebuffer, row, 0) <0) {
- TIFFClose(in);
- delete [] linebuffer;
- return IMIO_READERROR;
- }
- if (samplesperpixel>3)
- for (int i=0; isetProgress ((double)(row+1)/height);
- }
- TIFFClose(in);
- delete [] linebuffer;
-
- if (pl) {
- pl->setProgressStr ("Ready.");
- pl->setProgress (1.0);
- }
-
- return IMIO_SUCCESS;
-}
-
-
-int ImageIO::savePNG (Glib::ustring fname, int compression, int bps) {
-
- FILE* file=g_fopen(safe_locale_from_utf8(fname).c_str (),"wb");
-
- if (!file)
- return IMIO_CANNOTREADFILE;
-
- if (pl) {
- pl->setProgressStr ("Saving PNG file...");
- pl->setProgress (0.0);
- }
-
- png_structp png = png_create_write_struct (PNG_LIBPNG_VER_STRING,0,0,0);
- if (!png) {
- fclose (file);
- return IMIO_HEADERERROR;
- }
- png_infop info = png_create_info_struct(png);
- if (!info) {
- png_destroy_write_struct (&png,0);
- fclose (file);
- return IMIO_HEADERERROR;
- }
-
- if (setjmp(png_jmpbuf(png))) {
- png_destroy_write_struct (&png,&info);
- fclose(file);
- return IMIO_READERROR;
- }
-
- png_set_write_fn (png, file, png_write_data, png_flush);
-
- png_set_compression_level(png,compression);
-
- int width = getW ();
- int height = getH ();
- if (bps<0)
- bps = getBPS ();
-
- png_set_IHDR(png, info, width, height, bps, PNG_COLOR_TYPE_RGB,
- PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_BASE);
-
-
- int rowlen = width*3*bps/8;
- unsigned char *row = new unsigned char [rowlen];
-
- png_write_info(png,info);
- for (unsigned int i=0;isetProgress ((double)(i+1)/height);
- }
-
- png_write_end(png,info);
- png_destroy_write_struct(&png,&info);
-
- delete [] row;
- fclose (file);
-
- if (pl) {
- pl->setProgressStr ("Ready.");
- pl->setProgress (1.0);
- }
-
- return IMIO_SUCCESS;
-}
-
-
-int ImageIO::saveJPEG (Glib::ustring fname, int quality) {
-
- jpeg_compress_struct cinfo;
- jpeg_error_mgr jerr;
-
- cinfo.err = jpeg_std_error (&jerr);
- jpeg_create_compress (&cinfo);
-
- FILE *file = g_fopen (safe_locale_from_utf8(fname).c_str (), "wb");
-
- if (!file)
- return IMIO_CANNOTREADFILE;
-
- if (pl) {
- pl->setProgressStr ("Saving JPEG file...");
- pl->setProgress (0.0);
- }
-
- jpeg_stdio_dest (&cinfo, file);
-
- int width = getW ();
- int height = getH ();
-
- cinfo.image_width = width;
- cinfo.image_height = height;
- cinfo.in_color_space = JCS_RGB;
- cinfo.input_components = 3;
- jpeg_set_defaults (&cinfo);
- cinfo.write_JFIF_header = FALSE;
-
-
- if (quality>=0 && quality<=100)
- jpeg_set_quality (&cinfo, quality, true);
-
- jpeg_start_compress(&cinfo, TRUE);
-
- // buffer for exif and iptc markers
- unsigned char buffer[165535];
- unsigned int size;
- // assemble and write exif marker
- if (exifRoot) {
- int size = rtexif::ExifManager::createJPEGMarker (exifRoot, exifChange, cinfo.image_width, cinfo.image_height, buffer);
- if (size>0 && size<65530)
- jpeg_write_marker(&cinfo, JPEG_APP0+1, buffer, size);
- }
- // assemble and write iptc marker
- if (iptc) {
- unsigned char* iptcdata;
- bool error = false;
- if (iptc_data_save (iptc, &iptcdata, &size)) {
- if (iptcdata)
- iptc_data_free_buf (iptc, iptcdata);
- error = true;
- }
- int bytes = 0;
- if (!error && (bytes = iptc_jpeg_ps3_save_iptc (NULL, 0, iptcdata, size, buffer, 65532)) < 0) {
- if (iptcdata)
- iptc_data_free_buf (iptc, iptcdata);
- error = true;
- }
- if (!error)
- jpeg_write_marker(&cinfo, JPEG_APP0+13, buffer, bytes);
- }
- // write icc profile to the output
- if (profileData)
- write_icc_profile (&cinfo, (JOCTET*)profileData, profileLength);
-
- // write image data
- int rowlen = width*3;
- unsigned char *row = new unsigned char [rowlen];
-
- while (cinfo.next_scanline < cinfo.image_height) {
-
- getScanline (cinfo.next_scanline, row, 8);
-
- if (jpeg_write_scanlines (&cinfo, &row, 1) < 1) {
- jpeg_finish_compress (&cinfo);
- jpeg_destroy_compress (&cinfo);
- fclose (file);
- return IMIO_READERROR;
- }
-
- if (pl && !(cinfo.next_scanline%100))
- pl->setProgress ((double)(cinfo.next_scanline)/cinfo.image_height);
- }
-
- jpeg_finish_compress (&cinfo);
- jpeg_destroy_compress (&cinfo);
-
- delete [] row;
- fclose (file);
-
- if (pl) {
- pl->setProgressStr ("Ready.");
- pl->setProgress (1.0);
- }
-
- return IMIO_SUCCESS;
-}
-
-int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed) {
-
- int width = getW ();
- int height = getH ();
-
- if (bps<0)
- bps = getBPS ();
-
- int lineWidth = width*3*bps/8;
- unsigned char* linebuffer = new unsigned char[lineWidth];
-// TODO the following needs to be looked into - do we really need two ways to write a Tiff file ?
- if (exifRoot && uncompressed) {
- FILE *file = g_fopen (safe_locale_from_utf8(fname).c_str (), "wb");
-
- if (!file)
- return IMIO_CANNOTREADFILE;
-
- if (pl) {
- pl->setProgressStr ("Saving TIFF file ...");
- pl->setProgress (0.0);
- }
-
- // buffer for the exif and iptc
- unsigned char buffer[165535];
- unsigned char* iptcdata = NULL;
- unsigned int iptclen = 0;
- if (iptc && iptc_data_save (iptc, &iptcdata, &iptclen) && iptcdata) {
- iptc_data_free_buf (iptc, iptcdata);
- iptcdata = NULL;
- }
- int size = rtexif::ExifManager::createTIFFHeader (exifRoot, exifChange, width, height, bps, profileData, profileLength, (char*)iptcdata, iptclen, buffer);
- if (iptcdata)
- iptc_data_free_buf (iptc, iptcdata);
- if (size>0 && size<165530)
- fwrite (buffer, size, 1, file);
-
- bool needsReverse = bps==16 && exifRoot->getOrder()==rtexif::MOTOROLA;
-
- for (int i=0; isetProgress ((double)(i+1)/height);
- }
-
- fclose (file);
- }
- else {
- // little hack to get libTiff to use proper byte order (see TIFFClienOpen()):
- const char *mode = !exifRoot ? "w" : (exifRoot->getOrder()==rtexif::INTEL ? "wl":"wb");
- #ifdef WIN32
- wchar_t *wfilename = (wchar_t*)g_utf8_to_utf16 (fname.c_str(), -1, NULL, NULL, NULL);
- TIFF* out = TIFFOpenW (wfilename, mode);
- g_free (wfilename);
- #else
- TIFF* out = TIFFOpen(fname.c_str(), mode);
- #endif
- if (!out)
- return IMIO_CANNOTREADFILE;
-
- if (pl) {
- pl->setProgressStr ("Saving TIFF file ...");
- pl->setProgress (0.0);
- }
-
- if (exifRoot){
- rtexif::Tag *tag = exifRoot->getTag (TIFFTAG_EXIFIFD);
- if (tag && tag->isDirectory()){
- rtexif::TagDirectory *exif = tag->getDirectory();
- if (exif) {
- int exif_size = exif->calculateSize();
- unsigned char *buffer = new unsigned char[exif_size+8];
- // TIFFOpen writes out the header and sets file pointer at position 8
-
- exif->write (8, buffer);
- write (TIFFFileno (out), buffer+8, exif_size);
- delete buffer;
- // let libtiff know that scanlines or any other following stuff should go
- // at a different offset:
- TIFFSetWriteOffset (out, exif_size+8);
- TIFFSetField (out, TIFFTAG_EXIFIFD, 8);
- }
- }
-
-//TODO Even though we are saving EXIF IFD - MakerNote still comes out screwy.
-
- if ((tag = exifRoot->getTag (TIFFTAG_MODEL)) != NULL)
- TIFFSetField (out, TIFFTAG_MODEL, tag->getValue());
- if ((tag = exifRoot->getTag (TIFFTAG_MAKE)) != NULL)
- TIFFSetField (out, TIFFTAG_MAKE, tag->getValue());
- if ((tag = exifRoot->getTag (TIFFTAG_DATETIME)) != NULL)
- TIFFSetField (out, TIFFTAG_DATETIME, tag->getValue());
- if ((tag = exifRoot->getTag (TIFFTAG_ARTIST)) != NULL)
- TIFFSetField (out, TIFFTAG_ARTIST, tag->getValue());
- if ((tag = exifRoot->getTag (TIFFTAG_COPYRIGHT)) != NULL)
- TIFFSetField (out, TIFFTAG_COPYRIGHT, tag->getValue());
-
- }
-
- TIFFSetField (out, TIFFTAG_SOFTWARE, "RawTherapee 3");
- TIFFSetField (out, TIFFTAG_IMAGEWIDTH, width);
- TIFFSetField (out, TIFFTAG_IMAGELENGTH, height);
- TIFFSetField (out, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
- TIFFSetField (out, TIFFTAG_SAMPLESPERPIXEL, 3);
- TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, height);
- TIFFSetField (out, TIFFTAG_BITSPERSAMPLE, bps);
- TIFFSetField (out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
- TIFFSetField (out, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
- TIFFSetField (out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
- TIFFSetField (out, TIFFTAG_COMPRESSION, uncompressed ? COMPRESSION_NONE : COMPRESSION_DEFLATE);
- if (!uncompressed)
- TIFFSetField (out, TIFFTAG_PREDICTOR, PREDICTOR_NONE);
-
- if (profileData)
- TIFFSetField (out, TIFFTAG_ICCPROFILE, profileLength, profileData);
-
- for (int row = 0; row < height; row++) {
- getScanline (row, linebuffer, bps);
-
- if (TIFFWriteScanline (out, linebuffer, row, 0) < 0) {
- TIFFClose (out);
- delete [] linebuffer;
- return IMIO_READERROR;
- }
- if (pl && !(row%100))
- pl->setProgress ((double)(row+1)/height);
- }
- TIFFClose (out);
- }
-
- delete [] linebuffer;
- if (pl) {
- pl->setProgressStr ("Ready.");
- pl->setProgress (1.0);
- }
-
- return IMIO_SUCCESS;
-}
-
-// PNG read and write routines:
-
-void png_read_data(png_structp png_ptr, png_bytep data, png_size_t length) {
- png_size_t check;
-
- /* fread() returns 0 on error, so it is OK to store this in a png_size_t
- * instead of an int, which is what fread() actually returns.
- */
- check = (png_size_t)fread(data, (png_size_t)1, length, (FILE *)png_ptr->io_ptr);
-
- if (check != length)
- {
- png_error(png_ptr, "Read Error");
- }
-}
-
-void png_write_data(png_structp png_ptr, png_bytep data, png_size_t length) {
- png_uint_32 check;
-
- check = fwrite(data, 1, length, (FILE *)(png_ptr->io_ptr));
- if (check != length)
- {
- png_error(png_ptr, "Write Error");
- }
-}
-
-void png_flush(png_structp png_ptr) {
- FILE *io_ptr;
- io_ptr = (FILE *)CVT_PTR((png_ptr->io_ptr));
- if (io_ptr != NULL)
- fflush(io_ptr);
-}
-
-int ImageIO::load (Glib::ustring fname) {
-
- int lastdot = fname.find_last_of ('.');
-
- if (!fname.casefold().compare (lastdot, 4, ".png"))
- return loadPNG (fname);
- else if (!fname.casefold().compare (lastdot, 4, ".jpg"))
- return loadJPEG (fname);
- else if (!fname.casefold().compare (lastdot, 4, ".tif"))
- return loadTIFF (fname);
- else return IMIO_FILETYPENOTSUPPORTED;
-}
-
-int ImageIO::save (Glib::ustring fname) {
-
- int lastdot = fname.find_last_of ('.');
-
- if (!fname.casefold().compare (lastdot, 4, ".png"))
- return savePNG (fname);
- else if (!fname.casefold().compare (lastdot, 4, ".jpg"))
- return saveJPEG (fname);
- else if (!fname.casefold().compare (lastdot, 4, ".tif"))
- return saveTIFF (fname);
- else return IMIO_FILETYPENOTSUPPORTED;
-}
-
+/*
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2004-2010 Gabor Horvath
+ *
+ * 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
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+extern "C" {
+#include "jdatasrc.c"
+#include
+#include
+}
+#ifdef WIN32
+#include
+#else
+#include
+#endif
+#include
+#include
+
+Glib::ustring safe_locale_to_utf8 (const std::string& src);
+
+using namespace rtengine;
+using namespace rtengine::procparams;
+
+Glib::ustring ImageIO::errorMsg[6] = {"Success", "Cannot read file.", "Invalid header.","Error while reading header.","File reading error", "Image format not supported."};
+
+void ImageIO::setMetadata (const rtexif::TagDirectory* eroot, const std::vector& exif, const std::vector& iptcc) {
+
+ // store exif info
+ exifChange.resize (exif.size());
+ for (int i=0; iclone (NULL);
+
+ if (iptc)
+ iptc_data_free (iptc);
+ iptc = NULL;
+
+ // build iptc structures for libiptcdata
+ if (iptcc.size()==0)
+ return;
+
+ iptc = iptc_data_new ();
+ for (int i=0; i0) {
+ for (int j=0; j0) {
+ for (int j=0; j0) {
+ IptcDataSet * ds = iptc_dataset_new ();
+ iptc_dataset_set_tag (ds, IPTC_RECORD_APP_2, strTags[j].tag);
+ std::string loc = safe_locale_to_utf8(iptcc[i].values[0]);
+ iptc_dataset_set_data (ds, (unsigned char*)loc.c_str(), MIN(strTags[j].size,loc.size()), IPTC_DONT_VALIDATE);
+ iptc_data_add_dataset (iptc, ds);
+ iptc_dataset_unref (ds);
+ }
+ }
+ iptc_data_sort (iptc);
+}
+
+void ImageIO::setOutputProfile (char* pdata, int plen) {
+
+ delete [] profileData;
+ if (pdata) {
+ profileData = new char [plen];
+ memcpy (profileData, pdata, plen);
+ }
+ else
+ profileData = NULL;
+ profileLength = plen;
+}
+
+ImageIO::~ImageIO () {
+
+ if (embProfile)
+ cmsCloseProfile(embProfile);
+ delete loadedProfileData;
+ delete exifRoot;
+ delete profileData;
+}
+
+void png_read_data(png_struct_def *png_ptr, unsigned char *data, size_t length);
+void png_write_data(png_struct_def *png_ptr, unsigned char *data, size_t length);
+void png_flush(png_struct_def *png_ptr);
+
+int ImageIO::loadPNG (Glib::ustring fname) {
+
+ FILE *file = g_fopen (fname.c_str(),"rb");
+ if (!file)
+ return IMIO_CANNOTREADFILE;
+
+ if (pl) {
+ pl->setProgressStr ("Loading PNG file...");
+ pl->setProgress (0.0);
+ }
+
+ //reading PNG header
+ unsigned char header[8];
+ fread (header, 1, 8, file);
+ if (png_sig_cmp (header, 0, 8)) {
+ fclose(file);
+ return IMIO_HEADERERROR;
+ }
+ //initializing main structures
+ png_structp png = png_create_read_struct (PNG_LIBPNG_VER_STRING, 0, 0, 0);
+ if (!png) {
+ fclose (file);
+ return IMIO_HEADERERROR;
+ }
+ png_infop info = png_create_info_struct (png);
+ png_infop end_info = png_create_info_struct (png);
+ if (!end_info || !info) {
+ png_destroy_read_struct (&png, &info, &end_info);
+ fclose (file);
+ return IMIO_HEADERERROR;
+ }
+
+ if (setjmp (png_jmpbuf(png))) {
+ png_destroy_read_struct (&png, &info, &end_info);
+ fclose (file);
+ return IMIO_READERROR;
+ }
+
+ //set up png read
+ png_set_read_fn (png, file, png_read_data);
+ png_set_sig_bytes (png,8);
+
+ png_read_info(png,info);
+
+ embProfile = NULL;
+
+ //retrieving image information
+ png_uint_32 width,height;
+ int bit_depth,color_type,interlace_type,compression_type,filter_method;
+ png_get_IHDR(png,info,&width,&height,&bit_depth,&color_type,&interlace_type,
+ &compression_type, &filter_method);
+
+ //converting to 32bpp format
+ if (color_type==PNG_COLOR_TYPE_PALETTE) png_set_palette_to_rgb(png);
+
+ if (color_type==PNG_COLOR_TYPE_GRAY || color_type==PNG_COLOR_TYPE_GRAY_ALPHA)
+ png_set_gray_to_rgb(png);
+
+ if (png_get_valid(png,info,PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png);
+
+ if (interlace_type!=PNG_INTERLACE_NONE) {
+ png_destroy_read_struct (&png, &info, &end_info);
+ fclose (file);
+ return IMIO_VARIANTNOTSUPPORTED;
+ }
+
+ if (color_type & PNG_COLOR_MASK_ALPHA)
+ png_set_strip_alpha(png);
+
+ //setting gamma
+ double gamma;
+ if (png_get_gAMA(png,info,&gamma))
+ png_set_gamma(png, 2.0, gamma);
+ else
+ png_set_gamma(png,2.0, 0.45455);
+
+ int bps = getBPS ();
+
+
+// if (bps==8 && bit_depth==16) png_set_strip_16(png);
+
+ //updating png info struct
+ png_read_update_info(png,info);
+ png_get_IHDR(png,info,&width,&height,&bit_depth,&color_type,&interlace_type,
+ &compression_type, &filter_method);
+
+ if (color_type & PNG_COLOR_MASK_ALPHA)
+ png_set_strip_alpha(png);
+
+ png_read_update_info(png,info);
+ png_get_IHDR(png,info,&width,&height,&bit_depth,&color_type,&interlace_type,
+ &compression_type, &filter_method);
+
+ allocate (width, height);
+
+ int rowlen = width*3*bit_depth/8;
+ unsigned char *row = new unsigned char [rowlen];
+
+ for (unsigned int i=0;isetProgress ((double)(i+1)/height);
+ }
+
+ png_read_end (png, 0);
+ png_destroy_read_struct (&png, &info, &end_info);
+
+ delete [] row;
+ fclose(file);
+ if (pl) {
+ pl->setProgressStr ("Ready.");
+ pl->setProgress (1.0);
+ }
+ return IMIO_SUCCESS;
+}
+
+extern jmp_buf jpeg_jmp_buf;
+
+extern "C" {
+void jpeg_memory_src (jpeg_decompress_struct* cinfo, const char* buffer, int bufsize);
+}
+
+int ImageIO::loadJPEGFromMemory (const char* buffer, int bufsize)
+{
+ jpeg_decompress_struct cinfo;
+ jpeg_error_mgr jerr;
+ cinfo.err = my_jpeg_std_error(&jerr);
+ jpeg_create_decompress(&cinfo);
+ jpeg_memory_src (&cinfo,buffer,bufsize);
+
+ if (pl) {
+ pl->setProgressStr ("Loading JPEG file...");
+ pl->setProgress (0.0);
+
+ }
+
+ setup_read_icc_profile (&cinfo);
+
+ if (!setjmp(jpeg_jmp_buf)) {
+ jpeg_memory_src (&cinfo,buffer,bufsize);
+ jpeg_read_header(&cinfo, TRUE);
+
+ unsigned int proflen;
+ delete loadedProfileData;
+ loadedProfileData = NULL;
+ bool hasprofile = read_icc_profile (&cinfo, (JOCTET**)&loadedProfileData, (unsigned int*)&loadedProfileLength);
+ if (hasprofile)
+ embProfile = cmsOpenProfileFromMem (loadedProfileData, loadedProfileLength);
+ else
+ embProfile = NULL;
+
+ jpeg_start_decompress(&cinfo);
+
+ int width = cinfo.output_width;
+ int height = cinfo.output_height;
+
+ allocate (width, height);
+
+ unsigned char *row=new unsigned char[width*3];
+ while (cinfo.output_scanline < height) {
+ if (jpeg_read_scanlines(&cinfo,&row,1) < 1) {
+ jpeg_finish_decompress(&cinfo);
+ jpeg_destroy_decompress(&cinfo);
+ delete [] row;
+ return IMIO_READERROR;
+ }
+ setScanline (cinfo.output_scanline-1, row, 8);
+
+ if (pl && !(cinfo.output_scanline%100))
+ pl->setProgress ((double)(cinfo.output_scanline)/cinfo.output_height);
+ }
+ delete [] row;
+
+ jpeg_finish_decompress(&cinfo);
+ jpeg_destroy_decompress(&cinfo);
+ if (pl) {
+ pl->setProgressStr ("Ready.");
+ pl->setProgress (1.0);
+ }
+ return IMIO_SUCCESS;
+ }
+ else {
+ jpeg_destroy_decompress(&cinfo);
+ return IMIO_READERROR;
+ }
+}
+
+int ImageIO::loadJPEG (Glib::ustring fname) {
+
+ FILE *file=g_fopen(fname.c_str(),"rb");
+ if (!file)
+ return IMIO_CANNOTREADFILE;
+
+ jpeg_decompress_struct cinfo;
+ jpeg_error_mgr jerr;
+ cinfo.err = my_jpeg_std_error(&jerr);
+ jpeg_create_decompress(&cinfo);
+ my_jpeg_stdio_src (&cinfo,file);
+
+ if (pl) {
+ pl->setProgressStr ("Loading JPEG file...");
+ pl->setProgress (0.0);
+
+ }
+
+ setup_read_icc_profile (&cinfo);
+
+ if (!setjmp(jpeg_jmp_buf)) {
+ jpeg_stdio_src(&cinfo,file);
+ jpeg_read_header(&cinfo, TRUE);
+
+ unsigned int proflen;
+ delete loadedProfileData;
+ loadedProfileData = NULL;
+ bool hasprofile = read_icc_profile (&cinfo, (JOCTET**)&loadedProfileData, (unsigned int*)&loadedProfileLength);
+ if (hasprofile)
+ embProfile = cmsOpenProfileFromMem (loadedProfileData, loadedProfileLength);
+ else
+ embProfile = NULL;
+
+ jpeg_start_decompress(&cinfo);
+
+ int width = cinfo.output_width;
+ int height = cinfo.output_height;
+
+ allocate (width, height);
+
+ unsigned char *row=new unsigned char[width*3];
+ while (cinfo.output_scanline < height) {
+ if (jpeg_read_scanlines(&cinfo,&row,1) < 1) {
+ jpeg_finish_decompress(&cinfo);
+ jpeg_destroy_decompress(&cinfo);
+ delete [] row;
+ return IMIO_READERROR;
+ }
+ setScanline (cinfo.output_scanline-1, row, 8);
+
+ if (pl && !(cinfo.output_scanline%100))
+ pl->setProgress ((double)(cinfo.output_scanline)/cinfo.output_height);
+ }
+ delete [] row;
+
+ jpeg_finish_decompress(&cinfo);
+ jpeg_destroy_decompress(&cinfo);
+ fclose(file);
+ if (pl) {
+ pl->setProgressStr ("Ready.");
+ pl->setProgress (1.0);
+ }
+ return IMIO_SUCCESS;
+ }
+ else {
+ jpeg_destroy_decompress(&cinfo);
+ return IMIO_READERROR;
+ }
+}
+
+int ImageIO::loadTIFF (Glib::ustring fname) {
+
+#ifdef WIN32
+ wchar_t *wfilename = (wchar_t*)g_utf8_to_utf16 (fname.c_str(), -1, NULL, NULL, NULL);
+ TIFF* in = TIFFOpenW (wfilename, "r");
+ g_free (wfilename);
+#else
+ TIFF* in = TIFFOpen(fname.c_str(), "r");
+#endif
+ if (in == NULL)
+ return IMIO_CANNOTREADFILE;
+
+ if (pl) {
+ pl->setProgressStr ("Loading TIFF file...");
+ pl->setProgress (0.0);
+ }
+
+ int width, height;
+ TIFFGetField(in, TIFFTAG_IMAGEWIDTH, &width);
+ TIFFGetField(in, TIFFTAG_IMAGELENGTH, &height);
+
+ uint16 bitspersample, samplesperpixel;
+ TIFFGetField(in, TIFFTAG_BITSPERSAMPLE, &bitspersample);
+ TIFFGetField(in, TIFFTAG_SAMPLESPERPIXEL, &samplesperpixel);
+ uint16 photometric;
+ if (!TIFFGetField(in, TIFFTAG_PHOTOMETRIC, &photometric) ||
+ photometric != PHOTOMETRIC_RGB || samplesperpixel < 3) {
+ TIFFClose(in);
+ return IMIO_VARIANTNOTSUPPORTED;
+ }
+
+ uint16 config;
+ TIFFGetField(in, TIFFTAG_PLANARCONFIG, &config);
+ if (config != PLANARCONFIG_CONTIG) {
+ TIFFClose(in);
+ return IMIO_VARIANTNOTSUPPORTED;
+ }
+
+ char* profdata;
+ delete loadedProfileData;
+ loadedProfileData = NULL;
+ if (TIFFGetField(in, TIFFTAG_ICCPROFILE, &loadedProfileLength, &profdata)) {
+ embProfile = cmsOpenProfileFromMem (profdata, loadedProfileLength);
+ loadedProfileData = new char [loadedProfileLength];
+ memcpy (loadedProfileData, profdata, loadedProfileLength);
+ }
+ else
+ embProfile = NULL;
+
+
+ allocate (width, height);
+
+ unsigned char* linebuffer = new unsigned char[TIFFScanlineSize(in)];
+ for (int row = 0; row < height; row++) {
+ if (TIFFReadScanline(in, linebuffer, row, 0) <0) {
+ TIFFClose(in);
+ delete [] linebuffer;
+ return IMIO_READERROR;
+ }
+ if (samplesperpixel>3)
+ for (int i=0; isetProgress ((double)(row+1)/height);
+ }
+ TIFFClose(in);
+ delete [] linebuffer;
+
+ if (pl) {
+ pl->setProgressStr ("Ready.");
+ pl->setProgress (1.0);
+ }
+
+ return IMIO_SUCCESS;
+}
+
+
+int ImageIO::savePNG (Glib::ustring fname, int compression, int bps) {
+
+ // create a temporary file name that is opened in parallel by e.g. image viewers whilte RT is still writing
+ Glib::ustring tmpFname=fname;
+ tmpFname.append(".tmp");
+
+ FILE *file = g_fopen (safe_locale_from_utf8(tmpFname).c_str (), "wb");
+
+ if (!file)
+ return IMIO_CANNOTREADFILE;
+
+ if (pl) {
+ pl->setProgressStr ("Saving PNG file...");
+ pl->setProgress (0.0);
+ }
+
+ png_structp png = png_create_write_struct (PNG_LIBPNG_VER_STRING,0,0,0);
+ if (!png) {
+ fclose (file);
+ return IMIO_HEADERERROR;
+ }
+ png_infop info = png_create_info_struct(png);
+ if (!info) {
+ png_destroy_write_struct (&png,0);
+ fclose (file);
+ return IMIO_HEADERERROR;
+ }
+
+ if (setjmp(png_jmpbuf(png))) {
+ png_destroy_write_struct (&png,&info);
+ fclose(file);
+ return IMIO_READERROR;
+ }
+
+ png_set_write_fn (png, file, png_write_data, png_flush);
+
+ png_set_compression_level(png,compression);
+
+ int width = getW ();
+ int height = getH ();
+ if (bps<0)
+ bps = getBPS ();
+
+ png_set_IHDR(png, info, width, height, bps, PNG_COLOR_TYPE_RGB,
+ PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_BASE);
+
+
+ int rowlen = width*3*bps/8;
+ unsigned char *row = new unsigned char [rowlen];
+
+ png_write_info(png,info);
+ for (unsigned int i=0;isetProgress ((double)(i+1)/height);
+ }
+
+ png_write_end(png,info);
+ png_destroy_write_struct(&png,&info);
+
+ delete [] row;
+ fclose (file);
+
+ // Rename temporary filename, practically atomic
+ g_rename(safe_locale_from_utf8(tmpFname).c_str (),safe_locale_from_utf8(fname).c_str ());
+
+ if (pl) {
+ pl->setProgressStr ("Ready.");
+ pl->setProgress (1.0);
+ }
+
+ return IMIO_SUCCESS;
+}
+
+
+int ImageIO::saveJPEG (Glib::ustring fname, int quality) {
+
+ jpeg_compress_struct cinfo;
+ jpeg_error_mgr jerr;
+
+ cinfo.err = jpeg_std_error (&jerr);
+ jpeg_create_compress (&cinfo);
+
+ // create a temporary file name that is opened in parallel by e.g. image viewers whilte RT is still writing
+ Glib::ustring tmpFname=fname;
+ tmpFname.append(".tmp");
+
+ FILE *file = g_fopen (safe_locale_from_utf8(tmpFname).c_str (), "wb");
+
+ if (!file)
+ return IMIO_CANNOTREADFILE;
+
+ if (pl) {
+ pl->setProgressStr ("Saving JPEG file...");
+ pl->setProgress (0.0);
+ }
+
+ jpeg_stdio_dest (&cinfo, file);
+
+ int width = getW ();
+ int height = getH ();
+
+ cinfo.image_width = width;
+ cinfo.image_height = height;
+ cinfo.in_color_space = JCS_RGB;
+ cinfo.input_components = 3;
+ jpeg_set_defaults (&cinfo);
+ cinfo.write_JFIF_header = FALSE;
+
+ // compute optimal Huffman coding tables for the image. Bit slower to generate, but size of result image is a bit less (default was FALSE)
+ cinfo.optimize_coding = TRUE;
+
+ // Since math coprocessors are common these days, FLOAT should be a bit more accurate AND fast (default is ISLOW)
+ // (machine dependency is not really an issue, since we all run on x86 and having exactly the same file is not a requirement)
+ cinfo.dct_method = JDCT_FLOAT;
+
+ if (quality>=0 && quality<=100)
+ jpeg_set_quality (&cinfo, quality, true);
+
+ jpeg_start_compress(&cinfo, TRUE);
+
+ // buffer for exif and iptc markers
+ unsigned char buffer[165535];
+ unsigned int size;
+ // assemble and write exif marker
+ if (exifRoot) {
+ int size = rtexif::ExifManager::createJPEGMarker (exifRoot, exifChange, cinfo.image_width, cinfo.image_height, buffer);
+ if (size>0 && size<65530)
+ jpeg_write_marker(&cinfo, JPEG_APP0+1, buffer, size);
+ }
+ // assemble and write iptc marker
+ if (iptc) {
+ unsigned char* iptcdata;
+ bool error = false;
+ if (iptc_data_save (iptc, &iptcdata, &size)) {
+ if (iptcdata)
+ iptc_data_free_buf (iptc, iptcdata);
+ error = true;
+ }
+ int bytes = 0;
+ if (!error && (bytes = iptc_jpeg_ps3_save_iptc (NULL, 0, iptcdata, size, buffer, 65532)) < 0) {
+ if (iptcdata)
+ iptc_data_free_buf (iptc, iptcdata);
+ error = true;
+ }
+ if (!error)
+ jpeg_write_marker(&cinfo, JPEG_APP0+13, buffer, bytes);
+ }
+ // write icc profile to the output
+ if (profileData)
+ write_icc_profile (&cinfo, (JOCTET*)profileData, profileLength);
+
+ // write image data
+ int rowlen = width*3;
+ unsigned char *row = new unsigned char [rowlen];
+
+ while (cinfo.next_scanline < cinfo.image_height) {
+
+ getScanline (cinfo.next_scanline, row, 8);
+
+ if (jpeg_write_scanlines (&cinfo, &row, 1) < 1) {
+ jpeg_finish_compress (&cinfo);
+ jpeg_destroy_compress (&cinfo);
+ fclose (file);
+ return IMIO_READERROR;
+ }
+
+ if (pl && !(cinfo.next_scanline%100))
+ pl->setProgress ((double)(cinfo.next_scanline)/cinfo.image_height);
+ }
+
+ jpeg_finish_compress (&cinfo);
+ jpeg_destroy_compress (&cinfo);
+
+ delete [] row;
+ fclose (file);
+
+ // Rename temporary filename, practically atomic
+ g_rename(safe_locale_from_utf8(tmpFname).c_str (),safe_locale_from_utf8(fname).c_str ());
+
+ if (pl) {
+ pl->setProgressStr ("Ready.");
+ pl->setProgress (1.0);
+ }
+
+ return IMIO_SUCCESS;
+}
+
+int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed) {
+
+ int width = getW ();
+ int height = getH ();
+
+ if (bps<0)
+ bps = getBPS ();
+
+ int lineWidth = width*3*bps/8;
+ unsigned char* linebuffer = new unsigned char[lineWidth];
+// TODO the following needs to be looked into - do we really need two ways to write a Tiff file ?
+ if (exifRoot && uncompressed) {
+ FILE *file = g_fopen (safe_locale_from_utf8(fname).c_str (), "wb");
+
+ if (!file)
+ return IMIO_CANNOTREADFILE;
+
+ if (pl) {
+ pl->setProgressStr ("Saving TIFF file ...");
+ pl->setProgress (0.0);
+ }
+
+ // buffer for the exif and iptc
+ unsigned char buffer[165535];
+ unsigned char* iptcdata = NULL;
+ unsigned int iptclen = 0;
+ if (iptc && iptc_data_save (iptc, &iptcdata, &iptclen) && iptcdata) {
+ iptc_data_free_buf (iptc, iptcdata);
+ iptcdata = NULL;
+ }
+ int size = rtexif::ExifManager::createTIFFHeader (exifRoot, exifChange, width, height, bps, profileData, profileLength, (char*)iptcdata, iptclen, buffer);
+ if (iptcdata)
+ iptc_data_free_buf (iptc, iptcdata);
+ if (size>0 && size<165530)
+ fwrite (buffer, size, 1, file);
+
+ bool needsReverse = bps==16 && exifRoot->getOrder()==rtexif::MOTOROLA;
+
+ for (int i=0; isetProgress ((double)(i+1)/height);
+ }
+
+ fclose (file);
+ }
+ else {
+ // little hack to get libTiff to use proper byte order (see TIFFClienOpen()):
+ const char *mode = !exifRoot ? "w" : (exifRoot->getOrder()==rtexif::INTEL ? "wl":"wb");
+ #ifdef WIN32
+ wchar_t *wfilename = (wchar_t*)g_utf8_to_utf16 (fname.c_str(), -1, NULL, NULL, NULL);
+ TIFF* out = TIFFOpenW (wfilename, mode);
+ g_free (wfilename);
+ #else
+ TIFF* out = TIFFOpen(fname.c_str(), mode);
+ #endif
+ if (!out)
+ return IMIO_CANNOTREADFILE;
+
+ if (pl) {
+ pl->setProgressStr ("Saving TIFF file ...");
+ pl->setProgress (0.0);
+ }
+
+ if (exifRoot){
+ rtexif::Tag *tag = exifRoot->getTag (TIFFTAG_EXIFIFD);
+ if (tag && tag->isDirectory()){
+ rtexif::TagDirectory *exif = tag->getDirectory();
+ if (exif) {
+ int exif_size = exif->calculateSize();
+ unsigned char *buffer = new unsigned char[exif_size+8];
+ // TIFFOpen writes out the header and sets file pointer at position 8
+
+ exif->write (8, buffer);
+ write (TIFFFileno (out), buffer+8, exif_size);
+ delete buffer;
+ // let libtiff know that scanlines or any other following stuff should go
+ // at a different offset:
+ TIFFSetWriteOffset (out, exif_size+8);
+ TIFFSetField (out, TIFFTAG_EXIFIFD, 8);
+ }
+ }
+
+//TODO Even though we are saving EXIF IFD - MakerNote still comes out screwy.
+
+ if ((tag = exifRoot->getTag (TIFFTAG_MODEL)) != NULL)
+ TIFFSetField (out, TIFFTAG_MODEL, tag->getValue());
+ if ((tag = exifRoot->getTag (TIFFTAG_MAKE)) != NULL)
+ TIFFSetField (out, TIFFTAG_MAKE, tag->getValue());
+ if ((tag = exifRoot->getTag (TIFFTAG_DATETIME)) != NULL)
+ TIFFSetField (out, TIFFTAG_DATETIME, tag->getValue());
+ if ((tag = exifRoot->getTag (TIFFTAG_ARTIST)) != NULL)
+ TIFFSetField (out, TIFFTAG_ARTIST, tag->getValue());
+ if ((tag = exifRoot->getTag (TIFFTAG_COPYRIGHT)) != NULL)
+ TIFFSetField (out, TIFFTAG_COPYRIGHT, tag->getValue());
+
+ }
+
+ TIFFSetField (out, TIFFTAG_SOFTWARE, "RawTherapee 3");
+ TIFFSetField (out, TIFFTAG_IMAGEWIDTH, width);
+ TIFFSetField (out, TIFFTAG_IMAGELENGTH, height);
+ TIFFSetField (out, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
+ TIFFSetField (out, TIFFTAG_SAMPLESPERPIXEL, 3);
+ TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, height);
+ TIFFSetField (out, TIFFTAG_BITSPERSAMPLE, bps);
+ TIFFSetField (out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
+ TIFFSetField (out, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
+ TIFFSetField (out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
+ TIFFSetField (out, TIFFTAG_COMPRESSION, uncompressed ? COMPRESSION_NONE : COMPRESSION_DEFLATE);
+ if (!uncompressed)
+ TIFFSetField (out, TIFFTAG_PREDICTOR, PREDICTOR_NONE);
+
+ if (profileData)
+ TIFFSetField (out, TIFFTAG_ICCPROFILE, profileLength, profileData);
+
+ for (int row = 0; row < height; row++) {
+ getScanline (row, linebuffer, bps);
+
+ if (TIFFWriteScanline (out, linebuffer, row, 0) < 0) {
+ TIFFClose (out);
+ delete [] linebuffer;
+ return IMIO_READERROR;
+ }
+ if (pl && !(row%100))
+ pl->setProgress ((double)(row+1)/height);
+ }
+ TIFFClose (out);
+ }
+
+ delete [] linebuffer;
+ if (pl) {
+ pl->setProgressStr ("Ready.");
+ pl->setProgress (1.0);
+ }
+
+ return IMIO_SUCCESS;
+}
+
+// PNG read and write routines:
+
+void png_read_data(png_structp png_ptr, png_bytep data, png_size_t length) {
+ png_size_t check;
+
+ /* fread() returns 0 on error, so it is OK to store this in a png_size_t
+ * instead of an int, which is what fread() actually returns.
+ */
+ check = (png_size_t)fread(data, (png_size_t)1, length, (FILE *)png_ptr->io_ptr);
+
+ if (check != length)
+ {
+ png_error(png_ptr, "Read Error");
+ }
+}
+
+void png_write_data(png_structp png_ptr, png_bytep data, png_size_t length) {
+ png_uint_32 check;
+
+ check = fwrite(data, 1, length, (FILE *)(png_ptr->io_ptr));
+ if (check != length)
+ {
+ png_error(png_ptr, "Write Error");
+ }
+}
+
+void png_flush(png_structp png_ptr) {
+ FILE *io_ptr;
+ io_ptr = (FILE *)CVT_PTR((png_ptr->io_ptr));
+ if (io_ptr != NULL)
+ fflush(io_ptr);
+}
+
+int ImageIO::load (Glib::ustring fname) {
+
+ int lastdot = fname.find_last_of ('.');
+
+ if (!fname.casefold().compare (lastdot, 4, ".png"))
+ return loadPNG (fname);
+ else if (!fname.casefold().compare (lastdot, 4, ".jpg"))
+ return loadJPEG (fname);
+ else if (!fname.casefold().compare (lastdot, 4, ".tif"))
+ return loadTIFF (fname);
+ else return IMIO_FILETYPENOTSUPPORTED;
+}
+
+int ImageIO::save (Glib::ustring fname) {
+
+ int lastdot = fname.find_last_of ('.');
+
+ if (!fname.casefold().compare (lastdot, 4, ".png"))
+ return savePNG (fname);
+ else if (!fname.casefold().compare (lastdot, 4, ".jpg"))
+ return saveJPEG (fname);
+ else if (!fname.casefold().compare (lastdot, 4, ".tif"))
+ return saveTIFF (fname);
+ else return IMIO_FILETYPENOTSUPPORTED;
+}
+
diff --git a/rtengine/imageio.h b/rtengine/imageio.h
index 5c7a2a033..a036060b0 100644
--- a/rtengine/imageio.h
+++ b/rtengine/imageio.h
@@ -72,6 +72,8 @@ class ImageIO {
int loadJPEG (Glib::ustring fname);
int loadTIFF (Glib::ustring fname);
+ int loadJPEGFromMemory (const char* buffer, int bufsize);
+
int savePNG (Glib::ustring fname, int compression = -1, int bps = -1);
int saveJPEG (Glib::ustring fname, int quality = 100);
int saveTIFF (Glib::ustring fname, int bps = -1, bool uncompressed = false);
diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h
index 1d4850e01..ceecf37b2 100644
--- a/rtengine/imagesource.h
+++ b/rtengine/imagesource.h
@@ -65,7 +65,7 @@ class ImageSource : public InitialImage {
ImageSource () : references (1), embProfile(NULL), idata(NULL) {}
virtual ~ImageSource () {}
- virtual int load (Glib::ustring fname) =0;
+ virtual int load (Glib::ustring fname, bool batch = false) =0;
virtual void preprocess (const RAWParams &raw){};
virtual void demosaic (const RAWParams &raw){};
virtual void getImage (ColorTemp ctemp, int tran, Image16* image, PreviewProps pp, HRecParams hlp, ColorManagementParams cmp, RAWParams raw) {}
diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc
index 03f3fb78a..44715697d 100644
--- a/rtengine/improccoordinator.cc
+++ b/rtengine/improccoordinator.cc
@@ -20,6 +20,7 @@
#include
#include
#include
+#include
#define CLIPTO(a,b,c) ((a)>b?((a)getDefGain(), imgsrc->getGamma(), true, params.toneCurve.curve, vhist16, tonecurve, bcrgbhist, scale==1 ? 1 : 1);
- ipf.rgbProc (oprevi, oprevl, tonecurve, shmap);
+ CurveFactory::complexCurve (params.toneCurve.expcomp, params.toneCurve.black/65535.0, params.toneCurve.hlcompr, params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, imgsrc->getDefGain(), imgsrc->getGamma(), true, params.toneCurve.curve, vhist16, tonecurve1, tonecurve2, bcrgbhist, scale==1 ? 1 : 1);
+ ipf.rgbProc (oprevi, oprevl, tonecurve1, tonecurve2, shmap);
// recompute luminance histogram
memset (lhist16, 0, 65536*sizeof(int));
@@ -176,15 +177,23 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) {
}
readyphase++;
- if (todo & M_LUMACURVE)
- CurveFactory::complexCurve (0.0, 0.0, 0.0, 0.0, params.lumaCurve.brightness, params.lumaCurve.contrast, 0.0, 0.0, false, params.lumaCurve.curve, lhist16, lumacurve, bcLhist, scale==1 ? 1 : 16);
-
+ if (todo & M_LUMACURVE) {
+ CurveFactory::complexCurve (0.0, 0.0, 0.0, 0.0, params.labCurve.brightness, params.labCurve.contrast, 0.0, 0.0, false, params.labCurve.lcurve, lhist16, lumacurve1, lumacurve2, bcLhist, scale==1 ? 1 : 16);
+ CurveFactory::complexsgnCurve (0.0, 100.0, params.labCurve.saturation, 1.0, params.labCurve.acurve, chroma_acurve, scale==1 ? 1 : 16);
+ CurveFactory::complexsgnCurve (0.0, 100.0, params.labCurve.saturation, 1.0, params.labCurve.bcurve, chroma_bcurve, scale==1 ? 1 : 16);
+ }
+
+
if (todo & (M_LUMINANCE+M_COLOR) ) {
progress ("Applying Luminance Curve...",100*readyphase/numofphases);
- ipf.luminanceCurve (oprevl, nprevl, lumacurve, 0, pH);
+ ipf.luminanceCurve (oprevl, nprevl, lumacurve2, 0, pH);
+
readyphase++;
progress ("Applying Color Boost...",100*readyphase/numofphases);
- ipf.colorCurve (oprevl, nprevl);
+ ipf.chrominanceCurve (oprevl, nprevl, 0, chroma_acurve, 0, pH);
+ ipf.chrominanceCurve (oprevl, nprevl, 1, chroma_bcurve, 0, pH);
+ ipf.colorCurve (nprevl, nprevl);
+
readyphase++;
if (scale==1) {
progress ("Denoising luminance impulse...",100*readyphase/numofphases);
@@ -228,7 +237,16 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall) {
progress ("Conversion to RGB...",100*readyphase/numofphases);
if (todo!=CROP) {
previmg->getMutex().lock();
- ipf.lab2rgb (nprevl, previmg);
+ try
+ {
+ ipf.lab2rgb (nprevl, previmg);
+ }
+ catch(char * str)
+ {
+ progress ("Error converting file...",0);
+ mProcessing.unlock ();
+ return;
+ }
previmg->getMutex().unlock();
}
if (!resultValid) {
@@ -538,7 +556,11 @@ void ImProcCoordinator::startProcessing () {
thread = NULL;
updaterRunning = true;
updaterThreadStart.unlock ();
- thread = Glib::Thread::create(sigc::mem_fun(*this, &ImProcCoordinator::process), 0, false, true, Glib::THREAD_PRIORITY_NORMAL);
+
+ batchThread->yield(); //the running batch should wait other threads to avoid conflict
+
+ thread = Glib::Thread::create(sigc::mem_fun(*this, &ImProcCoordinator::process), 0, true, true, Glib::THREAD_PRIORITY_NORMAL);
+
}
else
updaterThreadStart.unlock ();
diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h
index cf81c20b4..b45857acb 100644
--- a/rtengine/improccoordinator.h
+++ b/rtengine/improccoordinator.h
@@ -62,13 +62,18 @@ class ImProcCoordinator : public StagedImageProcessor {
void freeAll ();
- int tonecurve [65536];
- int lumacurve [65536];
+ int tonecurve1 [65536];
+ int tonecurve2 [65536];
+
+ int lumacurve1 [65536];
+ int lumacurve2 [65536];
+ int chroma_acurve [65536];
+ int chroma_bcurve [65536];
unsigned int vhist16[65536];
unsigned int lhist16[65536];
- unsigned int rhist[256], ghist[256], bhist[256], Lhist[256], bcrgbhist[256], bcLhist[256];
+ unsigned int rhist[256], ghist[256], bhist[256], Lhist[256], bcrgbhist[256], bcLhist[256], bcabhist[256];
int fw, fh, tr, fullw, fullh;
int pW, pH;
diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc
index 7b11e1a79..07e771092 100644
--- a/rtengine/improcfun.cc
+++ b/rtengine/improcfun.cc
@@ -124,7 +124,7 @@ void ImProcFunctions::setScale (double iscale) {
void ImProcFunctions::firstAnalysis_ (Image16* original, Glib::ustring wprofile, unsigned int* histogram, int* chroma_radius, int row_from, int row_to) {
- TMatrix wprof = iccStore.workingSpaceMatrix (wprofile);
+ TMatrix wprof = iccStore->workingSpaceMatrix (wprofile);
int toxyz[3][3];
toxyz[0][0] = round(32768.0 * wprof[0][0] / 0.96422);
toxyz[1][0] = round(32768.0 * wprof[1][0] / 0.96422);
@@ -184,12 +184,12 @@ void ImProcFunctions::firstAnalysis (Image16* original, const ProcParams* params
if (monitorTransform)
cmsDeleteTransform (monitorTransform);
monitorTransform = NULL;
- cmsHPROFILE monitor = iccStore.getProfile ("file:"+settings->monitorProfile);
+ cmsHPROFILE monitor = iccStore->getProfile ("file:"+settings->monitorProfile);
if (monitor) {
- cmsHPROFILE iprof = iccStore.getXYZProfile ();
- cmsHPROFILE oprof = iccStore.getProfile (params->icm.output);
+ cmsHPROFILE iprof = iccStore->getXYZProfile ();
+ cmsHPROFILE oprof = iccStore->getProfile (params->icm.output);
if (!oprof)
- oprof = iccStore.getsRGBProfile ();
+ oprof = iccStore->getsRGBProfile ();
lcmsMutex->lock ();
monitorTransform = cmsCreateTransform (iprof, TYPE_RGB_16, monitor, TYPE_RGB_8, settings->colorimetricIntent, 0);
lcmsMutex->unlock ();
@@ -245,7 +245,7 @@ void ImProcFunctions::firstAnalysis (Image16* original, const ProcParams* params
delete [] hist;
}
-void ImProcFunctions::rgbProc (Image16* working, LabImage* lab, int* tonecurve, SHMap* shmap) {
+void ImProcFunctions::rgbProc (Image16* working, LabImage* lab, int* tonecurve1, int* tonecurve2, SHMap* shmap) {
int h_th, s_th;
if (shmap) {
@@ -257,7 +257,7 @@ void ImProcFunctions::rgbProc (Image16* working, LabImage* lab, int* tonecurve,
bool processLCE = params->sh.enabled && shmap!=NULL && params->sh.localcontrast>0;
double lceamount = params->sh.localcontrast / 200.0;
- TMatrix wprof = iccStore.workingSpaceMatrix (params->icm.working);
+ TMatrix wprof = iccStore->workingSpaceMatrix (params->icm.working);
int toxyz[3][3] = {
{
floor(32768.0 * wprof[0][0] / 0.96422),
@@ -321,10 +321,43 @@ void ImProcFunctions::rgbProc (Image16* working, LabImage* lab, int* tonecurve,
b = CLIP((int)(factor*b));
}
}
- r = tonecurve[r];
+ /*r = tonecurve[r];
g = tonecurve[g];
- b = tonecurve[b];
+ b = tonecurve[b];*/
+ int Y = (0.299*r + 0.587*g + 0.114*b);
+ int Ynew = tonecurve1[Y];
+ float tonefactor = (Y>0 ? (float)Ynew/Y : 1);
+ r *= tonefactor;
+ g *= tonefactor;
+ b *= tonefactor;
+ /*float maxfactor = 1;
+ if (r>65535)
+ maxfactor = MIN(maxfactor, (float)(65535.0f-Ynew)/(r-Ynew));
+ if (g>65535)
+ maxfactor = MIN(maxfactor, (float)(65535.0f-Ynew)/(g-Ynew));
+ if (b>65535)
+ maxfactor = MIN(maxfactor, (float)(65535.0f-Ynew)/(b-Ynew));
+
+ if (r<0)
+ maxfactor = MIN(maxfactor, ((float)Ynew)/(Ynew-r));
+ if (g<0)
+ maxfactor = MIN(maxfactor, ((float)Ynew)/(Ynew-g));
+ if (b<0)
+ maxfactor = MIN(maxfactor, ((float)Ynew)/(Ynew-b));
+
+ float U = (float)(-0.14713*r - 0.28886*g + 0.436*b)*maxfactor;
+ float V = (float)(0.615*r - 0.51499*g - 0.10001*b)*maxfactor;
+
+ r = CLIP(Ynew + 1.13983*V);
+ g = CLIP(Ynew - 0.39465*U - 0.58060*V);
+ b = CLIP(Ynew + 2.03211*U);*/
+
+ r = tonecurve2[CLIP(r)];
+ g = tonecurve2[CLIP(g)];
+ b = tonecurve2[CLIP(b)];
+
+
int x = (toxyz[0][0] * r + toxyz[1][0] * g + toxyz[2][0] * b) >> 15;
int y = (toxyz[0][1] * r + toxyz[1][1] * g + toxyz[2][1] * b) >> 15;
int z = (toxyz[0][2] * r + toxyz[1][2] * g + toxyz[2][2] * b) >> 15;
@@ -344,11 +377,27 @@ void ImProcFunctions::rgbProc (Image16* working, LabImage* lab, int* tonecurve,
void ImProcFunctions::luminanceCurve (LabImage* lold, LabImage* lnew, int* curve, int row_from, int row_to) {
int W = lold->W;
- int H = lold->H;
+ //int H = lold->H;
for (int i=row_from; iL[i][j] = curve[lold->L[i][j]];
}
+
+ void ImProcFunctions::chrominanceCurve (LabImage* lold, LabImage* lnew, int channel, int* curve, int row_from, int row_to) {
+
+ int W = lold->W;
+ //int H = lold->H;
+ if (channel==0) {
+ for (int i=row_from; ia[i][j] = curve[lold->a[i][j]+32768]-32768;
+ }
+ if (channel==1) {
+ for (int i=row_from; ib[i][j] = curve[lold->b[i][j]+32768]-32768;
+ }
+ }
#include "cubic.cc"
@@ -458,6 +507,9 @@ void ImProcFunctions::colorCurve (LabImage* lold, LabImage* lnew) {
void ImProcFunctions::lumadenoise (LabImage* lab, int** b2) {
if (params->lumaDenoise.enabled && lab->W>=8 && lab->H>=8)
+#ifdef _OPENMP
+#pragma omp parallel
+#endif
bilateral (lab->L, lab->L, (unsigned short**)b2, lab->W, lab->H, params->lumaDenoise.radius / scale, params->lumaDenoise.edgetolerance, multiThread);
}
@@ -465,10 +517,10 @@ void ImProcFunctions::colordenoise (LabImage* lab, int** b2) {
if (params->colorDenoise.enabled && lab->W>=8 && lab->H>=8) {
#ifdef _OPENMP
- AlignedBuffer* buffer = new AlignedBuffer (MAX(lab->W,lab->H)*omp_get_max_threads());
-#else
- AlignedBuffer* buffer = new AlignedBuffer (MAX(lab->W,lab->H));
+#pragma omp parallel
#endif
+ {
+ AlignedBuffer* buffer = new AlignedBuffer (MAX(lab->W,lab->H));
gaussHorizontal (lab->a, lab->a, buffer, lab->W, lab->H, params->colorDenoise.amount / 10.0 / scale, multiThread);
gaussHorizontal (lab->b, lab->b, buffer, lab->W, lab->H, params->colorDenoise.amount / 10.0 / scale, multiThread);
gaussVertical (lab->a, lab->a, buffer, lab->W, lab->H, params->colorDenoise.amount / 10.0 / scale, multiThread);
@@ -476,6 +528,7 @@ void ImProcFunctions::colordenoise (LabImage* lab, int** b2) {
delete buffer;
}
+ }
}
void ImProcFunctions::getAutoExp (unsigned int* histogram, int histcompr, double expcomp, double clip, double& br, int& bl) {
@@ -506,7 +559,7 @@ void ImProcFunctions::getAutoExp (unsigned int* histogram, int histcompr, doubl
double corr = pow(2.0, expcomp);
// black point selection is based on the linear result (yielding better visual results)
- bl = (int)(shc * corr);
+ bl = (int)(shc /* * corr*/);
// compute the white point of the exp. compensated gamma corrected image
double awg = (int)(CurveFactory::gamma2 (aw * corr / 65536.0) * 65536.0);
diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h
index d065cfac3..7de8b703b 100644
--- a/rtengine/improcfun.h
+++ b/rtengine/improcfun.h
@@ -79,8 +79,9 @@ class ImProcFunctions {
bool needsTransform ();
void firstAnalysis (Image16* working, const ProcParams* params, unsigned int* vhist16, double gamma);
- void rgbProc (Image16* working, LabImage* lab, int* tonecurve, SHMap* shmap);
+ void rgbProc (Image16* working, LabImage* lab, int* tonecurve1, int* tonecurve2, SHMap* shmap);
void luminanceCurve (LabImage* lold, LabImage* lnew, int* curve, int row_from, int row_to);
+ void chrominanceCurve (LabImage* lold, LabImage* lnew, int channel, int* curve, int row_from, int row_to);
void colorCurve (LabImage* lold, LabImage* lnew);
void sharpening (LabImage* lab, unsigned short** buffer);
void lumadenoise (LabImage* lab, int** buffer);
diff --git a/rtengine/impulse_denoise.h b/rtengine/impulse_denoise.h
index ed9d226fb..f1bb9bf3c 100644
--- a/rtengine/impulse_denoise.h
+++ b/rtengine/impulse_denoise.h
@@ -24,15 +24,17 @@
#include
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-// Gabor's implementation of bilateral filtering, without input pixel
+// modified version of Gabor's implementation of bilateral filtering, without input pixel
#define NBRWT(a,b) (src[i - a][j - b] * ec[src[i - a][j - b]-src[i][j]+0x10000])
-#define NORM(a,b) (1 + ec[src[i - a][j - b]-src[i][j]+0x10000])
+#define NORM(a,b) (ec[src[i - a][j - b]-src[i][j]+0x10000])
+
+//ec[i] = (int)(exp(-(double)(i-0x10000)*(double)(i-0x10000) / (2.0*rangewidth*rangewidth))*scale); \
#define RB_BEGIN(a,b) double scale = (a); \
int* ec = new int [0x20000]; \
for (int i=0; i<0x20000; i++) \
- ec[i] = (int)(exp(-(double)(i-0x10000)*(double)(i-0x10000) / (2.0*rangewidth*rangewidth))*scale); \
+ ec[i] = (int)(1 + 1024/(abs(i-0x10000) + 1)); \
int rstart = b; \
int rend = H-b; \
int cstart = b; \
@@ -97,7 +99,7 @@ template void impulse_nr (T** src, T** dst, int width, int height, doub
//The cleaning algorithm starts here
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- // modified bilateral filter for lowpass image, omitting input pixel
+ // modified bilateral filter for lowpass image, omitting input pixel; or Gaussian blur
static float eps = 1.0;
float wtdsum, dirwt, norm;
@@ -127,7 +129,7 @@ template void impulse_nr (T** src, T** dst, int width, int height, doub
hfnbrave = (hfnbrave-hpfabs)/24;
hpfabs>(hfnbrave*(5.5-thresh)) ? impish[i][j]=1 : impish[i][j]=0;
- }//now impulsive values have been corrected
+ }//now impulsive values have been identified
for (int i=0; i < height; i++)
for (int j=0; j < width; j++) {
diff --git a/rtengine/init.cc b/rtengine/init.cc
index 86044077c..eca8ed7ff 100644
--- a/rtengine/init.cc
+++ b/rtengine/init.cc
@@ -33,7 +33,7 @@ Glib::Mutex* lcmsMutex = NULL;
int init (const Settings* s) {
settings = s;
- iccStore.parseDir (s->iccDirectory);
+ iccStore->parseDir (s->iccDirectory);
CurveFactory::init ();
ImProcFunctions::initCache ();
delete dcrMutex;
diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc
index 659d839a2..95900da69 100644
--- a/rtengine/iplab2rgb.cc
+++ b/rtengine/iplab2rgb.cc
@@ -38,6 +38,9 @@ extern const Settings* settings;
void ImProcFunctions::lab2rgb (LabImage* lab, Image8* image) {
+ if (chroma_scale == 0)
+ return;
+
if (monitorTransform) {
int ix = 0;
short* buffer = new short [3*lab->W];
@@ -111,10 +114,10 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch,
Image8* image = new Image8 (cw, ch);
- cmsHPROFILE oprof = iccStore.getProfile (profile);
+ cmsHPROFILE oprof = iccStore->getProfile (profile);
if (oprof) {
- cmsHPROFILE iprof = iccStore.getXYZProfile ();
+ cmsHPROFILE iprof = iccStore->getXYZProfile ();
lcmsMutex->lock ();
cmsHTRANSFORM hTransform = cmsCreateTransform (iprof, TYPE_RGB_16, oprof, TYPE_RGB_8, settings->colorimetricIntent, 0);
lcmsMutex->unlock ();
@@ -190,7 +193,7 @@ Image16* ImProcFunctions::lab2rgb16 (LabImage* lab, int cx, int cy, int cw, int
Image16* image = new Image16 (cw, ch);
- cmsHPROFILE oprof = iccStore.getProfile (profile);
+ cmsHPROFILE oprof = iccStore->getProfile (profile);
if (oprof) {
#pragma omp parallel for if (multiThread)
@@ -219,7 +222,7 @@ Image16* ImProcFunctions::lab2rgb16 (LabImage* lab, int cx, int cy, int cw, int
za[j-cx] = CLIP(z_);
}
}
- cmsHPROFILE iprof = iccStore.getXYZProfile ();
+ cmsHPROFILE iprof = iccStore->getXYZProfile ();
lcmsMutex->lock ();
cmsHTRANSFORM hTransform = cmsCreateTransform (iprof, TYPE_RGB_16_PLANAR, oprof, TYPE_RGB_16_PLANAR, settings->colorimetricIntent, 0);
lcmsMutex->unlock ();
diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc
index 98345d98f..7fb3bbc81 100644
--- a/rtengine/ipsharpen.cc
+++ b/rtengine/ipsharpen.cc
@@ -37,7 +37,9 @@ namespace rtengine {
void ImProcFunctions::dcdamping (float** aI, unsigned short** aO, float damping, int W, int H) {
- #pragma omp parallel for if (multiThread)
+#ifdef _OPENMP
+#pragma omp for
+#endif
for (int i=0; i* buffer = new AlignedBuffer (MAX(W,H)*omp_get_max_threads());
-#else
- AlignedBuffer* buffer = new AlignedBuffer (MAX(W,H));
+#pragma omp parallel
#endif
+ {
+ AlignedBuffer* buffer = new AlignedBuffer (MAX(W,H));
float damping = params->sharpening.deconvdamping / 5.0;
bool needdamp = params->sharpening.deconvdamping > 0;
for (int k=0; ksharpening.deconviter; k++) {
@@ -82,7 +84,9 @@ void ImProcFunctions::deconvsharpening (LabImage* lab, unsigned short** b2) {
gaussVertical (tmp, tmp, buffer, W, H, params->sharpening.deconvradius / scale, multiThread);
if (!needdamp) {
- #pragma omp parallel for if (multiThread)
+#ifdef _OPENMP
+#pragma omp for
+#endif
for (int i=0; i0)
@@ -94,17 +98,25 @@ void ImProcFunctions::deconvsharpening (LabImage* lab, unsigned short** b2) {
gaussHorizontal (tmp, tmp, buffer, W, H, params->sharpening.deconvradius / scale, multiThread);
gaussVertical (tmp, tmp, buffer, W, H, params->sharpening.deconvradius / scale, multiThread);
- #pragma omp parallel for if (multiThread)
+#ifdef _OPENMP
+#pragma omp for
+#endif
for (int i=0; iL[i][j] = lab->L[i][j]*(100-params->sharpening.deconvamount) / 100 + (int)CLIP(tmpI[i][j])*params->sharpening.deconvamount / 100;
+
+
for (int i=0; iW, H = lab->H;
- unsigned short** b3;
#ifdef _OPENMP
- AlignedBuffer* buffer = new AlignedBuffer (MAX(W,H)*omp_get_max_threads());
-#else
- AlignedBuffer* buffer = new AlignedBuffer (MAX(W,H));
+#pragma omp parallel
#endif
+ {
+ unsigned short** b3;
+
+ AlignedBuffer* buffer = new AlignedBuffer (MAX(W,H));
if (params->sharpening.edgesonly==false) {
gaussHorizontal (lab->L, b2, buffer, W, H, params->sharpening.radius / scale, multiThread);
@@ -148,7 +161,7 @@ void ImProcFunctions::sharpening (LabImage* lab, unsigned short** b2) {
base = b3;
if (params->sharpening.halocontrol==false) {
- #pragma omp parallel for if (multiThread)
+ #pragma omp for
for (int i=0; ivignetting.amount * 3.0 / 400.0;
- double b = 1.0 + params->vignetting.radius * 7.0 / 100.0;
-
- double mul = (1.0-v) / tanh(b);
+ double vig_w2;
+ double vig_h2;
+ double maxRadius;
+ double v;
+ double b;
+ double mul;
+ calcVignettingParams(oW, oH, params->vignetting, vig_w2, vig_h2, maxRadius, v, b, mul);
#pragma omp parallel for if (multiThread)
for (int y=0; yheight; y++) {
- double y_d = (double) (y + cy) - h2 ;
+ double vig_y_d = (double) (y + cy) - vig_h2 ;
int val;
for (int x=0; xwidth; x++) {
- double x_d = (double) (x + cx) - w2 ;
- double r = sqrt(x_d*x_d + y_d*y_d);
+ double vig_x_d = (double) (x + cx) - vig_w2 ;
+ double r = sqrt(vig_x_d*vig_x_d + vig_y_d*vig_y_d);
double vign = v + mul * tanh (b*(maxRadius-r) / maxRadius);
val = original->r[y][x] / vign;
transformed->r[y][x] = CLIP(val);
@@ -255,9 +272,16 @@ void ImProcFunctions::vignetting (Image16* original, Image16* transformed, int c
#include "cubint.cc"
void ImProcFunctions::transformNonSep (Image16* original, Image16* transformed, int cx, int cy, int sx, int sy, int oW, int oH) {
+ double w2 = (double) oW / 2.0 - 0.5;
+ double h2 = (double) oH / 2.0 - 0.5;
- double w2 = (double) oW / 2.0 - 0.5;
- double h2 = (double) oH / 2.0 - 0.5;
+ double vig_w2;
+ double vig_h2;
+ double maxRadius;
+ double v;
+ double b;
+ double mul;
+ calcVignettingParams(oW, oH, params->vignetting, vig_w2, vig_h2, maxRadius, v, b, mul);
// auxiliary variables for distortion correction
double a = params->distortion.amount;
@@ -266,11 +290,6 @@ void ImProcFunctions::transformNonSep (Image16* original, Image16* transformed,
double cost = cos(params->rotate.degree * 3.14/180.0);
double sint = sin(params->rotate.degree * 3.14/180.0);
- // auxiliary variables for vignetting
- double maxRadius = sqrt( (double)( oW*oW + oH*oH ) ) / 2;
- double v = 1.0 - params->vignetting.amount * 3.0 / 400.0;
- double b = 1.0 + params->vignetting.radius * 7.0 / 100.0;
- double mul = (1.0-v) / tanh(b);
bool dovign = params->vignetting.amount != 0;
// auxiliary variables for vertical perspective correction
@@ -293,6 +312,8 @@ void ImProcFunctions::transformNonSep (Image16* original, Image16* transformed,
for (int x=0; xwidth; x++) {
double x_d = ascale * (x + cx - w2); // centering x coord & scale
double y_d = ascale * (y + cy - h2); // centering y coord & scale
+ double vig_x_d = ascale * (x + cx - vig_w2); // centering x coord & scale
+ double vig_y_d = ascale * (y + cy - vig_h2); // centering y coord & scale
// horizontal perspective transformation
y_d = y_d * maxRadius / (maxRadius + x_d*hptanpt);
@@ -312,6 +333,10 @@ void ImProcFunctions::transformNonSep (Image16* original, Image16* transformed,
Dx *= s;
Dy *= s;
+ double vig_Dx = vig_x_d * cost - vig_y_d * sint;
+ double vig_Dy = vig_x_d * sint + vig_y_d * cost;
+ double r2 = sqrt(vig_Dx*vig_Dx + vig_Dy*vig_Dy);
+
// de-center
Dx += w2;
Dy += h2;
@@ -326,7 +351,7 @@ void ImProcFunctions::transformNonSep (Image16* original, Image16* transformed,
// multiplier for vignetting correction
double vignmul = 1.0;
if (dovign)
- vignmul /= (v + mul * tanh (b*(maxRadius-s*r) / maxRadius));
+ vignmul /= (v + mul * tanh (b*(maxRadius-s*r2) / maxRadius));
if (yc > 0 && yc < original->height-2 && xc > 0 && xc < original->width-2) // all interpolation pixels inside image
cubint (original, xc-1, yc-1, Dx, Dy, &(transformed->r[y][x]), &(transformed->g[y][x]), &(transformed->b[y][x]), vignmul);
@@ -356,8 +381,16 @@ void ImProcFunctions::transformNonSep (Image16* original, Image16* transformed,
#include "cubintch.cc"
void ImProcFunctions::transformSep (Image16* original, Image16* transformed, int cx, int cy, int sx, int sy, int oW, int oH) {
- double w2 = (double) oW / 2.0 - 0.5;
- double h2 = (double) oH / 2.0 - 0.5;
+ double w2 = (double) oW / 2.0 - 0.5;
+ double h2 = (double) oH / 2.0 - 0.5;
+
+ double vig_w2;
+ double vig_h2;
+ double maxRadius;
+ double v;
+ double b;
+ double mul;
+ calcVignettingParams(oW, oH, params->vignetting, vig_w2, vig_h2, maxRadius, v, b, mul);
// auxiliary variables for c/a correction
double cdist[3];
@@ -380,11 +413,6 @@ void ImProcFunctions::transformSep (Image16* original, Image16* transformed, int
double cost = cos(params->rotate.degree * 3.14/180.0);
double sint = sin(params->rotate.degree * 3.14/180.0);
- // auxiliary variables for vignetting
- double maxRadius = sqrt( (double)( oW*oW + oH*oH ) ) / 2;
- double v = 1.0 - params->vignetting.amount * 3.0 / 400.0;
- double b = 1.0 + params->vignetting.radius * 7.0 / 100.0;
- double mul = (1.0-v) / tanh(b);
bool dovign = params->vignetting.amount != 0;
// auxiliary variables for vertical perspective correction
@@ -407,6 +435,8 @@ void ImProcFunctions::transformSep (Image16* original, Image16* transformed, int
for (int x=0; xwidth; x++) {
double x_d = ascale * (x + cx - w2); // centering x coord & scale
double y_d = ascale * (y + cy - h2); // centering y coord & scale
+ double vig_x_d = ascale * (x + cx - vig_w2); // centering x coord & scale
+ double vig_y_d = ascale * (y + cy - vig_h2); // centering y coord & scale
// horizontal perspective transformation
y_d = y_d * maxRadius / (maxRadius + x_d*hptanpt);
@@ -424,6 +454,10 @@ void ImProcFunctions::transformSep (Image16* original, Image16* transformed, int
double r = sqrt(Dxc*Dxc + Dyc*Dyc) / maxRadius;
double s = 1.0 - a + a * r ;
+ double vig_Dx = vig_x_d * cost - vig_y_d * sint;
+ double vig_Dy = vig_x_d * sint + vig_y_d * cost;
+ double r2 = sqrt(vig_Dx*vig_Dx + vig_Dy*vig_Dy);
+
for (int c=0; c<3; c++) {
double Dx = Dxc * (s + cdist[c]);
@@ -443,7 +477,7 @@ void ImProcFunctions::transformSep (Image16* original, Image16* transformed, int
// multiplier for vignetting correction
double vignmul = 1.0;
if (dovign)
- vignmul /= (v + mul * tanh (b*(maxRadius-s*r) / maxRadius));
+ vignmul /= (v + mul * tanh (b*(maxRadius-s*r2) / maxRadius));
if (yc > 0 && yc < original->height-2 && xc > 0 && xc < original->width-2) // all interpolation pixels inside image
cubintch (chorig[c], xc-1, yc-1, Dx, Dy, &(chtrans[c][y][x]), vignmul);
@@ -466,8 +500,16 @@ void ImProcFunctions::transformSep (Image16* original, Image16* transformed, int
void ImProcFunctions::simpltransform (Image16* original, Image16* transformed, int cx, int cy, int sx, int sy, int oW, int oH) {
- double w2 = (double) oW / 2.0 - 0.5;
- double h2 = (double) oH / 2.0 - 0.5;
+ double w2 = (double) oW / 2.0 - 0.5;
+ double h2 = (double) oH / 2.0 - 0.5;
+
+ double vig_w2;
+ double vig_h2;
+ double maxRadius;
+ double v;
+ double b;
+ double mul;
+ calcVignettingParams(oW, oH, params->vignetting, vig_w2, vig_h2, maxRadius, v, b, mul);
// auxiliary variables for distortion correction
double a = params->distortion.amount;
@@ -476,11 +518,6 @@ void ImProcFunctions::simpltransform (Image16* original, Image16* transformed, i
double cost = cos(params->rotate.degree * 3.14/180.0);
double sint = sin(params->rotate.degree * 3.14/180.0);
- // auxiliary variables for vignetting
- double maxRadius = sqrt( (double)( oW*oW + oH*oH ) ) / 2;
- double v = 1.0 - params->vignetting.amount * 3.0 / 400.0;
- double b = 1.0 + params->vignetting.radius * 7.0 / 100.0;
- double mul = (1.0-v) / tanh(b);
bool dovign = params->vignetting.amount != 0;
// auxiliary variables for vertical perspective correction
@@ -503,6 +540,8 @@ void ImProcFunctions::simpltransform (Image16* original, Image16* transformed, i
for (int x=0; xwidth; x++) {
double y_d = ascale * (y + cy - h2); // centering y coord & scale
double x_d = ascale * (x + cx - w2); // centering x coord & scale
+ double vig_x_d = ascale * (x + cx - vig_w2); // centering x coord & scale
+ double vig_y_d = ascale * (y + cy - vig_h2); // centering y coord & scale
// horizontal perspective transformation
y_d = y_d * maxRadius / (maxRadius + x_d*hptanpt);
@@ -522,6 +561,10 @@ void ImProcFunctions::simpltransform (Image16* original, Image16* transformed, i
Dx *= s;
Dy *= s;
+ double vig_Dx = vig_x_d * cost - vig_y_d * sint;
+ double vig_Dy = vig_x_d * sint + vig_y_d * cost;
+ double r2 = sqrt(vig_Dx*vig_Dx + vig_Dy*vig_Dy);
+
// de-center
Dx += w2;
Dy += h2;
@@ -536,7 +579,7 @@ void ImProcFunctions::simpltransform (Image16* original, Image16* transformed, i
// multiplier for vignetting correction
double vignmul = 1.0;
if (dovign)
- vignmul /= (v + mul * tanh (b*(maxRadius-s*r) / maxRadius));
+ vignmul /= (v + mul * tanh (b*(maxRadius-s*r2) / maxRadius));
if (yc < original->height-1 && xc < original->width-1) { // all interpolation pixels inside image
int r = vignmul*(original->r[yc][xc]*(1.0-Dx)*(1.0-Dy) + original->r[yc][xc+1]*Dx*(1.0-Dy) + original->r[yc+1][xc]*(1.0-Dx)*Dy + original->r[yc+1][xc+1]*Dx*Dy);
diff --git a/rtengine/jpeg_memsrc.c b/rtengine/jpeg_memsrc.c
new file mode 100644
index 000000000..595649b85
--- /dev/null
+++ b/rtengine/jpeg_memsrc.c
@@ -0,0 +1,167 @@
+/*
+ * memsrc.c
+ *
+ * Copyright (C) 1994-1996, Thomas G. Lane.
+ * This file is part of the Independent JPEG Group's software.
+ * For conditions of distribution and use, see the accompanying README file.
+ *
+ * This file contains decompression data source routines for the case of
+ * reading JPEG data from a memory buffer that is preloaded with the entire
+ * JPEG file. This would not seem especially useful at first sight, but
+ * a number of people have asked for it.
+ * This is really just a stripped-down version of jdatasrc.c. Comparison
+ * of this code with jdatasrc.c may be helpful in seeing how to make
+ * custom source managers for other purposes.
+ */
+
+/* this is not a core library module, so it doesn't define JPEG_INTERNALS */
+//#include "jinclude.h"
+//#include "jmorecfg.h"
+//#include "jpeglib.h"
+//#include "jerror.h"
+#include
+#include
+#include
+
+
+/* Expanded data source object for memory input */
+
+typedef struct {
+ struct jpeg_source_mgr pub; /* public fields */
+
+ JOCTET eoi_buffer[2]; /* a place to put a dummy EOI */
+} my_source_mgr;
+
+typedef my_source_mgr * my_src_ptr;
+
+
+/*
+ * Initialize source --- called by jpeg_read_header
+ * before any data is actually read.
+ */
+
+static void
+init_source (j_decompress_ptr cinfo)
+{
+ /* No work, since jpeg_memory_src set up the buffer pointer and count.
+ * Indeed, if we want to read multiple JPEG images from one buffer,
+ * this *must* not do anything to the pointer.
+ */
+}
+
+
+/*
+ * Fill the input buffer --- called whenever buffer is emptied.
+ *
+ * In this application, this routine should never be called; if it is called,
+ * the decompressor has overrun the end of the input buffer, implying we
+ * supplied an incomplete or corrupt JPEG datastream. A simple error exit
+ * might be the most appropriate response.
+ *
+ * But what we choose to do in this code is to supply dummy EOI markers
+ * in order to force the decompressor to finish processing and supply
+ * some sort of output image, no matter how corrupted.
+ */
+
+static int
+fill_input_buffer(j_decompress_ptr cinfo)
+{
+ my_src_ptr src = (my_src_ptr) cinfo->src;
+
+ WARNMS(cinfo, JWRN_JPEG_EOF);
+
+ /* Create a fake EOI marker */
+ src->eoi_buffer[0] = (JOCTET) 0xFF;
+ src->eoi_buffer[1] = (JOCTET) JPEG_EOI;
+ src->pub.next_input_byte = src->eoi_buffer;
+ src->pub.bytes_in_buffer = 2;
+
+ return TRUE;
+}
+
+
+/*
+ * Skip data --- used to skip over a potentially large amount of
+ * uninteresting data (such as an APPn marker).
+ *
+ * If we overrun the end of the buffer, we let fill_input_buffer deal with
+ * it. An extremely large skip could cause some time-wasting here, but
+ * it really isn't supposed to happen ... and the decompressor will never
+ * skip more than 64K anyway.
+ */
+
+static void
+skip_input_data (j_decompress_ptr cinfo, long num_bytes)
+{
+ my_src_ptr src = (my_src_ptr) cinfo->src;
+
+ if (num_bytes > 0) {
+ while (num_bytes > (long) src->pub.bytes_in_buffer) {
+ num_bytes -= (long) src->pub.bytes_in_buffer;
+ (void) fill_input_buffer(cinfo);
+ /* note we assume that fill_input_buffer will never return FALSE,
+ * so suspension need not be handled.
+ */
+ }
+ src->pub.next_input_byte += (size_t) num_bytes;
+ src->pub.bytes_in_buffer -= (size_t) num_bytes;
+ }
+}
+
+
+/*
+ * An additional method that can be provided by data source modules is the
+ * resync_to_restart method for error recovery in the presence of RST markers.
+ * For the moment, this source module just uses the default resync method
+ * provided by the JPEG library. That method assumes that no backtracking
+ * is possible.
+ */
+
+
+/*
+ * Terminate source --- called by jpeg_finish_decompress
+ * after all data has been read. Often a no-op.
+ *
+ * NB: *not* called by jpeg_abort or jpeg_destroy; surrounding
+ * application must deal with any cleanup that should happen even
+ * for error exit.
+ */
+
+static void
+term_source (j_decompress_ptr cinfo)
+{
+ /* no work necessary here */
+}
+
+
+/*
+ * Prepare for input from a memory buffer.
+ */
+
+GLOBAL(void)
+jpeg_memory_src (j_decompress_ptr cinfo, const JOCTET * buffer, size_t bufsize)
+{
+ my_src_ptr src;
+
+ /* The source object is made permanent so that a series of JPEG images
+ * can be read from a single buffer by calling jpeg_memory_src
+ * only before the first one.
+ * This makes it unsafe to use this manager and a different source
+ * manager serially with the same JPEG object. Caveat programmer.
+ */
+ if (cinfo->src == NULL) { /* first time for this JPEG object? */
+ cinfo->src = (struct jpeg_source_mgr *)
+ (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
+ sizeof(my_source_mgr));
+ }
+
+ src = (my_src_ptr) cinfo->src;
+ src->pub.init_source = init_source;
+ src->pub.fill_input_buffer = fill_input_buffer;
+ src->pub.skip_input_data = skip_input_data;
+ src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */
+ src->pub.term_source = term_source;
+
+ src->pub.next_input_byte = buffer;
+ src->pub.bytes_in_buffer = bufsize;
+}
diff --git a/rtengine/loadinitial.cc b/rtengine/loadinitial.cc
index f12ce63b8..0bd524351 100644
--- a/rtengine/loadinitial.cc
+++ b/rtengine/loadinitial.cc
@@ -32,7 +32,11 @@ InitialImage* InitialImage::load (const Glib::ustring& fname, bool isRaw, int* e
isrc = new RawImageSource ();
isrc->setProgressListener (pl);
- *errorCode = isrc->load (fname);
+
+ if(isRaw && pl == NULL)
+ *errorCode = isrc->load (fname, true);
+ else
+ *errorCode = isrc->load (fname);
if (*errorCode) {
delete isrc;
return NULL;
diff --git a/rtengine/procevents.h b/rtengine/procevents.h
index 12b45ad93..fbe40fa1e 100644
--- a/rtengine/procevents.h
+++ b/rtengine/procevents.h
@@ -1,124 +1,127 @@
-/*
- * This file is part of RawTherapee.
- *
- * Copyright (c) 2004-2010 Gabor Horvath
- *
- * 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 .
- */
-#ifndef __PROCEVENT__
-#define __PROCEVENT__
-
-namespace rtengine {
-
-enum ProcEvent {
- EvPhotoLoaded=0,
- EvProfileLoaded=1,
- EvProfileChanged=2,
- EvHistoryBrowsed=3,
- EvBrightness=4,
- EvContrast=5,
- EvBlack=6,
- EvExpComp=7,
- EvHLCompr=8,
- EvSHCompr=9,
- EvToneCurve=10,
- EvAutoExp=11,
- EvClip=12,
- EvLBrightness=13,
- EvLContrast=14,
- EvLBlack=15,
- EvLHLCompr=16,
- EvLSHCompr=17,
- EvLCurve=18,
- EvShrEnabled=19,
- EvShrRadius=20,
- EvShrAmount=21,
- EvShrThresh=22,
- EvShrEdgeOnly=23,
- EvShrEdgeRadius=24,
- EvShrEdgeTolerance=25,
- EvShrHaloControl=26,
- EvShrHaloAmount=27,
- EvShrMethod=28,
- EvShrDRadius=29,
- EvShrDAmount=30,
- EvShrDDamping=31,
- EvShrDIterations=32,
- EvCBAvoidClip=33,
- EvCBSatLimiter=34,
- EvCBSatLimit=35,
- EvCBBoost=36,
- EvWBMethod=37,
- EvWBTemp=38,
- EvWBGreen=39,
- EvCShiftA=40,
- EvCShiftB=41,
- EvLDNEnabled=42,
- EvLDNRadius=43,
- EvLDNEdgeTolerance=44,
- EvCDNEnabled=45,
- EvCDNRadius=46,
- EvCDNEdgeTolerance=47,
- EvCDNEdgeSensitive=48,
- EvSHEnabled=49,
- EvSHHighlights=50,
- EvSHShadows=51,
- EvSHHLTonalW=52,
- EvSHSHTonalW=53,
- EvSHLContrast=54,
- EvSHRadius=55,
- EvCTRotate=56,
- EvCTHFlip=57,
- EvCTVFlip=58,
- EvROTDegree=59,
- EvTransAutoFill=60,
- EvDISTAmount=61,
- EvBookmarkSelected=62,
- EvCrop=63,
- EvCACorr=64,
- EvHREnabled=65,
- EvHRAmount=66,
- EvHRMethod=67,
- EvWProfile=68,
- EvOProfile=69,
- EvIProfile=70,
- EvVignetting=71,
- EvChMixer=72,
- EvResizeScale=73,
- EvResizeMethod=74,
- EvExif=75,
- EvIPTC=76,
- EvResizeSpec=77,
- EvResizeWidth=78,
- EvResizeHeight=79,
- EvResizeEnabled=80,
- EvProfileChangeNotification=81,
- EvSHHighQuality=82,
- EvPerspCorr=83,
- EvEqualizer=84,
- EvEqlEnabled=85,
- EvDemosaic=86,
- EvPreProcess=87,
- EvIDNEnabled=88,
- EvIDNThresh=89,
- EvDPDNEnabled=90,
- EvDPDNLuma=91,
- EvDPDNChroma=92,
- EvDPDNGamma=93,
- EvDirPyrEqualizer=94,
- EvDirPyrEqlEnabled=95,
- NUMOFEVENTS=96
- };
-}
-#endif
+/*
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2004-2010 Gabor Horvath
+ *
+ * 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 .
+ */
+#ifndef __PROCEVENT__
+#define __PROCEVENT__
+
+namespace rtengine {
+
+enum ProcEvent {
+ EvPhotoLoaded=0,
+ EvProfileLoaded=1,
+ EvProfileChanged=2,
+ EvHistoryBrowsed=3,
+ EvBrightness=4,
+ EvContrast=5,
+ EvBlack=6,
+ EvExpComp=7,
+ EvHLCompr=8,
+ EvSHCompr=9,
+ EvToneCurve=10,
+ EvAutoExp=11,
+ EvClip=12,
+ EvLBrightness=13,
+ EvLContrast=14,
+ EvLBlack=15,
+ EvLHLCompr=16,
+ EvLSHCompr=17,
+ EvLLCurve=18,
+ EvShrEnabled=19,
+ EvShrRadius=20,
+ EvShrAmount=21,
+ EvShrThresh=22,
+ EvShrEdgeOnly=23,
+ EvShrEdgeRadius=24,
+ EvShrEdgeTolerance=25,
+ EvShrHaloControl=26,
+ EvShrHaloAmount=27,
+ EvShrMethod=28,
+ EvShrDRadius=29,
+ EvShrDAmount=30,
+ EvShrDDamping=31,
+ EvShrDIterations=32,
+ EvCBAvoidClip=33,
+ EvCBSatLimiter=34,
+ EvCBSatLimit=35,
+ EvCBBoost=36,
+ EvWBMethod=37,
+ EvWBTemp=38,
+ EvWBGreen=39,
+ EvCShiftA=40,
+ EvCShiftB=41,
+ EvLDNEnabled=42,
+ EvLDNRadius=43,
+ EvLDNEdgeTolerance=44,
+ EvCDNEnabled=45,
+ EvCDNRadius=46,
+ EvCDNEdgeTolerance=47,
+ EvCDNEdgeSensitive=48,
+ EvSHEnabled=49,
+ EvSHHighlights=50,
+ EvSHShadows=51,
+ EvSHHLTonalW=52,
+ EvSHSHTonalW=53,
+ EvSHLContrast=54,
+ EvSHRadius=55,
+ EvCTRotate=56,
+ EvCTHFlip=57,
+ EvCTVFlip=58,
+ EvROTDegree=59,
+ EvTransAutoFill=60,
+ EvDISTAmount=61,
+ EvBookmarkSelected=62,
+ EvCrop=63,
+ EvCACorr=64,
+ EvHREnabled=65,
+ EvHRAmount=66,
+ EvHRMethod=67,
+ EvWProfile=68,
+ EvOProfile=69,
+ EvIProfile=70,
+ EvVignetting=71,
+ EvChMixer=72,
+ EvResizeScale=73,
+ EvResizeMethod=74,
+ EvExif=75,
+ EvIPTC=76,
+ EvResizeSpec=77,
+ EvResizeWidth=78,
+ EvResizeHeight=79,
+ EvResizeEnabled=80,
+ EvProfileChangeNotification=81,
+ EvSHHighQuality=82,
+ EvPerspCorr=83,
+ EvEqualizer=84,
+ EvEqlEnabled=85,
+ EvDemosaic=86,
+ EvPreProcess=87,
+ EvIDNEnabled=88,
+ EvIDNThresh=89,
+ EvDPDNEnabled=90,
+ EvDPDNLuma=91,
+ EvDPDNChroma=92,
+ EvDPDNGamma=93,
+ EvDirPyrEqualizer=94,
+ EvDirPyrEqlEnabled=95,
+ EvLSaturation=96,
+ EvLaCurve=97,
+ EvLbCurve=98,
+ NUMOFEVENTS=99
+ };
+}
+#endif
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index 9541913c9..97567906c 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -48,18 +48,21 @@ void ProcParams::destroy (ProcParams* pp) {
void ProcParams::setDefaults () {
toneCurve.autoexp = false;
- toneCurve.clip = 0.002;
+ toneCurve.clip = 0.001;
toneCurve.expcomp = 0;
toneCurve.brightness = 0;
toneCurve.contrast = 0;
toneCurve.black = 0;
- toneCurve.hlcompr = 85;
- toneCurve.shcompr = 85;
+ toneCurve.hlcompr = 70;
+ toneCurve.shcompr = 25;
toneCurve.curve.clear ();
- lumaCurve.brightness = 0;
- lumaCurve.contrast = 0;
- lumaCurve.curve.clear ();
+ labCurve.brightness = 0;
+ labCurve.contrast = 0;
+ labCurve.saturation = 0;
+ labCurve.lcurve.clear ();
+ labCurve.acurve.clear ();
+ labCurve.bcurve.clear ();
sharpening.enabled = true;
sharpening.radius = 1.0;
@@ -107,11 +110,11 @@ void ProcParams::setDefaults () {
sh.enabled = false;
sh.hq = false;
- sh.highlights = 10;
+ sh.highlights = 0;
sh.htonalwidth = 80;
- sh.shadows = 10;
+ sh.shadows = 0;
sh.stonalwidth = 80;
- sh.localcontrast = 15;
+ sh.localcontrast = 0;
sh.radius = 40;
crop.enabled = false;
@@ -146,6 +149,9 @@ void ProcParams::setDefaults () {
vignetting.amount = 0;
vignetting.radius = 50;
+ vignetting.strength = 1;
+ vignetting.centerX = 0;
+ vignetting.centerY = 0;
chmixer.red[0] = 100;
chmixer.red[1] = 0;
@@ -200,7 +206,7 @@ int ProcParams::save (Glib::ustring fname) const {
SafeKeyFile keyFile;
- keyFile.set_integer ("Version", "Version", 231);
+ keyFile.set_integer ("Version", "Version", 20101019);
// save tonecurve:
keyFile.set_boolean ("Exposure", "Auto", toneCurve.autoexp);
@@ -223,10 +229,15 @@ int ProcParams::save (Glib::ustring fname) const {
keyFile.set_integer_list("Channel Mixer", "Blue", bmix);
// save luma curve
- keyFile.set_integer ("Luminance Curve", "Brightness", lumaCurve.brightness);
- keyFile.set_integer ("Luminance Curve", "Contrast", lumaCurve.contrast);
- Glib::ArrayHandle lcurve = lumaCurve.curve;
- keyFile.set_double_list("Luminance Curve", "Curve", lcurve);
+ keyFile.set_integer ("Luminance Curve", "Brightness", labCurve.brightness);
+ keyFile.set_integer ("Luminance Curve", "Contrast", labCurve.contrast);
+ keyFile.set_integer ("Luminance Curve", "Saturation", labCurve.saturation);
+ Glib::ArrayHandle lcurve = labCurve.lcurve;
+ Glib::ArrayHandle acurve = labCurve.acurve;
+ Glib::ArrayHandle bcurve = labCurve.bcurve;
+ keyFile.set_double_list("Luminance Curve", "LCurve", lcurve);
+ keyFile.set_double_list("Luminance Curve", "aCurve", acurve);
+ keyFile.set_double_list("Luminance Curve", "bCurve", bcurve);
// save sharpening
keyFile.set_boolean ("Sharpening", "Enabled", sharpening.enabled);
@@ -329,6 +340,9 @@ int ProcParams::save (Glib::ustring fname) const {
// save vignetting correction
keyFile.set_integer ("Vignetting Correction", "Amount", vignetting.amount);
keyFile.set_integer ("Vignetting Correction", "Radius", vignetting.radius);
+ keyFile.set_integer ("Vignetting Correction", "Strength", vignetting.strength);
+ keyFile.set_integer ("Vignetting Correction", "CenterX", vignetting.centerX);
+ keyFile.set_integer ("Vignetting Correction", "CenterY", vignetting.centerY);
// save highlight recovery settings
keyFile.set_boolean ("HLRecovery", "Enabled", hlrecovery.enabled);
@@ -450,10 +464,13 @@ if (keyFile.has_group ("Channel Mixer")) {
// load luma curve
if (keyFile.has_group ("Luminance Curve")) {
- if (keyFile.has_key ("Luminance Curve", "Brightness")) lumaCurve.brightness = keyFile.get_integer ("Luminance Curve", "Brightness");
- if (keyFile.has_key ("Luminance Curve", "Contrast")) lumaCurve.contrast = keyFile.get_integer ("Luminance Curve", "Contrast");
+ if (keyFile.has_key ("Luminance Curve", "Brightness")) labCurve.brightness = keyFile.get_integer ("Luminance Curve", "Brightness");
+ if (keyFile.has_key ("Luminance Curve", "Contrast")) labCurve.contrast = keyFile.get_integer ("Luminance Curve", "Contrast");
+ if (keyFile.has_key ("Luminance Curve", "Saturation")) labCurve.saturation = keyFile.get_integer ("Luminance Curve", "Saturation");
if (version>200)
- if (keyFile.has_key ("Luminance Curve", "Curve")) lumaCurve.curve = keyFile.get_double_list ("Luminance Curve", "Curve");
+ if (keyFile.has_key ("Luminance Curve", "LCurve")) labCurve.lcurve = keyFile.get_double_list ("Luminance Curve", "LCurve");
+ if (keyFile.has_key ("Luminance Curve", "aCurve")) labCurve.acurve = keyFile.get_double_list ("Luminance Curve", "aCurve");
+ if (keyFile.has_key ("Luminance Curve", "bCurve")) labCurve.bcurve = keyFile.get_double_list ("Luminance Curve", "bCurve");
}
// load sharpening
@@ -592,6 +609,9 @@ if (keyFile.has_group ("CACorrection")) {
if (keyFile.has_group ("Vignetting Correction")) {
if (keyFile.has_key ("Vignetting Correction", "Amount")) vignetting.amount = keyFile.get_integer ("Vignetting Correction", "Amount");
if (keyFile.has_key ("Vignetting Correction", "Radius")) vignetting.radius = keyFile.get_integer ("Vignetting Correction", "Radius");
+ if (keyFile.has_key ("Vignetting Correction", "Strength")) vignetting.strength = keyFile.get_integer ("Vignetting Correction", "Strength");
+ if (keyFile.has_key ("Vignetting Correction", "CenterX")) vignetting.centerX = keyFile.get_integer ("Vignetting Correction", "CenterX");
+ if (keyFile.has_key ("Vignetting Correction", "CenterY")) vignetting.centerY = keyFile.get_integer ("Vignetting Correction", "CenterY");
}
// load highlight recovery settings
@@ -729,9 +749,12 @@ bool ProcParams::operator== (const ProcParams& other) {
&& toneCurve.autoexp == other.toneCurve.autoexp
&& toneCurve.clip == other.toneCurve.clip
&& toneCurve.expcomp == other.toneCurve.expcomp
- && lumaCurve.curve == other.lumaCurve.curve
- && lumaCurve.brightness == other.lumaCurve.brightness
- && lumaCurve.contrast == other.lumaCurve.contrast
+ && labCurve.lcurve == other.labCurve.lcurve
+ && labCurve.acurve == other.labCurve.acurve
+ && labCurve.bcurve == other.labCurve.bcurve
+ && labCurve.brightness == other.labCurve.brightness
+ && labCurve.contrast == other.labCurve.contrast
+ && labCurve.saturation == other.labCurve.saturation
&& sharpening.enabled == other.sharpening.enabled
&& sharpening.radius == other.sharpening.radius
&& sharpening.amount == other.sharpening.amount
@@ -798,6 +821,9 @@ bool ProcParams::operator== (const ProcParams& other) {
&& cacorrection.blue == other.cacorrection.blue
&& vignetting.amount == other.vignetting.amount
&& vignetting.radius == other.vignetting.radius
+ && vignetting.strength == other.vignetting.strength
+ && vignetting.centerX == other.vignetting.centerX
+ && vignetting.centerY == other.vignetting.centerY
&& !memcmp (&chmixer.red, &other.chmixer.red, 3*sizeof(int))
&& !memcmp (&chmixer.green, &other.chmixer.green, 3*sizeof(int))
&& !memcmp (&chmixer.blue, &other.chmixer.blue, 3*sizeof(int))
diff --git a/rtengine/procparams.h b/rtengine/procparams.h
index 55f1c1ae8..3b10d032a 100644
--- a/rtengine/procparams.h
+++ b/rtengine/procparams.h
@@ -48,9 +48,12 @@ class ToneCurveParams {
class LCurveParams {
public:
- std::vector curve;
+ std::vector lcurve;
+ std::vector acurve;
+ std::vector bcurve;
int brightness;
int contrast;
+ int saturation;
};
/**
@@ -246,6 +249,9 @@ class VignettingParams {
public:
int amount;
int radius;
+ int strength;
+ int centerX;
+ int centerY;
};
/**
@@ -376,7 +382,7 @@ class ProcParams {
public:
ToneCurveParams toneCurve; ///< Tone curve parameters
- LCurveParams lumaCurve; ///< CIELAB luminance curve parameters
+ LCurveParams labCurve; ///< CIELAB luminance curve parameters
SharpeningParams sharpening; ///< Sharpening parameters
ColorBoostParams colorBoost; ///< Color boost parameters
WBParams wb; ///< White balance parameters
diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc
index 63b03483b..a16058fbb 100644
--- a/rtengine/rawimagesource.cc
+++ b/rtengine/rawimagesource.cc
@@ -717,7 +717,7 @@ void RawImageSource::inverse33 (double (*coeff)[3], double (*icoeff)[3]) {
icoeff[2][2] = (coeff[0][1]*coeff[1][0]-coeff[0][0]*coeff[1][1]) / nom;
}
-int RawImageSource::load (Glib::ustring fname) {
+int RawImageSource::load (Glib::ustring fname, bool batch) {
MyTime t1,t2;
t1.set();
@@ -757,7 +757,7 @@ int RawImageSource::load (Glib::ustring fname) {
for (int j=0; j<3; j++)
for (int k=0; k<3; k++)
cam[i][j] += coeff[k][i] * sRGB_d50[k][j];
- camProfile = iccStore.createFromMatrix (cam, false, "Camera");
+ camProfile = iccStore->createFromMatrix (cam, false, "Camera");
inverse33 (cam, icam);
@@ -943,9 +943,11 @@ void RawImageSource::preprocess (const RAWParams &raw)
// check if it is an olympus E camera, if yes, compute G channel pre-compensation factors
if ( raw.greenthresh || (((idata->getMake().size()>=7 && idata->getMake().substr(0,7)=="OLYMPUS" && idata->getModel()[0]=='E') || (idata->getMake().size()>=9 && idata->getMake().substr(0,7)=="Panasonic")) && raw.dmethod != RAWParams::methodstring[ RAWParams::vng4] && ri->filters) ) {
// global correction
- int ng1=0, ng2=0;
- double avgg1=0, avgg2=0;
- for (int i=border; i0) {
if (plistener) {
plistener->setProgressStr ("Green equilibrate...");
@@ -1002,7 +1009,7 @@ void RawImageSource::demosaic(const RAWParams &raw)
MyTime t1,t2;
t1.set();
if ( raw.dmethod == RAWParams::methodstring[RAWParams::hphd] )
- hphd_demosaic ();
+ hphd_demosaic ();
else if (raw.dmethod == RAWParams::methodstring[RAWParams::vng4] )
vng4_demosaic ();
else if (raw.dmethod == RAWParams::methodstring[RAWParams::ahd] )
@@ -1017,7 +1024,7 @@ void RawImageSource::demosaic(const RAWParams &raw)
fast_demo (0,0,W,H);
else if (raw.dmethod == RAWParams::methodstring[RAWParams::bilinear] )
bilinear_demosaic();
- else
+ else
nodemosaic();
t2.set();
if( settings->verbose )
@@ -1300,7 +1307,7 @@ void RawImageSource::colorSpaceConversion (Image16* im, ColorManagementParams cm
else if (inProfile=="(camera)" || inProfile=="")
in = camprofile;
else {
- in = iccStore.getProfile (inProfile);
+ in = iccStore->getProfile (inProfile);
if (in==NULL)
inProfile = "(camera)";
}
@@ -1309,17 +1316,18 @@ void RawImageSource::colorSpaceConversion (Image16* im, ColorManagementParams cm
if (inProfile=="(camera)" || inProfile=="" || (inProfile=="(embedded)" && !embedded)) {
// in this case we avoid using the slllllooooooowwww lcms
-// out = iccStore.workingSpace (wProfile);
+// out = iccStore->workingSpace (wProfile);
// hTransform = cmsCreateTransform (in, TYPE_RGB_16_PLANAR, out, TYPE_RGB_16_PLANAR, settings->colorimetricIntent, cmsFLAGS_MATRIXINPUT | cmsFLAGS_MATRIXOUTPUT);//cmsFLAGS_MATRIXINPUT | cmsFLAGS_MATRIXOUTPUT);
// cmsDoTransform (hTransform, im->data, im->data, im->planestride/2);
// cmsDeleteTransform(hTransform);
- TMatrix work = iccStore.workingSpaceInverseMatrix (cmp.working);
+ TMatrix work = iccStore->workingSpaceInverseMatrix (cmp.working);
double mat[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
for (int k=0; k<3; k++)
mat[i][j] += camMatrix[i][k] * work[k][j];
-
+
+#pragma omp parallel for
for (int i=0; iheight; i++)
for (int j=0; jwidth; j++) {
@@ -1333,15 +1341,16 @@ void RawImageSource::colorSpaceConversion (Image16* im, ColorManagementParams cm
}
}
else {
- out = iccStore.workingSpace (cmp.working);
-// out = iccStore.workingSpaceGamma (wProfile);
+ out = iccStore->workingSpace (cmp.working);
+// out = iccStore->workingSpaceGamma (wProfile);
lcmsMutex->lock ();
cmsHTRANSFORM hTransform = cmsCreateTransform (in, TYPE_RGB_16_PLANAR, out, TYPE_RGB_16_PLANAR, settings->colorimetricIntent, 0);
lcmsMutex->unlock ();
if (hTransform) {
if (cmp.gammaOnInput) {
double gd = pow (2.0, defgain);
- defgain = 0.0;
+ defgain = 0.0;
+#pragma omp parallel for
for (int i=0; iheight; i++)
for (int j=0; jwidth; j++) {
im->r[i][j] = CurveFactory::gamma (CLIP(defgain*im->r[i][j]));
@@ -1982,14 +1991,14 @@ int RawImageSource::getAEHistogram (unsigned int* histogram, int& histcompr) {
}
if (ri->filters)
for (int j=start; j>histcompr]+=2;
- else
+ else*/
histogram[rawData[i][j]>>histcompr]+=4;
else
for (int j=start; j<3*end; j++) {
histogram[rawData[i][j+0]>>histcompr]++;
- histogram[rawData[i][j+1]>>histcompr]++;
+ histogram[rawData[i][j+1]>>histcompr]+=2;
histogram[rawData[i][j+2]>>histcompr]++;
}
}
diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h
index c7f24a260..8a4fa5d22 100644
--- a/rtengine/rawimagesource.h
+++ b/rtengine/rawimagesource.h
@@ -111,7 +111,7 @@ class RawImageSource : public ImageSource {
RawImageSource ();
~RawImageSource ();
- int load (Glib::ustring fname);
+ int load (Glib::ustring fname, bool batch = false);
void preprocess (const RAWParams &raw);
void demosaic (const RAWParams &raw);
void copyOriginalPixels( RawImage *ri, RawImage *riDark );
@@ -149,14 +149,14 @@ class RawImageSource : public ImageSource {
inline void interpolate_row_rb_mul_pp (unsigned short* ar, unsigned short* ab, unsigned short* pg, unsigned short* cg, unsigned short* ng, int i, double r_mul, double g_mul, double b_mul, int x1, int width, int skip);
int LinEqSolve( int nDim, float* pfMatr, float* pfVect, float* pfSolution);//Emil's CA auto correction
- void CA_correct_RT (); //Emil's pre-demosaic CA correction
+ void CA_correct_RT ();
int cfaCleanFromMap( BYTE* bitmapBads );
int findHotDeadPixel( BYTE *bpMap, float thresh);
- void ddct8x8s(int isgn, float **a);
+ void ddct8x8s(int isgn, float **a);
- void cfa_linedn (float linenoiselevel); //Emil's line denoise
+ void cfa_linedn (float linenoiselevel);//Emil's line denoise
- void green_equilibrate (float greenthresh);//Emil's green equilibration
+ void green_equilibrate (float greenthresh);//Emil's green equilibration
void nodemosaic();
void eahd_demosaic();
diff --git a/rtengine/refreshmap.cc b/rtengine/refreshmap.cc
index 5d5c009b1..500e3757c 100644
--- a/rtengine/refreshmap.cc
+++ b/rtengine/refreshmap.cc
@@ -38,7 +38,7 @@ LUMINANCECURVE, // EvLContrast,
LUMINANCECURVE, // EvLBlack,
LUMINANCECURVE, // EvLHLCompr,
LUMINANCECURVE, // EvLSHCompr,
-LUMINANCECURVE, // EvLCurve,
+LUMINANCECURVE, // EvLLCurve,
SHARPENING, // EvShrEnabled,
SHARPENING, // EvShrRadius,
SHARPENING, // EvShrAmount,
@@ -114,7 +114,10 @@ DIRPYRDENOISE, // EvDPDNEnabled,
DIRPYRDENOISE, // EvDPDNLuma,
DIRPYRDENOISE, // EvDPDNChroma,
DIRPYRDENOISE, // EvDPDNGamma,
-DIRPYREQUALIZER, // EvDirPyrEqualizer
-DIRPYREQUALIZER // EvDirPyrEqlEnabled
+DIRPYREQUALIZER, // EvDirPyrEqualizer,
+DIRPYREQUALIZER, // EvDirPyrEqlEnabled,
+LUMINANCECURVE, // EvLSaturation,
+LUMINANCECURVE, // EvLaCurve,
+LUMINANCECURVE, // EvLbCurve
};
diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc
index 2f7c182bb..43f64539c 100644
--- a/rtengine/rtthumbnail.cc
+++ b/rtengine/rtthumbnail.cc
@@ -48,6 +48,62 @@ my_jpeg_stdio_src (j_decompress_ptr cinfo, FILE * infile);
namespace rtengine {
+Thumbnail* Thumbnail::loadFromMemory (const char* image, int length, int &w, int &h, int fixwh) {
+ Image16* img = new Image16 ();
+ int err = img->loadJPEGFromMemory(image,length);
+ if (err) {
+ printf("loadfromMemory: error\n");
+ delete img;
+ return NULL;
+ }
+
+ Thumbnail* tpp = new Thumbnail ();
+
+ tpp->camwbRed = 1.0;
+ tpp->camwbGreen = 1.0;
+ tpp->camwbBlue = 1.0;
+
+ tpp->embProfileLength = 0;
+ unsigned char* data;
+ img->getEmbeddedProfileData (tpp->embProfileLength, data);
+ if (data && tpp->embProfileLength) {
+ tpp->embProfileData = new unsigned char [tpp->embProfileLength];
+ memcpy (tpp->embProfileData, data, tpp->embProfileLength);
+ }
+ else {
+ tpp->embProfileLength = 0;
+ tpp->embProfileData = NULL;
+ }
+
+ tpp->redMultiplier = 1.0;
+ tpp->greenMultiplier = 1.0;
+ tpp->blueMultiplier = 1.0;
+
+ tpp->scaleForSave = 8192;
+ tpp->defGain = 1.0;
+ tpp->gammaCorrected = false;
+ tpp->isRaw = 1;
+ memset (tpp->colorMatrix, 0, sizeof(tpp->colorMatrix));
+ tpp->colorMatrix[0][0] = 1.0;
+ tpp->colorMatrix[1][1] = 1.0;
+ tpp->colorMatrix[2][2] = 1.0;
+
+ if (fixwh==1) {
+ w = h * img->width / img->height;
+ tpp->scale = (double)img->height / h;
+ }
+ else {
+ h = w * img->height / img->width;
+ tpp->scale = (double)img->width / w;
+ }
+
+ tpp->thumbImg = img->resize (w, h, TI_Nearest);
+ delete img;
+
+ tpp->init ();
+ return tpp;
+}
+
Thumbnail* Thumbnail::loadFromImage (const Glib::ustring& fname, int &w, int &h, int fixwh) {
Image16* img = new Image16 ();
@@ -143,7 +199,7 @@ void Thumbnail::init () {
for (int j=0; j<3; j++)
for (int k=0; k<3; k++)
camToD50[i][j] += colorMatrix[k][i] * sRGB_d50[k][j];
- camProfile = iccStore.createFromMatrix (camToD50, false, "Camera");
+ camProfile = iccStore->createFromMatrix (camToD50, false, "Camera");
}
bool Thumbnail::igammacomputed = false;
@@ -173,6 +229,39 @@ Thumbnail::~Thumbnail () {
cmsCloseProfile(camProfile);
}
+IImage8* Thumbnail::quickProcessImage (const procparams::ProcParams& params, int rheight, TypeInterpolation interp, double& myscale) {
+
+ int rwidth;
+ if (params.coarse.rotate==90 || params.coarse.rotate==270) {
+ rwidth = rheight;
+ rheight = thumbImg->height * rwidth / thumbImg->width;
+ }
+ else
+ rwidth = thumbImg->width * rheight / thumbImg->height;
+ Image16* baseImg = thumbImg->resize (rwidth, rheight, interp);
+
+ if (params.coarse.rotate) {
+ Image16* tmp = baseImg->rotate (params.coarse.rotate);
+ rwidth = tmp->width;
+ rheight = tmp->height;
+ delete baseImg;
+ baseImg = tmp;
+ }
+ if (params.coarse.hflip) {
+ Image16* tmp = baseImg->hflip ();
+ delete baseImg;
+ baseImg = tmp;
+ }
+ if (params.coarse.vflip) {
+ Image16* tmp = baseImg->vflip ();
+ delete baseImg;
+ baseImg = tmp;
+ }
+ Image8* img8 = baseImg->to8();
+ delete baseImg;
+ return img8;
+}
+
IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rheight, TypeInterpolation interp, double& myscale) {
// compute WB multipliers
@@ -311,11 +400,12 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei
if (params.toneCurve.autoexp && aeHistogram)
ipf.getAutoExp (aeHistogram, aeHistCompression, logDefGain, params.toneCurve.clip, br, bl);
- int* curve = new int [65536];
- CurveFactory::complexCurve (br, bl/65535.0, params.toneCurve.hlcompr, params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, logDefGain, isRaw ? 2.2 : 0, true, params.toneCurve.curve, hist16, curve, NULL, 16);
+ int* curve1 = new int [65536];
+ int* curve2 = new int [65536];
+ CurveFactory::complexCurve (br, bl/65535.0, params.toneCurve.hlcompr, params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, logDefGain, isRaw ? 2.2 : 0, true, params.toneCurve.curve, hist16, curve1, curve2, NULL, 16);
LabImage* labView = new LabImage (baseImg);
- ipf.rgbProc (baseImg, labView, curve, shmap);
+ ipf.rgbProc (baseImg, labView, curve1, curve2, shmap);
if (shmap)
delete shmap;
@@ -327,11 +417,15 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, int rhei
hist16[labView->L[i][j]]++;
// luminance processing
- CurveFactory::complexCurve (0.0, 0.0, 0.0, 0.0, params.lumaCurve.brightness, params.lumaCurve.contrast, 0.0, 0.0, false, params.lumaCurve.curve, hist16, curve, NULL, 16);
+ CurveFactory::complexCurve (0.0, 0.0, 0.0, 0.0, params.labCurve.brightness, params.labCurve.contrast, 0.0, 0.0, false, params.labCurve.lcurve, hist16, curve1, curve2, NULL, 16);
+ ipf.luminanceCurve (labView, labView, curve2, 0, fh);
+ CurveFactory::complexsgnCurve (0.0, 100.0, params.labCurve.saturation, 1.0, params.labCurve.acurve, curve1, 16);
+ ipf.chrominanceCurve (labView, labView, 0, curve1, 0, fh);
+ CurveFactory::complexsgnCurve (0.0, 100.0, params.labCurve.saturation, 1.0, params.labCurve.bcurve, curve1, 16);
+ ipf.chrominanceCurve (labView, labView, 1, curve1, 0, fh);
- ipf.luminanceCurve (labView, labView, curve, 0, fh);
-
- delete [] curve;
+ delete [] curve1;
+ delete [] curve2;
delete [] hist16;
// color processing
diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h
index f9b1c9914..438fe2e04 100644
--- a/rtengine/rtthumbnail.h
+++ b/rtengine/rtthumbnail.h
@@ -70,9 +70,12 @@ namespace rtengine {
void init ();
IImage8* processImage (const procparams::ProcParams& pparams, int rheight, TypeInterpolation interp, double& scale);
+ IImage8* quickProcessImage (const procparams::ProcParams& pparams, int rheight, TypeInterpolation interp, double& scale);
int getImageWidth (const procparams::ProcParams& pparams, int rheight);
void getFinalSize (const rtengine::procparams::ProcParams& pparams, int& w, int& h);
+ static Thumbnail* loadQuickFromRaw (const Glib::ustring& fname, rtengine::RawMetaDataLocation& rml, int &w, int &h, int fixwh);
+ static Thumbnail* loadFromMemory (const char* image, int length, int &w, int &h, int fixwh);
static Thumbnail* loadFromRaw (const Glib::ustring& fname, RawMetaDataLocation& rml, int &w, int &h, int fixwh);
static Thumbnail* loadFromImage (const Glib::ustring& fname, int &w, int &h, int fixwh);
diff --git a/rtengine/settings.h b/rtengine/settings.h
index fac2557ca..d91d425c5 100644
--- a/rtengine/settings.h
+++ b/rtengine/settings.h
@@ -1,44 +1,45 @@
-/*
- * This file is part of RawTherapee.
- *
- * Copyright (c) 2004-2010 Gabor Horvath
- *
- * 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 .
- */
-#ifndef _RTSETTINGS_
-#define _RTSETTINGS_
-
-namespace rtengine {
-
- /** This structure holds the global parameters used by the RT engine. */
- class Settings {
- public:
- bool dualThreadEnabled; ///< If true, the image processing operations with utilize two processor cores (if possible)
- Glib::ustring iccDirectory; ///< The directory containing the possible output icc profiles
- int colorimetricIntent; ///< Colorimetric intent used at color space conversions
- Glib::ustring monitorProfile; ///< ICC profile of the monitor (full path recommended)
- bool verbose;
- Glib::ustring darkFramesPath; ///< The default directory for dark frames
-
- /** Creates a new instance of Settings.
- * @return a pointer to the new Settings instance. */
- static Settings* create ();
- /** Destroys an instance of Settings.
- * @param s a pointer to the Settings instance to destroy. */
- static void destroy (Settings* s);
- };
-}
-
-#endif
-
+/*
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2004-2010 Gabor Horvath
+ *
+ * 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 .
+ */
+#ifndef _RTSETTINGS_
+#define _RTSETTINGS_
+
+namespace rtengine {
+
+ /** This structure holds the global parameters used by the RT engine. */
+ class Settings {
+ public:
+ bool dualThreadEnabled; ///< If true, the image processing operations with utilize two processor cores (if possible)
+ std::string demosaicMethodBatch; ///< The algorithm used for demosaicing. Can be "eahd", "hphd", "ahd", "vng4", "amaze", "bilinear".
+ Glib::ustring iccDirectory; ///< The directory containing the possible output icc profiles
+ int colorimetricIntent; ///< Colorimetric intent used at color space conversions
+ Glib::ustring monitorProfile; ///< ICC profile of the monitor (full path recommended)
+ bool verbose;
+ Glib::ustring darkFramesPath; ///< The default directory for dark frames
+
+ /** Creates a new instance of Settings.
+ * @return a pointer to the new Settings instance. */
+ static Settings* create ();
+ /** Destroys an instance of Settings.
+ * @param s a pointer to the Settings instance to destroy. */
+ static void destroy (Settings* s);
+ };
+}
+
+#endif
+
diff --git a/rtengine/shmap.cc b/rtengine/shmap.cc
index 6bcb4dcbf..836f60e06 100644
--- a/rtengine/shmap.cc
+++ b/rtengine/shmap.cc
@@ -51,20 +51,21 @@ void SHMap::update (Image16* img, unsigned short** buffer, double radius, double
int val = lumi[0]*img->r[i][j] + lumi[1]*img->g[i][j] + lumi[2]*img->b[i][j];
map[i][j] = CLIP(val);
}
-
- if (!hq) {
#ifdef _OPENMP
- AlignedBuffer* buffer = new AlignedBuffer (MAX(W,H)*omp_get_max_threads());
-#else
- AlignedBuffer* buffer = new AlignedBuffer (MAX(W,H));
+#pragma omp parallel
#endif
+ {
+ if (!hq) {
+ AlignedBuffer* buffer = new AlignedBuffer (MAX(W,H));
gaussHorizontal (map, map, buffer, W, H, radius, multiThread);
gaussVertical (map, map, buffer, W, H, radius, multiThread);
delete buffer;
}
else {
-#ifdef _OPENMP
+#if 0
+// the new OpenMP method does not need thread number specific code.
+// #ifdef _OPENMP
#pragma omp parallel if (multiThread)
{
int tid = omp_get_thread_num();
@@ -80,6 +81,9 @@ void SHMap::update (Image16* img, unsigned short** buffer, double radius, double
bilateral (map, buffer, W, H, 8000, radius, 0, H);
#endif
// anti-alias filtering the result
+#ifdef _OPENMP
+#pragma omp for
+#endif
for (int i=0; i0 && j>0 && igetDefGain(), params.toneCurve.clip, br, bl);
}
- int* curve = new int [65536];
+ int* curve1 = new int [65536];
+ int* curve2 = new int [65536];
- CurveFactory::complexCurve (br, bl/65535.0, params.toneCurve.hlcompr, params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, imgsrc->getDefGain(), imgsrc->getGamma(), true, params.toneCurve.curve, hist16, curve, NULL);
+ CurveFactory::complexCurve (br, bl/65535.0, params.toneCurve.hlcompr, params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, imgsrc->getDefGain(), imgsrc->getGamma(), true, params.toneCurve.curve, hist16, curve1, curve2, NULL);
LabImage* labView = new LabImage (baseImg);
- ipf.rgbProc (baseImg, labView, curve, shmap);
+ ipf.rgbProc (baseImg, labView, curve1, curve2, shmap);
if (shmap)
delete shmap;
@@ -149,13 +150,19 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
hist16[labView->L[i][j]]++;
// luminance processing
- CurveFactory::complexCurve (0.0, 0.0, 0.0, 0.0, params.lumaCurve.brightness, params.lumaCurve.contrast, 0.0, 0.0, false, params.lumaCurve.curve, hist16, curve, NULL);
- ipf.luminanceCurve (labView, labView, curve, 0, fh);
+ CurveFactory::complexCurve (0.0, 0.0, 0.0, 0.0, params.labCurve.brightness, params.labCurve.contrast, 0.0, 0.0, false, params.labCurve.lcurve, hist16, curve1, curve2, NULL);
+ ipf.luminanceCurve (labView, labView, curve2, 0, fh);
+ CurveFactory::complexsgnCurve (0.0, 100.0, params.labCurve.saturation, 1.0, params.labCurve.acurve, curve1, 1);
+ ipf.chrominanceCurve (labView, labView, 0, curve1, 0, fh);
+ CurveFactory::complexsgnCurve (0.0, 100.0, params.labCurve.saturation, 1.0, params.labCurve.bcurve, curve1, 1);
+ ipf.chrominanceCurve (labView, labView, 1, curve1, 0, fh);
+
ipf.impulsedenoise (labView);
ipf.lumadenoise (labView, buffer);
ipf.sharpening (labView, (unsigned short**)buffer);
- delete [] curve;
+ delete [] curve1;
+ delete [] curve2;
delete [] hist16;
// color processing
@@ -194,7 +201,7 @@ IImage16* processImage (ProcessingJob* pjob, int& errorCode, ProgressListener* p
ProfileContent pc;
if (params.icm.output.compare (0, 6, "No ICM") && params.icm.output!="")
- pc = iccStore.getContent (params.icm.output);
+ pc = iccStore->getContent (params.icm.output);
readyImg->setOutputProfile (pc.data, pc.length);
@@ -229,7 +236,8 @@ void batchProcessingThread (ProcessingJob* job, BatchProcessingListener* bpl) {
void startBatchProcessing (ProcessingJob* job, BatchProcessingListener* bpl) {
if (bpl)
- Glib::Thread::create(sigc::bind(sigc::ptr_fun(batchProcessingThread), job, bpl), 0, false, true, Glib::THREAD_PRIORITY_NORMAL);
+ Glib::Thread::create(sigc::bind(sigc::ptr_fun(batchProcessingThread), job, bpl), 0, true, true, Glib::THREAD_PRIORITY_LOW);
+
}
}
diff --git a/rtengine/simpleprocess.h b/rtengine/simpleprocess.h
new file mode 100644
index 000000000..fb5a24ff6
--- /dev/null
+++ b/rtengine/simpleprocess.h
@@ -0,0 +1,26 @@
+/*
+ * File: simpleprocess.h
+ * Author: askv
+ *
+ * Created on September 18, 2010, 8:31 PM
+ */
+
+#ifndef SIMPLEPROCESS_H
+#define SIMPLEPROCESS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+
+#ifdef __cplusplus
+}
+#endif
+namespace rtengine {
+
+extern Glib::Thread *batchThread;
+}
+#endif /* SIMPLEPROCESS_H */
+
diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc
index 16096580a..3c8e1b55b 100644
--- a/rtengine/stdimagesource.cc
+++ b/rtengine/stdimagesource.cc
@@ -70,7 +70,7 @@ StdImageSource::~StdImageSource () {
freeArray(needhr, img->height);
}
-int StdImageSource::load (Glib::ustring fname) {
+int StdImageSource::load (Glib::ustring fname, bool batch) {
fileName = fname;
@@ -256,19 +256,19 @@ void StdImageSource::getImage (ColorTemp ctemp, int tran, Image16* image, Previe
void StdImageSource::colorSpaceConversion (Image16* im, ColorManagementParams cmp, cmsHPROFILE embedded) {
cmsHPROFILE in;
- cmsHPROFILE out = iccStore.workingSpace (cmp.working);
+ cmsHPROFILE out = iccStore->workingSpace (cmp.working);
if (cmp.input=="(embedded)" || cmp.input=="" || cmp.input=="(camera)") {
if (embedded)
in = embedded;
else
- in = iccStore.getsRGBProfile ();
+ in = iccStore->getsRGBProfile ();
}
else if (cmp.input!="(none)") {
- in = iccStore.getProfile (cmp.input);
+ in = iccStore->getProfile (cmp.input);
if (in==NULL && embedded)
in = embedded;
else if (in==NULL)
- in = iccStore.getsRGBProfile ();
+ in = iccStore->getsRGBProfile ();
else if (cmp.gammaOnInput)
for (int i=0; iheight; i++)
for (int j=0; jwidth; j++) {
diff --git a/rtengine/stdimagesource.h b/rtengine/stdimagesource.h
index 811d063ae..b06f53916 100644
--- a/rtengine/stdimagesource.h
+++ b/rtengine/stdimagesource.h
@@ -43,7 +43,7 @@ class StdImageSource : public ImageSource {
StdImageSource ();
~StdImageSource ();
- int load (Glib::ustring fname);
+ int load (Glib::ustring fname, bool batch = false);
void getImage (ColorTemp ctemp, int tran, Image16* image, PreviewProps pp, HRecParams hrp, ColorManagementParams cmp, RAWParams raw);
ColorTemp getWB () { return wb; }
ColorTemp getAutoWB ();
diff --git a/rtengine/updater.cc b/rtengine/updater.cc
index 5a0b5a3b6..b0ff8f433 100644
--- a/rtengine/updater.cc
+++ b/rtengine/updater.cc
@@ -54,13 +54,13 @@ ProcParams* Updater::getParams () {
void Updater::startProcessing () {
- #undef THREAD_PRIORITY_NORMAL
+ #undef THREAD_PRIORITY_LOW
tstart.lock ();
if (ipc && !running) {
running = true;
tstart.unlock ();
- Glib::Thread::create(sigc::mem_fun(*this, &Updater::process), 0, false, true, Glib::THREAD_PRIORITY_NORMAL);
+ Glib::Thread::create(sigc::mem_fun(*this, &Updater::process), 0, false, true, Glib::THREAD_PRIORITY_LOW);
}
else
tstart.unlock ();
diff --git a/rtexif/pentaxattribs.cc b/rtexif/pentaxattribs.cc
index f41090c82..ab15b73c3 100644
--- a/rtexif/pentaxattribs.cc
+++ b/rtexif/pentaxattribs.cc
@@ -964,7 +964,9 @@ public:
case 2: return "Depth";
case 3: return "MTF";
}
+ return"Normal";
}
+
};
PAAFModeInterpreter paAFModeInterpreter;
diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt
index efbb075ee..4cba0b926 100644
--- a/rtgui/CMakeLists.txt
+++ b/rtgui/CMakeLists.txt
@@ -14,8 +14,9 @@ set (BASESOURCEFILES
whitebalance.cc vignetting.cc rotate.cc distortion.cc
crophandler.cc curveeditor.cc dirbrowser.cc
filecatalog.cc
+ previewloader.cc
histogrampanel.cc history.cc imagearea.cc
- imageareapanel.cc iptcpanel.cc lcurve.cc lumadenoise.cc main.cc
+ imageareapanel.cc iptcpanel.cc labcurve.cc lumadenoise.cc main.cc
multilangmgr.cc mycurve.cc options.cc
preferences.cc profilepanel.cc safegtk.cc saveasdlg.cc
saveformatpanel.cc splash.cc
diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h
index ed5192d8a..80d23c3b1 100644
--- a/rtgui/addsetids.h
+++ b/rtgui/addsetids.h
@@ -22,7 +22,10 @@
#define ADDSET_PERSPECTIVE 18
#define ADDSET_CA 19
#define ADDSET_VIGN_AMOUNT 20
+#define ADDSET_LC_SATURATION 21
+// When adding items, make sure to update ADDSET_PARAM_NUM
+#define ADDSET_PARAM_NUM 22 // THIS IS USED AS A DELIMITER!!
+
-#define ADDSET_PARAM_NUM 21
#endif
diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc
index 10571944d..d6cd5ab32 100644
--- a/rtgui/batchqueue.cc
+++ b/rtgui/batchqueue.cc
@@ -18,10 +18,12 @@
*/
#include
#include
+#include
#include
#include
#include
#include
+#include
using namespace rtengine;
@@ -335,6 +337,10 @@ Glib::ustring BatchQueue::autoCompleteFileName (const Glib::ustring& fileName, c
// create directory, if does not exist
if (g_mkdir_with_parents (dstdir.c_str(), 0755) )
return "";
+
+ // In overwrite mode we TRY to delete the old file first.
+ // if that's not possible (e.g. locked by viewer, R/O), we revert to the standard naming scheme
+ bool inOverwriteMode=options.overwriteOutputFile;
for (int tries=0; tries<100; tries++) {
Glib::ustring fname;
@@ -343,7 +349,17 @@ Glib::ustring BatchQueue::autoCompleteFileName (const Glib::ustring& fileName, c
else
fname = Glib::ustring::compose ("%1-%2.%3", Glib::build_filename (dstdir, dstfname), tries, format);
- if (!Glib::file_test (fname, Glib::FILE_TEST_EXISTS)) {
+ int fileExists=Glib::file_test (fname, Glib::FILE_TEST_EXISTS);
+
+ if (inOverwriteMode && fileExists) {
+ // do NOT use g_remove as it has compiler problems on Unix and OSX (GTK namespace problem)
+ if (::remove(safe_locale_from_utf8(fname).c_str ()) == -1)
+ inOverwriteMode = false; // failed to delete- revert to old naming scheme
+ else
+ fileExists = false; // deleted now
+ }
+
+ if (!fileExists) {
return fname;
}
}
diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc
index 6428c34e5..e73e3853b 100644
--- a/rtgui/batchqueuepanel.cc
+++ b/rtgui/batchqueuepanel.cc
@@ -1,269 +1,269 @@
-/*
- * This file is part of RawTherapee.
- *
- * Copyright (c) 2004-2010 Gabor Horvath
- *
- * 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
-#include
-#include
-#include
-#include
-
-BatchQueuePanel::BatchQueuePanel () {
-
- batchQueue = new BatchQueue();
-
- // construct batch queue panel with the extra "start" and "stop" button
- Gtk::VBox* batchQueueButtonBox = Gtk::manage (new Gtk::VBox);
- start = Gtk::manage (new Gtk::ToggleButton (M("FILEBROWSER_STARTPROCESSING")));
- stop = Gtk::manage (new Gtk::ToggleButton (M("FILEBROWSER_STOPPROCESSING")));
- autoStart = Gtk::manage (new Gtk::CheckButton (M("BATCHQUEUE_AUTOSTART")));
- start->set_tooltip_text (M("FILEBROWSER_STARTPROCESSINGHINT"));
- stop->set_tooltip_text (M("FILEBROWSER_STOPPROCESSINGHINT"));
- autoStart->set_tooltip_text (M("FILEBROWSER_TOOLTIP_STOPPROCESSING"));
- start->set_active (false);
- stop->set_active (true);
- autoStart->set_active (options.procQueueEnabled);
-
- start->set_image (*Gtk::manage (new Gtk::Image (Gtk::StockID("gtk-media-play"), Gtk::ICON_SIZE_BUTTON)));
- startConnection = start->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::startBatchProc));
- stop->set_image (*Gtk::manage (new Gtk::Image (Gtk::StockID("gtk-media-stop"), Gtk::ICON_SIZE_BUTTON)));
- stopConnection = stop->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::stopBatchProc));
- batchQueueButtonBox->pack_start (*start, Gtk::PACK_SHRINK, 4);
- batchQueueButtonBox->pack_start (*stop, Gtk::PACK_SHRINK, 4);
- batchQueueButtonBox->pack_start (*autoStart, Gtk::PACK_SHRINK, 4);
-
- // Output directory selection
- fdir = Gtk::manage (new Gtk::Frame (M("PREFERENCES_OUTDIR")));
- Gtk::VBox* odvb = Gtk::manage (new Gtk::VBox ());
- odvb->set_border_width (4);
- Gtk::HBox* hb2 = Gtk::manage (new Gtk::HBox ());
- useTemplate = Gtk::manage (new Gtk::RadioButton (M("PREFERENCES_OUTDIRTEMPLATE")+":"));
- hb2->pack_start (*useTemplate, Gtk::PACK_SHRINK,4);
- outdirTemplate = Gtk::manage (new Gtk::Entry ());
- hb2->pack_start (*outdirTemplate);
- odvb->pack_start (*hb2, Gtk::PACK_SHRINK, 4);
- outdirTemplate->set_tooltip_markup (M("PREFERENCES_OUTDIRTEMPLATEHINT"));
- useTemplate->set_tooltip_markup (M("PREFERENCES_OUTDIRTEMPLATEHINT"));
- Gtk::HBox* hb3 = Gtk::manage (new Gtk::HBox ());
- useFolder = Gtk::manage (new Gtk::RadioButton (M("PREFERENCES_OUTDIRFOLDER")+":"));
- hb3->pack_start (*useFolder, Gtk::PACK_SHRINK,4);
- outdirFolder = Gtk::manage (new Gtk::FileChooserButton (M("PREFERENCES_OUTDIRFOLDER"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER));
- hb3->pack_start (*outdirFolder);
- odvb->pack_start (*hb3, Gtk::PACK_SHRINK, 4);
- outdirFolder->set_tooltip_markup (M("PREFERENCES_OUTDIRFOLDERHINT"));
- useFolder->set_tooltip_markup (M("PREFERENCES_OUTDIRFOLDERHINT"));
- Gtk::RadioButton::Group g = useTemplate->get_group();
- useFolder->set_group (g);
- fdir->add (*odvb);
-
- // Output file format selection
- fformat = Gtk::manage (new Gtk::Frame (M("PREFERENCES_FILEFORMAT")));
- saveFormatPanel = Gtk::manage (new SaveFormatPanel ());
- fformat->add (*saveFormatPanel);
-
- saveFormatPanel->init (options.saveFormat);
- outdirTemplate->set_text (options.savePathTemplate);
- if (Glib::file_test (options.savePathFolder, Glib::FILE_TEST_IS_DIR))
- outdirFolder->set_filename (options.savePathFolder);
- useTemplate->set_active (options.saveUsePathTemplate);
- useFolder->set_active (!options.saveUsePathTemplate);
-
- // setup signal handlers
- outdirTemplate->signal_changed().connect (sigc::mem_fun(*this, &BatchQueuePanel::saveOptions));
- outdirFolder->signal_current_folder_changed().connect (sigc::mem_fun(*this, &BatchQueuePanel::pathFolderChanged));
- useTemplate->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::saveOptions));
- useFolder->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::saveOptions));
- saveFormatPanel->setListener (this);
-
- // setup button bar
- topBox = Gtk::manage (new Gtk::HBox ());
- pack_start (*topBox, Gtk::PACK_SHRINK);
-
- topBox->pack_start (*batchQueueButtonBox, Gtk::PACK_SHRINK, 4);
- topBox->pack_start (*fdir);
- topBox->pack_start (*fformat, Gtk::PACK_SHRINK, 4);
-
- // add middle browser area
- Gtk::HBox* hBox = Gtk::manage (new Gtk::HBox ());
- pack_start (*batchQueue);
-
- // lower box with thumbnail zoom
- bottomBox = Gtk::manage (new Gtk::HBox ());
- pack_start (*bottomBox, Gtk::PACK_SHRINK);
-
- // change thumbnail arrangement button
- hAlignIcon = new Gtk::Image (argv0+"/images/horizontals.png");
- vAlignIcon = new Gtk::Image (argv0+"/images/verticals.png");
- hAlignIcon->show ();
- vAlignIcon->show ();
- chAlign = Gtk::manage (new Gtk::Button ());
- chAlign->show ();
- bottomBox->pack_end (*chAlign, Gtk::PACK_SHRINK);
- chAlign->set_image (*hAlignIcon);
- chAlign->set_relief (Gtk::RELIEF_NONE);
- chAlign->signal_pressed().connect (sigc::mem_fun(*this, &BatchQueuePanel::arrangementButtonPressed));
- chAlign->set_tooltip_text (M("FILEBROWSER_ARRANGEMENTHINT"));
- bottomBox->pack_end (*Gtk::manage (new Gtk::VSeparator), Gtk::PACK_SHRINK, 4);
- if (options.fbArrangement==1)
- chAlign->set_image (*vAlignIcon);
- else
- chAlign->set_image (*hAlignIcon);
- arrangementButtonPressed ();
-
- // thumbnail zoom
- Gtk::HBox* zoomBox = Gtk::manage (new Gtk::HBox ());
- zoomBox->pack_start (*Gtk::manage (new Gtk::VSeparator), Gtk::PACK_SHRINK, 4);
- Gtk::Label* zoomLabel = Gtk::manage (new Gtk::Label (Glib::ustring("")+M("FILEBROWSER_THUMBSIZE")+":"));
- zoomLabel->set_use_markup (true);
- zoomBox->pack_start (*zoomLabel, Gtk::PACK_SHRINK, 4);
- zoomInButton = Gtk::manage (new Gtk::Button ());
- zoomInButton->set_image (*Gtk::manage (new Gtk::Image (Gtk::StockID("gtk-zoom-in"), Gtk::ICON_SIZE_SMALL_TOOLBAR)));
- zoomInButton->signal_pressed().connect (sigc::mem_fun(*batchQueue, &BatchQueue::zoomIn));
- zoomInButton->set_relief (Gtk::RELIEF_NONE);
- zoomInButton->set_tooltip_text (M("FILEBROWSER_ZOOMINHINT"));
- zoomBox->pack_end (*zoomInButton, Gtk::PACK_SHRINK);
- zoomOutButton = Gtk::manage (new Gtk::Button ());
- zoomOutButton->set_image (*Gtk::manage (new Gtk::Image (Gtk::StockID("gtk-zoom-out"), Gtk::ICON_SIZE_SMALL_TOOLBAR)));
- zoomOutButton->signal_pressed().connect (sigc::mem_fun(*batchQueue, &BatchQueue::zoomOut));
- zoomOutButton->set_relief (Gtk::RELIEF_NONE);
- zoomOutButton->set_tooltip_text (M("FILEBROWSER_ZOOMOUTHINT"));
- zoomBox->pack_end (*zoomOutButton, Gtk::PACK_SHRINK);
- bottomBox->pack_end (*zoomBox, Gtk::PACK_SHRINK);
-
-
- batchQueue->setBatchQueueListener (this);
-
- show_all ();
-}
-
-void BatchQueuePanel::arrangementButtonPressed () {
-
- if (chAlign->get_image()==hAlignIcon) {
- chAlign->set_image (*vAlignIcon);
- batchQueue->setArrangement (BatchQueue::TB_Vertical);
- }
- else {
- chAlign->set_image (*hAlignIcon);
- batchQueue->setArrangement (BatchQueue::TB_Horizontal);
- }
-}
-
-void BatchQueuePanel::updateTab (int qsize)
-{
- Gtk::Notebook *nb =(Gtk::Notebook *)(this->get_parent());
- Gtk::HBox* hbb = Gtk::manage (new Gtk::HBox ());
- if(!qsize ){
- hbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing.png")));
- hbb->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE") )));
- }else if( start->get_active () ){
- hbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing-play.png")));
- hbb->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]" )));
- }else{
- hbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing-pause.png")));
- hbb->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]" )));
- }
- hbb->set_spacing (2);
- hbb->show_all ();
- nb->set_tab_label(*this,*hbb);
-}
-
-void BatchQueuePanel::queueSizeChanged (int qsize)
-{
- updateTab ( qsize);
-}
-
-void BatchQueuePanel::imageProcessingReady (Glib::ustring fname) {
-
- parent->imageDeveloped (fname);
-}
-
-void BatchQueuePanel::startBatchProc () {
-
- stopConnection.block (true);
- startConnection.block (true);
- stop->set_active (false);
- start->set_active (true);
- stopConnection.block (false);
- startConnection.block (false);
-
- if (batchQueue->hasJobs()) {
- fdir->set_sensitive (false);
- fformat->set_sensitive (false);
- saveOptions();
- batchQueue->startProcessing ();
- }
- else
- stopBatchProc ();
- updateTab (batchQueue->getEntries().size());
-}
-
-void BatchQueuePanel::stopBatchProc () {
-
- stopConnection.block (true);
- startConnection.block (true);
- stop->set_active (true);
- start->set_active (false);
- stopConnection.block (false);
- startConnection.block (false);
- updateTab (batchQueue->getEntries().size());
-}
-
-void BatchQueuePanel::addBatchQueueJob (BatchQueueEntry* bqe, bool head) {
-
- batchQueue->addEntry (bqe, head);
-
- if (stop->get_active () && autoStart->get_active ())
- startBatchProc ();
-}
-
-void BatchQueuePanel::queueEmpty () {
-
- stopBatchProc ();
- fdir->set_sensitive (true);
- fformat->set_sensitive (true);
-}
-
-bool BatchQueuePanel::canStartNext () {
-
- if (start->get_active ())
- return true;
- else {
- fdir->set_sensitive (true);
- fformat->set_sensitive (true);
- return false;
- }
-}
-
-void BatchQueuePanel::saveOptions () {
-
- options.savePathTemplate = outdirTemplate->get_text();
- options.saveUsePathTemplate = useTemplate->get_active();
- options.procQueueEnabled = autoStart->get_active ();
-}
-
-// We only want to save the following when it changes, \
-// since these settings are shared with editorpanel :
-void BatchQueuePanel::pathFolderChanged () {
-
- options.savePathFolder = outdirFolder->get_filename();
-}
-
-void BatchQueuePanel::formatChanged (Glib::ustring f) {
-
- options.saveFormat = saveFormatPanel->getFormat ();
-
-}
+/*
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2004-2010 Gabor Horvath
+ *
+ * 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
+#include
+#include
+#include
+#include
+
+BatchQueuePanel::BatchQueuePanel () {
+
+ batchQueue = new BatchQueue();
+
+ // construct batch queue panel with the extra "start" and "stop" button
+ Gtk::VBox* batchQueueButtonBox = Gtk::manage (new Gtk::VBox);
+ start = Gtk::manage (new Gtk::ToggleButton (M("FILEBROWSER_STARTPROCESSING")));
+ stop = Gtk::manage (new Gtk::ToggleButton (M("FILEBROWSER_STOPPROCESSING")));
+ autoStart = Gtk::manage (new Gtk::CheckButton (M("BATCHQUEUE_AUTOSTART")));
+ start->set_tooltip_text (M("FILEBROWSER_STARTPROCESSINGHINT"));
+ stop->set_tooltip_text (M("FILEBROWSER_STOPPROCESSINGHINT"));
+ autoStart->set_tooltip_text (M("FILEBROWSER_TOOLTIP_STOPPROCESSING"));
+ start->set_active (false);
+ stop->set_active (true);
+ autoStart->set_active (options.procQueueEnabled);
+
+ start->set_image (*Gtk::manage (new Gtk::Image (Gtk::StockID("gtk-media-play"), Gtk::ICON_SIZE_BUTTON)));
+ startConnection = start->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::startBatchProc));
+ stop->set_image (*Gtk::manage (new Gtk::Image (Gtk::StockID("gtk-media-stop"), Gtk::ICON_SIZE_BUTTON)));
+ stopConnection = stop->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::stopBatchProc));
+ batchQueueButtonBox->pack_start (*start, Gtk::PACK_SHRINK, 4);
+ batchQueueButtonBox->pack_start (*stop, Gtk::PACK_SHRINK, 4);
+ batchQueueButtonBox->pack_start (*autoStart, Gtk::PACK_SHRINK, 4);
+
+ // Output directory selection
+ fdir = Gtk::manage (new Gtk::Frame (M("PREFERENCES_OUTDIR")));
+ Gtk::VBox* odvb = Gtk::manage (new Gtk::VBox ());
+ odvb->set_border_width (4);
+ Gtk::HBox* hb2 = Gtk::manage (new Gtk::HBox ());
+ useTemplate = Gtk::manage (new Gtk::RadioButton (M("PREFERENCES_OUTDIRTEMPLATE")+":"));
+ hb2->pack_start (*useTemplate, Gtk::PACK_SHRINK,4);
+ outdirTemplate = Gtk::manage (new Gtk::Entry ());
+ hb2->pack_start (*outdirTemplate);
+ odvb->pack_start (*hb2, Gtk::PACK_SHRINK, 4);
+ outdirTemplate->set_tooltip_markup (M("PREFERENCES_OUTDIRTEMPLATEHINT"));
+ useTemplate->set_tooltip_markup (M("PREFERENCES_OUTDIRTEMPLATEHINT"));
+ Gtk::HBox* hb3 = Gtk::manage (new Gtk::HBox ());
+ useFolder = Gtk::manage (new Gtk::RadioButton (M("PREFERENCES_OUTDIRFOLDER")+":"));
+ hb3->pack_start (*useFolder, Gtk::PACK_SHRINK,4);
+ outdirFolder = Gtk::manage (new Gtk::FileChooserButton (M("PREFERENCES_OUTDIRFOLDER"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER));
+ hb3->pack_start (*outdirFolder);
+ odvb->pack_start (*hb3, Gtk::PACK_SHRINK, 4);
+ outdirFolder->set_tooltip_markup (M("PREFERENCES_OUTDIRFOLDERHINT"));
+ useFolder->set_tooltip_markup (M("PREFERENCES_OUTDIRFOLDERHINT"));
+ Gtk::RadioButton::Group g = useTemplate->get_group();
+ useFolder->set_group (g);
+ fdir->add (*odvb);
+
+ // Output file format selection
+ fformat = Gtk::manage (new Gtk::Frame (M("PREFERENCES_FILEFORMAT")));
+ saveFormatPanel = Gtk::manage (new SaveFormatPanel ());
+ fformat->add (*saveFormatPanel);
+
+ saveFormatPanel->init (options.saveFormat);
+ outdirTemplate->set_text (options.savePathTemplate);
+ if (Glib::file_test (options.savePathFolder, Glib::FILE_TEST_IS_DIR))
+ outdirFolder->set_current_folder (options.savePathFolder);
+ useTemplate->set_active (options.saveUsePathTemplate);
+ useFolder->set_active (!options.saveUsePathTemplate);
+
+ // setup signal handlers
+ outdirTemplate->signal_changed().connect (sigc::mem_fun(*this, &BatchQueuePanel::saveOptions));
+ outdirFolder->signal_current_folder_changed().connect (sigc::mem_fun(*this, &BatchQueuePanel::pathFolderChanged));
+ useTemplate->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::saveOptions));
+ useFolder->signal_toggled().connect (sigc::mem_fun(*this, &BatchQueuePanel::saveOptions));
+ saveFormatPanel->setListener (this);
+
+ // setup button bar
+ topBox = Gtk::manage (new Gtk::HBox ());
+ pack_start (*topBox, Gtk::PACK_SHRINK);
+
+ topBox->pack_start (*batchQueueButtonBox, Gtk::PACK_SHRINK, 4);
+ topBox->pack_start (*fdir);
+ topBox->pack_start (*fformat, Gtk::PACK_SHRINK, 4);
+
+ // add middle browser area
+ Gtk::HBox* hBox = Gtk::manage (new Gtk::HBox ());
+ pack_start (*batchQueue);
+
+ // lower box with thumbnail zoom
+ bottomBox = Gtk::manage (new Gtk::HBox ());
+ pack_start (*bottomBox, Gtk::PACK_SHRINK);
+
+ // change thumbnail arrangement button
+ hAlignIcon = new Gtk::Image (argv0+"/images/horizontals.png");
+ vAlignIcon = new Gtk::Image (argv0+"/images/verticals.png");
+ hAlignIcon->show ();
+ vAlignIcon->show ();
+ chAlign = Gtk::manage (new Gtk::Button ());
+ chAlign->show ();
+ bottomBox->pack_end (*chAlign, Gtk::PACK_SHRINK);
+ chAlign->set_image (*hAlignIcon);
+ chAlign->set_relief (Gtk::RELIEF_NONE);
+ chAlign->signal_pressed().connect (sigc::mem_fun(*this, &BatchQueuePanel::arrangementButtonPressed));
+ chAlign->set_tooltip_text (M("FILEBROWSER_ARRANGEMENTHINT"));
+ bottomBox->pack_end (*Gtk::manage (new Gtk::VSeparator), Gtk::PACK_SHRINK, 4);
+ if (options.fbArrangement==1)
+ chAlign->set_image (*vAlignIcon);
+ else
+ chAlign->set_image (*hAlignIcon);
+ arrangementButtonPressed ();
+
+ // thumbnail zoom
+ Gtk::HBox* zoomBox = Gtk::manage (new Gtk::HBox ());
+ zoomBox->pack_start (*Gtk::manage (new Gtk::VSeparator), Gtk::PACK_SHRINK, 4);
+ Gtk::Label* zoomLabel = Gtk::manage (new Gtk::Label (Glib::ustring("")+M("FILEBROWSER_THUMBSIZE")+":"));
+ zoomLabel->set_use_markup (true);
+ zoomBox->pack_start (*zoomLabel, Gtk::PACK_SHRINK, 4);
+ zoomInButton = Gtk::manage (new Gtk::Button ());
+ zoomInButton->set_image (*Gtk::manage (new Gtk::Image (Gtk::StockID("gtk-zoom-in"), Gtk::ICON_SIZE_SMALL_TOOLBAR)));
+ zoomInButton->signal_pressed().connect (sigc::mem_fun(*batchQueue, &BatchQueue::zoomIn));
+ zoomInButton->set_relief (Gtk::RELIEF_NONE);
+ zoomInButton->set_tooltip_text (M("FILEBROWSER_ZOOMINHINT"));
+ zoomBox->pack_end (*zoomInButton, Gtk::PACK_SHRINK);
+ zoomOutButton = Gtk::manage (new Gtk::Button ());
+ zoomOutButton->set_image (*Gtk::manage (new Gtk::Image (Gtk::StockID("gtk-zoom-out"), Gtk::ICON_SIZE_SMALL_TOOLBAR)));
+ zoomOutButton->signal_pressed().connect (sigc::mem_fun(*batchQueue, &BatchQueue::zoomOut));
+ zoomOutButton->set_relief (Gtk::RELIEF_NONE);
+ zoomOutButton->set_tooltip_text (M("FILEBROWSER_ZOOMOUTHINT"));
+ zoomBox->pack_end (*zoomOutButton, Gtk::PACK_SHRINK);
+ bottomBox->pack_end (*zoomBox, Gtk::PACK_SHRINK);
+
+
+ batchQueue->setBatchQueueListener (this);
+
+ show_all ();
+}
+
+void BatchQueuePanel::arrangementButtonPressed () {
+
+ if (chAlign->get_image()==hAlignIcon) {
+ chAlign->set_image (*vAlignIcon);
+ batchQueue->setArrangement (BatchQueue::TB_Vertical);
+ }
+ else {
+ chAlign->set_image (*hAlignIcon);
+ batchQueue->setArrangement (BatchQueue::TB_Horizontal);
+ }
+}
+
+void BatchQueuePanel::updateTab (int qsize)
+{
+ Gtk::Notebook *nb =(Gtk::Notebook *)(this->get_parent());
+ Gtk::HBox* hbb = Gtk::manage (new Gtk::HBox ());
+ if(!qsize ){
+ hbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing.png")));
+ hbb->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE") )));
+ }else if( start->get_active () ){
+ hbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing-play.png")));
+ hbb->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]" )));
+ }else{
+ hbb->pack_start (*Gtk::manage (new Gtk::Image (argv0+"/images/processing-pause.png")));
+ hbb->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE")+" [" +Glib::ustring::format( qsize )+"]" )));
+ }
+ hbb->set_spacing (2);
+ hbb->show_all ();
+ nb->set_tab_label(*this,*hbb);
+}
+
+void BatchQueuePanel::queueSizeChanged (int qsize)
+{
+ updateTab ( qsize);
+}
+
+void BatchQueuePanel::imageProcessingReady (Glib::ustring fname) {
+
+ parent->imageDeveloped (fname);
+}
+
+void BatchQueuePanel::startBatchProc () {
+
+ stopConnection.block (true);
+ startConnection.block (true);
+ stop->set_active (false);
+ start->set_active (true);
+ stopConnection.block (false);
+ startConnection.block (false);
+
+ if (batchQueue->hasJobs()) {
+ fdir->set_sensitive (false);
+ fformat->set_sensitive (false);
+ saveOptions();
+ batchQueue->startProcessing ();
+ }
+ else
+ stopBatchProc ();
+ updateTab (batchQueue->getEntries().size());
+}
+
+void BatchQueuePanel::stopBatchProc () {
+
+ stopConnection.block (true);
+ startConnection.block (true);
+ stop->set_active (true);
+ start->set_active (false);
+ stopConnection.block (false);
+ startConnection.block (false);
+ updateTab (batchQueue->getEntries().size());
+}
+
+void BatchQueuePanel::addBatchQueueJob (BatchQueueEntry* bqe, bool head) {
+
+ batchQueue->addEntry (bqe, head);
+
+ if (stop->get_active () && autoStart->get_active ())
+ startBatchProc ();
+}
+
+void BatchQueuePanel::queueEmpty () {
+
+ stopBatchProc ();
+ fdir->set_sensitive (true);
+ fformat->set_sensitive (true);
+}
+
+bool BatchQueuePanel::canStartNext () {
+
+ if (start->get_active ())
+ return true;
+ else {
+ fdir->set_sensitive (true);
+ fformat->set_sensitive (true);
+ return false;
+ }
+}
+
+void BatchQueuePanel::saveOptions () {
+
+ options.savePathTemplate = outdirTemplate->get_text();
+ options.saveUsePathTemplate = useTemplate->get_active();
+ options.procQueueEnabled = autoStart->get_active ();
+}
+
+// We only want to save the following when it changes, \
+// since these settings are shared with editorpanel :
+void BatchQueuePanel::pathFolderChanged () {
+
+ options.savePathFolder = outdirFolder->get_current_folder();
+}
+
+void BatchQueuePanel::formatChanged (Glib::ustring f) {
+
+ options.saveFormat = saveFormatPanel->getFormat ();
+
+}
diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc
index 8ad08c61e..a4fe97d94 100644
--- a/rtgui/batchtoolpanelcoord.cc
+++ b/rtgui/batchtoolpanelcoord.cc
@@ -121,7 +121,7 @@ void BatchToolPanelCoordinator::initSession () {
coarse->initBatchBehavior ();
curve->setAdjusterBehavior (options.baBehav[ADDSET_TC_EXPCOMP], options.baBehav[ADDSET_TC_BRIGHTNESS], options.baBehav[ADDSET_TC_BLACKLEVEL], options.baBehav[ADDSET_TC_CONTRAST]);
- lcurve->setAdjusterBehavior (options.baBehav[ADDSET_LC_BRIGHTNESS], options.baBehav[ADDSET_LC_CONTRAST]);
+ lcurve->setAdjusterBehavior (options.baBehav[ADDSET_LC_BRIGHTNESS], options.baBehav[ADDSET_LC_CONTRAST], options.baBehav[ADDSET_LC_SATURATION]);
whitebalance->setAdjusterBehavior (options.baBehav[ADDSET_WB_TEMPERATURE], options.baBehav[ADDSET_WB_GREEN]);
vignetting->setAdjusterBehavior (options.baBehav[ADDSET_VIGN_AMOUNT]);
rotate->setAdjusterBehavior (options.baBehav[ADDSET_ROTATE_DEGREE]);
@@ -143,9 +143,10 @@ void BatchToolPanelCoordinator::initSession () {
if (options.baBehav[ADDSET_SH_SHADOWS]) pparams.sh.shadows = 0;
if (options.baBehav[ADDSET_SH_LOCALCONTRAST]) pparams.sh.localcontrast = 0;
- if (options.baBehav[ADDSET_LC_BRIGHTNESS]) pparams.lumaCurve.brightness = 0;
- if (options.baBehav[ADDSET_LC_CONTRAST]) pparams.lumaCurve.contrast = 0;
-
+ if (options.baBehav[ADDSET_LC_BRIGHTNESS]) pparams.labCurve.brightness = 0;
+ if (options.baBehav[ADDSET_LC_CONTRAST]) pparams.labCurve.contrast = 0;
+ if (options.baBehav[ADDSET_LC_SATURATION]) pparams.labCurve.saturation = 0;
+
if (options.baBehav[ADDSET_SHARP_AMOUNT]) pparams.sharpening.amount = 0;
if (options.baBehav[ADDSET_LD_EDGETOLERANCE]) pparams.lumaDenoise.edgetolerance = 0;
diff --git a/rtgui/bqentryupdater.cc b/rtgui/bqentryupdater.cc
index f98cab189..3ad75b669 100644
--- a/rtgui/bqentryupdater.cc
+++ b/rtgui/bqentryupdater.cc
@@ -57,9 +57,10 @@ void BatchQueueEntryUpdater::add (guint8* oimg, int ow, int oh, int newh, BQEntr
void BatchQueueEntryUpdater::process () {
- if (stopped)
- #undef THREAD_PRIORITY_NORMAL
- thread = Glib::Thread::create(sigc::mem_fun(*this, &BatchQueueEntryUpdater::process_), (unsigned long int)0, true, true, Glib::THREAD_PRIORITY_NORMAL);
+ if (stopped){
+ #undef THREAD_PRIORITY_LOW
+ thread = Glib::Thread::create(sigc::mem_fun(*this, &BatchQueueEntryUpdater::process_), (unsigned long int)0, true, true, Glib::THREAD_PRIORITY_LOW);
+ }
}
void BatchQueueEntryUpdater::process_ () {
@@ -93,7 +94,7 @@ void BatchQueueEntryUpdater::stop () {
tostop = true;
Glib::Thread::self()->yield();
if (!stopped)
- thread->join ();
+ thread->join ();
gdk_threads_enter();
}
diff --git a/rtgui/cachemanager.cc b/rtgui/cachemanager.cc
index a7029951a..f44fcb165 100644
--- a/rtgui/cachemanager.cc
+++ b/rtgui/cachemanager.cc
@@ -24,10 +24,26 @@
#include
#include
-CacheManager cacheMgr;
+CacheManager*
+CacheManager::getInstance(void)
+{
+ static CacheManager* instance_ = 0;
+ if ( instance_ == 0 )
+ {
+ static Glib::Mutex smutex_;
+ Glib::Mutex::Lock lock(smutex_);
+ if ( instance_ == 0 )
+ {
+ instance_ = new CacheManager();
+ }
+ }
+ return instance_;
+}
void CacheManager::init () {
+ Glib::Mutex::Lock lock(mutex_);
+
openEntries.clear ();
baseDir = options.cacheBaseDir;
@@ -49,12 +65,18 @@ Thumbnail* CacheManager::getEntry (const Glib::ustring& fname) {
Thumbnail* res = NULL;
- std::map::iterator r = openEntries.find (fname);
- // if it is open, return it
- if (r!=openEntries.end()) {
- r->second->increaseRef ();
- return r->second;
- }
+ // take manager lock and search for entry, if found return it else release
+ // lock and create it
+ {
+ Glib::Mutex::Lock lock(mutex_);
+
+ string_thumb_map::iterator r = openEntries.find (fname);
+ // if it is open, return it
+ if (r!=openEntries.end()) {
+ r->second->increaseRef ();
+ return r->second;
+ }
+ }
// compute the md5
std::string md5 = getMD5 (fname);
@@ -78,6 +100,7 @@ Thumbnail* CacheManager::getEntry (const Glib::ustring& fname) {
}
// if not, create a new one
if (!res) {
+
res = new Thumbnail (this, fname, md5);
if (!res->isSupported ()) {
delete res;
@@ -85,20 +108,45 @@ Thumbnail* CacheManager::getEntry (const Glib::ustring& fname) {
}
}
+ // retake the lock and see if it was added while we we're unlocked, if it
+ // was use it over our version. if not added we create the cache entry
if (res)
- openEntries[fname] = res;
+ {
+ Glib::Mutex::Lock lock(mutex_);
+
+ string_thumb_map::iterator r = openEntries.find (fname);
+ if (r!=openEntries.end()) {
+ delete res;
+ r->second->increaseRef ();
+ return r->second;
+ }
+
+ // it wasn't, create a new entry
+ openEntries[fname] = res;
+ }
+
return res;
}
void CacheManager::deleteEntry (const Glib::ustring& fname) {
+ Glib::Mutex::Lock lock(mutex_);
+
// check if it is opened
- std::map::iterator r = openEntries.find (fname);
+ string_thumb_map::iterator r = openEntries.find (fname);
// if it is open, dont delete it
if (r!=openEntries.end()) {
std::string md5 = r->second->getMD5 ();
- r->second->decreaseRef ();
+
+ // decrease reference count; this will call back into CacheManager so
+ // we release the lock for it.
+ {
+ lock.release();
+ r->second->decreaseRef ();
+ lock.acquire();
+ }
+
// if in the editor, the thumbnail still exists. If not, delete it:
r = openEntries.find (fname);
if (r==openEntries.end() && md5!="") {
@@ -126,6 +174,8 @@ void CacheManager::deleteEntry (const Glib::ustring& fname) {
void CacheManager::renameEntry (const std::string& oldfilename, const std::string& oldmd5, const std::string& newfilename) {
+ Glib::Mutex::Lock lock(mutex_);
+
std::string newmd5 = getMD5 (newfilename);
::g_rename ((getCacheFileName ("profiles", oldfilename, oldmd5) + paramFileExtension).c_str(), (getCacheFileName ("profiles", newfilename, newmd5) + paramFileExtension).c_str());
@@ -136,7 +186,7 @@ void CacheManager::renameEntry (const std::string& oldfilename, const std::strin
::g_rename ((getCacheFileName ("data", oldfilename, oldmd5) + ".txt").c_str(), (getCacheFileName ("data", newfilename, newmd5) + ".txt").c_str());
// check if it is opened
- std::map::iterator r = openEntries.find (oldfilename);
+ string_thumb_map::iterator r = openEntries.find (oldfilename);
// if it is open, update md5
if (r!=openEntries.end()) {
Thumbnail* t = r->second;
@@ -144,14 +194,16 @@ void CacheManager::renameEntry (const std::string& oldfilename, const std::strin
t->setFileName (newfilename);
openEntries[newfilename] = t;
t->updateCache ();
- t->reSaveThumbnail ();
+ t->saveThumbnail ();
}
}
void CacheManager::closeThumbnail (Thumbnail* t) {
+ Glib::Mutex::Lock lock(mutex_);
+
t->updateCache ();
- std::map::iterator r = openEntries.find (t->getFileName());
+ string_thumb_map::iterator r = openEntries.find (t->getFileName());
if (r!=openEntries.end())
openEntries.erase (r);
delete t;
@@ -159,11 +211,15 @@ void CacheManager::closeThumbnail (Thumbnail* t) {
void CacheManager::closeCache () {
+ Glib::Mutex::Lock lock(mutex_);
+
applyCacheSizeLimitation ();
}
void CacheManager::clearAll () {
+ Glib::Mutex::Lock lock(mutex_);
+
deleteDir ("images");
deleteDir ("aehistograms");
deleteDir ("embprofiles");
@@ -171,30 +227,34 @@ void CacheManager::clearAll () {
deleteDir ("data");
// re-generate thumbnail images and clear profiles of open thumbnails
- std::map::iterator i;
- for (i=openEntries.begin(); i!=openEntries.end(); i++) {
- i->second->clearProcParams (CACHEMGR);
- i->second->generateThumbnailImage ();
- i->second->updateCache ();
- }
+ //string_thumb_map::iterator i;
+ //for (i=openEntries.begin(); i!=openEntries.end(); i++) {
+ // i->second->clearProcParams (CACHEMGR);
+ // i->second->generateThumbnailImage ();
+ // i->second->updateCache ();
+ //}
}
void CacheManager::clearThumbImages () {
+ Glib::Mutex::Lock lock(mutex_);
+
deleteDir ("images");
deleteDir ("aehistograms");
deleteDir ("embprofiles");
// re-generate thumbnail images of open thumbnails
- std::map::iterator i;
- for (i=openEntries.begin(); i!=openEntries.end(); i++)
- i->second->generateThumbnailImage ();
+ //string_thumb_map::iterator i;
+ //for (i=openEntries.begin(); i!=openEntries.end(); i++)
+ // i->second->generateThumbnailImage ();
}
void CacheManager::clearProfiles () {
+ Glib::Mutex::Lock lock(mutex_);
+
deleteDir ("profiles");
// clear profiles of open thumbnails
- std::map::iterator i;
+ string_thumb_map::iterator i;
for (i=openEntries.begin(); i!=openEntries.end(); i++)
i->second->clearProcParams (CACHEMGR);
}
@@ -234,9 +294,9 @@ void CacheManager::applyCacheSizeLimitation () {
std::vector flist;
Glib::ustring dataDir = Glib::build_filename (baseDir, "data");
Glib::RefPtr dir = Gio::File::create_for_path (dataDir);
-
- safe_build_file_list (dir, flist);
-
+
+ safe_build_file_list (dir, flist);
+
if (flist.size() > options.maxCacheEntries) {
std::sort (flist.begin(), flist.end());
while (flist.size() > options.maxCacheEntries) {
@@ -245,7 +305,7 @@ void CacheManager::applyCacheSizeLimitation () {
::g_remove ((Glib::build_filename (Glib::build_filename (baseDir, "images"), flist.front().fname) + ".jpg").c_str());
::g_remove ((Glib::build_filename (Glib::build_filename (baseDir, "aehistograms"), flist.front().fname)).c_str());
::g_remove ((Glib::build_filename (Glib::build_filename (baseDir, "embprofiles"), flist.front().fname) + ".icc").c_str());
-// ::g_remove ((Glib::build_filename (Glib::build_filename (baseDir, "profiles"), flist.front().fname) + paramFileExtension).c_str());
+ // ::g_remove ((Glib::build_filename (Glib::build_filename (baseDir, "profiles"), flist.front().fname) + paramFileExtension).c_str());
flist.erase (flist.begin());
}
}
diff --git a/rtgui/cachemanager.h b/rtgui/cachemanager.h
index f2f15c59d..983c2acbd 100644
--- a/rtgui/cachemanager.h
+++ b/rtgui/cachemanager.h
@@ -29,14 +29,21 @@ class Thumbnail;
class CacheManager {
- std::map openEntries;
- Glib::ustring baseDir;
+ typedef std::pair string_thumb_pair;
+ typedef std::map string_thumb_map;
+
+ string_thumb_map openEntries;
+ Glib::ustring baseDir;
+ Glib::Mutex mutex_;
void deleteDir (const Glib::ustring& dirName);
- public:
CacheManager () {}
+ public:
+
+ static CacheManager* getInstance(void);
+
void init ();
Thumbnail* getEntry (const Glib::ustring& fname);
void deleteEntry (const Glib::ustring& fname);
@@ -44,7 +51,7 @@ class CacheManager {
void closeThumbnail (Thumbnail* t);
- const Glib::ustring& getBaseDir () { return baseDir; }
+ const Glib::ustring& getBaseDir () { Glib::Mutex::Lock lock(mutex_); return baseDir; }
void closeCache ();
static std::string getMD5 (const Glib::ustring& fname);
@@ -58,7 +65,7 @@ class CacheManager {
Glib::ustring getCacheFileName (const Glib::ustring& subdir, const Glib::ustring& fname, const Glib::ustring& md5);
};
-extern CacheManager cacheMgr;
+#define cacheMgr CacheManager::getInstance()
#endif
diff --git a/rtgui/crophandler.cc b/rtgui/crophandler.cc
index 257f037fe..9843a1aa1 100644
--- a/rtgui/crophandler.cc
+++ b/rtgui/crophandler.cc
@@ -268,7 +268,7 @@ void CropHandler::update () {
// crop->setWindow (cropX, cropY, cropW, cropH, zoom>=1000 ? 1 : zoom); --> we use the "getWindow" hook instead of setting the size before
crop->setListener (this);
cropPixbuf.clear ();
- Glib::Thread::create(sigc::mem_fun(*crop, &DetailedCrop::fullUpdate), 0, false, true, Glib::THREAD_PRIORITY_NORMAL);
+ Glib::Thread::create(sigc::mem_fun(*crop, &DetailedCrop::fullUpdate), 0, false, true, Glib::THREAD_PRIORITY_LOW);
}
}
diff --git a/rtgui/cropwindow.h b/rtgui/cropwindow.h
index 5a69154d1..59b7129fc 100644
--- a/rtgui/cropwindow.h
+++ b/rtgui/cropwindow.h
@@ -66,7 +66,7 @@ class CropWindow : public LWButtonListener, public CropHandlerListener {
int xpos, ypos, width, height;
// image handling
- CropHandler cropHandler;
+
ImageArea* iarea;
int cropZoom; // *1000
@@ -88,6 +88,7 @@ class CropWindow : public LWButtonListener, public CropHandlerListener {
void getObservedFrameArea(int& x, int& y, int& w, int& h);
public:
+ CropHandler cropHandler;
CropWindow (ImageArea* parent, rtengine::StagedImageProcessor* ipc_);
~CropWindow ();
diff --git a/rtgui/curveeditor.cc b/rtgui/curveeditor.cc
index 395e965b3..d156aaf98 100644
--- a/rtgui/curveeditor.cc
+++ b/rtgui/curveeditor.cc
@@ -412,8 +412,12 @@ void CurveEditor::typeSelectionChanged () {
void CurveEditor::curveChanged () {
- if (cl)
- cl->curveChanged ();
+ if (cl) {
+ if (cl->isMulti())
+ cl->curveChanged (this);
+ else
+ cl->curveChanged ();
+ }
}
void CurveEditor::curveResetPressed () {
@@ -441,15 +445,23 @@ void CurveEditor::curveResetPressed () {
void CurveEditor::shcChanged () {
paramCurve->setPoints (getCurve());
- if (cl)
- cl->curveChanged ();
+ if (cl) {
+ if (cl->isMulti())
+ cl->curveChanged (this);
+ else
+ cl->curveChanged ();
+ }
}
void CurveEditor::adjusterChanged (Adjuster* a, double newval) {
paramCurve->setPoints (getCurve());
- if (cl)
- cl->curveChanged ();
+ if (cl) {
+ if (cl->isMulti())
+ cl->curveChanged (this);
+ else
+ cl->curveChanged ();
+ }
}
bool CurveEditor::adjusterEntered (GdkEventCrossing* ev, int ac) {
diff --git a/rtgui/curvelistener.h b/rtgui/curvelistener.h
index e07fed2d5..72980c5d2 100644
--- a/rtgui/curvelistener.h
+++ b/rtgui/curvelistener.h
@@ -19,10 +19,18 @@
#ifndef _CURVELISTENER_
#define _CURVELISTENER_
+class CurveEditor;
+
class CurveListener {
+ private:
+ bool multi;
public:
virtual void curveChanged () {}
+ virtual void curveChanged (CurveEditor* ce) {}
+ void setMulti(bool value) { multi = value; }
+ bool isMulti() { return multi; }
+ CurveListener() : multi(false) {}
};
#endif
diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc
index 2e6c9f3ff..5e0bfe14e 100644
--- a/rtgui/dirbrowser.cc
+++ b/rtgui/dirbrowser.cc
@@ -40,7 +40,7 @@ DirBrowser::DirBrowser () {
scrolledwindow4->set_flags(Gtk::CAN_FOCUS);
scrolledwindow4->set_border_width(2);
scrolledwindow4->set_shadow_type(Gtk::SHADOW_NONE);
- scrolledwindow4->set_policy(Gtk::POLICY_ALWAYS, Gtk::POLICY_ALWAYS);
+ scrolledwindow4->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
scrolledwindow4->property_window_placement().set_value(Gtk::CORNER_TOP_LEFT);
scrolledwindow4->add(*dirtree);
diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc
index f673624c2..c567fe1b5 100644
--- a/rtgui/editorpanel.cc
+++ b/rtgui/editorpanel.cc
@@ -1,1013 +1,1082 @@
-/*
- * This file is part of RawTherapee.
- *
- * Copyright (c) 2004-2010 Gabor Horvath
- *
- * 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
-#include
-#include