diff --git a/AUTHORS.txt b/AUTHORS.txt
index fe3405128..a9f501919 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -5,6 +5,7 @@ Project initiator:
Development contributors, in last name alphabetical order:
+ Roel Baars
Martin Burri
Javier Celaya
Jacques Desmis
diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc
index 818187898..34363781f 100644
Binary files a/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc and b/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc differ
diff --git a/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc b/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc
index 5dbe25a69..30df95eac 100644
Binary files a/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc and b/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc differ
diff --git a/rtdata/images/themed/png/dark/color-picker-add-hicontrast.png b/rtdata/images/themed/png/dark/color-picker-add-hicontrast.png
index 53eaabf60..5dcdacf1f 100644
Binary files a/rtdata/images/themed/png/dark/color-picker-add-hicontrast.png and b/rtdata/images/themed/png/dark/color-picker-add-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/color-picker-add.png b/rtdata/images/themed/png/dark/color-picker-add.png
index a752ee2f4..fc4b040e2 100644
Binary files a/rtdata/images/themed/png/dark/color-picker-add.png and b/rtdata/images/themed/png/dark/color-picker-add.png differ
diff --git a/rtdata/images/themed/png/dark/color-picker-show.png b/rtdata/images/themed/png/dark/color-picker-bars.png
similarity index 50%
rename from rtdata/images/themed/png/dark/color-picker-show.png
rename to rtdata/images/themed/png/dark/color-picker-bars.png
index acd3699eb..66e749864 100644
Binary files a/rtdata/images/themed/png/dark/color-picker-show.png and b/rtdata/images/themed/png/dark/color-picker-bars.png differ
diff --git a/rtdata/images/themed/png/dark/color-picker-hicontrast.png b/rtdata/images/themed/png/dark/color-picker-hicontrast.png
index c2592a8b7..c7bfb850b 100644
Binary files a/rtdata/images/themed/png/dark/color-picker-hicontrast.png and b/rtdata/images/themed/png/dark/color-picker-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/color-picker-hide.png b/rtdata/images/themed/png/dark/color-picker-hide.png
index 992ee2354..0bd4fafba 100644
Binary files a/rtdata/images/themed/png/dark/color-picker-hide.png and b/rtdata/images/themed/png/dark/color-picker-hide.png differ
diff --git a/rtdata/images/themed/png/dark/color-picker.png b/rtdata/images/themed/png/dark/color-picker.png
index 1a39d857a..f0174fd44 100644
Binary files a/rtdata/images/themed/png/dark/color-picker.png and b/rtdata/images/themed/png/dark/color-picker.png differ
diff --git a/rtdata/images/themed/png/light/node-move-x.png b/rtdata/images/themed/png/dark/crop-point-hicontrast.png
similarity index 59%
rename from rtdata/images/themed/png/light/node-move-x.png
rename to rtdata/images/themed/png/dark/crop-point-hicontrast.png
index 7687ad6e9..65aa29856 100644
Binary files a/rtdata/images/themed/png/light/node-move-x.png and b/rtdata/images/themed/png/dark/crop-point-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/crosshair-adjust.png b/rtdata/images/themed/png/dark/crosshair-adjust.png
index 72704177c..8536e8f09 100644
Binary files a/rtdata/images/themed/png/dark/crosshair-adjust.png and b/rtdata/images/themed/png/dark/crosshair-adjust.png differ
diff --git a/rtdata/images/themed/png/dark/crosshair-node-curve.png b/rtdata/images/themed/png/dark/crosshair-node-curve.png
new file mode 100644
index 000000000..08d6e00ff
Binary files /dev/null and b/rtdata/images/themed/png/dark/crosshair-node-curve.png differ
diff --git a/rtdata/images/themed/png/dark/crosshair-small.png b/rtdata/images/themed/png/dark/crosshair-small.png
new file mode 100644
index 000000000..66db0bd42
Binary files /dev/null and b/rtdata/images/themed/png/dark/crosshair-small.png differ
diff --git a/rtdata/images/themed/png/dark/edit-point.png b/rtdata/images/themed/png/dark/edit-point.png
index 1c3317f86..8ead1ea66 100644
Binary files a/rtdata/images/themed/png/dark/edit-point.png and b/rtdata/images/themed/png/dark/edit-point.png differ
diff --git a/rtdata/images/themed/png/dark/hand-open-hicontrast.png b/rtdata/images/themed/png/dark/hand-open-hicontrast.png
new file mode 100644
index 000000000..2ee26e375
Binary files /dev/null and b/rtdata/images/themed/png/dark/hand-open-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/hand-open.png b/rtdata/images/themed/png/dark/hand-open.png
index e5ab821d5..85fcaaacc 100644
Binary files a/rtdata/images/themed/png/dark/hand-open.png and b/rtdata/images/themed/png/dark/hand-open.png differ
diff --git a/rtdata/images/themed/png/dark/node-move-nw-se-hicontrast.png b/rtdata/images/themed/png/dark/node-move-nw-se-hicontrast.png
new file mode 100644
index 000000000..b802c5849
Binary files /dev/null and b/rtdata/images/themed/png/dark/node-move-nw-se-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/node-move-sw-ne-hicontrast.png b/rtdata/images/themed/png/dark/node-move-sw-ne-hicontrast.png
new file mode 100644
index 000000000..2e51e88a3
Binary files /dev/null and b/rtdata/images/themed/png/dark/node-move-sw-ne-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/node-move-x-hicontrast.png b/rtdata/images/themed/png/dark/node-move-x-hicontrast.png
index 92a1c49e2..1cc871dbb 100644
Binary files a/rtdata/images/themed/png/dark/node-move-x-hicontrast.png and b/rtdata/images/themed/png/dark/node-move-x-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/node-move-x.png b/rtdata/images/themed/png/dark/node-move-x.png
deleted file mode 100644
index ed06b8700..000000000
Binary files a/rtdata/images/themed/png/dark/node-move-x.png and /dev/null differ
diff --git a/rtdata/images/themed/png/dark/node-move-xy-hicontrast.png b/rtdata/images/themed/png/dark/node-move-xy-hicontrast.png
index 3984385af..8b843958d 100644
Binary files a/rtdata/images/themed/png/dark/node-move-xy-hicontrast.png and b/rtdata/images/themed/png/dark/node-move-xy-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/node-move-xy.png b/rtdata/images/themed/png/dark/node-move-xy.png
deleted file mode 100644
index 7fcaf111a..000000000
Binary files a/rtdata/images/themed/png/dark/node-move-xy.png and /dev/null differ
diff --git a/rtdata/images/themed/png/dark/node-move-y-hicontrast.png b/rtdata/images/themed/png/dark/node-move-y-hicontrast.png
index e2fc55da8..f80690851 100644
Binary files a/rtdata/images/themed/png/dark/node-move-y-hicontrast.png and b/rtdata/images/themed/png/dark/node-move-y-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/node-move-y.png b/rtdata/images/themed/png/dark/node-move-y.png
deleted file mode 100644
index 137c79039..000000000
Binary files a/rtdata/images/themed/png/dark/node-move-y.png and /dev/null differ
diff --git a/rtdata/images/themed/png/dark/star-gold-hollow.png b/rtdata/images/themed/png/dark/star-gold-hollow.png
deleted file mode 100644
index 44bf29d12..000000000
Binary files a/rtdata/images/themed/png/dark/star-gold-hollow.png and /dev/null differ
diff --git a/rtdata/images/themed/png/dark/star-gold.png b/rtdata/images/themed/png/dark/star-gold.png
deleted file mode 100644
index 5e3805005..000000000
Binary files a/rtdata/images/themed/png/dark/star-gold.png and /dev/null differ
diff --git a/rtdata/images/themed/png/dark/star-hollow.png b/rtdata/images/themed/png/dark/star-hollow.png
deleted file mode 100644
index dd7015f8a..000000000
Binary files a/rtdata/images/themed/png/dark/star-hollow.png and /dev/null differ
diff --git a/rtdata/images/themed/png/dark/star.png b/rtdata/images/themed/png/dark/star.png
deleted file mode 100644
index 6dde0fbe3..000000000
Binary files a/rtdata/images/themed/png/dark/star.png and /dev/null differ
diff --git a/rtdata/images/themed/png/dark/template-narrow.png b/rtdata/images/themed/png/dark/template-narrow.png
new file mode 100644
index 000000000..78c374503
Binary files /dev/null and b/rtdata/images/themed/png/dark/template-narrow.png differ
diff --git a/rtdata/images/themed/png/dark/trash-show.png b/rtdata/images/themed/png/dark/trash-show.png
deleted file mode 100644
index 983979634..000000000
Binary files a/rtdata/images/themed/png/dark/trash-show.png and /dev/null differ
diff --git a/rtdata/images/themed/png/dark/undo-small.png b/rtdata/images/themed/png/dark/undo-small.png
index 5649efd39..0908ba6d5 100644
Binary files a/rtdata/images/themed/png/dark/undo-small.png and b/rtdata/images/themed/png/dark/undo-small.png differ
diff --git a/rtdata/images/themed/png/light/color-picker-add-hicontrast.png b/rtdata/images/themed/png/light/color-picker-add-hicontrast.png
index 53eaabf60..5dcdacf1f 100644
Binary files a/rtdata/images/themed/png/light/color-picker-add-hicontrast.png and b/rtdata/images/themed/png/light/color-picker-add-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/color-picker-add.png b/rtdata/images/themed/png/light/color-picker-add.png
index b1f5b7424..593e69b3d 100644
Binary files a/rtdata/images/themed/png/light/color-picker-add.png and b/rtdata/images/themed/png/light/color-picker-add.png differ
diff --git a/rtdata/images/themed/png/light/color-picker-bars.png b/rtdata/images/themed/png/light/color-picker-bars.png
new file mode 100644
index 000000000..a7a9b0f07
Binary files /dev/null and b/rtdata/images/themed/png/light/color-picker-bars.png differ
diff --git a/rtdata/images/themed/png/light/color-picker-hicontrast.png b/rtdata/images/themed/png/light/color-picker-hicontrast.png
index c2592a8b7..c7bfb850b 100644
Binary files a/rtdata/images/themed/png/light/color-picker-hicontrast.png and b/rtdata/images/themed/png/light/color-picker-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/color-picker-hide.png b/rtdata/images/themed/png/light/color-picker-hide.png
index 2a0ae672a..418b5b929 100644
Binary files a/rtdata/images/themed/png/light/color-picker-hide.png and b/rtdata/images/themed/png/light/color-picker-hide.png differ
diff --git a/rtdata/images/themed/png/light/color-picker-show.png b/rtdata/images/themed/png/light/color-picker-show.png
deleted file mode 100644
index aa4eb4f06..000000000
Binary files a/rtdata/images/themed/png/light/color-picker-show.png and /dev/null differ
diff --git a/rtdata/images/themed/png/light/color-picker.png b/rtdata/images/themed/png/light/color-picker.png
index 7a4d746a5..0d01785a0 100644
Binary files a/rtdata/images/themed/png/light/color-picker.png and b/rtdata/images/themed/png/light/color-picker.png differ
diff --git a/rtdata/images/themed/png/light/crop-point-hicontrast.png b/rtdata/images/themed/png/light/crop-point-hicontrast.png
new file mode 100644
index 000000000..65aa29856
Binary files /dev/null and b/rtdata/images/themed/png/light/crop-point-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/crosshair-adjust.png b/rtdata/images/themed/png/light/crosshair-adjust.png
index d0a11b753..b8b17dfa1 100644
Binary files a/rtdata/images/themed/png/light/crosshair-adjust.png and b/rtdata/images/themed/png/light/crosshair-adjust.png differ
diff --git a/rtdata/images/themed/png/light/crosshair-node-curve.png b/rtdata/images/themed/png/light/crosshair-node-curve.png
new file mode 100644
index 000000000..0af7379c2
Binary files /dev/null and b/rtdata/images/themed/png/light/crosshair-node-curve.png differ
diff --git a/rtdata/images/themed/png/light/crosshair-small.png b/rtdata/images/themed/png/light/crosshair-small.png
new file mode 100644
index 000000000..a898a2fdb
Binary files /dev/null and b/rtdata/images/themed/png/light/crosshair-small.png differ
diff --git a/rtdata/images/themed/png/light/edit-point.png b/rtdata/images/themed/png/light/edit-point.png
index 73090d4aa..b75f3670a 100644
Binary files a/rtdata/images/themed/png/light/edit-point.png and b/rtdata/images/themed/png/light/edit-point.png differ
diff --git a/rtdata/images/themed/png/light/hand-open-hicontrast.png b/rtdata/images/themed/png/light/hand-open-hicontrast.png
new file mode 100644
index 000000000..2ee26e375
Binary files /dev/null and b/rtdata/images/themed/png/light/hand-open-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/hand-open.png b/rtdata/images/themed/png/light/hand-open.png
index 8a180934f..bb01eac88 100644
Binary files a/rtdata/images/themed/png/light/hand-open.png and b/rtdata/images/themed/png/light/hand-open.png differ
diff --git a/rtdata/images/themed/png/light/node-move-nw-se-hicontrast.png b/rtdata/images/themed/png/light/node-move-nw-se-hicontrast.png
new file mode 100644
index 000000000..b802c5849
Binary files /dev/null and b/rtdata/images/themed/png/light/node-move-nw-se-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/node-move-sw-ne-hicontrast.png b/rtdata/images/themed/png/light/node-move-sw-ne-hicontrast.png
new file mode 100644
index 000000000..2e51e88a3
Binary files /dev/null and b/rtdata/images/themed/png/light/node-move-sw-ne-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/node-move-x-hicontrast.png b/rtdata/images/themed/png/light/node-move-x-hicontrast.png
index 92a1c49e2..1cc871dbb 100644
Binary files a/rtdata/images/themed/png/light/node-move-x-hicontrast.png and b/rtdata/images/themed/png/light/node-move-x-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/node-move-xy-hicontrast.png b/rtdata/images/themed/png/light/node-move-xy-hicontrast.png
index 3984385af..8b843958d 100644
Binary files a/rtdata/images/themed/png/light/node-move-xy-hicontrast.png and b/rtdata/images/themed/png/light/node-move-xy-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/node-move-xy.png b/rtdata/images/themed/png/light/node-move-xy.png
deleted file mode 100644
index cd426f68c..000000000
Binary files a/rtdata/images/themed/png/light/node-move-xy.png and /dev/null differ
diff --git a/rtdata/images/themed/png/light/node-move-y-hicontrast.png b/rtdata/images/themed/png/light/node-move-y-hicontrast.png
index e2fc55da8..f80690851 100644
Binary files a/rtdata/images/themed/png/light/node-move-y-hicontrast.png and b/rtdata/images/themed/png/light/node-move-y-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/node-move-y.png b/rtdata/images/themed/png/light/node-move-y.png
deleted file mode 100644
index 2fbf0b7a3..000000000
Binary files a/rtdata/images/themed/png/light/node-move-y.png and /dev/null differ
diff --git a/rtdata/images/themed/png/light/star-gold-hollow.png b/rtdata/images/themed/png/light/star-gold-hollow.png
deleted file mode 100644
index 44bf29d12..000000000
Binary files a/rtdata/images/themed/png/light/star-gold-hollow.png and /dev/null differ
diff --git a/rtdata/images/themed/png/light/star-gold.png b/rtdata/images/themed/png/light/star-gold.png
deleted file mode 100644
index 5e3805005..000000000
Binary files a/rtdata/images/themed/png/light/star-gold.png and /dev/null differ
diff --git a/rtdata/images/themed/png/light/star-hollow.png b/rtdata/images/themed/png/light/star-hollow.png
deleted file mode 100644
index 3e610948d..000000000
Binary files a/rtdata/images/themed/png/light/star-hollow.png and /dev/null differ
diff --git a/rtdata/images/themed/png/light/star.png b/rtdata/images/themed/png/light/star.png
deleted file mode 100644
index f29ccfdcd..000000000
Binary files a/rtdata/images/themed/png/light/star.png and /dev/null differ
diff --git a/rtdata/images/themed/png/light/template-narrow.png b/rtdata/images/themed/png/light/template-narrow.png
new file mode 100644
index 000000000..78c374503
Binary files /dev/null and b/rtdata/images/themed/png/light/template-narrow.png differ
diff --git a/rtdata/images/themed/png/light/trash-show.png b/rtdata/images/themed/png/light/trash-show.png
deleted file mode 100644
index 9e4ade318..000000000
Binary files a/rtdata/images/themed/png/light/trash-show.png and /dev/null differ
diff --git a/rtdata/images/themed/png/light/undo-small.png b/rtdata/images/themed/png/light/undo-small.png
index 534c5b4fb..6d16726ac 100644
Binary files a/rtdata/images/themed/png/light/undo-small.png and b/rtdata/images/themed/png/light/undo-small.png differ
diff --git a/rtdata/images/themed/svg/color-picker-add-hicontrast.svg b/rtdata/images/themed/svg/color-picker-add-hicontrast.svg
index 3d51dd31f..09870ff48 100644
--- a/rtdata/images/themed/svg/color-picker-add-hicontrast.svg
+++ b/rtdata/images/themed/svg/color-picker-add-hicontrast.svg
@@ -26,7 +26,7 @@
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="34.25"
+ inkscape:zoom="33.75"
inkscape:cx="12"
inkscape:cy="12"
inkscape:document-units="px"
@@ -65,7 +65,7 @@
image/svg+xml
-
+
Maciej Dworak
@@ -101,42 +101,36 @@
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
-
-
-
-
-
-
+ sodipodi:nodetypes="ccccccccccccc" />
+
+
+
+
+
diff --git a/rtdata/images/themed/svg/color-picker-add.svg b/rtdata/images/themed/svg/color-picker-add.svg
index 1535ca260..b42b8371d 100644
--- a/rtdata/images/themed/svg/color-picker-add.svg
+++ b/rtdata/images/themed/svg/color-picker-add.svg
@@ -26,9 +26,9 @@
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="-35.100971"
- inkscape:cy="6.1695344"
+ inkscape:zoom="33.75"
+ inkscape:cx="12"
+ inkscape:cy="12"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
@@ -101,31 +101,36 @@
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
-
-
-
-
+
+
+
+
+
+
diff --git a/rtdata/images/themed/svg/color-picker-show.svg b/rtdata/images/themed/svg/color-picker-bars.svg
similarity index 50%
rename from rtdata/images/themed/svg/color-picker-show.svg
rename to rtdata/images/themed/svg/color-picker-bars.svg
index 351c51011..f6c57ea40 100644
--- a/rtdata/images/themed/svg/color-picker-show.svg
+++ b/rtdata/images/themed/svg/color-picker-bars.svg
@@ -18,7 +18,7 @@
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:version="0.92.2 2405546, 2018-03-11"
- sodipodi:docname="color-picker-show.svg">
+ sodipodi:docname="color-picker-bars.svg">
-
-
-
-
+
+
+
+
+
+
diff --git a/rtdata/images/themed/svg/color-picker-hicontrast.svg b/rtdata/images/themed/svg/color-picker-hicontrast.svg
index 867f9730b..20ece03b7 100644
--- a/rtdata/images/themed/svg/color-picker-hicontrast.svg
+++ b/rtdata/images/themed/svg/color-picker-hicontrast.svg
@@ -26,8 +26,8 @@
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="34.25"
- inkscape:cx="12"
+ inkscape:zoom="33.75"
+ inkscape:cx="7.6740741"
inkscape:cy="12"
inkscape:document-units="px"
inkscape:current-layer="layer1"
@@ -42,9 +42,9 @@
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-others="false"
- inkscape:object-nodes="false"
+ inkscape:object-nodes="true"
inkscape:snap-grids="true"
- inkscape:snap-bbox-midpoints="false"
+ inkscape:snap-bbox-midpoints="true"
showguides="true"
inkscape:snap-global="true">
image/svg+xml
-
+
Maciej Dworak
@@ -101,37 +101,25 @@
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
-
-
-
-
-
+ style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.3266921"
+ d="m 19.925781,1.0039062 c -1.58641,0.1326355 -2.759269,1.3658728 -3.638672,2.5839844 -0.30321,0.4144601 -0.688746,0.7937159 -1.207031,0.8945313 -0.630431,0.360278 -1.152864,0.9161911 -1.572266,1.5019531 -0.547003,0.8984348 0.0482,1.9358775 0.640626,2.640625 0.817234,0.9044466 1.820357,1.880312 3.107421,1.943359 0.889563,-0.02811 1.502887,-0.8099611 2.082032,-1.396484 C 19.575097,8.6352599 19.779974,8.0379511 20.316406,7.7265625 21.40338,6.7821111 22.639686,5.7804332 22.919922,4.2832031 23.243079,3.0583515 22.571361,1.6511303 21.359375,1.21875 20.905795,1.0309215 20.412996,0.98294526 19.925781,1.0039062 Z m -4.11914,4.7363282 c 0.723717,-0.019419 2.332675,1.2432107 2.392578,2.4648437 -0.03984,0.2570324 -0.552186,0.6690001 -0.884766,0.9023438 C 17.04034,9.327167 16.877887,9.2353204 16.628906,9.1621094 15.922112,8.8485353 15.342642,8.3120018 14.8125,7.4042969 14.667763,7.0628521 14.490162,6.9461703 14.888672,6.484375 c 0.656089,-0.6665108 -0.25284,0.2482286 0.667969,-0.6542969 0.06015,-0.05896 0.146611,-0.08707 0.25,-0.089844 z"
+ id="path9921-9-3-9-8-3" />
+
+
+
diff --git a/rtdata/images/themed/svg/color-picker-hide.svg b/rtdata/images/themed/svg/color-picker-hide.svg
index 9fa9203cf..be180885e 100644
--- a/rtdata/images/themed/svg/color-picker-hide.svg
+++ b/rtdata/images/themed/svg/color-picker-hide.svg
@@ -18,7 +18,7 @@
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:version="0.92.2 2405546, 2018-03-11"
- sodipodi:docname="colorPickers-hide.svg">
+ sodipodi:docname="color-picker-hide.svg">
image/svg+xml
-
+
Maciej Dworak
@@ -102,26 +102,26 @@
inkscape:groupmode="layer"
inkscape:label="Layer 1">
+ style="opacity:0.3;vector-effect:none;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2a7fff;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
+ d="m 5.5,21 c 0,0.828427 -0.6715729,1.5 -1.5,1.5 -0.8284271,0 -1.5,-0.671573 -1.5,-1.5 0,-0.828427 0.6715729,-1.5 1.5,-1.5 0.8284271,0 1.5,0.671573 1.5,1.5 z"
+ id="path822"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ssscs" />
diff --git a/rtdata/images/themed/svg/color-picker.svg b/rtdata/images/themed/svg/color-picker.svg
index bff4a0edc..d52d96633 100644
--- a/rtdata/images/themed/svg/color-picker.svg
+++ b/rtdata/images/themed/svg/color-picker.svg
@@ -26,9 +26,9 @@
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="-16.850971"
- inkscape:cy="6.1695344"
+ inkscape:zoom="33.833333"
+ inkscape:cx="12"
+ inkscape:cy="12"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
@@ -42,9 +42,9 @@
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-others="false"
- inkscape:object-nodes="false"
+ inkscape:object-nodes="true"
inkscape:snap-grids="true"
- inkscape:snap-bbox-midpoints="false"
+ inkscape:snap-bbox-midpoints="true"
showguides="true"
inkscape:snap-global="true">
image/svg+xml
-
+
Maciej Dworak
@@ -101,27 +101,32 @@
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
+
+
+
+
+
-
-
-
+ style="opacity:0.7;vector-effect:none;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#2a7fff;stroke-width:1;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
+ d="m 5.5,21 c 0,0.828427 -0.6715729,1.5 -1.5,1.5 -0.8284271,0 -1.5,-0.671573 -1.5,-1.5 0,-0.828427 0.6715729,-1.5 1.5,-1.5 0.8284271,0 1.5,0.671573 1.5,1.5 z"
+ id="path822"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ssscs" />
diff --git a/rtdata/images/themed/svg/crop-point-hicontrast.svg b/rtdata/images/themed/svg/crop-point-hicontrast.svg
new file mode 100644
index 000000000..4a06bfcba
--- /dev/null
+++ b/rtdata/images/themed/svg/crop-point-hicontrast.svg
@@ -0,0 +1,176 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/crosshair-adjust.svg b/rtdata/images/themed/svg/crosshair-adjust.svg
index 16ff954ac..4cde3415a 100644
--- a/rtdata/images/themed/svg/crosshair-adjust.svg
+++ b/rtdata/images/themed/svg/crosshair-adjust.svg
@@ -26,7 +26,7 @@
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="34.25"
+ inkscape:zoom="33.833333"
inkscape:cx="12"
inkscape:cy="12"
inkscape:document-units="px"
@@ -63,7 +63,7 @@
image/svg+xml
-
+
Maciej Dworak
@@ -101,16 +101,16 @@
inkscape:label="Layer 1">
diff --git a/rtdata/images/themed/svg/crosshair-node-curve.svg b/rtdata/images/themed/svg/crosshair-node-curve.svg
new file mode 100644
index 000000000..d72c2a929
--- /dev/null
+++ b/rtdata/images/themed/svg/crosshair-node-curve.svg
@@ -0,0 +1,134 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/crosshair-small.svg b/rtdata/images/themed/svg/crosshair-small.svg
new file mode 100644
index 000000000..2e5e6596a
--- /dev/null
+++ b/rtdata/images/themed/svg/crosshair-small.svg
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/edit-point.svg b/rtdata/images/themed/svg/edit-point.svg
index b3e16abdf..9f686d6e9 100644
--- a/rtdata/images/themed/svg/edit-point.svg
+++ b/rtdata/images/themed/svg/edit-point.svg
@@ -26,12 +26,12 @@
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="33.833333"
+ inkscape:zoom="34.25"
inkscape:cx="12"
inkscape:cy="12"
inkscape:document-units="px"
inkscape:current-layer="layer1"
- showgrid="false"
+ showgrid="true"
inkscape:window-width="1920"
inkscape:window-height="1019"
inkscape:window-x="0"
@@ -44,8 +44,7 @@
inkscape:snap-others="false"
inkscape:object-nodes="false"
inkscape:snap-grids="true"
- inkscape:snap-bbox-midpoints="false"
- showborder="false">
+ inkscape:snap-bbox-midpoints="false">
-
-
-
-
-
+ id="defs815" />
@@ -112,31 +99,58 @@
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
+
+
+
+
diff --git a/rtdata/images/themed/svg/hand-open-hicontrast.svg b/rtdata/images/themed/svg/hand-open-hicontrast.svg
new file mode 100644
index 000000000..310eda2d1
--- /dev/null
+++ b/rtdata/images/themed/svg/hand-open-hicontrast.svg
@@ -0,0 +1,126 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/hand-open.svg b/rtdata/images/themed/svg/hand-open.svg
index d49d10d5f..a7597b482 100644
--- a/rtdata/images/themed/svg/hand-open.svg
+++ b/rtdata/images/themed/svg/hand-open.svg
@@ -26,12 +26,12 @@
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="34.25"
+ inkscape:zoom="33.833333"
inkscape:cx="12"
inkscape:cy="12"
inkscape:document-units="px"
inkscape:current-layer="layer1"
- showgrid="true"
+ showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1019"
inkscape:window-x="0"
@@ -119,7 +119,8 @@
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.7;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers fill stroke;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+ d="m 36.455078,1.1015625 c -0.657515,-0.025842 -1.353006,0.4514359 -1.388672,1.2167969 0.02103,2.1794281 0.362572,4.3446075 0.34375,6.5253906 C 34.704462,6.7462413 33.696458,4.7625164 33.007812,2.6601562 32.699764,1.4053767 30.686393,1.3462201 30.712891,2.7910156 c 0.148468,1.5137205 0.593614,2.9947661 1.144531,4.4121094 0.579646,1.5250885 1.19498,3.114871 1.074219,4.777344 -0.211465,1.328048 -1.80517,1.750258 -2.697266,0.580078 -0.416475,-0.393564 -0.544424,-0.651727 -0.960938,-1.238281 -0.416513,-0.586553 -1.122246,-1.5013905 -1.86914,-1.220704 -1.49767,0.876327 -0.29335,2.450372 0.320312,3.476563 0.529141,1.049899 1.266424,1.94363 2.097657,2.765625 1.139405,1.210646 2.00714,2.79189 1.927734,4.496094 0.04404,1.388514 1.55807,2.053559 2.763672,2.126953 1.546216,0.08721 3.126794,0.01908 4.630859,-0.367188 0.822251,-0.241424 1.611734,-0.89878 1.595703,-1.824218 C 40.98435,16.701293 42.787358,12.966248 43.802734,9.0625 44.093836,8.0059864 44.448353,6.9326448 44.445312,5.828125 44.177193,4.6456298 42.537354,4.6959782 42.236328,6.0273438 41.967568,6.973985 41.870664,7.9687737 41.496094,8.8847656 41.242569,6.9262668 41.683518,4.9338681 41.367188,2.9785156 41.412433,1.450498 39.214266,1.5287748 38.957031,2.8378906 38.705507,4.763864 38.797888,6.7201513 38.556641,8.6484375 37.992758,6.3776292 38.26795,3.9551294 37.447266,1.7402344 37.23158,1.3141238 36.849587,1.1170679 36.455078,1.1015625 Z m -0.03125,0.4941406 c 0.22785,2.006e-4 0.425241,0.1051019 0.5625,0.3632813 0.747739,2.0597572 0.494913,4.4363486 1.083984,6.8085937 l 0.982422,-0.056641 C 39.29984,6.7358274 39.21188,4.7904773 39.451172,2.9316406 39.530361,2.5430223 39.900196,2.3387264 40.269531,2.34375 c 0.185458,0.00252 0.342359,0.063217 0.439453,0.1523438 0.09709,0.089127 0.167925,0.206397 0.160157,0.46875 l -0.002,0.046875 0.0078,0.046875 C 41.171104,4.8885486 40.731427,6.8744709 41,8.9492188 l 0.242188,1.8750002 0.716796,-1.7500002 c 0.411093,-1.0053067 0.505532,-2.0215571 0.757813,-2.9101563 l 0.0039,-0.013672 0.0039,-0.013672 c 0.107736,-0.4764885 0.395184,-0.6352244 0.660157,-0.6523438 0.251375,-0.016241 0.449106,0.1022573 0.542968,0.4316406 -0.01505,0.9710696 -0.318057,1.9705536 -0.605468,3.0136719 l -0.002,0.00391 v 0.00195 C 42.321624,12.774915 40.493948,16.543442 40.24213,20.746094 l -0.002,0.01953 v 0.01953 c 0.0055,0.318516 -0.117945,0.577694 -0.34375,0.8125 -0.223319,0.232223 -0.551559,0.418326 -0.882812,0.517578 -1.43352,0.367311 -2.960591,0.436603 -4.470703,0.351563 C 34.01895,22.434887 33.408681,22.263531 32.96875,21.976562 32.528819,21.689595 32.264389,21.339493 32.248047,20.824219 32.321056,18.952282 31.378689,17.267743 30.185547,16 l -0.0059,-0.0059 -0.0059,-0.0059 C 29.366435,15.189941 28.66843,14.338759 28.171875,13.353516 l -0.0078,-0.01758 -0.0098,-0.01563 c -0.322956,-0.540054 -0.748063,-1.170179 -0.902342,-1.681634 -0.07714,-0.255727 -0.08634,-0.461023 -0.03711,-0.621094 0.04425,-0.143897 0.168741,-0.284663 0.398437,-0.435547 0.148566,-0.04428 0.2911,-0.0095 0.53125,0.189453 0.254362,0.210719 0.520624,0.555332 0.722657,0.839844 0.388512,0.547122 0.564085,0.853027 0.984375,1.261719 0.550791,0.711482 1.379594,0.989291 2.101562,0.820312 0.726883,-0.170128 1.337556,-0.786297 1.472656,-1.634765 l 0.002,-0.02149 0.0019,-0.02148 C 33.56099,10.207825 32.903082,8.5484755 32.324198,7.0253906 v -0.00195 -0.00195 c -0.537613,-1.3831218 -0.962413,-2.8116317 -1.107422,-4.25 -7.18e-4,-0.2313914 0.05782,-0.3441971 0.140625,-0.421875 0.0851,-0.079836 0.22003,-0.1338908 0.384765,-0.1367188 0.329471,-0.00566 0.684997,0.1822887 0.779297,0.5664063 l 0.0059,0.017578 0.0059,0.017578 c 0.704593,2.151049 1.712136,4.1379729 2.402344,6.1894531 l 0.974609,-0.15625 C 35.929397,6.6206215 35.591319,4.4623326 35.56836,2.33985 c 0.01905,-0.3764264 0.286845,-0.6247291 0.619141,-0.7109376 0.08191,-0.021249 0.160378,-0.03327 0.236328,-0.033203 z"
+ id="path825"
+ inkscape:connector-curvature="0" />
diff --git a/rtdata/images/themed/svg/node-move-x.svg b/rtdata/images/themed/svg/node-move-nw-se-hicontrast.svg
similarity index 64%
rename from rtdata/images/themed/svg/node-move-x.svg
rename to rtdata/images/themed/svg/node-move-nw-se-hicontrast.svg
index 3215ce9f4..375c8ea27 100644
--- a/rtdata/images/themed/svg/node-move-x.svg
+++ b/rtdata/images/themed/svg/node-move-nw-se-hicontrast.svg
@@ -18,7 +18,7 @@
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:version="0.92.2 2405546, 2018-03-11"
- sodipodi:docname="node-move-x.svg">
+ sodipodi:docname="node-move-nw-se-hicontrast.svg">
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:snap-bbox-edge-midpoints="true"
+ inkscape:snap-center="true">
+ empspacing="2"
+ dotted="false"
+ spacingx="0.5"
+ spacingy="0.5" />
@@ -64,7 +67,7 @@
image/svg+xml
-
+
Maciej Dworak
@@ -100,21 +103,29 @@
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
-
-
-
+
+
+
+
+
diff --git a/rtdata/images/themed/svg/node-move-xy.svg b/rtdata/images/themed/svg/node-move-sw-ne-hicontrast.svg
similarity index 64%
rename from rtdata/images/themed/svg/node-move-xy.svg
rename to rtdata/images/themed/svg/node-move-sw-ne-hicontrast.svg
index 47c25e81f..fdda47505 100644
--- a/rtdata/images/themed/svg/node-move-xy.svg
+++ b/rtdata/images/themed/svg/node-move-sw-ne-hicontrast.svg
@@ -18,7 +18,7 @@
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:version="0.92.2 2405546, 2018-03-11"
- sodipodi:docname="node-move-xy.svg">
+ sodipodi:docname="node-move-sw-ne-hicontrast.svg">
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:snap-bbox-edge-midpoints="true"
+ inkscape:snap-center="true">
+ empspacing="2"
+ dotted="false"
+ spacingx="0.5"
+ spacingy="0.5" />
@@ -64,7 +67,7 @@
image/svg+xml
-
+
Maciej Dworak
@@ -100,31 +103,29 @@
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
-
-
-
-
-
+
+
+
+
+
diff --git a/rtdata/images/themed/svg/node-move-x-hicontrast.svg b/rtdata/images/themed/svg/node-move-x-hicontrast.svg
index 6e6079901..a24af10ef 100644
--- a/rtdata/images/themed/svg/node-move-x-hicontrast.svg
+++ b/rtdata/images/themed/svg/node-move-x-hicontrast.svg
@@ -41,18 +41,21 @@
inkscape:pagecheckerboard="false"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
- inkscape:snap-others="false"
- inkscape:object-nodes="false"
+ inkscape:snap-others="true"
+ inkscape:object-nodes="true"
inkscape:snap-grids="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-bbox-edge-midpoints="true">
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:snap-bbox-edge-midpoints="true"
+ inkscape:snap-center="true">
+ empspacing="2"
+ dotted="false"
+ spacingx="0.5"
+ spacingy="0.5" />
@@ -64,7 +67,7 @@
image/svg+xml
-
+
Maciej Dworak
@@ -101,20 +104,24 @@
inkscape:groupmode="layer"
inkscape:label="Layer 1">
-
+ sodipodi:nodetypes="cccc" />
+
diff --git a/rtdata/images/themed/svg/node-move-xy-hicontrast.svg b/rtdata/images/themed/svg/node-move-xy-hicontrast.svg
index 9c3915804..05d291870 100644
--- a/rtdata/images/themed/svg/node-move-xy-hicontrast.svg
+++ b/rtdata/images/themed/svg/node-move-xy-hicontrast.svg
@@ -26,9 +26,9 @@
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="34.25"
- inkscape:cx="12"
- inkscape:cy="12"
+ inkscape:zoom="24.218407"
+ inkscape:cx="6.3691263"
+ inkscape:cy="12.072563"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
@@ -41,18 +41,21 @@
inkscape:pagecheckerboard="false"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
- inkscape:snap-others="false"
- inkscape:object-nodes="false"
+ inkscape:snap-others="true"
+ inkscape:object-nodes="true"
inkscape:snap-grids="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-bbox-edge-midpoints="true">
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:snap-bbox-edge-midpoints="true"
+ inkscape:snap-center="true">
+ empspacing="2"
+ dotted="false"
+ spacingx="0.5"
+ spacingy="0.5" />
@@ -100,31 +103,69 @@
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
+
+
+
+
+
+
+
-
-
+ id="path5657"
+ d="M -31.508539,18.321948 -28.000003,23 l 3.508542,-4.678052 z"
+ style="display:inline;opacity:0.9;fill:#2a7fff;fill-opacity:1;stroke:none;stroke-width:0.0348262" />
+ r="3" />
+
+
diff --git a/rtdata/images/themed/svg/node-move-y-hicontrast.svg b/rtdata/images/themed/svg/node-move-y-hicontrast.svg
index fe7b285e7..615f3f94a 100644
--- a/rtdata/images/themed/svg/node-move-y-hicontrast.svg
+++ b/rtdata/images/themed/svg/node-move-y-hicontrast.svg
@@ -41,18 +41,21 @@
inkscape:pagecheckerboard="false"
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
- inkscape:snap-others="false"
- inkscape:object-nodes="false"
+ inkscape:snap-others="true"
+ inkscape:object-nodes="true"
inkscape:snap-grids="true"
- inkscape:snap-bbox-midpoints="false"
- inkscape:snap-bbox-edge-midpoints="true">
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:snap-bbox-edge-midpoints="true"
+ inkscape:snap-center="true">
+ empspacing="2"
+ dotted="false"
+ spacingx="0.5"
+ spacingy="0.5" />
@@ -64,7 +67,7 @@
image/svg+xml
-
+
Maciej Dworak
@@ -100,21 +103,29 @@
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
-
-
-
+
+
+
+
+
diff --git a/rtdata/images/themed/svg/node-move-y.svg b/rtdata/images/themed/svg/node-move-y.svg
deleted file mode 100644
index 3c6e5cfd7..000000000
--- a/rtdata/images/themed/svg/node-move-y.svg
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
-
-
diff --git a/rtdata/images/themed/svg/undo-small.svg b/rtdata/images/themed/svg/undo-small.svg
index 137c343e6..83b4663a0 100644
--- a/rtdata/images/themed/svg/undo-small.svg
+++ b/rtdata/images/themed/svg/undo-small.svg
@@ -44,7 +44,8 @@
inkscape:snap-others="false"
inkscape:object-nodes="false"
inkscape:snap-grids="true"
- inkscape:snap-bbox-midpoints="false">
+ inkscape:snap-bbox-midpoints="false"
+ inkscape:snap-global="false">
-
!GENERAL_SLIDER;Slider
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_166;Exposure - Reset
!HISTORY_MSG_173;NR - Detail recovery
!HISTORY_MSG_174;CIECAM02
@@ -1341,6 +1342,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1470,13 +1473,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
!PREFERENCES_BEHSETALL;All to 'Set'
@@ -1505,11 +1502,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!PREFERENCES_D55;5500K
!PREFERENCES_D60;6000K
!PREFERENCES_D65;6500K
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FLUOF2;Fluorescent F2
!PREFERENCES_FLUOF7;Fluorescent F7
!PREFERENCES_FLUOF11;Fluorescent F11
@@ -1534,23 +1528,18 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images
!PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2.
!PREFERENCES_LANG;Language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported.
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1563,34 +1552,22 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings
!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files
!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation.
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
-!PREFERENCES_SMA;Small (250x287)
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
!PROFILEPANEL_MODE_TIP;Processing profile fill mode.\n\nButton pressed: partial profiles will be converted to full profiles; the missing values will be replaced with hard-coded defaults.\n\nButton released: profiles will be applied as they are, altering only those values which they contain.
!PROFILEPANEL_MYPROFILES;My profiles
@@ -1609,6 +1586,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling.
!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
@@ -1948,6 +1926,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CASTR;Strength
!TP_RAWEXPOS_BLACK_0;Green 1 (lead)
!TP_RAWEXPOS_BLACK_1;Red
@@ -2036,7 +2016,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified)
index ecd0473ba..78667ee02 100644
--- a/rtdata/languages/Chinese (Simplified)
+++ b/rtdata/languages/Chinese (Simplified)
@@ -488,13 +488,7 @@ PARTIALPASTE_WAVELETGROUP;小波变换等级
PARTIALPASTE_WHITEBALANCE;白平衡
PREFERENCES_ADD;添加
PREFERENCES_APPLNEXTSTARTUP;下次启动生效
-PREFERENCES_AUTLISLOW;低
-PREFERENCES_AUTLISMAX;最大 - 所有块平均值
-PREFERENCES_AUTLISSTD;高
-PREFERENCES_AUTLISVLOW;无
-PREFERENCES_AUTLOW;低
PREFERENCES_AUTOMONPROFILE;使用操作系统主显示器的色彩档案
-PREFERENCES_AUTSTD;标准
PREFERENCES_BATCH_PROCESSING;批处理
PREFERENCES_BEHADDALL;全 '添加'
PREFERENCES_BEHAVIOR;行为
@@ -536,8 +530,6 @@ PREFERENCES_DARKFRAMESHOTS;张
PREFERENCES_DARKFRAMETEMPLATES;模板
PREFERENCES_DATEFORMAT;日期格式
PREFERENCES_DATEFORMATHINT;可以使用下列控制符:\n%y : 年\n%m : 月h\n%d : 日\n\n例如, 中文日期格式:\n%y/%m/%d
-PREFERENCES_DAUB_LABEL;使用 Daubechies D6 小波变换而不是 D4
-PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and 小波变换等级 tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
PREFERENCES_DIRDARKFRAMES;暗场图像路径
PREFERENCES_DIRHOME;用户文件路径
PREFERENCES_DIRLAST;上次访问路径
@@ -545,7 +537,6 @@ PREFERENCES_DIROTHER;其他
PREFERENCES_DIRSELECTDLG;启动时选择图片路径...
PREFERENCES_DIRSOFTWARE;软件安装路径
PREFERENCES_EDITORLAYOUT;编辑器布局
-PREFERENCES_EXPAUT;进阶
PREFERENCES_EXTERNALEDITOR;外部编辑器
PREFERENCES_FBROWSEROPTS;文件浏览选项
PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
@@ -591,12 +582,7 @@ PREFERENCES_INTENT_SATURATION;饱和度
PREFERENCES_INTERNALTHUMBIFUNTOUCHED;如果RAW文件没有修改, 显示内嵌JPEG缩略图
PREFERENCES_LANG;语言
PREFERENCES_LANGAUTODETECT;使用系统语言
-PREFERENCES_LEVAUTDN;降噪等级
-PREFERENCES_LEVDN;单元尺寸
-PREFERENCES_LISS;自动多区域平滑
-PREFERENCES_MAX;最大 (Tile)
PREFERENCES_MAXRECENTFOLDERS;最近访问路径历史记录数
-PREFERENCES_MED;中等 (Tile/2)
PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -604,7 +590,6 @@ PREFERENCES_MENUGROUPPROFILEOPERATIONS;Group "Processing profile operations"
PREFERENCES_MENUGROUPRANK;组 "评价"
PREFERENCES_MENUOPTIONS;子菜单选项
PREFERENCES_METADATA;元数据
-PREFERENCES_MIN;Mini (100x115)
PREFERENCES_MONINTENT;默认渲染意图
PREFERENCES_MONITOR;显示器
PREFERENCES_MONPROFILE;默认色彩配置文件
@@ -613,7 +598,6 @@ PREFERENCES_MULTITAB;多编辑器标签模式
PREFERENCES_MULTITABDUALMON;多编辑器标签独立模式
PREFERENCES_NAVGUIDEBRUSH;导航器引导颜色
PREFERENCES_NAVIGATIONFRAME;导航器
-PREFERENCES_NOISE;降噪
PREFERENCES_OUTDIR;输出路径
PREFERENCES_OUTDIRFOLDER;保存至文件夹
PREFERENCES_OUTDIRFOLDERHINT;将已寸图片放至所选文件夹
@@ -649,8 +633,6 @@ PREFERENCES_PRTPROFILE;色彩配置文件
PREFERENCES_PSPATH;Adobe Photoshop安装路径
PREFERENCES_REMEMBERZOOMPAN;记忆缩放和位置
PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-PREFERENCES_RGBDTL_LABEL;降噪和小波变换等级可用的最大线程数
-PREFERENCES_RGBDTL_TOOLTIP;"0"表示自动选择最大可用线程数 线程越多处理越快, 同时消耗更多内存
PREFERENCES_SELECTFONT;设置主要字体
PREFERENCES_SELECTFONT_COLPICKER;设置色彩选择器字体
PREFERENCES_SELECTLANG;选择语言
@@ -664,37 +646,26 @@ PREFERENCES_SHOWDATETIME;显示时间日期
PREFERENCES_SHOWEXPOSURECOMPENSATION;附加曝光补偿
PREFERENCES_SHOWFILMSTRIPTOOLBAR;显示图像胶片栏
PREFERENCES_SHTHRESHOLD;阴影过暗阈值
-PREFERENCES_SIMPLAUT;工具模式
PREFERENCES_SINGLETAB;单编辑器栏模式
PREFERENCES_SINGLETABVERTAB;单编辑器栏模式, 标签栏垂直
-PREFERENCES_SMA;小 (250x287)
PREFERENCES_SND_BATCHQUEUEDONE;队列处理完成
PREFERENCES_SND_HELP;输入完整路径来指定声音文件, 或者留空表示无声 \nWindows系统声音可以使用 "SystemDefault", "SystemAsterisk" 等 Linux则可以使用 "complete", "window-attention" 等
PREFERENCES_SND_LNGEDITPROCDONE;编辑器处理完成
PREFERENCES_SND_THRESHOLDSECS;几秒之后
PREFERENCES_STARTUPIMDIR;启动时路径
-PREFERENCES_STDAUT;标准
PREFERENCES_TAB_BROWSER;文件浏览器
PREFERENCES_TAB_COLORMGR;色彩管理
PREFERENCES_TAB_DYNAMICPROFILE;动态预设规则
PREFERENCES_TAB_GENERAL;一般
PREFERENCES_TAB_IMPROC;图片处理
-PREFERENCES_TAB_PERFORMANCE;性能和品质
PREFERENCES_TAB_SOUND;音效
PREFERENCES_THEME;主题
-PREFERENCES_TIMAX;高
-PREFERENCES_TINB;块数量
-PREFERENCES_TISTD;标准
PREFERENCES_TP_LABEL;工具栏
PREFERENCES_TP_USEICONORTEXT;标签使用图标而不是文本
PREFERENCES_TP_VSCROLLBAR;隐藏垂直滚动栏
PREFERENCES_TUNNELMETADATA;无损复制 Exif/IPTC/XMP 到输出文件
PREFERENCES_USEBUNDLEDPROFILES;启用内置预设
PREFERENCES_VIEW;输出设备白平衡 (显示器、电视、投影仪等)
-PREFERENCES_WAVLEV;在质量为"高"时增加小波变换等级
-PREFERENCES_WLONE;一级
-PREFERENCES_WLTWO;二级
-PREFERENCES_WLZER;无
PREFERENCES_WORKFLOW;排版
PROFILEPANEL_LABEL;处理参数配置
PROFILEPANEL_LOADDLGLABEL;加载处理参数为...
@@ -1063,9 +1034,9 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_MSG_82;Profile changed
!HISTORY_MSG_86;RGB Curves - Luminosity mode
@@ -1448,6 +1419,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1568,7 +1541,10 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!PREFERENCES_CUSTPROFBUILDHINT;Executable (or script) file called when a new initial processing profile should be generated for an image.\n\nThe path of the communication file (*.ini style, a.k.a. "Keyfile") is added as a command line parameter. It contains various parameters required for the scripts and image Exif to allow a rules-based processing profile generation.\n\nWARNING: You are responsible for using double quotes where necessary if you're using paths containing spaces.
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
@@ -1595,6 +1571,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling.
!SHCSELECTOR_TOOLTIP;Click right mouse button to reset the position of those 3 sliders.
!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
@@ -1917,6 +1894,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CASTR;Strength
!TP_RAWEXPOS_BLACKS;Black Levels
!TP_RAWEXPOS_BLACK_0;Green 1 (lead)
@@ -2015,7 +1994,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional)
index d527f8c65..6e7698f9a 100644
--- a/rtdata/languages/Chinese (Traditional)
+++ b/rtdata/languages/Chinese (Traditional)
@@ -583,9 +583,9 @@ TP_WBALANCE_TEMPERATURE;色溫
!GENERAL_SLIDER;Slider
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_MSG_82;Profile changed
!HISTORY_MSG_83;S/H - Sharp mask
@@ -1003,6 +1003,8 @@ TP_WBALANCE_TEMPERATURE;色溫
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1086,7 +1088,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3
!MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out).
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue.\nShortcut: Ctrl+b
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s
+!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s\nSave current profile (.pp3).\nShortcut: Ctrl+Shift+s
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor.\nShortcut: Ctrl+e
!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels.\nShortcut: m
!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen
@@ -1201,14 +1203,8 @@ TP_WBALANCE_TEMPERATURE;色溫
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BATCH_PROCESSING;Batch Processing
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1246,13 +1242,10 @@ TP_WBALANCE_TEMPERATURE;色溫
!PREFERENCES_DARKFRAMEFOUND;Found
!PREFERENCES_DARKFRAMESHOTS;shots
!PREFERENCES_DARKFRAMETEMPLATES;templates
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_EDITORLAYOUT;Editor Layout
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
!PREFERENCES_FLATFIELDFOUND;Found
!PREFERENCES_FLATFIELDSDIR;Flat-fields directory
@@ -1285,12 +1278,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1298,7 +1286,6 @@ TP_WBALANCE_TEMPERATURE;色溫
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
@@ -1307,13 +1294,14 @@ TP_WBALANCE_TEMPERATURE;色溫
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files
!PREFERENCES_PANFACTORLABEL;Pan rate amplification
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1327,8 +1315,6 @@ TP_WBALANCE_TEMPERATURE;色溫
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT;Select main font
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
@@ -1338,36 +1324,26 @@ TP_WBALANCE_TEMPERATURE;色溫
!PREFERENCES_SET;Set
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETAB;Single Editor Tab Mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PREFERENCES_WORKFLOW;Layout
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1395,6 +1371,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP;Subsampling
!SAVEDLG_SUBSAMP_1;Best compression
@@ -1859,6 +1836,8 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_AUTO;Auto-correction
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1963,7 +1942,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech
index 8051a6f3b..671fde250 100644
--- a/rtdata/languages/Czech
+++ b/rtdata/languages/Czech
@@ -982,14 +982,8 @@ PARTIALPASTE_VIGNETTING;Korekce vinětace
PARTIALPASTE_WHITEBALANCE;Nastavení bílé
PREFERENCES_ADD;Přidat
PREFERENCES_APPLNEXTSTARTUP;vyžaduje restart aplikace
-PREFERENCES_AUTLISLOW;Nízké
-PREFERENCES_AUTLISMAX;Maximální - průměr všech dlaždic
-PREFERENCES_AUTLISSTD;Vysoké
-PREFERENCES_AUTLISVLOW;Ne
-PREFERENCES_AUTLOW;Nízká
PREFERENCES_AUTOMONPROFILE;Použít barevný profil hlavního monitoru z operačního systému
PREFERENCES_AUTOSAVE_TP_OPEN;Před ukončením automaticky uložit\nstav sbalení/rozbalení nástrojů.
-PREFERENCES_AUTSTD;Běžná
PREFERENCES_BATCH_PROCESSING;Dávkové zpracování
PREFERENCES_BEHADDALL;Vše do 'Přidat'
PREFERENCES_BEHADDALLHINT;Nastaví všechny parametry do módu Přidat.\nZměna parametrů v panelu dávkového zpracování se aplikuje jako rozdíl k uloženým hodnotám.
@@ -1036,8 +1030,6 @@ PREFERENCES_DARKFRAMESHOTS;snímků
PREFERENCES_DARKFRAMETEMPLATES;šablony
PREFERENCES_DATEFORMAT;Formát data
PREFERENCES_DATEFORMATHINT;Lze použít následující formátovací řetězce:\n%y\t- rok (year)\n%m\t- měsíc (month)\n%d\t- den (day)\n\nNapříklad český formát data:\n%d. %m. %y
-PREFERENCES_DAUB_LABEL;Použít D6 Daubechiesové vlnky namísto D4
-PREFERENCES_DAUB_TOOLTIP;Nástroje Redukce šumu a Úrovně vlnky používají Daubechiesové mateřskou vlnku. Pokud místo D4 vyberete D6 zvýší se počet ortogonálních Daubechiesové koeficientů a pravděpodobně zvýší kvalitu úrovní malého měřítka. Není zde rozdíl ve spotřebě paměti nebo délce zpracování.
PREFERENCES_DIRDARKFRAMES;Složka tmavých snímků
PREFERENCES_DIRECTORIES;Složky
PREFERENCES_DIRHOME;Domovská složka
@@ -1047,7 +1039,6 @@ PREFERENCES_DIRSELECTDLG;Zvolte složku s obrázky při spuštění...
PREFERENCES_DIRSOFTWARE;Instalační složka
PREFERENCES_EDITORCMDLINE;Vlastní příkazová řádka
PREFERENCES_EDITORLAYOUT;Rozvržení editoru
-PREFERENCES_EXPAUT;Expert
PREFERENCES_EXTERNALEDITOR;Externí editor
PREFERENCES_FBROWSEROPTS;Volby prohlížeče souborů / náhledů
PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Jednořádková lišta nástrojů v prohlížeči souborů\n(vypněte na nízkých rozlišeních)
@@ -1093,12 +1084,7 @@ PREFERENCES_INTENT_SATURATION;Nasycení
PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Ukázat vložené JPEG náhledy u needitovaných snímků
PREFERENCES_LANG;Jazyk
PREFERENCES_LANGAUTODETECT;Použít systémový jazyk
-PREFERENCES_LEVAUTDN;Úroveň odšumění
-PREFERENCES_LEVDN;Velikost buňky
-PREFERENCES_LISS;Automatické více zónové vyhlazení
-PREFERENCES_MAX;Velká (dlaždice)
PREFERENCES_MAXRECENTFOLDERS;Maximální počet nedávných složek
-PREFERENCES_MED;Střední (Poloviční dlaždice)
PREFERENCES_MENUGROUPEXTPROGS;Skupina "Otevřít pomocí"
PREFERENCES_MENUGROUPFILEOPERATIONS;Skupina "Souborové operace"
PREFERENCES_MENUGROUPLABEL;Skupina "Barevné štítky"
@@ -1106,7 +1092,6 @@ PREFERENCES_MENUGROUPPROFILEOPERATIONS;Skupina "Operace s profily zpracování"
PREFERENCES_MENUGROUPRANK;Skupina "Hodnocení"
PREFERENCES_MENUOPTIONS;Volby místní nabídky
PREFERENCES_METADATA;Metadata
-PREFERENCES_MIN;Velmi malá (100x115)
PREFERENCES_MONINTENT;Výchozí reprodukční záměr
PREFERENCES_MONITOR;Monitor
PREFERENCES_MONPROFILE;Výchozí barevný profil
@@ -1115,7 +1100,6 @@ PREFERENCES_MULTITAB;Mód více karet editoru
PREFERENCES_MULTITABDUALMON;Mód více karet editoru ve vlastním okně
PREFERENCES_NAVGUIDEBRUSH;Barva vodítek navigátoru
PREFERENCES_NAVIGATIONFRAME;Navigátor
-PREFERENCES_NOISE;Redukce šumu
PREFERENCES_OUTDIR;Výstupní složka
PREFERENCES_OUTDIRFOLDER;Ulož do souboru
PREFERENCES_OUTDIRFOLDERHINT;Uložit obrázky do vybrané složky.
@@ -1151,8 +1135,6 @@ PREFERENCES_PRTPROFILE;Barevný profil
PREFERENCES_PSPATH;Instalační složka Adobe Photoshop
PREFERENCES_REMEMBERZOOMPAN;Zapamatovat si procento přiblížení a posun obrázku
PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Zapamatovat si procento přiblížení a posun aktuálního obrázku a použít tyto hodnoty při otevírání nového obrázku.\n\nTato volba funguje pouze v režimu "Mód jedné karty editoru" a volba "Metoda demozajkování pro náhled při přiblížení menším než 100%" je nastavena na "Stejně jako v PP3".
-PREFERENCES_RGBDTL_LABEL;Maximální počet vláken pro redukci šumu a úrovně vlnky
-PREFERENCES_RGBDTL_TOOLTIP;Pro automatické nastavení maximálního možného počtu vláken ponechte nastaveno na "0". Čím více vláken běží paralelně, tím rychlejší je výpočet. Paměťové nároky najdete na RawPedii.
PREFERENCES_SAVE_TP_OPEN_NOW;Uložit stav sbalení/rozbalení nástrojů hned
PREFERENCES_SELECTFONT;Vyberte hlavní písmo
PREFERENCES_SELECTFONT_COLPICKER;Vybrat písmo pro Průzkumníka barev
@@ -1167,41 +1149,30 @@ PREFERENCES_SHOWDATETIME;Zobrazovat datum a čas
PREFERENCES_SHOWEXPOSURECOMPENSATION;Přidat kompenzaci expozice
PREFERENCES_SHOWFILMSTRIPTOOLBAR;Zobrazit lištu s filmovým pásem
PREFERENCES_SHTHRESHOLD;Práh oříznutých stínů
-PREFERENCES_SIMPLAUT;Režim nástrojů
PREFERENCES_SINGLETAB;Mód jedné karty editoru
PREFERENCES_SINGLETABVERTAB;Mód jedné karty editoru, svislé karty
-PREFERENCES_SMA;Malá (250x287)
PREFERENCES_SND_BATCHQUEUEDONE;Zpracování fronty dokončeno
PREFERENCES_SND_HELP;Vložte cestu k souboru pro nastavení zvuku nebo ponechte prázdné (bez zvuku).\nVe Windows zadejte "SystemDefault", "SystemAsterisk" a podobně.\nNa Linuxu použijte "complete", "window-attention" a další.
PREFERENCES_SND_LNGEDITPROCDONE;Zpracování v editoru dokončeno
PREFERENCES_SND_THRESHOLDSECS;Po sekundách
PREFERENCES_STARTUPIMDIR;Složka obrázků při spuštění
-PREFERENCES_STDAUT;Běžný
PREFERENCES_TAB_BROWSER;Prohlížeč souborů
PREFERENCES_TAB_COLORMGR;Správa barev
PREFERENCES_TAB_DYNAMICPROFILE;Pravidla dynamických profilů
PREFERENCES_TAB_GENERAL;Obecné
PREFERENCES_TAB_IMPROC;Zpracování obrázku
-PREFERENCES_TAB_PERFORMANCE;Výkon a kvalita
PREFERENCES_TAB_SOUND;Zvuky
PREFERENCES_THEME;Vzhled
PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Vložený JPEG náhled
PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Obrázek k zobrazení
PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutrální vykreslení raw
PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Vložený JPEG náhled pokud je v plné velikosti, jinak neutrální raw
-PREFERENCES_TIMAX;Vysoký
-PREFERENCES_TINB;Počet dlaždic
-PREFERENCES_TISTD;Běžný
PREFERENCES_TP_LABEL;Panel nástrojů:
PREFERENCES_TP_USEICONORTEXT;V záhlaví karty zobrazit ikonu namísto textu
PREFERENCES_TP_VSCROLLBAR;Skrýt svislou posuvnou lištu
PREFERENCES_TUNNELMETADATA;Zkopírovat nezměněná Exif/IPTC/XMP metadata do výstupního souboru
PREFERENCES_USEBUNDLEDPROFILES;Použít přiložené profily
PREFERENCES_VIEW;Nastavení vyvážení bílé výstupních zařízení (monitor, TV, projektor, rámeček a jiné)
-PREFERENCES_WAVLEV;Zvýšit úroveň vlnkové transformace v nejvyšší kvalitě
-PREFERENCES_WLONE;Jedna úroveň
-PREFERENCES_WLTWO;Dvě úrovně
-PREFERENCES_WLZER;Ne
PREFERENCES_WORKFLOW;Rozvržení
PROFILEPANEL_COPYPPASTE;Parametry pro kopírování
PROFILEPANEL_GLOBALPROFILES;Přiložené profily
@@ -1870,7 +1841,6 @@ TP_RETINEX_FREEGAMMA;Volná gama
TP_RETINEX_GAIN;Zisk
TP_RETINEX_GAINOFFS;Zisk a posun (jasu)
TP_RETINEX_GAINTRANSMISSION;Přenos zisku
-TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Zesílí nebo zeslabí mapu přenosu pro dosažení jasu.\nÚsečka: přenos -min od 0. průměr. a hodnot (max).\nPořadnice: zisk.
TP_RETINEX_GAIN_TOOLTIP;Působí na obnovený obrázek.\n\nToto je velmi odlišné od ostatních nastavení. Použito pro černé nebo bílé pixely a pro vyvážení histogramu.
TP_RETINEX_GAMMA;Gama
TP_RETINEX_GAMMA_FREE;Volná
@@ -2227,6 +2197,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value.
!GENERAL_RESET;Reset
!GENERAL_SAVE_AS;Save as...
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_235;B&W - CM - Auto
!HISTORY_MSG_237;B&W - CM
!HISTORY_MSG_273;CT - Color Balance SMH
@@ -2244,6 +2215,8 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -2297,8 +2270,12 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
+!PREFERENCES_TAB_PERFORMANCE;Performance
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!TP_BWMIX_MIXC;Channel Mixer
!TP_BWMIX_NEUTRAL;Reset
!TP_ICM_WORKING_TRC;Tone response curve:
@@ -2307,6 +2284,8 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
!TP_ICM_WORKING_TRC_NONE;None
!TP_ICM_WORKING_TRC_SLOPE;Slope
!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAW_2PASS;1-pass+fast
!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AMAZEVNG4;AMaZE+VNG4
@@ -2316,6 +2295,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light
diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk
index 77ae6dc9b..9e1d79191 100644
--- a/rtdata/languages/Dansk
+++ b/rtdata/languages/Dansk
@@ -578,9 +578,9 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_MSG_82;Profile changed
!HISTORY_MSG_83;S/H - Sharp mask
@@ -998,6 +998,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1081,7 +1083,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3
!MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out).
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue.\nShortcut: Ctrl+b
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s
+!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s\nSave current profile (.pp3).\nShortcut: Ctrl+Shift+s
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor.\nShortcut: Ctrl+e
!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels.\nShortcut: m
!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen
@@ -1198,14 +1200,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BATCH_PROCESSING;Batch Processing
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1243,13 +1239,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_DARKFRAMEFOUND;Found
!PREFERENCES_DARKFRAMESHOTS;shots
!PREFERENCES_DARKFRAMETEMPLATES;templates
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_EDITORLAYOUT;Editor Layout
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
!PREFERENCES_FLATFIELDFOUND;Found
!PREFERENCES_FLATFIELDSDIR;Flat-fields directory
@@ -1282,12 +1275,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1295,7 +1283,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
@@ -1304,13 +1291,14 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files
!PREFERENCES_PANFACTORLABEL;Pan rate amplification
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1324,8 +1312,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT;Select main font
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
@@ -1335,36 +1321,26 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_SET;Set
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETAB;Single Editor Tab Mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PREFERENCES_WORKFLOW;Layout
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1392,6 +1368,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP;Subsampling
!SAVEDLG_SUBSAMP_1;Best compression
@@ -1856,6 +1833,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_AUTO;Auto-correction
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1961,7 +1940,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch
index e69bd8c57..d9488295e 100644
--- a/rtdata/languages/Deutsch
+++ b/rtdata/languages/Deutsch
@@ -310,9 +310,9 @@ HISTOGRAM_TOOLTIP_B;Blau-Histogramm ein-/ausblenden.
HISTOGRAM_TOOLTIP_BAR;RGB-Anzeigeleiste ein-/ausblenden.
HISTOGRAM_TOOLTIP_CHRO;Chromatizität-Histogramm ein/ausblenden.
HISTOGRAM_TOOLTIP_FULL;Skaliertes Histogramm ein/ausschalten.
-HISTOGRAM_TOOLTIP_MODE;Schaltet zwischen linearer, logarithmischer-linearer und\nlogarithmischer-logarithmischer Skalierung um.
HISTOGRAM_TOOLTIP_G;Grün-Histogramm ein-/ausblenden.
HISTOGRAM_TOOLTIP_L;CIELab-Luminanz-Histogramm ein-/ausblenden.
+HISTOGRAM_TOOLTIP_MODE;Schaltet zwischen linearer, logarithmischer-linearer und\nlogarithmischer-logarithmischer Skalierung um.
HISTOGRAM_TOOLTIP_R;Rot-Histogramm ein-/ausblenden.
HISTOGRAM_TOOLTIP_RAW;Zwischen normalen Histogrammen und\nRAW-Histogrammen umschalten.
HISTORY_CHANGED;Geändert
@@ -1087,14 +1087,8 @@ PARTIALPASTE_WAVELETGROUP;Wavelet
PARTIALPASTE_WHITEBALANCE;Weißabgleich
PREFERENCES_ADD;HINZU
PREFERENCES_APPLNEXTSTARTUP;erfordert Neustart
-PREFERENCES_AUTLISLOW;Niedrig
-PREFERENCES_AUTLISMAX;Max.-Durchschnitt aller Kacheln
-PREFERENCES_AUTLISSTD;Hoch
-PREFERENCES_AUTLISVLOW;Keine
-PREFERENCES_AUTLOW;Niedrig
PREFERENCES_AUTOMONPROFILE;Automatisch das für den aktuellen Monitor festgelegte Profil verwenden
PREFERENCES_AUTOSAVE_TP_OPEN;Werkzeugstatus vor dem Beenden automatisch speichern
-PREFERENCES_AUTSTD;Standard
PREFERENCES_BATCH_PROCESSING;Stapelverarbeitung
PREFERENCES_BEHADDALL;Alle hinzufügen
PREFERENCES_BEHADDALLHINT;Setzt alle Parameter auf Hinzufügen.\nAnpassungen der Parameter in der Hintergrundstapelverarbeitung werden als Deltas zu den gespeicherten Werten interpretiert.
@@ -1145,8 +1139,6 @@ PREFERENCES_DARKFRAMESHOTS;Aufnahmen
PREFERENCES_DARKFRAMETEMPLATES;Vorlagen
PREFERENCES_DATEFORMAT;Format
PREFERENCES_DATEFORMATHINT;Die folgenden Variablen können verwendet werden:\n%y : Jahr\n%m : Monat\n%d : Tag\n\nBeispiele:\n%d.%m.%y (übliche deutsche Datumsschreibweise)\n%y-%m-%d (Datumsformat nach ISO 8601 und EN 28601)
-PREFERENCES_DAUB_LABEL;Benutze Daubechies D6-Wavelets anstatt D4
-PREFERENCES_DAUB_TOOLTIP;Rauschreduzierung und Waveletebenen verwenden ein Debauchies Mutter-Wavelet. Wenn Sie D6 statt D4 wählen, erhöhen Sie die Anzahl der orthogonalen Daubechies-Koeffizienten, was die Qualität bei niedrigen Ebenen verbessern kann. Es gibt keinen Unterschied zwischen D4 und D6 im Speicherverbrauch oder in der Verarbeitungszeit.
PREFERENCES_DIRDARKFRAMES;Dunkelbild-Verzeichnis
PREFERENCES_DIRECTORIES;Verzeichnisse
PREFERENCES_DIRHOME;Benutzer-Verzeichnis
@@ -1156,7 +1148,6 @@ PREFERENCES_DIRSELECTDLG;Wähle das Bild-Verzeichnis beim Programmstart...
PREFERENCES_DIRSOFTWARE;Installationsverzeichnis
PREFERENCES_EDITORCMDLINE;Benutzerdefinierte Befehlszeile
PREFERENCES_EDITORLAYOUT;Editor-Layout
-PREFERENCES_EXPAUT;Experte
PREFERENCES_EXTERNALEDITOR;Externer Editor
PREFERENCES_FBROWSEROPTS;Bildinformationen und Miniaturbilder
PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Einzeilige Toolbar\n(Bei geringer Bildschirmauflösung deaktivieren)
@@ -1202,12 +1193,7 @@ PREFERENCES_INTENT_SATURATION;Sättigung
PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Zeige das eingebettete JPEG als Miniaturbild, wenn die RAW-Datei noch nicht editiert wurde
PREFERENCES_LANG;Sprache
PREFERENCES_LANGAUTODETECT;Systemsprache verwenden
-PREFERENCES_LEVAUTDN;Rauschreduzierungsstufe
-PREFERENCES_LEVDN;Zellengröße
-PREFERENCES_LISS;Automatische Glättung bei Mehrfachzonen
-PREFERENCES_MAX;Maxi (Kachel)
PREFERENCES_MAXRECENTFOLDERS;Maximale Anzahl der letzten Dateien
-PREFERENCES_MED;Medium (Kachel/2)
PREFERENCES_MENUGROUPEXTPROGS;Untermenü "Öffnen mit"
PREFERENCES_MENUGROUPFILEOPERATIONS;Untermenü Dateioperationen
PREFERENCES_MENUGROUPLABEL;Untermenü Farbmarkierung
@@ -1215,7 +1201,6 @@ PREFERENCES_MENUGROUPPROFILEOPERATIONS;Untermenü Profiloperationen
PREFERENCES_MENUGROUPRANK;Untermenü Bewertung
PREFERENCES_MENUOPTIONS;Menüoptionen
PREFERENCES_METADATA;Metadaten
-PREFERENCES_MIN;Mini (100x115)
PREFERENCES_MONINTENT;Standard-Rendering-Intent
PREFERENCES_MONITOR;Monitor
PREFERENCES_MONPROFILE;Standardfarbprofil
@@ -1224,7 +1209,6 @@ PREFERENCES_MULTITAB;Multi-Reitermodus
PREFERENCES_MULTITABDUALMON;Multi-Reitermodus (auf zweitem Monitor, wenn verfügbar)
PREFERENCES_NAVGUIDEBRUSH;Farbe der Navigationshilfe
PREFERENCES_NAVIGATIONFRAME;Navigation
-PREFERENCES_NOISE;Rauschreduzierung
PREFERENCES_OUTDIR;Ausgabeverzeichnis
PREFERENCES_OUTDIRFOLDER;In dieses Verzeichnis speichern.
PREFERENCES_OUTDIRFOLDERHINT;Alle Dateien im ausgewählten Verzeichnis speichern.
@@ -1260,8 +1244,6 @@ PREFERENCES_PRTPROFILE;Farbprofil
PREFERENCES_PSPATH;Adobe Photoshop Installationsverzeichnis
PREFERENCES_REMEMBERZOOMPAN;Zoom und Bildposition merken
PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Öffnen eines neuen Bildes mit den Zoom- und Positionswerten\ndes vorangegangenen Bildes.\n\nFunktioniert nur unter folgenden Bedingungen:\nEin-Reitermodus aktiv\n“Demosaikmethode für 100%-Ansicht“ muss auf “Wie im Bild-\nverarbeitungsprofil vorgegeben“ eingestellt sein.
-PREFERENCES_RGBDTL_LABEL;Maximale Anzahl Threads für Rauschreduzierung
-PREFERENCES_RGBDTL_TOOLTIP;Die Rauschreduzierung benötigt mindestens 128MB RAM für ein 10 Megapixel-Bild oder 512MB für ein 40 Megapixel-Bild, und zusätzlich 128MB RAM pro Thread. Je mehr Threads parallel ablaufen, desto schneller ist die Berechnung. Bei Einstellung "0" werden so viele Threads wie möglich benutzt.
PREFERENCES_SAVE_TP_OPEN_NOW;Werkzeugstatus jetzt speichern
PREFERENCES_SELECTFONT;Schriftart
PREFERENCES_SELECTFONT_COLPICKER;Schriftart für die Farbwähler
@@ -1276,41 +1258,30 @@ PREFERENCES_SHOWDATETIME;Datum und Uhrzeit anzeigen
PREFERENCES_SHOWEXPOSURECOMPENSATION;Belichtungskorrektur anfügen
PREFERENCES_SHOWFILMSTRIPTOOLBAR;Toolbar oberhalb des Filmstreifens anzeigen
PREFERENCES_SHTHRESHOLD;Schatten - Schwelle
-PREFERENCES_SIMPLAUT;Werkzeugmodus
PREFERENCES_SINGLETAB;Ein-Reitermodus
PREFERENCES_SINGLETABVERTAB;Ein-Reitermodus (vertikale Reiter)
-PREFERENCES_SMA;Klein (250x287)
PREFERENCES_SND_BATCHQUEUEDONE;Warteschlange abgearbeitet
PREFERENCES_SND_HELP;Geben Sie einen Pfad zu einer Sounddatei oder einen Systemklang ein.\n\nBeispiel Systemklänge:\nWindows: SystemDefault, SystemAsterisk ...\nLinux: complete, window-attention ...\n
PREFERENCES_SND_LNGEDITPROCDONE;Bearbeitung abgeschlossen
PREFERENCES_SND_THRESHOLDSECS;Verzögerung in Sekunden
PREFERENCES_STARTUPIMDIR;Bildverzeichnis beim Programmstart
-PREFERENCES_STDAUT;Standard
PREFERENCES_TAB_BROWSER;Dateiverwaltung
PREFERENCES_TAB_COLORMGR;Farbmanagement
PREFERENCES_TAB_DYNAMICPROFILE;Dynamisches Profil
PREFERENCES_TAB_GENERAL;Allgemein
PREFERENCES_TAB_IMPROC;Bildbearbeitung
-PREFERENCES_TAB_PERFORMANCE;Performance & Qualität
PREFERENCES_TAB_SOUND;Klänge
PREFERENCES_THEME;Oberflächendesign
PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Eingebundenes JPEG
PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Bildanzeige
PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutrales RAW-Bild
PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Eingebundenes JPEG wenn in Originalgröße, sonst neutrales RAW-Bild
-PREFERENCES_TIMAX;Hoch
-PREFERENCES_TINB;Anzahl Kacheln
-PREFERENCES_TISTD;Standard
PREFERENCES_TP_LABEL;Werkzeugbereich:
PREFERENCES_TP_USEICONORTEXT;Symbole statt Text in Karteireitern
PREFERENCES_TP_VSCROLLBAR;Keine vertikale Scrollbar
PREFERENCES_TUNNELMETADATA;Exif/XMP unverändert in die Ausgabedatei übernehmen.
PREFERENCES_USEBUNDLEDPROFILES;Standardprofile verwenden
PREFERENCES_VIEW;Weißabgleich-Einstellung des Ausgabegerätes (Monitor, TV, Projektor, usw.)
-PREFERENCES_WAVLEV;Die Qualität von Waveletebenen erhöhen
-PREFERENCES_WLONE;Eine Ebene
-PREFERENCES_WLTWO;Zwei Ebenen
-PREFERENCES_WLZER;Nein
PREFERENCES_WORKFLOW;Layout
PROFILEPANEL_COPYPPASTE;Zu kopierende Parameter
PROFILEPANEL_GLOBALPROFILES;Standardprofile
@@ -2376,3 +2347,16 @@ ZOOMPANEL_ZOOMFITCROPSCREEN;Ausschnitt an Bildschirm anpassen\nTaste: f
ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen\nTaste: Alt + f
ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: +
ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: -
+
+!!!!!!!!!!!!!!!!!!!!!!!!!
+! Untranslated keys follow; remove the ! prefix after an entry is translated.
+!!!!!!!!!!!!!!!!!!!!!!!!!
+
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
+!PREFERENCES_TAB_PERFORMANCE;Performance
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK)
index 8f08152d5..9fdef1914 100644
--- a/rtdata/languages/English (UK)
+++ b/rtdata/languages/English (UK)
@@ -26,6 +26,7 @@ HISTORY_MSG_392;W - Residual - Colour Balance
HISTORY_MSG_419;Retinex - Colour space
HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colours
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Colour correction
+HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid colour shift
MAIN_TAB_COLOR;Colour
MAIN_TOOLTIP_BACKCOLOR0;Background colour of the preview: Theme-based\nShortcut: 9
MAIN_TOOLTIP_BACKCOLOR1;Background colour of the preview: Black\nShortcut: 9
@@ -99,6 +100,7 @@ TP_LABCURVE_AVOIDCOLORSHIFT;Avoid colour shift
TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Fit colours into gamut of the working colour space and apply Munsell correction.
TP_PCVIGNETTE_FEATHER_TOOLTIP;Feathering:\n0 = corners only,\n50 = halfway to centre,\n100 = to centre.
TP_PFCURVE_CURVEEDITOR_CH_TOOLTIP;Controls defringe strength by colour.\nHigher = more,\nLower = less.
+TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid colour shift
TP_RAW_FALSECOLOR;False colour suppression steps
TP_RAW_PIXELSHIFTEQUALBRIGHT_TOOLTIP;Equalize the brightness of the frames to the brightness of the selected frame.\nIf there are overexposed areas in the frames select the brightest frame to avoid magenta colour cast in overexposed areas or enable motion correction.
TP_RGBCURVES_LUMAMODE_TOOLTIP;Luminosity mode allows to vary the contribution of R, G and B channels to the luminosity of the image, without altering image colour.
@@ -349,11 +351,11 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
!HISTOGRAM_TOOLTIP_B;Show/Hide blue histogram.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
!HISTOGRAM_TOOLTIP_G;Show/Hide green histogram.
!HISTOGRAM_TOOLTIP_L;Show/Hide CIELab luminance histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_R;Show/Hide red histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_CHANGED;Changed
@@ -834,6 +836,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -938,7 +941,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out).
!MAIN_BUTTON_PREFERENCES;Preferences
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue.\nShortcut: Ctrl+b
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s
+!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s\nSave current profile (.pp3).\nShortcut: Ctrl+Shift+s
!MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor.\nShortcut: Ctrl+e
!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels.\nShortcut: m
@@ -1093,13 +1096,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PARTIALPASTE_WHITEBALANCE;White balance
!PREFERENCES_ADD;Add
!PREFERENCES_APPLNEXTSTARTUP;restart required
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BATCH_PROCESSING;Batch Processing
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1144,8 +1141,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PREFERENCES_DARKFRAMETEMPLATES;templates
!PREFERENCES_DATEFORMAT;Date format
!PREFERENCES_DATEFORMATHINT;You can use the following formatting strings:\n%y - year\n%m - month\n%d - day\n\nFor example, the ISO 8601 standard dictates the date format as follows:\n%y-%m-%d
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_DIRHOME;Home directory
@@ -1155,7 +1150,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PREFERENCES_DIRSOFTWARE;Installation directory
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_EDITORLAYOUT;Editor Layout
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_EXTERNALEDITOR;External Editor
!PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
@@ -1198,26 +1192,19 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPPROFILEOPERATIONS;Group "Processing profile operations"
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported.
!PREFERENCES_MULTITAB;Multiple Editor Tabs Mode
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OUTDIR;Output Directory
!PREFERENCES_OUTDIRFOLDER;Save to folder
!PREFERENCES_OUTDIRFOLDERHINT;Save images to the selected folder.
@@ -1233,6 +1220,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PREFERENCES_PARSEDEXTDELHINT;Delete selected extension from the list.
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1252,8 +1241,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PREFERENCES_PSPATH;Adobe Photoshop installation directory
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT;Select main font
!PREFERENCES_SELECTLANG;Select language
@@ -1267,40 +1254,30 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
!PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETAB;Single Editor Tab Mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
!PREFERENCES_STARTUPIMDIR;Image Directory at Startup
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_BROWSER;File Browser
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
!PREFERENCES_TAB_GENERAL;General
!PREFERENCES_TAB_IMPROC;Image Processing
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PREFERENCES_WORKFLOW;Layout
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1350,6 +1327,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!SAMPLEFORMAT_64;32-bit floating-point
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_FILEFORMAT;File format
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_JPEGQUAL;JPEG quality
!SAVEDLG_PUTTOQUEUE;Put into processing queue
@@ -1819,6 +1797,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_AUTO;Auto-correction
+!TP_RAWCACORR_AUTOIT;Iterations
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1930,7 +1909,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US)
index 0ab893c07..944457486 100644
--- a/rtdata/languages/English (US)
+++ b/rtdata/languages/English (US)
@@ -240,11 +240,11 @@
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
!HISTOGRAM_TOOLTIP_B;Show/Hide blue histogram.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
!HISTOGRAM_TOOLTIP_G;Show/Hide green histogram.
!HISTOGRAM_TOOLTIP_L;Show/Hide CIELab luminance histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_R;Show/Hide red histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_CHANGED;Changed
@@ -748,6 +748,8 @@
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -852,7 +854,7 @@
!MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out).
!MAIN_BUTTON_PREFERENCES;Preferences
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue.\nShortcut: Ctrl+b
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s
+!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s\nSave current profile (.pp3).\nShortcut: Ctrl+Shift+s
!MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor.\nShortcut: Ctrl+e
!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels.\nShortcut: m
@@ -1016,14 +1018,8 @@
!PARTIALPASTE_WHITEBALANCE;White balance
!PREFERENCES_ADD;Add
!PREFERENCES_APPLNEXTSTARTUP;restart required
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BATCH_PROCESSING;Batch Processing
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1070,8 +1066,6 @@
!PREFERENCES_DARKFRAMETEMPLATES;templates
!PREFERENCES_DATEFORMAT;Date format
!PREFERENCES_DATEFORMATHINT;You can use the following formatting strings:\n%y - year\n%m - month\n%d - day\n\nFor example, the ISO 8601 standard dictates the date format as follows:\n%y-%m-%d
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_DIRHOME;Home directory
@@ -1081,7 +1075,6 @@
!PREFERENCES_DIRSOFTWARE;Installation directory
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_EDITORLAYOUT;Editor Layout
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_EXTERNALEDITOR;External Editor
!PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
@@ -1127,12 +1120,7 @@
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1140,7 +1128,6 @@
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
@@ -1149,7 +1136,6 @@
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OUTDIR;Output Directory
!PREFERENCES_OUTDIRFOLDER;Save to folder
!PREFERENCES_OUTDIRFOLDERHINT;Save images to the selected folder.
@@ -1165,6 +1151,8 @@
!PREFERENCES_PARSEDEXTDELHINT;Delete selected extension from the list.
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1185,8 +1173,6 @@
!PREFERENCES_PSPATH;Adobe Photoshop installation directory
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT;Select main font
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
@@ -1201,41 +1187,31 @@
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
!PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETAB;Single Editor Tab Mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
!PREFERENCES_STARTUPIMDIR;Image Directory at Startup
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_BROWSER;File Browser
!PREFERENCES_TAB_COLORMGR;Color Management
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
!PREFERENCES_TAB_GENERAL;General
!PREFERENCES_TAB_IMPROC;Image Processing
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PREFERENCES_WORKFLOW;Layout
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1285,6 +1261,7 @@
!SAMPLEFORMAT_64;32-bit floating-point
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
!SAVEDLG_FILEFORMAT;File format
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_JPEGQUAL;JPEG quality
!SAVEDLG_PUTTOQUEUE;Put into processing queue
@@ -1806,6 +1783,8 @@
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_AUTO;Auto-correction
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1919,7 +1898,7 @@
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol
index b869ba90c..8560fd93c 100644
--- a/rtdata/languages/Espanol
+++ b/rtdata/languages/Espanol
@@ -821,8 +821,6 @@ PREFERENCES_PROFILESAVECACHE;Guardar perfiles de procesamiento en memoria interm
PREFERENCES_PROFILESAVEINPUT;Guardar perfiles de procesamiento junto con imagen de entrada
PREFERENCES_PROPERTY;Propiedad
PREFERENCES_PSPATH;Carpeta de instalación de Adobe Photoshop
-PREFERENCES_RGBDTL_LABEL;Número máximo de hilos para reducción de ruido
-PREFERENCES_RGBDTL_TOOLTIP;La Reducción de Ruido requiere como base 128MB de RAM para una imagen de 10MPix o 512MB para una imagen de 40MPix; más 128MB RAM por hilo de proceso.\nMientras más hilos corren en paralelo, más rápido es el procesamiento. Coloque “0” para que automáticamente se use tantos hilos como sea posible según la capacidad de su equipo.
PREFERENCES_SELECTFONT;Seleccionar fuente
PREFERENCES_SELECTLANG;Seleccionar idioma
PREFERENCES_SELECTTHEME;Seleccionar tema
@@ -842,7 +840,6 @@ PREFERENCES_TAB_BROWSER;Explorador de archivos
PREFERENCES_TAB_COLORMGR;Gestión del color
PREFERENCES_TAB_GENERAL;General
PREFERENCES_TAB_IMPROC;Procesamiento de imágenes
-PREFERENCES_TAB_PERFORMANCE;Rendimiento
PREFERENCES_TAB_SOUND;Sonidos
PREFERENCES_TP_LABEL;Panel de herramientas:
PREFERENCES_TP_USEICONORTEXT;Usar iconos de pestaña en lugar de texto
@@ -1520,6 +1517,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_166;Exposure - Reset
!HISTORY_MSG_173;NR - Detail recovery
!HISTORY_MSG_203;NR - Color space
@@ -1728,6 +1726,8 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1838,13 +1838,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_CLUTSCACHE;HaldCLUT Cache
!PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs
!PREFERENCES_CMMBPC;Black point compensation
@@ -1860,11 +1854,8 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!PREFERENCES_CURVEBBOXPOS_LEFT;Left
!PREFERENCES_CURVEBBOXPOS_RIGHT;Right
!PREFERENCES_D50_OLD;5000K
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser.
!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50
@@ -1876,22 +1867,17 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images
!PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2.
!PREFERENCES_LANG;Language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported.
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1910,23 +1896,14 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files
!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation.
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
-!PREFERENCES_SMA;Small (250x287)
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PROFILEPANEL_PDYNAMIC;Dynamic
!QINFO_FRAMECOUNT;%2 frames
!QINFO_HDR;HDR / %2 frame(s)
@@ -1939,6 +1916,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling.
!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set.
@@ -2039,6 +2017,8 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CASTR;Strength
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
!TP_RAW_2PASS;1-pass+fast
@@ -2111,7 +2091,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara
index 1c4a170bf..e3559ff98 100644
--- a/rtdata/languages/Euskara
+++ b/rtdata/languages/Euskara
@@ -579,9 +579,9 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_MSG_82;Profile changed
!HISTORY_MSG_83;S/H - Sharp mask
@@ -999,6 +999,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1082,7 +1084,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3
!MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out).
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue.\nShortcut: Ctrl+b
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s
+!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s\nSave current profile (.pp3).\nShortcut: Ctrl+Shift+s
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor.\nShortcut: Ctrl+e
!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels.\nShortcut: m
!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen
@@ -1199,14 +1201,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BATCH_PROCESSING;Batch Processing
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1244,13 +1240,10 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PREFERENCES_DARKFRAMEFOUND;Found
!PREFERENCES_DARKFRAMESHOTS;shots
!PREFERENCES_DARKFRAMETEMPLATES;templates
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_EDITORLAYOUT;Editor Layout
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
!PREFERENCES_FLATFIELDFOUND;Found
!PREFERENCES_FLATFIELDSDIR;Flat-fields directory
@@ -1283,12 +1276,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1296,7 +1284,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
@@ -1305,13 +1292,14 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files
!PREFERENCES_PANFACTORLABEL;Pan rate amplification
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1325,8 +1313,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT;Select main font
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
@@ -1336,36 +1322,26 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PREFERENCES_SET;Set
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETAB;Single Editor Tab Mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PREFERENCES_WORKFLOW;Layout
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1393,6 +1369,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP;Subsampling
!SAVEDLG_SUBSAMP_1;Best compression
@@ -1857,6 +1834,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_AUTO;Auto-correction
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1962,7 +1941,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais
index d9e455778..a20f9251d 100644
--- a/rtdata/languages/Francais
+++ b/rtdata/languages/Francais
@@ -981,14 +981,8 @@ PARTIALPASTE_WAVELETGROUP;Niveaux d'ondelette
PARTIALPASTE_WHITEBALANCE;Balance des blancs
PREFERENCES_ADD;Ajoute
PREFERENCES_APPLNEXTSTARTUP;appliqué au prochain lancement
-PREFERENCES_AUTLISLOW;Bas
-PREFERENCES_AUTLISMAX;Max - Moyenne de toutes les tuiles
-PREFERENCES_AUTLISSTD;Haut
-PREFERENCES_AUTLISVLOW;Aucun
-PREFERENCES_AUTLOW;Bas
PREFERENCES_AUTOMONPROFILE;Utiliser automatiquement le profil de l'écran principal
PREFERENCES_AUTOSAVE_TP_OPEN;Sauver automatiquement l'état ouvert/fermé\n des outils avant de fermer
-PREFERENCES_AUTSTD;Standard
PREFERENCES_BATCH_PROCESSING;Traitement par lot
PREFERENCES_BEHADDALL;Tout à 'Ajoute'
PREFERENCES_BEHADDALLHINT;Règle tous les paramètres sur le mode Ajoute.\nLa modification des paramètres dans le panneau d'édition en par lot sera des deltas par-rapport aux valeurs existantes
@@ -1039,8 +1033,6 @@ PREFERENCES_DARKFRAMESHOTS;image(s)
PREFERENCES_DARKFRAMETEMPLATES;modèle(s)
PREFERENCES_DATEFORMAT;Format
PREFERENCES_DATEFORMATHINT;Vous pouvez utiliser les paramètres de chaînes formatées suivants:\n%y : année\n%m : mois\n%d : jour\n\nPar exemple, le format de date française est:\n%d/%m/%y
-PREFERENCES_DAUB_LABEL;Utiliser les ondelettes de Daubechies D6 au lieu de D4
-PREFERENCES_DAUB_TOOLTIP;Les outils de Réduction de Bruit et de Niveaux d'Ondelettes utilisent une ondelette de Debauchie mère. Si vous choisissez D6 au lieu de D4 vous augmentez le nombre de coéf. orthogonaux de Daubechies et augmentez probablement la qualité des niveaux de taille moyenne. Il n'y a pas de différence de consommation mémoire ou de temps de traitement entre les deux.
PREFERENCES_DIRDARKFRAMES;Dossier des images de Trame Noire
PREFERENCES_DIRECTORIES;Dossiers
PREFERENCES_DIRHOME;Racine de mes documents personnels
@@ -1050,7 +1042,6 @@ PREFERENCES_DIRSELECTDLG;Choix du dossier Image au lancement...
PREFERENCES_DIRSOFTWARE;Dossier d'installation
PREFERENCES_EDITORCMDLINE;Ligne de commande personnelle
PREFERENCES_EDITORLAYOUT;Disposition de l'éditeur
-PREFERENCES_EXPAUT;Expert
PREFERENCES_EXTERNALEDITOR;Éditeur externe
PREFERENCES_FBROWSEROPTS;Options du navigateur de fichiers et de vignettes
PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barre de menu de l'explorateur de fichiers uni-ligne\n(à désactiver pour les écrans de faible résolution)
@@ -1096,12 +1087,7 @@ PREFERENCES_INTENT_SATURATION;Saturation
PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Afficher vignette incluse dans fichier RAW si non édité
PREFERENCES_LANG;Langage
PREFERENCES_LANGAUTODETECT;Utiliser les paramètres linguistiques de l'OS
-PREFERENCES_LEVAUTDN;Niveau de débruitage
-PREFERENCES_LEVDN;Taille de la cellule
-PREFERENCES_LISS;Adoucissement auto multi-zone
-PREFERENCES_MAX;Maxi (Tuile)
PREFERENCES_MAXRECENTFOLDERS;Nombre maximum de dossiers récents
-PREFERENCES_MED;Moyen (Tuile/2)
PREFERENCES_MENUGROUPEXTPROGS;Groupe "Ouvrir avec"
PREFERENCES_MENUGROUPFILEOPERATIONS;Opérations sur les fichiers
PREFERENCES_MENUGROUPLABEL;Label
@@ -1109,7 +1095,6 @@ PREFERENCES_MENUGROUPPROFILEOPERATIONS;Opérations sur les profils
PREFERENCES_MENUGROUPRANK;Classement
PREFERENCES_MENUOPTIONS;Options du menu
PREFERENCES_METADATA;Metadonnées
-PREFERENCES_MIN;Mini (100x115)
PREFERENCES_MONINTENT;Intention de rendu par défaut
PREFERENCES_MONITOR;Moniteur
PREFERENCES_MONPROFILE;Profil couleur par défaut
@@ -1118,7 +1103,6 @@ PREFERENCES_MULTITAB;Éditeurs multiple
PREFERENCES_MULTITABDUALMON;Éditeurs multiple, si possible sur un second moniteur
PREFERENCES_NAVGUIDEBRUSH;Couleur du cadre dans le Navigateur
PREFERENCES_NAVIGATIONFRAME;Navigation
-PREFERENCES_NOISE;Réduction de Bruit
PREFERENCES_OUTDIR;Dossier de sortie
PREFERENCES_OUTDIRFOLDER;Dossier de sauvegarde
PREFERENCES_OUTDIRFOLDERHINT;Place les images traitées dans le dossier selectionné
@@ -1154,8 +1138,6 @@ PREFERENCES_PRTPROFILE;Profil couleur
PREFERENCES_PSPATH;Dossier d'installation d'Adobe Photoshop
PREFERENCES_REMEMBERZOOMPAN;Se souvenir de niveau de zoom et de la position de l'image
PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Retient le niveau de zoom et la position de l'image courante lors de l'ouverture d'une nouvelle image.\n\nCette option ne fonctionne que dans le mode "Éditeur unique" et quand "Méthode de dématriçage utilisé pour l'aperçu à un zoom <100%" is set to "Idem PP3".
-PREFERENCES_RGBDTL_LABEL;Nombre maximum d'unités de calcul pour la Réduction du bruit
-PREFERENCES_RGBDTL_TOOLTIP;La réduction du bruit nécessite un minimum d'à peu près 128Mo de RAM pour une image de 10MPix ou 512Mo pour une image de 40MPix, ainsi que 128Mo de RAM supplémentaire par unité de calcul. Plus il y aura d'unités de calcul travaillant en parallèle, plus ce sera rapide. Laissez la valeur à "0" pour utiliser automatiquement autant d'unités de calcul que possible.
PREFERENCES_SAVE_TP_OPEN_NOW;Sauver l'état ouvert/fermé maintenant
PREFERENCES_SELECTFONT;Police principale
PREFERENCES_SELECTFONT_COLPICKER;Police des pipette à couleur
@@ -1170,37 +1152,26 @@ PREFERENCES_SHOWDATETIME;Voir la date et l'heure
PREFERENCES_SHOWEXPOSURECOMPENSATION;Ajoute la compensation d'exposition
PREFERENCES_SHOWFILMSTRIPTOOLBAR;Montrer la barre d'outil de la pellicule d'image ("filmstrip")
PREFERENCES_SHTHRESHOLD;Seuil pour le dépassement de domaine inférieur
-PREFERENCES_SIMPLAUT;Mode de l'outil
PREFERENCES_SINGLETAB;Éditeur unique
PREFERENCES_SINGLETABVERTAB;Éditeur unique, onglets verticaux
-PREFERENCES_SMA;Petit (250x287)
PREFERENCES_SND_BATCHQUEUEDONE;File de traitement terminée
PREFERENCES_SND_HELP;Saisissez un chemin de fichier ou rien du tout (pour ne pas avoir de son). Pour Windows,\nsaisissez "SystemDefault", "SystemAsterisk" etc. pour utiliser les sons systèmes.
PREFERENCES_SND_LNGEDITPROCDONE;Traitement de la zone de prévisualisation terminé
PREFERENCES_SND_THRESHOLDSECS;après (s)
PREFERENCES_STARTUPIMDIR;Répertoire Image au démarrage
-PREFERENCES_STDAUT;Standard
PREFERENCES_TAB_BROWSER;Navigateur de fichiers
PREFERENCES_TAB_COLORMGR;Gestion des couleurs
PREFERENCES_TAB_DYNAMICPROFILE;Règles de Profil Dynamique
PREFERENCES_TAB_GENERAL;Général
PREFERENCES_TAB_IMPROC;Traitement de l'image
-PREFERENCES_TAB_PERFORMANCE;Performance
PREFERENCES_TAB_SOUND;Sons
PREFERENCES_THEME;Thème
-PREFERENCES_TIMAX;Haut
-PREFERENCES_TINB;Nombre de tuiles
-PREFERENCES_TISTD;Standard
PREFERENCES_TP_LABEL;Panneau des outils:
PREFERENCES_TP_USEICONORTEXT;Utiliser des icônes au lieu de textes
PREFERENCES_TP_VSCROLLBAR;Cacher la barre de défilement verticale
PREFERENCES_TUNNELMETADATA;Copier les données Exif/IPTC/XMP tel quel dans le fichier de sortie
PREFERENCES_USEBUNDLEDPROFILES;Utiliser les profils fournis
PREFERENCES_VIEW;Point blanc du périphérique sortie (moniteur, TV, projecteur,...)
-PREFERENCES_WAVLEV;Augmenter le nombre de niveau d'ondelette en qualité "haute"
-PREFERENCES_WLONE;Un niveau
-PREFERENCES_WLTWO;Deux niveaux
-PREFERENCES_WLZER;Non
PREFERENCES_WORKFLOW;Habitudes de travail
PROFILEPANEL_COPYPPASTE;Paramètres à copier
PROFILEPANEL_GLOBALPROFILES;Profils fournis
@@ -1250,6 +1221,7 @@ SAMPLEFORMAT_32;24 bits à virgule flottante
SAMPLEFORMAT_64;32 bits à virgule flottante
SAVEDLG_AUTOSUFFIX;Ajouter automatiquement un suffixe si le fichier existe déjà
SAVEDLG_FILEFORMAT;Format de fichier
+SAVEDLG_FILEFORMAT_FLOAT; virgule flottante
SAVEDLG_FORCEFORMATOPTS;Forcer les options d'enregistrement
SAVEDLG_JPEGQUAL;Qualité JPEG
SAVEDLG_PNGCOMPR;Compression PNG
@@ -2245,6 +2217,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: -
!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value.
!EXIFFILTER_IMAGETYPE;Image type
!GENERAL_RESET;Reset
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_235;B&W - CM - Auto
!HISTORY_MSG_237;B&W - CM
!HISTORY_MSG_273;CT - Color Balance SMH
@@ -2265,6 +2238,8 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -2278,6 +2253,9 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: -
!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
@@ -2292,6 +2270,8 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: -
!TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical
!TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAW_2PASS;1-pass+fast
!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AMAZEVNG4;AMaZE+VNG4
diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek
index 149ac5345..9c7c024f9 100644
--- a/rtdata/languages/Greek
+++ b/rtdata/languages/Greek
@@ -578,9 +578,9 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_MSG_82;Profile changed
!HISTORY_MSG_83;S/H - Sharp mask
@@ -998,6 +998,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1081,7 +1083,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3
!MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out).
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue.\nShortcut: Ctrl+b
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s
+!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s\nSave current profile (.pp3).\nShortcut: Ctrl+Shift+s
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor.\nShortcut: Ctrl+e
!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels.\nShortcut: m
!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen
@@ -1198,14 +1200,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BATCH_PROCESSING;Batch Processing
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1243,13 +1239,10 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PREFERENCES_DARKFRAMEFOUND;Found
!PREFERENCES_DARKFRAMESHOTS;shots
!PREFERENCES_DARKFRAMETEMPLATES;templates
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_EDITORLAYOUT;Editor Layout
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
!PREFERENCES_FLATFIELDFOUND;Found
!PREFERENCES_FLATFIELDSDIR;Flat-fields directory
@@ -1282,12 +1275,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1295,7 +1283,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
@@ -1304,13 +1291,14 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files
!PREFERENCES_PANFACTORLABEL;Pan rate amplification
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1324,8 +1312,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT;Select main font
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
@@ -1335,36 +1321,26 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PREFERENCES_SET;Set
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETAB;Single Editor Tab Mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PREFERENCES_WORKFLOW;Layout
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1392,6 +1368,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP;Subsampling
!SAVEDLG_SUBSAMP_1;Best compression
@@ -1856,6 +1833,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_AUTO;Auto-correction
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1961,7 +1940,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew
index fb8b0d776..85bc43c05 100644
--- a/rtdata/languages/Hebrew
+++ b/rtdata/languages/Hebrew
@@ -579,9 +579,9 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_MSG_82;Profile changed
!HISTORY_MSG_83;S/H - Sharp mask
@@ -999,6 +999,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1082,7 +1084,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3
!MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out).
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue.\nShortcut: Ctrl+b
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s
+!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s\nSave current profile (.pp3).\nShortcut: Ctrl+Shift+s
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor.\nShortcut: Ctrl+e
!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels.\nShortcut: m
!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen
@@ -1199,14 +1201,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BATCH_PROCESSING;Batch Processing
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1244,13 +1240,10 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PREFERENCES_DARKFRAMEFOUND;Found
!PREFERENCES_DARKFRAMESHOTS;shots
!PREFERENCES_DARKFRAMETEMPLATES;templates
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_EDITORLAYOUT;Editor Layout
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
!PREFERENCES_FLATFIELDFOUND;Found
!PREFERENCES_FLATFIELDSDIR;Flat-fields directory
@@ -1283,12 +1276,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1296,7 +1284,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
@@ -1305,13 +1292,14 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files
!PREFERENCES_PANFACTORLABEL;Pan rate amplification
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1325,8 +1313,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT;Select main font
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
@@ -1336,36 +1322,26 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PREFERENCES_SET;Set
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETAB;Single Editor Tab Mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PREFERENCES_WORKFLOW;Layout
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1393,6 +1369,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP;Subsampling
!SAVEDLG_SUBSAMP_1;Best compression
@@ -1857,6 +1834,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_AUTO;Auto-correction
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1962,7 +1941,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano
index 35369cb44..9ee5e607a 100644
--- a/rtdata/languages/Italiano
+++ b/rtdata/languages/Italiano
@@ -726,8 +726,6 @@ PREFERENCES_PROFILESAVECACHE;Salva il profilo di sviluppo nella memoria
PREFERENCES_PROFILESAVEINPUT;Salva il profilo di sviluppo a fianco del file originario
PREFERENCES_PROPERTY;Proprietà
PREFERENCES_PSPATH;Cartella d'installazione di Adobe Photoshop
-PREFERENCES_RGBDTL_LABEL;Numero massimo di thread per la Riduzione Rumore
-PREFERENCES_RGBDTL_TOOLTIP;La Riduzione Rumore richiede un minimo di circa 128MB di RAM per un'immagine di 10MPixel o 512MB per una di 40MPixel più 128MB di RAM per ogni thread. Più thread vengono eseguiti in parallelo, più rapida sarà l'elaborazione. Lascia l'impostazione a "0" per usare automaticamente quanti più thread possibili.
PREFERENCES_SELECTFONT;Seleziona il carattere
PREFERENCES_SELECTLANG;Seleziona la lingua
PREFERENCES_SELECTTHEME;Seleziona il tema
@@ -747,7 +745,6 @@ PREFERENCES_TAB_BROWSER;Navigatore
PREFERENCES_TAB_COLORMGR;Gestione Colore
PREFERENCES_TAB_GENERAL;Generale
PREFERENCES_TAB_IMPROC;Elaborazione immagine
-PREFERENCES_TAB_PERFORMANCE;Prestazioni
PREFERENCES_TAB_SOUND;Suoni
PREFERENCES_TP_LABEL;Pannello Strumenti:
PREFERENCES_TP_USEICONORTEXT;Utilizza le icone delle schede anziché il testo
@@ -1355,6 +1352,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_166;Exposure - Reset
!HISTORY_MSG_173;NR - Detail recovery
!HISTORY_MSG_203;NR - Color space
@@ -1603,6 +1601,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1709,13 +1709,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_CLUTSCACHE;HaldCLUT Cache
!PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs
!PREFERENCES_CLUTSDIR;HaldCLUT directory
@@ -1732,11 +1726,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!PREFERENCES_CURVEBBOXPOS_LEFT;Left
!PREFERENCES_CURVEBBOXPOS_RIGHT;Right
!PREFERENCES_D50_OLD;5000K
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser.
!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50
@@ -1748,22 +1739,17 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images
!PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2.
!PREFERENCES_LANG;Language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported.
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1782,23 +1768,14 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files
!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation.
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
-!PREFERENCES_SMA;Small (250x287)
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PROFILEPANEL_PDYNAMIC;Dynamic
!QINFO_FRAMECOUNT;%2 frames
!QINFO_HDR;HDR / %2 frame(s)
@@ -1811,6 +1788,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling.
!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set.
@@ -1969,6 +1947,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CASTR;Strength
!TP_RAWEXPOS_BLACK_0;Green 1 (lead)
!TP_RAWEXPOS_BLACK_1;Red
@@ -2052,7 +2032,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese
index 475a675bf..038548deb 100644
--- a/rtdata/languages/Japanese
+++ b/rtdata/languages/Japanese
@@ -275,6 +275,7 @@ HISTOGRAM_TOOLTIP_CHRO;色度・ヒストグラム 表示/非表示
HISTOGRAM_TOOLTIP_FULL;完全/縮尺調整の表示切り替え
HISTOGRAM_TOOLTIP_G;グリーン・ヒストグラム 表示/非表示
HISTOGRAM_TOOLTIP_L;CIEL*a*b* 輝度・ヒストグラム 表示/非表示
+HISTOGRAM_TOOLTIP_MODE;ヒストグラムの尺度を線形、対数-線形、対数-対数でトグルします
HISTOGRAM_TOOLTIP_R;レッド・ヒストグラム 表示/非表示
HISTOGRAM_TOOLTIP_RAW;rawヒストグラム 表示/非表示
HISTORY_CHANGED;変更されました
@@ -778,11 +779,13 @@ HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - 振れに対するデモザイクの方式
HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;ラインノイズフィルタの方向
HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAFラインフィルタ
HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - コントラストのしきい値
+HISTORY_MSG_RAWCACORR_AUTOIT;Rawの色順応補正 - 繰り返し
+HISTORY_MSG_RAWCACORR_COLOURSHIFT;Rawの色順応補正 - 色ずれを回避
HISTORY_MSG_RAW_BORDER;Rawの境界
HISTORY_MSG_RESIZE_ALLOWUPSCALING;リサイズ - アップスケーリングを可能にする
HISTORY_MSG_SHARPENING_CONTRAST;シャープ化 - コントラストのしきい値
-HISTORY_MSG_SOFTLIGHT_ENABLED;ソフトな明るさ
-HISTORY_MSG_SOFTLIGHT_STRENGTH;ソフトな明るさ - 強さ
+HISTORY_MSG_SOFTLIGHT_ENABLED;ソフトライト
+HISTORY_MSG_SOFTLIGHT_STRENGTH;ソフトライト - 強さ
HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - アンカー
HISTORY_NEWSNAPSHOT;追加
HISTORY_NEWSNAPSHOT_TOOLTIP;ショートカット: Alt-s
@@ -963,7 +966,7 @@ NAVIGATOR_R;R:
NAVIGATOR_S;S:
NAVIGATOR_V;V:
NAVIGATOR_XY_FULL;幅 = %1, 高さ = %2
-NAVIGATOR_XY_NA;x = n/a, y = n/a
+NAVIGATOR_XY_NA;x: --, y: --
OPTIONS_BUNDLED_MISSING;付属のプロファイル "%1"が見つかりません\n\nインストールされたプロファイルが損傷しているかもしれません\n\nその場合はデフォルトの値が使われます
OPTIONS_DEFIMG_MISSING;rawではない画像のデフォルプロファイルが見つからないか、設定されていません\n\nプロファイル・ディレクトリを確認してください、存在しないか破損しているかもしれません\n\nデフォルト設定値が使用されます
OPTIONS_DEFRAW_MISSING;raw画像のデフォル・プロファイルが見つからないか、設定されていません\n\nプロファイル・ディレクトリを確認してください、存在しないか破損しているかもしれません\n\nデフォルト設定値が使用されます
@@ -1046,14 +1049,8 @@ PARTIALPASTE_VIGNETTING;周辺光量補正
PARTIALPASTE_WHITEBALANCE;ホワイトバランス
PREFERENCES_ADD;追加
PREFERENCES_APPLNEXTSTARTUP;要再起動
-PREFERENCES_AUTLISLOW;低
-PREFERENCES_AUTLISMAX;最大 - 全タイルの平均
-PREFERENCES_AUTLISSTD;高
-PREFERENCES_AUTLISVLOW;なし
-PREFERENCES_AUTLOW;低
PREFERENCES_AUTOMONPROFILE;OSのメインモニター・プロファイルを使用
PREFERENCES_AUTOSAVE_TP_OPEN;プログラム終了の前に、機能パネルの開閉状態を自動的に保存する
-PREFERENCES_AUTSTD;標準
PREFERENCES_BATCH_PROCESSING;バッチ処理
PREFERENCES_BEHADDALL;すべて '追加'
PREFERENCES_BEHADDALLHINT;すべてのパラメータを 追加モードにします\nバッチツールパネルで設定される調整値が、各画像の既定値に加算されます
@@ -1100,8 +1097,6 @@ PREFERENCES_DARKFRAMESHOTS;ショット
PREFERENCES_DARKFRAMETEMPLATES;テンプレート
PREFERENCES_DATEFORMAT;日付の形式
PREFERENCES_DATEFORMATHINT;次の書式を使用することができます:\n%y : 年\n%m : 月\n%d : 日\n\n例として, ハンガリアン記法の日付:\n%y/%m/%d
-PREFERENCES_DAUB_LABEL;ドビッシー関数のタイプ D4の代わりにD6を使う
-PREFERENCES_DAUB_TOOLTIP;ノイズ低減とウェーブレットのレベルツールはマザーウェーブレットにドビッシーを使っています。このタイプでD4の代わりにD6を選択すると、直交系であるドビッシーの係数が増えるので、恐らくスケールの小さいレベルは質が向上するでしょう。タイプを変えても処理時間やメモリー使用量に影響はありません。
PREFERENCES_DIRDARKFRAMES;ダークフレーム・ディレクトリ
PREFERENCES_DIRECTORIES;ディレクトリ
PREFERENCES_DIRHOME;ホーム・ディレクトリ
@@ -1111,7 +1106,6 @@ PREFERENCES_DIRSELECTDLG;起動時の画像ディレクトリ選択...
PREFERENCES_DIRSOFTWARE;インストール・ディレクトリ
PREFERENCES_EDITORCMDLINE;カスタムコマンドライン
PREFERENCES_EDITORLAYOUT;編集 レイアウト
-PREFERENCES_EXPAUT;高度
PREFERENCES_EXTERNALEDITOR;外部エディタ
PREFERENCES_FBROWSEROPTS;ファイルブラウザ/サムネイルのオプション
PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;ファイルブラウザでの一行のツールバー (低解像度表示用に選択解除)
@@ -1157,12 +1151,7 @@ PREFERENCES_INTENT_SATURATION;彩度
PREFERENCES_INTERNALTHUMBIFUNTOUCHED;rawファイルが未編集の場合 JPEGのサムネイルを表示
PREFERENCES_LANG;言語
PREFERENCES_LANGAUTODETECT;OSの言語設定を使用
-PREFERENCES_LEVAUTDN;ノイズ低減のレベル
-PREFERENCES_LEVDN;セルのサイズ
-PREFERENCES_LISS;自動(多分割スムージング)
-PREFERENCES_MAX;最大(タイル)
PREFERENCES_MAXRECENTFOLDERS;直近のフォルダーの最大数
-PREFERENCES_MED;中 (タイルの半分)
PREFERENCES_MENUGROUPEXTPROGS;"..で開く"のグループ
PREFERENCES_MENUGROUPFILEOPERATIONS;"ファイル操作"のグループ
PREFERENCES_MENUGROUPLABEL;"カラーラベル"のグループ
@@ -1170,7 +1159,6 @@ PREFERENCES_MENUGROUPPROFILEOPERATIONS;"処理プロファイル操作"のグル
PREFERENCES_MENUGROUPRANK;"ランキング"のグループ
PREFERENCES_MENUOPTIONS;メニューオプションの状況
PREFERENCES_METADATA;メタデータ
-PREFERENCES_MIN;最小 (100x115)
PREFERENCES_MONINTENT;デフォルトのモニターインテント
PREFERENCES_MONITOR;モニター
PREFERENCES_MONPROFILE;デフォルトのモニタープロファイル
@@ -1179,7 +1167,6 @@ PREFERENCES_MULTITAB;マルチ編集タブモード
PREFERENCES_MULTITABDUALMON;独自のウィンドウモードによるマルチ編集タブ
PREFERENCES_NAVGUIDEBRUSH;ナビゲーターのガイドカラー
PREFERENCES_NAVIGATIONFRAME;ナビゲーション
-PREFERENCES_NOISE;ノイズ低減
PREFERENCES_OUTDIR;出力ディレクトリ
PREFERENCES_OUTDIRFOLDER;フォルダに保存
PREFERENCES_OUTDIRFOLDERHINT;選択したフォルダに画像を保存します
@@ -1195,6 +1182,8 @@ PREFERENCES_PARSEDEXTADDHINT;拡張子を記入し このボタンでリスト
PREFERENCES_PARSEDEXTDELHINT;選択した拡張子をリストから削除します
PREFERENCES_PARSEDEXTDOWNHINT;選択した拡張子をリストの下に移動
PREFERENCES_PARSEDEXTUPHINT;選択した拡張子をリストの上に移動
+PREFERENCES_PERFORMANCE_THREADS;スレッド
+PREFERENCES_PERFORMANCE_THREADS_LABEL;ノイズ低減とウェーブレットレベルに関するスレッドの最大数(0 = 自動)
PREFERENCES_PREVDEMO;プレビューのデモザイク方式
PREFERENCES_PREVDEMO_FAST;Fast
PREFERENCES_PREVDEMO_LABEL;プレビューのズームレベルが100%以下の場合に使うデモザイクアルゴリズム:
@@ -1215,8 +1204,6 @@ PREFERENCES_PRTPROFILE;カラープロファイル
PREFERENCES_PSPATH;Adobe Photoshop のインストール・ディレクトリ
PREFERENCES_REMEMBERZOOMPAN;ズームレベルとパン速度を記憶する
PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;現在の画像のズームレベルとパン速度を記憶し、新しく開く画像に適用\n\nこのオプションが使えるのは、編集画面のモードが“シングル編集”で、“プレビューのズームレベルが100%以下の場合に使うデモザイク”が“pp3に従う”と設定されている場合だけです。
-PREFERENCES_RGBDTL_LABEL;ノイズ低減とウェーブレットのための最大スレッド数
-PREFERENCES_RGBDTL_TOOLTIP;ノイズ低減は、10メガピクセル画像では128MB程度、40メガピクセル画像では512MBを必要とします、そして更にスレッドごとに128MBが必要です。複数のスレッドを同時に実行すると演算が速くなります。自動的にできる限り多くのスレッドを使用するには"0"の設定のままにします
PREFERENCES_SAVE_TP_OPEN_NOW;機能パネルの今の開閉状態を保存する
PREFERENCES_SELECTFONT;フォント選択
PREFERENCES_SELECTFONT_COLPICKER;カラーピッカーのフォントを選択
@@ -1231,41 +1218,31 @@ PREFERENCES_SHOWDATETIME;日付表示
PREFERENCES_SHOWEXPOSURECOMPENSATION;露光補正追加
PREFERENCES_SHOWFILMSTRIPTOOLBAR;画像スライドのツールバーを表示する
PREFERENCES_SHTHRESHOLD;シャドウ・クリッピング領域のしきい値
-PREFERENCES_SIMPLAUT;ツールのモード
PREFERENCES_SINGLETAB;シングルタブモードモード
PREFERENCES_SINGLETABVERTAB;シングル編集タブモード, 垂直タブ
-PREFERENCES_SMA;小 (250x287)
PREFERENCES_SND_BATCHQUEUEDONE;キュー処理 終了
PREFERENCES_SND_HELP;ファイルパスを入力 または空欄(無音).\nWindowsはシステムサウンドの "SystemDefault", "SystemAsterisk"など..\nLinuxはシステムサウンドの "complete", "window-attention"などを使用します
PREFERENCES_SND_LNGEDITPROCDONE;編集処理 終了
PREFERENCES_SND_THRESHOLDSECS;秒後
PREFERENCES_STARTUPIMDIR;起動時の画像・ディレクトリ
-PREFERENCES_STDAUT;標準
PREFERENCES_TAB_BROWSER;ファイルブラウザ
PREFERENCES_TAB_COLORMGR;カラーマネジメント
PREFERENCES_TAB_DYNAMICPROFILE;ダイナミックプロファイルの規定
PREFERENCES_TAB_GENERAL;一般
PREFERENCES_TAB_IMPROC;画像処理
-PREFERENCES_TAB_PERFORMANCE;パフォーマンスとクォリティ
+PREFERENCES_TAB_PERFORMANCE;パフォーマンス
PREFERENCES_TAB_SOUND;サウンド
PREFERENCES_THEME;テーマ
PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;埋め込まれているJPEGのプレビュー
PREFERENCES_THUMBNAIL_INSPECTOR_MODE;表示する画像
PREFERENCES_THUMBNAIL_INSPECTOR_RAW;ニュートラルなrawレンダリング
PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;埋め込まれているJPEGがフルサイズの場合、指定がなければニュートラルなrawレンダリングで表示
-PREFERENCES_TIMAX;多数
-PREFERENCES_TINB;タイル数
-PREFERENCES_TISTD;標準
PREFERENCES_TP_LABEL;ツール パネル:
PREFERENCES_TP_USEICONORTEXT;テキストの代わりにタブアイコンを使用
PREFERENCES_TP_VSCROLLBAR;ツールパネルの垂直スクロールバーを隠す
PREFERENCES_TUNNELMETADATA;Exif/IPTC/XMPを変更を加えずに出力ファイルにコピー
PREFERENCES_USEBUNDLEDPROFILES;付属のプロファイルを使用
PREFERENCES_VIEW;出力デバイスのホワイトバランス設定 (モニター, TV, プロジェクター,観視...)
-PREFERENCES_WAVLEV;’高い’質の場合、ウェーブレット変換のレベルを上げる
-PREFERENCES_WLONE;レベル1
-PREFERENCES_WLTWO;レベル2
-PREFERENCES_WLZER;上げない
PREFERENCES_WORKFLOW;レイアウト
PROFILEPANEL_COPYPPASTE;コピーするパラメータ
PROFILEPANEL_GLOBALPROFILES;付属のプロファイル
@@ -1315,6 +1292,7 @@ SAMPLEFORMAT_32;24ビット浮動小数点
SAMPLEFORMAT_64;32ビット浮動小数点
SAVEDLG_AUTOSUFFIX;ファイルが存在する場合、自動的に末尾に文字を加える
SAVEDLG_FILEFORMAT;ファイル形式
+SAVEDLG_FILEFORMAT_FLOAT;浮動小数点
SAVEDLG_FORCEFORMATOPTS;強制保存オプション
SAVEDLG_JPEGQUAL;JPEG 品質
SAVEDLG_PUTTOQUEUE;キュー処理に追加
@@ -1323,9 +1301,9 @@ SAVEDLG_PUTTOQUEUETAIL;キュー処理の最後に追加
SAVEDLG_SAVEIMMEDIATELY;すぐに保存
SAVEDLG_SAVESPP;設定値も保存する
SAVEDLG_SUBSAMP;サブ・サンプリング
-SAVEDLG_SUBSAMP_1;高圧縮
+SAVEDLG_SUBSAMP_1;最適な圧縮
SAVEDLG_SUBSAMP_2;バランス
-SAVEDLG_SUBSAMP_3;高画質
+SAVEDLG_SUBSAMP_3;最適な画質
SAVEDLG_SUBSAMP_TOOLTIP;最適な圧縮率:\nJ:a:b 4:2:0\nh/v 2/2\n色度は水平方向・垂直方向で半分になります\n\nバランスを重視した圧縮率:\nJ:a:b 4:2:2\nh/v 2/1\n色度は水平方向で半分になります\n\n質を重視した圧縮率:\nJ:a:b 4:4:4\nh/v 1/1\n色度のサブサンプリングはありません.
SAVEDLG_TIFFUNCOMPRESSED;非圧縮 TIFF
SAVEDLG_WARNFILENAME;ファイルに名前が付けられます
@@ -1703,7 +1681,7 @@ TP_HLREC_ENA_TOOLTIP;自動露光でも動作可
TP_HLREC_LABEL;ハイライト復元
TP_HLREC_LUMINANCE;輝度復元
TP_HLREC_METHOD;方式:
-TP_HSVEQUALIZER_CHANNEL;HSV チャンネル
+TP_HSVEQUALIZER_CHANNEL;チャンネル
TP_HSVEQUALIZER_HUE;H
TP_HSVEQUALIZER_LABEL;HSV イコライザ
TP_HSVEQUALIZER_SAT;S
@@ -1836,6 +1814,8 @@ TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Sonyのミラーレスカメラの一部
TP_PRSHARPENING_LABEL;リサイズ後のシャープ化
TP_PRSHARPENING_TOOLTIP;リサイズ後の画像をシャープ化します。但し、リサイズの方式がランチョスの場合に限ります。プレビュー画面でこの機能の効果を見ることは出来ません。使用法に関してはRawPediaを参照して下さい。
TP_RAWCACORR_AUTO;自動補正
+TP_RAWCACORR_AUTOIT;繰り返し
+TP_RAWCACORR_AVOIDCOLORSHIFT;色ずれを回避
TP_RAWCACORR_CABLUE;ブルー
TP_RAWCACORR_CARED;レッド
TP_RAWCACORR_CASTR;強さ
@@ -1851,10 +1831,10 @@ TP_RAWEXPOS_LINEAR;ホワイトポイント補正
TP_RAWEXPOS_PRESER;ハイライトを保持
TP_RAWEXPOS_RGB;レッド、グリーン、ブルー
TP_RAWEXPOS_TWOGREEN;2つのグリーンを連動
-TP_RAW_1PASSMEDIUM;1-パス (ミディアム)
-TP_RAW_2PASS;1-pass+fast
-TP_RAW_3PASSBEST;3-Pass (最良)
-TP_RAW_4PASS;4-パス
+TP_RAW_1PASSMEDIUM;1-パス (Markesteijn)
+TP_RAW_2PASS;1-パス+fast
+TP_RAW_3PASSBEST;3-Pass (Markesteijn)
+TP_RAW_4PASS;3-パス+fast
TP_RAW_AHD;AHD
TP_RAW_AMAZE;AMaZE
TP_RAW_AMAZEVNG4;AMaZE+VNG4
@@ -2058,7 +2038,7 @@ TP_SHARPENMICRO_CONTRAST;コントラストのしきい値
TP_SHARPENMICRO_LABEL;マイクロコントラスト
TP_SHARPENMICRO_MATRIX;3×3マトリクスの代わりに 5×5
TP_SHARPENMICRO_UNIFORMITY;均等
-TP_SOFTLIGHT_LABEL;ソフトな明るさ
+TP_SOFTLIGHT_LABEL;ソフトライト
TP_SOFTLIGHT_STRENGTH;強さ
TP_TM_FATTAL_AMOUNT;量
TP_TM_FATTAL_ANCHOR;アンカー
diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian
index 1db1390a7..212330c9c 100644
--- a/rtdata/languages/Latvian
+++ b/rtdata/languages/Latvian
@@ -579,9 +579,9 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_MSG_82;Profile changed
!HISTORY_MSG_83;S/H - Sharp mask
@@ -999,6 +999,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1082,7 +1084,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3
!MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out).
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue.\nShortcut: Ctrl+b
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s
+!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s\nSave current profile (.pp3).\nShortcut: Ctrl+Shift+s
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor.\nShortcut: Ctrl+e
!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels.\nShortcut: m
!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen
@@ -1199,14 +1201,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BATCH_PROCESSING;Batch Processing
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1244,13 +1240,10 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PREFERENCES_DARKFRAMEFOUND;Found
!PREFERENCES_DARKFRAMESHOTS;shots
!PREFERENCES_DARKFRAMETEMPLATES;templates
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_EDITORLAYOUT;Editor Layout
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
!PREFERENCES_FLATFIELDFOUND;Found
!PREFERENCES_FLATFIELDSDIR;Flat-fields directory
@@ -1283,12 +1276,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1296,7 +1284,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
@@ -1305,13 +1292,14 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files
!PREFERENCES_PANFACTORLABEL;Pan rate amplification
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1325,8 +1313,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT;Select main font
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
@@ -1336,36 +1322,26 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PREFERENCES_SET;Set
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETAB;Single Editor Tab Mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PREFERENCES_WORKFLOW;Layout
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1393,6 +1369,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP;Subsampling
!SAVEDLG_SUBSAMP_1;Best compression
@@ -1857,6 +1834,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_AUTO;Auto-correction
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1962,7 +1941,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar
index c094ed9a0..00dc4d800 100644
--- a/rtdata/languages/Magyar
+++ b/rtdata/languages/Magyar
@@ -939,7 +939,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_166;Exposure - Reset
!HISTORY_MSG_167;Demosaicing method
!HISTORY_MSG_168;L*a*b* - CC curve
@@ -1272,6 +1272,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1406,13 +1408,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
!PREFERENCES_BEHSETALL;All to 'Set'
@@ -1441,11 +1437,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!PREFERENCES_D55;5500K
!PREFERENCES_D60;6000K
!PREFERENCES_D65;6500K
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FLUOF2;Fluorescent F2
!PREFERENCES_FLUOF7;Fluorescent F7
!PREFERENCES_FLUOF11;Fluorescent F11
@@ -1470,24 +1463,19 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images
!PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2.
!PREFERENCES_LANG;Language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported.
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1500,34 +1488,22 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings
!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files
!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation.
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
-!PREFERENCES_SMA;Small (250x287)
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
!PROFILEPANEL_MODE_TIP;Processing profile fill mode.\n\nButton pressed: partial profiles will be converted to full profiles; the missing values will be replaced with hard-coded defaults.\n\nButton released: profiles will be applied as they are, altering only those values which they contain.
!PROFILEPANEL_MYPROFILES;My profiles
@@ -1547,6 +1523,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP;Subsampling
!SAVEDLG_SUBSAMP_1;Best compression
@@ -1941,6 +1918,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CASTR;Strength
!TP_RAWEXPOS_BLACK_0;Green 1 (lead)
!TP_RAWEXPOS_BLACK_1;Red
@@ -2029,7 +2008,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands
index 3487c4091..d002263bc 100644
--- a/rtdata/languages/Nederlands
+++ b/rtdata/languages/Nederlands
@@ -906,13 +906,7 @@ PARTIALPASTE_WAVELETGROUP;Wavelet verwerking
PARTIALPASTE_WHITEBALANCE;Witbalans
PREFERENCES_ADD;Toevoegen
PREFERENCES_APPLNEXTSTARTUP;herstart vereist
-PREFERENCES_AUTLISLOW;Laag
-PREFERENCES_AUTLISMAX;Max - Gemiddelde van alle tegels
-PREFERENCES_AUTLISSTD;Hoog
-PREFERENCES_AUTLISVLOW;Geen
-PREFERENCES_AUTLOW;Laag
PREFERENCES_AUTOMONPROFILE;Gebruik automatisch het standaard monitorprofiel \nvan het besturingsysteem
-PREFERENCES_AUTSTD;Standaard
PREFERENCES_BATCH_PROCESSING;Batch-verwerking
PREFERENCES_BEHADDALL;Alles op 'Toevoegen'
PREFERENCES_BEHADDALLHINT;Zet alle parameters in de Toevoegen mode.\nWijzigingen van parameters in de batch tool zijn deltas op de opgeslagen waarden.
@@ -956,8 +950,6 @@ PREFERENCES_DARKFRAMESHOTS;foto's
PREFERENCES_DARKFRAMETEMPLATES;sjablonen
PREFERENCES_DATEFORMAT;Datumformaat
PREFERENCES_DATEFORMATHINT;U kunt de volgende formaten gebruiken:\n%y : jaar\n%m : maand\n%d : dag\n\nHet Nederlandse datumformaat is bijvoorbeeld:\n%d/%m/%y
-PREFERENCES_DAUB_LABEL;Gebruik Daubechies D6 wavelets in plaats van D4
-PREFERENCES_DAUB_TOOLTIP;De Ruisonderdrukking en Wavelet niveaus gebruiken de Debauchies moeder wavelet. Als je D6 gebruikt in plaats van D4 vergroot het aantal orthogonale Daubechies coëfficiënten en dit verbeterd waarschijnlijk de kwaliteit van de lage niveaus.
PREFERENCES_DIRDARKFRAMES;Map met donkerframes
PREFERENCES_DIRHOME;Standaardmap
PREFERENCES_DIRLAST;Laatst bezochte map
@@ -965,7 +957,6 @@ PREFERENCES_DIROTHER;Anders
PREFERENCES_DIRSELECTDLG;Selecteer standaardmap bij opstarten...
PREFERENCES_DIRSOFTWARE;Installatiemap
PREFERENCES_EDITORLAYOUT;Bewerkingsvenster
-PREFERENCES_EXPAUT;Expert
PREFERENCES_EXTERNALEDITOR;Externe editor
PREFERENCES_FBROWSEROPTS;Opties bestandsnavigator
PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Enkele rij navigator werkbalk (de-activeer voor lage resolutie)
@@ -1009,12 +1000,7 @@ PREFERENCES_INTENT_RELATIVE;Relatieve colorimetrie
PREFERENCES_INTENT_SATURATION;Verzadiging
PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Toon interne JPEG-miniatuur indien onbewerkt
PREFERENCES_LANGAUTODETECT;Gebruik taalinstellingen pc
-PREFERENCES_LEVAUTDN;Ruisonderdrukking niveau
-PREFERENCES_LEVDN;Cell grootte
-PREFERENCES_LISS;Auto multi-zone verzachten
-PREFERENCES_MAX;Maxi (Tegel)
PREFERENCES_MAXRECENTFOLDERS;Maximum aantal recente mappen
-PREFERENCES_MED;Gemiddeld (Tegel/2)
PREFERENCES_MENUGROUPEXTPROGS;Groepeer open met
PREFERENCES_MENUGROUPFILEOPERATIONS;Groepeer bestandsbewerkingen
PREFERENCES_MENUGROUPLABEL;Groepeer labelen
@@ -1022,7 +1008,6 @@ PREFERENCES_MENUGROUPPROFILEOPERATIONS;Groepeer profielbewerkingen
PREFERENCES_MENUGROUPRANK;Groepeer markering
PREFERENCES_MENUOPTIONS;Menu-opties
PREFERENCES_METADATA;Metadata
-PREFERENCES_MIN;Mini (100x115)
PREFERENCES_MONINTENT;Standaard monitor weergave
PREFERENCES_MONITOR;Monitor
PREFERENCES_MONPROFILE;Standaard kleurprofiel
@@ -1031,7 +1016,6 @@ PREFERENCES_MULTITAB;Multi-tab: elke foto opent in nieuw tabvenster
PREFERENCES_MULTITABDUALMON;Multi-tab, indien beschikbaar op tweede monitor
PREFERENCES_NAVGUIDEBRUSH;Navigator randkleur
PREFERENCES_NAVIGATIONFRAME;Navigatie
-PREFERENCES_NOISE;Ruisonderdrukking
PREFERENCES_OUTDIR;Uitvoermap
PREFERENCES_OUTDIRFOLDER;Sla op in map
PREFERENCES_OUTDIRFOLDERHINT;Sla foto's op in andere map
@@ -1065,8 +1049,6 @@ PREFERENCES_PRTPROFILE;Kleurprofiel
PREFERENCES_PSPATH;Installatiemap Adobe Photoshop
PREFERENCES_REMEMBERZOOMPAN;Onthoud zoom % en pan startpunt
PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Onthoud het zoom % en pan startpunt van de huidige afbeelding als er een nieuwe afbeelding wordt geopend.\n\nDeze optie werkt alleen in "Single Editor Tab Mode" en wanneer "Demozaïekmethode van het voorbeeld <100% zoom" hetzelfde is als "Gelijk aan PP3".
-PREFERENCES_RGBDTL_LABEL;Maximum aantal 'threads' voor Ruisonderdrukking en Wavelet (gedeeld door 2)
-PREFERENCES_RGBDTL_TOOLTIP;Ruisonderdrukking en Wavelet gebruiken ongeveer 128MB RAM voor een 10MPix afbeelding, of 512MB voor een 40MPix afbeelding en additioneel 128MB RAM per thread. Hoe meer threads parallel worden gebruikt, hoe sneller de bewerking. Laat de instelling op "0" staan om automatisch het maximale aantal threads te gebruiken dat mogelijk is.
PREFERENCES_SELECTFONT;Kies lettertype
PREFERENCES_SELECTFONT_COLPICKER;Font van de Kleurkiezer
PREFERENCES_SELECTLANG;Selecteer taal
@@ -1080,36 +1062,25 @@ PREFERENCES_SHOWDATETIME;Toon datum en tijd
PREFERENCES_SHOWEXPOSURECOMPENSATION;Toon belichtingscompensatie
PREFERENCES_SHOWFILMSTRIPTOOLBAR;Toon filmstrip werkbalk
PREFERENCES_SHTHRESHOLD;Grenswaarde onderbelichting
-PREFERENCES_SIMPLAUT;Gereedschap
PREFERENCES_SINGLETAB;Enkel-tab: foto's openen in zelfde tabvenster
PREFERENCES_SINGLETABVERTAB;Enkel-tab ('filmstrip') modus met verticale tabs
-PREFERENCES_SMA;Klein (250x287)
PREFERENCES_SND_BATCHQUEUEDONE;Verwerkingsrij klaar
PREFERENCES_SND_HELP;Typ bestandsnaam (of niets: geen geluid).\nWindows: gebruik 'SystemDefault', 'SystemAsterisk', etc. voor systeemgeluiden.\nLinux: gebruik "complete", "window-attention" etc. voor systeemgeluiden
PREFERENCES_SND_LNGEDITPROCDONE;Bewerking klaar
PREFERENCES_SND_THRESHOLDSECS;na seconden
PREFERENCES_STARTUPIMDIR;Standaardmap bij opstarten
-PREFERENCES_STDAUT;Standaard
PREFERENCES_TAB_BROWSER;Bestandsnavigator
PREFERENCES_TAB_COLORMGR;Kleurbeheer
PREFERENCES_TAB_DYNAMICPROFILE;Dynamisch Profielregel
PREFERENCES_TAB_GENERAL;Algemeen
PREFERENCES_TAB_IMPROC;Beeldverwerking
-PREFERENCES_TAB_PERFORMANCE;Prestaties en Kwaliteit
PREFERENCES_TAB_SOUND;Geluiden
-PREFERENCES_TIMAX;Hoog
-PREFERENCES_TINB;Aantal tegles
-PREFERENCES_TISTD;Standaard
PREFERENCES_TP_LABEL;Gereedschapspaneel:
PREFERENCES_TP_USEICONORTEXT;Gebruik iconen ipv. tekst voor de tabbladen
PREFERENCES_TP_VSCROLLBAR;Verberg de schuifbalk van het gereedschapspaneel
PREFERENCES_TUNNELMETADATA;Kopieer Exif/IPTC/XMP-data onveranderd naar uitvoerbestand
PREFERENCES_USEBUNDLEDPROFILES;Gebruik gebundelde profielen
PREFERENCES_VIEW;Witbalans instelling van het uitvoerapparaat (monitor, TV, projector...)
-PREFERENCES_WAVLEV;Vergroot wavelet ninveau voor kwaliteit 'hoog'
-PREFERENCES_WLONE;Eén niveau
-PREFERENCES_WLTWO;Twee niveaus
-PREFERENCES_WLZER;Nee
PREFERENCES_WORKFLOW;Layout
PROFILEPANEL_COPYPPASTE;Te kopiëren parameters
PROFILEPANEL_GLOBALPROFILES;Gebundelde profielen
@@ -2114,6 +2085,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_173;NR - Detail recovery
!HISTORY_MSG_203;NR - Color space
!HISTORY_MSG_235;B&W - CM - Auto
@@ -2163,6 +2135,8 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -2242,9 +2216,12 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50
!PREFERENCES_LANG;Language
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PROFILESAVEBOTH;Save processing profile both to the cache and next to the input file
!PREFERENCES_PROFILESAVELOCATION;Processing profile saving location
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
@@ -2261,6 +2238,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set.
!TP_BWMIX_MIXC;Channel Mixer
@@ -2301,6 +2279,8 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical
!TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAW_2PASS;1-pass+fast
!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AMAZEVNG4;AMaZE+VNG4
@@ -2319,7 +2299,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light
diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM
index e2ccb2212..f61fa7a88 100644
--- a/rtdata/languages/Norsk BM
+++ b/rtdata/languages/Norsk BM
@@ -578,9 +578,9 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_MSG_82;Profile changed
!HISTORY_MSG_83;S/H - Sharp mask
@@ -998,6 +998,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1081,7 +1083,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3
!MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out).
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue.\nShortcut: Ctrl+b
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s
+!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s\nSave current profile (.pp3).\nShortcut: Ctrl+Shift+s
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor.\nShortcut: Ctrl+e
!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels.\nShortcut: m
!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen
@@ -1198,14 +1200,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BATCH_PROCESSING;Batch Processing
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1243,13 +1239,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_DARKFRAMEFOUND;Found
!PREFERENCES_DARKFRAMESHOTS;shots
!PREFERENCES_DARKFRAMETEMPLATES;templates
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_EDITORLAYOUT;Editor Layout
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
!PREFERENCES_FLATFIELDFOUND;Found
!PREFERENCES_FLATFIELDSDIR;Flat-fields directory
@@ -1282,12 +1275,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1295,7 +1283,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
@@ -1304,13 +1291,14 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files
!PREFERENCES_PANFACTORLABEL;Pan rate amplification
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1324,8 +1312,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT;Select main font
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
@@ -1335,36 +1321,26 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PREFERENCES_SET;Set
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETAB;Single Editor Tab Mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PREFERENCES_WORKFLOW;Layout
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1392,6 +1368,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP;Subsampling
!SAVEDLG_SUBSAMP_1;Best compression
@@ -1856,6 +1833,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_AUTO;Auto-correction
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1961,7 +1940,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish
index d9e513e34..3558870b8 100644
--- a/rtdata/languages/Polish
+++ b/rtdata/languages/Polish
@@ -776,8 +776,6 @@ PREFERENCES_PROFILESAVECACHE;Zapisz parametry przetwarzania w pamięci podręczn
PREFERENCES_PROFILESAVEINPUT;Zapisz parametry przetwarzania obok pliku wejściowego
PREFERENCES_PROPERTY;Własność
PREFERENCES_PSPATH;Katalog w którym zainstalowany jest Adobe Photoshop
-PREFERENCES_RGBDTL_LABEL;Maksymalna ilość wątków redukcji szumów
-PREFERENCES_RGBDTL_TOOLTIP;Redukcja szumów potrzebuje około 128MB RAMu dla zdjęcia 10Mpix oraz 512MB dla zdjęcia 40Mpix, i dodatkowo 128MB dla każdego wątku. Im większa liczba równoległych wątków, tym krótszy czas egzekucji. Zostawienie ustawienia na "0" automatycznie użyje tyle wątków, ile możliwe.
PREFERENCES_SELECTFONT;Wybierz czcionkę
PREFERENCES_SELECTLANG;Wybierz język
PREFERENCES_SELECTTHEME;Wybierz temat
@@ -797,7 +795,6 @@ PREFERENCES_TAB_BROWSER;Przeglądarka plików
PREFERENCES_TAB_COLORMGR;Zarządzanie kolorami
PREFERENCES_TAB_GENERAL;Ogólne
PREFERENCES_TAB_IMPROC;Przetwarzanie obrazu
-PREFERENCES_TAB_PERFORMANCE;Wydajność
PREFERENCES_TAB_SOUND;Dźwięki
PREFERENCES_TP_LABEL;Panel narzędzi:
PREFERENCES_TP_USEICONORTEXT;Uzyj ikon w zakładkach zamiast tekstowych etykiet
@@ -1477,6 +1474,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_166;Exposure - Reset
!HISTORY_MSG_173;NR - Detail recovery
!HISTORY_MSG_203;NR - Color space
@@ -1685,6 +1683,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1786,13 +1786,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_CLUTSCACHE;HaldCLUT Cache
!PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs
!PREFERENCES_CMMBPC;Black point compensation
@@ -1808,11 +1802,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!PREFERENCES_CURVEBBOXPOS_LEFT;Left
!PREFERENCES_CURVEBBOXPOS_RIGHT;Right
!PREFERENCES_D50_OLD;5000K
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser.
!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50
@@ -1824,22 +1815,17 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images
!PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2.
!PREFERENCES_LANG;Language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported.
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1858,23 +1844,14 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files
!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation.
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
-!PREFERENCES_SMA;Small (250x287)
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PROFILEPANEL_PDYNAMIC;Dynamic
!QINFO_FRAMECOUNT;%2 frames
!QINFO_HDR;HDR / %2 frame(s)
@@ -1887,6 +1864,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling.
!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set.
@@ -1986,6 +1964,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CASTR;Strength
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
!TP_RAW_2PASS;1-pass+fast
@@ -2058,7 +2038,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters)
index fe92b9823..27740a48c 100644
--- a/rtdata/languages/Polish (Latin Characters)
+++ b/rtdata/languages/Polish (Latin Characters)
@@ -776,8 +776,6 @@ PREFERENCES_PROFILESAVECACHE;Zapisz parametry przetwarzania w pamieci podrecznej
PREFERENCES_PROFILESAVEINPUT;Zapisz parametry przetwarzania obok pliku wejsciowego
PREFERENCES_PROPERTY;Wlasnosc
PREFERENCES_PSPATH;Katalog w ktorym zainstalowany jest Adobe Photoshop
-PREFERENCES_RGBDTL_LABEL;Maksymalna ilosc watkow redukcji szumow
-PREFERENCES_RGBDTL_TOOLTIP;Redukcja szumow potrzebuje okolo 128MB RAMu dla zdjecia 10Mpix oraz 512MB dla zdjecia 40Mpix, i dodatkowo 128MB dla kazdego watku. Im wieksza liczba rownoleglych watkow, tym krotszy czas egzekucji. Zostawienie ustawienia na "0" automatycznie uzyje tyle watkow, ile mozliwe.
PREFERENCES_SELECTFONT;Wybierz czcionke
PREFERENCES_SELECTLANG;Wybierz jezyk
PREFERENCES_SELECTTHEME;Wybierz temat
@@ -797,7 +795,6 @@ PREFERENCES_TAB_BROWSER;Przegladarka plikow
PREFERENCES_TAB_COLORMGR;Zarzadzanie kolorami
PREFERENCES_TAB_GENERAL;Ogolne
PREFERENCES_TAB_IMPROC;Przetwarzanie obrazu
-PREFERENCES_TAB_PERFORMANCE;Wydajnosc
PREFERENCES_TAB_SOUND;Dzwieki
PREFERENCES_TP_LABEL;Panel narzedzi:
PREFERENCES_TP_USEICONORTEXT;Uzyj ikon w zakladkach zamiast tekstowych etykiet
@@ -1477,6 +1474,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_166;Exposure - Reset
!HISTORY_MSG_173;NR - Detail recovery
!HISTORY_MSG_203;NR - Color space
@@ -1685,6 +1683,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1786,13 +1786,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_CLUTSCACHE;HaldCLUT Cache
!PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs
!PREFERENCES_CMMBPC;Black point compensation
@@ -1808,11 +1802,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!PREFERENCES_CURVEBBOXPOS_LEFT;Left
!PREFERENCES_CURVEBBOXPOS_RIGHT;Right
!PREFERENCES_D50_OLD;5000K
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser.
!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50
@@ -1824,22 +1815,17 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images
!PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2.
!PREFERENCES_LANG;Language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported.
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1858,23 +1844,14 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files
!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation.
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
-!PREFERENCES_SMA;Small (250x287)
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PROFILEPANEL_PDYNAMIC;Dynamic
!QINFO_FRAMECOUNT;%2 frames
!QINFO_HDR;HDR / %2 frame(s)
@@ -1887,6 +1864,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling.
!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set.
@@ -1986,6 +1964,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CASTR;Strength
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
!TP_RAW_2PASS;1-pass+fast
@@ -2058,7 +2038,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil)
index 915cd5fb0..ba33f8228 100644
--- a/rtdata/languages/Portugues (Brasil)
+++ b/rtdata/languages/Portugues (Brasil)
@@ -1013,14 +1013,8 @@ PARTIALPASTE_VIGNETTING;Correção de vinheta
PARTIALPASTE_WHITEBALANCE;Balanço de branco
PREFERENCES_ADD;Adicionar
PREFERENCES_APPLNEXTSTARTUP;é necessário reiniciar
-PREFERENCES_AUTLISLOW;Baixo
-PREFERENCES_AUTLISMAX;Max - Média de todos os mosaicos
-PREFERENCES_AUTLISSTD;Alto
-PREFERENCES_AUTLISVLOW;Nenhum
-PREFERENCES_AUTLOW;Baixo
PREFERENCES_AUTOMONPROFILE;Usar o perfil de cores do monitor principal do sistema operacional
PREFERENCES_AUTOSAVE_TP_OPEN;Salvar automaticamente ferramentas recolhidas/expandidas\nestado antes de sair
-PREFERENCES_AUTSTD;Padrão
PREFERENCES_BATCH_PROCESSING;Processamento em Lote
PREFERENCES_BEHADDALL;Tudo para 'Adicionar'
PREFERENCES_BEHADDALLHINT;Definir todos os parâmetros para o Adicionar modo.\nAjustes de parâmetros no painel de ferramentas de lote serão deltas para os valores armazenados.
@@ -1067,8 +1061,6 @@ PREFERENCES_DARKFRAMESHOTS;tiros
PREFERENCES_DARKFRAMETEMPLATES;modelos
PREFERENCES_DATEFORMAT;Formato de data
PREFERENCES_DATEFORMATHINT;Podes usar as seguintes sequências de formatação:\n%y - ano\n%m - mês\n%d - dia\n\nPor exemplo, o padrão ISO 8601 dita o formato de data da seguinte forma:\n%y-%m-%d
-PREFERENCES_DAUB_LABEL;Use as wavelets Daubechies D6 em vez de D4
-PREFERENCES_DAUB_TOOLTIP;As ferramentas Redução de Ruído e Níveis de Wavelet usam uma wavelet mãe Daubechies. A escolha de D6 em vez de D4, aumentará o número de coeficientes ortogonais Daubechies e a provável melhora da qualidade dos níveis de pequena escala, sem aumento de memória ou tempo de processamento entre os dois.
PREFERENCES_DIRDARKFRAMES;Diretório de quadros escuros
PREFERENCES_DIRECTORIES;Diretórios
PREFERENCES_DIRHOME;Diretório inicial
@@ -1078,7 +1070,6 @@ PREFERENCES_DIRSELECTDLG;Selecione Diretório de Imagens na Inicialização...
PREFERENCES_DIRSOFTWARE;Diretório de instalação
PREFERENCES_EDITORCMDLINE;Linha de comando personalizada
PREFERENCES_EDITORLAYOUT;Layout do Editor
-PREFERENCES_EXPAUT;Especialista
PREFERENCES_EXTERNALEDITOR;Editor Externo
PREFERENCES_FBROWSEROPTS;Navegador de Arquivos / Opções de Miniaturas
PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barra de ferramentas do navegador de arquivos de linha única\n(desmarque para exibição de baixa resolução)
@@ -1124,12 +1115,7 @@ PREFERENCES_INTENT_SATURATION;Saturação
PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Mostrar miniatura JPEG incorporada se raw não estiver editada
PREFERENCES_LANG;Linguagem
PREFERENCES_LANGAUTODETECT;Use a linguagem do sistema
-PREFERENCES_LEVAUTDN;Nível de remoção de ruídos
-PREFERENCES_LEVDN;Tamanho da célula
-PREFERENCES_LISS;Auto-suavização multizona
-PREFERENCES_MAX;Maxi (Mosaico)
PREFERENCES_MAXRECENTFOLDERS;Número máximo de pastas recentes
-PREFERENCES_MED;Médio (Mosaico/2)
PREFERENCES_MENUGROUPEXTPROGS;Grupo "Abrir com"
PREFERENCES_MENUGROUPFILEOPERATIONS;Grupo "operações de Arquivo"
PREFERENCES_MENUGROUPLABEL;Grupo "Etiqueta de cor"
@@ -1137,7 +1123,6 @@ PREFERENCES_MENUGROUPPROFILEOPERATIONS;Grupo "Operações de perfil de processam
PREFERENCES_MENUGROUPRANK;Grupo "Rank"
PREFERENCES_MENUOPTIONS;Opções do Menu de Contexto
PREFERENCES_METADATA;Metadados
-PREFERENCES_MIN;Mini (100x115)
PREFERENCES_MONINTENT;Intenção de renderização padrão
PREFERENCES_MONITOR;Monitor
PREFERENCES_MONPROFILE;Perfil de cor padrão
@@ -1146,7 +1131,6 @@ PREFERENCES_MULTITAB;Modo de Mútiplas Abas do Editor
PREFERENCES_MULTITABDUALMON;Múltiplas Abas do Editor no Modo de Janela Própria
PREFERENCES_NAVGUIDEBRUSH;Cor do guia do navegador
PREFERENCES_NAVIGATIONFRAME;Navegação
-PREFERENCES_NOISE;Redução de Ruído
PREFERENCES_OUTDIR;Diretório de Saída
PREFERENCES_OUTDIRFOLDER;Salvar na pasta
PREFERENCES_OUTDIRFOLDERHINT;Salvar imagens na pasta selecionada.
@@ -1182,8 +1166,6 @@ PREFERENCES_PRTPROFILE;Perfil de cor
PREFERENCES_PSPATH;Diretório de instalação do Adobe Photoshop
PREFERENCES_REMEMBERZOOMPAN;Lembre-se de zoom % e compensar pan
PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Lembre-se do zoom % e de compensar o pan da imagem atual ao abrir uma nova imagem.\n\nEsta opção só funciona em "Modo da Aba do Editor Único" e quando "o método Demosaicing utilizado para a pré-visualização em <100% zoom" está definido como "Como no PP3".
-PREFERENCES_RGBDTL_LABEL;Número máximo de threads para Redução de Ruído e Níveis de Wavelet
-PREFERENCES_RGBDTL_TOOLTIP;Deixe a configuração em "0" para usar automaticamente o maior número de threads possível. Quanto mais threads rodarem em paralelo, mais rápido será o cálculo. Consulte o RawPedia para requisitos de memória.
PREFERENCES_SAVE_TP_OPEN_NOW;Salvar ferramentas no estado recolhidas/expandididas agora
PREFERENCES_SELECTFONT;Selecione a fonte principal
PREFERENCES_SELECTFONT_COLPICKER;Selecione a fonte do Seletor de Cor
@@ -1198,41 +1180,30 @@ PREFERENCES_SHOWDATETIME;Mostrar data e hora
PREFERENCES_SHOWEXPOSURECOMPENSATION;Acrescentar compensação de exposição
PREFERENCES_SHOWFILMSTRIPTOOLBAR;Mostrar barra de ferramentas de diapositivos
PREFERENCES_SHTHRESHOLD;Limite para sombras recortadas
-PREFERENCES_SIMPLAUT;Modo de ferramenta
PREFERENCES_SINGLETAB;Modo de Aba de Editor Único
PREFERENCES_SINGLETABVERTAB;Editor de Aba Única, Abas verticais
-PREFERENCES_SMA;Pequeno (250x287)
PREFERENCES_SND_BATCHQUEUEDONE;Processamento de fila concluído
PREFERENCES_SND_HELP;Digite um endereço de arquivo completo para definir um som ou deixe em branco para não ter som.\nPara sons do sistema no Windows, use "SystemDefault", "SystemAsterisk" etc., e no Linux use "complete", "window-attention" etc.
PREFERENCES_SND_LNGEDITPROCDONE;Processamento de Editor concluído
PREFERENCES_SND_THRESHOLDSECS;Depois de segundos
PREFERENCES_STARTUPIMDIR;Diretório de imagens na inicialização
-PREFERENCES_STDAUT;Padrão
PREFERENCES_TAB_BROWSER;Navegador de Arquivo
PREFERENCES_TAB_COLORMGR;Gerenciamento de Cor
PREFERENCES_TAB_DYNAMICPROFILE;Regras de Perfil Dinâmico
PREFERENCES_TAB_GENERAL;Geral
PREFERENCES_TAB_IMPROC;Processamento de Imagem
-PREFERENCES_TAB_PERFORMANCE;Performance & Qualidade
PREFERENCES_TAB_SOUND;Sons
PREFERENCES_THEME;Tema
PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Visualização JPEG incorporada
PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Imagem para mostrar
PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Renderização raw neutra
PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;JPEG incorporado se tamanho completo, raw neutro caso contrário
-PREFERENCES_TIMAX;Alto
-PREFERENCES_TINB;Número de mosaicos
-PREFERENCES_TISTD;Padrão
PREFERENCES_TP_LABEL;Painel de ferramentas:
PREFERENCES_TP_USEICONORTEXT;Use ícones de guias em vez de texto
PREFERENCES_TP_VSCROLLBAR;Ocultar barra de rolagem vertical
PREFERENCES_TUNNELMETADATA;Copiar Exif/IPTC/XMP inalterado para o arquivo de saída
PREFERENCES_USEBUNDLEDPROFILES;Use perfis agrupados
PREFERENCES_VIEW;Balanço de branco do dispositivo de saída (monitor, TV, projetor, visualização, etc.)
-PREFERENCES_WAVLEV;Aumentar o nível de wavelet em qualidade 'alta'
-PREFERENCES_WLONE;Um nível
-PREFERENCES_WLTWO;Dois níveis
-PREFERENCES_WLZER;Não
PREFERENCES_WORKFLOW;Layout
PROFILEPANEL_COPYPPASTE;Parâmetros para copiar
PROFILEPANEL_GLOBALPROFILES;Perfis agrupados
@@ -1922,7 +1893,6 @@ TP_RETINEX_FREEGAMMA;Gamma livre
TP_RETINEX_GAIN;Ganho
TP_RETINEX_GAINOFFS;Ganho e Compensação (brilho)
TP_RETINEX_GAINTRANSMISSION;Transmissão de ganho
-TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplifica ou reduz o mapa de transmissão para obter luminância.\nAbscissa: transmissão -min de 0, média e valores (max).\nOrdenado: ganho.
TP_RETINEX_GAIN_TOOLTIP;Atua na imagem restaurada.\n\nIsso é muito diferente das outras configurações. Usado para pixels pretos ou brancos e para ajudar a equilibrar o histograma.
TP_RETINEX_GAMMA;Gamma
TP_RETINEX_GAMMA_FREE;Livre
@@ -2284,5 +2254,15 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: -
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
+!PREFERENCES_TAB_PERFORMANCE;Performance
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian
index 81b216cc8..774e2d580 100644
--- a/rtdata/languages/Russian
+++ b/rtdata/languages/Russian
@@ -756,7 +756,6 @@ PREFERENCES_METADATA;Метаданные
PREFERENCES_MONITOR;Монитор
PREFERENCES_MULTITAB;Много вкладок
PREFERENCES_MULTITABDUALMON;Много вкладок, на втором мониторе (если возможно)
-PREFERENCES_NOISE;Подавление шумов
PREFERENCES_OUTDIR;Каталог для сохранения изображений
PREFERENCES_OUTDIRFOLDER;Сохранять в каталог
PREFERENCES_OUTDIRFOLDERHINT;Сохранение изображений в выбранный каталог
@@ -781,8 +780,6 @@ PREFERENCES_PROFILESAVECACHE;Сохранять профиль обработк
PREFERENCES_PROFILESAVEINPUT;Сохранять профиль обработки в одном каталоге с исходным файлом
PREFERENCES_PROPERTY;Свойство
PREFERENCES_PSPATH;Каталог установки Adobe Photoshop
-PREFERENCES_RGBDTL_LABEL;Максимальное количество потоков для подавления шума
-PREFERENCES_RGBDTL_TOOLTIP;Оставьте 0 чтоб использовать максимально возможное количество потоков. Чем больше потоков будет запущено одновременно, тем быстрее будет расчёт. Требования к памяти указаны в RawPedia
PREFERENCES_SELECTFONT;Выбрать шрифт
PREFERENCES_SELECTLANG;Выбрать язык
PREFERENCES_SELECTTHEME;Выбрать тему
@@ -803,7 +800,6 @@ PREFERENCES_TAB_COLORMGR;Управление цветом
PREFERENCES_TAB_DYNAMICPROFILE;Динамические профили
PREFERENCES_TAB_GENERAL;Основное
PREFERENCES_TAB_IMPROC;Обработка изображения
-PREFERENCES_TAB_PERFORMANCE;Производительность
PREFERENCES_TAB_SOUND;Звуки
PREFERENCES_THEME;Тема
PREFERENCES_TP_LABEL;Панель инструментов:
@@ -1421,6 +1417,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!GENERAL_RESET;Reset
!GENERAL_SAVE_AS;Save as...
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_235;B&W - CM - Auto
!HISTORY_MSG_237;B&W - CM
!HISTORY_MSG_252;CbDL - Skin tar/prot
@@ -1658,6 +1655,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1753,13 +1752,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_CLUTSCACHE;HaldCLUT Cache
!PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs
!PREFERENCES_CLUTSDIR;HaldCLUT directory
@@ -1770,11 +1763,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!PREFERENCES_CROP_GUIDES_FRAME;Frame
!PREFERENCES_CROP_GUIDES_FULL;Original
!PREFERENCES_CROP_GUIDES_NONE;None
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser.
!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50
@@ -1787,13 +1777,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!PREFERENCES_INSPECT_LABEL;Inspect
!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images
!PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2.
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONPROFILE;Default color profile
!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported.
@@ -1802,6 +1786,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PRINTER;Printer (Soft-Proofing)
!PREFERENCES_PROFILESAVEBOTH;Save processing profile both to the cache and next to the input file
!PREFERENCES_PROFILESAVELOCATION;Processing profile saving location
@@ -1816,21 +1802,12 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files
!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation.
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
-!PREFERENCES_SMA;Small (250x287)
-!PREFERENCES_STDAUT;Standard
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PROFILEPANEL_PDYNAMIC;Dynamic
!QINFO_FRAMECOUNT;%2 frames
!QINFO_HDR;HDR / %2 frame(s)
@@ -1843,6 +1820,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling.
!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set.
@@ -1996,6 +1974,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CASTR;Strength
!TP_RAWEXPOS_BLACK_0;Green 1 (lead)
!TP_RAWEXPOS_BLACK_1;Red
@@ -2058,7 +2038,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters)
index d8905c0a8..675e710aa 100644
--- a/rtdata/languages/Serbian (Cyrilic Characters)
+++ b/rtdata/languages/Serbian (Cyrilic Characters)
@@ -693,8 +693,6 @@ PREFERENCES_PROFILESAVECACHE;Сачувај параметре обраде у
PREFERENCES_PROFILESAVEINPUT;Сачувај парамтре обраде поред улазне датотеке
PREFERENCES_PROPERTY;Особина
PREFERENCES_PSPATH;Директоријум са инсталираним Адобе Фотошопом
-PREFERENCES_RGBDTL_LABEL;Највећи број нири приликом уклањања шума
-PREFERENCES_RGBDTL_TOOLTIP;Уклањање шума захтева око 128MB РАМ меморије за слику од 10 мегапиксела или 512MB за слику од 40 мегапиксела, уз додатних 128MB меморије по свакој нити. Што више нити се извршавају заједно то ће брже бити рачунање. Оставите ову вредност на „0“ како би програм аутоматски доделило што је више нитова могуће.
PREFERENCES_SELECTFONT;Изаберите фонт
PREFERENCES_SELECTLANG;Језик
PREFERENCES_SELECTTHEME;Тема
@@ -714,7 +712,6 @@ PREFERENCES_TAB_BROWSER;Преглед датотека
PREFERENCES_TAB_COLORMGR;Управљање бојама
PREFERENCES_TAB_GENERAL;Опште
PREFERENCES_TAB_IMPROC;Обрада сликe
-PREFERENCES_TAB_PERFORMANCE;Перформанса
PREFERENCES_TAB_SOUND;Звуци
PREFERENCES_TP_LABEL;Површ алата:
PREFERENCES_TP_USEICONORTEXT;Користи иконице језичка уместо текста
@@ -1328,6 +1325,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_173;NR - Detail recovery
!HISTORY_MSG_203;NR - Color space
!HISTORY_MSG_235;B&W - CM - Auto
@@ -1579,6 +1577,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1695,13 +1695,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_CLUTSCACHE;HaldCLUT Cache
!PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs
!PREFERENCES_CLUTSDIR;HaldCLUT directory
@@ -1718,11 +1712,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!PREFERENCES_CURVEBBOXPOS_LEFT;Left
!PREFERENCES_CURVEBBOXPOS_RIGHT;Right
!PREFERENCES_D50_OLD;5000K
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser.
!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50
@@ -1736,23 +1727,18 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images
!PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2.
!PREFERENCES_LANG;Language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported.
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1771,22 +1757,13 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files
!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation.
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
-!PREFERENCES_SMA;Small (250x287)
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PROFILEPANEL_PDYNAMIC;Dynamic
!QINFO_FRAMECOUNT;%2 frames
!QINFO_HDR;HDR / %2 frame(s)
@@ -1799,6 +1776,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set.
!THRESHOLDSELECTOR_BL;Bottom-left
@@ -1970,6 +1948,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CASTR;Strength
!TP_RAWEXPOS_BLACK_0;Green 1 (lead)
!TP_RAWEXPOS_BLACK_1;Red
@@ -2053,7 +2033,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters)
index 26867400f..f41d7e36e 100644
--- a/rtdata/languages/Serbian (Latin Characters)
+++ b/rtdata/languages/Serbian (Latin Characters)
@@ -693,8 +693,6 @@ PREFERENCES_PROFILESAVECACHE;Sačuvaj parametre obrade u ostavu
PREFERENCES_PROFILESAVEINPUT;Sačuvaj paramtre obrade pored ulazne datoteke
PREFERENCES_PROPERTY;Osobina
PREFERENCES_PSPATH;Direktorijum sa instaliranim Adobe Fotošopom
-PREFERENCES_RGBDTL_LABEL;Najveći broj niri prilikom uklanjanja šuma
-PREFERENCES_RGBDTL_TOOLTIP;Uklanjanje šuma zahteva oko 128MB RAM memorije za sliku od 10 megapiksela ili 512MB za sliku od 40 megapiksela, uz dodatnih 128MB memorije po svakoj niti. Što više niti se izvršavaju zajedno to će brže biti računanje. Ostavite ovu vrednost na „0“ kako bi program automatski dodelilo što je više nitova moguće.
PREFERENCES_SELECTFONT;Izaberite font
PREFERENCES_SELECTLANG;Jezik
PREFERENCES_SELECTTHEME;Tema
@@ -714,7 +712,6 @@ PREFERENCES_TAB_BROWSER;Pregled datoteka
PREFERENCES_TAB_COLORMGR;Upravljanje bojama
PREFERENCES_TAB_GENERAL;Opšte
PREFERENCES_TAB_IMPROC;Obrada slike
-PREFERENCES_TAB_PERFORMANCE;Performansa
PREFERENCES_TAB_SOUND;Zvuci
PREFERENCES_TP_LABEL;Površ alata:
PREFERENCES_TP_USEICONORTEXT;Koristi ikonice jezička umesto teksta
@@ -1328,6 +1325,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_173;NR - Detail recovery
!HISTORY_MSG_203;NR - Color space
!HISTORY_MSG_235;B&W - CM - Auto
@@ -1579,6 +1577,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1695,13 +1695,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_CLUTSCACHE;HaldCLUT Cache
!PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs
!PREFERENCES_CLUTSDIR;HaldCLUT directory
@@ -1718,11 +1712,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!PREFERENCES_CURVEBBOXPOS_LEFT;Left
!PREFERENCES_CURVEBBOXPOS_RIGHT;Right
!PREFERENCES_D50_OLD;5000K
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser
!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser.
!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50
@@ -1736,23 +1727,18 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images
!PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2.
!PREFERENCES_LANG;Language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported.
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1771,22 +1757,13 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files
!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation.
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
-!PREFERENCES_SMA;Small (250x287)
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PROFILEPANEL_PDYNAMIC;Dynamic
!QINFO_FRAMECOUNT;%2 frames
!QINFO_HDR;HDR / %2 frame(s)
@@ -1799,6 +1776,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set.
!THRESHOLDSELECTOR_BL;Bottom-left
@@ -1970,6 +1948,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CASTR;Strength
!TP_RAWEXPOS_BLACK_0;Green 1 (lead)
!TP_RAWEXPOS_BLACK_1;Red
@@ -2053,7 +2033,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak
index 87b5ce231..b5ff03253 100644
--- a/rtdata/languages/Slovak
+++ b/rtdata/languages/Slovak
@@ -651,9 +651,9 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!GENERAL_SLIDER;Slider
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_MSG_88;Impulse NR threshold
!HISTORY_MSG_93;CbDL - Value
@@ -1061,6 +1061,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1251,14 +1253,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PARTIALPASTE_SOFTLIGHT;Soft light
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
!PREFERENCES_BEHSETALL;All to 'Set'
@@ -1294,12 +1290,9 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PREFERENCES_DARKFRAMEFOUND;Found
!PREFERENCES_DARKFRAMESHOTS;shots
!PREFERENCES_DARKFRAMETEMPLATES;templates
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
!PREFERENCES_FLATFIELDFOUND;Found
!PREFERENCES_FLATFIELDSDIR;Flat-fields directory
@@ -1332,12 +1325,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1345,7 +1333,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
@@ -1353,12 +1340,13 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files
!PREFERENCES_PANFACTORLABEL;Pan rate amplification
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1371,8 +1359,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings
@@ -1380,35 +1366,25 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation.
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
!PROFILEPANEL_LOADPPASTE;Parameters to load
@@ -1433,6 +1409,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP;Subsampling
!SAVEDLG_SUBSAMP_1;Best compression
@@ -1871,6 +1848,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1971,7 +1950,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi
index 63e3c27e3..e0ca416d0 100644
--- a/rtdata/languages/Suomi
+++ b/rtdata/languages/Suomi
@@ -580,9 +580,9 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_MSG_82;Profile changed
!HISTORY_MSG_83;S/H - Sharp mask
@@ -1000,6 +1000,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1083,7 +1085,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3
!MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out).
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue.\nShortcut: Ctrl+b
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s
+!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s\nSave current profile (.pp3).\nShortcut: Ctrl+Shift+s
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor.\nShortcut: Ctrl+e
!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels.\nShortcut: m
!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen
@@ -1200,14 +1202,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BATCH_PROCESSING;Batch Processing
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1245,13 +1241,10 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PREFERENCES_DARKFRAMEFOUND;Found
!PREFERENCES_DARKFRAMESHOTS;shots
!PREFERENCES_DARKFRAMETEMPLATES;templates
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_EDITORLAYOUT;Editor Layout
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
!PREFERENCES_FLATFIELDFOUND;Found
!PREFERENCES_FLATFIELDSDIR;Flat-fields directory
@@ -1284,12 +1277,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1297,7 +1285,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
@@ -1306,13 +1293,14 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files
!PREFERENCES_PANFACTORLABEL;Pan rate amplification
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1326,8 +1314,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT;Select main font
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
@@ -1337,36 +1323,26 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PREFERENCES_SET;Set
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETAB;Single Editor Tab Mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PREFERENCES_WORKFLOW;Layout
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1394,6 +1370,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP;Subsampling
!SAVEDLG_SUBSAMP_1;Best compression
@@ -1857,6 +1834,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_AUTO;Auto-correction
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1962,7 +1941,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish
index c2b779b4a..049162e68 100644
--- a/rtdata/languages/Swedish
+++ b/rtdata/languages/Swedish
@@ -811,13 +811,7 @@ PARTIALPASTE_WAVELETGROUP;Wavelet-nivåer
PARTIALPASTE_WHITEBALANCE;Vitbalans
PREFERENCES_ADD;Lägg till
PREFERENCES_APPLNEXTSTARTUP;Kräver omstart av RawTherapee
-PREFERENCES_AUTLISLOW;Låg
-PREFERENCES_AUTLISMAX;Max - Medel av alla indelningar
-PREFERENCES_AUTLISSTD;Hög
-PREFERENCES_AUTLISVLOW;Ingen
-PREFERENCES_AUTLOW;Låg
PREFERENCES_AUTOMONPROFILE;Använd operativsystemets skärmfärgprofil
-PREFERENCES_AUTSTD;Standard
PREFERENCES_BATCH_PROCESSING;Batchbehandling
PREFERENCES_BEHADDALL;Sätt allt till 'Lägg till'
PREFERENCES_BEHADDALLHINT;Sätt alla parametrar till Lägg till-läge.\nFörändringar i parametrar batch-verktyget kommer att vara skillnader gentemot de lagrade värdena.
@@ -860,8 +854,6 @@ PREFERENCES_DARKFRAMESHOTS;bilder
PREFERENCES_DARKFRAMETEMPLATES;mallar
PREFERENCES_DATEFORMAT;Datumformat
PREFERENCES_DATEFORMATHINT;Du kan använda följande format:\n%y: år\n%m: månad\n%d: dag\n\nTill exempel är det svenska datumformatet:\n%y-%m-%d
-PREFERENCES_DAUB_LABEL;Använd Daubechies D6-wavelets istället för D4
-PREFERENCES_DAUB_TOOLTIP;Brusreduceringen och wavelet-verktyget använder en Debauchies moder-wavelet. Om du väljer D6 istället för D4 ökas antalet ortogonala Daubechies-koefficienter och troligtvis ökas också kvaliteten på de småskaliga nivåerna. Det blir ingen skillnad i minnesanvändning eller beräkningstid.
PREFERENCES_DIRDARKFRAMES;Katalog för svartbilder
PREFERENCES_DIRHOME;Hemkatalog
PREFERENCES_DIRLAST;Senaste besökta katalog
@@ -869,7 +861,6 @@ PREFERENCES_DIROTHER;Annan
PREFERENCES_DIRSELECTDLG;Välj bildkatalog vid uppstart...
PREFERENCES_DIRSOFTWARE;Installationskatalog
PREFERENCES_EDITORLAYOUT;Layout för redigeringsvyn
-PREFERENCES_EXPAUT;Expert
PREFERENCES_EXTERNALEDITOR;Externt bildredigeringsprogram
PREFERENCES_FBROWSEROPTS;Inställningar för filvyn/miniatyrbilderna
PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Filvyns verktygsrad som en rad (avmarkera för lågupplösta skärmar)
@@ -912,11 +903,7 @@ PREFERENCES_INTENT_RELATIVE;Relativ kolorimetrisk
PREFERENCES_INTENT_SATURATION;Mättnad
PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Visa intern råbild om oredigerad
PREFERENCES_LANGAUTODETECT;Använd operativsystemets språkinställning
-PREFERENCES_LEVAUTDN;Brusreduceringsnivå
-PREFERENCES_LEVDN;Cellstorlek
-PREFERENCES_MAX;Max (Tile)
PREFERENCES_MAXRECENTFOLDERS;Maximalt antal visade kataloger
-PREFERENCES_MED;Medium (Tile/2)
PREFERENCES_MENUGROUPEXTPROGS;Visa "Öppna med"
PREFERENCES_MENUGROUPFILEOPERATIONS;Visa "Filaktiviteter"
PREFERENCES_MENUGROUPLABEL;Visa "Etikett"
@@ -924,12 +911,10 @@ PREFERENCES_MENUGROUPPROFILEOPERATIONS;Visa "Profilaktiviteter"
PREFERENCES_MENUGROUPRANK;Visa "Betygsättning"
PREFERENCES_MENUOPTIONS;Menyval för högerklick
PREFERENCES_METADATA;Metadata
-PREFERENCES_MIN;Mini (100x115)
PREFERENCES_MULTITAB;Öppna bilderna i olika flikar
PREFERENCES_MULTITABDUALMON;Visa bild på andra skärmen, om möjligt, i flerfliksläge
PREFERENCES_NAVGUIDEBRUSH;Översiktsvyns guidefärg
PREFERENCES_NAVIGATIONFRAME;Navigering
-PREFERENCES_NOISE;Brusreducering
PREFERENCES_OUTDIR;Utmatningskatalog
PREFERENCES_OUTDIRFOLDER;Spara till katalog
PREFERENCES_OUTDIRFOLDERHINT;Spara de behandlade bilderna i den valda katalogen
@@ -960,8 +945,6 @@ PREFERENCES_PROPERTY;Egenskaper
PREFERENCES_PSPATH;Adobe Photoshops installationskatalog
PREFERENCES_REMEMBERZOOMPAN;Kom ihåg förstoringsprocent och panorering
PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Kom ihåg förstoringsgraden i % och panoreringen för den aktuella bilden när du öppnar en ny bild.\n\nDet här valet fungerar bara i Enkelfliksläget och när "Demosaicing-metod som ska användas för förstoringsgrader <100 %" är satt til "Som i PP3".
-PREFERENCES_RGBDTL_LABEL;Maximalt antal trådar för brusreducering
-PREFERENCES_RGBDTL_TOOLTIP;Brusreduceringen kräver ungefär 128MB RAM för en 10MPix bild och 512MB för en 40 MPix, och ytterligare 128MB per tråd. Ju fler trådar som körs parallellt, desto snabbare går beräkningarna. Ange värdet "0" för att automatiskt använda så många trådar som möjligt.
PREFERENCES_SELECTFONT;Välj typsnitt
PREFERENCES_SELECTFONT_COLPICKER;Välj typsnitt för färgpipetten
PREFERENCES_SELECTLANG;Välj språk
@@ -974,35 +957,24 @@ PREFERENCES_SHOWDATETIME;Visa datum och tid
PREFERENCES_SHOWEXPOSURECOMPENSATION;Lägg till exponeringskompensation
PREFERENCES_SHOWFILMSTRIPTOOLBAR;Visa verktygsraden för filmstrip
PREFERENCES_SHTHRESHOLD;Tröskelvärde för skuggor
-PREFERENCES_SIMPLAUT;Verktygsläge
PREFERENCES_SINGLETAB;Öppna en bild åt gången
PREFERENCES_SINGLETABVERTAB;Enkelfliksläge, vertikala flikar
-PREFERENCES_SMA;Liten (250x287)
PREFERENCES_SND_BATCHQUEUEDONE;Batchkön färdig
PREFERENCES_SND_HELP;Fyll i en sökväg till ett ljud.\nI Windows kan "SystemDefault", "SystemAsterisk" o.s.v. användas.\nPå Linuxbaserade system kan du prova med "complete", "windows-attention" o.s.v.
PREFERENCES_SND_LNGEDITPROCDONE;När behandlingen är klar
PREFERENCES_SND_THRESHOLDSECS;Ljudet kommer efter så här många sekunder
PREFERENCES_STARTUPIMDIR;Bildkatalog som visas vid uppstart
-PREFERENCES_STDAUT;Standard
PREFERENCES_TAB_BROWSER;Filbläddrare
PREFERENCES_TAB_COLORMGR;Färghantering
PREFERENCES_TAB_GENERAL;Allmän
PREFERENCES_TAB_IMPROC;Bildbehandling
-PREFERENCES_TAB_PERFORMANCE;Prestanda
PREFERENCES_TAB_SOUND;Ljud
-PREFERENCES_TIMAX;Hög
-PREFERENCES_TINB;Antal tiles
-PREFERENCES_TISTD;Standard
PREFERENCES_TP_LABEL;Verktygspanel:
PREFERENCES_TP_USEICONORTEXT;Använd ikoner istället för text
PREFERENCES_TP_VSCROLLBAR;Göm verktygpanelens vertikala skrollist
PREFERENCES_TUNNELMETADATA;Kopiera Exif/IPTC/XMP till utfilen oförändrat
PREFERENCES_USEBUNDLEDPROFILES;Visa förinstallerade profiler
PREFERENCES_VIEW;Utenhetens vitbalansvärde (datorskärm, TV, bildkanon, etc.)
-PREFERENCES_WAVLEV;Öka waveletnivån vid kvalitet "hög"
-PREFERENCES_WLONE;En nivå
-PREFERENCES_WLTWO;Två nivåer
-PREFERENCES_WLZER;Nej
PREFERENCES_WORKFLOW;Arbetsflöde
PROFILEPANEL_COPYPPASTE;Parametrar att kopiera
PROFILEPANEL_GLOBALPROFILES;Förinstallerade profiler
@@ -1879,6 +1851,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTORY_MSG_173;NR - Detail recovery
!HISTORY_MSG_203;NR - Color space
!HISTORY_MSG_235;B&W - CM - Auto
@@ -1965,6 +1938,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -2076,11 +2051,12 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50
!PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2.
!PREFERENCES_LANG;Language
-!PREFERENCES_LISS;Auto multi-zone smoothing
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PRINTER;Printer (Soft-Proofing)
!PREFERENCES_PROFILESAVEBOTH;Save processing profile both to the cache and next to the input file
!PREFERENCES_PROFILESAVELOCATION;Processing profile saving location
@@ -2089,6 +2065,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
@@ -2106,6 +2083,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!SAMPLEFORMAT_16;16-bit floating-point
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled.
!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set.
!TP_BWMIX_MIXC;Channel Mixer
@@ -2171,6 +2149,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical
!TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare.
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn)
!TP_RAW_2PASS;1-pass+fast
!TP_RAW_3PASSBEST;3-pass (Markesteijn)
@@ -2228,7 +2208,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!TP_RETINEX_CONTEDIT_MAP;Mask equalizer
!TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts.
!TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts!
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA_TOOLTIP;Restore tones by applying gamma before and after Retinex. Different from Retinex curves or others curves (Lab, Exposure, etc.).
!TP_RETINEX_HIGHLIGHT_TOOLTIP;Increase action of High algorithm.\nMay require you to re-adjust "Neighboring pixels" and to increase the "White-point correction" in the Raw tab -> Raw White Points tool.
diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish
index 1af509412..bae5f69de 100644
--- a/rtdata/languages/Turkish
+++ b/rtdata/languages/Turkish
@@ -579,9 +579,9 @@ TP_WBALANCE_TEMPERATURE;Isı
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
!GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
-!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+!HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
!HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-!HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
+!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
!HISTORY_MSG_82;Profile changed
!HISTORY_MSG_83;S/H - Sharp mask
@@ -999,6 +999,8 @@ TP_WBALANCE_TEMPERATURE;Isı
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
!HISTORY_MSG_RAW_BORDER;Raw border
!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1082,7 +1084,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!MAIN_BUTTON_NAVPREV_TOOLTIP;Navigate to the previous image relative to image opened in the Editor.\nShortcut: Shift-F3\n\nTo navigate to the previous image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F3
!MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronize the File Browser or Filmstrip with the Editor to reveal the thumbnail of the currently opened image, and clear any active filters.\nShortcut: x\n\nAs above, but without clearing active filters:\nShortcut: y\n(Note that the thumbnail of the opened image will not be shown if filtered out).
!MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Put current image to processing queue.\nShortcut: Ctrl+b
-!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s
+!MAIN_BUTTON_SAVE_TOOLTIP;Save current image.\nShortcut: Ctrl+s\nSave current profile (.pp3).\nShortcut: Ctrl+Shift+s
!MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Edit current image in external editor.\nShortcut: Ctrl+e
!MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Show/hide all side panels.\nShortcut: m
!MAIN_BUTTON_UNFULLSCREEN;Exit fullscreen
@@ -1199,14 +1201,8 @@ TP_WBALANCE_TEMPERATURE;Isı
!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
-!PREFERENCES_AUTLISLOW;Low
-!PREFERENCES_AUTLISMAX;Max - Average of all tiles
-!PREFERENCES_AUTLISSTD;High
-!PREFERENCES_AUTLISVLOW;None
-!PREFERENCES_AUTLOW;Low
!PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-!PREFERENCES_AUTSTD;Standard
!PREFERENCES_BATCH_PROCESSING;Batch Processing
!PREFERENCES_BEHADDALL;All to 'Add'
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1244,13 +1240,10 @@ TP_WBALANCE_TEMPERATURE;Isı
!PREFERENCES_DARKFRAMEFOUND;Found
!PREFERENCES_DARKFRAMESHOTS;shots
!PREFERENCES_DARKFRAMETEMPLATES;templates
-!PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-!PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
!PREFERENCES_DIRDARKFRAMES;Dark-frames directory
!PREFERENCES_DIRECTORIES;Directories
!PREFERENCES_EDITORCMDLINE;Custom command line
!PREFERENCES_EDITORLAYOUT;Editor Layout
-!PREFERENCES_EXPAUT;Expert
!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
!PREFERENCES_FLATFIELDFOUND;Found
!PREFERENCES_FLATFIELDSDIR;Flat-fields directory
@@ -1283,12 +1276,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
!PREFERENCES_LANG;Language
!PREFERENCES_LANGAUTODETECT;Use system language
-!PREFERENCES_LEVAUTDN;Denoising level
-!PREFERENCES_LEVDN;Cell size
-!PREFERENCES_LISS;Auto multi-zone smoothing
-!PREFERENCES_MAX;Maxi (Tile)
!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-!PREFERENCES_MED;Medium (Tile/2)
!PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
!PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
!PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1296,7 +1284,6 @@ TP_WBALANCE_TEMPERATURE;Isı
!PREFERENCES_MENUGROUPRANK;Group "Rank"
!PREFERENCES_MENUOPTIONS;Context Menu Options
!PREFERENCES_METADATA;Metadata
-!PREFERENCES_MIN;Mini (100x115)
!PREFERENCES_MONINTENT;Default rendering intent
!PREFERENCES_MONITOR;Monitor
!PREFERENCES_MONPROFILE;Default color profile
@@ -1305,13 +1292,14 @@ TP_WBALANCE_TEMPERATURE;Isı
!PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
!PREFERENCES_NAVIGATIONFRAME;Navigation
-!PREFERENCES_NOISE;Noise Reduction
!PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser
!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel
!PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files
!PREFERENCES_PANFACTORLABEL;Pan rate amplification
!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+!PREFERENCES_PERFORMANCE_THREADS;Threads
+!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
!PREFERENCES_PREVDEMO;Preview Demosaic Method
!PREFERENCES_PREVDEMO_FAST;Fast
!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1325,8 +1313,6 @@ TP_WBALANCE_TEMPERATURE;Isı
!PREFERENCES_PRTPROFILE;Color profile
!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-!PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-!PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
!PREFERENCES_SELECTFONT;Select main font
!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
@@ -1336,36 +1322,26 @@ TP_WBALANCE_TEMPERATURE;Isı
!PREFERENCES_SET;Set
!PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
-!PREFERENCES_SIMPLAUT;Tool mode
!PREFERENCES_SINGLETAB;Single Editor Tab Mode
!PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-!PREFERENCES_SMA;Small (250x287)
!PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
!PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
!PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
!PREFERENCES_SND_THRESHOLDSECS;After seconds
-!PREFERENCES_STDAUT;Standard
!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
-!PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+!PREFERENCES_TAB_PERFORMANCE;Performance
!PREFERENCES_TAB_SOUND;Sounds
!PREFERENCES_THEME;Theme
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-!PREFERENCES_TIMAX;High
-!PREFERENCES_TINB;Number of tiles
-!PREFERENCES_TISTD;Standard
!PREFERENCES_TP_LABEL;Tool panel:
!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
!PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
!PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
!PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-!PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-!PREFERENCES_WLONE;One level
-!PREFERENCES_WLTWO;Two levels
-!PREFERENCES_WLZER;No
!PREFERENCES_WORKFLOW;Layout
!PROFILEPANEL_COPYPPASTE;Parameters to copy
!PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1393,6 +1369,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
!SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
+!SAVEDLG_FILEFORMAT_FLOAT; floating-point
!SAVEDLG_FORCEFORMATOPTS;Force saving options
!SAVEDLG_SUBSAMP;Subsampling
!SAVEDLG_SUBSAMP_1;Best compression
@@ -1856,6 +1833,8 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_PRSHARPENING_LABEL;Post-Resize Sharpening
!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
!TP_RAWCACORR_AUTO;Auto-correction
+!TP_RAWCACORR_AUTOIT;Iterations
+!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
!TP_RAWCACORR_CABLUE;Blue
!TP_RAWCACORR_CARED;Red
!TP_RAWCACORR_CASTR;Strength
@@ -1961,7 +1940,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_RETINEX_GAIN;Gain
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
-!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
!TP_RETINEX_GAMMA;Gamma
!TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/languages/default b/rtdata/languages/default
index d5c9636a2..2b525a260 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -239,11 +239,11 @@ GENERAL_UNCHANGED;(Unchanged)
GENERAL_WARNING;Warning
GIMP_PLUGIN_INFO;Welcome to the RawTherapee GIMP plugin!\nOnce you are done editing, simply close the main RawTherapee window and the image will be automatically imported in GIMP.
HISTOGRAM_TOOLTIP_B;Show/Hide blue histogram.
-HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.\nRight-click on image preview to freeze/unfreeze.
+HISTOGRAM_TOOLTIP_BAR;Show/Hide RGB indicator bar.
HISTOGRAM_TOOLTIP_CHRO;Show/Hide chromaticity histogram.
-HISTOGRAM_TOOLTIP_FULL;Toggle full (off) or scaled (on) histogram.
HISTOGRAM_TOOLTIP_G;Show/Hide green histogram.
HISTOGRAM_TOOLTIP_L;Show/Hide CIELab luminance histogram.
+HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
HISTOGRAM_TOOLTIP_R;Show/Hide red histogram.
HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
HISTORY_CHANGED;Changed
@@ -869,6 +869,8 @@ HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
+HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations
+HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift
HISTORY_MSG_RAW_BORDER;Raw border
HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
@@ -1141,14 +1143,8 @@ PARTIALPASTE_VIGNETTING;Vignetting correction
PARTIALPASTE_WHITEBALANCE;White balance
PREFERENCES_ADD;Add
PREFERENCES_APPLNEXTSTARTUP;restart required
-PREFERENCES_AUTLISLOW;Low
-PREFERENCES_AUTLISMAX;Max - Average of all tiles
-PREFERENCES_AUTLISSTD;High
-PREFERENCES_AUTLISVLOW;None
-PREFERENCES_AUTLOW;Low
PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile
PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
-PREFERENCES_AUTSTD;Standard
PREFERENCES_BATCH_PROCESSING;Batch Processing
PREFERENCES_BEHADDALL;All to 'Add'
PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
@@ -1196,8 +1192,6 @@ PREFERENCES_DARKFRAMESHOTS;shots
PREFERENCES_DARKFRAMETEMPLATES;templates
PREFERENCES_DATEFORMAT;Date format
PREFERENCES_DATEFORMATHINT;You can use the following formatting strings:\n%y - year\n%m - month\n%d - day\n\nFor example, the ISO 8601 standard dictates the date format as follows:\n%y-%m-%d
-PREFERENCES_DAUB_LABEL;Use Daubechies D6 wavelets instead of D4
-PREFERENCES_DAUB_TOOLTIP;The Noise Reduction and Wavelet Levels tools use a Debauchies mother wavelet. If you choose D6 instead of D4 you increase the number of orthogonal Daubechies coefficients and probably increase quality of small-scale levels. There is no memory or processing time difference between the two.
PREFERENCES_DIRDARKFRAMES;Dark-frames directory
PREFERENCES_DIRECTORIES;Directories
PREFERENCES_DIRHOME;Home directory
@@ -1207,7 +1201,6 @@ PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup...
PREFERENCES_DIRSOFTWARE;Installation directory
PREFERENCES_EDITORCMDLINE;Custom command line
PREFERENCES_EDITORLAYOUT;Editor Layout
-PREFERENCES_EXPAUT;Expert
PREFERENCES_EXTERNALEDITOR;External Editor
PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options
PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display)
@@ -1253,18 +1246,13 @@ PREFERENCES_INTENT_SATURATION;Saturation
PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Show embedded JPEG thumbnail if raw is unedited
PREFERENCES_LANG;Language
PREFERENCES_LANGAUTODETECT;Use system language
-PREFERENCES_LEVAUTDN;Denoising level
-PREFERENCES_LEVDN;Cell size
-PREFERENCES_LISS;Auto multi-zone smoothing
PREFERENCES_LOCAL;Local adjustements
PREFERENCES_LOCALAJUST_LABEL;Local adjustements Quality Method
PREFERENCES_LOCALAJUST_STD;Standard
PREFERENCES_LOCALAJUST_ENH;Enhanced
PREFERENCES_LOCALAJUST_ENHDEN;Enhanced + chroma denoise
PREFERENCES_LOCALSHOWDELIMSPOT;Show spot delimiters
-PREFERENCES_MAX;Maxi (Tile)
PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders
-PREFERENCES_MED;Medium (Tile/2)
PREFERENCES_MENUGROUPEXTPROGS;Group "Open with"
PREFERENCES_MENUGROUPFILEOPERATIONS;Group "File operations"
PREFERENCES_MENUGROUPLABEL;Group "Color label"
@@ -1272,7 +1260,6 @@ PREFERENCES_MENUGROUPPROFILEOPERATIONS;Group "Processing profile operations"
PREFERENCES_MENUGROUPRANK;Group "Rank"
PREFERENCES_MENUOPTIONS;Context Menu Options
PREFERENCES_METADATA;Metadata
-PREFERENCES_MIN;Mini (100x115)
PREFERENCES_MIP;Mip Profiles
PREFERENCES_MIP_LABEL;Mip profiles:
PREFERENCES_MIP_OPT;Mip files in cache
@@ -1286,7 +1273,6 @@ PREFERENCES_MULTITAB;Multiple Editor Tabs Mode
PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode
PREFERENCES_NAVGUIDEBRUSH;Navigator guide color
PREFERENCES_NAVIGATIONFRAME;Navigation
-PREFERENCES_NOISE;Noise Reduction
PREFERENCES_OUTDIR;Output Directory
PREFERENCES_OUTDIRFOLDER;Save to folder
PREFERENCES_OUTDIRFOLDERHINT;Save images to the selected folder.
@@ -1302,6 +1288,8 @@ PREFERENCES_PARSEDEXTADDHINT;Add entered extension to the list.
PREFERENCES_PARSEDEXTDELHINT;Delete selected extension from the list.
PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list.
PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list.
+PREFERENCES_PERFORMANCE_THREADS;Threads
+PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic)
PREFERENCES_PREVDEMO;Preview Demosaic Method
PREFERENCES_PREVDEMO_FAST;Fast
PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom:
@@ -1322,8 +1310,6 @@ PREFERENCES_PRTPROFILE;Color profile
PREFERENCES_PSPATH;Adobe Photoshop installation directory
PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset
PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3".
-PREFERENCES_RGBDTL_LABEL;Max number of threads for Noise Reduction and Wavelet Levels
-PREFERENCES_RGBDTL_TOOLTIP;Leave the setting at "0" to automatically use as many threads as possible. The more threads run in parallel, the faster the computation. Refer to RawPedia for memory requirements.
PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now
PREFERENCES_SELECTFONT;Select main font
PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font
@@ -1338,41 +1324,31 @@ PREFERENCES_SHOWDATETIME;Show date and time
PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar
PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation
PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows
-PREFERENCES_SIMPLAUT;Tool mode
PREFERENCES_SINGLETAB;Single Editor Tab Mode
PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs
-PREFERENCES_SMA;Small (250x287)
PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done
PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc.
PREFERENCES_SND_LNGEDITPROCDONE;Editor processing done
PREFERENCES_SND_THRESHOLDSECS;After seconds
PREFERENCES_STARTUPIMDIR;Image Directory at Startup
-PREFERENCES_STDAUT;Standard
PREFERENCES_TAB_BROWSER;File Browser
PREFERENCES_TAB_COLORMGR;Color Management
PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules
PREFERENCES_TAB_GENERAL;General
PREFERENCES_TAB_IMPROC;Image Processing
-PREFERENCES_TAB_PERFORMANCE;Performance & Quality
+PREFERENCES_TAB_PERFORMANCE;Performance
PREFERENCES_TAB_SOUND;Sounds
PREFERENCES_THEME;Theme
PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
-PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
+PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise
-PREFERENCES_TIMAX;High
-PREFERENCES_TINB;Number of tiles
-PREFERENCES_TISTD;Standard
PREFERENCES_TP_LABEL;Tool panel:
PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text
PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar
PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file
PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles
PREFERENCES_VIEW;Output device's white balance (monitor, TV, projector, viewing, etc.)
-PREFERENCES_WAVLEV;Increase wavelet level in quality 'high'
-PREFERENCES_WLONE;One level
-PREFERENCES_WLTWO;Two levels
-PREFERENCES_WLZER;No
PREFERENCES_WORKFLOW;Layout
PROFILEPANEL_COPYPPASTE;Parameters to copy
PROFILEPANEL_GLOBALPROFILES;Bundled profiles
@@ -1422,6 +1398,7 @@ SAMPLEFORMAT_32;24-bit floating-point
SAMPLEFORMAT_64;32-bit floating-point
SAVEDLG_AUTOSUFFIX;Automatically add a suffix if the file already exists
SAVEDLG_FILEFORMAT;File format
+SAVEDLG_FILEFORMAT_FLOAT; floating-point
SAVEDLG_FORCEFORMATOPTS;Force saving options
SAVEDLG_JPEGQUAL;JPEG quality
SAVEDLG_PUTTOQUEUE;Put into processing queue
@@ -2063,6 +2040,8 @@ TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by o
TP_PRSHARPENING_LABEL;Post-Resize Sharpening
TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions.
TP_RAWCACORR_AUTO;Auto-correction
+TP_RAWCACORR_AUTOIT;Iterations
+TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift
TP_RAWCACORR_CABLUE;Blue
TP_RAWCACORR_CARED;Red
TP_RAWCACORR_CASTR;Strength
@@ -2176,7 +2155,7 @@ TP_RETINEX_FREEGAMMA;Free gamma
TP_RETINEX_GAIN;Gain
TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
TP_RETINEX_GAINTRANSMISSION;Gain transmission
-TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
+TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain.
TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram.
TP_RETINEX_GAMMA;Gamma
TP_RETINEX_GAMMA_FREE;Free
diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css
index c4179c78a..af0173441 100644
--- a/rtdata/themes/TooWaBlue-GTK3-20_.css
+++ b/rtdata/themes/TooWaBlue-GTK3-20_.css
@@ -1,8 +1,8 @@
/*
This file is part of RawTherapee.
- Copyright (c) 2016-2017 TooWaBoo
- Version 2.71
+ Copyright (c) 2016-2018 TooWaBoo
+ Version 2.74
RawTherapee is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -79,7 +79,8 @@
#EditorTopPanel button:not(.narrowbutton) image,
#IopsPanel button:not(.Right) image,
#ProfilePanel button image,
-#MainNotebook > header :not(#CloseButton) > image {
+#MainNotebook > stack > :nth-child(2) > box:nth-child(3) image,
+#MainNotebook > header button:not(#CloseButton) image {
-gtk-icon-transform: scale(calc(22/24));
}
@@ -98,9 +99,11 @@
window.background {
background-color: @bg-light-grey;
}
+/* Single Window */
window > box {
- padding: 0.41667em;
+ padding: 0.4167em;
}
+/**/
dialog {
background-color: @bg-grey;
border-radius: 0;
@@ -110,7 +113,7 @@ dialog {
-GtkDialog-action-area-border: 0;
}
dialog > box {
- padding: 0.66667em;
+ padding: 0.6667em;
}
messagedialog {
background-color: @bg-light-grey;
@@ -118,8 +121,8 @@ messagedialog {
}
tooltip {
background-color: @bg-tooltip;
- border: 0.08334em solid @border-tooltip;
- border-radius: 0.33334em;
+ border: 0.0834em solid @border-tooltip;
+ border-radius: 0.3334em;
padding: 0;
margin: 0;
box-shadow: none;
@@ -161,7 +164,7 @@ frame {
#BatchQueueButtonsMainContainer frame,
#MyExpander frame,
dialog frame {
- margin: 0.16667em 0.5em;
+ margin: 0.1667em 0.5em;
}
/* affects selection list*/
entry > window > frame,
@@ -189,7 +192,7 @@ frame > border {
dialog frame > border {
padding: 0.5em;
border-radius: 0;
- border: 0.08334em solid @border-color;
+ border: 0.0834em solid @border-color;
background-color: transparent;
margin: 0 -0.5em;
}
@@ -210,18 +213,18 @@ filechooser > frame > border {
#ToolPanelNotebook frame > label,
dialog frame > label {
margin: 0;
- padding: 0.16667em 0.5em;
+ padding: 0.1667em 0.5em;
}
#BatchQueueButtonsMainContainer frame > border {
- margin-bottom: 0.83334em;
+ margin-bottom: 0.8334em;
}
#BatchQueueButtonsMainContainer frame:nth-child(3) > border {
- padding-left: 0.91667em;
+ padding-left: 0.9167em;
}
frame > label {
margin: 0;
- padding: 0.41667em 0 0.33334em 0.08334em;
+ padding: 0.4167em 0 0.3334em 0.0834em;
color: @headline-frame;
}
frame > checkbutton label{
@@ -233,7 +236,7 @@ frame > checkbutton label{
textview.view, treeview.view {
background-color: @bg-dark-grey;
border-color: @view-grid-border;
- padding: 0.16667em;
+ padding: 0.1667em;
margin: 0;
}
textview:hover, treeview:hover {
@@ -246,12 +249,12 @@ textview:selected, treeview:selected {
}
#RightNotebook > stack > :nth-child(1) treeview {
- border: 0.08334em solid @bg-dark-grey;
+ border: 0.0834em solid @bg-dark-grey;
border-bottom: none;
}
#PlacesPaned > box:nth-child(1) treeview {
- padding: 0.08334em 0 0.08334em 0.416667em;
+ padding: 0.0834em 0 0.0834em 0.41667em;
-gtk-icon-style: symbolic;
}
@@ -259,14 +262,14 @@ textview:selected, treeview:selected {
margin-top: 0.25em;
}
#RightNotebook #HistoryPanel {
- margin-top: 0.33334em;
+ margin-top: 0.3334em;
}
#HistoryPanel > border {
margin-top: 1.75em;
}
#HistoryPanel > label {
margin: 0 0 -1.5em 0;
- padding: 0 0 0 0.08334em;
+ padding: 0 0 0 0.0834em;
}
#Snapshots > border {
@@ -284,7 +287,7 @@ textview:selected, treeview:selected {
min-width: 24px;
}
#Snapshots > box > :nth-child(1) {
- margin-bottom: 0.41667em;
+ margin-bottom: 0.4167em;
}
#PlacesPaned > box:nth-child(3) > box:nth-child(2),
@@ -292,12 +295,12 @@ textview:selected, treeview:selected {
#HistoryPanel > border,
#Snapshots > box > :nth-child(1) {
background-color: @bg-dark-grey;
- border: 0.08334em solid @bg-dark-grey;
+ border: 0.0834em solid @bg-dark-grey;
}
/*Corrects the space of the snapshot view to the paned separator*/
#Snapshots {
- margin-top: 0.16667em;
+ margin-top: 0.1667em;
}
/**/
@@ -310,7 +313,7 @@ textview:selected, treeview:selected {
background-color: @bg-dark-grey;
}
#Navigator box label {
- padding: 0.16667em 0;
+ padding: 0.1667em 0;
}
#Navigator > label:nth-child(2) {
margin-top: 0.5em;
@@ -333,11 +336,11 @@ filechooser box {
}
filechooser > box > paned > box {
- border: 0.08334em solid @bg-dark-grey;
+ border: 0.0834em solid @bg-dark-grey;
background-color: @bg-dark-grey;
}
filechooser placessidebar {
- padding: 0 0.08334em;
+ padding: 0 0.0834em;
background-color: @bg-dark-grey;
}
@@ -351,7 +354,7 @@ filechooser list {
filechooser list row {
margin: 0;
padding: 0;
- min-height: calc(1.41667em + 8px);
+ min-height: calc(1.4166em + 8px);
}
filechooser list row label{
margin: 0;
@@ -370,7 +373,7 @@ filechooser list row:selected {
/*** Histogram *********************************************************************************/
#HistogramPanel {
min-height: 0;
- margin: -2px 0;
+ margin: 0;
padding: 0;
border: none;
background-color: transparent;
@@ -378,7 +381,7 @@ filechooser list row:selected {
#HistogramPanel > :nth-child(2) {
border: none;
- border-left: 0.08334em solid @bg-light-grey;
+ border-left: 0.0834em solid @bg-light-grey;
background-color: @bg-dark-grey;
}
@@ -389,7 +392,7 @@ filechooser list row:selected {
#EditorLeftPaned #HistogramPanel > :nth-child(1) {
border: none;
- border-right: 0.08334em solid @bg-light-grey;
+ border-right: 0.0834em solid @bg-light-grey;
background-color: @bg-dark-grey;
}
@@ -400,28 +403,27 @@ filechooser list row:selected {
#HistogramArea,
#HistogramRGBArea {
- border: 0.08334em solid @bg-dark-grey;
+ border: 0.0834em solid @bg-dark-grey;
background-color: @bg-dark-grey;
}
-#fullButton,
#histButton {
padding: 0;
margin: 0;
- border:none;
+ border: none;
background-color: @bg-dark-grey;
background-image: none;
box-shadow: none;
- min-height: 1.5em;
- min-width: calc(1.33334em + 6px);
+ min-height: 1.4166em;
+ min-width: calc(1.3333em + 6px);
border-radius: 0;
}
#histButton:first-child {
- margin-top: 0.16667em;
+ margin-top: 3px;
}
#histButton:last-child {
- margin-bottom: 0.16667em;
+ margin-bottom: 3px;
}
#HistogramPanel image {
@@ -434,7 +436,7 @@ separator {
background-color: transparent;
}
grid separator.horizontal, box separator.horizontal {
- margin: 0.16667em 0;
+ margin: 0.1667em 0;
padding: 0;
}
grid separator.vertical, box separator.vertical {
@@ -455,11 +457,10 @@ popover separator:not(:only-child) {
paned.horizontal > separator {
background-color: transparent;
background-image: none;
- min-width: 0.41667em;
- border-left: 0.25em solid @bg-light-grey;
- border-right: 0.25em solid @bg-light-grey;
+ min-width: 0.4166em;
+ border: none;
margin: 0 -0.25em;
- padding: 0;
+ padding: 0 0.25em;
}
paned.vertical > separator {
@@ -474,15 +475,13 @@ paned.vertical > separator {
/*Filmstrip*/
#EditorRightPaned > paned.horizontal > paned.vertical > separator {
margin-bottom: 0;
-}
-#EditorRightPaned > paned.horizontal:nth-child(1) > paned.vertical:nth-child(1) > separator {
- margin-bottom: -0.5em;
+ min-height: 0.4167em;
}
dialog paned.horizontal > separator {
background-color: @bg-grey;
border-color: @bg-grey;
- min-width: 0.33334em;
+ min-width: 0.3333em;
}
menu separator {
@@ -500,13 +499,13 @@ menu separator {
#IopsPanel separator,
#FileBrowser separator {
background-color: shade(@bg-light-grey,.75);
- margin-top: 0.16667em;
- margin-bottom: 0.16667em;
+ margin-top: 0.1667em;
+ margin-bottom: 0.1667em;
}
#MyExpander separator {
background-color: @view-grid-border;
- margin: 0.33334em 0;
+ margin: 0.3334em 0;
}
#MyFileChooserButton separator {
background-color: transparent;
@@ -519,24 +518,24 @@ menu separator {
/*** PartialPaste ******************************************************************************/
#PartialPaste {
- border-bottom: 0.08334em solid @border-color;
- border-top: 0.08334em solid @border-color;
+ border-bottom: 0.0834em solid @border-color;
+ border-top: 0.0834em solid @border-color;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
#PartialPaste separator.vertical {
- margin: 0 0.33334em;
+ margin: 0 0.3334em;
padding: 0;
}
#PartialPaste separator { /* Struggles with #PartialPasteHeaderSep */
background-color: @border-color;
- margin: 0.16667em 0.5em 0.16667em 1.16667em;
+ margin: 0.1667em 0.5em 0.1667em 1.1667em;
}
#PartialPasteHeaderSep.horizontal {
background-color: rgb(192,192,192);
- margin: 0.16667em 0.5em;
+ margin: 0.1667em 0.5em;
}
#PartialPasteHeader label {
@@ -571,10 +570,10 @@ scrollbar:not(.overlay-indicator) {
background-color: rgba(0,0,0,.30);
}
scrollbar:not(.overlay-indicator).horizontal {
- border-width: 0 0.08334em 0.08334em 0.08334em;
+ border-width: 0 0.0834em 0.0834em 0.0834em;
}
scrollbar:not(.overlay-indicator).vertical {
- border-width: 0.08334em 0.08334em 0.08334em 0;
+ border-width: 0.0834em 0.0834em 0.0834em 0;
}
scrollbar:not(.overlay-indicator) slider {
background-color: shade(@text-color, .9);
@@ -595,9 +594,9 @@ scrollbar.horizontal.hovering.fine-tune slider {
scrollbar.horizontal.overlay-indicator:not(.hovering) slider {
min-width: 2em;
min-height: 0.25em;
- border-width: 0.08334em;
+ border-width: 0.0834em;
border-radius: 0.25em;
- margin: 0 0.16667em;
+ margin: 0 0.1667em;
}
scrollbar:not(.overlay-indicator).vertical slider,
@@ -615,9 +614,9 @@ scrollbar.vertical.hovering.fine-tune slider {
scrollbar.vertical.overlay-indicator:not(.hovering) slider {
min-width: 0.25em;
min-height: 2em;
- border-width: 0.08334em;
+ border-width: 0.0834em;
border-radius: 0.5em;
- margin: 0.16667em 0;
+ margin: 0.1667em 0;
}
scrollbar:not(.overlay-indicator) slider:hover,
@@ -635,7 +634,7 @@ scrollbar:not(.overlay-indicator):hover {
/*** Scale**************************************************************************************/
scale {
padding: 0;
- min-height: 1.83334em;
+ min-height: 1.8333em;
margin: 0 0.25em;
}
@@ -643,10 +642,10 @@ scale slider {
/* Slider size is min-width x min-height; margin have to be half of those values, but negative */
min-width: 1em;
min-height: 1em;
- margin: calc(-0.33334em - 1px);
- border-radius: 0.83334em;
+ margin: calc(-0.166em - 4px);
+ border-radius: 0.8334em;
background-image: linear-gradient(to bottom, shade (@accent-color4,1.15), shade (@accent-color4,.85));
- border: 0.08334em solid @bg-button-border;
+ border: 0.0834em solid @bg-button-border;
box-shadow: none;
}
scale slider:hover {
@@ -656,14 +655,14 @@ scale slider:hover {
scale trough {
margin: 0.5em; /* has to be half of "scale slider / min-width min-height*/
background-color: @bg-scale-entry;
- border: 0.08334em solid @bg-button-border;
- box-shadow: inset 0 0.08334em rgba(255, 255, 255, 0.11), 0 0.08334em rgba(242, 242, 242, 0.11);
+ border: 0.0834em solid @bg-button-border;
+ box-shadow: inset 0 0.0834em rgba(255, 255, 255, 0.11), 0 0.0834em rgba(242, 242, 242, 0.11);
border-radius: 0.5em;
}
scale:not(:disabled) trough highlight {
background-color: @accent-color2;
- border: 0.08334em solid @bg-dark-grey;
- box-shadow: inset 0 0.08334em shade(@accent-color2, 1.25);
+ border: 0.0834em solid @bg-dark-grey;
+ box-shadow: inset 0 0.1667em shade(@accent-color2, 1.25);
border-radius: 0.5em;
}
@@ -712,14 +711,14 @@ progressbar.vertical trough progress {
}
progressbar.horizontal trough {
- min-height: 0.41667em;
+ min-height: 0.4166em;
background-color: transparent;
border: none;
border-radius: 0.5em;
- margin-top: 0.58334em;
+ margin-top: 0.5834em;
}
progressbar.horizontal trough progress {
- min-height: 0.41667em;
+ min-height: 0.4166em;
margin: -1px 0;
background-color: @accent-color2;
border: none;
@@ -729,7 +728,7 @@ progressbar.horizontal trough progress {
#IopsPanel progressbar.horizontal trough {
min-height: 0.5em;
background-color: @bg-scale-entry;
- border: 0.08334em solid @bg-button-border;
+ border: 0.0834em solid @bg-button-border;
margin-top: 0.25em;
}
#IopsPanel progressbar.horizontal trough progress {
@@ -758,36 +757,36 @@ notebook stack {
}
notebook header {
background-color: @bg-dark-grey;
- padding: 0 0.41667em;
+ padding: 0 0.4167em;
}
notebook header.left {
- padding: 0.41667em 0;
+ padding: 0.4167em 0;
}
notebook tabs {
background-color: transparent;
}
notebook header tab {
background-color: transparent;
- margin: 0.41667em 0.25em;
- padding: 0 0.33334em;
+ margin: 0.4167em 0.25em;
+ padding: 0 0.3334em;
}
notebook header.left tab {
- margin: 0.25em 0.41667em;
- padding: 0.33334em 0;
+ margin: 0.25em 0.4167em;
+ padding: 0.3334em 0;
}
notebook header tab > grid > image {
min-height: 2.5em;
min-width: 0;
- padding: 0 0.16667em 0 0;
+ padding: 0 0.25em 0 0;
margin: 0;
}
notebook header.left tab > grid > image {
min-height: 0;
min-width: 2.5em;
- padding: 0.16667em 0 0;
+ padding: 0.25em 0 0;
}
notebook header tab label {
- margin: 0.08334em;
+ margin: 0.0834em;
}
notebook header tab:hover label {
color: @headline-hl;
@@ -803,11 +802,11 @@ notebook > header > tabs > arrow {
border-radius: 0.2em;
min-width: 0;
min-height: 0;
- padding: 0 0.16667em;
+ padding: 0 0.1667em;
margin: 0.5em 0;
}
notebook > header.left > tabs > arrow {
- padding: 0.16667em 0;
+ padding: 0.1667em 0;
margin: 0 0.5em;
}
notebook > header > tabs > arrow:hover {
@@ -826,11 +825,11 @@ dialog notebook stack {
/*?win*/
#MainNotebook > stack {
- padding: 0.41667em;
+ padding: 0.4167em;
}
#MainNotebook > stack > :nth-child(2) > box:nth-child(3) {
- margin-top: 0.41667em;
+ margin-top: 0.4167em;
}
@@ -838,58 +837,58 @@ dialog notebook stack {
dialog.csd #PrefNotebook > header,
dialog.csd #AboutNotebook > header,
window.csd:not(.fullscreen) #MainNotebook > header.top {
- border-top: 0.083334em solid rgba(200,200,200,.18);
+ border-top: 0.08334em solid rgba(200,200,200,.18);
}
/**/
#ToolPanelNotebook > header tabs {
- margin-bottom: 0.33334em;
+ margin-bottom: 0.3334em;
}
#ToolPanelNotebook > header tab {
margin-left: 0;
margin-right: 0;
- padding: 0 0.33334em;
+ padding: 0 0.3334em;
}
#ToolPanelNotebook > header tab + tab {
margin-left: 0.25em;
}
#ToolPanelNotebook > header tab #TextOrIcon image{
- min-height: 2.33334em;
+ min-height: 2.3333em;
min-width: calc(2em + 4px);
padding: 2px 0;
margin: 0;
}
#RightNotebook > header {
- margin: 0 0.41667em 0 0;
+ margin: 0 0.4167em 0 0;
}
#RightNotebook > stack {
background-color: @bg-grey;
padding: 0;
}
#RightNotebook header tab label {
- padding-left: 0.16667em;
- padding-right: 0.16667em;
+ padding-left: 0.1667em;
+ padding-right: 0.1667em;
}
#RightNotebook > stack > :nth-child(1) > * > box,
#RightNotebook > stack > :nth-child(4) > * > box {
padding: 0.5em;
- border: 0.08334em solid @bg-entry-border;
+ border: 0.0834em solid @bg-entry-border;
}
#PrefNotebook header {
- margin: -0.66667em -0.66667em 0.33334em;
+ margin: -0.6667em -0.6667em 0.3334em;
}
#PrefNotebook header tab label {
- padding-top: 0.16667em;
- padding-bottom: 0.16667em;
+ padding-top: 0.1667em;
+ padding-bottom: 0.1667em;
}
#AboutNotebook header {
- margin: -0.66667em -0.66667em 0.66667em;
+ margin: -0.6667em -0.6667em 0.6667em;
}
#AboutNotebook stack text {
@@ -901,15 +900,15 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#MetaPanelNotebook header {
background-color: @bg-grey;
- padding: 0.33334em;
+ padding: 0.3334em;
margin: 0 0.5em 0;
}
#MetaPanelNotebook > header > tabs {
background-color: @bg-dark-grey;
- padding-left: 0.33334em;
+ padding-left: 0.3334em;
}
#MetaPanelNotebook > header tab label{
- margin: 0.08334em;
+ margin: 0.0834em;
}
#MetaPanelNotebook > stack > box {
@@ -917,11 +916,11 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
background-color: @bg-grey;
border-radius: 0;
border-top-style: none;
- padding: 0 0.33334em 0.25em;
+ padding: 0 0.3334em 0.25em;
margin: 0 0.5em -0.5em;
}
#MetaPanelNotebook > stack > box:nth-child(1) > scrolledwindow {
- margin: 0 0 0.33334em;
+ margin: 0 0 0.3334em;
padding: 0;
}
@@ -931,23 +930,23 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#MetaPanelNotebook separator {
background-color: @border-color;
- margin: 0.16667em 0;
+ margin: 0.1667em 0;
}
#MetaPanelNotebook entry, #MetaPanelNotebook button, #MetaPanelNotebook combobox button {
margin-top: 0;
margin-bottom: 0;
- min-height: 1.66667em;
- min-width: 0.83334em;
+ min-height: 1.6666em;
+ min-width: 0.8333em;
}
#MetaPanelNotebook entry {
- padding: 0 0.33334em;
+ padding: 0 0.3334em;
background-color: @bg-dark-grey;
margin: 0;
border-radius: 0;
}
#MetaPanelNotebook > stack > box:nth-child(1) > :nth-child(1) {
- border: 0.08334em solid @bg-dark-grey;
+ border: 0.0834em solid @bg-dark-grey;
}
#MetaPanelNotebook > stack > box:nth-child(2) > scrolledwindow scrolledwindow {
background-color: @bg-dark-grey;
@@ -955,13 +954,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
margin: 0;
}
#MetaPanelNotebook > stack > box:nth-child(2) .view {
- border: 0.08334em solid @bg-dark-grey;
- padding: 0.16667em;
+ border: 0.0834em solid @bg-dark-grey;
+ padding: 0.1667em;
margin: 0;
}
#MetaPanelNotebook textview.view {
background-color: @bg-dark-grey;
- padding: 0.08334em 0.33334em;
+ padding: 0.0834em 0.3334em;
margin: 0;
}
#MetaPanelNotebook text {
@@ -977,17 +976,17 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#MetaPanelNotebook combobox + button,
#MetaPanelNotebook combobox + button + button {
- margin-left: 0.16667em;
- min-width: 1.66667em;
+ margin-left: 0.1667em;
+ min-width: 1.6666em;
}
#MetaPanelNotebook > stack > box > grid > button {
- margin-top: 0.08334em;
- margin-bottom: 0.08334em;
- min-height: 2.33334em;
+ margin-top: 0.0834em;
+ margin-bottom: 0.0834em;
+ min-height: 2.1666em;
}
#MetaPanelNotebook label {
- padding: 0.08334em 0;
+ padding: 0.0834em 0;
}
/*** end ***************************************************************************************/
@@ -995,7 +994,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
/*** File Browser ******************************************************************************/
#FileCatalog {
background-color: @bg-image;
- border: 0.08334em solid @bg-dark-grey;
+ border: 0.0834em solid @bg-dark-grey;
}
#FileCatalog:selected {
background-color: @accent-color3;
@@ -1009,28 +1008,28 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#ToolBarPanelFileBrowser {
- margin: -2px -1px;
+ margin: 0.4167em -1px;
min-height: 0;
min-width: 0;
- padding: 0.41667em 0;
+ padding: 0;
}
#ToolBarPanelFileBrowser > box > button,
#ToolBarPanelFileBrowser > button {
- margin: 0 0.08334em;
+ margin: 0 0.0834em;
}
/* Filter */
#ToolBarPanelFileBrowser .smallbuttonbox {
- min-height: 1.16667em;
+ min-height: 1.0834em;
padding: 0;
margin: 0;
}
-#ToolBarPanelFileBrowser .smallbuttonbox:nth-child(1) {
- margin: 0 0 2px 0;
+#ToolBarPanelFileBrowser .smallbuttonbox:nth-child(2) {
+ margin: 1px 0 -1px 0;
}
#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton {
min-height: 0;
- min-width: 1.16667em;
+ min-width: 1.0834em;
padding: 0;
margin: 0 2px;
border: none;
@@ -1046,26 +1045,27 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
-gtk-icon-transform: scale(calc(14/16));
margin: -2px
}
+/**/
#ToolBarPanelFileBrowser entry + button.flat,
#FileBrowser entry + button.flat {
- min-height: 1.66667em;
- min-width: 1.66667em;
- margin: 0 0 0 -1.66667em;
+ min-height: 1.6666em;
+ min-width: 1.6666em;
+ margin: 0 0 0 -1.6667em;
border-radius: 0 0.2em 0.2em 0;
- border: 0.08334em solid transparent;
+ border: 0.0834em solid transparent;
padding: 0;
}
#ToolBarPanelFileBrowser entry,
#FileBrowser entry {
- min-height: 1.66667em;
+ min-height: 1.6666em;
min-width: 12em;
margin: 0 -2px 0 0;
- padding: 0 2em 0 0.33334em;
+ padding: 0 2em 0 0.3334em;
}
#ToolBarPanelFileBrowser label,
#FileBrowser label {
- margin: 0 0.33334em 0 0.5em;
+ margin: 0 0.3334em 0 0.5em;
}
/*** end ***************************************************************************************/
@@ -1076,21 +1076,21 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#BeforeAfterContainer {
background-color: @bg-grey;
- border: 0.08334em solid @bg-dark-grey;
+ border: 0.0834em solid @bg-dark-grey;
border-radius: 0;
padding: 0;
- margin: 0.41667em 0;
+ margin: -2px 0 0.4167em;
}
#BeforeAfterContainer > box:nth-child(2) > box:nth-child(2),
#BeforeAfterContainer > box:nth-child(1) > box:nth-child(2){
- border-top: 0.08334em solid @bg-dark-grey;
+ border-top: 0.0834em solid @bg-dark-grey;
}
#BeforeAfterContainer > box:nth-child(2){
- border-left: 0.08334em solid @bg-dark-grey;
+ border-left: 0.0834em solid @bg-dark-grey;
}
#BeforeAfterContainer label {
- min-height: 2.66667em;
+ min-height: 2.6666em;
padding: 0 0.5em;
}
/* Small Lock Button */
@@ -1108,15 +1108,25 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
/**/
-#EditorTopPanel {
- margin: -2px -2px;
+#EditorToolbarTop {
+ margin: -2px -2px 0.4167em;
padding: 0;
min-height: 0;
}
+/* Single Window */
+window > box > #EditorRightPaned > paned > paned > box {
+ margin-top: -2px;
+ padding: 0;
+}
+window > box > #EditorRightPaned > paned > paned > box > #EditorToolbarTop {
+ margin-top: 0;
+}
+/**/
+
#EditorTopPanel button {
- margin: 0 0.08334em;
- min-height: 2.33334em;
- min-width: 2.33334em;
+ margin: 0 0.0834em;
+ min-height: 2.1666em;
+ min-width: 2.1666em;
}
/* Removes margin from the last button. Otherwise the filmstrip will cut of the right border. */
#EditorTopPanel :last-child > button:last-child {
@@ -1124,7 +1134,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#EditorTopPanel button.narrowbutton {
- min-width: 1.05em;
+ min-width: 1em;
padding: 0;
}
@@ -1137,8 +1147,8 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
padding: 0 2px 0 3px;
}
#EditorZoomPanel button {
- margin-left: 0.08334em;
- margin-right: 0.08334em;
+ margin-left: 0.0834em;
+ margin-right: 0.0834em;
}
/*** end ***************************************************************************************/
@@ -1153,14 +1163,14 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
/**/
#MyExpander .drawingarea:not(.slider) {
- border: 0.08334em solid @bg-light-grey;
+ border: 0.0834em solid @bg-light-grey;
background-color: @bg-dark-grey;
}
#MyExpander .slider,
#MyExpander #CurveSHCSelector {
background-image: linear-gradient(to bottom, shade (@accent-color4,1.15), shade (@accent-color4,.85));
background-color: @accent-color4;
- border: 0.08334em solid rgb(15,15,15);
+ border: 0.0834em solid rgb(15,15,15);
}
#MyExpander .drawingarea:disabled {
background-color: shade(@bg-grey,.85);
@@ -1168,7 +1178,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
background-image: none;
}
#ThresholdAdjuster {
- margin: 0.08334em 0 0.16667em 0;
+ margin: 0.0834em 0 0.1667em 0;
}
#ToolPanelNotebook scrolledwindow viewport.frame {
@@ -1190,7 +1200,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
/* Sub-tool (MyExpander) */
#ExpanderBox2 > box, #ExpanderBox2 > grid {
background-color: transparent;
- border: 0.08334em solid @border-color;
+ border: 0.0834em solid @border-color;
border-radius: 0;
margin: 0;
padding: 0.5em;
@@ -1204,7 +1214,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#MyExpanderTitle label {
color: @headline-big;
padding: 0;
- margin: 0.08334em 0.25em 0 0.5em;
+ margin: 0.0834em 0.25em 0 0.5em;
}
#MyExpanderTitle:hover label {
@@ -1219,13 +1229,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
border: none;
padding: 0;
margin: 0;
- box-shadow: 0 0.25em 0.75em 0.08334em rgba(0, 0, 0, 0.50), 0 0 0 0.08334em @bg-dark-grey;
+ box-shadow: 0 0.25em 0.75em 0.0834em rgba(0, 0, 0, 0.50), 0 0 0 0.0834em @bg-dark-grey;
}
menu {
background-color: @bg-dark-grey;
- border: 0.08334em solid @accent-color;
- padding: 0.08334em;
+ border: 0.0834em solid @accent-color;
+ padding: 0.0834em;
margin: 0;
}
menu > .top,
@@ -1239,8 +1249,8 @@ menu > .bottom:hover {
}
menuitem {
- padding: 0 0.33334em;
- margin: 0.08334em;
+ padding: 0 0.3334em;
+ margin: 0.0834em;
min-height: 2em;
}
menuitem:hover {
@@ -1254,7 +1264,7 @@ menuitem:hover > * {
menu image {
min-height: 2em;
padding: 0;
- margin: 0 0.33334em 0 0;
+ margin: 0 0.3334em 0 0;
}
/*** Selection popup list (used in filechooser) ***/
@@ -1263,11 +1273,11 @@ entry > window > frame {
}
entry > window > frame > border {
background-color: @bg-dark-grey;
- padding: 0.08334em;
- border: 0.08334em solid @accent-color;
+ padding: 0.0834em;
+ border: 0.0834em solid @accent-color;
}
entry > window > frame > border {
- margin: 0.08334em;
+ margin: 0.0834em;
}
/* end */
@@ -1277,7 +1287,7 @@ entry > window > frame > border {
popover.background {
background-color: @bg-dark-grey;
- border: 0.08334em solid @accent-color;
+ border: 0.0834em solid @accent-color;
border-radius: 0;
padding: 0;
margin: 0;
@@ -1289,7 +1299,7 @@ popover.background > box {
}
popover.background modelbutton {
min-height: 2em;
- padding: 0 0.41667em;
+ padding: 0 0.4167em;
margin: 0;
border-radius: 0;
}
@@ -1306,24 +1316,24 @@ popover.background modelbutton:hover {
/*** Switch ***********************************************************************************/
switch {
- min-height: 2.33334em;
+ min-height: 2.1666em;
min-width: 11em;
margin: 0;
padding: 0;
border-radius: 0.2em;
background-image: none;
- box-shadow: inset 0.08334em 0.08334em rgba(0, 0, 0, 0.08), 0 0.08334em rgba(242, 242, 242, 0.1);
- border: 0.08334em solid @bg-entry-border;
+ box-shadow: inset 0.0834em 0.0834em rgba(0, 0, 0, 0.08), 0 0.0834em rgba(242, 242, 242, 0.1);
+ border: 0.0834em solid @bg-entry-border;
background-color: @bg-scale-entry;
margin-bottom: 0.5em;
}
switch slider {
- border: 0.08334em solid @bg-entry-border;
+ border: 0.0834em solid @bg-entry-border;
background-color: shade (@bg-light-grey, .85);
background-image: linear-gradient(to bottom, rgba(125,125,125,.4), rgba(60,60,60,.4));
- border: 0.08334em solid @bg-entry-border;
- box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.1);
+ border: 0.0834em solid @bg-entry-border;
+ box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.1);
border-radius: 0.2em 0 0 0.2em;
}
switch:checked slider{
@@ -1351,14 +1361,14 @@ switch:disabled:not(:checked) {
/*** Buttons ***********************************************************************************/
button {
- min-height: 2.33334em;
- min-width: 2.33334em;
+ min-height: 2.1666em;
+ min-width: 2.1666em;
margin: 0;
padding: 0; /* x */
border-radius: 0.2em;
- border: 0.08334em solid @bg-button-border;
+ border: 0.0834em solid @bg-button-border;
background-color: transparent;
- box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.1);
+ box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.1);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
}
button.flat {
@@ -1369,11 +1379,11 @@ button.text-button label {
}
#PrefNotebook > stack > :nth-child(5) combobox {
- /* margin: 0.16667em 0; */
+ /* margin: 0.1667em 0; */
margin: 2px 0;
}
#PrefNotebook > stack > :nth-child(2) #MyFileChooserButton {
- /* margin: 0.25em 0.33334em; */
+ /* margin: 0.25em 0.3334em; */
margin: 3px 5px;
}
@@ -1385,35 +1395,33 @@ filechooser button image,
#MainNotebook > header > grid > button,
button.flat {
- border: 0.08334em solid transparent;
+ border: 0.0834em solid transparent;
box-shadow: none;
background-image: none;
background-color: transparent;
}
/* Resetbutton */
-#MyExpander button.flat,
+#MyExpander button:last-child.flat,
+#MyExpander scale + button.flat,
dialog scale + button.flat,
-scale + button.flat,
-dialog entry + button.flat {
- min-height: 1.16667em;
- min-width: 1.66667em;
- margin: 0.08334em 0 0.08334em 0.16667em;
- padding: 0;
+#MainNotebook > stack > :nth-child(2) > box:nth-child(1) scale + button.flat,
+entry + button.flat {
+ min-height: 1.1666em;
+ min-width: 1.5em;
+ margin: 0.0834em 0 0.0834em 0.1667em;
+ padding: 0 0 0 0.1667em;
}
-dialog entry + button.flat {
- min-height: 1.66667em;
+dialog entry + button:last-child.flat {
+ min-height: 1.6666em;
}
-#MyExpander scale + button.flat {
- margin: 0 0 0 0.16667em;
+#MyExpander scale + button:last-child.flat,
+#MyExpander spinbutton + button:last-child.flat {
+ margin: 0 0 0 0.1667em;
}
-#MyExpander image + button.flat {
- margin: 0 0 0 0.41667em;
-}
-#MyExpander spinbutton + button.flat {
- margin: 0 0 0 0.16667em;
- padding-top: 0.08334em;
+#MyExpander image + button:last-child.flat {
+ margin: 0 0 0 0.25em;
}
/**/
@@ -1422,12 +1430,12 @@ dialog entry + button.flat {
#MyExpander button.flat:first-child {
min-height: 2em;
min-width: 2em;
- margin: 0.16667em 0.16667em 0 0;
+ margin: 0.1667em 0.1667em 0 0;
padding: 0;
}
#MyExpander button.flat + button.flat image,
#MyExpander button.flat:first-child image{
- -gtk-icon-transform: scale(calc(20/24));
+ -gtk-icon-transform: scale(calc(20/24));
margin: -2px;
}
/**/
@@ -1437,7 +1445,7 @@ dialog entry + button.flat {
button.flat:hover,
button:hover {
border-color: @bg-button-border;
- box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.1);
+ box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.1);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
background-color: @bg-button-hover;
}
@@ -1449,7 +1457,7 @@ button.flat:checked,
button:active,
button:checked {
border-color: @bg-button-border;
- box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.08);
+ box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.08);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
background-color: @bg-button-active;
}
@@ -1457,22 +1465,22 @@ button:checked {
/* Add space between connected buttons */
button.Right,
button.MiddleH {
- margin-left: 0.16667em;
- border: 0.08334em solid @bg-button-border;
+ margin-left: 0.1667em;
+ border: 0.0834em solid @bg-button-border;
}
/**/
/* Applies special styles in main notebook */
#ProfilePanel {
margin-bottom: -2px;
- padding-bottom: 0.41667em;
+ padding-bottom: 0.4167em;
}
#ProfilePanel > label {
- margin-bottom: 0.08334em;
+ margin-bottom: 0.0834em;
}
#ProfilePanel combobox {
- margin-left: 0.16667em;
- margin-right: 0.16667em;
+ margin-left: 0.1667em;
+ margin-right: 0.1667em;
}
#ProfilePanel button.Left {
margin-left: -2px;
@@ -1492,13 +1500,13 @@ button.MiddleH {
dialog button,
#MyExpander button,
#BatchQueueButtonsMainContainer button {
- min-height: 1.66667em;
+ min-height: 1.6666em;
min-width: 0;
padding: 0 0.375em;
- margin: 0.08334em 0;
+ margin: 0.0834em 0;
}
#MyExpander #MyFileChooserButton + button.image-button{
- min-width: 1.66667em;
+ min-width: 1.6666em;
padding: 0;
}
@@ -1512,10 +1520,10 @@ dialog button.combo,
margin-right: 0.25em;
}
combobox button cellview {
- padding: 0 0 0 0.16667em;
+ padding: 0 0 0 0.1667em;
}
combobox arrow {
- padding: 0 0.16667em 0 0;
+ padding: 0 0.1667em 0 0;
margin: 0;
}
#MetaPanelNotebook combobox arrow {
@@ -1539,17 +1547,17 @@ combobox arrow {
#MyExpander combobox + combobox,
#MyExpander button + label,
#MyExpander combobox + label {
- margin-left: 0.16667em;
+ margin-left: 0.1667em;
}
#MyExpander label + * > button:not(.flat).Left,
#MyExpander label + combobox:not(:first-child):not(:only-child),
#MyExpander label + button:not(.flat):not(spinbutton) {
- margin-left: 0.33334em;
+ margin-left: 0.3334em;
}
buttonbox:not(.dialog-action-area) button{
- margin: 0.08334em 0 0.33334em 0.16667em;
+ margin: 0.0834em 0 0.3334em 0.1667em;
}
#PrefNotebook buttonbox:not(.dialog-action-area) {
margin-right: -5px;
@@ -1568,13 +1576,13 @@ buttonbox:not(.dialog-action-area) button{
padding-right: 0;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
- min-width: 1.33334em;
+ min-width: 1.3333em;
}
#IopsPanel .image-combo button.Left,
#MyExpander .image-combo button.Left {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
- min-width: 2.33334em;
+ min-width: 2.1666em;
}
/**/
@@ -1587,7 +1595,7 @@ buttonbox:not(.dialog-action-area) button{
min-height: 2em;
min-width: 2em;
padding: 0;
- margin: 0 0 0.33334em;
+ margin: 0 0 0.3334em;
}
#MyExpander button:not(.image-button).independent:first-child:not(.flat):only-child image {
-gtk-icon-transform: scale(calc(20/24));
@@ -1601,18 +1609,18 @@ buttonbox:not(.dialog-action-area) button{
/**/
button.color {
- min-height: 1.16667em;
+ min-height: 1.1666em;
padding: 0.25em;
}
/* Save, Cancel, OK ... buttons */
.dialog-action-area button {
- min-height: 2.33334em;
- margin-top: 0.33334em;
+ min-height: 2.1666em;
+ margin-top: 0.3334em;
}
messagedialog .dialog-action-area button {
- margin: 0 0.66667em 0.66667em 0.66667em;
- min-height: 1.83334em;
+ margin: 0 0.6667em 0.6667em 0.6667em;
+ min-height: 1.8333em;
}
messagedialog .dialog-action-area button:not(:only-child):nth-child(1) {
margin-right: 0.25em;
@@ -1629,8 +1637,8 @@ window .view button {
background-image: none;
box-shadow: none;
min-height: 2em;
- min-width: 1.33334em;
- padding: 0 0.33334em;
+ min-width: 1.3333em;
+ padding: 0 0.3334em;
margin: 0;
}
dialog .view button.text-button label,
@@ -1639,10 +1647,10 @@ window .view button.text-button label {
}
window .view button {
border: none;
- border-bottom: 0.08334em solid @border-color;
+ border-bottom: 0.0834em solid @border-color;
}
dialog .view button {
- border: 0.08334em solid @border-color;
+ border: 0.0834em solid @border-color;
}
.view button:checked,
@@ -1688,7 +1696,7 @@ window .view header button,
}
.path-bar button label {
margin: 0;
- padding: 0 0.33334em;
+ padding: 0 0.3334em;
}
/**/
@@ -1696,12 +1704,12 @@ window .view header button,
popover button.text-button {
background-color: @bg-dark-grey;
background-image: none;
- border: 0.08334em solid @border-color;
+ border: 0.0834em solid @border-color;
box-shadow: none;
background-image: none;
- margin: 0.083334em 0;
- min-height: 1.66667em;
- padding: 0 0.66667em;
+ margin: 0.08334em 0;
+ min-height: 1.6666em;
+ padding: 0 0.6667em;
}
popover button.text-button label {
padding: 0;
@@ -1725,10 +1733,10 @@ popover button.text-button:active {
/* Titlebar & Notebook buttons */
#MainNotebook > header.top > grid > button {
- margin: 0 0 0 0.41667em;
+ margin: 0 0 0 0.4167em;
}
#MainNotebook > header.left > grid > button {
- margin: 0.41667em 0 0;
+ margin: 0.4167em 0 0;
}
headerbar button.titlebutton image {
@@ -1736,9 +1744,9 @@ headerbar button.titlebutton image {
margin: 0;
}
headerbar button.titlebutton {
- margin: 0 0 0 0.33334em;
+ margin: 0 0 0 0.3334em;
background-image: none;
- border: 0.08334em solid transparent;
+ border: 0.0834em solid transparent;
background-color: transparent;
box-shadow: none;
min-width: 1.55em;
@@ -1753,7 +1761,7 @@ messagedialog headerbar button.titlebutton {
#MainNotebook tab #CloseButton {
padding: 0;
- margin: 0.41667em -2px 0.5em 0.25em;
+ margin: 0.3334em -2px 0.5em 0.25em;
min-width: 1.5em;
min-height: 1.5em;
}
@@ -1761,14 +1769,14 @@ messagedialog headerbar button.titlebutton {
#MainNotebook tab #CloseButton:hover,
headerbar button.titlebutton:hover{
border-color: rgba(0,0,0,.8);
- box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.11);
+ box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.11);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
background-color: rgba(128, 128, 128,.20);
}
#MainNotebook > header > grid > button:active,
headerbar button.titlebutton:active{
border-color: rgba(0,0,0,.8);
- box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.15);
+ box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.15);
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
background-color: rgba(128, 128, 128,.40);
}
@@ -1776,13 +1784,13 @@ headerbar button.titlebutton:active{
headerbar button.titlebutton.close:hover{
border-color: rgba(0,0,0,.8);
background-image: linear-gradient(to bottom, rgb(180,0,0), rgb(160,0,0) 40%, rgb(130,0,0));
- box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.32);
+ box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.32);
}
#MainNotebook tab #CloseButton:active,
headerbar button.titlebutton.close:active{
border-color: rgba(0,0,0,.8);
background-image: linear-gradient(to bottom, rgb(215,0,0), rgb(185,0,0) 40%, rgb(150,0,0));
- box-shadow: inset 0 0.08334em rgba(242, 242, 242, 0.4);
+ box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.4);
}
/**/
@@ -1798,21 +1806,21 @@ radiobutton {
}
#PrefNotebook checkbox,
#PrefNotebook checkbutton {
- min-height: 1.6667em;
+ min-height: 1.6666em;
}
check,
radio {
- border: calc(0.083334em + 0.18px) solid @text-color;
+ border: calc(0.08334em + 0.18px) solid shade(@text-color, 0.95);
background-image: none;
background-color: transparent;
margin: 0;
padding: 0;
- min-height: 1.16667em;
- min-width: 1.16667em;
+ min-height: 1.1666em;
+ min-width: 1.1666em;
box-shadow: none;
background-repeat: no-repeat;
- color: @text-color;
+ color: shade(@text-color, 0.95);
}
radiobutton label,
checkbutton label {
@@ -1820,11 +1828,11 @@ checkbutton label {
padding: 0;
}
check {
- border-radius: 0.16667em;
+ border-radius: 0.1667em;
}
radio{
- border-radius: 1.16667em;
+ border-radius: 1.1667em;
}
check:disabled,
radio:disabled {
@@ -1837,7 +1845,7 @@ frame > checkbutton check{
#PartialPaste checkbutton:not(#PartialPasteHeader) {
min-height: 1.4em;
- margin-left: 1.16667em;
+ margin-left: 1.1667em;
}
#PartialPasteHeader {
min-height: 1.4em;
@@ -1845,7 +1853,7 @@ frame > checkbutton check{
}
#MyExpander button + checkbutton:last-child {
- margin-left: 0.33334em;
+ margin-left: 0.3334em;
}
/*** end ***************************************************************************************/
@@ -1853,44 +1861,44 @@ frame > checkbutton check{
/*** Entry & Spinbutton ************************************************************************/
#MyExpander entry,
entry {
- margin: 0.08334em 0;
- padding: 0 0.33334em;
- min-height: 1.66667em;
+ margin: 0.0834em 0;
+ padding: 0 0.3334em;
+ min-height: 1.6666em;
min-width: 0;
border-radius: 0.2em;
- box-shadow: inset 0.08334em 0.08334em rgba(0, 0, 0, 0.08), 0 0.08334em rgba(242, 242, 242, 0.1);
- border: 0.08334em solid @bg-entry-border;
+ box-shadow: inset 0.0834em 0.0834em rgba(0, 0, 0, 0.08), 0 0.0834em rgba(242, 242, 242, 0.1);
+ border: 0.0834em solid @bg-entry-border;
background-color: @bg-scale-entry;
}
spinbutton {
- margin: 0.08334em 0;
+ margin: 0.0834em 0;
padding: 0;
- min-height: 1.66667em;
+ min-height: 1.6666em;
min-width: 0;
border-radius: 0.2em;
background-color: @bg-scale-entry;
- border: 0.08334em solid @bg-entry-border;
- box-shadow: inset 0.08334em 0.08334em rgba(0, 0, 0, 0.08), 0 0.08334em rgba(242, 242, 242, 0.1);
+ border: 0.0834em solid @bg-entry-border;
+ box-shadow: inset 0.0834em 0.0834em rgba(0, 0, 0, 0.08), 0 0.0834em rgba(242, 242, 242, 0.1);
}
#MyExpander spinbutton {
- margin: 0.16667em 0;
+ margin: 0.1667em 0;
padding: 0;
- min-height: 1.33334em;
+ min-height: 1.3333em;
min-width: 0;
- border-top-left-radius: 1.83334em;
- border-bottom-left-radius: 1.83334em;
+ border-top-left-radius: 1.8334em;
+ border-bottom-left-radius: 1.8334em;
background-color: @bg-tb-spinbutton;
- border: 0.08334em solid @bg-button-border;
+ border: 0.0834em solid @bg-button-border;
color: @text-tbEntry;
- box-shadow: inset 0.08334em 0.08334em rgba(0, 0, 0, .12), 0 0.08334em rgba(255, 255, 255, 0.12);
+ box-shadow: inset 0.0834em 0.0834em rgba(0, 0, 0, .12), 0 0.0834em rgba(255, 255, 255, 0.12);
}
#MyExpander button + label + spinbutton {
margin: 0.25em 0; /* Needed for Reset & and Auto button height*/
}
#MyExpander checkbutton + label + spinbutton {
- margin: 0.33334em 0; /* Needed for Reset & and Auto checkbox button height*/
+ margin: 0.3334em 0; /* Needed for Reset & and Auto checkbox button height*/
}
#MyExpander image + spinbutton {
@@ -1903,7 +1911,7 @@ spinbutton button {
padding: 0;
margin: 0;
min-height: 0;
- min-width: 1.33334em;
+ min-width: 1.3333em;
background-image: none;
background-color: transparent;
border: none;
@@ -1912,7 +1920,7 @@ spinbutton button {
}
#MyExpander spinbutton entry,
spinbutton entry {
- padding: 0 0.33334em;
+ padding: 0 0.3334em;
margin: 0;
min-height: 0;
min-width: 0;
@@ -1921,7 +1929,7 @@ spinbutton entry {
background-color: transparent;
}
#MyExpander spinbutton entry {
- padding: 0 0.33334em 0 0.83334em;
+ padding: 0 0.3334em 0 0.8334em;
}
#BatchQueueButtonsMainContainer spinbutton button:hover,
@@ -1969,7 +1977,7 @@ entry:focus > selection {
.view entry {
background-color: @bg-dark-grey;
margin: 0 -2px;
- border: 0.08334em solid @accent-color;
+ border: 0.0834em solid @accent-color;
box-shadow: none;
}
/* end*/
@@ -1980,20 +1988,20 @@ entry:focus > selection {
:not(.popup):not(tooltip) > decoration {
background-color: @winHeaderbar;
background-image: none;
- border-radius: 0.41667em 0.41667em 0 0;
+ border-radius: 0.4167em 0.4167em 0 0;
border: none;
padding: 0;
- box-shadow: 0 0.25em 0.75em 0.08334em rgba(0, 0, 0, 0.5), 0 0 0 0.08334em @bg-dark-grey;
- margin: 0.83334em;
+ box-shadow: 0 0.25em 0.75em 0.0834em rgba(0, 0, 0, 0.5), 0 0 0 0.0834em @bg-dark-grey;
+ margin: 0.8334em;
}
headerbar {
background-color: shade(@winHeaderbar,1.12);
- box-shadow: inset 0 0.08334em rgba(200,200,200,.13);
+ box-shadow: inset 0 0.0834em rgba(200,200,200,.13);
background-image: linear-gradient(shade(@winHeaderbar,1.14), shade(@winHeaderbar,.86));
- border-bottom: 0.08334em solid @bg-dark-grey;
- border-radius: 0.41667em 0.41667em 0 0;
- min-height: 2.16667em;
- padding: 0.08334em 0.41667em 0;
+ border-bottom: 0.0834em solid @bg-dark-grey;
+ border-radius: 0.4167em 0.4167em 0 0;
+ min-height: 2.1666em;
+ padding: 0.0834em 0.4167em 0;
margin: 0;
}
messagedialog headerbar {
@@ -2012,7 +2020,7 @@ headerbar .title{
/* Window in background */
:not(.popup):not(tooltip) > decoration:backdrop {
- box-shadow: 0 0.25em 0.75em 0.08334em rgba(0, 0, 0, 0.3), 0 0 0 0.08334em @bg-dark-grey;
+ box-shadow: 0 0.25em 0.75em 0.0834em rgba(0, 0, 0, 0.3), 0 0 0 0.0834em @bg-dark-grey;
}
headerbar:backdrop {
box-shadow: none;
diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc
index a2f34584f..a27ee7998 100644
--- a/rtengine/CA_correct_RT.cc
+++ b/rtengine/CA_correct_RT.cc
@@ -1,11 +1,11 @@
////////////////////////////////////////////////////////////////
//
-// Chromatic Aberration Auto-correction
+// Chromatic Aberration correction on raw bayer cfa data
//
-// copyright (c) 2008-2010 Emil Martinec
+// copyright (c) 2008-2010 Emil Martinec
+// copyright (c) for improvements (speedups, iterated correction and avoid colour shift) 2018 Ingo Weyrich
//
-//
-// code dated: November 26, 2010
+// code dated: September 8, 2018
//
// CA_correct_RT.cc is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -14,19 +14,20 @@
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
////////////////////////////////////////////////////////////////
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#include "rtengine.h"
#include "rawimagesource.h"
#include "rt_math.h"
+#include "gauss.h"
#include "median.h"
+//#define BENCHMARK
#include "StopWatch.h"
namespace {
@@ -49,22 +50,22 @@ bool LinEqSolve(int nDim, double* pfMatr, double* pfVect, double* pfSolution)
int i, j, k;
- for(k = 0; k < (nDim - 1); k++) { // base row of matrix
+ for (k = 0; k < (nDim - 1); k++) { // base row of matrix
// search of line with max element
- double fMaxElem = fabs( pfMatr[k * nDim + k] );
+ double fMaxElem = fabs(pfMatr[k * nDim + k]);
int m = k;
for (i = k + 1; i < nDim; i++) {
- if(fMaxElem < fabs(pfMatr[i * nDim + k]) ) {
+ if (fMaxElem < fabs(pfMatr[i * nDim + k])) {
fMaxElem = pfMatr[i * nDim + k];
m = i;
}
}
// permutation of base line (index k) and max element line(index m)
- if(m != k) {
- for(i = k; i < nDim; i++) {
- fAcc = pfMatr[k * nDim + i];
+ if (m != k) {
+ for (i = k; i < nDim; i++) {
+ fAcc = pfMatr[k * nDim + i];
pfMatr[k * nDim + i] = pfMatr[m * nDim + i];
pfMatr[m * nDim + i] = fAcc;
}
@@ -74,16 +75,16 @@ bool LinEqSolve(int nDim, double* pfMatr, double* pfVect, double* pfSolution)
pfVect[m] = fAcc;
}
- if( pfMatr[k * nDim + k] == 0.) {
+ if (pfMatr[k * nDim + k] == 0.) {
//linear system has no solution
return false; // needs improvement !!!
}
// triangulation of matrix with coefficients
- for(j = (k + 1); j < nDim; j++) { // current row of matrix
+ for (j = (k + 1); j < nDim; j++) { // current row of matrix
fAcc = - pfMatr[j * nDim + k] / pfMatr[k * nDim + k];
- for(i = k; i < nDim; i++) {
+ for (i = k; i < nDim; i++) {
pfMatr[j * nDim + i] = pfMatr[j * nDim + i] + fAcc * pfMatr[k * nDim + i];
}
@@ -91,10 +92,10 @@ bool LinEqSolve(int nDim, double* pfMatr, double* pfVect, double* pfSolution)
}
}
- for(k = (nDim - 1); k >= 0; k--) {
+ for (k = (nDim - 1); k >= 0; k--) {
pfSolution[k] = pfVect[k];
- for(i = (k + 1); i < nDim; i++) {
+ for (i = (k + 1); i < nDim; i++) {
pfSolution[k] -= (pfMatr[k * nDim + i] * pfSolution[i]);
}
@@ -104,32 +105,61 @@ bool LinEqSolve(int nDim, double* pfMatr, double* pfVect, double* pfSolution)
return true;
}
//end of linear equation solver
-//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
}
using namespace std;
using namespace rtengine;
-float* RawImageSource::CA_correct_RT(const bool autoCA, const double cared, const double cablue, const double caautostrength, array2D &rawData, double *fitParamsTransfer, bool fitParamsIn, bool fitParamsOut, float *buffer, bool freeBuffer)
+float* RawImageSource::CA_correct_RT(
+ bool autoCA,
+ size_t autoIterations,
+ double cared,
+ double cablue,
+ bool avoidColourshift,
+ const array2D &rawData,
+ double* fitParamsTransfer,
+ bool fitParamsIn,
+ bool fitParamsOut,
+ float* buffer,
+ bool freeBuffer
+)
{
+ BENCHFUN
// multithreaded and vectorized by Ingo Weyrich
constexpr int ts = 128;
constexpr int tsh = ts / 2;
- //shifts to location of vertical and diagonal neighbors
+ //shifts to location of vertical and diagonal neighbours
constexpr int v1 = ts, v2 = 2 * ts, v3 = 3 * ts, v4 = 4 * ts; //, p1=-ts+1, p2=-2*ts+2, p3=-3*ts+3, m1=ts+1, m2=2*ts+2, m3=3*ts+3;
// Test for RGB cfa
- for(int i = 0; i < 2; i++)
- for(int j = 0; j < 2; j++)
- if(FC(i, j) == 3) {
- printf("CA correction supports only RGB Colour filter arrays\n");
+ for (int i = 0; i < 2; i++) {
+ for (int j = 0; j < 2; j++) {
+ if (FC(i, j) == 3) {
+ std::cout << "CA correction supports only RGB Colour filter arrays" << std::endl;
return buffer;
}
+ }
+ }
- volatile double progress = 0.0;
+ array2D* redFactor = nullptr;
+ array2D* blueFactor = nullptr;
+ array2D* oldraw = nullptr;
+ if (avoidColourshift) {
+ redFactor = new array2D((W+1)/2, (H+1)/2);
+ blueFactor = new array2D((W+1)/2, (H+1)/2);
+ oldraw = new array2D((W + 1) / 2, H);
+ // copy raw values before ca correction
+ #pragma omp parallel for
+ for (int i = 0; i < H; ++i) {
+ for (int j = FC(i, 0) & 1; j < W; j += 2) {
+ (*oldraw)[i][j / 2] = rawData[i][j];
+ }
+ }
+ }
- if(plistener) {
+ double progress = 0.0;
+
+ if (plistener) {
plistener->setProgress (progress);
}
@@ -147,1064 +177,1153 @@ float* RawImageSource::CA_correct_RT(const bool autoCA, const double cared, cons
if (!buffer) {
buffer = static_cast(malloc ((height * width + vblsz * hblsz * (2 * 2 + 1)) * sizeof(float)));
}
- float *Gtmp = buffer;
- float *RawDataTmp = buffer + (height * width) / 2;
+ float* Gtmp = buffer;
+ float* RawDataTmp = buffer + (height * width) / 2;
//block CA shift values and weight assigned to block
- float *const blockwt = buffer + (height * width);
+ float* const blockwt = buffer + (height * width);
memset(blockwt, 0, vblsz * hblsz * (2 * 2 + 1) * sizeof(float));
float (*blockshifts)[2][2] = (float (*)[2][2])(blockwt + vblsz * hblsz);
- float blockave[2][2] = {{0, 0}, {0, 0}}, blocksqave[2][2] = {{0, 0}, {0, 0}}, blockdenom[2][2] = {{0, 0}, {0, 0}}, blockvar[2][2];
-
// Because we can't break parallel processing, we need a switch do handle the errors
bool processpasstwo = true;
-
double fitparams[2][2][16];
- const bool fitParamsSet = fitParamsTransfer && fitParamsIn;
- if(autoCA && fitParamsSet) {
+
+ const size_t iterations =
+ autoCA
+ ? std::max(autoIterations, 1)
+ : 1;
+
+ const bool fitParamsSet = fitParamsTransfer && fitParamsIn && iterations < 2;
+ if (autoCA && fitParamsSet) {
// use stored parameters
int index = 0;
- for(int c = 0; c < 2; ++c) {
- for(int d = 0; d < 2; ++d) {
- for(int e = 0; e < 16; ++e) {
+ for (int c = 0; c < 2; ++c) {
+ for (int d = 0; d < 2; ++d) {
+ for (int e = 0; e < 16; ++e) {
fitparams[c][d][e] = fitParamsTransfer[index++];
}
}
}
}
- //order of 2d polynomial fit (polyord), and numpar=polyord^2
- int polyord = 4, numpar = 16;
- constexpr float eps = 1e-5f, eps2 = 1e-10f; //tolerance to avoid dividing by zero
+ for (size_t it = 0; it < iterations && processpasstwo; ++it) {
+ float blockave[2][2] = {};
+ float blocksqave[2][2] = {};
+ float blockdenom[2][2] = {};
+ float blockvar[2][2];
- #pragma omp parallel
- {
- int progresscounter = 0;
+ //order of 2d polynomial fit (polyord), and numpar=polyord^2
+ int polyord = 4, numpar = 16;
- //direction of the CA shift in a tile
- int GRBdir[2][3];
+ constexpr float eps = 1e-5f, eps2 = 1e-10f; //tolerance to avoid dividing by zero
- int shifthfloor[3], shiftvfloor[3], shifthceil[3], shiftvceil[3];
+ #pragma omp parallel
+ {
+ int progresscounter = 0;
- //polynomial fit coefficients
- //residual CA shift amount within a plaquette
- float shifthfrac[3], shiftvfrac[3];
+ //direction of the CA shift in a tile
+ int GRBdir[2][3];
- // assign working space
- constexpr int buffersize = sizeof(float) * ts * ts + 8 * sizeof(float) * ts * tsh + 8 * 64 + 63;
- constexpr int buffersizePassTwo = sizeof(float) * ts * ts + 4 * sizeof(float) * ts * tsh + 4 * 64 + 63;
- char * const bufferThr = (char *) malloc((autoCA && !fitParamsSet) ? buffersize : buffersizePassTwo);
+ int shifthfloor[3], shiftvfloor[3], shifthceil[3], shiftvceil[3];
- char * const data = (char*)( ( uintptr_t(bufferThr) + uintptr_t(63)) / 64 * 64);
+ //polynomial fit coefficients
+ //residual CA shift amount within a plaquette
+ float shifthfrac[3], shiftvfrac[3];
- // shift the beginning of all arrays but the first by 64 bytes to avoid cache miss conflicts on CPUs which have <= 4-way associative L1-Cache
+ // assign working space
+ constexpr int buffersize = sizeof(float) * ts * ts + 8 * sizeof(float) * ts * tsh + 8 * 64 + 63;
+ constexpr int buffersizePassTwo = sizeof(float) * ts * ts + 4 * sizeof(float) * ts * tsh + 4 * 64 + 63;
+ char * const bufferThr = (char *) malloc((autoCA && !fitParamsSet) ? buffersize : buffersizePassTwo);
- //rgb data in a tile
- float* rgb[3];
- rgb[0] = (float (*)) data;
- rgb[1] = (float (*)) (data + sizeof(float) * ts * tsh + 1 * 64);
- rgb[2] = (float (*)) (data + sizeof(float) * (ts * ts + ts * tsh) + 2 * 64);
+ char * const data = (char*)((uintptr_t(bufferThr) + uintptr_t(63)) / 64 * 64);
- if (autoCA && !fitParamsSet) {
- //high pass filter for R/B in vertical direction
- float *rbhpfh = (float (*)) (data + 2 * sizeof(float) * ts * ts + 3 * 64);
- //high pass filter for R/B in horizontal direction
- float *rbhpfv = (float (*)) (data + 2 * sizeof(float) * ts * ts + sizeof(float) * ts * tsh + 4 * 64);
- //low pass filter for R/B in horizontal direction
- float *rblpfh = (float (*)) (data + 3 * sizeof(float) * ts * ts + 5 * 64);
- //low pass filter for R/B in vertical direction
- float *rblpfv = (float (*)) (data + 3 * sizeof(float) * ts * ts + sizeof(float) * ts * tsh + 6 * 64);
- //low pass filter for colour differences in horizontal direction
- float *grblpfh = (float (*)) (data + 4 * sizeof(float) * ts * ts + 7 * 64);
- //low pass filter for colour differences in vertical direction
- float *grblpfv = (float (*)) (data + 4 * sizeof(float) * ts * ts + sizeof(float) * ts * tsh + 8 * 64);
- // Main algorithm: Tile loop calculating correction parameters per tile
+ // shift the beginning of all arrays but the first by 64 bytes to avoid cache miss conflicts on CPUs which have <= 4-way associative L1-Cache
- //local quadratic fit to shift data within a tile
- float coeff[2][3][2];
- //measured CA shift parameters for a tile
- float CAshift[2][2];
+ //rgb data in a tile
+ float* rgb[3];
+ rgb[0] = (float*) data;
+ rgb[1] = (float*) (data + sizeof(float) * ts * tsh + 1 * 64);
+ rgb[2] = (float*) (data + sizeof(float) * (ts * ts + ts * tsh) + 2 * 64);
- //per thread data for evaluation of block CA shift variance
- float blockavethr[2][2] = {{0, 0}, {0, 0}}, blocksqavethr[2][2] = {{0, 0}, {0, 0}}, blockdenomthr[2][2] = {{0, 0}, {0, 0}};
+ if (autoCA && !fitParamsSet) {
+ constexpr float caAutostrength = 8.f;
+ //high pass filter for R/B in vertical direction
+ float* rbhpfh = (float*) (data + 2 * sizeof(float) * ts * ts + 3 * 64);
+ //high pass filter for R/B in horizontal direction
+ float* rbhpfv = (float*) (data + 2 * sizeof(float) * ts * ts + sizeof(float) * ts * tsh + 4 * 64);
+ //low pass filter for R/B in horizontal direction
+ float* rblpfh = (float*) (data + 3 * sizeof(float) * ts * ts + 5 * 64);
+ //low pass filter for R/B in vertical direction
+ float* rblpfv = (float*) (data + 3 * sizeof(float) * ts * ts + sizeof(float) * ts * tsh + 6 * 64);
+ //low pass filter for colour differences in horizontal direction
+ float* grblpfh = (float*) (data + 4 * sizeof(float) * ts * ts + 7 * 64);
+ //low pass filter for colour differences in vertical direction
+ float* grblpfv = (float*) (data + 4 * sizeof(float) * ts * ts + sizeof(float) * ts * tsh + 8 * 64);
+ // Main algorithm: Tile loop calculating correction parameters per tile
- #pragma omp for collapse(2) schedule(dynamic) nowait
- for (int top = -border ; top < height; top += ts - border2)
- for (int left = -border; left < width - (W & 1); left += ts - border2) {
- memset(bufferThr, 0, buffersize);
- const int vblock = ((top + border) / (ts - border2)) + 1;
- const int hblock = ((left + border) / (ts - border2)) + 1;
- const int bottom = min(top + ts, height + border);
- const int right = min(left + ts, width - (W & 1) + border);
- const int rr1 = bottom - top;
- const int cc1 = right - left;
- const int rrmin = top < 0 ? border : 0;
- const int rrmax = bottom > height ? height - top : rr1;
- const int ccmin = left < 0 ? border : 0;
- const int ccmax = (right > width - (W & 1)) ? width - (W & 1) - left : cc1;
+ //local quadratic fit to shift data within a tile
+ float coeff[2][3][2];
+ //measured CA shift parameters for a tile
+ float CAshift[2][2];
- // rgb from input CFA data
- // rgb values should be floating point numbers between 0 and 1
- // after white balance multipliers are applied
+ //per thread data for evaluation of block CA shift variance
+ float blockavethr[2][2] = {};
+ float blocksqavethr[2][2] = {};
+ float blockdenomthr[2][2] = {};
+
+ #pragma omp for collapse(2) schedule(dynamic) nowait
+ for (int top = -border ; top < height; top += ts - border2) {
+ for (int left = -border; left < width - (W & 1); left += ts - border2) {
+ memset(bufferThr, 0, buffersize);
+ const int vblock = (top + border) / (ts - border2) + 1;
+ const int hblock = (left + border) / (ts - border2) + 1;
+ const int bottom = min(top + ts, height + border);
+ const int right = min(left + ts, width - (W & 1) + border);
+ const int rr1 = bottom - top;
+ const int cc1 = right - left;
+ const int rrmin = top < 0 ? border : 0;
+ const int rrmax = bottom > height ? height - top : rr1;
+ const int ccmin = left < 0 ? border : 0;
+ const int ccmax = (right > width - (W & 1)) ? width - (W & 1) - left : cc1;
+
+ // rgb from input CFA data
+ // rgb values should be floating point numbers between 0 and 1
+ // after white balance multipliers are applied
#ifdef __SSE2__
- vfloat c65535v = F2V(65535.f);
+ vfloat c65535v = F2V(65535.f);
#endif
- for (int rr = rrmin; rr < rrmax; rr++) {
- int row = rr + top;
- int cc = ccmin;
- int col = cc + left;
+ for (int rr = rrmin; rr < rrmax; rr++) {
+ int row = rr + top;
+ int cc = ccmin;
+ int col = cc + left;
#ifdef __SSE2__
- int c0 = FC(rr, cc);
- if(c0 == 1) {
- rgb[c0][rr * ts + cc] = rawData[row][col] / 65535.f;
- cc++;
- col++;
- c0 = FC(rr, cc);
- }
- int indx1 = rr * ts + cc;
- for (; cc < ccmax - 7; cc+=8, col+=8, indx1 += 8) {
- vfloat val1 = LVFU(rawData[row][col]) / c65535v;
- vfloat val2 = LVFU(rawData[row][col + 4]) / c65535v;
- vfloat nonGreenv = _mm_shuffle_ps(val1,val2,_MM_SHUFFLE( 2,0,2,0 ));
- STVFU(rgb[c0][indx1 >> 1], nonGreenv);
- STVFU(rgb[1][indx1], val1);
- STVFU(rgb[1][indx1 + 4], val2);
- }
-#endif
- for (; cc < ccmax; cc++, col++) {
- int c = FC(rr, cc);
+ int c0 = FC(rr, cc);
+ if (c0 == 1) {
+ rgb[c0][rr * ts + cc] = rawData[row][col] / 65535.f;
+ cc++;
+ col++;
+ c0 = FC(rr, cc);
+ }
int indx1 = rr * ts + cc;
- rgb[c][indx1 >> ((c & 1) ^ 1)] = rawData[row][col] / 65535.f;
- }
- }
-
- // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- //fill borders
- if (rrmin > 0) {
- for (int rr = 0; rr < border; rr++)
- for (int cc = ccmin; cc < ccmax; cc++) {
- int c = FC(rr, cc);
- rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][((border2 - rr) * ts + cc) >> ((c & 1) ^ 1)];
- }
- }
-
- if (rrmax < rr1) {
- for (int rr = 0; rr < border; rr++)
- for (int cc = ccmin; cc < ccmax; cc++) {
- int c = FC(rr, cc);
- rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = rawData[(height - rr - 2)][left + cc] / 65535.f;
- }
- }
-
- if (ccmin > 0) {
- for (int rr = rrmin; rr < rrmax; rr++)
- for (int cc = 0; cc < border; cc++) {
- int c = FC(rr, cc);
- rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][(rr * ts + border2 - cc) >> ((c & 1) ^ 1)];
- }
- }
-
- if (ccmax < cc1) {
- for (int rr = rrmin; rr < rrmax; rr++)
- for (int cc = 0; cc < border; cc++) {
- int c = FC(rr, cc);
- rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = rawData[(top + rr)][(width - cc - 2)] / 65535.f;
- }
- }
-
- //also, fill the image corners
- if (rrmin > 0 && ccmin > 0) {
- for (int rr = 0; rr < border; rr++)
- for (int cc = 0; cc < border; cc++) {
- int c = FC(rr, cc);
- rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rawData[border2 - rr][border2 - cc] / 65535.f;
- }
- }
-
- if (rrmax < rr1 && ccmax < cc1) {
- for (int rr = 0; rr < border; rr++)
- for (int cc = 0; cc < border; cc++) {
- int c = FC(rr, cc);
- rgb[c][((rrmax + rr)*ts + ccmax + cc) >> ((c & 1) ^ 1)] = rawData[(height - rr - 2)][(width - cc - 2)] / 65535.f;
- }
- }
-
- if (rrmin > 0 && ccmax < cc1) {
- for (int rr = 0; rr < border; rr++)
- for (int cc = 0; cc < border; cc++) {
- int c = FC(rr, cc);
- rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = rawData[(border2 - rr)][(width - cc - 2)] / 65535.f;
- }
- }
-
- if (rrmax < rr1 && ccmin > 0) {
- for (int rr = 0; rr < border; rr++)
- for (int cc = 0; cc < border; cc++) {
- int c = FC(rr, cc);
- rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = rawData[(height - rr - 2)][(border2 - cc)] / 65535.f;
- }
- }
-
- //end of border fill
- // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- //end of initialization
-
-
-#ifdef __SSE2__
- vfloat onev = F2V(1.f);
- vfloat epsv = F2V(eps);
-#endif
- for (int rr = 3; rr < rr1 - 3; rr++) {
- int row = rr + top;
- int cc = 3 + (FC(rr,3) & 1);
- int indx = rr * ts + cc;
- int c = FC(rr,cc);
-#ifdef __SSE2__
- for (; cc < cc1 - 9; cc+=8, indx+=8) {
- //compute directional weights using image gradients
- vfloat rgb1mv1v = LC2VFU(rgb[1][indx - v1]);
- vfloat rgb1pv1v = LC2VFU(rgb[1][indx + v1]);
- vfloat rgbcv = LVFU(rgb[c][indx >> 1]);
- vfloat temp1v = epsv + vabsf(rgb1mv1v - rgb1pv1v);
- vfloat wtuv = onev / SQRV(temp1v + vabsf(rgbcv - LVFU(rgb[c][(indx - v2) >> 1])) + vabsf(rgb1mv1v - LC2VFU(rgb[1][indx - v3])));
- vfloat wtdv = onev / SQRV(temp1v + vabsf(rgbcv - LVFU(rgb[c][(indx + v2) >> 1])) + vabsf(rgb1pv1v - LC2VFU(rgb[1][indx + v3])));
- vfloat rgb1m1v = LC2VFU(rgb[1][indx - 1]);
- vfloat rgb1p1v = LC2VFU(rgb[1][indx + 1]);
- vfloat temp2v = epsv + vabsf(rgb1m1v - rgb1p1v);
- vfloat wtlv = onev / SQRV(temp2v + vabsf(rgbcv - LVFU(rgb[c][(indx - 2) >> 1])) + vabsf(rgb1m1v - LC2VFU(rgb[1][indx - 3])));
- vfloat wtrv = onev / SQRV(temp2v + vabsf(rgbcv - LVFU(rgb[c][(indx + 2) >> 1])) + vabsf(rgb1p1v - LC2VFU(rgb[1][indx + 3])));
-
- //store in rgb array the interpolated G value at R/B grid points using directional weighted average
- STC2VFU(rgb[1][indx], (wtuv * rgb1mv1v + wtdv * rgb1pv1v + wtlv * rgb1m1v + wtrv * rgb1p1v) / (wtuv + wtdv + wtlv + wtrv));
- }
-
-#endif
- for (; cc < cc1 - 3; cc+=2, indx+=2) {
- //compute directional weights using image gradients
- float wtu = 1.f / SQR(eps + fabsf(rgb[1][indx + v1] - rgb[1][indx - v1]) + fabsf(rgb[c][indx >> 1] - rgb[c][(indx - v2) >> 1]) + fabsf(rgb[1][indx - v1] - rgb[1][indx - v3]));
- float wtd = 1.f / SQR(eps + fabsf(rgb[1][indx - v1] - rgb[1][indx + v1]) + fabsf(rgb[c][indx >> 1] - rgb[c][(indx + v2) >> 1]) + fabsf(rgb[1][indx + v1] - rgb[1][indx + v3]));
- float wtl = 1.f / SQR(eps + fabsf(rgb[1][indx + 1] - rgb[1][indx - 1]) + fabsf(rgb[c][indx >> 1] - rgb[c][(indx - 2) >> 1]) + fabsf(rgb[1][indx - 1] - rgb[1][indx - 3]));
- float wtr = 1.f / SQR(eps + fabsf(rgb[1][indx - 1] - rgb[1][indx + 1]) + fabsf(rgb[c][indx >> 1] - rgb[c][(indx + 2) >> 1]) + fabsf(rgb[1][indx + 1] - rgb[1][indx + 3]));
-
- //store in rgb array the interpolated G value at R/B grid points using directional weighted average
- rgb[1][indx] = (wtu * rgb[1][indx - v1] + wtd * rgb[1][indx + v1] + wtl * rgb[1][indx - 1] + wtr * rgb[1][indx + 1]) / (wtu + wtd + wtl + wtr);
- }
-
- if (row > -1 && row < height) {
- int offset = (FC(row,max(left + 3, 0)) & 1);
- int col = max(left + 3, 0) + offset;
- int indx = rr * ts + 3 - (left < 0 ? (left+3) : 0) + offset;
-#ifdef __SSE2__
- for(; col < min(cc1 + left - 3, width) - 7; col+=8, indx+=8) {
- STVFU(Gtmp[(row * width + col) >> 1], LC2VFU(rgb[1][indx]));
+ for (; cc < ccmax - 7; cc+=8, col+=8, indx1 += 8) {
+ vfloat val1 = LVFU(rawData[row][col]) / c65535v;
+ vfloat val2 = LVFU(rawData[row][col + 4]) / c65535v;
+ vfloat nonGreenv = _mm_shuffle_ps(val1,val2,_MM_SHUFFLE(2,0,2,0));
+ STVFU(rgb[c0][indx1 >> 1], nonGreenv);
+ STVFU(rgb[1][indx1], val1);
+ STVFU(rgb[1][indx1 + 4], val2);
}
#endif
- for(; col < min(cc1 + left - 3, width); col+=2, indx+=2) {
- Gtmp[(row * width + col) >> 1] = rgb[1][indx];
+ for (; cc < ccmax; cc++, col++) {
+ int c = FC(rr, cc);
+ int indx1 = rr * ts + cc;
+ rgb[c][indx1 >> ((c & 1) ^ 1)] = rawData[row][col] / 65535.f;
}
}
- }
- //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-#ifdef __SSE2__
- vfloat zd25v = F2V(0.25f);
-#endif
- for (int rr = 4; rr < rr1 - 4; rr++) {
- int cc = 4 + (FC(rr, 2) & 1);
- int indx = rr * ts + cc;
- int c = FC(rr, cc);
-#ifdef __SSE2__
- for (; cc < cc1 - 10; cc += 8, indx += 8) {
- vfloat rgb1v = LC2VFU(rgb[1][indx]);
- vfloat rgbcv = LVFU(rgb[c][indx >> 1]);
- vfloat rgb1mv4 = LC2VFU(rgb[1][indx - v4]);
- vfloat rgb1pv4 = LC2VFU(rgb[1][indx + v4]);
- vfloat temp1v = vabsf(vabsf((rgb1v - rgbcv) - (rgb1pv4 - LVFU(rgb[c][(indx + v4) >> 1]))) +
- vabsf(rgb1mv4 - LVFU(rgb[c][(indx - v4) >> 1]) - rgb1v + rgbcv) -
- vabsf(rgb1mv4 - LVFU(rgb[c][(indx - v4) >> 1]) - rgb1pv4 + LVFU(rgb[c][(indx + v4) >> 1])));
- STVFU(rbhpfv[indx >> 1], temp1v);
- vfloat rgb1m4 = LC2VFU(rgb[1][indx - 4]);
- vfloat rgb1p4 = LC2VFU(rgb[1][indx + 4]);
- vfloat temp2v = vabsf(vabsf((rgb1v - rgbcv) - (rgb1p4 - LVFU(rgb[c][(indx + 4) >> 1]))) +
- vabsf(rgb1m4 - LVFU(rgb[c][(indx - 4) >> 1]) - rgb1v + rgbcv) -
- vabsf(rgb1m4 - LVFU(rgb[c][(indx - 4) >> 1]) - rgb1p4 + LVFU(rgb[c][(indx + 4) >> 1])));
- STVFU(rbhpfh[indx >> 1], temp2v);
-
- //low and high pass 1D filters of G in vertical/horizontal directions
- rgb1v = vmul2f(rgb1v);
- vfloat glpfvv = (rgb1v + LC2VFU(rgb[1][indx + v2]) + LC2VFU(rgb[1][indx - v2]));
- vfloat glpfhv = (rgb1v + LC2VFU(rgb[1][indx + 2]) + LC2VFU(rgb[1][indx - 2]));
- rgbcv = vmul2f(rgbcv);
- STVFU(rblpfv[indx >> 1], zd25v * vabsf(glpfvv - (rgbcv + LVFU(rgb[c][(indx + v2) >> 1]) + LVFU(rgb[c][(indx - v2) >> 1]))));
- STVFU(rblpfh[indx >> 1], zd25v * vabsf(glpfhv - (rgbcv + LVFU(rgb[c][(indx + 2) >> 1]) + LVFU(rgb[c][(indx - 2) >> 1]))));
- STVFU(grblpfv[indx >> 1], zd25v * (glpfvv + (rgbcv + LVFU(rgb[c][(indx + v2) >> 1]) + LVFU(rgb[c][(indx - v2) >> 1]))));
- STVFU(grblpfh[indx >> 1], zd25v * (glpfhv + (rgbcv + LVFU(rgb[c][(indx + 2) >> 1]) + LVFU(rgb[c][(indx - 2) >> 1]))));
- }
-
-#endif
- for (; cc < cc1 - 4; cc += 2, indx += 2) {
- rbhpfv[indx >> 1] = fabsf(fabsf((rgb[1][indx] - rgb[c][indx >> 1]) - (rgb[1][indx + v4] - rgb[c][(indx + v4) >> 1])) +
- fabsf((rgb[1][indx - v4] - rgb[c][(indx - v4) >> 1]) - (rgb[1][indx] - rgb[c][indx >> 1])) -
- fabsf((rgb[1][indx - v4] - rgb[c][(indx - v4) >> 1]) - (rgb[1][indx + v4] - rgb[c][(indx + v4) >> 1])));
- rbhpfh[indx >> 1] = fabsf(fabsf((rgb[1][indx] - rgb[c][indx >> 1]) - (rgb[1][indx + 4] - rgb[c][(indx + 4) >> 1])) +
- fabsf((rgb[1][indx - 4] - rgb[c][(indx - 4) >> 1]) - (rgb[1][indx] - rgb[c][indx >> 1])) -
- fabsf((rgb[1][indx - 4] - rgb[c][(indx - 4) >> 1]) - (rgb[1][indx + 4] - rgb[c][(indx + 4) >> 1])));
-
- //low and high pass 1D filters of G in vertical/horizontal directions
- float glpfv = (2.f * rgb[1][indx] + rgb[1][indx + v2] + rgb[1][indx - v2]);
- float glpfh = (2.f * rgb[1][indx] + rgb[1][indx + 2] + rgb[1][indx - 2]);
- rblpfv[indx >> 1] = 0.25f * fabsf(glpfv - (2.f * rgb[c][indx >> 1] + rgb[c][(indx + v2) >> 1] + rgb[c][(indx - v2) >> 1]));
- rblpfh[indx >> 1] = 0.25f * fabsf(glpfh - (2.f * rgb[c][indx >> 1] + rgb[c][(indx + 2) >> 1] + rgb[c][(indx - 2) >> 1]));
- grblpfv[indx >> 1] = 0.25f * (glpfv + (2.f * rgb[c][indx >> 1] + rgb[c][(indx + v2) >> 1] + rgb[c][(indx - v2) >> 1]));
- grblpfh[indx >> 1] = 0.25f * (glpfh + (2.f * rgb[c][indx >> 1] + rgb[c][(indx + 2) >> 1] + rgb[c][(indx - 2) >> 1]));
- }
- }
-
- for (int dir = 0; dir < 2; dir++) {
- for (int k = 0; k < 3; k++) {
- for (int c = 0; c < 2; c++) {
- coeff[dir][k][c] = 0;
- }
- }
- }
-
-#ifdef __SSE2__
- vfloat zd3v = F2V(0.3f);
- vfloat zd1v = F2V(0.1f);
- vfloat zd5v = F2V(0.5f);
-#endif
-
- // along line segments, find the point along each segment that minimizes the colour variance
- // averaged over the tile; evaluate for up/down and left/right away from R/B grid point
- for (int rr = 8; rr < rr1 - 8; rr++) {
- int cc = 8 + (FC(rr, 2) & 1);
- int indx = rr * ts + cc;
- int c = FC(rr, cc);
-#ifdef __SSE2__
- vfloat coeff00v = ZEROV;
- vfloat coeff01v = ZEROV;
- vfloat coeff02v = ZEROV;
- vfloat coeff10v = ZEROV;
- vfloat coeff11v = ZEROV;
- vfloat coeff12v = ZEROV;
- for (; cc < cc1 - 14; cc += 8, indx += 8) {
-
- //in linear interpolation, colour differences are a quadratic function of interpolation position;
- //solve for the interpolation position that minimizes colour difference variance over the tile
-
- //vertical
- vfloat temp1 = zd3v * (LC2VFU(rgb[1][indx + ts + 1]) - LC2VFU(rgb[1][indx - ts - 1]));
- vfloat temp2 = zd3v * (LC2VFU(rgb[1][indx - ts + 1]) - LC2VFU(rgb[1][indx + ts - 1]));
- vfloat gdiffvv = (LC2VFU(rgb[1][indx + ts]) - LC2VFU(rgb[1][indx - ts])) + (temp1 - temp2);
- vfloat deltgrbv = LVFU(rgb[c][indx >> 1]) - LC2VFU(rgb[1][indx]);
-
- vfloat gradwtvv = (LVFU(rbhpfv[indx >> 1]) + zd5v * (LVFU(rbhpfv[(indx >> 1) + 1]) + LVFU(rbhpfv[(indx >> 1) - 1]))) * (LVFU(grblpfv[(indx >> 1) - v1]) + LVFU(grblpfv[(indx >> 1) + v1])) / (epsv + zd1v * (LVFU(grblpfv[(indx >> 1) - v1]) + LVFU(grblpfv[(indx >> 1) + v1])) + LVFU(rblpfv[(indx >> 1) - v1]) + LVFU(rblpfv[(indx >> 1) + v1]));
-
- coeff00v += gradwtvv * deltgrbv * deltgrbv;
- coeff01v += gradwtvv * gdiffvv * deltgrbv;
- coeff02v += gradwtvv * gdiffvv * gdiffvv;
-
- //horizontal
- vfloat gdiffhv = (LC2VFU(rgb[1][indx + 1]) - LC2VFU(rgb[1][indx - 1])) + (temp1 + temp2);
-
- vfloat gradwthv = (LVFU(rbhpfh[indx >> 1]) + zd5v * (LVFU(rbhpfh[(indx >> 1) + v1]) + LVFU(rbhpfh[(indx >> 1) - v1]))) * (LVFU(grblpfh[(indx >> 1) - 1]) + LVFU(grblpfh[(indx >> 1) + 1])) / (epsv + zd1v * (LVFU(grblpfh[(indx >> 1) - 1]) + LVFU(grblpfh[(indx >> 1) + 1])) + LVFU(rblpfh[(indx >> 1) - 1]) + LVFU(rblpfh[(indx >> 1) + 1]));
-
- coeff10v += gradwthv * deltgrbv * deltgrbv;
- coeff11v += gradwthv * gdiffhv * deltgrbv;
- coeff12v += gradwthv * gdiffhv * gdiffhv;
- }
-
- coeff[0][0][c>>1] += vhadd(coeff00v);
- coeff[0][1][c>>1] += vhadd(coeff01v);
- coeff[0][2][c>>1] += vhadd(coeff02v);
- coeff[1][0][c>>1] += vhadd(coeff10v);
- coeff[1][1][c>>1] += vhadd(coeff11v);
- coeff[1][2][c>>1] += vhadd(coeff12v);
-
-#endif
- for (; cc < cc1 - 8; cc += 2, indx += 2) {
-
- //in linear interpolation, colour differences are a quadratic function of interpolation position;
- //solve for the interpolation position that minimizes colour difference variance over the tile
-
- //vertical
- float gdiff = (rgb[1][indx + ts] - rgb[1][indx - ts]) + 0.3f * (rgb[1][indx + ts + 1] - rgb[1][indx - ts + 1] + rgb[1][indx + ts - 1] - rgb[1][indx - ts - 1]);
- float deltgrb = (rgb[c][indx >> 1] - rgb[1][indx]);
-
- float gradwt = (rbhpfv[indx >> 1] + 0.5f * (rbhpfv[(indx >> 1) + 1] + rbhpfv[(indx >> 1) - 1]) ) * (grblpfv[(indx >> 1) - v1] + grblpfv[(indx >> 1) + v1]) / (eps + 0.1f * (grblpfv[(indx >> 1) - v1] + grblpfv[(indx >> 1) + v1]) + rblpfv[(indx >> 1) - v1] + rblpfv[(indx >> 1) + v1]);
-
- coeff[0][0][c>>1] += gradwt * deltgrb * deltgrb;
- coeff[0][1][c>>1] += gradwt * gdiff * deltgrb;
- coeff[0][2][c>>1] += gradwt * gdiff * gdiff;
-
- //horizontal
- gdiff = (rgb[1][indx + 1] - rgb[1][indx - 1]) + 0.3f * (rgb[1][indx + 1 + ts] - rgb[1][indx - 1 + ts] + rgb[1][indx + 1 - ts] - rgb[1][indx - 1 - ts]);
-
- gradwt = (rbhpfh[indx >> 1] + 0.5f * (rbhpfh[(indx >> 1) + v1] + rbhpfh[(indx >> 1) - v1]) ) * (grblpfh[(indx >> 1) - 1] + grblpfh[(indx >> 1) + 1]) / (eps + 0.1f * (grblpfh[(indx >> 1) - 1] + grblpfh[(indx >> 1) + 1]) + rblpfh[(indx >> 1) - 1] + rblpfh[(indx >> 1) + 1]);
-
- coeff[1][0][c>>1] += gradwt * deltgrb * deltgrb;
- coeff[1][1][c>>1] += gradwt * gdiff * deltgrb;
- coeff[1][2][c>>1] += gradwt * gdiff * gdiff;
-
- // In Mathematica,
- // f[x_]=Expand[Total[Flatten[
- // ((1-x) RotateLeft[Gint,shift1]+x RotateLeft[Gint,shift2]-cfapad)^2[[dv;;-1;;2,dh;;-1;;2]]]]];
- // extremum = -.5Coefficient[f[x],x]/Coefficient[f[x],x^2]
- }
- }
-
- for (int dir = 0; dir < 2; dir++) {
- for (int k = 0; k < 3; k++) {
- for (int c = 0; c < 2; c++) {
- coeff[dir][k][c] *= 0.25f;
- if(k == 1) {
- coeff[dir][k][c] *= 0.3125f;
- } else if(k == 2) {
- coeff[dir][k][c] *= SQR(0.3125f);
+ //fill borders
+ if (rrmin > 0) {
+ for (int rr = 0; rr < border; rr++) {
+ for (int cc = ccmin; cc < ccmax; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][((border2 - rr) * ts + cc) >> ((c & 1) ^ 1)];
}
}
}
- }
- for (int c = 0; c < 2; c++) {
- for (int dir = 0; dir < 2; dir++) { // vert/hor
-
- // CAshift[dir][c] are the locations
- // that minimize colour difference variances;
- // This is the approximate _optical_ location of the R/B pixels
- if (coeff[dir][2][c] > eps2) {
- CAshift[dir][c] = coeff[dir][1][c] / coeff[dir][2][c];
- blockwt[vblock * hblsz + hblock] = coeff[dir][2][c] / (eps + coeff[dir][0][c]) ;
- } else {
- CAshift[dir][c] = 17.0;
- blockwt[vblock * hblsz + hblock] = 0;
- }
-
- //data structure = CAshift[vert/hor][colour]
- //dir : 0=vert, 1=hor
-
- //offset gives NW corner of square containing the min; dir : 0=vert, 1=hor
- if (fabsf(CAshift[dir][c]) < 2.0f) {
- blockavethr[dir][c] += CAshift[dir][c];
- blocksqavethr[dir][c] += SQR(CAshift[dir][c]);
- blockdenomthr[dir][c] += 1;
- }
- //evaluate the shifts to the location that minimizes CA within the tile
- blockshifts[vblock * hblsz + hblock][c][dir] = CAshift[dir][c]; //vert/hor CA shift for R/B
-
- }//vert/hor
- }//colour
-
- if(plistener) {
- progresscounter++;
-
- if(progresscounter % 8 == 0)
- #pragma omp critical (cadetectpass1)
- {
- progress += (double)(8.0 * (ts - border2) * (ts - border2)) / (2 * height * width);
-
- if (progress > 1.0) {
- progress = 1.0;
- }
-
- plistener->setProgress(progress);
- }
- }
-
- }
-
- //end of diagnostic pass
- #pragma omp critical (cadetectpass2)
- {
- for (int dir = 0; dir < 2; dir++)
- for (int c = 0; c < 2; c++) {
- blockdenom[dir][c] += blockdenomthr[dir][c];
- blocksqave[dir][c] += blocksqavethr[dir][c];
- blockave[dir][c] += blockavethr[dir][c];
- }
- }
- #pragma omp barrier
-
- #pragma omp single
- {
- for (int dir = 0; dir < 2; dir++)
- for (int c = 0; c < 2; c++) {
- if (blockdenom[dir][c]) {
- blockvar[dir][c] = blocksqave[dir][c] / blockdenom[dir][c] - SQR(blockave[dir][c] / blockdenom[dir][c]);
- } else {
- processpasstwo = false;
- printf ("blockdenom vanishes \n");
- break;
- }
- }
-
- // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
- //now prepare for CA correction pass
- //first, fill border blocks of blockshift array
- if(processpasstwo) {
- for (int vblock = 1; vblock < vblsz - 1; vblock++) { //left and right sides
- for (int c = 0; c < 2; c++) {
- for (int i = 0; i < 2; i++) {
- blockshifts[vblock * hblsz][c][i] = blockshifts[(vblock) * hblsz + 2][c][i];
- blockshifts[vblock * hblsz + hblsz - 1][c][i] = blockshifts[(vblock) * hblsz + hblsz - 3][c][i];
- }
- }
- }
-
- for (int hblock = 0; hblock < hblsz; hblock++) { //top and bottom sides
- for (int c = 0; c < 2; c++) {
- for (int i = 0; i < 2; i++) {
- blockshifts[hblock][c][i] = blockshifts[2 * hblsz + hblock][c][i];
- blockshifts[(vblsz - 1)*hblsz + hblock][c][i] = blockshifts[(vblsz - 3) * hblsz + hblock][c][i];
- }
- }
- }
-
- //end of filling border pixels of blockshift array
-
- //initialize fit arrays
- double polymat[2][2][256], shiftmat[2][2][16];
-
- for (int i = 0; i < 256; i++) {
- polymat[0][0][i] = polymat[0][1][i] = polymat[1][0][i] = polymat[1][1][i] = 0;
- }
-
- for (int i = 0; i < 16; i++) {
- shiftmat[0][0][i] = shiftmat[0][1][i] = shiftmat[1][0][i] = shiftmat[1][1][i] = 0;
- }
-
- int numblox[2] = {0, 0};
-
- for (int vblock = 1; vblock < vblsz - 1; vblock++)
- for (int hblock = 1; hblock < hblsz - 1; hblock++) {
- // block 3x3 median of blockshifts for robustness
- for (int c = 0; c < 2; c ++) {
- float bstemp[2];
- for (int dir = 0; dir < 2; dir++) {
- //temporary storage for median filter
- const std::array p = {
- blockshifts[(vblock - 1) * hblsz + hblock - 1][c][dir],
- blockshifts[(vblock - 1) * hblsz + hblock][c][dir],
- blockshifts[(vblock - 1) * hblsz + hblock + 1][c][dir],
- blockshifts[(vblock) * hblsz + hblock - 1][c][dir],
- blockshifts[(vblock) * hblsz + hblock][c][dir],
- blockshifts[(vblock) * hblsz + hblock + 1][c][dir],
- blockshifts[(vblock + 1) * hblsz + hblock - 1][c][dir],
- blockshifts[(vblock + 1) * hblsz + hblock][c][dir],
- blockshifts[(vblock + 1) * hblsz + hblock + 1][c][dir]
- };
- bstemp[dir] = median(p);
- }
-
- //now prepare coefficient matrix; use only data points within caautostrength/2 std devs of zero
- if (SQR(bstemp[0]) > caautostrength * blockvar[0][c] || SQR(bstemp[1]) > caautostrength * blockvar[1][c]) {
- continue;
- }
-
- numblox[c]++;
-
- for (int dir = 0; dir < 2; dir++) {
- double powVblockInit = 1.0;
- for (int i = 0; i < polyord; i++) {
- double powHblockInit = 1.0;
- for (int j = 0; j < polyord; j++) {
- double powVblock = powVblockInit;
- for (int m = 0; m < polyord; m++) {
- double powHblock = powHblockInit;
- for (int n = 0; n < polyord; n++) {
- polymat[c][dir][numpar * (polyord * i + j) + (polyord * m + n)] += powVblock * powHblock * blockwt[vblock * hblsz + hblock];
- powHblock *= hblock;
- }
- powVblock *= vblock;
- }
- shiftmat[c][dir][(polyord * i + j)] += powVblockInit * powHblockInit * bstemp[dir] * blockwt[vblock * hblsz + hblock];
- powHblockInit *= hblock;
- }
- powVblockInit *= vblock;
- }//monomials
- }//dir
- }//c
- }//blocks
-
- numblox[1] = min(numblox[0], numblox[1]);
-
- //if too few data points, restrict the order of the fit to linear
- if (numblox[1] < 32) {
- polyord = 2;
- numpar = 4;
-
- if (numblox[1] < 10) {
-
- printf ("numblox = %d \n", numblox[1]);
- processpasstwo = false;
- }
- }
-
- if(processpasstwo)
-
- //fit parameters to blockshifts
- for (int c = 0; c < 2; c++)
- for (int dir = 0; dir < 2; dir++) {
- if (!LinEqSolve(numpar, polymat[c][dir], shiftmat[c][dir], fitparams[c][dir])) {
- printf("CA correction pass failed -- can't solve linear equations for colour %d direction %d...\n", c, dir);
- processpasstwo = false;
+ if (rrmax < rr1) {
+ for (int rr = 0; rr < border; rr++) {
+ for (int cc = ccmin; cc < ccmax; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = rawData[(height - rr - 2)][left + cc] / 65535.f;
}
}
- }
+ }
- //fitparams[polyord*i+j] gives the coefficients of (vblock^i hblock^j) in a polynomial fit for i,j<=4
- }
- //end of initialization for CA correction pass
- //only executed if autoCA is true
- }
+ if (ccmin > 0) {
+ for (int rr = rrmin; rr < rrmax; rr++) {
+ for (int cc = 0; cc < border; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][(rr * ts + border2 - cc) >> ((c & 1) ^ 1)];
+ }
+ }
+ }
- // Main algorithm: Tile loop
- if(processpasstwo) {
- float *grbdiff = (float (*)) (data + 2 * sizeof(float) * ts * ts + 3 * 64); // there is no overlap in buffer usage => share
- //green interpolated to optical sample points for R/B
- float *gshift = (float (*)) (data + 2 * sizeof(float) * ts * ts + sizeof(float) * ts * tsh + 4 * 64); // there is no overlap in buffer usage => share
- #pragma omp for schedule(dynamic) collapse(2) nowait
+ if (ccmax < cc1) {
+ for (int rr = rrmin; rr < rrmax; rr++) {
+ for (int cc = 0; cc < border; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = rawData[(top + rr)][(width - cc - 2)] / 65535.f;
+ }
+ }
+ }
- for (int top = -border; top < height; top += ts - border2)
- for (int left = -border; left < width - (W & 1); left += ts - border2) {
- memset(bufferThr, 0, buffersizePassTwo);
- float lblockshifts[2][2];
- const int vblock = ((top + border) / (ts - border2)) + 1;
- const int hblock = ((left + border) / (ts - border2)) + 1;
- const int bottom = min(top + ts, height + border);
- const int right = min(left + ts, width - (W & 1) + border);
- const int rr1 = bottom - top;
- const int cc1 = right - left;
+ //also, fill the image corners
+ if (rrmin > 0 && ccmin > 0) {
+ for (int rr = 0; rr < border; rr++) {
+ for (int cc = 0; cc < border; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rawData[border2 - rr][border2 - cc] / 65535.f;
+ }
+ }
+ }
- const int rrmin = top < 0 ? border : 0;
- const int rrmax = bottom > height ? height - top : rr1;
- const int ccmin = left < 0 ? border : 0;
- const int ccmax = (right > width - (W & 1)) ? width - (W & 1) - left : cc1;
+ if (rrmax < rr1 && ccmax < cc1) {
+ for (int rr = 0; rr < border; rr++) {
+ for (int cc = 0; cc < border; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][((rrmax + rr)*ts + ccmax + cc) >> ((c & 1) ^ 1)] = rawData[(height - rr - 2)][(width - cc - 2)] / 65535.f;
+ }
+ }
+ }
- // rgb from input CFA data
- // rgb values should be floating point number between 0 and 1
- // after white balance multipliers are applied
+ if (rrmin > 0 && ccmax < cc1) {
+ for (int rr = 0; rr < border; rr++) {
+ for (int cc = 0; cc < border; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = rawData[(border2 - rr)][(width - cc - 2)] / 65535.f;
+ }
+ }
+ }
+
+ if (rrmax < rr1 && ccmin > 0) {
+ for (int rr = 0; rr < border; rr++) {
+ for (int cc = 0; cc < border; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = rawData[(height - rr - 2)][(border2 - cc)] / 65535.f;
+ }
+ }
+ }
+
+ //end of border fill
+ //end of initialization
#ifdef __SSE2__
- vfloat c65535v = F2V(65535.f);
- vmask gmask = _mm_set_epi32(0, 0xffffffff, 0, 0xffffffff);
+ vfloat onev = F2V(1.f);
+ vfloat epsv = F2V(eps);
#endif
- for (int rr = rrmin; rr < rrmax; rr++) {
- int row = rr + top;
- int cc = ccmin;
- int col = cc + left;
- int indx = row * width + col;
- int indx1 = rr * ts + cc;
-#ifdef __SSE2__
- int c = FC(rr, cc);
- if(c & 1) {
- rgb[1][indx1] = rawData[row][col] / 65535.f;
- indx++;
- indx1++;
- cc++;
- col++;
- c = FC(rr, cc);
- }
- for (; cc < ccmax - 7; cc += 8, col += 8, indx += 8, indx1 += 8) {
- vfloat val1v = LVFU(rawData[row][col]) / c65535v;
- vfloat val2v = LVFU(rawData[row][col + 4]) / c65535v;
- STVFU(rgb[c][indx1 >> 1], _mm_shuffle_ps(val1v, val2v, _MM_SHUFFLE(2, 0, 2, 0)));
- vfloat gtmpv = LVFU(Gtmp[indx >> 1]);
- STVFU(rgb[1][indx1], vself(gmask, PERMUTEPS(gtmpv, _MM_SHUFFLE(1, 1, 0, 0)), val1v));
- STVFU(rgb[1][indx1 + 4], vself(gmask, PERMUTEPS(gtmpv, _MM_SHUFFLE(3, 3, 2, 2)), val2v));
- }
-#endif
- for (; cc < ccmax; cc++, col++, indx++, indx1++) {
- int c = FC(rr, cc);
- rgb[c][indx1 >> ((c & 1) ^ 1)] = rawData[row][col] / 65535.f;
-
- if ((c & 1) == 0) {
- rgb[1][indx1] = Gtmp[indx >> 1];
- }
- }
- }
- // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- //fill borders
- if (rrmin > 0) {
- for (int rr = 0; rr < border; rr++)
- for (int cc = ccmin; cc < ccmax; cc++) {
- int c = FC(rr, cc);
- rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][((border2 - rr) * ts + cc) >> ((c & 1) ^ 1)];
- rgb[1][rr * ts + cc] = rgb[1][(border2 - rr) * ts + cc];
- }
- }
-
- if (rrmax < rr1) {
- for (int rr = 0; rr < std::min(border, rr1 - rrmax); rr++)
- for (int cc = ccmin; cc < ccmax; cc++) {
- int c = FC(rr, cc);
- rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = (rawData[(height - rr - 2)][left + cc]) / 65535.f;
- if ((c & 1) == 0) {
- rgb[1][(rrmax + rr)*ts + cc] = Gtmp[((height - rr - 2) * width + left + cc) >> 1];
- }
- }
- }
-
- if (ccmin > 0) {
- for (int rr = rrmin; rr < rrmax; rr++)
- for (int cc = 0; cc < border; cc++) {
- int c = FC(rr, cc);
- rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][(rr * ts + border2 - cc) >> ((c & 1) ^ 1)];
- rgb[1][rr * ts + cc] = rgb[1][rr * ts + border2 - cc];
- }
- }
-
- if (ccmax < cc1) {
- for (int rr = rrmin; rr < rrmax; rr++)
- for (int cc = 0; cc < std::min(border, cc1 - ccmax); cc++) {
- int c = FC(rr, cc);
- rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = (rawData[(top + rr)][(width - cc - 2)]) / 65535.f;
- if ((c & 1) == 0) {
- rgb[1][rr * ts + ccmax + cc] = Gtmp[((top + rr) * width + (width - cc - 2)) >> 1];
- }
- }
- }
-
- //also, fill the image corners
- if (rrmin > 0 && ccmin > 0) {
- for (int rr = 0; rr < border; rr++)
- for (int cc = 0; cc < border; cc++) {
- int c = FC(rr, cc);
- rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = (rawData[border2 - rr][border2 - cc]) / 65535.f;
- if ((c & 1) == 0) {
- rgb[1][rr * ts + cc] = Gtmp[((border2 - rr) * width + border2 - cc) >> 1];
- }
- }
- }
-
- if (rrmax < rr1 && ccmax < cc1) {
- for (int rr = 0; rr < std::min(border, rr1 - rrmax); rr++)
- for (int cc = 0; cc < std::min(border, cc1 - ccmax); cc++) {
- int c = FC(rr, cc);
- rgb[c][((rrmax + rr)*ts + ccmax + cc) >> ((c & 1) ^ 1)] = (rawData[(height - rr - 2)][(width - cc - 2)]) / 65535.f;
- if ((c & 1) == 0) {
- rgb[1][(rrmax + rr)*ts + ccmax + cc] = Gtmp[((height - rr - 2) * width + (width - cc - 2)) >> 1];
- }
- }
- }
-
- if (rrmin > 0 && ccmax < cc1) {
- for (int rr = 0; rr < border; rr++)
- for (int cc = 0; cc < std::min(border, cc1 - ccmax); cc++) {
- int c = FC(rr, cc);
- rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = (rawData[(border2 - rr)][(width - cc - 2)]) / 65535.f;
- if ((c & 1) == 0) {
- rgb[1][rr * ts + ccmax + cc] = Gtmp[((border2 - rr) * width + (width - cc - 2)) >> 1];
- }
- }
- }
-
- if (rrmax < rr1 && ccmin > 0) {
- for (int rr = 0; rr < std::min(border, rr1 - rrmax); rr++)
- for (int cc = 0; cc < border; cc++) {
- int c = FC(rr, cc);
- rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = (rawData[(height - rr - 2)][(border2 - cc)]) / 65535.f;
- if ((c & 1) == 0) {
- rgb[1][(rrmax + rr)*ts + cc] = Gtmp[((height - rr - 2) * width + (border2 - cc)) >> 1];
- }
- }
- }
-
- //end of border fill
- // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
- if (!autoCA || fitParamsIn) {
-#ifdef __SSE2__
- const vfloat onev = F2V(1.f);
- const vfloat epsv = F2V(eps);
-#endif
-
- //manual CA correction; use red/blue slider values to set CA shift parameters
for (int rr = 3; rr < rr1 - 3; rr++) {
- int cc = 3 + FC(rr, 1), c = FC(rr,cc), indx = rr * ts + cc;
+ int row = rr + top;
+ int cc = 3 + (FC(rr,3) & 1);
+ int indx = rr * ts + cc;
+ int c = FC(rr,cc);
#ifdef __SSE2__
- for (; cc < cc1 - 10; cc += 8, indx += 8) {
+ for (; cc < cc1 - 9; cc+=8, indx+=8) {
//compute directional weights using image gradients
- vfloat val1v = epsv + vabsf(LC2VFU(rgb[1][(rr + 1) * ts + cc]) - LC2VFU(rgb[1][(rr - 1) * ts + cc]));
- vfloat val2v = epsv + vabsf(LC2VFU(rgb[1][indx + 1]) - LC2VFU(rgb[1][indx - 1]));
- vfloat wtuv = onev / SQRV(val1v + vabsf(LVFU(rgb[c][(rr * ts + cc) >> 1]) - LVFU(rgb[c][((rr - 2) * ts + cc) >> 1])) + vabsf(LC2VFU(rgb[1][(rr - 1) * ts + cc]) - LC2VFU(rgb[1][(rr - 3) * ts + cc])));
- vfloat wtdv = onev / SQRV(val1v + vabsf(LVFU(rgb[c][(rr * ts + cc) >> 1]) - LVFU(rgb[c][((rr + 2) * ts + cc) >> 1])) + vabsf(LC2VFU(rgb[1][(rr + 1) * ts + cc]) - LC2VFU(rgb[1][(rr + 3) * ts + cc])));
- vfloat wtlv = onev / SQRV(val2v + vabsf(LVFU(rgb[c][indx >> 1]) - LVFU(rgb[c][(indx - 2) >> 1])) + vabsf(LC2VFU(rgb[1][indx - 1]) - LC2VFU(rgb[1][indx - 3])));
- vfloat wtrv = onev / SQRV(val2v + vabsf(LVFU(rgb[c][indx >> 1]) - LVFU(rgb[c][(indx + 2) >> 1])) + vabsf(LC2VFU(rgb[1][indx + 1]) - LC2VFU(rgb[1][indx + 3])));
+ vfloat rgb1mv1v = LC2VFU(rgb[1][indx - v1]);
+ vfloat rgb1pv1v = LC2VFU(rgb[1][indx + v1]);
+ vfloat rgbcv = LVFU(rgb[c][indx >> 1]);
+ vfloat temp1v = epsv + vabsf(rgb1mv1v - rgb1pv1v);
+ vfloat wtuv = onev / SQRV(temp1v + vabsf(rgbcv - LVFU(rgb[c][(indx - v2) >> 1])) + vabsf(rgb1mv1v - LC2VFU(rgb[1][indx - v3])));
+ vfloat wtdv = onev / SQRV(temp1v + vabsf(rgbcv - LVFU(rgb[c][(indx + v2) >> 1])) + vabsf(rgb1pv1v - LC2VFU(rgb[1][indx + v3])));
+ vfloat rgb1m1v = LC2VFU(rgb[1][indx - 1]);
+ vfloat rgb1p1v = LC2VFU(rgb[1][indx + 1]);
+ vfloat temp2v = epsv + vabsf(rgb1m1v - rgb1p1v);
+ vfloat wtlv = onev / SQRV(temp2v + vabsf(rgbcv - LVFU(rgb[c][(indx - 2) >> 1])) + vabsf(rgb1m1v - LC2VFU(rgb[1][indx - 3])));
+ vfloat wtrv = onev / SQRV(temp2v + vabsf(rgbcv - LVFU(rgb[c][(indx + 2) >> 1])) + vabsf(rgb1p1v - LC2VFU(rgb[1][indx + 3])));
//store in rgb array the interpolated G value at R/B grid points using directional weighted average
- STC2VFU(rgb[1][indx], (wtuv * LC2VFU(rgb[1][indx - v1]) + wtdv * LC2VFU(rgb[1][indx + v1]) + wtlv * LC2VFU(rgb[1][indx - 1]) + wtrv * LC2VFU(rgb[1][indx + 1])) / (wtuv + wtdv + wtlv + wtrv));
+ STC2VFU(rgb[1][indx], (wtuv * rgb1mv1v + wtdv * rgb1pv1v + wtlv * rgb1m1v + wtrv * rgb1p1v) / (wtuv + wtdv + wtlv + wtrv));
}
+
#endif
- for (; cc < cc1 - 3; cc += 2, indx += 2) {
+ for (; cc < cc1 - 3; cc+=2, indx+=2) {
//compute directional weights using image gradients
- float wtu = 1.f / SQR(eps + fabsf(rgb[1][(rr + 1) * ts + cc] - rgb[1][(rr - 1) * ts + cc]) + fabsf(rgb[c][(rr * ts + cc) >> 1] - rgb[c][((rr - 2) * ts + cc) >> 1]) + fabsf(rgb[1][(rr - 1) * ts + cc] - rgb[1][(rr - 3) * ts + cc]));
- float wtd = 1.f / SQR(eps + fabsf(rgb[1][(rr + 1) * ts + cc] - rgb[1][(rr - 1) * ts + cc]) + fabsf(rgb[c][(rr * ts + cc) >> 1] - rgb[c][((rr + 2) * ts + cc) >> 1]) + fabsf(rgb[1][(rr + 1) * ts + cc] - rgb[1][(rr + 3) * ts + cc]));
- float wtl = 1.f / SQR(eps + fabsf(rgb[1][rr * ts + cc + 1] - rgb[1][rr * ts + cc - 1]) + fabsf(rgb[c][(rr * ts + cc) >> 1] - rgb[c][(rr * ts + cc - 2) >> 1]) + fabsf(rgb[1][rr * ts + cc - 1] - rgb[1][rr * ts + cc - 3]));
- float wtr = 1.f / SQR(eps + fabsf(rgb[1][rr * ts + cc + 1] - rgb[1][rr * ts + cc - 1]) + fabsf(rgb[c][(rr * ts + cc) >> 1] - rgb[c][(rr * ts + cc + 2) >> 1]) + fabsf(rgb[1][rr * ts + cc + 1] - rgb[1][rr * ts + cc + 3]));
+ float wtu = 1.f / SQR(eps + fabsf(rgb[1][indx + v1] - rgb[1][indx - v1]) + fabsf(rgb[c][indx >> 1] - rgb[c][(indx - v2) >> 1]) + fabsf(rgb[1][indx - v1] - rgb[1][indx - v3]));
+ float wtd = 1.f / SQR(eps + fabsf(rgb[1][indx - v1] - rgb[1][indx + v1]) + fabsf(rgb[c][indx >> 1] - rgb[c][(indx + v2) >> 1]) + fabsf(rgb[1][indx + v1] - rgb[1][indx + v3]));
+ float wtl = 1.f / SQR(eps + fabsf(rgb[1][indx + 1] - rgb[1][indx - 1]) + fabsf(rgb[c][indx >> 1] - rgb[c][(indx - 2) >> 1]) + fabsf(rgb[1][indx - 1] - rgb[1][indx - 3]));
+ float wtr = 1.f / SQR(eps + fabsf(rgb[1][indx - 1] - rgb[1][indx + 1]) + fabsf(rgb[c][indx >> 1] - rgb[c][(indx + 2) >> 1]) + fabsf(rgb[1][indx + 1] - rgb[1][indx + 3]));
//store in rgb array the interpolated G value at R/B grid points using directional weighted average
rgb[1][indx] = (wtu * rgb[1][indx - v1] + wtd * rgb[1][indx + v1] + wtl * rgb[1][indx - 1] + wtr * rgb[1][indx + 1]) / (wtu + wtd + wtl + wtr);
}
- }
- }
- if (!autoCA) {
- float hfrac = -((float)(hblock - 0.5) / (hblsz - 2) - 0.5);
- float vfrac = -((float)(vblock - 0.5) / (vblsz - 2) - 0.5) * height / width;
- lblockshifts[0][0] = 2 * vfrac * cared;
- lblockshifts[0][1] = 2 * hfrac * cared;
- lblockshifts[1][0] = 2 * vfrac * cablue;
- lblockshifts[1][1] = 2 * hfrac * cablue;
- } else {
- //CA auto correction; use CA diagnostic pass to set shift parameters
- lblockshifts[0][0] = lblockshifts[0][1] = 0;
- lblockshifts[1][0] = lblockshifts[1][1] = 0;
- double powVblock = 1.0;
- for (int i = 0; i < polyord; i++) {
- double powHblock = powVblock;
- for (int j = 0; j < polyord; j++) {
- lblockshifts[0][0] += powHblock * fitparams[0][0][polyord * i + j];
- lblockshifts[0][1] += powHblock * fitparams[0][1][polyord * i + j];
- lblockshifts[1][0] += powHblock * fitparams[1][0][polyord * i + j];
- lblockshifts[1][1] += powHblock * fitparams[1][1][polyord * i + j];
- powHblock *= hblock;
- }
- powVblock *= vblock;
- }
- constexpr float bslim = 3.99; //max allowed CA shift
- lblockshifts[0][0] = LIM(lblockshifts[0][0], -bslim, bslim);
- lblockshifts[0][1] = LIM(lblockshifts[0][1], -bslim, bslim);
- lblockshifts[1][0] = LIM(lblockshifts[1][0], -bslim, bslim);
- lblockshifts[1][1] = LIM(lblockshifts[1][1], -bslim, bslim);
- }//end of setting CA shift parameters
-
- for (int c = 0; c < 3; c += 2) {
-
- //some parameters for the bilinear interpolation
- shiftvfloor[c] = floor((float)lblockshifts[c>>1][0]);
- shiftvceil[c] = ceil((float)lblockshifts[c>>1][0]);
- shiftvfrac[c] = lblockshifts[c>>1][0] - shiftvfloor[c];
-
- shifthfloor[c] = floor((float)lblockshifts[c>>1][1]);
- shifthceil[c] = ceil((float)lblockshifts[c>>1][1]);
- shifthfrac[c] = lblockshifts[c>>1][1] - shifthfloor[c];
-
- GRBdir[0][c] = lblockshifts[c>>1][0] > 0 ? 2 : -2;
- GRBdir[1][c] = lblockshifts[c>>1][1] > 0 ? 2 : -2;
-
- }
-
-
- for (int rr = 4; rr < rr1 - 4; rr++) {
- int cc = 4 + (FC(rr, 2) & 1);
- int c = FC(rr, cc);
- int indx = (rr * ts + cc) >> 1;
- int indxfc = (rr + shiftvfloor[c]) * ts + cc + shifthceil[c];
- int indxff = (rr + shiftvfloor[c]) * ts + cc + shifthfloor[c];
- int indxcc = (rr + shiftvceil[c]) * ts + cc + shifthceil[c];
- int indxcf = (rr + shiftvceil[c]) * ts + cc + shifthfloor[c];
+ if (row > -1 && row < height) {
+ int offset = (FC(row,max(left + 3, 0)) & 1);
+ int col = max(left + 3, 0) + offset;
+ int indx = rr * ts + 3 - (left < 0 ? (left+3) : 0) + offset;
#ifdef __SSE2__
- vfloat shifthfracv = F2V(shifthfrac[c]);
- vfloat shiftvfracv = F2V(shiftvfrac[c]);
- for (; cc < cc1 - 10; cc += 8, indxfc += 8, indxff += 8, indxcc += 8, indxcf += 8, indx += 4) {
- //perform CA correction using colour ratios or colour differences
- vfloat Ginthfloorv = vintpf(shifthfracv, LC2VFU(rgb[1][indxfc]), LC2VFU(rgb[1][indxff]));
- vfloat Ginthceilv = vintpf(shifthfracv, LC2VFU(rgb[1][indxcc]), LC2VFU(rgb[1][indxcf]));
- //Gint is bilinear interpolation of G at CA shift point
- vfloat Gintv = vintpf(shiftvfracv, Ginthceilv, Ginthfloorv);
-
- //determine R/B at grid points using colour differences at shift point plus interpolated G value at grid point
- //but first we need to interpolate G-R/G-B to grid points...
- STVFU(grbdiff[indx], Gintv - LVFU(rgb[c][indx]));
- STVFU(gshift[indx], Gintv);
- }
-
-#endif
- for (; cc < cc1 - 4; cc += 2, indxfc += 2, indxff += 2, indxcc += 2, indxcf += 2, ++indx) {
- //perform CA correction using colour ratios or colour differences
- float Ginthfloor = intp(shifthfrac[c], rgb[1][indxfc], rgb[1][indxff]);
- float Ginthceil = intp(shifthfrac[c], rgb[1][indxcc], rgb[1][indxcf]);
- //Gint is bilinear interpolation of G at CA shift point
- float Gint = intp(shiftvfrac[c], Ginthceil, Ginthfloor);
-
- //determine R/B at grid points using colour differences at shift point plus interpolated G value at grid point
- //but first we need to interpolate G-R/G-B to grid points...
- grbdiff[indx] = Gint - rgb[c][indx];
- gshift[indx] = Gint;
- }
- }
-
- shifthfrac[0] /= 2.f;
- shifthfrac[2] /= 2.f;
- shiftvfrac[0] /= 2.f;
- shiftvfrac[2] /= 2.f;
-
-#ifdef __SSE2__
- vfloat zd25v = F2V(0.25f);
- vfloat onev = F2V(1.f);
- vfloat zd5v = F2V(0.5f);
- vfloat epsv = F2V(eps);
-#endif
- for (int rr = 8; rr < rr1 - 8; rr++) {
- int cc = 8 + (FC(rr, 2) & 1);
- int c = FC(rr, cc);
- int GRBdir0 = GRBdir[0][c];
- int GRBdir1 = GRBdir[1][c];
-#ifdef __SSE2__
- vfloat shifthfracc = F2V(shifthfrac[c]);
- vfloat shiftvfracc = F2V(shiftvfrac[c]);
- for (int indx = rr * ts + cc; cc < cc1 - 14; cc += 8, indx += 8) {
- //interpolate colour difference from optical R/B locations to grid locations
- vfloat grbdiffinthfloor = vintpf(shifthfracc, LVFU(grbdiff[(indx - GRBdir1) >> 1]), LVFU(grbdiff[indx >> 1]));
- vfloat grbdiffinthceil = vintpf(shifthfracc, LVFU(grbdiff[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1]), LVFU(grbdiff[((rr - GRBdir0) * ts + cc) >> 1]));
- //grbdiffint is bilinear interpolation of G-R/G-B at grid point
- vfloat grbdiffint = vintpf(shiftvfracc, grbdiffinthceil, grbdiffinthfloor);
-
- //now determine R/B at grid points using interpolated colour differences and interpolated G value at grid point
- vfloat cinv = LVFU(rgb[c][indx >> 1]);
- vfloat rinv = LC2VFU(rgb[1][indx]);
- vfloat RBint = rinv - grbdiffint;
- vmask cmask = vmaskf_ge(vabsf(RBint - cinv), zd25v * (RBint + cinv));
- if(_mm_movemask_ps((vfloat)cmask)) {
- // if for any of the 4 pixels the condition is true, do the math for all 4 pixels and mask the unused out at the end
- //gradient weights using difference from G at CA shift points and G at grid points
- vfloat p0 = onev / (epsv + vabsf(rinv - LVFU(gshift[indx >> 1])));
- vfloat p1 = onev / (epsv + vabsf(rinv - LVFU(gshift[(indx - GRBdir1) >> 1])));
- vfloat p2 = onev / (epsv + vabsf(rinv - LVFU(gshift[((rr - GRBdir0) * ts + cc) >> 1])));
- vfloat p3 = onev / (epsv + vabsf(rinv - LVFU(gshift[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1])));
-
- grbdiffint = vself(cmask, (p0 * LVFU(grbdiff[indx >> 1]) + p1 * LVFU(grbdiff[(indx - GRBdir1) >> 1]) +
- p2 * LVFU(grbdiff[((rr - GRBdir0) * ts + cc) >> 1]) + p3 * LVFU(grbdiff[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1])) / (p0 + p1 + p2 + p3), grbdiffint);
-
- }
- vfloat grbdiffold = rinv - cinv;
- RBint = rinv - grbdiffint;
- RBint = vself(vmaskf_gt(vabsf(grbdiffold), vabsf(grbdiffint)), RBint, cinv);
- RBint = vself(vmaskf_lt(grbdiffold * grbdiffint, ZEROV), rinv - zd5v * (grbdiffold + grbdiffint), RBint);
- STVFU(rgb[c][indx >> 1], RBint);
- }
-#endif
- for (int c = FC(rr, cc), indx = rr * ts + cc; cc < cc1 - 8; cc += 2, indx += 2) {
- float grbdiffold = rgb[1][indx] - rgb[c][indx >> 1];
-
- //interpolate colour difference from optical R/B locations to grid locations
- float grbdiffinthfloor = intp(shifthfrac[c], grbdiff[(indx - GRBdir1) >> 1], grbdiff[indx >> 1]);
- float grbdiffinthceil = intp(shifthfrac[c], grbdiff[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1], grbdiff[((rr - GRBdir0) * ts + cc) >> 1]);
- //grbdiffint is bilinear interpolation of G-R/G-B at grid point
- float grbdiffint = intp(shiftvfrac[c], grbdiffinthceil, grbdiffinthfloor);
-
- //now determine R/B at grid points using interpolated colour differences and interpolated G value at grid point
- float RBint = rgb[1][indx] - grbdiffint;
-
- if (fabsf(RBint - rgb[c][indx >> 1]) < 0.25f * (RBint + rgb[c][indx >> 1])) {
- if (fabsf(grbdiffold) > fabsf(grbdiffint) ) {
- rgb[c][indx >> 1] = RBint;
+ for (; col < min(cc1 + left - 3, width) - 7; col+=8, indx+=8) {
+ STVFU(Gtmp[(row * width + col) >> 1], LC2VFU(rgb[1][indx]));
}
+#endif
+ for (; col < min(cc1 + left - 3, width); col+=2, indx+=2) {
+ Gtmp[(row * width + col) >> 1] = rgb[1][indx];
+ }
+ }
+ }
+
+#ifdef __SSE2__
+ vfloat zd25v = F2V(0.25f);
+#endif
+ for (int rr = 4; rr < rr1 - 4; rr++) {
+ int cc = 4 + (FC(rr, 2) & 1);
+ int indx = rr * ts + cc;
+ int c = FC(rr, cc);
+#ifdef __SSE2__
+ for (; cc < cc1 - 10; cc += 8, indx += 8) {
+ vfloat rgb1v = LC2VFU(rgb[1][indx]);
+ vfloat rgbcv = LVFU(rgb[c][indx >> 1]);
+ vfloat rgb1mv4 = LC2VFU(rgb[1][indx - v4]);
+ vfloat rgb1pv4 = LC2VFU(rgb[1][indx + v4]);
+ vfloat temp1v = vabsf(vabsf((rgb1v - rgbcv) - (rgb1pv4 - LVFU(rgb[c][(indx + v4) >> 1]))) +
+ vabsf(rgb1mv4 - LVFU(rgb[c][(indx - v4) >> 1]) - rgb1v + rgbcv) -
+ vabsf(rgb1mv4 - LVFU(rgb[c][(indx - v4) >> 1]) - rgb1pv4 + LVFU(rgb[c][(indx + v4) >> 1])));
+ STVFU(rbhpfv[indx >> 1], temp1v);
+ vfloat rgb1m4 = LC2VFU(rgb[1][indx - 4]);
+ vfloat rgb1p4 = LC2VFU(rgb[1][indx + 4]);
+ vfloat temp2v = vabsf(vabsf((rgb1v - rgbcv) - (rgb1p4 - LVFU(rgb[c][(indx + 4) >> 1]))) +
+ vabsf(rgb1m4 - LVFU(rgb[c][(indx - 4) >> 1]) - rgb1v + rgbcv) -
+ vabsf(rgb1m4 - LVFU(rgb[c][(indx - 4) >> 1]) - rgb1p4 + LVFU(rgb[c][(indx + 4) >> 1])));
+ STVFU(rbhpfh[indx >> 1], temp2v);
+
+ //low and high pass 1D filters of G in vertical/horizontal directions
+ rgb1v = vmul2f(rgb1v);
+ vfloat glpfvv = (rgb1v + LC2VFU(rgb[1][indx + v2]) + LC2VFU(rgb[1][indx - v2]));
+ vfloat glpfhv = (rgb1v + LC2VFU(rgb[1][indx + 2]) + LC2VFU(rgb[1][indx - 2]));
+ rgbcv = vmul2f(rgbcv);
+ STVFU(rblpfv[indx >> 1], zd25v * vabsf(glpfvv - (rgbcv + LVFU(rgb[c][(indx + v2) >> 1]) + LVFU(rgb[c][(indx - v2) >> 1]))));
+ STVFU(rblpfh[indx >> 1], zd25v * vabsf(glpfhv - (rgbcv + LVFU(rgb[c][(indx + 2) >> 1]) + LVFU(rgb[c][(indx - 2) >> 1]))));
+ STVFU(grblpfv[indx >> 1], zd25v * (glpfvv + (rgbcv + LVFU(rgb[c][(indx + v2) >> 1]) + LVFU(rgb[c][(indx - v2) >> 1]))));
+ STVFU(grblpfh[indx >> 1], zd25v * (glpfhv + (rgbcv + LVFU(rgb[c][(indx + 2) >> 1]) + LVFU(rgb[c][(indx - 2) >> 1]))));
+ }
+#endif
+ for (; cc < cc1 - 4; cc += 2, indx += 2) {
+ rbhpfv[indx >> 1] = fabsf(fabsf((rgb[1][indx] - rgb[c][indx >> 1]) - (rgb[1][indx + v4] - rgb[c][(indx + v4) >> 1])) +
+ fabsf((rgb[1][indx - v4] - rgb[c][(indx - v4) >> 1]) - (rgb[1][indx] - rgb[c][indx >> 1])) -
+ fabsf((rgb[1][indx - v4] - rgb[c][(indx - v4) >> 1]) - (rgb[1][indx + v4] - rgb[c][(indx + v4) >> 1])));
+ rbhpfh[indx >> 1] = fabsf(fabsf((rgb[1][indx] - rgb[c][indx >> 1]) - (rgb[1][indx + 4] - rgb[c][(indx + 4) >> 1])) +
+ fabsf((rgb[1][indx - 4] - rgb[c][(indx - 4) >> 1]) - (rgb[1][indx] - rgb[c][indx >> 1])) -
+ fabsf((rgb[1][indx - 4] - rgb[c][(indx - 4) >> 1]) - (rgb[1][indx + 4] - rgb[c][(indx + 4) >> 1])));
+
+ //low and high pass 1D filters of G in vertical/horizontal directions
+ float glpfv = (2.f * rgb[1][indx] + rgb[1][indx + v2] + rgb[1][indx - v2]);
+ float glpfh = (2.f * rgb[1][indx] + rgb[1][indx + 2] + rgb[1][indx - 2]);
+ rblpfv[indx >> 1] = 0.25f * fabsf(glpfv - (2.f * rgb[c][indx >> 1] + rgb[c][(indx + v2) >> 1] + rgb[c][(indx - v2) >> 1]));
+ rblpfh[indx >> 1] = 0.25f * fabsf(glpfh - (2.f * rgb[c][indx >> 1] + rgb[c][(indx + 2) >> 1] + rgb[c][(indx - 2) >> 1]));
+ grblpfv[indx >> 1] = 0.25f * (glpfv + (2.f * rgb[c][indx >> 1] + rgb[c][(indx + v2) >> 1] + rgb[c][(indx - v2) >> 1]));
+ grblpfh[indx >> 1] = 0.25f * (glpfh + (2.f * rgb[c][indx >> 1] + rgb[c][(indx + 2) >> 1] + rgb[c][(indx - 2) >> 1]));
+ }
+ }
+
+ for (int dir = 0; dir < 2; dir++) {
+ for (int k = 0; k < 3; k++) {
+ for (int c = 0; c < 2; c++) {
+ coeff[dir][k][c] = 0;
+ }
+ }
+ }
+
+#ifdef __SSE2__
+ vfloat zd3v = F2V(0.3f);
+ vfloat zd1v = F2V(0.1f);
+ vfloat zd5v = F2V(0.5f);
+#endif
+
+ // along line segments, find the point along each segment that minimizes the colour variance
+ // averaged over the tile; evaluate for up/down and left/right away from R/B grid point
+ for (int rr = 8; rr < rr1 - 8; rr++) {
+ int cc = 8 + (FC(rr, 2) & 1);
+ int indx = rr * ts + cc;
+ int c = FC(rr, cc);
+#ifdef __SSE2__
+ vfloat coeff00v = ZEROV;
+ vfloat coeff01v = ZEROV;
+ vfloat coeff02v = ZEROV;
+ vfloat coeff10v = ZEROV;
+ vfloat coeff11v = ZEROV;
+ vfloat coeff12v = ZEROV;
+ for (; cc < cc1 - 14; cc += 8, indx += 8) {
+ //in linear interpolation, colour differences are a quadratic function of interpolation position;
+ //solve for the interpolation position that minimizes colour difference variance over the tile
+
+ //vertical
+ vfloat temp1 = zd3v * (LC2VFU(rgb[1][indx + ts + 1]) - LC2VFU(rgb[1][indx - ts - 1]));
+ vfloat temp2 = zd3v * (LC2VFU(rgb[1][indx - ts + 1]) - LC2VFU(rgb[1][indx + ts - 1]));
+ vfloat gdiffvv = (LC2VFU(rgb[1][indx + ts]) - LC2VFU(rgb[1][indx - ts])) + (temp1 - temp2);
+ vfloat deltgrbv = LVFU(rgb[c][indx >> 1]) - LC2VFU(rgb[1][indx]);
+
+ vfloat gradwtvv = (LVFU(rbhpfv[indx >> 1]) + zd5v * (LVFU(rbhpfv[(indx >> 1) + 1]) + LVFU(rbhpfv[(indx >> 1) - 1]))) * (LVFU(grblpfv[(indx >> 1) - v1]) + LVFU(grblpfv[(indx >> 1) + v1])) / (epsv + zd1v * (LVFU(grblpfv[(indx >> 1) - v1]) + LVFU(grblpfv[(indx >> 1) + v1])) + LVFU(rblpfv[(indx >> 1) - v1]) + LVFU(rblpfv[(indx >> 1) + v1]));
+
+ coeff00v += gradwtvv * deltgrbv * deltgrbv;
+ coeff01v += gradwtvv * gdiffvv * deltgrbv;
+ coeff02v += gradwtvv * gdiffvv * gdiffvv;
+
+ //horizontal
+ vfloat gdiffhv = (LC2VFU(rgb[1][indx + 1]) - LC2VFU(rgb[1][indx - 1])) + (temp1 + temp2);
+
+ vfloat gradwthv = (LVFU(rbhpfh[indx >> 1]) + zd5v * (LVFU(rbhpfh[(indx >> 1) + v1]) + LVFU(rbhpfh[(indx >> 1) - v1]))) * (LVFU(grblpfh[(indx >> 1) - 1]) + LVFU(grblpfh[(indx >> 1) + 1])) / (epsv + zd1v * (LVFU(grblpfh[(indx >> 1) - 1]) + LVFU(grblpfh[(indx >> 1) + 1])) + LVFU(rblpfh[(indx >> 1) - 1]) + LVFU(rblpfh[(indx >> 1) + 1]));
+
+ coeff10v += gradwthv * deltgrbv * deltgrbv;
+ coeff11v += gradwthv * gdiffhv * deltgrbv;
+ coeff12v += gradwthv * gdiffhv * gdiffhv;
+ }
+
+ coeff[0][0][c>>1] += vhadd(coeff00v);
+ coeff[0][1][c>>1] += vhadd(coeff01v);
+ coeff[0][2][c>>1] += vhadd(coeff02v);
+ coeff[1][0][c>>1] += vhadd(coeff10v);
+ coeff[1][1][c>>1] += vhadd(coeff11v);
+ coeff[1][2][c>>1] += vhadd(coeff12v);
+
+#endif
+ for (; cc < cc1 - 8; cc += 2, indx += 2) {
+ //in linear interpolation, colour differences are a quadratic function of interpolation position;
+ //solve for the interpolation position that minimizes colour difference variance over the tile
+
+ //vertical
+ float gdiff = (rgb[1][indx + ts] - rgb[1][indx - ts]) + 0.3f * (rgb[1][indx + ts + 1] - rgb[1][indx - ts + 1] + rgb[1][indx + ts - 1] - rgb[1][indx - ts - 1]);
+ float deltgrb = (rgb[c][indx >> 1] - rgb[1][indx]);
+
+ float gradwt = (rbhpfv[indx >> 1] + 0.5f * (rbhpfv[(indx >> 1) + 1] + rbhpfv[(indx >> 1) - 1])) * (grblpfv[(indx >> 1) - v1] + grblpfv[(indx >> 1) + v1]) / (eps + 0.1f * (grblpfv[(indx >> 1) - v1] + grblpfv[(indx >> 1) + v1]) + rblpfv[(indx >> 1) - v1] + rblpfv[(indx >> 1) + v1]);
+
+ coeff[0][0][c>>1] += gradwt * deltgrb * deltgrb;
+ coeff[0][1][c>>1] += gradwt * gdiff * deltgrb;
+ coeff[0][2][c>>1] += gradwt * gdiff * gdiff;
+
+ //horizontal
+ gdiff = (rgb[1][indx + 1] - rgb[1][indx - 1]) + 0.3f * (rgb[1][indx + 1 + ts] - rgb[1][indx - 1 + ts] + rgb[1][indx + 1 - ts] - rgb[1][indx - 1 - ts]);
+
+ gradwt = (rbhpfh[indx >> 1] + 0.5f * (rbhpfh[(indx >> 1) + v1] + rbhpfh[(indx >> 1) - v1])) * (grblpfh[(indx >> 1) - 1] + grblpfh[(indx >> 1) + 1]) / (eps + 0.1f * (grblpfh[(indx >> 1) - 1] + grblpfh[(indx >> 1) + 1]) + rblpfh[(indx >> 1) - 1] + rblpfh[(indx >> 1) + 1]);
+
+ coeff[1][0][c>>1] += gradwt * deltgrb * deltgrb;
+ coeff[1][1][c>>1] += gradwt * gdiff * deltgrb;
+ coeff[1][2][c>>1] += gradwt * gdiff * gdiff;
+
+ // In Mathematica,
+ // f[x_]=Expand[Total[Flatten[
+ // ((1-x) RotateLeft[Gint,shift1]+x RotateLeft[Gint,shift2]-cfapad)^2[[dv;;-1;;2,dh;;-1;;2]]]]];
+ // extremum = -.5Coefficient[f[x],x]/Coefficient[f[x],x^2]
+ }
+ }
+
+ for (int dir = 0; dir < 2; dir++) {
+ for (int k = 0; k < 3; k++) {
+ for (int c = 0; c < 2; c++) {
+ coeff[dir][k][c] *= 0.25f;
+ if (k == 1) {
+ coeff[dir][k][c] *= 0.3125f;
+ } else if (k == 2) {
+ coeff[dir][k][c] *= SQR(0.3125f);
+ }
+ }
+ }
+ }
+
+ for (int c = 0; c < 2; c++) {
+ for (int dir = 0; dir < 2; dir++) { // vert/hor
+
+ // CAshift[dir][c] are the locations
+ // that minimize colour difference variances;
+ // This is the approximate _optical_ location of the R/B pixels
+ if (coeff[dir][2][c] > eps2) {
+ CAshift[dir][c] = coeff[dir][1][c] / coeff[dir][2][c];
+ blockwt[vblock * hblsz + hblock] = coeff[dir][2][c] / (eps + coeff[dir][0][c]) ;
+ } else {
+ CAshift[dir][c] = 17.0;
+ blockwt[vblock * hblsz + hblock] = 0;
+ }
+
+ //data structure = CAshift[vert/hor][colour]
+ //dir : 0=vert, 1=hor
+
+ //offset gives NW corner of square containing the min; dir : 0=vert, 1=hor
+ if (fabsf(CAshift[dir][c]) < 2.0f) {
+ blockavethr[dir][c] += CAshift[dir][c];
+ blocksqavethr[dir][c] += SQR(CAshift[dir][c]);
+ blockdenomthr[dir][c] += 1;
+ }
+ //evaluate the shifts to the location that minimizes CA within the tile
+ blockshifts[vblock * hblsz + hblock][c][dir] = CAshift[dir][c]; //vert/hor CA shift for R/B
+ }//vert/hor
+ }//colour
+
+ if (plistener) {
+ progresscounter++;
+
+ if (progresscounter % 8 == 0) {
+ #pragma omp critical (cadetectpass1)
+ {
+ progress += 4.0 * SQR(ts - border2) / (iterations * height * width);
+ progress = std::min(progress, 1.0);
+ plistener->setProgress(progress);
+ }
+ }
+ }
+ }
+ }
+ //end of diagnostic pass
+ #pragma omp critical (cadetectpass2)
+ {
+ for (int dir = 0; dir < 2; dir++) {
+ for (int c = 0; c < 2; c++) {
+ blockdenom[dir][c] += blockdenomthr[dir][c];
+ blocksqave[dir][c] += blocksqavethr[dir][c];
+ blockave[dir][c] += blockavethr[dir][c];
+ }
+ }
+ }
+ #pragma omp barrier
+
+ #pragma omp single
+ {
+ for (int dir = 0; dir < 2; dir++)
+ for (int c = 0; c < 2; c++) {
+ if (blockdenom[dir][c]) {
+ blockvar[dir][c] = blocksqave[dir][c] / blockdenom[dir][c] - SQR(blockave[dir][c] / blockdenom[dir][c]);
} else {
+ processpasstwo = false;
+ std::cout << "blockdenom vanishes" << std::endl;
+ break;
+ }
+ }
- //gradient weights using difference from G at CA shift points and G at grid points
- float p0 = 1.f / (eps + fabsf(rgb[1][indx] - gshift[indx >> 1]));
- float p1 = 1.f / (eps + fabsf(rgb[1][indx] - gshift[(indx - GRBdir1) >> 1]));
- float p2 = 1.f / (eps + fabsf(rgb[1][indx] - gshift[((rr - GRBdir0) * ts + cc) >> 1]));
- float p3 = 1.f / (eps + fabsf(rgb[1][indx] - gshift[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1]));
-
- grbdiffint = (p0 * grbdiff[indx >> 1] + p1 * grbdiff[(indx - GRBdir1) >> 1] +
- p2 * grbdiff[((rr - GRBdir0) * ts + cc) >> 1] + p3 * grbdiff[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1]) / (p0 + p1 + p2 + p3) ;
-
- //now determine R/B at grid points using interpolated colour differences and interpolated G value at grid point
- if (fabsf(grbdiffold) > fabsf(grbdiffint) ) {
- rgb[c][indx >> 1] = rgb[1][indx] - grbdiffint;
+ //now prepare for CA correction pass
+ //first, fill border blocks of blockshift array
+ if (processpasstwo) {
+ for (int vblock = 1; vblock < vblsz - 1; vblock++) { //left and right sides
+ for (int c = 0; c < 2; c++) {
+ for (int i = 0; i < 2; i++) {
+ blockshifts[vblock * hblsz][c][i] = blockshifts[(vblock) * hblsz + 2][c][i];
+ blockshifts[vblock * hblsz + hblsz - 1][c][i] = blockshifts[(vblock) * hblsz + hblsz - 3][c][i];
}
}
+ }
- //if colour difference interpolation overshot the correction, just desaturate
- if (grbdiffold * grbdiffint < 0) {
- rgb[c][indx >> 1] = rgb[1][indx] - 0.5f * (grbdiffold + grbdiffint);
+ for (int hblock = 0; hblock < hblsz; hblock++) { //top and bottom sides
+ for (int c = 0; c < 2; c++) {
+ for (int i = 0; i < 2; i++) {
+ blockshifts[hblock][c][i] = blockshifts[2 * hblsz + hblock][c][i];
+ blockshifts[(vblsz - 1)*hblsz + hblock][c][i] = blockshifts[(vblsz - 3) * hblsz + hblock][c][i];
+ }
+ }
+ }
+
+ //end of filling border pixels of blockshift array
+
+ //initialize fit arrays
+ double polymat[2][2][256], shiftmat[2][2][16];
+
+ for (int i = 0; i < 256; i++) {
+ polymat[0][0][i] = polymat[0][1][i] = polymat[1][0][i] = polymat[1][1][i] = 0;
+ }
+
+ for (int i = 0; i < 16; i++) {
+ shiftmat[0][0][i] = shiftmat[0][1][i] = shiftmat[1][0][i] = shiftmat[1][1][i] = 0;
+ }
+
+ int numblox[2] = {0, 0};
+
+ for (int vblock = 1; vblock < vblsz - 1; vblock++) {
+ for (int hblock = 1; hblock < hblsz - 1; hblock++) {
+ // block 3x3 median of blockshifts for robustness
+ for (int c = 0; c < 2; c ++) {
+ float bstemp[2];
+ for (int dir = 0; dir < 2; dir++) {
+ //temporary storage for median filter
+ const std::array p = {
+ blockshifts[(vblock - 1) * hblsz + hblock - 1][c][dir],
+ blockshifts[(vblock - 1) * hblsz + hblock][c][dir],
+ blockshifts[(vblock - 1) * hblsz + hblock + 1][c][dir],
+ blockshifts[(vblock) * hblsz + hblock - 1][c][dir],
+ blockshifts[(vblock) * hblsz + hblock][c][dir],
+ blockshifts[(vblock) * hblsz + hblock + 1][c][dir],
+ blockshifts[(vblock + 1) * hblsz + hblock - 1][c][dir],
+ blockshifts[(vblock + 1) * hblsz + hblock][c][dir],
+ blockshifts[(vblock + 1) * hblsz + hblock + 1][c][dir]
+ };
+ bstemp[dir] = median(p);
+ }
+
+ //now prepare coefficient matrix; use only data points within caAutostrength/2 std devs of zero
+ if (SQR(bstemp[0]) > caAutostrength * blockvar[0][c] || SQR(bstemp[1]) > caAutostrength * blockvar[1][c]) {
+ continue;
+ }
+
+ numblox[c]++;
+
+ for (int dir = 0; dir < 2; dir++) {
+ double powVblockInit = 1.0;
+ for (int i = 0; i < polyord; i++) {
+ double powHblockInit = 1.0;
+ for (int j = 0; j < polyord; j++) {
+ double powVblock = powVblockInit;
+ for (int m = 0; m < polyord; m++) {
+ double powHblock = powHblockInit;
+ for (int n = 0; n < polyord; n++) {
+ polymat[c][dir][numpar * (polyord * i + j) + (polyord * m + n)] += powVblock * powHblock * blockwt[vblock * hblsz + hblock];
+ powHblock *= hblock;
+ }
+ powVblock *= vblock;
+ }
+ shiftmat[c][dir][(polyord * i + j)] += powVblockInit * powHblockInit * bstemp[dir] * blockwt[vblock * hblsz + hblock];
+ powHblockInit *= hblock;
+ }
+ powVblockInit *= vblock;
+ }//monomials
+ }//dir
+ }//c
+ }//blocks
+ }
+ numblox[1] = min(numblox[0], numblox[1]);
+
+ //if too few data points, restrict the order of the fit to linear
+ if (numblox[1] < 32) {
+ polyord = 2;
+ numpar = 4;
+
+ if (numblox[1] < 10) {
+ std::cout << "numblox = " << numblox[1] << std::endl;
+ processpasstwo = false;
+ }
+ }
+
+ if (processpasstwo) {
+ //fit parameters to blockshifts
+ for (int c = 0; c < 2; c++) {
+ for (int dir = 0; dir < 2; dir++) {
+ if (!LinEqSolve(numpar, polymat[c][dir], shiftmat[c][dir], fitparams[c][dir])) {
+ std::cout << "CA correction pass failed -- can't solve linear equations for colour %d direction " << c << std::endl;
+ processpasstwo = false;
+ }
+ }
}
}
}
-
- // copy CA corrected results to temporary image matrix
- for (int rr = border; rr < rr1 - border; rr++) {
- int c = FC(rr + top, left + border + (FC(rr + top, 2) & 1));
- int row = rr + top;
- int cc = border + (FC(rr, 2) & 1);
- int indx = (row * width + cc + left) >> 1;
- int indx1 = (rr * ts + cc) >> 1;
-#ifdef __SSE2__
- for (; indx < (row * width + cc1 - border - 7 + left) >> 1; indx+=4, indx1 += 4) {
- STVFU(RawDataTmp[indx], c65535v * LVFU(rgb[c][indx1]));
- }
-#endif
- for (; indx < (row * width + cc1 - border + left) >> 1; indx++, indx1++) {
- RawDataTmp[indx] = 65535.f * rgb[c][indx1];
- }
- }
-
- if(plistener) {
- progresscounter++;
-
- if(progresscounter % 8 == 0)
- #pragma omp critical (cacorrect)
- {
- progress += (double)(8.0 * (ts - border2) * (ts - border2)) / (2 * height * width);
-
- if (progress > 1.0) {
- progress = 1.0;
- }
-
- plistener->setProgress(progress);
- }
- }
-
- }
-
- #pragma omp barrier
-// copy temporary image matrix back to image matrix
- #pragma omp for
-
- for(int row = 0; row < height; row++) {
- int col = FC(row, 0) & 1;
- int indx = (row * width + col) >> 1;
-#ifdef __SSE2__
- for(; col < width - 7; col += 8, indx += 4) {
- STC2VFU(rawData[row][col], LVFU(RawDataTmp[indx]));
- }
-#endif
- for(; col < width - (W & 1); col += 2, indx++) {
- rawData[row][col] = RawDataTmp[indx];
+ //fitparams[polyord*i+j] gives the coefficients of (vblock^i hblock^j) in a polynomial fit for i,j<=4
}
+ //end of initialization for CA correction pass
+ //only executed if autoCA is true
}
- }
+ // Main algorithm: Tile loop
+ if (processpasstwo) {
+ float* grbdiff = (float (*)) (data + 2 * sizeof(float) * ts * ts + 3 * 64); // there is no overlap in buffer usage => share
+ //green interpolated to optical sample points for R/B
+ float* gshift = (float (*)) (data + 2 * sizeof(float) * ts * ts + sizeof(float) * ts * tsh + 4 * 64); // there is no overlap in buffer usage => share
+ #pragma omp for schedule(dynamic) collapse(2)
+ for (int top = -border; top < height; top += ts - border2) {
+ for (int left = -border; left < width - (W & 1); left += ts - border2) {
+ memset(bufferThr, 0, buffersizePassTwo);
+ float lblockshifts[2][2];
+ const int vblock = ((top + border) / (ts - border2)) + 1;
+ const int hblock = ((left + border) / (ts - border2)) + 1;
+ const int bottom = min(top + ts, height + border);
+ const int right = min(left + ts, width - (W & 1) + border);
+ const int rr1 = bottom - top;
+ const int cc1 = right - left;
- // clean up
- free(bufferThr);
+ const int rrmin = top < 0 ? border : 0;
+ const int rrmax = bottom > height ? height - top : rr1;
+ const int ccmin = left < 0 ? border : 0;
+ const int ccmax = (right > width - (W & 1)) ? width - (W & 1) - left : cc1;
+
+ // rgb from input CFA data
+ // rgb values should be floating point number between 0 and 1
+ // after white balance multipliers are applied
+
+#ifdef __SSE2__
+ vfloat c65535v = F2V(65535.f);
+ vmask gmask = _mm_set_epi32(0, 0xffffffff, 0, 0xffffffff);
+#endif
+ for (int rr = rrmin; rr < rrmax; rr++) {
+ int row = rr + top;
+ int cc = ccmin;
+ int col = cc + left;
+ int indx = row * width + col;
+ int indx1 = rr * ts + cc;
+#ifdef __SSE2__
+ int c = FC(rr, cc);
+ if (c & 1) {
+ rgb[1][indx1] = rawData[row][col] / 65535.f;
+ indx++;
+ indx1++;
+ cc++;
+ col++;
+ c = FC(rr, cc);
+ }
+ for (; cc < ccmax - 7; cc += 8, col += 8, indx += 8, indx1 += 8) {
+ vfloat val1v = LVFU(rawData[row][col]) / c65535v;
+ vfloat val2v = LVFU(rawData[row][col + 4]) / c65535v;
+ STVFU(rgb[c][indx1 >> 1], _mm_shuffle_ps(val1v, val2v, _MM_SHUFFLE(2, 0, 2, 0)));
+ vfloat gtmpv = LVFU(Gtmp[indx >> 1]);
+ STVFU(rgb[1][indx1], vself(gmask, PERMUTEPS(gtmpv, _MM_SHUFFLE(1, 1, 0, 0)), val1v));
+ STVFU(rgb[1][indx1 + 4], vself(gmask, PERMUTEPS(gtmpv, _MM_SHUFFLE(3, 3, 2, 2)), val2v));
+ }
+#endif
+ for (; cc < ccmax; cc++, col++, indx++, indx1++) {
+ int c = FC(rr, cc);
+ rgb[c][indx1 >> ((c & 1) ^ 1)] = rawData[row][col] / 65535.f;
+
+ if ((c & 1) == 0) {
+ rgb[1][indx1] = Gtmp[indx >> 1];
+ }
+ }
+ }
+
+ //fill borders
+ if (rrmin > 0) {
+ for (int rr = 0; rr < border; rr++) {
+ for (int cc = ccmin; cc < ccmax; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][((border2 - rr) * ts + cc) >> ((c & 1) ^ 1)];
+ rgb[1][rr * ts + cc] = rgb[1][(border2 - rr) * ts + cc];
+ }
+ }
+ }
+
+ if (rrmax < rr1) {
+ for (int rr = 0; rr < std::min(border, rr1 - rrmax); rr++) {
+ for (int cc = ccmin; cc < ccmax; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = (rawData[(height - rr - 2)][left + cc]) / 65535.f;
+ if ((c & 1) == 0) {
+ rgb[1][(rrmax + rr)*ts + cc] = Gtmp[((height - rr - 2) * width + left + cc) >> 1];
+ }
+ }
+ }
+ }
+
+ if (ccmin > 0) {
+ for (int rr = rrmin; rr < rrmax; rr++) {
+ for (int cc = 0; cc < border; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = rgb[c][(rr * ts + border2 - cc) >> ((c & 1) ^ 1)];
+ rgb[1][rr * ts + cc] = rgb[1][rr * ts + border2 - cc];
+ }
+ }
+ }
+
+ if (ccmax < cc1) {
+ for (int rr = rrmin; rr < rrmax; rr++) {
+ for (int cc = 0; cc < std::min(border, cc1 - ccmax); cc++) {
+ int c = FC(rr, cc);
+ rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = (rawData[(top + rr)][(width - cc - 2)]) / 65535.f;
+ if ((c & 1) == 0) {
+ rgb[1][rr * ts + ccmax + cc] = Gtmp[((top + rr) * width + (width - cc - 2)) >> 1];
+ }
+ }
+ }
+ }
+
+ //also, fill the image corners
+ if (rrmin > 0 && ccmin > 0) {
+ for (int rr = 0; rr < border; rr++) {
+ for (int cc = 0; cc < border; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][(rr * ts + cc) >> ((c & 1) ^ 1)] = (rawData[border2 - rr][border2 - cc]) / 65535.f;
+ if ((c & 1) == 0) {
+ rgb[1][rr * ts + cc] = Gtmp[((border2 - rr) * width + border2 - cc) >> 1];
+ }
+ }
+ }
+ }
+
+ if (rrmax < rr1 && ccmax < cc1) {
+ for (int rr = 0; rr < std::min(border, rr1 - rrmax); rr++) {
+ for (int cc = 0; cc < std::min(border, cc1 - ccmax); cc++) {
+ int c = FC(rr, cc);
+ rgb[c][((rrmax + rr)*ts + ccmax + cc) >> ((c & 1) ^ 1)] = (rawData[(height - rr - 2)][(width - cc - 2)]) / 65535.f;
+ if ((c & 1) == 0) {
+ rgb[1][(rrmax + rr)*ts + ccmax + cc] = Gtmp[((height - rr - 2) * width + (width - cc - 2)) >> 1];
+ }
+ }
+ }
+ }
+
+ if (rrmin > 0 && ccmax < cc1) {
+ for (int rr = 0; rr < border; rr++) {
+ for (int cc = 0; cc < std::min(border, cc1 - ccmax); cc++) {
+ int c = FC(rr, cc);
+ rgb[c][(rr * ts + ccmax + cc) >> ((c & 1) ^ 1)] = (rawData[(border2 - rr)][(width - cc - 2)]) / 65535.f;
+ if ((c & 1) == 0) {
+ rgb[1][rr * ts + ccmax + cc] = Gtmp[((border2 - rr) * width + (width - cc - 2)) >> 1];
+ }
+ }
+ }
+ }
+
+ if (rrmax < rr1 && ccmin > 0) {
+ for (int rr = 0; rr < std::min(border, rr1 - rrmax); rr++) {
+ for (int cc = 0; cc < border; cc++) {
+ int c = FC(rr, cc);
+ rgb[c][((rrmax + rr)*ts + cc) >> ((c & 1) ^ 1)] = (rawData[(height - rr - 2)][(border2 - cc)]) / 65535.f;
+ if ((c & 1) == 0) {
+ rgb[1][(rrmax + rr)*ts + cc] = Gtmp[((height - rr - 2) * width + (border2 - cc)) >> 1];
+ }
+ }
+ }
+ }
+ //end of border fill
+
+ if (!autoCA || fitParamsIn) {
+#ifdef __SSE2__
+ const vfloat onev = F2V(1.f);
+ const vfloat epsv = F2V(eps);
+#endif
+ //manual CA correction; use red/blue slider values to set CA shift parameters
+ for (int rr = 3; rr < rr1 - 3; rr++) {
+ int cc = 3 + FC(rr, 1), c = FC(rr,cc), indx = rr * ts + cc;
+#ifdef __SSE2__
+ for (; cc < cc1 - 10; cc += 8, indx += 8) {
+ //compute directional weights using image gradients
+ vfloat val1v = epsv + vabsf(LC2VFU(rgb[1][(rr + 1) * ts + cc]) - LC2VFU(rgb[1][(rr - 1) * ts + cc]));
+ vfloat val2v = epsv + vabsf(LC2VFU(rgb[1][indx + 1]) - LC2VFU(rgb[1][indx - 1]));
+ vfloat wtuv = onev / SQRV(val1v + vabsf(LVFU(rgb[c][(rr * ts + cc) >> 1]) - LVFU(rgb[c][((rr - 2) * ts + cc) >> 1])) + vabsf(LC2VFU(rgb[1][(rr - 1) * ts + cc]) - LC2VFU(rgb[1][(rr - 3) * ts + cc])));
+ vfloat wtdv = onev / SQRV(val1v + vabsf(LVFU(rgb[c][(rr * ts + cc) >> 1]) - LVFU(rgb[c][((rr + 2) * ts + cc) >> 1])) + vabsf(LC2VFU(rgb[1][(rr + 1) * ts + cc]) - LC2VFU(rgb[1][(rr + 3) * ts + cc])));
+ vfloat wtlv = onev / SQRV(val2v + vabsf(LVFU(rgb[c][indx >> 1]) - LVFU(rgb[c][(indx - 2) >> 1])) + vabsf(LC2VFU(rgb[1][indx - 1]) - LC2VFU(rgb[1][indx - 3])));
+ vfloat wtrv = onev / SQRV(val2v + vabsf(LVFU(rgb[c][indx >> 1]) - LVFU(rgb[c][(indx + 2) >> 1])) + vabsf(LC2VFU(rgb[1][indx + 1]) - LC2VFU(rgb[1][indx + 3])));
+
+ //store in rgb array the interpolated G value at R/B grid points using directional weighted average
+ STC2VFU(rgb[1][indx], (wtuv * LC2VFU(rgb[1][indx - v1]) + wtdv * LC2VFU(rgb[1][indx + v1]) + wtlv * LC2VFU(rgb[1][indx - 1]) + wtrv * LC2VFU(rgb[1][indx + 1])) / (wtuv + wtdv + wtlv + wtrv));
+ }
+#endif
+ for (; cc < cc1 - 3; cc += 2, indx += 2) {
+ //compute directional weights using image gradients
+ float wtu = 1.f / SQR(eps + fabsf(rgb[1][(rr + 1) * ts + cc] - rgb[1][(rr - 1) * ts + cc]) + fabsf(rgb[c][(rr * ts + cc) >> 1] - rgb[c][((rr - 2) * ts + cc) >> 1]) + fabsf(rgb[1][(rr - 1) * ts + cc] - rgb[1][(rr - 3) * ts + cc]));
+ float wtd = 1.f / SQR(eps + fabsf(rgb[1][(rr + 1) * ts + cc] - rgb[1][(rr - 1) * ts + cc]) + fabsf(rgb[c][(rr * ts + cc) >> 1] - rgb[c][((rr + 2) * ts + cc) >> 1]) + fabsf(rgb[1][(rr + 1) * ts + cc] - rgb[1][(rr + 3) * ts + cc]));
+ float wtl = 1.f / SQR(eps + fabsf(rgb[1][rr * ts + cc + 1] - rgb[1][rr * ts + cc - 1]) + fabsf(rgb[c][(rr * ts + cc) >> 1] - rgb[c][(rr * ts + cc - 2) >> 1]) + fabsf(rgb[1][rr * ts + cc - 1] - rgb[1][rr * ts + cc - 3]));
+ float wtr = 1.f / SQR(eps + fabsf(rgb[1][rr * ts + cc + 1] - rgb[1][rr * ts + cc - 1]) + fabsf(rgb[c][(rr * ts + cc) >> 1] - rgb[c][(rr * ts + cc + 2) >> 1]) + fabsf(rgb[1][rr * ts + cc + 1] - rgb[1][rr * ts + cc + 3]));
+
+ //store in rgb array the interpolated G value at R/B grid points using directional weighted average
+ rgb[1][indx] = (wtu * rgb[1][indx - v1] + wtd * rgb[1][indx + v1] + wtl * rgb[1][indx - 1] + wtr * rgb[1][indx + 1]) / (wtu + wtd + wtl + wtr);
+ }
+ }
+ }
+
+ if (!autoCA) {
+ float hfrac = -((float)(hblock - 0.5) / (hblsz - 2) - 0.5);
+ float vfrac = -((float)(vblock - 0.5) / (vblsz - 2) - 0.5) * height / width;
+ lblockshifts[0][0] = 2 * vfrac * cared;
+ lblockshifts[0][1] = 2 * hfrac * cared;
+ lblockshifts[1][0] = 2 * vfrac * cablue;
+ lblockshifts[1][1] = 2 * hfrac * cablue;
+ } else {
+ //CA auto correction; use CA diagnostic pass to set shift parameters
+ lblockshifts[0][0] = lblockshifts[0][1] = 0;
+ lblockshifts[1][0] = lblockshifts[1][1] = 0;
+ double powVblock = 1.0;
+ for (int i = 0; i < polyord; i++) {
+ double powHblock = powVblock;
+ for (int j = 0; j < polyord; j++) {
+ lblockshifts[0][0] += powHblock * fitparams[0][0][polyord * i + j];
+ lblockshifts[0][1] += powHblock * fitparams[0][1][polyord * i + j];
+ lblockshifts[1][0] += powHblock * fitparams[1][0][polyord * i + j];
+ lblockshifts[1][1] += powHblock * fitparams[1][1][polyord * i + j];
+ powHblock *= hblock;
+ }
+ powVblock *= vblock;
+ }
+ constexpr float bslim = 3.99; //max allowed CA shift
+ lblockshifts[0][0] = LIM(lblockshifts[0][0], -bslim, bslim);
+ lblockshifts[0][1] = LIM(lblockshifts[0][1], -bslim, bslim);
+ lblockshifts[1][0] = LIM(lblockshifts[1][0], -bslim, bslim);
+ lblockshifts[1][1] = LIM(lblockshifts[1][1], -bslim, bslim);
+ }//end of setting CA shift parameters
+
+ for (int c = 0; c < 3; c += 2) {
+
+ //some parameters for the bilinear interpolation
+ shiftvfloor[c] = floor((float)lblockshifts[c>>1][0]);
+ shiftvceil[c] = ceil((float)lblockshifts[c>>1][0]);
+ if (lblockshifts[c>>1][0] < 0.f) {
+ std::swap(shiftvfloor[c], shiftvceil[c]);
+ }
+ shiftvfrac[c] = fabs(lblockshifts[c>>1][0] - shiftvfloor[c]);
+
+ shifthfloor[c] = floor((float)lblockshifts[c>>1][1]);
+ shifthceil[c] = ceil((float)lblockshifts[c>>1][1]);
+ if (lblockshifts[c>>1][1] < 0.f) {
+ std::swap(shifthfloor[c], shifthceil[c]);
+ }
+ shifthfrac[c] = fabs(lblockshifts[c>>1][1] - shifthfloor[c]);
+
+ GRBdir[0][c] = lblockshifts[c>>1][0] > 0 ? 2 : -2;
+ GRBdir[1][c] = lblockshifts[c>>1][1] > 0 ? 2 : -2;
+ }
+
+ for (int rr = 4; rr < rr1 - 4; rr++) {
+ int cc = 4 + (FC(rr, 2) & 1);
+ int c = FC(rr, cc);
+ int indx = (rr * ts + cc) >> 1;
+ int indxfc = (rr + shiftvfloor[c]) * ts + cc + shifthceil[c];
+ int indxff = (rr + shiftvfloor[c]) * ts + cc + shifthfloor[c];
+ int indxcc = (rr + shiftvceil[c]) * ts + cc + shifthceil[c];
+ int indxcf = (rr + shiftvceil[c]) * ts + cc + shifthfloor[c];
+#ifdef __SSE2__
+ vfloat shifthfracv = F2V(shifthfrac[c]);
+ vfloat shiftvfracv = F2V(shiftvfrac[c]);
+ for (; cc < cc1 - 10; cc += 8, indxfc += 8, indxff += 8, indxcc += 8, indxcf += 8, indx += 4) {
+ //perform CA correction using colour ratios or colour differences
+ vfloat Ginthfloorv = vintpf(shifthfracv, LC2VFU(rgb[1][indxfc]), LC2VFU(rgb[1][indxff]));
+ vfloat Ginthceilv = vintpf(shifthfracv, LC2VFU(rgb[1][indxcc]), LC2VFU(rgb[1][indxcf]));
+ //Gint is bilinear interpolation of G at CA shift point
+ vfloat Gintv = vintpf(shiftvfracv, Ginthceilv, Ginthfloorv);
+
+ //determine R/B at grid points using colour differences at shift point plus interpolated G value at grid point
+ //but first we need to interpolate G-R/G-B to grid points...
+ STVFU(grbdiff[indx], Gintv - LVFU(rgb[c][indx]));
+ STVFU(gshift[indx], Gintv);
+ }
+
+#endif
+ for (; cc < cc1 - 4; cc += 2, indxfc += 2, indxff += 2, indxcc += 2, indxcf += 2, ++indx) {
+ //perform CA correction using colour ratios or colour differences
+ float Ginthfloor = intp(shifthfrac[c], rgb[1][indxfc], rgb[1][indxff]);
+ float Ginthceil = intp(shifthfrac[c], rgb[1][indxcc], rgb[1][indxcf]);
+ //Gint is bilinear interpolation of G at CA shift point
+ float Gint = intp(shiftvfrac[c], Ginthceil, Ginthfloor);
+
+ //determine R/B at grid points using colour differences at shift point plus interpolated G value at grid point
+ //but first we need to interpolate G-R/G-B to grid points...
+ grbdiff[indx] = Gint - rgb[c][indx];
+ gshift[indx] = Gint;
+ }
+ }
+
+ shifthfrac[0] /= 2.f;
+ shifthfrac[2] /= 2.f;
+ shiftvfrac[0] /= 2.f;
+ shiftvfrac[2] /= 2.f;
+
+#ifdef __SSE2__
+ vfloat zd25v = F2V(0.25f);
+ vfloat onev = F2V(1.f);
+ vfloat zd5v = F2V(0.5f);
+ vfloat epsv = F2V(eps);
+#endif
+ for (int rr = 8; rr < rr1 - 8; rr++) {
+ int cc = 8 + (FC(rr, 2) & 1);
+ int c = FC(rr, cc);
+ int GRBdir0 = GRBdir[0][c];
+ int GRBdir1 = GRBdir[1][c];
+#ifdef __SSE2__
+ vfloat shifthfracc = F2V(shifthfrac[c]);
+ vfloat shiftvfracc = F2V(shiftvfrac[c]);
+ for (int indx = rr * ts + cc; cc < cc1 - 14; cc += 8, indx += 8) {
+ //interpolate colour difference from optical R/B locations to grid locations
+ vfloat grbdiffinthfloor = vintpf(shifthfracc, LVFU(grbdiff[(indx - GRBdir1) >> 1]), LVFU(grbdiff[indx >> 1]));
+ vfloat grbdiffinthceil = vintpf(shifthfracc, LVFU(grbdiff[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1]), LVFU(grbdiff[((rr - GRBdir0) * ts + cc) >> 1]));
+ //grbdiffint is bilinear interpolation of G-R/G-B at grid point
+ vfloat grbdiffint = vintpf(shiftvfracc, grbdiffinthceil, grbdiffinthfloor);
+
+ //now determine R/B at grid points using interpolated colour differences and interpolated G value at grid point
+ vfloat cinv = LVFU(rgb[c][indx >> 1]);
+ vfloat rinv = LC2VFU(rgb[1][indx]);
+ vfloat RBint = rinv - grbdiffint;
+ vmask cmask = vmaskf_ge(vabsf(RBint - cinv), zd25v * (RBint + cinv));
+ if (_mm_movemask_ps((vfloat)cmask)) {
+ // if for any of the 4 pixels the condition is true, do the math for all 4 pixels and mask the unused out at the end
+ //gradient weights using difference from G at CA shift points and G at grid points
+ vfloat p0 = onev / (epsv + vabsf(rinv - LVFU(gshift[indx >> 1])));
+ vfloat p1 = onev / (epsv + vabsf(rinv - LVFU(gshift[(indx - GRBdir1) >> 1])));
+ vfloat p2 = onev / (epsv + vabsf(rinv - LVFU(gshift[((rr - GRBdir0) * ts + cc) >> 1])));
+ vfloat p3 = onev / (epsv + vabsf(rinv - LVFU(gshift[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1])));
+
+ grbdiffint = vself(cmask, (p0 * LVFU(grbdiff[indx >> 1]) + p1 * LVFU(grbdiff[(indx - GRBdir1) >> 1]) +
+ p2 * LVFU(grbdiff[((rr - GRBdir0) * ts + cc) >> 1]) + p3 * LVFU(grbdiff[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1])) / (p0 + p1 + p2 + p3), grbdiffint);
+
+ }
+ vfloat grbdiffold = rinv - cinv;
+ RBint = rinv - grbdiffint;
+ RBint = vself(vmaskf_gt(vabsf(grbdiffold), vabsf(grbdiffint)), RBint, cinv);
+ RBint = vself(vmaskf_lt(grbdiffold * grbdiffint, ZEROV), rinv - zd5v * (grbdiffold + grbdiffint), RBint);
+ STVFU(rgb[c][indx >> 1], RBint);
+ }
+#endif
+ for (int c = FC(rr, cc), indx = rr * ts + cc; cc < cc1 - 8; cc += 2, indx += 2) {
+ float grbdiffold = rgb[1][indx] - rgb[c][indx >> 1];
+
+ //interpolate colour difference from optical R/B locations to grid locations
+ float grbdiffinthfloor = intp(shifthfrac[c], grbdiff[(indx - GRBdir1) >> 1], grbdiff[indx >> 1]);
+ float grbdiffinthceil = intp(shifthfrac[c], grbdiff[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1], grbdiff[((rr - GRBdir0) * ts + cc) >> 1]);
+ //grbdiffint is bilinear interpolation of G-R/G-B at grid point
+ float grbdiffint = intp(shiftvfrac[c], grbdiffinthceil, grbdiffinthfloor);
+
+ //now determine R/B at grid points using interpolated colour differences and interpolated G value at grid point
+ float RBint = rgb[1][indx] - grbdiffint;
+
+ if (fabsf(RBint - rgb[c][indx >> 1]) < 0.25f * (RBint + rgb[c][indx >> 1])) {
+ if (fabsf(grbdiffold) > fabsf(grbdiffint)) {
+ rgb[c][indx >> 1] = RBint;
+ }
+ } else {
+
+ //gradient weights using difference from G at CA shift points and G at grid points
+ float p0 = 1.f / (eps + fabsf(rgb[1][indx] - gshift[indx >> 1]));
+ float p1 = 1.f / (eps + fabsf(rgb[1][indx] - gshift[(indx - GRBdir1) >> 1]));
+ float p2 = 1.f / (eps + fabsf(rgb[1][indx] - gshift[((rr - GRBdir0) * ts + cc) >> 1]));
+ float p3 = 1.f / (eps + fabsf(rgb[1][indx] - gshift[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1]));
+
+ grbdiffint = (p0 * grbdiff[indx >> 1] + p1 * grbdiff[(indx - GRBdir1) >> 1] +
+ p2 * grbdiff[((rr - GRBdir0) * ts + cc) >> 1] + p3 * grbdiff[((rr - GRBdir0) * ts + cc - GRBdir1) >> 1]) / (p0 + p1 + p2 + p3) ;
+
+ //now determine R/B at grid points using interpolated colour differences and interpolated G value at grid point
+ if (fabsf(grbdiffold) > fabsf(grbdiffint)) {
+ rgb[c][indx >> 1] = rgb[1][indx] - grbdiffint;
+ }
+ }
+
+ //if colour difference interpolation overshot the correction, just desaturate
+ if (grbdiffold * grbdiffint < 0) {
+ rgb[c][indx >> 1] = rgb[1][indx] - 0.5f * (grbdiffold + grbdiffint);
+ }
+ }
+ }
+
+ // copy CA corrected results to temporary image matrix
+ for (int rr = border; rr < rr1 - border; rr++) {
+ int c = FC(rr + top, left + border + (FC(rr + top, 2) & 1));
+ int row = rr + top;
+ int cc = border + (FC(rr, 2) & 1);
+ int indx = (row * width + cc + left) >> 1;
+ int indx1 = (rr * ts + cc) >> 1;
+#ifdef __SSE2__
+ for (; indx < (row * width + cc1 - border - 7 + left) >> 1; indx+=4, indx1 += 4) {
+ STVFU(RawDataTmp[indx], c65535v * LVFU(rgb[c][indx1]));
+ }
+#endif
+ for (; indx < (row * width + cc1 - border + left) >> 1; indx++, indx1++) {
+ RawDataTmp[indx] = 65535.f * rgb[c][indx1];
+ }
+ }
+
+ if (plistener) {
+ progresscounter++;
+
+ if (progresscounter % 8 == 0)
+ #pragma omp critical (cacorrect)
+ {
+ progress += 4.0 * SQR(ts - border2) / (iterations * height * width);
+ progress = std::min(progress, 1.0);
+ plistener->setProgress(progress);
+ }
+ }
+ }
+ }
+
+ // copy temporary image matrix back to image matrix
+ #pragma omp for
+
+ for (int row = 0; row < height; row++) {
+ int col = FC(row, 0) & 1;
+ int indx = (row * width + col) >> 1;
+#ifdef __SSE2__
+ for (; col < width - 7 - (3 * (W & 1)); col += 8, indx += 4) {
+ STC2VFU(rawData[row][col], LVFU(RawDataTmp[indx]));
+ }
+#endif
+ for (; col < width - (3 * (W & 1)); col += 2, indx++) {
+ rawData[row][col] = RawDataTmp[indx];
+ }
+ }
+
+ }
+ // clean up
+ free(bufferThr);
+ }
+ if (avoidColourshift) {
+ // to avoid or at least reduce the colour shift caused by raw ca correction we compute the per pixel difference factors
+ // of red and blue channel and apply a gaussian blur to them.
+ // Then we apply the resulting factors per pixel on the result of raw ca correction
+
+ #pragma omp parallel
+ {
+ #ifdef __SSE2__
+ const vfloat onev = F2V(1.f);
+ const vfloat twov = F2V(2.f);
+ const vfloat zd5v = F2V(0.5f);
+ #endif
+ #pragma omp for
+ for (int i = 0; i < H; ++i) {
+ const int firstCol = FC(i, 0) & 1;
+ const int colour = FC(i, firstCol);
+ const array2D* nonGreen = colour == 0 ? redFactor : blueFactor;
+ int j = firstCol;
+ #ifdef __SSE2__
+ for (; j < W - 7; j += 8) {
+ const vfloat newvals = LC2VFU(rawData[i][j]);
+ const vfloat oldvals = LVFU((*oldraw)[i][j / 2]);
+ vfloat factors = oldvals / newvals;
+ factors = vself(vmaskf_le(newvals, onev), onev, factors);
+ factors = vself(vmaskf_le(oldvals, onev), onev, factors);
+ STVFU((*nonGreen)[i/2][j/2], LIMV(factors, zd5v, twov));
+ }
+ #endif
+ for (; j < W; j += 2) {
+ (*nonGreen)[i/2][j/2] = (rawData[i][j] <= 1.f || (*oldraw)[i][j / 2] <= 1.f) ? 1.f : rtengine::LIM((*oldraw)[i][j / 2] / rawData[i][j], 0.5f, 2.f);
+ }
+ }
+
+ #pragma omp single
+ {
+ if (H % 2) {
+ // odd height => factors for one channel are not set in last row => use values of preceding row
+ const int firstCol = FC(0, 0) & 1;
+ const int colour = FC(0, firstCol);
+ const array2D* nonGreen = colour == 0 ? blueFactor : redFactor;
+ for (int j = 0; j < (W + 1) / 2; ++j) {
+ (*nonGreen)[(H + 1) / 2 - 1][j] = (*nonGreen)[(H + 1) / 2 - 2][j];
+ }
+ }
+
+ if (W % 2) {
+ // odd width => factors for one channel are not set in last column => use value of preceding column
+ const int ngRow = 1 - (FC(0, 0) & 1);
+ const int ngCol = FC(ngRow, 0) & 1;
+ const int colour = FC(ngRow, ngCol);
+ const array2D* nonGreen = colour == 0 ? redFactor : blueFactor;
+ for (int i = 0; i < (H + 1) / 2; ++i) {
+ (*nonGreen)[i][(W + 1) / 2 - 1] = (*nonGreen)[i][(W + 1) / 2 - 2];
+ }
+ }
+ }
+
+ // blur correction factors
+ gaussianBlur(*redFactor, *redFactor, (W+1)/2, (H+1)/2, 30.0);
+ gaussianBlur(*blueFactor, *blueFactor, (W+1)/2, (H+1)/2, 30.0);
+
+ // apply correction factors to avoid (reduce) colour shift
+ #pragma omp for
+ for (int i = 0; i < H; ++i) {
+ const int firstCol = FC(i, 0) & 1;
+ const int colour = FC(i, firstCol);
+ const array2D* nonGreen = colour == 0 ? redFactor : blueFactor;
+ for (int j = firstCol; j < W; j += 2) {
+ rawData[i][j] *= (*nonGreen)[i/2][j/2];
+ }
+ }
+ }
+ }
}
- if(autoCA && fitParamsTransfer && fitParamsOut) {
+ if (autoCA && fitParamsTransfer && fitParamsOut) {
// store calculated parameters
int index = 0;
- for(int c = 0; c < 2; ++c) {
- for(int d = 0; d < 2; ++d) {
- for(int e = 0; e < 16; ++e) {
+ for (int c = 0; c < 2; ++c) {
+ for (int d = 0; d < 2; ++d) {
+ for (int e = 0; e < 16; ++e) {
fitParamsTransfer[index++] = fitparams[c][d][e];
}
}
}
}
- if(freeBuffer) {
+ if (freeBuffer) {
free(buffer);
buffer = nullptr;
}
- if(plistener) {
+ if (avoidColourshift) {
+ delete oldraw;
+ delete redFactor;
+ delete blueFactor;
+ }
+
+ if (plistener) {
plistener->setProgress(1.0);
}
return buffer;
diff --git a/rtengine/camconst.json b/rtengine/camconst.json
index 23d3f4df6..fd7b4bf0f 100644
--- a/rtengine/camconst.json
+++ b/rtengine/camconst.json
@@ -1213,6 +1213,13 @@ Camera constants:
"ranges": { "white": 4050 } // nominal 4080-4093
},
+ { // Quality C
+ "make_model": [ "DJI FC2103" ],
+ "ranges": {
+ "black": 4080
+ }
+ },
+
{ // Quality B
"make_model": "FUJIFILM GFX 50S",
"dcraw_matrix": [ 11756,-4754,-874,-3056,11045,2305,-381,1457,6006 ], // DNGv9.9 D65
@@ -2496,6 +2503,11 @@ Camera constants:
"dcraw_matrix": [ 4932, -835, 141, -4878, 11868, 3437, -1138, 1961, 7067 ]
},
+ { // Quality C
+ "make_model": [ "Hasselblad H6D-100cMS" ],
+ "raw_crop": [ 64, 108, 11608, 8708 ]
+ },
+
// Dummy test entry to test the parser and show the format with all entries active
{
"make_model": "DummyMake DummyModel",
diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc
index da66bd6d8..bd9fa4b47 100644
--- a/rtengine/dcraw.cc
+++ b/rtengine/dcraw.cc
@@ -27,6 +27,8 @@
#include
#include
#include "opthelper.h"
+//#define BENCHMARK
+#include "StopWatch.h"
/*
dcraw.c -- Dave Coffin's raw photo decoder
@@ -602,6 +604,36 @@ inline unsigned CLASS getbithuff_t::operator() (int nbits, ushort *huff)
#define getbits(n) getbithuff(n,0)
#define gethuff(h) getbithuff(*h,h+1)
+inline unsigned CLASS nikbithuff_t::operator() (int nbits, ushort *huff)
+{
+ unsigned c;
+
+ if (UNLIKELY(nbits == 0)) {
+ return 0;
+ }
+ if (vbits < nbits && LIKELY((c = fgetc(ifp)) != EOF)) {
+ bitbuf = (bitbuf << 8) | c;
+ vbits += 8;
+ if (vbits < nbits && LIKELY((c = fgetc(ifp)) != EOF)) {
+ bitbuf = (bitbuf << 8) | c;
+ vbits += 8;
+ }
+ }
+ c = bitbuf << (32-vbits) >> (32-nbits);
+ if (huff) {
+ vbits -= huff[c] >> 8;
+ c = (uchar) huff[c];
+ derror(vbits < 0);
+ } else {
+ vbits -= nbits;
+ }
+ return c;
+}
+
+#define nikinit(n) nikbithuff()
+#define nikbits(n) nikbithuff(n,0)
+#define nikhuff(h) nikbithuff(*h,h+1)
+
/*
Construct a decode tree according the specification in *source.
The first 16 bytes specify how many codes should be 1-bit, 2-bit
@@ -1104,7 +1136,7 @@ void CLASS lossless_dng_load_raw()
fseek (ifp, get4(), SEEK_SET);
if (!ljpeg_start (&jh, 0)) break;
jwide = jh.wide;
- if (filters) jwide *= jh.clrs;
+ if (filters || (colors == 1 && jh.clrs > 1)) jwide *= jh.clrs;
jwide /= MIN (is_raw, tiff_samples);
switch (jh.algo) {
case 0xc1:
@@ -1188,67 +1220,101 @@ void CLASS pentax_load_raw()
void CLASS nikon_load_raw()
{
- static const uchar nikon_tree[][32] = {
- { 0,1,5,1,1,1,1,1,1,2,0,0,0,0,0,0, /* 12-bit lossy */
- 5,4,3,6,2,7,1,0,8,9,11,10,12 },
- { 0,1,5,1,1,1,1,1,1,2,0,0,0,0,0,0, /* 12-bit lossy after split */
- 0x39,0x5a,0x38,0x27,0x16,5,4,3,2,1,0,11,12,12 },
- { 0,1,4,2,3,1,2,0,0,0,0,0,0,0,0,0, /* 12-bit lossless */
- 5,4,6,3,7,2,8,1,9,0,10,11,12 },
- { 0,1,4,3,1,1,1,1,1,2,0,0,0,0,0,0, /* 14-bit lossy */
- 5,6,4,7,8,3,9,2,1,0,10,11,12,13,14 },
- { 0,1,5,1,1,1,1,1,1,1,2,0,0,0,0,0, /* 14-bit lossy after split */
- 8,0x5c,0x4b,0x3a,0x29,7,6,5,4,3,2,1,0,13,14 },
- { 0,1,4,2,2,3,1,2,0,0,0,0,0,0,0,0, /* 14-bit lossless */
- 7,6,8,5,9,4,10,3,11,12,2,0,1,13,14 } };
- ushort *huff, ver0, ver1, vpred[2][2], hpred[2], csize;
- int i, min, max, step=0, tree=0, split=0, row, col, len, shl, diff;
+ static const uchar nikon_tree[][32] = {
+ { 0,1,5,1,1,1,1,1,1,2,0,0,0,0,0,0, /* 12-bit lossy */
+ 5,4,3,6,2,7,1,0,8,9,11,10,12 },
+ { 0,1,5,1,1,1,1,1,1,2,0,0,0,0,0,0, /* 12-bit lossy after split */
+ 0x39,0x5a,0x38,0x27,0x16,5,4,3,2,1,0,11,12,12 },
+ { 0,1,4,2,3,1,2,0,0,0,0,0,0,0,0,0, /* 12-bit lossless */
+ 5,4,6,3,7,2,8,1,9,0,10,11,12 },
+ { 0,1,4,3,1,1,1,1,1,2,0,0,0,0,0,0, /* 14-bit lossy */
+ 5,6,4,7,8,3,9,2,1,0,10,11,12,13,14 },
+ { 0,1,5,1,1,1,1,1,1,1,2,0,0,0,0,0, /* 14-bit lossy after split */
+ 8,0x5c,0x4b,0x3a,0x29,7,6,5,4,3,2,1,0,13,14 },
+ { 0,1,4,2,2,3,1,2,0,0,0,0,0,0,0,0, /* 14-bit lossless */
+ 7,6,8,5,9,4,10,3,11,12,2,0,1,13,14 } };
+ ushort *huff, ver0, ver1, vpred[2][2], hpred[2], csize;
+ int max, step=0, tree=0, split=0;
- fseek (ifp, meta_offset, SEEK_SET);
- ver0 = fgetc(ifp);
- ver1 = fgetc(ifp);
- if (ver0 == 0x49 || ver1 == 0x58)
- fseek (ifp, 2110, SEEK_CUR);
- if (ver0 == 0x46) tree = 2;
- if (tiff_bps == 14) tree += 3;
- read_shorts (vpred[0], 4);
- max = 1 << tiff_bps & 0x7fff;
- if ((csize = get2()) > 1)
- step = max / (csize-1);
- if (ver0 == 0x44 && ver1 == 0x20 && step > 0) {
- for (i=0; i < csize; i++)
- curve[i*step] = get2();
- for (i=0; i < max; i++)
- curve[i] = ( curve[i-i%step]*(step-i%step) +
- curve[i-i%step+step]*(i%step) ) / step;
- fseek (ifp, meta_offset+562, SEEK_SET);
- split = get2();
- } else if (ver0 != 0x46 && csize <= 0x4001)
- read_shorts (curve, max=csize);
- while (curve[max-2] == curve[max-1]) max--;
- huff = make_decoder (nikon_tree[tree]);
- fseek (ifp, data_offset, SEEK_SET);
- getbits(-1);
- for (min=row=0; row < height; row++) {
- if (split && row == split) {
- free (huff);
- huff = make_decoder (nikon_tree[tree+1]);
- max += (min = 16) << 1;
+ fseek (ifp, meta_offset, SEEK_SET);
+ ver0 = fgetc(ifp);
+ ver1 = fgetc(ifp);
+ if (ver0 == 0x49 || ver1 == 0x58)
+ fseek (ifp, 2110, SEEK_CUR);
+ if (ver0 == 0x46) tree = 2;
+ if (tiff_bps == 14) tree += 3;
+ read_shorts (vpred[0], 4);
+ max = 1 << tiff_bps & 0x7fff;
+ if ((csize = get2()) > 1)
+ step = max / (csize-1);
+ if (ver0 == 0x44 && ver1 == 0x20 && step > 0) {
+ for (int i=0; i < csize; i++)
+ curve[i*step] = get2();
+ for (int i=0; i < max; i++)
+ curve[i] = ( curve[i-i%step]*(step-i%step) +
+ curve[i-i%step+step]*(i%step) ) / step;
+ fseek (ifp, meta_offset+562, SEEK_SET);
+ split = get2();
+ } else if (ver0 != 0x46 && csize <= 0x4001)
+ read_shorts (curve, max=csize);
+ while (curve[max-2] == curve[max-1]) max--;
+
+ // instead of accessing curve[LIM((short)hpred[col & 1],0,0x3fff)] in the inner loop, we just fill the curve with the correct values and access curve[hpred[col & 1]]
+ for(int i = 0x4000; i < 0x8000; ++i)
+ curve[i] = curve[0x3fff];
+ for(int i = 0x8000; i < 0x10000; ++i)
+ curve[i] = curve[0];
+
+ huff = make_decoder (nikon_tree[tree]);
+ fseek (ifp, data_offset, SEEK_SET);
+ nikinit();
+ if (split) {
+ for (int min = 0, row = 0; row < height; row++) {
+ if (row == split) {
+ free (huff);
+ huff = make_decoder (nikon_tree[tree+1]);
+ max += (min = 16) << 1;
+ }
+ for (int col=0; col < raw_width; col++) {
+ int i = nikhuff(huff);
+ int len = i & 15;
+ int shl = i >> 4;
+ int diff = ((nikbits(len-shl) << 1) + 1) << shl >> 1;
+ if ((diff & (1 << (len-1))) == 0)
+ diff -= (1 << len) - !shl;
+ if (col < 2) hpred[col] = vpred[row & 1][col] += diff;
+ else hpred[col & 1] += diff;
+ derror((ushort)(hpred[col & 1] + min) >= max);
+ RAW(row,col) = curve[hpred[col & 1]];
+ }
+ }
+ } else {
+ for (int row=0; row < height; row++) {
+ for (int col=0; col < 2; col++) {
+ int len = nikhuff(huff);
+ int diff = nikbits(len);
+ if ((diff & (1 << (len-1))) == 0)
+ diff -= (1 << len) - 1;
+ hpred[col] = vpred[row & 1][col] += diff;
+ derror(hpred[col] >= max);
+ RAW(row,col) = curve[hpred[col]];
+ }
+ for (int col=2; col < raw_width; col++) {
+ int len = nikhuff(huff);
+ int diff = nikbits(len);
+ if ((diff & (1 << (len-1))) == 0)
+ diff -= (1 << len) - 1;
+ hpred[col & 1] += diff;
+ derror(hpred[col & 1] >= max);
+ RAW(row,col) = curve[hpred[col & 1]];
+ }
+ }
}
- for (col=0; col < raw_width; col++) {
- i = gethuff(huff);
- len = i & 15;
- shl = i >> 4;
- diff = ((getbits(len-shl) << 1) + 1) << shl >> 1;
- if ((diff & (1 << (len-1))) == 0)
- diff -= (1 << len) - !shl;
- if (col < 2) hpred[col] = vpred[row & 1][col] += diff;
- else hpred[col & 1] += diff;
- if ((ushort)(hpred[col & 1] + min) >= max) derror();
- RAW(row,col) = curve[LIM((short)hpred[col & 1],0,0x3fff)];
+ free (huff);
+ data_error += nikbithuff.errorCount();
+ if(data_error) {
+ std::cerr << ifname << " decoded with " << data_error << " errors. File possibly corrupted." << std::endl;
}
- }
- free (huff);
}
void CLASS nikon_yuv_load_raw()
@@ -2010,7 +2076,7 @@ void CLASS parse_hasselblad_gain()
hbd.unknown1 = offset ? base + offset : 0;
fseek(ifp, 32, SEEK_CUR);
offset = get4();
- hbd.flatfield = offset ? base + offset : 0;
+ hbd.flatfield = (offset && (base + offset < ifp->size)) ? base + offset : 0;
}
void CLASS hasselblad_correct()
@@ -2080,8 +2146,12 @@ void CLASS hasselblad_correct()
ffcols = get2();
ffrows = get2();
fseek(ifp, hbd.flatfield + 16 * 2, SEEK_SET);
+ unsigned toRead = sizeof(ushort) * 4 * ffcols * ffrows;
+ if (toRead > ifp->size) { // there must be something wrong, see Issue #4748
+ return;
+ }
- ushort *ffmap = (ushort *)malloc(sizeof(*ffmap) * 4 * ffcols * ffrows);
+ ushort *ffmap = (ushort *)malloc(toRead);
for (i = 0; i < 4 * ffcols * ffrows; i++) ffmap[i] = get2();
/* Get reference values from center of field. This seems to be what Phocus does too,
diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h
index 9edc4196b..9c6ac4aec 100644
--- a/rtengine/dcraw.h
+++ b/rtengine/dcraw.h
@@ -60,6 +60,7 @@ public:
,RT_matrix_from_constant(0)
,RT_from_adobe_dng_converter(false)
,getbithuff(this,ifp,zero_after_ff)
+ ,nikbithuff(ifp)
{
memset(&hbd, 0, sizeof(hbd));
aber[0]=aber[1]=aber[2]=aber[3]=1;
@@ -214,6 +215,7 @@ protected:
int fcol (int row, int col);
void merror (void *ptr, const char *where);
void derror();
+inline void derror(bool condition) {if(UNLIKELY(condition)) ++data_error;}
ushort sget2 (uchar *s);
ushort get2();
unsigned sget4 (uchar *s);
@@ -252,6 +254,26 @@ private:
};
getbithuff_t getbithuff;
+class nikbithuff_t
+{
+public:
+ nikbithuff_t(IMFILE *&i):bitbuf(0),errors(0),vbits(0),ifp(i){}
+ void operator()() {bitbuf = vbits = 0;};
+ unsigned operator()(int nbits, ushort *huff);
+ unsigned errorCount() { return errors; }
+private:
+ inline bool derror(bool condition){
+ if (UNLIKELY(condition)) {
+ ++errors;
+ }
+ return condition;
+ }
+ unsigned bitbuf, errors;
+ int vbits;
+ IMFILE *&ifp;
+};
+nikbithuff_t nikbithuff;
+
ushort * make_decoder_ref (const uchar **source);
ushort * make_decoder (const uchar *source);
void crw_init_tables (unsigned table, ushort *huff[2]);
diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h
index d20cb70c3..29426c62d 100644
--- a/rtengine/iccmatrices.h
+++ b/rtengine/iccmatrices.h
@@ -80,15 +80,15 @@ constexpr double xyz_sRGB[3][3] = {
};
constexpr double xyz_ACESp0[3][3] = {
- {0.9525523959, 0.0, 0.0000936786},
- {0.3439664498, 0.7281660966 , -0.0721325464},
- {0.0, -0.0, 1.0088251844}
+ {0.9908526, 0.0122334, -0.0388654},
+ {0.3618807, 0.72255045 , -0.0843859},
+ {-0.0027093, 0.0082323, 0.8196880}
};
constexpr double ACESp0_xyz[3][3] = {
- {1.0498110175, 0.0, -0.0000974845},
- {-0.4959030231, 1.3733130458 , 0.0982400361},
- {0.0, 0.0, 0.9912520182}
+ {1.01583320, -0.01772807, 0.04634052},
+ {-0.50781231, 1.39131494 , 0.11915641},
+ {0.00845768, -0.01403193, 1.21893277}
};
constexpr double xyz_ACESp1[3][3] = {
diff --git a/rtengine/iimage.h b/rtengine/iimage.h
index 503f7cd44..af2969581 100644
--- a/rtengine/iimage.h
+++ b/rtengine/iimage.h
@@ -1773,8 +1773,9 @@ public:
/** @brief Saves the image to file in a tif format.
* @param fname is the name of the file
* @param bps can be 8 or 16 depending on the bits per pixels the output file will have
+ * @param isFloat is true for saving float images. Will be ignored by file format not supporting float data
@return the error code, 0 if none */
- virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, bool uncompressed = false) = 0;
+ virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false) = 0;
/** @brief Sets the progress listener if you want to follow the progress of the image saving operations (optional).
* @param pl is the pointer to the class implementing the ProgressListener interface */
virtual void setSaveProgressListener (ProgressListener* pl) = 0;
diff --git a/rtengine/image16.cc b/rtengine/image16.cc
index 20f9ab281..c014d1c06 100644
--- a/rtengine/image16.cc
+++ b/rtengine/image16.cc
@@ -60,7 +60,7 @@ Image16::~Image16()
{
}
-void Image16::getScanline(int row, unsigned char* buffer, int bps)
+void Image16::getScanline(int row, unsigned char* buffer, int bps, bool isFloat)
{
if (data == nullptr) {
@@ -74,20 +74,13 @@ void Image16::getScanline(int row, unsigned char* buffer, int bps)
}
}
-/*
- * void Image16::setScanline (int row, unsigned char* buffer, int bps, int minValue[3], int maxValue[3]);
- * has not been implemented yet, because as of now, this method is called for IIOSF_FLOATxx sample format only
- */
-void Image16::setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples, float *minValue, float *maxValue)
+void Image16::setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples)
{
if (data == nullptr) {
return;
}
- // For optimization purpose, we're assuming that this class never has to provide min/max bounds
- assert(!minValue);
-
switch (sampleFormat) {
case (IIOSF_UNSIGNED_CHAR): {
int ix = 0;
diff --git a/rtengine/image16.h b/rtengine/image16.h
index add1d6f09..1c5504bd9 100644
--- a/rtengine/image16.h
+++ b/rtengine/image16.h
@@ -55,8 +55,8 @@ public:
{
return 8 * sizeof(unsigned short);
}
- virtual void getScanline(int row, unsigned char* buffer, int bps);
- virtual void setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples, float *minValue = nullptr, float *maxValue = nullptr);
+ virtual void getScanline(int row, unsigned char* buffer, int bps, bool isFloat = false);
+ virtual void setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples);
// functions inherited from IImage16:
virtual MyMutex& getMutex()
@@ -83,9 +83,9 @@ public:
{
return saveJPEG(fname, quality, subSamp);
}
- virtual int saveAsTIFF(Glib::ustring fname, int bps = -1, bool uncompressed = false)
+ virtual int saveAsTIFF(Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false)
{
- return saveTIFF(fname, bps, uncompressed);
+ return saveTIFF(fname, bps, isFloat, uncompressed);
}
virtual void setSaveProgressListener(ProgressListener* pl)
{
diff --git a/rtengine/image8.cc b/rtengine/image8.cc
index 69066f2dd..ab7393100 100644
--- a/rtengine/image8.cc
+++ b/rtengine/image8.cc
@@ -37,7 +37,7 @@ Image8::~Image8 ()
{
}
-void Image8::getScanline (int row, unsigned char* buffer, int bps)
+void Image8::getScanline (int row, unsigned char* buffer, int bps, bool isFloat)
{
if (data == nullptr) {
@@ -55,16 +55,13 @@ void Image8::getScanline (int row, unsigned char* buffer, int bps)
}
}
-void Image8::setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples, float *minValue, float *maxValue)
+void Image8::setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples)
{
if (data == nullptr) {
return;
}
- // For optimization purpose, we're assuming that this class never have to provide min/max bound
- assert(!minValue);
-
switch (sampleFormat) {
case (IIOSF_UNSIGNED_CHAR):
if(numSamples == 1) {
diff --git a/rtengine/image8.h b/rtengine/image8.h
index eafaa2d46..59d13c298 100644
--- a/rtengine/image8.h
+++ b/rtengine/image8.h
@@ -50,8 +50,8 @@ public:
{
return 8 * sizeof(unsigned char);
}
- virtual void getScanline (int row, unsigned char* buffer, int bps);
- virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples, float *minValue = nullptr, float *maxValue = nullptr);
+ virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false);
+ virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples);
// functions inherited from IImage*:
virtual MyMutex& getMutex ()
@@ -78,9 +78,9 @@ public:
{
return saveJPEG (fname, quality, subSamp);
}
- virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, bool uncompressed = false)
+ virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false)
{
- return saveTIFF (fname, bps, uncompressed);
+ return saveTIFF (fname, bps, isFloat, uncompressed);
}
virtual void setSaveProgressListener (ProgressListener* pl)
{
diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc
index 277ed32ce..2cf73204d 100644
--- a/rtengine/imagefloat.cc
+++ b/rtengine/imagefloat.cc
@@ -44,7 +44,7 @@ Imagefloat::~Imagefloat ()
}
// Call this method to handle floating points input values of different size
-void Imagefloat::setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples, float *minValue, float *maxValue)
+void Imagefloat::setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples)
{
if (data == nullptr) {
@@ -55,45 +55,27 @@ void Imagefloat::setScanline (int row, unsigned char* buffer, int bps, unsigned
// DNG_HalfToFloat and DNG_FP24ToFloat from dcraw.cc can be used to manually convert
// from 16 and 24 bits to 32 bits float respectively
switch (sampleFormat) {
- case (IIOSF_FLOAT16):
- case (IIOSF_FLOAT24):
+ case (IIOSF_FLOAT16): {
+ int ix = 0;
+ uint16_t* sbuffer = (uint16_t*) buffer;
+
+ for (int i = 0; i < width; i++) {
+ r(row, i) = 65535.f * DNG_HalfToFloat(sbuffer[ix++]);
+ g(row, i) = 65535.f * DNG_HalfToFloat(sbuffer[ix++]);
+ b(row, i) = 65535.f * DNG_HalfToFloat(sbuffer[ix++]);
+ }
+
+ break;
+ }
+ //case (IIOSF_FLOAT24):
case (IIOSF_FLOAT32): {
int ix = 0;
float* sbuffer = (float*) buffer;
for (int i = 0; i < width; i++) {
- r(row, i) = 65535.f * sbuffer[ix];
-
- if (minValue) {
- if (sbuffer[ix] < minValue[0]) {
- minValue[0] = sbuffer[ix];
- } else if (sbuffer[ix] > maxValue[0]) {
- maxValue[0] = sbuffer[ix];
- }
- }
- ++ix;
-
- g(row, i) = 65535.f * sbuffer[ix];
-
- if (minValue) {
- if (sbuffer[ix] < minValue[1]) {
- minValue[1] = sbuffer[ix];
- } else if (sbuffer[ix] > maxValue[1]) {
- maxValue[1] = sbuffer[ix];
- }
- }
- ++ix;
-
- b(row, i) = 65535.f * sbuffer[ix];
-
- if (minValue) {
- if (sbuffer[ix] < minValue[2]) {
- minValue[2] = sbuffer[ix];
- } else if (sbuffer[ix] > maxValue[2]) {
- maxValue[2] = sbuffer[ix];
- }
- }
- ++ix;
+ r(row, i) = 65535.f * sbuffer[ix++];
+ g(row, i) = 65535.f * sbuffer[ix++];
+ b(row, i) = 65535.f * sbuffer[ix++];
}
break;
@@ -112,34 +94,8 @@ void Imagefloat::setScanline (int row, unsigned char* buffer, int bps, unsigned
// TODO: we may have to handle other color space than sRGB!
Color::xyz2srgb(xyzvalues[0], xyzvalues[1], xyzvalues[2], rgbvalues[0], rgbvalues[1], rgbvalues[2]);
r(row, i) = rgbvalues[0];
-
- if (minValue) {
- if (rgbvalues[0] < minValue[0]) {
- minValue[0] = rgbvalues[0];
- } else if (rgbvalues[0] > maxValue[0]) {
- maxValue[0] = rgbvalues[0];
- }
- }
-
g(row, i) = rgbvalues[1];
-
- if (minValue) {
- if (rgbvalues[1] < minValue[1]) {
- minValue[1] = rgbvalues[1];
- } else if (rgbvalues[1] > maxValue[1]) {
- maxValue[1] = rgbvalues[1];
- }
- }
-
b(row, i) = rgbvalues[2];
-
- if (minValue) {
- if (rgbvalues[2] < minValue[2]) {
- minValue[2] = rgbvalues[2];
- } else if (rgbvalues[2] > maxValue[2]) {
- maxValue[2] = rgbvalues[2];
- }
- }
}
break;
@@ -154,22 +110,32 @@ void Imagefloat::setScanline (int row, unsigned char* buffer, int bps, unsigned
namespace rtengine { extern void filmlike_clip(float *r, float *g, float *b); }
-void Imagefloat::getScanline (int row, unsigned char* buffer, int bps)
+void Imagefloat::getScanline (int row, unsigned char* buffer, int bps, bool isFloat)
{
if (data == nullptr) {
return;
}
- if (bps == 32) {
- int ix = 0;
- float* sbuffer = (float*) buffer;
-
- // agriggio -- assume the image is normalized to [0, 65535]
- for (int i = 0; i < width; i++) {
- sbuffer[ix++] = r(row, i) / 65535.f;
- sbuffer[ix++] = g(row, i) / 65535.f;
- sbuffer[ix++] = b(row, i) / 65535.f;
+ if (isFloat) {
+ if (bps == 32) {
+ int ix = 0;
+ float* sbuffer = (float*) buffer;
+ // agriggio -- assume the image is normalized to [0, 65535]
+ for (int i = 0; i < width; i++) {
+ sbuffer[ix++] = r(row, i) / 65535.f;
+ sbuffer[ix++] = g(row, i) / 65535.f;
+ sbuffer[ix++] = b(row, i) / 65535.f;
+ }
+ } else if (bps == 16) {
+ int ix = 0;
+ uint16_t* sbuffer = (uint16_t*) buffer;
+ // agriggio -- assume the image is normalized to [0, 65535]
+ for (int i = 0; i < width; i++) {
+ sbuffer[ix++] = DNG_FloatToHalf(r(row, i) / 65535.f);
+ sbuffer[ix++] = DNG_FloatToHalf(g(row, i) / 65535.f);
+ sbuffer[ix++] = DNG_FloatToHalf(b(row, i) / 65535.f);
+ }
}
} else {
unsigned short *sbuffer = (unsigned short *)buffer;
diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h
index d48e51cee..65c291775 100644
--- a/rtengine/imagefloat.h
+++ b/rtengine/imagefloat.h
@@ -59,8 +59,8 @@ public:
{
return 8 * sizeof(float);
}
- virtual void getScanline (int row, unsigned char* buffer, int bps);
- virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples, float *minValue = nullptr, float *maxValue = nullptr);
+ virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false);
+ virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples);
// functions inherited from IImagefloat:
virtual MyMutex& getMutex ()
@@ -87,9 +87,9 @@ public:
{
return saveJPEG (fname, quality, subSamp);
}
- virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, bool uncompressed = false)
+ virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false)
{
- return saveTIFF (fname, bps, uncompressed);
+ return saveTIFF (fname, bps, isFloat, uncompressed);
}
virtual void setSaveProgressListener (ProgressListener* pl)
{
@@ -100,6 +100,122 @@ public:
delete this;
}
+ inline uint16_t DNG_FloatToHalf(float f)
+ {
+ union {
+ float f;
+ uint32_t i;
+ } tmp;
+
+ tmp.f = f;
+ int32_t sign = (tmp.i >> 16) & 0x00008000;
+ int32_t exponent = ((tmp.i >> 23) & 0x000000ff) - (127 - 15);
+ int32_t mantissa = tmp.i & 0x007fffff;
+ if (exponent <= 0) {
+ if (exponent < -10) {
+ return (uint16_t)sign;
+ }
+ mantissa = (mantissa | 0x00800000) >> (1 - exponent);
+ if (mantissa & 0x00001000)
+ mantissa += 0x00002000;
+ return (uint16_t)(sign | (mantissa >> 13));
+ } else if (exponent == 0xff - (127 - 15)) {
+ if (mantissa == 0) {
+ return (uint16_t)(sign | 0x7c00);
+ } else {
+ return (uint16_t)(sign | 0x7c00 | (mantissa >> 13));
+ }
+ }
+ if (mantissa & 0x00001000) {
+ mantissa += 0x00002000;
+ if (mantissa & 0x00800000) {
+ mantissa = 0; // overflow in significand,
+ exponent += 1; // adjust exponent
+ }
+ }
+ if (exponent > 30) {
+ return (uint16_t)(sign | 0x7c00); // infinity with the same sign as f.
+ }
+ return (uint16_t)(sign | (exponent << 10) | (mantissa >> 13));
+ }
+
+ // From DNG SDK dng_utils.h
+ inline float DNG_HalfToFloat(uint16_t halfValue)
+ {
+ union {
+ float f;
+ uint32_t i;
+ } tmp;
+
+ int32_t sign = (halfValue >> 15) & 0x00000001;
+ int32_t exponent = (halfValue >> 10) & 0x0000001f;
+ int32_t mantissa = halfValue & 0x000003ff;
+ if (exponent == 0) {
+ if (mantissa == 0) {
+ // Plus or minus zero
+ tmp.i = (uint32_t) (sign << 31);
+ return tmp.f;
+ } else {
+ // Denormalized number -- renormalize it
+ while (!(mantissa & 0x00000400)) {
+ mantissa <<= 1;
+ exponent -= 1;
+ }
+ exponent += 1;
+ mantissa &= ~0x00000400;
+ }
+ } else if (exponent == 31) {
+ if (mantissa == 0) {
+ // Positive or negative infinity, convert to maximum (16 bit) values.
+ tmp.i = (uint32_t)((sign << 31) | ((0x1eL + 127 - 15) << 23) | (0x3ffL << 13));
+ return tmp.f;
+ } else {
+ // Nan -- Just set to zero.
+ return 0;
+ }
+ }
+ // Normalized number
+ exponent += (127 - 15);
+ mantissa <<= 13;
+ // Assemble sign, exponent and mantissa.
+ tmp.i = (uint32_t) ((sign << 31) | (exponent << 23) | mantissa);
+ return tmp.f;
+ }
+
+ inline uint32_t DNG_FP24ToFloat(const uint8_t * input)
+ {
+ int32_t sign = (input [0] >> 7) & 0x01;
+ int32_t exponent = (input [0] ) & 0x7F;
+ int32_t mantissa = (((int32_t) input [1]) << 8) | input[2];
+ if (exponent == 0) {
+ if (mantissa == 0) {
+ // Plus or minus zero
+ return (uint32_t) (sign << 31);
+ } else {
+ // Denormalized number -- renormalize it
+ while (!(mantissa & 0x00010000)) {
+ mantissa <<= 1;
+ exponent -= 1;
+ }
+ exponent += 1;
+ mantissa &= ~0x00010000;
+ }
+ } else if (exponent == 127) {
+ if (mantissa == 0) {
+ // Positive or negative infinity, convert to maximum (24 bit) values.
+ return (uint32_t) ((sign << 31) | ((0x7eL + 128 - 64) << 23) | (0xffffL << 7));
+ } else {
+ // Nan -- Just set to zero.
+ return 0;
+ }
+ }
+ // Normalized number
+ exponent += (128 - 64);
+ mantissa <<= 7;
+ // Assemble sign, exponent and mantissa.
+ return (uint32_t) ((sign << 31) | (exponent << 23) | mantissa);
+ }
+
virtual void normalizeFloat(float srcMinVal, float srcMaxVal);
void normalizeFloatTo1();
void normalizeFloatTo65535();
diff --git a/rtengine/imageio.cc b/rtengine/imageio.cc
index 6c70869ec..08922e436 100644
--- a/rtengine/imageio.cc
+++ b/rtengine/imageio.cc
@@ -1027,6 +1027,9 @@ int ImageIO::savePNG (Glib::ustring fname, volatile int bps)
if (bps < 0) {
bps = getBPS ();
}
+ if (bps > 16) {
+ bps = 16;
+ }
png_set_IHDR(png, info, width, height, bps, PNG_COLOR_TYPE_RGB,
PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_BASE);
@@ -1298,13 +1301,12 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp)
return IMIO_SUCCESS;
}
-int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed)
+int ImageIO::saveTIFF (Glib::ustring fname, int bps, float isFloat, bool uncompressed)
{
if (getWidth() < 1 || getHeight() < 1) {
return IMIO_HEADERERROR;
}
- //TODO: Handling 32 bits floating point output images!
bool writeOk = true;
int width = getWidth ();
int height = getHeight ();
@@ -1456,26 +1458,36 @@ int ImageIO::saveTIFF (Glib::ustring fname, int bps, bool uncompressed)
TIFFSetField (out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
TIFFSetField (out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
TIFFSetField (out, TIFFTAG_COMPRESSION, uncompressed ? COMPRESSION_NONE : COMPRESSION_ADOBE_DEFLATE);
- TIFFSetField (out, TIFFTAG_SAMPLEFORMAT, bps == 32 ? SAMPLEFORMAT_IEEEFP : SAMPLEFORMAT_UINT);
+ TIFFSetField (out, TIFFTAG_SAMPLEFORMAT, (bps == 16 || bps == 32) && isFloat ? SAMPLEFORMAT_IEEEFP : SAMPLEFORMAT_UINT);
if (!uncompressed) {
- TIFFSetField (out, TIFFTAG_PREDICTOR, bps == 32 ? PREDICTOR_FLOATINGPOINT : PREDICTOR_HORIZONTAL);
+ TIFFSetField (out, TIFFTAG_PREDICTOR, (bps == 16 || bps == 32) && isFloat ? PREDICTOR_FLOATINGPOINT : PREDICTOR_HORIZONTAL);
}
if (profileData) {
TIFFSetField (out, TIFFTAG_ICCPROFILE, profileLength, profileData);
}
for (int row = 0; row < height; row++) {
- getScanline (row, linebuffer, bps);
+ getScanline (row, linebuffer, bps, isFloat);
- if(needsReverse && !uncompressed && bps == 32) {
- for(int i = 0; i < lineWidth; i += 4) {
- char temp = linebuffer[i];
- linebuffer[i] = linebuffer[i + 3];
- linebuffer[i + 3] = temp;
- temp = linebuffer[i + 1];
- linebuffer[i + 1] = linebuffer[i + 2];
- linebuffer[i + 2] = temp;
+ if (bps == 16) {
+ if(needsReverse && !uncompressed && isFloat) {
+ for(int i = 0; i < lineWidth; i += 2) {
+ char temp = linebuffer[i];
+ linebuffer[i] = linebuffer[i + 1];
+ linebuffer[i + 1] = temp;
+ }
+ }
+ } else if (bps == 32) {
+ if(needsReverse && !uncompressed) {
+ for(int i = 0; i < lineWidth; i += 4) {
+ char temp = linebuffer[i];
+ linebuffer[i] = linebuffer[i + 3];
+ linebuffer[i + 3] = temp;
+ temp = linebuffer[i + 1];
+ linebuffer[i + 1] = linebuffer[i + 2];
+ linebuffer[i + 2] = temp;
+ }
}
}
diff --git a/rtengine/imageio.h b/rtengine/imageio.h
index 294a3d476..cbf245291 100644
--- a/rtengine/imageio.h
+++ b/rtengine/imageio.h
@@ -112,8 +112,8 @@ public:
}
virtual int getBPS () = 0;
- virtual void getScanline (int row, unsigned char* buffer, int bps) {}
- virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples = 3, float minValue[3] = nullptr, float maxValue[3] = nullptr) {}
+ virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) {}
+ virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples = 3) {}
virtual bool readImage (Glib::ustring &fname, FILE *fh)
{
@@ -138,7 +138,7 @@ public:
int savePNG (Glib::ustring fname, volatile int bps = -1);
int saveJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3);
- int saveTIFF (Glib::ustring fname, int bps = -1, bool uncompressed = false);
+ int saveTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false);
cmsHPROFILE getEmbeddedProfile ()
{
diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc
index aa94b9fa5..caa052370 100644
--- a/rtengine/improcfun.cc
+++ b/rtengine/improcfun.cc
@@ -5596,7 +5596,7 @@ void ImProcFunctions::getAutoExp(const LUTu &histogram, int histcompr, double cl
//now tune hlcompr to bring back rawmax to 65535
- hlcomprthresh = 33;
+ hlcomprthresh = 0;
//this is a series approximation of the actual formula for comp,
//which is a transcendental equation
float comp = (gain * ((float)whiteclip) / scale - 1.f) * 2.3f; // 2.3 instead of 2 to increase slightly comp
diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc
index cab77c8ab..c4707f16f 100644
--- a/rtengine/iplab2rgb.cc
+++ b/rtengine/iplab2rgb.cc
@@ -602,6 +602,10 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int
// 7 parameters for smoother curves
cmsWhitePointFromTemp(&xyD, (double)temp);
+ if (profile == "ACESp0") {
+ xyD = {0.32168, 0.33767, 1.0};//refine white point to avoid differences
+ }
+
GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, gammaParams);//5 = more smoother than 4
oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC);
cmsFreeToneCurve(GammaTRC[0]);
diff --git a/rtengine/iptransform.cc b/rtengine/iptransform.cc
index ff976137e..a5ade7c53 100644
--- a/rtengine/iptransform.cc
+++ b/rtengine/iptransform.cc
@@ -327,25 +327,29 @@ void ImProcFunctions::transform (Imagefloat* original, Imagefloat* transformed,
} else {
bool highQuality;
std::unique_ptr tmpimg;
+ Imagefloat *dest = transformed;
if (!needsCA() && scale != 1) {
highQuality = false;
} else {
highQuality = true;
// agriggio: CA correction via the lens profile has to be
- // performed before all the other transformations (except for the
- // coarse rotation/flipping). In order to not change the code too
- // much, I simply introduced a new mode
- // TRANSFORM_HIGH_QUALITY_CA, which applies *only*
- // profile-based CA correction. So, the correction in this case
- // occurs in two steps, using an intermediate temporary
- // image. There's room for optimization of course...
+ // performed before separately from the the other transformations
+ // (except for the coarse rotation/flipping). In order to not
+ // change the code too much, I simply introduced a new mode
+ // TRANSFORM_HIGH_QUALITY_CA, which applies *only* profile-based
+ // CA correction. So, the correction in this case occurs in two
+ // steps, using an intermediate temporary image. There's room for
+ // optimization of course...
if (pLCPMap && params->lensProf.useCA && pLCPMap->isCACorrectionAvailable()) {
tmpimg.reset(new Imagefloat(original->getWidth(), original->getHeight()));
- transformLCPCAOnly(original, tmpimg.get(), cx, cy, pLCPMap.get());
- original = tmpimg.get();
+ dest = tmpimg.get();
}
}
- transformGeneral(highQuality, original, transformed, cx, cy, sx, sy, oW, oH, fW, fH, pLCPMap.get());
+ transformGeneral(highQuality, original, dest, cx, cy, sx, sy, oW, oH, fW, fH, pLCPMap.get());
+
+ if (highQuality && dest != transformed) {
+ transformLCPCAOnly(dest, transformed, cx, cy, pLCPMap.get());
+ }
}
}
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index 4d570a825..b86ca2ae9 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -317,20 +317,20 @@ ToneCurveParams::ToneCurveParams() :
method("Blend"),
expcomp(0),
curve{
- DCT_Linear
-},
-curve2{
- DCT_Linear
-},
-curveMode(ToneCurveParams::TcMode::STD),
- curveMode2(ToneCurveParams::TcMode::STD),
- brightness(0),
- black(0),
- contrast(0),
- saturation(0),
- shcompr(50),
- hlcompr(0),
- hlcomprthresh(33),
+ DCT_Linear
+ },
+ curve2{
+ DCT_Linear
+ },
+ curveMode(ToneCurveParams::TcMode::STD),
+ curveMode2(ToneCurveParams::TcMode::STD),
+ brightness(0),
+ black(0),
+ contrast(0),
+ saturation(0),
+ shcompr(50),
+ hlcompr(0),
+ hlcomprthresh(0),
histmatching(false),
fromHistMatching(false),
clampOOG(true)
@@ -2931,6 +2931,8 @@ RAWParams::RAWParams() :
ff_AutoClipControl(false),
ff_clipControl(0),
ca_autocorrect(false),
+ ca_avoidcolourshift(true),
+ caautoiterations(2),
cared(0.0),
cablue(0.0),
expos(1.0),
@@ -2955,6 +2957,8 @@ bool RAWParams::operator ==(const RAWParams& other) const
&& ff_AutoClipControl == other.ff_AutoClipControl
&& ff_clipControl == other.ff_clipControl
&& ca_autocorrect == other.ca_autocorrect
+ && ca_avoidcolourshift == other.ca_avoidcolourshift
+ && caautoiterations == other.caautoiterations
&& cared == other.cared
&& cablue == other.cablue
&& expos == other.expos
@@ -3871,6 +3875,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->raw.ff_AutoClipControl, "RAW", "FlatFieldAutoClipControl", raw.ff_AutoClipControl, keyFile);
saveToKeyfile(!pedited || pedited->raw.ff_clipControl, "RAW", "FlatFieldClipControl", raw.ff_clipControl, keyFile);
saveToKeyfile(!pedited || pedited->raw.ca_autocorrect, "RAW", "CA", raw.ca_autocorrect, keyFile);
+ saveToKeyfile(!pedited || pedited->raw.ca_avoidcolourshift, "RAW", "CAAvoidColourshift", raw.ca_avoidcolourshift, keyFile);
+ saveToKeyfile(!pedited || pedited->raw.caautoiterations, "RAW", "CAAutoIterations", raw.caautoiterations, keyFile);
saveToKeyfile(!pedited || pedited->raw.cared, "RAW", "CARed", raw.cared, keyFile);
saveToKeyfile(!pedited || pedited->raw.cablue, "RAW", "CABlue", raw.cablue, keyFile);
saveToKeyfile(!pedited || pedited->raw.hotPixelFilter, "RAW", "HotPixelFilter", raw.hotPixelFilter, keyFile);
@@ -5380,6 +5386,17 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
assignFromKeyfile(keyFile, "RAW", "CA", pedited, raw.ca_autocorrect, pedited->raw.ca_autocorrect);
+ if (ppVersion >= 342) {
+ assignFromKeyfile(keyFile, "RAW", "CAAutoIterations", pedited, raw.caautoiterations, pedited->raw.caautoiterations);
+ } else {
+ raw.caautoiterations = 1;
+ }
+
+ if (ppVersion >= 343) {
+ assignFromKeyfile(keyFile, "RAW", "CAAvoidColourshift", pedited, raw.ca_avoidcolourshift, pedited->raw.ca_avoidcolourshift);
+ } else {
+ raw.ca_avoidcolourshift = false;
+ }
assignFromKeyfile(keyFile, "RAW", "CARed", pedited, raw.cared, pedited->raw.cared);
assignFromKeyfile(keyFile, "RAW", "CABlue", pedited, raw.cablue, pedited->raw.cablue);
// For compatibility to elder pp3 versions
diff --git a/rtengine/procparams.h b/rtengine/procparams.h
index 2f7d02b46..53598f493 100644
--- a/rtengine/procparams.h
+++ b/rtengine/procparams.h
@@ -1509,6 +1509,8 @@ struct RAWParams {
int ff_clipControl;
bool ca_autocorrect;
+ bool ca_avoidcolourshift;
+ int caautoiterations;
double cared;
double cablue;
diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc
index d8d58347b..7f5826a85 100644
--- a/rtengine/rawimagesource.cc
+++ b/rtengine/rawimagesource.cc
@@ -2021,13 +2021,13 @@ void RawImageSource::preprocess(const RAWParams &raw, const LensProfParams &lens
if (numFrames == 4) {
double fitParams[64];
- float *buffer = CA_correct_RT(raw.ca_autocorrect, raw.cared, raw.cablue, 8.0, *rawDataFrames[0], fitParams, false, true, nullptr, false);
+ float *buffer = CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, *rawDataFrames[0], fitParams, false, true, nullptr, false);
for(int i = 1; i < 3; ++i) {
- CA_correct_RT(raw.ca_autocorrect, raw.cared, raw.cablue, 8.0, *rawDataFrames[i], fitParams, true, false, buffer, false);
+ CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, *rawDataFrames[i], fitParams, true, false, buffer, false);
}
- CA_correct_RT(raw.ca_autocorrect, raw.cared, raw.cablue, 8.0, *rawDataFrames[3], fitParams, true, false, buffer, true);
+ CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, *rawDataFrames[3], fitParams, true, false, buffer, true);
} else {
- CA_correct_RT(raw.ca_autocorrect, raw.cared, raw.cablue, 8.0, rawData, nullptr, false, false, nullptr, true);
+ CA_correct_RT(raw.ca_autocorrect, raw.caautoiterations, raw.cared, raw.cablue, raw.ca_avoidcolourshift, rawData, nullptr, false, false, nullptr, true);
}
}
@@ -4730,10 +4730,10 @@ void RawImageSource::getRAWHistogram(LUTu & histRedRaw, LUTu & histGreenRaw, LUT
histRedRaw.clear();
histGreenRaw.clear();
histBlueRaw.clear();
- const float mult[4] = { 65535.0f / ri->get_white(0),
- 65535.0f / ri->get_white(1),
- 65535.0f / ri->get_white(2),
- 65535.0f / ri->get_white(3)
+ const float mult[4] = { 255.0f / Color::gamma(ri->get_white(0) - cblacksom[0]),
+ 255.0f / Color::gamma(ri->get_white(1) - cblacksom[1]),
+ 255.0f / Color::gamma(ri->get_white(2) - cblacksom[2]),
+ 255.0f / Color::gamma(ri->get_white(3) - cblacksom[3])
};
const bool fourColours = ri->getSensorType() == ST_BAYER && ((mult[1] != mult[3] || cblacksom[1] != cblacksom[3]) || FC(0, 0) == 3 || FC(0, 1) == 3 || FC(1, 0) == 3 || FC(1, 1) == 3);
@@ -4839,23 +4839,22 @@ void RawImageSource::getRAWHistogram(LUTu & histRedRaw, LUTu & histGreenRaw, LUT
} // end of critical region
} // end of parallel region
- constexpr float gammaLimit = 32767.f * 65536.f; // Color::gamma overflows when the LUT is accessed with too large values
- for (int i = 0; i < 65536; i++) {
+ for(int i = 0; i < 65536; i++) {
int idx;
- idx = CLIP((int)Color::gamma(std::min(mult[0] * (i - (cblacksom[0]/*+black_lev[0]*/)), gammaLimit)));
- histRedRaw[idx >> 8] += hist[0][i];
+ idx = (int)std::min(255.0f, mult[0] * Color::gamma(std::max(0.0f, i - cblacksom[0])));
+ histRedRaw[idx] += hist[0][i];
if (ri->get_colors() > 1) {
- idx = CLIP((int)Color::gamma(std::min(mult[1] * (i - (cblacksom[1]/*+black_lev[1]*/)), gammaLimit)));
- histGreenRaw[idx >> 8] += hist[1][i];
+ idx = (int)std::min(255.0f, mult[1] * Color::gamma(std::max(0.0f, i - cblacksom[1])));
+ histGreenRaw[idx] += hist[1][i];
if (fourColours) {
- idx = CLIP((int)Color::gamma(std::min(mult[3] * (i - (cblacksom[3]/*+black_lev[3]*/)), gammaLimit)));
- histGreenRaw[idx >> 8] += hist[3][i];
+ idx = (int)std::min(255.0f, mult[3] * Color::gamma(std::max(0.0f, i - cblacksom[3])));
+ histGreenRaw[idx] += hist[3][i];
}
- idx = CLIP((int)Color::gamma(std::min(mult[2] * (i - (cblacksom[2]/*+black_lev[2]*/)), gammaLimit)));
- histBlueRaw[idx >> 8] += hist[2][i];
+ idx = (int)std::min(255.0f, mult[2] * Color::gamma(std::max(0.0f, i - cblacksom[2])));
+ histBlueRaw[idx] += hist[2][i];
}
}
@@ -5472,7 +5471,9 @@ void RawImageSource::getRawValues(int x, int y, int rotate, int &R, int &G, int
ynew = H - 1 - ynew;
}
- int c = ri->getSensorType() == ST_FUJI_XTRANS ? ri->XTRANSFC(ynew, xnew) : ri->FC(ynew, xnew);
+ xnew = LIM(xnew, 0, W - 1);
+ ynew = LIM(ynew, 0, H - 1);
+ int c = ri->getSensorType() == ST_FUJI_XTRANS ? ri->XTRANSFC(ynew,xnew) : ri->FC(ynew,xnew);
int val = round(rawData[ynew][xnew] / scale_mul[c]);
if (c == 0) {
diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h
index 948a9f977..2c4ec13fe 100644
--- a/rtengine/rawimagesource.h
+++ b/rtengine/rawimagesource.h
@@ -243,7 +243,19 @@ protected:
inline void interpolate_row_rb (float* ar, float* ab, float* pg, float* cg, float* ng, int i);
inline void interpolate_row_rb_mul_pp (const array2D &rawData, float* ar, float* ab, float* pg, float* cg, float* ng, int i, float r_mul, float g_mul, float b_mul, int x1, int width, int skip);
- float* CA_correct_RT (const bool autoCA, const double cared, const double cablue, const double caautostrength, array2D &rawData, double *fitParamsTransfer, bool fitParamsIn, bool fitParamsOut, float * buffer, bool freeBuffer);
+ float* CA_correct_RT(
+ bool autoCA,
+ size_t autoIterations,
+ double cared,
+ double cablue,
+ bool avoidColourshift,
+ const array2D &rawData,
+ double* fitParamsTransfer,
+ bool fitParamsIn,
+ bool fitParamsOut,
+ float* buffer,
+ bool freeBuffer
+ );
void ddct8x8s(int isgn, float a[8][8]);
void processRawWhitepoint(float expos, float preser, array2D &rawData); // exposure before interpolation
diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt
index da83e3e4c..039780dd3 100644
--- a/rtgui/CMakeLists.txt
+++ b/rtgui/CMakeLists.txt
@@ -226,6 +226,10 @@ else()
)
endif()
+if(OPENMP_FOUND AND NOT APPLE)
+ set(EXTRA_LIB_RTGUI ${EXTRA_LIB_RTGUI} "atomic")
+endif()
+
# Create config.h which defines where data are stored
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/config.h")
diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc
index 9e5086fef..d3e3ef9f0 100644
--- a/rtgui/batchqueue.cc
+++ b/rtgui/batchqueue.cc
@@ -228,7 +228,7 @@ bool BatchQueue::saveBatchQueue ()
// The column's header is mandatory (the first line will be skipped when loaded)
file << "input image full path|param file full path|output image full path|file format|jpeg quality|jpeg subsampling|"
- << "png bit depth|png compression|tiff bit depth|uncompressed tiff|save output params|force format options|fast export|"
+ << "png bit depth|png compression|tiff bit depth|tiff is float|uncompressed tiff|save output params|force format options|fast export|"
<< std::endl;
// method is already running with entryLock, so no need to lock again
@@ -246,7 +246,7 @@ bool BatchQueue::saveBatchQueue ()
#endif
<< saveFormat.jpegQuality << '|' << saveFormat.jpegSubSamp << '|'
<< saveFormat.pngBits << '|'
- << saveFormat.tiffBits << '|' << saveFormat.tiffUncompressed << '|'
+ << saveFormat.tiffBits << '|' << (saveFormat.tiffFloat ? 1 : 0) << '|' << saveFormat.tiffUncompressed << '|'
<< saveFormat.saveParams << '|' << entry->forceFormatOpts << '|'
<< entry->fast_pipeline << '|'
<< std::endl;
@@ -311,6 +311,7 @@ bool BatchQueue::loadBatchQueue ()
const auto jpegSubSamp = nextIntOr (options.saveFormat.jpegSubSamp);
const auto pngBits = nextIntOr (options.saveFormat.pngBits);
const auto tiffBits = nextIntOr (options.saveFormat.tiffBits);
+ const auto tiffFloat = nextIntOr (options.saveFormat.tiffFloat);
const auto tiffUncompressed = nextIntOr (options.saveFormat.tiffUncompressed);
const auto saveParams = nextIntOr (options.saveFormat.saveParams);
const auto forceFormatOpts = nextIntOr (options.forceFormatOpts);
@@ -352,6 +353,7 @@ bool BatchQueue::loadBatchQueue ()
saveFormat.jpegSubSamp = jpegSubSamp;
saveFormat.pngBits = pngBits;
saveFormat.tiffBits = tiffBits;
+ saveFormat.tiffFloat = tiffFloat == 1;
saveFormat.tiffUncompressed = tiffUncompressed != 0;
saveFormat.saveParams = saveParams != 0;
entry->forceFormatOpts = forceFormatOpts != 0;
@@ -608,7 +610,7 @@ rtengine::ProcessingJob* BatchQueue::imageReady (rtengine::IImagefloat* img)
int err = 0;
if (saveFormat.format == "tif") {
- err = img->saveAsTIFF (fname, saveFormat.tiffBits, saveFormat.tiffUncompressed);
+ err = img->saveAsTIFF (fname, saveFormat.tiffBits, saveFormat.tiffFloat, saveFormat.tiffUncompressed);
} else if (saveFormat.format == "png") {
err = img->saveAsPNG (fname, saveFormat.pngBits);
} else if (saveFormat.format == "jpg") {
diff --git a/rtgui/batchqueueentry.cc b/rtgui/batchqueueentry.cc
index 336e81ab9..b5383205f 100644
--- a/rtgui/batchqueueentry.cc
+++ b/rtgui/batchqueueentry.cc
@@ -175,9 +175,10 @@ Glib::ustring BatchQueueEntry::getToolTip (int x, int y)
tooltip += Glib::ustring::compose("\n\n%1: %2", M("BATCHQUEUE_DESTFILENAME"), outFileName);
if (forceFormatOpts) {
- tooltip += Glib::ustring::compose("\n\n%1: %2 (%3 bits)", M("SAVEDLG_FILEFORMAT"), saveFormat.format,
+ tooltip += Glib::ustring::compose("\n\n%1: %2 (%3-bits%4)", M("SAVEDLG_FILEFORMAT"), saveFormat.format,
saveFormat.format == "png" ? saveFormat.pngBits :
- saveFormat.format == "tif" ? saveFormat.tiffBits : 8);
+ saveFormat.format == "tif" ? saveFormat.tiffBits : 8,
+ saveFormat.format == "tif" && saveFormat.tiffFloat ? M("SAVEDLG_FILEFORMAT_FLOAT") : "");
if (saveFormat.format == "jpg") {
tooltip += Glib::ustring::compose("\n%1: %2\n%3: %4",
diff --git a/rtgui/bayerprocess.cc b/rtgui/bayerprocess.cc
index 1770dcbb0..d68f5c2d3 100644
--- a/rtgui/bayerprocess.cc
+++ b/rtgui/bayerprocess.cc
@@ -46,6 +46,20 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
hb1->pack_end (*method, Gtk::PACK_EXPAND_WIDGET, 4);
pack_start( *hb1, Gtk::PACK_SHRINK, 4);
+
+ dualDemosaicOptions = Gtk::manage (new Gtk::VBox ());
+
+ dualDemosaicContrast = Gtk::manage(new Adjuster (M("TP_RAW_DUALDEMOSAICCONTRAST"), 0, 100, 1, 20));
+ dualDemosaicContrast->setAdjusterListener (this);
+
+ if (dualDemosaicContrast->delay < options.adjusterMaxDelay) {
+ dualDemosaicContrast->delay = options.adjusterMaxDelay;
+ }
+
+ dualDemosaicContrast->show();
+ dualDemosaicOptions->pack_start(*dualDemosaicContrast);
+ pack_start( *dualDemosaicOptions, Gtk::PACK_SHRINK, 4);
+
borderbox = Gtk::manage(new Gtk::HBox());
border = Gtk::manage(new Adjuster(M("TP_RAW_BORDER"), 0, 16, 1, 4));
border->setAdjusterListener (this);
@@ -112,20 +126,6 @@ BayerProcess::BayerProcess () : FoldableToolPanel(this, "bayerprocess", M("TP_RA
lmmseOptions->pack_start(*lmmseIterations);
pack_start( *lmmseOptions, Gtk::PACK_SHRINK, 4);
- dualDemosaicOptions = Gtk::manage (new Gtk::VBox ());
-
- dualDemosaicContrast = Gtk::manage(new Adjuster (M("TP_RAW_DUALDEMOSAICCONTRAST"), 0, 100, 1, 20));
- dualDemosaicContrast->setAdjusterListener (this);
-
- if (dualDemosaicContrast->delay < options.adjusterMaxDelay) {
- dualDemosaicContrast->delay = options.adjusterMaxDelay;
- }
-
- dualDemosaicContrast->show();
- dualDemosaicOptions->pack_start(*dualDemosaicContrast);
- pack_start( *dualDemosaicOptions, Gtk::PACK_SHRINK, 4);
-
-
// -------------------- PixelShift ----------------------
diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc
index c02f3632f..69d7a98b4 100644
--- a/rtgui/cropwindow.cc
+++ b/rtgui/cropwindow.cc
@@ -754,10 +754,6 @@ void CropWindow::buttonRelease (int button, int num, int bstate, int x, int y)
}
iarea->setToolHand ();
-
- if (pmhlistener) {
- pmhlistener->toggleFreeze();
- }
}
state = SNormal;
@@ -1253,7 +1249,7 @@ void CropWindow::updateCursor (int x, int y)
if (onArea (CropObserved, x, y)) {
newType = CSMove;
} else {
- newType = CSOpenHand;
+ newType = CSCrosshair;
}
} else if (tm == TMSpotWB) {
newType = CSSpotWB;
@@ -1286,7 +1282,7 @@ void CropWindow::updateCursor (int x, int y)
} else if (state == SCropMove || state == SCropWinMove || state == SObservedMove) {
newType = CSMove;
} else if (state == SHandMove || state == SCropImgMove) {
- newType = CSClosedHand;
+ newType = CSHandClosed;
} else if (state == SResizeW1 || state == SResizeW2) {
newType = CSResizeWidth;
} else if (state == SResizeH1 || state == SResizeH2) {
@@ -1381,7 +1377,7 @@ void CropWindow::expose (Cairo::RefPtr cr)
break;
}
}
- bool useBgColor = (state == SNormal || state == SDragPicker || state == SDeletePicker);
+ bool useBgColor = (state == SNormal || state == SDragPicker || state == SDeletePicker || state == SEditDrag1);
if (cropHandler.cropPixbuf) {
imgW = cropHandler.cropPixbuf->get_width ();
diff --git a/rtgui/cursormanager.cc b/rtgui/cursormanager.cc
index 6c280ee8c..34efbcac8 100644
--- a/rtgui/cursormanager.cc
+++ b/rtgui/cursormanager.cc
@@ -36,40 +36,45 @@ void CursorManager::init (Glib::RefPtr mainWindow)
#endif
- cResizeWidth = Gdk::Cursor::create (display, Gdk::SB_H_DOUBLE_ARROW);
- cResizeHeight = Gdk::Cursor::create (display, Gdk::SB_V_DOUBLE_ARROW);
- cResizeDiag = Gdk::Cursor::create (display, Gdk::BOTTOM_RIGHT_CORNER);
- cResizeTopLeft = Gdk::Cursor::create (display, Gdk::TOP_LEFT_CORNER);
- cResizeTopRight = Gdk::Cursor::create (display, Gdk::TOP_RIGHT_CORNER);
- cResizeBottomLeft = Gdk::Cursor::create (display, Gdk::BOTTOM_LEFT_CORNER);
- cResizeBottomRight = Gdk::Cursor::create (display, Gdk::BOTTOM_RIGHT_CORNER);
- cCropMove = Gdk::Cursor::create (display, Gdk::FLEUR);
- cCropMoving = Gdk::Cursor::create (display, Gdk::HAND2);
- cCropSelection = Gdk::Cursor::create (display, Gdk::CROSSHAIR);
- cLeftTanMove = Gdk::Cursor::create (display, Gdk::SB_LEFT_ARROW);
- cRightTanMove = Gdk::Cursor::create (display, Gdk::SB_RIGHT_ARROW);
- cAdd = Gdk::Cursor::create (display, Gdk::PLUS);
- cWait = Gdk::Cursor::create (display, Gdk::CLOCK);
+ Glib::RefPtr add = RTImage::createFromFile("crosshair-small.png");
+ Glib::RefPtr colPick = RTImage::createFromFile("color-picker-hicontrast.png");
+ Glib::RefPtr colPickAdd = RTImage::createFromFile("color-picker-add-hicontrast.png");
+ Glib::RefPtr cropDraw = RTImage::createFromFile("crop-point-hicontrast.png");
+ Glib::RefPtr crosshair = RTImage::createFromFile("crosshair-hicontrast.png");
+ Glib::RefPtr empty = RTImage::createFromFile("empty.png");
+ Glib::RefPtr handClosed = RTImage::createFromFile("hand-closed-hicontrast.png");
+ Glib::RefPtr handOpen = RTImage::createFromFile("hand-open-hicontrast.png");
+ Glib::RefPtr moveBL = RTImage::createFromFile("node-move-sw-ne-hicontrast.png");
+ Glib::RefPtr moveBR = RTImage::createFromFile("node-move-nw-se-hicontrast.png");
+ Glib::RefPtr moveL = RTImage::createFromFile("node-move-x-hicontrast.png");
+ Glib::RefPtr moveR = RTImage::createFromFile("node-move-x-hicontrast.png");
+ Glib::RefPtr moveTL = RTImage::createFromFile("node-move-nw-se-hicontrast.png");
+ Glib::RefPtr moveTR = RTImage::createFromFile("node-move-sw-ne-hicontrast.png");
+ Glib::RefPtr moveX = RTImage::createFromFile("node-move-x-hicontrast.png");
+ Glib::RefPtr moveXY = RTImage::createFromFile("node-move-xy-hicontrast.png");
+ Glib::RefPtr moveY = RTImage::createFromFile("node-move-y-hicontrast.png");
+ Glib::RefPtr rotate = RTImage::createFromFile("rotate-aroundnode-hicontrast.png");
+ Glib::RefPtr wait = RTImage::createFromFile("gears.png"); // Currently unused, create *-hicontrast once used.
- Glib::RefPtr hand = RTImage::createFromFile ("crosshair-hicontrast.png");
- Glib::RefPtr close_hand = RTImage::createFromFile ("hand-closed-hicontrast.png");
- Glib::RefPtr wbpick = RTImage::createFromFile ("color-picker-hicontrast.png");
- Glib::RefPtr cpick = RTImage::createFromFile ("color-picker-add-hicontrast.png");
- Glib::RefPtr empty = RTImage::createFromFile ("empty.png");
- Glib::RefPtr move2D = RTImage::createFromFile ("node-move-xy-hicontrast.png");
- Glib::RefPtr move1DH = RTImage::createFromFile ("node-move-x-hicontrast.png");
- Glib::RefPtr move1DV = RTImage::createFromFile ("node-move-y-hicontrast.png");
- Glib::RefPtr moveRotate = RTImage::createFromFile ("rotate-aroundnode-hicontrast.png");
-
- cHand = hand ? Gdk::Cursor::create (cAdd->get_display(), hand, 12, 12) : Gdk::Cursor::create (cAdd->get_display(), Gdk::HAND2);
- cClosedHand = close_hand ? Gdk::Cursor::create (cAdd->get_display(), close_hand, 12, 12) : Gdk::Cursor::create (cAdd->get_display(), Gdk::HAND2);
- cWB = wbpick ? Gdk::Cursor::create (cAdd->get_display(), wbpick, 4, 21) : Gdk::Cursor::create (cAdd->get_display(), Gdk::ARROW);
- cAddPicker = cpick ? Gdk::Cursor::create (cAdd->get_display(), cpick, 4, 21) : Gdk::Cursor::create (cAdd->get_display(), Gdk::ARROW);
- cHidden = empty ? Gdk::Cursor::create (cAdd->get_display(), empty, 12, 12) : Gdk::Cursor::create (cAdd->get_display(), Gdk::FLEUR);
- cMove2D = move2D ? Gdk::Cursor::create (cAdd->get_display(), move2D, 12, 12) : Gdk::Cursor::create (cAdd->get_display(), Gdk::FLEUR);
- cMove1DH = move1DH ? Gdk::Cursor::create (cAdd->get_display(), move1DH, 12, 12) : Gdk::Cursor::create (cAdd->get_display(), Gdk::FLEUR);
- cMove1DV = move1DV ? Gdk::Cursor::create (cAdd->get_display(), move1DV, 12, 12) : Gdk::Cursor::create (cAdd->get_display(), Gdk::FLEUR);
- cMoveRotate = moveRotate ? Gdk::Cursor::create (cAdd->get_display(), moveRotate, 12, 12) : Gdk::Cursor::create (cAdd->get_display(), Gdk::CIRCLE);
+ cAdd = add ? Gdk::Cursor::create(display, add, 8, 8) : Gdk::Cursor::create(display, Gdk::PLUS);
+ cAddPicker = colPickAdd ? Gdk::Cursor::create(display, colPickAdd, 4, 21) : Gdk::Cursor::create(display, Gdk::PLUS);
+ cCropDraw = cropDraw ? Gdk::Cursor::create(display, cropDraw, 3, 3) : Gdk::Cursor::create(display, Gdk::DIAMOND_CROSS);
+ cCrosshair = crosshair ? Gdk::Cursor::create(display, crosshair, 12, 12) : Gdk::Cursor::create(display, Gdk::CROSSHAIR);
+ cEmpty = empty ? Gdk::Cursor::create(display, empty, 12, 12) : Gdk::Cursor::create(display, Gdk::BLANK_CURSOR);
+ cHandClosed = handClosed ? Gdk::Cursor::create(display, handClosed, 12, 12) : Gdk::Cursor::create(display, Gdk::HAND1);
+ cHandOpen = handOpen ? Gdk::Cursor::create(display, handOpen, 12, 12) : Gdk::Cursor::create(display, Gdk::HAND2);
+ cMoveBL = moveBL ? Gdk::Cursor::create(display, moveBL, 12, 12) : Gdk::Cursor::create(display, Gdk::BOTTOM_LEFT_CORNER);
+ cMoveBR = moveBR ? Gdk::Cursor::create(display, moveBR, 12, 12) : Gdk::Cursor::create(display, Gdk::BOTTOM_RIGHT_CORNER);
+ cMoveL = moveL ? Gdk::Cursor::create(display, moveL, 12, 12) : Gdk::Cursor::create(display, Gdk::SB_LEFT_ARROW);
+ cMoveR = moveR ? Gdk::Cursor::create(display, moveR, 12, 12) : Gdk::Cursor::create(display, Gdk::SB_RIGHT_ARROW);
+ cMoveTL = moveTL ? Gdk::Cursor::create(display, moveTL, 12, 12) : Gdk::Cursor::create(display, Gdk::TOP_LEFT_CORNER);
+ cMoveTR = moveTR ? Gdk::Cursor::create(display, moveTR, 12, 12) : Gdk::Cursor::create(display, Gdk::TOP_RIGHT_CORNER);
+ cMoveX = moveX ? Gdk::Cursor::create(display, moveX, 12, 12) : Gdk::Cursor::create(display, Gdk::SB_H_DOUBLE_ARROW);
+ cMoveXY = moveXY ? Gdk::Cursor::create(display, moveXY, 12, 12) : Gdk::Cursor::create(display, Gdk::FLEUR);
+ cMoveY = moveY ? Gdk::Cursor::create(display, moveY, 12, 12) : Gdk::Cursor::create(display, Gdk::SB_V_DOUBLE_ARROW);
+ cRotate = rotate ? Gdk::Cursor::create(display, rotate, 12, 12) : Gdk::Cursor::create(display, Gdk::EXCHANGE);
+ cWB = colPick ? Gdk::Cursor::create(display, colPick, 4, 21) : Gdk::Cursor::create(display, Gdk::TARGET);
+ cWait = wait ? Gdk::Cursor::create(display, wait, 12, 12) : Gdk::Cursor::create(display, Gdk::CLOCK);
window = mainWindow;
}
@@ -77,57 +82,87 @@ void CursorManager::init (Glib::RefPtr mainWindow)
/* Set the cursor of the given window */
void CursorManager::setCursor (Glib::RefPtr window, CursorShape shape)
{
-
- if (shape == CSArrow)
- // set_cursor without any arguments to select system default
+ switch (shape)
{
- window->set_cursor ();
- } else if (shape == CSOpenHand) {
- window->set_cursor (cHand);
- } else if (shape == CSClosedHand) {
- window->set_cursor (cClosedHand);
- } else if (shape == CSMove) {
- window->set_cursor (cCropMove);
- } else if (shape == CSResizeWidth) {
- window->set_cursor (cResizeWidth);
- } else if (shape == CSResizeHeight) {
- window->set_cursor (cResizeHeight);
- } else if (shape == CSResizeDiagonal) {
- window->set_cursor (cResizeDiag);
- } else if (shape == CSResizeTopLeft) {
- window->set_cursor (cResizeTopLeft);
- } else if (shape == CSResizeTopRight) {
- window->set_cursor (cResizeTopRight);
- } else if (shape == CSResizeBottomLeft) {
- window->set_cursor (cResizeBottomLeft);
- } else if (shape == CSResizeBottomRight) {
- window->set_cursor (cResizeBottomRight);
- } else if (shape == CSMove2D) {
- window->set_cursor (cMove2D);
- } else if (shape == CSMove1DH) {
- window->set_cursor (cMove1DH);
- } else if (shape == CSMove1DV) {
- window->set_cursor (cMove1DV);
- } else if (shape == CSMoveRotate) {
- window->set_cursor (cMoveRotate);
- } else if (shape == CSSpotWB) {
- window->set_cursor (cWB);
- } else if (shape == CSAddColPicker) {
- window->set_cursor (cAddPicker);
- } else if (shape == CSCropSelect) {
- window->set_cursor (cHand);
- } else if (shape == CSMoveLeft) {
- window->set_cursor (cLeftTanMove);
- } else if (shape == CSMoveRight) {
- window->set_cursor (cRightTanMove);
- } else if (shape == CSStraighten) {
- window->set_cursor (cHand);
- } else if (shape == CSWait) {
- window->set_cursor (cWait);
- } else if (shape == CSPlus) {
- window->set_cursor (cAdd);
- } else if (shape == CSEmpty) {
- window->set_cursor (cHidden);
+ case CursorShape::CSAddColPicker:
+ window->set_cursor(cAddPicker);
+ break;
+ case CursorShape::CSArrow:
+ window->set_cursor(); // set_cursor without any arguments to select system default
+ break;
+ case CursorShape::CSCropSelect:
+ window->set_cursor(cCropDraw);
+ break;
+ case CursorShape::CSCrosshair:
+ window->set_cursor(cCrosshair);
+ break;
+ case CursorShape::CSEmpty:
+ window->set_cursor(cEmpty);
+ break;
+ case CursorShape::CSHandClosed:
+ window->set_cursor(cHandClosed);
+ break;
+ case CursorShape::CSHandOpen:
+ window->set_cursor(cHandOpen);
+ break;
+ case CursorShape::CSMove:
+ window->set_cursor(cHandClosed);
+ break;
+ case CursorShape::CSMove1DH:
+ window->set_cursor(cMoveX);
+ break;
+ case CursorShape::CSMove1DV:
+ window->set_cursor(cMoveY);
+ break;
+ case CursorShape::CSMove2D:
+ window->set_cursor(cMoveXY);
+ break;
+ case CursorShape::CSMoveLeft:
+ window->set_cursor(cMoveL);
+ break;
+ case CursorShape::CSMoveRight:
+ window->set_cursor(cMoveR);
+ break;
+ case CursorShape::CSMoveRotate:
+ window->set_cursor(cRotate);
+ break;
+ case CursorShape::CSPlus:
+ window->set_cursor(cAdd);
+ break;
+ case CursorShape::CSResizeBottomLeft:
+ window->set_cursor(cMoveBL);
+ break;
+ case CursorShape::CSResizeBottomRight:
+ window->set_cursor(cMoveBR);
+ break;
+ case CursorShape::CSResizeDiagonal:
+ window->set_cursor(cMoveXY);
+ break;
+ case CursorShape::CSResizeHeight:
+ window->set_cursor(cMoveY);
+ break;
+ case CursorShape::CSResizeTopLeft:
+ window->set_cursor(cMoveTL);
+ break;
+ case CursorShape::CSResizeTopRight:
+ window->set_cursor(cMoveTR);
+ break;
+ case CursorShape::CSResizeWidth:
+ window->set_cursor(cMoveX);
+ break;
+ case CursorShape::CSSpotWB:
+ window->set_cursor(cWB);
+ break;
+ case CursorShape::CSStraighten:
+ window->set_cursor(cRotate);
+ break;
+ case CursorShape::CSUndefined:
+ break;
+ case CursorShape::CSWait:
+ window->set_cursor(cWait);
+ break;
+ default:
+ window->set_cursor(cCrosshair);
}
}
diff --git a/rtgui/cursormanager.h b/rtgui/cursormanager.h
index fcd856509..7d3f068b2 100644
--- a/rtgui/cursormanager.h
+++ b/rtgui/cursormanager.h
@@ -22,41 +22,57 @@
#include
enum CursorShape {
- CSUndefined, CSArrow, CSOpenHand, CSClosedHand, CSMove, CSMoveLeft,
- CSMoveRight, CSResizeWidth, CSResizeHeight, CSResizeDiagonal,
- CSResizeTopLeft, CSResizeTopRight, CSResizeBottomLeft, CSResizeBottomRight,
- CSMove2D, CSMove1DH, CSMove1DV, CSMoveRotate,
- CSSpotWB, CSAddColPicker, CSCropSelect, CSStraighten, CSPlus, CSWait, CSEmpty
+ CSAddColPicker,
+ CSArrow,
+ CSCropSelect,
+ CSCrosshair,
+ CSEmpty,
+ CSHandClosed,
+ CSHandOpen,
+ CSMove,
+ CSMove1DH,
+ CSMove1DV,
+ CSMove2D,
+ CSMoveLeft,
+ CSMoveRight,
+ CSMoveRotate,
+ CSPlus,
+ CSResizeBottomLeft,
+ CSResizeBottomRight,
+ CSResizeDiagonal,
+ CSResizeHeight,
+ CSResizeTopLeft,
+ CSResizeTopRight,
+ CSResizeWidth,
+ CSSpotWB,
+ CSStraighten,
+ CSUndefined,
+ CSWait
};
class CursorManager
{
private:
- Glib::RefPtr cResizeWidth;
- Glib::RefPtr cResizeHeight;
- Glib::RefPtr cResizeDiag;
- Glib::RefPtr cResizeTopLeft;
- Glib::RefPtr cResizeTopRight;
- Glib::RefPtr cResizeBottomLeft;
- Glib::RefPtr cResizeBottomRight;
- Glib::RefPtr cCropMove;
- Glib::RefPtr cCropMoving;
- Glib::RefPtr cLeftTanMove;
- Glib::RefPtr cRightTanMove;
- Glib::RefPtr cNormal;
- Glib::RefPtr cCropSelection;
Glib::RefPtr cAdd;
- Glib::RefPtr cWait;
- Glib::RefPtr cHand;
- Glib::RefPtr cClosedHand;
- Glib::RefPtr cWB;
Glib::RefPtr cAddPicker;
- Glib::RefPtr cHidden;
- Glib::RefPtr cMove2D;
- Glib::RefPtr cMove1DH;
- Glib::RefPtr cMove1DV;
- Glib::RefPtr cMoveRotate;
+ Glib::RefPtr cCropDraw;
+ Glib::RefPtr cCrosshair;
+ Glib::RefPtr cHandClosed;
+ Glib::RefPtr cHandOpen;
+ Glib::RefPtr cEmpty;
+ Glib::RefPtr cMoveBL;
+ Glib::RefPtr cMoveBR;
+ Glib::RefPtr cMoveL;
+ Glib::RefPtr cMoveR;
+ Glib::RefPtr cMoveTL;
+ Glib::RefPtr cMoveTR;
+ Glib::RefPtr cMoveX;
+ Glib::RefPtr cMoveY;
+ Glib::RefPtr cMoveXY;
+ Glib::RefPtr cRotate;
+ Glib::RefPtr cWB;
+ Glib::RefPtr cWait;
Glib::RefPtr display;
Glib::RefPtr window;
diff --git a/rtgui/curveeditor.cc b/rtgui/curveeditor.cc
index 8b319ecbe..a65f8b451 100644
--- a/rtgui/curveeditor.cc
+++ b/rtgui/curveeditor.cc
@@ -443,5 +443,5 @@ CursorShape CurveEditor::getCursor(const int objectID)
return CSResizeHeight;
}
- return CSOpenHand;
+ return CSHandOpen;
}
diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc
index e7599b502..6455f6cb9 100644
--- a/rtgui/diagonalcurveeditorsubgroup.cc
+++ b/rtgui/diagonalcurveeditorsubgroup.cc
@@ -69,7 +69,7 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
editPointCustom = Gtk::manage (new Gtk::ToggleButton ());
initButton(*editPointCustom, Glib::ustring("edit-point.png"), Gtk::ALIGN_START, false, "CURVEEDITOR_EDITPOINT_HINT");
editCustom = Gtk::manage (new Gtk::ToggleButton());
- initButton(*editCustom, Glib::ustring("crosshair-adjust.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
+ initButton(*editCustom, Glib::ustring("crosshair-node-curve.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
editCustom->hide();
copyCustom = Gtk::manage (new Gtk::Button ());
initButton(*copyCustom, Glib::ustring("copy.png"), Gtk::ALIGN_END, true);
@@ -146,7 +146,7 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
editPointNURBS = Gtk::manage (new Gtk::ToggleButton ());
initButton(*editPointNURBS, Glib::ustring("edit-point.png"), Gtk::ALIGN_START, false, "CURVEEDITOR_EDITPOINT_HINT");
editNURBS = Gtk::manage (new Gtk::ToggleButton());
- initButton(*editNURBS, Glib::ustring("crosshair-adjust.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
+ initButton(*editNURBS, Glib::ustring("crosshair-node-curve.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
editNURBS->hide();
copyNURBS = Gtk::manage (new Gtk::Button ());
initButton(*copyNURBS, Glib::ustring("copy.png"), Gtk::ALIGN_END, true);
@@ -224,7 +224,7 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
shcSelector->set_name("CurveSHCSelector"); // To handle the 4px gap between the SHCSelector and the curve through CSS
editParam = Gtk::manage (new Gtk::ToggleButton());
- initButton(*editParam, Glib::ustring("crosshair-adjust.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
+ initButton(*editParam, Glib::ustring("crosshair-node-curve.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
editParam->hide();
copyParam = Gtk::manage (new Gtk::Button ());
initButton(*copyParam, Glib::ustring("copy.png"), Gtk::ALIGN_END, true);
diff --git a/rtgui/edit.cc b/rtgui/edit.cc
index 3d0ca3957..a937c7964 100644
--- a/rtgui/edit.cc
+++ b/rtgui/edit.cc
@@ -1472,7 +1472,7 @@ CursorShape EditDataProvider::getCursor (int objectID)
currSubscriber->getCursor (objectID);
}
- return CSOpenHand;
+ return CSHandOpen;
}
EditSubscriber* EditDataProvider::getCurrSubscriber()
diff --git a/rtgui/edit.h b/rtgui/edit.h
index 097b3fed2..99a31cd39 100644
--- a/rtgui/edit.h
+++ b/rtgui/edit.h
@@ -784,9 +784,8 @@ inline EditDataProvider* EditSubscriber::getEditProvider ()
return provider;
}
-inline CursorShape EditSubscriber::getCursor (const int objectID)
-{
- return CSOpenHand;
+inline CursorShape EditSubscriber::getCursor (const int objectID) {
+ return CSHandOpen;
}
inline bool EditSubscriber::mouseOver (const int modifierKey)
diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc
index 69012745b..e7fd11a26 100644
--- a/rtgui/editorpanel.cc
+++ b/rtgui/editorpanel.cc
@@ -497,8 +497,11 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
// build GUI
// build left side panel
- leftbox = new Gtk::VBox ();
- leftbox->set_size_request (230, 250);
+ leftbox = new Gtk::Paned (Gtk::ORIENTATION_VERTICAL);
+
+ // make a subbox to allow resizing of the histogram (if it's on the left)
+ leftsubbox = new Gtk::Box (Gtk::ORIENTATION_VERTICAL);
+ leftsubbox->set_size_request (230, 250);
histogramPanel = nullptr;
@@ -507,19 +510,22 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
ppframe->set_name ("ProfilePanel");
ppframe->add (*profilep);
ppframe->set_label (M ("PROFILEPANEL_LABEL"));
- //leftbox->pack_start (*ppframe, Gtk::PACK_SHRINK, 4);
+ //leftsubbox->pack_start (*ppframe, Gtk::PACK_SHRINK, 4);
navigator = Gtk::manage (new Navigator ());
navigator->previewWindow->set_size_request (-1, 150);
- leftbox->pack_start (*navigator, Gtk::PACK_SHRINK, 2);
+ leftsubbox->pack_start (*navigator, Gtk::PACK_SHRINK, 2);
history = Gtk::manage (new History ());
- leftbox->pack_start (*history);
+ leftsubbox->pack_start (*history);
+ leftsubbox->show_all ();
+
+ leftbox->pack2 (*leftsubbox, true, true);
leftbox->show_all ();
// build the middle of the screen
- Gtk::VBox* editbox = Gtk::manage (new Gtk::VBox ());
+ Gtk::Box* editbox = Gtk::manage (new Gtk::Box (Gtk::ORIENTATION_VERTICAL));
info = Gtk::manage (new Gtk::ToggleButton ());
Gtk::Image* infoimg = Gtk::manage (new RTImage ("info.png"));
@@ -590,7 +596,7 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
tpc->setEditProvider (iareapanel->imageArea);
tpc->getToolBar()->setLockablePickerToolListener (iareapanel->imageArea);
- Gtk::HBox* toolBarPanel = Gtk::manage (new Gtk::HBox ());
+ Gtk::Box* toolBarPanel = Gtk::manage (new Gtk::Box (Gtk::ORIENTATION_HORIZONTAL));
toolBarPanel->set_name ("EditorTopPanel");
toolBarPanel->pack_start (*hidehp, Gtk::PACK_SHRINK, 1);
toolBarPanel->pack_start (*vseph, Gtk::PACK_SHRINK, 2);
@@ -617,23 +623,30 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
toolBarPanel->pack_end (*iareapanel->imageArea->previewModePanel, Gtk::PACK_SHRINK, 0);
toolBarPanel->pack_end (*vsepz4, Gtk::PACK_SHRINK, 2);
- afterBox = Gtk::manage (new Gtk::VBox ());
+ afterBox = Gtk::manage (new Gtk::Box (Gtk::ORIENTATION_VERTICAL));
afterBox->pack_start (*iareapanel);
- beforeAfterBox = Gtk::manage (new Gtk::HBox());
+ beforeAfterBox = Gtk::manage (new Gtk::Box (Gtk::ORIENTATION_HORIZONTAL));
beforeAfterBox->set_name ("BeforeAfterContainer");
beforeAfterBox->pack_start (*afterBox);
- editbox->pack_start (*toolBarPanel, Gtk::PACK_SHRINK, 2);
+ MyScrolledToolbar *stb1 = Gtk::manage(new MyScrolledToolbar());
+ stb1->set_name("EditorToolbarTop");
+ stb1->add(*toolBarPanel);
+ editbox->pack_start (*stb1, Gtk::PACK_SHRINK, 2);
editbox->pack_start (*beforeAfterBox);
// build right side panel
- vboxright = new Gtk::VBox (false, 0);
- vboxright->set_size_request (300, 250);
+ vboxright = new Gtk::Paned (Gtk::ORIENTATION_VERTICAL);
+
+ vsubboxright = new Gtk::Box (Gtk::ORIENTATION_VERTICAL, 0);
+ vsubboxright->set_size_request (300, 250);
- vboxright->pack_start (*ppframe, Gtk::PACK_SHRINK, 2);
+ vsubboxright->pack_start (*ppframe, Gtk::PACK_SHRINK, 2);
// main notebook
- vboxright->pack_start (*tpc->toolPanelNotebook);
+ vsubboxright->pack_start (*tpc->toolPanelNotebook);
+
+ vboxright->pack2 (*vsubboxright, true, true);
// Save buttons
Gtk::Grid *iops = new Gtk::Grid ();
@@ -753,7 +766,11 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
iops->attach_next_to (*tbShowHideSidePanels, Gtk::POS_RIGHT, 1, 1);
iops->attach_next_to (*tbRightPanel_1, Gtk::POS_RIGHT, 1, 1);
- editbox->pack_start (*iops, Gtk::PACK_SHRINK, 0);
+ MyScrolledToolbar *stb2 = Gtk::manage(new MyScrolledToolbar());
+ stb2->set_name("EditorToolbarBottom");
+ stb2->add(*iops);
+
+ editbox->pack_start (*stb2, Gtk::PACK_SHRINK, 0);
editbox->show_all ();
// build screen
@@ -769,8 +786,7 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
hpanedl->set_position (options.historyPanelWidth);
}
-
- Gtk::VPaned * viewpaned = Gtk::manage (new Gtk::VPaned());
+ Gtk::Paned *viewpaned = Gtk::manage (new Gtk::Paned (Gtk::ORIENTATION_VERTICAL));
fPanel = filePanel;
if (filePanel) {
@@ -843,6 +859,7 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
if (tbTopPanel_1) {
tbTopPanel_1->signal_toggled().connect ( sigc::mem_fun (*this, &EditorPanel::tbTopPanel_1_toggled) );
}
+
}
EditorPanel::~EditorPanel ()
@@ -886,7 +903,9 @@ EditorPanel::~EditorPanel ()
delete tpc;
delete ppframe;
+ delete leftsubbox;
delete leftbox;
+ delete vsubboxright;
delete vboxright;
//delete saveAsDialog;
@@ -1764,7 +1783,7 @@ bool EditorPanel::idle_saveImage (ProgressConnector *pc,
img->setSaveProgressListener (parent->getProgressListener());
if (sf.format == "tif")
- ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImagefloat::saveAsTIFF), fname, sf.tiffBits, sf.tiffUncompressed),
+ ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImagefloat::saveAsTIFF), fname, sf.tiffBits, sf.tiffFloat, sf.tiffUncompressed),
sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_imageSaved), ld, img, fname, sf, pparams));
else if (sf.format == "png")
ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImagefloat::saveAsPNG), fname, sf.pngBits),
@@ -1981,9 +2000,9 @@ bool EditorPanel::saveImmediately (const Glib::ustring &filename, const SaveForm
int err = 0;
if (gimpPlugin) {
- err = img->saveAsTIFF (filename, 32, true);
+ err = img->saveAsTIFF (filename, 32, true, true);
} else if (sf.format == "tif") {
- err = img->saveAsTIFF (filename, sf.tiffBits, sf.tiffUncompressed);
+ err = img->saveAsTIFF (filename, sf.tiffBits, sf.tiffFloat, sf.tiffUncompressed);
} else if (sf.format == "png") {
err = img->saveAsPNG (filename, sf.pngBits);
} else if (sf.format == "jpg") {
@@ -2039,6 +2058,7 @@ bool EditorPanel::idle_sendToGimp ( ProgressConnector *p
SaveFormat sf;
sf.format = "tif";
sf.tiffBits = 16;
+ sf.tiffFloat = false;
sf.tiffUncompressed = true;
sf.saveParams = true;
@@ -2059,7 +2079,7 @@ bool EditorPanel::idle_sendToGimp ( ProgressConnector *p
ProgressConnector *ld = new ProgressConnector();
img->setSaveProgressListener (parent->getProgressListener());
- ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImagefloat::saveAsTIFF), fileName, sf.tiffBits, sf.tiffUncompressed),
+ ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImagefloat::saveAsTIFF), fileName, sf.tiffBits, sf.tiffFloat, sf.tiffUncompressed),
sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_sentToGimp), ld, img, fileName));
} else {
Glib::ustring msg_ = Glib::ustring (" Error during image processing\n");
@@ -2166,7 +2186,7 @@ void EditorPanel::beforeAfterToggled ()
tbBeforeLock = Gtk::manage (new Gtk::ToggleButton ());
tbBeforeLock->set_tooltip_markup (M ("MAIN_TOOLTIP_BEFOREAFTERLOCK"));
tbBeforeLock->signal_toggled().connect ( sigc::mem_fun (*this, &EditorPanel::tbBeforeLock_toggled) );
- beforeHeaderBox = Gtk::manage (new Gtk::HBox ());
+ beforeHeaderBox = Gtk::manage (new Gtk::Box (Gtk::ORIENTATION_HORIZONTAL));
beforeHeaderBox->pack_end (*tbBeforeLock, Gtk::PACK_SHRINK, 2);
beforeHeaderBox->pack_end (*beforeLabel, Gtk::PACK_SHRINK, 2);
beforeHeaderBox->set_size_request (0, HeaderBoxHeight);
@@ -2180,7 +2200,7 @@ void EditorPanel::beforeAfterToggled ()
afterLabel = Gtk::manage (new Gtk::Label ());
afterLabel->set_markup (Glib::ustring ("") + M ("GENERAL_AFTER") + "");
- afterHeaderBox = Gtk::manage (new Gtk::HBox ());
+ afterHeaderBox = Gtk::manage (new Gtk::Box (Gtk::ORIENTATION_HORIZONTAL));
afterHeaderBox->set_size_request (0, HeaderBoxHeight);
afterHeaderBox->pack_end (*afterLabel, Gtk::PACK_SHRINK, 2);
afterBox->pack_start (*afterHeaderBox, Gtk::PACK_SHRINK, 2);
@@ -2229,7 +2249,7 @@ void EditorPanel::histogramChanged (LUTu & histRed, LUTu & histGreen, LUTu & his
{
if (histogramPanel) {
- histogramPanel->histogramChanged (histRed, histGreen, histBlue, histLuma, histRedRaw, histGreenRaw, histBlueRaw, histChroma);
+ histogramPanel->histogramChanged (histRed, histGreen, histBlue, histLuma, histChroma, histRedRaw, histGreenRaw, histBlueRaw);
}
tpc->updateCurveBackgroundHistogram (histToneCurve, histLCurve, histCCurve,/*histCLurve, histLLCurve,*/ histLCAM, histCCAM, histRed, histGreen, histBlue, histLuma, histLRETI);
@@ -2322,17 +2342,17 @@ void EditorPanel::updateHistogramPosition (int oldPosition, int newPosition)
if (oldPosition == 0) {
// There was no Histogram before, so we create it
histogramPanel = Gtk::manage (new HistogramPanel ());
- leftbox->pack_start (*histogramPanel, Gtk::PACK_SHRINK, 2);
+ leftbox->pack1(*histogramPanel, false, false);
} else if (oldPosition == 2) {
// The histogram was on the right side, so we move it to the left
histogramPanel->reference();
removeIfThere (vboxright, histogramPanel, false);
- leftbox->pack_start (*histogramPanel, Gtk::PACK_SHRINK, 2);
+ leftbox->pack1(*histogramPanel, false, false);
histogramPanel->unreference();
}
-
+
+ leftbox->set_position(options.histogramHeight);
histogramPanel->reorder (Gtk::POS_LEFT);
- leftbox->reorder_child (*histogramPanel, 0);
break;
case 2:
@@ -2342,21 +2362,22 @@ void EditorPanel::updateHistogramPosition (int oldPosition, int newPosition)
if (oldPosition == 0) {
// There was no Histogram before, so we create it
histogramPanel = Gtk::manage (new HistogramPanel ());
- vboxright->pack_start (*histogramPanel, Gtk::PACK_SHRINK, 2);
+ vboxright->pack1 (*histogramPanel, false, false);
} else if (oldPosition == 1) {
// The histogram was on the left side, so we move it to the right
histogramPanel->reference();
removeIfThere (leftbox, histogramPanel, false);
- vboxright->pack_start (*histogramPanel, Gtk::PACK_SHRINK, 2);
+ vboxright->pack1 (*histogramPanel, false, false);
histogramPanel->unreference();
}
-
+
+ vboxright->set_position(options.histogramHeight);
histogramPanel->reorder (Gtk::POS_RIGHT);
- vboxright->reorder_child (*histogramPanel, 0);
break;
}
iareapanel->imageArea->setPointerMotionHListener (histogramPanel);
+
}
diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h
index 7876d18e1..054ad0a6b 100644
--- a/rtgui/editorpanel.h
+++ b/rtgui/editorpanel.h
@@ -173,8 +173,10 @@ private:
Gtk::Image *iShowHideSidePanels;
Gtk::Image *iShowHideSidePanels_exit;
Gtk::Image *iBeforeLockON, *iBeforeLockOFF;
- Gtk::VBox *leftbox;
- Gtk::VBox *vboxright;
+ Gtk::Paned *leftbox;
+ Gtk::Box *leftsubbox;
+ Gtk::Paned *vboxright;
+ Gtk::Box *vsubboxright;
Gtk::Button* queueimg;
Gtk::Button* saveimgas;
@@ -191,13 +193,13 @@ private:
PreviewHandler* beforePreviewHandler; // for the before-after view
Navigator* navigator;
ImageAreaPanel* beforeIarea; // for the before-after view
- Gtk::VBox* beforeBox;
- Gtk::VBox* afterBox;
+ Gtk::Box* beforeBox;
+ Gtk::Box* afterBox;
Gtk::Label* beforeLabel;
Gtk::Label* afterLabel;
- Gtk::HBox* beforeAfterBox;
- Gtk::HBox* beforeHeaderBox;
- Gtk::HBox* afterHeaderBox;
+ Gtk::Box* beforeAfterBox;
+ Gtk::Box* beforeHeaderBox;
+ Gtk::Box* afterHeaderBox;
Gtk::ToggleButton* toggleHistogramProfile;
Gtk::Frame* ppframe;
diff --git a/rtgui/filebrowserentry.cc b/rtgui/filebrowserentry.cc
index 6046d372d..71e6aef24 100644
--- a/rtgui/filebrowserentry.cc
+++ b/rtgui/filebrowserentry.cc
@@ -211,6 +211,9 @@ void FileBrowserEntry::procParamsChanged (Thumbnail* thm, int whoChangedIt)
void FileBrowserEntry::updateImage (rtengine::IImage8* img, double scale, rtengine::procparams::CropParams cropParams)
{
+ if (!feih) {
+ return;
+ }
redrawRequests++;
feih->pending++;
diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc
index a0d767d79..2271c05c7 100644
--- a/rtgui/filecatalog.cc
+++ b/rtgui/filecatalog.cc
@@ -48,6 +48,7 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
listener(nullptr),
fslistener(nullptr),
iatlistener(nullptr),
+ hbToolBar1STB(nullptr),
hasValidCurrentEFS(false),
filterPanel(nullptr),
exportPanel(nullptr),
@@ -61,7 +62,6 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
inTabMode = false;
set_name ("FileBrowser");
- set_spacing (2);
// construct and initialize thumbnail browsers
fileBrowser = Gtk::manage( new FileBrowser() );
@@ -127,13 +127,19 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
// if NOT a single row toolbar
if (!options.FileBrowserToolbarSingleRow) {
- pack_start (*hbToolBar1, Gtk::PACK_SHRINK, 0);
+ hbToolBar1STB = Gtk::manage(new MyScrolledToolbar());
+ hbToolBar1STB->set_name("FileBrowserQueryToolbar");
+ hbToolBar1STB->add(*hbToolBar1);
+ pack_start (*hbToolBar1STB, Gtk::PACK_SHRINK, 0);
}
// setup button bar
buttonBar = Gtk::manage( new Gtk::HBox () );
buttonBar->set_name ("ToolBarPanelFileBrowser");
- pack_start (*buttonBar, Gtk::PACK_SHRINK);
+ MyScrolledToolbar *stb = Gtk::manage(new MyScrolledToolbar());
+ stb->set_name("FileBrowserIconToolbar");
+ stb->add(*buttonBar);
+ pack_start (*stb, Gtk::PACK_SHRINK);
tbLeftPanel_1 = new Gtk::ToggleButton ();
iLeftPanel_1_Show = new RTImage("panel-to-right.png");
@@ -692,6 +698,9 @@ void FileCatalog::enableTabMode(bool enable)
} else {
buttonBar->show();
hbToolBar1->show();
+ if (hbToolBar1STB) {
+ hbToolBar1STB->show();
+ }
exifInfo->set_active( options.showFileNames );
}
@@ -910,8 +919,8 @@ void FileCatalog::refreshHeight ()
newHeight = h;
}
- if (hbToolBar1->is_visible() && !options.FileBrowserToolbarSingleRow) {
- newHeight += hbToolBar1->get_height();
+ if (hbToolBar1STB && hbToolBar1STB->is_visible()) {
+ newHeight += hbToolBar1STB->get_height();
}
if (buttonBar->is_visible()) {
@@ -2039,17 +2048,21 @@ void FileCatalog::updateFBQueryTB (bool singleRow)
hbToolBar1->reference();
if (singleRow) {
- bool removed = removeIfThere(this, hbToolBar1, false);
-
- if (removed) {
+ if (hbToolBar1STB) {
+ hbToolBar1STB->remove_with_viewport();
+ removeIfThere(this, hbToolBar1STB, false);
buttonBar->pack_start(*hbToolBar1, Gtk::PACK_EXPAND_WIDGET, 0);
+ hbToolBar1STB = nullptr;
}
} else {
- bool removed = removeIfThere(buttonBar, hbToolBar1, false);
-
- if (removed) {
- pack_start(*hbToolBar1, Gtk::PACK_SHRINK, 0);
- reorder_child(*hbToolBar1, 0);
+ if (!hbToolBar1STB) {
+ removeIfThere(buttonBar, hbToolBar1, false);
+ hbToolBar1STB = Gtk::manage(new MyScrolledToolbar());
+ hbToolBar1STB->set_name("FileBrowserQueryToolbar");
+ hbToolBar1STB->add(*hbToolBar1);
+ hbToolBar1STB->show();
+ pack_start (*hbToolBar1STB, Gtk::PACK_SHRINK, 0);
+ reorder_child(*hbToolBar1STB, 0);
}
}
@@ -2592,7 +2605,7 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event)
void FileCatalog::showToolBar()
{
if (!options.FileBrowserToolbarSingleRow) {
- hbToolBar1->show();
+ hbToolBar1STB->show();
}
buttonBar->show();
@@ -2601,7 +2614,7 @@ void FileCatalog::showToolBar()
void FileCatalog::hideToolBar()
{
if (!options.FileBrowserToolbarSingleRow) {
- hbToolBar1->hide();
+ hbToolBar1STB->hide();
}
buttonBar->hide();
diff --git a/rtgui/filecatalog.h b/rtgui/filecatalog.h
index 66f14b6b2..af16fc8ae 100644
--- a/rtgui/filecatalog.h
+++ b/rtgui/filecatalog.h
@@ -73,6 +73,7 @@ private:
Gtk::HBox* buttonBar;
Gtk::HBox* hbToolBar1;
+ MyScrolledToolbar* hbToolBar1STB;
Gtk::HBox* fltrRankbox;
Gtk::HBox* fltrLabelbox;
diff --git a/rtgui/flatcurveeditorsubgroup.cc b/rtgui/flatcurveeditorsubgroup.cc
index 055a8a92f..2cc96a184 100644
--- a/rtgui/flatcurveeditorsubgroup.cc
+++ b/rtgui/flatcurveeditorsubgroup.cc
@@ -63,7 +63,7 @@ FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::u
}
editCPoints = Gtk::manage (new Gtk::ToggleButton());
- initButton(*editCPoints, Glib::ustring("crosshair-adjust.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
+ initButton(*editCPoints, Glib::ustring("crosshair-node-curve.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
editPointCPoints = Gtk::manage (new Gtk::ToggleButton ());
initButton(*editPointCPoints, Glib::ustring("edit-point.png"), Gtk::ALIGN_START, false, "CURVEEDITOR_EDITPOINT_HINT");
copyCPoints = Gtk::manage (new Gtk::Button ());
diff --git a/rtgui/gradient.cc b/rtgui/gradient.cc
index a53ac3e6a..e14739fb4 100644
--- a/rtgui/gradient.cc
+++ b/rtgui/gradient.cc
@@ -348,7 +348,7 @@ CursorShape Gradient::getCursor(const int objectID)
return CSMove2D;
default:
- return CSOpenHand;
+ return CSHandOpen;
}
}
diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc
index 28d3f6324..1e4f4eac8 100644
--- a/rtgui/guiutils.cc
+++ b/rtgui/guiutils.cc
@@ -955,7 +955,7 @@ bool MyScrolledWindow::on_scroll_event (GdkEventScroll* event)
if (value2 != value) {
scroll->set_value(value2);
}
- } else {
+ } else if (event->direction == GDK_SCROLL_UP) {
value2 = value - step;
if (value2 < lower) {
@@ -981,6 +981,77 @@ void MyScrolledWindow::get_preferred_height_for_width_vfunc (int width, int &min
natural_height = minimum_height = 50;
}
+/*
+ *
+ * Derived class of some widgets to properly handle the scroll wheel ;
+ * the user has to use the Shift key to be able to change the widget's value,
+ * otherwise the mouse wheel will scroll the toolbar.
+ *
+ */
+MyScrolledToolbar::MyScrolledToolbar ()
+{
+ set_policy (Gtk::POLICY_EXTERNAL, Gtk::POLICY_NEVER);
+ get_style_context()->add_class("scrollableToolbar");
+
+ // Works fine with Gtk 3.22, but a a custom made get_preferred_height had to be created as a workaround
+ // taken from the official Gtk3.22 source code
+ //set_propagate_natural_height(true);
+}
+
+bool MyScrolledToolbar::on_scroll_event (GdkEventScroll* event)
+{
+ Glib::RefPtr adjust = get_hadjustment();
+ Gtk::Scrollbar *scroll = get_hscrollbar();
+
+ if (adjust && scroll) {
+ double upper = adjust->get_upper();
+ double lower = adjust->get_lower();
+ double value = adjust->get_value();
+ double step = adjust->get_step_increment() * 2;
+ double value2 = 0.;
+
+ if (event->direction == GDK_SCROLL_DOWN) {
+ value2 = rtengine::min(value + step, upper);
+ if (value2 != value) {
+ scroll->set_value(value2);
+ }
+ } else if (event->direction == GDK_SCROLL_UP) {
+ value2 = rtengine::max(value - step, lower);
+ if (value2 != value) {
+ scroll->set_value(value2);
+ }
+ } else if (event->direction == GDK_SCROLL_SMOOTH) {
+ if (event->delta_x) { // if the user use a pad, it can scroll horizontally
+ value2 = rtengine::LIM(value + (event->delta_x > 0 ? 30 : -30), lower, upper);
+ } else if (event->delta_y) {
+ value2 = rtengine::LIM(value + (event->delta_y > 0 ? 30 : -30), lower, upper);
+ }
+ if (value2 != value) {
+ scroll->set_value(value2);
+ }
+ }
+ }
+
+ return true;
+}
+
+void MyScrolledToolbar::get_preferred_height (int &minimumHeight, int &naturalHeight)
+{
+ int currMinHeight = 0;
+ int currNatHeight = 0;
+ std::vector childs = get_children();
+ minimumHeight = naturalHeight = 0;
+
+ for (auto child : childs)
+ {
+ if(child->is_visible()) {
+ child->get_preferred_height(currMinHeight, currNatHeight);
+ minimumHeight = rtengine::max(currMinHeight, minimumHeight);
+ naturalHeight = rtengine::max(currNatHeight, naturalHeight);
+ }
+ }
+}
+
MyComboBoxText::MyComboBoxText (bool has_entry) : Gtk::ComboBoxText(has_entry)
{
minimumWidth = naturalWidth = 70;
diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h
index 2861b4913..fb627a78a 100644
--- a/rtgui/guiutils.h
+++ b/rtgui/guiutils.h
@@ -293,6 +293,19 @@ public:
MyScrolledWindow();
};
+/**
+ * @brief subclass of Gtk::ScrolledWindow in order to handle the large toolbars (wider than available space)
+ */
+class MyScrolledToolbar : public Gtk::ScrolledWindow
+{
+
+ bool on_scroll_event (GdkEventScroll* event);
+ void get_preferred_height (int &minimumHeight, int &naturalHeight);
+
+public:
+ MyScrolledToolbar();
+};
+
/**
* @brief subclass of Gtk::ComboBox in order to handle the scrollwheel
*/
diff --git a/rtgui/histogrampanel.cc b/rtgui/histogrampanel.cc
index 471e696fc..5293c6c00 100644
--- a/rtgui/histogrampanel.cc
+++ b/rtgui/histogrampanel.cc
@@ -21,12 +21,14 @@
#include "guiutils.h"
#include "options.h"
#include
+#include
#include "../rtengine/LUT.h"
#include "rtimage.h"
#include "../rtengine/improccoordinator.h"
#include "../rtengine/color.h"
#include "../rtengine/opthelper.h"
#include "../rtengine/iccstore.h"
+
using namespace rtengine;
extern Options options;
@@ -37,22 +39,18 @@ extern Options options;
// HistogramPanel
HistogramPanel::HistogramPanel ()
{
-
- set_vexpand(false);
- set_hexpand(true);
- set_valign(Gtk::ALIGN_START);
- set_halign(Gtk::ALIGN_FILL);
+ setExpandAlignProperties(this, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
set_name("HistogramPanel");
histogramArea = Gtk::manage (new HistogramArea (this));
- histogramArea->set_hexpand(true);
- histogramArea->set_vexpand(true);
+ setExpandAlignProperties(histogramArea, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
+
histogramRGBArea = Gtk::manage (new HistogramRGBArea ());
- histogramRGBArea->set_hexpand(true);
- histogramRGBArea->set_vexpand(false);
- histogramRGBArea->set_halign(Gtk::ALIGN_FILL);
- histogramRGBArea->set_valign(Gtk::ALIGN_END);
+ setExpandAlignProperties(histogramRGBArea, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_END);
histogramRGBArea->show();
+
+ // connecting the two childs
+ histogramArea->signal_factor_changed().connect( sigc::mem_fun(*histogramRGBArea, &HistogramRGBArea::factorChanged) );
gfxGrid = Gtk::manage (new Gtk::Grid ());
gfxGrid->set_orientation(Gtk::ORIENTATION_VERTICAL);
@@ -71,7 +69,6 @@ HistogramPanel::HistogramPanel ()
valueImage = new RTImage ("histogram-silver-on-small.png");
chroImage = new RTImage ("histogram-gold-on-small.png");
rawImage = new RTImage ("histogram-bayer-on-small.png");
- fullImage = new RTImage ("histogram-mode-linear-small.png");
barImage = new RTImage ("histogram-bar-on-small.png");
redImage_g = new RTImage ("histogram-red-off-small.png");
@@ -80,8 +77,11 @@ HistogramPanel::HistogramPanel ()
valueImage_g = new RTImage ("histogram-silver-off-small.png");
chroImage_g = new RTImage ("histogram-gold-off-small.png");
rawImage_g = new RTImage ("histogram-bayer-off-small.png");
- fullImage_g = new RTImage ("histogram-mode-linear-small.png");
barImage_g = new RTImage ("histogram-bar-off-small.png");
+
+ mode0Image = new RTImage ("histogram-mode-linear-small.png");
+ mode1Image = new RTImage ("histogram-mode-logx-small.png");
+ mode2Image = new RTImage ("histogram-mode-logxy-small.png");
showRed = Gtk::manage (new Gtk::ToggleButton ());
showGreen = Gtk::manage (new Gtk::ToggleButton ());
@@ -89,7 +89,7 @@ HistogramPanel::HistogramPanel ()
showValue = Gtk::manage (new Gtk::ToggleButton ());
showChro = Gtk::manage (new Gtk::ToggleButton ());
showRAW = Gtk::manage (new Gtk::ToggleButton ());
- showFull = Gtk::manage (new Gtk::ToggleButton ());
+ showMode = Gtk::manage (new Gtk::Button ());
showBAR = Gtk::manage (new Gtk::ToggleButton ());
showRed->set_name("histButton");
@@ -104,8 +104,8 @@ HistogramPanel::HistogramPanel ()
showChro->set_can_focus(false);
showRAW->set_name("histButton");
showRAW->set_can_focus(false);
- showFull->set_name("fullButton");
- showFull->set_can_focus(false);
+ showMode->set_name("histButton");
+ showMode->set_can_focus(false);
showBAR->set_name("histButton");
showBAR->set_can_focus(false);
@@ -115,7 +115,7 @@ HistogramPanel::HistogramPanel ()
showValue->set_relief (Gtk::RELIEF_NONE);
showChro->set_relief (Gtk::RELIEF_NONE);
showRAW->set_relief (Gtk::RELIEF_NONE);
- showFull->set_relief (Gtk::RELIEF_NONE);
+ showMode->set_relief (Gtk::RELIEF_NONE);
showBAR->set_relief (Gtk::RELIEF_NONE);
showRed->set_tooltip_text (M("HISTOGRAM_TOOLTIP_R"));
@@ -124,20 +124,19 @@ HistogramPanel::HistogramPanel ()
showValue->set_tooltip_text (M("HISTOGRAM_TOOLTIP_L"));
showChro->set_tooltip_text (M("HISTOGRAM_TOOLTIP_CHRO"));
showRAW->set_tooltip_text (M("HISTOGRAM_TOOLTIP_RAW"));
- showFull->set_tooltip_text (M("HISTOGRAM_TOOLTIP_FULL"));
+ showMode->set_tooltip_text (M("HISTOGRAM_TOOLTIP_MODE"));
showBAR->set_tooltip_text (M("HISTOGRAM_TOOLTIP_BAR"));
buttonGrid = Gtk::manage (new Gtk::Grid ());
buttonGrid->set_orientation(Gtk::ORIENTATION_VERTICAL);
- showRed->set_active (true);
- showGreen->set_active (true);
- showBlue->set_active (true);
- showValue->set_active (true);
- showChro->set_active (false);//unactive by default
-
- showRAW->set_active (false);
- showFull->set_active (!options.histogramFullMode);
- showBAR->set_active (options.histogramBar);
+ showRed->set_active (options.histogramRed);
+ showGreen->set_active (options.histogramGreen);
+ showBlue->set_active (options.histogramBlue);
+ showValue->set_active (options.histogramLuma);
+ showChro->set_active (options.histogramChroma);
+ showRAW->set_active (options.histogramRAW);
+ // no showMode->set_active(), as it's not a ToggleButton
+ showBAR->set_active (options.histogramBar);
showRed->set_image (showRed->get_active() ? *redImage : *redImage_g);
showGreen->set_image (showGreen->get_active() ? *greenImage : *greenImage_g);
@@ -145,41 +144,22 @@ HistogramPanel::HistogramPanel ()
showValue->set_image (showValue->get_active() ? *valueImage : *valueImage_g);
showChro->set_image (showChro->get_active() ? *chroImage : *chroImage_g);
showRAW->set_image (showRAW->get_active() ? *rawImage : *rawImage_g);
- showFull->set_image (showFull->get_active() ? *fullImage : *fullImage_g);
+ if (options.histogramDrawMode == 0)
+ showMode->set_image(*mode0Image);
+ else if (options.histogramDrawMode == 1)
+ showMode->set_image(*mode1Image);
+ else
+ showMode->set_image(*mode2Image);
showBAR->set_image (showBAR->get_active() ? *barImage : *barImage_g);
- showRed->set_hexpand(false);
- showRed->set_vexpand(false);
- showRed->set_halign(Gtk::ALIGN_CENTER);
- showRed->set_valign(Gtk::ALIGN_START);
- showGreen->set_hexpand(false);
- showGreen->set_vexpand(false);
- showGreen->set_halign(Gtk::ALIGN_CENTER);
- showGreen->set_valign(Gtk::ALIGN_START);
- showBlue->set_hexpand(false);
- showRed->set_vexpand(false);
- showBlue->set_halign(Gtk::ALIGN_CENTER);
- showBlue->set_valign(Gtk::ALIGN_START);
- showValue->set_hexpand(false);
- showValue->set_vexpand(false);
- showValue->set_halign(Gtk::ALIGN_CENTER);
- showValue->set_valign(Gtk::ALIGN_START);
- showChro->set_hexpand(false);
- showChro->set_vexpand(false);
- showChro->set_halign(Gtk::ALIGN_CENTER);
- showChro->set_valign(Gtk::ALIGN_START);
- showRAW->set_hexpand(false);
- showRAW->set_vexpand(false);
- showRAW->set_halign(Gtk::ALIGN_CENTER);
- showRAW->set_valign(Gtk::ALIGN_START);
- showFull->set_hexpand(false);
- showFull->set_vexpand(false);
- showFull->set_halign(Gtk::ALIGN_CENTER);
- showFull->set_valign(Gtk::ALIGN_START);
- showBAR->set_hexpand(false);
- showBAR->set_vexpand(false);
- showBAR->set_halign(Gtk::ALIGN_CENTER);
- showBAR->set_valign(Gtk::ALIGN_START);
+ setExpandAlignProperties(showRed , false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+ setExpandAlignProperties(showGreen, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+ setExpandAlignProperties(showBlue , false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+ setExpandAlignProperties(showValue, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+ setExpandAlignProperties(showChro , false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+ setExpandAlignProperties(showRAW , false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+ setExpandAlignProperties(showMode , false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
+ setExpandAlignProperties(showBAR , false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
showRed->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::red_toggled), showRed );
showGreen->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::green_toggled), showGreen );
@@ -187,7 +167,7 @@ HistogramPanel::HistogramPanel ()
showValue->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::value_toggled), showValue );
showChro->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::chro_toggled), showChro );
showRAW->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::raw_toggled), showRAW );
- showFull->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::full_toggled), showFull );
+ showMode->signal_released().connect( sigc::mem_fun(*this, &HistogramPanel::mode_released), showMode );
showBAR->signal_toggled().connect( sigc::mem_fun(*this, &HistogramPanel::bar_toggled), showBAR );
buttonGrid->add (*showRed);
@@ -196,7 +176,7 @@ HistogramPanel::HistogramPanel ()
buttonGrid->add (*showValue);
buttonGrid->add (*showChro);
buttonGrid->add (*showRAW);
- buttonGrid->add (*showFull);
+ buttonGrid->add (*showMode);
buttonGrid->add (*showBAR);
// Put the button vbox next to the window's border to be less disturbing
@@ -221,7 +201,9 @@ HistogramPanel::~HistogramPanel ()
delete valueImage;
delete chroImage;
delete rawImage;
- delete fullImage;
+ delete mode0Image;
+ delete mode1Image;
+ delete mode2Image;
delete barImage;
delete redImage_g;
@@ -230,7 +212,6 @@ HistogramPanel::~HistogramPanel ()
delete valueImage_g;
delete chroImage_g;
delete rawImage_g;
- delete fullImage_g;
delete barImage_g;
}
@@ -238,34 +219,16 @@ HistogramPanel::~HistogramPanel ()
void HistogramPanel::resized (Gtk::Allocation& req)
{
- /*
- rconn.block (true);
-
- int gHeight = req.get_width()/2;
- if (gHeight > 150) gHeight = 150; else if (gHeight < 100) gHeight = 100;
- int bHeight = req.get_width()/30;
- if (bHeight > 10) bHeight = 10; else if (bHeight < 5 ) bHeight = 5;
- histogramArea->set_size_request (req.get_width(), gHeight);
- histogramRGBArea->set_size_request (req.get_width(), bHeight);
-
- rconn.block (false);
- */
-
histogramArea->updateBackBuffer ();
histogramArea->queue_draw ();
- if (histogramRGBArea->getFreeze()) {
- histogramRGBArea->updateFreeze(false);
- // set histogramRGBArea invalid;
- histogramRGBArea->updateBackBuffer(-1, -1, -1);
- // re-set freeze to old state
- histogramRGBArea->updateFreeze(true);
- histogramRGBArea->queue_draw ();
- } else {
- // set histogramRGBArea invalid;
- histogramRGBArea->updateBackBuffer(-1, -1, -1);
- histogramRGBArea->queue_draw ();
- }
+ // set histogramRGBArea invalid;
+ histogramRGBArea->updateBackBuffer(-1, -1, -1);
+ histogramRGBArea->queue_draw ();
+
+ // Store current height of the histogram
+ options.histogramHeight = get_height();
+
}
void HistogramPanel::red_toggled ()
@@ -312,26 +275,34 @@ void HistogramPanel::raw_toggled ()
rgbv_toggled();
}
-void HistogramPanel::full_toggled ()
+
+void HistogramPanel::mode_released ()
{
- options.histogramFullMode = !showFull->get_active();
- showFull->set_image(showFull->get_active() ? *fullImage : *fullImage_g);
+ options.histogramDrawMode = (options.histogramDrawMode + 1) % 3;
+ if (options.histogramDrawMode == 0)
+ showMode->set_image(*mode0Image);
+ else if (options.histogramDrawMode == 1)
+ showMode->set_image(*mode1Image);
+ else
+ showMode->set_image(*mode2Image);
rgbv_toggled();
}
+
void HistogramPanel::bar_toggled ()
{
showBAR->set_image(showBAR->get_active() ? *barImage : *barImage_g);
rgbv_toggled();
}
+
void HistogramPanel::rgbv_toggled ()
{
// Update Display
- histogramArea->updateOptions (showRed->get_active(), showGreen->get_active(), showBlue->get_active(), showValue->get_active(), showRAW->get_active(), showFull->get_active(), showChro->get_active());
+ histogramArea->updateOptions (showRed->get_active(), showGreen->get_active(), showBlue->get_active(), showValue->get_active(), showChro->get_active(), showRAW->get_active(), options.histogramDrawMode);
histogramArea->queue_draw ();
- histogramRGBArea->updateOptions (showRed->get_active(), showGreen->get_active(), showBlue->get_active(), showValue->get_active(), showRAW->get_active(), showBAR->get_active(), showChro->get_active());
+ histogramRGBArea->updateOptions (showRed->get_active(), showGreen->get_active(), showBlue->get_active(), showValue->get_active(), showChro->get_active(), showRAW->get_active(), showBAR->get_active());
histogramRGBArea->updateBackBuffer (0, 0, 0);
- histogramArea->queue_draw ();
+ histogramRGBArea->queue_draw ();
}
void HistogramPanel::setHistRGBInvalid ()
@@ -341,30 +312,17 @@ void HistogramPanel::setHistRGBInvalid ()
histogramRGBArea->queue_draw ();
}
-// "Freeze" is not a button, but a RMB-click, so this is not in the RGBV-Toggle method
-void HistogramPanel::toggleFreeze ()
-{
- if (histogramRGBArea->getFreeze()) {
- histogramRGBArea->updateFreeze(false);
- } else if (histogramRGBArea->getShow()) {
- histogramRGBArea->updateFreeze(true);
- }
-
- return;
-}
-
-void HistogramPanel::pointerMoved (bool validPos, Glib::ustring profile, Glib::ustring profileW, int x, int y, int r, int g, int b)
+void HistogramPanel::pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool isRaw)
{
if (!validPos) {
// do something to un-show vertical bars
histogramRGBArea->updateBackBuffer(-1, -1, -1);
- histogramRGBArea->queue_draw ();
} else {
// do something to show vertical bars
histogramRGBArea->updateBackBuffer(r, g, b, profile, profileW);
- histogramRGBArea->queue_draw ();
}
+ histogramRGBArea->queue_draw ();
}
/*
@@ -386,19 +344,36 @@ void HistogramPanel::reorder (Gtk::PositionType align)
}
}
-// FullModeListener interface:
-void HistogramPanel::toggle_button_full ()
+// DrawModeListener interface:
+void HistogramPanel::toggle_button_mode ()
+{
+ if (options.histogramDrawMode == 0)
+ showMode->set_image(*mode0Image);
+ else if (options.histogramDrawMode == 1)
+ showMode->set_image(*mode1Image);
+ else
+ showMode->set_image(*mode2Image);
+}
+
+//
+//
+//
+// HistogramScaling
+double HistogramScaling::log(double vsize, double val)
{
- showFull->set_active (!showFull->get_active ());
- showFull->set_image(showFull->get_active() ? *fullImage : *fullImage_g);
+ //double factor = 10.0; // can be tuned if necessary - higher is flatter curve
+ return vsize * std::log(factor / (factor + val)) / std::log(factor / (factor + vsize));
}
//
//
//
// HistogramRGBArea
-HistogramRGBArea::HistogramRGBArea () ://needChroma unactive by default
- val(0), r(0), g(0), b(0), frozen(false), valid(false), needRed(true), needGreen(true), needBlue(true), needLuma(true), rawMode(false), showMode(options.histogramBar), barDisplayed(options.histogramBar), needChroma(false), parent(nullptr)
+HistogramRGBArea::HistogramRGBArea () :
+ val(0), r(0), g(0), b(0), valid(false),
+ needRed(options.histogramRed), needGreen(options.histogramGreen), needBlue(options.histogramBlue),
+ needLuma(options.histogramLuma), needChroma(options.histogramChroma), rawMode(options.histogramRAW),
+ showMode(options.histogramBar), barDisplayed(options.histogramBar), parent(nullptr)
{
get_style_context()->add_class("drawingarea");
@@ -445,9 +420,9 @@ void HistogramRGBArea::get_preferred_height_for_width_vfunc (int width, int &min
{
int bHeight = width / 30;
- if (bHeight > 10) {
- bHeight = 10;
- } else if (bHeight < 5 ) {
+ if (bHeight > 10) {
+ bHeight = 10;
+ } else if (bHeight < 5) {
bHeight = 5;
}
@@ -455,30 +430,20 @@ void HistogramRGBArea::get_preferred_height_for_width_vfunc (int width, int &min
natural_height = bHeight;
}
+// unused?
void HistogramRGBArea::get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const
{
get_preferred_width_vfunc (minimum_width, natural_width);
}
-bool HistogramRGBArea::getFreeze()
-{
- return(frozen);
-}
-
bool HistogramRGBArea::getShow()
{
return(showMode);
}
-void HistogramRGBArea::updateFreeze (bool f)
-{
- frozen = f;
- return;
-}
-
void HistogramRGBArea::updateBackBuffer (int r, int g, int b, const Glib::ustring &profile, const Glib::ustring &profileW)
{
- if (!get_realized () || frozen || !showMode) {
+ if (!get_realized () || !showMode) {
return;
}
@@ -508,24 +473,39 @@ void HistogramRGBArea::updateBackBuffer (int r, int g, int b, const Glib::ustrin
if (needRed) {
// Red
cc->set_source_rgb(1.0, 0.0, 0.0);
- cc->move_to((int)(r * (winw / 256.0)), 0);
- cc->line_to((int)(r * (winw / 256.0)), winh - 0);
+ if (options.histogramDrawMode < 2) {
+ cc->move_to(r * (winw - 3) / 255.0 + 2, 0); // Rescaling seems needed to fit between boundaries of draw area
+ cc->line_to(r * (winw - 3) / 255.0 + 2, winh - 0);
+ } else {
+ cc->move_to(HistogramScaling::log (255, r) * (winw - 3) / 255.0 + 2, 0);
+ cc->line_to(HistogramScaling::log (255, r) * (winw - 3) / 255.0 + 2, winh - 0);
+ }
cc->stroke();
}
if (needGreen) {
// Green
cc->set_source_rgb(0.0, 1.0, 0.0);
- cc->move_to((int)(g * (winw / 256.0)), 0);
- cc->line_to((int)(g * (winw / 256.0)), winh - 0);
+ if (options.histogramDrawMode < 2) {
+ cc->move_to(g * (winw - 3) / 255.0 + 2, 0);
+ cc->line_to(g * (winw - 3) / 255.0 + 2, winh - 0);
+ } else {
+ cc->move_to(HistogramScaling::log (255, g) * (winw - 3) / 255.0 + 2, 0);
+ cc->line_to(HistogramScaling::log (255, g) * (winw - 3) / 255.0 + 2, winh - 0);
+ }
cc->stroke();
}
if (needBlue) {
// Blue
cc->set_source_rgb(0.0, 0.0, 1.0);
- cc->move_to((int)(b * (winw / 256.0)), 0);
- cc->line_to((int)(b * (winw / 256.0)), winh - 0);
+ if (options.histogramDrawMode < 2) {
+ cc->move_to(b * (winw - 3) / 255.0 + 2, 0);
+ cc->line_to(b * (winw - 3) / 255.0 + 2, winh - 0);
+ } else {
+ cc->move_to(HistogramScaling::log (255, b) * (winw - 3) / 255.0 + 2, 0);
+ cc->line_to(HistogramScaling::log (255, b) * (winw - 3) / 255.0 + 2, winh - 0);
+ }
cc->stroke();
}
@@ -536,8 +516,13 @@ void HistogramRGBArea::updateBackBuffer (int r, int g, int b, const Glib::ustrin
if (needLuma) {
// Luma
cc->set_source_rgb(1.0, 1.0, 1.0);
- cc->move_to((int)((Lab_L) * (winw / 100.0)), 0);
- cc->line_to((int)((Lab_L) * (winw / 100.0)), winh - 0);
+ if (options.histogramDrawMode < 2) {
+ cc->move_to(Lab_L * (winw - 3) / 100.0 + 2, 0);
+ cc->line_to(Lab_L * (winw - 3) / 100.0 + 2, winh - 0);
+ } else {
+ cc->move_to(HistogramScaling::log (100, Lab_L) * (winw - 3) / 100.0 + 2, 0);
+ cc->line_to(HistogramScaling::log (100, Lab_L) * (winw - 3) / 100.0 + 2, winh - 0);
+ }
cc->stroke();
}
@@ -545,9 +530,14 @@ void HistogramRGBArea::updateBackBuffer (int r, int g, int b, const Glib::ustrin
// Chroma
float chromaval = sqrt(Lab_a * Lab_a + Lab_b * Lab_b) / 1.8;
// float chromaval = sqrt(Lab_a*Lab_a + Lab_b*Lab_b);
- cc->set_source_rgb(0.0, 0.0, 0.0);
- cc->move_to((int)(chromaval * (winw / 100.0)), 0);
- cc->line_to((int)(chromaval * (winw / 100.0)), winh - 0);
+ cc->set_source_rgb(0.9, 0.9, 0.0);
+ if (options.histogramDrawMode < 2) {
+ cc->move_to(chromaval * (winw - 3) / 100.0 + 2, 0);
+ cc->line_to(chromaval * (winw - 3) / 100.0 + 2, winh - 0);
+ } else {
+ cc->move_to(HistogramScaling::log (100, chromaval) * (winw - 3) / 100.0 + 2, 0);
+ cc->line_to(HistogramScaling::log (100, chromaval) * (winw - 3) / 100.0 + 2, winh - 0);
+ }
cc->stroke();
}
}
@@ -596,31 +586,24 @@ void HistogramRGBArea::update (int valh, int rh, int gh, int bh)
idle_register.add(func, harih);
}
-void HistogramRGBArea::updateOptions (bool r, bool g, bool b, bool l, bool raw, bool bar, bool c)
+void HistogramRGBArea::updateOptions (bool r, bool g, bool b, bool l, bool c, bool raw, bool bar)
{
- needRed = r;
- needGreen = g;
- needBlue = b;
- needLuma = l;
- rawMode = raw;
- showMode = bar;
- needChroma = c;
-
- // Histogram RGB BAR button logic goes here
+ options.histogramRed = needRed = r;
+ options.histogramGreen = needGreen = g;
+ options.histogramBlue = needBlue = b;
+ options.histogramLuma = needLuma = l;
+ options.histogramChroma = needChroma = c;
+ options.histogramRAW = rawMode = raw;
+ options.histogramBar = showMode = bar;
+ // Show/hide the RGB bar widget
if (bar && !barDisplayed) {
- // Toggled on, add (show) the widget
parent->add(*this);
- options.histogramBar = true;
barDisplayed = true;
} else if (!bar && barDisplayed) {
- // Toggled off, remove (hide) the widget
removeIfThere(parent, this, false);
- options.histogramBar = false;
barDisplayed = false;
- // unfreeze
- updateFreeze(false);
}
// Disable (but don't hide it) the bar button when RAW histogram is displayed
@@ -661,24 +644,33 @@ bool HistogramRGBArea::on_button_press_event (GdkEventButton* event)
{
if (event->type == GDK_2BUTTON_PRESS && event->button == 1) {
- // do something. Maybe un-freeze ?
+ // do something?
}
return true;
}
+void HistogramRGBArea::factorChanged (double newFactor)
+{
+ factor = newFactor;
+}
+
//
//
//
// HistogramArea
-HistogramArea::HistogramArea (FullModeListener *fml) : //needChroma unactive by default
- valid(false), fullMode(options.histogramFullMode), myFullModeListener(fml), oldwidth(-1), oldheight(-1), needLuma(true), needRed(true), needGreen(true), needBlue(true), rawMode(false), needChroma(false)
+HistogramArea::HistogramArea (DrawModeListener *fml) :
+ valid(false), drawMode(options.histogramDrawMode), myDrawModeListener(fml),
+ oldwidth(-1), oldheight(-1),
+ needRed(options.histogramRed), needGreen(options.histogramGreen), needBlue(options.histogramBlue),
+ needLuma(options.histogramLuma), needChroma(options.histogramChroma), rawMode(options.histogramRAW),
+ isPressed(false), movingPosition(0.0)
{
- lhist(256);
rhist(256);
ghist(256);
bhist(256);
+ lhist(256);
chist(256);
get_style_context()->add_class("drawingarea");
@@ -703,35 +695,28 @@ HistogramArea::~HistogramArea ()
Gtk::SizeRequestMode HistogramArea::get_request_mode_vfunc () const
{
- return Gtk::SIZE_REQUEST_HEIGHT_FOR_WIDTH;
+ return Gtk::SIZE_REQUEST_CONSTANT_SIZE;
}
void HistogramArea::get_preferred_height_vfunc (int &minimum_height, int &natural_height) const
{
- int minimumWidth = 0;
- int naturalWidth = 0;
- get_preferred_width_vfunc (minimumWidth, naturalWidth);
- get_preferred_height_for_width_vfunc (minimumWidth, minimum_height, natural_height);
+
+ minimum_height = 100;
+ natural_height = 200;
}
void HistogramArea::get_preferred_width_vfunc (int &minimum_width, int &natural_width) const
{
- minimum_width = 60;
- natural_width = 200;
+
+ minimum_width = 200;
+ natural_width = 400;
}
void HistogramArea::get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const
{
- int gHeight = width / 2;
-
- if (gHeight > 150) {
- gHeight = 150;
- } else if (gHeight < 100) {
- gHeight = 100;
- }
-
- minimum_height = gHeight * 0.7;
- natural_height = gHeight;
+
+ minimum_height = 0;
+ natural_height = 0;
}
void HistogramArea::get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const
@@ -739,32 +724,31 @@ void HistogramArea::get_preferred_width_for_height_vfunc (int height, int &minim
get_preferred_width_vfunc (minimum_width, natural_width);
}
-void HistogramArea::updateOptions (bool r, bool g, bool b, bool l, bool raw, bool full, bool c)
+void HistogramArea::updateOptions (bool r, bool g, bool b, bool l, bool c, bool raw, int mode)
{
-
- needRed = r;
- needGreen = g;
- needBlue = b;
- needLuma = l;
- rawMode = raw;
- fullMode = !full;
- needChroma = c;
+
+ options.histogramRed = needRed = r;
+ options.histogramGreen = needGreen = g;
+ options.histogramBlue = needBlue = b;
+ options.histogramLuma = needLuma = l;
+ options.histogramChroma = needChroma = c;
+ options.histogramRAW = rawMode = raw;
+ options.histogramDrawMode = drawMode = mode;
updateBackBuffer ();
}
-void HistogramArea::update (LUTu &histRed, LUTu &histGreen, LUTu &histBlue, LUTu &histLuma, LUTu &histRedRaw, LUTu &histGreenRaw, LUTu &histBlueRaw, LUTu &histChroma)
+void HistogramArea::update (LUTu &histRed, LUTu &histGreen, LUTu &histBlue, LUTu &histLuma, LUTu &histChroma, LUTu &histRedRaw, LUTu &histGreenRaw, LUTu &histBlueRaw)
{
if (histRed) {
- lhist = histLuma;
- chist = histChroma;
rhist = histRed;
ghist = histGreen;
bhist = histBlue;
+ lhist = histLuma;
+ chist = histChroma;
rhistRaw = histRedRaw;
ghistRaw = histGreenRaw;
bhistRaw = histBlueRaw;
-
valid = true;
} else {
valid = false;
@@ -814,10 +798,56 @@ void HistogramArea::updateBackBuffer ()
Cairo::RefPtr cr = Cairo::Context::create(surface);
const Glib::RefPtr style = get_style_context();
+ // Setup drawing
cr->set_source_rgba (0., 0., 0., 0.);
cr->set_operator (Cairo::OPERATOR_CLEAR);
cr->paint ();
- cr->set_operator (Cairo::OPERATOR_OVER);
+ cr->set_operator (Cairo::OPERATOR_SOURCE);
+
+ // Prepare drawing gridlines first
+ cr->set_source_rgba (1., 1., 1., 0.25);
+ cr->set_line_width (1.0);
+ cr->set_antialias(Cairo::ANTIALIAS_NONE);
+ cr->set_line_join(Cairo::LINE_JOIN_MITER);
+ std::valarray ch_ds (1);
+ ch_ds[0] = 4;
+ cr->set_dash (ch_ds, 0);
+
+ // determine the number of h-gridlines based on current h
+ int nrOfHGridPartitions = (int)rtengine::min (16.0, pow (2.0, floor ((h - 100) / 250) + 2));
+ int nrOfVGridPartitions = 8; // always show 8 stops (lines at 1,3,7,15,31,63,127)
+
+ // draw vertical gridlines
+ if (options.histogramDrawMode < 2) {
+ for (int i = 1; i < nrOfVGridPartitions; i++) {
+ cr->move_to ((pow(2.0,i) - 1) / 255 * w + 0.5, 1.5);
+ cr->line_to ((pow(2.0,i) - 1) / 255 * w + 0.5, h - 2);
+ cr->stroke ();
+ }
+ } else {
+ for (int i = 1; i < nrOfVGridPartitions; i++) {
+ cr->move_to (HistogramScaling::log (255, pow(2.0,i) - 1) / 255 * w + 0.5, 1.5);
+ cr->line_to (HistogramScaling::log (255, pow(2.0,i) - 1) / 255 * w + 0.5, h - 2);
+ cr->stroke ();
+ }
+ }
+
+ // draw horizontal gridlines
+ if (options.histogramDrawMode == 0) {
+ for (int i = 1; i < nrOfHGridPartitions; i++) {
+ cr->move_to (1.5, i * h / nrOfHGridPartitions + 0.5);
+ cr->line_to (w - 2, i * h / nrOfHGridPartitions + 0.5);
+ cr->stroke ();
+ }
+ } else {
+ for (int i = 1; i < nrOfHGridPartitions; i++) {
+ cr->move_to (1.5, h - HistogramScaling::log (h, i * h / nrOfHGridPartitions) + 0.5);
+ cr->line_to (w - 2, h - HistogramScaling::log (h, i * h / nrOfHGridPartitions) + 0.5);
+ cr->stroke ();
+ }
+ }
+
+ cr->unset_dash();
if (valid) {
// For RAW mode use the other hists
@@ -852,106 +882,56 @@ void HistogramArea::updateBackBuffer ()
}
}
- // compute height of the full histogram (realheight) and
- // does not take into account 0 and 255 values
- // them are handled separately
-
- unsigned int fullhistheight = 0;
+ // Compute the highest point of the histogram for scaling
+ // Values at far left and right end (0 and 255) are handled differently
+
+ unsigned int histheight = 0;
for (int i = 1; i < 255; i++) {
- if (needLuma && lhisttemp[i] > fullhistheight) {
- fullhistheight = lhisttemp[i];
+ if (needLuma && lhisttemp[i] > histheight) {
+ histheight = lhisttemp[i];
}
- if (needChroma && chisttemp[i] > fullhistheight) {
- fullhistheight = chisttemp[i];
+ if (needChroma && chisttemp[i] > histheight) {
+ histheight = chisttemp[i];
}
- if (needRed && rhtemp[i] > fullhistheight) {
- fullhistheight = rhtemp[i];
+ if (needRed && rhtemp[i] > histheight) {
+ histheight = rhtemp[i];
}
- if (needGreen && ghtemp[i] > fullhistheight) {
- fullhistheight = ghtemp[i];
+ if (needGreen && ghtemp[i] > histheight) {
+ histheight = ghtemp[i];
}
- if (needBlue && bhtemp[i] > fullhistheight) {
- fullhistheight = bhtemp[i];
- }
- }
-
- int realhistheight = fullhistheight;
-
- // though much faster than before, this still takes a lot of time especially for big files if rawMode is true
- if (!fullMode) {
- int area = 0;
-
-#ifdef __SSE2__
- vint onev = _mm_set1_epi32(1);
- vint iv = (vint)ZEROV;
-#endif
-
- for (unsigned i = 0; i < fullhistheight; i++) {
-#ifdef __SSE2__
- vint areatempv = (vint)ZEROV;
-
- for (int j = 0; j < 256; j += 4) {
- vmask mask1v = _mm_cmpgt_epi32(LVI(lhisttemp[j]), iv);
- vmask mask2v = _mm_cmpgt_epi32(LVI(rhtemp[j]), iv);
- vmask mask3v = _mm_cmpgt_epi32(LVI(ghtemp[j]), iv);
- vmask mask4v = _mm_cmpgt_epi32(LVI(bhtemp[j]), iv);
- mask1v = _mm_or_si128(mask1v, mask2v);
- mask3v = _mm_or_si128(mask3v, mask4v);
- mask2v = _mm_cmpgt_epi32(LVI(chisttemp[j]), iv);
- mask1v = _mm_or_si128(mask1v, mask3v);
- mask1v = _mm_or_si128(mask1v, mask2v);
- areatempv = _mm_add_epi32(areatempv, _mm_and_si128(mask1v, onev));
-
- }
-
- areatempv = _mm_add_epi32(areatempv, (vint)_mm_movehl_ps((vfloat)areatempv, (vfloat)areatempv));
- areatempv = _mm_add_epi32(areatempv, _mm_shuffle_epi32(areatempv, 1));
- area += _mm_cvtsi128_si32(areatempv);
- iv = _mm_add_epi32(iv, onev);
-
-#else
-
- for (int j = 0; j < 256; j++)
- if (lhisttemp[j] > i || rhtemp[j] > i || ghtemp[j] > i || bhtemp[j] > i || chisttemp[j] > i) {
- area++;
- }
-
-#endif
-
- if ((double)area / (256 * (i + 1)) < 0.3) {
- realhistheight = i;
- break;
- }
+ if (needBlue && bhtemp[i] > histheight) {
+ histheight = bhtemp[i];
}
}
+ int realhistheight = histheight;
+
if (realhistheight < winh - 2) {
realhistheight = winh - 2;
}
cr->set_antialias (Cairo::ANTIALIAS_SUBPIXEL);
cr->set_line_width (1.0);
+ cr->set_operator (Cairo::OPERATOR_OVER);
int ui = 0, oi = 0;
if (needLuma && !rawMode) {
drawCurve(cr, lhist, realhistheight, w, h);
- cr->set_source_rgb (0.65, 0.65, 0.65);
+ cr->set_source_rgba (0.65, 0.65, 0.65, 0.65);
cr->fill ();
-
drawMarks(cr, lhist, realhistheight, w, ui, oi);
}
if (needChroma && !rawMode) {
drawCurve(cr, chist, realhistheight, w, h);
- cr->set_source_rgb (0., 0., 0.);
+ cr->set_source_rgb (0.9, 0.9, 0.);
cr->stroke ();
-
drawMarks(cr, chist, realhistheight, w, ui, oi);
}
@@ -959,7 +939,6 @@ void HistogramArea::updateBackBuffer ()
drawCurve(cr, rhchanged, realhistheight, w, h);
cr->set_source_rgb (1.0, 0.0, 0.0);
cr->stroke ();
-
drawMarks(cr, rhchanged, realhistheight, w, ui, oi);
}
@@ -967,7 +946,6 @@ void HistogramArea::updateBackBuffer ()
drawCurve(cr, ghchanged, realhistheight, w, h);
cr->set_source_rgb (0.0, 1.0, 0.0);
cr->stroke ();
-
drawMarks(cr, ghchanged, realhistheight, w, ui, oi);
}
@@ -975,42 +953,11 @@ void HistogramArea::updateBackBuffer ()
drawCurve(cr, bhchanged, realhistheight, w, h);
cr->set_source_rgb (0.0, 0.0, 1.0);
cr->stroke ();
-
drawMarks(cr, bhchanged, realhistheight, w, ui, oi);
}
+
}
- cr->set_source_rgba (1., 1., 1., 0.35);
- cr->set_line_width (1.0);
- cr->set_antialias(Cairo::ANTIALIAS_NONE);
-
- // Draw the content
- cr->set_line_join(Cairo::LINE_JOIN_MITER);
- std::valarray ch_ds (1);
- ch_ds[0] = 4;
- cr->set_dash (ch_ds, 0);
-
- cr->move_to(w / 4 + 0.5, 1.5);
- cr->line_to(w / 4 + 0.5, h - 2);
- cr->stroke();
- cr->move_to(2 * w / 4 + 0.5, 1.5);
- cr->line_to(2 * w / 4 + 0.5, h - 2);
- cr->stroke();
- cr->move_to(3 * w / 4 + 0.5, 1.5);
- cr->line_to(3 * w / 4 + 0.5, h - 2);
- cr->stroke();
- cr->move_to(1.5, h / 4 + 0.5);
- cr->line_to(w - 2, h / 4 + 0.5);
- cr->stroke();
- cr->move_to(1.5, 2 * h / 4 + 0.5);
- cr->line_to(w - 2, 2 * h / 4 + 0.5);
- cr->stroke();
- cr->move_to(1.5, 3 * h / 4 + 0.5);
- cr->line_to(w - 2, 3 * h / 4 + 0.5);
- cr->stroke();
-
- cr->unset_dash();
-
// Draw the frame's border
style->render_frame(cr, 0, 0, surface->get_width(), surface->get_height());
@@ -1025,7 +972,7 @@ void HistogramArea::on_realize ()
Gtk::DrawingArea::on_realize();
Glib::RefPtr window = get_window();
- add_events(Gdk::BUTTON_PRESS_MASK);
+ add_events(Gdk::POINTER_MOTION_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK);
}
void HistogramArea::drawCurve(Cairo::RefPtr &cr,
@@ -1035,14 +982,20 @@ void HistogramArea::drawCurve(Cairo::RefPtr &cr,
scale = scale <= 0.f ? 0.001f : scale; // avoid division by zero and negative values
for (int i = 0; i < 256; i++) {
- double val = data[i] * (double)(vsize - 2) / scale;
+ double val = data[i] * (double)vsize / scale;
- if (val > vsize - 1) {
- val = vsize - 1;
+ if (drawMode > 0) { // scale y for single and double log-scale
+ val = HistogramScaling::log ((double)vsize, val);
}
- double posX = (i / 255.0) * (hsize - 1);
- double posY = vsize - 1 - val;
+ double iscaled = i;
+ if (drawMode == 2) { // scale x for double log-scale
+ iscaled = HistogramScaling::log (255.0, (double)i);
+ }
+
+ double posX = (iscaled / 255.0) * (hsize - 1);
+ double posY = vsize - 2 + val * (4 - vsize) / vsize;
+
cr->line_to (posX, posY);
}
@@ -1084,15 +1037,18 @@ bool HistogramArea::on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr)
bool HistogramArea::on_button_press_event (GdkEventButton* event)
{
-
+ isPressed = true;
+ movingPosition = event->x;
+
if (event->type == GDK_2BUTTON_PRESS && event->button == 1) {
- fullMode = !fullMode;
- options.histogramFullMode = fullMode;
-
- if (myFullModeListener) {
- myFullModeListener->toggle_button_full ();
+
+ drawMode = (drawMode + 1) % 3;
+ options.histogramDrawMode = (options.histogramDrawMode + 1) % 3;
+
+ if (myDrawModeListener) {
+ myDrawModeListener->toggle_button_mode ();
}
-
+
updateBackBuffer ();
queue_draw ();
}
@@ -1100,3 +1056,34 @@ bool HistogramArea::on_button_press_event (GdkEventButton* event)
return true;
}
+bool HistogramArea::on_button_release_event (GdkEventButton* event)
+{
+ isPressed = false;
+ return true;
+}
+
+bool HistogramArea::on_motion_notify_event (GdkEventMotion* event)
+{
+ if (isPressed)
+ {
+ double mod = 1 + (event->x - movingPosition) / get_width();
+
+ factor /= mod;
+ if (factor < 1.0)
+ factor = 1.0;
+ if (factor > 100.0)
+ factor = 100.0;
+
+ sigFactorChanged.emit(factor);
+
+ setDirty(true);
+ queue_draw ();
+ }
+
+ return true;
+}
+
+HistogramArea::type_signal_factor_changed HistogramArea::signal_factor_changed()
+{
+ return sigFactorChanged;
+}
\ No newline at end of file
diff --git a/rtgui/histogrampanel.h b/rtgui/histogrampanel.h
index 0ce62956c..7c2e11162 100644
--- a/rtgui/histogrampanel.h
+++ b/rtgui/histogrampanel.h
@@ -43,7 +43,15 @@ struct HistogramRGBAreaIdleHelper {
int pending;
};
-class HistogramRGBArea : public Gtk::DrawingArea, public BackBuffer
+class HistogramScaling
+{
+public:
+ double factor;
+ HistogramScaling() : factor(10.0) {}
+ double log (double vsize, double val);
+};
+
+class HistogramRGBArea : public Gtk::DrawingArea, public BackBuffer, private HistogramScaling
{
private:
typedef const double (*TMatrix)[3];
@@ -56,17 +64,16 @@ protected:
int g;
int b;
- bool frozen;
bool valid;
bool needRed;
bool needGreen;
bool needBlue;
bool needLuma;
+ bool needChroma;
bool rawMode;
bool showMode;
bool barDisplayed;
- bool needChroma;
Gtk::Grid* parent;
@@ -77,8 +84,6 @@ public:
~HistogramRGBArea();
void updateBackBuffer (int r, int g, int b, const Glib::ustring &profile = "", const Glib::ustring &profileW = "");
- void updateFreeze (bool f);
- bool getFreeze ();
bool getShow ();
void setParent (Gtk::Grid* p)
{
@@ -86,56 +91,67 @@ public:
};
void update (int val, int rh, int gh, int bh);
- void updateOptions (bool r, bool g, bool b, bool l, bool raw, bool show, bool c);
+ void updateOptions (bool r, bool g, bool b, bool l, bool c, bool raw, bool show);
void on_realize();
bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
bool on_button_press_event (GdkEventButton* event);
+ void factorChanged (double newFactor);
+
private:
Gtk::SizeRequestMode get_request_mode_vfunc () const;
void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const;
void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const;
void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const;
void get_preferred_width_for_height_vfunc (int h, int &minimum_width, int &natural_width) const;
- // Some ...
+
};
-
-class FullModeListener
+class DrawModeListener
{
public:
- virtual ~FullModeListener() {}
- virtual void toggle_button_full () {}
+ virtual ~DrawModeListener() {}
+ virtual void toggle_button_mode () {}
};
-class HistogramArea : public Gtk::DrawingArea, public BackBuffer
+class HistogramArea : public Gtk::DrawingArea, public BackBuffer, private HistogramScaling
{
+public:
+ typedef sigc::signal type_signal_factor_changed;
+
private:
IdleRegister idle_register;
+ type_signal_factor_changed sigFactorChanged;
protected:
- LUTu lhist, rhist, ghist, bhist, chist;
- LUTu lhistRaw, rhistRaw, ghistRaw, bhistRaw;
+ LUTu rhist, ghist, bhist, lhist, chist;
+ LUTu rhistRaw, ghistRaw, bhistRaw, lhistRaw; //lhistRaw is unused?
bool valid;
- bool fullMode;
- FullModeListener *myFullModeListener;
+ int drawMode;
+ DrawModeListener *myDrawModeListener;
int oldwidth, oldheight;
- bool needLuma, needRed, needGreen, needBlue, rawMode, needChroma;
+ bool needRed, needGreen, needBlue, needLuma, needChroma;
+ bool rawMode;
+ bool isPressed;
+ double movingPosition;
HistogramAreaIdleHelper* haih;
public:
- explicit HistogramArea(FullModeListener *fml = nullptr);
+ explicit HistogramArea(DrawModeListener *fml = nullptr);
~HistogramArea();
void updateBackBuffer ();
- void update (LUTu &histRed, LUTu &histGreen, LUTu &histBlue, LUTu &histLuma, LUTu &histRedRaw, LUTu &histGreenRaw, LUTu &histBlueRaw, LUTu &histChroma);
- void updateOptions (bool r, bool g, bool b, bool l, bool raw, bool full , bool c);
+ void update (LUTu &histRed, LUTu &histGreen, LUTu &histBlue, LUTu &histLuma, LUTu &histChroma, LUTu &histRedRaw, LUTu &histGreenRaw, LUTu &histBlueRaw);
+ void updateOptions (bool r, bool g, bool b, bool l, bool c, bool raw, int mode);
void on_realize();
bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr);
bool on_button_press_event (GdkEventButton* event);
+ bool on_button_release_event (GdkEventButton* event);
+ bool on_motion_notify_event (GdkEventMotion* event);
+ type_signal_factor_changed signal_factor_changed();
private:
void drawCurve(Cairo::RefPtr &cr, LUTu & data, double scale, int hsize, int vsize);
@@ -147,7 +163,7 @@ private:
void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const;
};
-class HistogramPanel : public Gtk::Grid, public PointerMotionListener, public FullModeListener
+class HistogramPanel : public Gtk::Grid, public PointerMotionListener, public DrawModeListener
{
protected:
@@ -161,16 +177,15 @@ protected:
Gtk::ToggleButton* showBlue;
Gtk::ToggleButton* showValue;
Gtk::ToggleButton* showRAW;
- Gtk::ToggleButton* showFull;
Gtk::ToggleButton* showBAR;
Gtk::ToggleButton* showChro;
+ Gtk::Button* showMode;
Gtk::Image *redImage;
Gtk::Image *greenImage;
Gtk::Image *blueImage;
Gtk::Image *valueImage;
Gtk::Image *rawImage;
- Gtk::Image *fullImage;
Gtk::Image *barImage;
Gtk::Image *chroImage;
@@ -179,10 +194,12 @@ protected:
Gtk::Image *blueImage_g;
Gtk::Image *valueImage_g;
Gtk::Image *rawImage_g;
- Gtk::Image *fullImage_g;
Gtk::Image *barImage_g;
Gtk::Image *chroImage_g;
+ Gtk::Image *mode0Image;
+ Gtk::Image *mode1Image;
+ Gtk::Image *mode2Image;
sigc::connection rconn;
void setHistInvalid ();
@@ -192,14 +209,13 @@ public:
HistogramPanel ();
~HistogramPanel ();
- void histogramChanged (LUTu &histRed, LUTu &histGreen, LUTu &histBlue, LUTu &histLuma, LUTu &histRedRaw, LUTu &histGreenRaw, LUTu &histBlueRaw, LUTu &histChroma)
+ void histogramChanged (LUTu &histRed, LUTu &histGreen, LUTu &histBlue, LUTu &histLuma, LUTu &histChroma, LUTu &histRedRaw, LUTu &histGreenRaw, LUTu &histBlueRaw)
{
- histogramArea->update (histRed, histGreen, histBlue, histLuma, histRedRaw, histGreenRaw, histBlueRaw, histChroma);
+ histogramArea->update (histRed, histGreen, histBlue, histLuma, histChroma, histRedRaw, histGreenRaw, histBlueRaw);
}
// pointermotionlistener interface
- void pointerMoved (bool validPos, Glib::ustring profile, Glib::ustring profileW, int x, int y, int r, int g, int b);
- // added pointermotionlistener interface
- void toggleFreeze();
+ void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool isRaw = false);
+
// TODO should be protected
void setHistRGBInvalid ();
@@ -209,14 +225,14 @@ public:
void blue_toggled ();
void value_toggled ();
void raw_toggled ();
- void full_toggled ();
void chro_toggled ();
void bar_toggled ();
+ void mode_released ();
void rgbv_toggled ();
void resized (Gtk::Allocation& req);
- // fullModeListener interface
- void toggle_button_full ();
+ // drawModeListener interface
+ void toggle_button_mode ();
};
#endif
diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc
index a61f0e80d..8ae8d4ab9 100644
--- a/rtgui/iccprofilecreator.cc
+++ b/rtgui/iccprofilecreator.cc
@@ -117,7 +117,7 @@ ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow)
setExpandAlignProperties(aPrimariesGreenY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
aPrimariesBlueX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUX"), 0.0001, 0.1600, 0.0001, 0.1500/*, gamutl4, gamuts4*/));
setExpandAlignProperties(aPrimariesBlueX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
- aPrimariesBlueY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUY"), -0.0700, 0.0700, 0.0001, 0.060/*, gamutl5, gamuts5*/));
+ aPrimariesBlueY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_BLUY"), -0.0800, 0.0700, 0.0001, 0.060/*, gamutl5, gamuts5*/));
setExpandAlignProperties(aPrimariesBlueY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
primariesGrid->attach(*aPrimariesRedX, 0, 0, 1, 1);
diff --git a/rtgui/locallab.cc b/rtgui/locallab.cc
index b51f0a327..8d9e87b57 100644
--- a/rtgui/locallab.cc
+++ b/rtgui/locallab.cc
@@ -4982,7 +4982,7 @@ CursorShape Locallab::getCursor(int objectID)
return CSMove2D;
default:
- return CSOpenHand;
+ return CSHandOpen;
}
}
diff --git a/rtgui/main-cli.cc b/rtgui/main-cli.cc
index 6643b0913..347161cd5 100644
--- a/rtgui/main-cli.cc
+++ b/rtgui/main-cli.cc
@@ -211,7 +211,7 @@ int main (int argc, char **argv)
int ret = 0;
// printing RT's version in all case, particularly useful for the 'verbose' mode, but also for the batch processing
- std::cout << "RawTherapee, version " << RTVERSION << ", command line" << std::endl;
+ std::cout << "RawTherapee, version " << RTVERSION << ", command line." << std::endl;
if (argc > 1) {
ret = processLineParams (argc, argv);
@@ -267,6 +267,7 @@ int processLineParams ( int argc, char **argv )
int compression = 92;
int subsampling = 3;
int bits = -1;
+ bool isFloat = false;
std::string outputType = "";
unsigned errors = 0;
@@ -314,7 +315,7 @@ int processLineParams ( int argc, char **argv )
#endif
if (fname.at (0) == '-') {
- std::cerr << "Error: filename missing next to the -p switch" << std::endl;
+ std::cerr << "Error: filename missing next to the -p switch." << std::endl;
deleteProcParams (processingParams);
return -3;
}
@@ -324,7 +325,7 @@ int processLineParams ( int argc, char **argv )
if (! (currentParams->load ( fname ))) {
processingParams.push_back (currentParams);
} else {
- std::cerr << "Error: \"" << fname << "\" not found" << std::endl;
+ std::cerr << "Error: \"" << fname << "\" not found." << std::endl;
deleteProcParams (processingParams);
return -3;
}
@@ -391,12 +392,26 @@ int processLineParams ( int argc, char **argv )
case 'b':
bits = atoi (currParam.substr (2).c_str());
- if (bits != 8 && bits != 16) {
- std::cerr << "Error: specify -b8 for 8-bit or -b16 for 16-bit output." << std::endl;
+ if (currParam.length() >= 3 && currParam.at(2) == '8') { // -b8
+ bits = 8;
+ } else if (currParam.length() >= 4 && currParam.length() <= 5 && currParam.at(2) == '1' && currParam.at(3) == '6') { // -b16, -b16f
+ bits = 16;
+ if (currParam.length() == 5 && currParam.at(4) == 'f') {
+ isFloat = true;
+ }
+ } else if (currParam.length() >= 4 && currParam.length() <= 5 && currParam.at(2) == '3' && currParam.at(3) == '2') { // -b32 == -b32f
+ bits = 32;
+ isFloat = true;
+ }
+
+ if (bits != 8 && bits != 16 && bits != 32) {
+ std::cerr << "Error: specify output bit depth per channel as -b8 for 8-bit integer, -b16 for 16-bit integer, -b16f for 16-bit float or -b32 for 32-bit float." << std::endl;
deleteProcParams (processingParams);
return -3;
}
+ std::cout << "Output is " << bits << "-bit " << (isFloat ? "floating-point" : "integer") << "." << std::endl;
+
break;
case 't':
@@ -422,7 +437,7 @@ int processLineParams ( int argc, char **argv )
#endif
if (!Glib::file_test (argument, Glib::FILE_TEST_EXISTS)) {
- std::cout << "\"" << argument << "\" doesn't exist !" << std::endl;
+ std::cout << "\"" << argument << "\" doesn't exist!" << std::endl;
continue;
}
@@ -432,9 +447,9 @@ int processLineParams ( int argc, char **argv )
if (notAll || notRetained) {
if (notAll) {
- std::cout << "\"" << argument << "\" is not one of the file format to process: skipped" << std::endl;
+ std::cout << "\"" << argument << "\" is not one of the parsed extensions. Image skipped." << std::endl;
} else if (notRetained) {
- std::cout << "\"" << argument << "\" is not one of the retained file format to process: skipped" << std::endl;
+ std::cout << "\"" << argument << "\" is not one of the selected parsed extensions. Image skipped." << std::endl;
}
} else {
inputFiles.emplace_back (argument);
@@ -465,11 +480,11 @@ int processLineParams ( int argc, char **argv )
if (isDir || notAll || notRetained) {
if (isDir) {
- std::cout << "\"" << fileName << "\" is a directory: skipped" << std::endl;
+ std::cout << "\"" << fileName << "\" is a folder. Folder skipped" << std::endl;
} else if (notAll) {
- std::cout << "\"" << fileName << "\" is not one of the file format to process: skipped" << std::endl;
+ std::cout << "\"" << fileName << "\" is not one of the parsed extensions. Image skipped." << std::endl;
} else if (notRetained) {
- std::cout << "\"" << fileName << "\" is not one of the retained file format to process: skipped" << std::endl;
+ std::cout << "\"" << fileName << "\" is not one of the selected parsed extensions. Image skipped." << std::endl;
}
continue;
@@ -479,7 +494,7 @@ int processLineParams ( int argc, char **argv )
if (sideProcParams && skipIfNoSidecar) {
// look for the sidecar proc params
if (!Glib::file_test (fileName + paramFileExtension, Glib::FILE_TEST_EXISTS)) {
- std::cout << "\"" << fileName << "\" has no side-car file: image skipped" << std::endl;
+ std::cout << "\"" << fileName << "\" has no side-car file. Image skipped." << std::endl;
continue;
}
}
@@ -519,11 +534,11 @@ int processLineParams ( int argc, char **argv )
std::cout << " " << Glib::path_get_basename (argv[0]) << " -c | Convert files in batch with your own settings." << std::endl;
std::cout << std::endl;
std::cout << "Options:" << std::endl;
- std::cout << " " << Glib::path_get_basename (argv[0]) << "[-o