diff --git a/rtdata/images/non-themed/png/empty.png b/rtdata/images/non-themed/png/empty.png
new file mode 100644
index 000000000..534ddcb72
Binary files /dev/null and b/rtdata/images/non-themed/png/empty.png 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
new file mode 100644
index 000000000..53eaabf60
Binary files /dev/null and b/rtdata/images/themed/png/dark/color-picker-add-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/color-picker-hicontrast.png b/rtdata/images/themed/png/dark/color-picker-hicontrast.png
new file mode 100644
index 000000000..c2592a8b7
Binary files /dev/null and b/rtdata/images/themed/png/dark/color-picker-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/crosshair.png b/rtdata/images/themed/png/dark/crosshair-hicontrast.png
similarity index 100%
rename from rtdata/images/themed/png/dark/crosshair.png
rename to rtdata/images/themed/png/dark/crosshair-hicontrast.png
diff --git a/rtdata/images/themed/png/dark/gamut-plus.png b/rtdata/images/themed/png/dark/gamut-plus.png
index 091e38337..a83f5e603 100644
Binary files a/rtdata/images/themed/png/dark/gamut-plus.png and b/rtdata/images/themed/png/dark/gamut-plus.png differ
diff --git a/rtdata/images/themed/png/dark/hand-closed.png b/rtdata/images/themed/png/dark/hand-closed-hicontrast.png
similarity index 100%
rename from rtdata/images/themed/png/dark/hand-closed.png
rename to rtdata/images/themed/png/dark/hand-closed-hicontrast.png
diff --git a/rtdata/images/themed/png/dark/node-move-x-hicontrast.png b/rtdata/images/themed/png/dark/node-move-x-hicontrast.png
new file mode 100644
index 000000000..92a1c49e2
Binary files /dev/null and b/rtdata/images/themed/png/dark/node-move-x-hicontrast.png 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
new file mode 100644
index 000000000..3984385af
Binary files /dev/null and b/rtdata/images/themed/png/dark/node-move-xy-hicontrast.png 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
new file mode 100644
index 000000000..e2fc55da8
Binary files /dev/null and b/rtdata/images/themed/png/dark/node-move-y-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/power-off-small.png b/rtdata/images/themed/png/dark/power-off-small.png
index f9ece5472..9b3118c50 100644
Binary files a/rtdata/images/themed/png/dark/power-off-small.png and b/rtdata/images/themed/png/dark/power-off-small.png differ
diff --git a/rtdata/images/themed/png/dark/rotate-aroundnode-hicontrast.png b/rtdata/images/themed/png/dark/rotate-aroundnode-hicontrast.png
new file mode 100644
index 000000000..d8929ac42
Binary files /dev/null and b/rtdata/images/themed/png/dark/rotate-aroundnode-hicontrast.png differ
diff --git a/rtdata/images/themed/png/dark/rotate-aroundnode.png b/rtdata/images/themed/png/dark/rotate-aroundnode.png
new file mode 100644
index 000000000..50db200a6
Binary files /dev/null and b/rtdata/images/themed/png/dark/rotate-aroundnode.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-black-off.png b/rtdata/images/themed/png/dark/square-toggle-black-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-black-off.png
rename to rtdata/images/themed/png/dark/square-toggle-black-off-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-black-on.png b/rtdata/images/themed/png/dark/square-toggle-black-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-black-on.png
rename to rtdata/images/themed/png/dark/square-toggle-black-on-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-blue-off.png b/rtdata/images/themed/png/dark/square-toggle-blue-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-blue-off.png
rename to rtdata/images/themed/png/dark/square-toggle-blue-off-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-blue-on.png b/rtdata/images/themed/png/dark/square-toggle-blue-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-blue-on.png
rename to rtdata/images/themed/png/dark/square-toggle-blue-on-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-gray-off.png b/rtdata/images/themed/png/dark/square-toggle-gray-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-gray-off.png
rename to rtdata/images/themed/png/dark/square-toggle-gray-off-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-gray-on.png b/rtdata/images/themed/png/dark/square-toggle-gray-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-gray-on.png
rename to rtdata/images/themed/png/dark/square-toggle-gray-on-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-green-off.png b/rtdata/images/themed/png/dark/square-toggle-green-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-green-off.png
rename to rtdata/images/themed/png/dark/square-toggle-green-off-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-green-on.png b/rtdata/images/themed/png/dark/square-toggle-green-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-green-on.png
rename to rtdata/images/themed/png/dark/square-toggle-green-on-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-luminosity-off.png b/rtdata/images/themed/png/dark/square-toggle-luminosity-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-luminosity-off.png
rename to rtdata/images/themed/png/dark/square-toggle-luminosity-off-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-luminosity-on.png b/rtdata/images/themed/png/dark/square-toggle-luminosity-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-luminosity-on.png
rename to rtdata/images/themed/png/dark/square-toggle-luminosity-on-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-red-off.png b/rtdata/images/themed/png/dark/square-toggle-red-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-red-off.png
rename to rtdata/images/themed/png/dark/square-toggle-red-off-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-red-on.png b/rtdata/images/themed/png/dark/square-toggle-red-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-red-on.png
rename to rtdata/images/themed/png/dark/square-toggle-red-on-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-theme-off.png b/rtdata/images/themed/png/dark/square-toggle-theme-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-theme-off.png
rename to rtdata/images/themed/png/dark/square-toggle-theme-off-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-theme-on.png b/rtdata/images/themed/png/dark/square-toggle-theme-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-theme-on.png
rename to rtdata/images/themed/png/dark/square-toggle-theme-on-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-white-off.png b/rtdata/images/themed/png/dark/square-toggle-white-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-white-off.png
rename to rtdata/images/themed/png/dark/square-toggle-white-off-narrow.png
diff --git a/rtdata/images/themed/png/dark/square-toggle-white-on.png b/rtdata/images/themed/png/dark/square-toggle-white-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/dark/square-toggle-white-on.png
rename to rtdata/images/themed/png/dark/square-toggle-white-on-narrow.png
diff --git a/rtdata/images/themed/png/dark/star-gold-hollow-narrow.png b/rtdata/images/themed/png/dark/star-gold-hollow-narrow.png
new file mode 100644
index 000000000..b0ce704d6
Binary files /dev/null and b/rtdata/images/themed/png/dark/star-gold-hollow-narrow.png differ
diff --git a/rtdata/images/themed/png/dark/star-gold-hollow.png b/rtdata/images/themed/png/dark/star-gold-hollow.png
new file mode 100644
index 000000000..44bf29d12
Binary files /dev/null and b/rtdata/images/themed/png/dark/star-gold-hollow.png differ
diff --git a/rtdata/images/themed/png/dark/star-gold-narrow.png b/rtdata/images/themed/png/dark/star-gold-narrow.png
new file mode 100644
index 000000000..32710fb9d
Binary files /dev/null and b/rtdata/images/themed/png/dark/star-gold-narrow.png differ
diff --git a/rtdata/images/themed/png/dark/star-gold.png b/rtdata/images/themed/png/dark/star-gold.png
new file mode 100644
index 000000000..5e3805005
Binary files /dev/null and b/rtdata/images/themed/png/dark/star-gold.png differ
diff --git a/rtdata/images/themed/png/dark/star-hollow-narrow.png b/rtdata/images/themed/png/dark/star-hollow-narrow.png
new file mode 100644
index 000000000..b9c978350
Binary files /dev/null and b/rtdata/images/themed/png/dark/star-hollow-narrow.png differ
diff --git a/rtdata/images/themed/png/dark/star-hollow.png b/rtdata/images/themed/png/dark/star-hollow.png
new file mode 100644
index 000000000..dd7015f8a
Binary files /dev/null and b/rtdata/images/themed/png/dark/star-hollow.png differ
diff --git a/rtdata/images/themed/png/dark/star-narrow.png b/rtdata/images/themed/png/dark/star-narrow.png
new file mode 100644
index 000000000..bdcc73bfe
Binary files /dev/null and b/rtdata/images/themed/png/dark/star-narrow.png differ
diff --git a/rtdata/images/themed/png/dark/star-small.png b/rtdata/images/themed/png/dark/star-small.png
index c8f21783c..db895d932 100644
Binary files a/rtdata/images/themed/png/dark/star-small.png and b/rtdata/images/themed/png/dark/star-small.png differ
diff --git a/rtdata/images/themed/png/dark/star.png b/rtdata/images/themed/png/dark/star.png
new file mode 100644
index 000000000..6dde0fbe3
Binary files /dev/null and b/rtdata/images/themed/png/dark/star.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
new file mode 100644
index 000000000..53eaabf60
Binary files /dev/null and b/rtdata/images/themed/png/light/color-picker-add-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/color-picker-hicontrast.png b/rtdata/images/themed/png/light/color-picker-hicontrast.png
new file mode 100644
index 000000000..c2592a8b7
Binary files /dev/null and b/rtdata/images/themed/png/light/color-picker-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/crosshair.png b/rtdata/images/themed/png/light/crosshair-hicontrast.png
similarity index 100%
rename from rtdata/images/themed/png/light/crosshair.png
rename to rtdata/images/themed/png/light/crosshair-hicontrast.png
diff --git a/rtdata/images/themed/png/light/gamut-plus.png b/rtdata/images/themed/png/light/gamut-plus.png
index 43c0c321a..c41e5a39b 100644
Binary files a/rtdata/images/themed/png/light/gamut-plus.png and b/rtdata/images/themed/png/light/gamut-plus.png differ
diff --git a/rtdata/images/themed/png/light/hand-closed.png b/rtdata/images/themed/png/light/hand-closed-hicontrast.png
similarity index 100%
rename from rtdata/images/themed/png/light/hand-closed.png
rename to rtdata/images/themed/png/light/hand-closed-hicontrast.png
diff --git a/rtdata/images/themed/png/light/node-move-x-hicontrast.png b/rtdata/images/themed/png/light/node-move-x-hicontrast.png
new file mode 100644
index 000000000..92a1c49e2
Binary files /dev/null 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
new file mode 100644
index 000000000..3984385af
Binary files /dev/null and b/rtdata/images/themed/png/light/node-move-xy-hicontrast.png 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
new file mode 100644
index 000000000..e2fc55da8
Binary files /dev/null and b/rtdata/images/themed/png/light/node-move-y-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/power-off-small.png b/rtdata/images/themed/png/light/power-off-small.png
index 581712d14..6036813a9 100644
Binary files a/rtdata/images/themed/png/light/power-off-small.png and b/rtdata/images/themed/png/light/power-off-small.png differ
diff --git a/rtdata/images/themed/png/light/rotate-aroundnode-hicontrast.png b/rtdata/images/themed/png/light/rotate-aroundnode-hicontrast.png
new file mode 100644
index 000000000..d8929ac42
Binary files /dev/null and b/rtdata/images/themed/png/light/rotate-aroundnode-hicontrast.png differ
diff --git a/rtdata/images/themed/png/light/rotate-aroundnode.png b/rtdata/images/themed/png/light/rotate-aroundnode.png
new file mode 100644
index 000000000..5da406b64
Binary files /dev/null and b/rtdata/images/themed/png/light/rotate-aroundnode.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-black-off.png b/rtdata/images/themed/png/light/square-toggle-black-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-black-off.png
rename to rtdata/images/themed/png/light/square-toggle-black-off-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-black-on.png b/rtdata/images/themed/png/light/square-toggle-black-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-black-on.png
rename to rtdata/images/themed/png/light/square-toggle-black-on-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-blue-off.png b/rtdata/images/themed/png/light/square-toggle-blue-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-blue-off.png
rename to rtdata/images/themed/png/light/square-toggle-blue-off-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-blue-on.png b/rtdata/images/themed/png/light/square-toggle-blue-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-blue-on.png
rename to rtdata/images/themed/png/light/square-toggle-blue-on-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-gray-off.png b/rtdata/images/themed/png/light/square-toggle-gray-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-gray-off.png
rename to rtdata/images/themed/png/light/square-toggle-gray-off-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-gray-on.png b/rtdata/images/themed/png/light/square-toggle-gray-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-gray-on.png
rename to rtdata/images/themed/png/light/square-toggle-gray-on-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-green-off.png b/rtdata/images/themed/png/light/square-toggle-green-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-green-off.png
rename to rtdata/images/themed/png/light/square-toggle-green-off-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-green-on.png b/rtdata/images/themed/png/light/square-toggle-green-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-green-on.png
rename to rtdata/images/themed/png/light/square-toggle-green-on-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-luminosity-off.png b/rtdata/images/themed/png/light/square-toggle-luminosity-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-luminosity-off.png
rename to rtdata/images/themed/png/light/square-toggle-luminosity-off-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-luminosity-on.png b/rtdata/images/themed/png/light/square-toggle-luminosity-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-luminosity-on.png
rename to rtdata/images/themed/png/light/square-toggle-luminosity-on-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-red-off.png b/rtdata/images/themed/png/light/square-toggle-red-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-red-off.png
rename to rtdata/images/themed/png/light/square-toggle-red-off-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-red-on.png b/rtdata/images/themed/png/light/square-toggle-red-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-red-on.png
rename to rtdata/images/themed/png/light/square-toggle-red-on-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-theme-off.png b/rtdata/images/themed/png/light/square-toggle-theme-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-theme-off.png
rename to rtdata/images/themed/png/light/square-toggle-theme-off-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-theme-on.png b/rtdata/images/themed/png/light/square-toggle-theme-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-theme-on.png
rename to rtdata/images/themed/png/light/square-toggle-theme-on-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-white-off.png b/rtdata/images/themed/png/light/square-toggle-white-off-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-white-off.png
rename to rtdata/images/themed/png/light/square-toggle-white-off-narrow.png
diff --git a/rtdata/images/themed/png/light/square-toggle-white-on.png b/rtdata/images/themed/png/light/square-toggle-white-on-narrow.png
similarity index 100%
rename from rtdata/images/themed/png/light/square-toggle-white-on.png
rename to rtdata/images/themed/png/light/square-toggle-white-on-narrow.png
diff --git a/rtdata/images/themed/png/light/star-gold-hollow-narrow.png b/rtdata/images/themed/png/light/star-gold-hollow-narrow.png
new file mode 100644
index 000000000..b0ce704d6
Binary files /dev/null and b/rtdata/images/themed/png/light/star-gold-hollow-narrow.png differ
diff --git a/rtdata/images/themed/png/light/star-gold-hollow.png b/rtdata/images/themed/png/light/star-gold-hollow.png
new file mode 100644
index 000000000..44bf29d12
Binary files /dev/null and b/rtdata/images/themed/png/light/star-gold-hollow.png differ
diff --git a/rtdata/images/themed/png/light/star-gold-narrow.png b/rtdata/images/themed/png/light/star-gold-narrow.png
new file mode 100644
index 000000000..32710fb9d
Binary files /dev/null and b/rtdata/images/themed/png/light/star-gold-narrow.png differ
diff --git a/rtdata/images/themed/png/light/star-gold.png b/rtdata/images/themed/png/light/star-gold.png
new file mode 100644
index 000000000..5e3805005
Binary files /dev/null and b/rtdata/images/themed/png/light/star-gold.png differ
diff --git a/rtdata/images/themed/png/light/star-hollow-narrow.png b/rtdata/images/themed/png/light/star-hollow-narrow.png
new file mode 100644
index 000000000..4a15f0ba1
Binary files /dev/null and b/rtdata/images/themed/png/light/star-hollow-narrow.png differ
diff --git a/rtdata/images/themed/png/light/star-hollow.png b/rtdata/images/themed/png/light/star-hollow.png
new file mode 100644
index 000000000..3e610948d
Binary files /dev/null and b/rtdata/images/themed/png/light/star-hollow.png differ
diff --git a/rtdata/images/themed/png/light/star-narrow.png b/rtdata/images/themed/png/light/star-narrow.png
new file mode 100644
index 000000000..78c8eea8a
Binary files /dev/null and b/rtdata/images/themed/png/light/star-narrow.png differ
diff --git a/rtdata/images/themed/png/light/star-small.png b/rtdata/images/themed/png/light/star-small.png
index 8ff98fa6b..2bb54647a 100644
Binary files a/rtdata/images/themed/png/light/star-small.png and b/rtdata/images/themed/png/light/star-small.png differ
diff --git a/rtdata/images/themed/png/light/star.png b/rtdata/images/themed/png/light/star.png
new file mode 100644
index 000000000..f29ccfdcd
Binary files /dev/null and b/rtdata/images/themed/png/light/star.png differ
diff --git a/rtdata/images/themed/svg/color-picker-add-hicontrast.svg b/rtdata/images/themed/svg/color-picker-add-hicontrast.svg
new file mode 100644
index 000000000..3d51dd31f
--- /dev/null
+++ b/rtdata/images/themed/svg/color-picker-add-hicontrast.svg
@@ -0,0 +1,142 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/color-picker-hicontrast.svg b/rtdata/images/themed/svg/color-picker-hicontrast.svg
new file mode 100644
index 000000000..867f9730b
--- /dev/null
+++ b/rtdata/images/themed/svg/color-picker-hicontrast.svg
@@ -0,0 +1,137 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/crosshair.svg b/rtdata/images/themed/svg/crosshair-hicontrast.svg
similarity index 100%
rename from rtdata/images/themed/svg/crosshair.svg
rename to rtdata/images/themed/svg/crosshair-hicontrast.svg
diff --git a/rtdata/images/themed/svg/gamut-plus.svg b/rtdata/images/themed/svg/gamut-plus.svg
index 218f3068d..c27796b70 100644
--- a/rtdata/images/themed/svg/gamut-plus.svg
+++ b/rtdata/images/themed/svg/gamut-plus.svg
@@ -42,7 +42,7 @@
inkscape:snap-bbox="true"
inkscape:bbox-nodes="true"
inkscape:snap-others="false"
- inkscape:object-nodes="true"
+ inkscape:object-nodes="false"
inkscape:snap-grids="true"
inkscape:snap-bbox-midpoints="false">
-
+
+
+
diff --git a/rtdata/images/themed/svg/node-move-xy-hicontrast.svg b/rtdata/images/themed/svg/node-move-xy-hicontrast.svg
new file mode 100644
index 000000000..9c3915804
--- /dev/null
+++ b/rtdata/images/themed/svg/node-move-xy-hicontrast.svg
@@ -0,0 +1,130 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/node-move-y-hicontrast.svg b/rtdata/images/themed/svg/node-move-y-hicontrast.svg
new file mode 100644
index 000000000..fe7b285e7
--- /dev/null
+++ b/rtdata/images/themed/svg/node-move-y-hicontrast.svg
@@ -0,0 +1,120 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/power-off-small.svg b/rtdata/images/themed/svg/power-off-small.svg
index aeaa42993..d04115bb9 100644
--- a/rtdata/images/themed/svg/power-off-small.svg
+++ b/rtdata/images/themed/svg/power-off-small.svg
@@ -18,7 +18,7 @@
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:version="0.92.2 2405546, 2018-03-11"
- sodipodi:docname="power-off.svg">
+ sodipodi:docname="power-off-small.svg">
+ r="3.2497637" />
diff --git a/rtdata/images/themed/svg/rotate-aroundnode-hicontrast.svg b/rtdata/images/themed/svg/rotate-aroundnode-hicontrast.svg
new file mode 100644
index 000000000..fda645c55
--- /dev/null
+++ b/rtdata/images/themed/svg/rotate-aroundnode-hicontrast.svg
@@ -0,0 +1,118 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/rotate-aroundnode.svg b/rtdata/images/themed/svg/rotate-aroundnode.svg
new file mode 100644
index 000000000..67ac406fa
--- /dev/null
+++ b/rtdata/images/themed/svg/rotate-aroundnode.svg
@@ -0,0 +1,136 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-black-off.svg b/rtdata/images/themed/svg/square-toggle-black-off-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-black-off.svg
rename to rtdata/images/themed/svg/square-toggle-black-off-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-black-on.svg b/rtdata/images/themed/svg/square-toggle-black-on-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-black-on.svg
rename to rtdata/images/themed/svg/square-toggle-black-on-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-blue-off.svg b/rtdata/images/themed/svg/square-toggle-blue-off-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-blue-off.svg
rename to rtdata/images/themed/svg/square-toggle-blue-off-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-blue-on.svg b/rtdata/images/themed/svg/square-toggle-blue-on-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-blue-on.svg
rename to rtdata/images/themed/svg/square-toggle-blue-on-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-gray-off.svg b/rtdata/images/themed/svg/square-toggle-gray-off-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-gray-off.svg
rename to rtdata/images/themed/svg/square-toggle-gray-off-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-gray-on.svg b/rtdata/images/themed/svg/square-toggle-gray-on-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-gray-on.svg
rename to rtdata/images/themed/svg/square-toggle-gray-on-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-green-off.svg b/rtdata/images/themed/svg/square-toggle-green-off-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-green-off.svg
rename to rtdata/images/themed/svg/square-toggle-green-off-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-green-on.svg b/rtdata/images/themed/svg/square-toggle-green-on-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-green-on.svg
rename to rtdata/images/themed/svg/square-toggle-green-on-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-luminosity-off.svg b/rtdata/images/themed/svg/square-toggle-luminosity-off-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-luminosity-off.svg
rename to rtdata/images/themed/svg/square-toggle-luminosity-off-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-luminosity-on.svg b/rtdata/images/themed/svg/square-toggle-luminosity-on-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-luminosity-on.svg
rename to rtdata/images/themed/svg/square-toggle-luminosity-on-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-red-off.svg b/rtdata/images/themed/svg/square-toggle-red-off-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-red-off.svg
rename to rtdata/images/themed/svg/square-toggle-red-off-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-red-on.svg b/rtdata/images/themed/svg/square-toggle-red-on-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-red-on.svg
rename to rtdata/images/themed/svg/square-toggle-red-on-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-theme-off.svg b/rtdata/images/themed/svg/square-toggle-theme-off-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-theme-off.svg
rename to rtdata/images/themed/svg/square-toggle-theme-off-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-theme-on.svg b/rtdata/images/themed/svg/square-toggle-theme-on-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-theme-on.svg
rename to rtdata/images/themed/svg/square-toggle-theme-on-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-white-off.svg b/rtdata/images/themed/svg/square-toggle-white-off-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-white-off.svg
rename to rtdata/images/themed/svg/square-toggle-white-off-narrow.svg
diff --git a/rtdata/images/themed/svg/square-toggle-white-on.svg b/rtdata/images/themed/svg/square-toggle-white-on-narrow.svg
similarity index 100%
rename from rtdata/images/themed/svg/square-toggle-white-on.svg
rename to rtdata/images/themed/svg/square-toggle-white-on-narrow.svg
diff --git a/rtdata/images/themed/svg/star-gold-hollow-narrow.svg b/rtdata/images/themed/svg/star-gold-hollow-narrow.svg
new file mode 100644
index 000000000..82ab83a4a
--- /dev/null
+++ b/rtdata/images/themed/svg/star-gold-hollow-narrow.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/star-gold-narrow.svg b/rtdata/images/themed/svg/star-gold-narrow.svg
new file mode 100644
index 000000000..ee54c8214
--- /dev/null
+++ b/rtdata/images/themed/svg/star-gold-narrow.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/star-hollow-narrow.svg b/rtdata/images/themed/svg/star-hollow-narrow.svg
new file mode 100644
index 000000000..66b1c233c
--- /dev/null
+++ b/rtdata/images/themed/svg/star-hollow-narrow.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/star-narrow.svg b/rtdata/images/themed/svg/star-narrow.svg
new file mode 100644
index 000000000..90add16d5
--- /dev/null
+++ b/rtdata/images/themed/svg/star-narrow.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/star-small.svg b/rtdata/images/themed/svg/star-small.svg
index f15d135b8..cd7a9b8ef 100644
--- a/rtdata/images/themed/svg/star-small.svg
+++ b/rtdata/images/themed/svg/star-small.svg
@@ -26,8 +26,8 @@
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="50.625"
- inkscape:cx="8"
+ inkscape:zoom="51.375"
+ inkscape:cx="8.0194647"
inkscape:cy="8"
inkscape:document-units="px"
inkscape:current-layer="layer1"
@@ -109,8 +109,8 @@
transform="translate(0,-8)">
+ transform="matrix(0.86350439,-0.28029946,0.28056958,0.86267304,-3.3971484,4.0671624)"
+ inkscape:transform-center-y="-0.51970384" />
diff --git a/rtdata/images/themed/svg/template-narrow.svg b/rtdata/images/themed/svg/template-narrow.svg
new file mode 100644
index 000000000..9a6321317
--- /dev/null
+++ b/rtdata/images/themed/svg/template-narrow.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtengine/curves.h b/rtengine/curves.h
index 98934f13a..a9f4b4ace 100644
--- a/rtengine/curves.h
+++ b/rtengine/curves.h
@@ -444,6 +444,7 @@ protected:
DiagonalCurveType kind;
void spline_cubic_set ();
+ void catmull_rom_set();
void NURBS_set ();
public:
diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc
index a3b00b165..f478ba719 100644
--- a/rtengine/diagonalcurves.cc
+++ b/rtengine/diagonalcurves.cc
@@ -86,7 +86,8 @@ DiagonalCurve::DiagonalCurve (const std::vector& p, int poly_pn)
if (!identity) {
if (kind == DCT_Spline && N > 2) {
- spline_cubic_set ();
+ //spline_cubic_set ();
+ catmull_rom_set();
} else if (kind == DCT_NURBS && N > 2) {
NURBS_set ();
fillHash();
@@ -270,6 +271,164 @@ void DiagonalCurve::NURBS_set ()
fillDyByDx();
}
+
+/*****************************************************************************
+ * Catmull Rom Spline
+ * (https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline)
+ *****************************************************************************/
+
+namespace {
+
+inline double pow2(double x)
+{
+ return x*x;
+}
+
+
+inline double catmull_rom_tj(double ti,
+ double xi, double yi,
+ double xj, double yj)
+{
+ // see https://github.com/Beep6581/RawTherapee/pull/4701#issuecomment-414054187
+ static constexpr double alpha = 0.375;
+ return pow(sqrt(pow2(xj-xi) + pow2(yj-yi)), alpha) + ti;
+}
+
+
+inline void catmull_rom_spline(int n_points,
+ double p0_x, double p0_y,
+ double p1_x, double p1_y,
+ double p2_x, double p2_y,
+ double p3_x, double p3_y,
+ std::vector &res_x,
+ std::vector &res_y)
+{
+ res_x.reserve(n_points);
+ res_y.reserve(n_points);
+
+ double t0 = 0;
+ double t1 = catmull_rom_tj(t0, p0_x, p0_y, p1_x, p1_y);
+ double t2 = catmull_rom_tj(t1, p1_x, p1_y, p2_x, p2_y);
+ double t3 = catmull_rom_tj(t2, p2_x, p2_y, p3_x, p3_y);
+
+ double space = (t2-t1) / n_points;
+
+ double t;
+ int i;
+ double c, d, A1_x, A1_y, A2_x, A2_y, A3_x, A3_y;
+ double B1_x, B1_y, B2_x, B2_y, C_x, C_y;
+
+ res_x.push_back(p1_x);
+ res_y.push_back(p1_y);
+
+ // special case, a segment at 0 or 1 is computed exactly
+ if (p1_y == p2_y && (p1_y == 0 || p1_y == 1)) {
+ for (i = 1; i < n_points-1; ++i) {
+ t = p1_x + space * i;
+ res_x.push_back(t);
+ res_y.push_back(p1_y);
+ }
+ } else {
+ for (i = 1; i < n_points-1; ++i) {
+ t = t1 + space * i;
+
+ c = (t1 - t)/(t1 - t0);
+ d = (t - t0)/(t1 - t0);
+ A1_x = c * p0_x + d * p1_x;
+ A1_y = c * p0_y + d * p1_y;
+
+ c = (t2 - t)/(t2 - t1);
+ d = (t - t1)/(t2 - t1);
+ A2_x = c * p1_x + d * p2_x;
+ A2_y = c * p1_y + d * p2_y;
+
+ c = (t3 - t)/(t3 - t2);
+ d = (t - t2)/(t3 - t2);
+ A3_x = c * p2_x + d * p3_x;
+ A3_y = c * p2_y + d * p3_y;
+
+ c = (t2 - t)/(t2 - t0);
+ d = (t - t0)/(t2 - t0);
+ B1_x = c * A1_x + d * A2_x;
+ B1_y = c * A1_y + d * A2_y;
+
+ c = (t3 - t)/(t3 - t1);
+ d = (t - t1)/(t3 - t1);
+ B2_x = c * A2_x + d * A3_x;
+ B2_y = c * A2_y + d * A3_y;
+
+ c = (t2 - t)/(t2 - t1);
+ d = (t - t1)/(t2 - t1);
+ C_x = c * B1_x + d * B2_x;
+ C_y = c * B1_y + d * B2_y;
+
+ res_x.push_back(C_x);
+ res_y.push_back(C_y);
+ }
+ }
+
+ res_x.push_back(p2_x);
+ res_y.push_back(p2_y);
+}
+
+
+inline void catmull_rom_reflect(double px, double py, double cx, double cy,
+ double &rx, double &ry)
+{
+#if 0
+ double dx = px - cx;
+ double dy = py - cy;
+ rx = cx - dx;
+ ry = cy - dy;
+#else
+ // see https://github.com/Beep6581/RawTherapee/pull/4701#issuecomment-414054187
+ static constexpr double epsilon = 1e-5;
+ double dx = px - cx;
+ double dy = py - cy;
+ rx = cx - dx * 0.01;
+ ry = dx > epsilon ? (dy / dx) * (rx - cx) + cy : cy;
+#endif
+}
+
+
+void catmull_rom_chain(int n_points, int n_cp, double *x, double *y,
+ std::vector &res_x, std::vector &res_y)
+{
+ double x_first, y_first;
+ double x_last, y_last;
+ catmull_rom_reflect(x[1], y[1], x[0], y[0], x_first, y_first);
+ catmull_rom_reflect(x[n_cp-2], y[n_cp-2], x[n_cp-1], y[n_cp-1], x_last, y_last);
+
+ int segments = n_cp - 1;
+
+ res_x.reserve(n_points);
+ res_y.reserve(n_points);
+
+ for (int i = 0; i < segments; ++i) {
+ int n = max(int(n_points * (x[i+1] - x[i]) + 0.5), 2);
+ catmull_rom_spline(
+ n, i == 0 ? x_first : x[i-1], i == 0 ? y_first : y[i-1],
+ x[i], y[i], x[i+1], y[i+1],
+ i == segments-1 ? x_last : x[i+2],
+ i == segments-1 ? y_last : y[i+2],
+ res_x, res_y);
+ }
+}
+
+} // namespace
+
+
+void DiagonalCurve::catmull_rom_set()
+{
+ int n_points = max(ppn * 65, 65000);
+ poly_x.clear();
+ poly_y.clear();
+ catmull_rom_chain(n_points, N, x, y, poly_x, poly_y);
+}
+
+/*****************************************************************************/
+
+
double DiagonalCurve::getVal (double t) const
{
@@ -300,7 +459,8 @@ double DiagonalCurve::getVal (double t) const
}
case DCT_Linear :
- case DCT_Spline : {
+ // case DCT_Spline :
+ {
// values under and over the first and last point
if (t > x[N - 1]) {
return y[N - 1];
@@ -324,20 +484,33 @@ double DiagonalCurve::getVal (double t) const
double h = x[k_hi] - x[k_lo];
// linear
- if (kind == DCT_Linear) {
+ // if (kind == DCT_Linear) {
return y[k_lo] + (t - x[k_lo]) * ( y[k_hi] - y[k_lo] ) / h;
- }
- // spline curve
- else { // if (kind==Spline) {
- double a = (x[k_hi] - t) / h;
- double b = (t - x[k_lo]) / h;
- double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666;
- return CLIPD(r);
- }
+ // }
+ // // spline curve
+ // else { // if (kind==Spline) {
+ // double a = (x[k_hi] - t) / h;
+ // double b = (t - x[k_lo]) / h;
+ // double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666;
+ // return CLIPD(r);
+ // }
break;
}
+ case DCT_Spline: {
+ auto it = std::lower_bound(poly_x.begin(), poly_x.end(), t);
+ if (it == poly_x.end()) {
+ return poly_y.back();
+ }
+ auto d = it - poly_x.begin();
+ if (it+1 < poly_x.end() && t - *it > *(it+1) - t) {
+ ++d;
+ }
+ return LIM01(*(poly_y.begin() + d));
+ break;
+ }
+
case DCT_NURBS : {
// get the hash table entry by rounding the value (previously multiplied by "hashSize")
unsigned short int i = (unsigned short int)(t * hashSize);
diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc
index 2dfcc6d3b..b2fe436fd 100644
--- a/rtengine/histmatching.cc
+++ b/rtengine/histmatching.cc
@@ -97,6 +97,55 @@ int findMatch(int val, const std::vector &cdf, int j)
}
+class CubicSplineCurve: public DiagonalCurve {
+public:
+ CubicSplineCurve(const std::vector &points):
+ DiagonalCurve({DCT_Linear})
+ {
+ N = points.size() / 2;
+ x = new double[N];
+ y = new double[N];
+
+ for (int i = 0; i < N; ++i) {
+ x[i] = points[2*i];
+ y[i] = points[2*i+1];
+ }
+ kind = DCT_Spline;
+ spline_cubic_set();
+ }
+
+ double getVal(double t) const
+ {
+ // values under and over the first and last point
+ if (t > x[N - 1]) {
+ return y[N - 1];
+ } else if (t < x[0]) {
+ return y[0];
+ }
+
+ // do a binary search for the right interval:
+ unsigned int k_lo = 0, k_hi = N - 1;
+
+ while (k_hi > 1 + k_lo) {
+ unsigned int k = (k_hi + k_lo) / 2;
+
+ if (x[k] > t) {
+ k_hi = k;
+ } else {
+ k_lo = k;
+ }
+ }
+
+ double h = x[k_hi] - x[k_lo];
+
+ double a = (x[k_hi] - t) / h;
+ double b = (t - x[k_lo]) / h;
+ double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666;
+ return LIM01(r);
+ }
+};
+
+
void mappingToCurve(const std::vector &mapping, std::vector &curve)
{
curve.clear();
@@ -117,8 +166,9 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve)
auto coord = [](int v) -> double { return double(v)/255.0; };
auto doit =
- [&](int start, int stop, int step, bool addstart) -> void
+ [&](int start, int stop, int step, bool addstart, int maxdelta=0) -> void
{
+ if (!maxdelta) maxdelta = step * 2;
int prev = start;
if (addstart && mapping[start] >= 0) {
curve.push_back(coord(start));
@@ -131,7 +181,7 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve)
}
bool change = i > 0 && v != mapping[i-1];
int diff = i - prev;
- if ((change && std::abs(diff - step) <= 1) || diff > step * 2) {
+ if ((change && std::abs(diff - step) <= 1) || diff > maxdelta) {
curve.push_back(coord(i));
curve.push_back(coord(v));
prev = i;
@@ -152,24 +202,36 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve)
int end = mapping.size();
if (idx <= end / 3) {
doit(start, idx, idx / 2, true);
- doit(idx, end, (end - idx) / 3, false);
+ step = (end - idx) / 4;
+ doit(idx, end, step, false, step);
} else {
doit(start, idx, idx > step ? step : idx / 2, true);
- doit(idx, int(mapping.size()), step, idx - step > step / 2 && std::abs(curve[curve.size()-2] - coord(idx)) > 0.01);
+ doit(idx, end, step, idx - step > step / 2 && std::abs(curve[curve.size()-2] - coord(idx)) > 0.01);
}
- if (curve.size() > 2 && (1 - curve[curve.size()-2] <= step / (256.0 * 3))) {
+ if (curve.size() > 2 && (1 - curve[curve.size()-2] <= coord(step) / 3)) {
curve.pop_back();
curve.pop_back();
}
-
+
curve.push_back(1.0);
curve.push_back(1.0);
if (curve.size() < 4) {
curve = { DCT_Linear }; // not enough points, fall back to linear
} else {
- curve.insert(curve.begin(), DCT_Spline);
+ CubicSplineCurve c(curve);
+ double gap = 0.05;
+ double x = 0.0;
+ curve = { DCT_Spline };
+ while (x < 1.0) {
+ curve.push_back(x);
+ curve.push_back(c.getVal(x));
+ x += gap;
+ gap *= 1.4;
+ }
+ curve.push_back(1.0);
+ curve.push_back(c.getVal(1.0));
}
}
@@ -220,7 +282,7 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st
neutral.icm = cp;
neutral.raw.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST);
neutral.raw.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST);
- neutral.icm.outputProfile = "sRGB";
+ neutral.icm.outputProfile = ColorManagementParams::NoICMString;
std::unique_ptr source;
{
diff --git a/rtengine/ipresize.cc b/rtengine/ipresize.cc
index f9ff94ef9..b3275b2e4 100644
--- a/rtengine/ipresize.cc
+++ b/rtengine/ipresize.cc
@@ -373,6 +373,7 @@ float ImProcFunctions::resizeScale (const ProcParams* params, int fw, int fh, in
} else {
dScale = (double)params->resize.height / (double)refh;
}
+ dScale = (dScale > 1.0 && !params->resize.allowUpscaling) ? 1.0 : dScale;
break;
diff --git a/rtengine/settings.h b/rtengine/settings.h
index 65a469794..3f5a5d1fe 100644
--- a/rtengine/settings.h
+++ b/rtengine/settings.h
@@ -30,13 +30,13 @@ class Settings
public:
Glib::ustring iccDirectory; ///< The directory containing the possible output icc profiles
int viewingdevice; // white of output device (D50...D65..)
- int viewingdevicegrey; // level of grey output device
+ int viewingdevicegrey; // level of grey output device
int viewinggreySc; // level of grey Scene
- int leveldnv; // level of crop denoise
- int leveldnti; // size of tiles denoise
+ int leveldnv; // level of crop denoise
+ int leveldnti; // size of tiles denoise
int leveldnaut; // level of auto denoise
int leveldnliss; // level of auto multi zone
- int leveldnautsimpl; // STD or EXPERT
+ int leveldnautsimpl; // STD or EXPERT
Glib::ustring printerProfile; ///< ICC profile name used for soft-proofing a printer output
RenderingIntent printerIntent; ///< Colorimetric intent used with the above profile
@@ -64,7 +64,8 @@ public:
bool gamutICC; // no longer used
bool gamutLch;
- bool HistogramWorking;
+ bool HistogramWorking; // true: histogram is display the value of the image computed in the Working profile
+ // false: histogram is display the value of the image computed in the Output profile
int amchroma;
int protectred;
double protectredh;
diff --git a/rtgui/crophandler.h b/rtgui/crophandler.h
index 17f2ca47d..305d15e2c 100644
--- a/rtgui/crophandler.h
+++ b/rtgui/crophandler.h
@@ -97,8 +97,8 @@ public:
rtengine::procparams::CropParams cropParams;
rtengine::procparams::ColorManagementParams colorParams;
- Glib::RefPtr cropPixbuf;
- Glib::RefPtr cropPixbuftrue;
+ Glib::RefPtr cropPixbuf; // image displayed on monitor, using the monitor profile (i.e. lab to monitor profile)
+ Glib::RefPtr cropPixbuftrue; // internal image in output color space for analysis (i.e. lab to either Working profile or Output profile, depending on options.rtSettings.HistogramWorking)
MyMutex cimg;
diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc
index d3232ae22..77118277c 100644
--- a/rtgui/cropwindow.cc
+++ b/rtgui/cropwindow.cc
@@ -1007,7 +1007,9 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
int mx, my;
screenCoordToImage (x, y, mx, my);
- if (!onArea (CropImage, x, y) || !cropHandler.cropPixbuf) {
+ MyMutex::MyLock lock(cropHandler.cimg);
+
+ if (!onArea (CropImage, x, y) || !cropHandler.cropPixbuftrue) {
cropHandler.getFullImageSize(mx, my);
// pmlistener->pointerMoved (false, cropHandler.colorParams.working, mx, my, -1, -1, -1);
// if (pmhlistener) pmhlistener->pointerMoved (false, cropHandler.colorParams.working, mx, my, -1, -1, -1);
@@ -1023,7 +1025,7 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
}
} else {
- /*MyMutex::MyLock lock(cropHandler.cimg);
+ /*
int vx = x - xpos - imgX;
int vy = y - ypos - imgY;
@@ -1033,7 +1035,6 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
*/
- cropHandler.cimg.lock ();
int vx = x - xpos - imgX;
int vy = y - ypos - imgY;
@@ -1045,9 +1046,9 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
// guint8* pix = cropHandler.cropPixbuf->get_pixels() + vy*cropHandler.cropPixbuf->get_rowstride() + vx*3;
// if (vx < cropHandler.cropPixbuf->get_width() && vy < cropHandler.cropPixbuf->get_height())
// pmlistener->pointerMoved (true, mx, my, pix[0], pix[1], pix[2]);
- int imwidth = cropHandler.cropPixbuf->get_width();
- int imheight = cropHandler.cropPixbuf->get_height();
- guint8* pix = cropHandler.cropPixbuf->get_pixels() + vy * cropHandler.cropPixbuf->get_rowstride() + vx * 3;
+ int imwidth = cropHandler.cropPixbuftrue->get_width();
+ int imheight = cropHandler.cropPixbuftrue->get_height();
+ guint8* pix = cropHandler.cropPixbuftrue->get_pixels() + vy * cropHandler.cropPixbuftrue->get_rowstride() + vx * 3;
int rval = pix[0];
int gval = pix[1];
@@ -1062,17 +1063,16 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
isrc->getRawValues(mx, my, params.coarse.rotate, rval, gval, bval);
}
}
- // pmlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]);
+
+ // Updates the Navigator
+ // TODO: possible double color conversion if rval, gval, bval come from cropHandler.cropPixbuftrue ? see issue #4583
pmlistener->pointerMoved (true, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, rval, gval, bval);
- if (pmhlistener)
- // pmhlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]);
- {
- pmhlistener->pointerMoved (true, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, pix[0], pix[1], pix[2]);
+ if (pmhlistener) {
+ // Updates the HistogramRGBArea
+ pmhlistener->pointerMoved (true, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, rval, gval, bval);
}
}
-
- cropHandler.cimg.unlock ();
}
}
}
diff --git a/rtgui/cursormanager.cc b/rtgui/cursormanager.cc
index d1973dcca..6c280ee8c 100644
--- a/rtgui/cursormanager.cc
+++ b/rtgui/cursormanager.cc
@@ -51,15 +51,15 @@ void CursorManager::init (Glib::RefPtr mainWindow)
cAdd = Gdk::Cursor::create (display, Gdk::PLUS);
cWait = Gdk::Cursor::create (display, Gdk::CLOCK);
- Glib::RefPtr hand = RTImage::createFromFile ("crosshair.png");
- Glib::RefPtr close_hand = RTImage::createFromFile ("hand-closed.png");
- Glib::RefPtr wbpick = RTImage::createFromFile ("color-picker.png");
- Glib::RefPtr cpick = RTImage::createFromFile ("color-picker-add.png");
+ 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.png");
- Glib::RefPtr move1DH = RTImage::createFromFile ("node-move-x.png");
- Glib::RefPtr move1DV = RTImage::createFromFile ("node-move-y.png");
- Glib::RefPtr moveRotate = RTImage::createFromFile ("move-rotate.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);
diff --git a/rtgui/filethumbnailbuttonset.cc b/rtgui/filethumbnailbuttonset.cc
index d32c1c339..556397b7b 100644
--- a/rtgui/filethumbnailbuttonset.cc
+++ b/rtgui/filethumbnailbuttonset.cc
@@ -42,9 +42,9 @@ FileThumbnailButtonSet::FileThumbnailButtonSet (FileBrowserEntry* myEntry)
{
if (!iconsLoaded) {
- unRankIcon = RTImage::createFromPng ("star-hollow-small.png");
- rankIcon = RTImage::createFromPng ("star-gold-small.png");
- gRankIcon = RTImage::createFromPng ("star-small.png");
+ unRankIcon = RTImage::createFromPng ("star-hollow-narrow.png");
+ rankIcon = RTImage::createFromPng ("star-gold-narrow.png");
+ gRankIcon = RTImage::createFromPng ("star-narrow.png");
trashIcon = RTImage::createFromPng ("trash-small.png");
unTrashIcon = RTImage::createFromPng ("trash-remove-small.png");
processIcon = RTImage::createFromPng ("gears-small.png");
diff --git a/rtgui/previewmodepanel.cc b/rtgui/previewmodepanel.cc
index 4b821f298..086f6ab17 100644
--- a/rtgui/previewmodepanel.cc
+++ b/rtgui/previewmodepanel.cc
@@ -24,23 +24,23 @@
PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia)
{
- iR = new RTImage ("square-toggle-red-on.png");
- iG = new RTImage ("square-toggle-green-on.png");
- iB = new RTImage ("square-toggle-blue-on.png");
- iL = new RTImage ("square-toggle-luminosity-on.png");
- iBC0 = new RTImage ("square-toggle-theme-on.png");
- iBC1 = new RTImage ("square-toggle-black-on.png");
- iBC2 = new RTImage ("square-toggle-white-on.png");
- iBC3 = new RTImage ("square-toggle-gray-on.png");
+ iR = new RTImage ("square-toggle-red-on-narrow.png");
+ iG = new RTImage ("square-toggle-green-on-narrow.png");
+ iB = new RTImage ("square-toggle-blue-on-narrow.png");
+ iL = new RTImage ("square-toggle-luminosity-on-narrow.png");
+ iBC0 = new RTImage ("square-toggle-theme-on-narrow.png");
+ iBC1 = new RTImage ("square-toggle-black-on-narrow.png");
+ iBC2 = new RTImage ("square-toggle-white-on-narrow.png");
+ iBC3 = new RTImage ("square-toggle-gray-on-narrow.png");
- igR = new RTImage ("square-toggle-red-off.png");
- igG = new RTImage ("square-toggle-green-off.png");
- igB = new RTImage ("square-toggle-blue-off.png");
- igL = new RTImage ("square-toggle-luminosity-off.png");
- igBC0 = new RTImage ("square-toggle-theme-off.png");
- igBC1 = new RTImage ("square-toggle-black-off.png");
- igBC2 = new RTImage ("square-toggle-white-off.png");
- igBC3 = new RTImage ("square-toggle-gray-off.png");
+ igR = new RTImage ("square-toggle-red-off-narrow.png");
+ igG = new RTImage ("square-toggle-green-off-narrow.png");
+ igB = new RTImage ("square-toggle-blue-off-narrow.png");
+ igL = new RTImage ("square-toggle-luminosity-off-narrow.png");
+ igBC0 = new RTImage ("square-toggle-theme-off-narrow.png");
+ igBC1 = new RTImage ("square-toggle-black-off-narrow.png");
+ igBC2 = new RTImage ("square-toggle-white-off-narrow.png");
+ igBC3 = new RTImage ("square-toggle-gray-off-narrow.png");
backColor0 = Gtk::manage (new Gtk::ToggleButton ());
backColor0->get_style_context()->add_class("narrowbutton");