diff --git a/rtdata/CMakeLists.txt b/rtdata/CMakeLists.txt
index e320969c3..f8efa1523 100644
--- a/rtdata/CMakeLists.txt
+++ b/rtdata/CMakeLists.txt
@@ -1,4 +1,3 @@
-
file(GLOB LANGUAGEFILES "languages/*")
file(GLOB SOUNDFILES "sounds/*")
file(GLOB INPUTICCFILES "iccprofiles/input/*")
@@ -7,11 +6,17 @@ file(GLOB DCPFILES "dcpprofiles/*")
file(GLOB FONTS "fonts/*")
set(PROFILESDIR "profiles")
-set(IMAGESDIR "images")
-
-# THEMEDIR includes subfolders for image resources for some themes; doing the normal glob won't work.
set(THEMEDIR "themes")
+# Images, mostly icons, which are generated using the generatePngIcons script:
+set(IMAGES_THEMED
+ "images/themed/png/dark"
+ "images/themed/png/light"
+ )
+
+# Other images which are generated manually:
+file(GLOB IMAGES_NONTHEMED "images/non-themed/png/*")
+
if(WIN32)
set(OPTIONSFILE "options/options.win")
elseif(APPLE)
@@ -25,17 +30,15 @@ if(WIN32)
endif()
if(UNIX)
- configure_file("${CMAKE_CURRENT_SOURCE_DIR}/icons/rawtherapee.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop")
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/rawtherapee.desktop.in" "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/rawtherapee.desktop" DESTINATION ${DESKTOPDIR})
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi16-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/16x16/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi24-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/24x24/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi32-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/32x32/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi48-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/48x48/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi128-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/128x128/apps" RENAME rawtherapee.png)
- install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/icons/hi256-app-rawtherapee.png" DESTINATION "${ICONSDIR}/hicolor/256x256/apps" RENAME rawtherapee.png)
+ install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/non-themed/png/rawtherapee-logo-16.png" DESTINATION "${ICONSDIR}/hicolor/16x16/apps" RENAME rawtherapee.png)
+ install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/non-themed/png/rawtherapee-logo-24.png" DESTINATION "${ICONSDIR}/hicolor/24x24/apps" RENAME rawtherapee.png)
+ install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/non-themed/png/rawtherapee-logo-48.png" DESTINATION "${ICONSDIR}/hicolor/48x48/apps" RENAME rawtherapee.png)
+ install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/non-themed/png/rawtherapee-logo-128.png" DESTINATION "${ICONSDIR}/hicolor/128x128/apps" RENAME rawtherapee.png)
+ install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/images/non-themed/png/rawtherapee-logo-256.png" DESTINATION "${ICONSDIR}/hicolor/256x256/apps" RENAME rawtherapee.png)
endif()
-install(FILES ${IMAGEFILES} DESTINATION "${DATADIR}/images")
install(FILES ${LANGUAGEFILES} DESTINATION "${DATADIR}/languages")
install(FILES ${SOUNDFILES} DESTINATION "${DATADIR}/sounds")
install(FILES ${INPUTICCFILES} DESTINATION "${DATADIR}/iccprofiles/input")
@@ -48,8 +51,14 @@ endif()
install(DIRECTORY ${PROFILESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.pp3")
install(DIRECTORY ${THEMEDIR} DESTINATION "${DATADIR}")
-install(DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "index.theme")
-install(DIRECTORY ${IMAGESDIR} DESTINATION "${DATADIR}" FILES_MATCHING PATTERN "*.png")
+
+foreach(theme ${IMAGES_THEMED})
+ install(DIRECTORY ${theme} DESTINATION "${DATADIR}/images")
+endforeach()
+
+#install(DIRECTORY ${IMAGES_NONTHEMED} DESTINATION "${DATADIR}/images" FILES_MATCHING PATTERN "*.png")
+#install(DIRECTORY ${IMAGES_NONTHEMED} DESTINATION "${DATADIR}/images/")
+install(FILES ${IMAGES_NONTHEMED} DESTINATION "${DATADIR}/images")
if(APPLE)
# CMake escapes first item quote character. Do not remove 'DUMMY_VARIABLE='
diff --git a/rtdata/iccprofiles/output/ACES.icc b/rtdata/iccprofiles/output/ACES.icc
deleted file mode 100644
index cb87b8bf2..000000000
Binary files a/rtdata/iccprofiles/output/ACES.icc and /dev/null differ
diff --git a/rtdata/iccprofiles/output/RT_Large_g10.icc b/rtdata/iccprofiles/output/RT_Large_g10.icc
deleted file mode 100644
index 1889a5457..000000000
Binary files a/rtdata/iccprofiles/output/RT_Large_g10.icc and /dev/null differ
diff --git a/rtdata/iccprofiles/output/RT_Large_gBT709.icc b/rtdata/iccprofiles/output/RT_Large_gBT709.icc
deleted file mode 100644
index bd9785f14..000000000
Binary files a/rtdata/iccprofiles/output/RT_Large_gBT709.icc and /dev/null differ
diff --git a/rtdata/iccprofiles/output/RT_Large_gsRGB.icc b/rtdata/iccprofiles/output/RT_Large_gsRGB.icc
deleted file mode 100644
index 11be3c733..000000000
Binary files a/rtdata/iccprofiles/output/RT_Large_gsRGB.icc and /dev/null differ
diff --git a/rtdata/iccprofiles/output/RT_Medium_gsRGB.icc b/rtdata/iccprofiles/output/RT_Medium_gsRGB.icc
deleted file mode 100644
index 6c6233d74..000000000
Binary files a/rtdata/iccprofiles/output/RT_Medium_gsRGB.icc and /dev/null differ
diff --git a/rtdata/iccprofiles/output/RT_sRGB.icm b/rtdata/iccprofiles/output/RT_sRGB.icm
deleted file mode 100644
index 3d0822ef7..000000000
Binary files a/rtdata/iccprofiles/output/RT_sRGB.icm and /dev/null differ
diff --git a/rtdata/iccprofiles/output/RT_sRGB_g10.icm b/rtdata/iccprofiles/output/RT_sRGB_g10.icm
deleted file mode 100644
index f8afb8e17..000000000
Binary files a/rtdata/iccprofiles/output/RT_sRGB_g10.icm and /dev/null differ
diff --git a/rtdata/iccprofiles/output/RT_sRGB_gBT709.icm b/rtdata/iccprofiles/output/RT_sRGB_gBT709.icm
deleted file mode 100644
index c5c44b7a4..000000000
Binary files a/rtdata/iccprofiles/output/RT_sRGB_gBT709.icm and /dev/null differ
diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc
new file mode 100644
index 000000000..818187898
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc differ
diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc
new file mode 100644
index 000000000..413360817
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc differ
diff --git a/rtdata/iccprofiles/output/RTv2_Best.icc b/rtdata/iccprofiles/output/RTv2_Best.icc
new file mode 100644
index 000000000..3f9db89e0
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv2_Best.icc differ
diff --git a/rtdata/iccprofiles/output/RTv2_Beta.icc b/rtdata/iccprofiles/output/RTv2_Beta.icc
new file mode 100644
index 000000000..ebd5005e2
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv2_Beta.icc differ
diff --git a/rtdata/iccprofiles/output/RTv2_Bruce.icc b/rtdata/iccprofiles/output/RTv2_Bruce.icc
new file mode 100644
index 000000000..c795da140
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv2_Bruce.icc differ
diff --git a/rtdata/iccprofiles/output/RTv2_Large.icc b/rtdata/iccprofiles/output/RTv2_Large.icc
new file mode 100644
index 000000000..40f86fcf1
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv2_Large.icc differ
diff --git a/rtdata/iccprofiles/output/RTv2_Medium.icc b/rtdata/iccprofiles/output/RTv2_Medium.icc
new file mode 100644
index 000000000..59bdf6706
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv2_Medium.icc differ
diff --git a/rtdata/iccprofiles/output/RTv2_Rec2020.icc b/rtdata/iccprofiles/output/RTv2_Rec2020.icc
new file mode 100644
index 000000000..b6969a6f1
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv2_Rec2020.icc differ
diff --git a/rtdata/iccprofiles/output/RTv2_Wide.icc b/rtdata/iccprofiles/output/RTv2_Wide.icc
new file mode 100644
index 000000000..32ce13c7d
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv2_Wide.icc differ
diff --git a/rtdata/iccprofiles/output/RTv2_sRGB.icc b/rtdata/iccprofiles/output/RTv2_sRGB.icc
new file mode 100644
index 000000000..5efc365f8
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv2_sRGB.icc differ
diff --git a/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc b/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc
new file mode 100644
index 000000000..5dbe25a69
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc differ
diff --git a/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc b/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc
new file mode 100644
index 000000000..5dfb4cb0d
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc differ
diff --git a/rtdata/iccprofiles/output/RTv4_Best.icc b/rtdata/iccprofiles/output/RTv4_Best.icc
new file mode 100644
index 000000000..c67688686
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv4_Best.icc differ
diff --git a/rtdata/iccprofiles/output/RTv4_Beta.icc b/rtdata/iccprofiles/output/RTv4_Beta.icc
new file mode 100644
index 000000000..86825164a
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv4_Beta.icc differ
diff --git a/rtdata/iccprofiles/output/RTv4_Bruce.icc b/rtdata/iccprofiles/output/RTv4_Bruce.icc
new file mode 100644
index 000000000..c3a01b116
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv4_Bruce.icc differ
diff --git a/rtdata/iccprofiles/output/RTv4_Large.icc b/rtdata/iccprofiles/output/RTv4_Large.icc
new file mode 100644
index 000000000..176bff9a7
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv4_Large.icc differ
diff --git a/rtdata/iccprofiles/output/RTv4_Medium.icc b/rtdata/iccprofiles/output/RTv4_Medium.icc
new file mode 100644
index 000000000..d63965fa5
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv4_Medium.icc differ
diff --git a/rtdata/iccprofiles/output/RTv4_Rec2020.icc b/rtdata/iccprofiles/output/RTv4_Rec2020.icc
new file mode 100644
index 000000000..27b1f8c49
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv4_Rec2020.icc differ
diff --git a/rtdata/iccprofiles/output/RTv4_Wide.icc b/rtdata/iccprofiles/output/RTv4_Wide.icc
new file mode 100644
index 000000000..f95587797
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv4_Wide.icc differ
diff --git a/rtdata/iccprofiles/output/RTv4_sRGB.icc b/rtdata/iccprofiles/output/RTv4_sRGB.icc
new file mode 100644
index 000000000..af95e0fd4
Binary files /dev/null and b/rtdata/iccprofiles/output/RTv4_sRGB.icc differ
diff --git a/rtdata/iccprofiles/output/Rec2020.icm b/rtdata/iccprofiles/output/Rec2020.icm
deleted file mode 100644
index 0decaf6dc..000000000
Binary files a/rtdata/iccprofiles/output/Rec2020.icm and /dev/null differ
diff --git a/rtdata/icons/hi128-app-rawtherapee.png b/rtdata/icons/hi128-app-rawtherapee.png
deleted file mode 100644
index 979183116..000000000
Binary files a/rtdata/icons/hi128-app-rawtherapee.png and /dev/null differ
diff --git a/rtdata/icons/hi16-app-rawtherapee.png b/rtdata/icons/hi16-app-rawtherapee.png
deleted file mode 100644
index 8c4731848..000000000
Binary files a/rtdata/icons/hi16-app-rawtherapee.png and /dev/null differ
diff --git a/rtdata/icons/hi24-app-rawtherapee.png b/rtdata/icons/hi24-app-rawtherapee.png
deleted file mode 100644
index f6c8ef1a0..000000000
Binary files a/rtdata/icons/hi24-app-rawtherapee.png and /dev/null differ
diff --git a/rtdata/icons/hi256-app-rawtherapee.png b/rtdata/icons/hi256-app-rawtherapee.png
deleted file mode 100644
index 5cb7d751f..000000000
Binary files a/rtdata/icons/hi256-app-rawtherapee.png and /dev/null differ
diff --git a/rtdata/icons/hi32-app-rawtherapee.png b/rtdata/icons/hi32-app-rawtherapee.png
deleted file mode 100644
index 380429e13..000000000
Binary files a/rtdata/icons/hi32-app-rawtherapee.png and /dev/null differ
diff --git a/rtdata/icons/hi48-app-rawtherapee.png b/rtdata/icons/hi48-app-rawtherapee.png
deleted file mode 100644
index fc82d5ae3..000000000
Binary files a/rtdata/icons/hi48-app-rawtherapee.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-B.png b/rtdata/images/Chanmixer-B.png
deleted file mode 100644
index 0e12209f2..000000000
Binary files a/rtdata/images/Chanmixer-B.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-BB.png b/rtdata/images/Chanmixer-BB.png
deleted file mode 100644
index 6804bdf4a..000000000
Binary files a/rtdata/images/Chanmixer-BB.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-BG.png b/rtdata/images/Chanmixer-BG.png
deleted file mode 100644
index 58012aa55..000000000
Binary files a/rtdata/images/Chanmixer-BG.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-BR.png b/rtdata/images/Chanmixer-BR.png
deleted file mode 100644
index 1c3457e14..000000000
Binary files a/rtdata/images/Chanmixer-BR.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-BY.png b/rtdata/images/Chanmixer-BY.png
deleted file mode 100644
index c630ffb29..000000000
Binary files a/rtdata/images/Chanmixer-BY.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-C.png b/rtdata/images/Chanmixer-C.png
deleted file mode 100644
index 15aa0c08c..000000000
Binary files a/rtdata/images/Chanmixer-C.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-G.png b/rtdata/images/Chanmixer-G.png
deleted file mode 100644
index 566babb8b..000000000
Binary files a/rtdata/images/Chanmixer-G.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-GB.png b/rtdata/images/Chanmixer-GB.png
deleted file mode 100644
index cfceceaea..000000000
Binary files a/rtdata/images/Chanmixer-GB.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-GG.png b/rtdata/images/Chanmixer-GG.png
deleted file mode 100644
index 00f928236..000000000
Binary files a/rtdata/images/Chanmixer-GG.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-GR.png b/rtdata/images/Chanmixer-GR.png
deleted file mode 100644
index 827210e97..000000000
Binary files a/rtdata/images/Chanmixer-GR.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-M.png b/rtdata/images/Chanmixer-M.png
deleted file mode 100644
index b10dc5790..000000000
Binary files a/rtdata/images/Chanmixer-M.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-O.png b/rtdata/images/Chanmixer-O.png
deleted file mode 100644
index 8f90ae8bb..000000000
Binary files a/rtdata/images/Chanmixer-O.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-P.png b/rtdata/images/Chanmixer-P.png
deleted file mode 100644
index c3c412807..000000000
Binary files a/rtdata/images/Chanmixer-P.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-R.png b/rtdata/images/Chanmixer-R.png
deleted file mode 100644
index 5a75d9f88..000000000
Binary files a/rtdata/images/Chanmixer-R.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-RB.png b/rtdata/images/Chanmixer-RB.png
deleted file mode 100644
index 42cf9bd1b..000000000
Binary files a/rtdata/images/Chanmixer-RB.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-RG.png b/rtdata/images/Chanmixer-RG.png
deleted file mode 100644
index f74600517..000000000
Binary files a/rtdata/images/Chanmixer-RG.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-RR.png b/rtdata/images/Chanmixer-RR.png
deleted file mode 100644
index 300b0429e..000000000
Binary files a/rtdata/images/Chanmixer-RR.png and /dev/null differ
diff --git a/rtdata/images/Chanmixer-Y.png b/rtdata/images/Chanmixer-Y.png
deleted file mode 100644
index 98d9b6f83..000000000
Binary files a/rtdata/images/Chanmixer-Y.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/Chanmixer-Bgamma.png b/rtdata/images/Dark/actions/Chanmixer-Bgamma.png
deleted file mode 100644
index 8698988a9..000000000
Binary files a/rtdata/images/Dark/actions/Chanmixer-Bgamma.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/Chanmixer-Ggamma.png b/rtdata/images/Dark/actions/Chanmixer-Ggamma.png
deleted file mode 100644
index d0539758c..000000000
Binary files a/rtdata/images/Dark/actions/Chanmixer-Ggamma.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/Chanmixer-Rgamma.png b/rtdata/images/Dark/actions/Chanmixer-Rgamma.png
deleted file mode 100644
index b1b7fb604..000000000
Binary files a/rtdata/images/Dark/actions/Chanmixer-Rgamma.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/HDR-thumbnail.png b/rtdata/images/Dark/actions/HDR-thumbnail.png
deleted file mode 100644
index 182e603e8..000000000
Binary files a/rtdata/images/Dark/actions/HDR-thumbnail.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/PanelEnding.png b/rtdata/images/Dark/actions/PanelEnding.png
deleted file mode 100644
index be7729164..000000000
Binary files a/rtdata/images/Dark/actions/PanelEnding.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/PixelShift-thumbnail.png b/rtdata/images/Dark/actions/PixelShift-thumbnail.png
deleted file mode 100644
index 4bbea1aee..000000000
Binary files a/rtdata/images/Dark/actions/PixelShift-thumbnail.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/adj-black.png b/rtdata/images/Dark/actions/adj-black.png
deleted file mode 100644
index bf5459fa5..000000000
Binary files a/rtdata/images/Dark/actions/adj-black.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/adj-white.png b/rtdata/images/Dark/actions/adj-white.png
deleted file mode 100644
index 03028934e..000000000
Binary files a/rtdata/images/Dark/actions/adj-white.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ajd-ca-blue1.png b/rtdata/images/Dark/actions/ajd-ca-blue1.png
deleted file mode 100644
index 7a47267df..000000000
Binary files a/rtdata/images/Dark/actions/ajd-ca-blue1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ajd-ca-blue2.png b/rtdata/images/Dark/actions/ajd-ca-blue2.png
deleted file mode 100644
index dfb458300..000000000
Binary files a/rtdata/images/Dark/actions/ajd-ca-blue2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ajd-ca-red1.png b/rtdata/images/Dark/actions/ajd-ca-red1.png
deleted file mode 100644
index 1e45c5035..000000000
Binary files a/rtdata/images/Dark/actions/ajd-ca-red1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ajd-ca-red2.png b/rtdata/images/Dark/actions/ajd-ca-red2.png
deleted file mode 100644
index e5da9e005..000000000
Binary files a/rtdata/images/Dark/actions/ajd-ca-red2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ajd-wb-bluered1.png b/rtdata/images/Dark/actions/ajd-wb-bluered1.png
deleted file mode 100644
index 3c8473451..000000000
Binary files a/rtdata/images/Dark/actions/ajd-wb-bluered1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ajd-wb-bluered2.png b/rtdata/images/Dark/actions/ajd-wb-bluered2.png
deleted file mode 100644
index 0f06a770e..000000000
Binary files a/rtdata/images/Dark/actions/ajd-wb-bluered2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ajd-wb-green1.png b/rtdata/images/Dark/actions/ajd-wb-green1.png
deleted file mode 100644
index 4f33551d6..000000000
Binary files a/rtdata/images/Dark/actions/ajd-wb-green1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ajd-wb-green2.png b/rtdata/images/Dark/actions/ajd-wb-green2.png
deleted file mode 100644
index a9a7e8553..000000000
Binary files a/rtdata/images/Dark/actions/ajd-wb-green2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ajd-wb-temp1.png b/rtdata/images/Dark/actions/ajd-wb-temp1.png
deleted file mode 100644
index 3c8473451..000000000
Binary files a/rtdata/images/Dark/actions/ajd-wb-temp1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ajd-wb-temp2.png b/rtdata/images/Dark/actions/ajd-wb-temp2.png
deleted file mode 100644
index 2b0c7c0ef..000000000
Binary files a/rtdata/images/Dark/actions/ajd-wb-temp2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/arrow-down-small.png b/rtdata/images/Dark/actions/arrow-down-small.png
deleted file mode 100644
index d631a72f5..000000000
Binary files a/rtdata/images/Dark/actions/arrow-down-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/arrow-down.png b/rtdata/images/Dark/actions/arrow-down.png
deleted file mode 100644
index 417038d15..000000000
Binary files a/rtdata/images/Dark/actions/arrow-down.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/arrow-left-small.png b/rtdata/images/Dark/actions/arrow-left-small.png
deleted file mode 100644
index d61abd8a3..000000000
Binary files a/rtdata/images/Dark/actions/arrow-left-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/arrow-left.png b/rtdata/images/Dark/actions/arrow-left.png
deleted file mode 100644
index a30aeadef..000000000
Binary files a/rtdata/images/Dark/actions/arrow-left.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/arrow-right-small.png b/rtdata/images/Dark/actions/arrow-right-small.png
deleted file mode 100644
index fa0741927..000000000
Binary files a/rtdata/images/Dark/actions/arrow-right-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/arrow-right.png b/rtdata/images/Dark/actions/arrow-right.png
deleted file mode 100644
index 2f426f9f1..000000000
Binary files a/rtdata/images/Dark/actions/arrow-right.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/arrow-up-small.png b/rtdata/images/Dark/actions/arrow-up-small.png
deleted file mode 100644
index 21f8f61eb..000000000
Binary files a/rtdata/images/Dark/actions/arrow-up-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/arrow-up.png b/rtdata/images/Dark/actions/arrow-up.png
deleted file mode 100644
index 2f4a9d228..000000000
Binary files a/rtdata/images/Dark/actions/arrow-up.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/atom.png b/rtdata/images/Dark/actions/atom.png
deleted file mode 100644
index 1e7ce3da0..000000000
Binary files a/rtdata/images/Dark/actions/atom.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/beforeafter.png b/rtdata/images/Dark/actions/beforeafter.png
deleted file mode 100644
index cd4e1a792..000000000
Binary files a/rtdata/images/Dark/actions/beforeafter.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/cglabel0.png b/rtdata/images/Dark/actions/cglabel0.png
deleted file mode 100644
index af4abc914..000000000
Binary files a/rtdata/images/Dark/actions/cglabel0.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/cglabel1.png b/rtdata/images/Dark/actions/cglabel1.png
deleted file mode 100644
index 6337a6476..000000000
Binary files a/rtdata/images/Dark/actions/cglabel1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/cglabel2.png b/rtdata/images/Dark/actions/cglabel2.png
deleted file mode 100644
index a5b843c0c..000000000
Binary files a/rtdata/images/Dark/actions/cglabel2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/cglabel3.png b/rtdata/images/Dark/actions/cglabel3.png
deleted file mode 100644
index a3f3da7a9..000000000
Binary files a/rtdata/images/Dark/actions/cglabel3.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/cglabel4.png b/rtdata/images/Dark/actions/cglabel4.png
deleted file mode 100644
index 3e048f36c..000000000
Binary files a/rtdata/images/Dark/actions/cglabel4.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/cglabel5.png b/rtdata/images/Dark/actions/cglabel5.png
deleted file mode 100644
index 323be0cb9..000000000
Binary files a/rtdata/images/Dark/actions/cglabel5.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/clabel0.png b/rtdata/images/Dark/actions/clabel0.png
deleted file mode 100644
index 5c2484a36..000000000
Binary files a/rtdata/images/Dark/actions/clabel0.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/clabel1.png b/rtdata/images/Dark/actions/clabel1.png
deleted file mode 100644
index 87bd0ea83..000000000
Binary files a/rtdata/images/Dark/actions/clabel1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/clabel2.png b/rtdata/images/Dark/actions/clabel2.png
deleted file mode 100644
index b8ca4f72b..000000000
Binary files a/rtdata/images/Dark/actions/clabel2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/clabel3.png b/rtdata/images/Dark/actions/clabel3.png
deleted file mode 100644
index d9dced467..000000000
Binary files a/rtdata/images/Dark/actions/clabel3.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/clabel4.png b/rtdata/images/Dark/actions/clabel4.png
deleted file mode 100644
index 2afb44650..000000000
Binary files a/rtdata/images/Dark/actions/clabel4.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/clabel5.png b/rtdata/images/Dark/actions/clabel5.png
deleted file mode 100644
index aef022fce..000000000
Binary files a/rtdata/images/Dark/actions/clabel5.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/closedhand.png b/rtdata/images/Dark/actions/closedhand.png
deleted file mode 100644
index e9560f5a7..000000000
Binary files a/rtdata/images/Dark/actions/closedhand.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/colorPickers-hide.png b/rtdata/images/Dark/actions/colorPickers-hide.png
deleted file mode 100644
index 54b33a7fb..000000000
Binary files a/rtdata/images/Dark/actions/colorPickers-hide.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/colorPickers-show.png b/rtdata/images/Dark/actions/colorPickers-show.png
deleted file mode 100644
index d9d039c2b..000000000
Binary files a/rtdata/images/Dark/actions/colorPickers-show.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/colour.png b/rtdata/images/Dark/actions/colour.png
deleted file mode 100644
index e518dfa3a..000000000
Binary files a/rtdata/images/Dark/actions/colour.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/crop-auto.png b/rtdata/images/Dark/actions/crop-auto.png
deleted file mode 100644
index 8cb57e799..000000000
Binary files a/rtdata/images/Dark/actions/crop-auto.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/crop.png b/rtdata/images/Dark/actions/crop.png
deleted file mode 100644
index a9a339020..000000000
Binary files a/rtdata/images/Dark/actions/crop.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/crossed-arrows-in.png b/rtdata/images/Dark/actions/crossed-arrows-in.png
deleted file mode 100644
index b2a2d8820..000000000
Binary files a/rtdata/images/Dark/actions/crossed-arrows-in.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/crossed-arrows-out.png b/rtdata/images/Dark/actions/crossed-arrows-out.png
deleted file mode 100644
index e552d55ca..000000000
Binary files a/rtdata/images/Dark/actions/crossed-arrows-out.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/curveType-NURBS.png b/rtdata/images/Dark/actions/curveType-NURBS.png
deleted file mode 100644
index b891c89c7..000000000
Binary files a/rtdata/images/Dark/actions/curveType-NURBS.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/curveType-controlPoints.png b/rtdata/images/Dark/actions/curveType-controlPoints.png
deleted file mode 100644
index 54dbcc540..000000000
Binary files a/rtdata/images/Dark/actions/curveType-controlPoints.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/curveType-flatLinear.png b/rtdata/images/Dark/actions/curveType-flatLinear.png
deleted file mode 100644
index 6049e658c..000000000
Binary files a/rtdata/images/Dark/actions/curveType-flatLinear.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/curveType-linear.png b/rtdata/images/Dark/actions/curveType-linear.png
deleted file mode 100644
index 67ff4390c..000000000
Binary files a/rtdata/images/Dark/actions/curveType-linear.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/curveType-parametric.png b/rtdata/images/Dark/actions/curveType-parametric.png
deleted file mode 100644
index dcf7b02b5..000000000
Binary files a/rtdata/images/Dark/actions/curveType-parametric.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/curveType-spline.png b/rtdata/images/Dark/actions/curveType-spline.png
deleted file mode 100644
index b9c0527d3..000000000
Binary files a/rtdata/images/Dark/actions/curveType-spline.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/detail.png b/rtdata/images/Dark/actions/detail.png
deleted file mode 100644
index b1af89c9e..000000000
Binary files a/rtdata/images/Dark/actions/detail.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/distorsion.png b/rtdata/images/Dark/actions/distorsion.png
deleted file mode 100644
index fc5200391..000000000
Binary files a/rtdata/images/Dark/actions/distorsion.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/distortion-auto.png b/rtdata/images/Dark/actions/distortion-auto.png
deleted file mode 100644
index cc5ced965..000000000
Binary files a/rtdata/images/Dark/actions/distortion-auto.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/distortion-barrel.png b/rtdata/images/Dark/actions/distortion-barrel.png
deleted file mode 100644
index 0a19ac097..000000000
Binary files a/rtdata/images/Dark/actions/distortion-barrel.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/distortion-pincushion.png b/rtdata/images/Dark/actions/distortion-pincushion.png
deleted file mode 100644
index cfdcfaf63..000000000
Binary files a/rtdata/images/Dark/actions/distortion-pincushion.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/document-open-recent.png b/rtdata/images/Dark/actions/document-open-recent.png
deleted file mode 100644
index f2c126cb7..000000000
Binary files a/rtdata/images/Dark/actions/document-open-recent.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/document-open.png b/rtdata/images/Dark/actions/document-open.png
deleted file mode 100644
index 6d2ea0f34..000000000
Binary files a/rtdata/images/Dark/actions/document-open.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/edit-copy.png b/rtdata/images/Dark/actions/edit-copy.png
deleted file mode 100644
index 4736313a2..000000000
Binary files a/rtdata/images/Dark/actions/edit-copy.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/edit-find.png b/rtdata/images/Dark/actions/edit-find.png
deleted file mode 100644
index d560c644b..000000000
Binary files a/rtdata/images/Dark/actions/edit-find.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/edit-paste.png b/rtdata/images/Dark/actions/edit-paste.png
deleted file mode 100644
index 38871deec..000000000
Binary files a/rtdata/images/Dark/actions/edit-paste.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/edited-small.png b/rtdata/images/Dark/actions/edited-small.png
deleted file mode 100644
index f25997a59..000000000
Binary files a/rtdata/images/Dark/actions/edited-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/edited.png b/rtdata/images/Dark/actions/edited.png
deleted file mode 100644
index 95d058454..000000000
Binary files a/rtdata/images/Dark/actions/edited.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/editedg-small.png b/rtdata/images/Dark/actions/editedg-small.png
deleted file mode 100644
index 9eb229e75..000000000
Binary files a/rtdata/images/Dark/actions/editedg-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/editednot-small.png b/rtdata/images/Dark/actions/editednot-small.png
deleted file mode 100644
index 410bff81b..000000000
Binary files a/rtdata/images/Dark/actions/editednot-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/editednotg-small.png b/rtdata/images/Dark/actions/editednotg-small.png
deleted file mode 100644
index 55bc28f2b..000000000
Binary files a/rtdata/images/Dark/actions/editednotg-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/editmodehand.png b/rtdata/images/Dark/actions/editmodehand.png
deleted file mode 100644
index 2b231db06..000000000
Binary files a/rtdata/images/Dark/actions/editmodehand.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/equalizer-narrow.png b/rtdata/images/Dark/actions/equalizer-narrow.png
deleted file mode 100644
index dcf484ea7..000000000
Binary files a/rtdata/images/Dark/actions/equalizer-narrow.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/equalizer-wide.png b/rtdata/images/Dark/actions/equalizer-wide.png
deleted file mode 100644
index 50cfed8fa..000000000
Binary files a/rtdata/images/Dark/actions/equalizer-wide.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/expanderClosed.png b/rtdata/images/Dark/actions/expanderClosed.png
deleted file mode 100644
index 559f201db..000000000
Binary files a/rtdata/images/Dark/actions/expanderClosed.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/expanderDisabled.png b/rtdata/images/Dark/actions/expanderDisabled.png
deleted file mode 100644
index 7e35c7266..000000000
Binary files a/rtdata/images/Dark/actions/expanderDisabled.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/expanderEnabled.png b/rtdata/images/Dark/actions/expanderEnabled.png
deleted file mode 100644
index 33e8515af..000000000
Binary files a/rtdata/images/Dark/actions/expanderEnabled.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/expanderInconsistent.png b/rtdata/images/Dark/actions/expanderInconsistent.png
deleted file mode 100644
index e19f8e106..000000000
Binary files a/rtdata/images/Dark/actions/expanderInconsistent.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/expanderOpened.png b/rtdata/images/Dark/actions/expanderOpened.png
deleted file mode 100644
index 9a7f161ee..000000000
Binary files a/rtdata/images/Dark/actions/expanderOpened.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/exposure.png b/rtdata/images/Dark/actions/exposure.png
deleted file mode 100644
index f6abf8b87..000000000
Binary files a/rtdata/images/Dark/actions/exposure.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/filter-original-1.png b/rtdata/images/Dark/actions/filter-original-1.png
deleted file mode 100644
index 9b4e47ce9..000000000
Binary files a/rtdata/images/Dark/actions/filter-original-1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/filter-original-2.png b/rtdata/images/Dark/actions/filter-original-2.png
deleted file mode 100644
index 03531e921..000000000
Binary files a/rtdata/images/Dark/actions/filter-original-2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/filter.png b/rtdata/images/Dark/actions/filter.png
deleted file mode 100644
index bd5dcb5f4..000000000
Binary files a/rtdata/images/Dark/actions/filter.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/filterclear.png b/rtdata/images/Dark/actions/filterclear.png
deleted file mode 100644
index 28c93061e..000000000
Binary files a/rtdata/images/Dark/actions/filterclear.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/fullscreen-exit.png b/rtdata/images/Dark/actions/fullscreen-exit.png
deleted file mode 100644
index 55eb8e06d..000000000
Binary files a/rtdata/images/Dark/actions/fullscreen-exit.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/fullscreen.png b/rtdata/images/Dark/actions/fullscreen.png
deleted file mode 100644
index 963409e9a..000000000
Binary files a/rtdata/images/Dark/actions/fullscreen.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gamut-hist.png b/rtdata/images/Dark/actions/gamut-hist.png
deleted file mode 100644
index 8a60118dd..000000000
Binary files a/rtdata/images/Dark/actions/gamut-hist.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gamut-softproof.png b/rtdata/images/Dark/actions/gamut-softproof.png
deleted file mode 100644
index d61874507..000000000
Binary files a/rtdata/images/Dark/actions/gamut-softproof.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gamut-warning.png b/rtdata/images/Dark/actions/gamut-warning.png
deleted file mode 100644
index f6bb292a9..000000000
Binary files a/rtdata/images/Dark/actions/gamut-warning.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/grayrated.png b/rtdata/images/Dark/actions/grayrated.png
deleted file mode 100644
index 6866bc1d6..000000000
Binary files a/rtdata/images/Dark/actions/grayrated.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-add.png b/rtdata/images/Dark/actions/gtk-add.png
deleted file mode 100644
index 80abd6bfd..000000000
Binary files a/rtdata/images/Dark/actions/gtk-add.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-apply.png b/rtdata/images/Dark/actions/gtk-apply.png
deleted file mode 100644
index 4790895e7..000000000
Binary files a/rtdata/images/Dark/actions/gtk-apply.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-cancel.png b/rtdata/images/Dark/actions/gtk-cancel.png
deleted file mode 100644
index c76033ee9..000000000
Binary files a/rtdata/images/Dark/actions/gtk-cancel.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-close-small.png b/rtdata/images/Dark/actions/gtk-close-small.png
deleted file mode 100644
index 7abb7a95a..000000000
Binary files a/rtdata/images/Dark/actions/gtk-close-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-close.png b/rtdata/images/Dark/actions/gtk-close.png
deleted file mode 100644
index c76033ee9..000000000
Binary files a/rtdata/images/Dark/actions/gtk-close.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-color-picker-add.png b/rtdata/images/Dark/actions/gtk-color-picker-add.png
deleted file mode 100644
index 77a30c250..000000000
Binary files a/rtdata/images/Dark/actions/gtk-color-picker-add.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-color-picker-small.png b/rtdata/images/Dark/actions/gtk-color-picker-small.png
deleted file mode 100644
index f10b7f0fe..000000000
Binary files a/rtdata/images/Dark/actions/gtk-color-picker-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-color-picker.png b/rtdata/images/Dark/actions/gtk-color-picker.png
deleted file mode 100644
index c79c3f3e9..000000000
Binary files a/rtdata/images/Dark/actions/gtk-color-picker.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-copy.png b/rtdata/images/Dark/actions/gtk-copy.png
deleted file mode 100644
index 4736313a2..000000000
Binary files a/rtdata/images/Dark/actions/gtk-copy.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-edit.png b/rtdata/images/Dark/actions/gtk-edit.png
deleted file mode 100644
index 8eabf5f09..000000000
Binary files a/rtdata/images/Dark/actions/gtk-edit.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-find.png b/rtdata/images/Dark/actions/gtk-find.png
deleted file mode 100644
index d560c644b..000000000
Binary files a/rtdata/images/Dark/actions/gtk-find.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-media-play.png b/rtdata/images/Dark/actions/gtk-media-play.png
deleted file mode 100644
index 2bd7ded54..000000000
Binary files a/rtdata/images/Dark/actions/gtk-media-play.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-media-stop.png b/rtdata/images/Dark/actions/gtk-media-stop.png
deleted file mode 100644
index 9d3b25ba0..000000000
Binary files a/rtdata/images/Dark/actions/gtk-media-stop.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-ok.png b/rtdata/images/Dark/actions/gtk-ok.png
deleted file mode 100644
index 4790895e7..000000000
Binary files a/rtdata/images/Dark/actions/gtk-ok.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-open.png b/rtdata/images/Dark/actions/gtk-open.png
deleted file mode 100644
index 6d2ea0f34..000000000
Binary files a/rtdata/images/Dark/actions/gtk-open.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-paste.png b/rtdata/images/Dark/actions/gtk-paste.png
deleted file mode 100644
index 38871deec..000000000
Binary files a/rtdata/images/Dark/actions/gtk-paste.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-preferences.png b/rtdata/images/Dark/actions/gtk-preferences.png
deleted file mode 100644
index 1d3c0f398..000000000
Binary files a/rtdata/images/Dark/actions/gtk-preferences.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-remove.png b/rtdata/images/Dark/actions/gtk-remove.png
deleted file mode 100644
index b789b5130..000000000
Binary files a/rtdata/images/Dark/actions/gtk-remove.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-save-large.png b/rtdata/images/Dark/actions/gtk-save-large.png
deleted file mode 100644
index 9b1ba463e..000000000
Binary files a/rtdata/images/Dark/actions/gtk-save-large.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-save.png b/rtdata/images/Dark/actions/gtk-save.png
deleted file mode 100644
index d72b9a2ad..000000000
Binary files a/rtdata/images/Dark/actions/gtk-save.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-undo-ltr-small.png b/rtdata/images/Dark/actions/gtk-undo-ltr-small.png
deleted file mode 100644
index b0dbf0b98..000000000
Binary files a/rtdata/images/Dark/actions/gtk-undo-ltr-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-undo-ltr.png b/rtdata/images/Dark/actions/gtk-undo-ltr.png
deleted file mode 100644
index f66791abb..000000000
Binary files a/rtdata/images/Dark/actions/gtk-undo-ltr.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-undo-rtl-small.png b/rtdata/images/Dark/actions/gtk-undo-rtl-small.png
deleted file mode 100644
index 7ef3d5f67..000000000
Binary files a/rtdata/images/Dark/actions/gtk-undo-rtl-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-undo-rtl.png b/rtdata/images/Dark/actions/gtk-undo-rtl.png
deleted file mode 100644
index 1c6fc0537..000000000
Binary files a/rtdata/images/Dark/actions/gtk-undo-rtl.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-undoall-ltr.png b/rtdata/images/Dark/actions/gtk-undoall-ltr.png
deleted file mode 100644
index 00c61c2a8..000000000
Binary files a/rtdata/images/Dark/actions/gtk-undoall-ltr.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-undoall-rtl.png b/rtdata/images/Dark/actions/gtk-undoall-rtl.png
deleted file mode 100644
index cf92a7017..000000000
Binary files a/rtdata/images/Dark/actions/gtk-undoall-rtl.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-zoom-100-small.png b/rtdata/images/Dark/actions/gtk-zoom-100-small.png
deleted file mode 100644
index 43abd73a4..000000000
Binary files a/rtdata/images/Dark/actions/gtk-zoom-100-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-zoom-100.png b/rtdata/images/Dark/actions/gtk-zoom-100.png
deleted file mode 100644
index a00a78d68..000000000
Binary files a/rtdata/images/Dark/actions/gtk-zoom-100.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-zoom-crop.png b/rtdata/images/Dark/actions/gtk-zoom-crop.png
deleted file mode 100644
index f20e826ba..000000000
Binary files a/rtdata/images/Dark/actions/gtk-zoom-crop.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-zoom-fit.png b/rtdata/images/Dark/actions/gtk-zoom-fit.png
deleted file mode 100644
index 670515eb4..000000000
Binary files a/rtdata/images/Dark/actions/gtk-zoom-fit.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-zoom-in-small.png b/rtdata/images/Dark/actions/gtk-zoom-in-small.png
deleted file mode 100644
index 291c8ecac..000000000
Binary files a/rtdata/images/Dark/actions/gtk-zoom-in-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-zoom-in.png b/rtdata/images/Dark/actions/gtk-zoom-in.png
deleted file mode 100644
index ee8688d43..000000000
Binary files a/rtdata/images/Dark/actions/gtk-zoom-in.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-zoom-out-small.png b/rtdata/images/Dark/actions/gtk-zoom-out-small.png
deleted file mode 100644
index 93b771182..000000000
Binary files a/rtdata/images/Dark/actions/gtk-zoom-out-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/gtk-zoom-out.png b/rtdata/images/Dark/actions/gtk-zoom-out.png
deleted file mode 100644
index aeec6b0fc..000000000
Binary files a/rtdata/images/Dark/actions/gtk-zoom-out.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histBar.png b/rtdata/images/Dark/actions/histBar.png
deleted file mode 100644
index 24ef6b45f..000000000
Binary files a/rtdata/images/Dark/actions/histBar.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histBarg.png b/rtdata/images/Dark/actions/histBarg.png
deleted file mode 100644
index 89d20ccff..000000000
Binary files a/rtdata/images/Dark/actions/histBarg.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histBlue.png b/rtdata/images/Dark/actions/histBlue.png
deleted file mode 100644
index 53c447a1c..000000000
Binary files a/rtdata/images/Dark/actions/histBlue.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histBlueg.png b/rtdata/images/Dark/actions/histBlueg.png
deleted file mode 100644
index ac205219d..000000000
Binary files a/rtdata/images/Dark/actions/histBlueg.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histChro.png b/rtdata/images/Dark/actions/histChro.png
deleted file mode 100644
index 021a18222..000000000
Binary files a/rtdata/images/Dark/actions/histChro.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histChrog.png b/rtdata/images/Dark/actions/histChrog.png
deleted file mode 100644
index 342311f5f..000000000
Binary files a/rtdata/images/Dark/actions/histChrog.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histFull.png b/rtdata/images/Dark/actions/histFull.png
deleted file mode 100644
index 78f9ee96c..000000000
Binary files a/rtdata/images/Dark/actions/histFull.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histFullg.png b/rtdata/images/Dark/actions/histFullg.png
deleted file mode 100644
index ffbbe1c2b..000000000
Binary files a/rtdata/images/Dark/actions/histFullg.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histGreen.png b/rtdata/images/Dark/actions/histGreen.png
deleted file mode 100644
index 54eebe37e..000000000
Binary files a/rtdata/images/Dark/actions/histGreen.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histGreeng.png b/rtdata/images/Dark/actions/histGreeng.png
deleted file mode 100644
index 33c138cae..000000000
Binary files a/rtdata/images/Dark/actions/histGreeng.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histRaw.png b/rtdata/images/Dark/actions/histRaw.png
deleted file mode 100644
index 36e1a5a31..000000000
Binary files a/rtdata/images/Dark/actions/histRaw.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histRawg.png b/rtdata/images/Dark/actions/histRawg.png
deleted file mode 100644
index 1b9d286b3..000000000
Binary files a/rtdata/images/Dark/actions/histRawg.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histRed.png b/rtdata/images/Dark/actions/histRed.png
deleted file mode 100644
index ce7fddcd3..000000000
Binary files a/rtdata/images/Dark/actions/histRed.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histRedg.png b/rtdata/images/Dark/actions/histRedg.png
deleted file mode 100644
index b75a66995..000000000
Binary files a/rtdata/images/Dark/actions/histRedg.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histValue.png b/rtdata/images/Dark/actions/histValue.png
deleted file mode 100644
index 451004889..000000000
Binary files a/rtdata/images/Dark/actions/histValue.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/histValueg.png b/rtdata/images/Dark/actions/histValueg.png
deleted file mode 100644
index 31d6f63e5..000000000
Binary files a/rtdata/images/Dark/actions/histValueg.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/image-editor.png b/rtdata/images/Dark/actions/image-editor.png
deleted file mode 100644
index cf87bc311..000000000
Binary files a/rtdata/images/Dark/actions/image-editor.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/info.png b/rtdata/images/Dark/actions/info.png
deleted file mode 100644
index 6ce41bad3..000000000
Binary files a/rtdata/images/Dark/actions/info.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/intent-absolute.png b/rtdata/images/Dark/actions/intent-absolute.png
deleted file mode 100644
index 6d274a2c0..000000000
Binary files a/rtdata/images/Dark/actions/intent-absolute.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/intent-perceptual.png b/rtdata/images/Dark/actions/intent-perceptual.png
deleted file mode 100644
index 821a714ae..000000000
Binary files a/rtdata/images/Dark/actions/intent-perceptual.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/intent-relative.png b/rtdata/images/Dark/actions/intent-relative.png
deleted file mode 100644
index d586b47b2..000000000
Binary files a/rtdata/images/Dark/actions/intent-relative.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/intent-saturation.png b/rtdata/images/Dark/actions/intent-saturation.png
deleted file mode 100644
index 0654f78b6..000000000
Binary files a/rtdata/images/Dark/actions/intent-saturation.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/list-add-small.png b/rtdata/images/Dark/actions/list-add-small.png
deleted file mode 100644
index 15002fe13..000000000
Binary files a/rtdata/images/Dark/actions/list-add-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/list-add.png b/rtdata/images/Dark/actions/list-add.png
deleted file mode 100644
index 80abd6bfd..000000000
Binary files a/rtdata/images/Dark/actions/list-add.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/list-remove-red-small.png b/rtdata/images/Dark/actions/list-remove-red-small.png
deleted file mode 100644
index 71650328f..000000000
Binary files a/rtdata/images/Dark/actions/list-remove-red-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/list-remove.png b/rtdata/images/Dark/actions/list-remove.png
deleted file mode 100644
index b789b5130..000000000
Binary files a/rtdata/images/Dark/actions/list-remove.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/lock-off.png b/rtdata/images/Dark/actions/lock-off.png
deleted file mode 100644
index c4dbfe1af..000000000
Binary files a/rtdata/images/Dark/actions/lock-off.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/lock-on.png b/rtdata/images/Dark/actions/lock-on.png
deleted file mode 100644
index 23366d571..000000000
Binary files a/rtdata/images/Dark/actions/lock-on.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/media-usb.png b/rtdata/images/Dark/actions/media-usb.png
deleted file mode 100644
index 5c46c9464..000000000
Binary files a/rtdata/images/Dark/actions/media-usb.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/meta.png b/rtdata/images/Dark/actions/meta.png
deleted file mode 100644
index 5c9c05d3f..000000000
Binary files a/rtdata/images/Dark/actions/meta.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/nav-next.png b/rtdata/images/Dark/actions/nav-next.png
deleted file mode 100644
index a3e8ed0b0..000000000
Binary files a/rtdata/images/Dark/actions/nav-next.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/nav-prev.png b/rtdata/images/Dark/actions/nav-prev.png
deleted file mode 100644
index cd621d372..000000000
Binary files a/rtdata/images/Dark/actions/nav-prev.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/nav-sync.png b/rtdata/images/Dark/actions/nav-sync.png
deleted file mode 100644
index cbad9711e..000000000
Binary files a/rtdata/images/Dark/actions/nav-sync.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/new-detail-window.png b/rtdata/images/Dark/actions/new-detail-window.png
deleted file mode 100644
index 43b39decf..000000000
Binary files a/rtdata/images/Dark/actions/new-detail-window.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/openhand.png b/rtdata/images/Dark/actions/openhand.png
deleted file mode 100644
index 66c13d890..000000000
Binary files a/rtdata/images/Dark/actions/openhand.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/panel-to-bottom.png b/rtdata/images/Dark/actions/panel-to-bottom.png
deleted file mode 100644
index 7e4905a9c..000000000
Binary files a/rtdata/images/Dark/actions/panel-to-bottom.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/panel-to-left.png b/rtdata/images/Dark/actions/panel-to-left.png
deleted file mode 100644
index 97f7494a1..000000000
Binary files a/rtdata/images/Dark/actions/panel-to-left.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/panel-to-right.png b/rtdata/images/Dark/actions/panel-to-right.png
deleted file mode 100644
index d6af36001..000000000
Binary files a/rtdata/images/Dark/actions/panel-to-right.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/panel-to-top.png b/rtdata/images/Dark/actions/panel-to-top.png
deleted file mode 100644
index d628cc598..000000000
Binary files a/rtdata/images/Dark/actions/panel-to-top.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/perspective-h1.png b/rtdata/images/Dark/actions/perspective-h1.png
deleted file mode 100644
index ea470842d..000000000
Binary files a/rtdata/images/Dark/actions/perspective-h1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/perspective-h2.png b/rtdata/images/Dark/actions/perspective-h2.png
deleted file mode 100644
index 5cd371dfc..000000000
Binary files a/rtdata/images/Dark/actions/perspective-h2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/perspective-v1.png b/rtdata/images/Dark/actions/perspective-v1.png
deleted file mode 100644
index e42755116..000000000
Binary files a/rtdata/images/Dark/actions/perspective-v1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/perspective-v2.png b/rtdata/images/Dark/actions/perspective-v2.png
deleted file mode 100644
index 489e3bd02..000000000
Binary files a/rtdata/images/Dark/actions/perspective-v2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/popuparrow.png b/rtdata/images/Dark/actions/popuparrow.png
deleted file mode 100644
index 6e67d45b4..000000000
Binary files a/rtdata/images/Dark/actions/popuparrow.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeB-off.png b/rtdata/images/Dark/actions/previewmodeB-off.png
deleted file mode 100644
index 0c9890437..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeB-off.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeB-on.png b/rtdata/images/Dark/actions/previewmodeB-on.png
deleted file mode 100644
index 466192b3a..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeB-on.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC0-off.png b/rtdata/images/Dark/actions/previewmodeBC0-off.png
deleted file mode 100644
index 28c024555..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeBC0-off.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC0-on.png b/rtdata/images/Dark/actions/previewmodeBC0-on.png
deleted file mode 100644
index f5e0b8000..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeBC0-on.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC1-off.png b/rtdata/images/Dark/actions/previewmodeBC1-off.png
deleted file mode 100644
index 4ac160b05..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeBC1-off.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC1-on.png b/rtdata/images/Dark/actions/previewmodeBC1-on.png
deleted file mode 100644
index 3e9b6874c..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeBC1-on.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC2-off.png b/rtdata/images/Dark/actions/previewmodeBC2-off.png
deleted file mode 100644
index bf3d97b2d..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeBC2-off.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC2-on.png b/rtdata/images/Dark/actions/previewmodeBC2-on.png
deleted file mode 100644
index 457453166..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeBC2-on.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC3-off.png b/rtdata/images/Dark/actions/previewmodeBC3-off.png
deleted file mode 100644
index 487ec777e..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeBC3-off.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeBC3-on.png b/rtdata/images/Dark/actions/previewmodeBC3-on.png
deleted file mode 100644
index 670b5b8b4..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeBC3-on.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeF-focusScreen-off.png b/rtdata/images/Dark/actions/previewmodeF-focusScreen-off.png
deleted file mode 100644
index 75a285de2..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeF-focusScreen-off.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeF-focusScreen-on.png b/rtdata/images/Dark/actions/previewmodeF-focusScreen-on.png
deleted file mode 100644
index 3d46dedc7..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeF-focusScreen-on.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeF-off.png b/rtdata/images/Dark/actions/previewmodeF-off.png
deleted file mode 100644
index 5d52af569..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeF-off.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeF-on.png b/rtdata/images/Dark/actions/previewmodeF-on.png
deleted file mode 100644
index f0d0ef230..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeF-on.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeG-off.png b/rtdata/images/Dark/actions/previewmodeG-off.png
deleted file mode 100644
index 5c076c989..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeG-off.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeG-on.png b/rtdata/images/Dark/actions/previewmodeG-on.png
deleted file mode 100644
index ecc75c8e7..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeG-on.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeL-off.png b/rtdata/images/Dark/actions/previewmodeL-off.png
deleted file mode 100644
index 939dec642..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeL-off.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeL-on.png b/rtdata/images/Dark/actions/previewmodeL-on.png
deleted file mode 100644
index 92fe937e8..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeL-on.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeR-off.png b/rtdata/images/Dark/actions/previewmodeR-off.png
deleted file mode 100644
index b96e22c31..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeR-off.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/previewmodeR-on.png b/rtdata/images/Dark/actions/previewmodeR-on.png
deleted file mode 100644
index fb1e46e98..000000000
Binary files a/rtdata/images/Dark/actions/previewmodeR-on.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/processing-pause.png b/rtdata/images/Dark/actions/processing-pause.png
deleted file mode 100644
index 967c4a339..000000000
Binary files a/rtdata/images/Dark/actions/processing-pause.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/processing-play.png b/rtdata/images/Dark/actions/processing-play.png
deleted file mode 100644
index d959d4a7c..000000000
Binary files a/rtdata/images/Dark/actions/processing-play.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/processing-thumbnail.png b/rtdata/images/Dark/actions/processing-thumbnail.png
deleted file mode 100644
index 15a8af3f1..000000000
Binary files a/rtdata/images/Dark/actions/processing-thumbnail.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/processing.png b/rtdata/images/Dark/actions/processing.png
deleted file mode 100644
index 78592c44a..000000000
Binary files a/rtdata/images/Dark/actions/processing.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/profile-filled.png b/rtdata/images/Dark/actions/profile-filled.png
deleted file mode 100644
index 8e39de5f2..000000000
Binary files a/rtdata/images/Dark/actions/profile-filled.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/profile-partial.png b/rtdata/images/Dark/actions/profile-partial.png
deleted file mode 100644
index 70c77fdff..000000000
Binary files a/rtdata/images/Dark/actions/profile-partial.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/rated.png b/rtdata/images/Dark/actions/rated.png
deleted file mode 100644
index ff1b949d2..000000000
Binary files a/rtdata/images/Dark/actions/rated.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ratednot.png b/rtdata/images/Dark/actions/ratednot.png
deleted file mode 100644
index 82af59b91..000000000
Binary files a/rtdata/images/Dark/actions/ratednot.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/ratednotg.png b/rtdata/images/Dark/actions/ratednotg.png
deleted file mode 100644
index 4bf6f1a0c..000000000
Binary files a/rtdata/images/Dark/actions/ratednotg.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/raw.png b/rtdata/images/Dark/actions/raw.png
deleted file mode 100644
index d42599483..000000000
Binary files a/rtdata/images/Dark/actions/raw.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/refresh-red.png b/rtdata/images/Dark/actions/refresh-red.png
deleted file mode 100644
index 8850fe544..000000000
Binary files a/rtdata/images/Dark/actions/refresh-red.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/refresh-white.png b/rtdata/images/Dark/actions/refresh-white.png
deleted file mode 100644
index 40f625275..000000000
Binary files a/rtdata/images/Dark/actions/refresh-white.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/rotate-left-1.png b/rtdata/images/Dark/actions/rotate-left-1.png
deleted file mode 100644
index 937598ca3..000000000
Binary files a/rtdata/images/Dark/actions/rotate-left-1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/rotate-left-2.png b/rtdata/images/Dark/actions/rotate-left-2.png
deleted file mode 100644
index 20b3ff5da..000000000
Binary files a/rtdata/images/Dark/actions/rotate-left-2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/rotate-left-3.png b/rtdata/images/Dark/actions/rotate-left-3.png
deleted file mode 100644
index 635a50da6..000000000
Binary files a/rtdata/images/Dark/actions/rotate-left-3.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/rotate-left.png b/rtdata/images/Dark/actions/rotate-left.png
deleted file mode 100644
index 2f28a8cff..000000000
Binary files a/rtdata/images/Dark/actions/rotate-left.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/rotate-right-1.png b/rtdata/images/Dark/actions/rotate-right-1.png
deleted file mode 100644
index 5bd9960ad..000000000
Binary files a/rtdata/images/Dark/actions/rotate-right-1.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/rotate-right-2.png b/rtdata/images/Dark/actions/rotate-right-2.png
deleted file mode 100644
index 5da99f01e..000000000
Binary files a/rtdata/images/Dark/actions/rotate-right-2.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/rotate-right-3.png b/rtdata/images/Dark/actions/rotate-right-3.png
deleted file mode 100644
index 9d2dd0e4f..000000000
Binary files a/rtdata/images/Dark/actions/rotate-right-3.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/rotate-right.png b/rtdata/images/Dark/actions/rotate-right.png
deleted file mode 100644
index b28d601c5..000000000
Binary files a/rtdata/images/Dark/actions/rotate-right.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/rtwindow.png b/rtdata/images/Dark/actions/rtwindow.png
deleted file mode 100644
index 8fcc7a7c4..000000000
Binary files a/rtdata/images/Dark/actions/rtwindow.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/softProof.png b/rtdata/images/Dark/actions/softProof.png
deleted file mode 100644
index 5f17df3ea..000000000
Binary files a/rtdata/images/Dark/actions/softProof.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/spGamutCheck.png b/rtdata/images/Dark/actions/spGamutCheck.png
deleted file mode 100644
index ab812272a..000000000
Binary files a/rtdata/images/Dark/actions/spGamutCheck.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/stock-flip-horizontal.png b/rtdata/images/Dark/actions/stock-flip-horizontal.png
deleted file mode 100644
index a963c9d6f..000000000
Binary files a/rtdata/images/Dark/actions/stock-flip-horizontal.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/stock-flip-vertical.png b/rtdata/images/Dark/actions/stock-flip-vertical.png
deleted file mode 100644
index 65779151a..000000000
Binary files a/rtdata/images/Dark/actions/stock-flip-vertical.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/stock-rotate-270.png b/rtdata/images/Dark/actions/stock-rotate-270.png
deleted file mode 100644
index cb6d50093..000000000
Binary files a/rtdata/images/Dark/actions/stock-rotate-270.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/stock-rotate-90.png b/rtdata/images/Dark/actions/stock-rotate-90.png
deleted file mode 100644
index bb697dc3a..000000000
Binary files a/rtdata/images/Dark/actions/stock-rotate-90.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/straighten-small.png b/rtdata/images/Dark/actions/straighten-small.png
deleted file mode 100644
index b7a2be89e..000000000
Binary files a/rtdata/images/Dark/actions/straighten-small.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/straighten.png b/rtdata/images/Dark/actions/straighten.png
deleted file mode 100644
index a1bfdf507..000000000
Binary files a/rtdata/images/Dark/actions/straighten.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/toleftend.png b/rtdata/images/Dark/actions/toleftend.png
deleted file mode 100644
index a37b37d41..000000000
Binary files a/rtdata/images/Dark/actions/toleftend.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/torightend.png b/rtdata/images/Dark/actions/torightend.png
deleted file mode 100644
index 3ae0d4edd..000000000
Binary files a/rtdata/images/Dark/actions/torightend.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/transform.png b/rtdata/images/Dark/actions/transform.png
deleted file mode 100644
index ed030de57..000000000
Binary files a/rtdata/images/Dark/actions/transform.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/trash-hide-deleted.png b/rtdata/images/Dark/actions/trash-hide-deleted.png
deleted file mode 100644
index 59137cf35..000000000
Binary files a/rtdata/images/Dark/actions/trash-hide-deleted.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/trash-show-empty.png b/rtdata/images/Dark/actions/trash-show-empty.png
deleted file mode 100644
index 0c5da5cda..000000000
Binary files a/rtdata/images/Dark/actions/trash-show-empty.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/trash-show-full.png b/rtdata/images/Dark/actions/trash-show-full.png
deleted file mode 100644
index cc374db46..000000000
Binary files a/rtdata/images/Dark/actions/trash-show-full.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/trash-thumbnail.png b/rtdata/images/Dark/actions/trash-thumbnail.png
deleted file mode 100644
index fad0363e0..000000000
Binary files a/rtdata/images/Dark/actions/trash-thumbnail.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/trash.png b/rtdata/images/Dark/actions/trash.png
deleted file mode 100644
index 0c5da5cda..000000000
Binary files a/rtdata/images/Dark/actions/trash.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/unchanged-18.png b/rtdata/images/Dark/actions/unchanged-18.png
deleted file mode 100644
index 9d08dda26..000000000
Binary files a/rtdata/images/Dark/actions/unchanged-18.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/unchanged-22.png b/rtdata/images/Dark/actions/unchanged-22.png
deleted file mode 100644
index db03d456a..000000000
Binary files a/rtdata/images/Dark/actions/unchanged-22.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/undelete-rtl.png b/rtdata/images/Dark/actions/undelete-rtl.png
deleted file mode 100644
index c8e052aed..000000000
Binary files a/rtdata/images/Dark/actions/undelete-rtl.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/undelete-thumbnail-rtl.png b/rtdata/images/Dark/actions/undelete-thumbnail-rtl.png
deleted file mode 100644
index adcf65e9a..000000000
Binary files a/rtdata/images/Dark/actions/undelete-thumbnail-rtl.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/undelete-thumbnail.png b/rtdata/images/Dark/actions/undelete-thumbnail.png
deleted file mode 100644
index adcf65e9a..000000000
Binary files a/rtdata/images/Dark/actions/undelete-thumbnail.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/undelete.png b/rtdata/images/Dark/actions/undelete.png
deleted file mode 100644
index c8e052aed..000000000
Binary files a/rtdata/images/Dark/actions/undelete.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/warnhl.png b/rtdata/images/Dark/actions/warnhl.png
deleted file mode 100644
index 4ca870ec5..000000000
Binary files a/rtdata/images/Dark/actions/warnhl.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/warnsh.png b/rtdata/images/Dark/actions/warnsh.png
deleted file mode 100644
index d8d558ccf..000000000
Binary files a/rtdata/images/Dark/actions/warnsh.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wavelet.png b/rtdata/images/Dark/actions/wavelet.png
deleted file mode 100644
index 97f4ce673..000000000
Binary files a/rtdata/images/Dark/actions/wavelet.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-auto.png b/rtdata/images/Dark/actions/wb-auto.png
deleted file mode 100644
index be4114604..000000000
Binary files a/rtdata/images/Dark/actions/wb-auto.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-camera.png b/rtdata/images/Dark/actions/wb-camera.png
deleted file mode 100644
index 372fd14bb..000000000
Binary files a/rtdata/images/Dark/actions/wb-camera.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-cloudy.png b/rtdata/images/Dark/actions/wb-cloudy.png
deleted file mode 100644
index cdef40096..000000000
Binary files a/rtdata/images/Dark/actions/wb-cloudy.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-custom.png b/rtdata/images/Dark/actions/wb-custom.png
deleted file mode 100644
index cc7b6ef3c..000000000
Binary files a/rtdata/images/Dark/actions/wb-custom.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-flash.png b/rtdata/images/Dark/actions/wb-flash.png
deleted file mode 100644
index e8115b3d4..000000000
Binary files a/rtdata/images/Dark/actions/wb-flash.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-fluorescent.png b/rtdata/images/Dark/actions/wb-fluorescent.png
deleted file mode 100644
index 4861c54b4..000000000
Binary files a/rtdata/images/Dark/actions/wb-fluorescent.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-lamp.png b/rtdata/images/Dark/actions/wb-lamp.png
deleted file mode 100644
index 5086e362b..000000000
Binary files a/rtdata/images/Dark/actions/wb-lamp.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-led.png b/rtdata/images/Dark/actions/wb-led.png
deleted file mode 100644
index 749b2e703..000000000
Binary files a/rtdata/images/Dark/actions/wb-led.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-shade.png b/rtdata/images/Dark/actions/wb-shade.png
deleted file mode 100644
index 3b908909c..000000000
Binary files a/rtdata/images/Dark/actions/wb-shade.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-sun.png b/rtdata/images/Dark/actions/wb-sun.png
deleted file mode 100644
index 880fd13f0..000000000
Binary files a/rtdata/images/Dark/actions/wb-sun.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-tungsten.png b/rtdata/images/Dark/actions/wb-tungsten.png
deleted file mode 100644
index 48aef24a3..000000000
Binary files a/rtdata/images/Dark/actions/wb-tungsten.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/wb-water.png b/rtdata/images/Dark/actions/wb-water.png
deleted file mode 100644
index 196869abf..000000000
Binary files a/rtdata/images/Dark/actions/wb-water.png and /dev/null differ
diff --git a/rtdata/images/Dark/actions/zoom-100-identifier.png b/rtdata/images/Dark/actions/zoom-100-identifier.png
deleted file mode 100644
index 7452d50dd..000000000
Binary files a/rtdata/images/Dark/actions/zoom-100-identifier.png and /dev/null differ
diff --git a/rtdata/images/Dark/devices/computer.png b/rtdata/images/Dark/devices/computer.png
deleted file mode 100644
index 4bd0885b7..000000000
Binary files a/rtdata/images/Dark/devices/computer.png and /dev/null differ
diff --git a/rtdata/images/Dark/devices/drive-harddisk.png b/rtdata/images/Dark/devices/drive-harddisk.png
deleted file mode 100644
index 4bd0885b7..000000000
Binary files a/rtdata/images/Dark/devices/drive-harddisk.png and /dev/null differ
diff --git a/rtdata/images/Dark/devices/drive-optical.png b/rtdata/images/Dark/devices/drive-optical.png
deleted file mode 100644
index b4d20cc2e..000000000
Binary files a/rtdata/images/Dark/devices/drive-optical.png and /dev/null differ
diff --git a/rtdata/images/Dark/devices/drive-removable-media.png b/rtdata/images/Dark/devices/drive-removable-media.png
deleted file mode 100644
index ee41f6a5c..000000000
Binary files a/rtdata/images/Dark/devices/drive-removable-media.png and /dev/null differ
diff --git a/rtdata/images/Dark/devices/gtk-cdrom.png b/rtdata/images/Dark/devices/gtk-cdrom.png
deleted file mode 100644
index b4d20cc2e..000000000
Binary files a/rtdata/images/Dark/devices/gtk-cdrom.png and /dev/null differ
diff --git a/rtdata/images/Dark/devices/media-flash.png b/rtdata/images/Dark/devices/media-flash.png
deleted file mode 100644
index 4bd0885b7..000000000
Binary files a/rtdata/images/Dark/devices/media-flash.png and /dev/null differ
diff --git a/rtdata/images/Dark/devices/media-floppy.png b/rtdata/images/Dark/devices/media-floppy.png
deleted file mode 100644
index ee41f6a5c..000000000
Binary files a/rtdata/images/Dark/devices/media-floppy.png and /dev/null differ
diff --git a/rtdata/images/Dark/devices/media-optical-bd.png b/rtdata/images/Dark/devices/media-optical-bd.png
deleted file mode 100644
index b4d20cc2e..000000000
Binary files a/rtdata/images/Dark/devices/media-optical-bd.png and /dev/null differ
diff --git a/rtdata/images/Dark/devices/media-optical-dvd.png b/rtdata/images/Dark/devices/media-optical-dvd.png
deleted file mode 100644
index b4d20cc2e..000000000
Binary files a/rtdata/images/Dark/devices/media-optical-dvd.png and /dev/null differ
diff --git a/rtdata/images/Dark/devices/media-optical.png b/rtdata/images/Dark/devices/media-optical.png
deleted file mode 100644
index b4d20cc2e..000000000
Binary files a/rtdata/images/Dark/devices/media-optical.png and /dev/null differ
diff --git a/rtdata/images/Dark/devices/media-tape.png b/rtdata/images/Dark/devices/media-tape.png
deleted file mode 100644
index 4bd0885b7..000000000
Binary files a/rtdata/images/Dark/devices/media-tape.png and /dev/null differ
diff --git a/rtdata/images/Dark/index.theme b/rtdata/images/Dark/index.theme
deleted file mode 100644
index 8912f3f5d..000000000
--- a/rtdata/images/Dark/index.theme
+++ /dev/null
@@ -1,42 +0,0 @@
-[Icon Theme]
-Name=RawTherapee-Dark
-Comment=Dark theme for RawTherapee
-Inherits=hicolor
-Example=folder
-
-Directories=actions,apps,categories,devices,emblems,places,status
-
-[actions]
-Size=22
-Context=Actions
-Type=Fixed
-
-[apps]
-Size=22
-Context=Applications
-Type=Fixed
-
-[categories]
-Size=22
-Context=Categories
-Type=Fixed
-
-[devices]
-Size=22
-Context=Devices
-Type=Fixed
-
-[emblems]
-Size=22
-Context=Emblems
-Type=Fixed
-
-[places]
-Size=22
-Context=Places
-Type=Fixed
-
-[status]
-Size=22
-Context=Status
-Type=Fixed
diff --git a/rtdata/images/Dark/places/folder.png b/rtdata/images/Dark/places/folder.png
deleted file mode 100644
index cc268ed89..000000000
Binary files a/rtdata/images/Dark/places/folder.png and /dev/null differ
diff --git a/rtdata/images/Dark/places/gtk-directory.png b/rtdata/images/Dark/places/gtk-directory.png
deleted file mode 100644
index cc268ed89..000000000
Binary files a/rtdata/images/Dark/places/gtk-directory.png and /dev/null differ
diff --git a/rtdata/images/Dark/places/user-desktop.png b/rtdata/images/Dark/places/user-desktop.png
deleted file mode 100644
index e973ac169..000000000
Binary files a/rtdata/images/Dark/places/user-desktop.png and /dev/null differ
diff --git a/rtdata/images/Dark/places/user-home.png b/rtdata/images/Dark/places/user-home.png
deleted file mode 100644
index 93d09835d..000000000
Binary files a/rtdata/images/Dark/places/user-home.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/Chanmixer-Bgamma.png b/rtdata/images/Light/actions/Chanmixer-Bgamma.png
deleted file mode 100644
index 95503a367..000000000
Binary files a/rtdata/images/Light/actions/Chanmixer-Bgamma.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/Chanmixer-Ggamma.png b/rtdata/images/Light/actions/Chanmixer-Ggamma.png
deleted file mode 100644
index 13f937ae0..000000000
Binary files a/rtdata/images/Light/actions/Chanmixer-Ggamma.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/Chanmixer-Rgamma.png b/rtdata/images/Light/actions/Chanmixer-Rgamma.png
deleted file mode 100644
index 5e423fe18..000000000
Binary files a/rtdata/images/Light/actions/Chanmixer-Rgamma.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/HDR-thumbnail.png b/rtdata/images/Light/actions/HDR-thumbnail.png
deleted file mode 100644
index 182e603e8..000000000
Binary files a/rtdata/images/Light/actions/HDR-thumbnail.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/PanelEnding.png b/rtdata/images/Light/actions/PanelEnding.png
deleted file mode 100644
index d7c3cc37d..000000000
Binary files a/rtdata/images/Light/actions/PanelEnding.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/PixelShift-thumbnail.png b/rtdata/images/Light/actions/PixelShift-thumbnail.png
deleted file mode 100644
index 4bbea1aee..000000000
Binary files a/rtdata/images/Light/actions/PixelShift-thumbnail.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/adj-black.png b/rtdata/images/Light/actions/adj-black.png
deleted file mode 100644
index bf5459fa5..000000000
Binary files a/rtdata/images/Light/actions/adj-black.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/adj-white.png b/rtdata/images/Light/actions/adj-white.png
deleted file mode 100644
index 03028934e..000000000
Binary files a/rtdata/images/Light/actions/adj-white.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ajd-ca-blue1.png b/rtdata/images/Light/actions/ajd-ca-blue1.png
deleted file mode 100644
index 7a47267df..000000000
Binary files a/rtdata/images/Light/actions/ajd-ca-blue1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ajd-ca-blue2.png b/rtdata/images/Light/actions/ajd-ca-blue2.png
deleted file mode 100644
index dfb458300..000000000
Binary files a/rtdata/images/Light/actions/ajd-ca-blue2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ajd-ca-red1.png b/rtdata/images/Light/actions/ajd-ca-red1.png
deleted file mode 100644
index 1e45c5035..000000000
Binary files a/rtdata/images/Light/actions/ajd-ca-red1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ajd-ca-red2.png b/rtdata/images/Light/actions/ajd-ca-red2.png
deleted file mode 100644
index e5da9e005..000000000
Binary files a/rtdata/images/Light/actions/ajd-ca-red2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ajd-wb-bluered1.png b/rtdata/images/Light/actions/ajd-wb-bluered1.png
deleted file mode 100644
index 3c8473451..000000000
Binary files a/rtdata/images/Light/actions/ajd-wb-bluered1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ajd-wb-bluered2.png b/rtdata/images/Light/actions/ajd-wb-bluered2.png
deleted file mode 100644
index 0f06a770e..000000000
Binary files a/rtdata/images/Light/actions/ajd-wb-bluered2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ajd-wb-green1.png b/rtdata/images/Light/actions/ajd-wb-green1.png
deleted file mode 100644
index 4f33551d6..000000000
Binary files a/rtdata/images/Light/actions/ajd-wb-green1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ajd-wb-green2.png b/rtdata/images/Light/actions/ajd-wb-green2.png
deleted file mode 100644
index a9a7e8553..000000000
Binary files a/rtdata/images/Light/actions/ajd-wb-green2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ajd-wb-temp1.png b/rtdata/images/Light/actions/ajd-wb-temp1.png
deleted file mode 100644
index 3c8473451..000000000
Binary files a/rtdata/images/Light/actions/ajd-wb-temp1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ajd-wb-temp2.png b/rtdata/images/Light/actions/ajd-wb-temp2.png
deleted file mode 100644
index 2b0c7c0ef..000000000
Binary files a/rtdata/images/Light/actions/ajd-wb-temp2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/arrow-down-small.png b/rtdata/images/Light/actions/arrow-down-small.png
deleted file mode 100644
index 21f25626c..000000000
Binary files a/rtdata/images/Light/actions/arrow-down-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/arrow-down.png b/rtdata/images/Light/actions/arrow-down.png
deleted file mode 100644
index 36c366bd3..000000000
Binary files a/rtdata/images/Light/actions/arrow-down.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/arrow-left-small.png b/rtdata/images/Light/actions/arrow-left-small.png
deleted file mode 100644
index 5dfd88f09..000000000
Binary files a/rtdata/images/Light/actions/arrow-left-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/arrow-left.png b/rtdata/images/Light/actions/arrow-left.png
deleted file mode 100644
index 711ad1016..000000000
Binary files a/rtdata/images/Light/actions/arrow-left.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/arrow-right-small.png b/rtdata/images/Light/actions/arrow-right-small.png
deleted file mode 100644
index 310e87b9c..000000000
Binary files a/rtdata/images/Light/actions/arrow-right-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/arrow-right.png b/rtdata/images/Light/actions/arrow-right.png
deleted file mode 100644
index 933e84025..000000000
Binary files a/rtdata/images/Light/actions/arrow-right.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/arrow-up-small.png b/rtdata/images/Light/actions/arrow-up-small.png
deleted file mode 100644
index 9b8884c5e..000000000
Binary files a/rtdata/images/Light/actions/arrow-up-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/arrow-up.png b/rtdata/images/Light/actions/arrow-up.png
deleted file mode 100644
index df6b022a3..000000000
Binary files a/rtdata/images/Light/actions/arrow-up.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/atom.png b/rtdata/images/Light/actions/atom.png
deleted file mode 100644
index 55feaf8d7..000000000
Binary files a/rtdata/images/Light/actions/atom.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/beforeafter.png b/rtdata/images/Light/actions/beforeafter.png
deleted file mode 100644
index cdbc49dc4..000000000
Binary files a/rtdata/images/Light/actions/beforeafter.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/cglabel0.png b/rtdata/images/Light/actions/cglabel0.png
deleted file mode 100644
index 72cb8f15b..000000000
Binary files a/rtdata/images/Light/actions/cglabel0.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/cglabel1.png b/rtdata/images/Light/actions/cglabel1.png
deleted file mode 100644
index 6337a6476..000000000
Binary files a/rtdata/images/Light/actions/cglabel1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/cglabel2.png b/rtdata/images/Light/actions/cglabel2.png
deleted file mode 100644
index a5b843c0c..000000000
Binary files a/rtdata/images/Light/actions/cglabel2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/cglabel3.png b/rtdata/images/Light/actions/cglabel3.png
deleted file mode 100644
index a3f3da7a9..000000000
Binary files a/rtdata/images/Light/actions/cglabel3.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/cglabel4.png b/rtdata/images/Light/actions/cglabel4.png
deleted file mode 100644
index 3e048f36c..000000000
Binary files a/rtdata/images/Light/actions/cglabel4.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/cglabel5.png b/rtdata/images/Light/actions/cglabel5.png
deleted file mode 100644
index 323be0cb9..000000000
Binary files a/rtdata/images/Light/actions/cglabel5.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/clabel0.png b/rtdata/images/Light/actions/clabel0.png
deleted file mode 100644
index 64de8ead0..000000000
Binary files a/rtdata/images/Light/actions/clabel0.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/clabel1.png b/rtdata/images/Light/actions/clabel1.png
deleted file mode 100644
index 73e267c2a..000000000
Binary files a/rtdata/images/Light/actions/clabel1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/clabel2.png b/rtdata/images/Light/actions/clabel2.png
deleted file mode 100644
index 3e6eca725..000000000
Binary files a/rtdata/images/Light/actions/clabel2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/clabel3.png b/rtdata/images/Light/actions/clabel3.png
deleted file mode 100644
index e291a0df6..000000000
Binary files a/rtdata/images/Light/actions/clabel3.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/clabel4.png b/rtdata/images/Light/actions/clabel4.png
deleted file mode 100644
index 89066bc43..000000000
Binary files a/rtdata/images/Light/actions/clabel4.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/clabel5.png b/rtdata/images/Light/actions/clabel5.png
deleted file mode 100644
index 9944eaf69..000000000
Binary files a/rtdata/images/Light/actions/clabel5.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/closedhand.png b/rtdata/images/Light/actions/closedhand.png
deleted file mode 100644
index a1aea95f2..000000000
Binary files a/rtdata/images/Light/actions/closedhand.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/colorPickers-hide.png b/rtdata/images/Light/actions/colorPickers-hide.png
deleted file mode 100644
index 434087f1c..000000000
Binary files a/rtdata/images/Light/actions/colorPickers-hide.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/colorPickers-show.png b/rtdata/images/Light/actions/colorPickers-show.png
deleted file mode 100644
index d93deb3eb..000000000
Binary files a/rtdata/images/Light/actions/colorPickers-show.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/colour.png b/rtdata/images/Light/actions/colour.png
deleted file mode 100644
index d473e8a0b..000000000
Binary files a/rtdata/images/Light/actions/colour.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/crop-auto.png b/rtdata/images/Light/actions/crop-auto.png
deleted file mode 100644
index a4c6c897e..000000000
Binary files a/rtdata/images/Light/actions/crop-auto.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/crop.png b/rtdata/images/Light/actions/crop.png
deleted file mode 100644
index 16ca56996..000000000
Binary files a/rtdata/images/Light/actions/crop.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/crossed-arrows-in.png b/rtdata/images/Light/actions/crossed-arrows-in.png
deleted file mode 100644
index da0e44b8b..000000000
Binary files a/rtdata/images/Light/actions/crossed-arrows-in.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/crossed-arrows-out.png b/rtdata/images/Light/actions/crossed-arrows-out.png
deleted file mode 100644
index 8bc1a8819..000000000
Binary files a/rtdata/images/Light/actions/crossed-arrows-out.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/curveType-NURBS.png b/rtdata/images/Light/actions/curveType-NURBS.png
deleted file mode 100644
index 2a025b1ba..000000000
Binary files a/rtdata/images/Light/actions/curveType-NURBS.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/curveType-controlPoints.png b/rtdata/images/Light/actions/curveType-controlPoints.png
deleted file mode 100644
index eae5a3875..000000000
Binary files a/rtdata/images/Light/actions/curveType-controlPoints.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/curveType-flatLinear.png b/rtdata/images/Light/actions/curveType-flatLinear.png
deleted file mode 100644
index 6fb01eba8..000000000
Binary files a/rtdata/images/Light/actions/curveType-flatLinear.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/curveType-linear.png b/rtdata/images/Light/actions/curveType-linear.png
deleted file mode 100644
index f58b3ab51..000000000
Binary files a/rtdata/images/Light/actions/curveType-linear.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/curveType-parametric.png b/rtdata/images/Light/actions/curveType-parametric.png
deleted file mode 100644
index 287a37ab0..000000000
Binary files a/rtdata/images/Light/actions/curveType-parametric.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/curveType-spline.png b/rtdata/images/Light/actions/curveType-spline.png
deleted file mode 100644
index e3e5e08d9..000000000
Binary files a/rtdata/images/Light/actions/curveType-spline.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/detail.png b/rtdata/images/Light/actions/detail.png
deleted file mode 100644
index 1fc314fd3..000000000
Binary files a/rtdata/images/Light/actions/detail.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/distorsion.png b/rtdata/images/Light/actions/distorsion.png
deleted file mode 100644
index 18b4a01df..000000000
Binary files a/rtdata/images/Light/actions/distorsion.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/distortion-auto.png b/rtdata/images/Light/actions/distortion-auto.png
deleted file mode 100644
index 759c8e463..000000000
Binary files a/rtdata/images/Light/actions/distortion-auto.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/distortion-barrel.png b/rtdata/images/Light/actions/distortion-barrel.png
deleted file mode 100644
index 836be0ac2..000000000
Binary files a/rtdata/images/Light/actions/distortion-barrel.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/distortion-pincushion.png b/rtdata/images/Light/actions/distortion-pincushion.png
deleted file mode 100644
index f64574151..000000000
Binary files a/rtdata/images/Light/actions/distortion-pincushion.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/document-open-recent.png b/rtdata/images/Light/actions/document-open-recent.png
deleted file mode 100644
index 5ef8724f2..000000000
Binary files a/rtdata/images/Light/actions/document-open-recent.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/document-open.png b/rtdata/images/Light/actions/document-open.png
deleted file mode 100644
index f7b57849a..000000000
Binary files a/rtdata/images/Light/actions/document-open.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/edit-copy.png b/rtdata/images/Light/actions/edit-copy.png
deleted file mode 100644
index 12e49387f..000000000
Binary files a/rtdata/images/Light/actions/edit-copy.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/edit-find.png b/rtdata/images/Light/actions/edit-find.png
deleted file mode 100644
index d15687e7d..000000000
Binary files a/rtdata/images/Light/actions/edit-find.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/edit-paste.png b/rtdata/images/Light/actions/edit-paste.png
deleted file mode 100644
index d7e924562..000000000
Binary files a/rtdata/images/Light/actions/edit-paste.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/edited-small.png b/rtdata/images/Light/actions/edited-small.png
deleted file mode 100644
index f25997a59..000000000
Binary files a/rtdata/images/Light/actions/edited-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/edited.png b/rtdata/images/Light/actions/edited.png
deleted file mode 100644
index 95d058454..000000000
Binary files a/rtdata/images/Light/actions/edited.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/editedg-small.png b/rtdata/images/Light/actions/editedg-small.png
deleted file mode 100644
index 9eb229e75..000000000
Binary files a/rtdata/images/Light/actions/editedg-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/editednot-small.png b/rtdata/images/Light/actions/editednot-small.png
deleted file mode 100644
index 410bff81b..000000000
Binary files a/rtdata/images/Light/actions/editednot-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/editednotg-small.png b/rtdata/images/Light/actions/editednotg-small.png
deleted file mode 100644
index 55bc28f2b..000000000
Binary files a/rtdata/images/Light/actions/editednotg-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/editmodehand.png b/rtdata/images/Light/actions/editmodehand.png
deleted file mode 100644
index a3ec816bb..000000000
Binary files a/rtdata/images/Light/actions/editmodehand.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/equalizer-narrow.png b/rtdata/images/Light/actions/equalizer-narrow.png
deleted file mode 100644
index c9e2c5b26..000000000
Binary files a/rtdata/images/Light/actions/equalizer-narrow.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/equalizer-wide.png b/rtdata/images/Light/actions/equalizer-wide.png
deleted file mode 100644
index f5b0aca68..000000000
Binary files a/rtdata/images/Light/actions/equalizer-wide.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/expanderClosed.png b/rtdata/images/Light/actions/expanderClosed.png
deleted file mode 100644
index 81a7d85ab..000000000
Binary files a/rtdata/images/Light/actions/expanderClosed.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/expanderDisabled.png b/rtdata/images/Light/actions/expanderDisabled.png
deleted file mode 100644
index 8fcef1b01..000000000
Binary files a/rtdata/images/Light/actions/expanderDisabled.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/expanderEnabled.png b/rtdata/images/Light/actions/expanderEnabled.png
deleted file mode 100644
index 7e2006eb3..000000000
Binary files a/rtdata/images/Light/actions/expanderEnabled.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/expanderInconsistent.png b/rtdata/images/Light/actions/expanderInconsistent.png
deleted file mode 100644
index 3c2339b60..000000000
Binary files a/rtdata/images/Light/actions/expanderInconsistent.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/expanderOpened.png b/rtdata/images/Light/actions/expanderOpened.png
deleted file mode 100644
index 5b003e3f7..000000000
Binary files a/rtdata/images/Light/actions/expanderOpened.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/exposure.png b/rtdata/images/Light/actions/exposure.png
deleted file mode 100644
index 8675d8e15..000000000
Binary files a/rtdata/images/Light/actions/exposure.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/filter-original-1.png b/rtdata/images/Light/actions/filter-original-1.png
deleted file mode 100644
index 2daef11fb..000000000
Binary files a/rtdata/images/Light/actions/filter-original-1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/filter-original-2.png b/rtdata/images/Light/actions/filter-original-2.png
deleted file mode 100644
index 37727f3be..000000000
Binary files a/rtdata/images/Light/actions/filter-original-2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/filter.png b/rtdata/images/Light/actions/filter.png
deleted file mode 100644
index 7c69d18ee..000000000
Binary files a/rtdata/images/Light/actions/filter.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/filterclear.png b/rtdata/images/Light/actions/filterclear.png
deleted file mode 100644
index bd4f651f8..000000000
Binary files a/rtdata/images/Light/actions/filterclear.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/fullscreen-exit.png b/rtdata/images/Light/actions/fullscreen-exit.png
deleted file mode 100644
index 01df3044c..000000000
Binary files a/rtdata/images/Light/actions/fullscreen-exit.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/fullscreen.png b/rtdata/images/Light/actions/fullscreen.png
deleted file mode 100644
index e08067584..000000000
Binary files a/rtdata/images/Light/actions/fullscreen.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gamut-hist.png b/rtdata/images/Light/actions/gamut-hist.png
deleted file mode 100644
index 8c81e0213..000000000
Binary files a/rtdata/images/Light/actions/gamut-hist.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gamut-softproof.png b/rtdata/images/Light/actions/gamut-softproof.png
deleted file mode 100644
index e745d8dd6..000000000
Binary files a/rtdata/images/Light/actions/gamut-softproof.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gamut-warning.png b/rtdata/images/Light/actions/gamut-warning.png
deleted file mode 100644
index cbbf89a56..000000000
Binary files a/rtdata/images/Light/actions/gamut-warning.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/grayrated.png b/rtdata/images/Light/actions/grayrated.png
deleted file mode 100644
index 813af1cee..000000000
Binary files a/rtdata/images/Light/actions/grayrated.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-add.png b/rtdata/images/Light/actions/gtk-add.png
deleted file mode 100644
index 9a982056c..000000000
Binary files a/rtdata/images/Light/actions/gtk-add.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-apply.png b/rtdata/images/Light/actions/gtk-apply.png
deleted file mode 100644
index e1224bca3..000000000
Binary files a/rtdata/images/Light/actions/gtk-apply.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-cancel.png b/rtdata/images/Light/actions/gtk-cancel.png
deleted file mode 100644
index 65740aaf1..000000000
Binary files a/rtdata/images/Light/actions/gtk-cancel.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-close-small.png b/rtdata/images/Light/actions/gtk-close-small.png
deleted file mode 100644
index ef2ac03d8..000000000
Binary files a/rtdata/images/Light/actions/gtk-close-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-close.png b/rtdata/images/Light/actions/gtk-close.png
deleted file mode 100644
index 65740aaf1..000000000
Binary files a/rtdata/images/Light/actions/gtk-close.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-color-picker-add.png b/rtdata/images/Light/actions/gtk-color-picker-add.png
deleted file mode 100644
index 01d2b6a0b..000000000
Binary files a/rtdata/images/Light/actions/gtk-color-picker-add.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-color-picker-small.png b/rtdata/images/Light/actions/gtk-color-picker-small.png
deleted file mode 100644
index 834848607..000000000
Binary files a/rtdata/images/Light/actions/gtk-color-picker-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-color-picker.png b/rtdata/images/Light/actions/gtk-color-picker.png
deleted file mode 100644
index f2fbc5cf9..000000000
Binary files a/rtdata/images/Light/actions/gtk-color-picker.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-copy.png b/rtdata/images/Light/actions/gtk-copy.png
deleted file mode 100644
index 12e49387f..000000000
Binary files a/rtdata/images/Light/actions/gtk-copy.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-edit.png b/rtdata/images/Light/actions/gtk-edit.png
deleted file mode 100644
index d76e57227..000000000
Binary files a/rtdata/images/Light/actions/gtk-edit.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-find.png b/rtdata/images/Light/actions/gtk-find.png
deleted file mode 100644
index d15687e7d..000000000
Binary files a/rtdata/images/Light/actions/gtk-find.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-media-play.png b/rtdata/images/Light/actions/gtk-media-play.png
deleted file mode 100644
index 2f97b3fec..000000000
Binary files a/rtdata/images/Light/actions/gtk-media-play.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-media-stop.png b/rtdata/images/Light/actions/gtk-media-stop.png
deleted file mode 100644
index ea1b0e8a1..000000000
Binary files a/rtdata/images/Light/actions/gtk-media-stop.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-ok.png b/rtdata/images/Light/actions/gtk-ok.png
deleted file mode 100644
index e1224bca3..000000000
Binary files a/rtdata/images/Light/actions/gtk-ok.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-open.png b/rtdata/images/Light/actions/gtk-open.png
deleted file mode 100644
index f7b57849a..000000000
Binary files a/rtdata/images/Light/actions/gtk-open.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-paste.png b/rtdata/images/Light/actions/gtk-paste.png
deleted file mode 100644
index d7e924562..000000000
Binary files a/rtdata/images/Light/actions/gtk-paste.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-preferences.png b/rtdata/images/Light/actions/gtk-preferences.png
deleted file mode 100644
index edb354e1a..000000000
Binary files a/rtdata/images/Light/actions/gtk-preferences.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-remove.png b/rtdata/images/Light/actions/gtk-remove.png
deleted file mode 100644
index f198bce68..000000000
Binary files a/rtdata/images/Light/actions/gtk-remove.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-save-large.png b/rtdata/images/Light/actions/gtk-save-large.png
deleted file mode 100644
index a55dfe04c..000000000
Binary files a/rtdata/images/Light/actions/gtk-save-large.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-save.png b/rtdata/images/Light/actions/gtk-save.png
deleted file mode 100644
index 64f9e44a2..000000000
Binary files a/rtdata/images/Light/actions/gtk-save.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-undo-ltr-small.png b/rtdata/images/Light/actions/gtk-undo-ltr-small.png
deleted file mode 100644
index 86d0fa28f..000000000
Binary files a/rtdata/images/Light/actions/gtk-undo-ltr-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-undo-ltr.png b/rtdata/images/Light/actions/gtk-undo-ltr.png
deleted file mode 100644
index ee15060e9..000000000
Binary files a/rtdata/images/Light/actions/gtk-undo-ltr.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-undo-rtl-small.png b/rtdata/images/Light/actions/gtk-undo-rtl-small.png
deleted file mode 100644
index f8b4d4586..000000000
Binary files a/rtdata/images/Light/actions/gtk-undo-rtl-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-undo-rtl.png b/rtdata/images/Light/actions/gtk-undo-rtl.png
deleted file mode 100644
index 22c6f2212..000000000
Binary files a/rtdata/images/Light/actions/gtk-undo-rtl.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-undoall-ltr.png b/rtdata/images/Light/actions/gtk-undoall-ltr.png
deleted file mode 100644
index dca3f3d01..000000000
Binary files a/rtdata/images/Light/actions/gtk-undoall-ltr.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-undoall-rtl.png b/rtdata/images/Light/actions/gtk-undoall-rtl.png
deleted file mode 100644
index ac051c8e6..000000000
Binary files a/rtdata/images/Light/actions/gtk-undoall-rtl.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-zoom-100-small.png b/rtdata/images/Light/actions/gtk-zoom-100-small.png
deleted file mode 100644
index 23e694f6e..000000000
Binary files a/rtdata/images/Light/actions/gtk-zoom-100-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-zoom-100.png b/rtdata/images/Light/actions/gtk-zoom-100.png
deleted file mode 100644
index 656274a75..000000000
Binary files a/rtdata/images/Light/actions/gtk-zoom-100.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-zoom-crop.png b/rtdata/images/Light/actions/gtk-zoom-crop.png
deleted file mode 100644
index c83bac4fe..000000000
Binary files a/rtdata/images/Light/actions/gtk-zoom-crop.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-zoom-fit.png b/rtdata/images/Light/actions/gtk-zoom-fit.png
deleted file mode 100644
index 7f3452eed..000000000
Binary files a/rtdata/images/Light/actions/gtk-zoom-fit.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-zoom-in-small.png b/rtdata/images/Light/actions/gtk-zoom-in-small.png
deleted file mode 100644
index f5e381ca8..000000000
Binary files a/rtdata/images/Light/actions/gtk-zoom-in-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-zoom-in.png b/rtdata/images/Light/actions/gtk-zoom-in.png
deleted file mode 100644
index 0cafb1e36..000000000
Binary files a/rtdata/images/Light/actions/gtk-zoom-in.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-zoom-out-small.png b/rtdata/images/Light/actions/gtk-zoom-out-small.png
deleted file mode 100644
index 4605917bc..000000000
Binary files a/rtdata/images/Light/actions/gtk-zoom-out-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/gtk-zoom-out.png b/rtdata/images/Light/actions/gtk-zoom-out.png
deleted file mode 100644
index f3d914d93..000000000
Binary files a/rtdata/images/Light/actions/gtk-zoom-out.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histBar.png b/rtdata/images/Light/actions/histBar.png
deleted file mode 100644
index 84bbecad8..000000000
Binary files a/rtdata/images/Light/actions/histBar.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histBarg.png b/rtdata/images/Light/actions/histBarg.png
deleted file mode 100644
index 789ee931c..000000000
Binary files a/rtdata/images/Light/actions/histBarg.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histBlue.png b/rtdata/images/Light/actions/histBlue.png
deleted file mode 100644
index 53c447a1c..000000000
Binary files a/rtdata/images/Light/actions/histBlue.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histBlueg.png b/rtdata/images/Light/actions/histBlueg.png
deleted file mode 100644
index ac205219d..000000000
Binary files a/rtdata/images/Light/actions/histBlueg.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histChro.png b/rtdata/images/Light/actions/histChro.png
deleted file mode 100644
index efbf75aa5..000000000
Binary files a/rtdata/images/Light/actions/histChro.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histChrog.png b/rtdata/images/Light/actions/histChrog.png
deleted file mode 100644
index 8349d5089..000000000
Binary files a/rtdata/images/Light/actions/histChrog.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histFull.png b/rtdata/images/Light/actions/histFull.png
deleted file mode 100644
index edabaa2bd..000000000
Binary files a/rtdata/images/Light/actions/histFull.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histFullg.png b/rtdata/images/Light/actions/histFullg.png
deleted file mode 100644
index ce3cf8ddc..000000000
Binary files a/rtdata/images/Light/actions/histFullg.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histGreen.png b/rtdata/images/Light/actions/histGreen.png
deleted file mode 100644
index 54eebe37e..000000000
Binary files a/rtdata/images/Light/actions/histGreen.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histGreeng.png b/rtdata/images/Light/actions/histGreeng.png
deleted file mode 100644
index 33c138cae..000000000
Binary files a/rtdata/images/Light/actions/histGreeng.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histRaw.png b/rtdata/images/Light/actions/histRaw.png
deleted file mode 100644
index 36e1a5a31..000000000
Binary files a/rtdata/images/Light/actions/histRaw.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histRawg.png b/rtdata/images/Light/actions/histRawg.png
deleted file mode 100644
index 1b9d286b3..000000000
Binary files a/rtdata/images/Light/actions/histRawg.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histRed.png b/rtdata/images/Light/actions/histRed.png
deleted file mode 100644
index ce7fddcd3..000000000
Binary files a/rtdata/images/Light/actions/histRed.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histRedg.png b/rtdata/images/Light/actions/histRedg.png
deleted file mode 100644
index b75a66995..000000000
Binary files a/rtdata/images/Light/actions/histRedg.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histValue.png b/rtdata/images/Light/actions/histValue.png
deleted file mode 100644
index 7f807ec9b..000000000
Binary files a/rtdata/images/Light/actions/histValue.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/histValueg.png b/rtdata/images/Light/actions/histValueg.png
deleted file mode 100644
index 28f5dbe18..000000000
Binary files a/rtdata/images/Light/actions/histValueg.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/image-editor.png b/rtdata/images/Light/actions/image-editor.png
deleted file mode 100644
index 3061ad89e..000000000
Binary files a/rtdata/images/Light/actions/image-editor.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/info.png b/rtdata/images/Light/actions/info.png
deleted file mode 100644
index db3f654de..000000000
Binary files a/rtdata/images/Light/actions/info.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/intent-absolute.png b/rtdata/images/Light/actions/intent-absolute.png
deleted file mode 100644
index fb5919181..000000000
Binary files a/rtdata/images/Light/actions/intent-absolute.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/intent-perceptual.png b/rtdata/images/Light/actions/intent-perceptual.png
deleted file mode 100644
index 88de7b5e9..000000000
Binary files a/rtdata/images/Light/actions/intent-perceptual.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/intent-relative.png b/rtdata/images/Light/actions/intent-relative.png
deleted file mode 100644
index f952f4ab7..000000000
Binary files a/rtdata/images/Light/actions/intent-relative.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/intent-saturation.png b/rtdata/images/Light/actions/intent-saturation.png
deleted file mode 100644
index 92908b030..000000000
Binary files a/rtdata/images/Light/actions/intent-saturation.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/list-add-small.png b/rtdata/images/Light/actions/list-add-small.png
deleted file mode 100644
index 9d06f0303..000000000
Binary files a/rtdata/images/Light/actions/list-add-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/list-add.png b/rtdata/images/Light/actions/list-add.png
deleted file mode 100644
index 9a982056c..000000000
Binary files a/rtdata/images/Light/actions/list-add.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/list-remove-red-small.png b/rtdata/images/Light/actions/list-remove-red-small.png
deleted file mode 100644
index 866a2b2d2..000000000
Binary files a/rtdata/images/Light/actions/list-remove-red-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/list-remove.png b/rtdata/images/Light/actions/list-remove.png
deleted file mode 100644
index f198bce68..000000000
Binary files a/rtdata/images/Light/actions/list-remove.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/lock-off.png b/rtdata/images/Light/actions/lock-off.png
deleted file mode 100644
index af4489e34..000000000
Binary files a/rtdata/images/Light/actions/lock-off.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/lock-on.png b/rtdata/images/Light/actions/lock-on.png
deleted file mode 100644
index 3c664e73e..000000000
Binary files a/rtdata/images/Light/actions/lock-on.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/media-usb.png b/rtdata/images/Light/actions/media-usb.png
deleted file mode 100644
index e8b990a03..000000000
Binary files a/rtdata/images/Light/actions/media-usb.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/meta.png b/rtdata/images/Light/actions/meta.png
deleted file mode 100644
index a2f61665a..000000000
Binary files a/rtdata/images/Light/actions/meta.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/nav-next.png b/rtdata/images/Light/actions/nav-next.png
deleted file mode 100644
index d68e1df60..000000000
Binary files a/rtdata/images/Light/actions/nav-next.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/nav-prev.png b/rtdata/images/Light/actions/nav-prev.png
deleted file mode 100644
index ad37367ba..000000000
Binary files a/rtdata/images/Light/actions/nav-prev.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/nav-sync.png b/rtdata/images/Light/actions/nav-sync.png
deleted file mode 100644
index eb8445a40..000000000
Binary files a/rtdata/images/Light/actions/nav-sync.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/new-detail-window.png b/rtdata/images/Light/actions/new-detail-window.png
deleted file mode 100644
index 23ae12faf..000000000
Binary files a/rtdata/images/Light/actions/new-detail-window.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/openhand.png b/rtdata/images/Light/actions/openhand.png
deleted file mode 100644
index 28da9e5e6..000000000
Binary files a/rtdata/images/Light/actions/openhand.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/panel-to-bottom.png b/rtdata/images/Light/actions/panel-to-bottom.png
deleted file mode 100644
index cc3b45b64..000000000
Binary files a/rtdata/images/Light/actions/panel-to-bottom.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/panel-to-left.png b/rtdata/images/Light/actions/panel-to-left.png
deleted file mode 100644
index 2562b8f00..000000000
Binary files a/rtdata/images/Light/actions/panel-to-left.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/panel-to-right.png b/rtdata/images/Light/actions/panel-to-right.png
deleted file mode 100644
index 3e05a3813..000000000
Binary files a/rtdata/images/Light/actions/panel-to-right.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/panel-to-top.png b/rtdata/images/Light/actions/panel-to-top.png
deleted file mode 100644
index ff453efac..000000000
Binary files a/rtdata/images/Light/actions/panel-to-top.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/perspective-h1.png b/rtdata/images/Light/actions/perspective-h1.png
deleted file mode 100644
index c857a1df5..000000000
Binary files a/rtdata/images/Light/actions/perspective-h1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/perspective-h2.png b/rtdata/images/Light/actions/perspective-h2.png
deleted file mode 100644
index 0fb23ea9c..000000000
Binary files a/rtdata/images/Light/actions/perspective-h2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/perspective-v1.png b/rtdata/images/Light/actions/perspective-v1.png
deleted file mode 100644
index eb94f4b9b..000000000
Binary files a/rtdata/images/Light/actions/perspective-v1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/perspective-v2.png b/rtdata/images/Light/actions/perspective-v2.png
deleted file mode 100644
index 1b983a78d..000000000
Binary files a/rtdata/images/Light/actions/perspective-v2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/popuparrow.png b/rtdata/images/Light/actions/popuparrow.png
deleted file mode 100644
index ba3956421..000000000
Binary files a/rtdata/images/Light/actions/popuparrow.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeB-off.png b/rtdata/images/Light/actions/previewmodeB-off.png
deleted file mode 100644
index 0c9890437..000000000
Binary files a/rtdata/images/Light/actions/previewmodeB-off.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeB-on.png b/rtdata/images/Light/actions/previewmodeB-on.png
deleted file mode 100644
index 466192b3a..000000000
Binary files a/rtdata/images/Light/actions/previewmodeB-on.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeBC0-off.png b/rtdata/images/Light/actions/previewmodeBC0-off.png
deleted file mode 100644
index 28c024555..000000000
Binary files a/rtdata/images/Light/actions/previewmodeBC0-off.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeBC0-on.png b/rtdata/images/Light/actions/previewmodeBC0-on.png
deleted file mode 100644
index f5e0b8000..000000000
Binary files a/rtdata/images/Light/actions/previewmodeBC0-on.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeBC1-off.png b/rtdata/images/Light/actions/previewmodeBC1-off.png
deleted file mode 100644
index 4ac160b05..000000000
Binary files a/rtdata/images/Light/actions/previewmodeBC1-off.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeBC1-on.png b/rtdata/images/Light/actions/previewmodeBC1-on.png
deleted file mode 100644
index 3e9b6874c..000000000
Binary files a/rtdata/images/Light/actions/previewmodeBC1-on.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeBC2-off.png b/rtdata/images/Light/actions/previewmodeBC2-off.png
deleted file mode 100644
index bf3d97b2d..000000000
Binary files a/rtdata/images/Light/actions/previewmodeBC2-off.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeBC2-on.png b/rtdata/images/Light/actions/previewmodeBC2-on.png
deleted file mode 100644
index 457453166..000000000
Binary files a/rtdata/images/Light/actions/previewmodeBC2-on.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeBC3-off.png b/rtdata/images/Light/actions/previewmodeBC3-off.png
deleted file mode 100644
index 487ec777e..000000000
Binary files a/rtdata/images/Light/actions/previewmodeBC3-off.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeBC3-on.png b/rtdata/images/Light/actions/previewmodeBC3-on.png
deleted file mode 100644
index 670b5b8b4..000000000
Binary files a/rtdata/images/Light/actions/previewmodeBC3-on.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeF-focusScreen-off.png b/rtdata/images/Light/actions/previewmodeF-focusScreen-off.png
deleted file mode 100644
index 0aa81a705..000000000
Binary files a/rtdata/images/Light/actions/previewmodeF-focusScreen-off.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeF-focusScreen-on.png b/rtdata/images/Light/actions/previewmodeF-focusScreen-on.png
deleted file mode 100644
index 3d46dedc7..000000000
Binary files a/rtdata/images/Light/actions/previewmodeF-focusScreen-on.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeF-off.png b/rtdata/images/Light/actions/previewmodeF-off.png
deleted file mode 100644
index 5d52af569..000000000
Binary files a/rtdata/images/Light/actions/previewmodeF-off.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeF-on.png b/rtdata/images/Light/actions/previewmodeF-on.png
deleted file mode 100644
index f0d0ef230..000000000
Binary files a/rtdata/images/Light/actions/previewmodeF-on.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeG-off.png b/rtdata/images/Light/actions/previewmodeG-off.png
deleted file mode 100644
index 5c076c989..000000000
Binary files a/rtdata/images/Light/actions/previewmodeG-off.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeG-on.png b/rtdata/images/Light/actions/previewmodeG-on.png
deleted file mode 100644
index ecc75c8e7..000000000
Binary files a/rtdata/images/Light/actions/previewmodeG-on.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeL-off.png b/rtdata/images/Light/actions/previewmodeL-off.png
deleted file mode 100644
index 939dec642..000000000
Binary files a/rtdata/images/Light/actions/previewmodeL-off.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeL-on.png b/rtdata/images/Light/actions/previewmodeL-on.png
deleted file mode 100644
index 92fe937e8..000000000
Binary files a/rtdata/images/Light/actions/previewmodeL-on.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeR-off.png b/rtdata/images/Light/actions/previewmodeR-off.png
deleted file mode 100644
index b96e22c31..000000000
Binary files a/rtdata/images/Light/actions/previewmodeR-off.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/previewmodeR-on.png b/rtdata/images/Light/actions/previewmodeR-on.png
deleted file mode 100644
index fb1e46e98..000000000
Binary files a/rtdata/images/Light/actions/previewmodeR-on.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/processing-pause.png b/rtdata/images/Light/actions/processing-pause.png
deleted file mode 100644
index 36660d7e6..000000000
Binary files a/rtdata/images/Light/actions/processing-pause.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/processing-play.png b/rtdata/images/Light/actions/processing-play.png
deleted file mode 100644
index 5e1acbac7..000000000
Binary files a/rtdata/images/Light/actions/processing-play.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/processing-thumbnail.png b/rtdata/images/Light/actions/processing-thumbnail.png
deleted file mode 100644
index c95ce2ffa..000000000
Binary files a/rtdata/images/Light/actions/processing-thumbnail.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/processing.png b/rtdata/images/Light/actions/processing.png
deleted file mode 100644
index 28a598856..000000000
Binary files a/rtdata/images/Light/actions/processing.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/profile-filled.png b/rtdata/images/Light/actions/profile-filled.png
deleted file mode 100644
index 7e5ae44bf..000000000
Binary files a/rtdata/images/Light/actions/profile-filled.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/profile-partial.png b/rtdata/images/Light/actions/profile-partial.png
deleted file mode 100644
index 9bb666ae3..000000000
Binary files a/rtdata/images/Light/actions/profile-partial.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/rated.png b/rtdata/images/Light/actions/rated.png
deleted file mode 100644
index 6b238da70..000000000
Binary files a/rtdata/images/Light/actions/rated.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ratednot.png b/rtdata/images/Light/actions/ratednot.png
deleted file mode 100644
index 33bc1935f..000000000
Binary files a/rtdata/images/Light/actions/ratednot.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/ratednotg.png b/rtdata/images/Light/actions/ratednotg.png
deleted file mode 100644
index ff55f1646..000000000
Binary files a/rtdata/images/Light/actions/ratednotg.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/raw.png b/rtdata/images/Light/actions/raw.png
deleted file mode 100644
index bf3e8f631..000000000
Binary files a/rtdata/images/Light/actions/raw.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/refresh-red.png b/rtdata/images/Light/actions/refresh-red.png
deleted file mode 100644
index 157c4bd70..000000000
Binary files a/rtdata/images/Light/actions/refresh-red.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/refresh-white.png b/rtdata/images/Light/actions/refresh-white.png
deleted file mode 100644
index 4536ce00d..000000000
Binary files a/rtdata/images/Light/actions/refresh-white.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/rotate-left-1.png b/rtdata/images/Light/actions/rotate-left-1.png
deleted file mode 100644
index 869c9ed4a..000000000
Binary files a/rtdata/images/Light/actions/rotate-left-1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/rotate-left-2.png b/rtdata/images/Light/actions/rotate-left-2.png
deleted file mode 100644
index 7aa5bd1ba..000000000
Binary files a/rtdata/images/Light/actions/rotate-left-2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/rotate-left-3.png b/rtdata/images/Light/actions/rotate-left-3.png
deleted file mode 100644
index 5bf87bb2b..000000000
Binary files a/rtdata/images/Light/actions/rotate-left-3.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/rotate-left.png b/rtdata/images/Light/actions/rotate-left.png
deleted file mode 100644
index f3851ba12..000000000
Binary files a/rtdata/images/Light/actions/rotate-left.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/rotate-right-1.png b/rtdata/images/Light/actions/rotate-right-1.png
deleted file mode 100644
index 9d4d477cb..000000000
Binary files a/rtdata/images/Light/actions/rotate-right-1.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/rotate-right-2.png b/rtdata/images/Light/actions/rotate-right-2.png
deleted file mode 100644
index bb4d98c66..000000000
Binary files a/rtdata/images/Light/actions/rotate-right-2.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/rotate-right-3.png b/rtdata/images/Light/actions/rotate-right-3.png
deleted file mode 100644
index 4bf41091c..000000000
Binary files a/rtdata/images/Light/actions/rotate-right-3.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/rotate-right.png b/rtdata/images/Light/actions/rotate-right.png
deleted file mode 100644
index f9a728b8a..000000000
Binary files a/rtdata/images/Light/actions/rotate-right.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/rtwindow.png b/rtdata/images/Light/actions/rtwindow.png
deleted file mode 100644
index 19dfa521a..000000000
Binary files a/rtdata/images/Light/actions/rtwindow.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/softProof.png b/rtdata/images/Light/actions/softProof.png
deleted file mode 100644
index 3e5eb2f18..000000000
Binary files a/rtdata/images/Light/actions/softProof.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/spGamutCheck.png b/rtdata/images/Light/actions/spGamutCheck.png
deleted file mode 100644
index b1ae3e423..000000000
Binary files a/rtdata/images/Light/actions/spGamutCheck.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/stock-flip-horizontal.png b/rtdata/images/Light/actions/stock-flip-horizontal.png
deleted file mode 100644
index af8b4ac95..000000000
Binary files a/rtdata/images/Light/actions/stock-flip-horizontal.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/stock-flip-vertical.png b/rtdata/images/Light/actions/stock-flip-vertical.png
deleted file mode 100644
index baf393fed..000000000
Binary files a/rtdata/images/Light/actions/stock-flip-vertical.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/stock-rotate-270.png b/rtdata/images/Light/actions/stock-rotate-270.png
deleted file mode 100644
index ae46db66d..000000000
Binary files a/rtdata/images/Light/actions/stock-rotate-270.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/stock-rotate-90.png b/rtdata/images/Light/actions/stock-rotate-90.png
deleted file mode 100644
index a125fe413..000000000
Binary files a/rtdata/images/Light/actions/stock-rotate-90.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/straighten-small.png b/rtdata/images/Light/actions/straighten-small.png
deleted file mode 100644
index 5090d70f9..000000000
Binary files a/rtdata/images/Light/actions/straighten-small.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/straighten.png b/rtdata/images/Light/actions/straighten.png
deleted file mode 100644
index 3810c5e8a..000000000
Binary files a/rtdata/images/Light/actions/straighten.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/toleftend.png b/rtdata/images/Light/actions/toleftend.png
deleted file mode 100644
index 3fae3eae5..000000000
Binary files a/rtdata/images/Light/actions/toleftend.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/torightend.png b/rtdata/images/Light/actions/torightend.png
deleted file mode 100644
index a6b33af2d..000000000
Binary files a/rtdata/images/Light/actions/torightend.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/transform.png b/rtdata/images/Light/actions/transform.png
deleted file mode 100644
index 48f23e0b6..000000000
Binary files a/rtdata/images/Light/actions/transform.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/trash-hide-deleted.png b/rtdata/images/Light/actions/trash-hide-deleted.png
deleted file mode 100644
index 95aaecdba..000000000
Binary files a/rtdata/images/Light/actions/trash-hide-deleted.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/trash-show-empty.png b/rtdata/images/Light/actions/trash-show-empty.png
deleted file mode 100644
index dd35e4b30..000000000
Binary files a/rtdata/images/Light/actions/trash-show-empty.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/trash-show-full.png b/rtdata/images/Light/actions/trash-show-full.png
deleted file mode 100644
index fd6eff338..000000000
Binary files a/rtdata/images/Light/actions/trash-show-full.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/trash-thumbnail.png b/rtdata/images/Light/actions/trash-thumbnail.png
deleted file mode 100644
index 4adf53ebf..000000000
Binary files a/rtdata/images/Light/actions/trash-thumbnail.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/trash.png b/rtdata/images/Light/actions/trash.png
deleted file mode 100644
index dd35e4b30..000000000
Binary files a/rtdata/images/Light/actions/trash.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/unchanged-18.png b/rtdata/images/Light/actions/unchanged-18.png
deleted file mode 100644
index 9d08dda26..000000000
Binary files a/rtdata/images/Light/actions/unchanged-18.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/unchanged-22.png b/rtdata/images/Light/actions/unchanged-22.png
deleted file mode 100644
index db03d456a..000000000
Binary files a/rtdata/images/Light/actions/unchanged-22.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/undelete-rtl.png b/rtdata/images/Light/actions/undelete-rtl.png
deleted file mode 100644
index 27f273bd6..000000000
Binary files a/rtdata/images/Light/actions/undelete-rtl.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/undelete-thumbnail-rtl.png b/rtdata/images/Light/actions/undelete-thumbnail-rtl.png
deleted file mode 100644
index 7c26653a8..000000000
Binary files a/rtdata/images/Light/actions/undelete-thumbnail-rtl.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/undelete-thumbnail.png b/rtdata/images/Light/actions/undelete-thumbnail.png
deleted file mode 100644
index 7c26653a8..000000000
Binary files a/rtdata/images/Light/actions/undelete-thumbnail.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/undelete.png b/rtdata/images/Light/actions/undelete.png
deleted file mode 100644
index 27f273bd6..000000000
Binary files a/rtdata/images/Light/actions/undelete.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/warnhl.png b/rtdata/images/Light/actions/warnhl.png
deleted file mode 100644
index 066241abc..000000000
Binary files a/rtdata/images/Light/actions/warnhl.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/warnsh.png b/rtdata/images/Light/actions/warnsh.png
deleted file mode 100644
index 5621b88b4..000000000
Binary files a/rtdata/images/Light/actions/warnsh.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wavelet.png b/rtdata/images/Light/actions/wavelet.png
deleted file mode 100644
index 3de85a8f1..000000000
Binary files a/rtdata/images/Light/actions/wavelet.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-auto.png b/rtdata/images/Light/actions/wb-auto.png
deleted file mode 100644
index fa5c582ad..000000000
Binary files a/rtdata/images/Light/actions/wb-auto.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-camera.png b/rtdata/images/Light/actions/wb-camera.png
deleted file mode 100644
index e3f4b9a01..000000000
Binary files a/rtdata/images/Light/actions/wb-camera.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-cloudy.png b/rtdata/images/Light/actions/wb-cloudy.png
deleted file mode 100644
index a04cc56b5..000000000
Binary files a/rtdata/images/Light/actions/wb-cloudy.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-custom.png b/rtdata/images/Light/actions/wb-custom.png
deleted file mode 100644
index 2cc95a999..000000000
Binary files a/rtdata/images/Light/actions/wb-custom.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-flash.png b/rtdata/images/Light/actions/wb-flash.png
deleted file mode 100644
index 35f643e46..000000000
Binary files a/rtdata/images/Light/actions/wb-flash.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-fluorescent.png b/rtdata/images/Light/actions/wb-fluorescent.png
deleted file mode 100644
index f0da5ba72..000000000
Binary files a/rtdata/images/Light/actions/wb-fluorescent.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-lamp.png b/rtdata/images/Light/actions/wb-lamp.png
deleted file mode 100644
index 47f12d904..000000000
Binary files a/rtdata/images/Light/actions/wb-lamp.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-led.png b/rtdata/images/Light/actions/wb-led.png
deleted file mode 100644
index 5c2ef46d7..000000000
Binary files a/rtdata/images/Light/actions/wb-led.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-shade.png b/rtdata/images/Light/actions/wb-shade.png
deleted file mode 100644
index 617123893..000000000
Binary files a/rtdata/images/Light/actions/wb-shade.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-sun.png b/rtdata/images/Light/actions/wb-sun.png
deleted file mode 100644
index 115c8a0cb..000000000
Binary files a/rtdata/images/Light/actions/wb-sun.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-tungsten.png b/rtdata/images/Light/actions/wb-tungsten.png
deleted file mode 100644
index 61ad022c4..000000000
Binary files a/rtdata/images/Light/actions/wb-tungsten.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/wb-water.png b/rtdata/images/Light/actions/wb-water.png
deleted file mode 100644
index a1ae414af..000000000
Binary files a/rtdata/images/Light/actions/wb-water.png and /dev/null differ
diff --git a/rtdata/images/Light/actions/zoom-100-identifier.png b/rtdata/images/Light/actions/zoom-100-identifier.png
deleted file mode 100644
index a07b63b83..000000000
Binary files a/rtdata/images/Light/actions/zoom-100-identifier.png and /dev/null differ
diff --git a/rtdata/images/Light/devices/computer.png b/rtdata/images/Light/devices/computer.png
deleted file mode 100644
index 5969fae78..000000000
Binary files a/rtdata/images/Light/devices/computer.png and /dev/null differ
diff --git a/rtdata/images/Light/devices/drive-harddisk.png b/rtdata/images/Light/devices/drive-harddisk.png
deleted file mode 100644
index 5969fae78..000000000
Binary files a/rtdata/images/Light/devices/drive-harddisk.png and /dev/null differ
diff --git a/rtdata/images/Light/devices/drive-optical.png b/rtdata/images/Light/devices/drive-optical.png
deleted file mode 100644
index 5e4ba680d..000000000
Binary files a/rtdata/images/Light/devices/drive-optical.png and /dev/null differ
diff --git a/rtdata/images/Light/devices/drive-removable-media.png b/rtdata/images/Light/devices/drive-removable-media.png
deleted file mode 100644
index 378f0cbbe..000000000
Binary files a/rtdata/images/Light/devices/drive-removable-media.png and /dev/null differ
diff --git a/rtdata/images/Light/devices/gtk-cdrom.png b/rtdata/images/Light/devices/gtk-cdrom.png
deleted file mode 100644
index 5e4ba680d..000000000
Binary files a/rtdata/images/Light/devices/gtk-cdrom.png and /dev/null differ
diff --git a/rtdata/images/Light/devices/media-flash.png b/rtdata/images/Light/devices/media-flash.png
deleted file mode 100644
index 5969fae78..000000000
Binary files a/rtdata/images/Light/devices/media-flash.png and /dev/null differ
diff --git a/rtdata/images/Light/devices/media-floppy.png b/rtdata/images/Light/devices/media-floppy.png
deleted file mode 100644
index 378f0cbbe..000000000
Binary files a/rtdata/images/Light/devices/media-floppy.png and /dev/null differ
diff --git a/rtdata/images/Light/devices/media-optical-bd.png b/rtdata/images/Light/devices/media-optical-bd.png
deleted file mode 100644
index 5e4ba680d..000000000
Binary files a/rtdata/images/Light/devices/media-optical-bd.png and /dev/null differ
diff --git a/rtdata/images/Light/devices/media-optical-dvd.png b/rtdata/images/Light/devices/media-optical-dvd.png
deleted file mode 100644
index 5e4ba680d..000000000
Binary files a/rtdata/images/Light/devices/media-optical-dvd.png and /dev/null differ
diff --git a/rtdata/images/Light/devices/media-optical.png b/rtdata/images/Light/devices/media-optical.png
deleted file mode 100644
index 5e4ba680d..000000000
Binary files a/rtdata/images/Light/devices/media-optical.png and /dev/null differ
diff --git a/rtdata/images/Light/devices/media-tape.png b/rtdata/images/Light/devices/media-tape.png
deleted file mode 100644
index 5969fae78..000000000
Binary files a/rtdata/images/Light/devices/media-tape.png and /dev/null differ
diff --git a/rtdata/images/Light/index.theme b/rtdata/images/Light/index.theme
deleted file mode 100644
index 1188aa465..000000000
--- a/rtdata/images/Light/index.theme
+++ /dev/null
@@ -1,42 +0,0 @@
-[Icon Theme]
-Name=RawTherapee-Light
-Comment=Light theme for RawTherapee
-Inherits=hicolor
-Example=folder
-
-Directories=actions,apps,categories,devices,emblems,places,status
-
-[actions]
-Size=22
-Context=Actions
-Type=Fixed
-
-[apps]
-Size=22
-Context=Applications
-Type=Fixed
-
-[categories]
-Size=22
-Context=Categories
-Type=Fixed
-
-[devices]
-Size=22
-Context=Devices
-Type=Fixed
-
-[emblems]
-Size=22
-Context=Emblems
-Type=Fixed
-
-[places]
-Size=22
-Context=Places
-Type=Fixed
-
-[status]
-Size=22
-Context=Status
-Type=Fixed
diff --git a/rtdata/images/Light/places/folder.png b/rtdata/images/Light/places/folder.png
deleted file mode 100644
index 19ea93f4c..000000000
Binary files a/rtdata/images/Light/places/folder.png and /dev/null differ
diff --git a/rtdata/images/Light/places/gtk-directory.png b/rtdata/images/Light/places/gtk-directory.png
deleted file mode 100644
index 19ea93f4c..000000000
Binary files a/rtdata/images/Light/places/gtk-directory.png and /dev/null differ
diff --git a/rtdata/images/Light/places/user-desktop.png b/rtdata/images/Light/places/user-desktop.png
deleted file mode 100644
index e11d7388e..000000000
Binary files a/rtdata/images/Light/places/user-desktop.png and /dev/null differ
diff --git a/rtdata/images/Light/places/user-home.png b/rtdata/images/Light/places/user-home.png
deleted file mode 100644
index 69868e8d5..000000000
Binary files a/rtdata/images/Light/places/user-home.png and /dev/null differ
diff --git a/rtdata/images/PanelEnding.png b/rtdata/images/PanelEnding.png
deleted file mode 100644
index b540adc66..000000000
Binary files a/rtdata/images/PanelEnding.png and /dev/null differ
diff --git a/rtdata/images/beforeafter.png b/rtdata/images/beforeafter.png
deleted file mode 100644
index a4b3fac7b..000000000
Binary files a/rtdata/images/beforeafter.png and /dev/null differ
diff --git a/rtdata/images/cglabel0.png b/rtdata/images/cglabel0.png
deleted file mode 100644
index f3f0a3b27..000000000
Binary files a/rtdata/images/cglabel0.png and /dev/null differ
diff --git a/rtdata/images/cglabel1.png b/rtdata/images/cglabel1.png
deleted file mode 100644
index 3d5d745b2..000000000
Binary files a/rtdata/images/cglabel1.png and /dev/null differ
diff --git a/rtdata/images/cglabel2.png b/rtdata/images/cglabel2.png
deleted file mode 100644
index f0bfb2e02..000000000
Binary files a/rtdata/images/cglabel2.png and /dev/null differ
diff --git a/rtdata/images/cglabel3.png b/rtdata/images/cglabel3.png
deleted file mode 100644
index 84aeceb47..000000000
Binary files a/rtdata/images/cglabel3.png and /dev/null differ
diff --git a/rtdata/images/cglabel4.png b/rtdata/images/cglabel4.png
deleted file mode 100644
index c6d2286ed..000000000
Binary files a/rtdata/images/cglabel4.png and /dev/null differ
diff --git a/rtdata/images/cglabel5.png b/rtdata/images/cglabel5.png
deleted file mode 100644
index 48568972d..000000000
Binary files a/rtdata/images/cglabel5.png and /dev/null differ
diff --git a/rtdata/images/clabel0.png b/rtdata/images/clabel0.png
deleted file mode 100644
index 65410ff22..000000000
Binary files a/rtdata/images/clabel0.png and /dev/null differ
diff --git a/rtdata/images/clabel1.png b/rtdata/images/clabel1.png
deleted file mode 100644
index 39d679aaa..000000000
Binary files a/rtdata/images/clabel1.png and /dev/null differ
diff --git a/rtdata/images/clabel2.png b/rtdata/images/clabel2.png
deleted file mode 100644
index b9316398a..000000000
Binary files a/rtdata/images/clabel2.png and /dev/null differ
diff --git a/rtdata/images/clabel3.png b/rtdata/images/clabel3.png
deleted file mode 100644
index e804d36a1..000000000
Binary files a/rtdata/images/clabel3.png and /dev/null differ
diff --git a/rtdata/images/clabel4.png b/rtdata/images/clabel4.png
deleted file mode 100644
index 5ac41db81..000000000
Binary files a/rtdata/images/clabel4.png and /dev/null differ
diff --git a/rtdata/images/clabel5.png b/rtdata/images/clabel5.png
deleted file mode 100644
index dbe190966..000000000
Binary files a/rtdata/images/clabel5.png and /dev/null differ
diff --git a/rtdata/images/closedhand.png b/rtdata/images/closedhand.png
deleted file mode 100644
index a08542071..000000000
Binary files a/rtdata/images/closedhand.png and /dev/null differ
diff --git a/rtdata/images/colour.png b/rtdata/images/colour.png
deleted file mode 100644
index e38094f02..000000000
Binary files a/rtdata/images/colour.png and /dev/null differ
diff --git a/rtdata/images/crop-auto.png b/rtdata/images/crop-auto.png
deleted file mode 100644
index 015a9555e..000000000
Binary files a/rtdata/images/crop-auto.png and /dev/null differ
diff --git a/rtdata/images/crop.png b/rtdata/images/crop.png
deleted file mode 100644
index 345fa209e..000000000
Binary files a/rtdata/images/crop.png and /dev/null differ
diff --git a/rtdata/images/cross.png b/rtdata/images/cross.png
deleted file mode 100644
index 6be9dde06..000000000
Binary files a/rtdata/images/cross.png and /dev/null differ
diff --git a/rtdata/images/crossed-arrows-out.png b/rtdata/images/crossed-arrows-out.png
deleted file mode 100644
index d4b8c2f8f..000000000
Binary files a/rtdata/images/crossed-arrows-out.png and /dev/null differ
diff --git a/rtdata/images/curveType-NURBS.png b/rtdata/images/curveType-NURBS.png
deleted file mode 100644
index b18128159..000000000
Binary files a/rtdata/images/curveType-NURBS.png and /dev/null differ
diff --git a/rtdata/images/curveType-controlPoints.png b/rtdata/images/curveType-controlPoints.png
deleted file mode 100644
index b8c4f447e..000000000
Binary files a/rtdata/images/curveType-controlPoints.png and /dev/null differ
diff --git a/rtdata/images/curveType-flatLinear.png b/rtdata/images/curveType-flatLinear.png
deleted file mode 100644
index ad061ef27..000000000
Binary files a/rtdata/images/curveType-flatLinear.png and /dev/null differ
diff --git a/rtdata/images/curveType-linear.png b/rtdata/images/curveType-linear.png
deleted file mode 100644
index a76331321..000000000
Binary files a/rtdata/images/curveType-linear.png and /dev/null differ
diff --git a/rtdata/images/curveType-parametric.png b/rtdata/images/curveType-parametric.png
deleted file mode 100644
index e1df7b699..000000000
Binary files a/rtdata/images/curveType-parametric.png and /dev/null differ
diff --git a/rtdata/images/curveType-spline.png b/rtdata/images/curveType-spline.png
deleted file mode 100644
index a179b901d..000000000
Binary files a/rtdata/images/curveType-spline.png and /dev/null differ
diff --git a/rtdata/images/detail.png b/rtdata/images/detail.png
deleted file mode 100644
index f4ad6e440..000000000
Binary files a/rtdata/images/detail.png and /dev/null differ
diff --git a/rtdata/images/distortion-auto.png b/rtdata/images/distortion-auto.png
deleted file mode 100644
index a0b9c114d..000000000
Binary files a/rtdata/images/distortion-auto.png and /dev/null differ
diff --git a/rtdata/images/edited-small.png b/rtdata/images/edited-small.png
deleted file mode 100644
index 7d6ecdede..000000000
Binary files a/rtdata/images/edited-small.png and /dev/null differ
diff --git a/rtdata/images/edited.png b/rtdata/images/edited.png
deleted file mode 100644
index 85c81b2e1..000000000
Binary files a/rtdata/images/edited.png and /dev/null differ
diff --git a/rtdata/images/editedg-small.png b/rtdata/images/editedg-small.png
deleted file mode 100644
index 1de271128..000000000
Binary files a/rtdata/images/editedg-small.png and /dev/null differ
diff --git a/rtdata/images/editednot-small.png b/rtdata/images/editednot-small.png
deleted file mode 100644
index c1a0299ed..000000000
Binary files a/rtdata/images/editednot-small.png and /dev/null differ
diff --git a/rtdata/images/editednotg-small.png b/rtdata/images/editednotg-small.png
deleted file mode 100644
index fa0de4fdf..000000000
Binary files a/rtdata/images/editednotg-small.png and /dev/null differ
diff --git a/rtdata/images/empty.png b/rtdata/images/empty.png
deleted file mode 100644
index fc5838fdb..000000000
Binary files a/rtdata/images/empty.png and /dev/null differ
diff --git a/rtdata/images/exposure.png b/rtdata/images/exposure.png
deleted file mode 100644
index 0579cdd75..000000000
Binary files a/rtdata/images/exposure.png and /dev/null differ
diff --git a/rtdata/images/filter.png b/rtdata/images/filter.png
deleted file mode 100644
index 1059a8122..000000000
Binary files a/rtdata/images/filter.png and /dev/null differ
diff --git a/rtdata/images/filterclear.png b/rtdata/images/filterclear.png
deleted file mode 100644
index 47b3f2725..000000000
Binary files a/rtdata/images/filterclear.png and /dev/null differ
diff --git a/rtdata/images/folder.png b/rtdata/images/folder.png
deleted file mode 100644
index 551db978a..000000000
Binary files a/rtdata/images/folder.png and /dev/null differ
diff --git a/rtdata/images/fullscreen-exit.png b/rtdata/images/fullscreen-exit.png
deleted file mode 100644
index 2946010be..000000000
Binary files a/rtdata/images/fullscreen-exit.png and /dev/null differ
diff --git a/rtdata/images/fullscreen.png b/rtdata/images/fullscreen.png
deleted file mode 100644
index 3d9fccc28..000000000
Binary files a/rtdata/images/fullscreen.png and /dev/null differ
diff --git a/rtdata/images/grayrated.png b/rtdata/images/grayrated.png
deleted file mode 100644
index c71a6d0c0..000000000
Binary files a/rtdata/images/grayrated.png and /dev/null differ
diff --git a/rtdata/images/gtk-add.png b/rtdata/images/gtk-add.png
deleted file mode 100644
index 21fc43cf3..000000000
Binary files a/rtdata/images/gtk-add.png and /dev/null differ
diff --git a/rtdata/images/gtk-apply.png b/rtdata/images/gtk-apply.png
deleted file mode 100644
index f0bb96bfe..000000000
Binary files a/rtdata/images/gtk-apply.png and /dev/null differ
diff --git a/rtdata/images/gtk-close-small.png b/rtdata/images/gtk-close-small.png
deleted file mode 100644
index b92be85b1..000000000
Binary files a/rtdata/images/gtk-close-small.png and /dev/null differ
diff --git a/rtdata/images/gtk-close.png b/rtdata/images/gtk-close.png
deleted file mode 100644
index a25b8c29a..000000000
Binary files a/rtdata/images/gtk-close.png and /dev/null differ
diff --git a/rtdata/images/gtk-color-picker-small.png b/rtdata/images/gtk-color-picker-small.png
deleted file mode 100644
index 2f7b6cc87..000000000
Binary files a/rtdata/images/gtk-color-picker-small.png and /dev/null differ
diff --git a/rtdata/images/gtk-color-picker.png b/rtdata/images/gtk-color-picker.png
deleted file mode 100644
index 0ad9bc4f6..000000000
Binary files a/rtdata/images/gtk-color-picker.png and /dev/null differ
diff --git a/rtdata/images/gtk-open.png b/rtdata/images/gtk-open.png
deleted file mode 100644
index 5e6286c37..000000000
Binary files a/rtdata/images/gtk-open.png and /dev/null differ
diff --git a/rtdata/images/gtk-save-large.png b/rtdata/images/gtk-save-large.png
deleted file mode 100644
index 11170bd22..000000000
Binary files a/rtdata/images/gtk-save-large.png and /dev/null differ
diff --git a/rtdata/images/gtk-undo-ltr.png b/rtdata/images/gtk-undo-ltr.png
deleted file mode 100644
index 343eda063..000000000
Binary files a/rtdata/images/gtk-undo-ltr.png and /dev/null differ
diff --git a/rtdata/images/gtk-undo-rtl.png b/rtdata/images/gtk-undo-rtl.png
deleted file mode 100644
index 404ec98a5..000000000
Binary files a/rtdata/images/gtk-undo-rtl.png and /dev/null differ
diff --git a/rtdata/images/gtk-undoall-ltr.png b/rtdata/images/gtk-undoall-ltr.png
deleted file mode 100644
index 4a9a30d39..000000000
Binary files a/rtdata/images/gtk-undoall-ltr.png and /dev/null differ
diff --git a/rtdata/images/gtk-undoall-rtl.png b/rtdata/images/gtk-undoall-rtl.png
deleted file mode 100644
index 35303720e..000000000
Binary files a/rtdata/images/gtk-undoall-rtl.png and /dev/null differ
diff --git a/rtdata/images/gtk-zoom-100.png b/rtdata/images/gtk-zoom-100.png
deleted file mode 100644
index c7fae09c3..000000000
Binary files a/rtdata/images/gtk-zoom-100.png and /dev/null differ
diff --git a/rtdata/images/gtk-zoom-fit.png b/rtdata/images/gtk-zoom-fit.png
deleted file mode 100644
index 799a99ba0..000000000
Binary files a/rtdata/images/gtk-zoom-fit.png and /dev/null differ
diff --git a/rtdata/images/gtk-zoom-in.png b/rtdata/images/gtk-zoom-in.png
deleted file mode 100644
index 913e61968..000000000
Binary files a/rtdata/images/gtk-zoom-in.png and /dev/null differ
diff --git a/rtdata/images/gtk-zoom-out.png b/rtdata/images/gtk-zoom-out.png
deleted file mode 100644
index 298138baa..000000000
Binary files a/rtdata/images/gtk-zoom-out.png and /dev/null differ
diff --git a/rtdata/images/histBar.png b/rtdata/images/histBar.png
deleted file mode 100644
index 8ebdf4fab..000000000
Binary files a/rtdata/images/histBar.png and /dev/null differ
diff --git a/rtdata/images/histBlue.png b/rtdata/images/histBlue.png
deleted file mode 100644
index b49a01dc7..000000000
Binary files a/rtdata/images/histBlue.png and /dev/null differ
diff --git a/rtdata/images/histGreen.png b/rtdata/images/histGreen.png
deleted file mode 100644
index 559b7d78a..000000000
Binary files a/rtdata/images/histGreen.png and /dev/null differ
diff --git a/rtdata/images/histRaw.png b/rtdata/images/histRaw.png
deleted file mode 100644
index 30e10cf09..000000000
Binary files a/rtdata/images/histRaw.png and /dev/null differ
diff --git a/rtdata/images/histRed.png b/rtdata/images/histRed.png
deleted file mode 100644
index 91bb9f2f5..000000000
Binary files a/rtdata/images/histRed.png and /dev/null differ
diff --git a/rtdata/images/histValue.png b/rtdata/images/histValue.png
deleted file mode 100644
index 36d47564e..000000000
Binary files a/rtdata/images/histValue.png and /dev/null differ
diff --git a/rtdata/images/image-editor.png b/rtdata/images/image-editor.png
deleted file mode 100644
index 9f9a335dc..000000000
Binary files a/rtdata/images/image-editor.png and /dev/null differ
diff --git a/rtdata/images/info.png b/rtdata/images/info.png
deleted file mode 100644
index 94245aefd..000000000
Binary files a/rtdata/images/info.png and /dev/null differ
diff --git a/rtdata/images/list-add-small.png b/rtdata/images/list-add-small.png
deleted file mode 100644
index d26852798..000000000
Binary files a/rtdata/images/list-add-small.png and /dev/null differ
diff --git a/rtdata/images/list-remove-red-small.png b/rtdata/images/list-remove-red-small.png
deleted file mode 100644
index ea67d1221..000000000
Binary files a/rtdata/images/list-remove-red-small.png and /dev/null differ
diff --git a/rtdata/images/list-remove.png b/rtdata/images/list-remove.png
deleted file mode 100644
index 85e1c30b3..000000000
Binary files a/rtdata/images/list-remove.png and /dev/null differ
diff --git a/rtdata/images/lock-off.png b/rtdata/images/lock-off.png
deleted file mode 100644
index 976af2977..000000000
Binary files a/rtdata/images/lock-off.png and /dev/null differ
diff --git a/rtdata/images/lock-on.png b/rtdata/images/lock-on.png
deleted file mode 100644
index 9c4bcd046..000000000
Binary files a/rtdata/images/lock-on.png and /dev/null differ
diff --git a/rtdata/images/logoicon-wind.png b/rtdata/images/logoicon-wind.png
deleted file mode 100644
index 39e2819da..000000000
Binary files a/rtdata/images/logoicon-wind.png and /dev/null differ
diff --git a/rtdata/images/media-usb.png b/rtdata/images/media-usb.png
deleted file mode 100644
index e9a279da1..000000000
Binary files a/rtdata/images/media-usb.png and /dev/null differ
diff --git a/rtdata/images/meta.png b/rtdata/images/meta.png
deleted file mode 100644
index 6f0c4185d..000000000
Binary files a/rtdata/images/meta.png and /dev/null differ
diff --git a/rtdata/images/move-1D-h.png b/rtdata/images/move-1D-h.png
deleted file mode 100644
index 44babcfb4..000000000
Binary files a/rtdata/images/move-1D-h.png and /dev/null differ
diff --git a/rtdata/images/move-1D-v.png b/rtdata/images/move-1D-v.png
deleted file mode 100644
index cbc1c7e68..000000000
Binary files a/rtdata/images/move-1D-v.png and /dev/null differ
diff --git a/rtdata/images/move-2D.png b/rtdata/images/move-2D.png
deleted file mode 100644
index 27e7c1e67..000000000
Binary files a/rtdata/images/move-2D.png and /dev/null differ
diff --git a/rtdata/images/move-rotate.png b/rtdata/images/move-rotate.png
deleted file mode 100644
index 70309972b..000000000
Binary files a/rtdata/images/move-rotate.png and /dev/null differ
diff --git a/rtdata/images/network.png b/rtdata/images/network.png
deleted file mode 100644
index 8a77e5d92..000000000
Binary files a/rtdata/images/network.png and /dev/null differ
diff --git a/rtdata/images/nocolorlabel.png b/rtdata/images/nocolorlabel.png
deleted file mode 100644
index be61570b0..000000000
Binary files a/rtdata/images/nocolorlabel.png and /dev/null differ
diff --git a/rtdata/images/non-themed/png/rawtherapee-logo-128.png b/rtdata/images/non-themed/png/rawtherapee-logo-128.png
new file mode 100644
index 000000000..0a224b3d9
Binary files /dev/null and b/rtdata/images/non-themed/png/rawtherapee-logo-128.png differ
diff --git a/rtdata/images/non-themed/png/rawtherapee-logo-16.png b/rtdata/images/non-themed/png/rawtherapee-logo-16.png
new file mode 100644
index 000000000..7b67f7408
Binary files /dev/null and b/rtdata/images/non-themed/png/rawtherapee-logo-16.png differ
diff --git a/rtdata/images/non-themed/png/rawtherapee-logo-24.png b/rtdata/images/non-themed/png/rawtherapee-logo-24.png
new file mode 100644
index 000000000..6b13e0c98
Binary files /dev/null and b/rtdata/images/non-themed/png/rawtherapee-logo-24.png differ
diff --git a/rtdata/images/non-themed/png/rawtherapee-logo-256.png b/rtdata/images/non-themed/png/rawtherapee-logo-256.png
new file mode 100644
index 000000000..00fdb390f
Binary files /dev/null and b/rtdata/images/non-themed/png/rawtherapee-logo-256.png differ
diff --git a/rtdata/images/non-themed/png/rawtherapee-logo-48.png b/rtdata/images/non-themed/png/rawtherapee-logo-48.png
new file mode 100644
index 000000000..cbd46b20e
Binary files /dev/null and b/rtdata/images/non-themed/png/rawtherapee-logo-48.png differ
diff --git a/rtdata/images/splash.png b/rtdata/images/non-themed/png/splash.png
similarity index 100%
rename from rtdata/images/splash.png
rename to rtdata/images/non-themed/png/splash.png
diff --git a/rtdata/icons/RT.ico b/rtdata/images/non-themed/rawtherapee.ico
similarity index 100%
rename from rtdata/icons/RT.ico
rename to rtdata/images/non-themed/rawtherapee.ico
diff --git a/rtdata/images/non-themed/rt-logo.svg b/rtdata/images/non-themed/rt-logo.svg
new file mode 100644
index 000000000..b257e1eb2
--- /dev/null
+++ b/rtdata/images/non-themed/rt-logo.svg
@@ -0,0 +1,1060 @@
+
+
+
+
diff --git a/rtdata/images/rt_splash.svg b/rtdata/images/non-themed/rt-splash.svg
similarity index 100%
rename from rtdata/images/rt_splash.svg
rename to rtdata/images/non-themed/rt-splash.svg
diff --git a/rtdata/images/openhand.png b/rtdata/images/openhand.png
deleted file mode 100644
index e52a28067..000000000
Binary files a/rtdata/images/openhand.png and /dev/null differ
diff --git a/rtdata/images/panel-to-bottom.png b/rtdata/images/panel-to-bottom.png
deleted file mode 100644
index 4e3b6057d..000000000
Binary files a/rtdata/images/panel-to-bottom.png and /dev/null differ
diff --git a/rtdata/images/panel-to-left.png b/rtdata/images/panel-to-left.png
deleted file mode 100644
index 99821881d..000000000
Binary files a/rtdata/images/panel-to-left.png and /dev/null differ
diff --git a/rtdata/images/panel-to-right.png b/rtdata/images/panel-to-right.png
deleted file mode 100644
index 6037c1fa9..000000000
Binary files a/rtdata/images/panel-to-right.png and /dev/null differ
diff --git a/rtdata/images/panel-to-top.png b/rtdata/images/panel-to-top.png
deleted file mode 100644
index b129e9d4c..000000000
Binary files a/rtdata/images/panel-to-top.png and /dev/null differ
diff --git a/rtdata/images/popuparrow.png b/rtdata/images/popuparrow.png
deleted file mode 100644
index f933a71ca..000000000
Binary files a/rtdata/images/popuparrow.png and /dev/null differ
diff --git a/rtdata/images/processing-pause.png b/rtdata/images/processing-pause.png
deleted file mode 100644
index dc3c6b633..000000000
Binary files a/rtdata/images/processing-pause.png and /dev/null differ
diff --git a/rtdata/images/processing-play.png b/rtdata/images/processing-play.png
deleted file mode 100644
index e653de0f1..000000000
Binary files a/rtdata/images/processing-play.png and /dev/null differ
diff --git a/rtdata/images/processing.png b/rtdata/images/processing.png
deleted file mode 100644
index 2a602d656..000000000
Binary files a/rtdata/images/processing.png and /dev/null differ
diff --git a/rtdata/images/rated.png b/rtdata/images/rated.png
deleted file mode 100644
index 99d6b73ba..000000000
Binary files a/rtdata/images/rated.png and /dev/null differ
diff --git a/rtdata/images/ratednot.png b/rtdata/images/ratednot.png
deleted file mode 100644
index ed7c561df..000000000
Binary files a/rtdata/images/ratednot.png and /dev/null differ
diff --git a/rtdata/images/ratednotg.png b/rtdata/images/ratednotg.png
deleted file mode 100644
index 2f619d755..000000000
Binary files a/rtdata/images/ratednotg.png and /dev/null differ
diff --git a/rtdata/images/raw.png b/rtdata/images/raw.png
deleted file mode 100644
index aa8d0bb6d..000000000
Binary files a/rtdata/images/raw.png and /dev/null differ
diff --git a/rtdata/images/recent-save.png b/rtdata/images/recent-save.png
deleted file mode 100644
index be5de85d9..000000000
Binary files a/rtdata/images/recent-save.png and /dev/null differ
diff --git a/rtdata/images/refresh-red.png b/rtdata/images/refresh-red.png
deleted file mode 100644
index 24dc27e64..000000000
Binary files a/rtdata/images/refresh-red.png and /dev/null differ
diff --git a/rtdata/images/refresh-white.png b/rtdata/images/refresh-white.png
deleted file mode 100644
index c4143da34..000000000
Binary files a/rtdata/images/refresh-white.png and /dev/null differ
diff --git a/rtdata/images/rt-logo-large.png b/rtdata/images/rt-logo-large.png
deleted file mode 100644
index f2cde46b7..000000000
Binary files a/rtdata/images/rt-logo-large.png and /dev/null differ
diff --git a/rtdata/images/rt-logo-medium.png b/rtdata/images/rt-logo-medium.png
deleted file mode 100644
index a2c2366f1..000000000
Binary files a/rtdata/images/rt-logo-medium.png and /dev/null differ
diff --git a/rtdata/images/rt-logo-small.png b/rtdata/images/rt-logo-small.png
deleted file mode 100644
index cf306e433..000000000
Binary files a/rtdata/images/rt-logo-small.png and /dev/null differ
diff --git a/rtdata/images/rt-logo-tiny.png b/rtdata/images/rt-logo-tiny.png
deleted file mode 100644
index f1034f149..000000000
Binary files a/rtdata/images/rt-logo-tiny.png and /dev/null differ
diff --git a/rtdata/images/saved.png b/rtdata/images/saved.png
deleted file mode 100644
index 2a465c0f2..000000000
Binary files a/rtdata/images/saved.png and /dev/null differ
diff --git a/rtdata/images/savedg.png b/rtdata/images/savedg.png
deleted file mode 100644
index 6855b7c2e..000000000
Binary files a/rtdata/images/savedg.png and /dev/null differ
diff --git a/rtdata/images/savednot.png b/rtdata/images/savednot.png
deleted file mode 100644
index 532e8b366..000000000
Binary files a/rtdata/images/savednot.png and /dev/null differ
diff --git a/rtdata/images/savednotg.png b/rtdata/images/savednotg.png
deleted file mode 100644
index c6079a1ed..000000000
Binary files a/rtdata/images/savednotg.png and /dev/null differ
diff --git a/rtdata/images/stock-flip-horizontal.png b/rtdata/images/stock-flip-horizontal.png
deleted file mode 100644
index 9c42f276e..000000000
Binary files a/rtdata/images/stock-flip-horizontal.png and /dev/null differ
diff --git a/rtdata/images/stock-flip-vertical.png b/rtdata/images/stock-flip-vertical.png
deleted file mode 100644
index 2b838c15b..000000000
Binary files a/rtdata/images/stock-flip-vertical.png and /dev/null differ
diff --git a/rtdata/images/stock-rotate-270.png b/rtdata/images/stock-rotate-270.png
deleted file mode 100644
index 2c6e23d37..000000000
Binary files a/rtdata/images/stock-rotate-270.png and /dev/null differ
diff --git a/rtdata/images/stock-rotate-90.png b/rtdata/images/stock-rotate-90.png
deleted file mode 100644
index 31cd17760..000000000
Binary files a/rtdata/images/stock-rotate-90.png and /dev/null differ
diff --git a/rtdata/images/straighten-small.png b/rtdata/images/straighten-small.png
deleted file mode 100644
index c750356ab..000000000
Binary files a/rtdata/images/straighten-small.png and /dev/null differ
diff --git a/rtdata/images/straighten.png b/rtdata/images/straighten.png
deleted file mode 100644
index 955af8f0a..000000000
Binary files a/rtdata/images/straighten.png and /dev/null differ
diff --git a/rtdata/images/themed/png/dark/add-small.png b/rtdata/images/themed/png/dark/add-small.png
new file mode 100644
index 000000000..44a3d8639
Binary files /dev/null and b/rtdata/images/themed/png/dark/add-small.png differ
diff --git a/rtdata/images/themed/png/dark/add.png b/rtdata/images/themed/png/dark/add.png
new file mode 100644
index 000000000..6b401bc87
Binary files /dev/null and b/rtdata/images/themed/png/dark/add.png differ
diff --git a/rtdata/images/themed/png/dark/aperture.png b/rtdata/images/themed/png/dark/aperture.png
new file mode 100644
index 000000000..a80fda199
Binary files /dev/null and b/rtdata/images/themed/png/dark/aperture.png differ
diff --git a/rtdata/images/themed/png/dark/arrow-down-small.png b/rtdata/images/themed/png/dark/arrow-down-small.png
new file mode 100644
index 000000000..3c1b4033a
Binary files /dev/null and b/rtdata/images/themed/png/dark/arrow-down-small.png differ
diff --git a/rtdata/images/themed/png/dark/arrow-left-small.png b/rtdata/images/themed/png/dark/arrow-left-small.png
new file mode 100644
index 000000000..b8245b953
Binary files /dev/null and b/rtdata/images/themed/png/dark/arrow-left-small.png differ
diff --git a/rtdata/images/themed/png/dark/arrow-right-small.png b/rtdata/images/themed/png/dark/arrow-right-small.png
new file mode 100644
index 000000000..83177a23a
Binary files /dev/null and b/rtdata/images/themed/png/dark/arrow-right-small.png differ
diff --git a/rtdata/images/themed/png/dark/arrow-up-small.png b/rtdata/images/themed/png/dark/arrow-up-small.png
new file mode 100644
index 000000000..0483b3e73
Binary files /dev/null and b/rtdata/images/themed/png/dark/arrow-up-small.png differ
diff --git a/rtdata/images/themed/png/dark/arrow-updown.png b/rtdata/images/themed/png/dark/arrow-updown.png
new file mode 100644
index 000000000..cd2c0b14e
Binary files /dev/null and b/rtdata/images/themed/png/dark/arrow-updown.png differ
diff --git a/rtdata/images/themed/png/dark/arrow2-left.png b/rtdata/images/themed/png/dark/arrow2-left.png
new file mode 100644
index 000000000..dd0c0c3d7
Binary files /dev/null and b/rtdata/images/themed/png/dark/arrow2-left.png differ
diff --git a/rtdata/images/themed/png/dark/arrow2-right.png b/rtdata/images/themed/png/dark/arrow2-right.png
new file mode 100644
index 000000000..2ee87ec71
Binary files /dev/null and b/rtdata/images/themed/png/dark/arrow2-right.png differ
diff --git a/rtdata/images/themed/png/dark/atom.png b/rtdata/images/themed/png/dark/atom.png
new file mode 100644
index 000000000..9de042fbb
Binary files /dev/null and b/rtdata/images/themed/png/dark/atom.png differ
diff --git a/rtdata/images/themed/png/dark/bayer.png b/rtdata/images/themed/png/dark/bayer.png
new file mode 100644
index 000000000..035318b9a
Binary files /dev/null and b/rtdata/images/themed/png/dark/bayer.png differ
diff --git a/rtdata/images/themed/png/dark/beforeafter.png b/rtdata/images/themed/png/dark/beforeafter.png
new file mode 100644
index 000000000..25bd64b5a
Binary files /dev/null and b/rtdata/images/themed/png/dark/beforeafter.png differ
diff --git a/rtdata/images/themed/png/dark/cancel-small.png b/rtdata/images/themed/png/dark/cancel-small.png
new file mode 100644
index 000000000..8a812e8f3
Binary files /dev/null and b/rtdata/images/themed/png/dark/cancel-small.png differ
diff --git a/rtdata/images/themed/png/dark/cancel.png b/rtdata/images/themed/png/dark/cancel.png
new file mode 100644
index 000000000..6eda05c50
Binary files /dev/null and b/rtdata/images/themed/png/dark/cancel.png differ
diff --git a/rtdata/images/themed/png/dark/circle-black-small.png b/rtdata/images/themed/png/dark/circle-black-small.png
new file mode 100644
index 000000000..f18a415b6
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-black-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-blue-green-small.png b/rtdata/images/themed/png/dark/circle-blue-green-small.png
new file mode 100644
index 000000000..247931823
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-blue-green-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-blue-red-small.png b/rtdata/images/themed/png/dark/circle-blue-red-small.png
new file mode 100644
index 000000000..d88a01330
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-blue-red-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-blue-small.png b/rtdata/images/themed/png/dark/circle-blue-small.png
new file mode 100644
index 000000000..2c8ff48fd
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-blue-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-blue-yellow-small.png b/rtdata/images/themed/png/dark/circle-blue-yellow-small.png
new file mode 100644
index 000000000..0585b2195
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-blue-yellow-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-cyan-red-small.png b/rtdata/images/themed/png/dark/circle-cyan-red-small.png
new file mode 100644
index 000000000..ed7003161
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-cyan-red-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-cyan-small.png b/rtdata/images/themed/png/dark/circle-cyan-small.png
new file mode 100644
index 000000000..84f873a2c
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-cyan-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-darkgray-small.png b/rtdata/images/themed/png/dark/circle-darkgray-small.png
new file mode 100644
index 000000000..e706b1eba
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-darkgray-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-empty-blue-small.png b/rtdata/images/themed/png/dark/circle-empty-blue-small.png
new file mode 100644
index 000000000..d53b3516e
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-empty-blue-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-empty-darkgray-small.png b/rtdata/images/themed/png/dark/circle-empty-darkgray-small.png
new file mode 100644
index 000000000..4f0f0f4c7
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-empty-darkgray-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-empty-gray-small.png b/rtdata/images/themed/png/dark/circle-empty-gray-small.png
new file mode 100644
index 000000000..b3a57c83b
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-empty-gray-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-empty-green-small.png b/rtdata/images/themed/png/dark/circle-empty-green-small.png
new file mode 100644
index 000000000..3b1444d37
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-empty-green-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-empty-purple-small.png b/rtdata/images/themed/png/dark/circle-empty-purple-small.png
new file mode 100644
index 000000000..e61da8e9f
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-empty-purple-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-empty-red-small.png b/rtdata/images/themed/png/dark/circle-empty-red-small.png
new file mode 100644
index 000000000..bf8035931
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-empty-red-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-empty-yellow-small.png b/rtdata/images/themed/png/dark/circle-empty-yellow-small.png
new file mode 100644
index 000000000..9a3ca9bd8
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-empty-yellow-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-gray-blue-small.png b/rtdata/images/themed/png/dark/circle-gray-blue-small.png
new file mode 100644
index 000000000..01d5da881
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-gray-blue-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-gray-green-small.png b/rtdata/images/themed/png/dark/circle-gray-green-small.png
new file mode 100644
index 000000000..2290b708f
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-gray-green-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-gray-red-small.png b/rtdata/images/themed/png/dark/circle-gray-red-small.png
new file mode 100644
index 000000000..29afda33b
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-gray-red-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-gray-small.png b/rtdata/images/themed/png/dark/circle-gray-small.png
new file mode 100644
index 000000000..18ad6330a
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-gray-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-green-blue-small.png b/rtdata/images/themed/png/dark/circle-green-blue-small.png
new file mode 100644
index 000000000..1d6e60252
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-green-blue-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-green-red-small.png b/rtdata/images/themed/png/dark/circle-green-red-small.png
new file mode 100644
index 000000000..96f86b1b9
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-green-red-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-green-small.png b/rtdata/images/themed/png/dark/circle-green-small.png
new file mode 100644
index 000000000..88270e0cb
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-green-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-magenta-small.png b/rtdata/images/themed/png/dark/circle-magenta-small.png
new file mode 100644
index 000000000..cce26e1f2
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-magenta-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-orange-small.png b/rtdata/images/themed/png/dark/circle-orange-small.png
new file mode 100644
index 000000000..5894f0987
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-orange-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-purple-small.png b/rtdata/images/themed/png/dark/circle-purple-small.png
new file mode 100644
index 000000000..9fe4eb0d6
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-purple-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-red-blue-small.png b/rtdata/images/themed/png/dark/circle-red-blue-small.png
new file mode 100644
index 000000000..e70ef22f6
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-red-blue-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-red-cyan-small.png b/rtdata/images/themed/png/dark/circle-red-cyan-small.png
new file mode 100644
index 000000000..92b03b953
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-red-cyan-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-red-green-small.png b/rtdata/images/themed/png/dark/circle-red-green-small.png
new file mode 100644
index 000000000..4572e019f
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-red-green-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-red-small.png b/rtdata/images/themed/png/dark/circle-red-small.png
new file mode 100644
index 000000000..a8c9cecec
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-red-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-white-small.png b/rtdata/images/themed/png/dark/circle-white-small.png
new file mode 100644
index 000000000..acf4f8b76
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-white-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-yellow-blue-small.png b/rtdata/images/themed/png/dark/circle-yellow-blue-small.png
new file mode 100644
index 000000000..1f7aec9f2
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-yellow-blue-small.png differ
diff --git a/rtdata/images/themed/png/dark/circle-yellow-small.png b/rtdata/images/themed/png/dark/circle-yellow-small.png
new file mode 100644
index 000000000..1c5678ac2
Binary files /dev/null and b/rtdata/images/themed/png/dark/circle-yellow-small.png differ
diff --git a/rtdata/images/themed/png/dark/color-circles.png b/rtdata/images/themed/png/dark/color-circles.png
new file mode 100644
index 000000000..f4b974b13
Binary files /dev/null and b/rtdata/images/themed/png/dark/color-circles.png differ
diff --git a/rtdata/images/themed/png/dark/color-picker-add.png b/rtdata/images/themed/png/dark/color-picker-add.png
new file mode 100644
index 000000000..a752ee2f4
Binary files /dev/null and b/rtdata/images/themed/png/dark/color-picker-add.png differ
diff --git a/rtdata/images/themed/png/dark/color-picker-hide.png b/rtdata/images/themed/png/dark/color-picker-hide.png
new file mode 100644
index 000000000..992ee2354
Binary files /dev/null and b/rtdata/images/themed/png/dark/color-picker-hide.png differ
diff --git a/rtdata/images/themed/png/dark/color-picker-show.png b/rtdata/images/themed/png/dark/color-picker-show.png
new file mode 100644
index 000000000..acd3699eb
Binary files /dev/null and b/rtdata/images/themed/png/dark/color-picker-show.png differ
diff --git a/rtdata/images/themed/png/dark/color-picker.png b/rtdata/images/themed/png/dark/color-picker.png
new file mode 100644
index 000000000..1a39d857a
Binary files /dev/null and b/rtdata/images/themed/png/dark/color-picker.png differ
diff --git a/rtdata/images/themed/png/dark/contrastmask-off.png b/rtdata/images/themed/png/dark/contrastmask-off.png
new file mode 100644
index 000000000..f551f5413
Binary files /dev/null and b/rtdata/images/themed/png/dark/contrastmask-off.png differ
diff --git a/rtdata/images/themed/png/dark/contrastmask-on.png b/rtdata/images/themed/png/dark/contrastmask-on.png
new file mode 100644
index 000000000..28ea71f52
Binary files /dev/null and b/rtdata/images/themed/png/dark/contrastmask-on.png differ
diff --git a/rtdata/images/themed/png/dark/copy.png b/rtdata/images/themed/png/dark/copy.png
new file mode 100644
index 000000000..3b51949ed
Binary files /dev/null and b/rtdata/images/themed/png/dark/copy.png differ
diff --git a/rtdata/images/themed/png/dark/crop-auto-small.png b/rtdata/images/themed/png/dark/crop-auto-small.png
new file mode 100644
index 000000000..d7942888d
Binary files /dev/null and b/rtdata/images/themed/png/dark/crop-auto-small.png differ
diff --git a/rtdata/images/themed/png/dark/crop-auto.png b/rtdata/images/themed/png/dark/crop-auto.png
new file mode 100644
index 000000000..52cbd9e77
Binary files /dev/null and b/rtdata/images/themed/png/dark/crop-auto.png differ
diff --git a/rtdata/images/themed/png/dark/crop-small.png b/rtdata/images/themed/png/dark/crop-small.png
new file mode 100644
index 000000000..aa278c16c
Binary files /dev/null and b/rtdata/images/themed/png/dark/crop-small.png differ
diff --git a/rtdata/images/themed/png/dark/crop.png b/rtdata/images/themed/png/dark/crop.png
new file mode 100644
index 000000000..d8a290eec
Binary files /dev/null and b/rtdata/images/themed/png/dark/crop.png differ
diff --git a/rtdata/images/themed/png/dark/crossed-arrows-in.png b/rtdata/images/themed/png/dark/crossed-arrows-in.png
new file mode 100644
index 000000000..531803679
Binary files /dev/null and b/rtdata/images/themed/png/dark/crossed-arrows-in.png differ
diff --git a/rtdata/images/themed/png/dark/crossed-arrows-out.png b/rtdata/images/themed/png/dark/crossed-arrows-out.png
new file mode 100644
index 000000000..c05eb3fe8
Binary files /dev/null and b/rtdata/images/themed/png/dark/crossed-arrows-out.png differ
diff --git a/rtdata/images/themed/png/dark/crosshair-adjust.png b/rtdata/images/themed/png/dark/crosshair-adjust.png
new file mode 100644
index 000000000..72704177c
Binary files /dev/null and b/rtdata/images/themed/png/dark/crosshair-adjust.png differ
diff --git a/rtdata/images/themed/png/dark/crosshair.png b/rtdata/images/themed/png/dark/crosshair.png
new file mode 100644
index 000000000..078512803
Binary files /dev/null and b/rtdata/images/themed/png/dark/crosshair.png differ
diff --git a/rtdata/images/themed/png/dark/curve-controlpoints-small.png b/rtdata/images/themed/png/dark/curve-controlpoints-small.png
new file mode 100644
index 000000000..e4107e5e4
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-controlpoints-small.png differ
diff --git a/rtdata/images/themed/png/dark/curve-controlpoints.png b/rtdata/images/themed/png/dark/curve-controlpoints.png
new file mode 100644
index 000000000..e85d1a214
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-controlpoints.png differ
diff --git a/rtdata/images/themed/png/dark/curve-flat-small.png b/rtdata/images/themed/png/dark/curve-flat-small.png
new file mode 100644
index 000000000..61893e320
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-flat-small.png differ
diff --git a/rtdata/images/themed/png/dark/curve-flat.png b/rtdata/images/themed/png/dark/curve-flat.png
new file mode 100644
index 000000000..7621dd8a0
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-flat.png differ
diff --git a/rtdata/images/themed/png/dark/curve-linear-small.png b/rtdata/images/themed/png/dark/curve-linear-small.png
new file mode 100644
index 000000000..723d29e93
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-linear-small.png differ
diff --git a/rtdata/images/themed/png/dark/curve-linear.png b/rtdata/images/themed/png/dark/curve-linear.png
new file mode 100644
index 000000000..60a8b3d73
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-linear.png differ
diff --git a/rtdata/images/themed/png/dark/curve-nurbs-small.png b/rtdata/images/themed/png/dark/curve-nurbs-small.png
new file mode 100644
index 000000000..0ba221d92
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-nurbs-small.png differ
diff --git a/rtdata/images/themed/png/dark/curve-nurbs.png b/rtdata/images/themed/png/dark/curve-nurbs.png
new file mode 100644
index 000000000..8d9425a0b
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-nurbs.png differ
diff --git a/rtdata/images/themed/png/dark/curve-parametric-small.png b/rtdata/images/themed/png/dark/curve-parametric-small.png
new file mode 100644
index 000000000..237b76125
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-parametric-small.png differ
diff --git a/rtdata/images/themed/png/dark/curve-parametric.png b/rtdata/images/themed/png/dark/curve-parametric.png
new file mode 100644
index 000000000..97f3ac96b
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-parametric.png differ
diff --git a/rtdata/images/themed/png/dark/curve-spline-small.png b/rtdata/images/themed/png/dark/curve-spline-small.png
new file mode 100644
index 000000000..763beda56
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-spline-small.png differ
diff --git a/rtdata/images/themed/png/dark/curve-spline.png b/rtdata/images/themed/png/dark/curve-spline.png
new file mode 100644
index 000000000..c86105d46
Binary files /dev/null and b/rtdata/images/themed/png/dark/curve-spline.png differ
diff --git a/rtdata/images/themed/png/dark/detail.png b/rtdata/images/themed/png/dark/detail.png
new file mode 100644
index 000000000..73ee6a9f0
Binary files /dev/null and b/rtdata/images/themed/png/dark/detail.png differ
diff --git a/rtdata/images/themed/png/dark/device-floppy.png b/rtdata/images/themed/png/dark/device-floppy.png
new file mode 100644
index 000000000..939a6d63e
Binary files /dev/null and b/rtdata/images/themed/png/dark/device-floppy.png differ
diff --git a/rtdata/images/themed/png/dark/device-hdd.png b/rtdata/images/themed/png/dark/device-hdd.png
new file mode 100644
index 000000000..92ddc0e01
Binary files /dev/null and b/rtdata/images/themed/png/dark/device-hdd.png differ
diff --git a/rtdata/images/themed/png/dark/device-network.png b/rtdata/images/themed/png/dark/device-network.png
new file mode 100644
index 000000000..4aa2516ef
Binary files /dev/null and b/rtdata/images/themed/png/dark/device-network.png differ
diff --git a/rtdata/images/themed/png/dark/device-optical.png b/rtdata/images/themed/png/dark/device-optical.png
new file mode 100644
index 000000000..e5cd69a02
Binary files /dev/null and b/rtdata/images/themed/png/dark/device-optical.png differ
diff --git a/rtdata/images/themed/png/dark/device-usb.png b/rtdata/images/themed/png/dark/device-usb.png
new file mode 100644
index 000000000..a19b591e6
Binary files /dev/null and b/rtdata/images/themed/png/dark/device-usb.png differ
diff --git a/rtdata/images/themed/png/dark/distortion-auto-small.png b/rtdata/images/themed/png/dark/distortion-auto-small.png
new file mode 100644
index 000000000..e002a4ae7
Binary files /dev/null and b/rtdata/images/themed/png/dark/distortion-auto-small.png differ
diff --git a/rtdata/images/themed/png/dark/distortion-auto.png b/rtdata/images/themed/png/dark/distortion-auto.png
new file mode 100644
index 000000000..28c89da36
Binary files /dev/null and b/rtdata/images/themed/png/dark/distortion-auto.png differ
diff --git a/rtdata/images/themed/png/dark/distortion-barrel-small.png b/rtdata/images/themed/png/dark/distortion-barrel-small.png
new file mode 100644
index 000000000..531fd93d9
Binary files /dev/null and b/rtdata/images/themed/png/dark/distortion-barrel-small.png differ
diff --git a/rtdata/images/themed/png/dark/distortion-barrel.png b/rtdata/images/themed/png/dark/distortion-barrel.png
new file mode 100644
index 000000000..44f312dc9
Binary files /dev/null and b/rtdata/images/themed/png/dark/distortion-barrel.png differ
diff --git a/rtdata/images/themed/png/dark/distortion-pincushion-small.png b/rtdata/images/themed/png/dark/distortion-pincushion-small.png
new file mode 100644
index 000000000..c33205d78
Binary files /dev/null and b/rtdata/images/themed/png/dark/distortion-pincushion-small.png differ
diff --git a/rtdata/images/themed/png/dark/distortion-pincushion.png b/rtdata/images/themed/png/dark/distortion-pincushion.png
new file mode 100644
index 000000000..219dc6d37
Binary files /dev/null and b/rtdata/images/themed/png/dark/distortion-pincushion.png differ
diff --git a/rtdata/images/themed/png/dark/edit-point.png b/rtdata/images/themed/png/dark/edit-point.png
new file mode 100644
index 000000000..1c3317f86
Binary files /dev/null and b/rtdata/images/themed/png/dark/edit-point.png differ
diff --git a/rtdata/images/themed/png/dark/equilizer-narrow.png b/rtdata/images/themed/png/dark/equilizer-narrow.png
new file mode 100644
index 000000000..6ee072ae5
Binary files /dev/null and b/rtdata/images/themed/png/dark/equilizer-narrow.png differ
diff --git a/rtdata/images/themed/png/dark/equilizer-wide.png b/rtdata/images/themed/png/dark/equilizer-wide.png
new file mode 100644
index 000000000..37c07c605
Binary files /dev/null and b/rtdata/images/themed/png/dark/equilizer-wide.png differ
diff --git a/rtdata/images/themed/png/dark/expander-closed-small.png b/rtdata/images/themed/png/dark/expander-closed-small.png
new file mode 100644
index 000000000..b59480cd5
Binary files /dev/null and b/rtdata/images/themed/png/dark/expander-closed-small.png differ
diff --git a/rtdata/images/themed/png/dark/expander-open-small.png b/rtdata/images/themed/png/dark/expander-open-small.png
new file mode 100644
index 000000000..15b74149a
Binary files /dev/null and b/rtdata/images/themed/png/dark/expander-open-small.png differ
diff --git a/rtdata/images/themed/png/dark/exposure.png b/rtdata/images/themed/png/dark/exposure.png
new file mode 100644
index 000000000..f7cc6e155
Binary files /dev/null and b/rtdata/images/themed/png/dark/exposure.png differ
diff --git a/rtdata/images/themed/png/dark/filetype-hdr.png b/rtdata/images/themed/png/dark/filetype-hdr.png
new file mode 100644
index 000000000..a333858d5
Binary files /dev/null and b/rtdata/images/themed/png/dark/filetype-hdr.png differ
diff --git a/rtdata/images/themed/png/dark/filetype-ps.png b/rtdata/images/themed/png/dark/filetype-ps.png
new file mode 100644
index 000000000..414530cdd
Binary files /dev/null and b/rtdata/images/themed/png/dark/filetype-ps.png differ
diff --git a/rtdata/images/themed/png/dark/filter-clear.png b/rtdata/images/themed/png/dark/filter-clear.png
new file mode 100644
index 000000000..acb729f11
Binary files /dev/null and b/rtdata/images/themed/png/dark/filter-clear.png differ
diff --git a/rtdata/images/themed/png/dark/filter-original.png b/rtdata/images/themed/png/dark/filter-original.png
new file mode 100644
index 000000000..9f538fab4
Binary files /dev/null and b/rtdata/images/themed/png/dark/filter-original.png differ
diff --git a/rtdata/images/themed/png/dark/filter-original2.png b/rtdata/images/themed/png/dark/filter-original2.png
new file mode 100644
index 000000000..7617380b2
Binary files /dev/null and b/rtdata/images/themed/png/dark/filter-original2.png differ
diff --git a/rtdata/images/themed/png/dark/filter.png b/rtdata/images/themed/png/dark/filter.png
new file mode 100644
index 000000000..af0060c9a
Binary files /dev/null and b/rtdata/images/themed/png/dark/filter.png differ
diff --git a/rtdata/images/themed/png/dark/flip-horizontal.png b/rtdata/images/themed/png/dark/flip-horizontal.png
new file mode 100644
index 000000000..fe53cefe7
Binary files /dev/null and b/rtdata/images/themed/png/dark/flip-horizontal.png differ
diff --git a/rtdata/images/themed/png/dark/flip-vertical.png b/rtdata/images/themed/png/dark/flip-vertical.png
new file mode 100644
index 000000000..85e7ccd02
Binary files /dev/null and b/rtdata/images/themed/png/dark/flip-vertical.png differ
diff --git a/rtdata/images/themed/png/dark/focusscreen-off.png b/rtdata/images/themed/png/dark/focusscreen-off.png
new file mode 100644
index 000000000..5ee597b3b
Binary files /dev/null and b/rtdata/images/themed/png/dark/focusscreen-off.png differ
diff --git a/rtdata/images/themed/png/dark/focusscreen-on.png b/rtdata/images/themed/png/dark/focusscreen-on.png
new file mode 100644
index 000000000..f9c418b92
Binary files /dev/null and b/rtdata/images/themed/png/dark/focusscreen-on.png differ
diff --git a/rtdata/images/themed/png/dark/folder-closed-home-small.png b/rtdata/images/themed/png/dark/folder-closed-home-small.png
new file mode 100644
index 000000000..06aeea67a
Binary files /dev/null and b/rtdata/images/themed/png/dark/folder-closed-home-small.png differ
diff --git a/rtdata/images/themed/png/dark/folder-closed-home.png b/rtdata/images/themed/png/dark/folder-closed-home.png
new file mode 100644
index 000000000..88f801d24
Binary files /dev/null and b/rtdata/images/themed/png/dark/folder-closed-home.png differ
diff --git a/rtdata/images/themed/png/dark/folder-closed-recent-small.png b/rtdata/images/themed/png/dark/folder-closed-recent-small.png
new file mode 100644
index 000000000..fdf1696b3
Binary files /dev/null and b/rtdata/images/themed/png/dark/folder-closed-recent-small.png differ
diff --git a/rtdata/images/themed/png/dark/folder-closed-recent.png b/rtdata/images/themed/png/dark/folder-closed-recent.png
new file mode 100644
index 000000000..fe23eea9f
Binary files /dev/null and b/rtdata/images/themed/png/dark/folder-closed-recent.png differ
diff --git a/rtdata/images/themed/png/dark/folder-closed-small.png b/rtdata/images/themed/png/dark/folder-closed-small.png
new file mode 100644
index 000000000..de543f67f
Binary files /dev/null and b/rtdata/images/themed/png/dark/folder-closed-small.png differ
diff --git a/rtdata/images/themed/png/dark/folder-closed.png b/rtdata/images/themed/png/dark/folder-closed.png
new file mode 100644
index 000000000..2ec2d9717
Binary files /dev/null and b/rtdata/images/themed/png/dark/folder-closed.png differ
diff --git a/rtdata/images/themed/png/dark/folder-open-recent-small.png b/rtdata/images/themed/png/dark/folder-open-recent-small.png
new file mode 100644
index 000000000..3fac2f496
Binary files /dev/null and b/rtdata/images/themed/png/dark/folder-open-recent-small.png differ
diff --git a/rtdata/images/themed/png/dark/folder-open-recent.png b/rtdata/images/themed/png/dark/folder-open-recent.png
new file mode 100644
index 000000000..acf421774
Binary files /dev/null and b/rtdata/images/themed/png/dark/folder-open-recent.png differ
diff --git a/rtdata/images/themed/png/dark/folder-open-small.png b/rtdata/images/themed/png/dark/folder-open-small.png
new file mode 100644
index 000000000..56eca1923
Binary files /dev/null and b/rtdata/images/themed/png/dark/folder-open-small.png differ
diff --git a/rtdata/images/themed/png/dark/folder-open.png b/rtdata/images/themed/png/dark/folder-open.png
new file mode 100644
index 000000000..df99ec1a2
Binary files /dev/null and b/rtdata/images/themed/png/dark/folder-open.png differ
diff --git a/rtdata/images/themed/png/dark/fullscreen-enter.png b/rtdata/images/themed/png/dark/fullscreen-enter.png
new file mode 100644
index 000000000..2986358eb
Binary files /dev/null and b/rtdata/images/themed/png/dark/fullscreen-enter.png differ
diff --git a/rtdata/images/themed/png/dark/fullscreen-leave.png b/rtdata/images/themed/png/dark/fullscreen-leave.png
new file mode 100644
index 000000000..5844f0e85
Binary files /dev/null and b/rtdata/images/themed/png/dark/fullscreen-leave.png differ
diff --git a/rtdata/images/themed/png/dark/gamut-hist.png b/rtdata/images/themed/png/dark/gamut-hist.png
new file mode 100644
index 000000000..346ae6225
Binary files /dev/null and b/rtdata/images/themed/png/dark/gamut-hist.png differ
diff --git a/rtdata/images/themed/png/dark/gamut-plus.png b/rtdata/images/themed/png/dark/gamut-plus.png
new file mode 100644
index 000000000..091e38337
Binary files /dev/null and b/rtdata/images/themed/png/dark/gamut-plus.png differ
diff --git a/rtdata/images/themed/png/dark/gamut-softproof.png b/rtdata/images/themed/png/dark/gamut-softproof.png
new file mode 100644
index 000000000..b130cc275
Binary files /dev/null and b/rtdata/images/themed/png/dark/gamut-softproof.png differ
diff --git a/rtdata/images/themed/png/dark/gamut-warning.png b/rtdata/images/themed/png/dark/gamut-warning.png
new file mode 100644
index 000000000..cf09ff17d
Binary files /dev/null and b/rtdata/images/themed/png/dark/gamut-warning.png differ
diff --git a/rtdata/images/themed/png/dark/gamut_srgb_prophoto_xy.png b/rtdata/images/themed/png/dark/gamut_srgb_prophoto_xy.png
new file mode 100644
index 000000000..8e131b1dd
Binary files /dev/null and b/rtdata/images/themed/png/dark/gamut_srgb_prophoto_xy.png differ
diff --git a/rtdata/images/themed/png/dark/gears-pause.png b/rtdata/images/themed/png/dark/gears-pause.png
new file mode 100644
index 000000000..e9cb6a535
Binary files /dev/null and b/rtdata/images/themed/png/dark/gears-pause.png differ
diff --git a/rtdata/images/themed/png/dark/gears-play.png b/rtdata/images/themed/png/dark/gears-play.png
new file mode 100644
index 000000000..917130261
Binary files /dev/null and b/rtdata/images/themed/png/dark/gears-play.png differ
diff --git a/rtdata/images/themed/png/dark/gears-small.png b/rtdata/images/themed/png/dark/gears-small.png
new file mode 100644
index 000000000..70186dd18
Binary files /dev/null and b/rtdata/images/themed/png/dark/gears-small.png differ
diff --git a/rtdata/images/themed/png/dark/gears.png b/rtdata/images/themed/png/dark/gears.png
new file mode 100644
index 000000000..e21456d9f
Binary files /dev/null and b/rtdata/images/themed/png/dark/gears.png differ
diff --git a/rtdata/images/themed/png/dark/goto-end-small.png b/rtdata/images/themed/png/dark/goto-end-small.png
new file mode 100644
index 000000000..13f626635
Binary files /dev/null and b/rtdata/images/themed/png/dark/goto-end-small.png differ
diff --git a/rtdata/images/themed/png/dark/goto-start-small.png b/rtdata/images/themed/png/dark/goto-start-small.png
new file mode 100644
index 000000000..70cc10bf4
Binary files /dev/null and b/rtdata/images/themed/png/dark/goto-start-small.png differ
diff --git a/rtdata/images/themed/png/dark/hand-closed.png b/rtdata/images/themed/png/dark/hand-closed.png
new file mode 100644
index 000000000..590d95096
Binary files /dev/null and b/rtdata/images/themed/png/dark/hand-closed.png differ
diff --git a/rtdata/images/themed/png/dark/hand-open.png b/rtdata/images/themed/png/dark/hand-open.png
new file mode 100644
index 000000000..e5ab821d5
Binary files /dev/null and b/rtdata/images/themed/png/dark/hand-open.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-bar-off-small.png b/rtdata/images/themed/png/dark/histogram-bar-off-small.png
new file mode 100644
index 000000000..5c9c21e72
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-bar-off-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-bar-on-small.png b/rtdata/images/themed/png/dark/histogram-bar-on-small.png
new file mode 100644
index 000000000..f8a5bddf6
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-bar-on-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-bayer-off-small.png b/rtdata/images/themed/png/dark/histogram-bayer-off-small.png
new file mode 100644
index 000000000..af1369145
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-bayer-off-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-bayer-on-small.png b/rtdata/images/themed/png/dark/histogram-bayer-on-small.png
new file mode 100644
index 000000000..44e23b51b
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-bayer-on-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-blue-off-small.png b/rtdata/images/themed/png/dark/histogram-blue-off-small.png
new file mode 100644
index 000000000..8b368ed63
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-blue-off-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-blue-on-small.png b/rtdata/images/themed/png/dark/histogram-blue-on-small.png
new file mode 100644
index 000000000..537153043
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-blue-on-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-gold-off-small.png b/rtdata/images/themed/png/dark/histogram-gold-off-small.png
new file mode 100644
index 000000000..4272c3ff7
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-gold-off-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-gold-on-small.png b/rtdata/images/themed/png/dark/histogram-gold-on-small.png
new file mode 100644
index 000000000..8f32203fd
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-gold-on-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-green-off-small.png b/rtdata/images/themed/png/dark/histogram-green-off-small.png
new file mode 100644
index 000000000..395fcac9e
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-green-off-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-green-on-small.png b/rtdata/images/themed/png/dark/histogram-green-on-small.png
new file mode 100644
index 000000000..db3f89ef5
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-green-on-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-mode-linear-small.png b/rtdata/images/themed/png/dark/histogram-mode-linear-small.png
new file mode 100644
index 000000000..507be4c3e
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-mode-linear-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-mode-logx-small.png b/rtdata/images/themed/png/dark/histogram-mode-logx-small.png
new file mode 100644
index 000000000..2a0b7cc6a
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-mode-logx-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-mode-logxy-small.png b/rtdata/images/themed/png/dark/histogram-mode-logxy-small.png
new file mode 100644
index 000000000..23bf705ac
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-mode-logxy-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-red-off-small.png b/rtdata/images/themed/png/dark/histogram-red-off-small.png
new file mode 100644
index 000000000..7d5ea5352
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-red-off-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-red-on-small.png b/rtdata/images/themed/png/dark/histogram-red-on-small.png
new file mode 100644
index 000000000..deee136a2
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-red-on-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-silver-off-small.png b/rtdata/images/themed/png/dark/histogram-silver-off-small.png
new file mode 100644
index 000000000..d88e879bc
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-silver-off-small.png differ
diff --git a/rtdata/images/themed/png/dark/histogram-silver-on-small.png b/rtdata/images/themed/png/dark/histogram-silver-on-small.png
new file mode 100644
index 000000000..bdef06144
Binary files /dev/null and b/rtdata/images/themed/png/dark/histogram-silver-on-small.png differ
diff --git a/rtdata/images/themed/png/dark/info.png b/rtdata/images/themed/png/dark/info.png
new file mode 100644
index 000000000..4d7ad53bb
Binary files /dev/null and b/rtdata/images/themed/png/dark/info.png differ
diff --git a/rtdata/images/themed/png/dark/intent-absolute.png b/rtdata/images/themed/png/dark/intent-absolute.png
new file mode 100644
index 000000000..14cc9f44b
Binary files /dev/null and b/rtdata/images/themed/png/dark/intent-absolute.png differ
diff --git a/rtdata/images/themed/png/dark/intent-perceptual.png b/rtdata/images/themed/png/dark/intent-perceptual.png
new file mode 100644
index 000000000..44507d85f
Binary files /dev/null and b/rtdata/images/themed/png/dark/intent-perceptual.png differ
diff --git a/rtdata/images/themed/png/dark/intent-relative.png b/rtdata/images/themed/png/dark/intent-relative.png
new file mode 100644
index 000000000..895c335c1
Binary files /dev/null and b/rtdata/images/themed/png/dark/intent-relative.png differ
diff --git a/rtdata/images/themed/png/dark/intent-saturation.png b/rtdata/images/themed/png/dark/intent-saturation.png
new file mode 100644
index 000000000..fb33221e4
Binary files /dev/null and b/rtdata/images/themed/png/dark/intent-saturation.png differ
diff --git a/rtdata/images/themed/png/dark/magnifier-1to1-small.png b/rtdata/images/themed/png/dark/magnifier-1to1-small.png
new file mode 100644
index 000000000..b68d5d975
Binary files /dev/null and b/rtdata/images/themed/png/dark/magnifier-1to1-small.png differ
diff --git a/rtdata/images/themed/png/dark/magnifier-1to1.png b/rtdata/images/themed/png/dark/magnifier-1to1.png
new file mode 100644
index 000000000..b111f5cb6
Binary files /dev/null and b/rtdata/images/themed/png/dark/magnifier-1to1.png differ
diff --git a/rtdata/images/themed/png/dark/magnifier-crop.png b/rtdata/images/themed/png/dark/magnifier-crop.png
new file mode 100644
index 000000000..1302ac7f9
Binary files /dev/null and b/rtdata/images/themed/png/dark/magnifier-crop.png differ
diff --git a/rtdata/images/themed/png/dark/magnifier-fit.png b/rtdata/images/themed/png/dark/magnifier-fit.png
new file mode 100644
index 000000000..d3c238338
Binary files /dev/null and b/rtdata/images/themed/png/dark/magnifier-fit.png differ
diff --git a/rtdata/images/themed/png/dark/magnifier-minus-small.png b/rtdata/images/themed/png/dark/magnifier-minus-small.png
new file mode 100644
index 000000000..dd1b65589
Binary files /dev/null and b/rtdata/images/themed/png/dark/magnifier-minus-small.png differ
diff --git a/rtdata/images/themed/png/dark/magnifier-minus.png b/rtdata/images/themed/png/dark/magnifier-minus.png
new file mode 100644
index 000000000..1f60a292a
Binary files /dev/null and b/rtdata/images/themed/png/dark/magnifier-minus.png differ
diff --git a/rtdata/images/themed/png/dark/magnifier-plus-small.png b/rtdata/images/themed/png/dark/magnifier-plus-small.png
new file mode 100644
index 000000000..532f9c426
Binary files /dev/null and b/rtdata/images/themed/png/dark/magnifier-plus-small.png differ
diff --git a/rtdata/images/themed/png/dark/magnifier-plus.png b/rtdata/images/themed/png/dark/magnifier-plus.png
new file mode 100644
index 000000000..b8d6a2a7a
Binary files /dev/null and b/rtdata/images/themed/png/dark/magnifier-plus.png differ
diff --git a/rtdata/images/themed/png/dark/magnifier.png b/rtdata/images/themed/png/dark/magnifier.png
new file mode 100644
index 000000000..6ae59fd55
Binary files /dev/null and b/rtdata/images/themed/png/dark/magnifier.png differ
diff --git a/rtdata/images/themed/png/dark/metadata.png b/rtdata/images/themed/png/dark/metadata.png
new file mode 100644
index 000000000..48fccde79
Binary files /dev/null and b/rtdata/images/themed/png/dark/metadata.png differ
diff --git a/rtdata/images/themed/png/dark/node-move-x.png b/rtdata/images/themed/png/dark/node-move-x.png
new file mode 100644
index 000000000..ed06b8700
Binary files /dev/null and b/rtdata/images/themed/png/dark/node-move-x.png differ
diff --git a/rtdata/images/themed/png/dark/node-move-xy.png b/rtdata/images/themed/png/dark/node-move-xy.png
new file mode 100644
index 000000000..7fcaf111a
Binary files /dev/null and b/rtdata/images/themed/png/dark/node-move-xy.png differ
diff --git a/rtdata/images/themed/png/dark/node-move-y.png b/rtdata/images/themed/png/dark/node-move-y.png
new file mode 100644
index 000000000..137c79039
Binary files /dev/null and b/rtdata/images/themed/png/dark/node-move-y.png differ
diff --git a/rtdata/images/themed/png/dark/one-to-one-small.png b/rtdata/images/themed/png/dark/one-to-one-small.png
new file mode 100644
index 000000000..50cda2db5
Binary files /dev/null and b/rtdata/images/themed/png/dark/one-to-one-small.png differ
diff --git a/rtdata/images/themed/png/dark/ornament1.png b/rtdata/images/themed/png/dark/ornament1.png
new file mode 100644
index 000000000..2acdd19e8
Binary files /dev/null and b/rtdata/images/themed/png/dark/ornament1.png differ
diff --git a/rtdata/images/themed/png/dark/padlock-locked-small.png b/rtdata/images/themed/png/dark/padlock-locked-small.png
new file mode 100644
index 000000000..8f7c12169
Binary files /dev/null and b/rtdata/images/themed/png/dark/padlock-locked-small.png differ
diff --git a/rtdata/images/themed/png/dark/padlock-unlocked-small.png b/rtdata/images/themed/png/dark/padlock-unlocked-small.png
new file mode 100644
index 000000000..ad27326c7
Binary files /dev/null and b/rtdata/images/themed/png/dark/padlock-unlocked-small.png differ
diff --git a/rtdata/images/themed/png/dark/palette-brush.png b/rtdata/images/themed/png/dark/palette-brush.png
new file mode 100644
index 000000000..592521db0
Binary files /dev/null and b/rtdata/images/themed/png/dark/palette-brush.png differ
diff --git a/rtdata/images/themed/png/dark/panel-to-bottom.png b/rtdata/images/themed/png/dark/panel-to-bottom.png
new file mode 100644
index 000000000..a8ed862f1
Binary files /dev/null and b/rtdata/images/themed/png/dark/panel-to-bottom.png differ
diff --git a/rtdata/images/themed/png/dark/panel-to-left.png b/rtdata/images/themed/png/dark/panel-to-left.png
new file mode 100644
index 000000000..51eb8b845
Binary files /dev/null and b/rtdata/images/themed/png/dark/panel-to-left.png differ
diff --git a/rtdata/images/themed/png/dark/panel-to-right.png b/rtdata/images/themed/png/dark/panel-to-right.png
new file mode 100644
index 000000000..372607970
Binary files /dev/null and b/rtdata/images/themed/png/dark/panel-to-right.png differ
diff --git a/rtdata/images/themed/png/dark/panel-to-top.png b/rtdata/images/themed/png/dark/panel-to-top.png
new file mode 100644
index 000000000..fc92ca1f6
Binary files /dev/null and b/rtdata/images/themed/png/dark/panel-to-top.png differ
diff --git a/rtdata/images/themed/png/dark/paste.png b/rtdata/images/themed/png/dark/paste.png
new file mode 100644
index 000000000..fba618a86
Binary files /dev/null and b/rtdata/images/themed/png/dark/paste.png differ
diff --git a/rtdata/images/themed/png/dark/perspective-horizontal-left-small.png b/rtdata/images/themed/png/dark/perspective-horizontal-left-small.png
new file mode 100644
index 000000000..039485fe3
Binary files /dev/null and b/rtdata/images/themed/png/dark/perspective-horizontal-left-small.png differ
diff --git a/rtdata/images/themed/png/dark/perspective-horizontal-left.png b/rtdata/images/themed/png/dark/perspective-horizontal-left.png
new file mode 100644
index 000000000..b2b169840
Binary files /dev/null and b/rtdata/images/themed/png/dark/perspective-horizontal-left.png differ
diff --git a/rtdata/images/themed/png/dark/perspective-horizontal-right-small.png b/rtdata/images/themed/png/dark/perspective-horizontal-right-small.png
new file mode 100644
index 000000000..a917cf458
Binary files /dev/null and b/rtdata/images/themed/png/dark/perspective-horizontal-right-small.png differ
diff --git a/rtdata/images/themed/png/dark/perspective-horizontal-right.png b/rtdata/images/themed/png/dark/perspective-horizontal-right.png
new file mode 100644
index 000000000..6ab911949
Binary files /dev/null and b/rtdata/images/themed/png/dark/perspective-horizontal-right.png differ
diff --git a/rtdata/images/themed/png/dark/perspective-vertical-bottom-small.png b/rtdata/images/themed/png/dark/perspective-vertical-bottom-small.png
new file mode 100644
index 000000000..f45a38c3e
Binary files /dev/null and b/rtdata/images/themed/png/dark/perspective-vertical-bottom-small.png differ
diff --git a/rtdata/images/themed/png/dark/perspective-vertical-bottom.png b/rtdata/images/themed/png/dark/perspective-vertical-bottom.png
new file mode 100644
index 000000000..0e508882b
Binary files /dev/null and b/rtdata/images/themed/png/dark/perspective-vertical-bottom.png differ
diff --git a/rtdata/images/themed/png/dark/perspective-vertical-top-small.png b/rtdata/images/themed/png/dark/perspective-vertical-top-small.png
new file mode 100644
index 000000000..ab96d5596
Binary files /dev/null and b/rtdata/images/themed/png/dark/perspective-vertical-top-small.png differ
diff --git a/rtdata/images/themed/png/dark/perspective-vertical-top.png b/rtdata/images/themed/png/dark/perspective-vertical-top.png
new file mode 100644
index 000000000..6084254a5
Binary files /dev/null and b/rtdata/images/themed/png/dark/perspective-vertical-top.png differ
diff --git a/rtdata/images/themed/png/dark/power-inconsistent-small.png b/rtdata/images/themed/png/dark/power-inconsistent-small.png
new file mode 100644
index 000000000..75f9c7a58
Binary files /dev/null and b/rtdata/images/themed/png/dark/power-inconsistent-small.png differ
diff --git a/rtdata/images/themed/png/dark/power-off-small.png b/rtdata/images/themed/png/dark/power-off-small.png
new file mode 100644
index 000000000..9b3118c50
Binary files /dev/null and b/rtdata/images/themed/png/dark/power-off-small.png differ
diff --git a/rtdata/images/themed/png/dark/power-on-small.png b/rtdata/images/themed/png/dark/power-on-small.png
new file mode 100644
index 000000000..c54e0d50e
Binary files /dev/null and b/rtdata/images/themed/png/dark/power-on-small.png differ
diff --git a/rtdata/images/themed/png/dark/preferences.png b/rtdata/images/themed/png/dark/preferences.png
new file mode 100644
index 000000000..b88c501e5
Binary files /dev/null and b/rtdata/images/themed/png/dark/preferences.png differ
diff --git a/rtdata/images/themed/png/dark/profile-filled.png b/rtdata/images/themed/png/dark/profile-filled.png
new file mode 100644
index 000000000..e806c99f5
Binary files /dev/null and b/rtdata/images/themed/png/dark/profile-filled.png differ
diff --git a/rtdata/images/themed/png/dark/profile-partial.png b/rtdata/images/themed/png/dark/profile-partial.png
new file mode 100644
index 000000000..335a0238a
Binary files /dev/null and b/rtdata/images/themed/png/dark/profile-partial.png differ
diff --git a/rtdata/images/themed/png/dark/redo-all.png b/rtdata/images/themed/png/dark/redo-all.png
new file mode 100644
index 000000000..e293010d0
Binary files /dev/null and b/rtdata/images/themed/png/dark/redo-all.png differ
diff --git a/rtdata/images/themed/png/dark/redo-small.png b/rtdata/images/themed/png/dark/redo-small.png
new file mode 100644
index 000000000..84a5988ef
Binary files /dev/null and b/rtdata/images/themed/png/dark/redo-small.png differ
diff --git a/rtdata/images/themed/png/dark/redo.png b/rtdata/images/themed/png/dark/redo.png
new file mode 100644
index 000000000..c75b63620
Binary files /dev/null and b/rtdata/images/themed/png/dark/redo.png differ
diff --git a/rtdata/images/themed/png/dark/refresh-red-small.png b/rtdata/images/themed/png/dark/refresh-red-small.png
new file mode 100644
index 000000000..296035883
Binary files /dev/null and b/rtdata/images/themed/png/dark/refresh-red-small.png differ
diff --git a/rtdata/images/themed/png/dark/refresh-small.png b/rtdata/images/themed/png/dark/refresh-small.png
new file mode 100644
index 000000000..b8f2e67d5
Binary files /dev/null and b/rtdata/images/themed/png/dark/refresh-small.png differ
diff --git a/rtdata/images/themed/png/dark/refresh.png b/rtdata/images/themed/png/dark/refresh.png
new file mode 100644
index 000000000..6981fbefb
Binary files /dev/null and b/rtdata/images/themed/png/dark/refresh.png differ
diff --git a/rtdata/images/themed/png/dark/remove-small.png b/rtdata/images/themed/png/dark/remove-small.png
new file mode 100644
index 000000000..996823902
Binary files /dev/null and b/rtdata/images/themed/png/dark/remove-small.png differ
diff --git a/rtdata/images/themed/png/dark/remove.png b/rtdata/images/themed/png/dark/remove.png
new file mode 100644
index 000000000..8d9715ac5
Binary files /dev/null and b/rtdata/images/themed/png/dark/remove.png differ
diff --git a/rtdata/images/themed/png/dark/rotate-left-90.png b/rtdata/images/themed/png/dark/rotate-left-90.png
new file mode 100644
index 000000000..fa238e339
Binary files /dev/null and b/rtdata/images/themed/png/dark/rotate-left-90.png differ
diff --git a/rtdata/images/themed/png/dark/rotate-left-small.png b/rtdata/images/themed/png/dark/rotate-left-small.png
new file mode 100644
index 000000000..659dc6344
Binary files /dev/null and b/rtdata/images/themed/png/dark/rotate-left-small.png differ
diff --git a/rtdata/images/themed/png/dark/rotate-left.png b/rtdata/images/themed/png/dark/rotate-left.png
new file mode 100644
index 000000000..739b39c0b
Binary files /dev/null and b/rtdata/images/themed/png/dark/rotate-left.png differ
diff --git a/rtdata/images/themed/png/dark/rotate-right-90.png b/rtdata/images/themed/png/dark/rotate-right-90.png
new file mode 100644
index 000000000..126232d2f
Binary files /dev/null and b/rtdata/images/themed/png/dark/rotate-right-90.png differ
diff --git a/rtdata/images/themed/png/dark/rotate-right-small.png b/rtdata/images/themed/png/dark/rotate-right-small.png
new file mode 100644
index 000000000..c59152c81
Binary files /dev/null and b/rtdata/images/themed/png/dark/rotate-right-small.png differ
diff --git a/rtdata/images/themed/png/dark/rotate-right.png b/rtdata/images/themed/png/dark/rotate-right.png
new file mode 100644
index 000000000..8f99d9b05
Binary files /dev/null and b/rtdata/images/themed/png/dark/rotate-right.png differ
diff --git a/rtdata/images/themed/png/dark/rotate-straighten-small.png b/rtdata/images/themed/png/dark/rotate-straighten-small.png
new file mode 100644
index 000000000..d57dcb7c7
Binary files /dev/null and b/rtdata/images/themed/png/dark/rotate-straighten-small.png differ
diff --git a/rtdata/images/themed/png/dark/rotate-straighten.png b/rtdata/images/themed/png/dark/rotate-straighten.png
new file mode 100644
index 000000000..457282758
Binary files /dev/null and b/rtdata/images/themed/png/dark/rotate-straighten.png differ
diff --git a/rtdata/images/themed/png/dark/save-small.png b/rtdata/images/themed/png/dark/save-small.png
new file mode 100644
index 000000000..e4912f5d2
Binary files /dev/null and b/rtdata/images/themed/png/dark/save-small.png differ
diff --git a/rtdata/images/themed/png/dark/save.png b/rtdata/images/themed/png/dark/save.png
new file mode 100644
index 000000000..2d52cdaeb
Binary files /dev/null and b/rtdata/images/themed/png/dark/save.png differ
diff --git a/rtdata/images/themed/png/dark/saved-no-small.png b/rtdata/images/themed/png/dark/saved-no-small.png
new file mode 100644
index 000000000..417f27624
Binary files /dev/null and b/rtdata/images/themed/png/dark/saved-no-small.png differ
diff --git a/rtdata/images/themed/png/dark/saved-yes-small.png b/rtdata/images/themed/png/dark/saved-yes-small.png
new file mode 100644
index 000000000..953c7f8cc
Binary files /dev/null and b/rtdata/images/themed/png/dark/saved-yes-small.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.png
new file mode 100644
index 000000000..ff6adb675
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-black-off.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-black-on.png b/rtdata/images/themed/png/dark/square-toggle-black-on.png
new file mode 100644
index 000000000..5d6e35c3d
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-black-on.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-blue-off.png b/rtdata/images/themed/png/dark/square-toggle-blue-off.png
new file mode 100644
index 000000000..2a9741c0f
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-blue-off.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-blue-on.png b/rtdata/images/themed/png/dark/square-toggle-blue-on.png
new file mode 100644
index 000000000..e52337d33
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-blue-on.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-gray-off.png b/rtdata/images/themed/png/dark/square-toggle-gray-off.png
new file mode 100644
index 000000000..7e009920f
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-gray-off.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-gray-on.png b/rtdata/images/themed/png/dark/square-toggle-gray-on.png
new file mode 100644
index 000000000..64289008a
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-gray-on.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-green-off.png b/rtdata/images/themed/png/dark/square-toggle-green-off.png
new file mode 100644
index 000000000..f55cbb8c3
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-green-off.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-green-on.png b/rtdata/images/themed/png/dark/square-toggle-green-on.png
new file mode 100644
index 000000000..0c8b9522d
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-green-on.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-luminosity-off.png b/rtdata/images/themed/png/dark/square-toggle-luminosity-off.png
new file mode 100644
index 000000000..c6dfe8410
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-luminosity-off.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-luminosity-on.png b/rtdata/images/themed/png/dark/square-toggle-luminosity-on.png
new file mode 100644
index 000000000..b45b608d9
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-luminosity-on.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-red-off.png b/rtdata/images/themed/png/dark/square-toggle-red-off.png
new file mode 100644
index 000000000..99730ee4b
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-red-off.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-red-on.png b/rtdata/images/themed/png/dark/square-toggle-red-on.png
new file mode 100644
index 000000000..e0b91d8b3
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-red-on.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-theme-off.png b/rtdata/images/themed/png/dark/square-toggle-theme-off.png
new file mode 100644
index 000000000..449946648
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-theme-off.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-theme-on.png b/rtdata/images/themed/png/dark/square-toggle-theme-on.png
new file mode 100644
index 000000000..e59257824
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-theme-on.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-white-off.png b/rtdata/images/themed/png/dark/square-toggle-white-off.png
new file mode 100644
index 000000000..b2e5e3611
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-white-off.png differ
diff --git a/rtdata/images/themed/png/dark/square-toggle-white-on.png b/rtdata/images/themed/png/dark/square-toggle-white-on.png
new file mode 100644
index 000000000..7ff59d927
Binary files /dev/null and b/rtdata/images/themed/png/dark/square-toggle-white-on.png differ
diff --git a/rtdata/images/themed/png/dark/star-gold-hollow-small.png b/rtdata/images/themed/png/dark/star-gold-hollow-small.png
new file mode 100644
index 000000000..478055c2b
Binary files /dev/null and b/rtdata/images/themed/png/dark/star-gold-hollow-small.png differ
diff --git a/rtdata/images/themed/png/dark/star-gold-small.png b/rtdata/images/themed/png/dark/star-gold-small.png
new file mode 100644
index 000000000..da02a823e
Binary files /dev/null and b/rtdata/images/themed/png/dark/star-gold-small.png differ
diff --git a/rtdata/images/themed/png/dark/star-hollow-small.png b/rtdata/images/themed/png/dark/star-hollow-small.png
new file mode 100644
index 000000000..b5cf648ca
Binary files /dev/null and b/rtdata/images/themed/png/dark/star-hollow-small.png differ
diff --git a/rtdata/images/themed/png/dark/star-small.png b/rtdata/images/themed/png/dark/star-small.png
new file mode 100644
index 000000000..c8f21783c
Binary files /dev/null and b/rtdata/images/themed/png/dark/star-small.png differ
diff --git a/rtdata/images/themed/png/dark/template-16.png b/rtdata/images/themed/png/dark/template-16.png
new file mode 100644
index 000000000..1c50ead9e
Binary files /dev/null and b/rtdata/images/themed/png/dark/template-16.png differ
diff --git a/rtdata/images/themed/png/dark/template-24.png b/rtdata/images/themed/png/dark/template-24.png
new file mode 100644
index 000000000..7ab9e8c0f
Binary files /dev/null and b/rtdata/images/themed/png/dark/template-24.png differ
diff --git a/rtdata/images/themed/png/dark/tick-green-hollow-small.png b/rtdata/images/themed/png/dark/tick-green-hollow-small.png
new file mode 100644
index 000000000..176bf5489
Binary files /dev/null and b/rtdata/images/themed/png/dark/tick-green-hollow-small.png differ
diff --git a/rtdata/images/themed/png/dark/tick-green-hollow.png b/rtdata/images/themed/png/dark/tick-green-hollow.png
new file mode 100644
index 000000000..7cac33dc0
Binary files /dev/null and b/rtdata/images/themed/png/dark/tick-green-hollow.png differ
diff --git a/rtdata/images/themed/png/dark/tick-green-small.png b/rtdata/images/themed/png/dark/tick-green-small.png
new file mode 100644
index 000000000..54cf5d024
Binary files /dev/null and b/rtdata/images/themed/png/dark/tick-green-small.png differ
diff --git a/rtdata/images/themed/png/dark/tick-green.png b/rtdata/images/themed/png/dark/tick-green.png
new file mode 100644
index 000000000..2458734b2
Binary files /dev/null and b/rtdata/images/themed/png/dark/tick-green.png differ
diff --git a/rtdata/images/themed/png/dark/tick-hollow-small.png b/rtdata/images/themed/png/dark/tick-hollow-small.png
new file mode 100644
index 000000000..e5e492deb
Binary files /dev/null and b/rtdata/images/themed/png/dark/tick-hollow-small.png differ
diff --git a/rtdata/images/themed/png/dark/tick-small.png b/rtdata/images/themed/png/dark/tick-small.png
new file mode 100644
index 000000000..8ee5e5516
Binary files /dev/null and b/rtdata/images/themed/png/dark/tick-small.png differ
diff --git a/rtdata/images/themed/png/dark/tick.png b/rtdata/images/themed/png/dark/tick.png
new file mode 100644
index 000000000..5318ae4d5
Binary files /dev/null and b/rtdata/images/themed/png/dark/tick.png differ
diff --git a/rtdata/images/themed/png/dark/transform.png b/rtdata/images/themed/png/dark/transform.png
new file mode 100644
index 000000000..30cd76dd6
Binary files /dev/null and b/rtdata/images/themed/png/dark/transform.png differ
diff --git a/rtdata/images/themed/png/dark/trash-delete.png b/rtdata/images/themed/png/dark/trash-delete.png
new file mode 100644
index 000000000..1a7c084aa
Binary files /dev/null and b/rtdata/images/themed/png/dark/trash-delete.png differ
diff --git a/rtdata/images/themed/png/dark/trash-empty-show.png b/rtdata/images/themed/png/dark/trash-empty-show.png
new file mode 100644
index 000000000..983979634
Binary files /dev/null and b/rtdata/images/themed/png/dark/trash-empty-show.png differ
diff --git a/rtdata/images/themed/png/dark/trash-empty.png b/rtdata/images/themed/png/dark/trash-empty.png
new file mode 100644
index 000000000..a1b92354e
Binary files /dev/null and b/rtdata/images/themed/png/dark/trash-empty.png differ
diff --git a/rtdata/images/themed/png/dark/trash-full-show.png b/rtdata/images/themed/png/dark/trash-full-show.png
new file mode 100644
index 000000000..1c1c7aa17
Binary files /dev/null and b/rtdata/images/themed/png/dark/trash-full-show.png differ
diff --git a/rtdata/images/themed/png/dark/trash-full.png b/rtdata/images/themed/png/dark/trash-full.png
new file mode 100644
index 000000000..699d2b8ac
Binary files /dev/null and b/rtdata/images/themed/png/dark/trash-full.png differ
diff --git a/rtdata/images/themed/png/dark/trash-hide-deleted.png b/rtdata/images/themed/png/dark/trash-hide-deleted.png
new file mode 100644
index 000000000..ffbb9f391
Binary files /dev/null and b/rtdata/images/themed/png/dark/trash-hide-deleted.png differ
diff --git a/rtdata/images/themed/png/dark/trash-remove-small.png b/rtdata/images/themed/png/dark/trash-remove-small.png
new file mode 100644
index 000000000..75fd6493c
Binary files /dev/null and b/rtdata/images/themed/png/dark/trash-remove-small.png differ
diff --git a/rtdata/images/themed/png/dark/trash-remove.png b/rtdata/images/themed/png/dark/trash-remove.png
new file mode 100644
index 000000000..f9dc4bde7
Binary files /dev/null and b/rtdata/images/themed/png/dark/trash-remove.png differ
diff --git a/rtdata/images/themed/png/dark/trash-show.png b/rtdata/images/themed/png/dark/trash-show.png
new file mode 100644
index 000000000..983979634
Binary files /dev/null and b/rtdata/images/themed/png/dark/trash-show.png differ
diff --git a/rtdata/images/themed/png/dark/trash-small.png b/rtdata/images/themed/png/dark/trash-small.png
new file mode 100644
index 000000000..2a19f041c
Binary files /dev/null and b/rtdata/images/themed/png/dark/trash-small.png differ
diff --git a/rtdata/images/themed/png/dark/undo-all.png b/rtdata/images/themed/png/dark/undo-all.png
new file mode 100644
index 000000000..7f577140b
Binary files /dev/null and b/rtdata/images/themed/png/dark/undo-all.png differ
diff --git a/rtdata/images/themed/png/dark/undo-small.png b/rtdata/images/themed/png/dark/undo-small.png
new file mode 100644
index 000000000..5649efd39
Binary files /dev/null and b/rtdata/images/themed/png/dark/undo-small.png differ
diff --git a/rtdata/images/themed/png/dark/undo.png b/rtdata/images/themed/png/dark/undo.png
new file mode 100644
index 000000000..3e0a28d1e
Binary files /dev/null and b/rtdata/images/themed/png/dark/undo.png differ
diff --git a/rtdata/images/themed/png/dark/warning-highlights.png b/rtdata/images/themed/png/dark/warning-highlights.png
new file mode 100644
index 000000000..61ec734ca
Binary files /dev/null and b/rtdata/images/themed/png/dark/warning-highlights.png differ
diff --git a/rtdata/images/themed/png/dark/warning-shadows.png b/rtdata/images/themed/png/dark/warning-shadows.png
new file mode 100644
index 000000000..c5e83dad6
Binary files /dev/null and b/rtdata/images/themed/png/dark/warning-shadows.png differ
diff --git a/rtdata/images/themed/png/dark/wavelets.png b/rtdata/images/themed/png/dark/wavelets.png
new file mode 100644
index 000000000..664fa8196
Binary files /dev/null and b/rtdata/images/themed/png/dark/wavelets.png differ
diff --git a/rtdata/images/themed/png/dark/wb-auto-small.png b/rtdata/images/themed/png/dark/wb-auto-small.png
new file mode 100644
index 000000000..e557048eb
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-auto-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-auto.png b/rtdata/images/themed/png/dark/wb-auto.png
new file mode 100644
index 000000000..e2f033360
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-auto.png differ
diff --git a/rtdata/images/themed/png/dark/wb-camera-small.png b/rtdata/images/themed/png/dark/wb-camera-small.png
new file mode 100644
index 000000000..69c869445
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-camera-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-camera.png b/rtdata/images/themed/png/dark/wb-camera.png
new file mode 100644
index 000000000..8749579d0
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-camera.png differ
diff --git a/rtdata/images/themed/png/dark/wb-cloudy-small.png b/rtdata/images/themed/png/dark/wb-cloudy-small.png
new file mode 100644
index 000000000..175d88f1a
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-cloudy-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-cloudy.png b/rtdata/images/themed/png/dark/wb-cloudy.png
new file mode 100644
index 000000000..1c394b709
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-cloudy.png differ
diff --git a/rtdata/images/themed/png/dark/wb-custom-small.png b/rtdata/images/themed/png/dark/wb-custom-small.png
new file mode 100644
index 000000000..2f3fcb517
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-custom-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-custom.png b/rtdata/images/themed/png/dark/wb-custom.png
new file mode 100644
index 000000000..db9abc03c
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-custom.png differ
diff --git a/rtdata/images/themed/png/dark/wb-flash-small.png b/rtdata/images/themed/png/dark/wb-flash-small.png
new file mode 100644
index 000000000..1bc051cd4
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-flash-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-flash.png b/rtdata/images/themed/png/dark/wb-flash.png
new file mode 100644
index 000000000..d460a0569
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-flash.png differ
diff --git a/rtdata/images/themed/png/dark/wb-fluorescent-small.png b/rtdata/images/themed/png/dark/wb-fluorescent-small.png
new file mode 100644
index 000000000..3c7882252
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-fluorescent-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-fluorescent.png b/rtdata/images/themed/png/dark/wb-fluorescent.png
new file mode 100644
index 000000000..c994ee9dd
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-fluorescent.png differ
diff --git a/rtdata/images/themed/png/dark/wb-lamp-small.png b/rtdata/images/themed/png/dark/wb-lamp-small.png
new file mode 100644
index 000000000..ea5f790c3
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-lamp-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-lamp.png b/rtdata/images/themed/png/dark/wb-lamp.png
new file mode 100644
index 000000000..b0d3df3e5
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-lamp.png differ
diff --git a/rtdata/images/themed/png/dark/wb-led-small.png b/rtdata/images/themed/png/dark/wb-led-small.png
new file mode 100644
index 000000000..dc4385c94
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-led-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-led.png b/rtdata/images/themed/png/dark/wb-led.png
new file mode 100644
index 000000000..dfdb25191
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-led.png differ
diff --git a/rtdata/images/themed/png/dark/wb-shade-small.png b/rtdata/images/themed/png/dark/wb-shade-small.png
new file mode 100644
index 000000000..255c021a6
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-shade-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-shade.png b/rtdata/images/themed/png/dark/wb-shade.png
new file mode 100644
index 000000000..2be98acf6
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-shade.png differ
diff --git a/rtdata/images/themed/png/dark/wb-sun-small.png b/rtdata/images/themed/png/dark/wb-sun-small.png
new file mode 100644
index 000000000..a7de769df
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-sun-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-sun.png b/rtdata/images/themed/png/dark/wb-sun.png
new file mode 100644
index 000000000..e65ee2a80
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-sun.png differ
diff --git a/rtdata/images/themed/png/dark/wb-tungsten-small.png b/rtdata/images/themed/png/dark/wb-tungsten-small.png
new file mode 100644
index 000000000..6f958cd59
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-tungsten-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-tungsten.png b/rtdata/images/themed/png/dark/wb-tungsten.png
new file mode 100644
index 000000000..2c71f66ef
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-tungsten.png differ
diff --git a/rtdata/images/themed/png/dark/wb-water-small.png b/rtdata/images/themed/png/dark/wb-water-small.png
new file mode 100644
index 000000000..2ecb58552
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-water-small.png differ
diff --git a/rtdata/images/themed/png/dark/wb-water.png b/rtdata/images/themed/png/dark/wb-water.png
new file mode 100644
index 000000000..7bc55c153
Binary files /dev/null and b/rtdata/images/themed/png/dark/wb-water.png differ
diff --git a/rtdata/images/themed/png/dark/window-add.png b/rtdata/images/themed/png/dark/window-add.png
new file mode 100644
index 000000000..4364b1a13
Binary files /dev/null and b/rtdata/images/themed/png/dark/window-add.png differ
diff --git a/rtdata/images/themed/png/light/add-small.png b/rtdata/images/themed/png/light/add-small.png
new file mode 100644
index 000000000..59211ace6
Binary files /dev/null and b/rtdata/images/themed/png/light/add-small.png differ
diff --git a/rtdata/images/themed/png/light/add.png b/rtdata/images/themed/png/light/add.png
new file mode 100644
index 000000000..88b1c285d
Binary files /dev/null and b/rtdata/images/themed/png/light/add.png differ
diff --git a/rtdata/images/themed/png/light/aperture.png b/rtdata/images/themed/png/light/aperture.png
new file mode 100644
index 000000000..70e8e0be5
Binary files /dev/null and b/rtdata/images/themed/png/light/aperture.png differ
diff --git a/rtdata/images/themed/png/light/arrow-down-small.png b/rtdata/images/themed/png/light/arrow-down-small.png
new file mode 100644
index 000000000..ab76bb3cc
Binary files /dev/null and b/rtdata/images/themed/png/light/arrow-down-small.png differ
diff --git a/rtdata/images/themed/png/light/arrow-left-small.png b/rtdata/images/themed/png/light/arrow-left-small.png
new file mode 100644
index 000000000..2673b7445
Binary files /dev/null and b/rtdata/images/themed/png/light/arrow-left-small.png differ
diff --git a/rtdata/images/themed/png/light/arrow-right-small.png b/rtdata/images/themed/png/light/arrow-right-small.png
new file mode 100644
index 000000000..228cecd3d
Binary files /dev/null and b/rtdata/images/themed/png/light/arrow-right-small.png differ
diff --git a/rtdata/images/themed/png/light/arrow-up-small.png b/rtdata/images/themed/png/light/arrow-up-small.png
new file mode 100644
index 000000000..6e8061207
Binary files /dev/null and b/rtdata/images/themed/png/light/arrow-up-small.png differ
diff --git a/rtdata/images/themed/png/light/arrow-updown.png b/rtdata/images/themed/png/light/arrow-updown.png
new file mode 100644
index 000000000..bb0ccc5dc
Binary files /dev/null and b/rtdata/images/themed/png/light/arrow-updown.png differ
diff --git a/rtdata/images/themed/png/light/arrow2-left.png b/rtdata/images/themed/png/light/arrow2-left.png
new file mode 100644
index 000000000..4ac761b76
Binary files /dev/null and b/rtdata/images/themed/png/light/arrow2-left.png differ
diff --git a/rtdata/images/themed/png/light/arrow2-right.png b/rtdata/images/themed/png/light/arrow2-right.png
new file mode 100644
index 000000000..75d150843
Binary files /dev/null and b/rtdata/images/themed/png/light/arrow2-right.png differ
diff --git a/rtdata/images/themed/png/light/atom.png b/rtdata/images/themed/png/light/atom.png
new file mode 100644
index 000000000..df3dc8bdf
Binary files /dev/null and b/rtdata/images/themed/png/light/atom.png differ
diff --git a/rtdata/images/themed/png/light/bayer.png b/rtdata/images/themed/png/light/bayer.png
new file mode 100644
index 000000000..c85ce844e
Binary files /dev/null and b/rtdata/images/themed/png/light/bayer.png differ
diff --git a/rtdata/images/themed/png/light/beforeafter.png b/rtdata/images/themed/png/light/beforeafter.png
new file mode 100644
index 000000000..fb7e7ce55
Binary files /dev/null and b/rtdata/images/themed/png/light/beforeafter.png differ
diff --git a/rtdata/images/themed/png/light/cancel-small.png b/rtdata/images/themed/png/light/cancel-small.png
new file mode 100644
index 000000000..8c5d91145
Binary files /dev/null and b/rtdata/images/themed/png/light/cancel-small.png differ
diff --git a/rtdata/images/themed/png/light/cancel.png b/rtdata/images/themed/png/light/cancel.png
new file mode 100644
index 000000000..1a48a2e44
Binary files /dev/null and b/rtdata/images/themed/png/light/cancel.png differ
diff --git a/rtdata/images/themed/png/light/circle-black-small.png b/rtdata/images/themed/png/light/circle-black-small.png
new file mode 100644
index 000000000..f18a415b6
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-black-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-blue-green-small.png b/rtdata/images/themed/png/light/circle-blue-green-small.png
new file mode 100644
index 000000000..247931823
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-blue-green-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-blue-red-small.png b/rtdata/images/themed/png/light/circle-blue-red-small.png
new file mode 100644
index 000000000..d88a01330
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-blue-red-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-blue-small.png b/rtdata/images/themed/png/light/circle-blue-small.png
new file mode 100644
index 000000000..2c8ff48fd
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-blue-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-blue-yellow-small.png b/rtdata/images/themed/png/light/circle-blue-yellow-small.png
new file mode 100644
index 000000000..0585b2195
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-blue-yellow-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-cyan-red-small.png b/rtdata/images/themed/png/light/circle-cyan-red-small.png
new file mode 100644
index 000000000..ed7003161
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-cyan-red-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-cyan-small.png b/rtdata/images/themed/png/light/circle-cyan-small.png
new file mode 100644
index 000000000..84f873a2c
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-cyan-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-darkgray-small.png b/rtdata/images/themed/png/light/circle-darkgray-small.png
new file mode 100644
index 000000000..e706b1eba
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-darkgray-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-empty-blue-small.png b/rtdata/images/themed/png/light/circle-empty-blue-small.png
new file mode 100644
index 000000000..d53b3516e
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-empty-blue-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-empty-darkgray-small.png b/rtdata/images/themed/png/light/circle-empty-darkgray-small.png
new file mode 100644
index 000000000..4f0f0f4c7
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-empty-darkgray-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-empty-gray-small.png b/rtdata/images/themed/png/light/circle-empty-gray-small.png
new file mode 100644
index 000000000..b3a57c83b
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-empty-gray-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-empty-green-small.png b/rtdata/images/themed/png/light/circle-empty-green-small.png
new file mode 100644
index 000000000..3b1444d37
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-empty-green-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-empty-purple-small.png b/rtdata/images/themed/png/light/circle-empty-purple-small.png
new file mode 100644
index 000000000..e61da8e9f
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-empty-purple-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-empty-red-small.png b/rtdata/images/themed/png/light/circle-empty-red-small.png
new file mode 100644
index 000000000..bf8035931
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-empty-red-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-empty-yellow-small.png b/rtdata/images/themed/png/light/circle-empty-yellow-small.png
new file mode 100644
index 000000000..9a3ca9bd8
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-empty-yellow-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-gray-blue-small.png b/rtdata/images/themed/png/light/circle-gray-blue-small.png
new file mode 100644
index 000000000..01d5da881
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-gray-blue-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-gray-green-small.png b/rtdata/images/themed/png/light/circle-gray-green-small.png
new file mode 100644
index 000000000..2290b708f
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-gray-green-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-gray-red-small.png b/rtdata/images/themed/png/light/circle-gray-red-small.png
new file mode 100644
index 000000000..29afda33b
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-gray-red-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-gray-small.png b/rtdata/images/themed/png/light/circle-gray-small.png
new file mode 100644
index 000000000..18ad6330a
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-gray-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-green-blue-small.png b/rtdata/images/themed/png/light/circle-green-blue-small.png
new file mode 100644
index 000000000..1d6e60252
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-green-blue-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-green-red-small.png b/rtdata/images/themed/png/light/circle-green-red-small.png
new file mode 100644
index 000000000..96f86b1b9
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-green-red-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-green-small.png b/rtdata/images/themed/png/light/circle-green-small.png
new file mode 100644
index 000000000..88270e0cb
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-green-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-magenta-small.png b/rtdata/images/themed/png/light/circle-magenta-small.png
new file mode 100644
index 000000000..cce26e1f2
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-magenta-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-orange-small.png b/rtdata/images/themed/png/light/circle-orange-small.png
new file mode 100644
index 000000000..5894f0987
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-orange-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-purple-small.png b/rtdata/images/themed/png/light/circle-purple-small.png
new file mode 100644
index 000000000..9fe4eb0d6
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-purple-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-red-blue-small.png b/rtdata/images/themed/png/light/circle-red-blue-small.png
new file mode 100644
index 000000000..e70ef22f6
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-red-blue-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-red-cyan-small.png b/rtdata/images/themed/png/light/circle-red-cyan-small.png
new file mode 100644
index 000000000..92b03b953
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-red-cyan-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-red-green-small.png b/rtdata/images/themed/png/light/circle-red-green-small.png
new file mode 100644
index 000000000..4572e019f
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-red-green-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-red-small.png b/rtdata/images/themed/png/light/circle-red-small.png
new file mode 100644
index 000000000..a8c9cecec
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-red-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-white-small.png b/rtdata/images/themed/png/light/circle-white-small.png
new file mode 100644
index 000000000..acf4f8b76
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-white-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-yellow-blue-small.png b/rtdata/images/themed/png/light/circle-yellow-blue-small.png
new file mode 100644
index 000000000..1f7aec9f2
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-yellow-blue-small.png differ
diff --git a/rtdata/images/themed/png/light/circle-yellow-small.png b/rtdata/images/themed/png/light/circle-yellow-small.png
new file mode 100644
index 000000000..1c5678ac2
Binary files /dev/null and b/rtdata/images/themed/png/light/circle-yellow-small.png differ
diff --git a/rtdata/images/themed/png/light/color-circles.png b/rtdata/images/themed/png/light/color-circles.png
new file mode 100644
index 000000000..0be8fdacc
Binary files /dev/null and b/rtdata/images/themed/png/light/color-circles.png differ
diff --git a/rtdata/images/themed/png/light/color-picker-add.png b/rtdata/images/themed/png/light/color-picker-add.png
new file mode 100644
index 000000000..b1f5b7424
Binary files /dev/null and b/rtdata/images/themed/png/light/color-picker-add.png differ
diff --git a/rtdata/images/themed/png/light/color-picker-hide.png b/rtdata/images/themed/png/light/color-picker-hide.png
new file mode 100644
index 000000000..2a0ae672a
Binary files /dev/null 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
new file mode 100644
index 000000000..aa4eb4f06
Binary files /dev/null and b/rtdata/images/themed/png/light/color-picker-show.png differ
diff --git a/rtdata/images/themed/png/light/color-picker.png b/rtdata/images/themed/png/light/color-picker.png
new file mode 100644
index 000000000..7a4d746a5
Binary files /dev/null and b/rtdata/images/themed/png/light/color-picker.png differ
diff --git a/rtdata/images/themed/png/light/contrastmask-off.png b/rtdata/images/themed/png/light/contrastmask-off.png
new file mode 100644
index 000000000..b3df60148
Binary files /dev/null and b/rtdata/images/themed/png/light/contrastmask-off.png differ
diff --git a/rtdata/images/themed/png/light/contrastmask-on.png b/rtdata/images/themed/png/light/contrastmask-on.png
new file mode 100644
index 000000000..064ed7e9b
Binary files /dev/null and b/rtdata/images/themed/png/light/contrastmask-on.png differ
diff --git a/rtdata/images/themed/png/light/copy.png b/rtdata/images/themed/png/light/copy.png
new file mode 100644
index 000000000..bd4523ea2
Binary files /dev/null and b/rtdata/images/themed/png/light/copy.png differ
diff --git a/rtdata/images/themed/png/light/crop-auto-small.png b/rtdata/images/themed/png/light/crop-auto-small.png
new file mode 100644
index 000000000..bc3de2dc2
Binary files /dev/null and b/rtdata/images/themed/png/light/crop-auto-small.png differ
diff --git a/rtdata/images/themed/png/light/crop-auto.png b/rtdata/images/themed/png/light/crop-auto.png
new file mode 100644
index 000000000..5499df93f
Binary files /dev/null and b/rtdata/images/themed/png/light/crop-auto.png differ
diff --git a/rtdata/images/themed/png/light/crop-small.png b/rtdata/images/themed/png/light/crop-small.png
new file mode 100644
index 000000000..9f345a6ef
Binary files /dev/null and b/rtdata/images/themed/png/light/crop-small.png differ
diff --git a/rtdata/images/themed/png/light/crop.png b/rtdata/images/themed/png/light/crop.png
new file mode 100644
index 000000000..83ef5a955
Binary files /dev/null and b/rtdata/images/themed/png/light/crop.png differ
diff --git a/rtdata/images/themed/png/light/crossed-arrows-in.png b/rtdata/images/themed/png/light/crossed-arrows-in.png
new file mode 100644
index 000000000..f10a4a058
Binary files /dev/null and b/rtdata/images/themed/png/light/crossed-arrows-in.png differ
diff --git a/rtdata/images/themed/png/light/crossed-arrows-out.png b/rtdata/images/themed/png/light/crossed-arrows-out.png
new file mode 100644
index 000000000..410e65f3d
Binary files /dev/null and b/rtdata/images/themed/png/light/crossed-arrows-out.png differ
diff --git a/rtdata/images/themed/png/light/crosshair-adjust.png b/rtdata/images/themed/png/light/crosshair-adjust.png
new file mode 100644
index 000000000..d0a11b753
Binary files /dev/null and b/rtdata/images/themed/png/light/crosshair-adjust.png differ
diff --git a/rtdata/images/themed/png/light/crosshair.png b/rtdata/images/themed/png/light/crosshair.png
new file mode 100644
index 000000000..078512803
Binary files /dev/null and b/rtdata/images/themed/png/light/crosshair.png differ
diff --git a/rtdata/images/themed/png/light/curve-controlpoints-small.png b/rtdata/images/themed/png/light/curve-controlpoints-small.png
new file mode 100644
index 000000000..2be1333ff
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-controlpoints-small.png differ
diff --git a/rtdata/images/themed/png/light/curve-controlpoints.png b/rtdata/images/themed/png/light/curve-controlpoints.png
new file mode 100644
index 000000000..cdd7cdd3a
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-controlpoints.png differ
diff --git a/rtdata/images/themed/png/light/curve-flat-small.png b/rtdata/images/themed/png/light/curve-flat-small.png
new file mode 100644
index 000000000..17959e6ac
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-flat-small.png differ
diff --git a/rtdata/images/themed/png/light/curve-flat.png b/rtdata/images/themed/png/light/curve-flat.png
new file mode 100644
index 000000000..976281d49
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-flat.png differ
diff --git a/rtdata/images/themed/png/light/curve-linear-small.png b/rtdata/images/themed/png/light/curve-linear-small.png
new file mode 100644
index 000000000..53b07f616
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-linear-small.png differ
diff --git a/rtdata/images/themed/png/light/curve-linear.png b/rtdata/images/themed/png/light/curve-linear.png
new file mode 100644
index 000000000..a3d9105dd
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-linear.png differ
diff --git a/rtdata/images/themed/png/light/curve-nurbs-small.png b/rtdata/images/themed/png/light/curve-nurbs-small.png
new file mode 100644
index 000000000..f970852b5
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-nurbs-small.png differ
diff --git a/rtdata/images/themed/png/light/curve-nurbs.png b/rtdata/images/themed/png/light/curve-nurbs.png
new file mode 100644
index 000000000..ad9b3eb87
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-nurbs.png differ
diff --git a/rtdata/images/themed/png/light/curve-parametric-small.png b/rtdata/images/themed/png/light/curve-parametric-small.png
new file mode 100644
index 000000000..2acba010c
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-parametric-small.png differ
diff --git a/rtdata/images/themed/png/light/curve-parametric.png b/rtdata/images/themed/png/light/curve-parametric.png
new file mode 100644
index 000000000..a29a7529b
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-parametric.png differ
diff --git a/rtdata/images/themed/png/light/curve-spline-small.png b/rtdata/images/themed/png/light/curve-spline-small.png
new file mode 100644
index 000000000..6ea7b93c9
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-spline-small.png differ
diff --git a/rtdata/images/themed/png/light/curve-spline.png b/rtdata/images/themed/png/light/curve-spline.png
new file mode 100644
index 000000000..c7318df5a
Binary files /dev/null and b/rtdata/images/themed/png/light/curve-spline.png differ
diff --git a/rtdata/images/themed/png/light/detail.png b/rtdata/images/themed/png/light/detail.png
new file mode 100644
index 000000000..45ef517d0
Binary files /dev/null and b/rtdata/images/themed/png/light/detail.png differ
diff --git a/rtdata/images/themed/png/light/device-floppy.png b/rtdata/images/themed/png/light/device-floppy.png
new file mode 100644
index 000000000..bc0ec8c30
Binary files /dev/null and b/rtdata/images/themed/png/light/device-floppy.png differ
diff --git a/rtdata/images/themed/png/light/device-hdd.png b/rtdata/images/themed/png/light/device-hdd.png
new file mode 100644
index 000000000..4477bfb21
Binary files /dev/null and b/rtdata/images/themed/png/light/device-hdd.png differ
diff --git a/rtdata/images/themed/png/light/device-network.png b/rtdata/images/themed/png/light/device-network.png
new file mode 100644
index 000000000..3d2f69efe
Binary files /dev/null and b/rtdata/images/themed/png/light/device-network.png differ
diff --git a/rtdata/images/themed/png/light/device-optical.png b/rtdata/images/themed/png/light/device-optical.png
new file mode 100644
index 000000000..ca6c5bd32
Binary files /dev/null and b/rtdata/images/themed/png/light/device-optical.png differ
diff --git a/rtdata/images/themed/png/light/device-usb.png b/rtdata/images/themed/png/light/device-usb.png
new file mode 100644
index 000000000..30a43f7fe
Binary files /dev/null and b/rtdata/images/themed/png/light/device-usb.png differ
diff --git a/rtdata/images/themed/png/light/distortion-auto-small.png b/rtdata/images/themed/png/light/distortion-auto-small.png
new file mode 100644
index 000000000..385c37307
Binary files /dev/null and b/rtdata/images/themed/png/light/distortion-auto-small.png differ
diff --git a/rtdata/images/themed/png/light/distortion-auto.png b/rtdata/images/themed/png/light/distortion-auto.png
new file mode 100644
index 000000000..242791d1b
Binary files /dev/null and b/rtdata/images/themed/png/light/distortion-auto.png differ
diff --git a/rtdata/images/themed/png/light/distortion-barrel-small.png b/rtdata/images/themed/png/light/distortion-barrel-small.png
new file mode 100644
index 000000000..5ec7c232b
Binary files /dev/null and b/rtdata/images/themed/png/light/distortion-barrel-small.png differ
diff --git a/rtdata/images/themed/png/light/distortion-barrel.png b/rtdata/images/themed/png/light/distortion-barrel.png
new file mode 100644
index 000000000..ab04051ea
Binary files /dev/null and b/rtdata/images/themed/png/light/distortion-barrel.png differ
diff --git a/rtdata/images/themed/png/light/distortion-pincushion-small.png b/rtdata/images/themed/png/light/distortion-pincushion-small.png
new file mode 100644
index 000000000..12bbe630d
Binary files /dev/null and b/rtdata/images/themed/png/light/distortion-pincushion-small.png differ
diff --git a/rtdata/images/themed/png/light/distortion-pincushion.png b/rtdata/images/themed/png/light/distortion-pincushion.png
new file mode 100644
index 000000000..a927e90c2
Binary files /dev/null and b/rtdata/images/themed/png/light/distortion-pincushion.png differ
diff --git a/rtdata/images/themed/png/light/edit-point.png b/rtdata/images/themed/png/light/edit-point.png
new file mode 100644
index 000000000..73090d4aa
Binary files /dev/null and b/rtdata/images/themed/png/light/edit-point.png differ
diff --git a/rtdata/images/themed/png/light/equilizer-narrow.png b/rtdata/images/themed/png/light/equilizer-narrow.png
new file mode 100644
index 000000000..3e40c173c
Binary files /dev/null and b/rtdata/images/themed/png/light/equilizer-narrow.png differ
diff --git a/rtdata/images/themed/png/light/equilizer-wide.png b/rtdata/images/themed/png/light/equilizer-wide.png
new file mode 100644
index 000000000..41b0f72f0
Binary files /dev/null and b/rtdata/images/themed/png/light/equilizer-wide.png differ
diff --git a/rtdata/images/themed/png/light/expander-closed-small.png b/rtdata/images/themed/png/light/expander-closed-small.png
new file mode 100644
index 000000000..23fcef4a1
Binary files /dev/null and b/rtdata/images/themed/png/light/expander-closed-small.png differ
diff --git a/rtdata/images/themed/png/light/expander-open-small.png b/rtdata/images/themed/png/light/expander-open-small.png
new file mode 100644
index 000000000..d4ab66ab6
Binary files /dev/null and b/rtdata/images/themed/png/light/expander-open-small.png differ
diff --git a/rtdata/images/themed/png/light/exposure.png b/rtdata/images/themed/png/light/exposure.png
new file mode 100644
index 000000000..1259b9a5c
Binary files /dev/null and b/rtdata/images/themed/png/light/exposure.png differ
diff --git a/rtdata/images/themed/png/light/filetype-hdr.png b/rtdata/images/themed/png/light/filetype-hdr.png
new file mode 100644
index 000000000..7365fb560
Binary files /dev/null and b/rtdata/images/themed/png/light/filetype-hdr.png differ
diff --git a/rtdata/images/themed/png/light/filetype-ps.png b/rtdata/images/themed/png/light/filetype-ps.png
new file mode 100644
index 000000000..982ed9736
Binary files /dev/null and b/rtdata/images/themed/png/light/filetype-ps.png differ
diff --git a/rtdata/images/themed/png/light/filter-clear.png b/rtdata/images/themed/png/light/filter-clear.png
new file mode 100644
index 000000000..f07e3a901
Binary files /dev/null and b/rtdata/images/themed/png/light/filter-clear.png differ
diff --git a/rtdata/images/themed/png/light/filter-original.png b/rtdata/images/themed/png/light/filter-original.png
new file mode 100644
index 000000000..5de915274
Binary files /dev/null and b/rtdata/images/themed/png/light/filter-original.png differ
diff --git a/rtdata/images/themed/png/light/filter-original2.png b/rtdata/images/themed/png/light/filter-original2.png
new file mode 100644
index 000000000..c20c214aa
Binary files /dev/null and b/rtdata/images/themed/png/light/filter-original2.png differ
diff --git a/rtdata/images/themed/png/light/filter.png b/rtdata/images/themed/png/light/filter.png
new file mode 100644
index 000000000..4a0c95916
Binary files /dev/null and b/rtdata/images/themed/png/light/filter.png differ
diff --git a/rtdata/images/themed/png/light/flip-horizontal.png b/rtdata/images/themed/png/light/flip-horizontal.png
new file mode 100644
index 000000000..9d5993527
Binary files /dev/null and b/rtdata/images/themed/png/light/flip-horizontal.png differ
diff --git a/rtdata/images/themed/png/light/flip-vertical.png b/rtdata/images/themed/png/light/flip-vertical.png
new file mode 100644
index 000000000..6249c98b4
Binary files /dev/null and b/rtdata/images/themed/png/light/flip-vertical.png differ
diff --git a/rtdata/images/themed/png/light/focusscreen-off.png b/rtdata/images/themed/png/light/focusscreen-off.png
new file mode 100644
index 000000000..106ec4035
Binary files /dev/null and b/rtdata/images/themed/png/light/focusscreen-off.png differ
diff --git a/rtdata/images/themed/png/light/focusscreen-on.png b/rtdata/images/themed/png/light/focusscreen-on.png
new file mode 100644
index 000000000..f9c418b92
Binary files /dev/null and b/rtdata/images/themed/png/light/focusscreen-on.png differ
diff --git a/rtdata/images/themed/png/light/folder-closed-home-small.png b/rtdata/images/themed/png/light/folder-closed-home-small.png
new file mode 100644
index 000000000..fff07d768
Binary files /dev/null and b/rtdata/images/themed/png/light/folder-closed-home-small.png differ
diff --git a/rtdata/images/themed/png/light/folder-closed-home.png b/rtdata/images/themed/png/light/folder-closed-home.png
new file mode 100644
index 000000000..27eb6d355
Binary files /dev/null and b/rtdata/images/themed/png/light/folder-closed-home.png differ
diff --git a/rtdata/images/themed/png/light/folder-closed-recent-small.png b/rtdata/images/themed/png/light/folder-closed-recent-small.png
new file mode 100644
index 000000000..400f79a67
Binary files /dev/null and b/rtdata/images/themed/png/light/folder-closed-recent-small.png differ
diff --git a/rtdata/images/themed/png/light/folder-closed-recent.png b/rtdata/images/themed/png/light/folder-closed-recent.png
new file mode 100644
index 000000000..4f3755700
Binary files /dev/null and b/rtdata/images/themed/png/light/folder-closed-recent.png differ
diff --git a/rtdata/images/themed/png/light/folder-closed-small.png b/rtdata/images/themed/png/light/folder-closed-small.png
new file mode 100644
index 000000000..89939d9d0
Binary files /dev/null and b/rtdata/images/themed/png/light/folder-closed-small.png differ
diff --git a/rtdata/images/themed/png/light/folder-closed.png b/rtdata/images/themed/png/light/folder-closed.png
new file mode 100644
index 000000000..3f14b84fc
Binary files /dev/null and b/rtdata/images/themed/png/light/folder-closed.png differ
diff --git a/rtdata/images/themed/png/light/folder-open-recent-small.png b/rtdata/images/themed/png/light/folder-open-recent-small.png
new file mode 100644
index 000000000..48aed8e40
Binary files /dev/null and b/rtdata/images/themed/png/light/folder-open-recent-small.png differ
diff --git a/rtdata/images/themed/png/light/folder-open-recent.png b/rtdata/images/themed/png/light/folder-open-recent.png
new file mode 100644
index 000000000..25eabe0d8
Binary files /dev/null and b/rtdata/images/themed/png/light/folder-open-recent.png differ
diff --git a/rtdata/images/themed/png/light/folder-open-small.png b/rtdata/images/themed/png/light/folder-open-small.png
new file mode 100644
index 000000000..6cb4fb877
Binary files /dev/null and b/rtdata/images/themed/png/light/folder-open-small.png differ
diff --git a/rtdata/images/themed/png/light/folder-open.png b/rtdata/images/themed/png/light/folder-open.png
new file mode 100644
index 000000000..0a857b1fd
Binary files /dev/null and b/rtdata/images/themed/png/light/folder-open.png differ
diff --git a/rtdata/images/themed/png/light/fullscreen-enter.png b/rtdata/images/themed/png/light/fullscreen-enter.png
new file mode 100644
index 000000000..b8f52bda8
Binary files /dev/null and b/rtdata/images/themed/png/light/fullscreen-enter.png differ
diff --git a/rtdata/images/themed/png/light/fullscreen-leave.png b/rtdata/images/themed/png/light/fullscreen-leave.png
new file mode 100644
index 000000000..3a96de2dd
Binary files /dev/null and b/rtdata/images/themed/png/light/fullscreen-leave.png differ
diff --git a/rtdata/images/themed/png/light/gamut-hist.png b/rtdata/images/themed/png/light/gamut-hist.png
new file mode 100644
index 000000000..c1faf7b2e
Binary files /dev/null and b/rtdata/images/themed/png/light/gamut-hist.png differ
diff --git a/rtdata/images/themed/png/light/gamut-plus.png b/rtdata/images/themed/png/light/gamut-plus.png
new file mode 100644
index 000000000..43c0c321a
Binary files /dev/null and b/rtdata/images/themed/png/light/gamut-plus.png differ
diff --git a/rtdata/images/themed/png/light/gamut-softproof.png b/rtdata/images/themed/png/light/gamut-softproof.png
new file mode 100644
index 000000000..832b231fe
Binary files /dev/null and b/rtdata/images/themed/png/light/gamut-softproof.png differ
diff --git a/rtdata/images/themed/png/light/gamut-warning.png b/rtdata/images/themed/png/light/gamut-warning.png
new file mode 100644
index 000000000..882a59530
Binary files /dev/null and b/rtdata/images/themed/png/light/gamut-warning.png differ
diff --git a/rtdata/images/themed/png/light/gamut_srgb_prophoto_xy.png b/rtdata/images/themed/png/light/gamut_srgb_prophoto_xy.png
new file mode 100644
index 000000000..46e8becb9
Binary files /dev/null and b/rtdata/images/themed/png/light/gamut_srgb_prophoto_xy.png differ
diff --git a/rtdata/images/themed/png/light/gears-pause.png b/rtdata/images/themed/png/light/gears-pause.png
new file mode 100644
index 000000000..ef10159f4
Binary files /dev/null and b/rtdata/images/themed/png/light/gears-pause.png differ
diff --git a/rtdata/images/themed/png/light/gears-play.png b/rtdata/images/themed/png/light/gears-play.png
new file mode 100644
index 000000000..c7d534f55
Binary files /dev/null and b/rtdata/images/themed/png/light/gears-play.png differ
diff --git a/rtdata/images/themed/png/light/gears-small.png b/rtdata/images/themed/png/light/gears-small.png
new file mode 100644
index 000000000..84b70358b
Binary files /dev/null and b/rtdata/images/themed/png/light/gears-small.png differ
diff --git a/rtdata/images/themed/png/light/gears.png b/rtdata/images/themed/png/light/gears.png
new file mode 100644
index 000000000..ff76d0cb0
Binary files /dev/null and b/rtdata/images/themed/png/light/gears.png differ
diff --git a/rtdata/images/themed/png/light/goto-end-small.png b/rtdata/images/themed/png/light/goto-end-small.png
new file mode 100644
index 000000000..29d81c231
Binary files /dev/null and b/rtdata/images/themed/png/light/goto-end-small.png differ
diff --git a/rtdata/images/themed/png/light/goto-start-small.png b/rtdata/images/themed/png/light/goto-start-small.png
new file mode 100644
index 000000000..671666740
Binary files /dev/null and b/rtdata/images/themed/png/light/goto-start-small.png differ
diff --git a/rtdata/images/themed/png/light/hand-closed.png b/rtdata/images/themed/png/light/hand-closed.png
new file mode 100644
index 000000000..590d95096
Binary files /dev/null and b/rtdata/images/themed/png/light/hand-closed.png differ
diff --git a/rtdata/images/themed/png/light/hand-open.png b/rtdata/images/themed/png/light/hand-open.png
new file mode 100644
index 000000000..8a180934f
Binary files /dev/null and b/rtdata/images/themed/png/light/hand-open.png differ
diff --git a/rtdata/images/themed/png/light/histogram-bar-off-small.png b/rtdata/images/themed/png/light/histogram-bar-off-small.png
new file mode 100644
index 000000000..b7f022a0a
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-bar-off-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-bar-on-small.png b/rtdata/images/themed/png/light/histogram-bar-on-small.png
new file mode 100644
index 000000000..e38fe436f
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-bar-on-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-bayer-off-small.png b/rtdata/images/themed/png/light/histogram-bayer-off-small.png
new file mode 100644
index 000000000..af1369145
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-bayer-off-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-bayer-on-small.png b/rtdata/images/themed/png/light/histogram-bayer-on-small.png
new file mode 100644
index 000000000..44e23b51b
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-bayer-on-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-blue-off-small.png b/rtdata/images/themed/png/light/histogram-blue-off-small.png
new file mode 100644
index 000000000..8b368ed63
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-blue-off-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-blue-on-small.png b/rtdata/images/themed/png/light/histogram-blue-on-small.png
new file mode 100644
index 000000000..537153043
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-blue-on-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-gold-off-small.png b/rtdata/images/themed/png/light/histogram-gold-off-small.png
new file mode 100644
index 000000000..4272c3ff7
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-gold-off-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-gold-on-small.png b/rtdata/images/themed/png/light/histogram-gold-on-small.png
new file mode 100644
index 000000000..8f32203fd
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-gold-on-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-green-off-small.png b/rtdata/images/themed/png/light/histogram-green-off-small.png
new file mode 100644
index 000000000..395fcac9e
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-green-off-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-green-on-small.png b/rtdata/images/themed/png/light/histogram-green-on-small.png
new file mode 100644
index 000000000..db3f89ef5
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-green-on-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-mode-linear-small.png b/rtdata/images/themed/png/light/histogram-mode-linear-small.png
new file mode 100644
index 000000000..4eafc3c15
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-mode-linear-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-mode-logx-small.png b/rtdata/images/themed/png/light/histogram-mode-logx-small.png
new file mode 100644
index 000000000..2e33b16d7
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-mode-logx-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-mode-logxy-small.png b/rtdata/images/themed/png/light/histogram-mode-logxy-small.png
new file mode 100644
index 000000000..29431e3b4
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-mode-logxy-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-red-off-small.png b/rtdata/images/themed/png/light/histogram-red-off-small.png
new file mode 100644
index 000000000..7d5ea5352
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-red-off-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-red-on-small.png b/rtdata/images/themed/png/light/histogram-red-on-small.png
new file mode 100644
index 000000000..deee136a2
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-red-on-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-silver-off-small.png b/rtdata/images/themed/png/light/histogram-silver-off-small.png
new file mode 100644
index 000000000..d88e879bc
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-silver-off-small.png differ
diff --git a/rtdata/images/themed/png/light/histogram-silver-on-small.png b/rtdata/images/themed/png/light/histogram-silver-on-small.png
new file mode 100644
index 000000000..bdef06144
Binary files /dev/null and b/rtdata/images/themed/png/light/histogram-silver-on-small.png differ
diff --git a/rtdata/images/themed/png/light/info.png b/rtdata/images/themed/png/light/info.png
new file mode 100644
index 000000000..10235714f
Binary files /dev/null and b/rtdata/images/themed/png/light/info.png differ
diff --git a/rtdata/images/themed/png/light/intent-absolute.png b/rtdata/images/themed/png/light/intent-absolute.png
new file mode 100644
index 000000000..ee04d0a11
Binary files /dev/null and b/rtdata/images/themed/png/light/intent-absolute.png differ
diff --git a/rtdata/images/themed/png/light/intent-perceptual.png b/rtdata/images/themed/png/light/intent-perceptual.png
new file mode 100644
index 000000000..1c1e0c283
Binary files /dev/null and b/rtdata/images/themed/png/light/intent-perceptual.png differ
diff --git a/rtdata/images/themed/png/light/intent-relative.png b/rtdata/images/themed/png/light/intent-relative.png
new file mode 100644
index 000000000..4d212b6ab
Binary files /dev/null and b/rtdata/images/themed/png/light/intent-relative.png differ
diff --git a/rtdata/images/themed/png/light/intent-saturation.png b/rtdata/images/themed/png/light/intent-saturation.png
new file mode 100644
index 000000000..26ab655dc
Binary files /dev/null and b/rtdata/images/themed/png/light/intent-saturation.png differ
diff --git a/rtdata/images/themed/png/light/magnifier-1to1-small.png b/rtdata/images/themed/png/light/magnifier-1to1-small.png
new file mode 100644
index 000000000..cfd75532a
Binary files /dev/null and b/rtdata/images/themed/png/light/magnifier-1to1-small.png differ
diff --git a/rtdata/images/themed/png/light/magnifier-1to1.png b/rtdata/images/themed/png/light/magnifier-1to1.png
new file mode 100644
index 000000000..b547f0944
Binary files /dev/null and b/rtdata/images/themed/png/light/magnifier-1to1.png differ
diff --git a/rtdata/images/themed/png/light/magnifier-crop.png b/rtdata/images/themed/png/light/magnifier-crop.png
new file mode 100644
index 000000000..7f4f906f0
Binary files /dev/null and b/rtdata/images/themed/png/light/magnifier-crop.png differ
diff --git a/rtdata/images/themed/png/light/magnifier-fit.png b/rtdata/images/themed/png/light/magnifier-fit.png
new file mode 100644
index 000000000..fdc0bef5f
Binary files /dev/null and b/rtdata/images/themed/png/light/magnifier-fit.png differ
diff --git a/rtdata/images/themed/png/light/magnifier-minus-small.png b/rtdata/images/themed/png/light/magnifier-minus-small.png
new file mode 100644
index 000000000..76b55f975
Binary files /dev/null and b/rtdata/images/themed/png/light/magnifier-minus-small.png differ
diff --git a/rtdata/images/themed/png/light/magnifier-minus.png b/rtdata/images/themed/png/light/magnifier-minus.png
new file mode 100644
index 000000000..22db961c3
Binary files /dev/null and b/rtdata/images/themed/png/light/magnifier-minus.png differ
diff --git a/rtdata/images/themed/png/light/magnifier-plus-small.png b/rtdata/images/themed/png/light/magnifier-plus-small.png
new file mode 100644
index 000000000..54d989e63
Binary files /dev/null and b/rtdata/images/themed/png/light/magnifier-plus-small.png differ
diff --git a/rtdata/images/themed/png/light/magnifier-plus.png b/rtdata/images/themed/png/light/magnifier-plus.png
new file mode 100644
index 000000000..e45ce8d81
Binary files /dev/null and b/rtdata/images/themed/png/light/magnifier-plus.png differ
diff --git a/rtdata/images/themed/png/light/magnifier.png b/rtdata/images/themed/png/light/magnifier.png
new file mode 100644
index 000000000..a7fbdbeda
Binary files /dev/null and b/rtdata/images/themed/png/light/magnifier.png differ
diff --git a/rtdata/images/themed/png/light/metadata.png b/rtdata/images/themed/png/light/metadata.png
new file mode 100644
index 000000000..ba114f5c1
Binary files /dev/null and b/rtdata/images/themed/png/light/metadata.png differ
diff --git a/rtdata/images/themed/png/light/node-move-x.png b/rtdata/images/themed/png/light/node-move-x.png
new file mode 100644
index 000000000..7687ad6e9
Binary files /dev/null and b/rtdata/images/themed/png/light/node-move-x.png differ
diff --git a/rtdata/images/themed/png/light/node-move-xy.png b/rtdata/images/themed/png/light/node-move-xy.png
new file mode 100644
index 000000000..cd426f68c
Binary files /dev/null and b/rtdata/images/themed/png/light/node-move-xy.png differ
diff --git a/rtdata/images/themed/png/light/node-move-y.png b/rtdata/images/themed/png/light/node-move-y.png
new file mode 100644
index 000000000..2fbf0b7a3
Binary files /dev/null and b/rtdata/images/themed/png/light/node-move-y.png differ
diff --git a/rtdata/images/themed/png/light/one-to-one-small.png b/rtdata/images/themed/png/light/one-to-one-small.png
new file mode 100644
index 000000000..8c506609c
Binary files /dev/null and b/rtdata/images/themed/png/light/one-to-one-small.png differ
diff --git a/rtdata/images/themed/png/light/ornament1.png b/rtdata/images/themed/png/light/ornament1.png
new file mode 100644
index 000000000..71b3f1c78
Binary files /dev/null and b/rtdata/images/themed/png/light/ornament1.png differ
diff --git a/rtdata/images/themed/png/light/padlock-locked-small.png b/rtdata/images/themed/png/light/padlock-locked-small.png
new file mode 100644
index 000000000..1b1198f01
Binary files /dev/null and b/rtdata/images/themed/png/light/padlock-locked-small.png differ
diff --git a/rtdata/images/themed/png/light/padlock-unlocked-small.png b/rtdata/images/themed/png/light/padlock-unlocked-small.png
new file mode 100644
index 000000000..96b75f093
Binary files /dev/null and b/rtdata/images/themed/png/light/padlock-unlocked-small.png differ
diff --git a/rtdata/images/themed/png/light/palette-brush.png b/rtdata/images/themed/png/light/palette-brush.png
new file mode 100644
index 000000000..bd208f059
Binary files /dev/null and b/rtdata/images/themed/png/light/palette-brush.png differ
diff --git a/rtdata/images/themed/png/light/panel-to-bottom.png b/rtdata/images/themed/png/light/panel-to-bottom.png
new file mode 100644
index 000000000..e2d532a16
Binary files /dev/null and b/rtdata/images/themed/png/light/panel-to-bottom.png differ
diff --git a/rtdata/images/themed/png/light/panel-to-left.png b/rtdata/images/themed/png/light/panel-to-left.png
new file mode 100644
index 000000000..196fed3c9
Binary files /dev/null and b/rtdata/images/themed/png/light/panel-to-left.png differ
diff --git a/rtdata/images/themed/png/light/panel-to-right.png b/rtdata/images/themed/png/light/panel-to-right.png
new file mode 100644
index 000000000..a9e3b7667
Binary files /dev/null and b/rtdata/images/themed/png/light/panel-to-right.png differ
diff --git a/rtdata/images/themed/png/light/panel-to-top.png b/rtdata/images/themed/png/light/panel-to-top.png
new file mode 100644
index 000000000..dafa6b852
Binary files /dev/null and b/rtdata/images/themed/png/light/panel-to-top.png differ
diff --git a/rtdata/images/themed/png/light/paste.png b/rtdata/images/themed/png/light/paste.png
new file mode 100644
index 000000000..ffefcc323
Binary files /dev/null and b/rtdata/images/themed/png/light/paste.png differ
diff --git a/rtdata/images/themed/png/light/perspective-horizontal-left-small.png b/rtdata/images/themed/png/light/perspective-horizontal-left-small.png
new file mode 100644
index 000000000..f2832c607
Binary files /dev/null and b/rtdata/images/themed/png/light/perspective-horizontal-left-small.png differ
diff --git a/rtdata/images/themed/png/light/perspective-horizontal-left.png b/rtdata/images/themed/png/light/perspective-horizontal-left.png
new file mode 100644
index 000000000..23b24f6aa
Binary files /dev/null and b/rtdata/images/themed/png/light/perspective-horizontal-left.png differ
diff --git a/rtdata/images/themed/png/light/perspective-horizontal-right-small.png b/rtdata/images/themed/png/light/perspective-horizontal-right-small.png
new file mode 100644
index 000000000..e555f0c1e
Binary files /dev/null and b/rtdata/images/themed/png/light/perspective-horizontal-right-small.png differ
diff --git a/rtdata/images/themed/png/light/perspective-horizontal-right.png b/rtdata/images/themed/png/light/perspective-horizontal-right.png
new file mode 100644
index 000000000..7a334ad81
Binary files /dev/null and b/rtdata/images/themed/png/light/perspective-horizontal-right.png differ
diff --git a/rtdata/images/themed/png/light/perspective-vertical-bottom-small.png b/rtdata/images/themed/png/light/perspective-vertical-bottom-small.png
new file mode 100644
index 000000000..12f776add
Binary files /dev/null and b/rtdata/images/themed/png/light/perspective-vertical-bottom-small.png differ
diff --git a/rtdata/images/themed/png/light/perspective-vertical-bottom.png b/rtdata/images/themed/png/light/perspective-vertical-bottom.png
new file mode 100644
index 000000000..c6dbfcd51
Binary files /dev/null and b/rtdata/images/themed/png/light/perspective-vertical-bottom.png differ
diff --git a/rtdata/images/themed/png/light/perspective-vertical-top-small.png b/rtdata/images/themed/png/light/perspective-vertical-top-small.png
new file mode 100644
index 000000000..8202b0e75
Binary files /dev/null and b/rtdata/images/themed/png/light/perspective-vertical-top-small.png differ
diff --git a/rtdata/images/themed/png/light/perspective-vertical-top.png b/rtdata/images/themed/png/light/perspective-vertical-top.png
new file mode 100644
index 000000000..05c0a7fe1
Binary files /dev/null and b/rtdata/images/themed/png/light/perspective-vertical-top.png differ
diff --git a/rtdata/images/themed/png/light/power-inconsistent-small.png b/rtdata/images/themed/png/light/power-inconsistent-small.png
new file mode 100644
index 000000000..2805f8245
Binary files /dev/null and b/rtdata/images/themed/png/light/power-inconsistent-small.png differ
diff --git a/rtdata/images/themed/png/light/power-off-small.png b/rtdata/images/themed/png/light/power-off-small.png
new file mode 100644
index 000000000..6036813a9
Binary files /dev/null and b/rtdata/images/themed/png/light/power-off-small.png differ
diff --git a/rtdata/images/themed/png/light/power-on-small.png b/rtdata/images/themed/png/light/power-on-small.png
new file mode 100644
index 000000000..796aa16e2
Binary files /dev/null and b/rtdata/images/themed/png/light/power-on-small.png differ
diff --git a/rtdata/images/themed/png/light/preferences.png b/rtdata/images/themed/png/light/preferences.png
new file mode 100644
index 000000000..c18a5e2a6
Binary files /dev/null and b/rtdata/images/themed/png/light/preferences.png differ
diff --git a/rtdata/images/themed/png/light/profile-filled.png b/rtdata/images/themed/png/light/profile-filled.png
new file mode 100644
index 000000000..ba549ec63
Binary files /dev/null and b/rtdata/images/themed/png/light/profile-filled.png differ
diff --git a/rtdata/images/themed/png/light/profile-partial.png b/rtdata/images/themed/png/light/profile-partial.png
new file mode 100644
index 000000000..5baed296d
Binary files /dev/null and b/rtdata/images/themed/png/light/profile-partial.png differ
diff --git a/rtdata/images/themed/png/light/redo-all.png b/rtdata/images/themed/png/light/redo-all.png
new file mode 100644
index 000000000..38551bf34
Binary files /dev/null and b/rtdata/images/themed/png/light/redo-all.png differ
diff --git a/rtdata/images/themed/png/light/redo-small.png b/rtdata/images/themed/png/light/redo-small.png
new file mode 100644
index 000000000..6671aa682
Binary files /dev/null and b/rtdata/images/themed/png/light/redo-small.png differ
diff --git a/rtdata/images/themed/png/light/redo.png b/rtdata/images/themed/png/light/redo.png
new file mode 100644
index 000000000..165f4ea29
Binary files /dev/null and b/rtdata/images/themed/png/light/redo.png differ
diff --git a/rtdata/images/themed/png/light/refresh-red-small.png b/rtdata/images/themed/png/light/refresh-red-small.png
new file mode 100644
index 000000000..296035883
Binary files /dev/null and b/rtdata/images/themed/png/light/refresh-red-small.png differ
diff --git a/rtdata/images/themed/png/light/refresh-small.png b/rtdata/images/themed/png/light/refresh-small.png
new file mode 100644
index 000000000..c6c827182
Binary files /dev/null and b/rtdata/images/themed/png/light/refresh-small.png differ
diff --git a/rtdata/images/themed/png/light/refresh.png b/rtdata/images/themed/png/light/refresh.png
new file mode 100644
index 000000000..cc062f1f5
Binary files /dev/null and b/rtdata/images/themed/png/light/refresh.png differ
diff --git a/rtdata/images/themed/png/light/remove-small.png b/rtdata/images/themed/png/light/remove-small.png
new file mode 100644
index 000000000..c9bdc8b83
Binary files /dev/null and b/rtdata/images/themed/png/light/remove-small.png differ
diff --git a/rtdata/images/themed/png/light/remove.png b/rtdata/images/themed/png/light/remove.png
new file mode 100644
index 000000000..5d030627a
Binary files /dev/null and b/rtdata/images/themed/png/light/remove.png differ
diff --git a/rtdata/images/themed/png/light/rotate-left-90.png b/rtdata/images/themed/png/light/rotate-left-90.png
new file mode 100644
index 000000000..7904c82f5
Binary files /dev/null and b/rtdata/images/themed/png/light/rotate-left-90.png differ
diff --git a/rtdata/images/themed/png/light/rotate-left-small.png b/rtdata/images/themed/png/light/rotate-left-small.png
new file mode 100644
index 000000000..f3c94f65a
Binary files /dev/null and b/rtdata/images/themed/png/light/rotate-left-small.png differ
diff --git a/rtdata/images/themed/png/light/rotate-left.png b/rtdata/images/themed/png/light/rotate-left.png
new file mode 100644
index 000000000..5e2b0a201
Binary files /dev/null and b/rtdata/images/themed/png/light/rotate-left.png differ
diff --git a/rtdata/images/themed/png/light/rotate-right-90.png b/rtdata/images/themed/png/light/rotate-right-90.png
new file mode 100644
index 000000000..52fd331dd
Binary files /dev/null and b/rtdata/images/themed/png/light/rotate-right-90.png differ
diff --git a/rtdata/images/themed/png/light/rotate-right-small.png b/rtdata/images/themed/png/light/rotate-right-small.png
new file mode 100644
index 000000000..4fa8f8d19
Binary files /dev/null and b/rtdata/images/themed/png/light/rotate-right-small.png differ
diff --git a/rtdata/images/themed/png/light/rotate-right.png b/rtdata/images/themed/png/light/rotate-right.png
new file mode 100644
index 000000000..c819cbe73
Binary files /dev/null and b/rtdata/images/themed/png/light/rotate-right.png differ
diff --git a/rtdata/images/themed/png/light/rotate-straighten-small.png b/rtdata/images/themed/png/light/rotate-straighten-small.png
new file mode 100644
index 000000000..67190d31a
Binary files /dev/null and b/rtdata/images/themed/png/light/rotate-straighten-small.png differ
diff --git a/rtdata/images/themed/png/light/rotate-straighten.png b/rtdata/images/themed/png/light/rotate-straighten.png
new file mode 100644
index 000000000..a9c2e0805
Binary files /dev/null and b/rtdata/images/themed/png/light/rotate-straighten.png differ
diff --git a/rtdata/images/themed/png/light/save-small.png b/rtdata/images/themed/png/light/save-small.png
new file mode 100644
index 000000000..c296fdb72
Binary files /dev/null and b/rtdata/images/themed/png/light/save-small.png differ
diff --git a/rtdata/images/themed/png/light/save.png b/rtdata/images/themed/png/light/save.png
new file mode 100644
index 000000000..f71542230
Binary files /dev/null and b/rtdata/images/themed/png/light/save.png differ
diff --git a/rtdata/images/themed/png/light/saved-no-small.png b/rtdata/images/themed/png/light/saved-no-small.png
new file mode 100644
index 000000000..68021eda4
Binary files /dev/null and b/rtdata/images/themed/png/light/saved-no-small.png differ
diff --git a/rtdata/images/themed/png/light/saved-yes-small.png b/rtdata/images/themed/png/light/saved-yes-small.png
new file mode 100644
index 000000000..4557ef905
Binary files /dev/null and b/rtdata/images/themed/png/light/saved-yes-small.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.png
new file mode 100644
index 000000000..ff6adb675
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-black-off.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-black-on.png b/rtdata/images/themed/png/light/square-toggle-black-on.png
new file mode 100644
index 000000000..5d6e35c3d
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-black-on.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-blue-off.png b/rtdata/images/themed/png/light/square-toggle-blue-off.png
new file mode 100644
index 000000000..2a9741c0f
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-blue-off.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-blue-on.png b/rtdata/images/themed/png/light/square-toggle-blue-on.png
new file mode 100644
index 000000000..e52337d33
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-blue-on.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-gray-off.png b/rtdata/images/themed/png/light/square-toggle-gray-off.png
new file mode 100644
index 000000000..7e009920f
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-gray-off.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-gray-on.png b/rtdata/images/themed/png/light/square-toggle-gray-on.png
new file mode 100644
index 000000000..64289008a
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-gray-on.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-green-off.png b/rtdata/images/themed/png/light/square-toggle-green-off.png
new file mode 100644
index 000000000..f55cbb8c3
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-green-off.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-green-on.png b/rtdata/images/themed/png/light/square-toggle-green-on.png
new file mode 100644
index 000000000..0c8b9522d
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-green-on.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-luminosity-off.png b/rtdata/images/themed/png/light/square-toggle-luminosity-off.png
new file mode 100644
index 000000000..c6dfe8410
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-luminosity-off.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-luminosity-on.png b/rtdata/images/themed/png/light/square-toggle-luminosity-on.png
new file mode 100644
index 000000000..b45b608d9
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-luminosity-on.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-red-off.png b/rtdata/images/themed/png/light/square-toggle-red-off.png
new file mode 100644
index 000000000..99730ee4b
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-red-off.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-red-on.png b/rtdata/images/themed/png/light/square-toggle-red-on.png
new file mode 100644
index 000000000..e0b91d8b3
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-red-on.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-theme-off.png b/rtdata/images/themed/png/light/square-toggle-theme-off.png
new file mode 100644
index 000000000..449946648
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-theme-off.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-theme-on.png b/rtdata/images/themed/png/light/square-toggle-theme-on.png
new file mode 100644
index 000000000..e59257824
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-theme-on.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-white-off.png b/rtdata/images/themed/png/light/square-toggle-white-off.png
new file mode 100644
index 000000000..b2e5e3611
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-white-off.png differ
diff --git a/rtdata/images/themed/png/light/square-toggle-white-on.png b/rtdata/images/themed/png/light/square-toggle-white-on.png
new file mode 100644
index 000000000..7ff59d927
Binary files /dev/null and b/rtdata/images/themed/png/light/square-toggle-white-on.png differ
diff --git a/rtdata/images/themed/png/light/star-gold-hollow-small.png b/rtdata/images/themed/png/light/star-gold-hollow-small.png
new file mode 100644
index 000000000..478055c2b
Binary files /dev/null and b/rtdata/images/themed/png/light/star-gold-hollow-small.png differ
diff --git a/rtdata/images/themed/png/light/star-gold-small.png b/rtdata/images/themed/png/light/star-gold-small.png
new file mode 100644
index 000000000..da02a823e
Binary files /dev/null and b/rtdata/images/themed/png/light/star-gold-small.png differ
diff --git a/rtdata/images/themed/png/light/star-hollow-small.png b/rtdata/images/themed/png/light/star-hollow-small.png
new file mode 100644
index 000000000..8e5335410
Binary files /dev/null and b/rtdata/images/themed/png/light/star-hollow-small.png differ
diff --git a/rtdata/images/themed/png/light/star-small.png b/rtdata/images/themed/png/light/star-small.png
new file mode 100644
index 000000000..8ff98fa6b
Binary files /dev/null and b/rtdata/images/themed/png/light/star-small.png differ
diff --git a/rtdata/images/themed/png/light/template-16.png b/rtdata/images/themed/png/light/template-16.png
new file mode 100644
index 000000000..1c50ead9e
Binary files /dev/null and b/rtdata/images/themed/png/light/template-16.png differ
diff --git a/rtdata/images/themed/png/light/template-24.png b/rtdata/images/themed/png/light/template-24.png
new file mode 100644
index 000000000..7ab9e8c0f
Binary files /dev/null and b/rtdata/images/themed/png/light/template-24.png differ
diff --git a/rtdata/images/themed/png/light/tick-green-hollow-small.png b/rtdata/images/themed/png/light/tick-green-hollow-small.png
new file mode 100644
index 000000000..176bf5489
Binary files /dev/null and b/rtdata/images/themed/png/light/tick-green-hollow-small.png differ
diff --git a/rtdata/images/themed/png/light/tick-green-hollow.png b/rtdata/images/themed/png/light/tick-green-hollow.png
new file mode 100644
index 000000000..7cac33dc0
Binary files /dev/null and b/rtdata/images/themed/png/light/tick-green-hollow.png differ
diff --git a/rtdata/images/themed/png/light/tick-green-small.png b/rtdata/images/themed/png/light/tick-green-small.png
new file mode 100644
index 000000000..54cf5d024
Binary files /dev/null and b/rtdata/images/themed/png/light/tick-green-small.png differ
diff --git a/rtdata/images/themed/png/light/tick-green.png b/rtdata/images/themed/png/light/tick-green.png
new file mode 100644
index 000000000..2458734b2
Binary files /dev/null and b/rtdata/images/themed/png/light/tick-green.png differ
diff --git a/rtdata/images/themed/png/light/tick-hollow-small.png b/rtdata/images/themed/png/light/tick-hollow-small.png
new file mode 100644
index 000000000..9a0973962
Binary files /dev/null and b/rtdata/images/themed/png/light/tick-hollow-small.png differ
diff --git a/rtdata/images/themed/png/light/tick-small.png b/rtdata/images/themed/png/light/tick-small.png
new file mode 100644
index 000000000..73438bed0
Binary files /dev/null and b/rtdata/images/themed/png/light/tick-small.png differ
diff --git a/rtdata/images/themed/png/light/tick.png b/rtdata/images/themed/png/light/tick.png
new file mode 100644
index 000000000..7bb629789
Binary files /dev/null and b/rtdata/images/themed/png/light/tick.png differ
diff --git a/rtdata/images/themed/png/light/transform.png b/rtdata/images/themed/png/light/transform.png
new file mode 100644
index 000000000..ec1c6642a
Binary files /dev/null and b/rtdata/images/themed/png/light/transform.png differ
diff --git a/rtdata/images/themed/png/light/trash-delete.png b/rtdata/images/themed/png/light/trash-delete.png
new file mode 100644
index 000000000..7d0c422f7
Binary files /dev/null and b/rtdata/images/themed/png/light/trash-delete.png differ
diff --git a/rtdata/images/themed/png/light/trash-empty-show.png b/rtdata/images/themed/png/light/trash-empty-show.png
new file mode 100644
index 000000000..9e4ade318
Binary files /dev/null and b/rtdata/images/themed/png/light/trash-empty-show.png differ
diff --git a/rtdata/images/themed/png/light/trash-empty.png b/rtdata/images/themed/png/light/trash-empty.png
new file mode 100644
index 000000000..7a8345109
Binary files /dev/null and b/rtdata/images/themed/png/light/trash-empty.png differ
diff --git a/rtdata/images/themed/png/light/trash-full-show.png b/rtdata/images/themed/png/light/trash-full-show.png
new file mode 100644
index 000000000..8061c5070
Binary files /dev/null and b/rtdata/images/themed/png/light/trash-full-show.png differ
diff --git a/rtdata/images/themed/png/light/trash-full.png b/rtdata/images/themed/png/light/trash-full.png
new file mode 100644
index 000000000..a43d6f3e5
Binary files /dev/null and b/rtdata/images/themed/png/light/trash-full.png differ
diff --git a/rtdata/images/themed/png/light/trash-hide-deleted.png b/rtdata/images/themed/png/light/trash-hide-deleted.png
new file mode 100644
index 000000000..319a0dd4a
Binary files /dev/null and b/rtdata/images/themed/png/light/trash-hide-deleted.png differ
diff --git a/rtdata/images/themed/png/light/trash-remove-small.png b/rtdata/images/themed/png/light/trash-remove-small.png
new file mode 100644
index 000000000..df70891fb
Binary files /dev/null and b/rtdata/images/themed/png/light/trash-remove-small.png differ
diff --git a/rtdata/images/themed/png/light/trash-remove.png b/rtdata/images/themed/png/light/trash-remove.png
new file mode 100644
index 000000000..8c0c45aad
Binary files /dev/null and b/rtdata/images/themed/png/light/trash-remove.png differ
diff --git a/rtdata/images/themed/png/light/trash-show.png b/rtdata/images/themed/png/light/trash-show.png
new file mode 100644
index 000000000..9e4ade318
Binary files /dev/null and b/rtdata/images/themed/png/light/trash-show.png differ
diff --git a/rtdata/images/themed/png/light/trash-small.png b/rtdata/images/themed/png/light/trash-small.png
new file mode 100644
index 000000000..7e3183942
Binary files /dev/null and b/rtdata/images/themed/png/light/trash-small.png differ
diff --git a/rtdata/images/themed/png/light/undo-all.png b/rtdata/images/themed/png/light/undo-all.png
new file mode 100644
index 000000000..04170e26f
Binary files /dev/null and b/rtdata/images/themed/png/light/undo-all.png differ
diff --git a/rtdata/images/themed/png/light/undo-small.png b/rtdata/images/themed/png/light/undo-small.png
new file mode 100644
index 000000000..534c5b4fb
Binary files /dev/null and b/rtdata/images/themed/png/light/undo-small.png differ
diff --git a/rtdata/images/themed/png/light/undo.png b/rtdata/images/themed/png/light/undo.png
new file mode 100644
index 000000000..6451ce0dd
Binary files /dev/null and b/rtdata/images/themed/png/light/undo.png differ
diff --git a/rtdata/images/themed/png/light/warning-highlights.png b/rtdata/images/themed/png/light/warning-highlights.png
new file mode 100644
index 000000000..5426a14a3
Binary files /dev/null and b/rtdata/images/themed/png/light/warning-highlights.png differ
diff --git a/rtdata/images/themed/png/light/warning-shadows.png b/rtdata/images/themed/png/light/warning-shadows.png
new file mode 100644
index 000000000..86b6c06a6
Binary files /dev/null and b/rtdata/images/themed/png/light/warning-shadows.png differ
diff --git a/rtdata/images/themed/png/light/wavelets.png b/rtdata/images/themed/png/light/wavelets.png
new file mode 100644
index 000000000..3907c255e
Binary files /dev/null and b/rtdata/images/themed/png/light/wavelets.png differ
diff --git a/rtdata/images/themed/png/light/wb-auto-small.png b/rtdata/images/themed/png/light/wb-auto-small.png
new file mode 100644
index 000000000..e7995b4ce
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-auto-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-auto.png b/rtdata/images/themed/png/light/wb-auto.png
new file mode 100644
index 000000000..d1b60e8ad
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-auto.png differ
diff --git a/rtdata/images/themed/png/light/wb-camera-small.png b/rtdata/images/themed/png/light/wb-camera-small.png
new file mode 100644
index 000000000..72d03db7b
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-camera-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-camera.png b/rtdata/images/themed/png/light/wb-camera.png
new file mode 100644
index 000000000..8034b85d2
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-camera.png differ
diff --git a/rtdata/images/themed/png/light/wb-cloudy-small.png b/rtdata/images/themed/png/light/wb-cloudy-small.png
new file mode 100644
index 000000000..131b28287
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-cloudy-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-cloudy.png b/rtdata/images/themed/png/light/wb-cloudy.png
new file mode 100644
index 000000000..04e6e3418
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-cloudy.png differ
diff --git a/rtdata/images/themed/png/light/wb-custom-small.png b/rtdata/images/themed/png/light/wb-custom-small.png
new file mode 100644
index 000000000..c0d2ebf09
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-custom-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-custom.png b/rtdata/images/themed/png/light/wb-custom.png
new file mode 100644
index 000000000..fdc7258cd
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-custom.png differ
diff --git a/rtdata/images/themed/png/light/wb-flash-small.png b/rtdata/images/themed/png/light/wb-flash-small.png
new file mode 100644
index 000000000..cf44f0357
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-flash-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-flash.png b/rtdata/images/themed/png/light/wb-flash.png
new file mode 100644
index 000000000..8c602dc88
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-flash.png differ
diff --git a/rtdata/images/themed/png/light/wb-fluorescent-small.png b/rtdata/images/themed/png/light/wb-fluorescent-small.png
new file mode 100644
index 000000000..0362ebf02
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-fluorescent-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-fluorescent.png b/rtdata/images/themed/png/light/wb-fluorescent.png
new file mode 100644
index 000000000..4acc5e767
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-fluorescent.png differ
diff --git a/rtdata/images/themed/png/light/wb-lamp-small.png b/rtdata/images/themed/png/light/wb-lamp-small.png
new file mode 100644
index 000000000..4c8516d30
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-lamp-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-lamp.png b/rtdata/images/themed/png/light/wb-lamp.png
new file mode 100644
index 000000000..57da8265c
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-lamp.png differ
diff --git a/rtdata/images/themed/png/light/wb-led-small.png b/rtdata/images/themed/png/light/wb-led-small.png
new file mode 100644
index 000000000..7b3d8504f
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-led-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-led.png b/rtdata/images/themed/png/light/wb-led.png
new file mode 100644
index 000000000..5c2d363c6
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-led.png differ
diff --git a/rtdata/images/themed/png/light/wb-shade-small.png b/rtdata/images/themed/png/light/wb-shade-small.png
new file mode 100644
index 000000000..397fcfdd4
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-shade-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-shade.png b/rtdata/images/themed/png/light/wb-shade.png
new file mode 100644
index 000000000..7603de77e
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-shade.png differ
diff --git a/rtdata/images/themed/png/light/wb-sun-small.png b/rtdata/images/themed/png/light/wb-sun-small.png
new file mode 100644
index 000000000..70c139ab2
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-sun-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-sun.png b/rtdata/images/themed/png/light/wb-sun.png
new file mode 100644
index 000000000..da7271078
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-sun.png differ
diff --git a/rtdata/images/themed/png/light/wb-tungsten-small.png b/rtdata/images/themed/png/light/wb-tungsten-small.png
new file mode 100644
index 000000000..3dcbf947d
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-tungsten-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-tungsten.png b/rtdata/images/themed/png/light/wb-tungsten.png
new file mode 100644
index 000000000..9c3793852
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-tungsten.png differ
diff --git a/rtdata/images/themed/png/light/wb-water-small.png b/rtdata/images/themed/png/light/wb-water-small.png
new file mode 100644
index 000000000..59e7bb836
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-water-small.png differ
diff --git a/rtdata/images/themed/png/light/wb-water.png b/rtdata/images/themed/png/light/wb-water.png
new file mode 100644
index 000000000..593516563
Binary files /dev/null and b/rtdata/images/themed/png/light/wb-water.png differ
diff --git a/rtdata/images/themed/png/light/window-add.png b/rtdata/images/themed/png/light/window-add.png
new file mode 100644
index 000000000..6ccacd678
Binary files /dev/null and b/rtdata/images/themed/png/light/window-add.png differ
diff --git a/rtdata/images/themed/svg/add-small.svg b/rtdata/images/themed/svg/add-small.svg
new file mode 100644
index 000000000..13abbdc25
--- /dev/null
+++ b/rtdata/images/themed/svg/add-small.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/add.svg b/rtdata/images/themed/svg/add.svg
new file mode 100644
index 000000000..c45f9f584
--- /dev/null
+++ b/rtdata/images/themed/svg/add.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/aperture.svg b/rtdata/images/themed/svg/aperture.svg
new file mode 100644
index 000000000..5820ee283
--- /dev/null
+++ b/rtdata/images/themed/svg/aperture.svg
@@ -0,0 +1,395 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/arrow-down-small.svg b/rtdata/images/themed/svg/arrow-down-small.svg
new file mode 100644
index 000000000..d17ba4329
--- /dev/null
+++ b/rtdata/images/themed/svg/arrow-down-small.svg
@@ -0,0 +1,234 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/arrow-left-small.svg b/rtdata/images/themed/svg/arrow-left-small.svg
new file mode 100644
index 000000000..54eafbc29
--- /dev/null
+++ b/rtdata/images/themed/svg/arrow-left-small.svg
@@ -0,0 +1,234 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/arrow-right-small.svg b/rtdata/images/themed/svg/arrow-right-small.svg
new file mode 100644
index 000000000..43bfdd4e8
--- /dev/null
+++ b/rtdata/images/themed/svg/arrow-right-small.svg
@@ -0,0 +1,234 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/arrow-up-small.svg b/rtdata/images/themed/svg/arrow-up-small.svg
new file mode 100644
index 000000000..b5609c5d7
--- /dev/null
+++ b/rtdata/images/themed/svg/arrow-up-small.svg
@@ -0,0 +1,234 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/arrow-updown.svg b/rtdata/images/themed/svg/arrow-updown.svg
new file mode 100644
index 000000000..d5b6c22a5
--- /dev/null
+++ b/rtdata/images/themed/svg/arrow-updown.svg
@@ -0,0 +1,115 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/arrow2-left.svg b/rtdata/images/themed/svg/arrow2-left.svg
new file mode 100644
index 000000000..f71ee83e3
--- /dev/null
+++ b/rtdata/images/themed/svg/arrow2-left.svg
@@ -0,0 +1,115 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/arrow2-right.svg b/rtdata/images/themed/svg/arrow2-right.svg
new file mode 100644
index 000000000..8c3f60554
--- /dev/null
+++ b/rtdata/images/themed/svg/arrow2-right.svg
@@ -0,0 +1,115 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/atom.svg b/rtdata/images/themed/svg/atom.svg
new file mode 100644
index 000000000..72fb97532
--- /dev/null
+++ b/rtdata/images/themed/svg/atom.svg
@@ -0,0 +1,121 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/bayer.svg b/rtdata/images/themed/svg/bayer.svg
new file mode 100644
index 000000000..1718ce5c4
--- /dev/null
+++ b/rtdata/images/themed/svg/bayer.svg
@@ -0,0 +1,196 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/beforeafter.svg b/rtdata/images/themed/svg/beforeafter.svg
new file mode 100644
index 000000000..8c4eaab48
--- /dev/null
+++ b/rtdata/images/themed/svg/beforeafter.svg
@@ -0,0 +1,123 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/cancel-small.svg b/rtdata/images/themed/svg/cancel-small.svg
new file mode 100644
index 000000000..3bbe99bc1
--- /dev/null
+++ b/rtdata/images/themed/svg/cancel-small.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/cancel.svg b/rtdata/images/themed/svg/cancel.svg
new file mode 100644
index 000000000..c42837e61
--- /dev/null
+++ b/rtdata/images/themed/svg/cancel.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-black-small.svg b/rtdata/images/themed/svg/circle-black-small.svg
new file mode 100644
index 000000000..2b314c556
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-black-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-blue-green-small.svg b/rtdata/images/themed/svg/circle-blue-green-small.svg
new file mode 100644
index 000000000..5068447b3
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-blue-green-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-blue-red-small.svg b/rtdata/images/themed/svg/circle-blue-red-small.svg
new file mode 100644
index 000000000..6445577c1
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-blue-red-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-blue-small.svg b/rtdata/images/themed/svg/circle-blue-small.svg
new file mode 100644
index 000000000..b92577051
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-blue-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-blue-yellow-small.svg b/rtdata/images/themed/svg/circle-blue-yellow-small.svg
new file mode 100644
index 000000000..5f2e7f04d
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-blue-yellow-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-cyan-red-small.svg b/rtdata/images/themed/svg/circle-cyan-red-small.svg
new file mode 100644
index 000000000..6b34c50ec
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-cyan-red-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-cyan-small.svg b/rtdata/images/themed/svg/circle-cyan-small.svg
new file mode 100644
index 000000000..b376821cb
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-cyan-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-darkgray-small.svg b/rtdata/images/themed/svg/circle-darkgray-small.svg
new file mode 100644
index 000000000..8183c820f
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-darkgray-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-empty-blue-small.svg b/rtdata/images/themed/svg/circle-empty-blue-small.svg
new file mode 100644
index 000000000..e9004ae63
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-empty-blue-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-empty-darkgray-small.svg b/rtdata/images/themed/svg/circle-empty-darkgray-small.svg
new file mode 100644
index 000000000..21b4db7ab
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-empty-darkgray-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-empty-gray-small.svg b/rtdata/images/themed/svg/circle-empty-gray-small.svg
new file mode 100644
index 000000000..9bca30ae1
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-empty-gray-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-empty-green-small.svg b/rtdata/images/themed/svg/circle-empty-green-small.svg
new file mode 100644
index 000000000..b99c6d43e
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-empty-green-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-empty-purple-small.svg b/rtdata/images/themed/svg/circle-empty-purple-small.svg
new file mode 100644
index 000000000..751525ff2
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-empty-purple-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-empty-red-small.svg b/rtdata/images/themed/svg/circle-empty-red-small.svg
new file mode 100644
index 000000000..fcb7123cf
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-empty-red-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-empty-yellow-small.svg b/rtdata/images/themed/svg/circle-empty-yellow-small.svg
new file mode 100644
index 000000000..65d9fd4cf
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-empty-yellow-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-gray-blue-small.svg b/rtdata/images/themed/svg/circle-gray-blue-small.svg
new file mode 100644
index 000000000..0804edcd7
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-gray-blue-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-gray-green-small.svg b/rtdata/images/themed/svg/circle-gray-green-small.svg
new file mode 100644
index 000000000..609f6d0e7
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-gray-green-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-gray-red-small.svg b/rtdata/images/themed/svg/circle-gray-red-small.svg
new file mode 100644
index 000000000..6e203cdbb
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-gray-red-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-gray-small.svg b/rtdata/images/themed/svg/circle-gray-small.svg
new file mode 100644
index 000000000..6ed1fd51d
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-gray-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-green-blue-small.svg b/rtdata/images/themed/svg/circle-green-blue-small.svg
new file mode 100644
index 000000000..650f9fc44
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-green-blue-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-green-red-small.svg b/rtdata/images/themed/svg/circle-green-red-small.svg
new file mode 100644
index 000000000..21e153062
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-green-red-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-green-small.svg b/rtdata/images/themed/svg/circle-green-small.svg
new file mode 100644
index 000000000..dc1b0217a
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-green-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-magenta-small.svg b/rtdata/images/themed/svg/circle-magenta-small.svg
new file mode 100644
index 000000000..9f2e485f9
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-magenta-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-orange-small.svg b/rtdata/images/themed/svg/circle-orange-small.svg
new file mode 100644
index 000000000..addf840d1
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-orange-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-purple-small.svg b/rtdata/images/themed/svg/circle-purple-small.svg
new file mode 100644
index 000000000..2c4a3f225
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-purple-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-red-blue-small.svg b/rtdata/images/themed/svg/circle-red-blue-small.svg
new file mode 100644
index 000000000..274cb68fa
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-red-blue-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-red-cyan-small.svg b/rtdata/images/themed/svg/circle-red-cyan-small.svg
new file mode 100644
index 000000000..e2feb97e1
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-red-cyan-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-red-green-small.svg b/rtdata/images/themed/svg/circle-red-green-small.svg
new file mode 100644
index 000000000..96cc892dd
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-red-green-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-red-small.svg b/rtdata/images/themed/svg/circle-red-small.svg
new file mode 100644
index 000000000..a56b0d328
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-red-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-white-small.svg b/rtdata/images/themed/svg/circle-white-small.svg
new file mode 100644
index 000000000..5a485d954
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-white-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-yellow-blue-small.svg b/rtdata/images/themed/svg/circle-yellow-blue-small.svg
new file mode 100644
index 000000000..f6e134941
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-yellow-blue-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/circle-yellow-small.svg b/rtdata/images/themed/svg/circle-yellow-small.svg
new file mode 100644
index 000000000..7d86fdb19
--- /dev/null
+++ b/rtdata/images/themed/svg/circle-yellow-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/color-circles.svg b/rtdata/images/themed/svg/color-circles.svg
new file mode 100644
index 000000000..f7f6ad657
--- /dev/null
+++ b/rtdata/images/themed/svg/color-circles.svg
@@ -0,0 +1,215 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/color-picker-add.svg b/rtdata/images/themed/svg/color-picker-add.svg
new file mode 100644
index 000000000..1535ca260
--- /dev/null
+++ b/rtdata/images/themed/svg/color-picker-add.svg
@@ -0,0 +1,131 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/color-picker-hide.svg b/rtdata/images/themed/svg/color-picker-hide.svg
new file mode 100644
index 000000000..9fa9203cf
--- /dev/null
+++ b/rtdata/images/themed/svg/color-picker-hide.svg
@@ -0,0 +1,127 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/color-picker-show.svg b/rtdata/images/themed/svg/color-picker-show.svg
new file mode 100644
index 000000000..351c51011
--- /dev/null
+++ b/rtdata/images/themed/svg/color-picker-show.svg
@@ -0,0 +1,149 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/color-picker.svg b/rtdata/images/themed/svg/color-picker.svg
new file mode 100644
index 000000000..bff4a0edc
--- /dev/null
+++ b/rtdata/images/themed/svg/color-picker.svg
@@ -0,0 +1,127 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/contrastmask-off.svg b/rtdata/images/themed/svg/contrastmask-off.svg
new file mode 100644
index 000000000..ed76efbbb
--- /dev/null
+++ b/rtdata/images/themed/svg/contrastmask-off.svg
@@ -0,0 +1,155 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/contrastmask-on.svg b/rtdata/images/themed/svg/contrastmask-on.svg
new file mode 100644
index 000000000..9e3504128
--- /dev/null
+++ b/rtdata/images/themed/svg/contrastmask-on.svg
@@ -0,0 +1,155 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/copy.svg b/rtdata/images/themed/svg/copy.svg
new file mode 100644
index 000000000..9471e1ea7
--- /dev/null
+++ b/rtdata/images/themed/svg/copy.svg
@@ -0,0 +1,277 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/crop-auto-small.svg b/rtdata/images/themed/svg/crop-auto-small.svg
new file mode 100644
index 000000000..6d8ac3ea7
--- /dev/null
+++ b/rtdata/images/themed/svg/crop-auto-small.svg
@@ -0,0 +1,131 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/crop-auto.svg b/rtdata/images/themed/svg/crop-auto.svg
new file mode 100644
index 000000000..bc662e9ea
--- /dev/null
+++ b/rtdata/images/themed/svg/crop-auto.svg
@@ -0,0 +1,136 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/crop-small.svg b/rtdata/images/themed/svg/crop-small.svg
new file mode 100644
index 000000000..94c0b43df
--- /dev/null
+++ b/rtdata/images/themed/svg/crop-small.svg
@@ -0,0 +1,116 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/crop.svg b/rtdata/images/themed/svg/crop.svg
new file mode 100644
index 000000000..8fd598f60
--- /dev/null
+++ b/rtdata/images/themed/svg/crop.svg
@@ -0,0 +1,113 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/crossed-arrows-in.svg b/rtdata/images/themed/svg/crossed-arrows-in.svg
new file mode 100644
index 000000000..8a4c71dc8
--- /dev/null
+++ b/rtdata/images/themed/svg/crossed-arrows-in.svg
@@ -0,0 +1,135 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/crossed-arrows-out.svg b/rtdata/images/themed/svg/crossed-arrows-out.svg
new file mode 100644
index 000000000..5eb5ba4b1
--- /dev/null
+++ b/rtdata/images/themed/svg/crossed-arrows-out.svg
@@ -0,0 +1,139 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/crosshair-adjust.svg b/rtdata/images/themed/svg/crosshair-adjust.svg
new file mode 100644
index 000000000..16ff954ac
--- /dev/null
+++ b/rtdata/images/themed/svg/crosshair-adjust.svg
@@ -0,0 +1,118 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/crosshair.svg b/rtdata/images/themed/svg/crosshair.svg
new file mode 100644
index 000000000..a4dcc2592
--- /dev/null
+++ b/rtdata/images/themed/svg/crosshair.svg
@@ -0,0 +1,161 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-controlpoints-small.svg b/rtdata/images/themed/svg/curve-controlpoints-small.svg
new file mode 100644
index 000000000..fc85b8774
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-controlpoints-small.svg
@@ -0,0 +1,132 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-controlpoints.svg b/rtdata/images/themed/svg/curve-controlpoints.svg
new file mode 100644
index 000000000..2d432264c
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-controlpoints.svg
@@ -0,0 +1,192 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-flat-small.svg b/rtdata/images/themed/svg/curve-flat-small.svg
new file mode 100644
index 000000000..59585c64a
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-flat-small.svg
@@ -0,0 +1,115 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-flat.svg b/rtdata/images/themed/svg/curve-flat.svg
new file mode 100644
index 000000000..89888b4d1
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-flat.svg
@@ -0,0 +1,108 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-linear-small.svg b/rtdata/images/themed/svg/curve-linear-small.svg
new file mode 100644
index 000000000..c2a3f7915
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-linear-small.svg
@@ -0,0 +1,115 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-linear.svg b/rtdata/images/themed/svg/curve-linear.svg
new file mode 100644
index 000000000..b016121aa
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-linear.svg
@@ -0,0 +1,108 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-nurbs-small.svg b/rtdata/images/themed/svg/curve-nurbs-small.svg
new file mode 100644
index 000000000..1ff3a1a76
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-nurbs-small.svg
@@ -0,0 +1,127 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-nurbs.svg b/rtdata/images/themed/svg/curve-nurbs.svg
new file mode 100644
index 000000000..1d7ef10ce
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-nurbs.svg
@@ -0,0 +1,125 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-parametric-small.svg b/rtdata/images/themed/svg/curve-parametric-small.svg
new file mode 100644
index 000000000..2334def2d
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-parametric-small.svg
@@ -0,0 +1,137 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-parametric.svg b/rtdata/images/themed/svg/curve-parametric.svg
new file mode 100644
index 000000000..88a1f0389
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-parametric.svg
@@ -0,0 +1,131 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-spline-small.svg b/rtdata/images/themed/svg/curve-spline-small.svg
new file mode 100644
index 000000000..990df0c0d
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-spline-small.svg
@@ -0,0 +1,127 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/curve-spline.svg b/rtdata/images/themed/svg/curve-spline.svg
new file mode 100644
index 000000000..f0a28a1a9
--- /dev/null
+++ b/rtdata/images/themed/svg/curve-spline.svg
@@ -0,0 +1,124 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/detail.svg b/rtdata/images/themed/svg/detail.svg
new file mode 100644
index 000000000..4bdc2fb9b
--- /dev/null
+++ b/rtdata/images/themed/svg/detail.svg
@@ -0,0 +1,206 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/device-floppy.svg b/rtdata/images/themed/svg/device-floppy.svg
new file mode 100644
index 000000000..29b855e4b
--- /dev/null
+++ b/rtdata/images/themed/svg/device-floppy.svg
@@ -0,0 +1,142 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/device-hdd.svg b/rtdata/images/themed/svg/device-hdd.svg
new file mode 100644
index 000000000..b93a1d698
--- /dev/null
+++ b/rtdata/images/themed/svg/device-hdd.svg
@@ -0,0 +1,116 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/device-network.svg b/rtdata/images/themed/svg/device-network.svg
new file mode 100644
index 000000000..d17821545
--- /dev/null
+++ b/rtdata/images/themed/svg/device-network.svg
@@ -0,0 +1,109 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/device-optical.svg b/rtdata/images/themed/svg/device-optical.svg
new file mode 100644
index 000000000..de73e9422
--- /dev/null
+++ b/rtdata/images/themed/svg/device-optical.svg
@@ -0,0 +1,116 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/device-usb.svg b/rtdata/images/themed/svg/device-usb.svg
new file mode 100644
index 000000000..116a6e1f5
--- /dev/null
+++ b/rtdata/images/themed/svg/device-usb.svg
@@ -0,0 +1,107 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/distortion-auto-small.svg b/rtdata/images/themed/svg/distortion-auto-small.svg
new file mode 100644
index 000000000..6a8ac0a03
--- /dev/null
+++ b/rtdata/images/themed/svg/distortion-auto-small.svg
@@ -0,0 +1,141 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/distortion-auto.svg b/rtdata/images/themed/svg/distortion-auto.svg
new file mode 100644
index 000000000..8cfadb130
--- /dev/null
+++ b/rtdata/images/themed/svg/distortion-auto.svg
@@ -0,0 +1,118 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/distortion-barrel-small.svg b/rtdata/images/themed/svg/distortion-barrel-small.svg
new file mode 100644
index 000000000..b769bd0aa
--- /dev/null
+++ b/rtdata/images/themed/svg/distortion-barrel-small.svg
@@ -0,0 +1,127 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/distortion-barrel.svg b/rtdata/images/themed/svg/distortion-barrel.svg
new file mode 100644
index 000000000..012651e87
--- /dev/null
+++ b/rtdata/images/themed/svg/distortion-barrel.svg
@@ -0,0 +1,108 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/distortion-pincushion-small.svg b/rtdata/images/themed/svg/distortion-pincushion-small.svg
new file mode 100644
index 000000000..8c26277d2
--- /dev/null
+++ b/rtdata/images/themed/svg/distortion-pincushion-small.svg
@@ -0,0 +1,125 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/distortion-pincushion.svg b/rtdata/images/themed/svg/distortion-pincushion.svg
new file mode 100644
index 000000000..c893eb99a
--- /dev/null
+++ b/rtdata/images/themed/svg/distortion-pincushion.svg
@@ -0,0 +1,113 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/edit-point.svg b/rtdata/images/themed/svg/edit-point.svg
new file mode 100644
index 000000000..b3e16abdf
--- /dev/null
+++ b/rtdata/images/themed/svg/edit-point.svg
@@ -0,0 +1,142 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/equilizer-narrow.svg b/rtdata/images/themed/svg/equilizer-narrow.svg
new file mode 100644
index 000000000..52dcaed4b
--- /dev/null
+++ b/rtdata/images/themed/svg/equilizer-narrow.svg
@@ -0,0 +1,358 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/equilizer-wide.svg b/rtdata/images/themed/svg/equilizer-wide.svg
new file mode 100644
index 000000000..594cca2ab
--- /dev/null
+++ b/rtdata/images/themed/svg/equilizer-wide.svg
@@ -0,0 +1,263 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/expander-closed-small.svg b/rtdata/images/themed/svg/expander-closed-small.svg
new file mode 100644
index 000000000..e9cea3b4d
--- /dev/null
+++ b/rtdata/images/themed/svg/expander-closed-small.svg
@@ -0,0 +1,131 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/expander-open-small.svg b/rtdata/images/themed/svg/expander-open-small.svg
new file mode 100644
index 000000000..8355bc2f3
--- /dev/null
+++ b/rtdata/images/themed/svg/expander-open-small.svg
@@ -0,0 +1,136 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/exposure.svg b/rtdata/images/themed/svg/exposure.svg
new file mode 100644
index 000000000..c0edc9e9b
--- /dev/null
+++ b/rtdata/images/themed/svg/exposure.svg
@@ -0,0 +1,123 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/filetype-hdr.svg b/rtdata/images/themed/svg/filetype-hdr.svg
new file mode 100644
index 000000000..86729442d
--- /dev/null
+++ b/rtdata/images/themed/svg/filetype-hdr.svg
@@ -0,0 +1,147 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/filetype-ps.svg b/rtdata/images/themed/svg/filetype-ps.svg
new file mode 100644
index 000000000..c0dc6069c
--- /dev/null
+++ b/rtdata/images/themed/svg/filetype-ps.svg
@@ -0,0 +1,143 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/filter-clear.svg b/rtdata/images/themed/svg/filter-clear.svg
new file mode 100644
index 000000000..27af953db
--- /dev/null
+++ b/rtdata/images/themed/svg/filter-clear.svg
@@ -0,0 +1,122 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/filter-original.svg b/rtdata/images/themed/svg/filter-original.svg
new file mode 100644
index 000000000..c14a57a99
--- /dev/null
+++ b/rtdata/images/themed/svg/filter-original.svg
@@ -0,0 +1,122 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/filter-original2.svg b/rtdata/images/themed/svg/filter-original2.svg
new file mode 100644
index 000000000..ce761302a
--- /dev/null
+++ b/rtdata/images/themed/svg/filter-original2.svg
@@ -0,0 +1,139 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/filter.svg b/rtdata/images/themed/svg/filter.svg
new file mode 100644
index 000000000..684ffc35e
--- /dev/null
+++ b/rtdata/images/themed/svg/filter.svg
@@ -0,0 +1,123 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/flip-horizontal.svg b/rtdata/images/themed/svg/flip-horizontal.svg
new file mode 100644
index 000000000..67465657f
--- /dev/null
+++ b/rtdata/images/themed/svg/flip-horizontal.svg
@@ -0,0 +1,147 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/flip-vertical.svg b/rtdata/images/themed/svg/flip-vertical.svg
new file mode 100644
index 000000000..39771286a
--- /dev/null
+++ b/rtdata/images/themed/svg/flip-vertical.svg
@@ -0,0 +1,148 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/focusscreen-off.svg b/rtdata/images/themed/svg/focusscreen-off.svg
new file mode 100644
index 000000000..0197b8b5d
--- /dev/null
+++ b/rtdata/images/themed/svg/focusscreen-off.svg
@@ -0,0 +1,119 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/focusscreen-on.svg b/rtdata/images/themed/svg/focusscreen-on.svg
new file mode 100644
index 000000000..b6a6149f7
--- /dev/null
+++ b/rtdata/images/themed/svg/focusscreen-on.svg
@@ -0,0 +1,125 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/folder-closed-home-small.svg b/rtdata/images/themed/svg/folder-closed-home-small.svg
new file mode 100644
index 000000000..e2988a681
--- /dev/null
+++ b/rtdata/images/themed/svg/folder-closed-home-small.svg
@@ -0,0 +1,131 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/folder-closed-home.svg b/rtdata/images/themed/svg/folder-closed-home.svg
new file mode 100644
index 000000000..d4bf64e15
--- /dev/null
+++ b/rtdata/images/themed/svg/folder-closed-home.svg
@@ -0,0 +1,152 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/folder-closed-recent-small.svg b/rtdata/images/themed/svg/folder-closed-recent-small.svg
new file mode 100644
index 000000000..e412e386c
--- /dev/null
+++ b/rtdata/images/themed/svg/folder-closed-recent-small.svg
@@ -0,0 +1,130 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/folder-closed-recent.svg b/rtdata/images/themed/svg/folder-closed-recent.svg
new file mode 100644
index 000000000..84da8e236
--- /dev/null
+++ b/rtdata/images/themed/svg/folder-closed-recent.svg
@@ -0,0 +1,150 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/folder-closed-small.svg b/rtdata/images/themed/svg/folder-closed-small.svg
new file mode 100644
index 000000000..f86f2157f
--- /dev/null
+++ b/rtdata/images/themed/svg/folder-closed-small.svg
@@ -0,0 +1,125 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/folder-closed.svg b/rtdata/images/themed/svg/folder-closed.svg
new file mode 100644
index 000000000..74166166c
--- /dev/null
+++ b/rtdata/images/themed/svg/folder-closed.svg
@@ -0,0 +1,120 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/folder-open-recent-small.svg b/rtdata/images/themed/svg/folder-open-recent-small.svg
new file mode 100644
index 000000000..dc2f2ec3f
--- /dev/null
+++ b/rtdata/images/themed/svg/folder-open-recent-small.svg
@@ -0,0 +1,129 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/folder-open-recent.svg b/rtdata/images/themed/svg/folder-open-recent.svg
new file mode 100644
index 000000000..c0baf0ccf
--- /dev/null
+++ b/rtdata/images/themed/svg/folder-open-recent.svg
@@ -0,0 +1,153 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/folder-open-small.svg b/rtdata/images/themed/svg/folder-open-small.svg
new file mode 100644
index 000000000..f25394737
--- /dev/null
+++ b/rtdata/images/themed/svg/folder-open-small.svg
@@ -0,0 +1,124 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/folder-open.svg b/rtdata/images/themed/svg/folder-open.svg
new file mode 100644
index 000000000..324a4bb9e
--- /dev/null
+++ b/rtdata/images/themed/svg/folder-open.svg
@@ -0,0 +1,119 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/fullscreen-enter.svg b/rtdata/images/themed/svg/fullscreen-enter.svg
new file mode 100644
index 000000000..33e8bf568
--- /dev/null
+++ b/rtdata/images/themed/svg/fullscreen-enter.svg
@@ -0,0 +1,139 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/fullscreen-leave.svg b/rtdata/images/themed/svg/fullscreen-leave.svg
new file mode 100644
index 000000000..3eee818a9
--- /dev/null
+++ b/rtdata/images/themed/svg/fullscreen-leave.svg
@@ -0,0 +1,139 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/gamut-hist.svg b/rtdata/images/themed/svg/gamut-hist.svg
new file mode 100644
index 000000000..289dbf396
--- /dev/null
+++ b/rtdata/images/themed/svg/gamut-hist.svg
@@ -0,0 +1,114 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/gamut-plus.svg b/rtdata/images/themed/svg/gamut-plus.svg
new file mode 100644
index 000000000..218f3068d
--- /dev/null
+++ b/rtdata/images/themed/svg/gamut-plus.svg
@@ -0,0 +1,118 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/gamut-softproof.svg b/rtdata/images/themed/svg/gamut-softproof.svg
new file mode 100644
index 000000000..ca37ca2a0
--- /dev/null
+++ b/rtdata/images/themed/svg/gamut-softproof.svg
@@ -0,0 +1,124 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/gamut-warning.svg b/rtdata/images/themed/svg/gamut-warning.svg
similarity index 50%
rename from tools/source_icons/scalable/gamut-warning.svg
rename to rtdata/images/themed/svg/gamut-warning.svg
index be75417c2..83cdb85cb 100644
--- a/tools/source_icons/scalable/gamut-warning.svg
+++ b/rtdata/images/themed/svg/gamut-warning.svg
@@ -9,70 +9,72 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="24"
- height="24"
- viewBox="0 0 6.3499999 6.3500002"
+ width="24px"
+ height="24px"
+ viewBox="0 0 24 24"
version="1.1"
- id="svg3944"
- inkscape:export-filename="/tmp/1.png"
+ id="SVGRoot"
+ inkscape:export-filename="/tmp/template.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
- inkscape:version="0.92.1 r"
+ inkscape:version="0.92.2 2405546, 2018-03-11"
sodipodi:docname="gamut-warning.svg">
-
Icons for the "Expert" tab in RawTherapee
-
+ inkscape:snap-others="false"
+ inkscape:object-nodes="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-bbox-midpoints="false">
+ id="grid1374"
+ originx="1"
+ originy="1"
+ empspacing="11"
+ dotted="false" />
+
+ id="metadata818">
image/svg+xml
- Icons for the "Expert" tab in RawTherapee
+
- Morgan Hardwood
+ Maciej Dworak
+
+
+
+
+
+ RawTherapee icon.
@@ -94,29 +96,28 @@
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
+ inkscape:connector-curvature="0"
+ style="opacity:0.7;fill:#2a7fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.03463303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 18.039793,11.881796 -0.528518,5.815841 c 1.145775,1.419431 2.443672,3.037737 4.273256,5.302362 h 1.213872 v -6.217601 c -1.649954,-1.636756 -3.297819,-3.275716 -4.95861,-4.900602 z"
+ id="path5330" />
+ inkscape:connector-curvature="0"
+ style="opacity:0.7;fill:#2a7fff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.03463303px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 4.1801719,1.0085159 C 3.7423076,0.97525596 3.2986891,1.0373834 2.8524331,1.2319542 1.4336335,2.1488066 1.1147212,4.0067107 1.0047706,5.5739614 0.93925576,11.337913 1.5472,17.130439 2.910441,22.735741 c 0.024417,0.08695 0.061442,0.176708 0.085938,0.264258 H 4.0340778 C 2.9671417,18.658909 2.4342314,14.202944 2.489346,9.7569835 2.5881014,8.4662896 2.877903,6.9348654 4.1522423,6.1798229 5.7555236,5.536617 7.3171946,6.7283685 8.3932722,7.7567818 9.332748,8.6546431 9.9701583,9.2978243 10.674921,9.9976098 10.518318,8.7046654 10.354987,7.6356703 10.191521,6.9059972 9.9285335,5.7517854 9.7377339,4.9829047 9.6329241,4.2634102 9.0224679,3.7710536 8.4064723,3.286253 7.7788177,2.8132098 6.7445953,2.0615763 5.4937645,1.108462 4.1801719,1.0085159 Z m 13.9197771,10.2008181 -0.06016,0.672462 z"
+ id="path17362" />
!
diff --git a/rtdata/images/themed/svg/gamut_srgb_prophoto_xy.svg b/rtdata/images/themed/svg/gamut_srgb_prophoto_xy.svg
new file mode 100644
index 000000000..951b6611d
--- /dev/null
+++ b/rtdata/images/themed/svg/gamut_srgb_prophoto_xy.svg
@@ -0,0 +1,123 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/gears-pause.svg b/rtdata/images/themed/svg/gears-pause.svg
new file mode 100644
index 000000000..b472a82f4
--- /dev/null
+++ b/rtdata/images/themed/svg/gears-pause.svg
@@ -0,0 +1,153 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/gears-play.svg b/rtdata/images/themed/svg/gears-play.svg
new file mode 100644
index 000000000..83c23557d
--- /dev/null
+++ b/rtdata/images/themed/svg/gears-play.svg
@@ -0,0 +1,160 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/gears-small.svg b/rtdata/images/themed/svg/gears-small.svg
new file mode 100644
index 000000000..60cfdc609
--- /dev/null
+++ b/rtdata/images/themed/svg/gears-small.svg
@@ -0,0 +1,139 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/gears.svg b/rtdata/images/themed/svg/gears.svg
new file mode 100644
index 000000000..3a7785a6f
--- /dev/null
+++ b/rtdata/images/themed/svg/gears.svg
@@ -0,0 +1,129 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/goto-end-small.svg b/rtdata/images/themed/svg/goto-end-small.svg
new file mode 100644
index 000000000..26d805c5d
--- /dev/null
+++ b/rtdata/images/themed/svg/goto-end-small.svg
@@ -0,0 +1,131 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/goto-start-small.svg b/rtdata/images/themed/svg/goto-start-small.svg
new file mode 100644
index 000000000..35b4e9f8c
--- /dev/null
+++ b/rtdata/images/themed/svg/goto-start-small.svg
@@ -0,0 +1,130 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/hand-closed.svg b/rtdata/images/themed/svg/hand-closed.svg
new file mode 100644
index 000000000..0d6b00f95
--- /dev/null
+++ b/rtdata/images/themed/svg/hand-closed.svg
@@ -0,0 +1,143 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/hand-open.svg b/rtdata/images/themed/svg/hand-open.svg
new file mode 100644
index 000000000..d49d10d5f
--- /dev/null
+++ b/rtdata/images/themed/svg/hand-open.svg
@@ -0,0 +1,125 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-bar-off-small.svg b/rtdata/images/themed/svg/histogram-bar-off-small.svg
new file mode 100644
index 000000000..76016bf46
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-bar-off-small.svg
@@ -0,0 +1,132 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-bar-on-small.svg b/rtdata/images/themed/svg/histogram-bar-on-small.svg
new file mode 100644
index 000000000..858569703
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-bar-on-small.svg
@@ -0,0 +1,132 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-bayer-off-small.svg b/rtdata/images/themed/svg/histogram-bayer-off-small.svg
new file mode 100644
index 000000000..5d6c439fb
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-bayer-off-small.svg
@@ -0,0 +1,139 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-bayer-on-small.svg b/rtdata/images/themed/svg/histogram-bayer-on-small.svg
new file mode 100644
index 000000000..d9ef178a5
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-bayer-on-small.svg
@@ -0,0 +1,139 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-blue-off-small.svg b/rtdata/images/themed/svg/histogram-blue-off-small.svg
new file mode 100644
index 000000000..e78f3c19c
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-blue-off-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-blue-on-small.svg b/rtdata/images/themed/svg/histogram-blue-on-small.svg
new file mode 100644
index 000000000..d0bbe35db
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-blue-on-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-gold-off-small.svg b/rtdata/images/themed/svg/histogram-gold-off-small.svg
new file mode 100644
index 000000000..ed7d82521
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-gold-off-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-gold-on-small.svg b/rtdata/images/themed/svg/histogram-gold-on-small.svg
new file mode 100644
index 000000000..601a15165
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-gold-on-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-green-off-small.svg b/rtdata/images/themed/svg/histogram-green-off-small.svg
new file mode 100644
index 000000000..462b1b45f
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-green-off-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-green-on-small.svg b/rtdata/images/themed/svg/histogram-green-on-small.svg
new file mode 100644
index 000000000..6c06531c6
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-green-on-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-mode-linear-small.svg b/rtdata/images/themed/svg/histogram-mode-linear-small.svg
new file mode 100644
index 000000000..52b914762
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-mode-linear-small.svg
@@ -0,0 +1,121 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-mode-logx-small.svg b/rtdata/images/themed/svg/histogram-mode-logx-small.svg
new file mode 100644
index 000000000..0eb016d00
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-mode-logx-small.svg
@@ -0,0 +1,121 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-mode-logxy-small.svg b/rtdata/images/themed/svg/histogram-mode-logxy-small.svg
new file mode 100644
index 000000000..e0b69c4e5
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-mode-logxy-small.svg
@@ -0,0 +1,121 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-red-off-small.svg b/rtdata/images/themed/svg/histogram-red-off-small.svg
new file mode 100644
index 000000000..ec4200483
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-red-off-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-red-on-small.svg b/rtdata/images/themed/svg/histogram-red-on-small.svg
new file mode 100644
index 000000000..082813853
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-red-on-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-silver-off-small.svg b/rtdata/images/themed/svg/histogram-silver-off-small.svg
new file mode 100644
index 000000000..200bbd0b7
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-silver-off-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/histogram-silver-on-small.svg b/rtdata/images/themed/svg/histogram-silver-on-small.svg
new file mode 100644
index 000000000..414d5f4f0
--- /dev/null
+++ b/rtdata/images/themed/svg/histogram-silver-on-small.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/info.svg b/rtdata/images/themed/svg/info.svg
new file mode 100644
index 000000000..8805fcad4
--- /dev/null
+++ b/rtdata/images/themed/svg/info.svg
@@ -0,0 +1,118 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/intent-absolute.svg b/rtdata/images/themed/svg/intent-absolute.svg
new file mode 100644
index 000000000..055759ad1
--- /dev/null
+++ b/rtdata/images/themed/svg/intent-absolute.svg
@@ -0,0 +1,297 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/intent-perceptual.svg b/rtdata/images/themed/svg/intent-perceptual.svg
new file mode 100644
index 000000000..2e845cd39
--- /dev/null
+++ b/rtdata/images/themed/svg/intent-perceptual.svg
@@ -0,0 +1,303 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/intent-relative.svg b/rtdata/images/themed/svg/intent-relative.svg
new file mode 100644
index 000000000..04e553796
--- /dev/null
+++ b/rtdata/images/themed/svg/intent-relative.svg
@@ -0,0 +1,297 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/intent-saturation.svg b/rtdata/images/themed/svg/intent-saturation.svg
new file mode 100644
index 000000000..569c54962
--- /dev/null
+++ b/rtdata/images/themed/svg/intent-saturation.svg
@@ -0,0 +1,305 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/magnifier-1to1-small.svg b/rtdata/images/themed/svg/magnifier-1to1-small.svg
new file mode 100644
index 000000000..68aa7d6c2
--- /dev/null
+++ b/rtdata/images/themed/svg/magnifier-1to1-small.svg
@@ -0,0 +1,148 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/magnifier-1to1.svg b/rtdata/images/themed/svg/magnifier-1to1.svg
new file mode 100644
index 000000000..5272cf2ed
--- /dev/null
+++ b/rtdata/images/themed/svg/magnifier-1to1.svg
@@ -0,0 +1,141 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/magnifier-crop.svg b/rtdata/images/themed/svg/magnifier-crop.svg
new file mode 100644
index 000000000..54d6e3e9e
--- /dev/null
+++ b/rtdata/images/themed/svg/magnifier-crop.svg
@@ -0,0 +1,140 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/magnifier-fit.svg b/rtdata/images/themed/svg/magnifier-fit.svg
new file mode 100644
index 000000000..1d531e2d7
--- /dev/null
+++ b/rtdata/images/themed/svg/magnifier-fit.svg
@@ -0,0 +1,147 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/magnifier-minus-small.svg b/rtdata/images/themed/svg/magnifier-minus-small.svg
new file mode 100644
index 000000000..08871ed77
--- /dev/null
+++ b/rtdata/images/themed/svg/magnifier-minus-small.svg
@@ -0,0 +1,132 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/magnifier-minus.svg b/rtdata/images/themed/svg/magnifier-minus.svg
new file mode 100644
index 000000000..567845d57
--- /dev/null
+++ b/rtdata/images/themed/svg/magnifier-minus.svg
@@ -0,0 +1,129 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/magnifier-plus-small.svg b/rtdata/images/themed/svg/magnifier-plus-small.svg
new file mode 100644
index 000000000..a93e8cd8e
--- /dev/null
+++ b/rtdata/images/themed/svg/magnifier-plus-small.svg
@@ -0,0 +1,132 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/magnifier-plus.svg b/rtdata/images/themed/svg/magnifier-plus.svg
new file mode 100644
index 000000000..a98c19bad
--- /dev/null
+++ b/rtdata/images/themed/svg/magnifier-plus.svg
@@ -0,0 +1,129 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/magnifier.svg b/rtdata/images/themed/svg/magnifier.svg
new file mode 100644
index 000000000..3b7ae2fd2
--- /dev/null
+++ b/rtdata/images/themed/svg/magnifier.svg
@@ -0,0 +1,121 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/metadata.svg b/rtdata/images/themed/svg/metadata.svg
new file mode 100644
index 000000000..695d2af1a
--- /dev/null
+++ b/rtdata/images/themed/svg/metadata.svg
@@ -0,0 +1,203 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/node-move-x.svg b/rtdata/images/themed/svg/node-move-x.svg
new file mode 100644
index 000000000..3215ce9f4
--- /dev/null
+++ b/rtdata/images/themed/svg/node-move-x.svg
@@ -0,0 +1,120 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/node-move-xy.svg b/rtdata/images/themed/svg/node-move-xy.svg
new file mode 100644
index 000000000..47c25e81f
--- /dev/null
+++ b/rtdata/images/themed/svg/node-move-xy.svg
@@ -0,0 +1,130 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/node-move-y.svg b/rtdata/images/themed/svg/node-move-y.svg
new file mode 100644
index 000000000..3c6e5cfd7
--- /dev/null
+++ b/rtdata/images/themed/svg/node-move-y.svg
@@ -0,0 +1,120 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/one-to-one-small.svg b/rtdata/images/themed/svg/one-to-one-small.svg
new file mode 100644
index 000000000..8b08f99d0
--- /dev/null
+++ b/rtdata/images/themed/svg/one-to-one-small.svg
@@ -0,0 +1,271 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/ornament1.svg b/rtdata/images/themed/svg/ornament1.svg
new file mode 100644
index 000000000..af3d729e5
--- /dev/null
+++ b/rtdata/images/themed/svg/ornament1.svg
@@ -0,0 +1,129 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/padlock-locked-small.svg b/rtdata/images/themed/svg/padlock-locked-small.svg
new file mode 100644
index 000000000..27f1bc510
--- /dev/null
+++ b/rtdata/images/themed/svg/padlock-locked-small.svg
@@ -0,0 +1,127 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/padlock-unlocked-small.svg b/rtdata/images/themed/svg/padlock-unlocked-small.svg
new file mode 100644
index 000000000..0c282c8cf
--- /dev/null
+++ b/rtdata/images/themed/svg/padlock-unlocked-small.svg
@@ -0,0 +1,127 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/palette-brush.svg b/rtdata/images/themed/svg/palette-brush.svg
new file mode 100644
index 000000000..30eaac0d6
--- /dev/null
+++ b/rtdata/images/themed/svg/palette-brush.svg
@@ -0,0 +1,132 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/panel-to-bottom.svg b/rtdata/images/themed/svg/panel-to-bottom.svg
new file mode 100644
index 000000000..8e63c0309
--- /dev/null
+++ b/rtdata/images/themed/svg/panel-to-bottom.svg
@@ -0,0 +1,125 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/panel-to-left.svg b/rtdata/images/themed/svg/panel-to-left.svg
new file mode 100644
index 000000000..d987f54f7
--- /dev/null
+++ b/rtdata/images/themed/svg/panel-to-left.svg
@@ -0,0 +1,126 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/panel-to-right.svg b/rtdata/images/themed/svg/panel-to-right.svg
new file mode 100644
index 000000000..52fc38529
--- /dev/null
+++ b/rtdata/images/themed/svg/panel-to-right.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/panel-to-top.svg b/rtdata/images/themed/svg/panel-to-top.svg
new file mode 100644
index 000000000..5b1cccfe5
--- /dev/null
+++ b/rtdata/images/themed/svg/panel-to-top.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/paste.svg b/rtdata/images/themed/svg/paste.svg
new file mode 100644
index 000000000..83d82617a
--- /dev/null
+++ b/rtdata/images/themed/svg/paste.svg
@@ -0,0 +1,260 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/perspective-horizontal-left-small.svg b/rtdata/images/themed/svg/perspective-horizontal-left-small.svg
new file mode 100644
index 000000000..c4797a6a2
--- /dev/null
+++ b/rtdata/images/themed/svg/perspective-horizontal-left-small.svg
@@ -0,0 +1,123 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/perspective-horizontal-left.svg b/rtdata/images/themed/svg/perspective-horizontal-left.svg
new file mode 100644
index 000000000..18ce37ea3
--- /dev/null
+++ b/rtdata/images/themed/svg/perspective-horizontal-left.svg
@@ -0,0 +1,115 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/perspective-horizontal-right-small.svg b/rtdata/images/themed/svg/perspective-horizontal-right-small.svg
new file mode 100644
index 000000000..4721117c8
--- /dev/null
+++ b/rtdata/images/themed/svg/perspective-horizontal-right-small.svg
@@ -0,0 +1,123 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/perspective-horizontal-right.svg b/rtdata/images/themed/svg/perspective-horizontal-right.svg
new file mode 100644
index 000000000..809e94123
--- /dev/null
+++ b/rtdata/images/themed/svg/perspective-horizontal-right.svg
@@ -0,0 +1,116 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/perspective-vertical-bottom-small.svg b/rtdata/images/themed/svg/perspective-vertical-bottom-small.svg
new file mode 100644
index 000000000..80f023b74
--- /dev/null
+++ b/rtdata/images/themed/svg/perspective-vertical-bottom-small.svg
@@ -0,0 +1,123 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/perspective-vertical-bottom.svg b/rtdata/images/themed/svg/perspective-vertical-bottom.svg
new file mode 100644
index 000000000..4cc5bf0f3
--- /dev/null
+++ b/rtdata/images/themed/svg/perspective-vertical-bottom.svg
@@ -0,0 +1,114 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/perspective-vertical-top-small.svg b/rtdata/images/themed/svg/perspective-vertical-top-small.svg
new file mode 100644
index 000000000..1ec0fafa7
--- /dev/null
+++ b/rtdata/images/themed/svg/perspective-vertical-top-small.svg
@@ -0,0 +1,123 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/perspective-vertical-top.svg b/rtdata/images/themed/svg/perspective-vertical-top.svg
new file mode 100644
index 000000000..34f75fe7f
--- /dev/null
+++ b/rtdata/images/themed/svg/perspective-vertical-top.svg
@@ -0,0 +1,114 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/power-inconsistent-small.svg b/rtdata/images/themed/svg/power-inconsistent-small.svg
new file mode 100644
index 000000000..305f504cd
--- /dev/null
+++ b/rtdata/images/themed/svg/power-inconsistent-small.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
new file mode 100644
index 000000000..d04115bb9
--- /dev/null
+++ b/rtdata/images/themed/svg/power-off-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/power-on-small.svg b/rtdata/images/themed/svg/power-on-small.svg
new file mode 100644
index 000000000..caaf7992d
--- /dev/null
+++ b/rtdata/images/themed/svg/power-on-small.svg
@@ -0,0 +1,114 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/preferences.svg b/rtdata/images/themed/svg/preferences.svg
new file mode 100644
index 000000000..db6794736
--- /dev/null
+++ b/rtdata/images/themed/svg/preferences.svg
@@ -0,0 +1,134 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/profile-filled.svg b/rtdata/images/themed/svg/profile-filled.svg
new file mode 100644
index 000000000..d31352f11
--- /dev/null
+++ b/rtdata/images/themed/svg/profile-filled.svg
@@ -0,0 +1,139 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/profile-partial.svg b/rtdata/images/themed/svg/profile-partial.svg
new file mode 100644
index 000000000..90d22c74a
--- /dev/null
+++ b/rtdata/images/themed/svg/profile-partial.svg
@@ -0,0 +1,139 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/redo-all.svg b/rtdata/images/themed/svg/redo-all.svg
new file mode 100644
index 000000000..f9dbaad23
--- /dev/null
+++ b/rtdata/images/themed/svg/redo-all.svg
@@ -0,0 +1,132 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/redo-small.svg b/rtdata/images/themed/svg/redo-small.svg
new file mode 100644
index 000000000..be05d9592
--- /dev/null
+++ b/rtdata/images/themed/svg/redo-small.svg
@@ -0,0 +1,119 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/redo.svg b/rtdata/images/themed/svg/redo.svg
new file mode 100644
index 000000000..14f9f7c00
--- /dev/null
+++ b/rtdata/images/themed/svg/redo.svg
@@ -0,0 +1,118 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/refresh-red-small.svg b/rtdata/images/themed/svg/refresh-red-small.svg
new file mode 100644
index 000000000..498faafe8
--- /dev/null
+++ b/rtdata/images/themed/svg/refresh-red-small.svg
@@ -0,0 +1,140 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/refresh-small.svg b/rtdata/images/themed/svg/refresh-small.svg
new file mode 100644
index 000000000..d9ca603ef
--- /dev/null
+++ b/rtdata/images/themed/svg/refresh-small.svg
@@ -0,0 +1,138 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/refresh.svg b/rtdata/images/themed/svg/refresh.svg
new file mode 100644
index 000000000..3b0b0cb72
--- /dev/null
+++ b/rtdata/images/themed/svg/refresh.svg
@@ -0,0 +1,134 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/remove-small.svg b/rtdata/images/themed/svg/remove-small.svg
new file mode 100644
index 000000000..1bffa469c
--- /dev/null
+++ b/rtdata/images/themed/svg/remove-small.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/remove.svg b/rtdata/images/themed/svg/remove.svg
new file mode 100644
index 000000000..bccfdb160
--- /dev/null
+++ b/rtdata/images/themed/svg/remove.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/rotate-left-90.svg b/rtdata/images/themed/svg/rotate-left-90.svg
new file mode 100644
index 000000000..394c88c29
--- /dev/null
+++ b/rtdata/images/themed/svg/rotate-left-90.svg
@@ -0,0 +1,149 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/rotate-left-small.svg b/rtdata/images/themed/svg/rotate-left-small.svg
new file mode 100644
index 000000000..d85b5e8ea
--- /dev/null
+++ b/rtdata/images/themed/svg/rotate-left-small.svg
@@ -0,0 +1,154 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/rotate-left.svg b/rtdata/images/themed/svg/rotate-left.svg
new file mode 100644
index 000000000..c66020379
--- /dev/null
+++ b/rtdata/images/themed/svg/rotate-left.svg
@@ -0,0 +1,139 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/rotate-right-90.svg b/rtdata/images/themed/svg/rotate-right-90.svg
new file mode 100644
index 000000000..eca331bc8
--- /dev/null
+++ b/rtdata/images/themed/svg/rotate-right-90.svg
@@ -0,0 +1,150 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/rotate-right-small.svg b/rtdata/images/themed/svg/rotate-right-small.svg
new file mode 100644
index 000000000..89e6d4ac2
--- /dev/null
+++ b/rtdata/images/themed/svg/rotate-right-small.svg
@@ -0,0 +1,154 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/rotate-right.svg b/rtdata/images/themed/svg/rotate-right.svg
new file mode 100644
index 000000000..26a46a3f6
--- /dev/null
+++ b/rtdata/images/themed/svg/rotate-right.svg
@@ -0,0 +1,139 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/rotate-straighten-small.svg b/rtdata/images/themed/svg/rotate-straighten-small.svg
new file mode 100644
index 000000000..00da936f8
--- /dev/null
+++ b/rtdata/images/themed/svg/rotate-straighten-small.svg
@@ -0,0 +1,132 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/rotate-straighten.svg b/rtdata/images/themed/svg/rotate-straighten.svg
new file mode 100644
index 000000000..34765aa2b
--- /dev/null
+++ b/rtdata/images/themed/svg/rotate-straighten.svg
@@ -0,0 +1,237 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/save-small.svg b/rtdata/images/themed/svg/save-small.svg
new file mode 100644
index 000000000..3398e27c8
--- /dev/null
+++ b/rtdata/images/themed/svg/save-small.svg
@@ -0,0 +1,177 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/save.svg b/rtdata/images/themed/svg/save.svg
new file mode 100644
index 000000000..eae40ed09
--- /dev/null
+++ b/rtdata/images/themed/svg/save.svg
@@ -0,0 +1,456 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/saved-no-small.svg b/rtdata/images/themed/svg/saved-no-small.svg
new file mode 100644
index 000000000..02b245aa1
--- /dev/null
+++ b/rtdata/images/themed/svg/saved-no-small.svg
@@ -0,0 +1,189 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/saved-yes-small.svg b/rtdata/images/themed/svg/saved-yes-small.svg
new file mode 100644
index 000000000..f545e9b18
--- /dev/null
+++ b/rtdata/images/themed/svg/saved-yes-small.svg
@@ -0,0 +1,175 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-black-off.svg b/rtdata/images/themed/svg/square-toggle-black-off.svg
new file mode 100644
index 000000000..23d835032
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-black-off.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-black-on.svg b/rtdata/images/themed/svg/square-toggle-black-on.svg
new file mode 100644
index 000000000..431f8bd58
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-black-on.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-blue-off.svg b/rtdata/images/themed/svg/square-toggle-blue-off.svg
new file mode 100644
index 000000000..4da563f36
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-blue-off.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-blue-on.svg b/rtdata/images/themed/svg/square-toggle-blue-on.svg
new file mode 100644
index 000000000..6aa7e2cb1
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-blue-on.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-gray-off.svg b/rtdata/images/themed/svg/square-toggle-gray-off.svg
new file mode 100644
index 000000000..3bc716d8e
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-gray-off.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-gray-on.svg b/rtdata/images/themed/svg/square-toggle-gray-on.svg
new file mode 100644
index 000000000..6e3ddb2ed
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-gray-on.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-green-off.svg b/rtdata/images/themed/svg/square-toggle-green-off.svg
new file mode 100644
index 000000000..814feedf6
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-green-off.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-green-on.svg b/rtdata/images/themed/svg/square-toggle-green-on.svg
new file mode 100644
index 000000000..ed178b3b0
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-green-on.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-luminosity-off.svg b/rtdata/images/themed/svg/square-toggle-luminosity-off.svg
new file mode 100644
index 000000000..c5758afa0
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-luminosity-off.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-luminosity-on.svg b/rtdata/images/themed/svg/square-toggle-luminosity-on.svg
new file mode 100644
index 000000000..9db291ba3
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-luminosity-on.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-red-off.svg b/rtdata/images/themed/svg/square-toggle-red-off.svg
new file mode 100644
index 000000000..b05b91ae5
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-red-off.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-red-on.svg b/rtdata/images/themed/svg/square-toggle-red-on.svg
new file mode 100644
index 000000000..52382d0df
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-red-on.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-theme-off.svg b/rtdata/images/themed/svg/square-toggle-theme-off.svg
new file mode 100644
index 000000000..9b3bc4a2a
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-theme-off.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-theme-on.svg b/rtdata/images/themed/svg/square-toggle-theme-on.svg
new file mode 100644
index 000000000..e7b1f00bd
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-theme-on.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-white-off.svg b/rtdata/images/themed/svg/square-toggle-white-off.svg
new file mode 100644
index 000000000..99e675f83
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-white-off.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/square-toggle-white-on.svg b/rtdata/images/themed/svg/square-toggle-white-on.svg
new file mode 100644
index 000000000..97b5e5e41
--- /dev/null
+++ b/rtdata/images/themed/svg/square-toggle-white-on.svg
@@ -0,0 +1,117 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/star-gold-hollow-small.svg b/rtdata/images/themed/svg/star-gold-hollow-small.svg
new file mode 100644
index 000000000..ecdcf65f7
--- /dev/null
+++ b/rtdata/images/themed/svg/star-gold-hollow-small.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/star-gold-small.svg b/rtdata/images/themed/svg/star-gold-small.svg
new file mode 100644
index 000000000..48694c3f1
--- /dev/null
+++ b/rtdata/images/themed/svg/star-gold-small.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/star-hollow-small.svg b/rtdata/images/themed/svg/star-hollow-small.svg
new file mode 100644
index 000000000..6d63a6e8b
--- /dev/null
+++ b/rtdata/images/themed/svg/star-hollow-small.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/star-small.svg b/rtdata/images/themed/svg/star-small.svg
new file mode 100644
index 000000000..f15d135b8
--- /dev/null
+++ b/rtdata/images/themed/svg/star-small.svg
@@ -0,0 +1,128 @@
+
+
+
+
diff --git a/tools/source_icons/scalable/adj-white.svg b/rtdata/images/themed/svg/template-16.svg
similarity index 62%
rename from tools/source_icons/scalable/adj-white.svg
rename to rtdata/images/themed/svg/template-16.svg
index 83a0d66aa..d38151609 100644
--- a/tools/source_icons/scalable/adj-white.svg
+++ b/rtdata/images/themed/svg/template-16.svg
@@ -9,65 +9,72 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- viewBox="0 0 2.6458333 2.6458334"
+ width="16"
+ height="16"
+ viewBox="0 0 16 16"
version="1.1"
- id="svg3944"
- inkscape:export-filename="/tmp/adj-white.png"
+ id="SVGRoot"
+ inkscape:export-filename="/tmp/template.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
- inkscape:version="0.92.1 r"
- sodipodi:docname="adj-white.svg">
- Icons for the "Expert" tab in RawTherapee
-
+ inkscape:version="0.92.2 2405546, 2018-03-11"
+ sodipodi:docname="template-16.svg">
+ inkscape:bbox-nodes="true"
+ inkscape:snap-others="false"
+ inkscape:object-nodes="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-bbox-midpoints="false">
+ id="grid1374"
+ originx="1"
+ originy="1"
+ empspacing="7"
+ dotted="false" />
+
+ id="metadata818">
image/svg+xml
- Icons for the "Expert" tab in RawTherapee
+
- Morgan Hardwood
+ Maciej Dworak
+
+
+
+
+
+ RawTherapee icon.
@@ -89,15 +96,8 @@
-
-
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1"
+ transform="translate(0,-8)" />
diff --git a/tools/source_icons/scalable/adj-black.svg b/rtdata/images/themed/svg/template-24.svg
similarity index 61%
rename from tools/source_icons/scalable/adj-black.svg
rename to rtdata/images/themed/svg/template-24.svg
index 0fa707113..88d934fc5 100644
--- a/tools/source_icons/scalable/adj-black.svg
+++ b/rtdata/images/themed/svg/template-24.svg
@@ -9,64 +9,72 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- viewBox="0 0 2.6458333 2.6458334"
+ width="24px"
+ height="24px"
+ viewBox="0 0 24 24"
version="1.1"
- id="svg3944"
- inkscape:export-filename="/tmp/1.png"
+ id="SVGRoot"
+ inkscape:export-filename="/tmp/template.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
- inkscape:version="0.92.1 r"
- sodipodi:docname="adj-black.svg">
- Icons for the "Expert" tab in RawTherapee
-
+ inkscape:version="0.92.2 2405546, 2018-03-11"
+ sodipodi:docname="template-24.svg">
+ inkscape:grid-bbox="true"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-bbox="true"
+ inkscape:bbox-nodes="true"
+ inkscape:snap-others="false"
+ inkscape:object-nodes="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-bbox-midpoints="false">
+ id="grid1374"
+ originx="1"
+ originy="1"
+ empspacing="11"
+ dotted="false" />
+
+ id="metadata818">
image/svg+xml
- Icons for the "Expert" tab in RawTherapee
+
- Morgan Hardwood
+ Maciej Dworak
+
+
+
+
+
+ RawTherapee icon.
@@ -88,15 +96,7 @@
-
-
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1" />
diff --git a/rtdata/images/themed/svg/tick-green-hollow-small.svg b/rtdata/images/themed/svg/tick-green-hollow-small.svg
new file mode 100644
index 000000000..fcac2954d
--- /dev/null
+++ b/rtdata/images/themed/svg/tick-green-hollow-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/tick-green-hollow.svg b/rtdata/images/themed/svg/tick-green-hollow.svg
new file mode 100644
index 000000000..9b1eca47d
--- /dev/null
+++ b/rtdata/images/themed/svg/tick-green-hollow.svg
@@ -0,0 +1,109 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/tick-green-small.svg b/rtdata/images/themed/svg/tick-green-small.svg
new file mode 100644
index 000000000..edf2dd4b4
--- /dev/null
+++ b/rtdata/images/themed/svg/tick-green-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/tick-green.svg b/rtdata/images/themed/svg/tick-green.svg
new file mode 100644
index 000000000..fa250d9fe
--- /dev/null
+++ b/rtdata/images/themed/svg/tick-green.svg
@@ -0,0 +1,109 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/tick-hollow-small.svg b/rtdata/images/themed/svg/tick-hollow-small.svg
new file mode 100644
index 000000000..010fba31e
--- /dev/null
+++ b/rtdata/images/themed/svg/tick-hollow-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/tick-small.svg b/rtdata/images/themed/svg/tick-small.svg
new file mode 100644
index 000000000..943c61d76
--- /dev/null
+++ b/rtdata/images/themed/svg/tick-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/tick.svg b/rtdata/images/themed/svg/tick.svg
new file mode 100644
index 000000000..8ab7a2e27
--- /dev/null
+++ b/rtdata/images/themed/svg/tick.svg
@@ -0,0 +1,109 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/transform.svg b/rtdata/images/themed/svg/transform.svg
new file mode 100644
index 000000000..09b55309d
--- /dev/null
+++ b/rtdata/images/themed/svg/transform.svg
@@ -0,0 +1,133 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/trash-delete.svg b/rtdata/images/themed/svg/trash-delete.svg
new file mode 100644
index 000000000..7593e6001
--- /dev/null
+++ b/rtdata/images/themed/svg/trash-delete.svg
@@ -0,0 +1,368 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/trash-empty-show.svg b/rtdata/images/themed/svg/trash-empty-show.svg
new file mode 100644
index 000000000..366b15bd6
--- /dev/null
+++ b/rtdata/images/themed/svg/trash-empty-show.svg
@@ -0,0 +1,287 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/trash-empty.svg b/rtdata/images/themed/svg/trash-empty.svg
new file mode 100644
index 000000000..47ceae609
--- /dev/null
+++ b/rtdata/images/themed/svg/trash-empty.svg
@@ -0,0 +1,278 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/trash-full-show.svg b/rtdata/images/themed/svg/trash-full-show.svg
new file mode 100644
index 000000000..8ec3f9092
--- /dev/null
+++ b/rtdata/images/themed/svg/trash-full-show.svg
@@ -0,0 +1,291 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/trash-full.svg b/rtdata/images/themed/svg/trash-full.svg
new file mode 100644
index 000000000..eae5920e3
--- /dev/null
+++ b/rtdata/images/themed/svg/trash-full.svg
@@ -0,0 +1,290 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/trash-hide-deleted.svg b/rtdata/images/themed/svg/trash-hide-deleted.svg
new file mode 100644
index 000000000..e70aa21e1
--- /dev/null
+++ b/rtdata/images/themed/svg/trash-hide-deleted.svg
@@ -0,0 +1,293 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/trash-remove-small.svg b/rtdata/images/themed/svg/trash-remove-small.svg
new file mode 100644
index 000000000..a58bafd39
--- /dev/null
+++ b/rtdata/images/themed/svg/trash-remove-small.svg
@@ -0,0 +1,116 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/trash-remove.svg b/rtdata/images/themed/svg/trash-remove.svg
new file mode 100644
index 000000000..31ca65a56
--- /dev/null
+++ b/rtdata/images/themed/svg/trash-remove.svg
@@ -0,0 +1,288 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/trash-small.svg b/rtdata/images/themed/svg/trash-small.svg
new file mode 100644
index 000000000..3d2e674c6
--- /dev/null
+++ b/rtdata/images/themed/svg/trash-small.svg
@@ -0,0 +1,125 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/undo-all.svg b/rtdata/images/themed/svg/undo-all.svg
new file mode 100644
index 000000000..e648588ef
--- /dev/null
+++ b/rtdata/images/themed/svg/undo-all.svg
@@ -0,0 +1,126 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/undo-small.svg b/rtdata/images/themed/svg/undo-small.svg
new file mode 100644
index 000000000..137c343e6
--- /dev/null
+++ b/rtdata/images/themed/svg/undo-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/undo.svg b/rtdata/images/themed/svg/undo.svg
new file mode 100644
index 000000000..bc4282693
--- /dev/null
+++ b/rtdata/images/themed/svg/undo.svg
@@ -0,0 +1,118 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/warning-highlights.svg b/rtdata/images/themed/svg/warning-highlights.svg
new file mode 100644
index 000000000..c7aaf80ce
--- /dev/null
+++ b/rtdata/images/themed/svg/warning-highlights.svg
@@ -0,0 +1,134 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/warning-shadows.svg b/rtdata/images/themed/svg/warning-shadows.svg
new file mode 100644
index 000000000..f9baa36c1
--- /dev/null
+++ b/rtdata/images/themed/svg/warning-shadows.svg
@@ -0,0 +1,134 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wavelets.svg b/rtdata/images/themed/svg/wavelets.svg
new file mode 100644
index 000000000..1d6de039c
--- /dev/null
+++ b/rtdata/images/themed/svg/wavelets.svg
@@ -0,0 +1,157 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-auto-small.svg b/rtdata/images/themed/svg/wb-auto-small.svg
new file mode 100644
index 000000000..23e55f560
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-auto-small.svg
@@ -0,0 +1,114 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-auto.svg b/rtdata/images/themed/svg/wb-auto.svg
new file mode 100644
index 000000000..5914ee63e
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-auto.svg
@@ -0,0 +1,111 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-camera-small.svg b/rtdata/images/themed/svg/wb-camera-small.svg
new file mode 100644
index 000000000..2521d513e
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-camera-small.svg
@@ -0,0 +1,109 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-camera.svg b/rtdata/images/themed/svg/wb-camera.svg
new file mode 100644
index 000000000..f83342b6b
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-camera.svg
@@ -0,0 +1,108 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-cloudy-small.svg b/rtdata/images/themed/svg/wb-cloudy-small.svg
new file mode 100644
index 000000000..0197eab4e
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-cloudy-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-cloudy.svg b/rtdata/images/themed/svg/wb-cloudy.svg
new file mode 100644
index 000000000..5762fa37b
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-cloudy.svg
@@ -0,0 +1,109 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-custom-small.svg b/rtdata/images/themed/svg/wb-custom-small.svg
new file mode 100644
index 000000000..f176458a8
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-custom-small.svg
@@ -0,0 +1,125 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-custom.svg b/rtdata/images/themed/svg/wb-custom.svg
new file mode 100644
index 000000000..f1d2ec8f7
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-custom.svg
@@ -0,0 +1,123 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-flash-small.svg b/rtdata/images/themed/svg/wb-flash-small.svg
new file mode 100644
index 000000000..634912538
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-flash-small.svg
@@ -0,0 +1,110 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-flash.svg b/rtdata/images/themed/svg/wb-flash.svg
new file mode 100644
index 000000000..fb4b0ca66
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-flash.svg
@@ -0,0 +1,109 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-fluorescent-small.svg b/rtdata/images/themed/svg/wb-fluorescent-small.svg
new file mode 100644
index 000000000..67c86ec71
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-fluorescent-small.svg
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-fluorescent.svg b/rtdata/images/themed/svg/wb-fluorescent.svg
new file mode 100644
index 000000000..8746978e1
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-fluorescent.svg
@@ -0,0 +1,169 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-lamp-small.svg b/rtdata/images/themed/svg/wb-lamp-small.svg
new file mode 100644
index 000000000..32c172d7f
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-lamp-small.svg
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-lamp.svg b/rtdata/images/themed/svg/wb-lamp.svg
new file mode 100644
index 000000000..39f2ccb94
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-lamp.svg
@@ -0,0 +1,169 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-led-small.svg b/rtdata/images/themed/svg/wb-led-small.svg
new file mode 100644
index 000000000..7e20c4576
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-led-small.svg
@@ -0,0 +1,156 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-led.svg b/rtdata/images/themed/svg/wb-led.svg
new file mode 100644
index 000000000..952f5f77f
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-led.svg
@@ -0,0 +1,151 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-shade-small.svg b/rtdata/images/themed/svg/wb-shade-small.svg
new file mode 100644
index 000000000..78ed1e6c6
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-shade-small.svg
@@ -0,0 +1,132 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-shade.svg b/rtdata/images/themed/svg/wb-shade.svg
new file mode 100644
index 000000000..3ac24bd80
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-shade.svg
@@ -0,0 +1,172 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-sun-small.svg b/rtdata/images/themed/svg/wb-sun-small.svg
new file mode 100644
index 000000000..94abad681
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-sun-small.svg
@@ -0,0 +1,178 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-sun.svg b/rtdata/images/themed/svg/wb-sun.svg
new file mode 100644
index 000000000..b9c71a3dc
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-sun.svg
@@ -0,0 +1,173 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-tungsten-small.svg b/rtdata/images/themed/svg/wb-tungsten-small.svg
new file mode 100644
index 000000000..dc4b62beb
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-tungsten-small.svg
@@ -0,0 +1,163 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-tungsten.svg b/rtdata/images/themed/svg/wb-tungsten.svg
new file mode 100644
index 000000000..0dabc0935
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-tungsten.svg
@@ -0,0 +1,158 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-water-small.svg b/rtdata/images/themed/svg/wb-water-small.svg
new file mode 100644
index 000000000..2cb62298a
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-water-small.svg
@@ -0,0 +1,118 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/wb-water.svg b/rtdata/images/themed/svg/wb-water.svg
new file mode 100644
index 000000000..55a98f099
--- /dev/null
+++ b/rtdata/images/themed/svg/wb-water.svg
@@ -0,0 +1,113 @@
+
+
+
+
diff --git a/rtdata/images/themed/svg/window-add.svg b/rtdata/images/themed/svg/window-add.svg
new file mode 100644
index 000000000..da0651444
--- /dev/null
+++ b/rtdata/images/themed/svg/window-add.svg
@@ -0,0 +1,116 @@
+
+
+
+
diff --git a/rtdata/images/toleftend.png b/rtdata/images/toleftend.png
deleted file mode 100644
index 4dfd61fec..000000000
Binary files a/rtdata/images/toleftend.png and /dev/null differ
diff --git a/rtdata/images/torightend.png b/rtdata/images/torightend.png
deleted file mode 100644
index 2c5204f74..000000000
Binary files a/rtdata/images/torightend.png and /dev/null differ
diff --git a/rtdata/images/transform.png b/rtdata/images/transform.png
deleted file mode 100644
index fc2f66cef..000000000
Binary files a/rtdata/images/transform.png and /dev/null differ
diff --git a/rtdata/images/trash-show-empty.png b/rtdata/images/trash-show-empty.png
deleted file mode 100644
index 08fcdfc93..000000000
Binary files a/rtdata/images/trash-show-empty.png and /dev/null differ
diff --git a/rtdata/images/trash-show-full.png b/rtdata/images/trash-show-full.png
deleted file mode 100644
index c9bd50e51..000000000
Binary files a/rtdata/images/trash-show-full.png and /dev/null differ
diff --git a/rtdata/images/trash.png b/rtdata/images/trash.png
deleted file mode 100644
index 08fcdfc93..000000000
Binary files a/rtdata/images/trash.png and /dev/null differ
diff --git a/rtdata/images/warnhl.png b/rtdata/images/warnhl.png
deleted file mode 100644
index 98dddeb92..000000000
Binary files a/rtdata/images/warnhl.png and /dev/null differ
diff --git a/rtdata/images/warnsh.png b/rtdata/images/warnsh.png
deleted file mode 100644
index ee2c31e08..000000000
Binary files a/rtdata/images/warnsh.png and /dev/null differ
diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala
index a27a41a1e..4c5beefef 100644
--- a/rtdata/languages/Catala
+++ b/rtdata/languages/Catala
@@ -999,7 +999,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions.
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -1011,6 +1011,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!GENERAL_CLOSE;Close
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!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_CHRO;Show/Hide chromaticity histogram.
@@ -1319,10 +1320,16 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -1335,11 +1342,53 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1369,6 +1418,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1410,14 +1460,16 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!PARTIALPASTE_PCVIGNETTE;Vignette filter
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_LMMSEITERATIONS;LMMSE enhancement steps
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1850,6 +1902,12 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance
!TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles.
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LABCURVE_CHROMA_TOOLTIP;To apply B&W toning, set Chromaticity to -100.
!TP_LABCURVE_CURVEEDITOR_CL;CL
!TP_LABCURVE_CURVEEDITOR_CL_TOOLTIP;Chromaticity according to luminance C=f(L)
@@ -1962,6 +2020,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: -
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified)
index ae937f6dd..ecd0473ba 100644
--- a/rtdata/languages/Chinese (Simplified)
+++ b/rtdata/languages/Chinese (Simplified)
@@ -1060,6 +1060,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!GENERAL_RESET;Reset
+!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.
@@ -1426,10 +1427,16 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -1442,10 +1449,52 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1475,6 +1524,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1502,8 +1552,10 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!PARTIALPASTE_ADVANCEDGROUP;Advanced Settings
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
!PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values.
!PREFERENCES_BEHSETALLHINT;Set all parameters to the Set mode.\nAdjustments of parameters in the batch tool panel will be absolute, the actual values will be displayed.
@@ -1800,6 +1852,12 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles.
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LABCURVE_CHROMA_TOOLTIP;To apply B&W toning, set Chromaticity to -100.
!TP_LABCURVE_CURVEEDITOR_A_RANGE1;Green Saturated
!TP_LABCURVE_CURVEEDITOR_A_RANGE2;Green Pastel
@@ -1940,6 +1998,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: -
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional)
index f0fe5048b..d527f8c65 100644
--- a/rtdata/languages/Chinese (Traditional)
+++ b/rtdata/languages/Chinese (Traditional)
@@ -565,7 +565,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -579,6 +579,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!GENERAL_NONE;None
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!GENERAL_SAVE_AS;Save as...
!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.
@@ -981,10 +982,16 @@ TP_WBALANCE_TEMPERATURE;色溫
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -997,11 +1004,53 @@ TP_WBALANCE_TEMPERATURE;色溫
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1032,6 +1081,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
!MAIN_BUTTON_FULLSCREEN;Fullscreen
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1127,6 +1177,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1134,6 +1185,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1146,7 +1198,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1668,10 +1720,6 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER;Center
!TP_GRADIENT_CENTER_X;Center X
@@ -1718,6 +1766,12 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
@@ -1888,6 +1942,7 @@ TP_WBALANCE_TEMPERATURE;色溫
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech
index d01d5aa30..8051a6f3b 100644
--- a/rtdata/languages/Czech
+++ b/rtdata/languages/Czech
@@ -2226,6 +2226,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...
!HISTORY_MSG_235;B&W - CM - Auto
!HISTORY_MSG_237;B&W - CM
!HISTORY_MSG_273;CT - Color Balance SMH
@@ -2234,21 +2235,78 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
!HISTORY_MSG_489;DRC - Threshold
!HISTORY_MSG_490;DRC - Amount
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!SAMPLEFORMAT_32;24-bit floating-point
!SAMPLEFORMAT_64;32-bit floating-point
!TP_BWMIX_MIXC;Channel Mixer
!TP_BWMIX_NEUTRAL;Reset
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_RAW_2PASS;1-pass+fast
!TP_RAW_4PASS;3-pass+fast
!TP_RAW_AMAZEVNG4;AMaZE+VNG4
@@ -2257,6 +2315,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: -
!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold
!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion
!TP_RAW_RCDVNG4;RCD+VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light
diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk
index f4b221166..77ae6dc9b 100644
--- a/rtdata/languages/Dansk
+++ b/rtdata/languages/Dansk
@@ -557,7 +557,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -573,6 +573,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!GENERAL_NONE;None
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
@@ -976,10 +977,16 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -992,11 +999,53 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1027,6 +1076,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
!MAIN_BUTTON_FULLSCREEN;Fullscreen
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1124,6 +1174,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1131,6 +1182,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1143,7 +1195,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1665,10 +1717,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER;Center
!TP_GRADIENT_CENTER_X;Center X
@@ -1715,6 +1763,12 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
@@ -1883,6 +1937,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch
index 50a738e35..4318514f2 100644
--- a/rtdata/languages/Deutsch
+++ b/rtdata/languages/Deutsch
@@ -64,6 +64,10 @@
#63 24.06.2018 DCB/RCD+VNG4 (TooWaBoo) RT 5.4
#64 24.06.2018 Erweiterung/Korrektur (TooWaBoo) RT 5.4
#65 25.06.2018 Korrekturen (TooWaBoo) RT 5.4
+#66 04.07.2018 Erweiterung (TooWaBoo) RT 5.4
+#67 05.07.2018 Erweiterung (TooWaBoo) RT 5.4
+#68 05.07.2018 Erweiterung (TooWaBoo) RT 5.4
+#69 25.07.2018 Erweiterung (TooWaBoo) RT 5.4
ABOUT_TAB_BUILD;Version
ABOUT_TAB_CREDITS;Danksagungen
@@ -287,7 +291,7 @@ GENERAL_DISABLED;Deaktiviert
GENERAL_ENABLE;Aktivieren
GENERAL_ENABLED;Aktiviert
GENERAL_FILE;Datei:
-GENERAL_LANDSCAPE;Quer
+GENERAL_LANDSCAPE;Landschaft
GENERAL_NA;n/a
GENERAL_NO;Nein
GENERAL_NONE;Keine
@@ -296,6 +300,7 @@ GENERAL_OPEN;Öffnen
GENERAL_PORTRAIT;Portrait
GENERAL_RESET;Zurücksetzen
GENERAL_SAVE;Speichern
+GENERAL_SAVE_AS;Speichern
GENERAL_SLIDER;Regler
GENERAL_UNCHANGED;(Unverändert)
GENERAL_WARNING;Warnung
@@ -737,7 +742,7 @@ HISTORY_MSG_423;(Retinex) - Einstellungen\nGammasteigung
HISTORY_MSG_424;(Retinex) - Einstellungen\nHL-Schwelle
HISTORY_MSG_425;(Retinex) - Einstellungen\nBasis-Logarithmus
HISTORY_MSG_426;(Retinex) - Einstellungen\nKorrekturen - Farbton (H)
-HISTORY_MSG_427;Ausgabe-Rendering-Intent
+HISTORY_MSG_427;(Farbmanagement)\nAusgabeprofil\nRendering-Intent
HISTORY_MSG_428;Monitor-Rendering-Intent
HISTORY_MSG_429;(Retinex) - Einstellungen\nDynamikkompression\nIterationen
HISTORY_MSG_430;(Retinex) - Einstellungen\nDynamikkompression\nTransmission Gradient
@@ -792,6 +797,12 @@ HISTORY_MSG_CLAMPOOG;(Belichtung) - Farben\nauf Farbraum beschränken
HISTORY_MSG_COLORTONING_LABGRID_VALUE;(Farbanpassungen)\nL*a*b* - Farbkorrektur
HISTORY_MSG_DUALDEMOSAIC_CONTRAST;(Sensor-Matrix)\nFarbinterpolation\nKontrastschwelle
HISTORY_MSG_HISTMATCHING;(Belichtung)\nAuto-Tonwertkurve
+HISTORY_MSG_ICM_OUTPUT_PRIMARIES;(Farbmanagement)\nAusgabeprofil\nVorlagen
+HISTORY_MSG_ICM_OUTPUT_TEMP;(Farbmanagement)\nAusgabeprofil\nIccV4-Illuminant D
+HISTORY_MSG_ICM_OUTPUT_TYPE;(Farbmanagement)\nAusgabeprofil\nTyp
+HISTORY_MSG_ICM_WORKING_GAMMA;(Farbmanagement)\nArbeitsfarbraum\nGamma
+HISTORY_MSG_ICM_WORKING_SLOPE;(Farbmanagement)\nArbeitsfarbraum\nSteigung
+HISTORY_MSG_ICM_WORKING_TRC_METHOD;(Farbmanagement)\nArbeitsfarbraum\nFarbtonkennlinie
HISTORY_MSG_LOCALCONTRAST_AMOUNT;(Lokaler Kontrast)\nIntensität
HISTORY_MSG_LOCALCONTRAST_DARKNESS;(Lokaler Kontrast)\nDunkle Bereiche
HISTORY_MSG_LOCALCONTRAST_ENABLED;(Lokaler Kontrast)
@@ -803,12 +814,57 @@ HISTORY_MSG_PIXELSHIFT_DEMOSAIC;(Sensor-Matrix)\nFarbinterpolation - PS\nBewegun
HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;(Sensor-Matrix)\nVorverarbeitung\nRichtung
HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;(Sensor-Matrix)\nVorverarbeitung\nPDAF-Zeilenfilter
HISTORY_MSG_PRSHARPEN_CONTRAST;(Skalieren) - Schärfen\nKontrastschwelle
+HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand
+HISTORY_MSG_RESIZE_ALLOWUPSCALING;(Skalieren)\nHochskalieren zulassen
HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle
+HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht)
+HISTORY_MSG_SOFTLIGHT_STRENGTH;(Weiches Licht)\nIntensität
HISTORY_MSG_TM_FATTAL_ANCHOR;(Dynamikkompression)\nHelligkeitsverschiebung
HISTORY_NEWSNAPSHOT;Hinzufügen
HISTORY_NEWSNAPSHOT_TOOLTIP;Taste: Alt + s
HISTORY_SNAPSHOT;Schnappschuss
HISTORY_SNAPSHOTS;Schnappschüsse
+ICCPROFCREATOR_COPYRIGHT;Copyright:
+ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Auf den vorgegebenen Copyright-Text zurücksetzen.
+ICCPROFCREATOR_CUSTOM;Benutzerdefiniert
+ICCPROFCREATOR_DESCRIPTION;Beschreibung:
+ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Füge Gamma- und Steigungswerte der Beschreibung hinzu
+ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Wenn leer, wird die Standardbeschreibung verwendet.
+ICCPROFCREATOR_GAMMA;Gamma
+ICCPROFCREATOR_ICCVERSION;ICC-Version:
+ICCPROFCREATOR_ILL;Illuminant:
+ICCPROFCREATOR_ILL_41;D41
+ICCPROFCREATOR_ILL_50;D50
+ICCPROFCREATOR_ILL_55;D55
+ICCPROFCREATOR_ILL_60;D60
+ICCPROFCREATOR_ILL_65;D65
+ICCPROFCREATOR_ILL_80;D80
+ICCPROFCREATOR_ILL_DEF;Vorgabe
+ICCPROFCREATOR_ILL_INC;StdA 2856K
+ICCPROFCREATOR_ILL_TOOLTIP;Illuminant kann nur bei ICC-v4-Profilen\nverwendet werden.
+ICCPROFCREATOR_PRIMARIES;Vorlage:
+ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+ICCPROFCREATOR_PRIM_BEST;BestRGB
+ICCPROFCREATOR_PRIM_BETA;BetaRGB
+ICCPROFCREATOR_PRIM_BLUX;Blau X
+ICCPROFCREATOR_PRIM_BLUY;Blau Y
+ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+ICCPROFCREATOR_PRIM_GREX;Grün X
+ICCPROFCREATOR_PRIM_GREY;Grün Y
+ICCPROFCREATOR_PRIM_PROPH;Prophoto
+ICCPROFCREATOR_PRIM_REC2020;Rec2020
+ICCPROFCREATOR_PRIM_REDX;Rot X
+ICCPROFCREATOR_PRIM_REDY;Rot Y
+ICCPROFCREATOR_PRIM_SRGB;sRGB
+ICCPROFCREATOR_PRIM_TOOLTIP;Benutzerdefinierte Vorlagen können nur\nbei ICC-v4-Profilen verwendet werden.
+ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+ICCPROFCREATOR_PROF_V2;ICC v2
+ICCPROFCREATOR_PROF_V4;ICC v4
+ICCPROFCREATOR_SAVEDIALOG_TITLE;ICC-Profile speichern unter ...
+ICCPROFCREATOR_SLOPE;Steigung
+ICCPROFCREATOR_TRC_PRESET;Farbtonkennlinie:
IPTCPANEL_CATEGORY;Kategorie
IPTCPANEL_CATEGORYHINT;Beschreibt das Thema des Bildes nach\nMeinung des Anbieters.
IPTCPANEL_CITY;Stadt
@@ -856,6 +912,7 @@ LENSPROFILE_CORRECTION_LCPFILE;LCP-Datei
LENSPROFILE_CORRECTION_MANUAL;Benutzerdefiniert (Lensfun)
LENSPROFILE_LENS_WARNING;Warnung: Der Cropfaktor des Profils entspricht nicht dem des Objektivs.\nDies kann zu einem fehlerhaften Ergebnis führen.
MAIN_BUTTON_FULLSCREEN;Vollbild\nTaste: F11
+MAIN_BUTTON_ICCPROFCREATOR;ICC-Profil erstellen
MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigiert zum nächsten Miniaturbild in der\nDateiverwaltung oder Filmstreifen bezogen\nauf das ausgewählte Miniaturbild.\nTaste: F4\n\nNavigiert zum nächsten Miniaturbild in der\nDateiverwaltung oder Filmstreifen bezogen\nauf auf das im Editor geöffnete Bild.\nTaste: Umschalt + F4
MAIN_BUTTON_NAVPREV_TOOLTIP;Navigiert zum vorherigen Miniaturbild in der\nDateiverwaltung oder Filmstreifen bezogen\nauf das ausgewählte Miniaturbild.\nTaste: F3\n\nNavigiert zum vorherigen Miniaturbild in der\nDateiverwaltung oder Filmstreifen bezogen\nauf auf das im Editor geöffnete Bild.\nTaste: Umschalt + F3
MAIN_BUTTON_NAVSYNC_TOOLTIP;Selektiert das Miniaturbild des aktuell geöffneten\nBildes in der Dateiverwaltung und des Filmstreifens.\nEs werden alle aktiven Filter gelöscht.\nTaste: x\n\nWie oben, jedoch ohne Löschung aktiver Filter. Das\nMiniaturbild des geöffneten Bildes wird nicht angezeigt,\nwenn es herausgefiltert wurde.\nTaste: y
@@ -969,7 +1026,7 @@ PARTIALPASTE_DIRPYRDENOISE;Rauschreduzierung
PARTIALPASTE_DIRPYREQUALIZER;Detailebenenkontrast
PARTIALPASTE_DISTORTION;Verzeichnungskorrektur
PARTIALPASTE_EPD;Tonwertkorrektur
-PARTIALPASTE_EQUALIZER;Anzahl der Ebenen
+PARTIALPASTE_EQUALIZER;Wavelet
PARTIALPASTE_EVERYTHING;Alle Parameter aktivieren / deaktivieren
PARTIALPASTE_EXIFCHANGES;Änderungen an Exif-Daten
PARTIALPASTE_EXPOSURE;Belichtung
@@ -996,6 +1053,7 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Vorverarbeitung: Dead-Pixel-Filter
PARTIALPASTE_PREPROCESS_GREENEQUIL;Vorverarbeitung: Grün-Ausgleich
PARTIALPASTE_PREPROCESS_HOTPIXFILT;Vorverarbeitung: Hot-Pixel-Filter
PARTIALPASTE_PREPROCESS_LINEDENOISE;Vorverarbeitung: Zeilenrauschfilter
+PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;Vorverarbeitung: PDAF-Zeilenfilter
PARTIALPASTE_PRSHARPENING;Schärfung nach Größenänderung
PARTIALPASTE_RAWCACORR_AUTO;Chromatische Aberration: Automatische Korrektur
PARTIALPASTE_RAWCACORR_CAREDBLUE;Chromatische Aberration: Rot & Blau
@@ -1003,6 +1061,7 @@ PARTIALPASTE_RAWEXPOS_BLACK;Weißpunkt: Schwarzpegel
PARTIALPASTE_RAWEXPOS_LINEAR;Weißpunkt: Korrekturfaktor
PARTIALPASTE_RAWEXPOS_PRESER;Weißpunkt: Lichter schützen (EV)
PARTIALPASTE_RAWGROUP;RAW
+PARTIALPASTE_RAW_BORDER;Farbinterpolation: Bildrand
PARTIALPASTE_RAW_DCBENHANCE;Farbinterpolation: DCB-Verbesserung
PARTIALPASTE_RAW_DCBITERATIONS;Farbinterpolation: Anzahl der DCB-Iterationen
PARTIALPASTE_RAW_DMETHOD;Farbinterpolation: Methode
@@ -1018,6 +1077,7 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Schatten/Lichter
PARTIALPASTE_SHARPENEDGE;Kantenschärfung
PARTIALPASTE_SHARPENING;Schärfung
PARTIALPASTE_SHARPENMICRO;Mikrokontrast
+PARTIALPASTE_SOFTLIGHT;Weiches Licht
PARTIALPASTE_TM_FATTAL;Dynamikkompression
PARTIALPASTE_VIBRANCE;Dynamik
PARTIALPASTE_VIGNETTING;Vignettierungskorrektur
@@ -1125,7 +1185,7 @@ PREFERENCES_GREYSC18;Yb = 18 CIE L#49
PREFERENCES_GREYSCA;Automatisch
PREFERENCES_HISTOGRAMPOSITIONLEFT;Histogramm linksseitig
PREFERENCES_HISTOGRAMWORKING;Das Arbeitsprofil zur Darstellung des Haupthistogramms verwenden
-PREFERENCES_HISTOGRAM_TOOLTIP;Wenn aktiviert wird das Arbeitsprofil für die Darstellung des\nHaupthistogramms, andernfalls das des gammakorrigierten\nAusgangsprofil, verwendet.
+PREFERENCES_HISTOGRAM_TOOLTIP;Wenn aktiviert wird das Arbeitsprofil für die Darstellung\ndes Haupthistogramms verwendet, andernfalls das des\ngammakorrigierten Ausgangsprofil.
PREFERENCES_HLTHRESHOLD;Lichter - Schwelle
PREFERENCES_ICCDIR;ICC-Profile-Verzeichnis
PREFERENCES_IMG_RELOAD_NEEDED;Änderungen werden nur auf neu geöffnete Bilder angewendet
@@ -1724,7 +1784,7 @@ TP_ICM_INPUTPROFILE;Eingangsfarbprofil
TP_ICM_LABEL;Farbmanagement
TP_ICM_NOICM;Kein ICM: sRGB-Ausgabe
TP_ICM_OUTPUTPROFILE;Ausgabeprofil
-TP_ICM_PROFILEINTENT;Rendering Intent
+TP_ICM_PROFILEINTENT;Rendering-Intent
TP_ICM_SAVEREFERENCE;Referenzbild speichern
TP_ICM_SAVEREFERENCE_APPLYWB;Weißabgleich anwenden
TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Um ICC-Profile zu erstellen, den Weißabgleich beim Speichern anwenden. Um DCP-Profile zu erstellen, den Weißabgleich NICHT beim Speichern anwenden.
@@ -1732,6 +1792,12 @@ TP_ICM_SAVEREFERENCE_TOOLTIP;Speichert das lineare TIFF-Bild bevor das\nEingangs
TP_ICM_TONECURVE;Tonwertkurve
TP_ICM_TONECURVE_TOOLTIP;Eingebettete DCP-Tonwertkurve verwenden.\nDie Einstellung ist nur verfügbar wenn sie\nvom Eingangsfarbprofil unterstützt wird.
TP_ICM_WORKINGPROFILE;Arbeitsfarbraum
+TP_ICM_WORKING_TRC;Farbtonkennlinie:
+TP_ICM_WORKING_TRC_CUSTOM;Benutzerdefiniert
+TP_ICM_WORKING_TRC_GAMMA;Gamma
+TP_ICM_WORKING_TRC_NONE;Keine
+TP_ICM_WORKING_TRC_SLOPE;Steigung
+TP_ICM_WORKING_TRC_TOOLTIP;Nur für die mitgelieferten\nProfile möglich.
TP_IMPULSEDENOISE_LABEL;Impulsrauschreduzierung
TP_IMPULSEDENOISE_THRESH;Schwelle
TP_LABCURVE_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden
@@ -1841,6 +1907,7 @@ TP_RAW_4PASS;3-Pass + schnell
TP_RAW_AHD;AHD
TP_RAW_AMAZE;AMaZE
TP_RAW_AMAZEVNG4;AMaZE + VNG4
+TP_RAW_BORDER;Bildrand
TP_RAW_DCB;DCB
TP_RAW_DCBENHANCE;DCB-Verbesserung
TP_RAW_DCBITERATIONS;Anzahl der DCB-Iterationen
@@ -1920,6 +1987,7 @@ TP_RAW_SENSOR_BAYER_LABEL;Sensor mit Bayer-Matrix
TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;Mit “3-Pass“ erzielt man die besten Ergebnisse\n(empfohlen bei Bildern mit niedrigen ISO-Werten).\n\nBei hohen ISO-Werten unterscheidet sich “1-Pass“\nkaum gegenüber “3-Pass“, ist aber deutlich schneller.\n\n"+ schnell" erzeugt weniger Artefakte in kontrast-\narmen Bereichen.
TP_RAW_SENSOR_XTRANS_LABEL;Sensor mit X-Trans-Matrix
TP_RAW_VNG4;VNG4
+TP_RESIZE_ALLOW_UPSCALING;Hochskalieren zulassen
TP_RESIZE_APPLIESTO;Anwenden auf:
TP_RESIZE_CROPPEDAREA;Ausschnitt
TP_RESIZE_FITBOX;Begrenzungsrahmen
@@ -2058,6 +2126,8 @@ TP_SHARPENMICRO_CONTRAST;Kontrastschwelle
TP_SHARPENMICRO_LABEL;Mikrokontrast
TP_SHARPENMICRO_MATRIX;3×3-Matrix statt 5×5-Matrix
TP_SHARPENMICRO_UNIFORMITY;Gleichmäßigkeit
+TP_SOFTLIGHT_LABEL;Weiches Licht
+TP_SOFTLIGHT_STRENGTH;Intensität
TP_TM_FATTAL_AMOUNT;Intensität
TP_TM_FATTAL_ANCHOR;Helligkeitsverschiebung
TP_TM_FATTAL_LABEL;Dynamikkompression
@@ -2305,14 +2375,3 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen\nTaste: Alt + f
ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: +
ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: -
-!!!!!!!!!!!!!!!!!!!!!!!!!
-! Untranslated keys follow; remove the ! prefix after an entry is translated.
-!!!!!!!!!!!!!!!!!!!!!!!!!
-
-!HISTORY_MSG_RAW_BORDER;Raw border
-!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
-!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
-!PARTIALPASTE_SOFTLIGHT;Soft light
-!TP_RAW_BORDER;Border
-!TP_SOFTLIGHT_LABEL;Soft Light
-!TP_SOFTLIGHT_STRENGTH;Strength
diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK)
index 680f43a43..8f08152d5 100644
--- a/rtdata/languages/English (UK)
+++ b/rtdata/languages/English (UK)
@@ -2,7 +2,7 @@ EXPORT_BYPASS_RAW_CCSTEPS;Bypass [raw] False Colour Suppression
FILEBROWSER_COLORLABEL_TOOLTIP;Colour label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Colour\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple
FILEBROWSER_POPUPCOLORLABEL;Colour label
FILEBROWSER_SHOWUNCOLORHINT;Show images without a colour label.\nShortcut: Alt-0
-FILECHOOSER_FILTER_COLPROF;Colour profiles
+FILECHOOSER_FILTER_COLPROF;Colour profiles (*.icc)
HISTORY_MSG_46;Colour denoising
HISTORY_MSG_69;Working colour space
HISTORY_MSG_70;Output colour space
@@ -24,7 +24,7 @@ HISTORY_MSG_322;W - Gamut - Avoid colour shift
HISTORY_MSG_385;W - Residual - Colour Balance
HISTORY_MSG_392;W - Residual - Colour Balance
HISTORY_MSG_419;Retinex - Colour space
-HISTORY_MSG_CLAMPOOG;Out-of-gamut colour clipping
+HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colours
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Colour correction
MAIN_TAB_COLOR;Colour
MAIN_TOOLTIP_BACKCOLOR0;Background colour of the preview: Theme-based\nShortcut: 9
@@ -343,6 +343,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!GENERAL_PORTRAIT;Portrait
!GENERAL_RESET;Reset
!GENERAL_SAVE;Save
+!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
@@ -815,7 +816,13 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -828,6 +835,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
@@ -836,6 +844,47 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!HISTORY_SNAPSHOT;Snapshot
!HISTORY_SNAPSHOTS;Snapshots
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORY;Category
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITY;City
@@ -883,6 +932,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
!MAIN_BUTTON_FULLSCREEN;Fullscreen
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1013,6 +1063,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1020,6 +1071,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1035,7 +1087,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!PARTIALPASTE_SHARPENING;Sharpening (USM/RL)
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PARTIALPASTE_VIGNETTING;Vignetting correction
!PARTIALPASTE_WHITEBALANCE;White balance
@@ -1628,10 +1680,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_FLATFIELD_BT_VERTICAL;Vertical
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER_X_TOOLTIP;Shift gradient to the left (negative values) or right (positive values).
!TP_GRADIENT_CENTER_Y_TOOLTIP;Shift gradient up (negative values) or down (positive values).
@@ -1682,6 +1730,12 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
!TP_ICM_WORKINGPROFILE;Working Profile
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
!TP_LABCURVE_BRIGHTNESS;Lightness
@@ -1846,6 +1900,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -2206,7 +2261,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
-!TP_WBALANCE_SPOTWB;Spot WB
+!TP_WBALANCE_SPOTWB;Use the pipette to pick the white balance from a neutral patch in the preview.
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TEMPERATURE;Temperature
diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US)
index c88352856..0ab893c07 100644
--- a/rtdata/languages/English (US)
+++ b/rtdata/languages/English (US)
@@ -206,7 +206,7 @@
!FILEBROWSER_ZOOMINHINT;Increase thumbnail size.\n\nShortcuts:\n+ - Multiple Editor Tabs Mode,\nAlt-+ - Single Editor Tab Mode.
!FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size.\n\nShortcuts:\n- - Multiple Editor Tabs Mode,\nAlt-- - Single Editor Tab Mode.
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -234,6 +234,7 @@
!GENERAL_PORTRAIT;Portrait
!GENERAL_RESET;Reset
!GENERAL_SAVE;Save
+!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
@@ -726,10 +727,16 @@
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -742,6 +749,7 @@
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
@@ -750,6 +758,47 @@
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
!HISTORY_SNAPSHOT;Snapshot
!HISTORY_SNAPSHOTS;Snapshots
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORY;Category
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITY;City
@@ -797,6 +846,7 @@
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
!MAIN_BUTTON_FULLSCREEN;Fullscreen
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -935,6 +985,7 @@
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -942,6 +993,7 @@
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -958,7 +1010,7 @@
!PARTIALPASTE_SHARPENING;Sharpening (USM/RL)
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PARTIALPASTE_VIGNETTING;Vignetting correction
!PARTIALPASTE_WHITEBALANCE;White balance
@@ -1601,10 +1653,6 @@
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER;Center
!TP_GRADIENT_CENTER_X;Center X
@@ -1665,6 +1713,12 @@
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
!TP_ICM_WORKINGPROFILE;Working Profile
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
@@ -1835,6 +1889,7 @@
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
@@ -2206,7 +2261,7 @@
!TP_WBALANCE_SOLUX41;Solux 4100K
!TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
!TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
-!TP_WBALANCE_SPOTWB;Spot WB
+!TP_WBALANCE_SPOTWB;Use the pipette to pick the white balance from a neutral patch in the preview.
!TP_WBALANCE_TEMPBIAS;AWB temperature bias
!TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
!TP_WBALANCE_TEMPERATURE;Temperature
diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol
index 2a6c8a345..b869ba90c 100644
--- a/rtdata/languages/Espanol
+++ b/rtdata/languages/Espanol
@@ -1507,7 +1507,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images.
!FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions.
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -1517,6 +1517,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!GENERAL_ASIMAGE;As Image
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!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.
!HISTORY_MSG_166;Exposure - Reset
@@ -1706,10 +1707,16 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -1722,10 +1729,52 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1755,6 +1804,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
@@ -1779,13 +1829,15 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!PARTIALPASTE_GRADIENT;Graduated filter
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1961,6 +2013,12 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!TP_ICM_SAVEREFERENCE;Save Reference Image
!TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance
!TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LABCURVE_CURVEEDITOR_CC;CC
!TP_LOCALCONTRAST_AMOUNT;Amount
!TP_LOCALCONTRAST_DARKNESS;Darkness level
@@ -2037,6 +2095,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: -
!TP_RAW_RCD;RCD
!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara
index ac5037389..1c4a170bf 100644
--- a/rtdata/languages/Euskara
+++ b/rtdata/languages/Euskara
@@ -558,7 +558,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -574,6 +574,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!GENERAL_NONE;None
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
@@ -977,10 +978,16 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -993,11 +1000,53 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1028,6 +1077,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
!MAIN_BUTTON_FULLSCREEN;Fullscreen
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1125,6 +1175,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1132,6 +1183,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1144,7 +1196,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1666,10 +1718,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER;Center
!TP_GRADIENT_CENTER_X;Center X
@@ -1716,6 +1764,12 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
@@ -1884,6 +1938,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais
index 88d09cc67..d9e455778 100644
--- a/rtdata/languages/Francais
+++ b/rtdata/languages/Francais
@@ -201,7 +201,7 @@ FILEBROWSER_UNRANK_TOOLTIP;Effacer le rang\nRaccourci: Shift-0
FILEBROWSER_ZOOMINHINT;Augmenter la taille des vignettes.\nRaccourci: +\n\nRaccourcis dans le mode Éditeur Unique: Alt-+
FILEBROWSER_ZOOMOUTHINT;Diminuer la taille des vignettes.\nRaccourci: -\n\nRaccourcis dans le mode Éditeur Unique: Alt--
FILECHOOSER_FILTER_ANY;Tous les fichiers
-FILECHOOSER_FILTER_COLPROF;Profils couleur
+FILECHOOSER_FILTER_COLPROF;Profils couleur (*.icc)
FILECHOOSER_FILTER_CURVE;Fichiers de courbe
FILECHOOSER_FILTER_LCP;Profils de correction d'objectif
FILECHOOSER_FILTER_PP;Fichiers de traitement
@@ -228,6 +228,7 @@ GENERAL_OK;OK
GENERAL_OPEN;Ouvrir
GENERAL_PORTRAIT;Portrait
GENERAL_SAVE;Enregistrer
+GENERAL_SAVE_AS;Enregistrer sous...
GENERAL_SLIDER;Curseur
GENERAL_UNCHANGED;(Inchangé)
GENERAL_WARNING;Attention
@@ -725,6 +726,46 @@ HISTORY_NEWSNAPSHOT;Ajouter
HISTORY_NEWSNAPSHOT_TOOLTIP;Raccourci: Alt-s
HISTORY_SNAPSHOT;Capture
HISTORY_SNAPSHOTS;Captures
+ICCPROFCREATOR_ADD_PARAM_IN_DESC;Ajoute le paramètre Gamma et Pente (Slope) à la fin de la description
+ICCPROFCREATOR_COPYRIGHT;Copyright:
+ICCPROFCREATOR_CUSTOM;Personnalisé
+ICCPROFCREATOR_DESCRIPTION;Description:
+ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Laisser vide pour que mettre la description par défaut
+ICCPROFCREATOR_GAMMA;Gamma
+ICCPROFCREATOR_ICCVERSION;Version du profil généré:
+ICCPROFCREATOR_ILL;Illuminant:
+ICCPROFCREATOR_ILL_41;D41
+ICCPROFCREATOR_ILL_50;D50
+ICCPROFCREATOR_ILL_55;D55
+ICCPROFCREATOR_ILL_60;D60
+ICCPROFCREATOR_ILL_65;D65
+ICCPROFCREATOR_ILL_80;D80
+ICCPROFCREATOR_ILL_DEF;Valeur par défaut
+ICCPROFCREATOR_ILL_INC;StdA 2856K
+ICCPROFCREATOR_ILL_TOOLTIP;Vous ne pouvez régler l'Illuminant que pour les profils ICC v4
+ICCPROFCREATOR_PRIMARIES;Primaires:
+ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+ICCPROFCREATOR_PRIM_BEST;BestRGB
+ICCPROFCREATOR_PRIM_BETA;BetaRGB
+ICCPROFCREATOR_PRIM_BLUX;Bleu X
+ICCPROFCREATOR_PRIM_BLUY;Bleu Y
+ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+ICCPROFCREATOR_PRIM_GREX;Vert X
+ICCPROFCREATOR_PRIM_GREY;Vert Y
+ICCPROFCREATOR_PRIM_PROPH;Prophoto
+ICCPROFCREATOR_PRIM_REC2020;Rec2020
+ICCPROFCREATOR_PRIM_REDX;Rouge X
+ICCPROFCREATOR_PRIM_REDY;Rouge Y
+ICCPROFCREATOR_PRIM_SRGB;sRGB
+ICCPROFCREATOR_PRIM_TOOLTIP;Vous ne pouvez régler des Primaires personnalisées que pour les profils ICC v4
+ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+ICCPROFCREATOR_PROF_V2;ICC v2
+ICCPROFCREATOR_PROF_V4;ICC v4
+ICCPROFCREATOR_SAVEDIALOG_TITLE;Enregistrer le profil ICC sous...
+ICCPROFCREATOR_SLOPE;Pente
+ICCPROFCREATOR_TRC_PRESET;Courbe de réponse tonale:
IPTCPANEL_CATEGORY;Catégorie
IPTCPANEL_CATEGORYHINT;Identifie le sujet de l'image selon l'opinion du fournisseur.
IPTCPANEL_CITY;Ville
@@ -772,6 +813,7 @@ LENSPROFILE_CORRECTION_LCPFILE;Fichier LCP
LENSPROFILE_CORRECTION_MANUAL;Paramètres de correction manuel
LENSPROFILE_LENS_WARNING;Attention: la taille du capteur utilisé pour le profilage de l'objectif est plus grand que celui de l'appareil sélectionné, le résultat peut être faux.
MAIN_BUTTON_FULLSCREEN;Plein écran
+MAIN_BUTTON_ICCPROFCREATOR;Créateur de Profil ICC
MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigue à l'image Suivante relativement à l'image ouverte dans l'Éditeur\nRaccourci: Shift-F4\n\nPour naviguer à l'image Suivante relativement à la vignette sélectionnée dans le Navigateur de fichiers\nRaccourci: F4
MAIN_BUTTON_NAVPREV_TOOLTIP;Navigue à l'image Précédente relativement à l'image ouverte dans l'Éditeur\nRaccourci: Shift-F3\n\nPour naviguer à l'image Précédente relativement à la vignette sélectionnée dans le Navigateur de fichiers\nRaccourci: F3
MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronise le Navigateur de fichiers avec l'Éditeur pour révéler la vignette de l'image actuellement ouverte, et efface les filtres dans le Navigateur de fichiers\nRaccourci: x\n\nComme ci-dessus, mais sans effacer les filtres dans le Navigateur de fichiers\nRaccourci: y\n(Notez que la vignette ne sera pas visible si elle a été filtrée).
@@ -860,7 +902,7 @@ NAVIGATOR_S;S:
NAVIGATOR_V;V:
NAVIGATOR_XY_FULL;Largeur = %1, Hauteur = %2
NAVIGATOR_XY_NA;x = n/d, y = n/d
-OPTIONS_BUNDLED_MISSING;Le profile fourni "%1" n'a pas été trouvé!\n\nVotre installation peut être endomagé.\n\nLes valeurs internes par défaut seront utilisées à la place.
+OPTIONS_BUNDLED_MISSING;Le profil fourni "%1" n'a pas été trouvé!\n\nVotre installation peut être endomagé.\n\nLes valeurs internes par défaut seront utilisées à la place.
OPTIONS_DEFIMG_MISSING;Le profil par défaut pour les images standards n'a pas été trouvé ou n'a pas été réglé.\n\nVérifiez le dossier de vos profils, il peut être manquant ou endommagé\n\n"%1" sera utilisé à la place.
OPTIONS_DEFRAW_MISSING;Le profil par défaut pour les images Raw n'a pas été trouvé ou n'a pas été réglé.\n\nVérifiez le dossier de vos profils, il peut être manquant ou endommagé\n\n"%1" sera utilisé à la place.
PARTIALPASTE_ADVANCEDGROUP;Réglages Avancés
@@ -1576,10 +1618,10 @@ TP_FLATFIELD_BT_VERTICAL;Vertical
TP_FLATFIELD_CLIPCONTROL;Control de l'écrêtage
TP_FLATFIELD_CLIPCONTROL_TOOLTIP;"Contrôle de l'écrêtage" évite les hautes lumière brûlées dûs à l'application du champ uniforme. S'il y a déjà des hautes lumières brûlées avant l'application du champ uniforme, "Contrôle de l'écrêtage" peut conduire à une dérive couleur.
TP_FLATFIELD_LABEL;Champ Uniforme
-TP_GAMMA_CURV;Gamma
-TP_GAMMA_FREE;Manuel
-TP_GAMMA_OUTPUT;Gamma de sortie
-TP_GAMMA_SLOP;Pente (linéaire)
+TP_GAMMA_CURV;Gamma:
+TP_GAMMA_CUSTOM;Manuel
+TP_GAMMA_OUTPUT_TRC_PRESET;Courbe de réponse tonale (TRC):
+TP_GAMMA_SLOP;Pente (linéaire):
TP_GENERAL_11SCALE_TOOLTIP;Les effets de cet outil ne sont visible ou fiable qu'avec un aperçu à l'échelle 1:1.
TP_GRADIENT_CENTER;Centre
TP_GRADIENT_CENTER_X;Centre X
@@ -1640,6 +1682,12 @@ TP_ICM_SAVEREFERENCE_TOOLTIP;Sauvegarde une image TIFF linéaire avant que le pr
TP_ICM_TONECURVE;Utiliser la courbe tonale du profil DCP
TP_ICM_TONECURVE_TOOLTIP;Utilise la courbe tonale DCP incluse. Ce paramètre ne sera actif que si le profil DCP contient une courbe tonale
TP_ICM_WORKINGPROFILE;Profil de Travail
+TP_ICM_WORKING_TRC;Courbe de réponse tonale:
+TP_ICM_WORKING_TRC_CUSTOM;Personnalisé
+TP_ICM_WORKING_TRC_GAMMA;Gamma
+TP_ICM_WORKING_TRC_NONE;Aucune
+TP_ICM_WORKING_TRC_SLOPE;Pente
+TP_ICM_WORKING_TRC_TOOLTIP;Seulement pour les profils internes
TP_IMPULSEDENOISE_LABEL;Réduction du bruit d'impulsion
TP_IMPULSEDENOISE_THRESH;Seuil
TP_LABCURVE_AVOIDCOLORSHIFT;Éviter les dérives de teinte
@@ -2204,21 +2252,32 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: -
!HISTORY_MSG_488;Dynamic Range Compression
!HISTORY_MSG_489;DRC - Threshold
!HISTORY_MSG_490;DRC - Amount
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview
!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show
!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering
@@ -2244,6 +2303,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: -
!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images.
!TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion.
!TP_RAW_RCDVNG4;RCD+VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_SHARPENING_CONTRAST;Contrast threshold
!TP_SHARPENMICRO_CONTRAST;Contrast threshold
!TP_SOFTLIGHT_LABEL;Soft Light
diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek
index c040d31cd..149ac5345 100644
--- a/rtdata/languages/Greek
+++ b/rtdata/languages/Greek
@@ -557,7 +557,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -573,6 +573,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!GENERAL_NONE;None
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
@@ -976,10 +977,16 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -992,11 +999,53 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1027,6 +1076,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
!MAIN_BUTTON_FULLSCREEN;Fullscreen
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1124,6 +1174,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1131,6 +1182,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1143,7 +1195,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1665,10 +1717,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER;Center
!TP_GRADIENT_CENTER_X;Center X
@@ -1715,6 +1763,12 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
@@ -1883,6 +1937,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew
index 759ddf6a2..fb8b0d776 100644
--- a/rtdata/languages/Hebrew
+++ b/rtdata/languages/Hebrew
@@ -558,7 +558,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -574,6 +574,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!GENERAL_NONE;None
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
@@ -977,10 +978,16 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -993,11 +1000,53 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1028,6 +1077,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
!MAIN_BUTTON_FULLSCREEN;Fullscreen
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1125,6 +1175,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1132,6 +1183,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1144,7 +1196,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1666,10 +1718,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER;Center
!TP_GRADIENT_CENTER_X;Center X
@@ -1716,6 +1764,12 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
@@ -1884,6 +1938,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano
index ba1ea0a8c..35369cb44 100644
--- a/rtdata/languages/Italiano
+++ b/rtdata/languages/Italiano
@@ -1342,7 +1342,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images.
!FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions.
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -1352,6 +1352,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!GENERAL_ASIMAGE;As Image
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!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.
!HISTORY_MSG_166;Exposure - Reset
@@ -1581,10 +1582,16 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -1597,10 +1604,52 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1630,6 +1679,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
@@ -1650,13 +1700,15 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!PARTIALPASTE_METADATA;Metadata mode
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1888,6 +1940,12 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!TP_ICM_SAVEREFERENCE;Save Reference Image
!TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance
!TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LOCALCONTRAST_AMOUNT;Amount
!TP_LOCALCONTRAST_DARKNESS;Darkness level
!TP_LOCALCONTRAST_LABEL;Local Contrast
@@ -1978,6 +2036,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: -
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese
index b8f97b236..475a675bf 100644
--- a/rtdata/languages/Japanese
+++ b/rtdata/languages/Japanese
@@ -264,6 +264,7 @@ GENERAL_OPEN;開く
GENERAL_PORTRAIT;縦
GENERAL_RESET;リセット
GENERAL_SAVE;保存
+GENERAL_SAVE_AS;...で保存
GENERAL_SLIDER;スライダー
GENERAL_UNCHANGED;(変更なし)
GENERAL_WARNING;警告
@@ -348,9 +349,9 @@ HISTORY_MSG_65;色収差補正
HISTORY_MSG_66;ハイライト復元
HISTORY_MSG_67;ハイライト復元 量
HISTORY_MSG_68;ハイライト復元 方式
-HISTORY_MSG_69;作業カラースペース
-HISTORY_MSG_70;出力カラースペース
-HISTORY_MSG_71;入力カラースペース
+HISTORY_MSG_69;作業色空間
+HISTORY_MSG_70;出力色空間
+HISTORY_MSG_71;入力色空間
HISTORY_MSG_72;周辺光量補正
HISTORY_MSG_73;チャンネルミキサー
HISTORY_MSG_74;リサイズ スケール
@@ -760,6 +761,12 @@ HISTORY_MSG_CLAMPOOG;色域外の色を切り取る
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - カラー補正
HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - コントラストのしきい値
HISTORY_MSG_HISTMATCHING;トーンカーブの自動調節
+HISTORY_MSG_ICM_OUTPUT_PRIMARIES;出力 - プライマリ
+HISTORY_MSG_ICM_OUTPUT_TEMP;出力 - ICC-v4 光源 D
+HISTORY_MSG_ICM_OUTPUT_TYPE;出力 - タイプ
+HISTORY_MSG_ICM_WORKING_GAMMA;作業色空間 - ガンマ
+HISTORY_MSG_ICM_WORKING_SLOPE;作業色空間 - 勾配
+HISTORY_MSG_ICM_WORKING_TRC_METHOD;作業色空間 - TRCの方式
HISTORY_MSG_LOCALCONTRAST_AMOUNT;ローカルコントラスト - 量
HISTORY_MSG_LOCALCONTRAST_DARKNESS;ローカルコントラスト - 暗い部分
HISTORY_MSG_LOCALCONTRAST_ENABLED;ローカルコントラスト
@@ -771,12 +778,57 @@ HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - 振れに対するデモザイクの方式
HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;ラインノイズフィルタの方向
HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAFラインフィルタ
HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - コントラストのしきい値
+HISTORY_MSG_RAW_BORDER;Rawの境界
+HISTORY_MSG_RESIZE_ALLOWUPSCALING;リサイズ - アップスケーリングを可能にする
HISTORY_MSG_SHARPENING_CONTRAST;シャープ化 - コントラストのしきい値
+HISTORY_MSG_SOFTLIGHT_ENABLED;ソフトな明るさ
+HISTORY_MSG_SOFTLIGHT_STRENGTH;ソフトな明るさ - 強さ
HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - アンカー
HISTORY_NEWSNAPSHOT;追加
HISTORY_NEWSNAPSHOT_TOOLTIP;ショートカット: Alt-s
HISTORY_SNAPSHOT;スナップショット
HISTORY_SNAPSHOTS;スナップショット
+ICCPROFCREATOR_COPYRIGHT;著作権:
+ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;デフォルトの著作権にリセットする、”RawTherapee CC0”を承諾する
+ICCPROFCREATOR_CUSTOM;カスタム
+ICCPROFCREATOR_DESCRIPTION;記述:
+ICCPROFCREATOR_DESCRIPTION_ADDPARAM;ガンマと勾配の値を記述に加える
+ICCPROFCREATOR_DESCRIPTION_TOOLTIP;デフォルトの記述をセットするために空にしておく
+ICCPROFCREATOR_GAMMA;ガンマ
+ICCPROFCREATOR_ICCVERSION;ICCのバージョン:
+ICCPROFCREATOR_ILL;光源:
+ICCPROFCREATOR_ILL_41;D41
+ICCPROFCREATOR_ILL_50;D50
+ICCPROFCREATOR_ILL_55;D55
+ICCPROFCREATOR_ILL_60;D60
+ICCPROFCREATOR_ILL_65;D65
+ICCPROFCREATOR_ILL_80;D80
+ICCPROFCREATOR_ILL_DEF;デフォルト
+ICCPROFCREATOR_ILL_INC;StdA 2856K
+ICCPROFCREATOR_ILL_TOOLTIP;ICC v4プロファイルに関する光源だけを設定することができます
+ICCPROFCREATOR_PRIMARIES;プライマリ:
+ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+ICCPROFCREATOR_PRIM_BEST;BestRGB
+ICCPROFCREATOR_PRIM_BETA;BetaRGB
+ICCPROFCREATOR_PRIM_BLUX;ブルー X
+ICCPROFCREATOR_PRIM_BLUY;ブルー Y
+ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+ICCPROFCREATOR_PRIM_GREX;グリーン X
+ICCPROFCREATOR_PRIM_GREY;グリーン Y
+ICCPROFCREATOR_PRIM_PROPH;Prophoto
+ICCPROFCREATOR_PRIM_REC2020;Rec2020
+ICCPROFCREATOR_PRIM_REDX;レッド X
+ICCPROFCREATOR_PRIM_REDY;レッド Y
+ICCPROFCREATOR_PRIM_SRGB;sRGB
+ICCPROFCREATOR_PRIM_TOOLTIP;ICC v4プロファイルに関するカスタムプライマリーを設定することが出来ます
+ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+ICCPROFCREATOR_PROF_V2;ICC v2
+ICCPROFCREATOR_PROF_V4;ICC v4
+ICCPROFCREATOR_SAVEDIALOG_TITLE;...でICCプロファイルを保存
+ICCPROFCREATOR_SLOPE;勾配
+ICCPROFCREATOR_TRC_PRESET;トーン再現カーブ:
IPTCPANEL_CATEGORY;カテゴリ
IPTCPANEL_CATEGORYHINT;画像の意図
IPTCPANEL_CITY;都市
@@ -824,6 +876,7 @@ LENSPROFILE_CORRECTION_LCPFILE;LCPファイル
LENSPROFILE_CORRECTION_MANUAL;手動でパラメータを補正する
LENSPROFILE_LENS_WARNING;注意:レンズプロファイルに関する切り抜きの因数がカメラの因数より大きいと、誤った結果になるかもしれません
MAIN_BUTTON_FULLSCREEN;フルスクリーン
+MAIN_BUTTON_ICCPROFCREATOR;ICCプロファイルクリエーター
MAIN_BUTTON_NAVNEXT_TOOLTIP;エディタで開いている画像に対応する次の画像に移動します\nショートカット: Shift-F4\n\nファイルブラウザで選択したサムネイルに対応する次の画像に移動するには\nショートカット: F4
MAIN_BUTTON_NAVPREV_TOOLTIP;エディタで開いている画像に対応する前の画像に移動します\nショートカット: Shift-F3\n\nファイルブラウザで選択したサムネイルに対応する前の画像に移動するには\nショートカット: F3
MAIN_BUTTON_NAVSYNC_TOOLTIP;現在開いている画像のサムネイルを明示しエディタとファイルブラウザを同期させ、ファイルブラウザでのフィルタをクリアします \nショートカット: x\n\n上記と同じですが、ファイルブラウザでのフィルタをクリアしません\nショートカット: y\n(除外する場合、開いているファイルのサムネイルが表示されませんので注意してください).
@@ -864,9 +917,9 @@ MAIN_TAB_COLOR;カラー
MAIN_TAB_COLOR_TOOLTIP;ショートカット: Alt-c
MAIN_TAB_DETAIL;ディテール
MAIN_TAB_DETAIL_TOOLTIP;ショートカット: Alt-d
-MAIN_TAB_DEVELOP;現像
+MAIN_TAB_DEVELOP;一括編集
MAIN_TAB_EXIF;Exif
-MAIN_TAB_EXPORT; 書き出し
+MAIN_TAB_EXPORT;高速書き出し
MAIN_TAB_EXPOSURE;露光
MAIN_TAB_EXPOSURE_TOOLTIP;ショートカット: Alt-e
MAIN_TAB_FILTER;絞り込み
@@ -878,7 +931,6 @@ MAIN_TAB_RAW;raw
MAIN_TAB_RAW_TOOLTIP;ショートカット: Alt-r
MAIN_TAB_TRANSFORM;変形
MAIN_TAB_TRANSFORM_TOOLTIP;ショートカット: Alt-t
-MAIN_TAB_WAVELET_TOOLTIP;ショートカット: Alt-w
MAIN_TOOLTIP_BACKCOLOR0;プレビューの背景色を指定します: テーマに基づく\nショートカット: 9
MAIN_TOOLTIP_BACKCOLOR1;プレビューの背景色を指定します: 黒\nショートカットt: 9
MAIN_TOOLTIP_BACKCOLOR2;プレビューの背景色を指定します: 白\nショートカット: 9
@@ -892,6 +944,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;フォーカス・マスク表示\nショ
MAIN_TOOLTIP_PREVIEWG;グリーン チャンネル表示\nショートカット: g
MAIN_TOOLTIP_PREVIEWL;輝度表示\nショートカット: v\n\n0.299*R + 0.587*G + 0.114*B
MAIN_TOOLTIP_PREVIEWR;レッド チャンネル表示\nショートカット: r
+MAIN_TOOLTIP_PREVIEWSHARPMASK;プレビューで見るシャープ化機能のコントラストマスク\nショートカット: なし\n\nこの機能が使えるのはシャープ化機能が有効で、画像が100%以上に拡大されている場合だけ
MAIN_TOOLTIP_QINFO;画像の情報\nショートカット: i
MAIN_TOOLTIP_SHOWHIDELP1;表示/非表示 左パネル\nショートカット: l
MAIN_TOOLTIP_SHOWHIDERP1;表示/非表示 右パネル\nショートカット: Alt-l
@@ -935,7 +988,7 @@ PARTIALPASTE_DIRPYRDENOISE;ノイズ低減
PARTIALPASTE_DIRPYREQUALIZER;ディテール・レベルのコントラスト
PARTIALPASTE_DISTORTION;歪曲補正
PARTIALPASTE_EPD;トーンマッピング
-PARTIALPASTE_EQUALIZER;ウェーブレットイコライザ
+PARTIALPASTE_EQUALIZER;ウェーブレット
PARTIALPASTE_EVERYTHING;すべて
PARTIALPASTE_EXIFCHANGES;exifデータを変える
PARTIALPASTE_EXPOSURE;露光量
@@ -962,6 +1015,7 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;デッドピクセルフィルターを適
PARTIALPASTE_PREPROCESS_GREENEQUIL;グリーン 平衡化
PARTIALPASTE_PREPROCESS_HOTPIXFILT;ホットピクセルフィルターを適用
PARTIALPASTE_PREPROCESS_LINEDENOISE;ラインノイズ フィルタ
+PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF ラインフィルタ
PARTIALPASTE_PRSHARPENING;リサイズ後のシャープ化
PARTIALPASTE_RAWCACORR_AUTO;自動色収差補正
PARTIALPASTE_RAWCACORR_CAREDBLUE;色収差 レッドとブルー
@@ -969,6 +1023,7 @@ PARTIALPASTE_RAWEXPOS_BLACK;黒レベル
PARTIALPASTE_RAWEXPOS_LINEAR;raw ホワイトポイント リニア補正係数
PARTIALPASTE_RAWEXPOS_PRESER;raw ホワイトポイント ハイライトを保持したまま補正 (EV)
PARTIALPASTE_RAWGROUP;raw 設定
+PARTIALPASTE_RAW_BORDER;Rawの境界
PARTIALPASTE_RAW_DCBENHANCE;DCB 拡張処理適用
PARTIALPASTE_RAW_DCBITERATIONS;DCB反復の数
PARTIALPASTE_RAW_DMETHOD;デモザイクの方法
@@ -984,6 +1039,7 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;シャドウ/ハイライト
PARTIALPASTE_SHARPENEDGE;エッジ
PARTIALPASTE_SHARPENING;シャープ化 (USM/RL)
PARTIALPASTE_SHARPENMICRO;マイクロコントラスト
+PARTIALPASTE_SOFTLIGHT;ソフトな明るさ
PARTIALPASTE_TM_FATTAL;ダイナミックレンジ圧縮
PARTIALPASTE_VIBRANCE;自然な彩度
PARTIALPASTE_VIGNETTING;周辺光量補正
@@ -1627,10 +1683,6 @@ TP_FLATFIELD_BT_VERTICAL;垂直
TP_FLATFIELD_CLIPCONTROL;クリップコントロール
TP_FLATFIELD_CLIPCONTROL_TOOLTIP;クリップコントロールは、フラットフィールドを使った時に白飛びが発生するのを避けるために使います。適用する元画像に既に白飛びがある場合は、クリップコントロールの適用で色被りが起こる可能性があります。
TP_FLATFIELD_LABEL;フラットフィールド
-TP_GAMMA_CURV;ガンマ
-TP_GAMMA_FREE;フリーなガンマ
-TP_GAMMA_OUTPUT;出力 ガンマ
-TP_GAMMA_SLOP;勾配(リニア)
TP_GENERAL_11SCALE_TOOLTIP;この機能の効果や、そのサブコンポーネントの確認には、プレビューで1:1以上のスケールが必要です。
TP_GRADIENT_CENTER;中央位置
TP_GRADIENT_CENTER_X;中央 X軸
@@ -1691,6 +1743,12 @@ TP_ICM_SAVEREFERENCE_TOOLTIP;入力プロファイルが適用される前のリ
TP_ICM_TONECURVE;DCPトーンカーブ使用
TP_ICM_TONECURVE_TOOLTIP;DCPのプロファイルに含まれているトーンカーブを使用することができます
TP_ICM_WORKINGPROFILE;作業プロファイル
+TP_ICM_WORKING_TRC;トーン再現カーブ:
+TP_ICM_WORKING_TRC_CUSTOM;カスタム
+TP_ICM_WORKING_TRC_GAMMA;ガンマ
+TP_ICM_WORKING_TRC_NONE;なし
+TP_ICM_WORKING_TRC_SLOPE;勾配
+TP_ICM_WORKING_TRC_TOOLTIP;組み込まれたプロファイルだけ
TP_IMPULSEDENOISE_LABEL;インパルスノイズ低減
TP_IMPULSEDENOISE_THRESH;しきい値
TP_LABCURVE_AVOIDCOLORSHIFT;色ずれを回避
@@ -1794,14 +1852,17 @@ TP_RAWEXPOS_PRESER;ハイライトを保持
TP_RAWEXPOS_RGB;レッド、グリーン、ブルー
TP_RAWEXPOS_TWOGREEN;2つのグリーンを連動
TP_RAW_1PASSMEDIUM;1-パス (ミディアム)
+TP_RAW_2PASS;1-pass+fast
TP_RAW_3PASSBEST;3-Pass (最良)
TP_RAW_4PASS;4-パス
TP_RAW_AHD;AHD
TP_RAW_AMAZE;AMaZE
TP_RAW_AMAZEVNG4;AMaZE+VNG4
+TP_RAW_BORDER;境界
TP_RAW_DCB;DCB
TP_RAW_DCBENHANCE;DCB 拡張処理
TP_RAW_DCBITERATIONS;DCB 反復の数
+TP_RAW_DCBVNG4;DCB+VNG4
TP_RAW_DMETHOD;方式
TP_RAW_DMETHOD_PROGRESSBAR;%1 デモザイク中...
TP_RAW_DMETHOD_PROGRESSBAR_REFINE;デモザイク・リファイン中...
@@ -1853,10 +1914,12 @@ TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;デフォルトで設定している値1.0で基
TP_RAW_PIXELSHIFTSMOOTH;境界部分を滑らかにする
TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;これは振れのある領域と振れがない領域の境を滑らかに補正するものです。\n0に設定すると機能の働きはありません。\n1に設定すると、選択された構成画像にAMaZEかLMMSEが使われた結果が得られます("LMMSEを使う"というオプション次第)、或いは"メディアンを使う"が選択されていれば全ての構成画像にメディアンが使われます。
TP_RAW_RCD;RCD
+TP_RAW_RCDVNG4;RCD+VNG4
TP_RAW_SENSOR_BAYER_LABEL;ベイヤー配列を使ったセンサー
TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-passが最適です(低ISO画像には奨められます)\n高ISO画像の場合、1-passと3-passの違いは殆どありません、処理速度は前者の方が速いです。
TP_RAW_SENSOR_XTRANS_LABEL;X-Transマトリクスを使ったセンサー
TP_RAW_VNG4;VNG4
+TP_RESIZE_ALLOW_UPSCALING;アップスケーリングを可能にする
TP_RESIZE_APPLIESTO;適用領域:
TP_RESIZE_CROPPEDAREA;切り抜き画像
TP_RESIZE_FITBOX;バウンディング・ボックス
@@ -1995,6 +2058,8 @@ TP_SHARPENMICRO_CONTRAST;コントラストのしきい値
TP_SHARPENMICRO_LABEL;マイクロコントラスト
TP_SHARPENMICRO_MATRIX;3×3マトリクスの代わりに 5×5
TP_SHARPENMICRO_UNIFORMITY;均等
+TP_SOFTLIGHT_LABEL;ソフトな明るさ
+TP_SOFTLIGHT_STRENGTH;強さ
TP_TM_FATTAL_AMOUNT;量
TP_TM_FATTAL_ANCHOR;アンカー
TP_TM_FATTAL_LABEL;ダイナミックレンジ圧縮
@@ -2242,18 +2307,3 @@ ZOOMPANEL_ZOOMFITSCREEN;画像全体を画面に合わせる\nショートカッ
ZOOMPANEL_ZOOMIN;ズームイン\nショートカット: +
ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: -
-!!!!!!!!!!!!!!!!!!!!!!!!!
-! Untranslated keys follow; remove the ! prefix after an entry is translated.
-!!!!!!!!!!!!!!!!!!!!!!!!!
-
-!HISTORY_MSG_RAW_BORDER;Raw border
-!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
-!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
-!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
-!PARTIALPASTE_SOFTLIGHT;Soft light
-!TP_RAW_2PASS;1-pass+fast
-!TP_RAW_BORDER;Border
-!TP_RAW_DCBVNG4;DCB+VNG4
-!TP_RAW_RCDVNG4;RCD+VNG4
-!TP_SOFTLIGHT_LABEL;Soft Light
-!TP_SOFTLIGHT_STRENGTH;Strength
diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian
index 835a2536a..1db1390a7 100644
--- a/rtdata/languages/Latvian
+++ b/rtdata/languages/Latvian
@@ -558,7 +558,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -574,6 +574,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!GENERAL_NONE;None
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
@@ -977,10 +978,16 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -993,11 +1000,53 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1028,6 +1077,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
!MAIN_BUTTON_FULLSCREEN;Fullscreen
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1125,6 +1175,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1132,6 +1183,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1144,7 +1196,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1666,10 +1718,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER;Center
!TP_GRADIENT_CENTER_X;Center X
@@ -1716,6 +1764,12 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
@@ -1884,6 +1938,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar
index 2cee6405c..c094ed9a0 100644
--- a/rtdata/languages/Magyar
+++ b/rtdata/languages/Magyar
@@ -922,7 +922,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions.
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -934,6 +934,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!GENERAL_CLOSE;Close
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!GENERAL_SAVE_AS;Save as...
!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.
@@ -1250,10 +1251,16 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -1266,11 +1273,53 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1300,6 +1349,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1346,14 +1396,16 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!PARTIALPASTE_PCVIGNETTE;Vignette filter
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_LMMSEITERATIONS;LMMSE enhancement steps
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1814,6 +1866,12 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
!TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Fit colors into gamut of the working color space and apply Munsell correction.
!TP_LABCURVE_CHROMATICITY;Chromaticity
@@ -1955,6 +2013,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés -
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands
index 57f6afb19..3487c4091 100644
--- a/rtdata/languages/Nederlands
+++ b/rtdata/languages/Nederlands
@@ -2111,6 +2111,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!EXIFFILTER_IMAGETYPE;Image type
!EXIFPANEL_SHOWALL;Show all
!GENERAL_RESET;Reset
+!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.
!HISTORY_MSG_173;NR - Detail recovery
@@ -2141,10 +2142,16 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -2157,14 +2164,57 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!LENSPROFILE_CORRECTION_AUTOMATCH;Auto-matched correction parameters
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
@@ -2176,8 +2226,10 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!PARTIALPASTE_ADVANCEDGROUP;Advanced Settings
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
!PREFERENCES_CROP;Crop editing
!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area
@@ -2227,6 +2279,12 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors
!TP_EXPOSURE_HISTMATCHING;Auto-Matched Tone Curve
!TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatically adjust sliders and curves (except exposure compensation) to match the look of the embedded JPEG thumbnail.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LOCALCONTRAST_AMOUNT;Amount
!TP_LOCALCONTRAST_DARKNESS;Darkness level
!TP_LOCALCONTRAST_LABEL;Local Contrast
@@ -2258,6 +2316,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: -
!TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion.
!TP_RAW_RCD;RCD
!TP_RAW_RCDVNG4;RCD+VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_GAINOFFS;Gain and Offset (brightness)
!TP_RETINEX_GAINTRANSMISSION;Gain transmission
!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce transmission map to achieve luminance.\nAbscissa: transmission -min from 0, mean, and values (max).\nOrdinate: gain.
diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM
index 39e79dfce..e2ccb2212 100644
--- a/rtdata/languages/Norsk BM
+++ b/rtdata/languages/Norsk BM
@@ -557,7 +557,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -573,6 +573,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!GENERAL_NONE;None
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
@@ -976,10 +977,16 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -992,11 +999,53 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1027,6 +1076,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
!MAIN_BUTTON_FULLSCREEN;Fullscreen
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1124,6 +1174,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1131,6 +1182,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1143,7 +1195,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1665,10 +1717,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER;Center
!TP_GRADIENT_CENTER_X;Center X
@@ -1715,6 +1763,12 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
@@ -1883,6 +1937,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish
index f31918fb4..d9e513e34 100644
--- a/rtdata/languages/Polish
+++ b/rtdata/languages/Polish
@@ -1464,7 +1464,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images.
!FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions.
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -1474,6 +1474,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!GENERAL_ASIMAGE;As Image
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!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.
!HISTORY_MSG_166;Exposure - Reset
@@ -1663,10 +1664,16 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -1679,10 +1686,52 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1712,6 +1761,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
@@ -1727,13 +1777,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!PARTIALPASTE_EQUALIZER;Wavelet levels
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1909,6 +1961,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!TP_ICM_SAVEREFERENCE;Save Reference Image
!TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance
!TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LOCALCONTRAST_AMOUNT;Amount
!TP_LOCALCONTRAST_DARKNESS;Darkness level
!TP_LOCALCONTRAST_LABEL;Local Contrast
@@ -1984,6 +2042,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: -
!TP_RAW_RCD;RCD
!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters)
index 961be2033..fe92b9823 100644
--- a/rtdata/languages/Polish (Latin Characters)
+++ b/rtdata/languages/Polish (Latin Characters)
@@ -1464,7 +1464,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images.
!FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions.
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -1474,6 +1474,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!GENERAL_ASIMAGE;As Image
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!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.
!HISTORY_MSG_166;Exposure - Reset
@@ -1663,10 +1664,16 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -1679,10 +1686,52 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1712,6 +1761,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_SENDTOEDITOR;Edit image in external editor
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
@@ -1727,13 +1777,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!PARTIALPASTE_EQUALIZER;Wavelet levels
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1909,6 +1961,12 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!TP_ICM_SAVEREFERENCE;Save Reference Image
!TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance
!TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LOCALCONTRAST_AMOUNT;Amount
!TP_LOCALCONTRAST_DARKNESS;Darkness level
!TP_LOCALCONTRAST_LABEL;Local Contrast
@@ -1984,6 +2042,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: -
!TP_RAW_RCD;RCD
!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil)
index 2a3ee814a..915cd5fb0 100644
--- a/rtdata/languages/Portugues (Brasil)
+++ b/rtdata/languages/Portugues (Brasil)
@@ -1,4 +1,4 @@
-#01 2018-06-30 Digitalpix58
+#01 2018-07-25 Digitalpix58
ABOUT_TAB_BUILD;Versão
ABOUT_TAB_CREDITS;Créditos
@@ -45,7 +45,7 @@ DYNPROFILEEDITOR_MOVE_DOWN;Mover para Baixo
DYNPROFILEEDITOR_MOVE_UP;Mover para Cima
DYNPROFILEEDITOR_NEW;Novo
DYNPROFILEEDITOR_NEW_RULE;Nva Regra de Perfil Dinâmico
-DYNPROFILEEDITOR_PROFILE;Processando Perfil
+DYNPROFILEEDITOR_PROFILE;Perfil de Processamento
EDITWINDOW_TITLE;Edição de Imagem
EDIT_OBJECT_TOOLTIP;Exibe um widget na janela de visualização que permite ajustar essa ferramenta.
EDIT_PIPETTE_TOOLTIP;Para adicionar um ponto de ajuste à curva, segure a tecla Ctrl enquanto clica com o botão esquerdo no ponto desejado na visualização da imagem.\nPara ajustar o ponto, Mantenha pressionada a tecla Ctrl enquanto clica com o botão esquerdo na área correspondente na visualização, então solte Ctrl (amenos que deseje um fino controle) e enquanto ainda mantém pressionado o botão esquerdo do mouse, mova o mouse para cima ou para baixo para mover esse ponto para cima ou para baixo na curva.
@@ -150,7 +150,7 @@ FILEBROWSER_POPUPOPEN;Abrir
FILEBROWSER_POPUPOPENINEDITOR;Abrir no Editor
FILEBROWSER_POPUPPROCESS;Coloque na fila
FILEBROWSER_POPUPPROCESSFAST;Coloque na fila (Exportação rápida)
-FILEBROWSER_POPUPPROFILEOPERATIONS;Processando operações de perfil
+FILEBROWSER_POPUPPROFILEOPERATIONS;Operações de perfil de processamento
FILEBROWSER_POPUPRANK;Classificar
FILEBROWSER_POPUPRANK0;Desclassificar
FILEBROWSER_POPUPRANK1;Rank 1 *
@@ -206,7 +206,7 @@ FILECHOOSER_FILTER_ANY;Todos os arquivos
FILECHOOSER_FILTER_COLPROF;Perfis de Cores
FILECHOOSER_FILTER_CURVE;Arquivos de curvas
FILECHOOSER_FILTER_LCP;Perfis de correção de lentes
-FILECHOOSER_FILTER_PP;Processando perfis
+FILECHOOSER_FILTER_PP;Perfis de processamento
FILECHOOSER_FILTER_SAME;Mesmo formato da foto atual
FILECHOOSER_FILTER_TIFF;Arquivos TIFF
GENERAL_ABOUT;Sobre
@@ -231,6 +231,7 @@ GENERAL_OPEN;Abrir
GENERAL_PORTRAIT;Retrato
GENERAL_RESET;Restaurar
GENERAL_SAVE;Salvar
+GENERAL_SAVE_AS;Salvar como...
GENERAL_SLIDER;Barra de volume
GENERAL_UNCHANGED;(Inalterado)
GENERAL_WARNING;Atenção
@@ -668,7 +669,7 @@ HISTORY_MSG_419;Retinex - Espaço colorido
HISTORY_MSG_420;Retinex - Histograma - HSL
HISTORY_MSG_421;Retinex - Gamma
HISTORY_MSG_422;Retinex - Gamma
-HISTORY_MSG_423;Retinex - Inclinação gamma
+HISTORY_MSG_423;Retinex - Declive gamma
HISTORY_MSG_424;Retinex - Limite HL
HISTORY_MSG_425;Retinex - Base de registro
HISTORY_MSG_426;Retinex - Equalizador de matiz
@@ -727,6 +728,12 @@ HISTORY_MSG_CLAMPOOG;Recorte de cor fora do gamut
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Correção de cor
HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Limite de contraste
HISTORY_MSG_HISTMATCHING;Curva de Tom Auto-compatível
+HISTORY_MSG_ICM_OUTPUT_PRIMARIESPrimárias do perfil de saída
+HISTORY_MSG_ICM_OUTPUT_TEMP;Saída IccV4 D iluminante
+HISTORY_MSG_ICM_OUTPUT_TYPE;Tipo de perfil de saída
+HISTORY_MSG_ICM_WORKING_GAMMA;Gamma de trabalho
+HISTORY_MSG_ICM_WORKING_SLOPE;Declive de trabalho
+HISTORY_MSG_ICM_WORKING_TRC_METHOD;Método de trabalho TRC
HISTORY_MSG_LOCALCONTRAST_AMOUNT;Contraste Local - Montante
HISTORY_MSG_LOCALCONTRAST_DARKNESS;Contraste Local - Escuridão
HISTORY_MSG_LOCALCONTRAST_ENABLED;Contraste Local
@@ -739,6 +746,7 @@ HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Direção do filtro de ruído de li
HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;Filtros de linha PDAF
HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Limite de contraste
HISTORY_MSG_RAW_BORDER;Borda raw
+HISTORY_MSG_RESIZE_ALLOWUPSCALING;Redimensionar - Permitir escalonamento
HISTORY_MSG_SHARPENING_CONTRAST;Nitidez - Limite de contraste
HISTORY_MSG_SOFTLIGHT_ENABLED;Luz suave
HISTORY_MSG_SOFTLIGHT_STRENGTH;Luz suave - Intensidade
@@ -747,6 +755,47 @@ HISTORY_NEWSNAPSHOT;Adicionar
HISTORY_NEWSNAPSHOT_TOOLTIP;Atalho: Alt-s
HISTORY_SNAPSHOT;Instantâneo
HISTORY_SNAPSHOTS;Instantâneos
+ICCPROFCREATOR_ADD_PARAM_IN_DESC;Anexar os valores Gamma e Declive para a descrição
+ICCPROFCREATOR_COPYRIGHT;Direito Autoral:
+ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Restaurar para o direito autoral padrão, concedido a "RawTherapee, CC0"
+ICCPROFCREATOR_CUSTOM;Personalizado
+ICCPROFCREATOR_DESCRIPTION;Descrição:
+ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Deixe em branco para configurar a descrição padrão
+ICCPROFCREATOR_GAMMA;Gamma
+ICCPROFCREATOR_ICCVERSION;Versão do perfil gerado:
+ICCPROFCREATOR_ILL;Iluminante:
+ICCPROFCREATOR_ILL_41;D41
+ICCPROFCREATOR_ILL_50;D50
+ICCPROFCREATOR_ILL_55;D55
+ICCPROFCREATOR_ILL_60;D60
+ICCPROFCREATOR_ILL_65;D65
+ICCPROFCREATOR_ILL_80;D80
+ICCPROFCREATOR_ILL_DEF;Padrão
+ICCPROFCREATOR_ILL_INC;StdA 2856K
+ICCPROFCREATOR_ILL_TOOLTIP;Só podes configurar o iluminante com perfis ICC v4
+ICCPROFCREATOR_PRIMARIES;Primárias:
+ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+ICCPROFCREATOR_PRIM_BEST;RGB superior
+ICCPROFCREATOR_PRIM_BETA;BetaRGB
+ICCPROFCREATOR_PRIM_BLUX;Azul X
+ICCPROFCREATOR_PRIM_BLUY;Azul Y
+ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+ICCPROFCREATOR_PRIM_GREX;Verde X
+ICCPROFCREATOR_PRIM_GREY;Verde Y
+ICCPROFCREATOR_PRIM_PROPH;Prophoto
+ICCPROFCREATOR_PRIM_REC2020;Rec2020
+ICCPROFCREATOR_PRIM_REDX;Vermelho X
+ICCPROFCREATOR_PRIM_REDY;Vermelho Y
+ICCPROFCREATOR_PRIM_SRGB;sRGB
+ICCPROFCREATOR_PRIM_TOOLTIP;Só podes configurar Primárias Personalizadas com perfis ICC v4
+ICCPROFCREATOR_PRIM_WIDEG;Gamut ampla
+ICCPROFCREATOR_PROF_V2;ICC v2
+ICCPROFCREATOR_PROF_V4;ICC v4
+ICCPROFCREATOR_SAVEDIALOG_TITLE;Salvar o perfil ICC como...
+ICCPROFCREATOR_SLOPE;Declive
+ICCPROFCREATOR_TRC_PRESET;Curva de resposta do tom:
IPTCPANEL_CATEGORY;Categoria
IPTCPANEL_CATEGORYHINT;Identifica o assunto da imagem na opinião do provedor.
IPTCPANEL_CITY;Cidade
@@ -794,6 +843,7 @@ LENSPROFILE_CORRECTION_LCPFILE;Arquivo LCP
LENSPROFILE_CORRECTION_MANUAL;Parâmetros de correção manual
LENSPROFILE_LENS_WARNING;Aviso: o fator de corte usado para o perfil da lente é maior que o fator de corte da câmera, os resultados podem estar errados.
MAIN_BUTTON_FULLSCREEN;Tela cheia
+MAIN_BUTTON_ICCPROFCREATOR;Criador de Perfil ICC
MAIN_BUTTON_NAVNEXT_TOOLTIP;Navegue até a próxima imagem relativa à imagem aberta no Editor.\nAtalho: Shift-F4\n\nPara navegar até a próxima imagem relativa à miniatura selecionada no Navegador de Arquivos ou no Diapositivo:\nAtalho: F4
MAIN_BUTTON_NAVPREV_TOOLTIP;Navegue até a imagem anterior relativa à imagem aberta no Editor.\nAtalho: Shift-F3\n\nPara navegar até a imagem anterior relativa à miniatura selecionada no Navegador de Arquivos ou no Diapositivo:\nAtalho: F3
MAIN_BUTTON_NAVSYNC_TOOLTIP;Sincronize o Navegador de Arquivos ou o Diapositivo com o Editor para revelar a miniatura da imagem aberta no momento e limpe os filtros ativos.\nAtalho: x\n\nComo acima, mas sem limpar os filtros ativos:\nAtalho: y\n(Observe que a miniatura da imagem aberta não será mostrada se estiver filtrada).
@@ -900,7 +950,7 @@ PARTIALPASTE_DARKFRAMEAUTOSELECT;Auto-seleção de quadro escuro
PARTIALPASTE_DARKFRAMEFILE;Arquivo de quadro escuro
PARTIALPASTE_DEFRINGE;Defringe
PARTIALPASTE_DETAILGROUP;Configurações de detalhes
-PARTIALPASTE_DIALOGLABEL;Perfil de processamento de colagem parcial
+PARTIALPASTE_DIALOGLABEL;Perfil de processamento colar parcial
PARTIALPASTE_DIRPYRDENOISE;Redução de ruído
PARTIALPASTE_DIRPYREQUALIZER;Contraste pelos níveis de detalhe
PARTIALPASTE_DISTORTION;Correção de distorção
@@ -932,6 +982,7 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Filtro de pixels mortos
PARTIALPASTE_PREPROCESS_GREENEQUIL;Equilíbrio verde
PARTIALPASTE_PREPROCESS_HOTPIXFILT;Filtro de pixel quente
PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtro de ruído de linha
+PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;Filtro de linhas PDAF
PARTIALPASTE_PRSHARPENING;Nitidez pós-redimensionamento
PARTIALPASTE_RAWCACORR_AUTO;Auto correção CA
PARTIALPASTE_RAWCACORR_CAREDBLUE;vermelho & azul CA
@@ -939,6 +990,7 @@ PARTIALPASTE_RAWEXPOS_BLACK;Níveis de preto
PARTIALPASTE_RAWEXPOS_LINEAR;Correção de ponto branco
PARTIALPASTE_RAWEXPOS_PRESER;preservação do realce
PARTIALPASTE_RAWGROUP;Configurações Raw
+PARTIALPASTE_RAW_BORDER;Borda raw
PARTIALPASTE_RAW_DCBENHANCE;Aprimoramento DCB
PARTIALPASTE_RAW_DCBITERATIONS;Iterações DCB
PARTIALPASTE_RAW_DMETHOD;Método demosaico
@@ -954,6 +1006,7 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Sombras/realces
PARTIALPASTE_SHARPENEDGE;Bordas
PARTIALPASTE_SHARPENING;Nitidez (USM/RL)
PARTIALPASTE_SHARPENMICRO;Microcontraste
+PARTIALPASTE_SOFTLIGHT;Luz suave
PARTIALPASTE_TM_FATTAL;Compressão de Amplitude Dinâmica(DRC)
PARTIALPASTE_VIBRANCE;Vibração
PARTIALPASTE_VIGNETTING;Correção de vinheta
@@ -1080,7 +1133,7 @@ PREFERENCES_MED;Médio (Mosaico/2)
PREFERENCES_MENUGROUPEXTPROGS;Grupo "Abrir com"
PREFERENCES_MENUGROUPFILEOPERATIONS;Grupo "operações de Arquivo"
PREFERENCES_MENUGROUPLABEL;Grupo "Etiqueta de cor"
-PREFERENCES_MENUGROUPPROFILEOPERATIONS;Grupo "Processando operações de perfil"
+PREFERENCES_MENUGROUPPROFILEOPERATIONS;Grupo "Operações de perfil de processamento"
PREFERENCES_MENUGROUPRANK;Grupo "Rank"
PREFERENCES_MENUOPTIONS;Opções do Menu de Contexto
PREFERENCES_METADATA;Metadados
@@ -1114,14 +1167,14 @@ PREFERENCES_PREVDEMO_FAST;Rápido
PREFERENCES_PREVDEMO_LABEL;Método Demosaicing usado para a visualização em <100% zoom:
PREFERENCES_PREVDEMO_SIDECAR;Como no PP3
PREFERENCES_PRINTER;Impressora (Soft-Proofing)
-PREFERENCES_PROFILEHANDLING;Processamento de Tratamento de Perfil
-PREFERENCES_PROFILELOADPR;Processando prioridade de carregamento do perfil
+PREFERENCES_PROFILEHANDLING;Manuseio de Perfil de Processamento
+PREFERENCES_PROFILELOADPR;Prioridade de carregamento do perfil de processamento
PREFERENCES_PROFILEPRCACHE;Perfil no cache
PREFERENCES_PROFILEPRFILE;Perfil próximo ao arquivo de entrada
-PREFERENCES_PROFILESAVEBOTH;Salve o perfil de processamento no cache e próximo ao arquivo de entrada
+PREFERENCES_PROFILESAVEBOTH;Salvar o perfil de processamento no cache e próximo ao arquivo de entrada
PREFERENCES_PROFILESAVECACHE;Salvar o perfil de processamento no cache
PREFERENCES_PROFILESAVEINPUT;Salvar o perfil de processamento próximo ao arquivo de entrada
-PREFERENCES_PROFILESAVELOCATION;Processando o local de salvamento do perfil
+PREFERENCES_PROFILESAVELOCATION;Local de salvamento do perfil de processamento
PREFERENCES_PROFILE_NONE;Nenhum
PREFERENCES_PROPERTY;Propriedade
PREFERENCES_PRTINTENT;Intenção de renderização
@@ -1183,10 +1236,10 @@ PREFERENCES_WLZER;Não
PREFERENCES_WORKFLOW;Layout
PROFILEPANEL_COPYPPASTE;Parâmetros para copiar
PROFILEPANEL_GLOBALPROFILES;Perfis agrupados
-PROFILEPANEL_LABEL;Processando Perfis
+PROFILEPANEL_LABEL;Perfis de Processamento
PROFILEPANEL_LOADDLGLABEL;Carregar Parâmetros de Processamento...
PROFILEPANEL_LOADPPASTE;Parâmetros para carregar
-PROFILEPANEL_MODE_TIP;Processando o modo de preencher o perfil.\n\nBotão pressionado: perfis parciais serão convertidos em perfis completos; os valores ausentes serão substituídos por padrões codificados.\n\nBotão liberado: os perfis serão aplicados como estão, alterando apenas os valores que eles contêm.
+PROFILEPANEL_MODE_TIP;Modo de preenchimento do perfil de procesamento.\n\nBotão pressionado: perfis parciais serão convertidos em perfis completos; os valores ausentes serão substituídos por padrões codificados.\n\nBotão liberado: os perfis serão aplicados como estão, alterando apenas os valores que eles contêm.
PROFILEPANEL_MYPROFILES;Meus perfis
PROFILEPANEL_PASTEPPASTE;Parâmetros para colar
PROFILEPANEL_PCUSTOM;Personalizado
@@ -1207,7 +1260,7 @@ PROGRESSBAR_LOADPNG;Carregando arquivo PNG...
PROGRESSBAR_LOADTIFF;Carregando arquivo TIFF...
PROGRESSBAR_NOIMAGES;Nenhuma imagem encontrada
PROGRESSBAR_PROCESSING;Processando imagem...
-PROGRESSBAR_PROCESSING_PROFILESAVED;Processando perfil salvo
+PROGRESSBAR_PROCESSING_PROFILESAVED;Perfil de processamento salvo
PROGRESSBAR_READY;Pronto
PROGRESSBAR_SAVEJPEG;Salvando arquivo JPEG...
PROGRESSBAR_SAVEPNG;Salvando arquivo PNG...
@@ -1663,6 +1716,12 @@ TP_ICM_SAVEREFERENCE_TOOLTIP;Salve a imagem TIFF linear antes que o perfil de en
TP_ICM_TONECURVE;Curva de tom
TP_ICM_TONECURVE_TOOLTIP;Empregue a curva de tom DCP incorporada. A configuração só estará disponível se o DCP selecionado tiver uma curva de tom.
TP_ICM_WORKINGPROFILE;Perfil de Trabalho
+TP_ICM_WORKING_TRC;Curva de resposta do tom:
+TP_ICM_WORKING_TRC_CUSTOM;Personalizado
+TP_ICM_WORKING_TRC_GAMMA;Gamma
+TP_ICM_WORKING_TRC_NONE;Nenhum
+TP_ICM_WORKING_TRC_SLOPE;Declive
+TP_ICM_WORKING_TRC_TOOLTIP;Apenas para perfis internos
TP_IMPULSEDENOISE_LABEL;Redução de Ruído por Impulso
TP_IMPULSEDENOISE_THRESH;Limite
TP_LABCURVE_AVOIDCOLORSHIFT;Evite mudança de cor
@@ -1748,7 +1807,7 @@ TP_PREPROCESS_NO_FOUND;Nenhum encontrado
TP_PREPROCESS_PDAFLINESFILTER;Filtro de linhas PDAF
TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tenta suprimir o ruído de faixas causado por pixels PDAF no sensor, ocorrendo com algumas câmeras mirrorless da Sony em algumas cenas em contraluz com "flare" visível.
TP_PRSHARPENING_LABEL;Pós-Redimensionamento de Nitidez
-TP_PRSHARPENING_TOOLTIP;Focaliza a imagem após o redimensionamento. Funciona somente quando o método de redimensionamento "Lanczos" é usado. É impossível visualizar os efeitos dessa ferramenta. 35/5000
+TP_PRSHARPENING_TOOLTIP;Focaliza a imagem após o redimensionamento. Funciona somente quando o método de redimensionamento "Lanczos" é usado. É impossível visualizar os efeitos dessa ferramenta. Veja RawPedia para instruções de uso.
TP_RAWCACORR_AUTO;Auto correção
TP_RAWCACORR_CABLUE;Azul
TP_RAWCACORR_CARED;Vermelho
@@ -1766,14 +1825,17 @@ TP_RAWEXPOS_PRESER;Preservação do realce
TP_RAWEXPOS_RGB;Vermelho, Verde, Azul
TP_RAWEXPOS_TWOGREEN;Ligações verdes
TP_RAW_1PASSMEDIUM;1-Passar (Medio)
+TP_RAW_2PASS;1-passar+rápido
TP_RAW_3PASSBEST;3-Passar (Superior)
TP_RAW_4PASS;4-Passar
TP_RAW_AHD;AHD
TP_RAW_AMAZE;AMaZE
TP_RAW_AMAZEVNG4;AMaZE+VNG4
+TP_RAW_BORDER;Borda
TP_RAW_DCB;DCB
TP_RAW_DCBENHANCE;Aprimoramento DCB
TP_RAW_DCBITERATIONS;Número de iterações DCB
+TP_RAW_DCBVNG4;DCB+VNG4
TP_RAW_DMETHOD;Método
TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing...
TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Refinamento Demosaicing...
@@ -1825,10 +1887,12 @@ TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;TO raio padrão de 1.0 geralmente se encaixa bem
TP_RAW_PIXELSHIFTSMOOTH;Transições suaves
TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Transições suaves entre áreas com movimento e áreas sem.\nDefina 0 para desabilitar a transição suave.\nDefina 1 para obter o resultado AMaZE/LMMSE do quadro selecionado (dependendo se "Usar LMMSE" estiver selecionado) ou a mediana de todos os quatro quadros se "Usar mediana" estiver selecionado.
TP_RAW_RCD;RCD
+TP_RAW_RCDVNG4;RCD+VNG4
TP_RAW_SENSOR_BAYER_LABEL;Sensor com Matriz Bayer
TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-passe dá os melhores resultados (recomendado para imagens com ISO baixo).\n1-passe é quase indistinguível do 3-passe para imagens com ISO alto e é mais rápido.
TP_RAW_SENSOR_XTRANS_LABEL;Sensor com Matriz X-Trans
TP_RAW_VNG4;VNG4
+TP_RESIZE_ALLOW_UPSCALING;Permitir Escalonamento
TP_RESIZE_APPLIESTO;Aplica-se a:
TP_RESIZE_CROPPEDAREA;Área Recortada
TP_RESIZE_FITBOX;Caixa Delimitadora
@@ -1918,11 +1982,11 @@ TP_RETINEX_VARIANCE;Contraste
TP_RETINEX_VARIANCE_TOOLTIP;Baixa variância aumenta o contraste e a saturação local, mas pode levar a artefatos.
TP_RETINEX_VIEW;Processo
TP_RETINEX_VIEW_MASK;Máscara
-TP_RETINEX_VIEW_METHOD_TOOLTIP;Padrão - Exibição normal.\nMáscara - Exibe a máscara.\nMáscara não nítida - Exibe a imagem com uma máscara não nítida de raio alto.\nTransmissão - Auto/Fixo - Exibe o mapa de transmissão do arquivo, antes de qualquer ação de contraste e brilho.\n\nAtenção: a máscara não corresponde à realidade, mas é amplificada para torná-la mais visível.
+TP_RETINEX_VIEW_METHOD_TOOLTIP;Padrão - Exibição normal.\nMáscara - Exibe a máscara.\nMáscara de nitidez - Exibe a imagem com uma máscara de nitidez de raio alto.\nTransmissão - Auto/Fixo - Exibe o mapa de transmissão do arquivo, antes de qualquer ação de contraste e brilho.\n\nAtenção: a máscara não corresponde à realidade, mas é amplificada para torná-la mais visível.
TP_RETINEX_VIEW_NONE;Padrão
TP_RETINEX_VIEW_TRAN;Transmissão - Auto
TP_RETINEX_VIEW_TRAN2;Transmissão - Fixo
-TP_RETINEX_VIEW_UNSHARP;Máscara não nítida
+TP_RETINEX_VIEW_UNSHARP;Máscara de nitidez
TP_RGBCURVES_BLUE;B
TP_RGBCURVES_CHANNEL;Canal
TP_RGBCURVES_GREEN;G
@@ -1961,12 +2025,14 @@ TP_SHARPENING_RLD_AMOUNT;Montante
TP_SHARPENING_RLD_DAMPING;Amortecimento
TP_SHARPENING_RLD_ITERATIONS;Iterações
TP_SHARPENING_THRESHOLD;Limite
-TP_SHARPENING_USM;Máscara Não Nítida
+TP_SHARPENING_USM;Máscara de Nitidez
TP_SHARPENMICRO_AMOUNT;Quantidade
TP_SHARPENMICRO_CONTRAST;Limite de contraste
TP_SHARPENMICRO_LABEL;Microcontraste
TP_SHARPENMICRO_MATRIX;3×3 matriz em vez de 5×5
TP_SHARPENMICRO_UNIFORMITY;Uniformidade
+TP_SOFTLIGHT_LABEL;Luz Suave
+TP_SOFTLIGHT_STRENGTH;Intensidade
TP_TM_FATTAL_AMOUNT;Montante
TP_TM_FATTAL_ANCHOR;Âncora
TP_TM_FATTAL_LABEL;Compressão de Amplitude Dinâmica(DRC)
@@ -2198,7 +2264,7 @@ TP_WBALANCE_SOLUX35;Solux 3500K
TP_WBALANCE_SOLUX41;Solux 4100K
TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
TP_WBALANCE_SOLUX47_NG;Solux 4700K (Galeria Nat.)
-TP_WBALANCE_SPOTWB;Spot WB
+TP_WBALANCE_SPOTWB;Use the pipette to pick the white balance from a neutral patch in the preview.
TP_WBALANCE_TEMPBIAS;Viés de temperatura AWB
TP_WBALANCE_TEMPBIAS_TOOLTIP;Permite alterar o cálculo do "balanço de branco automático"\ninclinando-o para temperaturas mais quentes ou mais frias. O viés\né expresso como uma porcentagem da temperatura calculada,\npara que o resultado seja dado por "Temperatura calculada + Temperatura calculada * viés".
TP_WBALANCE_TEMPERATURE;Temperatura
@@ -2206,7 +2272,6 @@ TP_WBALANCE_TUNGSTEN;Tungstênio
TP_WBALANCE_WATER1;Embaixo da Água 1
TP_WBALANCE_WATER2;Embaixo da Água 2
TP_WBALANCE_WATER_HEADER;Embaixo da Água
-Veja RawPedia para instruções de uso.
ZOOMPANEL_100;(100%)
ZOOMPANEL_NEWCROPWINDOW;Janela de detalhe aberta (nova)
ZOOMPANEL_ZOOM100;Zoom para 100%\nAtalho: z
@@ -2219,10 +2284,5 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: -
! Untranslated keys follow; remove the ! prefix after an entry is translated.
!!!!!!!!!!!!!!!!!!!!!!!!!
-!PARTIALPASTE_SOFTLIGHT;Soft light
-!TP_RAW_2PASS;1-pass+fast
-!TP_RAW_BORDER;Border
-!TP_RAW_DCBVNG4;DCB+VNG4
-!TP_RAW_RCDVNG4;RCD+VNG4
-!TP_SOFTLIGHT_LABEL;Soft Light
-!TP_SOFTLIGHT_STRENGTH;Strength
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian
index 306831d65..81b216cc8 100644
--- a/rtdata/languages/Russian
+++ b/rtdata/languages/Russian
@@ -1419,6 +1419,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!FILECHOOSER_FILTER_PP;Processing profiles
!FILECHOOSER_FILTER_SAME;Same format as current photo
!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.
!HISTORY_MSG_235;B&W - CM - Auto
!HISTORY_MSG_237;B&W - CM
@@ -1643,19 +1644,67 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!HISTORY_MSG_488;Dynamic Range Compression
!HISTORY_MSG_489;DRC - Threshold
!HISTORY_MSG_490;DRC - Amount
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold
!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion
!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1681,6 +1730,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!IPTCPANEL_TITLEHINT;Enter a short verbal and human readable name for the image, this may be the file name.
!IPTCPANEL_TRANSREFERENCE;Job ID
!IPTCPANEL_TRANSREFERENCEHINT;Enter a number or identifier needed for workflow control or tracking.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9
!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%.
@@ -1694,13 +1744,15 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1925,6 +1977,12 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!TP_ICM_SAVEREFERENCE;Save Reference Image
!TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance
!TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_PREPROCESS_DEADPIXFILT;Dead pixel filter
!TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Tries to suppress dead pixels.
!TP_PREPROCESS_HOTPIXFILT;Hot pixel filter
@@ -1988,6 +2046,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: -
!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected.
!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters)
index 0535f6ad0..d8905c0a8 100644
--- a/rtdata/languages/Serbian (Cyrilic Characters)
+++ b/rtdata/languages/Serbian (Cyrilic Characters)
@@ -1315,7 +1315,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images.
!FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions.
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -1325,6 +1325,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!GENERAL_ASIMAGE;As Image
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!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.
!HISTORY_MSG_173;NR - Detail recovery
@@ -1557,10 +1558,16 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -1573,10 +1580,52 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1606,6 +1655,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
@@ -1636,13 +1686,15 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!PARTIALPASTE_METAGROUP;Metadata settings
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1890,6 +1942,12 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!TP_ICM_SAVEREFERENCE;Save Reference Image
!TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance
!TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LOCALCONTRAST_AMOUNT;Amount
!TP_LOCALCONTRAST_DARKNESS;Darkness level
!TP_LOCALCONTRAST_LABEL;Local Contrast
@@ -1979,6 +2037,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике -
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters)
index 4829ff36f..26867400f 100644
--- a/rtdata/languages/Serbian (Latin Characters)
+++ b/rtdata/languages/Serbian (Latin Characters)
@@ -1315,7 +1315,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!FILEBROWSER_SHOWNOTTRASHHINT;Show only non-deleted images.
!FILEBROWSER_SHOWORIGINALHINT;Show only original images.\n\nWhen several images exist with the same filename but different extensions, the one considered original is the one whose extension is nearest the top of the parsed extensions list in Preferences > File Browser > Parsed Extensions.
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -1325,6 +1325,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!GENERAL_ASIMAGE;As Image
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!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.
!HISTORY_MSG_173;NR - Detail recovery
@@ -1557,10 +1558,16 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -1573,10 +1580,52 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1606,6 +1655,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
@@ -1636,13 +1686,15 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!PARTIALPASTE_METAGROUP;Metadata settings
!PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_RETINEX;Retinex
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
!PREFERENCES_AUTLISSTD;High
@@ -1890,6 +1942,12 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!TP_ICM_SAVEREFERENCE;Save Reference Image
!TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance
!TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LOCALCONTRAST_AMOUNT;Amount
!TP_LOCALCONTRAST_DARKNESS;Darkness level
!TP_LOCALCONTRAST_LABEL;Local Contrast
@@ -1979,6 +2037,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike -
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL
!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b*
!TP_RETINEX_CONTEDIT_LH;Hue equalizer
diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak
index b63f40d52..87b5ce231 100644
--- a/rtdata/languages/Slovak
+++ b/rtdata/languages/Slovak
@@ -633,7 +633,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -647,6 +647,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!GENERAL_NONE;None
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!GENERAL_SAVE_AS;Save as...
!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.
@@ -1039,10 +1040,16 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -1055,11 +1062,53 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1089,6 +1138,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1178,6 +1228,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1185,6 +1236,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1197,7 +1249,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_AUTLISLOW;Low
!PREFERENCES_AUTLISMAX;Max - Average of all tiles
@@ -1695,10 +1747,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER;Center
!TP_GRADIENT_CENTER_X;Center X
@@ -1745,6 +1793,12 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
!TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Fit colors into gamut of the working color space and apply Munsell correction.
!TP_LABCURVE_CHROMATICITY;Chromaticity
@@ -1896,6 +1950,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť -
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi
index ca1dab2d4..63e3c27e3 100644
--- a/rtdata/languages/Suomi
+++ b/rtdata/languages/Suomi
@@ -559,7 +559,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -575,6 +575,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!GENERAL_NONE;None
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
@@ -978,10 +979,16 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -994,11 +1001,53 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1029,6 +1078,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
!MAIN_BUTTON_FULLSCREEN;Fullscreen
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1126,6 +1176,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1133,6 +1184,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1145,7 +1197,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1666,10 +1718,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER;Center
!TP_GRADIENT_CENTER_X;Center X
@@ -1716,6 +1764,12 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
@@ -1884,6 +1938,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K]
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish
index 01b77d167..c2b779b4a 100644
--- a/rtdata/languages/Swedish
+++ b/rtdata/languages/Swedish
@@ -1876,6 +1876,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end)
!FILEBROWSER_RESETDEFAULTPROFILE;Reset to default
!GENERAL_RESET;Reset
+!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.
!HISTORY_MSG_173;NR - Detail recovery
@@ -1943,10 +1944,16 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -1959,10 +1966,52 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1992,6 +2041,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!LENSPROFILE_CORRECTION_LCPFILE;LCP File
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue.
!MAIN_TAB_ADVANCED;Advanced
!MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w
@@ -2005,11 +2055,13 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control
!PARTIALPASTE_LOCALCONTRAST;Local contrast
!PARTIALPASTE_METADATA;Metadata mode
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_IMAGENUM;Sub-image
!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting
!PREFERENCES_CMMBPC;Black point compensation
!PREFERENCES_CROP;Crop editing
@@ -2097,6 +2149,12 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!TP_ICM_APPLYLOOKTABLE;Look table
!TP_ICM_PROFILEINTENT;Rendering Intent
!TP_ICM_SAVEREFERENCE;Save Reference Image
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_LOCALCONTRAST_AMOUNT;Amount
!TP_LOCALCONTRAST_DARKNESS;Darkness level
!TP_LOCALCONTRAST_LABEL;Local Contrast
@@ -2166,6 +2224,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: -
!TP_RAW_RCD;RCD
!TP_RAW_RCDVNG4;RCD+VNG4
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RETINEX_CONTEDIT_MAP;Mask equalizer
!TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts.
!TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts!
diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish
index 627bb2654..1af509412 100644
--- a/rtdata/languages/Turkish
+++ b/rtdata/languages/Turkish
@@ -558,7 +558,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0
!FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
!FILECHOOSER_FILTER_ANY;All files
-!FILECHOOSER_FILTER_COLPROF;Color profiles
+!FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
!FILECHOOSER_FILTER_CURVE;Curve files
!FILECHOOSER_FILTER_LCP;Lens correction profiles
!FILECHOOSER_FILTER_PP;Processing profiles
@@ -574,6 +574,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!GENERAL_NONE;None
!GENERAL_OPEN;Open
!GENERAL_RESET;Reset
+!GENERAL_SAVE_AS;Save as...
!GENERAL_SLIDER;Slider
!GENERAL_UNCHANGED;(Unchanged)
!GENERAL_WARNING;Warning
@@ -977,10 +978,16 @@ TP_WBALANCE_TEMPERATURE;Isı
!HISTORY_MSG_491;White Balance
!HISTORY_MSG_492;RGB Curves
!HISTORY_MSG_493;L*a*b* Adjustments
-!HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
!HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-!HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+!HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+!HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+!HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+!HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+!HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+!HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+!HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
!HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
!HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
!HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -993,11 +1000,53 @@ TP_WBALANCE_TEMPERATURE;Isı
!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
!HISTORY_MSG_RAW_BORDER;Raw border
+!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
!HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
!HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
!HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor
!HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
+!ICCPROFCREATOR_COPYRIGHT;Copyright:
+!ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+!ICCPROFCREATOR_CUSTOM;Custom
+!ICCPROFCREATOR_DESCRIPTION;Description:
+!ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+!ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+!ICCPROFCREATOR_GAMMA;Gamma
+!ICCPROFCREATOR_ICCVERSION;ICC version:
+!ICCPROFCREATOR_ILL;Illuminant:
+!ICCPROFCREATOR_ILL_41;D41
+!ICCPROFCREATOR_ILL_50;D50
+!ICCPROFCREATOR_ILL_55;D55
+!ICCPROFCREATOR_ILL_60;D60
+!ICCPROFCREATOR_ILL_65;D65
+!ICCPROFCREATOR_ILL_80;D80
+!ICCPROFCREATOR_ILL_DEF;Default
+!ICCPROFCREATOR_ILL_INC;StdA 2856K
+!ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+!ICCPROFCREATOR_PRIMARIES;Primaries:
+!ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+!ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+!ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+!ICCPROFCREATOR_PRIM_BEST;BestRGB
+!ICCPROFCREATOR_PRIM_BETA;BetaRGB
+!ICCPROFCREATOR_PRIM_BLUX;Blue X
+!ICCPROFCREATOR_PRIM_BLUY;Blue Y
+!ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+!ICCPROFCREATOR_PRIM_GREX;Green X
+!ICCPROFCREATOR_PRIM_GREY;Green Y
+!ICCPROFCREATOR_PRIM_PROPH;Prophoto
+!ICCPROFCREATOR_PRIM_REC2020;Rec2020
+!ICCPROFCREATOR_PRIM_REDX;Red X
+!ICCPROFCREATOR_PRIM_REDY;Red Y
+!ICCPROFCREATOR_PRIM_SRGB;sRGB
+!ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+!ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+!ICCPROFCREATOR_PROF_V2;ICC v2
+!ICCPROFCREATOR_PROF_V4;ICC v4
+!ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+!ICCPROFCREATOR_SLOPE;Slope
+!ICCPROFCREATOR_TRC_PRESET;Tone response curve:
!IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
!IPTCPANEL_CITYHINT;Enter the name of the city pictured in this image.
!IPTCPANEL_COPYRIGHT;Copyright notice
@@ -1028,6 +1077,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
!LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
!MAIN_BUTTON_FULLSCREEN;Fullscreen
+!MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
!MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
!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).
@@ -1125,6 +1175,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
!PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
!PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+!PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
!PARTIALPASTE_PRSHARPENING;Post-resize sharpening
!PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -1132,6 +1183,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
!PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
!PARTIALPASTE_RAWGROUP;Raw Settings
+!PARTIALPASTE_RAW_BORDER;Raw border
!PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
!PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
!PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -1144,7 +1196,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!PARTIALPASTE_SHARPENEDGE;Edges
!PARTIALPASTE_SHARPENMICRO;Microcontrast
!PARTIALPASTE_SOFTLIGHT;Soft light
-!PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+!PARTIALPASTE_TM_FATTAL;Dynamic range compression
!PARTIALPASTE_VIBRANCE;Vibrance
!PREFERENCES_ADD;Add
!PREFERENCES_AUTLISLOW;Low
@@ -1665,10 +1717,6 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_FLATFIELD_CLIPCONTROL;Clip control
!TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
!TP_FLATFIELD_LABEL;Flat-Field
-!TP_GAMMA_CURV;Gamma
-!TP_GAMMA_FREE;Free gamma
-!TP_GAMMA_OUTPUT;Output gamma
-!TP_GAMMA_SLOP;Slope (linear)
!TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
!TP_GRADIENT_CENTER;Center
!TP_GRADIENT_CENTER_X;Center X
@@ -1715,6 +1763,12 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile is applied. The result can be used for calibration purposes and generation of a camera profile.
!TP_ICM_TONECURVE;Tone curve
!TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
+!TP_ICM_WORKING_TRC;Tone response curve:
+!TP_ICM_WORKING_TRC_CUSTOM;Custom
+!TP_ICM_WORKING_TRC_GAMMA;Gamma
+!TP_ICM_WORKING_TRC_NONE;None
+!TP_ICM_WORKING_TRC_SLOPE;Slope
+!TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
!TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
!TP_IMPULSEDENOISE_THRESH;Threshold
!TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
@@ -1883,6 +1937,7 @@ TP_WBALANCE_TEMPERATURE;Isı
!TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
!TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
!TP_RAW_VNG4;VNG4
+!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
!TP_RESIZE_APPLIESTO;Applies to:
!TP_RESIZE_CROPPEDAREA;Cropped Area
!TP_RESIZE_FITBOX;Bounding Box
diff --git a/rtdata/languages/default b/rtdata/languages/default
index c292c496b..ba5850675 100644
--- a/rtdata/languages/default
+++ b/rtdata/languages/default
@@ -205,7 +205,7 @@ FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0
FILEBROWSER_ZOOMINHINT;Increase thumbnail size.\n\nShortcuts:\n+ - Multiple Editor Tabs Mode,\nAlt-+ - Single Editor Tab Mode.
FILEBROWSER_ZOOMOUTHINT;Decrease thumbnail size.\n\nShortcuts:\n- - Multiple Editor Tabs Mode,\nAlt-- - Single Editor Tab Mode.
FILECHOOSER_FILTER_ANY;All files
-FILECHOOSER_FILTER_COLPROF;Color profiles
+FILECHOOSER_FILTER_COLPROF;Color profiles (*.icc)
FILECHOOSER_FILTER_CURVE;Curve files
FILECHOOSER_FILTER_LCP;Lens correction profiles
FILECHOOSER_FILTER_PP;Processing profiles
@@ -233,6 +233,7 @@ GENERAL_OPEN;Open
GENERAL_PORTRAIT;Portrait
GENERAL_RESET;Reset
GENERAL_SAVE;Save
+GENERAL_SAVE_AS;Save as...
GENERAL_SLIDER;Slider
GENERAL_UNCHANGED;(Unchanged)
GENERAL_WARNING;Warning
@@ -725,10 +726,16 @@ HISTORY_MSG_490;DRC - Amount
HISTORY_MSG_491;White Balance
HISTORY_MSG_492;RGB Curves
HISTORY_MSG_493;L*a*b* Adjustments
-HISTORY_MSG_CLAMPOOG;Out-of-gamut color clipping
+HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors
HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction
HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold
-HISTORY_MSG_HISTMATCHING;Auto-Matched Tone Curve
+HISTORY_MSG_HISTMATCHING;Auto-matched tone curve
+HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries
+HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D
+HISTORY_MSG_ICM_OUTPUT_TYPE;Output - Type
+HISTORY_MSG_ICM_WORKING_GAMMA;Working - Gamma
+HISTORY_MSG_ICM_WORKING_SLOPE;Working - Slope
+HISTORY_MSG_ICM_WORKING_TRC_METHOD;Working - TRC method
HISTORY_MSG_LOCALCONTRAST_AMOUNT;Local Contrast - Amount
HISTORY_MSG_LOCALCONTRAST_DARKNESS;Local Contrast - Darkness
HISTORY_MSG_LOCALCONTRAST_ENABLED;Local Contrast
@@ -741,7 +748,7 @@ HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction
HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold
HISTORY_MSG_RAW_BORDER;Raw border
-HISTORY_MSG_RESIZE_ALLOW_UPSCALING;Resize - Allow upscaling
+HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling
HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold
HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light
HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength
@@ -750,6 +757,47 @@ HISTORY_NEWSNAPSHOT;Add
HISTORY_NEWSNAPSHOT_TOOLTIP;Shortcut: Alt-s
HISTORY_SNAPSHOT;Snapshot
HISTORY_SNAPSHOTS;Snapshots
+ICCPROFCREATOR_COPYRIGHT;Copyright:
+ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0"
+ICCPROFCREATOR_CUSTOM;Custom
+ICCPROFCREATOR_DESCRIPTION;Description:
+ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description
+ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Leave empty to set the default description.
+ICCPROFCREATOR_GAMMA;Gamma
+ICCPROFCREATOR_ICCVERSION;ICC version:
+ICCPROFCREATOR_ILL;Illuminant:
+ICCPROFCREATOR_ILL_41;D41
+ICCPROFCREATOR_ILL_50;D50
+ICCPROFCREATOR_ILL_55;D55
+ICCPROFCREATOR_ILL_60;D60
+ICCPROFCREATOR_ILL_65;D65
+ICCPROFCREATOR_ILL_80;D80
+ICCPROFCREATOR_ILL_DEF;Default
+ICCPROFCREATOR_ILL_INC;StdA 2856K
+ICCPROFCREATOR_ILL_TOOLTIP;You can only set the illuminant for ICC v4 profiles.
+ICCPROFCREATOR_PRIMARIES;Primaries:
+ICCPROFCREATOR_PRIM_ACESP0;ACES AP0
+ICCPROFCREATOR_PRIM_ACESP1;ACES AP1
+ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998)
+ICCPROFCREATOR_PRIM_BEST;BestRGB
+ICCPROFCREATOR_PRIM_BETA;BetaRGB
+ICCPROFCREATOR_PRIM_BLUX;Blue X
+ICCPROFCREATOR_PRIM_BLUY;Blue Y
+ICCPROFCREATOR_PRIM_BRUCE;BruceRGB
+ICCPROFCREATOR_PRIM_GREX;Green X
+ICCPROFCREATOR_PRIM_GREY;Green Y
+ICCPROFCREATOR_PRIM_PROPH;Prophoto
+ICCPROFCREATOR_PRIM_REC2020;Rec2020
+ICCPROFCREATOR_PRIM_REDX;Red X
+ICCPROFCREATOR_PRIM_REDY;Red Y
+ICCPROFCREATOR_PRIM_SRGB;sRGB
+ICCPROFCREATOR_PRIM_TOOLTIP;You can only set custom primaries for ICC v4 profiles.
+ICCPROFCREATOR_PRIM_WIDEG;Widegamut
+ICCPROFCREATOR_PROF_V2;ICC v2
+ICCPROFCREATOR_PROF_V4;ICC v4
+ICCPROFCREATOR_SAVEDIALOG_TITLE;Save ICC profile as...
+ICCPROFCREATOR_SLOPE;Slope
+ICCPROFCREATOR_TRC_PRESET;Tone response curve:
IPTCPANEL_CATEGORY;Category
IPTCPANEL_CATEGORYHINT;Identifies the subject of the image in the opinion of the provider.
IPTCPANEL_CITY;City
@@ -797,6 +845,7 @@ LENSPROFILE_CORRECTION_LCPFILE;LCP File
LENSPROFILE_CORRECTION_MANUAL;Manual correction parameters
LENSPROFILE_LENS_WARNING;Warning: the crop factor used for lens profiling is larger than the crop factor of the camera, the results might be wrong.
MAIN_BUTTON_FULLSCREEN;Fullscreen
+MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator
MAIN_BUTTON_NAVNEXT_TOOLTIP;Navigate to the next image relative to image opened in the Editor.\nShortcut: Shift-F4\n\nTo navigate to the next image relative to the currently selected thumbnail in the File Browser or Filmstrip:\nShortcut: F4
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).
@@ -935,6 +984,7 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Dead pixel filter
PARTIALPASTE_PREPROCESS_GREENEQUIL;Green equilibration
PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter
PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter
+PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter
PARTIALPASTE_PRSHARPENING;Post-resize sharpening
PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction
PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue
@@ -942,6 +992,7 @@ PARTIALPASTE_RAWEXPOS_BLACK;Black levels
PARTIALPASTE_RAWEXPOS_LINEAR;White point correction
PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation
PARTIALPASTE_RAWGROUP;Raw Settings
+PARTIALPASTE_RAW_BORDER;Raw border
PARTIALPASTE_RAW_DCBENHANCE;DCB enhancement
PARTIALPASTE_RAW_DCBITERATIONS;DCB iterations
PARTIALPASTE_RAW_DMETHOD;Demosaic method
@@ -958,7 +1009,7 @@ PARTIALPASTE_SHARPENEDGE;Edges
PARTIALPASTE_SHARPENING;Sharpening (USM/RL)
PARTIALPASTE_SHARPENMICRO;Microcontrast
PARTIALPASTE_SOFTLIGHT;Soft light
-PARTIALPASTE_TM_FATTAL;Dynamic Range Compression
+PARTIALPASTE_TM_FATTAL;Dynamic range compression
PARTIALPASTE_VIBRANCE;Vibrance
PARTIALPASTE_VIGNETTING;Vignetting correction
PARTIALPASTE_WHITEBALANCE;White balance
@@ -1601,10 +1652,6 @@ TP_FLATFIELD_BT_VERTICAL;Vertical
TP_FLATFIELD_CLIPCONTROL;Clip control
TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Clip control avoids clipped highlights caused by applying the flat field. If there are already clipped highlights before applying the flat field, clip control can lead to color cast.
TP_FLATFIELD_LABEL;Flat-Field
-TP_GAMMA_CURV;Gamma
-TP_GAMMA_FREE;Free gamma
-TP_GAMMA_OUTPUT;Output gamma
-TP_GAMMA_SLOP;Slope (linear)
TP_GENERAL_11SCALE_TOOLTIP;The effects of this tool are only visible or only accurate at a preview scale of 1:1.
TP_GRADIENT_CENTER;Center
TP_GRADIENT_CENTER_X;Center X
@@ -1665,6 +1712,12 @@ TP_ICM_SAVEREFERENCE_TOOLTIP;Save the linear TIFF image before the input profile
TP_ICM_TONECURVE;Tone curve
TP_ICM_TONECURVE_TOOLTIP;Employ the embedded DCP tone curve. The setting is only available if the selected DCP has a tone curve.
TP_ICM_WORKINGPROFILE;Working Profile
+TP_ICM_WORKING_TRC;Tone response curve:
+TP_ICM_WORKING_TRC_CUSTOM;Custom
+TP_ICM_WORKING_TRC_GAMMA;Gamma
+TP_ICM_WORKING_TRC_NONE;None
+TP_ICM_WORKING_TRC_SLOPE;Slope
+TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles.
TP_IMPULSEDENOISE_LABEL;Impulse Noise Reduction
TP_IMPULSEDENOISE_THRESH;Threshold
TP_LABCURVE_AVOIDCOLORSHIFT;Avoid color shift
@@ -1835,8 +1888,8 @@ TP_RAW_SENSOR_BAYER_LABEL;Sensor with Bayer Matrix
TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pass gives best results (recommended for low ISO images).\n1-pass is almost undistinguishable from 3-pass for high ISO images and is faster.\n+fast gives less artifacts in flat areas
TP_RAW_SENSOR_XTRANS_LABEL;Sensor with X-Trans Matrix
TP_RAW_VNG4;VNG4
-TP_RESIZE_APPLIESTO;Applies to:
TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling
+TP_RESIZE_APPLIESTO;Applies to:
TP_RESIZE_CROPPEDAREA;Cropped Area
TP_RESIZE_FITBOX;Bounding Box
TP_RESIZE_FULLIMAGE;Full Image
@@ -2207,7 +2260,7 @@ TP_WBALANCE_SOLUX35;Solux 3500K
TP_WBALANCE_SOLUX41;Solux 4100K
TP_WBALANCE_SOLUX47;Solux 4700K (vendor)
TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery)
-TP_WBALANCE_SPOTWB;Spot WB
+TP_WBALANCE_SPOTWB;Use the pipette to pick the white balance from a neutral patch in the preview.
TP_WBALANCE_TEMPBIAS;AWB temperature bias
TP_WBALANCE_TEMPBIAS_TOOLTIP;Allows to alter the computation of the "auto white balance"\nby biasing it towards warmer or cooler temperatures. The bias\nis expressed as a percentage of the computed temperature,\nso that the result is given by "computedTemp + computedTemp * bias".
TP_WBALANCE_TEMPERATURE;Temperature
diff --git a/rtdata/icons/mime-types b/rtdata/mime-types
similarity index 100%
rename from rtdata/icons/mime-types
rename to rtdata/mime-types
diff --git a/rtdata/options/options.lin b/rtdata/options/options.lin
index 924e8b9a2..91520dc0e 100644
--- a/rtdata/options/options.lin
+++ b/rtdata/options/options.lin
@@ -2,7 +2,7 @@
# After the first run, all the parameters will be available in this global option file
# or in a new local option file, depending on the MultiUser value below
-# Most ot the options are modifiable through the Preference window
+# Most of the options are modifiable through the Preference window
[General]
# Setting MultiUser to false will use the application's installation directory as cache directory,
diff --git a/rtdata/icons/rawtherapee.desktop.in b/rtdata/rawtherapee.desktop.in
similarity index 100%
rename from rtdata/icons/rawtherapee.desktop.in
rename to rtdata/rawtherapee.desktop.in
diff --git a/rtdata/themes/RawTherapee-GTK3-20_.css b/rtdata/themes/RawTherapee-GTK3-20_.css
index 3f25ce509..91aff9a99 100644
--- a/rtdata/themes/RawTherapee-GTK3-20_.css
+++ b/rtdata/themes/RawTherapee-GTK3-20_.css
@@ -225,6 +225,7 @@ scrollbar.vertical.overlay-indicator:not(.hovering) slider {
button {
padding: 0;
+ box-shadow: none;
min-height: 5px;
min-width: 5px;
background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3));
@@ -631,7 +632,6 @@ flowboxchild:selected {
/* Editor tab button */
#MainNotebook grid label, #MainNotebook grid image {
- /* OK */
padding: 1px;
}
@@ -954,5 +954,65 @@ button#MyFileChooserButton {
}
#ToolPanelNotebook button {
- margin: 0px;
+ margin: 0px;
}
+
+button.flat {
+ background: none;
+ border: none;
+ outline: none;
+}
+
+button.flat:checked {
+ background: #262626;
+}
+
+.text-button, .image-button, .independent {
+ box-shadow: none;
+ min-height: 24px;
+ min-width: 24px;
+ padding: 0px;
+}
+
+/* Makes image-comboboxes (e.g. tone curve types) have same size as image buttons */
+combobox, .popupbutton-arrow {
+ min-height: 24px;
+}
+
+/* Makes image-combobox small icons centered */
+button.toggle > grid > image {
+ padding: 4px;
+}
+
+#histButton {
+ background: none;
+ min-height: 16px;
+ min-width: 16px;
+}
+
+/* -gtk-icon-shadow looks buggy on the small histogram icons */
+#histButton:hover {
+ -gtk-icon-shadow: none;
+}
+
+.narrowbutton {
+ min-width: 10px;
+}
+
+
+.smallbuttonbox button {
+ min-width: 16px;
+ min-height: 16px;
+}
+
+/* Adds padding around sides of text-buttons */
+button.text-button {
+ padding: 0 8px;
+}
+
+/* Adds gap between combobox contents and combobox edges */
+button.combo, .image-combo .toggle, #MyFileChooserButton {
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
diff --git a/rtdata/themes/TooWaBlue - Bright-GTK3-20_.css b/rtdata/themes/TooWaBlue - Bright-GTK3-20_.css
index 888533053..d1bb4fdbc 100644
--- a/rtdata/themes/TooWaBlue - Bright-GTK3-20_.css
+++ b/rtdata/themes/TooWaBlue - Bright-GTK3-20_.css
@@ -41,7 +41,7 @@
/*** Change me end *****************************************************************************/
-@define-color bg-light-grey rgb(115,115,115);
+@define-color bg-light-grey rgb(119,119,119);
@define-color bg-grey rgb(95,95,95);
@define-color bg-dark-grey rgb(55,55,55);
diff --git a/rtdata/themes/TooWaBlue - Dark-GTK3-20_.css b/rtdata/themes/TooWaBlue - Dark-GTK3-20_.css
index 23e32e1ec..581549750 100644
--- a/rtdata/themes/TooWaBlue - Dark-GTK3-20_.css
+++ b/rtdata/themes/TooWaBlue - Dark-GTK3-20_.css
@@ -25,7 +25,7 @@
/*** Change me *** rgb(red,green,blue) *** allowed values from 0 to 255 for each color ***/
-@define-color accent-color rgb(33,82,145); /*** Active color for Lists, Menu, Borders ... * Default: rgb(33,82,145) ***/
+@define-color accent-color rgb(33,82,150); /*** Active color for Lists, Menu, Borders ... * Default: rgb(33,82,145) ***/
@define-color text-hl-color rgb(200,200,200); /*** Active text color * Default: rgb(200,200,200) ***/
@define-color bg-highlighted-text-color rgb(33,82,145); /*** Highlighted text color background* Default: rgb(33,82,145) ***/
@@ -33,7 +33,7 @@
@define-color bg-image rgb(58,58,58); /*** Image area & File Browser background * Default: rgb(58,58,58) ***/
-@define-color accent-color2 rgb(33,82,145); /*** Scale, Progressbar, Scrollbar, Tabs * Default: rgb(33,82,145) ***/
+@define-color accent-color2 rgb(33,82,150); /*** Scale, Progressbar, Scrollbar, Tabs * Default: rgb(33,82,145) ***/
@define-color accent-color4 rgb(98,98,98); /*** Slider knob * Default: rgb(98,98,98) ***/
@define-color accent-color3 rgb(33,82,145); /*** Selected thumbnail background color * Default: rgb(33,82,145) ***/
diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css
index 68e54c966..c4179c78a 100644
--- a/rtdata/themes/TooWaBlue-GTK3-20_.css
+++ b/rtdata/themes/TooWaBlue-GTK3-20_.css
@@ -2,7 +2,7 @@
This file is part of RawTherapee.
Copyright (c) 2016-2017 TooWaBoo
- Version 2.66
+ Version 2.71
RawTherapee is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -72,17 +72,27 @@
outline-style: none; /* removes the ugly dashed focus line */
border-image: none;
transition: none;
+ -gtk-icon-shadow: none;
+}
+
+#ToolBarPanelFileBrowser button:not(.smallbutton) image,
+#EditorTopPanel button:not(.narrowbutton) image,
+#IopsPanel button:not(.Right) image,
+#ProfilePanel button image,
+#MainNotebook > header :not(#CloseButton) > image {
+ -gtk-icon-transform: scale(calc(22/24));
}
*:disabled {
color: @fg-disabled;
+ -gtk-icon-effect: dim;
}
#ToolPanelNotebook {
- min-width: 24.08334em;
+ min-width: 22.25em;
}
#HistoryPanel {
- min-width: 18em;
+ min-width: 17.5em;
}
window.background {
@@ -136,10 +146,6 @@ label {
margin: 0;
}
-.drawingarea:not(.slider) {
- background-color: @bg-dark-grey;
-}
-
/*** Frames ************************************************************************************/
frame {
border: none;
@@ -273,6 +279,10 @@ textview:selected, treeview:selected {
margin-top: -8px;
margin-bottom: -4px;
}
+#Snapshots button image{
+ min-height: 24px;
+ min-width: 24px;
+}
#Snapshots > box > :nth-child(1) {
margin-bottom: 0.41667em;
}
@@ -361,6 +371,7 @@ filechooser list row:selected {
#HistogramPanel {
min-height: 0;
margin: -2px 0;
+ padding: 0;
border: none;
background-color: transparent;
}
@@ -401,18 +412,21 @@ filechooser list row:selected {
background-color: @bg-dark-grey;
background-image: none;
box-shadow: none;
- min-height: 1.58334em;
- min-width: 1.5em;
+ min-height: 1.5em;
+ min-width: calc(1.33334em + 6px);
border-radius: 0;
}
#histButton:first-child {
- margin-top: 1px;
+ margin-top: 0.16667em;
}
#histButton:last-child {
- margin-bottom: 1px;
+ margin-bottom: 0.16667em;
}
+#HistogramPanel image {
+ -gtk-icon-transform: scale(calc(14/16));
+}
/*** end ***************************************************************************************/
/*** Separator *********************************************************************************/
@@ -648,8 +662,8 @@ scale trough {
}
scale:not(:disabled) trough highlight {
background-color: @accent-color2;
- border: 0.08334em solid @bg-button-border;
- box-shadow: inset 0 0.08334em shade(@accent-color2, 1.3);
+ border: 0.08334em solid @bg-dark-grey;
+ box-shadow: inset 0 0.08334em shade(@accent-color2, 1.25);
border-radius: 0.5em;
}
@@ -762,18 +776,18 @@ notebook header.left tab {
padding: 0.33334em 0;
}
notebook header tab > grid > image {
- min-height: 2.33334em;
+ min-height: 2.5em;
min-width: 0;
padding: 0 0.16667em 0 0;
margin: 0;
}
notebook header.left tab > grid > image {
min-height: 0;
- min-width: 2.33334em;
+ min-width: 2.5em;
padding: 0.16667em 0 0;
}
notebook header tab label {
- margin: 0.33334em;
+ margin: 0.08334em;
}
notebook header tab:hover label {
color: @headline-hl;
@@ -838,13 +852,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
padding: 0 0.33334em;
}
#ToolPanelNotebook > header tab + tab {
- margin-left: 0.33333em;
+ margin-left: 0.25em;
}
-#ToolPanelNotebook > header tab image{
- min-height: 2.5em;
- min-width: 2em;
- padding: 0;
+#ToolPanelNotebook > header tab #TextOrIcon image{
+ min-height: 2.33334em;
+ min-width: calc(2em + 4px);
+ padding: 2px 0;
margin: 0;
}
@@ -855,6 +869,10 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
background-color: @bg-grey;
padding: 0;
}
+#RightNotebook header tab label {
+ padding-left: 0.16667em;
+ padding-right: 0.16667em;
+}
#RightNotebook > stack > :nth-child(1) > * > box,
#RightNotebook > stack > :nth-child(4) > * > box {
@@ -865,6 +883,11 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#PrefNotebook header {
margin: -0.66667em -0.66667em 0.33334em;
}
+#PrefNotebook header tab label {
+ padding-top: 0.16667em;
+ padding-bottom: 0.16667em;
+}
+
#AboutNotebook header {
margin: -0.66667em -0.66667em 0.66667em;
}
@@ -960,7 +983,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#MetaPanelNotebook > stack > box > grid > button {
margin-top: 0.08334em;
margin-bottom: 0.08334em;
- min-height: 2.16667em;
+ min-height: 2.33334em;
}
#MetaPanelNotebook label {
@@ -996,16 +1019,33 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#ToolBarPanelFileBrowser > button {
margin: 0 0.08334em;
}
-#ToolBarPanelFileBrowser > box > box > button {
- min-height: 0.91667em;
- min-width: 1.33333em;
+/* Filter */
+#ToolBarPanelFileBrowser .smallbuttonbox {
+ min-height: 1.16667em;
padding: 0;
- margin: 0.16667em 0 0 0;
+ margin: 0;
+}
+#ToolBarPanelFileBrowser .smallbuttonbox:nth-child(1) {
+ margin: 0 0 2px 0;
+}
+#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton {
+ min-height: 0;
+ min-width: 1.16667em;
+ padding: 0;
+ margin: 0 2px;
border: none;
+ border-radius: 0;
background-color: transparent;
background-image: none;
box-shadow: none;
}
+#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton:checked {
+ background-color: @bg-dark-grey;
+}
+#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton image{
+ -gtk-icon-transform: scale(calc(14/16));
+ margin: -2px
+}
#ToolBarPanelFileBrowser entry + button.flat,
#FileBrowser entry + button.flat {
@@ -1050,15 +1090,21 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#BeforeAfterContainer label {
- min-height: 2.41667em;
+ min-height: 2.66667em;
padding: 0 0.5em;
}
/* Small Lock Button */
#BeforeAfterContainer button {
- min-height: 1.66667em;
- min-width: 1.75em;
- margin: 0.25em;
- padding: 0 0 0 0.08334em;
+ min-height: 2em;
+ min-width: 2em;
+ margin: 0.25em 0.25em 0.25em 0;
+ padding: 0;
+}
+#BeforeAfterContainer button image{
+ margin: 0 0 0 1px;
+}
+#BeforeAfterContainer button:checked image{
+ margin: 0 -2px 0 3px;
}
/**/
@@ -1069,15 +1115,15 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
}
#EditorTopPanel button {
margin: 0 0.08334em;
- min-height: 2.16667em;
- min-width: 2.16667em;
+ min-height: 2.33334em;
+ min-width: 2.33334em;
}
/* Removes margin from the last button. Otherwise the filmstrip will cut of the right border. */
#EditorTopPanel :last-child > button:last-child {
margin-right: 0;
}
-#EditorTopPanel > box:nth-child(9) > button.image-button {
+#EditorTopPanel button.narrowbutton {
min-width: 1.05em;
padding: 0;
}
@@ -1108,9 +1154,10 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
/**/
#MyExpander .drawingarea:not(.slider) {
border: 0.08334em solid @bg-light-grey;
+ background-color: @bg-dark-grey;
}
#MyExpander .slider,
-#MyExpander .drawingarea:nth-child(2) {
+#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);
@@ -1127,10 +1174,6 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#ToolPanelNotebook scrolledwindow viewport.frame {
padding: 0 0.56em;
}
-/* #MyExpander.withScrollbar {
- padding: 0 6px;
-}
- */
#MyExpander {
margin: 0;
@@ -1155,13 +1198,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top {
#MyExpanderTitle > box {
margin: 0;
- padding: 0.33334em 0;
+ padding: 0.25em 0;
}
#MyExpanderTitle label {
color: @headline-big;
padding: 0;
- margin: 0 0.25em 0 0.5em;
+ margin: 0.08334em 0.25em 0 0.5em;
}
#MyExpanderTitle:hover label {
@@ -1263,7 +1306,7 @@ popover.background modelbutton:hover {
/*** Switch ***********************************************************************************/
switch {
- min-height: 2.16667em;
+ min-height: 2.33334em;
min-width: 11em;
margin: 0;
padding: 0;
@@ -1308,8 +1351,8 @@ switch:disabled:not(:checked) {
/*** Buttons ***********************************************************************************/
button {
- min-height: 2.16667em;
- min-width: 2.16667em;
+ min-height: 2.33334em;
+ min-width: 2.33334em;
margin: 0;
padding: 0; /* x */
border-radius: 0.2em;
@@ -1336,7 +1379,7 @@ button.text-button label {
filechooser button image,
#MyFileChooserButton image {
- opacity: .8;
+ opacity: .70;
-gtk-icon-style: symbolic;
}
@@ -1347,23 +1390,19 @@ button.flat {
background-image: none;
background-color: transparent;
}
-/* Resetbutton Queue & Save as*/
-dialog scale + button.flat,
-scale + button.flat {
- min-height: 1.33334em;
- min-width: 1.25em;
- margin: 0.25em 0 0.16667em 0.16667em;
- padding: 0 0 0 0.08334em;
- -gtk-icon-shadow: none;
-}
/* Resetbutton */
-#MyExpander button.flat {
- min-height: 1.33334em;
- min-width: 1.25em;
+#MyExpander 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 0 0 0.08334em;
- -gtk-icon-shadow: none;
+ padding: 0;
+}
+dialog entry + button.flat {
+ min-height: 1.66667em;
}
#MyExpander scale + button.flat {
@@ -1381,11 +1420,16 @@ scale + button.flat {
/* Buttons Curve drawingarea*/
#MyExpander button.flat + button.flat,
#MyExpander button.flat:first-child {
- min-height: 2.16667em;
- min-width: 2.16667em;
- margin: 0.08334em;
+ min-height: 2em;
+ min-width: 2em;
+ margin: 0.16667em 0.16667em 0 0;
padding: 0;
}
+#MyExpander button.flat + button.flat image,
+#MyExpander button.flat:first-child image{
+ -gtk-icon-transform: scale(calc(20/24));
+ margin: -2px;
+}
/**/
#ToolBarPanelFileBrowser entry + button:hover,
@@ -1428,7 +1472,12 @@ button.MiddleH {
}
#ProfilePanel combobox {
margin-left: 0.16667em;
+ margin-right: 0.16667em;
}
+#ProfilePanel button.Left {
+ margin-left: -2px;
+}
+
#PlacesPaned button.Left,
#PlacesPaned button.Right {
margin-top: 3px;
@@ -1439,7 +1488,7 @@ button.MiddleH {
/**/
/* Button base format for Toolbox and dialogs */
-#ToolPanelNotebook > stack > box > box > combobox .combo,
+#ToolPanelNotebook > stack > box > box > combobox button,
dialog button,
#MyExpander button,
#BatchQueueButtonsMainContainer button {
@@ -1452,23 +1501,44 @@ dialog button,
min-width: 1.66667em;
padding: 0;
}
-combobox .combo,
-dialog combobox .combo,
-#ToolPanelNotebook combobox .combo,
-#BatchQueueButtonsMainContainer combobox .combo {
- padding: 0 0.26667em;
+
+#ToolPanelNotebook > stack > box > box > combobox button.combo,
+dialog button.combo,
+#MyExpander button.combo,
+#BatchQueueButtonsMainContainer button.combo {
+ padding: 0;
+}
+#ToolPanelNotebook > stack > box > box > combobox {
+ margin-right: 0.25em;
+}
+combobox button cellview {
+ padding: 0 0 0 0.16667em;
+}
+combobox arrow {
+ padding: 0 0.16667em 0 0;
+ margin: 0;
+}
+#MetaPanelNotebook combobox arrow {
+ padding: 0;
+ min-width: 1.25em;
+}
+.popupbutton-arrow {
+ min-width: 0;
}
/**/
/* Add/remove space between buttons and labels in toolbox*/
+#ToolPanelNotebook > stack > box > box > label {
+ margin: 0 0 0 0.25em;
+}
+
#MyExpander combobox:not(:first-child):not(:only-child),
-#MyExpander button:not(.flat).Left,
+#MyExpander .image-combo:not(:first-child),
#MyExpander button:not(.flat) + combobox,
#MyExpander combobox + button:not(.flat),
-#MyExpander combobox + combobox
-/* Crash
+#MyExpander combobox + combobox,
#MyExpander button + label,
-#MyExpander combobox + label */ {
+#MyExpander combobox + label {
margin-left: 0.16667em;
}
@@ -1484,22 +1554,27 @@ buttonbox:not(.dialog-action-area) button{
#PrefNotebook buttonbox:not(.dialog-action-area) {
margin-right: -5px;
}
+#PrefNotebook radiobutton + entry + button:last-child image {
+ -gtk-icon-transform: scale(calc(17/24));
+ margin: -5px;
+}
/* Arrow toggle combo button */
-#IopsPanel button:not(.flat).Left + button:not(.flat).Right,
-#MyExpander button:not(.flat).Left + button:not(.flat).Right {
+#IopsPanel .image-combo button.Right,
+#MyExpander .image-combo button.Right {
border-left: none;
margin-left: 0;
- padding-left: 0.33334em;
- padding-right: 0.33334em;
+ padding-left: 0;
+ padding-right: 0;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
+ min-width: 1.33334em;
}
-#IopsPanel button:not(.flat).Left,
-#MyExpander button:not(.flat).Left {
+#IopsPanel .image-combo button.Left,
+#MyExpander .image-combo button.Left {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
- min-width: 2.16667em;
+ min-width: 2.33334em;
}
/**/
@@ -1508,16 +1583,22 @@ buttonbox:not(.dialog-action-area) button{
margin: 0;/* x */
}
/* Graduated filter big button */
-#ExpanderBox > box > box:first-child > button:not(.flat):not(.text-button):first-child {
- min-height: 2.16667em;
- min-width: 2.16667em;
+#MyExpander button:not(.image-button).independent:first-child:not(.flat):only-child {
+ min-height: 2em;
+ min-width: 2em;
padding: 0;
- margin: 0 0 0.5em;
+ margin: 0 0 0.33334em;
}
-
-.popupbutton-arrow {
- min-width: 0;
+#MyExpander button:not(.image-button).independent:first-child:not(.flat):only-child image {
+ -gtk-icon-transform: scale(calc(20/24));
+ margin: -2px;
}
+/* WB pipete big button*/
+#MyExpander button.image-button.independent:first-child:not(.flat):not(:only-child) image {
+ -gtk-icon-transform: scale(calc(18/24));
+ margin: -4px;
+}
+/**/
button.color {
min-height: 1.16667em;
@@ -1526,7 +1607,7 @@ button.color {
/* Save, Cancel, OK ... buttons */
.dialog-action-area button {
- min-height: 2.16667em;
+ min-height: 2.33334em;
margin-top: 0.33334em;
}
messagedialog .dialog-action-area button {
@@ -1672,7 +1753,7 @@ messagedialog headerbar button.titlebutton {
#MainNotebook tab #CloseButton {
padding: 0;
- margin: 0.33334em -3px 0.33334em 0.08334em;
+ margin: 0.41667em -2px 0.5em 0.25em;
min-width: 1.5em;
min-height: 1.5em;
}
@@ -1731,7 +1812,6 @@ radio {
min-width: 1.16667em;
box-shadow: none;
background-repeat: no-repeat;
- -gtk-icon-shadow: none;
color: @text-color;
}
radiobutton label,
@@ -1829,7 +1909,6 @@ spinbutton button {
border: none;
border-radius: 0;
box-shadow: none;
- -gtk-icon-shadow: none;
}
#MyExpander spinbutton entry,
spinbutton entry {
diff --git a/rtdata/themes/TooWaGrey - Bright-GTK3-20_.css b/rtdata/themes/TooWaGrey - Bright-GTK3-20_.css
new file mode 100644
index 000000000..74dd5c7f0
--- /dev/null
+++ b/rtdata/themes/TooWaGrey - Bright-GTK3-20_.css
@@ -0,0 +1,72 @@
+/*
+ This file is part of RawTherapee.
+
+ Copyright (c) 2016-2017 TooWaBoo
+ Requires RT 5.0 (Gtk+ >= 3.20)
+
+ RawTherapee is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ RawTherapee is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with RawTherapee. If not, see .
+*/
+
+
+/*****************************************/
+/**/ @import "TooWaBlue-GTK3-20_.css"; /**/
+/*****************************************/
+
+/*** Change me *** rgb(red,green,blue) *** allowed values from 0 to 255 for each color ***/
+
+@define-color accent-color rgb(112,112,112); /*** Active color for Lists, Menu, Borders ... * Default: rgb(35,99,166) ***/
+@define-color text-hl-color rgb(255,255,255); /*** Active text color * Default: rgb(210,210,210) ***/
+
+@define-color bg-highlighted-text-color rgb(43,119,196); /*** Highlighted text color background* Default: rgb(35,99,166) ***/
+@define-color highlighted-text-color rgb(255,255,255); /*** Highlighted text color * Default: rgb(210,210,210) ***/
+
+@define-color bg-image rgb(95,95,95); /*** Image area & File Browser background * Default: rgb(70,70,70) ***/
+
+@define-color accent-color2 rgb(43,119,196); /*** Scale, Progressbar, Scrollbar, Tabs * Default: rgb(35,99,166) ***/
+@define-color accent-color4 rgb(135,135,135); /*** Slider knob * Default: rgb(115,115,115) ***/
+
+@define-color accent-color3 rgb(55,55,55); /*** Selected thumbnail background color * Default: rgb(35,99,166) ***/
+@define-color text-hl-color3 rgb(210,210,210); /*** Selected thumbnail text color * Default: rgb(210,210,210) ***/
+
+/*** Change me end *****************************************************************************/
+
+@define-color bg-light-grey rgb(119,119,119);
+@define-color bg-grey rgb(95,95,95);
+@define-color bg-dark-grey rgb(55,55,55);
+
+@define-color bg-button-hover rgba(0,0,0,.25);
+@define-color bg-button-active rgba(0,0,0,.60);
+
+@define-color winHeaderbar rgb(75,75,75);
+@define-color winTitle rgb(210,210,210);
+
+@define-color bg-tooltip rgb(210,210,210);
+@define-color border-tooltip rgb(36,36,36);
+@define-color text-tooltip rgb(36,36,36);
+/***********************************************/
+@define-color text-color rgb(210,210,210);
+@define-color text-tbEntry rgb(230,230,230);
+@define-color border-color rgba(255,255,255,.35);
+@define-color bg-list-hover rgb(75,75,75);
+@define-color bg-scale-entry rgba(0,0,0,.14);
+@define-color bg-button-border rgba(0,0,0,.45);
+@define-color bg-entry-border rgba(0,0,0,.40);
+@define-color view-grid-border rgba(255,255,255,0.25);
+@define-color headline-big rgb(210,210,210);
+@define-color headline-hl rgb(255,255,255);
+@define-color headline-frame rgb(245,245,245);
+/*** New Color Variable v2.53 ************************************************************************/
+@define-color fg-disabled rgb(160,160,160);
+@define-color bg-tb-spinbutton shade(@bg-grey, 1.3);
+/***********************************************************************************************/
diff --git a/rtdata/themes/TooWaGrey - Dark-GTK3-20_.css b/rtdata/themes/TooWaGrey - Dark-GTK3-20_.css
new file mode 100644
index 000000000..0f61e0935
--- /dev/null
+++ b/rtdata/themes/TooWaGrey - Dark-GTK3-20_.css
@@ -0,0 +1,72 @@
+/*
+ This file is part of RawTherapee.
+
+ Copyright (c) 2016-2017 TooWaBoo
+ Requires RT 5.0 (Gtk+ >= 3.20)
+
+ RawTherapee is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ RawTherapee is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with RawTherapee. If not, see .
+*/
+
+
+/*****************************************/
+/**/ @import "TooWaBlue-GTK3-20_.css"; /**/
+/*****************************************/
+
+/*** Change me *** rgb(red,green,blue) *** allowed values from 0 to 255 for each color ***/
+
+@define-color accent-color rgb(65,65,65); /*** Active color for Lists, Menu, Borders ... * Default: rgb(33,82,145) ***/
+@define-color text-hl-color rgb(200,200,200); /*** Active text color * Default: rgb(200,200,200) ***/
+
+@define-color bg-highlighted-text-color rgb(33,82,150); /*** Highlighted text color background* Default: rgb(33,82,145) ***/
+@define-color highlighted-text-color rgb(200,200,200); /*** Highlighted text color * Default: rgb(200,200,200) ***/
+
+@define-color bg-image rgb(58,58,58); /*** Image area & File Browser background * Default: rgb(58,58,58) ***/
+
+@define-color accent-color2 rgb(33,82,150); /*** Scale, Progressbar, Scrollbar, Tabs * Default: rgb(33,82,145) ***/
+@define-color accent-color4 rgb(98,98,98); /*** Slider knob * Default: rgb(98,98,98) ***/
+
+@define-color accent-color3 rgb(30,30,30); /*** Selected thumbnail background color * Default: rgb(33,82,145) ***/
+@define-color text-hl-color3 rgb(200,200,200); /*** Selected thumbnail text color * Default: rgb(200,200,200) ***/
+
+/*** Change me end *****************************************************************************/
+
+@define-color bg-light-grey rgb(75,75,75);
+@define-color bg-grey rgb(58,58,58);
+@define-color bg-dark-grey rgb(30,30,30);
+
+@define-color bg-button-hover rgba(0,0,0,.3);
+@define-color bg-button-active rgba(0,0,0,.7);
+
+@define-color winHeaderbar rgb(50,50,50);
+@define-color winTitle rgb(190,190,190);
+
+@define-color bg-tooltip rgb(170,170,170);
+@define-color border-tooltip rgb(36,36,36);
+@define-color text-tooltip rgb(36,36,36);
+/***********************************************/
+@define-color text-color rgb(176,176,176);
+@define-color text-tbEntry rgb(192,192,192);
+@define-color border-color rgba(255,255,255,.30);
+@define-color bg-list-hover rgb(50,50,50);
+@define-color bg-scale-entry rgba(0,0,0,.14);
+@define-color bg-button-border rgba(0,0,0,.60);
+@define-color bg-entry-border rgba(0,0,0,.40);
+@define-color view-grid-border rgba(255,255,255,0.15);
+@define-color headline-big rgb(187,187,187);
+@define-color headline-hl rgb(215,215,215);
+@define-color headline-frame rgb(210,210,210);
+/*** New Color Variable v2.53 ************************************************************************/
+@define-color fg-disabled rgb(128,128,128);
+@define-color bg-tb-spinbutton shade(@bg-grey, 1.35);
+/***********************************************************************************************/
diff --git a/rtdata/themes/TooWaGrey-GTK3-20_.css b/rtdata/themes/TooWaGrey-GTK3-20_.css
new file mode 100644
index 000000000..f681ef374
--- /dev/null
+++ b/rtdata/themes/TooWaGrey-GTK3-20_.css
@@ -0,0 +1,72 @@
+/*
+ This file is part of RawTherapee.
+
+ Copyright (c) 2016-2017 TooWaBoo
+ Version 2.66
+
+ RawTherapee is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ RawTherapee is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with RawTherapee. If not, see .
+*/
+
+
+/*****************************************/
+/**/ @import "TooWaBlue-GTK3-20_.css"; /**/
+/*****************************************/
+
+/*** Change me *** rgb(red,green,blue) *** allowed values from 0 to 255 for each color ***/
+
+@define-color accent-color rgb(88,88,88); /*** Active color for Lists, Menu, Borders ... * Default: rgb(35,99,166) ***/
+@define-color text-hl-color rgb(210,210,210); /*** Active text color * Default: rgb(210,210,210) ***/
+
+@define-color bg-highlighted-text-color rgb(35,99,166); /*** Highlighted text color background* Default: rgb(35,99,166) ***/
+@define-color highlighted-text-color rgb(210,210,210); /*** Highlighted text color * Default: rgb(210,210,210) ***/
+
+@define-color bg-image rgb(75,75,75); /*** Image area & File Browser background * Default: rgb(70,70,70) ***/
+
+@define-color accent-color2 rgb(35,99,166); /*** Scale, Progressbar, Scrollbar, Tabs * Default: rgb(35,99,166) ***/
+@define-color accent-color4 rgb(115,115,115); /*** Slider knob * Default: rgb(115,115,115) ***/
+
+@define-color accent-color3 rgb(40,40,40); /*** Selected thumbnail background color * Default: rgb(35,99,166) ***/
+@define-color text-hl-color3 rgb(210,210,210); /*** Selected thumbnail text color * Default: rgb(210,210,210) ***/
+
+/*** Change me end *****************************************************************************/
+
+@define-color bg-light-grey rgb(95,95,95);
+@define-color bg-grey rgb(75,75,75);
+@define-color bg-dark-grey rgb(40,40,40);
+
+@define-color bg-button-hover rgba(0,0,0,.25);
+@define-color bg-button-active rgba(0,0,0,.60);
+
+@define-color winHeaderbar rgb(55,55,55);
+@define-color winTitle rgb(190,190,190);
+
+@define-color bg-tooltip rgb(185,185,185);
+@define-color border-tooltip rgb(40,40,40);
+@define-color text-tooltip rgb(40,40,40);
+/***********************************************/
+@define-color text-color rgb(186,186,186);
+@define-color text-tbEntry rgb(192,192,192);
+@define-color border-color rgba(255,255,255,.30);
+@define-color bg-list-hover rgb(50,50,50);
+@define-color bg-scale-entry rgba(0,0,0,.14);
+@define-color bg-button-border rgba(0,0,0,.60);
+@define-color bg-entry-border rgba(0,0,0,.40);
+@define-color view-grid-border rgba(255,255,255,0.15);
+@define-color headline-big rgb(195,195,195);
+@define-color headline-hl rgb(230,230,230);
+@define-color headline-frame rgb(215,215,215);
+/*** New Color Variable v2.53 ************************************************************************/
+@define-color fg-disabled rgb(128,128,128);
+@define-color bg-tb-spinbutton shade(@bg-grey, 1.33);
+/***********************************************************************************************/
diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt
index ff3024beb..74497d7d0 100644
--- a/rtengine/CMakeLists.txt
+++ b/rtengine/CMakeLists.txt
@@ -32,6 +32,7 @@ set(RTENGINESOURCEFILES
EdgePreservingDecomposition.cc
FTblockDN.cc
PF_correct_RT.cc
+ ahd_demosaic_RT.cc
amaze_demosaic_RT.cc
cJSON.c
calc_distort.cc
diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc
index cfb237d82..0e5cd58a2 100644
--- a/rtengine/FTblockDN.cc
+++ b/rtengine/FTblockDN.cc
@@ -547,7 +547,7 @@ BENCHFUN
if (useNoiseLCurve || useNoiseCCurve) {
int hei = calclum->getHeight();
int wid = calclum->getWidth();
- TMatrix wprofi = ICCStore::getInstance()->workingSpaceMatrix(params->icm.working);
+ TMatrix wprofi = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile);
const float wpi[3][3] = {
{static_cast(wprofi[0][0]), static_cast(wprofi[0][1]), static_cast(wprofi[0][2])},
@@ -815,7 +815,7 @@ BENCHFUN
}
}
- TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix(params->icm.working);
+ TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix(params->icm.workingProfile);
//inverse matrix user select
const float wip[3][3] = {
{static_cast(wiprof[0][0]), static_cast(wiprof[0][1]), static_cast(wiprof[0][2])},
@@ -823,7 +823,7 @@ BENCHFUN
{static_cast(wiprof[2][0]), static_cast(wiprof[2][1]), static_cast(wiprof[2][2])}
};
- TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.working);
+ TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile);
const float wp[3][3] = {
{static_cast(wprof[0][0]), static_cast(wprof[0][1]), static_cast(wprof[0][2])},
@@ -3166,7 +3166,7 @@ void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc,
float** bcalc;
hei = provicalc->getHeight();
wid = provicalc->getWidth();
- TMatrix wprofi = ICCStore::getInstance()->workingSpaceMatrix(params->icm.working);
+ TMatrix wprofi = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile);
const float wpi[3][3] = {
{static_cast(wprofi[0][0]), static_cast(wprofi[0][1]), static_cast(wprofi[0][2])},
@@ -3241,7 +3241,7 @@ void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc,
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.working);
+ TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile);
const float wp[3][3] = {
{static_cast(wprof[0][0]), static_cast(wprof[0][1]), static_cast(wprof[0][2])},
{static_cast(wprof[1][0]), static_cast(wprof[1][1]), static_cast(wprof[1][2])},
diff --git a/rtengine/ahd_demosaic_RT.cc b/rtengine/ahd_demosaic_RT.cc
new file mode 100644
index 000000000..7931bf17d
--- /dev/null
+++ b/rtengine/ahd_demosaic_RT.cc
@@ -0,0 +1,226 @@
+/*
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2018 Ingo Weyrich (heckflosse67@gmx.de)
+ *
+ * RawTherapee is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RawTherapee is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with RawTherapee. If not, see .
+ */
+
+//
+// Adaptive Homogeneity-Directed interpolation is based on
+// the work of Keigo Hirakawa, Thomas Parks, and Paul Lee.
+// Optimized for speed and reduced memory usage 2018 Ingo Weyrich
+//
+
+#include
+#include "rtengine.h"
+#include "rawimagesource.h"
+#include "rt_math.h"
+#include "../rtgui/multilangmgr.h"
+#include "median.h"
+//#define BENCHMARK
+#include "StopWatch.h"
+
+namespace rtengine
+{
+#define TS 144
+void RawImageSource::ahd_demosaic()
+{
+ BENCHFUN
+
+ constexpr int dir[4] = { -1, 1, -TS, TS };
+ float xyz_cam[3][3];
+ LUTf cbrt(65536);
+
+ int width = W, height = H;
+
+ constexpr double xyz_rgb[3][3] = { /* XYZ from RGB */
+ { 0.412453, 0.357580, 0.180423 },
+ { 0.212671, 0.715160, 0.072169 },
+ { 0.019334, 0.119193, 0.950227 }
+ };
+
+ constexpr float d65_white[3] = { 0.950456, 1, 1.088754 };
+
+ double progress = 0.0;
+ if (plistener) {
+ plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AHD)));
+ plistener->setProgress (0.0);
+ }
+
+ for (int i = 0; i < 65536; i++) {
+ const double r = i / 65535.0;
+ cbrt[i] = r > 0.008856 ? std::cbrt(r) : 7.787 * r + 16 / 116.0;
+ }
+
+ for (int i = 0; i < 3; i++)
+ for (unsigned int j = 0; j < 3; j++) {
+ xyz_cam[i][j] = 0;
+ for (int k = 0; k < 3; k++) {
+ xyz_cam[i][j] += xyz_rgb[i][k] * imatrices.rgb_cam[k][j] / d65_white[i];
+ }
+ }
+
+ border_interpolate2(W, H, 5, rawData, red, green, blue);
+
+#ifdef _OPENMP
+#pragma omp parallel
+#endif
+{
+ int progresscounter = 0;
+ float *buffer = new float[13 * TS * TS]; /* 1053 kB per core */
+ auto rgb = (float(*)[TS][TS][3]) buffer;
+ auto lab = (float(*)[TS][TS][3])(buffer + 6 * TS * TS);
+ auto homo = (uint16_t(*)[TS][TS])(buffer + 12 * TS * TS);
+
+#ifdef _OPENMP
+ #pragma omp for collapse(2) schedule(dynamic) nowait
+#endif
+ for (int top = 2; top < height - 5; top += TS - 6) {
+ for (int left = 2; left < width - 5; left += TS - 6) {
+ // Interpolate green horizontally and vertically:
+ for (int row = top; row < top + TS && row < height - 2; row++) {
+ for (int col = left + (FC(row, left) & 1); col < std::min(left + TS, width - 2); col += 2) {
+ auto pix = &rawData[row][col];
+ float val0 = 0.25f * ((pix[-1] + pix[0] + pix[1]) * 2
+ - pix[-2] - pix[2]) ;
+ rgb[0][row - top][col - left][1] = median(val0, pix[-1], pix[1]);
+ float val1 = 0.25f * ((pix[-width] + pix[0] + pix[width]) * 2
+ - pix[-2 * width] - pix[2 * width]) ;
+ rgb[1][row - top][col - left][1] = median(val1, pix[-width], pix[width]);
+ }
+ }
+
+ // Interpolate red and blue, and convert to CIELab:
+ for (int d = 0; d < 2; d++)
+ for (int row = top + 1; row < top + TS - 1 && row < height - 3; row++) {
+ int cng = FC(row + 1, FC(row + 1, 0) & 1);
+ for (int col = left + 1; col < std::min(left + TS - 1, width - 3); col++) {
+ auto pix = &rawData[row][col];
+ auto rix = &rgb[d][row - top][col - left];
+ auto lix = lab[d][row - top][col - left];
+ if (FC(row, col) == 1) {
+ rix[0][2 - cng] = CLIP(pix[0] + (0.5f * (pix[-1] + pix[1]
+ - rix[-1][1] - rix[1][1] ) ));
+ rix[0][cng] = CLIP(pix[0] + (0.5f * (pix[-width] + pix[width]
+ - rix[-TS][1] - rix[TS][1])));
+ rix[0][1] = pix[0];
+ } else {
+ rix[0][cng] = CLIP(rix[0][1] + (0.25f * (pix[-width - 1] + pix[-width + 1]
+ + pix[+width - 1] + pix[+width + 1]
+ - rix[-TS - 1][1] - rix[-TS + 1][1]
+ - rix[+TS - 1][1] - rix[+TS + 1][1])));
+ rix[0][2 - cng] = pix[0];
+ }
+ float xyz[3] = {};
+
+ for(unsigned int c = 0; c < 3; ++c) {
+ xyz[0] += xyz_cam[0][c] * rix[0][c];
+ xyz[1] += xyz_cam[1][c] * rix[0][c];
+ xyz[2] += xyz_cam[2][c] * rix[0][c];
+ }
+
+ xyz[0] = cbrt[xyz[0]];
+ xyz[1] = cbrt[xyz[1]];
+ xyz[2] = cbrt[xyz[2]];
+
+ lix[0] = 116.f * xyz[1] - 16.f;
+ lix[1] = 500.f * (xyz[0] - xyz[1]);
+ lix[2] = 200.f * (xyz[1] - xyz[2]);
+ }
+ }
+
+ // Build homogeneity maps from the CIELab images:
+
+ for (int row = top + 2; row < top + TS - 2 && row < height - 4; row++) {
+ int tr = row - top;
+ float ldiff[2][4], abdiff[2][4];
+
+ for (int col = left + 2, tc = 2; col < left + TS - 2 && col < width - 4; col++, tc++) {
+ for (int d = 0; d < 2; d++) {
+ auto lix = &lab[d][tr][tc];
+
+ for (int i = 0; i < 4; i++) {
+ ldiff[d][i] = std::fabs(lix[0][0] - lix[dir[i]][0]);
+ abdiff[d][i] = SQR(lix[0][1] - lix[dir[i]][1])
+ + SQR(lix[0][2] - lix[dir[i]][2]);
+ }
+ }
+
+ float leps = std::min(std::max(ldiff[0][0], ldiff[0][1]),
+ std::max(ldiff[1][2], ldiff[1][3]));
+ float abeps = std::min(std::max(abdiff[0][0], abdiff[0][1]),
+ std::max(abdiff[1][2], abdiff[1][3]));
+
+ for (int d = 0; d < 2; d++) {
+ homo[d][tr][tc] = 0;
+ for (int i = 0; i < 4; i++) {
+ homo[d][tr][tc] += (ldiff[d][i] <= leps) * (abdiff[d][i] <= abeps);
+ }
+ }
+ }
+ }
+
+ // Combine the most homogenous pixels for the final result:
+ for (int row = top + 3; row < top + TS - 3 && row < height - 5; row++) {
+ int tr = row - top;
+
+ for (int col = left + 3, tc = 3; col < std::min(left + TS - 3, width - 5); col++, tc++) {
+ uint16_t hm0 = 0, hm1 = 0;
+ for (int i = tr - 1; i <= tr + 1; i++)
+ for (int j = tc - 1; j <= tc + 1; j++) {
+ hm0 += homo[0][i][j];
+ hm1 += homo[1][i][j];
+ }
+
+ if (hm0 != hm1) {
+ int dir = hm1 > hm0;
+ red[row][col] = rgb[dir][tr][tc][0];
+ green[row][col] = rgb[dir][tr][tc][1];
+ blue[row][col] = rgb[dir][tr][tc][2];
+ } else {
+ red[row][col] = 0.5f * (rgb[0][tr][tc][0] + rgb[1][tr][tc][0]);
+ green[row][col] = 0.5f * (rgb[0][tr][tc][1] + rgb[1][tr][tc][1]);
+ blue[row][col] = 0.5f * (rgb[0][tr][tc][2] + rgb[1][tr][tc][2]);
+ }
+ }
+ }
+
+ if(plistener) {
+ progresscounter++;
+
+ if(progresscounter % 32 == 0) {
+#ifdef _OPENMP
+ #pragma omp critical (ahdprogress)
+#endif
+ {
+ progress += 32.0 * SQR(TS - 6) / (height * width);
+ progress = std::min(progress, 1.0);
+ plistener->setProgress(progress);
+ }
+ }
+ }
+
+ }
+ }
+ delete [] buffer;
+}
+ if(plistener) {
+ plistener->setProgress (1.0);
+ }
+
+}
+#undef TS
+
+}
\ No newline at end of file
diff --git a/rtengine/cJSON.c b/rtengine/cJSON.c
index 7e71ea9e8..fb8ce27e8 100644
--- a/rtengine/cJSON.c
+++ b/rtengine/cJSON.c
@@ -505,7 +505,7 @@ static cJSON_bool print_number(const cJSON * const item, printbuffer * const out
}
}
- /* sprintf failed or buffer overrun occured */
+ /* sprintf failed or buffer overrun occurred */
if ((length < 0) || (length > (int)(sizeof(number_buffer) - 1)))
{
return false;
@@ -1556,7 +1556,7 @@ static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_bu
buffer_skip_whitespace(input_buffer);
if (!parse_string(current_item, input_buffer))
{
- goto fail; /* faile to parse name */
+ goto fail; /* failed to parse name */
}
buffer_skip_whitespace(input_buffer);
diff --git a/rtengine/cJSON.h b/rtengine/cJSON.h
index a9c68fa2c..786dd2e0e 100644
--- a/rtengine/cJSON.h
+++ b/rtengine/cJSON.h
@@ -217,7 +217,7 @@ CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJ
CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
-/* Remove/Detatch items from Arrays/Objects. */
+/* Remove/Detach items from Arrays/Objects. */
CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item);
CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which);
CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
diff --git a/rtengine/camconst.json b/rtengine/camconst.json
index 449484e8a..23d3f4df6 100644
--- a/rtengine/camconst.json
+++ b/rtengine/camconst.json
@@ -660,7 +660,7 @@ Camera constants:
}
},
- { // Quality A, ISO and aperture WL data copyed from Shalrath's 60D data at RawTherapee forums
+ { // Quality A, ISO and aperture WL data copied from Shalrath's 60D data at RawTherapee forums
"make_model": "Canon EOS 60Da",
"dcraw_matrix": [ 17492,-7240,-2023,-1791,10323,1701,-186,1329,5406 ], // 60Da dng d65
"ranges": {
@@ -912,7 +912,7 @@ Camera constants:
}
},
- { // Quality C, white levels and apperture scaling copied from Canon EOS77d
+ { // Quality C, white levels and aperture scaling copied from Canon EOS77d
"make_model": [ "Canon EOS Rebel T7i", "Canon EOS 800D", "Canon EOS Kiss X9i" ],
"dcraw_matrix": [ 6970,-512,-968,-4425,12161,2553,-739,1982,5601 ], // DNG_V9.10.1 D65
"raw_crop": [ 264, 36, 6024, 4020 ], // full size 6288x4056, official crop 276,48,6275,4047
@@ -944,7 +944,7 @@ Camera constants:
}
},
- { // Quality B, apperture scaling copied from Canon EOS77d
+ { // Quality B, aperture scaling copied from Canon EOS77d
"make_model": [ "Canon EOS Rebel SL2", "Canon EOS 200D", "Canon EOS Kiss X9" ],
"dcraw_matrix": [ 7377,-742,-998,-4235,11981,2549,-673,1918,5538 ], // DNG_V9.12 D65
"raw_crop": [ 264, 36, 6024, 4020 ], // full size 6288x4056, official crop 276,48,6275,4047
diff --git a/rtengine/clutstore.cc b/rtengine/clutstore.cc
index 4124e38bb..87ce25d97 100644
--- a/rtengine/clutstore.cc
+++ b/rtengine/clutstore.cc
@@ -50,7 +50,7 @@ bool loadFile(
const PreviewProps pp(0, 0, fw, fh, 1);
rtengine::procparams::ColorManagementParams icm;
- icm.working = working_color_space;
+ icm.workingProfile = working_color_space;
img_src.getImage(curr_wb, TR_NONE, img_float.get(), pp, rtengine::procparams::ToneCurveParams(), rtengine::procparams::RAWParams());
diff --git a/rtengine/color.cc b/rtengine/color.cc
index 3cedcaaa6..599aceaa1 100644
--- a/rtengine/color.cc
+++ b/rtengine/color.cc
@@ -190,7 +190,6 @@ void Color::init ()
{
gammatab_srgb[i] = gammatab_srgb1[i] = gamma2(i / 65535.0);
}
-
gammatab_srgb *= 65535.f;
gamma2curve.share(gammatab_srgb, LUT_CLIP_BELOW | LUT_CLIP_ABOVE); // shares the buffer with gammatab_srgb but has different clip flags
}
@@ -394,7 +393,7 @@ void Color::rgb2lab01 (const Glib::ustring &profile, const Glib::ustring &profil
r = pow_F(r, 1.8f);
g = pow_F(g, 1.8f);
b = pow_F(b, 1.8f);
- } else if (profile == "Rec2020") {
+ } else if (profileW == "Rec2020") {
if (r > 0.0795f) {
r = pow_F(((r + 0.0954f) / 1.0954f), 2.2f);
} else {
@@ -418,17 +417,17 @@ void Color::rgb2lab01 (const Glib::ustring &profile, const Glib::ustring &profil
b = pow_F(b, 2.2f);
}
} else { //display output profile
- if (profile == "RT_sRGB" || profile == "RT_sRGB_gBT709" || profile == "RT_sRGB_g10") {
+ if (profile == settings->srgb) {
// use default "sRGB"
- } else if (profile == "ProPhoto" || profile == "RT_Large_gBT709" || profile == "RT_Large_g10" || profile == "RT_Large_gsRGB") {
+ } else if (profile == "ProPhoto" || profile == settings->prophoto) {
profileCalc = "ProPhoto";
- } else if (profile == "AdobeRGB1998" || profile == "RT_Medium_gsRGB") {
+ } else if (profile == "AdobeRGB1998" || profile == settings->adobe) {
profileCalc = "Adobe RGB";
- } else if (profile == "WideGamutRGB") {
+ } else if (profile == settings->widegamut) {
profileCalc = "WideGamut";
}
- if (profile == "RT_sRGB" || profile == "RT_Large_gsRGB" || profile == "RT_Medium_gsRGB") { //apply sRGB inverse gamma
+ if (profile == settings->srgb || profile == settings->adobe) { //apply sRGB inverse gamma
if (r > 0.04045f) {
r = pow_F(((r + 0.055f) / 1.055f), rtengine::Color::sRGBGammaCurve);
} else {
@@ -446,7 +445,7 @@ void Color::rgb2lab01 (const Glib::ustring &profile, const Glib::ustring &profil
} else {
b /= 12.92f;
}
- } else if (profile == "RT_sRGB_gBT709" || profile == "RT_Large_gBT709" || profile == "Rec2020") {
+ } else if (profile == settings->prophoto || profile == settings->rec2020) {
if (r > 0.0795f) {
r = pow_F(((r + 0.0954f) / 1.0954f), 2.2f);
} else {
@@ -470,9 +469,6 @@ void Color::rgb2lab01 (const Glib::ustring &profile, const Glib::ustring &profil
r = pow_F(r, 1.8f);
g = pow_F(g, 1.8f);
b = pow_F(b, 1.8f);
- } else if (profile == "RT_sRGB_g10" || profile == "RT_Large_g10") {
- // gamma 1.0, do nothing
-
} else {// apply inverse gamma 2.2
r = pow_F(r, 2.2f);
@@ -1594,7 +1590,7 @@ void Color::calcGamma (double pwr, double ts, int mode, GammaValues &gamma)
bnd[g[1] >= 1.] = 1.;
if (g[1] && (g[1] - 1.) * (g[0] - 1.) <= 0.) {
- for (i = 0; i < 48; i++) {
+ for (i = 0; i < 99; i++) {
g[2] = (bnd[0] + bnd[1]) / 2.;
if (g[0]) {
diff --git a/rtengine/color.h b/rtengine/color.h
index 3310f6fa6..33c170a69 100644
--- a/rtengine/color.h
+++ b/rtengine/color.h
@@ -1074,25 +1074,35 @@ public:
/**
* @brief sRGB gamma
- * See also calcGamma above with the following values: pwr=2.4 ts=12.92 mode=0.003041 imax=0.055011
+ * See also calcGamma above with the following values: pwr=2.399 ts=12.92310 mode=0.003041 imax=0.055
* @param x red, green or blue channel's value [0 ; 1]
* @return the gamma modified's value [0 ; 1]
*/
static inline double gamma2 (double x) // g3 1+g4
{
- return x <= 0.003041 ? x * 12.92 : 1.055011 * exp(log(x) / sRGBGammaCurve) - 0.055011;
+ // return x <= 0.003041 ? x * 12.92310 : 1.055 * exp(log(x) / 2.39990) - 0.055;//calculate with calcgamma
+ //return x <= 0.0031308 ? x * 12.92310 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055;//standard discontinuous
+ //very small differences between the 2
+ return x <= 0.003040 ? x * 12.92310 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055;//continuous
+ // return x <= 0.003041 ? x * 12.92310 : 1.055011 * exp(log(x) / sRGBGammaCurve) - 0.055011;//continuous
+
}
/**
* @brief Inverse sRGB gamma
- * See also calcGamma above with the following values: pwr=2.4 ts=12.92 mode=0.003041 imax=0.055011
+ * See also calcGamma above with the following values: pwr=2.3999 ts=12.92310 mode=0.003041 imax=0.055
* @param x red, green or blue channel's value [0 ; 1]
* @return the inverse gamma modified's value [0 ; 1]
*/
static inline double igamma2 (double x) //g2
{
- return x <= 0.039293 ? x / 12.92 : exp(log((x + 0.055011) / 1.055011) * sRGBGammaCurve);
+ // return x <= 0.039289 ? x / 12.92310 : exp(log((x + 0.055) / 1.055) * 2.39990);//calculate with calcgamma
+ // return x <= 0.04045 ? x / 12.92310 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve);//standard discontinuous
+ //very small differences between the 4
+ return x <= 0.039286 ? x / 12.92310 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve);//continuous
+ // return x <= 0.039293 ? x / 12.92310 : exp(log((x + 0.055011) / 1.055011) * sRGBGammaCurve);//continuous
+
}
diff --git a/rtengine/colortemp.cc b/rtengine/colortemp.cc
index 75b32c83c..a7a769d93 100644
--- a/rtengine/colortemp.cc
+++ b/rtengine/colortemp.cc
@@ -1102,7 +1102,7 @@ void ColorTemp::temp2mul (double temp, double green, double equal, double& rmul,
// only for lamp different of tungstene
// first calcul with illuminant (choice)
// and calcul with : blackbody at equivalent temp of lamp
- // CRI_color-1 = dispaly Lab values of color CRI_color -1
+ // CRI_color-1 = display Lab values of color CRI_color -1
const double whiteD50[3] = {0.9646019585, 1.0, 0.8244507152}; //calculate with this tool : spect 5nm
double CAM02BB00, CAM02BB01, CAM02BB02, CAM02BB10, CAM02BB11, CAM02BB12, CAM02BB20, CAM02BB21, CAM02BB22; //for CIECAT02
double Xchk[50], Ychk[50], Zchk[50]; //50 : I think it's a good limit for number of color : for CRI and Palette
diff --git a/rtengine/curves.h b/rtengine/curves.h
index 635c21da9..98934f13a 100644
--- a/rtengine/curves.h
+++ b/rtengine/curves.h
@@ -267,19 +267,19 @@ public:
// standard srgb gamma and its inverse
static inline double gamma2 (double x)
{
- return x <= 0.00304 ? x * 12.92 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055;
+ return x <= 0.00304 ? x * 12.92310 : 1.055 * exp(log(x) / sRGBGammaCurve) - 0.055;
}
static inline double igamma2 (double x)
{
- return x <= 0.03928 ? x / 12.92 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve);
+ return x <= 0.03928 ? x / 12.92310 : exp(log((x + 0.055) / 1.055) * sRGBGammaCurve);
}
static inline float gamma2 (float x)
{
- return x <= 0.00304 ? x * 12.92 : 1.055 * expf(logf(x) / sRGBGammaCurve) - 0.055;
+ return x <= 0.00304 ? x * 12.92310 : 1.055 * expf(logf(x) / sRGBGammaCurve) - 0.055;
}
static inline float igamma2 (float x)
{
- return x <= 0.03928 ? x / 12.92 : expf(logf((x + 0.055) / 1.055) * sRGBGammaCurve);
+ return x <= 0.03928 ? x / 12.92310 : expf(logf((x + 0.055) / 1.055) * sRGBGammaCurve);
}
// gamma function with adjustable parameters
static inline double gamma (double x, double gamma, double start, double slope, double mul, double add)
diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc
index 227efe6b9..b76484df5 100644
--- a/rtengine/dcraw.cc
+++ b/rtengine/dcraw.cc
@@ -2896,7 +2896,7 @@ void CLASS lossy_dng_load_raw()
}
order = sorder;
} else {
- gamma_curve (1/2.4, 12.92, 1, 255);
+ gamma_curve (1/2.4, 12.92310, 1, 255);
FORC3 memcpy (cur[c], curve, sizeof cur[0]);
}
cinfo.err = jpeg_std_error (&jerr);
@@ -6608,7 +6608,7 @@ void CLASS apply_tiff()
if (model[0] == 'N') load_flags = 80;
} else if (raw_width*raw_height*3 == tiff_ifd[raw].bytes) {
load_raw = &CLASS nikon_yuv_load_raw;
- gamma_curve (1/2.4, 12.92, 1, 4095);
+ gamma_curve (1/2.4, 12.92310, 1, 4095);
memset (cblack, 0, sizeof cblack);
filters = 0;
} else if (raw_width*raw_height*2 == tiff_ifd[raw].bytes) {
@@ -8792,16 +8792,16 @@ void CLASS identify()
colors = 3;
for (i=0; i < 0x10000; i++) curve[i] = i;
+ flen = fsize = ifp->size;
+ /*RT*/ if (fsize<100000 || fsize > 0x7fffffff) {
+ is_raw = 0;
+ return;
+ }
+
order = get2();
hlen = get4();
fseek (ifp, 0, SEEK_SET);
fread (head, 1, 32, ifp);
- fseek (ifp, 0, SEEK_END);
- flen = fsize = ftell(ifp);
- /*RT*/ if (fsize<100000) {
- is_raw = 0;
- return;
- }
/* RT: changed string constant */
if ((cp = (char *) memmem (head, 32, (char*)"MMMM", 4)) ||
(cp = (char *) memmem (head, 32, (char*)"IIII", 4))) {
@@ -8920,7 +8920,7 @@ void CLASS identify()
strcpy (model,"One");
parse_redcine();
load_raw = &CLASS redcine_load_raw;
- gamma_curve (1/2.4, 12.92, 1, 4095);
+ gamma_curve (1/2.4, 12.92310, 1, 4095);
filters = 0x49494949;
} else if (!memcmp (head,"DSC-Image",9))
parse_rollei();
@@ -10043,29 +10043,6 @@ static void expandFloats(Bytef * dst, int tileWidth, int bytesps) {
}
}
-static void copyFloatDataToInt(float * src, ushort * dst, size_t size, float max) {
- bool negative = false, nan = false;
-
-#ifdef _OPENMP
-#pragma omp parallel for
-#endif
- for (size_t i = 0; i < size; ++i) {
- if (src[i] < 0.0f) {
- negative = true;
- src[i] = 0.0f;
- } else if (std::isnan(src[i])) {
- nan = true;
- src[i] = max;
- }
- // Copy the data to the integer buffer to build the thumbnail
- dst[i] = (ushort)src[i];
- }
- if (negative)
- fprintf(stderr, "DNG Float: Negative data found in input file\n");
- if (nan)
- fprintf(stderr, "DNG Float: NaN data found in input file\n");
-}
-
static int decompress(size_t srcLen, size_t dstLen, unsigned char *in, unsigned char *out) {
// At least in zlib 1.2.11 the uncompress function is not thread save while it is thread save in zlib 1.2.8
// This simple replacement is thread save. Used example code from https://zlib.net/zlib_how.html
@@ -10207,9 +10184,6 @@ void CLASS deflate_dng_load_raw() {
}
}
- if (ifd->sample_format == 3) { // Floating point data
- copyFloatDataToInt(float_raw_image, raw_image, raw_width*raw_height, maximum);
- }
}
/* RT: removed unused functions */
diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc
index 99aeccbe8..0b5198c3c 100644
--- a/rtengine/dcrop.cc
+++ b/rtengine/dcrop.cc
@@ -28,9 +28,9 @@ namespace
// "ceil" rounding
template
-constexpr T skips (T a, T b)
+constexpr T skips(T a, T b)
{
- return a / b + static_cast (a % b);
+ return a / b + static_cast(a % b);
}
}
@@ -40,47 +40,47 @@ namespace rtengine
extern const Settings* settings;
-Crop::Crop (ImProcCoordinator* parent, EditDataProvider *editDataProvider, bool isDetailWindow)
- : PipetteBuffer (editDataProvider), origCrop (nullptr), laboCrop (nullptr), labnCrop (nullptr),
+Crop::Crop(ImProcCoordinator* parent, EditDataProvider *editDataProvider, bool isDetailWindow)
+ : PipetteBuffer(editDataProvider), origCrop(nullptr), laboCrop(nullptr), labnCrop(nullptr),
cropImg (nullptr), transCrop (nullptr), cieCrop (nullptr),
- updating (false), newUpdatePending (false), skip (10),
- cropx (0), cropy (0), cropw (-1), croph (-1),
- trafx (0), trafy (0), trafw (-1), trafh (-1),
- rqcropx (0), rqcropy (0), rqcropw (-1), rqcroph (-1),
- borderRequested (32), upperBorder (0), leftBorder (0),
- cropAllocated (false),
- cropImageListener (nullptr), parent (parent), isDetailWindow (isDetailWindow)
+ updating(false), newUpdatePending(false), skip(10),
+ cropx(0), cropy(0), cropw(-1), croph(-1),
+ trafx(0), trafy(0), trafw(-1), trafh(-1),
+ rqcropx(0), rqcropy(0), rqcropw(-1), rqcroph(-1),
+ borderRequested(32), upperBorder(0), leftBorder(0),
+ cropAllocated(false),
+ cropImageListener(nullptr), parent(parent), isDetailWindow(isDetailWindow)
{
- parent->crops.push_back (this);
+ parent->crops.push_back(this);
}
-Crop::~Crop ()
+Crop::~Crop()
{
- MyMutex::MyLock cropLock (cropMutex);
+ MyMutex::MyLock cropLock(cropMutex);
- std::vector::iterator i = std::find (parent->crops.begin(), parent->crops.end(), this);
+ std::vector::iterator i = std::find(parent->crops.begin(), parent->crops.end(), this);
- if (i != parent->crops.end ()) {
- parent->crops.erase (i);
+ if (i != parent->crops.end()) {
+ parent->crops.erase(i);
}
- MyMutex::MyLock processingLock (parent->mProcessing);
- freeAll ();
-}
-
-void Crop::destroy ()
-{
- MyMutex::MyLock lock (cropMutex);
- MyMutex::MyLock processingLock (parent->mProcessing);
+ MyMutex::MyLock processingLock(parent->mProcessing);
freeAll();
}
-void Crop::setListener (DetailedCropListener* il)
+void Crop::destroy()
+{
+ MyMutex::MyLock lock(cropMutex);
+ MyMutex::MyLock processingLock(parent->mProcessing);
+ freeAll();
+}
+
+void Crop::setListener(DetailedCropListener* il)
{
// We can make reads in the IF, because the mProcessing lock is only needed for change
if (cropImageListener != il) {
- MyMutex::MyLock lock (cropMutex);
+ MyMutex::MyLock lock(cropMutex);
cropImageListener = il;
}
}
@@ -95,9 +95,9 @@ EditUniqueID Crop::getCurrEditID()
* Delete the edit image buffer if there's no subscriber anymore.
* If allocation has to be done, it is deferred to Crop::update
*/
-void Crop::setEditSubscriber (EditSubscriber* newSubscriber)
+void Crop::setEditSubscriber(EditSubscriber* newSubscriber)
{
- MyMutex::MyLock lock (cropMutex);
+ MyMutex::MyLock lock(cropMutex);
// At this point, editCrop.dataProvider->currSubscriber is the old subscriber
EditSubscriber *oldSubscriber = PipetteBuffer::dataProvider ? PipetteBuffer::dataProvider->getCurrSubscriber() : nullptr;
@@ -123,13 +123,13 @@ void Crop::setEditSubscriber (EditSubscriber* newSubscriber)
bool Crop::hasListener()
{
- MyMutex::MyLock cropLock (cropMutex);
+ MyMutex::MyLock cropLock(cropMutex);
return cropImageListener;
}
-void Crop::update (int todo)
+void Crop::update(int todo)
{
- MyMutex::MyLock cropLock (cropMutex);
+ MyMutex::MyLock cropLock(cropMutex);
ProcParams& params = parent->params;
// CropGUIListener* cropgl;
@@ -142,16 +142,16 @@ void Crop::update (int todo)
bool overrideWindow = false;
if (cropImageListener) {
- overrideWindow = cropImageListener->getWindow (wx, wy, ww, wh, ws);
+ overrideWindow = cropImageListener->getWindow(wx, wy, ww, wh, ws);
}
// re-allocate sub-images and arrays if their dimensions changed
bool needsinitupdate = false;
if (!overrideWindow) {
- needsinitupdate = setCropSizes (rqcropx, rqcropy, rqcropw, rqcroph, skip, true);
+ needsinitupdate = setCropSizes(rqcropx, rqcropy, rqcropw, rqcroph, skip, true);
} else {
- needsinitupdate = setCropSizes (wx, wy, ww, wh, ws, true); // this set skip=ws
+ needsinitupdate = setCropSizes(wx, wy, ww, wh, ws, true); // this set skip=ws
}
// it something has been reallocated, all processing steps have to be performed
@@ -160,7 +160,7 @@ void Crop::update (int todo)
}
// Tells to the ImProcFunctions' tool what is the preview scale, which may lead to some simplifications
- parent->ipf.setScale (skip);
+ parent->ipf.setScale(skip);
Imagefloat* baseCrop = origCrop;
int widIm = parent->fw;//full image
@@ -169,12 +169,12 @@ void Crop::update (int todo)
bool needstransform = parent->ipf.needsTransform();
if (todo & (M_INIT | M_LINDENOISE | M_HDR)) {
- MyMutex::MyLock lock (parent->minit); // Also used in improccoord
+ MyMutex::MyLock lock(parent->minit); // Also used in improccoord
- int tr = getCoarseBitMask (params.coarse);
+ int tr = getCoarseBitMask(params.coarse);
if (!needsinitupdate) {
- setCropSizes (rqcropx, rqcropy, rqcropw, rqcroph, skip, true);
+ setCropSizes(rqcropx, rqcropy, rqcropw, rqcroph, skip, true);
}
// printf("x=%d y=%d crow=%d croh=%d skip=%d\n",rqcropx, rqcropy, rqcropw, rqcroph, skip);
@@ -186,7 +186,7 @@ void Crop::update (int todo)
float autoNR = (float) settings->nrauto;//
float autoNRmax = (float) settings->nrautomax;//
- params.dirpyrDenoise.getCurves (noiseLCurve, noiseCCurve);
+ params.dirpyrDenoise.getCurves(noiseLCurve, noiseCCurve);
int tilesize;
int overlap;
@@ -204,7 +204,7 @@ void Crop::update (int todo)
int numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip;
int kall = 2;
- parent->ipf.Tile_calc (tilesize, overlap, kall, widIm, heiIm, numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip);
+ parent->ipf.Tile_calc(tilesize, overlap, kall, widIm, heiIm, numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip);
kall = 0;
float *min_b = new float [9];
@@ -226,20 +226,20 @@ void Crop::update (int todo)
}
if (settings->leveldnautsimpl == 1) {
- if (params.dirpyrDenoise.Cmethod == "MAN" || params.dirpyrDenoise.Cmethod == "PON" ) {
- PreviewProps pp (trafx, trafy, trafw * skip, trafh * skip, skip);
- parent->imgsrc->getImage (parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw );
+ if (params.dirpyrDenoise.Cmethod == "MAN" || params.dirpyrDenoise.Cmethod == "PON") {
+ PreviewProps pp(trafx, trafy, trafw * skip, trafh * skip, skip);
+ parent->imgsrc->getImage(parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw);
}
} else {
if (params.dirpyrDenoise.C2method == "MANU") {
- PreviewProps pp (trafx, trafy, trafw * skip, trafh * skip, skip);
- parent->imgsrc->getImage (parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw );
+ PreviewProps pp(trafx, trafy, trafw * skip, trafh * skip, skip);
+ parent->imgsrc->getImage(parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw);
}
}
if ((settings->leveldnautsimpl == 1 && params.dirpyrDenoise.Cmethod == "PRE") || (settings->leveldnautsimpl == 0 && params.dirpyrDenoise.C2method == "PREV")) {
- PreviewProps pp (trafx, trafy, trafw * skip, trafh * skip, skip);
- parent->imgsrc->getImage (parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw );
+ PreviewProps pp(trafx, trafy, trafw * skip, trafh * skip, skip);
+ parent->imgsrc->getImage(parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw);
if ((!isDetailWindow) && parent->adnListener && skip == 1 && params.dirpyrDenoise.enabled) {
float lowdenoise = 1.f;
@@ -257,15 +257,15 @@ void Crop::update (int todo)
int poscenterY = 0;
for (int cc = 0; cc < numtiles_W; cc++) {
- if (abs (centerTile_X[cc] - CenterPreview_X) < minimuX) {
- minimuX = abs (centerTile_X[cc] - CenterPreview_X);
+ if (abs(centerTile_X[cc] - CenterPreview_X) < minimuX) {
+ minimuX = abs(centerTile_X[cc] - CenterPreview_X);
poscenterX = cc;
}
}
for (int cc = 0; cc < numtiles_H; cc++) {
- if (abs (centerTile_Y[cc] - CenterPreview_Y) < minimuY) {
- minimuY = abs (centerTile_Y[cc] - CenterPreview_Y);
+ if (abs(centerTile_Y[cc] - CenterPreview_Y) < minimuY) {
+ minimuY = abs(centerTile_Y[cc] - CenterPreview_Y);
poscenterY = cc;
}
}
@@ -292,24 +292,24 @@ void Crop::update (int todo)
float adjustr = 1.f;
- if (params.icm.working == "ProPhoto") {
+ if (params.icm.workingProfile == "ProPhoto") {
adjustr = 1.f;
- } else if (params.icm.working == "Adobe RGB") {
+ } else if (params.icm.workingProfile == "Adobe RGB") {
adjustr = 1.f / 1.3f;
- } else if (params.icm.working == "sRGB") {
+ } else if (params.icm.workingProfile == "sRGB") {
adjustr = 1.f / 1.3f;
- } else if (params.icm.working == "WideGamut") {
+ } else if (params.icm.workingProfile == "WideGamut") {
adjustr = 1.f / 1.1f;
- } else if (params.icm.working == "Beta RGB") {
+ } else if (params.icm.workingProfile == "Beta RGB") {
adjustr = 1.f / 1.2f;
- } else if (params.icm.working == "BestRGB") {
+ } else if (params.icm.workingProfile == "BestRGB") {
adjustr = 1.f / 1.2f;
- } else if (params.icm.working == "BruceRGB") {
+ } else if (params.icm.workingProfile == "BruceRGB") {
adjustr = 1.f / 1.2f;
}
if (parent->adnListener) {
- parent->adnListener->noiseTilePrev (centerTile_X[poscenterX], centerTile_Y[poscenterY], CenterPreview_X, CenterPreview_Y, crW, trafw * skip);
+ parent->adnListener->noiseTilePrev(centerTile_X[poscenterX], centerTile_Y[poscenterY], CenterPreview_X, CenterPreview_Y, crW, trafw * skip);
}
// I have tried "blind" some solutions..to move review ...but GUI is not my truc !
@@ -323,17 +323,17 @@ void Crop::update (int todo)
// we only need image reduced to 1/4 here
int W = origCrop->getWidth();
int H = origCrop->getHeight();
- Imagefloat *provicalc = new Imagefloat ((W + 1) / 2, (H + 1) / 2); //for denoise curves
+ Imagefloat *provicalc = new Imagefloat((W + 1) / 2, (H + 1) / 2); //for denoise curves
for (int ii = 0; ii < H; ii += 2) {
for (int jj = 0; jj < W; jj += 2) {
- provicalc->r (ii >> 1, jj >> 1) = origCrop->r (ii, jj);
- provicalc->g (ii >> 1, jj >> 1) = origCrop->g (ii, jj);
- provicalc->b (ii >> 1, jj >> 1) = origCrop->b (ii, jj);
+ provicalc->r(ii >> 1, jj >> 1) = origCrop->r(ii, jj);
+ provicalc->g(ii >> 1, jj >> 1) = origCrop->g(ii, jj);
+ provicalc->b(ii >> 1, jj >> 1) = origCrop->b(ii, jj);
}
}
- parent->imgsrc->convertColorSpace (provicalc, params.icm, parent->currWB); //for denoise luminance curve
+ parent->imgsrc->convertColorSpace(provicalc, params.icm, parent->currWB); //for denoise luminance curve
float maxr = 0.f;
float maxb = 0.f;
@@ -347,10 +347,10 @@ void Crop::update (int todo)
maxblueaut = 0.f;
minredaut = 0.f;
minblueaut = 0.f;
- LUTf gamcurve (65536, 0);
+ LUTf gamcurve(65536, 0);
float gam, gamthresh, gamslope;
- parent->ipf.RGB_denoise_infoGamCurve (params.dirpyrDenoise, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope);
- parent->ipf.RGB_denoise_info (origCrop, provicalc, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope, params.dirpyrDenoise, parent->imgsrc->getDirPyrDenoiseExpComp(), chaut, Nb, redaut, blueaut, maxredaut, maxblueaut, minredaut, minblueaut, chromina, sigma, lumema, sigma_L, redyel, skinc, nsknc, true);
+ parent->ipf.RGB_denoise_infoGamCurve(params.dirpyrDenoise, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope);
+ parent->ipf.RGB_denoise_info(origCrop, provicalc, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope, params.dirpyrDenoise, parent->imgsrc->getDirPyrDenoiseExpComp(), chaut, Nb, redaut, blueaut, maxredaut, maxblueaut, minredaut, minblueaut, chromina, sigma, lumema, sigma_L, redyel, skinc, nsknc, true);
// printf("redy=%f skin=%f pcskin=%f\n",redyel, skinc,nsknc);
// printf("DCROP skip=%d cha=%4.0f Nb=%d red=%4.0f bl=%4.0f redM=%4.0f bluM=%4.0f L=%4.0f sigL=%4.0f Ch=%4.0f Si=%4.0f\n",skip, chaut,Nb, redaut,blueaut, maxredaut, maxblueaut, lumema, sigma_L, chromina, sigma);
float multip = 1.f;
@@ -359,12 +359,12 @@ void Crop::update (int todo)
multip = 2.f; //take into account gamma for TIF / JPG approximate value...not good for gamma=1
}
- float maxmax = max (maxredaut, maxblueaut);
+ float maxmax = max(maxredaut, maxblueaut);
float delta;
int mode = 0;
// float redyel, skinc, nsknc;
int lissage = settings->leveldnliss;
- parent->ipf.calcautodn_info (chaut, delta, Nb, levaut, maxmax, lumema, chromina, mode, lissage, redyel, skinc, nsknc);
+ parent->ipf.calcautodn_info(chaut, delta, Nb, levaut, maxmax, lumema, chromina, mode, lissage, redyel, skinc, nsknc);
if (maxredaut > maxblueaut) {
@@ -387,7 +387,7 @@ void Crop::update (int todo)
params.dirpyrDenoise.chroma = chaut / (autoNR * multip * adjustr * lowdenoise);
params.dirpyrDenoise.redchro = maxr;
params.dirpyrDenoise.bluechro = maxb;
- parent->adnListener->chromaChanged (params.dirpyrDenoise.chroma, params.dirpyrDenoise.redchro, params.dirpyrDenoise.bluechro);
+ parent->adnListener->chromaChanged(params.dirpyrDenoise.chroma, params.dirpyrDenoise.redchro, params.dirpyrDenoise.bluechro);
delete provicalc;
}
@@ -423,16 +423,16 @@ void Crop::update (int todo)
lowdenoise = 0.7f;
}
- LUTf gamcurve (65536, 0);
+ LUTf gamcurve(65536, 0);
float gam, gamthresh, gamslope;
- parent->ipf.RGB_denoise_infoGamCurve (params.dirpyrDenoise, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope);
+ parent->ipf.RGB_denoise_infoGamCurve(params.dirpyrDenoise, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope);
int Nb[9];
#ifdef _OPENMP
#pragma omp parallel
#endif
{
- Imagefloat *origCropPart = new Imagefloat (crW, crH);//allocate memory
- Imagefloat *provicalc = new Imagefloat ((crW + 1) / 2, (crH + 1) / 2); //for denoise curves
+ Imagefloat *origCropPart = new Imagefloat(crW, crH); //allocate memory
+ Imagefloat *provicalc = new Imagefloat((crW + 1) / 2, (crH + 1) / 2); //for denoise curves
int coordW[3];//coordinate of part of image to measure noise
int coordH[3];
@@ -450,24 +450,24 @@ void Crop::update (int todo)
for (int wcr = 0; wcr <= 2; wcr++) {
for (int hcr = 0; hcr <= 2; hcr++) {
- PreviewProps ppP (coordW[wcr], coordH[hcr], crW, crH, 1);
- parent->imgsrc->getImage (parent->currWB, tr, origCropPart, ppP, params.toneCurve, params.raw );
+ PreviewProps ppP(coordW[wcr], coordH[hcr], crW, crH, 1);
+ parent->imgsrc->getImage(parent->currWB, tr, origCropPart, ppP, params.toneCurve, params.raw);
// we only need image reduced to 1/4 here
for (int ii = 0; ii < crH; ii += 2) {
for (int jj = 0; jj < crW; jj += 2) {
- provicalc->r (ii >> 1, jj >> 1) = origCropPart->r (ii, jj);
- provicalc->g (ii >> 1, jj >> 1) = origCropPart->g (ii, jj);
- provicalc->b (ii >> 1, jj >> 1) = origCropPart->b (ii, jj);
+ provicalc->r(ii >> 1, jj >> 1) = origCropPart->r(ii, jj);
+ provicalc->g(ii >> 1, jj >> 1) = origCropPart->g(ii, jj);
+ provicalc->b(ii >> 1, jj >> 1) = origCropPart->b(ii, jj);
}
}
- parent->imgsrc->convertColorSpace (provicalc, params.icm, parent->currWB); //for denoise luminance curve
+ parent->imgsrc->convertColorSpace(provicalc, params.icm, parent->currWB); //for denoise luminance curve
float pondcorrec = 1.0f;
float chaut = 0.f, redaut = 0.f, blueaut = 0.f, maxredaut = 0.f, maxblueaut = 0.f, minredaut = 0.f, minblueaut = 0.f, chromina = 0.f, sigma = 0.f, lumema = 0.f, sigma_L = 0.f, redyel = 0.f, skinc = 0.f, nsknc = 0.f;
int nb = 0;
- parent->ipf.RGB_denoise_info (origCropPart, provicalc, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope, params.dirpyrDenoise, parent->imgsrc->getDirPyrDenoiseExpComp(), chaut, nb, redaut, blueaut, maxredaut, maxblueaut, minredaut, minblueaut, chromina, sigma, lumema, sigma_L, redyel, skinc, nsknc);
+ parent->ipf.RGB_denoise_info(origCropPart, provicalc, parent->imgsrc->isRAW(), gamcurve, gam, gamthresh, gamslope, params.dirpyrDenoise, parent->imgsrc->getDirPyrDenoiseExpComp(), chaut, nb, redaut, blueaut, maxredaut, maxblueaut, minredaut, minblueaut, chromina, sigma, lumema, sigma_L, redyel, skinc, nsknc);
//printf("DCROP skip=%d cha=%f red=%f bl=%f redM=%f bluM=%f chrom=%f sigm=%f lum=%f\n",skip, chaut,redaut,blueaut, maxredaut, maxblueaut, chromina, sigma, lumema);
Nb[hcr * 3 + wcr] = nb;
@@ -512,19 +512,19 @@ void Crop::update (int todo)
float adjustr = 1.f;
- if (params.icm.working == "ProPhoto") {
+ if (params.icm.workingProfile == "ProPhoto") {
adjustr = 1.f; //
- } else if (params.icm.working == "Adobe RGB") {
+ } else if (params.icm.workingProfile == "Adobe RGB") {
adjustr = 1.f / 1.3f;
- } else if (params.icm.working == "sRGB") {
+ } else if (params.icm.workingProfile == "sRGB") {
adjustr = 1.f / 1.3f;
- } else if (params.icm.working == "WideGamut") {
+ } else if (params.icm.workingProfile == "WideGamut") {
adjustr = 1.f / 1.1f;
- } else if (params.icm.working == "Beta RGB") {
+ } else if (params.icm.workingProfile == "Beta RGB") {
adjustr = 1.f / 1.2f;
- } else if (params.icm.working == "BestRGB") {
+ } else if (params.icm.workingProfile == "BestRGB") {
adjustr = 1.f / 1.2f;
- } else if (params.icm.working == "BruceRGB") {
+ } else if (params.icm.workingProfile == "BruceRGB") {
adjustr = 1.f / 1.2f;
}
@@ -533,8 +533,8 @@ void Crop::update (int todo)
int lissage = settings->leveldnliss;
for (int k = 0; k < 9; k++) {
- float maxmax = max (parent->denoiseInfoStore.max_r[k], parent->denoiseInfoStore.max_b[k]);
- parent->ipf.calcautodn_info (parent->denoiseInfoStore.ch_M[k], delta[k], Nb[k], levaut, maxmax, lumL[k], chromC[k], mode, lissage, ry[k], sk[k], pcsk[k]);
+ float maxmax = max(parent->denoiseInfoStore.max_r[k], parent->denoiseInfoStore.max_b[k]);
+ parent->ipf.calcautodn_info(parent->denoiseInfoStore.ch_M[k], delta[k], Nb[k], levaut, maxmax, lumL[k], chromC[k], mode, lissage, ry[k], sk[k], pcsk[k]);
// printf("ch_M=%f delta=%f\n",ch_M[k], delta[k]);
}
@@ -599,12 +599,12 @@ void Crop::update (int todo)
parent->denoiseInfoStore.valid = true;
if (parent->adnListener) {
- parent->adnListener->chromaChanged (params.dirpyrDenoise.chroma, params.dirpyrDenoise.redchro, params.dirpyrDenoise.bluechro);
+ parent->adnListener->chromaChanged(params.dirpyrDenoise.chroma, params.dirpyrDenoise.redchro, params.dirpyrDenoise.bluechro);
}
if (settings->verbose) {
t2aue.set();
- printf ("Info denoise auto performed in %d usec:\n", t2aue.etime (t1aue));
+ printf("Info denoise auto performed in %d usec:\n", t2aue.etime(t1aue));
}
//end evaluate noise
@@ -612,8 +612,8 @@ void Crop::update (int todo)
// if(params.dirpyrDenoise.Cmethod=="AUT" || params.dirpyrDenoise.Cmethod=="PON") {//reinit origCrop after Auto
if ((settings->leveldnautsimpl == 1 && params.dirpyrDenoise.Cmethod == "AUT") || (settings->leveldnautsimpl == 0 && params.dirpyrDenoise.C2method == "AUTO")) { //reinit origCrop after Auto
- PreviewProps pp (trafx, trafy, trafw * skip, trafh * skip, skip);
- parent->imgsrc->getImage (parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw );
+ PreviewProps pp(trafx, trafy, trafw * skip, trafh * skip, skip);
+ parent->imgsrc->getImage(parent->currWB, tr, origCrop, pp, params.toneCurve, params.raw);
}
DirPyrDenoiseParams denoiseParams = params.dirpyrDenoise;
@@ -628,25 +628,25 @@ void Crop::update (int todo)
noiseLCurve.Reset();
}
- if ((noiseLCurve || noiseCCurve ) && skip == 1 && denoiseParams.enabled) { //only allocate memory if enabled and skip
+ if ((noiseLCurve || noiseCCurve) && skip == 1 && denoiseParams.enabled) { //only allocate memory if enabled and skip
// we only need image reduced to 1/4 here
int W = origCrop->getWidth();
int H = origCrop->getHeight();
- calclum = new Imagefloat ((W + 1) / 2, (H + 1) / 2); //for denoise curves
+ calclum = new Imagefloat((W + 1) / 2, (H + 1) / 2); //for denoise curves
for (int ii = 0; ii < H; ii += 2) {
for (int jj = 0; jj < W; jj += 2) {
- calclum->r (ii >> 1, jj >> 1) = origCrop->r (ii, jj);
- calclum->g (ii >> 1, jj >> 1) = origCrop->g (ii, jj);
- calclum->b (ii >> 1, jj >> 1) = origCrop->b (ii, jj);
+ calclum->r(ii >> 1, jj >> 1) = origCrop->r(ii, jj);
+ calclum->g(ii >> 1, jj >> 1) = origCrop->g(ii, jj);
+ calclum->b(ii >> 1, jj >> 1) = origCrop->b(ii, jj);
}
}
- parent->imgsrc->convertColorSpace (calclum, params.icm, parent->currWB); //for denoise luminance curve
+ parent->imgsrc->convertColorSpace(calclum, params.icm, parent->currWB); //for denoise luminance curve
}
if (skip != 1) if (parent->adnListener) {
- parent->adnListener->noiseChanged (0.f, 0.f);
+ parent->adnListener->noiseChanged(0.f, 0.f);
}
if (todo & M_LINDENOISE) {
@@ -654,26 +654,26 @@ void Crop::update (int todo)
int kall = 0;
float nresi, highresi;
- parent->ipf.RGB_denoise (kall, origCrop, origCrop, calclum, parent->denoiseInfoStore.ch_M, parent->denoiseInfoStore.max_r, parent->denoiseInfoStore.max_b, parent->imgsrc->isRAW(), /*Roffset,*/ denoiseParams, parent->imgsrc->getDirPyrDenoiseExpComp(), noiseLCurve, noiseCCurve, nresi, highresi);
+ parent->ipf.RGB_denoise(kall, origCrop, origCrop, calclum, parent->denoiseInfoStore.ch_M, parent->denoiseInfoStore.max_r, parent->denoiseInfoStore.max_b, parent->imgsrc->isRAW(), /*Roffset,*/ denoiseParams, parent->imgsrc->getDirPyrDenoiseExpComp(), noiseLCurve, noiseCCurve, nresi, highresi);
if (parent->adnListener) {
- parent->adnListener->noiseChanged (nresi, highresi);
+ parent->adnListener->noiseChanged(nresi, highresi);
}
if (settings->leveldnautsimpl == 1) {
if ((denoiseParams.Cmethod == "AUT" || denoiseParams.Cmethod == "PRE") && (parent->adnListener)) { // force display value of sliders
- parent->adnListener->chromaChanged (denoiseParams.chroma, denoiseParams.redchro, denoiseParams.bluechro);
+ parent->adnListener->chromaChanged(denoiseParams.chroma, denoiseParams.redchro, denoiseParams.bluechro);
}
} else {
if ((denoiseParams.C2method == "AUTO" || denoiseParams.C2method == "PREV") && (parent->adnListener)) { // force display value of sliders
- parent->adnListener->chromaChanged (denoiseParams.chroma, denoiseParams.redchro, denoiseParams.bluechro);
+ parent->adnListener->chromaChanged(denoiseParams.chroma, denoiseParams.redchro, denoiseParams.bluechro);
}
}
}
}
- parent->imgsrc->convertColorSpace (origCrop, params.icm, parent->currWB);
+ parent->imgsrc->convertColorSpace(origCrop, params.icm, parent->currWB);
delete [] min_r;
delete [] min_b;
@@ -688,9 +688,10 @@ void Crop::update (int todo)
}
// has to be called after setCropSizes! Tools prior to this point can't handle the Edit mechanism, but that shouldn't be a problem.
- createBuffer (cropw, croph);
+ createBuffer(cropw, croph);
std::unique_ptr fattalCrop;
+
if ((todo & M_HDR) && params.fattal.enabled) {
Imagefloat *f = origCrop;
int fw = skips(parent->fw, skip);
@@ -700,6 +701,7 @@ void Crop::update (int todo)
if (trafx || trafy || trafw != fw || trafh != fh) {
need_cropping = true;
+
// fattal needs to work on the full image. So here we get the full
// image from imgsrc, and replace the denoised crop in case
if (!params.dirpyrDenoise.enabled && skip == 1 && parent->fattal_11_dcrop_cache) {
@@ -708,7 +710,7 @@ void Crop::update (int todo)
} else {
f = new Imagefloat(fw, fh);
fattalCrop.reset(f);
- PreviewProps pp (0, 0, parent->fw, parent->fh, skip);
+ PreviewProps pp(0, 0, parent->fw, parent->fh, skip);
int tr = getCoarseBitMask(params.coarse);
parent->imgsrc->getImage(parent->currWB, tr, f, pp, params.toneCurve, params.raw);
parent->imgsrc->convertColorSpace(f, params.icm, parent->currWB);
@@ -720,8 +722,10 @@ void Crop::update (int todo)
#ifdef _OPENMP
#pragma omp parallel for
#endif
+
for (int y = 0; y < baseCrop->getHeight(); ++y) {
int dy = oy + y;
+
for (int x = 0; x < baseCrop->getWidth(); ++x) {
int dx = ox + x;
f->r(dy, dx) = baseCrop->r(y, x);
@@ -735,6 +739,7 @@ void Crop::update (int todo)
}
}
}
+
if (need_fattal) {
parent->ipf.ToneMapFattal02(f);
}
@@ -748,8 +753,10 @@ void Crop::update (int todo)
#ifdef _OPENMP
#pragma omp parallel for
#endif
+
for (int y = 0; y < trafh; ++y) {
int cy = y + oy;
+
for (int x = 0; x < trafw; ++x) {
int cx = x + ox;
c->r(y, x) = f->r(cy, cx);
@@ -757,24 +764,25 @@ void Crop::update (int todo)
c->b(y, x) = f->b(cy, cx);
}
}
+
baseCrop = c;
} else {
baseCrop = f;
}
}
-
+
// transform
if (needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled)) {
if (!transCrop) {
- transCrop = new Imagefloat (cropw, croph);
+ transCrop = new Imagefloat(cropw, croph);
}
if (needstransform)
- parent->ipf.transform (baseCrop, transCrop, cropx / skip, cropy / skip, trafx / skip, trafy / skip, skips (parent->fw, skip), skips (parent->fh, skip), parent->getFullWidth(), parent->getFullHeight(),
- parent->imgsrc->getMetaData(),
- parent->imgsrc->getRotateDegree(), false);
+ parent->ipf.transform(baseCrop, transCrop, cropx / skip, cropy / skip, trafx / skip, trafy / skip, skips(parent->fw, skip), skips(parent->fh, skip), parent->getFullWidth(), parent->getFullHeight(),
+ parent->imgsrc->getMetaData(),
+ parent->imgsrc->getRotateDegree(), false);
else {
- baseCrop->copyData (transCrop);
+ baseCrop->copyData(transCrop);
}
if (transCrop) {
@@ -792,23 +800,66 @@ void Crop::update (int todo)
const int W = baseCrop->getWidth();
const int H = baseCrop->getHeight();
- LabImage labcbdl (W, H);
- parent->ipf.rgb2lab (*baseCrop, labcbdl, params.icm.working);
- parent->ipf.dirpyrequalizer (&labcbdl, skip);
- parent->ipf.lab2rgb (labcbdl, *baseCrop, params.icm.working);
+ LabImage labcbdl(W, H);
+ parent->ipf.rgb2lab(*baseCrop, labcbdl, params.icm.workingProfile);
+ parent->ipf.dirpyrequalizer(&labcbdl, skip);
+ parent->ipf.lab2rgb(labcbdl, *baseCrop, params.icm.workingProfile);
}
+ if (todo & M_AUTOEXP) {
+ if (params.icm.workingTRC == "Custom") { //exec TRC IN free
+ Glib::ustring profile;
+ profile = params.icm.workingProfile;
+
+ if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") {
+
+ //first put gamma TRC to 1
+ int cw = baseCrop->getWidth();
+ int ch = baseCrop->getHeight();
+ Imagefloat* readyImg0 = NULL;
+
+ readyImg0 = parent->ipf.workingtrc(baseCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310);
+ #pragma omp parallel for
+
+ for (int row = 0; row < ch; row++) {
+ for (int col = 0; col < cw; col++) {
+ baseCrop->r(row, col) = (float)readyImg0->r(row, col);
+ baseCrop->g(row, col) = (float)readyImg0->g(row, col);
+ baseCrop->b(row, col) = (float)readyImg0->b(row, col);
+ }
+ }
+
+ delete readyImg0;
+
+ //adjust gamma TRC
+ Imagefloat* readyImg = NULL;
+ readyImg = parent->ipf.workingtrc(baseCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope);
+ #pragma omp parallel for
+
+ for (int row = 0; row < ch; row++) {
+ for (int col = 0; col < cw; col++) {
+ baseCrop->r(row, col) = (float)readyImg->r(row, col);
+ baseCrop->g(row, col) = (float)readyImg->g(row, col);
+ baseCrop->b(row, col) = (float)readyImg->b(row, col);
+ }
+ }
+
+ delete readyImg;
+ }
+ }
+ }
+
if (todo & M_RGBCURVE) {
double rrm, ggm, bbm;
DCPProfile::ApplyState as;
- DCPProfile *dcpProf = parent->imgsrc->getDCP (params.icm, as);
+ DCPProfile *dcpProf = parent->imgsrc->getDCP(params.icm, as);
LUTu histToneCurve;
parent->ipf.rgbProc (baseCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve,
- params.toneCurve.saturation, parent->rCurve, parent->gCurve, parent->bCurve, parent->colourToningSatLimit, parent->colourToningSatLimitOpacity, parent->ctColorCurve, parent->ctOpacityCurve, parent->opautili, parent->clToningcurve, parent->cl2Toningcurve,
- parent->customToneCurve1, parent->customToneCurve2, parent->beforeToneCurveBW, parent->afterToneCurveBW, rrm, ggm, bbm,
- parent->bwAutoR, parent->bwAutoG, parent->bwAutoB, dcpProf, as, histToneCurve);
+ params.toneCurve.saturation, parent->rCurve, parent->gCurve, parent->bCurve, parent->colourToningSatLimit, parent->colourToningSatLimitOpacity, parent->ctColorCurve, parent->ctOpacityCurve, parent->opautili, parent->clToningcurve, parent->cl2Toningcurve,
+ parent->customToneCurve1, parent->customToneCurve2, parent->beforeToneCurveBW, parent->afterToneCurveBW, rrm, ggm, bbm,
+ parent->bwAutoR, parent->bwAutoG, parent->bwAutoB, dcpProf, as, histToneCurve);
}
/*xref=000;yref=000;
@@ -830,7 +881,7 @@ void Crop::update (int todo)
// apply luminance operations
if (todo & (M_LUMINANCE + M_COLOR)) {
//I made a little change here. Rather than have luminanceCurve (and others) use in/out lab images, we can do more if we copy right here.
- labnCrop->CopyFrom (laboCrop);
+ labnCrop->CopyFrom(laboCrop);
//parent->ipf.luminanceCurve (labnCrop, labnCrop, parent->lumacurve);
@@ -843,25 +894,25 @@ void Crop::update (int todo)
LUTu dummy;
// parent->ipf.MSR(labnCrop, labnCrop->W, labnCrop->H, 1);
- parent->ipf.chromiLuminanceCurve (this, 1, labnCrop, labnCrop, parent->chroma_acurve, parent->chroma_bcurve, parent->satcurve, parent->lhskcurve, parent->clcurve, parent->lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, dummy, dummy);
- parent->ipf.vibrance (labnCrop);
+ parent->ipf.chromiLuminanceCurve(this, 1, labnCrop, labnCrop, parent->chroma_acurve, parent->chroma_bcurve, parent->satcurve, parent->lhskcurve, parent->clcurve, parent->lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, dummy, dummy);
+ parent->ipf.vibrance(labnCrop);
- if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) {
- parent->ipf.EPDToneMap (labnCrop, 5, skip);
+ if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) {
+ parent->ipf.EPDToneMap(labnCrop, 5, skip);
}
//parent->ipf.EPDToneMap(labnCrop, 5, 1); //Go with much fewer than normal iterates for fast redisplay.
// for all treatments Defringe, Sharpening, Contrast detail , Microcontrast they are activated if "CIECAM" function are disabled
if (skip == 1) {
if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) {
- parent->ipf.impulsedenoise (labnCrop);
+ parent->ipf.impulsedenoise(labnCrop);
}
- if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled) ) {
- parent->ipf.defringe (labnCrop);
+ if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) {
+ parent->ipf.defringe(labnCrop);
}
- parent->ipf.MLsharpen (labnCrop);
+ parent->ipf.MLsharpen(labnCrop);
if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) {
parent->ipf.MLmicrocontrast (labnCrop);
@@ -874,13 +925,13 @@ void Crop::update (int todo)
if (params.dirpyrequalizer.cbdlMethod == "aft") {
if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled))) {
- parent->ipf.dirpyrequalizer (labnCrop, skip);
+ parent->ipf.dirpyrequalizer(labnCrop, skip);
// parent->ipf.Lanczoslab (labnCrop,labnCrop , 1.f/skip);
}
}
int kall = 0;
- int minwin = min (labnCrop->W, labnCrop->H);
+ int minwin = min(labnCrop->W, labnCrop->H);
int maxlevelcrop = 10;
// if(cp.mul[9]!=0)maxlevelcrop=10;
@@ -920,10 +971,10 @@ void Crop::update (int todo)
int numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip;
- parent->ipf.Tile_calc (tilesize, overlap, kall, labnCrop->W, labnCrop->H, numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip);
+ parent->ipf.Tile_calc(tilesize, overlap, kall, labnCrop->W, labnCrop->H, numtiles_W, numtiles_H, tilewidth, tileheight, tileWskip, tileHskip);
//now we have tile dimensions, overlaps
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- int minsizetile = min (tilewidth, tileheight);
+ int minsizetile = min(tilewidth, tileheight);
int maxlev2 = 10;
if (minsizetile < 1024 && maxlevelcrop == 10) {
@@ -942,10 +993,10 @@ void Crop::update (int todo)
maxlev2 = 6;
}
- int maxL = min (maxlev2, maxlevelcrop);
+ int maxL = min(maxlev2, maxlevelcrop);
if (parent->awavListener) {
- parent->awavListener->wavChanged (float (maxL));
+ parent->awavListener->wavChanged(float (maxL));
}
if ((params.wavelet.enabled)) {
@@ -957,28 +1008,28 @@ void Crop::update (int todo)
LUTf wavclCurve;
LUTu dummy;
- params.wavelet.getCurves (wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL);
+ params.wavelet.getCurves(wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL);
- parent->ipf.ip_wavelet (labnCrop, labnCrop, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, parent->wavclCurve, skip);
+ parent->ipf.ip_wavelet(labnCrop, labnCrop, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, parent->wavclCurve, skip);
}
// }
// }
if (params.colorappearance.enabled) {
- float fnum = parent->imgsrc->getMetaData()->getFNumber (); // F number
- float fiso = parent->imgsrc->getMetaData()->getISOSpeed () ; // ISO
- float fspeed = parent->imgsrc->getMetaData()->getShutterSpeed () ; // Speed
- double fcomp = parent->imgsrc->getMetaData()->getExpComp (); // Compensation +/-
+ float fnum = parent->imgsrc->getMetaData()->getFNumber(); // F number
+ float fiso = parent->imgsrc->getMetaData()->getISOSpeed() ; // ISO
+ float fspeed = parent->imgsrc->getMetaData()->getShutterSpeed() ; // Speed
+ double fcomp = parent->imgsrc->getMetaData()->getExpComp(); // Compensation +/-
double adap; // Scene's luminosity adaptation factor
if (fnum < 0.3f || fiso < 5.f || fspeed < 0.00001f) { //if no exif data or wrong
adap = 2000.;
} else {
- double E_V = fcomp + log2 (double ((fnum * fnum) / fspeed / (fiso / 100.f)));
+ double E_V = fcomp + log2(double ((fnum * fnum) / fspeed / (fiso / 100.f)));
E_V += params.toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV
- E_V += log2 (params.raw.expos); // exposure raw white point ; log2 ==> linear to EV
- adap = pow (2., E_V - 3.); // cd / m2
+ E_V += log2(params.raw.expos); // exposure raw white point ; log2 ==> linear to EV
+ adap = pow(2., E_V - 3.); // cd / m2
// end calculation adaptation scene luminosity
}
@@ -989,12 +1040,12 @@ void Crop::update (int todo)
}
if (!cieCrop) {
- cieCrop = new CieImage (cropw, croph);
+ cieCrop = new CieImage(cropw, croph);
}
float d, dj, yb; // not used after this block
- parent->ipf.ciecam_02float (cieCrop, float (adap), 1, 2, labnCrop, ¶ms, parent->customColCurve1, parent->customColCurve2, parent->customColCurve3,
- dummy, dummy, parent->CAMBrightCurveJ, parent->CAMBrightCurveQ, parent->CAMMean, 5, skip, execsharp, d, dj, yb, 1, parent->sharpMask);
+ parent->ipf.ciecam_02float(cieCrop, float (adap), 1, 2, labnCrop, ¶ms, parent->customColCurve1, parent->customColCurve2, parent->customColCurve3,
+ dummy, dummy, parent->CAMBrightCurveJ, parent->CAMBrightCurveQ, parent->CAMMean, 5, skip, execsharp, d, dj, yb, 1, parent->sharpMask);
} else {
// CIECAM is disabled, we free up its image buffer to save some space
if (cieCrop) {
@@ -1009,13 +1060,13 @@ void Crop::update (int todo)
PipetteBuffer::setReady();
// Computing the preview image, i.e. converting from lab->Monitor color space (soft-proofing disabled) or lab->Output profile->Monitor color space (soft-proofing enabled)
- parent->ipf.lab2monitorRgb (labnCrop, cropImg);
+ parent->ipf.lab2monitorRgb(labnCrop, cropImg);
if (cropImageListener) {
// Computing the internal image for analysis, i.e. conversion from lab->Output profile (rtSettings.HistogramWorking disabled) or lab->WCS (rtSettings.HistogramWorking enabled)
// internal image in output color space for analysis
- Image8 *cropImgtrue = parent->ipf.lab2rgb (labnCrop, 0, 0, cropw, croph, params.icm);
+ Image8 *cropImgtrue = parent->ipf.lab2rgb(labnCrop, 0, 0, cropw, croph, params.icm);
int finalW = rqcropw;
@@ -1029,30 +1080,30 @@ void Crop::update (int todo)
finalH = cropImg->getHeight() - upperBorder;
}
- Image8* final = new Image8 (finalW, finalH);
- Image8* finaltrue = new Image8 (finalW, finalH);
+ Image8* final = new Image8(finalW, finalH);
+ Image8* finaltrue = new Image8(finalW, finalH);
for (int i = 0; i < finalH; i++) {
- memcpy (final->data + 3 * i * finalW, cropImg->data + 3 * (i + upperBorder)*cropw + 3 * leftBorder, 3 * finalW);
- memcpy (finaltrue->data + 3 * i * finalW, cropImgtrue->data + 3 * (i + upperBorder)*cropw + 3 * leftBorder, 3 * finalW);
+ memcpy(final->data + 3 * i * finalW, cropImg->data + 3 * (i + upperBorder)*cropw + 3 * leftBorder, 3 * finalW);
+ memcpy(finaltrue->data + 3 * i * finalW, cropImgtrue->data + 3 * (i + upperBorder)*cropw + 3 * leftBorder, 3 * finalW);
}
- cropImageListener->setDetailedCrop (final, finaltrue, params.icm, params.crop, rqcropx, rqcropy, rqcropw, rqcroph, skip);
+ cropImageListener->setDetailedCrop(final, finaltrue, params.icm, params.crop, rqcropx, rqcropy, rqcropw, rqcroph, skip);
delete final;
delete finaltrue;
delete cropImgtrue;
}
}
-void Crop::freeAll ()
+void Crop::freeAll()
{
if (settings->verbose) {
- printf ("freeallcrop starts %d\n", (int)cropAllocated);
+ printf("freeallcrop starts %d\n", (int)cropAllocated);
}
if (cropAllocated) {
- if (origCrop ) {
+ if (origCrop) {
delete origCrop;
origCrop = nullptr;
}
@@ -1062,22 +1113,22 @@ void Crop::freeAll ()
transCrop = nullptr;
}
- if (laboCrop ) {
+ if (laboCrop) {
delete laboCrop;
laboCrop = nullptr;
}
- if (labnCrop ) {
+ if (labnCrop) {
delete labnCrop;
labnCrop = nullptr;
}
- if (cropImg ) {
+ if (cropImg) {
delete cropImg;
cropImg = nullptr;
}
- if (cieCrop ) {
+ if (cieCrop) {
delete cieCrop;
cieCrop = nullptr;
}
@@ -1092,7 +1143,7 @@ void Crop::freeAll ()
namespace
{
-bool check_need_larger_crop_for_lcp_distortion (int fw, int fh, int x, int y, int w, int h, const ProcParams ¶ms)
+bool check_need_larger_crop_for_lcp_distortion(int fw, int fh, int x, int y, int w, int h, const ProcParams ¶ms)
{
if (x == 0 && y == 0 && w == fw && h == fh) {
return false;
@@ -1107,15 +1158,15 @@ bool check_need_larger_crop_for_lcp_distortion (int fw, int fh, int x, int y, in
* If the scale changes, this method will free all buffers and reallocate ones of the new size.
* It will then tell to the SizeListener that size has changed (sizeChanged)
*/
-bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool internal)
+bool Crop::setCropSizes(int rcx, int rcy, int rcw, int rch, int skip, bool internal)
{
if (settings->verbose) {
- printf ("setcropsizes before lock\n");
+ printf("setcropsizes before lock\n");
}
if (!internal) {
- cropMutex.lock ();
+ cropMutex.lock();
}
bool changed = false;
@@ -1126,12 +1177,12 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte
rqcroph = rch;
// store and set requested crop size
- int rqx1 = LIM (rqcropx, 0, parent->fullw - 1);
- int rqy1 = LIM (rqcropy, 0, parent->fullh - 1);
+ int rqx1 = LIM(rqcropx, 0, parent->fullw - 1);
+ int rqy1 = LIM(rqcropy, 0, parent->fullh - 1);
int rqx2 = rqx1 + rqcropw - 1;
int rqy2 = rqy1 + rqcroph - 1;
- rqx2 = LIM (rqx2, 0, parent->fullw - 1);
- rqy2 = LIM (rqy2, 0, parent->fullh - 1);
+ rqx2 = LIM(rqx2, 0, parent->fullw - 1);
+ rqy2 = LIM(rqy2, 0, parent->fullh - 1);
this->skip = skip;
@@ -1141,10 +1192,10 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte
int bx2 = rqx2 + skip * borderRequested;
int by2 = rqy2 + skip * borderRequested;
// clip it to fit into image area
- bx1 = LIM (bx1, 0, parent->fullw - 1);
- by1 = LIM (by1, 0, parent->fullh - 1);
- bx2 = LIM (bx2, 0, parent->fullw - 1);
- by2 = LIM (by2, 0, parent->fullh - 1);
+ bx1 = LIM(bx1, 0, parent->fullw - 1);
+ by1 = LIM(by1, 0, parent->fullh - 1);
+ bx2 = LIM(bx2, 0, parent->fullw - 1);
+ by2 = LIM(by2, 0, parent->fullh - 1);
int bw = bx2 - bx1 + 1;
int bh = by2 - by1 + 1;
@@ -1155,9 +1206,9 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte
orw = bw;
orh = bh;
- parent->ipf.transCoord (parent->fw, parent->fh, bx1, by1, bw, bh, orx, ory, orw, orh);
+ parent->ipf.transCoord(parent->fw, parent->fh, bx1, by1, bw, bh, orx, ory, orw, orh);
- if (check_need_larger_crop_for_lcp_distortion (parent->fw, parent->fh, orx, ory, orw, orh, parent->params)) {
+ if (check_need_larger_crop_for_lcp_distortion(parent->fw, parent->fh, orx, ory, orw, orh, parent->params)) {
// TODO - this is an estimate of the max distortion relative to the image size. ATM it is hardcoded to be 15%, which seems enough. If not, need to revise
int dW = int (double (parent->fw) * 0.15 / (2 * skip));
int dH = int (double (parent->fh) * 0.15 / (2 * skip));
@@ -1186,34 +1237,34 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte
y2 = parent->fh;
}
- orx = max (x1, 0);
- ory = max (y1, 0);
- orw = min (x2 - x1, parent->fw - orx);
- orh = min (y2 - y1, parent->fh - ory);
+ orx = max(x1, 0);
+ ory = max(y1, 0);
+ orw = min(x2 - x1, parent->fw - orx);
+ orh = min(y2 - y1, parent->fh - ory);
}
- leftBorder = skips (rqx1 - bx1, skip);
- upperBorder = skips (rqy1 - by1, skip);
+ leftBorder = skips(rqx1 - bx1, skip);
+ upperBorder = skips(rqy1 - by1, skip);
- PreviewProps cp (orx, ory, orw, orh, skip);
+ PreviewProps cp(orx, ory, orw, orh, skip);
int orW, orH;
- parent->imgsrc->getSize (cp, orW, orH);
+ parent->imgsrc->getSize(cp, orW, orH);
trafx = orx;
trafy = ory;
- int cw = skips (bw, skip);
- int ch = skips (bh, skip);
+ int cw = skips(bw, skip);
+ int ch = skips(bh, skip);
if (settings->verbose) {
- printf ("setsizes starts (%d, %d, %d, %d, %d, %d)\n", orW, orH, trafw, trafh, cw, ch);
+ printf("setsizes starts (%d, %d, %d, %d, %d, %d)\n", orW, orH, trafw, trafh, cw, ch);
}
EditType editType = ET_PIPETTE;
- if (const auto editProvider = PipetteBuffer::getDataProvider ()) {
- if (const auto editSubscriber = editProvider->getCurrSubscriber ()) {
- editType = editSubscriber->getEditingType ();
+ if (const auto editProvider = PipetteBuffer::getDataProvider()) {
+ if (const auto editSubscriber = editProvider->getCurrSubscriber()) {
+ editType = editSubscriber->getEditingType();
}
}
@@ -1228,30 +1279,30 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte
origCrop = new Imagefloat;
}
- origCrop->allocate (trafw, trafh); // Resizing the buffer (optimization)
+ origCrop->allocate(trafw, trafh); // Resizing the buffer (optimization)
// if transCrop doesn't exist yet, it'll be created where necessary
if (transCrop) {
- transCrop->allocate (cropw, croph);
+ transCrop->allocate(cropw, croph);
}
if (laboCrop) {
delete laboCrop; // laboCrop can't be resized
}
- laboCrop = new LabImage (cropw, croph);
+ laboCrop = new LabImage(cropw, croph);
if (labnCrop) {
delete labnCrop; // labnCrop can't be resized
}
- labnCrop = new LabImage (cropw, croph);
+ labnCrop = new LabImage(cropw, croph);
if (!cropImg) {
cropImg = new Image8;
}
- cropImg->allocate (cropw, croph); // Resizing the buffer (optimization)
+ cropImg->allocate(cropw, croph); // Resizing the buffer (optimization)
//cieCrop is only used in Crop::update, it is destroyed now but will be allocated on first use
if (cieCrop) {
@@ -1260,7 +1311,7 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte
}
if (editType == ET_PIPETTE) {
- PipetteBuffer::resize (cropw, croph);
+ PipetteBuffer::resize(cropw, croph);
} else if (PipetteBuffer::bufferCreated()) {
PipetteBuffer::flush();
}
@@ -1274,11 +1325,11 @@ bool Crop::setCropSizes (int rcx, int rcy, int rcw, int rch, int skip, bool inte
cropy = by1;
if (settings->verbose) {
- printf ("setsizes ends\n");
+ printf("setsizes ends\n");
}
if (!internal) {
- cropMutex.unlock ();
+ cropMutex.unlock();
}
return changed;
@@ -1313,20 +1364,20 @@ bool Crop::tryUpdate()
*
* This method is called when the visible part of the crop has changed (resize, zoom, etc..), so it needs a full update
*/
-void Crop::fullUpdate ()
+void Crop::fullUpdate()
{
- parent->updaterThreadStart.lock ();
+ parent->updaterThreadStart.lock();
if (parent->updaterRunning && parent->thread) {
// Do NOT reset changes here, since in a long chain of events it will lead to chroma_scale not being updated,
// causing Color::lab2rgb to return a black image on some opens
//parent->changeSinceLast = 0;
- parent->thread->join ();
+ parent->thread->join();
}
if (parent->plistener) {
- parent->plistener->setProgressState (true);
+ parent->plistener->setProgressState(true);
}
// If there are more update request, the following WHILE will collect it
@@ -1334,33 +1385,33 @@ void Crop::fullUpdate ()
while (newUpdatePending) {
newUpdatePending = false;
- update (ALL);
+ update(ALL);
}
updating = false; // end of crop update
if (parent->plistener) {
- parent->plistener->setProgressState (false);
+ parent->plistener->setProgressState(false);
}
- parent->updaterThreadStart.unlock ();
+ parent->updaterThreadStart.unlock();
}
int Crop::get_skip()
{
- MyMutex::MyLock lock (cropMutex);
+ MyMutex::MyLock lock(cropMutex);
return skip;
}
int Crop::getLeftBorder()
{
- MyMutex::MyLock lock (cropMutex);
+ MyMutex::MyLock lock(cropMutex);
return leftBorder;
}
int Crop::getUpperBorder()
{
- MyMutex::MyLock lock (cropMutex);
+ MyMutex::MyLock lock(cropMutex);
return upperBorder;
}
diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc
index 83439ba52..78b5490b5 100644
--- a/rtengine/demosaic_algos.cc
+++ b/rtengine/demosaic_algos.cc
@@ -684,7 +684,8 @@ void RawImageSource::ppg_demosaic()
void RawImageSource::border_interpolate(unsigned int border, float (*image)[4], unsigned int start, unsigned int end)
{
- unsigned row, col, y, x, f, sum[8];
+ unsigned row, col, y, x, f;
+ float sum[8];
unsigned int width = W, height = H;
unsigned int colors = 3;
@@ -1184,7 +1185,7 @@ void RawImageSource::lmmse_interpolate_omp(int winw, int winh, array2D &r
// apply low pass filter on differential colors
#ifdef _OPENMP
- #pragma omp for
+ #pragma omp for
#endif
for (int rr = 4; rr < rr1 - 4; rr++)
@@ -1410,7 +1411,7 @@ void RawImageSource::lmmse_interpolate_omp(int winw, int winh, array2D &r
// interpolate R/B at B/R location
#ifdef _OPENMP
- #pragma omp for
+ #pragma omp for
#endif
for (int rr = 1; rr < rr1 - 1; rr++)
@@ -2291,217 +2292,6 @@ void RawImageSource::igv_interpolate(int winw, int winh)
}
#endif
-
-/*
- Adaptive Homogeneity-Directed interpolation is based on
- the work of Keigo Hirakawa, Thomas Parks, and Paul Lee.
- */
-#define TS 256 /* Tile Size */
-#define FORC(cnt) for (c=0; c < cnt; c++)
-#define FORC3 FORC(3)
-
-void RawImageSource::ahd_demosaic()
-{
- int i, j, k, top, left, row, col, tr, tc, c, d, val, hm[2];
- float (*pix)[4], (*rix)[3];
- static const int dir[4] = { -1, 1, -TS, TS };
- float ldiff[2][4], abdiff[2][4], leps, abeps;
- float xyz[3], xyz_cam[3][4];
- float* cbrt;
- float (*rgb)[TS][TS][3];
- float (*lab)[TS][TS][3];
- float (*lix)[3];
- char (*homo)[TS][TS], *buffer;
- double r;
-
- int width = W, height = H;
- float (*image)[4];
- unsigned int colors = 3;
-
- const double xyz_rgb[3][3] = { /* XYZ from RGB */
- { 0.412453, 0.357580, 0.180423 },
- { 0.212671, 0.715160, 0.072169 },
- { 0.019334, 0.119193, 0.950227 }
- };
-
- const float d65_white[3] = { 0.950456, 1, 1.088754 };
-
- if (plistener) {
- plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AHD)));
- plistener->setProgress (0.0);
- }
-
- image = (float (*)[4]) calloc (H * W, sizeof * image);
-
- for (int ii = 0; ii < H; ii++)
- for (int jj = 0; jj < W; jj++) {
- image[ii * W + jj][fc(ii, jj)] = rawData[ii][jj];
- }
-
- cbrt = (float (*)) calloc (0x10000, sizeof * cbrt);
-
- for (i = 0; i < 0x10000; i++) {
- r = (double)i / 65535.0;
- cbrt[i] = r > 0.008856 ? std::cbrt(r) : 7.787 * r + 16 / 116.0;
- }
-
- for (i = 0; i < 3; i++)
- for (unsigned int j = 0; j < colors; j++)
- for (xyz_cam[i][j] = k = 0; k < 3; k++) {
- xyz_cam[i][j] += xyz_rgb[i][k] * imatrices.rgb_cam[k][j] / d65_white[i];
- }
-
- border_interpolate(5, image);
- buffer = (char *) malloc (13 * TS * TS * sizeof(float)); /* 1664 kB */
- //merror (buffer, "ahd_interpolate()");
- rgb = (float(*)[TS][TS][3]) buffer;
- lab = (float(*)[TS][TS][3])(buffer + 6 * TS * TS * sizeof(float));
- homo = (char (*)[TS][TS]) (buffer + 12 * TS * TS * sizeof(float));
-
- // helper variables for progress indication
- int n_tiles = ((height - 7 + (TS - 7)) / (TS - 6)) * ((width - 7 + (TS - 7)) / (TS - 6));
- int tile = 0;
-
- for (top = 2; top < height - 5; top += TS - 6)
- for (left = 2; left < width - 5; left += TS - 6) {
- /* Interpolate green horizontally and vertically: */
- for (row = top; row < top + TS && row < height - 2; row++) {
- col = left + (FC(row, left) & 1);
-
- for (c = FC(row, col); col < left + TS && col < width - 2; col += 2) {
- pix = image + (row * width + col);
- val = 0.25 * ((pix[-1][1] + pix[0][c] + pix[1][1]) * 2
- - pix[-2][c] - pix[2][c]) ;
- rgb[0][row - top][col - left][1] = median(static_cast(val), pix[-1][1], pix[1][1]);
- val = 0.25 * ((pix[-width][1] + pix[0][c] + pix[width][1]) * 2
- - pix[-2 * width][c] - pix[2 * width][c]) ;
- rgb[1][row - top][col - left][1] = median(static_cast(val), pix[-width][1], pix[width][1]);
- }
- }
-
- /* Interpolate red and blue, and convert to CIELab: */
- for (d = 0; d < 2; d++)
- for (row = top + 1; row < top + TS - 1 && row < height - 3; row++)
- for (col = left + 1; col < left + TS - 1 && col < width - 3; col++) {
- pix = image + (row * width + col);
- rix = &rgb[d][row - top][col - left];
- lix = &lab[d][row - top][col - left];
-
- if ((c = 2 - FC(row, col)) == 1) {
- c = FC(row + 1, col);
- val = pix[0][1] + (0.5 * ( pix[-1][2 - c] + pix[1][2 - c]
- - rix[-1][1] - rix[1][1] ) );
- rix[0][2 - c] = CLIP(val);
- val = pix[0][1] + (0.5 * ( pix[-width][c] + pix[width][c]
- - rix[-TS][1] - rix[TS][1] ) );
- } else
- val = rix[0][1] + (0.25 * ( pix[-width - 1][c] + pix[-width + 1][c]
- + pix[+width - 1][c] + pix[+width + 1][c]
- - rix[-TS - 1][1] - rix[-TS + 1][1]
- - rix[+TS - 1][1] - rix[+TS + 1][1]) );
-
- rix[0][c] = CLIP(val);
- c = FC(row, col);
- rix[0][c] = pix[0][c];
- xyz[0] = xyz[1] = xyz[2] = 0.0;
- FORCC {
- xyz[0] += xyz_cam[0][c] * rix[0][c];
- xyz[1] += xyz_cam[1][c] * rix[0][c];
- xyz[2] += xyz_cam[2][c] * rix[0][c];
- }
-
- xyz[0] = CurveFactory::flinterp(cbrt, xyz[0]);
- xyz[1] = CurveFactory::flinterp(cbrt, xyz[1]);
- xyz[2] = CurveFactory::flinterp(cbrt, xyz[2]);
-
- //xyz[0] = xyz[0] > 0.008856 ? pow(xyz[0]/65535,1/3.0) : 7.787*xyz[0] + 16/116.0;
- //xyz[1] = xyz[1] > 0.008856 ? pow(xyz[1]/65535,1/3.0) : 7.787*xyz[1] + 16/116.0;
- //xyz[2] = xyz[2] > 0.008856 ? pow(xyz[2]/65535,1/3.0) : 7.787*xyz[2] + 16/116.0;
-
- lix[0][0] = (116 * xyz[1] - 16);
- lix[0][1] = 500 * (xyz[0] - xyz[1]);
- lix[0][2] = 200 * (xyz[1] - xyz[2]);
- }
-
- /* Build homogeneity maps from the CIELab images: */
- memset (homo, 0, 2 * TS * TS);
-
- for (row = top + 2; row < top + TS - 2 && row < height - 4; row++) {
- tr = row - top;
-
- for (col = left + 2; col < left + TS - 2 && col < width - 4; col++) {
- tc = col - left;
-
- for (d = 0; d < 2; d++) {
- lix = &lab[d][tr][tc];
-
- for (i = 0; i < 4; i++) {
- ldiff[d][i] = ABS(lix[0][0] - lix[dir[i]][0]);
- abdiff[d][i] = SQR(lix[0][1] - lix[dir[i]][1])
- + SQR(lix[0][2] - lix[dir[i]][2]);
- }
- }
-
- leps = min(max(ldiff[0][0], ldiff[0][1]),
- max(ldiff[1][2], ldiff[1][3]));
- abeps = min(max(abdiff[0][0], abdiff[0][1]),
- max(abdiff[1][2], abdiff[1][3]));
-
- for (d = 0; d < 2; d++)
- for (i = 0; i < 4; i++)
- if (ldiff[d][i] <= leps && abdiff[d][i] <= abeps) {
- homo[d][tr][tc]++;
- }
- }
- }
-
- /* Combine the most homogenous pixels for the final result: */
- for (row = top + 3; row < top + TS - 3 && row < height - 5; row++) {
- tr = row - top;
-
- for (col = left + 3; col < left + TS - 3 && col < width - 5; col++) {
- tc = col - left;
-
- for (d = 0; d < 2; d++)
- for (hm[d] = 0, i = tr - 1; i <= tr + 1; i++)
- for (j = tc - 1; j <= tc + 1; j++) {
- hm[d] += homo[d][i][j];
- }
-
- if (hm[0] != hm[1]) {
- FORC3 image[row * width + col][c] = rgb[hm[1] > hm[0]][tr][tc][c];
- } else
- FORC3 image[row * width + col][c] =
- 0.5 * (rgb[0][tr][tc][c] + rgb[1][tr][tc][c]) ;
- }
- }
-
- tile++;
-
- if(plistener) {
- plistener->setProgress((double)tile / n_tiles);
- }
- }
-
- if(plistener) {
- plistener->setProgress (1.0);
- }
-
- free (buffer);
-
- for (int i = 0; i < H; i++) {
- for (int j = 0; j < W; j++) {
- red[i][j] = image[i * W + j][0];
- green[i][j] = image[i * W + j][1];
- blue[i][j] = image[i * W + j][2];
- }
- }
-
- free (image);
- free (cbrt);
-}
-#undef TS
-
void RawImageSource::nodemosaic(bool bw)
{
red(W, H);
diff --git a/rtengine/gamutwarning.cc b/rtengine/gamutwarning.cc
index 87be430b2..84b4b3c08 100644
--- a/rtengine/gamutwarning.cc
+++ b/rtengine/gamutwarning.cc
@@ -34,7 +34,7 @@ GamutWarning::GamutWarning(cmsHPROFILE iprof, cmsHPROFILE gamutprof, RenderingIn
softproof2ref(nullptr)
{
if (cmsIsMatrixShaper(gamutprof) && !cmsIsCLUT(gamutprof, intent, LCMS_USED_AS_OUTPUT)) {
- cmsHPROFILE aces = ICCStore::getInstance()->getProfile("ACES");
+ cmsHPROFILE aces = ICCStore::getInstance()->getProfile("RTv4_ACES-AP0");
if (aces) {
lab2ref = cmsCreateTransform(iprof, TYPE_Lab_FLT, aces, TYPE_RGB_FLT, INTENT_ABSOLUTE_COLORIMETRIC, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE);
lab2softproof = cmsCreateTransform(iprof, TYPE_Lab_FLT, gamutprof, TYPE_RGB_FLT, INTENT_ABSOLUTE_COLORIMETRIC, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE);
diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc
index 0faa8c357..2dfcc6d3b 100644
--- a/rtengine/histmatching.cc
+++ b/rtengine/histmatching.cc
@@ -26,6 +26,7 @@
#include "iccstore.h"
#include "../rtgui/mydiagonalcurve.h"
#include "improcfun.h"
+//#define BENCHMARK
#include "StopWatch.h"
#include
@@ -51,7 +52,7 @@ CdfInfo getCdf(const IImage8 &img)
for (int y = 0; y < img.getHeight(); ++y) {
for (int x = 0; x < img.getWidth(); ++x) {
- int lum = LIM(0, int(Color::rgbLuminance(float(img.r(y, x)), float(img.g(y, x)), float(img.b(y, x)))), 255);
+ int lum = LIM(int(Color::rgbLuminance(float(img.r(y, x)), float(img.g(y, x)), float(img.b(y, x)))), 0, 255);
++ret.cdf[lum];
}
}
@@ -100,7 +101,6 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve)
{
curve.clear();
- const int npoints = 8;
int idx = 15;
for (; idx < int(mapping.size()); ++idx) {
if (mapping[idx] >= idx) {
@@ -114,7 +114,6 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve)
}
}
}
- int step = std::max(int(mapping.size())/npoints, 1);
auto coord = [](int v) -> double { return double(v)/255.0; };
auto doit =
@@ -147,9 +146,17 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve)
while (start < idx && (mapping[start] < 0 || start < idx / 2)) {
++start;
}
-
- doit(start, idx, idx > step ? step : idx / 2, true);
- doit(idx, int(mapping.size()), step, idx - step > step / 2 && std::abs(curve[curve.size()-2] - coord(idx)) > 0.01);
+
+ const int npoints = 8;
+ int step = std::max(int(mapping.size())/npoints, 1);
+ int end = mapping.size();
+ if (idx <= end / 3) {
+ doit(start, idx, idx / 2, true);
+ doit(idx, end, (end - idx) / 3, false);
+ } else {
+ doit(start, idx, idx > step ? step : idx / 2, true);
+ doit(idx, int(mapping.size()), step, idx - step > step / 2 && std::abs(curve[curve.size()-2] - coord(idx)) > 0.01);
+ }
if (curve.size() > 2 && (1 - curve[curve.size()-2] <= step / (256.0 * 3))) {
curve.pop_back();
@@ -180,7 +187,7 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st
const auto same_profile =
[](const ColorManagementParams &a, const ColorManagementParams &b) -> bool
{
- return (a.input == b.input
+ return (a.inputProfile == b.inputProfile
&& a.toneCurve == b.toneCurve
&& a.applyLookTable == b.applyLookTable
&& a.applyBaselineExposureOffset == b.applyBaselineExposureOffset
@@ -200,6 +207,9 @@ void RawImageSource::getAutoMatchedToneCurve(const ColorManagementParams &cp, st
int fw, fh;
getFullSize(fw, fh, TR_NONE);
+ if (getRotateDegree() == 90 || getRotateDegree() == 270) {
+ std::swap(fw, fh);
+ }
int skip = 3;
if (settings->verbose) {
@@ -210,9 +220,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.output = "sRGB";
- neutral.icm.gamma = "default";
- neutral.icm.freegamma = false;
+ neutral.icm.outputProfile = "sRGB";
std::unique_ptr source;
{
diff --git a/rtengine/iccmatrices.h b/rtengine/iccmatrices.h
index a6fd8d9e6..d20cb70c3 100644
--- a/rtengine/iccmatrices.h
+++ b/rtengine/iccmatrices.h
@@ -32,6 +32,19 @@ constexpr double d50_d65[3][3] = {
{ -0.0092345, 0.0150436, 0.7521316}
};
+//J.Desmis 04 2018
+constexpr double d50_d60[3][3] = {
+ { 1.034368, 0.016908, -0.037658},
+ {0.021752, 0.992183, -0.012785},
+ { -0.006971, 0.011377, 0.812150}
+};
+
+constexpr double d60_d50[3][3] = {
+ { 0.96743198, -0.01699717, 0.044590689},
+ {-0.02109893, 1.008067172, 0.014890785},
+ {0.008598998, -0.01426777, 1.231474467}
+};
+
// Color space conversion to/from XYZ; color spaces adapted to D65
constexpr double xyz_sRGBd65[3][3] = {
{0.4124564, 0.3575761, 0.1804375},
@@ -66,6 +79,31 @@ constexpr double xyz_sRGB[3][3] = {
{0.0139322, 0.0971045, 0.7141733}
};
+constexpr double xyz_ACESp0[3][3] = {
+ {0.9525523959, 0.0, 0.0000936786},
+ {0.3439664498, 0.7281660966 , -0.0721325464},
+ {0.0, -0.0, 1.0088251844}
+};
+
+constexpr double ACESp0_xyz[3][3] = {
+ {1.0498110175, 0.0, -0.0000974845},
+ {-0.4959030231, 1.3733130458 , 0.0982400361},
+ {0.0, 0.0, 0.9912520182}
+};
+
+constexpr double xyz_ACESp1[3][3] = {
+ {0.689697, 0.149944, 0.124559},
+ {0.284448, 0.671758 , 0.043794},
+ {-0.006043, 0.009998, 0.820945}
+};
+
+constexpr double ACESp1_xyz[3][3] = {
+ {1.5932624, -0.352316, -0.222945},
+ {-0.6759496, 1.639286 , 0.01511026},
+ {0.0199602, -0.0225577, 1.2162833}
+};
+
+
constexpr double sRGB_xyz[3][3] = {
{3.1338561, -1.6168667, -0.4906146},
{ -0.9787684, 1.9161415, 0.0334540},
diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc
index eeb9ef1c4..4d490c0a0 100644
--- a/rtengine/iccstore.cc
+++ b/rtengine/iccstore.cc
@@ -36,9 +36,10 @@
#include "../rtgui/options.h"
#include "../rtgui/threadutils.h"
+#include "lcms2_plugin.h"
#include "cJSON.h"
-
+#define inkc_constant 0x696E6B43
namespace rtengine
{
@@ -157,6 +158,7 @@ bool loadProfile(
if (profileContents) {
profileContents->emplace(name, content);
}
+
return true;
}
}
@@ -196,12 +198,11 @@ cmsHPROFILE createXYZProfile()
return rtengine::ICCStore::createFromMatrix(mat, false, "XYZ");
}
-const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020};
-const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz};
-const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020"};
-const char* wpgamma[] = {"default", "BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9"}; //gamma free
+const double(*wprofiles[])[3] = {xyz_sRGB, xyz_adobe, xyz_prophoto, xyz_widegamut, xyz_bruce, xyz_beta, xyz_best, xyz_rec2020, xyz_ACESp0, xyz_ACESp1};//
+const double(*iwprofiles[])[3] = {sRGB_xyz, adobe_xyz, prophoto_xyz, widegamut_xyz, bruce_xyz, beta_xyz, best_xyz, rec2020_xyz, ACESp0_xyz, ACESp1_xyz};//
+const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB", "Beta RGB", "BestRGB", "Rec2020", "ACESp0", "ACESp1"};//
//default = gamma inside profile
-//BT709 g=2.22 s=4.5 sRGB g=2.4 s=12.92
+//BT709 g=2.22 s=4.5 sRGB g=2.4 s=12.92310
//linear g=1.0
//std22 g=2.2 std18 g=1.8
// high g=1.3 s=3.35 for high dynamic images
@@ -221,7 +222,8 @@ rtengine::ProfileContent::ProfileContent(const Glib::ustring& fileName)
fseek(f, 0, SEEK_END);
long length = ftell(f);
- if(length > 0) {
+
+ if (length > 0) {
char* d = new char[length + 1];
fseek(f, 0, SEEK_SET);
length = fread(d, 1, length, f);
@@ -231,6 +233,7 @@ rtengine::ProfileContent::ProfileContent(const Glib::ustring& fileName)
} else {
data.clear();
}
+
fclose(f);
}
@@ -255,8 +258,8 @@ cmsHPROFILE rtengine::ProfileContent::toProfile() const
return
!data.empty()
- ? cmsOpenProfileFromMem(data.c_str(), data.size())
- : nullptr;
+ ? cmsOpenProfileFromMem(data.c_str(), data.size())
+ : nullptr;
}
const std::string& rtengine::ProfileContent::getData() const
@@ -291,20 +294,23 @@ public:
cmsCloseProfile(p.second);
}
}
+
// for (auto &p : wProfilesGamma) {
// if (p.second) {
// cmsCloseProfile(p.second);
// }
// }
for (auto &p : fileProfiles) {
- if(p.second) {
+ if (p.second) {
cmsCloseProfile(p.second);
}
}
- if(srgb) {
+
+ if (srgb) {
cmsCloseProfile(srgb);
}
- if(xyz) {
+
+ if (xyz) {
cmsCloseProfile(xyz);
}
}
@@ -322,6 +328,7 @@ public:
userICCDir = usrICCDir;
fileProfiles.clear();
fileProfileContents.clear();
+
if (loadAll) {
loadProfiles(profilesDir, &fileProfiles, &fileProfileContents, nullptr, false);
loadProfiles(userICCDir, &fileProfiles, &fileProfileContents, nullptr, false);
@@ -332,6 +339,7 @@ public:
stdProfilesDir = Glib::build_filename(rtICCDir, "input");
fileStdProfiles.clear();
fileStdProfilesFileNames.clear();
+
if (loadAll) {
loadProfiles(stdProfilesDir, nullptr, nullptr, &fileStdProfilesFileNames, true);
Glib::ustring user_input_icc_dir = Glib::build_filename(options.rtdir, "iccprofiles", "input");
@@ -342,7 +350,7 @@ public:
loadWorkingSpaces(rtICCDir);
loadWorkingSpaces(userICCDir);
-
+
// initialize the alarm colours for lcms gamut checking -- we use bright green
cmsUInt16Number cms_alarm_codes[cmsMAXCHANNELS] = { 0, 65535, 65535 };
cmsSetAlarmCodes(cms_alarm_codes);
@@ -354,8 +362,8 @@ public:
return
r != wProfiles.end()
- ? r->second
- : wProfiles.find("sRGB")->second;
+ ? r->second
+ : wProfiles.find("sRGB")->second;
}
// cmsHPROFILE workingSpaceGamma(const Glib::ustring& name) const
@@ -375,8 +383,8 @@ public:
return
r != wMatrices.end()
- ? r->second
- : wMatrices.find("sRGB")->second;
+ ? r->second
+ : wMatrices.find("sRGB")->second;
}
TMatrix workingSpaceInverseMatrix(const Glib::ustring& name) const
@@ -386,8 +394,8 @@ public:
return
r != iwMatrices.end()
- ? r->second
- : iwMatrices.find("sRGB")->second;
+ ? r->second
+ : iwMatrices.find("sRGB")->second;
}
bool outputProfileExist(const Glib::ustring& name) const
@@ -421,7 +429,9 @@ public:
if (!loadProfile(name, profilesDir, &fileProfiles, &fileProfileContents)) {
loadProfile(name, userICCDir, &fileProfiles, &fileProfileContents);
}
+
const ProfileMap::const_iterator r = fileProfiles.find(name);
+
if (r != fileProfiles.end()) {
return r->second;
}
@@ -446,7 +456,9 @@ public:
if (!loadProfile(name, profilesDir, &fileProfiles, &fileProfileContents)) {
loadProfile(name, userICCDir, &fileProfiles, &fileProfileContents);
}
+
const ProfileMap::const_iterator r = fileProfiles.find(name);
+
if (r != fileProfiles.end()) {
return r->second;
}
@@ -481,8 +493,8 @@ public:
return
r != fileProfileContents.end()
- ? r->second
- : ProfileContent();
+ ? r->second
+ : ProfileContent();
}
cmsHPROFILE getXYZProfile() const
@@ -503,22 +515,22 @@ public:
for (const auto profile : fileProfiles) {
if (
- (
- type==ICCStore::ProfileType::MONITOR
- && cmsGetDeviceClass(profile.second) == cmsSigDisplayClass
- && cmsGetColorSpace(profile.second) == cmsSigRgbData
- )
- ||(
- type==ICCStore::ProfileType::PRINTER
- && cmsGetDeviceClass(profile.second) == cmsSigOutputClass
- )
- ||(
- type==ICCStore::ProfileType::OUTPUT
- && (cmsGetDeviceClass(profile.second) == cmsSigDisplayClass
- || cmsGetDeviceClass(profile.second) == cmsSigInputClass
- || cmsGetDeviceClass(profile.second) == cmsSigOutputClass)
- && cmsGetColorSpace(profile.second) == cmsSigRgbData
- )
+ (
+ type == ICCStore::ProfileType::MONITOR
+ && cmsGetDeviceClass(profile.second) == cmsSigDisplayClass
+ && cmsGetColorSpace(profile.second) == cmsSigRgbData
+ )
+ || (
+ type == ICCStore::ProfileType::PRINTER
+ && cmsGetDeviceClass(profile.second) == cmsSigOutputClass
+ )
+ || (
+ type == ICCStore::ProfileType::OUTPUT
+ && (cmsGetDeviceClass(profile.second) == cmsSigDisplayClass
+ || cmsGetDeviceClass(profile.second) == cmsSigInputClass
+ || cmsGetDeviceClass(profile.second) == cmsSigOutputClass)
+ && cmsGetColorSpace(profile.second) == cmsSigRgbData
+ )
) {
res.push_back(profile.first);
}
@@ -601,7 +613,7 @@ public:
for (const auto &p : wProfiles) {
res.push_back(p.first);
}
-
+
return res;
}
@@ -619,11 +631,13 @@ private:
CMatrix toMatrix() const
{
CMatrix ret;
+
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
ret[i][j] = matrix[i][j];
}
}
+
return ret;
}
@@ -640,22 +654,28 @@ private:
bool computeWorkingSpaceMatrix(const Glib::ustring &path, const Glib::ustring &filename, PMatrix &out)
{
Glib::ustring fullpath = filename;
+
if (!Glib::path_is_absolute(fullpath)) {
fullpath = Glib::build_filename(path, filename);
}
+
ProfileContent content(fullpath);
cmsHPROFILE prof = content.toProfile();
+
if (!prof) {
return false;
}
+
if (cmsGetColorSpace(prof) != cmsSigRgbData) {
cmsCloseProfile(prof);
return false;
}
+
if (!cmsIsMatrixShaper(prof)) {
cmsCloseProfile(prof);
return false;
}
+
cmsCIEXYZ *red = static_cast(cmsReadTag(prof, cmsSigRedMatrixColumnTag));
cmsCIEXYZ *green = static_cast(cmsReadTag(prof, cmsSigGreenMatrixColumnTag));
cmsCIEXYZ *blue = static_cast(cmsReadTag(prof, cmsSigBlueMatrixColumnTag));
@@ -670,13 +690,18 @@ private:
CVector({ red->Y, green->Y, blue->Y }),
CVector({ red->Z, green->Z, blue->Z })
};
-
+ m[1][0] = red->Y;
+ m[1][1] = green->Y;
+ m[1][2] = blue->Y;
+ m[2][0] = red->Z;
+ m[2][1] = green->Z;
+ m[2][2] = blue->Z;
out.set(m);
-
+
cmsCloseProfile(prof);
return true;
}
-
+
bool loadWorkingSpaces(const Glib::ustring &path)
{
Glib::ustring fileName = Glib::build_filename(path, "workingspaces.json");
@@ -685,29 +710,32 @@ private:
if (settings->verbose) {
std::cout << "trying to load extra working spaces from " << fileName << std::flush;
}
-
+
if (!f) {
if (settings->verbose) {
std::cout << " FAIL" << std::endl;
}
+
return false;
}
fseek(f, 0, SEEK_END);
long length = ftell(f);
+
if (length <= 0) {
if (settings->verbose) {
std::cout << " FAIL" << std::endl;
}
+
fclose(f);
return false;
}
-
+
char *buf = new char[length + 1];
fseek(f, 0, SEEK_SET);
length = fread(buf, 1, length, f);
buf[length] = 0;
-
+
fclose(f);
cJSON_Minify(buf);
@@ -717,21 +745,23 @@ private:
if (settings->verbose) {
std::cout << " FAIL" << std::endl;
}
+
return false;
}
delete[] buf;
cJSON *js = cJSON_GetObjectItem(root, "working_spaces");
+
if (!js) {
goto parse_error;
}
-
+
for (js = js->child; js != nullptr; js = js->next) {
cJSON *ji = cJSON_GetObjectItem(js, "name");
std::unique_ptr m(new PMatrix);
std::string name;
-
+
if (!ji || ji->type != cJSON_String) {
goto parse_error;
}
@@ -743,19 +773,22 @@ private:
}
bool found_matrix = false;
-
+
ji = cJSON_GetObjectItem(js, "matrix");
+
if (ji) {
if (ji->type != cJSON_Array) {
goto parse_error;
}
ji = ji->child;
+
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j, ji = ji->next) {
if (!ji || ji->type != cJSON_Number) {
goto parse_error;
}
+
m->matrix[i][j] = ji->valuedouble;
}
}
@@ -763,12 +796,15 @@ private:
if (ji) {
goto parse_error;
}
+
found_matrix = true;
} else {
ji = cJSON_GetObjectItem(js, "file");
+
if (!ji || ji->type != cJSON_String) {
goto parse_error;
}
+
found_matrix = computeWorkingSpaceMatrix(path, ji->valuestring, *m);
}
@@ -776,6 +812,7 @@ private:
if (settings->verbose) {
std::cout << "Could not find suitable matrix for working space: " << name << std::endl;
}
+
continue;
}
@@ -783,10 +820,12 @@ private:
TMatrix w = pMatrices.back()->matrix;
CMatrix b = {};
+
if (!rtengine::invertMatrix(pMatrices.back()->toMatrix(), b)) {
if (settings->verbose) {
std::cout << "Matrix for working space: " << name << " is not invertible, skipping" << std::endl;
}
+
pMatrices.pop_back();
} else {
wMatrices[name] = w;
@@ -798,29 +837,36 @@ private:
if (settings->verbose) {
std::cout << "Added working space: " << name << std::endl;
std::cout << " matrix: [";
+
for (int i = 0; i < 3; ++i) {
std::cout << " [";
+
for (int j = 0; j < 3; ++j) {
std::cout << " " << w[i][j];
}
+
std::cout << "]";
}
+
std::cout << " ]" << std::endl;
}
}
}
cJSON_Delete(root);
+
if (settings->verbose) {
std::cout << " OK" << std::endl;
}
+
return true;
- parse_error:
+parse_error:
+
if (settings->verbose) {
std::cout << " ERROR in parsing " << fileName << std::endl;
}
-
+
cJSON_Delete(root);
return false;
}
@@ -983,88 +1029,6 @@ std::vector rtengine::ICCStore::getWorkingProfiles()
return implementation->getWorkingProfiles();
}
-std::vector rtengine::ICCStore::getGamma()
-{
-
- std::vector res;
-
- for (unsigned int i = 0; i < sizeof(wpgamma) / sizeof(wpgamma[0]); i++) {
- res.push_back(wpgamma[i]);
- }
-
- return res;
-}
-
-void rtengine::ICCStore::getGammaArray(const procparams::ColorManagementParams &icm, GammaValues &ga)
-{
- const double eps = 0.000000001; // not divide by zero
- if (!icm.freegamma) {//if Free gamma not selected
- // gamma : ga[0],ga[1],ga[2],ga[3],ga[4],ga[5] by calcul
- if(icm.gamma == "BT709_g2.2_s4.5") {
- ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin
- ga[1] = 0.909995;
- ga[2] = 0.090005;
- ga[3] = 0.222222;
- ga[4] = 0.081071;
- } else if (icm.gamma == "sRGB_g2.4_s12.92") {
- ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom
- ga[1] = 0.947858;
- ga[2] = 0.052142;
- ga[3] = 0.077399;
- ga[4] = 0.039293;
- } else if (icm.gamma == "High_g1.3_s3.35") {
- ga[0] = 1.3 ; //for high dynamic images
- ga[1] = 0.998279;
- ga[2] = 0.001721;
- ga[3] = 0.298507;
- ga[4] = 0.005746;
- } else if (icm.gamma == "Low_g2.6_s6.9") {
- ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images
- ga[1] = 0.891161;
- ga[2] = 0.108839;
- ga[3] = 0.144928;
- ga[4] = 0.076332;
- } else if (icm.gamma == "standard_g2.2") {
- ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...)
- ga[1] = 1.;
- ga[2] = 0.;
- ga[3] = 1. / eps;
- ga[4] = 0.;
- } else if (icm.gamma == "standard_g1.8") {
- ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto)
- ga[1] = 1.;
- ga[2] = 0.;
- ga[3] = 1. / eps;
- ga[4] = 0.;
- } else /* if (icm.gamma == "linear_g1.0") */ {
- ga[0] = 1.0; //gamma=1 linear : for high dynamic images(cf : D.Coffin...)
- ga[1] = 1.;
- ga[2] = 0.;
- ga[3] = 1. / eps;
- ga[4] = 0.;
- }
- ga[5] = 0.0;
- ga[6] = 0.0;
- } else { //free gamma selected
- GammaValues g_a; //gamma parameters
- double pwr = 1.0 / icm.gampos;
- double ts = icm.slpos;
- double slope = icm.slpos == 0 ? eps : icm.slpos;
-
- int mode = 0;
- Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2
- ga[4] = g_a[3] * ts;
- //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4);
- ga[0] = icm.gampos;
- ga[1] = 1. /(1.0 + g_a[4]);
- ga[2] = g_a[4] /(1.0 + g_a[4]);
- ga[3] = 1. / slope;
- ga[5] = 0.0;
- ga[6] = 0.0;
- //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]);
- }
-}
-
// WARNING: the caller must lock lcmsMutex
cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof)
{
@@ -1096,7 +1060,7 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof)
const uint32_t gamma = 0x239;
int gamma_size = 14;
- int data_size =(gamma_size + 3) & ~3;
+ int data_size = (gamma_size + 3) & ~3;
for (uint32_t i = 0; i < tag_count; i++) {
memcpy(&tags[i], p, 12);
@@ -1109,7 +1073,7 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof)
tags[i].sig != 0x67545243 && // gTRC
tags[i].sig != 0x72545243 && // rTRC
tags[i].sig != 0x6B545243) { // kTRC
- data_size +=(tags[i].size + 3) & ~3;
+ data_size += (tags[i].size + 3) & ~3;
}
}
@@ -1140,7 +1104,7 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof)
memcpy(&nd[offset + 12], &gm, 2);
}
- offset +=(gamma_size + 3) & ~3;
+ offset += (gamma_size + 3) & ~3;
}
tag.offset = htonl(gamma_offset);
@@ -1149,7 +1113,7 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof)
tag.offset = htonl(offset);
tag.size = htonl(tags[i].size);
memcpy(&nd[offset], &data[tags[i].offset], tags[i].size);
- offset +=(tags[i].size + 3) & ~3;
+ offset += (tags[i].size + 3) & ~3;
}
memcpy(&nd[128 + 4 + i * 12], &tag, 12);
@@ -1191,7 +1155,7 @@ cmsHPROFILE rtengine::ICCStore::createFromMatrix(const double matrix[3][3], bool
pcurve[2] = 1;
// pcurve[3] = 0x1f00000;// pcurve for gamma BT709 : g=2.22 s=4.5
// normalize gamma in RT, default(Emil's choice = sRGB)
- pcurve[3] = 0x2390000;//pcurve for gamma sRGB : g:2.4 s=12.92
+ pcurve[3] = 0x2390000;//pcurve for gamma sRGB : g:2.4 s=12.92310
} else {
// lcms2 up to 2.4 has a bug with linear gamma causing precision loss(banding)
@@ -1214,9 +1178,9 @@ cmsHPROFILE rtengine::ICCStore::createFromMatrix(const double matrix[3][3], bool
// 0x74657874 : text
// 0x64657363 : description tag
for (unsigned int i = 0; i < pbody[0]; i++) {
- oprof[oprof[0] / 4] = i ?(i > 1 ? 0x58595a20 : 0x64657363) : 0x74657874;
+ oprof[oprof[0] / 4] = i ? (i > 1 ? 0x58595a20 : 0x64657363) : 0x74657874;
pbody[i * 3 + 2] = oprof[0];
- oprof[0] +=(pbody[i * 3 + 3] + 3) & -4;
+ oprof[0] += (pbody[i * 3 + 3] + 3) & -4;
}
memcpy(oprof + 32, pbody, sizeof(pbody));
@@ -1255,232 +1219,3 @@ cmsHPROFILE rtengine::ICCStore::createFromMatrix(const double matrix[3][3], bool
delete [] oprof;
return p;
}
-
-cmsHPROFILE rtengine::ICCStore::createGammaProfile(const procparams::ColorManagementParams &icm, GammaValues &ga)
-{
- float p[6]; //primaries
- ga[6] = 0.0;
-
- enum class ColorTemp {
- D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50
- D65 = 6504 // for sRGB, AdobeRGB, Bruce Rec2020 -> D65
- };
- ColorTemp temp = ColorTemp::D50;
-
- //primaries for 7 working profiles ==> output profiles
- // eventually to adapt primaries if RT used special profiles !
- if (icm.output == "WideGamut") {
- p[0] = 0.7350; //Widegamut primaries
- p[1] = 0.2650;
- p[2] = 0.1150;
- p[3] = 0.8260;
- p[4] = 0.1570;
- p[5] = 0.0180;
- } else if (icm.output == "Adobe RGB") {
- p[0] = 0.6400; //Adobe primaries
- p[1] = 0.3300;
- p[2] = 0.2100;
- p[3] = 0.7100;
- p[4] = 0.1500;
- p[5] = 0.0600;
- temp = ColorTemp::D65;
- } else if (icm.output == "sRGB") {
- p[0] = 0.6400; // sRGB primaries
- p[1] = 0.3300;
- p[2] = 0.3000;
- p[3] = 0.6000;
- p[4] = 0.1500;
- p[5] = 0.0600;
- temp = ColorTemp::D65;
- } else if (icm.output == "BruceRGB") {
- p[0] = 0.6400; // Bruce primaries
- p[1] = 0.3300;
- p[2] = 0.2800;
- p[3] = 0.6500;
- p[4] = 0.1500;
- p[5] = 0.0600;
- temp = ColorTemp::D65;
- } else if (icm.output == "Beta RGB") {
- p[0] = 0.6888; // Beta primaries
- p[1] = 0.3112;
- p[2] = 0.1986;
- p[3] = 0.7551;
- p[4] = 0.1265;
- p[5] = 0.0352;
- } else if (icm.output == "BestRGB") {
- p[0] = 0.7347; // Best primaries
- p[1] = 0.2653;
- p[2] = 0.2150;
- p[3] = 0.7750;
- p[4] = 0.1300;
- p[5] = 0.0350;
- } else if (icm.output == "Rec2020") {
- p[0] = 0.7080; // Rec2020 primaries
- p[1] = 0.2920;
- p[2] = 0.1700;
- p[3] = 0.7970;
- p[4] = 0.1310;
- p[5] = 0.0460;
- temp = ColorTemp::D65;
- } else {
- p[0] = 0.7347; //ProPhoto and default primaries
- p[1] = 0.2653;
- p[2] = 0.1596;
- p[3] = 0.8404;
- p[4] = 0.0366;
- p[5] = 0.0001;
- }
-
- cmsCIExyY xyD;
- cmsCIExyYTRIPLE Primaries = {
- {p[0], p[1], 1.0}, // red
- {p[2], p[3], 1.0}, // green
- {p[4], p[5], 1.0} // blue
- };
- cmsToneCurve* GammaTRC[3];
-
- // 7 parameters for smoother curves
- cmsFloat64Number Parameters[7] = { ga[0], ga[1], ga[2], ga[3], ga[4], ga[5], ga[6] } ;
-
- //lcmsMutex->lock(); Mutex acquired by the caller
- cmsWhitePointFromTemp(&xyD,(double)temp);
- GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, Parameters); //5 = smoother than 4
- cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); //oprofdef become Outputprofile
- cmsFreeToneCurve(GammaTRC[0]);
- //lcmsMutex->unlock();
-
- return oprofdef;
-}
-
-// WARNING: the caller must lock lcmsMutex
-cmsHPROFILE rtengine::ICCStore::createCustomGammaOutputProfile(const procparams::ColorManagementParams &icm, GammaValues &ga)
-{
- bool pro = false;
- Glib::ustring outProfile;
- cmsHPROFILE outputProfile = nullptr;
-
- if (icm.freegamma && icm.gampos < 1.35) {
- pro = true; //select profil with gammaTRC modified :
- } else if (icm.gamma == "linear_g1.0" ||(icm.gamma == "High_g1.3_s3.35")) {
- pro = true; //pro=0 RT_sRGB || Prophoto
- }
-
- // Check that output profiles exist, otherwise use LCMS2
- // Use the icc/icm profiles associated to possible working profiles, set in "options"
- if (icm.working == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto) && !pro) {
- outProfile = options.rtSettings.prophoto;
- } else if (icm.working == "Adobe RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe) ) {
- outProfile = options.rtSettings.adobe;
- } else if (icm.working == "WideGamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut) ) {
- outProfile = options.rtSettings.widegamut;
- } else if (icm.working == "Beta RGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta) ) {
- outProfile = options.rtSettings.beta;
- } else if (icm.working == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best) ) {
- outProfile = options.rtSettings.best;
- } else if (icm.working == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce) ) {
- outProfile = options.rtSettings.bruce;
- } else if (icm.working == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb) && !pro) {
- outProfile = options.rtSettings.srgb;
- } else if (icm.working == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb10) && pro) {
- outProfile = options.rtSettings.srgb10;
- } else if (icm.working == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto10) && pro) {
- outProfile = options.rtSettings.prophoto10;
- } else if (icm.working == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020) ) {
- outProfile = options.rtSettings.rec2020;
- } else {
- // Should not occurs
- if (settings->verbose) {
- printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", icm.working.c_str() );
- }
-
- return nullptr;
- }
-
- //begin adaptation rTRC gTRC bTRC
- //"outputProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile
- if (settings->verbose) {
- printf("Output Gamma - profile: \"%s\"\n", outProfile.c_str() ); //c_str()
- }
-
- outputProfile = ICCStore::getInstance()->getProfile(outProfile); //get output profile
-
- if (outputProfile == nullptr) {
-
- if (settings->verbose) {
- printf("\"%s\" ICC output profile not found!\n", outProfile.c_str());
- }
- return nullptr;
- }
-
- // 7 parameters for smoother curves
- cmsFloat64Number Parameters[7] = { ga[0], ga[1], ga[2], ga[3], ga[4], ga[5], ga[6] };
-
- //change desc Tag , to "free gamma", or "BT709", etc.
- cmsMLU *mlu;
- cmsContext ContextID = cmsGetProfileContextID(outputProfile); // create context to modify some TAGs
- mlu = cmsMLUalloc(ContextID, 1);
-
- // instruction with //ICC are used to generate ICC profile
- if (mlu == nullptr) {
- printf("Description error\n");
- } else {
-
- // Description TAG : selection of gamma and Primaries
- if (!icm.freegamma) {
- std::wstring gammaStr;
-
- if(icm.gamma == "High_g1.3_s3.35") {
- gammaStr = std::wstring(L"GammaTRC: High g=1.3 s=3.35");
- } else if (icm.gamma == "Low_g2.6_s6.9") {
- gammaStr = std::wstring(L"GammaTRC: Low g=2.6 s=6.9");
- } else if (icm.gamma == "sRGB_g2.4_s12.92") {
- gammaStr = std::wstring(L"GammaTRC: sRGB g=2.4 s=12.92");
- } else if (icm.gamma == "BT709_g2.2_s4.5") {
- gammaStr = std::wstring(L"GammaTRC: BT709 g=2.2 s=4.5");
- } else if (icm.gamma == "linear_g1.0") {
- gammaStr = std::wstring(L"GammaTRC: Linear g=1.0");
- } else if (icm.gamma == "standard_g2.2") {
- gammaStr = std::wstring(L"GammaTRC: g=2.2");
- } else if (icm.gamma == "standard_g1.8") {
- gammaStr = std::wstring(L"GammaTRC: g=1.8");
- }
-
- cmsMLUsetWide(mlu, "en", "US", gammaStr.c_str());
- } else {
- // create description with gamma + slope + primaries
- std::wostringstream gammaWs;
- gammaWs.precision(2);
- gammaWs << "Manual GammaTRC: g=" <<(float)icm.gampos << " s=" <<(float)icm.slpos;
-
- cmsMLUsetWide(mlu, "en", "US", gammaWs.str().c_str());
- }
-
- cmsWriteTag(outputProfile, cmsSigProfileDescriptionTag, mlu);//desc changed
-
- /*
- cmsMLUsetWide(mlu, "en", "US", L"General Public License - AdobeRGB compatible");//adapt to profil
- cmsWriteTag(outputProfile, cmsSigCopyrightTag, mlu);
-
- cmsMLUsetWide(mlu, "en", "US", L"RawTherapee");
- cmsWriteTag(outputProfile, cmsSigDeviceMfgDescTag, mlu);
-
- cmsMLUsetWide(mlu, "en", "US", L"RTMedium"); //adapt to profil
- cmsWriteTag(outputProfile, cmsSigDeviceModelDescTag, mlu);
-
- */
-
- cmsMLUfree(mlu);
- }
-
- // Calculate output profile's rTRC gTRC bTRC
- cmsToneCurve* GammaTRC = cmsBuildParametricToneCurve(nullptr, 5, Parameters);
- cmsWriteTag(outputProfile, cmsSigRedTRCTag,(void*)GammaTRC );
- cmsWriteTag(outputProfile, cmsSigGreenTRCTag,(void*)GammaTRC );
- cmsWriteTag(outputProfile, cmsSigBlueTRCTag,(void*)GammaTRC );
-
- if (GammaTRC) {
- cmsFreeToneCurve(GammaTRC);
- }
-
- return outputProfile;
-}
diff --git a/rtengine/iccstore.h b/rtengine/iccstore.h
index c23ecd112..6b57fd072 100644
--- a/rtengine/iccstore.h
+++ b/rtengine/iccstore.h
@@ -96,13 +96,9 @@ public:
std::uint8_t getProofIntents(const Glib::ustring& name) const;
/*static*/ std::vector getWorkingProfiles();
- static std::vector getGamma();
- static void getGammaArray(const procparams::ColorManagementParams& icm, GammaValues& ga);
static cmsHPROFILE makeStdGammaProfile(cmsHPROFILE iprof);
static cmsHPROFILE createFromMatrix(const double matrix[3][3], bool gamma = false, const Glib::ustring& name = Glib::ustring());
- static cmsHPROFILE createGammaProfile(const procparams::ColorManagementParams& icm, GammaValues& ga);
- static cmsHPROFILE createCustomGammaOutputProfile(const procparams::ColorManagementParams& icm, GammaValues& ga);
private:
class Implementation;
diff --git a/rtengine/icons.cc b/rtengine/icons.cc
index aa3b67cbf..ccc5ebd09 100644
--- a/rtengine/icons.cc
+++ b/rtengine/icons.cc
@@ -108,10 +108,7 @@ void setPaths ()
imagePaths.clear ();
- imagePaths.push_back (Glib::build_filename(argv0, "images", "Dark"));
- imagePaths.push_back (Glib::build_filename(argv0, "images", "Dark", "actions"));
- imagePaths.push_back (Glib::build_filename(argv0, "images", "Dark", "devices"));
- imagePaths.push_back (Glib::build_filename(argv0, "images", "Dark", "places"));
+ imagePaths.push_back (Glib::build_filename(argv0, "images", "dark"));
// The images folder is the second fallback solution.
imagePaths.push_back (Glib::build_filename(argv0, "images"));
diff --git a/rtengine/image16.cc b/rtengine/image16.cc
index 68dd4bb40..20f9ab281 100644
--- a/rtengine/image16.cc
+++ b/rtengine/image16.cc
@@ -25,7 +25,7 @@
namespace
{
-void getScanline8 (const uint16_t *red, const uint16_t *green, const uint16_t *blue, int width, unsigned char* buffer)
+void getScanline8(const uint16_t *red, const uint16_t *green, const uint16_t *blue, int width, unsigned char* buffer)
{
for (int i = 0, ix = 0; i < width; i++) {
buffer[ix++] = rtengine::uint16ToUint8Rounded(red[i]);
@@ -34,7 +34,7 @@ void getScanline8 (const uint16_t *red, const uint16_t *green, const uint16_t *b
}
}
-void getScanline16 (const uint16_t *red, const uint16_t *green, const uint16_t *blue, int width, unsigned short* buffer)
+void getScanline16(const uint16_t *red, const uint16_t *green, const uint16_t *blue, int width, unsigned short* buffer)
{
for (int i = 0, ix = 0; i < width; i++) {
buffer[ix++] = red[i];
@@ -47,20 +47,20 @@ void getScanline16 (const uint16_t *red, const uint16_t *green, const uint16_t *
using namespace rtengine;
-Image16::Image16 ()
+Image16::Image16()
{
}
-Image16::Image16 (int w, int h)
+Image16::Image16(int w, int h)
{
- allocate (w, h);
+ allocate(w, h);
}
-Image16::~Image16 ()
+Image16::~Image16()
{
}
-void Image16::getScanline (int row, unsigned char* buffer, int bps)
+void Image16::getScanline(int row, unsigned char* buffer, int bps)
{
if (data == nullptr) {
@@ -68,9 +68,9 @@ void Image16::getScanline (int row, unsigned char* buffer, int bps)
}
if (bps == 16) {
- getScanline16 (r(row), g(row), b(row), width, (unsigned short*)buffer);
+ getScanline16(r(row), g(row), b(row), width, (unsigned short*)buffer);
} else if (bps == 8) {
- getScanline8 (r(row), g(row), b(row), width, buffer);
+ getScanline8(r(row), g(row), b(row), width, buffer);
}
}
@@ -78,7 +78,7 @@ 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, float *minValue, float *maxValue)
{
if (data == nullptr) {
@@ -92,7 +92,7 @@ void Image16::setScanline (int row, unsigned char* buffer, int bps, unsigned int
case (IIOSF_UNSIGNED_CHAR): {
int ix = 0;
- if(numSamples == 1) {
+ if (numSamples == 1) {
for (int i = 0; i < width; ++i) {
r(row, i) = g(row, i) = b(row, i) = static_cast(buffer[ix++]) * 257;
}
@@ -103,6 +103,7 @@ void Image16::setScanline (int row, unsigned char* buffer, int bps, unsigned int
b(row, i) = static_cast(buffer[ix++]) * 257;
}
}
+
break;
}
@@ -130,22 +131,23 @@ void Image16::setScanline (int row, unsigned char* buffer, int bps, unsigned int
*/
}
-Image16* Image16::copy ()
+Image16* Image16::copy()
{
- Image16* cp = new Image16 (width, height);
+ Image16* cp = new Image16(width, height);
copyData(cp);
return cp;
}
-void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp)
+void Image16::getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp)
{
// compute channel multipliers
float rm = 1.f, gm = 1.f, bm = 1.f;
+
if (ctemp.getTemp() >= 0) {
double drm, dgm, dbm;
- ctemp.getMultipliers (drm, dgm, dbm);
+ ctemp.getMultipliers(drm, dgm, dbm);
rm = drm;
gm = dgm;
bm = dbm;
@@ -161,7 +163,7 @@ void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Preview
int sx1, sy1, sx2, sy2;
- transform (pp, tran, sx1, sy1, sx2, sy2);
+ transform(pp, tran, sx1, sy1, sx2, sy2);
int imwidth = image->getWidth(); // Destination image
int imheight = image->getHeight(); // Destination image
@@ -271,25 +273,22 @@ void Image16::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Preview
}
}
- if (mtran == TR_NONE)
+ if (mtran == TR_NONE)
for (int dst_x = 0, src_x = sx1; dst_x < imwidth; dst_x++, src_x += skip) {
image->r(iy, dst_x) = lineR[dst_x];
image->g(iy, dst_x) = lineG[dst_x];
image->b(iy, dst_x) = lineB[dst_x];
- }
- else if (mtran == TR_R180)
+ } else if (mtran == TR_R180)
for (int dst_x = 0; dst_x < imwidth; dst_x++) {
image->r(imheight - 1 - iy, imwidth - 1 - dst_x) = lineR[dst_x];
image->g(imheight - 1 - iy, imwidth - 1 - dst_x) = lineG[dst_x];
image->b(imheight - 1 - iy, imwidth - 1 - dst_x) = lineB[dst_x];
- }
- else if (mtran == TR_R90)
+ } else if (mtran == TR_R90)
for (int dst_x = 0, src_x = sx1; dst_x < imwidth; dst_x++, src_x += skip) {
image->r(dst_x, imheight - 1 - iy) = lineR[dst_x];
image->g(dst_x, imheight - 1 - iy) = lineG[dst_x];
image->b(dst_x, imheight - 1 - iy) = lineB[dst_x];
- }
- else if (mtran == TR_R270)
+ } else if (mtran == TR_R270)
for (int dst_x = 0, src_x = sx1; dst_x < imwidth; dst_x++, src_x += skip) {
image->r(imwidth - 1 - dst_x, iy) = lineR[dst_x];
image->g(imwidth - 1 - dst_x, iy) = lineG[dst_x];
@@ -334,6 +333,48 @@ Image16::tofloat()
return imgfloat;
}
+// Parallelized transformation; create transform with cmsFLAGS_NOCACHE!
+void Image16::ExecCMSTransform(cmsHTRANSFORM hTransform)
+{
+ //cmsDoTransform(hTransform, data, data, planestride);
+
+ // LittleCMS cannot parallelize planar setups -- Hombre: LCMS2.4 can! But it we use this new feature, memory allocation have to be modified too
+ // so build temporary buffers to allow multi processor execution
+#ifdef _OPENMP
+ #pragma omp parallel
+#endif
+ {
+ AlignedBuffer buffer(width * 3);
+
+#ifdef _OPENMP
+ #pragma omp for schedule(static)
+#endif
+
+ for (int y = 0; y < height; y++)
+ {
+ unsigned short *p = buffer.data, *pR = r(y), *pG = g(y), *pB = b(y);
+
+ for (int x = 0; x < width; x++) {
+ *(p++) = *(pR++);
+ *(p++) = *(pG++);
+ *(p++) = *(pB++);
+ }
+
+ cmsDoTransform(hTransform, buffer.data, buffer.data, width);
+
+ p = buffer.data;
+ pR = r(y);
+ pG = g(y);
+ pB = b(y);
+
+ for (int x = 0; x < width; x++) {
+ *(pR++) = *(p++);
+ *(pG++) = *(p++);
+ *(pB++) = *(p++);
+ }
+ } // End of parallelization
+ }
+}
// // Parallelized transformation; create transform with cmsFLAGS_NOCACHE!
// void Image16::ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy)
diff --git a/rtengine/image16.h b/rtengine/image16.h
index af5642638..add1d6f09 100644
--- a/rtengine/image16.h
+++ b/rtengine/image16.h
@@ -36,65 +36,66 @@ class Image16 : public IImage16, public ImageIO
public:
- Image16 ();
- Image16 (int width, int height);
- ~Image16 ();
+ Image16();
+ Image16(int width, int height);
+ ~Image16();
- Image16* copy ();
+ Image16* copy();
Image8* to8();
Imagefloat* tofloat();
- virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp);
+ virtual void getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp);
- virtual const char* getType () const
+ virtual const char* getType() const
{
return sImage16;
}
- virtual int getBPS ()
+ virtual int getBPS()
{
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);
+ virtual void setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples, float *minValue = nullptr, float *maxValue = nullptr);
// functions inherited from IImage16:
- virtual MyMutex& getMutex ()
+ virtual MyMutex& getMutex()
{
- return mutex ();
+ return mutex();
}
- virtual cmsHPROFILE getProfile ()
+ virtual cmsHPROFILE getProfile()
{
- return getEmbeddedProfile ();
+ return getEmbeddedProfile();
}
- virtual int getBitsPerPixel ()
+ virtual int getBitsPerPixel()
{
return 8 * sizeof(unsigned short);
}
- virtual int saveToFile (Glib::ustring fname)
+ virtual int saveToFile(Glib::ustring fname)
{
- return save (fname);
+ return save(fname);
}
- virtual int saveAsPNG (Glib::ustring fname, int bps = -1)
+ virtual int saveAsPNG(Glib::ustring fname, int bps = -1)
{
- return savePNG (fname, bps);
+ return savePNG(fname, bps);
}
- virtual int saveAsJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3)
+ virtual int saveAsJPEG(Glib::ustring fname, int quality = 100, int subSamp = 3)
{
- return saveJPEG (fname, quality, subSamp);
+ 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, bool uncompressed = false)
{
- return saveTIFF (fname, bps, uncompressed);
+ return saveTIFF(fname, bps, uncompressed);
}
- virtual void setSaveProgressListener (ProgressListener* pl)
+ virtual void setSaveProgressListener(ProgressListener* pl)
{
- setProgressListener (pl);
+ setProgressListener(pl);
}
- virtual void free ()
+ virtual void free()
{
delete this;
}
+ void ExecCMSTransform(cmsHTRANSFORM hTransform);
/* void ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy); */
};
diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc
index e79678194..277ed32ce 100644
--- a/rtengine/imagefloat.cc
+++ b/rtengine/imagefloat.cc
@@ -467,7 +467,7 @@ void Imagefloat::calcCroppedHistogram(const ProcParams ¶ms, float scale, LUT
hist.clear();
// Set up factors to calc the lightness
- TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.working);
+ TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.workingProfile);
float facRed = wprof[1][0];
float facGreen = wprof[1][1];
@@ -508,6 +508,52 @@ void Imagefloat::calcCroppedHistogram(const ProcParams ¶ms, float scale, LUT
}
+// Parallelized transformation; create transform with cmsFLAGS_NOCACHE!
+void Imagefloat::ExecCMSTransform2(cmsHTRANSFORM hTransform)
+{
+
+ // LittleCMS cannot parallelize planar setups -- Hombre: LCMS2.4 can! But it we use this new feature, memory allocation
+ // have to be modified too to build temporary buffers that allow multi processor execution
+#ifdef _OPENMP
+ #pragma omp parallel
+#endif
+ {
+ AlignedBuffer pBuf(width * 3);
+
+#ifdef _OPENMP
+ #pragma omp for schedule(static)
+#endif
+
+ for (int y = 0; y < height; y++)
+ {
+ float *p = pBuf.data, *pR = r(y), *pG = g(y), *pB = b(y);
+
+ for (int x = 0; x < width; x++) {
+ *(p++) = *(pR++)/ 65535.f;
+ *(p++) = *(pG++)/ 65535.f;
+ *(p++) = *(pB++)/ 65535.f;
+
+ }
+
+ cmsDoTransform (hTransform, pBuf.data, pBuf.data, width);
+
+ p = pBuf.data;
+ pR = r(y);
+ pG = g(y);
+ pB = b(y);
+
+ for (int x = 0; x < width; x++) {
+ *(pR++) = *(p++);
+ *(pG++) = *(p++);
+ *(pB++) = *(p++);
+ }
+ } // End of parallelization
+ }
+}
+
+
+
+
// Parallelized transformation; create transform with cmsFLAGS_NOCACHE!
void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform)
{
@@ -532,6 +578,7 @@ void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform)
*(p++) = *(pR++);
*(p++) = *(pG++);
*(p++) = *(pB++);
+
}
cmsDoTransform (hTransform, pBuf.data, pBuf.data, width);
diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h
index 5246a2f6e..d48e51cee 100644
--- a/rtengine/imagefloat.h
+++ b/rtengine/imagefloat.h
@@ -104,6 +104,7 @@ public:
void normalizeFloatTo1();
void normalizeFloatTo65535();
void calcCroppedHistogram(const ProcParams ¶ms, float scale, LUTu & hist);
+ void ExecCMSTransform2(cmsHTRANSFORM hTransform);
void ExecCMSTransform(cmsHTRANSFORM hTransform);
void ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy);
diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc
index 29eeb07e8..50cab329d 100644
--- a/rtengine/improccoordinator.cc
+++ b/rtengine/improccoordinator.cc
@@ -24,6 +24,11 @@
#include "colortemp.h"
#include "improcfun.h"
#include "iccstore.h"
+#include
+#include
+#include
+#include "color.h"
+
#ifdef _OPENMP
#include
#endif
@@ -32,49 +37,49 @@ namespace rtengine
extern const Settings* settings;
-ImProcCoordinator::ImProcCoordinator ()
- : orig_prev (nullptr), oprevi (nullptr), oprevl (nullptr), nprevl (nullptr), fattal_11_dcrop_cache(nullptr), previmg (nullptr), workimg (nullptr),
+ImProcCoordinator::ImProcCoordinator()
+ : orig_prev(nullptr), oprevi(nullptr), oprevl(nullptr), nprevl(nullptr), fattal_11_dcrop_cache(nullptr), previmg(nullptr), workimg(nullptr),
ncie (nullptr), imgsrc (nullptr), lastAwbEqual (0.), lastAwbTempBias (0.0), ipf (¶ms, true), monitorIntent (RI_RELATIVE),
- softProof (false), gamutCheck (false), sharpMask(false), scale (10), highDetailPreprocessComputed (false), highDetailRawComputed (false),
- allocated (false), bwAutoR (-9000.f), bwAutoG (-9000.f), bwAutoB (-9000.f), CAMMean (NAN),
+ softProof(false), gamutCheck(false), sharpMask(false), scale(10), highDetailPreprocessComputed(false), highDetailRawComputed(false),
+ allocated(false), bwAutoR(-9000.f), bwAutoG(-9000.f), bwAutoB(-9000.f), CAMMean(NAN),
- hltonecurve (65536),
- shtonecurve (65536),
- tonecurve (65536, 0), //,1);
- lumacurve (32770, 0), // lumacurve[32768] and lumacurve[32769] will be set to 32768 and 32769 later to allow linear interpolation
- chroma_acurve (65536, 0),
- chroma_bcurve (65536, 0),
- satcurve (65536, 0),
- lhskcurve (65536, 0),
- clcurve (65536, 0),
- conversionBuffer (1, 1),
- wavclCurve (65536, 0),
- clToningcurve (65536, 0),
- cl2Toningcurve (65536, 0),
- Noisecurve (65536, 0),
- NoiseCCcurve (65536, 0),
- vhist16 (65536), vhist16bw (65536),
- lhist16CAM (65536),
- lhist16CCAM (65536),
+ hltonecurve(65536),
+ shtonecurve(65536),
+ tonecurve(65536, 0), //,1);
+ lumacurve(32770, 0), // lumacurve[32768] and lumacurve[32769] will be set to 32768 and 32769 later to allow linear interpolation
+ chroma_acurve(65536, 0),
+ chroma_bcurve(65536, 0),
+ satcurve(65536, 0),
+ lhskcurve(65536, 0),
+ clcurve(65536, 0),
+ conversionBuffer(1, 1),
+ wavclCurve(65536, 0),
+ clToningcurve(65536, 0),
+ cl2Toningcurve(65536, 0),
+ Noisecurve(65536, 0),
+ NoiseCCcurve(65536, 0),
+ vhist16(65536), vhist16bw(65536),
+ lhist16CAM(65536),
+ lhist16CCAM(65536),
lhist16RETI(),
- lhist16LClad (65536),
- histRed (256), histRedRaw (256),
- histGreen (256), histGreenRaw (256),
- histBlue (256), histBlueRaw (256),
- histLuma (256),
- histToneCurve (256),
- histToneCurveBW (256),
- histLCurve (256),
- histCCurve (256),
- histLLCurve (256),
+ lhist16LClad(65536),
+ histRed(256), histRedRaw(256),
+ histGreen(256), histGreenRaw(256),
+ histBlue(256), histBlueRaw(256),
+ histLuma(256),
+ histToneCurve(256),
+ histToneCurveBW(256),
+ histLCurve(256),
+ histCCurve(256),
+ histLLCurve(256),
- histLCAM (256),
- histCCAM (256),
- histClad (256),
- bcabhist (256),
- histChroma (256),
+ histLCAM(256),
+ histCCAM(256),
+ histClad(256),
+ bcabhist(256),
+ histChroma(256),
- histLRETI (256),
+ histLRETI(256),
CAMBrightCurveJ(), CAMBrightCurveQ(),
@@ -82,35 +87,36 @@ ImProcCoordinator::ImProcCoordinator ()
gCurve(),
bCurve(),
ctColorCurve(),
- rcurvehist (256), rcurvehistCropped (256), rbeforehist (256),
- gcurvehist (256), gcurvehistCropped (256), gbeforehist (256),
- bcurvehist (256), bcurvehistCropped (256), bbeforehist (256),
- fw (0), fh (0), tr (0),
- fullw (1), fullh (1),
- pW (-1), pH (-1),
- plistener (nullptr), imageListener (nullptr), aeListener (nullptr), acListener (nullptr), abwListener (nullptr), awbListener (nullptr), frameCountListener (nullptr), imageTypeListener (nullptr), actListener (nullptr), adnListener (nullptr), awavListener (nullptr), dehaListener (nullptr), hListener (nullptr),
- resultValid (false), lastOutputProfile ("BADFOOD"), lastOutputIntent (RI__COUNT), lastOutputBPC (false), thread (nullptr), changeSinceLast (0), updaterRunning (false), destroying (false), utili (false), autili (false),
- butili (false), ccutili (false), cclutili (false), clcutili (false), opautili (false), wavcontlutili (false), colourToningSatLimit (0.f), colourToningSatLimitOpacity (0.f), highQualityComputed (false)
+ rcurvehist(256), rcurvehistCropped(256), rbeforehist(256),
+ gcurvehist(256), gcurvehistCropped(256), gbeforehist(256),
+ bcurvehist(256), bcurvehistCropped(256), bbeforehist(256),
+ fw(0), fh(0), tr(0),
+ fullw(1), fullh(1),
+ pW(-1), pH(-1),
+ plistener(nullptr), imageListener(nullptr), aeListener(nullptr), acListener(nullptr), abwListener(nullptr), awbListener(nullptr), frameCountListener(nullptr), imageTypeListener(nullptr), actListener(nullptr), adnListener(nullptr), awavListener(nullptr), dehaListener(nullptr), hListener(nullptr),
+ resultValid(false), lastOutputProfile("BADFOOD"), lastOutputIntent(RI__COUNT), lastOutputBPC(false), thread(nullptr), changeSinceLast(0), updaterRunning(false), destroying(false), utili(false), autili(false),
+ butili(false), ccutili(false), cclutili(false), clcutili(false), opautili(false), wavcontlutili(false), colourToningSatLimit(0.f), colourToningSatLimitOpacity(0.f), highQualityComputed(false)
{}
-void ImProcCoordinator::assign (ImageSource* imgsrc)
+void ImProcCoordinator::assign(ImageSource* imgsrc)
{
this->imgsrc = imgsrc;
}
-ImProcCoordinator::~ImProcCoordinator ()
+ImProcCoordinator::~ImProcCoordinator()
{
destroying = true;
- updaterThreadStart.lock ();
+ updaterThreadStart.lock();
if (updaterRunning && thread) {
- thread->join ();
+ thread->join();
}
mProcessing.lock();
mProcessing.unlock();
- freeAll ();
+ freeAll();
+
if (fattal_11_dcrop_cache) {
delete fattal_11_dcrop_cache;
fattal_11_dcrop_cache = nullptr;
@@ -122,23 +128,23 @@ ImProcCoordinator::~ImProcCoordinator ()
delete toDel[i];
}
- imgsrc->decreaseRef ();
- updaterThreadStart.unlock ();
+ imgsrc->decreaseRef();
+ updaterThreadStart.unlock();
}
-DetailedCrop* ImProcCoordinator::createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow)
+DetailedCrop* ImProcCoordinator::createCrop(::EditDataProvider *editDataProvider, bool isDetailWindow)
{
- return new Crop (this, editDataProvider, isDetailWindow);
+ return new Crop(this, editDataProvider, isDetailWindow);
}
// todo: bitmask containing desired actions, taken from changesSinceLast
// cropCall: calling crop, used to prevent self-updates ...doesn't seem to be used
-void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
+void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall)
{
- MyMutex::MyLock processingLock (mProcessing);
+ MyMutex::MyLock processingLock(mProcessing);
int numofphases = 14;
int readyphase = 0;
@@ -159,7 +165,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
// Check if any detail crops need high detail. If not, take a fast path short cut
if (!highDetailNeeded) {
for (size_t i = 0; i < crops.size(); i++)
- if (crops[i]->get_skip() == 1 ) { // skip=1 -> full resolution
+ if (crops[i]->get_skip() == 1) { // skip=1 -> full resolution
highDetailNeeded = true;
break;
}
@@ -169,7 +175,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
ColorManagementParams cmp = params.icm;
LCurveParams lcur = params.labCurve;
- if ( !highDetailNeeded ) {
+ if (!highDetailNeeded) {
// if below 100% magnification, take a fast path
if (rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE) && rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE)) {
rp.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST);
@@ -186,18 +192,18 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
//rp.deadPixelFilter = rp.hotPixelFilter = false;
}
- progress ("Applying white balance, color correction & sRGB conversion...", 100 * readyphase / numofphases);
+ progress("Applying white balance, color correction & sRGB conversion...", 100 * readyphase / numofphases);
if (frameCountListener) {
- frameCountListener->FrameCountChanged (imgsrc->getFrameCount(), params.raw.bayersensor.imageNum);
+ frameCountListener->FrameCountChanged(imgsrc->getFrameCount(), params.raw.bayersensor.imageNum);
}
// raw auto CA is bypassed if no high detail is needed, so we have to compute it when high detail is needed
- if ( (todo & M_PREPROC) || (!highDetailPreprocessComputed && highDetailNeeded)) {
- imgsrc->setCurrentFrame (params.raw.bayersensor.imageNum);
+ if ((todo & M_PREPROC) || (!highDetailPreprocessComputed && highDetailNeeded)) {
+ imgsrc->setCurrentFrame(params.raw.bayersensor.imageNum);
- imgsrc->preprocess ( rp, params.lensProf, params.coarse );
- imgsrc->getRAWHistogram ( histRedRaw, histGreenRaw, histBlueRaw );
+ imgsrc->preprocess(rp, params.lensProf, params.coarse);
+ imgsrc->getRAWHistogram(histRedRaw, histGreenRaw, histBlueRaw);
highDetailPreprocessComputed = highDetailNeeded;
}
@@ -215,19 +221,19 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
// If high detail (=100%) is newly selected, do a demosaic update, since the last was just with FAST
if (imageTypeListener) {
- imageTypeListener->imageTypeChanged (imgsrc->isRAW(), imgsrc->getSensorType() == ST_BAYER, imgsrc->getSensorType() == ST_FUJI_XTRANS, imgsrc->isMono());
+ imageTypeListener->imageTypeChanged(imgsrc->isRAW(), imgsrc->getSensorType() == ST_BAYER, imgsrc->getSensorType() == ST_FUJI_XTRANS, imgsrc->isMono());
}
- if ( (todo & M_RAW)
+ if ((todo & M_RAW)
|| (!highDetailRawComputed && highDetailNeeded)
- || ( params.toneCurve.hrenabled && params.toneCurve.method != "Color" && imgsrc->isRGBSourceModified())
+ || (params.toneCurve.hrenabled && params.toneCurve.method != "Color" && imgsrc->isRGBSourceModified())
|| (!params.toneCurve.hrenabled && params.toneCurve.method == "Color" && imgsrc->isRGBSourceModified())) {
if (settings->verbose) {
if (imgsrc->getSensorType() == ST_BAYER) {
- printf ("Demosaic Bayer image n.%d using method: %s\n", rp.bayersensor.imageNum + 1, rp.bayersensor.method.c_str());
+ printf("Demosaic Bayer image n.%d using method: %s\n", rp.bayersensor.imageNum + 1, rp.bayersensor.method.c_str());
} else if (imgsrc->getSensorType() == ST_FUJI_XTRANS) {
- printf ("Demosaic X-Trans image with using method: %s\n", rp.xtranssensor.method.c_str());
+ printf("Demosaic X-Trans image with using method: %s\n", rp.xtranssensor.method.c_str());
}
}
if(imgsrc->getSensorType() == ST_BAYER) {
@@ -239,7 +245,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
}
bool autoContrast = false;
double contrastThreshold = 0.f;
- imgsrc->demosaic (rp, autoContrast, contrastThreshold); //enabled demosaic
+ imgsrc->demosaic(rp, autoContrast, contrastThreshold); //enabled demosaic
// if a demosaic happened we should also call getimage later, so we need to set the M_INIT flag
todo |= M_INIT;
@@ -251,10 +257,10 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
}
if (params.retinex.enabled) {
- lhist16RETI (32768);
+ lhist16RETI(32768);
lhist16RETI.clear();
- imgsrc->retinexPrepareBuffers (params.icm, params.retinex, conversionBuffer, lhist16RETI);
+ imgsrc->retinexPrepareBuffers(params.icm, params.retinex, conversionBuffer, lhist16RETI);
}
}
@@ -262,47 +268,47 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
bool dehacontlutili = false;
bool mapcontlutili = false;
bool useHsl = false;
- LUTf cdcurve (65536, 0);
- LUTf mapcurve (65536, 0);
+ LUTf cdcurve(65536, 0);
+ LUTf mapcurve(65536, 0);
- imgsrc->retinexPrepareCurves (params.retinex, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, dehacontlutili, mapcontlutili, useHsl, lhist16RETI, histLRETI);
+ imgsrc->retinexPrepareCurves(params.retinex, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, dehacontlutili, mapcontlutili, useHsl, lhist16RETI, histLRETI);
float minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax;
- imgsrc->retinex ( params.icm, params.retinex, params.toneCurve, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, conversionBuffer, dehacontlutili, mapcontlutili, useHsl, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax, histLRETI); //enabled Retinex
+ imgsrc->retinex(params.icm, params.retinex, params.toneCurve, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, conversionBuffer, dehacontlutili, mapcontlutili, useHsl, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax, histLRETI); //enabled Retinex
if (dehaListener) {
- dehaListener->minmaxChanged (maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
+ dehaListener->minmaxChanged(maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax);
}
}
if (todo & (M_INIT | M_LINDENOISE | M_HDR)) {
- MyMutex::MyLock initLock (minit); // Also used in crop window
+ MyMutex::MyLock initLock(minit); // Also used in crop window
- imgsrc->HLRecovery_Global ( params.toneCurve); // this handles Color HLRecovery
+ imgsrc->HLRecovery_Global(params.toneCurve); // this handles Color HLRecovery
if (settings->verbose) {
- printf ("Applying white balance, color correction & sRBG conversion...\n");
+ printf("Applying white balance, color correction & sRBG conversion...\n");
}
- currWB = ColorTemp (params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method);
+ currWB = ColorTemp(params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method);
if (!params.wb.enabled) {
currWB = ColorTemp();
} else if (params.wb.method == "Camera") {
- currWB = imgsrc->getWB ();
+ currWB = imgsrc->getWB();
} else if (params.wb.method == "Auto") {
if (lastAwbEqual != params.wb.equal || lastAwbTempBias != params.wb.tempBias) {
double rm, gm, bm;
- imgsrc->getAutoWBMultipliers (rm, gm, bm);
+ imgsrc->getAutoWBMultipliers(rm, gm, bm);
if (rm != -1.) {
- autoWB.update (rm, gm, bm, params.wb.equal, params.wb.tempBias);
+ autoWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias);
lastAwbEqual = params.wb.equal;
lastAwbTempBias = params.wb.tempBias;
} else {
lastAwbEqual = -1.;
lastAwbTempBias = 0.0;
- autoWB.useDefaults (params.wb.equal);
+ autoWB.useDefaults(params.wb.equal);
}
//double rr,gg,bb;
@@ -313,25 +319,49 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
}
if (params.wb.enabled) {
- params.wb.temperature = currWB.getTemp ();
- params.wb.green = currWB.getGreen ();
+ params.wb.temperature = currWB.getTemp();
+ params.wb.green = currWB.getGreen();
}
if (params.wb.method == "Auto" && awbListener && params.wb.enabled) {
- awbListener->WBChanged (params.wb.temperature, params.wb.green);
+ awbListener->WBChanged(params.wb.temperature, params.wb.green);
}
- int tr = getCoarseBitMask (params.coarse);
+ /*
+ GammaValues g_a;
+ double pwr = 1.0 / params.icm.gampos;
+ double ts = params.icm.slpos;
- imgsrc->getFullSize (fw, fh, tr);
+
+ int mode = 0;
+ Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope
+ printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", g_a[0],g_a[1],g_a[2],g_a[3],g_a[4]);
+
+ Glib::ustring datal;
+ datal = "lutsrgb.txt";
+ ofstream fou(datal, ios::out | ios::trunc);
+
+ for(int i=0; i < 212; i++) {
+ //printf("igamma2=%i\n", (int) 65535.f*Color::igamma2(i/212.0));
+ float gam = Color::igamma2(i/211.0);
+ int lutga = nearbyint(65535.f* gam);
+ // fou << 65535*(int)Color::igamma2(i/212.0) << endl;
+ fou << i << " " << lutga << endl;
+
+ }
+ fou.close();
+ */
+ int tr = getCoarseBitMask(params.coarse);
+
+ imgsrc->getFullSize(fw, fh, tr);
// Will (re)allocate the preview's buffers
- setScale (scale);
- PreviewProps pp (0, 0, fw, fh, scale);
+ setScale(scale);
+ PreviewProps pp(0, 0, fw, fh, scale);
// Tells to the ImProcFunctions' tools what is the preview scale, which may lead to some simplifications
- ipf.setScale (scale);
+ ipf.setScale(scale);
- imgsrc->getImage (currWB, tr, orig_prev, pp, params.toneCurve, params.raw);
+ imgsrc->getImage(currWB, tr, orig_prev, pp, params.toneCurve, params.raw);
denoiseInfoStore.valid = false;
//ColorTemp::CAT02 (orig_prev, ¶ms) ;
// printf("orig_prevW=%d\n scale=%d",orig_prev->width, scale);
@@ -376,9 +406,9 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
}
}
*/
- imgsrc->convertColorSpace (orig_prev, params.icm, currWB);
+ imgsrc->convertColorSpace(orig_prev, params.icm, currWB);
- ipf.firstAnalysis (orig_prev, params, vhist16);
+ ipf.firstAnalysis(orig_prev, params, vhist16);
}
readyphase++;
@@ -388,41 +418,44 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
delete fattal_11_dcrop_cache;
fattal_11_dcrop_cache = nullptr;
}
+
ipf.ToneMapFattal02(orig_prev);
+
if (oprevi != orig_prev) {
delete oprevi;
}
}
+
oprevi = orig_prev;
- progress ("Rotate / Distortion...", 100 * readyphase / numofphases);
+ progress("Rotate / Distortion...", 100 * readyphase / numofphases);
// Remove transformation if unneeded
bool needstransform = ipf.needsTransform();
-
- if ((needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled)) ) {
+
+ if ((needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled))) {
assert(oprevi);
Imagefloat *op = oprevi;
- oprevi = new Imagefloat (pW, pH);
+ oprevi = new Imagefloat(pW, pH);
if (needstransform)
- ipf.transform (op, oprevi, 0, 0, 0, 0, pW, pH, fw, fh,
- imgsrc->getMetaData(), imgsrc->getRotateDegree(), false);
+ ipf.transform(op, oprevi, 0, 0, 0, 0, pW, pH, fw, fh,
+ imgsrc->getMetaData(), imgsrc->getRotateDegree(), false);
else {
- op->copyData (oprevi);
+ op->copyData(oprevi);
}
}
if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) {
const int W = oprevi->getWidth();
const int H = oprevi->getHeight();
- LabImage labcbdl (W, H);
- ipf.rgb2lab (*oprevi, labcbdl, params.icm.working);
- ipf.dirpyrequalizer (&labcbdl, scale);
- ipf.lab2rgb (labcbdl, *oprevi, params.icm.working);
+ LabImage labcbdl(W, H);
+ ipf.rgb2lab(*oprevi, labcbdl, params.icm.workingProfile);
+ ipf.dirpyrequalizer(&labcbdl, scale);
+ ipf.lab2rgb(labcbdl, *oprevi, params.icm.workingProfile);
}
readyphase++;
- progress ("Preparing shadow/highlight map...", 100 * readyphase / numofphases);
+ progress("Preparing shadow/highlight map...", 100 * readyphase / numofphases);
readyphase++;
@@ -430,16 +463,19 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
if (params.toneCurve.autoexp) {
LUTu aehist;
int aehistcompr;
- imgsrc->getAutoExpHistogram (aehist, aehistcompr);
- ipf.getAutoExp (aehist, aehistcompr, params.toneCurve.clip, params.toneCurve.expcomp,
- params.toneCurve.brightness, params.toneCurve.contrast, params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh);
+ imgsrc->getAutoExpHistogram(aehist, aehistcompr);
+ ipf.getAutoExp(aehist, aehistcompr, params.toneCurve.clip, params.toneCurve.expcomp,
+ params.toneCurve.brightness, params.toneCurve.contrast, params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh);
if (aeListener)
- aeListener->autoExpChanged (params.toneCurve.expcomp, params.toneCurve.brightness, params.toneCurve.contrast,
- params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, params.toneCurve.hrenabled);
+ aeListener->autoExpChanged(params.toneCurve.expcomp, params.toneCurve.brightness, params.toneCurve.contrast,
+ params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, params.toneCurve.hrenabled);
}
+
if (params.toneCurve.histmatching) {
- imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve);
+ if (!params.toneCurve.fromHistMatching) {
+ imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve);
+ }
if (params.toneCurve.autoexp) {
params.toneCurve.expcomp = 0.0;
@@ -451,6 +487,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
params.toneCurve.brightness = 0;
params.toneCurve.contrast = 0;
params.toneCurve.black = 0;
+ params.toneCurve.fromHistMatching = true;
if (aeListener) {
aeListener->autoMatchedToneCurveChanged(params.toneCurve.curveMode, params.toneCurve.curve);
@@ -458,39 +495,81 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
}
}
- progress ("Exposure curve & CIELAB conversion...", 100 * readyphase / numofphases);
+ progress("Exposure curve & CIELAB conversion...", 100 * readyphase / numofphases);
+
+ if (todo & M_AUTOEXP) {
+ if (params.icm.workingTRC == "Custom") { //exec TRC IN free
+ Glib::ustring profile;
+ profile = params.icm.workingProfile;
+
+ if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") {
+ int cw = oprevi->getWidth();
+ int ch = oprevi->getHeight();
+ // put gamma TRC to 1
+ Imagefloat* readyImg0 = NULL;
+ readyImg0 = ipf.workingtrc(oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310);
+ #pragma omp parallel for
+
+ for (int row = 0; row < ch; row++) {
+ for (int col = 0; col < cw; col++) {
+ oprevi->r(row, col) = (float)readyImg0->r(row, col);
+ oprevi->g(row, col) = (float)readyImg0->g(row, col);
+ oprevi->b(row, col) = (float)readyImg0->b(row, col);
+ }
+ }
+
+ delete readyImg0;
+ //adjust TRC
+ Imagefloat* readyImg = NULL;
+ readyImg = ipf.workingtrc(oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope);
+ #pragma omp parallel for
+
+ for (int row = 0; row < ch; row++) {
+ for (int col = 0; col < cw; col++) {
+ oprevi->r(row, col) = (float)readyImg->r(row, col);
+ oprevi->g(row, col) = (float)readyImg->g(row, col);
+ oprevi->b(row, col) = (float)readyImg->b(row, col);
+ }
+ }
+
+ delete readyImg;
+
+ }
+ }
+ }
+
if ((todo & M_RGBCURVE) || (todo & M_CROP)) {
// if (hListener) oprevi->calcCroppedHistogram(params, scale, histCropped);
//complexCurve also calculated pre-curves histogram depending on crop
- CurveFactory::complexCurve (params.toneCurve.expcomp, params.toneCurve.black / 65535.0,
- params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh,
- params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast,
- params.toneCurve.curve, params.toneCurve.curve2,
- vhist16, hltonecurve, shtonecurve, tonecurve, histToneCurve, customToneCurve1, customToneCurve2, 1);
+ CurveFactory::complexCurve(params.toneCurve.expcomp, params.toneCurve.black / 65535.0,
+ params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh,
+ params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast,
+ params.toneCurve.curve, params.toneCurve.curve2,
+ vhist16, hltonecurve, shtonecurve, tonecurve, histToneCurve, customToneCurve1, customToneCurve2, 1);
- CurveFactory::RGBCurve (params.rgbCurves.rcurve, rCurve, 1);
- CurveFactory::RGBCurve (params.rgbCurves.gcurve, gCurve, 1);
- CurveFactory::RGBCurve (params.rgbCurves.bcurve, bCurve, 1);
+ CurveFactory::RGBCurve(params.rgbCurves.rcurve, rCurve, 1);
+ CurveFactory::RGBCurve(params.rgbCurves.gcurve, gCurve, 1);
+ CurveFactory::RGBCurve(params.rgbCurves.bcurve, bCurve, 1);
opautili = false;
if (params.colorToning.enabled) {
- TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.working);
+ TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params.icm.workingProfile);
double wp[3][3] = {
{wprof[0][0], wprof[0][1], wprof[0][2]},
{wprof[1][0], wprof[1][1], wprof[1][2]},
{wprof[2][0], wprof[2][1], wprof[2][2]}
};
- params.colorToning.getCurves (ctColorCurve, ctOpacityCurve, wp, opautili);
- CurveFactory::curveToning (params.colorToning.clcurve, clToningcurve, scale == 1 ? 1 : 16);
- CurveFactory::curveToning (params.colorToning.cl2curve, cl2Toningcurve, scale == 1 ? 1 : 16);
+ params.colorToning.getCurves(ctColorCurve, ctOpacityCurve, wp, opautili);
+ CurveFactory::curveToning(params.colorToning.clcurve, clToningcurve, scale == 1 ? 1 : 16);
+ CurveFactory::curveToning(params.colorToning.cl2curve, cl2Toningcurve, scale == 1 ? 1 : 16);
}
if (params.blackwhite.enabled) {
- CurveFactory::curveBW (params.blackwhite.beforeCurve, params.blackwhite.afterCurve, vhist16bw, histToneCurveBW, beforeToneCurveBW, afterToneCurveBW, 1);
+ CurveFactory::curveBW(params.blackwhite.beforeCurve, params.blackwhite.afterCurve, vhist16bw, histToneCurveBW, beforeToneCurveBW, afterToneCurveBW, 1);
}
colourToningSatLimit = float (params.colorToning.satProtectionThreshold) / 100.f * 0.7f + 0.3f;
@@ -503,7 +582,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
if (params.colorToning.enabled && params.colorToning.autosat && params.colorToning.method != "LabGrid") { //for colortoning evaluation of saturation settings
float moyS = 0.f;
float eqty = 0.f;
- ipf.moyeqt (oprevi, moyS, eqty);//return image : mean saturation and standard dev of saturation
+ ipf.moyeqt(oprevi, moyS, eqty); //return image : mean saturation and standard dev of saturation
//printf("moy=%f ET=%f\n", moyS,eqty);
float satp = ((moyS + 1.5f * eqty) - 0.3f) / 0.7f; //1.5 sigma ==> 93% pixels with high saturation -0.3 / 0.7 convert to Hombre scale
@@ -527,11 +606,11 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
if (actListener) {
//if(params.blackwhite.enabled) {actListener->autoColorTonChanged(0, satTH, satPR);}
if (params.blackwhite.enabled && params.colorToning.autosat) {
- actListener->autoColorTonChanged (0, satTH, satPR); //hide sliders only if autosat
+ actListener->autoColorTonChanged(0, satTH, satPR); //hide sliders only if autosat
indi = 0;
} else {
if (params.colorToning.autosat) {
- if (params.colorToning.method == "Lab") {
+ if (params.colorToning.method == "Lab") {
indi = 1;
} else if (params.colorToning.method == "RGBCurves") {
indi = 1;
@@ -549,32 +628,32 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
}
// if it's just crop we just need the histogram, no image updates
- if ( todo & M_RGBCURVE ) {
+ if (todo & M_RGBCURVE) {
//initialize rrm bbm ggm different from zero to avoid black screen in some cases
double rrm = 33.;
double ggm = 33.;
double bbm = 33.;
DCPProfile::ApplyState as;
- DCPProfile *dcpProf = imgsrc->getDCP (params.icm, as);
+ DCPProfile *dcpProf = imgsrc->getDCP(params.icm, as);
ipf.rgbProc (oprevi, oprevl, nullptr, hltonecurve, shtonecurve, tonecurve, params.toneCurve.saturation,
- rCurve, gCurve, bCurve, colourToningSatLimit, colourToningSatLimitOpacity, ctColorCurve, ctOpacityCurve, opautili, clToningcurve, cl2Toningcurve, customToneCurve1, customToneCurve2, beforeToneCurveBW, afterToneCurveBW, rrm, ggm, bbm, bwAutoR, bwAutoG, bwAutoB, params.toneCurve.expcomp, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, dcpProf, as, histToneCurve);
+ rCurve, gCurve, bCurve, colourToningSatLimit, colourToningSatLimitOpacity, ctColorCurve, ctOpacityCurve, opautili, clToningcurve, cl2Toningcurve, customToneCurve1, customToneCurve2, beforeToneCurveBW, afterToneCurveBW, rrm, ggm, bbm, bwAutoR, bwAutoG, bwAutoB, params.toneCurve.expcomp, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, dcpProf, as, histToneCurve);
if (params.blackwhite.enabled && params.blackwhite.autoc && abwListener) {
if (settings->verbose) {
- printf ("ImProcCoordinator / Auto B&W coefs: R=%.2f G=%.2f B=%.2f\n", bwAutoR, bwAutoG, bwAutoB);
+ printf("ImProcCoordinator / Auto B&W coefs: R=%.2f G=%.2f B=%.2f\n", bwAutoR, bwAutoG, bwAutoB);
}
- abwListener->BWChanged ((float) rrm, (float) ggm, (float) bbm);
+ abwListener->BWChanged((float) rrm, (float) ggm, (float) bbm);
}
if (params.colorToning.autosat && actListener) {
if (settings->verbose) {
- printf ("ImProcCoordinator / Auto CT: indi=%d satH=%d satPR=%d\n", indi, (int)colourToningSatLimit, (int) colourToningSatLimitOpacity);
+ printf("ImProcCoordinator / Auto CT: indi=%d satH=%d satPR=%d\n", indi, (int)colourToningSatLimit, (int) colourToningSatLimitOpacity);
}
- actListener->autoColorTonChanged (indi, (int) colourToningSatLimit, (int)colourToningSatLimitOpacity); //change sliders autosat
+ actListener->autoColorTonChanged(indi, (int) colourToningSatLimit, (int)colourToningSatLimitOpacity); //change sliders autosat
}
// correct GUI black and white with value
@@ -582,20 +661,20 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
// compute L channel histogram
int x1, y1, x2, y2;
- params.crop.mapToResized (pW, pH, scale, x1, x2, y1, y2);
+ params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2);
}
readyphase++;
if (todo & (M_LUMACURVE | M_CROP)) {
- LUTu lhist16 (32768);
+ LUTu lhist16(32768);
lhist16.clear();
#ifdef _OPENMP
- const int numThreads = min (max (pW * pH / (int)lhist16.getSize(), 1), omp_get_max_threads());
+ const int numThreads = min(max(pW * pH / (int)lhist16.getSize(), 1), omp_get_max_threads());
#pragma omp parallel num_threads(numThreads) if(numThreads>1)
#endif
{
- LUTu lhist16thr (lhist16.getSize());
+ LUTu lhist16thr(lhist16.getSize());
lhist16thr.clear();
#ifdef _OPENMP
#pragma omp for nowait
@@ -603,7 +682,7 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
for (int x = 0; x < pH; x++)
for (int y = 0; y < pW; y++) {
- int pos = (int) (oprevl->L[x][y]);
+ int pos = (int)(oprevl->L[x][y]);
lhist16thr[pos]++;
}
@@ -613,31 +692,31 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
lhist16 += lhist16thr;
}
#ifdef _OPENMP
- static_cast (numThreads); // to silence cppcheck warning
+ static_cast(numThreads); // to silence cppcheck warning
#endif
- CurveFactory::complexLCurve (params.labCurve.brightness, params.labCurve.contrast, params.labCurve.lcurve, lhist16, lumacurve, histLCurve, scale == 1 ? 1 : 16, utili);
+ CurveFactory::complexLCurve(params.labCurve.brightness, params.labCurve.contrast, params.labCurve.lcurve, lhist16, lumacurve, histLCurve, scale == 1 ? 1 : 16, utili);
}
if (todo & M_LUMACURVE) {
- CurveFactory::curveCL (clcutili, params.labCurve.clcurve, clcurve, scale == 1 ? 1 : 16);
+ CurveFactory::curveCL(clcutili, params.labCurve.clcurve, clcurve, scale == 1 ? 1 : 16);
- CurveFactory::complexsgnCurve (autili, butili, ccutili, cclutili, params.labCurve.acurve, params.labCurve.bcurve, params.labCurve.cccurve,
- params.labCurve.lccurve, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, scale == 1 ? 1 : 16);
+ CurveFactory::complexsgnCurve(autili, butili, ccutili, cclutili, params.labCurve.acurve, params.labCurve.bcurve, params.labCurve.cccurve,
+ params.labCurve.lccurve, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, scale == 1 ? 1 : 16);
}
- if (todo & (M_LUMINANCE + M_COLOR) ) {
- nprevl->CopyFrom (oprevl);
+ if (todo & (M_LUMINANCE + M_COLOR)) {
+ nprevl->CopyFrom(oprevl);
- progress ("Applying Color Boost...", 100 * readyphase / numofphases);
+ progress("Applying Color Boost...", 100 * readyphase / numofphases);
// ipf.MSR(nprevl, nprevl->W, nprevl->H, 1);
histCCurve.clear();
histLCurve.clear();
- ipf.chromiLuminanceCurve (nullptr, pW, nprevl, nprevl, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, histCCurve, histLCurve);
- ipf.vibrance (nprevl);
+ ipf.chromiLuminanceCurve(nullptr, pW, nprevl, nprevl, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, histCCurve, histLCurve);
+ ipf.vibrance(nprevl);
- if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) {
- ipf.EPDToneMap (nprevl, 5, scale);
+ if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) {
+ ipf.EPDToneMap(nprevl, 5, scale);
}
// for all treatments Defringe, Sharpening, Contrast detail , Microcontrast they are activated if "CIECAM" function are disabled
@@ -684,9 +763,9 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
}
*/
if (params.dirpyrequalizer.cbdlMethod == "aft") {
- if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) ) {
- progress ("Pyramid wavelet...", 100 * readyphase / numofphases);
- ipf.dirpyrequalizer (nprevl, scale);
+ if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled))) {
+ progress("Pyramid wavelet...", 100 * readyphase / numofphases);
+ ipf.dirpyrequalizer(nprevl, scale);
//ipf.Lanczoslab (ip_wavelet(LabImage * lab, LabImage * dst, const procparams::EqualizerParams & eqparams), nprevl, 1.f/scale);
readyphase++;
}
@@ -695,18 +774,18 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
wavcontlutili = false;
//CurveFactory::curveWavContL ( wavcontlutili,params.wavelet.lcurve, wavclCurve, LUTu & histogramwavcl, LUTu & outBeforeWavCLurveHistogram,int skip);
- CurveFactory::curveWavContL (wavcontlutili, params.wavelet.wavclCurve, wavclCurve, scale == 1 ? 1 : 16);
+ CurveFactory::curveWavContL(wavcontlutili, params.wavelet.wavclCurve, wavclCurve, scale == 1 ? 1 : 16);
if ((params.wavelet.enabled)) {
WaveletParams WaveParams = params.wavelet;
// WaveParams.getCurves(wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY);
- WaveParams.getCurves (wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL);
+ WaveParams.getCurves(wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL);
int kall = 0;
- progress ("Wavelet...", 100 * readyphase / numofphases);
+ progress("Wavelet...", 100 * readyphase / numofphases);
// ipf.ip_wavelet(nprevl, nprevl, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, scale);
- ipf.ip_wavelet (nprevl, nprevl, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, wavclCurve, scale);
+ ipf.ip_wavelet(nprevl, nprevl, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, wavclCurve, scale);
}
@@ -715,26 +794,27 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
//L histo and Chroma histo for ciecam
// histogram well be for Lab (Lch) values, because very difficult to do with J,Q, M, s, C
int x1, y1, x2, y2;
- params.crop.mapToResized (pW, pH, scale, x1, x2, y1, y2);
+ params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2);
lhist16CAM.clear();
lhist16CCAM.clear();
if (!params.colorappearance.datacie) {
for (int x = 0; x < pH; x++)
for (int y = 0; y < pW; y++) {
- int pos = CLIP ((int) (nprevl->L[x][y]));
- int posc = CLIP ((int)sqrt (nprevl->a[x][y] * nprevl->a[x][y] + nprevl->b[x][y] * nprevl->b[x][y]));
+ int pos = CLIP((int)(nprevl->L[x][y]));
+ int posc = CLIP((int)sqrt(nprevl->a[x][y] * nprevl->a[x][y] + nprevl->b[x][y] * nprevl->b[x][y]));
lhist16CAM[pos]++;
lhist16CCAM[posc]++;
}
}
- CurveFactory::curveLightBrightColor (params.colorappearance.curve, params.colorappearance.curve2, params.colorappearance.curve3,
- lhist16CAM, histLCAM, lhist16CCAM, histCCAM,
- customColCurve1, customColCurve2, customColCurve3, 1);
+ CurveFactory::curveLightBrightColor(params.colorappearance.curve, params.colorappearance.curve2, params.colorappearance.curve3,
+ lhist16CAM, histLCAM, lhist16CCAM, histCCAM,
+ customColCurve1, customColCurve2, customColCurve3, 1);
const FramesMetaData* metaData = imgsrc->getMetaData();
int imgNum = 0;
+
if (imgsrc->isRAW()) {
if (imgsrc->getSensorType() == ST_BAYER) {
imgNum = rtengine::LIM(params.raw.bayersensor.imageNum, 0, metaData->getFrameCount() - 1);
@@ -743,19 +823,19 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
}
}
- float fnum = metaData->getFNumber (imgNum); // F number
- float fiso = metaData->getISOSpeed (imgNum) ; // ISO
- float fspeed = metaData->getShutterSpeed (imgNum) ; // Speed
- double fcomp = metaData->getExpComp (imgNum); // Compensation +/-
+ float fnum = metaData->getFNumber(imgNum); // F number
+ float fiso = metaData->getISOSpeed(imgNum) ; // ISO
+ float fspeed = metaData->getShutterSpeed(imgNum) ; // Speed
+ double fcomp = metaData->getExpComp(imgNum); // Compensation +/-
double adap;
if (fnum < 0.3f || fiso < 5.f || fspeed < 0.00001f) { //if no exif data or wrong
adap = 2000.;
} else {
- double E_V = fcomp + log2 (double ((fnum * fnum) / fspeed / (fiso / 100.f)));
+ double E_V = fcomp + log2(double ((fnum * fnum) / fspeed / (fiso / 100.f)));
E_V += params.toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV
- E_V += log2 (params.raw.expos); // exposure raw white point ; log2 ==> linear to EV
- adap = powf (2.f, E_V - 3.f); // cd / m2
+ E_V += log2(params.raw.expos); // exposure raw white point ; log2 ==> linear to EV
+ adap = powf(2.f, E_V - 3.f); // cd / m2
// end calculation adaptation scene luminosity
}
@@ -763,15 +843,15 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
bool execsharp = false;
if (!ncie) {
- ncie = new CieImage (pW, pH);
+ ncie = new CieImage(pW, pH);
}
if (!CAMBrightCurveJ && (params.colorappearance.algo == "JC" || params.colorappearance.algo == "JS" || params.colorappearance.algo == "ALL")) {
- CAMBrightCurveJ (32768, 0);
+ CAMBrightCurveJ(32768, 0);
}
if (!CAMBrightCurveQ && (params.colorappearance.algo == "QM" || params.colorappearance.algo == "ALL")) {
- CAMBrightCurveQ (32768, 0);
+ CAMBrightCurveQ(32768, 0);
}
// Issue 2785, only float version of ciecam02 for navigator and pan background
@@ -779,18 +859,18 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
CAMBrightCurveJ.dirty = true;
CAMBrightCurveQ.dirty = true;
- ipf.ciecam_02float (ncie, float (adap), pW, 2, nprevl, ¶ms, customColCurve1, customColCurve2, customColCurve3, histLCAM, histCCAM, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, scale, execsharp, d, dj, yb, 1);
+ ipf.ciecam_02float(ncie, float (adap), pW, 2, nprevl, ¶ms, customColCurve1, customColCurve2, customColCurve3, histLCAM, histCCAM, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, scale, execsharp, d, dj, yb, 1);
if ((params.colorappearance.autodegree || params.colorappearance.autodegreeout) && acListener && params.colorappearance.enabled) {
- acListener->autoCamChanged (100.* (double)d, 100.* (double)dj);
+ acListener->autoCamChanged(100.* (double)d, 100.* (double)dj);
}
if (params.colorappearance.autoadapscen && acListener && params.colorappearance.enabled) {
- acListener->adapCamChanged (adap); //real value of adapt scene
+ acListener->adapCamChanged(adap); //real value of adapt scene
}
if (params.colorappearance.autoybscen && acListener && params.colorappearance.enabled) {
- acListener->ybCamChanged ((int) yb); //real value Yb scene
+ acListener->ybCamChanged((int) yb); //real value Yb scene
}
readyphase++;
@@ -813,33 +893,33 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
}
// Update the monitor color transform if necessary
- if ((todo & M_MONITOR) || (lastOutputProfile != params.icm.output) || lastOutputIntent != params.icm.outputIntent || lastOutputBPC != params.icm.outputBPC) {
- lastOutputProfile = params.icm.output;
+ if ((todo & M_MONITOR) || (lastOutputProfile != params.icm.outputProfile) || lastOutputIntent != params.icm.outputIntent || lastOutputBPC != params.icm.outputBPC) {
+ lastOutputProfile = params.icm.outputProfile;
lastOutputIntent = params.icm.outputIntent;
lastOutputBPC = params.icm.outputBPC;
- ipf.updateColorProfiles (monitorProfile, monitorIntent, softProof, gamutCheck);
+ ipf.updateColorProfiles(monitorProfile, monitorIntent, softProof, gamutCheck);
}
// process crop, if needed
for (size_t i = 0; i < crops.size(); i++)
- if (crops[i]->hasListener () && cropCall != crops[i] ) {
- crops[i]->update (todo); // may call ourselves
+ if (crops[i]->hasListener() && cropCall != crops[i]) {
+ crops[i]->update(todo); // may call ourselves
}
- progress ("Conversion to RGB...", 100 * readyphase / numofphases);
+ progress("Conversion to RGB...", 100 * readyphase / numofphases);
if ((todo != CROP && todo != MINUPDATE) || (todo & M_MONITOR)) {
- MyMutex::MyLock prevImgLock (previmg->getMutex());
+ MyMutex::MyLock prevImgLock(previmg->getMutex());
try {
// Computing the preview image, i.e. converting from WCS->Monitor color space (soft-proofing disabled) or WCS->Printer profile->Monitor color space (soft-proofing enabled)
- ipf.lab2monitorRgb (nprevl, previmg);
+ ipf.lab2monitorRgb(nprevl, previmg);
// Computing the internal image for analysis, i.e. conversion from WCS->Output profile
delete workimg;
- workimg = ipf.lab2rgb (nprevl, 0, 0, pW, pH, params.icm);
+ workimg = ipf.lab2rgb(nprevl, 0, 0, pW, pH, params.icm);
} catch (char * str) {
- progress ("Error converting file...", 0);
+ progress("Error converting file...", 0);
return;
}
}
@@ -848,31 +928,31 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
resultValid = true;
if (imageListener) {
- imageListener->setImage (previmg, scale, params.crop);
+ imageListener->setImage(previmg, scale, params.crop);
}
}
if (imageListener)
// TODO: The WB tool should be advertised too in order to get the AutoWB's temp and green values
{
- imageListener->imageReady (params.crop);
+ imageListener->imageReady(params.crop);
}
readyphase++;
if (hListener) {
- updateLRGBHistograms ();
- hListener->histogramChanged (histRed, histGreen, histBlue, histLuma, histToneCurve, histLCurve, histCCurve, /*histCLurve, histLLCurve,*/ histLCAM, histCCAM, histRedRaw, histGreenRaw, histBlueRaw, histChroma, histLRETI);
+ updateLRGBHistograms();
+ hListener->histogramChanged(histRed, histGreen, histBlue, histLuma, histToneCurve, histLCurve, histCCurve, /*histCLurve, histLLCurve,*/ histLCAM, histCCAM, histRedRaw, histGreenRaw, histBlueRaw, histChroma, histLRETI);
}
}
-void ImProcCoordinator::freeAll ()
+void ImProcCoordinator::freeAll()
{
if (settings->verbose) {
- printf ("freeall starts %d\n", (int)allocated);
+ printf("freeall starts %d\n", (int)allocated);
}
if (allocated) {
@@ -895,7 +975,7 @@ void ImProcCoordinator::freeAll ()
ncie = nullptr;
if (imageListener) {
- imageListener->delImage (previmg);
+ imageListener->delImage(previmg);
} else {
delete previmg;
}
@@ -913,44 +993,44 @@ void ImProcCoordinator::freeAll ()
*
* @param prevscale New Preview's scale.
*/
-void ImProcCoordinator::setScale (int prevscale)
+void ImProcCoordinator::setScale(int prevscale)
{
if (settings->verbose) {
- printf ("setscale before lock\n");
+ printf("setscale before lock\n");
}
- tr = getCoarseBitMask (params.coarse);
+ tr = getCoarseBitMask(params.coarse);
int nW, nH;
- imgsrc->getFullSize (fw, fh, tr);
+ imgsrc->getFullSize(fw, fh, tr);
prevscale++;
do {
prevscale--;
- PreviewProps pp (0, 0, fw, fh, prevscale);
- imgsrc->getSize (pp, nW, nH);
- } while (nH < 400 && prevscale > 1 && (nW * nH < 1000000) ); // sctually hardcoded values, perhaps a better choice is possible
+ PreviewProps pp(0, 0, fw, fh, prevscale);
+ imgsrc->getSize(pp, nW, nH);
+ } while (nH < 400 && prevscale > 1 && (nW * nH < 1000000)); // sctually hardcoded values, perhaps a better choice is possible
if (settings->verbose) {
- printf ("setscale starts (%d, %d)\n", nW, nH);
+ printf("setscale starts (%d, %d)\n", nW, nH);
}
if (nW != pW || nH != pH) {
- freeAll ();
+ freeAll();
pW = nW;
pH = nH;
- orig_prev = new Imagefloat (pW, pH);
+ orig_prev = new Imagefloat(pW, pH);
oprevi = orig_prev;
- oprevl = new LabImage (pW, pH);
- nprevl = new LabImage (pW, pH);
+ oprevl = new LabImage(pW, pH);
+ nprevl = new LabImage(pW, pH);
//ncie is only used in ImProcCoordinator::updatePreviewImage, it will be allocated on first use and deleted if not used anymore
- previmg = new Image8 (pW, pH);
- workimg = new Image8 (pW, pH);
+ previmg = new Image8(pW, pH);
+ workimg = new Image8(pW, pH);
allocated = true;
}
@@ -961,26 +1041,26 @@ void ImProcCoordinator::setScale (int prevscale)
fullh = fh;
if (settings->verbose) {
- printf ("setscale ends\n");
+ printf("setscale ends\n");
}
if (!sizeListeners.empty())
for (size_t i = 0; i < sizeListeners.size(); i++) {
- sizeListeners[i]->sizeChanged (fullw, fullh, fw, fh);
+ sizeListeners[i]->sizeChanged(fullw, fullh, fw, fh);
}
if (settings->verbose) {
- printf ("setscale ends2\n");
+ printf("setscale ends2\n");
}
}
-void ImProcCoordinator::updateLRGBHistograms ()
+void ImProcCoordinator::updateLRGBHistograms()
{
int x1, y1, x2, y2;
- params.crop.mapToResized (pW, pH, scale, x1, x2, y1, y2);
+ params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2);
#pragma omp parallel sections
{
@@ -991,7 +1071,7 @@ void ImProcCoordinator::updateLRGBHistograms ()
for (int i = y1; i < y2; i++)
for (int j = x1; j < x2; j++)
{
- histChroma[ (int) (sqrtf (SQR (nprevl->a[i][j]) + SQR (nprevl->b[i][j])) / 188.f)]++; //188 = 48000/256
+ histChroma[(int)(sqrtf(SQR(nprevl->a[i][j]) + SQR(nprevl->b[i][j])) / 188.f)]++; //188 = 48000/256
}
}
#pragma omp section
@@ -1001,7 +1081,7 @@ void ImProcCoordinator::updateLRGBHistograms ()
for (int i = y1; i < y2; i++)
for (int j = x1; j < x2; j++)
{
- histLuma[ (int) (nprevl->L[i][j] / 128.f)]++;
+ histLuma[(int)(nprevl->L[i][j] / 128.f)]++;
}
}
#pragma omp section
@@ -1029,7 +1109,7 @@ void ImProcCoordinator::updateLRGBHistograms ()
}
-void ImProcCoordinator::progress (Glib::ustring str, int pr)
+void ImProcCoordinator::progress(Glib::ustring str, int pr)
{
/* if (plistener) {
@@ -1038,28 +1118,28 @@ void ImProcCoordinator::progress (Glib::ustring str, int pr)
}*/
}
-bool ImProcCoordinator::getAutoWB (double& temp, double& green, double equal, double tempBias)
+bool ImProcCoordinator::getAutoWB(double& temp, double& green, double equal, double tempBias)
{
if (imgsrc) {
if (lastAwbEqual != equal || lastAwbTempBias != tempBias) {
// Issue 2500 MyMutex::MyLock lock(minit); // Also used in crop window
double rm, gm, bm;
- imgsrc->getAutoWBMultipliers (rm, gm, bm);
+ imgsrc->getAutoWBMultipliers(rm, gm, bm);
if (rm != -1) {
- autoWB.update (rm, gm, bm, equal, tempBias);
+ autoWB.update(rm, gm, bm, equal, tempBias);
lastAwbEqual = equal;
lastAwbTempBias = tempBias;
} else {
lastAwbEqual = -1.;
- autoWB.useDefaults (equal);
+ autoWB.useDefaults(equal);
lastAwbTempBias = 0.0;
}
}
- temp = autoWB.getTemp ();
- green = autoWB.getGreen ();
+ temp = autoWB.getTemp();
+ green = autoWB.getGreen();
return true;
} else {
//temp = autoWB.getTemp();
@@ -1069,64 +1149,64 @@ bool ImProcCoordinator::getAutoWB (double& temp, double& green, double equal, do
}
}
-void ImProcCoordinator::getCamWB (double& temp, double& green)
+void ImProcCoordinator::getCamWB(double& temp, double& green)
{
if (imgsrc) {
- temp = imgsrc->getWB().getTemp ();
- green = imgsrc->getWB().getGreen ();
+ temp = imgsrc->getWB().getTemp();
+ green = imgsrc->getWB().getGreen();
}
}
-void ImProcCoordinator::getSpotWB (int x, int y, int rect, double& temp, double& tgreen)
+void ImProcCoordinator::getSpotWB(int x, int y, int rect, double& temp, double& tgreen)
{
ColorTemp ret;
{
- MyMutex::MyLock lock (mProcessing);
+ MyMutex::MyLock lock(mProcessing);
std::vector points, red, green, blue;
for (int i = y - rect; i <= y + rect; i++)
for (int j = x - rect; j <= x + rect; j++) {
- points.push_back (Coord2D (j, i));
+ points.push_back(Coord2D(j, i));
}
- ipf.transCoord (fw, fh, points, red, green, blue);
+ ipf.transCoord(fw, fh, points, red, green, blue);
- int tr = getCoarseBitMask (params.coarse);
+ int tr = getCoarseBitMask(params.coarse);
- ret = imgsrc->getSpotWB (red, green, blue, tr, params.wb.equal);
- currWB = ColorTemp (params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method);
+ ret = imgsrc->getSpotWB(red, green, blue, tr, params.wb.equal);
+ currWB = ColorTemp(params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method);
//double rr,gg,bb;
//currWB.getMultipliers(rr,gg,bb);
} // end of mutex lockong
if (ret.getTemp() > 0) {
- temp = ret.getTemp ();
- tgreen = ret.getGreen ();
+ temp = ret.getTemp();
+ tgreen = ret.getGreen();
} else {
- temp = currWB.getTemp ();
- tgreen = currWB.getGreen ();
+ temp = currWB.getTemp();
+ tgreen = currWB.getGreen();
}
}
-void ImProcCoordinator::getAutoCrop (double ratio, int &x, int &y, int &w, int &h)
+void ImProcCoordinator::getAutoCrop(double ratio, int &x, int &y, int &w, int &h)
{
- MyMutex::MyLock lock (mProcessing);
+ MyMutex::MyLock lock(mProcessing);
LensCorrection *pLCPMap = nullptr;
if (params.lensProf.useLcp() && imgsrc->getMetaData()->getFocalLen() > 0) {
- const std::shared_ptr pLCPProf = LCPStore::getInstance()->getProfile (params.lensProf.lcpFile);
+ const std::shared_ptr pLCPProf = LCPStore::getInstance()->getProfile(params.lensProf.lcpFile);
- if (pLCPProf) pLCPMap = new LCPMapper (pLCPProf, imgsrc->getMetaData()->getFocalLen(), imgsrc->getMetaData()->getFocalLen35mm(), imgsrc->getMetaData()->getFocusDist(),
- 0, false, params.lensProf.useDist, fullw, fullh, params.coarse, imgsrc->getRotateDegree());
+ if (pLCPProf) pLCPMap = new LCPMapper(pLCPProf, imgsrc->getMetaData()->getFocalLen(), imgsrc->getMetaData()->getFocalLen35mm(), imgsrc->getMetaData()->getFocusDist(),
+ 0, false, params.lensProf.useDist, fullw, fullh, params.coarse, imgsrc->getRotateDegree());
}
- double fillscale = ipf.getTransformAutoFill (fullw, fullh, pLCPMap);
+ double fillscale = ipf.getTransformAutoFill(fullw, fullh, pLCPMap);
if (ratio > 0) {
w = fullw * fillscale;
@@ -1145,25 +1225,25 @@ void ImProcCoordinator::getAutoCrop (double ratio, int &x, int &y, int &w, int &
y = (fullh - h) / 2;
}
-void ImProcCoordinator::setMonitorProfile (const Glib::ustring& profile, RenderingIntent intent)
+void ImProcCoordinator::setMonitorProfile(const Glib::ustring& profile, RenderingIntent intent)
{
monitorProfile = profile;
monitorIntent = intent;
}
-void ImProcCoordinator::getMonitorProfile (Glib::ustring& profile, RenderingIntent& intent) const
+void ImProcCoordinator::getMonitorProfile(Glib::ustring& profile, RenderingIntent& intent) const
{
profile = monitorProfile;
intent = monitorIntent;
}
-void ImProcCoordinator::setSoftProofing (bool softProof, bool gamutCheck)
+void ImProcCoordinator::setSoftProofing(bool softProof, bool gamutCheck)
{
this->softProof = softProof;
this->gamutCheck = gamutCheck;
}
-void ImProcCoordinator::getSoftProofing (bool &softProof, bool &gamutCheck)
+void ImProcCoordinator::getSoftProofing(bool &softProof, bool &gamutCheck)
{
softProof = this->softProof;
gamutCheck = this->gamutCheck;
@@ -1174,41 +1254,41 @@ void ImProcCoordinator::setSharpMask (bool sharpMask)
this->sharpMask = sharpMask;
}
-void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool apply_wb)
+void ImProcCoordinator::saveInputICCReference(const Glib::ustring& fname, bool apply_wb)
{
- MyMutex::MyLock lock (mProcessing);
+ MyMutex::MyLock lock(mProcessing);
int fW, fH;
- int tr = getCoarseBitMask (params.coarse);
+ int tr = getCoarseBitMask(params.coarse);
- imgsrc->getFullSize (fW, fH, tr);
- PreviewProps pp (0, 0, fW, fH, 1);
+ imgsrc->getFullSize(fW, fH, tr);
+ PreviewProps pp(0, 0, fW, fH, 1);
ProcParams ppar = params;
ppar.toneCurve.hrenabled = false;
- ppar.icm.input = "(none)";
- Imagefloat* im = new Imagefloat (fW, fH);
- imgsrc->preprocess ( ppar.raw, ppar.lensProf, ppar.coarse );
+ ppar.icm.inputProfile = "(none)";
+ Imagefloat* im = new Imagefloat(fW, fH);
+ imgsrc->preprocess(ppar.raw, ppar.lensProf, ppar.coarse);
double dummy = 0.0;
- imgsrc->demosaic (ppar.raw, false, dummy);
- ColorTemp currWB = ColorTemp (params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method);
+ imgsrc->demosaic(ppar.raw, false, dummy);
+ ColorTemp currWB = ColorTemp(params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method);
if (params.wb.method == "Camera") {
- currWB = imgsrc->getWB ();
+ currWB = imgsrc->getWB();
} else if (params.wb.method == "Auto") {
if (lastAwbEqual != params.wb.equal || lastAwbTempBias != params.wb.tempBias) {
double rm, gm, bm;
- imgsrc->getAutoWBMultipliers (rm, gm, bm);
+ imgsrc->getAutoWBMultipliers(rm, gm, bm);
if (rm != -1.) {
- autoWB.update (rm, gm, bm, params.wb.equal, params.wb.tempBias);
+ autoWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias);
lastAwbEqual = params.wb.equal;
lastAwbTempBias = params.wb.tempBias;
} else {
lastAwbEqual = -1.;
lastAwbTempBias = 0.0;
- autoWB.useDefaults (params.wb.equal);
+ autoWB.useDefaults(params.wb.equal);
}
}
@@ -1219,19 +1299,19 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool
currWB = ColorTemp(); // = no white balance
}
- imgsrc->getImage (currWB, tr, im, pp, ppar.toneCurve, ppar.raw);
- ImProcFunctions ipf (&ppar, true);
+ imgsrc->getImage(currWB, tr, im, pp, ppar.toneCurve, ppar.raw);
+ ImProcFunctions ipf(&ppar, true);
if (ipf.needsTransform()) {
- Imagefloat* trImg = new Imagefloat (fW, fH);
- ipf.transform (im, trImg, 0, 0, 0, 0, fW, fH, fW, fH,
- imgsrc->getMetaData(), imgsrc->getRotateDegree(), true);
+ Imagefloat* trImg = new Imagefloat(fW, fH);
+ ipf.transform(im, trImg, 0, 0, 0, 0, fW, fH, fW, fH,
+ imgsrc->getMetaData(), imgsrc->getRotateDegree(), true);
delete im;
im = trImg;
}
if (params.crop.enabled) {
- Imagefloat *tmpim = new Imagefloat (params.crop.w, params.crop.h);
+ Imagefloat *tmpim = new Imagefloat(params.crop.w, params.crop.h);
int cx = params.crop.x;
int cy = params.crop.y;
int cw = params.crop.w;
@@ -1240,9 +1320,9 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool
for (int i = cy; i < cy + ch; i++) {
for (int j = cx; j < cx + cw; j++) {
- tmpim->r (i - cy, j - cx) = im->r (i, j);
- tmpim->g (i - cy, j - cx) = im->g (i, j);
- tmpim->b (i - cy, j - cx) = im->b (i, j);
+ tmpim->r(i - cy, j - cx) = im->r(i, j);
+ tmpim->g(i - cy, j - cx) = im->g(i, j);
+ tmpim->b(i - cy, j - cx) = im->b(i, j);
}
}
@@ -1255,146 +1335,149 @@ void ImProcCoordinator::saveInputICCReference (const Glib::ustring& fname, bool
for (int i = 0; i < im->getHeight(); i++) {
for (int j = 0; j < im->getWidth(); j++) {
- im->r (i, j) = CLIP (im->r (i, j));
- im->g (i, j) = CLIP (im->g (i, j));
- im->b (i, j) = CLIP (im->b (i, j));
+ im->r(i, j) = CLIP(im->r(i, j));
+ im->g(i, j) = CLIP(im->g(i, j));
+ im->b(i, j) = CLIP(im->b(i, j));
}
}
int imw, imh;
- double tmpScale = ipf.resizeScale (¶ms, fW, fH, imw, imh);
+ double tmpScale = ipf.resizeScale(¶ms, fW, fH, imw, imh);
if (tmpScale != 1.0) {
- Imagefloat* tempImage = new Imagefloat (imw, imh);
- ipf.resize (im, tempImage, tmpScale);
+ Imagefloat* tempImage = new Imagefloat(imw, imh);
+ ipf.resize(im, tempImage, tmpScale);
delete im;
im = tempImage;
}
- im->setMetadata (imgsrc->getMetaData()->getRootExifData ());
+ im->setMetadata(imgsrc->getMetaData()->getRootExifData());
- im->saveTIFF (fname, 16, true);
+ im->saveTIFF(fname, 16, true);
delete im;
if (plistener) {
- plistener->setProgressState (false);
+ plistener->setProgressState(false);
}
//im->saveJPEG (fname, 85);
}
-void ImProcCoordinator::stopProcessing ()
+void ImProcCoordinator::stopProcessing()
{
- updaterThreadStart.lock ();
+ updaterThreadStart.lock();
if (updaterRunning && thread) {
changeSinceLast = 0;
- thread->join ();
+ thread->join();
}
- updaterThreadStart.unlock ();
+ updaterThreadStart.unlock();
}
-void ImProcCoordinator::startProcessing ()
+void ImProcCoordinator::startProcessing()
{
#undef THREAD_PRIORITY_NORMAL
if (!destroying) {
if (!updaterRunning) {
- updaterThreadStart.lock ();
+ updaterThreadStart.lock();
thread = nullptr;
updaterRunning = true;
- updaterThreadStart.unlock ();
+ updaterThreadStart.unlock();
//batchThread->yield(); //the running batch should wait other threads to avoid conflict
- thread = Glib::Thread::create (sigc::mem_fun (*this, &ImProcCoordinator::process), 0, true, true, Glib::THREAD_PRIORITY_NORMAL);
+ thread = Glib::Thread::create(sigc::mem_fun(*this, &ImProcCoordinator::process), 0, true, true, Glib::THREAD_PRIORITY_NORMAL);
}
}
}
-void ImProcCoordinator::startProcessing (int changeCode)
+void ImProcCoordinator::startProcessing(int changeCode)
{
paramsUpdateMutex.lock();
changeSinceLast |= changeCode;
paramsUpdateMutex.unlock();
- startProcessing ();
+ startProcessing();
}
-void ImProcCoordinator::process ()
+void ImProcCoordinator::process()
{
if (plistener) {
- plistener->setProgressState (true);
+ plistener->setProgressState(true);
}
- paramsUpdateMutex.lock ();
+ paramsUpdateMutex.lock();
while (changeSinceLast) {
params = nextParams;
int change = changeSinceLast;
changeSinceLast = 0;
- paramsUpdateMutex.unlock ();
+ paramsUpdateMutex.unlock();
// M_VOID means no update, and is a bit higher that the rest
if (change & (M_VOID - 1)) {
- updatePreviewImage (change);
+ updatePreviewImage(change);
}
- paramsUpdateMutex.lock ();
+ paramsUpdateMutex.lock();
}
- paramsUpdateMutex.unlock ();
+ paramsUpdateMutex.unlock();
updaterRunning = false;
if (plistener) {
- plistener->setProgressState (false);
+ plistener->setProgressState(false);
}
}
-ProcParams* ImProcCoordinator::beginUpdateParams ()
+ProcParams* ImProcCoordinator::beginUpdateParams()
{
- paramsUpdateMutex.lock ();
+ paramsUpdateMutex.lock();
return &nextParams;
}
-void ImProcCoordinator::endUpdateParams (ProcEvent change)
+void ImProcCoordinator::endUpdateParams(ProcEvent change)
{
int action = RefreshMapper::getInstance()->getAction(change);
endUpdateParams(action);
}
-void ImProcCoordinator::endUpdateParams (int changeFlags)
+void ImProcCoordinator::endUpdateParams(int changeFlags)
{
changeSinceLast |= changeFlags;
- paramsUpdateMutex.unlock ();
- startProcessing ();
+ paramsUpdateMutex.unlock();
+ startProcessing();
}
-bool ImProcCoordinator::getHighQualComputed() {
+bool ImProcCoordinator::getHighQualComputed()
+{
// this function may only be called from detail windows
- if(!highQualityComputed) {
- if(options.prevdemo == PD_Sidecar) {
+ if (!highQualityComputed) {
+ if (options.prevdemo == PD_Sidecar) {
// we already have high quality preview
setHighQualComputed();
} else {
for (size_t i = 0; i < crops.size() - 1; ++i) { // -1, because last entry is the freshly created detail window
- if (crops[i]->get_skip() == 1 ) { // there is at least one crop with skip == 1 => we already have high quality preview
+ if (crops[i]->get_skip() == 1) { // there is at least one crop with skip == 1 => we already have high quality preview
setHighQualComputed();
break;
}
}
}
}
+
return highQualityComputed;
}
-void ImProcCoordinator::setHighQualComputed() {
+void ImProcCoordinator::setHighQualComputed()
+{
highQualityComputed = true;
}
diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc
index 670a6c825..232533292 100644
--- a/rtengine/improcfun.cc
+++ b/rtengine/improcfun.cc
@@ -296,7 +296,7 @@ void ImProcFunctions::updateColorProfiles (const Glib::ustring& monitorProfile,
#if !defined(__APPLE__) // No support for monitor profiles on OS X, all data is sRGB
monitor = ICCStore::getInstance()->getProfile (monitorProfile);
#else
- monitor = ICCStore::getInstance()->getProfile ("RT_sRGB");
+ monitor = ICCStore::getInstance()->getProfile (options.rtSettings.srgb);
#endif
}
@@ -324,7 +324,7 @@ void ImProcFunctions::updateColorProfiles (const Glib::ustring& monitorProfile,
}
outIntent = settings->printerIntent;
} else {
- oprof = ICCStore::getInstance()->getProfile(params->icm.output);
+ oprof = ICCStore::getInstance()->getProfile(params->icm.outputProfile);
if (params->icm.outputBPC) {
flags |= cmsFLAGS_BLACKPOINTCOMPENSATION;
}
@@ -397,7 +397,7 @@ void ImProcFunctions::updateColorProfiles (const Glib::ustring& monitorProfile,
void ImProcFunctions::firstAnalysis (const Imagefloat* const original, const ProcParams ¶ms, LUTu & histogram)
{
- TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.working);
+ TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.workingProfile);
lumimul[0] = wprof[1][0];
lumimul[1] = wprof[1][1];
@@ -959,7 +959,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw
//matrix for current working space
- TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.working);
+ TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.workingProfile);
const float wip[3][3] = {
{ (float)wiprof[0][0], (float)wiprof[0][1], (float)wiprof[0][2]},
{ (float)wiprof[1][0], (float)wiprof[1][1], (float)wiprof[1][2]},
@@ -2041,8 +2041,8 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
}
}
- TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params->icm.working);
- TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.working);
+ TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params->icm.workingProfile);
+ TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.workingProfile);
float toxyz[3][3] = {
{
@@ -2151,7 +2151,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
hald_clut = CLUTStore::getInstance().getClut ( params->filmSimulation.clutFilename );
if ( hald_clut ) {
- clutAndWorkingProfilesAreSame = hald_clut->getProfile() == params->icm.working;
+ clutAndWorkingProfilesAreSame = hald_clut->getProfile() == params->icm.workingProfile;
if ( !clutAndWorkingProfilesAreSame ) {
xyz2clut = ICCStore::getInstance()->workingSpaceInverseMatrix ( hald_clut->getProfile() );
@@ -2180,7 +2180,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
const float comp = (max (0.0, expcomp) + 1.0) * hlcompr / 100.0;
const float shoulder = ((65536.0 / max (1.0f, exp_scale)) * (hlcomprthresh / 200.0)) + 0.1;
const float hlrange = 65536.0 - shoulder;
- const bool isProPhoto = (params->icm.working == "ProPhoto");
+ const bool isProPhoto = (params->icm.workingProfile == "ProPhoto");
// extracting datas from 'params' to avoid cache flush (to be confirmed)
ToneCurveParams::TcMode curveMode = params->toneCurve.curveMode;
ToneCurveParams::TcMode curveMode2 = params->toneCurve.curveMode2;
@@ -2197,12 +2197,12 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer
if (hasToneCurve1 && curveMode == ToneCurveParams::TcMode::PERCEPTUAL) {
const PerceptualToneCurve& userToneCurve = static_cast (customToneCurve1);
- userToneCurve.initApplyState (ptc1ApplyState, params->icm.working);
+ userToneCurve.initApplyState (ptc1ApplyState, params->icm.workingProfile);
}
if (hasToneCurve2 && curveMode2 == ToneCurveParams::TcMode::PERCEPTUAL) {
const PerceptualToneCurve& userToneCurve = static_cast (customToneCurve2);
- userToneCurve.initApplyState (ptc2ApplyState, params->icm.working);
+ userToneCurve.initApplyState (ptc2ApplyState, params->icm.workingProfile);
}
bool hasColorToning = params->colorToning.enabled && bool (ctOpacityCurve) && bool (ctColorCurve) && params->colorToning.method != "LabGrid";
@@ -4077,24 +4077,22 @@ void ImProcFunctions::labtoning (float r, float g, float b, float &ro, float &go
// get the opacity and tweak it to preserve saturated colors
//float l_ = Color::gamma_srgb(l*65535.f)/65535.f;
- float opacity;
- opacity = (1.f - min (s / satLimit, 1.f) * (1.f - satLimitOpacity)) * ctOpacityCurve.lutOpacityCurve[l * 500.f];
+ float opacity = (1.f - min (s / satLimit, 1.f) * (1.f - satLimitOpacity)) * ctOpacityCurve.lutOpacityCurve[l * 500.f];
float opacity2 = (1.f - min (s / satLimit, 1.f) * (1.f - satLimitOpacity));
- //float ro, go, bo;
- float lm = l;
- float chromat, luma;
+ l *= 65535.f;
+ float chromat = 0.f, luma = 0.f;
- if (clToningcurve[lm * 65535.f] / (lm * 65535.f) < 1.f) {
- chromat = (clToningcurve[ (lm) * 65535.f] / (lm * 65535.f)) - 1.f; //special effect
- } else {
- chromat = 1.f - SQR (SQR ((lm * 65535.f) / clToningcurve[ (lm) * 65535.f])); //apply C=f(L) acts on 'a' and 'b'
+ if (clToningcurve[l] < l) {
+ chromat = clToningcurve[l] / l - 1.f; //special effect
+ } else if (clToningcurve[l] > l) {
+ chromat = 1.f - SQR(SQR(l / clToningcurve[l])); //apply C=f(L) acts on 'a' and 'b'
}
- if (cl2Toningcurve[lm * 65535.f] / (lm * 65535.f) < 1.f) {
- luma = (cl2Toningcurve[ (lm) * 65535.f] / (lm * 65535.f)) - 1.f; //special effect
- } else {
- luma = 1.f - SQR (SQR ((lm * 65535.f) / (cl2Toningcurve[ (lm) * 65535.f]))); //apply C2=f(L) acts only on 'b'
+ if (cl2Toningcurve[l] < l) {
+ luma = cl2Toningcurve[l] / l - 1.f; //special effect
+ } else if (cl2Toningcurve[l] > l) {
+ luma = 1.f - SQR(SQR(l / cl2Toningcurve[l])); //apply C2=f(L) acts only on 'b'
}
if (algm == 1) {
@@ -4241,19 +4239,19 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
// if(params->labCurve.avoidclip ){
// parameter to adapt curve C=f(C) to gamut
- if (params->icm.working == "ProPhoto") {
+ if (params->icm.workingProfile == "ProPhoto") {
adjustr = 1.2f; // 1.2 instead 1.0 because it's very rare to have C>170..
- } else if (params->icm.working == "Adobe RGB") {
+ } else if (params->icm.workingProfile == "Adobe RGB") {
adjustr = 1.8f;
- } else if (params->icm.working == "sRGB") {
+ } else if (params->icm.workingProfile == "sRGB") {
adjustr = 2.0f;
- } else if (params->icm.working == "WideGamut") {
+ } else if (params->icm.workingProfile == "WideGamut") {
adjustr = 1.2f;
- } else if (params->icm.working == "Beta RGB") {
+ } else if (params->icm.workingProfile == "Beta RGB") {
adjustr = 1.4f;
- } else if (params->icm.working == "BestRGB") {
+ } else if (params->icm.workingProfile == "BestRGB") {
adjustr = 1.4f;
- } else if (params->icm.working == "BruceRGB") {
+ } else if (params->icm.workingProfile == "BruceRGB") {
adjustr = 1.8f;
}
@@ -4320,14 +4318,14 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW
const bool gamutLch = settings->gamutLch;
const float amountchroma = (float) settings->amchroma;
- TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.working);
+ TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.workingProfile);
const double wip[3][3] = {
{wiprof[0][0], wiprof[0][1], wiprof[0][2]},
{wiprof[1][0], wiprof[1][1], wiprof[1][2]},
{wiprof[2][0], wiprof[2][1], wiprof[2][2]}
};
- TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params->icm.working);
+ TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params->icm.workingProfile);
const double wp[3][3] = {
{wprof[0][0], wprof[0][1], wprof[0][2]},
{wprof[1][0], wprof[1][1], wprof[1][2]},
diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h
index 92dbcba24..c857d3d05 100644
--- a/rtengine/improcfun.h
+++ b/rtengine/improcfun.h
@@ -52,23 +52,23 @@ class ImProcFunctions
double scale;
bool multiThread;
- void calcVignettingParams (int oW, int oH, const VignettingParams& vignetting, double &w2, double &h2, double& maxRadius, double &v, double &b, double &mul);
+ void calcVignettingParams(int oW, int oH, const VignettingParams& vignetting, double &w2, double &h2, double& maxRadius, double &v, double &b, double &mul);
- void transformLuminanceOnly (Imagefloat* original, Imagefloat* transformed, int cx, int cy, int oW, int oH, int fW, int fH);
+ void transformLuminanceOnly(Imagefloat* original, Imagefloat* transformed, int cx, int cy, int oW, int oH, int fW, int fH);
void transformGeneral(bool highQuality, Imagefloat *original, Imagefloat *transformed, int cx, int cy, int sx, int sy, int oW, int oH, int fW, int fH, const LensCorrection *pLCPMap);
void transformLCPCAOnly(Imagefloat *original, Imagefloat *transformed, int cx, int cy, const LensCorrection *pLCPMap);
- bool needsCA ();
- bool needsDistortion ();
- bool needsRotation ();
- bool needsPerspective ();
- bool needsGradient ();
- bool needsVignetting ();
- bool needsLCP ();
+ bool needsCA();
+ bool needsDistortion();
+ bool needsRotation();
+ bool needsPerspective();
+ bool needsGradient();
+ bool needsVignetting();
+ bool needsLCP();
bool needsLensfun();
// static cmsUInt8Number* Mempro = NULL;
- inline void interpolateTransformCubic (Imagefloat* src, int xs, int ys, double Dx, double Dy, float *r, float *g, float *b, double mul)
+ inline void interpolateTransformCubic(Imagefloat* src, int xs, int ys, double Dx, double Dy, float *r, float *g, float *b, double mul)
{
const double A = -0.85;
@@ -91,9 +91,9 @@ class ImProcFunctions
rd = gd = bd = 0.0;
for (int i = xs, ix = 0; i < xs + 4; i++, ix++) {
- rd += src->r (k, i) * w[ix];
- gd += src->g (k, i) * w[ix];
- bd += src->b (k, i) * w[ix];
+ rd += src->r(k, i) * w[ix];
+ gd += src->g(k, i) * w[ix];
+ bd += src->b(k, i) * w[ix];
}
yr[kx] = rd;
@@ -129,7 +129,7 @@ class ImProcFunctions
// printf ("r=%g, g=%g\n", *r, *g);
}
- inline void interpolateTransformChannelsCubic (float** src, int xs, int ys, double Dx, double Dy, float *r, double mul)
+ inline void interpolateTransformChannelsCubic(float** src, int xs, int ys, double Dx, double Dy, float *r, double mul)
{
const double A = -0.85;
@@ -191,169 +191,173 @@ public:
double lumimul[3];
- ImProcFunctions (const ProcParams* iparams, bool imultiThread = true)
- : monitorTransform (nullptr), params (iparams), scale (1), multiThread (imultiThread), lumimul{} {}
- ~ImProcFunctions ();
- bool needsLuminanceOnly() { return !(needsCA() || needsDistortion() || needsRotation() || needsPerspective() || needsLCP() || needsLensfun()) && (needsVignetting() || needsPCVignetting() || needsGradient());}
- void setScale (double iscale);
+ ImProcFunctions(const ProcParams* iparams, bool imultiThread = true)
+ : monitorTransform(nullptr), params(iparams), scale(1), multiThread(imultiThread), lumimul{} {}
+ ~ImProcFunctions();
+ bool needsLuminanceOnly()
+ {
+ return !(needsCA() || needsDistortion() || needsRotation() || needsPerspective() || needsLCP() || needsLensfun()) && (needsVignetting() || needsPCVignetting() || needsGradient());
+ }
+ void setScale(double iscale);
- bool needsTransform ();
- bool needsPCVignetting ();
+ bool needsTransform();
+ bool needsPCVignetting();
- void firstAnalysis (const Imagefloat* const working, const ProcParams ¶ms, LUTu & vhist16);
- void updateColorProfiles (const Glib::ustring& monitorProfile, RenderingIntent monitorIntent, bool softProof, bool gamutCheck);
- void rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve,
+ void firstAnalysis(const Imagefloat* const working, const ProcParams ¶ms, LUTu & vhist16);
+ void updateColorProfiles(const Glib::ustring& monitorProfile, RenderingIntent monitorIntent, bool softProof, bool gamutCheck);
+ void rgbProc(Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve,
int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, bool opautili, LUTf & clcurve, LUTf & cl2curve, const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2,
- const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve );
- void rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve,
+ const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve);
+ void rgbProc(Imagefloat* working, LabImage* lab, PipetteBuffer *pipetteBuffer, LUTf & hltonecurve, LUTf & shtonecurve, LUTf & tonecurve,
int sat, LUTf & rCurve, LUTf & gCurve, LUTf & bCurve, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, bool opautili, LUTf & clcurve, LUTf & cl2curve, const ToneCurve & customToneCurve1, const ToneCurve & customToneCurve2,
- const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob,
- double expcomp, int hlcompr, int hlcomprthresh, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve);
- void labtoning (float r, float g, float b, float &ro, float &go, float &bo, int algm, int metchrom, int twoc, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, LUTf & clToningcurve, LUTf & cl2Toningcurve, float iplow, float iphigh, double wp[3][3], double wip[3][3] );
- void toning2col (float r, float g, float b, float &ro, float &go, float &bo, float iplow, float iphigh, float rl, float gl, float bl, float rh, float gh, float bh, float SatLow, float SatHigh, float balanS, float balanH, float reducac, int mode, int preser, float strProtect);
- void toningsmh (float r, float g, float b, float &ro, float &go, float &bo, float RedLow, float GreenLow, float BlueLow, float RedMed, float GreenMed, float BlueMed, float RedHigh, float GreenHigh, float BlueHigh, float reducac, int mode, float strProtect);
- void toningsmh2 (float r, float g, float b, float &ro, float &go, float &bo, float low[3], float satLow, float med[3], float satMed, float high[3], float satHigh, float reducac, int mode, int preser);
- void secondeg_begin (float reducac, float vend, float &aam, float &bbm);
- void secondeg_end (float reducac, float vinf, float &aa, float &bb, float &cc);
+ const ToneCurve & customToneCurvebw1, const ToneCurve & customToneCurvebw2, double &rrm, double &ggm, double &bbm, float &autor, float &autog, float &autob,
+ double expcomp, int hlcompr, int hlcomprthresh, DCPProfile *dcpProf, const DCPProfile::ApplyState &asIn, LUTu &histToneCurve);
+ void labtoning(float r, float g, float b, float &ro, float &go, float &bo, int algm, int metchrom, int twoc, float satLimit, float satLimitOpacity, const ColorGradientCurve & ctColorCurve, const OpacityCurve & ctOpacityCurve, LUTf & clToningcurve, LUTf & cl2Toningcurve, float iplow, float iphigh, double wp[3][3], double wip[3][3]);
+ void toning2col(float r, float g, float b, float &ro, float &go, float &bo, float iplow, float iphigh, float rl, float gl, float bl, float rh, float gh, float bh, float SatLow, float SatHigh, float balanS, float balanH, float reducac, int mode, int preser, float strProtect);
+ void toningsmh(float r, float g, float b, float &ro, float &go, float &bo, float RedLow, float GreenLow, float BlueLow, float RedMed, float GreenMed, float BlueMed, float RedHigh, float GreenHigh, float BlueHigh, float reducac, int mode, float strProtect);
+ void toningsmh2(float r, float g, float b, float &ro, float &go, float &bo, float low[3], float satLow, float med[3], float satMed, float high[3], float satHigh, float reducac, int mode, int preser);
+ void secondeg_begin(float reducac, float vend, float &aam, float &bbm);
+ void secondeg_end(float reducac, float vinf, float &aa, float &bb, float &cc);
- void retreavergb (float &r, float &g, float &b);
- void moyeqt (Imagefloat* working, float &moyS, float &eqty);
+ void retreavergb(float &r, float &g, float &b);
+ void moyeqt(Imagefloat* working, float &moyS, float &eqty);
- void luminanceCurve (LabImage* lold, LabImage* lnew, LUTf &curve);
- void ciecam_02float (CieImage* ncie, float adap, int pW, int pwb, LabImage* lab, const ProcParams* params,
- const ColorAppearance & customColCurve1, const ColorAppearance & customColCurve, const ColorAppearance & customColCurve3,
- LUTu &histLCAM, LUTu &histCCAM, LUTf & CAMBrightCurveJ, LUTf & CAMBrightCurveQ, float &mean, int Iterates, int scale, bool execsharp, float &d, float &dj, float &yb, int rtt,
- bool showSharpMask = false);
- void chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW, LabImage* lold, LabImage* lnew, LUTf &acurve, LUTf &bcurve, LUTf & satcurve, LUTf & satclcurve, LUTf &clcurve, LUTf &curve, bool utili, bool autili, bool butili, bool ccutili, bool cclutili, bool clcutili, LUTu &histCCurve, LUTu &histLurve);
- void vibrance (LabImage* lab);//Jacques' vibrance
+ void luminanceCurve(LabImage* lold, LabImage* lnew, LUTf &curve);
+ void ciecam_02float(CieImage* ncie, float adap, int pW, int pwb, LabImage* lab, const ProcParams* params,
+ const ColorAppearance & customColCurve1, const ColorAppearance & customColCurve, const ColorAppearance & customColCurve3,
+ LUTu &histLCAM, LUTu &histCCAM, LUTf & CAMBrightCurveJ, LUTf & CAMBrightCurveQ, float &mean, int Iterates, int scale, bool execsharp, float &d, float &dj, float &yb, int rtt,
+ bool showSharpMask = false);
+ void chromiLuminanceCurve(PipetteBuffer *pipetteBuffer, int pW, LabImage* lold, LabImage* lnew, LUTf &acurve, LUTf &bcurve, LUTf & satcurve, LUTf & satclcurve, LUTf &clcurve, LUTf &curve, bool utili, bool autili, bool butili, bool ccutili, bool cclutili, bool clcutili, LUTu &histCCurve, LUTu &histLurve);
+ void vibrance(LabImage* lab); //Jacques' vibrance
// void colorCurve (LabImage* lold, LabImage* lnew);
- void sharpening (LabImage* lab, const SharpeningParams &sharpenParam, bool showMask = false);
- void sharpeningcam (CieImage* ncie, float** buffer, bool showMask = false);
- void transform (Imagefloat* original, Imagefloat* transformed, int cx, int cy, int sx, int sy, int oW, int oH, int fW, int fH, const FramesMetaData *metadata, int rawRotationDeg, bool fullImage);
- float resizeScale (const ProcParams* params, int fw, int fh, int &imw, int &imh);
- void lab2monitorRgb (LabImage* lab, Image8* image);
- void resize (Imagefloat* src, Imagefloat* dst, float dScale);
- void Lanczos (const LabImage* src, LabImage* dst, float scale);
- void Lanczos (const Imagefloat* src, Imagefloat* dst, float scale);
+ void sharpening(LabImage* lab, const SharpeningParams &sharpenParam, bool showMask = false);
+ void sharpeningcam(CieImage* ncie, float** buffer, bool showMask = false);
+ void transform(Imagefloat* original, Imagefloat* transformed, int cx, int cy, int sx, int sy, int oW, int oH, int fW, int fH, const FramesMetaData *metadata, int rawRotationDeg, bool fullImage);
+ float resizeScale(const ProcParams* params, int fw, int fh, int &imw, int &imh);
+ void lab2monitorRgb(LabImage* lab, Image8* image);
+ void resize(Imagefloat* src, Imagefloat* dst, float dScale);
+ void Lanczos(const LabImage* src, LabImage* dst, float scale);
+ void Lanczos(const Imagefloat* src, Imagefloat* dst, float scale);
- void deconvsharpening (float** luminance, float** buffer, int W, int H, const SharpeningParams &sharpenParam);
- void MLsharpen (LabImage* lab);// Manuel's clarity / sharpening
- void MLmicrocontrast (float** luminance, int W, int H ); //Manuel's microcontrast
- void MLmicrocontrast (LabImage* lab ); //Manuel's microcontrast
- void MLmicrocontrastcam (CieImage* ncie ); //Manuel's microcontrast
+ void deconvsharpening(float** luminance, float** buffer, int W, int H, const SharpeningParams &sharpenParam);
+ void MLsharpen(LabImage* lab); // Manuel's clarity / sharpening
+ void MLmicrocontrast(float** luminance, int W, int H); //Manuel's microcontrast
+ void MLmicrocontrast(LabImage* lab); //Manuel's microcontrast
+ void MLmicrocontrastcam(CieImage* ncie); //Manuel's microcontrast
- void impulsedenoise (LabImage* lab);//Emil's impulse denoise
- void impulsedenoisecam (CieImage* ncie, float **buffers[3]);
- void impulse_nr (LabImage* lab, double thresh);
- void impulse_nrcam (CieImage* ncie, double thresh, float **buffers[3]);
+ void impulsedenoise(LabImage* lab); //Emil's impulse denoise
+ void impulsedenoisecam(CieImage* ncie, float **buffers[3]);
+ void impulse_nr(LabImage* lab, double thresh);
+ void impulse_nrcam(CieImage* ncie, double thresh, float **buffers[3]);
- void dirpyrdenoise (LabImage* src);//Emil's pyramid denoise
- void dirpyrequalizer (LabImage* lab, int scale);//Emil's wavelet
+ void dirpyrdenoise(LabImage* src); //Emil's pyramid denoise
+ void dirpyrequalizer(LabImage* lab, int scale); //Emil's wavelet
- void EPDToneMapResid (float * WavCoeffs_L0, unsigned int Iterates, int skip, struct cont_params& cp, int W_L, int H_L, float max0, float min0);
- float *CompressDR (float *Source, int W_L, int H_L, float Compression, float DetailBoost, float *Compressed);
- void ContrastResid (float * WavCoeffs_L0, struct cont_params &cp, int W_L, int H_L, float max0, float min0);
- float *ContrastDR (float *Source, int W_L, int H_L, float *Contrast = nullptr);
+ void EPDToneMapResid(float * WavCoeffs_L0, unsigned int Iterates, int skip, struct cont_params& cp, int W_L, int H_L, float max0, float min0);
+ float *CompressDR(float *Source, int W_L, int H_L, float Compression, float DetailBoost, float *Compressed);
+ void ContrastResid(float * WavCoeffs_L0, struct cont_params &cp, int W_L, int H_L, float max0, float min0);
+ float *ContrastDR(float *Source, int W_L, int H_L, float *Contrast = nullptr);
- void EPDToneMap (LabImage *lab, unsigned int Iterates = 0, int skip = 1);
- void EPDToneMapCIE (CieImage *ncie, float a_w, float c_, int Wid, int Hei, float minQ, float maxQ, unsigned int Iterates = 0, int skip = 1);
+ void EPDToneMap(LabImage *lab, unsigned int Iterates = 0, int skip = 1);
+ void EPDToneMapCIE(CieImage *ncie, float a_w, float c_, int Wid, int Hei, float minQ, float maxQ, unsigned int Iterates = 0, int skip = 1);
// pyramid denoise
procparams::DirPyrDenoiseParams dnparams;
- void dirpyr (LabImage* data_fine, LabImage* data_coarse, int level, LUTf &rangefn_L, LUTf &rangefn_ab,
- int pitch, int scale, const int luma, int chroma );
- void idirpyr (LabImage* data_coarse, LabImage* data_fine, int level, LUTf &rangefn_L, LUTf & nrwt_l, LUTf & nrwt_ab,
- int pitch, int scale, const int luma, const int chroma/*, LUTf & Lcurve, LUTf & abcurve*/ );
+ void dirpyr(LabImage* data_fine, LabImage* data_coarse, int level, LUTf &rangefn_L, LUTf &rangefn_ab,
+ int pitch, int scale, const int luma, int chroma);
+ void idirpyr(LabImage* data_coarse, LabImage* data_fine, int level, LUTf &rangefn_L, LUTf & nrwt_l, LUTf & nrwt_ab,
+ int pitch, int scale, const int luma, const int chroma/*, LUTf & Lcurve, LUTf & abcurve*/);
- void Tile_calc (int tilesize, int overlap, int kall, int imwidth, int imheight, int &numtiles_W, int &numtiles_H, int &tilewidth, int &tileheight, int &tileWskip, int &tileHskip);
- void ip_wavelet (LabImage * lab, LabImage * dst, int kall, const procparams::WaveletParams & waparams, const WavCurve & wavCLVCcurve, const WavOpacityCurveRG & waOpacityCurveRG, const WavOpacityCurveBY & waOpacityCurveBY, const WavOpacityCurveW & waOpacityCurveW, const WavOpacityCurveWL & waOpacityCurveWL, LUTf &wavclCurve, int skip);
+ void Tile_calc(int tilesize, int overlap, int kall, int imwidth, int imheight, int &numtiles_W, int &numtiles_H, int &tilewidth, int &tileheight, int &tileWskip, int &tileHskip);
+ void ip_wavelet(LabImage * lab, LabImage * dst, int kall, const procparams::WaveletParams & waparams, const WavCurve & wavCLVCcurve, const WavOpacityCurveRG & waOpacityCurveRG, const WavOpacityCurveBY & waOpacityCurveBY, const WavOpacityCurveW & waOpacityCurveW, const WavOpacityCurveWL & waOpacityCurveWL, LUTf &wavclCurve, int skip);
- void WaveletcontAllL (LabImage * lab, float **varhue, float **varchrom, wavelet_decomposition &WaveletCoeffs_L,
- struct cont_params &cp, int skip, float *mean, float *sigma, float *MaxP, float *MaxN, const WavCurve & wavCLVCcurve, const WavOpacityCurveW & waOpacityCurveW, FlatCurve* ChCurve, bool Chutili);
- void WaveletcontAllLfinal (wavelet_decomposition &WaveletCoeffs_L, struct cont_params &cp, float *mean, float *sigma, float *MaxP, const WavOpacityCurveWL & waOpacityCurveWL);
- void WaveletcontAllAB (LabImage * lab, float **varhue, float **varchrom, wavelet_decomposition &WaveletCoeffs_a, const WavOpacityCurveW & waOpacityCurveW,
- struct cont_params &cp, const bool useChannelA);
- void WaveletAandBAllAB (wavelet_decomposition &WaveletCoeffs_a, wavelet_decomposition &WaveletCoeffs_b,
- struct cont_params &cp, FlatCurve* hhcurve, bool hhutili);
- void ContAllL (float **koeLi, float *maxkoeLi, bool lipschitz, int maxlvl, LabImage * lab, float **varhue, float **varchrom, float ** WavCoeffs_L, float * WavCoeffs_L0, int level, int dir, struct cont_params &cp,
- int W_L, int H_L, int skip, float *mean, float *sigma, float *MaxP, float *MaxN, const WavCurve & wavCLVCcurve, const WavOpacityCurveW & waOpacityCurveW, FlatCurve* ChCurve, bool Chutili);
- void finalContAllL (float ** WavCoeffs_L, float * WavCoeffs_L0, int level, int dir, struct cont_params &cp,
- int W_L, int H_L, float *mean, float *sigma, float *MaxP, const WavOpacityCurveWL & waOpacityCurveWL);
- void ContAllAB (LabImage * lab, int maxlvl, float **varhue, float **varchrom, float ** WavCoeffs_a, float * WavCoeffs_a0, int level, int dir, const WavOpacityCurveW & waOpacityCurveW, struct cont_params &cp,
- int W_ab, int H_ab, const bool useChannelA);
- void Evaluate2 (wavelet_decomposition &WaveletCoeffs_L,
- float *mean, float *meanN, float *sigma, float *sigmaN, float *MaxP, float *MaxN);
- void Eval2 (float ** WavCoeffs_L, int level,
- int W_L, int H_L, float *mean, float *meanN, float *sigma, float *sigmaN, float *MaxP, float *MaxN);
+ void WaveletcontAllL(LabImage * lab, float **varhue, float **varchrom, wavelet_decomposition &WaveletCoeffs_L,
+ struct cont_params &cp, int skip, float *mean, float *sigma, float *MaxP, float *MaxN, const WavCurve & wavCLVCcurve, const WavOpacityCurveW & waOpacityCurveW, FlatCurve* ChCurve, bool Chutili);
+ void WaveletcontAllLfinal(wavelet_decomposition &WaveletCoeffs_L, struct cont_params &cp, float *mean, float *sigma, float *MaxP, const WavOpacityCurveWL & waOpacityCurveWL);
+ void WaveletcontAllAB(LabImage * lab, float **varhue, float **varchrom, wavelet_decomposition &WaveletCoeffs_a, const WavOpacityCurveW & waOpacityCurveW,
+ struct cont_params &cp, const bool useChannelA);
+ void WaveletAandBAllAB(wavelet_decomposition &WaveletCoeffs_a, wavelet_decomposition &WaveletCoeffs_b,
+ struct cont_params &cp, FlatCurve* hhcurve, bool hhutili);
+ void ContAllL(float **koeLi, float *maxkoeLi, bool lipschitz, int maxlvl, LabImage * lab, float **varhue, float **varchrom, float ** WavCoeffs_L, float * WavCoeffs_L0, int level, int dir, struct cont_params &cp,
+ int W_L, int H_L, int skip, float *mean, float *sigma, float *MaxP, float *MaxN, const WavCurve & wavCLVCcurve, const WavOpacityCurveW & waOpacityCurveW, FlatCurve* ChCurve, bool Chutili);
+ void finalContAllL(float ** WavCoeffs_L, float * WavCoeffs_L0, int level, int dir, struct cont_params &cp,
+ int W_L, int H_L, float *mean, float *sigma, float *MaxP, const WavOpacityCurveWL & waOpacityCurveWL);
+ void ContAllAB(LabImage * lab, int maxlvl, float **varhue, float **varchrom, float ** WavCoeffs_a, float * WavCoeffs_a0, int level, int dir, const WavOpacityCurveW & waOpacityCurveW, struct cont_params &cp,
+ int W_ab, int H_ab, const bool useChannelA);
+ void Evaluate2(wavelet_decomposition &WaveletCoeffs_L,
+ float *mean, float *meanN, float *sigma, float *sigmaN, float *MaxP, float *MaxN);
+ void Eval2(float ** WavCoeffs_L, int level,
+ int W_L, int H_L, float *mean, float *meanN, float *sigma, float *sigmaN, float *MaxP, float *MaxN);
- void Aver (float * HH_Coeffs, int datalen, float &averagePlus, float &averageNeg, float &max, float &min);
- void Sigma (float * HH_Coeffs, int datalen, float averagePlus, float averageNeg, float &sigmaPlus, float &sigmaNeg);
- void calckoe (float ** WavCoeffs_LL, const struct cont_params& cp, float ** koeLi, int level, int dir, int W_L, int H_L, float edd, float *maxkoeLi, float **tmC = nullptr);
+ void Aver(float * HH_Coeffs, int datalen, float &averagePlus, float &averageNeg, float &max, float &min);
+ void Sigma(float * HH_Coeffs, int datalen, float averagePlus, float averageNeg, float &sigmaPlus, float &sigmaNeg);
+ void calckoe(float ** WavCoeffs_LL, const struct cont_params& cp, float ** koeLi, int level, int dir, int W_L, int H_L, float edd, float *maxkoeLi, float **tmC = nullptr);
- void Median_Denoise ( float **src, float **dst, int width, int height, Median medianType, int iterations, int numThreads, float **buffer = nullptr);
- void Median_Denoise ( float **src, float **dst, float upperBound, int width, int height, Median medianType, int iterations, int numThreads, float **buffer = nullptr);
- void RGB_denoise (int kall, Imagefloat * src, Imagefloat * dst, Imagefloat * calclum, float * ch_M, float *max_r, float *max_b, bool isRAW, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, const NoiseCurve & noiseLCurve, const NoiseCurve & noiseCCurve, float &nresi, float &highresi);
- void RGB_denoise_infoGamCurve (const procparams::DirPyrDenoiseParams & dnparams, const bool isRAW, LUTf &gamcurve, float &gam, float &gamthresh, float &gamslope);
- void RGB_denoise_info (Imagefloat * src, Imagefloat * provicalc, bool isRAW, LUTf &gamcurve, float gam, float gamthresh, float gamslope, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float & maxblueaut, float &minredaut, float & minblueaut, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, bool multiThread = false);
- void RGBtile_denoise (float * fLblox, int hblproc, float noisevar_Ldetail, float * nbrwt, float * blurbuffer ); //for DCT
- void RGBoutput_tile_row (float *bloxrow_L, float ** Ldetail, float ** tilemask_out, int height, int width, int top );
- bool WaveletDenoiseAllL (wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3], float * vari, int edge);
- bool WaveletDenoiseAllAB (wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb);
- void WaveletDenoiseAll_info (int levwav, wavelet_decomposition &WaveletCoeffs_a,
- wavelet_decomposition &WaveletCoeffs_b, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float & minblueaut, int schoice, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc,
- float &maxchred, float &maxchblue, float &minchred, float &minchblue, int &nb, float &chau, float &chred, float &chblue, bool denoiseMethodRgb);
+ void Median_Denoise(float **src, float **dst, int width, int height, Median medianType, int iterations, int numThreads, float **buffer = nullptr);
+ void Median_Denoise(float **src, float **dst, float upperBound, int width, int height, Median medianType, int iterations, int numThreads, float **buffer = nullptr);
+ void RGB_denoise(int kall, Imagefloat * src, Imagefloat * dst, Imagefloat * calclum, float * ch_M, float *max_r, float *max_b, bool isRAW, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, const NoiseCurve & noiseLCurve, const NoiseCurve & noiseCCurve, float &nresi, float &highresi);
+ void RGB_denoise_infoGamCurve(const procparams::DirPyrDenoiseParams & dnparams, const bool isRAW, LUTf &gamcurve, float &gam, float &gamthresh, float &gamslope);
+ void RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, bool isRAW, LUTf &gamcurve, float gam, float gamthresh, float gamslope, const procparams::DirPyrDenoiseParams & dnparams, const double expcomp, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float & maxblueaut, float &minredaut, float & minblueaut, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc, bool multiThread = false);
+ void RGBtile_denoise(float * fLblox, int hblproc, float noisevar_Ldetail, float * nbrwt, float * blurbuffer); //for DCT
+ void RGBoutput_tile_row(float *bloxrow_L, float ** Ldetail, float ** tilemask_out, int height, int width, int top);
+ bool WaveletDenoiseAllL(wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3], float * vari, int edge);
+ bool WaveletDenoiseAllAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb);
+ void WaveletDenoiseAll_info(int levwav, wavelet_decomposition &WaveletCoeffs_a,
+ wavelet_decomposition &WaveletCoeffs_b, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float & minblueaut, int schoice, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc,
+ float &maxchred, float &maxchblue, float &minchred, float &minchblue, int &nb, float &chau, float &chred, float &chblue, bool denoiseMethodRgb);
- bool WaveletDenoiseAll_BiShrinkL (wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3]);
- bool WaveletDenoiseAll_BiShrinkAB (wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab,
- const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb);
- void ShrinkAllL (wavelet_decomposition &WaveletCoeffs_L, float **buffer, int level, int dir, float *noisevarlum, float * madL, float * vari, int edge);
- void ShrinkAllAB (wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float **buffer, int level, int dir,
- float *noisevarchrom, float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb, float * madL, float * madaab = nullptr, bool madCalculated = false);
- void ShrinkAll_info (float ** WavCoeffs_a, float ** WavCoeffs_b,
- int W_ab, int H_ab, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float &minblueaut, int schoice, int lvl, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc,
- float &maxchred, float &maxchblue, float &minchred, float &minchblue, int &nb, float &chau, float &chred, float &chblue, bool denoiseMethodRgb);
- void Noise_residualAB (wavelet_decomposition &WaveletCoeffs_ab, float &chresid, float &chmaxresid, bool denoiseMethodRgb);
- void calcautodn_info (float &chaut, float &delta, int Nb, int levaut, float maxmax, float lumema, float chromina, int mode, int lissage, float redyel, float skinc, float nsknc);
- float MadMax (float * DataList, int &max, int datalen);
- float Mad (float * DataList, const int datalen);
- float MadRgb (float * DataList, const int datalen);
+ bool WaveletDenoiseAll_BiShrinkL(wavelet_decomposition &WaveletCoeffs_L, float *noisevarlum, float madL[8][3]);
+ bool WaveletDenoiseAll_BiShrinkAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float *noisevarchrom, float madL[8][3], float noisevar_ab,
+ const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb);
+ void ShrinkAllL(wavelet_decomposition &WaveletCoeffs_L, float **buffer, int level, int dir, float *noisevarlum, float * madL, float * vari, int edge);
+ void ShrinkAllAB(wavelet_decomposition &WaveletCoeffs_L, wavelet_decomposition &WaveletCoeffs_ab, float **buffer, int level, int dir,
+ float *noisevarchrom, float noisevar_ab, const bool useNoiseCCurve, bool autoch, bool denoiseMethodRgb, float * madL, float * madaab = nullptr, bool madCalculated = false);
+ void ShrinkAll_info(float ** WavCoeffs_a, float ** WavCoeffs_b,
+ int W_ab, int H_ab, float **noisevarlum, float **noisevarchrom, float **noisevarhue, float &chaut, int &Nb, float &redaut, float &blueaut, float &maxredaut, float &maxblueaut, float &minredaut, float &minblueaut, int schoice, int lvl, float &chromina, float &sigma, float &lumema, float &sigma_L, float &redyel, float &skinc, float &nsknc,
+ float &maxchred, float &maxchblue, float &minchred, float &minchblue, int &nb, float &chau, float &chred, float &chblue, bool denoiseMethodRgb);
+ void Noise_residualAB(wavelet_decomposition &WaveletCoeffs_ab, float &chresid, float &chmaxresid, bool denoiseMethodRgb);
+ void calcautodn_info(float &chaut, float &delta, int Nb, int levaut, float maxmax, float lumema, float chromina, int mode, int lissage, float redyel, float skinc, float nsknc);
+ float MadMax(float * DataList, int &max, int datalen);
+ float Mad(float * DataList, const int datalen);
+ float MadRgb(float * DataList, const int datalen);
// pyramid wavelet
- void dirpyr_equalizer (float ** src, float ** dst, int srcwidth, int srcheight, float ** l_a, float ** l_b, const double * mult, const double dirpyrThreshold, const double skinprot, float b_l, float t_l, float t_r, int scale);//Emil's directional pyramid wavelet
- void dirpyr_equalizercam (CieImage* ncie, float ** src, float ** dst, int srcwidth, int srcheight, float ** h_p, float ** C_p, const double * mult, const double dirpyrThreshold, const double skinprot, bool execdir, float b_l, float t_l, float t_r, int scale);//Emil's directional pyramid wavelet
- void dirpyr_channel (float ** data_fine, float ** data_coarse, int width, int height, int level, int scale);
- void idirpyr_eq_channel (float ** data_coarse, float ** data_fine, float ** buffer, int width, int height, int level, float multi[6], const double dirpyrThreshold, float ** l_a_h, float ** l_b_c, const double skinprot, float b_l, float t_l, float t_r);
- void idirpyr_eq_channelcam (float ** data_coarse, float ** data_fine, float ** buffer, int width, int height, int level, float multi[6], const double dirpyrThreshold, float ** l_a_h, float ** l_b_c, const double skinprot, float b_l, float t_l, float t_r);
- void defringe (LabImage* lab);
- void defringecam (CieImage* ncie);
- void badpixcam (CieImage* ncie, double rad, int thr, int mode, float chrom, bool hotbad);
- void badpixlab (LabImage* lab, double rad, int thr, float chrom);
+ void dirpyr_equalizer(float ** src, float ** dst, int srcwidth, int srcheight, float ** l_a, float ** l_b, const double * mult, const double dirpyrThreshold, const double skinprot, float b_l, float t_l, float t_r, int scale); //Emil's directional pyramid wavelet
+ void dirpyr_equalizercam(CieImage* ncie, float ** src, float ** dst, int srcwidth, int srcheight, float ** h_p, float ** C_p, const double * mult, const double dirpyrThreshold, const double skinprot, bool execdir, float b_l, float t_l, float t_r, int scale); //Emil's directional pyramid wavelet
+ void dirpyr_channel(float ** data_fine, float ** data_coarse, int width, int height, int level, int scale);
+ void idirpyr_eq_channel(float ** data_coarse, float ** data_fine, float ** buffer, int width, int height, int level, float multi[6], const double dirpyrThreshold, float ** l_a_h, float ** l_b_c, const double skinprot, float b_l, float t_l, float t_r);
+ void idirpyr_eq_channelcam(float ** data_coarse, float ** data_fine, float ** buffer, int width, int height, int level, float multi[6], const double dirpyrThreshold, float ** l_a_h, float ** l_b_c, const double skinprot, float b_l, float t_l, float t_r);
+ void defringe(LabImage* lab);
+ void defringecam(CieImage* ncie);
+ void badpixcam(CieImage* ncie, double rad, int thr, int mode, float chrom, bool hotbad);
+ void badpixlab(LabImage* lab, double rad, int thr, float chrom);
- void PF_correct_RT (LabImage * lab, double radius, int thresh);
- void PF_correct_RTcam (CieImage * ncie, double radius, int thresh);
- void Badpixelscam (CieImage * ncie, double radius, int thresh, int mode, float chrom, bool hotbad);
- void BadpixelsLab (LabImage * lab, double radius, int thresh, float chrom);
+ void PF_correct_RT(LabImage * lab, double radius, int thresh);
+ void PF_correct_RTcam(CieImage * ncie, double radius, int thresh);
+ void Badpixelscam(CieImage * ncie, double radius, int thresh, int mode, float chrom, bool hotbad);
+ void BadpixelsLab(LabImage * lab, double radius, int thresh, float chrom);
void ToneMapFattal02(Imagefloat *rgb);
void localContrast(LabImage *lab);
void colorToningLabGrid(LabImage *lab, int xstart, int xend, int ystart, int yend, bool MultiThread);
void shadowsHighlights(LabImage *lab);
void softLight(float *red, float *green, float *blue, int istart, int jstart, int tW, int tH, int TS);
-
- Image8* lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings=true);
- Imagefloat* lab2rgbOut (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga = nullptr);
- // CieImage *ciec;
- bool transCoord (int W, int H, int x, int y, int w, int h, int& xv, int& yv, int& wv, int& hv, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr);
- bool transCoord (int W, int H, const std::vector &src, std::vector &red, std::vector &green, std::vector &blue, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr);
- static void getAutoExp (const LUTu & histogram, int histcompr, double clip, double& expcomp, int& bright, int& contr, int& black, int& hlcompr, int& hlcomprthresh);
- static double getAutoDistor (const Glib::ustring& fname, int thumb_size);
- double getTransformAutoFill (int oW, int oH, const LensCorrection *pLCPMap = nullptr);
- void rgb2lab (const Imagefloat &src, LabImage &dst, const Glib::ustring &workingSpace);
- void lab2rgb (const LabImage &src, Imagefloat &dst, const Glib::ustring &workingSpace);
+ Image8* lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings = true);
+ Imagefloat* lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm);
+ // CieImage *ciec;
+ Imagefloat* workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos);
+
+ bool transCoord(int W, int H, int x, int y, int w, int h, int& xv, int& yv, int& wv, int& hv, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr);
+ bool transCoord(int W, int H, const std::vector &src, std::vector &red, std::vector &green, std::vector &blue, double ascaleDef = -1, const LensCorrection *pLCPMap = nullptr);
+ static void getAutoExp(const LUTu & histogram, int histcompr, double clip, double& expcomp, int& bright, int& contr, int& black, int& hlcompr, int& hlcomprthresh);
+ static double getAutoDistor(const Glib::ustring& fname, int thumb_size);
+ double getTransformAutoFill(int oW, int oH, const LensCorrection *pLCPMap = nullptr);
+ void rgb2lab(const Imagefloat &src, LabImage &dst, const Glib::ustring &workingSpace);
+ void lab2rgb(const LabImage &src, Imagefloat &dst, const Glib::ustring &workingSpace);
};
}
#endif
diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc
index 4838ea1f7..cab77c8ab 100644
--- a/rtengine/iplab2rgb.cc
+++ b/rtengine/iplab2rgb.cc
@@ -26,7 +26,6 @@
#include "curves.h"
#include "alignedbuffer.h"
#include "color.h"
-
namespace rtengine
{
@@ -93,7 +92,7 @@ inline void copyAndClamp(const LabImage *src, unsigned char *dst, const double r
//
// If monitorTransform, divide by 327.68 then apply monitorTransform (which can integrate soft-proofing)
// otherwise divide by 327.68, convert to xyz and apply the sRGB transform, before converting with gamma2curve
-void ImProcFunctions::lab2monitorRgb (LabImage* lab, Image8* image)
+void ImProcFunctions::lab2monitorRgb(LabImage* lab, Image8* image)
{
if (monitorTransform) {
@@ -111,11 +110,12 @@ void ImProcFunctions::lab2monitorRgb (LabImage* lab, Image8* image)
AlignedBuffer gwBuf1;
AlignedBuffer gwBuf2;
+
if (gamutWarning) {
gwBuf1.resize(3 * lab->W);
gwBuf2.resize(3 * lab->W);
}
-
+
float *buffer = pBuf.data;
float *outbuffer = mBuf.data;
@@ -160,7 +160,7 @@ void ImProcFunctions::lab2monitorRgb (LabImage* lab, Image8* image)
//
// If output profile used, divide by 327.68 then apply the "profile" profile (eventually with a standard gamma)
// otherwise divide by 327.68, convert to xyz and apply the RGB transform, before converting with gamma2curve
-Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings)
+Image8* ImProcFunctions::lab2rgb(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, bool consider_histogram_settings)
{
//gamutmap(lab);
@@ -180,23 +180,25 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch,
ch = lab->H - cy;
}
- Image8* image = new Image8 (cw, ch);
+ Image8* image = new Image8(cw, ch);
Glib::ustring profile;
bool standard_gamma;
- if(settings->HistogramWorking && consider_histogram_settings) {
- profile = icm.working;
+ if (settings->HistogramWorking && consider_histogram_settings) {
+ profile = icm.workingProfile;
standard_gamma = true;
} else {
- profile = icm.output;
- if (icm.output.empty() || icm.output == ColorManagementParams::NoICMString) {
+ profile = icm.outputProfile;
+
+ if (icm.outputProfile.empty() || icm.outputProfile == ColorManagementParams::NoICMString) {
profile = "sRGB";
}
+
standard_gamma = false;
}
- cmsHPROFILE oprof = ICCStore::getInstance()->getProfile (profile);
+ cmsHPROFILE oprof = ICCStore::getInstance()->getProfile(profile);
if (oprof) {
cmsHPROFILE oprofG = oprof;
@@ -206,14 +208,16 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch,
}
cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE;
+
if (icm.outputBPC) {
flags |= cmsFLAGS_BLACKPOINTCOMPENSATION;
}
- lcmsMutex->lock ();
+
+ lcmsMutex->lock();
cmsHPROFILE LabIProf = cmsCreateLab4Profile(nullptr);
cmsHTRANSFORM hTransform = cmsCreateTransform (LabIProf, TYPE_Lab_DBL, oprofG, TYPE_RGB_FLT, icm.outputIntent, flags); // NOCACHE is important for thread safety
cmsCloseProfile(LabIProf);
- lcmsMutex->unlock ();
+ lcmsMutex->unlock();
unsigned char *data = image->data;
@@ -256,7 +260,7 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch,
cmsCloseProfile(oprofG);
}
} else {
- const auto xyz_rgb = ICCStore::getInstance()->workingSpaceInverseMatrix (profile);
+ const auto xyz_rgb = ICCStore::getInstance()->workingSpaceInverseMatrix(profile);
copyAndClamp(lab, image->data, xyz_rgb, multiThread);
}
@@ -279,7 +283,7 @@ Image8* ImProcFunctions::lab2rgb (LabImage* lab, int cx, int cy, int cw, int ch,
* If a custom gamma profile can be created, divide by 327.68, convert to xyz and apply the custom gamma transform
* otherwise divide by 327.68, convert to xyz and apply the sRGB transform, before converting with gamma2curve
*/
-Imagefloat* ImProcFunctions::lab2rgbOut (LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm, GammaValues *ga)
+Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, int ch, const procparams::ColorManagementParams &icm)
{
if (cx < 0) {
@@ -298,27 +302,92 @@ Imagefloat* ImProcFunctions::lab2rgbOut (LabImage* lab, int cx, int cy, int cw,
ch = lab->H - cy;
}
- Imagefloat* image = new Imagefloat (cw, ch);
+ Imagefloat* image = new Imagefloat(cw, ch);
cmsHPROFILE oprof = nullptr;
- if (ga) {
- lcmsMutex->lock ();
- ICCStore::getInstance()->getGammaArray(icm, *ga);
- oprof = ICCStore::getInstance()->createGammaProfile(icm, *ga);
- lcmsMutex->unlock ();
- } else {
- oprof = ICCStore::getInstance()->getProfile (icm.output);
+
+ oprof = ICCStore::getInstance()->getProfile(icm.outputProfile);
+ Glib::ustring outtest = icm.outputProfile;
+ std::string fileis_RTv2 = outtest.substr(0, 4);
+ //printf("IsRTv2=%s\n", fileis_RTv2.c_str());
+ if(fileis_RTv2 == "RTv2") {//Only fot ICC v2 : read tag from desc to retrieve gamma and slope save before in generate ICC v2
+ //due to bug in LCMS in CmsToneCurve
+ //printf("icmout=%s \n",icm.output.c_str());
+ GammaValues g_b; //gamma parameters
+ const double eps = 0.000000001; // not divide by zero
+ double gammatag = 2.4;
+ double slopetag = 12.92310;
+ cmsMLU *modelDescMLU = (cmsMLU*) (cmsReadTag(oprof, cmsSigDeviceModelDescTag));
+ if (modelDescMLU) {
+ cmsUInt32Number count = cmsMLUgetWide(modelDescMLU, "en", "US", nullptr, 0); // get buffer length first
+ if (count) {
+ wchar_t *buffer = new wchar_t[count];
+ count = cmsMLUgetWide(modelDescMLU, "en", "US", buffer, count); // now put the string in the buffer
+ Glib::ustring modelDesc;
+#if __SIZEOF_WCHAR_T__ == 2
+ char* cModelDesc = g_utf16_to_utf8((unsigned short int*)buffer, -1, nullptr, nullptr, nullptr); // convert to utf-8 in a buffer allocated by glib
+ if (cModelDesc) {
+ modelDesc.assign(cModelDesc);
+ g_free(cModelDesc);
+ }
+#else
+ modelDesc = utf32_to_utf8(buffer, count);
+#endif
+ delete [] buffer;
+ if (!modelDesc.empty()) {
+ printf("dmdd=%s\n", modelDesc.c_str());
+
+ std::size_t pos = modelDesc.find("g");
+ std::size_t posmid = modelDesc.find("s");
+ std::size_t posend = modelDesc.find("!");
+ std::string strgamma = modelDesc.substr(pos + 1, (posmid - pos));
+ gammatag = std::stod(strgamma.c_str());
+ std::string strslope = modelDesc.substr(posmid + 1, (posend - posmid));
+ slopetag = std::stod(strslope.c_str());
+ // printf("gam=%f slo=%f\n", gammatag, slopetag);
+ }
+ } else {
+ printf("Error: lab2rgbOut / String length is null!\n");
+ }
+ } else {
+ printf("Error: lab2rgbOut / cmsReadTag/cmsSigDeviceModelDescTag failed!\n");
+ }
+
+ double pwr = 1.0 / gammatag;
+ double ts = slopetag;
+ double slope = slopetag == 0 ? eps : slopetag;
+
+ int mode = 0;
+ Color::calcGamma(pwr, ts, mode, g_b); // call to calcGamma with selected gamma and slope : return parameters for LCMS2
+ cmsFloat64Number gammaParams[7]; //gamma parameters
+ gammaParams[4] = g_b[3] * ts;
+ gammaParams[0] = gammatag;
+ gammaParams[1] = 1. / (1.0 + g_b[4]);
+ gammaParams[2] = g_b[4] / (1.0 + g_b[4]);
+ gammaParams[3] = 1. / slope;
+ gammaParams[5] = 0.0;
+ gammaParams[6] = 0.0;
+
+ cmsToneCurve* GammaTRC[3];
+
+ GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, gammaParams); //5 = smoother than 4
+ cmsWriteTag(oprof, cmsSigRedTRCTag, GammaTRC[0]);
+ cmsWriteTag(oprof, cmsSigGreenTRCTag, GammaTRC[1]);
+ cmsWriteTag(oprof, cmsSigBlueTRCTag, GammaTRC[2]);
+ cmsFreeToneCurve(GammaTRC[0]);
}
if (oprof) {
cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE;
+
if (icm.outputBPC) {
flags |= cmsFLAGS_BLACKPOINTCOMPENSATION;
}
- lcmsMutex->lock ();
+
+ lcmsMutex->lock();
cmsHPROFILE iprof = cmsCreateLab4Profile(nullptr);
- cmsHTRANSFORM hTransform = cmsCreateTransform (iprof, TYPE_Lab_FLT, oprof, TYPE_RGB_FLT, icm.outputIntent, flags);
- lcmsMutex->unlock ();
+ cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_Lab_FLT, oprof, TYPE_RGB_FLT, icm.outputIntent, flags);
+ lcmsMutex->unlock();
image->ExecCMSTransform(hTransform, *lab, cx, cy);
cmsDeleteTransform(hTransform);
@@ -328,6 +397,7 @@ Imagefloat* ImProcFunctions::lab2rgbOut (LabImage* lab, int cx, int cy, int cw,
#ifdef _OPENMP
#pragma omp parallel for schedule(dynamic,16) if (multiThread)
#endif
+
for (int i = cy; i < cy + ch; i++) {
float R, G, B;
float* rL = lab->L[i];
@@ -358,4 +428,233 @@ Imagefloat* ImProcFunctions::lab2rgbOut (LabImage* lab, int cx, int cy, int cw,
return image;
}
+
+Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos)
+{
+ TMatrix wprof;
+
+ wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile);
+
+ double dx = Color::D50x;
+ double dz = Color::D50z;
+ {
+ dx = dz = 1.0;
+ }
+ double toxyz[3][3] = {
+ {
+ (wprof[0][0] / dx), //I have suppressed / Color::D50x
+ (wprof[0][1] / dx),
+ (wprof[0][2] / dx)
+ }, {
+ (wprof[1][0]),
+ (wprof[1][1]),
+ (wprof[1][2])
+ }, {
+ (wprof[2][0] / dz), //I have suppressed / Color::D50z
+ (wprof[2][1] / dz),
+ (wprof[2][2] / dz)
+ }
+ };
+
+ Imagefloat* image = new Imagefloat(cw, ch);
+
+ double pwr;
+ double ts;
+ ts = slpos;
+
+ int five = mul;
+
+ pwr = 1.0 / gampos;
+
+ if (gampos < 1.0) {
+ pwr = gampos;
+ gampos = 1. / gampos;
+ five = -mul;
+ }
+
+ // int select_temp = 1; //5003K
+ const double eps = 0.000000001; // not divide by zero
+
+ enum class ColorTemp {
+ D50 = 5003, // for Widegamut, ProPhoto Best, Beta -> D50
+ D65 = 6504, // for sRGB, AdobeRGB, Bruce Rec2020 -> D65
+ D60 = 6005 // for ACES AP0 and AP1
+
+ };
+ ColorTemp temp = ColorTemp::D50;
+
+ cmsHPROFILE oprofdef;
+ float p[6]; //primaries
+
+ if (true) {
+ //primaries for 10 working profiles ==> output profiles
+ if (profile == "WideGamut") {
+ p[0] = 0.7350; //Widegamut primaries
+ p[1] = 0.2650;
+ p[2] = 0.1150;
+ p[3] = 0.8260;
+ p[4] = 0.1570;
+ p[5] = 0.0180;
+ } else if (profile == "Adobe RGB") {
+ p[0] = 0.6400; //Adobe primaries
+ p[1] = 0.3300;
+ p[2] = 0.2100;
+ p[3] = 0.7100;
+ p[4] = 0.1500;
+ p[5] = 0.0600;
+ temp = ColorTemp::D65;
+ } else if (profile == "sRGB") {
+ p[0] = 0.6400; // sRGB primaries
+ p[1] = 0.3300;
+ p[2] = 0.3000;
+ p[3] = 0.6000;
+ p[4] = 0.1500;
+ p[5] = 0.0600;
+ temp = ColorTemp::D65;
+ } else if (profile == "BruceRGB") {
+ p[0] = 0.6400; // Bruce primaries
+ p[1] = 0.3300;
+ p[2] = 0.2800;
+ p[3] = 0.6500;
+ p[4] = 0.1500;
+ p[5] = 0.0600;
+ temp = ColorTemp::D65;
+ } else if (profile == "Beta RGB") {
+ p[0] = 0.6888; // Beta primaries
+ p[1] = 0.3112;
+ p[2] = 0.1986;
+ p[3] = 0.7551;
+ p[4] = 0.1265;
+ p[5] = 0.0352;
+ } else if (profile == "BestRGB") {
+ p[0] = 0.7347; // Best primaries
+ p[1] = 0.2653;
+ p[2] = 0.2150;
+ p[3] = 0.7750;
+ p[4] = 0.1300;
+ p[5] = 0.0350;
+ } else if (profile == "Rec2020") {
+ p[0] = 0.7080; // Rec2020 primaries
+ p[1] = 0.2920;
+ p[2] = 0.1700;
+ p[3] = 0.7970;
+ p[4] = 0.1310;
+ p[5] = 0.0460;
+ temp = ColorTemp::D65;
+ } else if (profile == "ACESp0") {
+ p[0] = 0.7347; // ACES P0 primaries
+ p[1] = 0.2653;
+ p[2] = 0.0000;
+ p[3] = 1.0;
+ p[4] = 0.0001;
+ p[5] = -0.0770;
+ temp = ColorTemp::D60;
+ } else if (profile == "ACESp1") {
+ p[0] = 0.713; // ACES P1 primaries
+ p[1] = 0.293;
+ p[2] = 0.165;
+ p[3] = 0.830;
+ p[4] = 0.128;
+ p[5] = 0.044;
+ temp = ColorTemp::D60;
+ } else if (profile == "ProPhoto") {
+ p[0] = 0.7347; //ProPhoto and default primaries
+ p[1] = 0.2653;
+ p[2] = 0.1596;
+ p[3] = 0.8404;
+ p[4] = 0.0366;
+ p[5] = 0.0001;
+ } else {
+ p[0] = 0.7347; //default primaries always unused
+ p[1] = 0.2653;
+ p[2] = 0.1596;
+ p[3] = 0.8404;
+ p[4] = 0.0366;
+ p[5] = 0.0001;
+ }
+
+ if (slpos == 0) {
+ slpos = eps;
+ }
+
+ GammaValues g_a; //gamma parameters
+ int mode = 0;
+ Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2
+
+ cmsCIExyY xyD;
+
+ cmsCIExyYTRIPLE Primaries = {
+ {p[0], p[1], 1.0}, // red
+ {p[2], p[3], 1.0}, // green
+ {p[4], p[5], 1.0} // blue
+ };
+
+ cmsToneCurve* GammaTRC[3];
+ cmsFloat64Number gammaParams[7];
+ gammaParams[4] = g_a[3] * ts;
+ gammaParams[0] = gampos;
+ gammaParams[1] = 1. / (1.0 + g_a[4]);
+ gammaParams[2] = g_a[4] / (1.0 + g_a[4]);
+ gammaParams[3] = 1. / slpos;
+ gammaParams[5] = 0.0;
+ gammaParams[6] = 0.0;
+ // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4);
+
+ // 7 parameters for smoother curves
+ cmsWhitePointFromTemp(&xyD, (double)temp);
+ GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, gammaParams);//5 = more smoother than 4
+ oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC);
+ cmsFreeToneCurve(GammaTRC[0]);
+ }
+
+ if (oprofdef) {
+ #pragma omp parallel for if (multiThread)
+
+ for (int i = 0; i < ch; i++) {
+ float* rr = working->r(i);
+ float* rg = working->g(i);
+ float* rb = working->b(i);
+
+ float* xa = (float*)image->r(i);
+ float* ya = (float*)image->g(i);
+ float* za = (float*)image->b(i);
+
+ for (int j = 0; j < cw; j++) {
+ float r1 = rr[j];
+ float g1 = rg[j];
+ float b1 = rb[j];
+
+ float x_ = toxyz[0][0] * r1 + toxyz[0][1] * g1 + toxyz[0][2] * b1;
+ float y_ = toxyz[1][0] * r1 + toxyz[1][1] * g1 + toxyz[1][2] * b1;
+ float z_ = toxyz[2][0] * r1 + toxyz[2][1] * g1 + toxyz[2][2] * b1;
+
+ xa[j] = ( x_) ;
+ ya[j] = ( y_);
+ za[j] = ( z_);
+
+ }
+ }
+
+ cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE;
+
+
+ lcmsMutex->lock();
+ cmsHPROFILE iprof = ICCStore::getInstance()->getXYZProfile();
+ // cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_16, oprofdef, TYPE_RGB_16, params->icm.outputIntent, cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE);
+ cmsHTRANSFORM hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags);
+ lcmsMutex->unlock();
+
+ image->ExecCMSTransform2(hTransform);
+
+ cmsDeleteTransform(hTransform);
+ image->normalizeFloatTo65535();
+
+ }
+
+
+ return image;
+
+}
+
+
}
diff --git a/rtengine/ipvibrance.cc b/rtengine/ipvibrance.cc
index 26141423c..f7a938c33 100644
--- a/rtengine/ipvibrance.cc
+++ b/rtengine/ipvibrance.cc
@@ -162,7 +162,7 @@ void ImProcFunctions::vibrance (LabImage* lab)
const bool protectskins = params->vibrance.protectskins;
const bool avoidcolorshift = params->vibrance.avoidcolorshift;
- TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.working);
+ TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.workingProfile);
//inverse matrix user select
const float wip[3][3] = {
{static_cast(wiprof[0][0]), static_cast(wiprof[0][1]), static_cast(wiprof[0][2])},
diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc
index cd1bbc5f5..def469b70 100644
--- a/rtengine/ipwavelet.cc
+++ b/rtengine/ipwavelet.cc
@@ -148,7 +148,7 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const
// init variables to display Munsell corrections
MunsellDebugInfo* MunsDebugInfo = new MunsellDebugInfo();
#endif
- TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.working);
+ TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (params->icm.workingProfile);
const double wip[3][3] = {
{wiprof[0][0], wiprof[0][1], wiprof[0][2]},
{wiprof[1][0], wiprof[1][1], wiprof[1][2]},
diff --git a/rtengine/previewimage.cc b/rtengine/previewimage.cc
index 6c548f92a..f180469ad 100644
--- a/rtengine/previewimage.cc
+++ b/rtengine/previewimage.cc
@@ -107,7 +107,7 @@ PreviewImage::PreviewImage (const Glib::ustring &fname, const Glib::ustring &ext
ColorTemp wb = rawImage.getWB ();
rawImage.getFullSize (fw, fh, TR_NONE);
PreviewProps pp (0, 0, fw, fh, 1);
- params.icm.input = Glib::ustring("(embedded)");
+ params.icm.inputProfile = Glib::ustring("(embedded)");
params.raw.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST);
params.raw.deadPixelFilter = false;
params.raw.ca_autocorrect = false;
diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc
index 4218c88ac..e7225e993 100644
--- a/rtengine/procparams.cc
+++ b/rtengine/procparams.cc
@@ -37,60 +37,60 @@ using namespace std;
namespace
{
-Glib::ustring expandRelativePath (const Glib::ustring &procparams_fname, const Glib::ustring &prefix, Glib::ustring embedded_fname)
+Glib::ustring expandRelativePath(const Glib::ustring &procparams_fname, const Glib::ustring &prefix, Glib::ustring embedded_fname)
{
- if (embedded_fname == "" || !Glib::path_is_absolute (procparams_fname)) {
+ if (embedded_fname == "" || !Glib::path_is_absolute(procparams_fname)) {
return embedded_fname;
}
if (prefix != "") {
- if (embedded_fname.length() < prefix.length() || embedded_fname.substr (0, prefix.length()) != prefix) {
+ if (embedded_fname.length() < prefix.length() || embedded_fname.substr(0, prefix.length()) != prefix) {
return embedded_fname;
}
- embedded_fname = embedded_fname.substr (prefix.length());
+ embedded_fname = embedded_fname.substr(prefix.length());
}
- if (Glib::path_is_absolute (embedded_fname)) {
+ if (Glib::path_is_absolute(embedded_fname)) {
return prefix + embedded_fname;
}
- Glib::ustring absPath = prefix + Glib::path_get_dirname (procparams_fname) + G_DIR_SEPARATOR_S + embedded_fname;
+ Glib::ustring absPath = prefix + Glib::path_get_dirname(procparams_fname) + G_DIR_SEPARATOR_S + embedded_fname;
return absPath;
}
-Glib::ustring relativePathIfInside (const Glib::ustring &procparams_fname, bool fnameAbsolute, Glib::ustring embedded_fname)
+Glib::ustring relativePathIfInside(const Glib::ustring &procparams_fname, bool fnameAbsolute, Glib::ustring embedded_fname)
{
- if (fnameAbsolute || embedded_fname == "" || !Glib::path_is_absolute (procparams_fname)) {
+ if (fnameAbsolute || embedded_fname == "" || !Glib::path_is_absolute(procparams_fname)) {
return embedded_fname;
}
Glib::ustring prefix = "";
- if (embedded_fname.length() > 5 && embedded_fname.substr (0, 5) == "file:") {
- embedded_fname = embedded_fname.substr (5);
+ if (embedded_fname.length() > 5 && embedded_fname.substr(0, 5) == "file:") {
+ embedded_fname = embedded_fname.substr(5);
prefix = "file:";
}
- if (!Glib::path_is_absolute (embedded_fname)) {
+ if (!Glib::path_is_absolute(embedded_fname)) {
return prefix + embedded_fname;
}
- Glib::ustring dir1 = Glib::path_get_dirname (procparams_fname) + G_DIR_SEPARATOR_S;
- Glib::ustring dir2 = Glib::path_get_dirname (embedded_fname) + G_DIR_SEPARATOR_S;
+ Glib::ustring dir1 = Glib::path_get_dirname(procparams_fname) + G_DIR_SEPARATOR_S;
+ Glib::ustring dir2 = Glib::path_get_dirname(embedded_fname) + G_DIR_SEPARATOR_S;
- if (dir2.substr (0, dir1.length()) != dir1) {
+ if (dir2.substr(0, dir1.length()) != dir1) {
// it's in a different directory, ie not inside
return prefix + embedded_fname;
}
- return prefix + embedded_fname.substr (dir1.length());
+ return prefix + embedded_fname.substr(dir1.length());
}
-void avoidEmptyCurve (std::vector &curve)
+void avoidEmptyCurve(std::vector &curve)
{
if (curve.empty()) {
- curve.push_back (FCT_Linear);
+ curve.push_back(FCT_Linear);
}
}
@@ -164,6 +164,7 @@ bool assignFromKeyfile(
return true;
}
+
return false;
}
@@ -196,6 +197,7 @@ bool assignFromKeyfile(
return true;
}
+
return false;
}
@@ -274,6 +276,7 @@ bool saveToKeyfile(
putToKeyfile(group_name, key, value, keyfile);
return true;
}
+
return false;
}
@@ -295,6 +298,7 @@ bool saveToKeyfile(
return true;
}
}
+
return false;
}
@@ -328,6 +332,7 @@ ToneCurveParams::ToneCurveParams() :
hlcompr(0),
hlcomprthresh(33),
histmatching(false),
+ fromHistMatching(false),
clampOOG(true)
{
}
@@ -352,6 +357,7 @@ bool ToneCurveParams::operator ==(const ToneCurveParams& other) const
&& hlcompr == other.hlcompr
&& hlcomprthresh == other.hlcomprthresh
&& histmatching == other.histmatching
+ && fromHistMatching == other.fromHistMatching
&& clampOOG == other.clampOOG;
}
@@ -730,10 +736,10 @@ void ColorToningParams::mixerToCurve(std::vector& colorCurve, std::vecto
{
// check if non null first
if (!redlow && !greenlow && !bluelow && !redmed && !greenmed && !bluemed && !redhigh && !greenhigh && !bluehigh) {
- colorCurve.resize (1);
- colorCurve.at (0) = FCT_Linear;
- opacityCurve.resize (1);
- opacityCurve.at (0) = FCT_Linear;
+ colorCurve.resize(1);
+ colorCurve.at(0) = FCT_Linear;
+ opacityCurve.resize(1);
+ opacityCurve.at(0) = FCT_Linear;
return;
}
@@ -746,9 +752,9 @@ void ColorToningParams::mixerToCurve(std::vector& colorCurve, std::vecto
float minTmp, maxTmp;
// Fill the shadow mixer values of the Color TOning tool
- low[0] = float (redlow ) / 100.f; // [-1. ; +1.]
+ low[0] = float (redlow) / 100.f; // [-1. ; +1.]
low[1] = float (greenlow) / 100.f; // [-1. ; +1.]
- low[2] = float (bluelow ) / 100.f; // [-1. ; +1.]
+ low[2] = float (bluelow) / 100.f; // [-1. ; +1.]
minTmp = min (low[0], low[1], low[2]);
maxTmp = max (low[0], low[1], low[2]);
@@ -788,9 +794,9 @@ void ColorToningParams::mixerToCurve(std::vector& colorCurve, std::vecto
}
// Fill the mid-tones mixer values of the Color TOning tool
- med[0] = float (redmed ) / 100.f; // [-1. ; +1.]
+ med[0] = float (redmed) / 100.f; // [-1. ; +1.]
med[1] = float (greenmed) / 100.f; // [-1. ; +1.]
- med[2] = float (bluemed ) / 100.f; // [-1. ; +1.]
+ med[2] = float (bluemed) / 100.f; // [-1. ; +1.]
minTmp = min (med[0], med[1], med[2]);
maxTmp = max (med[0], med[1], med[2]);
@@ -830,9 +836,9 @@ void ColorToningParams::mixerToCurve(std::vector& colorCurve, std::vecto
}
// Fill the highlight mixer values of the Color TOning tool
- high[0] = float (redhigh ) / 100.f; // [-1. ; +1.]
+ high[0] = float (redhigh) / 100.f; // [-1. ; +1.]
high[1] = float (greenhigh) / 100.f; // [-1. ; +1.]
- high[2] = float (bluehigh ) / 100.f; // [-1. ; +1.]
+ high[2] = float (bluehigh) / 100.f; // [-1. ; +1.]
minTmp = min (high[0], high[1], high[2]);
maxTmp = max (high[0], high[1], high[2]);
@@ -875,97 +881,97 @@ void ColorToningParams::mixerToCurve(std::vector& colorCurve, std::vecto
const double xPosMed = 0.4;
const double xPosHigh = 0.7;
- colorCurve.resize ( medSat != 0.f ? 13 : 9 );
- colorCurve.at (0) = FCT_MinMaxCPoints;
- opacityCurve.resize (13);
- opacityCurve.at (0) = FCT_MinMaxCPoints;
+ colorCurve.resize(medSat != 0.f ? 13 : 9);
+ colorCurve.at(0) = FCT_MinMaxCPoints;
+ opacityCurve.resize(13);
+ opacityCurve.at(0) = FCT_MinMaxCPoints;
float h, s, l;
int idx = 1;
if (lowSat == 0.f) {
if (medSat != 0.f) {
- Color::rgb2hsl (med[0], med[1], med[2], h, s, l);
+ Color::rgb2hsl(med[0], med[1], med[2], h, s, l);
} else { // highSat can't be null if the 2 other ones are!
- Color::rgb2hsl (high[0], high[1], high[2], h, s, l);
+ Color::rgb2hsl(high[0], high[1], high[2], h, s, l);
}
} else {
- Color::rgb2hsl (low[0], low[1], low[2], h, s, l);
+ Color::rgb2hsl(low[0], low[1], low[2], h, s, l);
}
- colorCurve.at (idx++) = xPosLow;
- colorCurve.at (idx++) = h;
- colorCurve.at (idx++) = 0.35;
- colorCurve.at (idx++) = 0.35;
+ colorCurve.at(idx++) = xPosLow;
+ colorCurve.at(idx++) = h;
+ colorCurve.at(idx++) = 0.35;
+ colorCurve.at(idx++) = 0.35;
if (medSat != 0.f) {
- Color::rgb2hsl (med[0], med[1], med[2], h, s, l);
- colorCurve.at (idx++) = xPosMed;
- colorCurve.at (idx++) = h;
- colorCurve.at (idx++) = 0.35;
- colorCurve.at (idx++) = 0.35;
+ Color::rgb2hsl(med[0], med[1], med[2], h, s, l);
+ colorCurve.at(idx++) = xPosMed;
+ colorCurve.at(idx++) = h;
+ colorCurve.at(idx++) = 0.35;
+ colorCurve.at(idx++) = 0.35;
}
if (highSat == 0.f) {
if (medSat != 0.f) {
- Color::rgb2hsl (med[0], med[1], med[2], h, s, l);
+ Color::rgb2hsl(med[0], med[1], med[2], h, s, l);
} else { // lowSat can't be null if the 2 other ones are!
- Color::rgb2hsl (low[0], low[1], low[2], h, s, l);
+ Color::rgb2hsl(low[0], low[1], low[2], h, s, l);
}
} else {
- Color::rgb2hsl (high[0], high[1], high[2], h, s, l);
+ Color::rgb2hsl(high[0], high[1], high[2], h, s, l);
}
- colorCurve.at (idx++) = xPosHigh;
- colorCurve.at (idx++) = h;
- colorCurve.at (idx++) = 0.35;
- colorCurve.at (idx) = 0.35;
+ colorCurve.at(idx++) = xPosHigh;
+ colorCurve.at(idx++) = h;
+ colorCurve.at(idx++) = 0.35;
+ colorCurve.at(idx) = 0.35;
- opacityCurve.at (1) = xPosLow;
- opacityCurve.at (2) = double (lowSat);
- opacityCurve.at (3) = 0.35;
- opacityCurve.at (4) = 0.35;
- opacityCurve.at (5) = xPosMed;
- opacityCurve.at (6) = double (medSat);
- opacityCurve.at (7) = 0.35;
- opacityCurve.at (8) = 0.35;
- opacityCurve.at (9) = xPosHigh;
- opacityCurve.at (10) = double (highSat);
- opacityCurve.at (11) = 0.35;
- opacityCurve.at (12) = 0.35;
+ opacityCurve.at(1) = xPosLow;
+ opacityCurve.at(2) = double (lowSat);
+ opacityCurve.at(3) = 0.35;
+ opacityCurve.at(4) = 0.35;
+ opacityCurve.at(5) = xPosMed;
+ opacityCurve.at(6) = double (medSat);
+ opacityCurve.at(7) = 0.35;
+ opacityCurve.at(8) = 0.35;
+ opacityCurve.at(9) = xPosHigh;
+ opacityCurve.at(10) = double (highSat);
+ opacityCurve.at(11) = 0.35;
+ opacityCurve.at(12) = 0.35;
}
void ColorToningParams::slidersToCurve(std::vector& colorCurve, std::vector& opacityCurve) const
{
if (hlColSat.getBottom() == 0 && shadowsColSat.getBottom() == 0) { // if both opacity are null, set both curves to Linear
- colorCurve.resize (1);
- colorCurve.at (0) = FCT_Linear;
- opacityCurve.resize (1);
- opacityCurve.at (0) = FCT_Linear;
+ colorCurve.resize(1);
+ colorCurve.at(0) = FCT_Linear;
+ opacityCurve.resize(1);
+ opacityCurve.at(0) = FCT_Linear;
return;
}
- colorCurve.resize (9);
- colorCurve.at (0) = FCT_MinMaxCPoints;
- colorCurve.at (1) = 0.26 + 0.12 * double (balance) / 100.;
- colorCurve.at (2) = double (shadowsColSat.getTop()) / 360.;
- colorCurve.at (3) = 0.35;
- colorCurve.at (4) = 0.35;
- colorCurve.at (5) = 0.64 + 0.12 * double (balance) / 100.;
- colorCurve.at (6) = double (hlColSat.getTop()) / 360.;
- colorCurve.at (7) = 0.35;
- colorCurve.at (8) = 0.35;
+ colorCurve.resize(9);
+ colorCurve.at(0) = FCT_MinMaxCPoints;
+ colorCurve.at(1) = 0.26 + 0.12 * double (balance) / 100.;
+ colorCurve.at(2) = double (shadowsColSat.getTop()) / 360.;
+ colorCurve.at(3) = 0.35;
+ colorCurve.at(4) = 0.35;
+ colorCurve.at(5) = 0.64 + 0.12 * double (balance) / 100.;
+ colorCurve.at(6) = double (hlColSat.getTop()) / 360.;
+ colorCurve.at(7) = 0.35;
+ colorCurve.at(8) = 0.35;
- opacityCurve.resize (9);
- opacityCurve.at (0) = FCT_MinMaxCPoints;
- opacityCurve.at (1) = colorCurve.at (1);
- opacityCurve.at (2) = double (shadowsColSat.getBottom()) / 100.;
- opacityCurve.at (3) = 0.35;
- opacityCurve.at (4) = 0.35;
- opacityCurve.at (5) = colorCurve.at (5);
- opacityCurve.at (6) = double (hlColSat.getBottom()) / 100.;
- opacityCurve.at (7) = 0.35;
- opacityCurve.at (8) = 0.35;
+ opacityCurve.resize(9);
+ opacityCurve.at(0) = FCT_MinMaxCPoints;
+ opacityCurve.at(1) = colorCurve.at(1);
+ opacityCurve.at(2) = double (shadowsColSat.getBottom()) / 100.;
+ opacityCurve.at(3) = 0.35;
+ opacityCurve.at(4) = 0.35;
+ opacityCurve.at(5) = colorCurve.at(5);
+ opacityCurve.at(6) = double (hlColSat.getBottom()) / 100.;
+ opacityCurve.at(7) = 0.35;
+ opacityCurve.at(8) = 0.35;
}
void ColorToningParams::getCurves(ColorGradientCurve& colorCurveLUT, OpacityCurve& opacityCurveLUT, const double xyz_rgb[3][3], bool& opautili) const
@@ -977,9 +983,9 @@ void ColorToningParams::getCurves(ColorGradientCurve& colorCurveLUT, OpacityCurv
std::vector cCurve, oCurve;
if (method == "RGBSliders" || method == "Splitlr") {
- slidersToCurve (cCurve, oCurve);
+ slidersToCurve(cCurve, oCurve);
} else if (method == "Splitco") {
- mixerToCurve (cCurve, oCurve);
+ mixerToCurve(cCurve, oCurve);
} else {
cCurve = this->colorCurve;
oCurve = this->opacityCurve;
@@ -994,14 +1000,14 @@ void ColorToningParams::getCurves(ColorGradientCurve& colorCurveLUT, OpacityCurv
satur = 0.9f;
}
- colorCurveLUT.SetXYZ (cCurve, xyz_rgb, satur, lumin);
- opacityCurveLUT.Set (oCurve, opautili);
+ colorCurveLUT.SetXYZ(cCurve, xyz_rgb, satur, lumin);
+ opacityCurveLUT.Set(oCurve, opautili);
} else if (method == "Splitlr" || method == "Splitco") {
- colorCurveLUT.SetXYZ (cCurve, xyz_rgb, satur, lumin);
- opacityCurveLUT.Set (oCurve, opautili);
- } else if (method.substr (0, 3) == "RGB") {
- colorCurveLUT.SetRGB (cCurve);
- opacityCurveLUT.Set (oCurve, opautili);
+ colorCurveLUT.SetXYZ(cCurve, xyz_rgb, satur, lumin);
+ opacityCurveLUT.Set(oCurve, opautili);
+ } else if (method.substr(0, 3) == "RGB") {
+ colorCurveLUT.SetRGB(cCurve);
+ opacityCurveLUT.Set(oCurve, opautili);
}
}
@@ -1189,7 +1195,7 @@ const std::vector& WBParams::getWbEntries()
{"Flash 6000K", WBEntry::Type::FLASH, M("TP_WBALANCE_FLASH60"), 6000, 1.f, 1.f, 0.f},
{"Flash 6500K", WBEntry::Type::FLASH, M("TP_WBALANCE_FLASH65"), 6500, 1.f, 1.f, 0.f},
// Should remain the last one
- {"Custom", WBEntry::Type::CUSTOM, M ("TP_WBALANCE_CUSTOM"), 0, 1.f, 1.f, 0.f}
+ {"Custom", WBEntry::Type::CUSTOM, M("TP_WBALANCE_CUSTOM"), 0, 1.f, 1.f, 0.f}
};
return wb_entries;
@@ -1435,7 +1441,7 @@ bool DirPyrDenoiseParams::operator !=(const DirPyrDenoiseParams& other) const
return !(*this == other);
}
-void DirPyrDenoiseParams::getCurves (NoiseCurve &lCurve, NoiseCurve &cCurve) const
+void DirPyrDenoiseParams::getCurves(NoiseCurve &lCurve, NoiseCurve &cCurve) const
{
lCurve.Set(this->lcurve);
cCurve.Set(this->cccurve);
@@ -1552,10 +1558,10 @@ void CropParams::mapToResized(int resizedWidth, int resizedHeight, int scale, in
x1 = 0, x2 = resizedWidth, y1 = 0, y2 = resizedHeight;
if (enabled) {
- x1 = min(resizedWidth - 1, max (0, x / scale));
- y1 = min(resizedHeight - 1, max (0, y / scale));
- x2 = min(resizedWidth, max (0, (x + w) / scale));
- y2 = min(resizedHeight, max (0, (y + h) / scale));
+ x1 = min(resizedWidth - 1, max(0, x / scale));
+ y1 = min(resizedHeight - 1, max(0, y / scale));
+ x2 = min(resizedWidth, max(0, (x + w) / scale));
+ y2 = min(resizedHeight, max(0, (y + h) / scale));
}
}
@@ -1691,6 +1697,7 @@ LensProfParams::LcMode LensProfParams::getMethodNumber(const Glib::ustring& mode
return static_cast(i);
}
}
+
return LcMode::NONE;
}
@@ -1809,6 +1816,7 @@ bool ChannelMixerParams::operator ==(const ChannelMixerParams& other) const
if (enabled != other.enabled) {
return false;
}
+
for (unsigned int i = 0; i < 3; ++i) {
if (
red[i] != other.red[i]
@@ -1818,6 +1826,7 @@ bool ChannelMixerParams::operator ==(const ChannelMixerParams& other) const
return false;
}
}
+
return true;
}
@@ -1940,43 +1949,41 @@ bool ResizeParams::operator !=(const ResizeParams& other) const
return !(*this == other);
}
-const Glib::ustring ColorManagementParams::NoICMString = Glib::ustring ("No ICM: sRGB output");
+const Glib::ustring ColorManagementParams::NoICMString = Glib::ustring("No ICM: sRGB output");
ColorManagementParams::ColorManagementParams() :
- input("(cameraICC)"),
+ inputProfile("(cameraICC)"),
toneCurve(false),
applyLookTable(false),
applyBaselineExposureOffset(true),
applyHueSatMap(true),
dcpIlluminant(0),
- working("ProPhoto"),
- output("RT_sRGB"),
+ workingProfile("ProPhoto"),
+ workingTRC("none"),
+ workingTRCGamma(2.4),
+ workingTRCSlope(12.92310),
+ outputProfile(options.rtSettings.srgb),
outputIntent(RI_RELATIVE),
- outputBPC(true),
- gamma("default"),
- gampos(2.22),
- slpos(4.5),
- freegamma(false)
+ outputBPC(true)
{
}
bool ColorManagementParams::operator ==(const ColorManagementParams& other) const
{
return
- input == other.input
+ inputProfile == other.inputProfile
&& toneCurve == other.toneCurve
&& applyLookTable == other.applyLookTable
&& applyBaselineExposureOffset == other.applyBaselineExposureOffset
&& applyHueSatMap == other.applyHueSatMap
&& dcpIlluminant == other.dcpIlluminant
- && working == other.working
- && output == other.output
+ && workingProfile == other.workingProfile
+ && workingTRC == other.workingTRC
+ && workingTRCGamma == other.workingTRCGamma
+ && workingTRCSlope == other.workingTRCSlope
+ && outputProfile == other.outputProfile
&& outputIntent == other.outputIntent
- && outputBPC == other.outputBPC
- && gamma == other.gamma
- && gampos == other.gampos
- && slpos == other.slpos
- && freegamma == other.freegamma;
+ && outputBPC == other.outputBPC;
}
bool ColorManagementParams::operator !=(const ColorManagementParams& other) const
@@ -2247,11 +2254,11 @@ void WaveletParams::getCurves(
WavOpacityCurveWL& opacityCurveLUTWL
) const
{
- cCurve.Set (this->ccwcurve);
- opacityCurveLUTRG.Set (this->opacityCurveRG);
- opacityCurveLUTBY.Set (this->opacityCurveBY);
- opacityCurveLUTW.Set (this->opacityCurveW);
- opacityCurveLUTWL.Set (this->opacityCurveWL);
+ cCurve.Set(this->ccwcurve);
+ opacityCurveLUTRG.Set(this->opacityCurveRG);
+ opacityCurveLUTBY.Set(this->opacityCurveBY);
+ opacityCurveLUTW.Set(this->opacityCurveW);
+ opacityCurveLUTWL.Set(this->opacityCurveWL);
}
@@ -2625,12 +2632,12 @@ bool MetaDataParams::operator!=(const MetaDataParams &other) const
}
-ProcParams::ProcParams ()
+ProcParams::ProcParams()
{
- setDefaults ();
+ setDefaults();
}
-void ProcParams::setDefaults ()
+void ProcParams::setDefaults()
{
toneCurve = ToneCurveParams();
@@ -2717,8 +2724,8 @@ void ProcParams::setDefaults ()
raw = RAWParams();
metadata = MetaDataParams();
- exif.clear ();
- iptc.clear ();
+ exif.clear();
+ iptc.clear();
rank = 0;
colorlabel = 0;
@@ -2729,7 +2736,7 @@ void ProcParams::setDefaults ()
int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bool fnameAbsolute, ParamsEdited* pedited)
{
- if (fname.empty () && fname2.empty ()) {
+ if (fname.empty() && fname2.empty()) {
return 0;
}
@@ -2739,8 +2746,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
Glib::KeyFile keyFile;
// Version
- keyFile.set_string ("Version", "AppVersion", RTVERSION);
- keyFile.set_integer ("Version", "Version", PPVERSION);
+ keyFile.set_string("Version", "AppVersion", RTVERSION);
+ keyFile.set_integer("Version", "Version", PPVERSION);
saveToKeyfile(!pedited || pedited->general.rank, "General", "Rank", rank, keyFile);
saveToKeyfile(!pedited || pedited->general.colorlabel, "General", "ColorLabel", colorlabel, keyFile);
@@ -2758,6 +2765,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->toneCurve.hlcomprthresh, "Exposure", "HighlightComprThreshold", toneCurve.hlcomprthresh, keyFile);
saveToKeyfile(!pedited || pedited->toneCurve.shcompr, "Exposure", "ShadowCompr", toneCurve.shcompr, keyFile);
saveToKeyfile(!pedited || pedited->toneCurve.histmatching, "Exposure", "HistogramMatching", toneCurve.histmatching, keyFile);
+ saveToKeyfile(!pedited || pedited->toneCurve.fromHistMatching, "Exposure", "FromHistogramMatching", toneCurve.fromHistMatching, keyFile);
saveToKeyfile(!pedited || pedited->toneCurve.clampOOG, "Exposure", "ClampOOG", toneCurve.clampOOG, keyFile);
// Highlight recovery
@@ -2768,7 +2776,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
{ToneCurveParams::TcMode::STD, "Standard"},
{ToneCurveParams::TcMode::FILMLIKE, "FilmLike"},
{ToneCurveParams::TcMode::SATANDVALBLENDING, "SatAndValueBlending"},
- {ToneCurveParams::TcMode::WEIGHTEDSTD,"WeightedStd"},
+ {ToneCurveParams::TcMode::WEIGHTEDSTD, "WeightedStd"},
{ToneCurveParams::TcMode::LUMINANCE, "Luminance"},
{ToneCurveParams::TcMode::PERCEPTUAL, "Perceptual"}
};
@@ -2823,19 +2831,20 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
// Channel mixer
saveToKeyfile(!pedited || pedited->chmixer.enabled, "Channel Mixer", "Enabled", chmixer.enabled, keyFile);
+
if (!pedited || pedited->chmixer.red[0] || pedited->chmixer.red[1] || pedited->chmixer.red[2]) {
- Glib::ArrayHandle rmix (chmixer.red, 3, Glib::OWNERSHIP_NONE);
- keyFile.set_integer_list ("Channel Mixer", "Red", rmix);
+ Glib::ArrayHandle rmix(chmixer.red, 3, Glib::OWNERSHIP_NONE);
+ keyFile.set_integer_list("Channel Mixer", "Red", rmix);
}
if (!pedited || pedited->chmixer.green[0] || pedited->chmixer.green[1] || pedited->chmixer.green[2]) {
- Glib::ArrayHandle gmix (chmixer.green, 3, Glib::OWNERSHIP_NONE);
- keyFile.set_integer_list ("Channel Mixer", "Green", gmix);
+ Glib::ArrayHandle gmix(chmixer.green, 3, Glib::OWNERSHIP_NONE);
+ keyFile.set_integer_list("Channel Mixer", "Green", gmix);
}
if (!pedited || pedited->chmixer.blue[0] || pedited->chmixer.blue[1] || pedited->chmixer.blue[2]) {
- Glib::ArrayHandle bmix (chmixer.blue, 3, Glib::OWNERSHIP_NONE);
- keyFile.set_integer_list ("Channel Mixer", "Blue", bmix);
+ Glib::ArrayHandle bmix(chmixer.blue, 3, Glib::OWNERSHIP_NONE);
+ keyFile.set_integer_list("Channel Mixer", "Blue", bmix);
}
// Black & White
@@ -3031,13 +3040,17 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->dirpyrDenoise.chroma, "Directional Pyramid Denoising", "Chroma", dirpyrDenoise.chroma, keyFile);
saveToKeyfile(!pedited || pedited->dirpyrDenoise.dmethod, "Directional Pyramid Denoising", "Method", dirpyrDenoise.dmethod, keyFile);
saveToKeyfile(!pedited || pedited->dirpyrDenoise.Lmethod, "Directional Pyramid Denoising", "LMethod", dirpyrDenoise.Lmethod, keyFile);
+
if (dirpyrDenoise.Cmethod == "PRE") {
dirpyrDenoise.Cmethod = "MAN"; // Never save 'auto chroma preview mode' to pp3
}
+
saveToKeyfile(!pedited || pedited->dirpyrDenoise.Cmethod, "Directional Pyramid Denoising", "CMethod", dirpyrDenoise.Cmethod, keyFile);
+
if (dirpyrDenoise.C2method == "PREV") {
dirpyrDenoise.C2method = "MANU";
}
+
saveToKeyfile(!pedited || pedited->dirpyrDenoise.C2method, "Directional Pyramid Denoising", "C2Method", dirpyrDenoise.C2method, keyFile);
saveToKeyfile(!pedited || pedited->dirpyrDenoise.smethod, "Directional Pyramid Denoising", "SMethod", dirpyrDenoise.smethod, keyFile);
saveToKeyfile(!pedited || pedited->dirpyrDenoise.medmethod, "Directional Pyramid Denoising", "MedMethod", dirpyrDenoise.medmethod, keyFile);
@@ -3098,8 +3111,8 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->distortion.amount, "Distortion", "Amount", distortion.amount, keyFile);
// Lens profile
- saveToKeyfile(!pedited || pedited->lensProf.lcMode, "LensProfile", "LcMode", lensProf.getMethodString (lensProf.lcMode), keyFile);
- saveToKeyfile(!pedited || pedited->lensProf.lcpFile, "LensProfile", "LCPFile", relativePathIfInside (fname, fnameAbsolute, lensProf.lcpFile), keyFile);
+ saveToKeyfile(!pedited || pedited->lensProf.lcMode, "LensProfile", "LcMode", lensProf.getMethodString(lensProf.lcMode), keyFile);
+ saveToKeyfile(!pedited || pedited->lensProf.lcpFile, "LensProfile", "LCPFile", relativePathIfInside(fname, fnameAbsolute, lensProf.lcpFile), keyFile);
saveToKeyfile(!pedited || pedited->lensProf.useDist, "LensProfile", "UseDistortion", lensProf.useDist, keyFile);
saveToKeyfile(!pedited || pedited->lensProf.useVign, "LensProfile", "UseVignette", lensProf.useVign, keyFile);
saveToKeyfile(!pedited || pedited->lensProf.useCA, "LensProfile", "UseCA", lensProf.useCA, keyFile);
@@ -3164,14 +3177,17 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->prsharpening.deconviter, "PostResizeSharpening", "DeconvIterations", prsharpening.deconviter, keyFile);
// Color management
- saveToKeyfile(!pedited || pedited->icm.input, "Color Management", "InputProfile", relativePathIfInside (fname, fnameAbsolute, icm.input), keyFile);
+ saveToKeyfile(!pedited || pedited->icm.inputProfile, "Color Management", "InputProfile", relativePathIfInside(fname, fnameAbsolute, icm.inputProfile), keyFile);
saveToKeyfile(!pedited || pedited->icm.toneCurve, "Color Management", "ToneCurve", icm.toneCurve, keyFile);
saveToKeyfile(!pedited || pedited->icm.applyLookTable, "Color Management", "ApplyLookTable", icm.applyLookTable, keyFile);
saveToKeyfile(!pedited || pedited->icm.applyBaselineExposureOffset, "Color Management", "ApplyBaselineExposureOffset", icm.applyBaselineExposureOffset, keyFile);
saveToKeyfile(!pedited || pedited->icm.applyHueSatMap, "Color Management", "ApplyHueSatMap", icm.applyHueSatMap, keyFile);
saveToKeyfile(!pedited || pedited->icm.dcpIlluminant, "Color Management", "DCPIlluminant", icm.dcpIlluminant, keyFile);
- saveToKeyfile(!pedited || pedited->icm.working, "Color Management", "WorkingProfile", icm.working, keyFile);
- saveToKeyfile(!pedited || pedited->icm.output, "Color Management", "OutputProfile", icm.output, keyFile);
+ saveToKeyfile(!pedited || pedited->icm.workingProfile, "Color Management", "WorkingProfile", icm.workingProfile, keyFile);
+ saveToKeyfile(!pedited || pedited->icm.workingTRC, "Color Management", "WorkingTRC", icm.workingTRC, keyFile);
+ saveToKeyfile(!pedited || pedited->icm.workingTRCGamma, "Color Management", "WorkingTRCGamma", icm.workingTRCGamma, keyFile);
+ saveToKeyfile(!pedited || pedited->icm.workingTRCSlope, "Color Management", "WorkingTRCSlope", icm.workingTRCSlope, keyFile);
+ saveToKeyfile(!pedited || pedited->icm.outputProfile, "Color Management", "OutputProfile", icm.outputProfile, keyFile);
saveToKeyfile(
!pedited || pedited->icm.outputIntent,
"Color Management",
@@ -3187,10 +3203,6 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
keyFile
);
saveToKeyfile(!pedited || pedited->icm.outputBPC, "Color Management", "OutputBPC", icm.outputBPC, keyFile);
- saveToKeyfile(!pedited || pedited->icm.gamma, "Color Management", "Gammafree", icm.gamma, keyFile);
- saveToKeyfile(!pedited || pedited->icm.freegamma, "Color Management", "Freegamma", icm.freegamma, keyFile);
- saveToKeyfile(!pedited || pedited->icm.gampos, "Color Management", "GammaValue", icm.gampos, keyFile);
- saveToKeyfile(!pedited || pedited->icm.slpos, "Color Management", "GammaSlope", icm.slpos, keyFile);
// Wavelet
saveToKeyfile(!pedited || pedited->wavelet.enabled, "Wavelet", "Enabled", wavelet.enabled, keyFile);
@@ -3360,9 +3372,9 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
saveToKeyfile(!pedited || pedited->colorToning.labgridBHigh, "ColorToning", "LabGridBHigh", colorToning.labgridBHigh, keyFile);
// Raw
- saveToKeyfile(!pedited || pedited->raw.darkFrame, "RAW", "DarkFrame", relativePathIfInside (fname, fnameAbsolute, raw.dark_frame), keyFile);
+ saveToKeyfile(!pedited || pedited->raw.darkFrame, "RAW", "DarkFrame", relativePathIfInside(fname, fnameAbsolute, raw.dark_frame), keyFile);
saveToKeyfile(!pedited || pedited->raw.df_autoselect, "RAW", "DarkFrameAuto", raw.df_autoselect, keyFile);
- saveToKeyfile(!pedited || pedited->raw.ff_file, "RAW", "FlatFieldFile", relativePathIfInside (fname, fnameAbsolute, raw.ff_file), keyFile);
+ saveToKeyfile(!pedited || pedited->raw.ff_file, "RAW", "FlatFieldFile", relativePathIfInside(fname, fnameAbsolute, raw.ff_file), keyFile);
saveToKeyfile(!pedited || pedited->raw.ff_AutoSelect, "RAW", "FlatFieldAutoSelect", raw.ff_AutoSelect, keyFile);
saveToKeyfile(!pedited || pedited->raw.ff_BlurRadius, "RAW", "FlatFieldBlurRadius", raw.ff_BlurRadius, keyFile);
saveToKeyfile(!pedited || pedited->raw.ff_BlurType, "RAW", "FlatFieldBlurType", raw.ff_BlurType, keyFile);
@@ -3422,7 +3434,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
// EXIF change list
if (!pedited || pedited->exif) {
for (ExifPairs::const_iterator i = exif.begin(); i != exif.end(); ++i) {
- keyFile.set_string ("Exif", i->first, i->second);
+ keyFile.set_string("Exif", i->first, i->second);
}
}
@@ -3430,7 +3442,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
if (!pedited || pedited->iptc) {
for (IPTCPairs::const_iterator i = iptc.begin(); i != iptc.end(); ++i) {
Glib::ArrayHandle values = i->second;
- keyFile.set_string_list ("IPTC", i->first, values);
+ keyFile.set_string_list("IPTC", i->first, values);
}
}
@@ -3438,16 +3450,16 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
} catch (Glib::KeyFileError&) {}
- if (sPParams.empty ()) {
+ if (sPParams.empty()) {
return 1;
}
int error1, error2;
- error1 = write (fname, sPParams);
+ error1 = write(fname, sPParams);
- if (!fname2.empty ()) {
+ if (!fname2.empty()) {
- error2 = write (fname2, sPParams);
+ error2 = write(fname2, sPParams);
// If at least one file has been saved, it's a success
return error1 & error2;
} else {
@@ -3457,7 +3469,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
{
- setlocale (LC_NUMERIC, "C"); // to set decimal point to "."
+ setlocale(LC_NUMERIC, "C"); // to set decimal point to "."
if (fname.empty()) {
return 1;
@@ -3467,39 +3479,40 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
try {
if (pedited) {
- pedited->set (false);
+ pedited->set(false);
}
if (!Glib::file_test(fname, Glib::FILE_TEST_EXISTS) ||
- !keyFile.load_from_file(fname)) {
+ !keyFile.load_from_file(fname)) {
return 1;
}
ppVersion = PPVERSION;
appVersion = RTVERSION;
- if (keyFile.has_group ("Version")) {
- if (keyFile.has_key ("Version", "AppVersion")) {
- appVersion = keyFile.get_string ("Version", "AppVersion");
+ if (keyFile.has_group("Version")) {
+ if (keyFile.has_key("Version", "AppVersion")) {
+ appVersion = keyFile.get_string("Version", "AppVersion");
}
- if (keyFile.has_key ("Version", "Version")) {
- ppVersion = keyFile.get_integer ("Version", "Version");
+ if (keyFile.has_key("Version", "Version")) {
+ ppVersion = keyFile.get_integer("Version", "Version");
}
}
- if (keyFile.has_group ("General")) {
+ if (keyFile.has_group("General")) {
assignFromKeyfile(keyFile, "General", "Rank", pedited, rank, pedited->general.rank);
assignFromKeyfile(keyFile, "General", "ColorLabel", pedited, colorlabel, pedited->general.colorlabel);
assignFromKeyfile(keyFile, "General", "InTrash", pedited, inTrash, pedited->general.intrash);
}
- if (keyFile.has_group ("Exposure")) {
+ if (keyFile.has_group("Exposure")) {
if (ppVersion < PPVERSION_AEXP) {
toneCurve.autoexp = false; // prevent execution of autoexp when opening file created with earlier versions of autoexp algorithm
} else {
assignFromKeyfile(keyFile, "Exposure", "Auto", pedited, toneCurve.autoexp, pedited->toneCurve.autoexp);
}
+
assignFromKeyfile(keyFile, "Exposure", "Clip", pedited, toneCurve.clip, pedited->toneCurve.clip);
assignFromKeyfile(keyFile, "Exposure", "Compensation", pedited, toneCurve.expcomp, pedited->toneCurve.expcomp);
assignFromKeyfile(keyFile, "Exposure", "Brightness", pedited, toneCurve.brightness, pedited->toneCurve.brightness);
@@ -3509,6 +3522,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Exposure", "HighlightCompr", pedited, toneCurve.hlcompr, pedited->toneCurve.hlcompr);
assignFromKeyfile(keyFile, "Exposure", "HighlightComprThreshold", pedited, toneCurve.hlcomprthresh, pedited->toneCurve.hlcomprthresh);
assignFromKeyfile(keyFile, "Exposure", "ShadowCompr", pedited, toneCurve.shcompr, pedited->toneCurve.shcompr);
+
if (toneCurve.shcompr > 100) {
toneCurve.shcompr = 100; // older pp3 files can have values above 100.
}
@@ -3529,33 +3543,44 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Exposure", "Curve", pedited, toneCurve.curve, pedited->toneCurve.curve);
assignFromKeyfile(keyFile, "Exposure", "Curve2", pedited, toneCurve.curve2, pedited->toneCurve.curve2);
}
+
assignFromKeyfile(keyFile, "Exposure", "HistogramMatching", pedited, toneCurve.histmatching, pedited->toneCurve.histmatching);
+ if (ppVersion < 340) {
+ toneCurve.fromHistMatching = false;
+ if (pedited) {
+ pedited->toneCurve.fromHistMatching = true;
+ }
+ } else {
+ assignFromKeyfile(keyFile, "Exposure", "FromHistogramMatching", pedited, toneCurve.fromHistMatching, pedited->toneCurve.fromHistMatching);
+ }
assignFromKeyfile(keyFile, "Exposure", "ClampOOG", pedited, toneCurve.clampOOG, pedited->toneCurve.clampOOG);
}
- if (keyFile.has_group ("HLRecovery")) {
+ if (keyFile.has_group("HLRecovery")) {
assignFromKeyfile(keyFile, "HLRecovery", "Enabled", pedited, toneCurve.hrenabled, pedited->toneCurve.hrenabled);
assignFromKeyfile(keyFile, "HLRecovery", "Method", pedited, toneCurve.method, pedited->toneCurve.method);
}
- if (keyFile.has_group ("Channel Mixer")) {
+ if (keyFile.has_group("Channel Mixer")) {
if (ppVersion >= 329) {
assignFromKeyfile(keyFile, "Channel Mixer", "Enabled", pedited, chmixer.enabled, pedited->chmixer.enabled);
} else {
chmixer.enabled = true;
+
if (pedited) {
pedited->chmixer.enabled = true;
}
}
- if (keyFile.has_key ("Channel Mixer", "Red") && keyFile.has_key ("Channel Mixer", "Green") && keyFile.has_key ("Channel Mixer", "Blue")) {
- const std::vector rmix = keyFile.get_integer_list ("Channel Mixer", "Red");
- const std::vector gmix = keyFile.get_integer_list ("Channel Mixer", "Green");
- const std::vector bmix = keyFile.get_integer_list ("Channel Mixer", "Blue");
+
+ if (keyFile.has_key("Channel Mixer", "Red") && keyFile.has_key("Channel Mixer", "Green") && keyFile.has_key("Channel Mixer", "Blue")) {
+ const std::vector rmix = keyFile.get_integer_list("Channel Mixer", "Red");
+ const std::vector gmix = keyFile.get_integer_list("Channel Mixer", "Green");
+ const std::vector bmix = keyFile.get_integer_list("Channel Mixer", "Blue");
if (rmix.size() == 3 && gmix.size() == 3 && bmix.size() == 3) {
- memcpy (chmixer.red, rmix.data(), 3 * sizeof (int));
- memcpy (chmixer.green, gmix.data(), 3 * sizeof (int));
- memcpy (chmixer.blue, bmix.data(), 3 * sizeof (int));
+ memcpy(chmixer.red, rmix.data(), 3 * sizeof(int));
+ memcpy(chmixer.green, gmix.data(), 3 * sizeof(int));
+ memcpy(chmixer.blue, bmix.data(), 3 * sizeof(int));
}
if (ppVersion < 338) {
for (int i = 0; i < 3; ++i) {
@@ -3573,7 +3598,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_group ("Black & White")) {
+ if (keyFile.has_group("Black & White")) {
assignFromKeyfile(keyFile, "Black & White", "Enabled", pedited, blackwhite.enabled, pedited->blackwhite.enabled);
assignFromKeyfile(keyFile, "Black & White", "Method", pedited, blackwhite.method, pedited->blackwhite.method);
assignFromKeyfile(keyFile, "Black & White", "Auto", pedited, blackwhite.autoc, pedited->blackwhite.autoc);
@@ -3626,7 +3651,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
);
}
- if (keyFile.has_group ("Retinex")) {
+ if (keyFile.has_group("Retinex")) {
assignFromKeyfile(keyFile, "Retinex", "Median", pedited, retinex.medianmap, pedited->retinex.medianmap);
assignFromKeyfile(keyFile, "Retinex", "RetinexMethod", pedited, retinex.retinexMethod, pedited->retinex.retinexMethod);
assignFromKeyfile(keyFile, "Retinex", "mapMethod", pedited, retinex.mapMethod, pedited->retinex.mapMethod);
@@ -3676,11 +3701,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Local Contrast", "Lightness", pedited, localContrast.lightness, pedited->localContrast.lightness);
}
- if (keyFile.has_group ("Luminance Curve")) {
+ if (keyFile.has_group("Luminance Curve")) {
if (ppVersion >= 329) {
assignFromKeyfile(keyFile, "Luminance Curve", "Enabled", pedited, labCurve.enabled, pedited->labCurve.enabled);
} else {
labCurve.enabled = true;
+
if (pedited) {
pedited->labCurve.enabled = true;
}
@@ -3696,8 +3722,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
// transform AvoidColorClipping into AvoidColorShift
assignFromKeyfile(keyFile, "Luminance Curve", "AvoidColorClipping", pedited, labCurve.avoidcolorshift, pedited->labCurve.avoidcolorshift);
} else {
- if (keyFile.has_key ("Luminance Curve", "Chromaticity")) {
- labCurve.chromaticity = keyFile.get_integer ("Luminance Curve", "Chromaticity");
+ if (keyFile.has_key("Luminance Curve", "Chromaticity")) {
+ labCurve.chromaticity = keyFile.get_integer("Luminance Curve", "Chromaticity");
if (ppVersion >= 303 && ppVersion < 314 && labCurve.chromaticity == -100) {
blackwhite.enabled = true;
@@ -3717,8 +3743,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
if (ppVersion < 314) {
// Backward compatibility: If BWtoning is true, Chromaticity has to be set to -100, which will produce the same effect
// and will enable the b&w toning mode ('a' & 'b' curves)
- if (keyFile.has_key ("Luminance Curve", "BWtoning")) {
- if ( keyFile.get_boolean ("Luminance Curve", "BWtoning")) {
+ if (keyFile.has_key("Luminance Curve", "BWtoning")) {
+ if (keyFile.get_boolean("Luminance Curve", "BWtoning")) {
labCurve.chromaticity = -100;
if (pedited) {
@@ -3739,7 +3765,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Luminance Curve", "ClCurve", pedited, labCurve.clcurve, pedited->labCurve.clcurve);
}
- if (keyFile.has_group ("Sharpening")) {
+ if (keyFile.has_group("Sharpening")) {
assignFromKeyfile(keyFile, "Sharpening", "Enabled", pedited, sharpening.enabled, pedited->sharpening.enabled);
if (ppVersion >= 334) {
assignFromKeyfile(keyFile, "Sharpening", "Contrast", pedited, sharpening.contrast, pedited->sharpening.contrast);
@@ -3752,15 +3778,15 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Sharpening", "Radius", pedited, sharpening.radius, pedited->sharpening.radius);
assignFromKeyfile(keyFile, "Sharpening", "Amount", pedited, sharpening.amount, pedited->sharpening.amount);
- if (keyFile.has_key ("Sharpening", "Threshold")) {
+ if (keyFile.has_key("Sharpening", "Threshold")) {
if (ppVersion < 302) {
- int thresh = min (keyFile.get_integer ("Sharpening", "Threshold"), 2000);
- sharpening.threshold.setValues (thresh, thresh, 2000, 2000); // TODO: 2000 is the maximum value and is taken of rtgui/sharpening.cc ; should be changed by the tool modularization
+ int thresh = min(keyFile.get_integer("Sharpening", "Threshold"), 2000);
+ sharpening.threshold.setValues(thresh, thresh, 2000, 2000); // TODO: 2000 is the maximum value and is taken of rtgui/sharpening.cc ; should be changed by the tool modularization
} else {
- const std::vector thresh = keyFile.get_integer_list ("Sharpening", "Threshold");
+ const std::vector thresh = keyFile.get_integer_list("Sharpening", "Threshold");
if (thresh.size() >= 4) {
- sharpening.threshold.setValues (thresh[0], thresh[1], min (thresh[2], 2000), min (thresh[3], 2000));
+ sharpening.threshold.setValues(thresh[0], thresh[1], min(thresh[2], 2000), min(thresh[3], 2000));
}
}
@@ -3781,14 +3807,14 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Sharpening", "DeconvIterations", pedited, sharpening.deconviter, pedited->sharpening.deconviter);
}
- if (keyFile.has_group ("SharpenEdge")) {
+ if (keyFile.has_group("SharpenEdge")) {
assignFromKeyfile(keyFile, "SharpenEdge", "Enabled", pedited, sharpenEdge.enabled, pedited->sharpenEdge.enabled);
assignFromKeyfile(keyFile, "SharpenEdge", "Passes", pedited, sharpenEdge.passes, pedited->sharpenEdge.passes);
assignFromKeyfile(keyFile, "SharpenEdge", "Strength", pedited, sharpenEdge.amount, pedited->sharpenEdge.amount);
assignFromKeyfile(keyFile, "SharpenEdge", "ThreeChannels", pedited, sharpenEdge.threechannels, pedited->sharpenEdge.threechannels);
}
- if (keyFile.has_group ("SharpenMicro")) {
+ if (keyFile.has_group("SharpenMicro")) {
assignFromKeyfile(keyFile, "SharpenMicro", "Enabled", pedited, sharpenMicro.enabled, pedited->sharpenMicro.enabled);
assignFromKeyfile(keyFile, "SharpenMicro", "Matrix", pedited, sharpenMicro.matrix, pedited->sharpenMicro.matrix);
assignFromKeyfile(keyFile, "SharpenMicro", "Strength", pedited, sharpenMicro.amount, pedited->sharpenMicro.amount);
@@ -3803,20 +3829,20 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "SharpenMicro", "Uniformity", pedited, sharpenMicro.uniformity, pedited->sharpenMicro.uniformity);
}
- if (keyFile.has_group ("Vibrance")) {
+ if (keyFile.has_group("Vibrance")) {
assignFromKeyfile(keyFile, "Vibrance", "Enabled", pedited, vibrance.enabled, pedited->vibrance.enabled);
assignFromKeyfile(keyFile, "Vibrance", "Pastels", pedited, vibrance.pastels, pedited->vibrance.pastels);
assignFromKeyfile(keyFile, "Vibrance", "Saturated", pedited, vibrance.saturated, pedited->vibrance.saturated);
- if (keyFile.has_key ("Vibrance", "PSThreshold")) {
+ if (keyFile.has_key("Vibrance", "PSThreshold")) {
if (ppVersion < 302) {
- int thresh = keyFile.get_integer ("Vibrance", "PSThreshold");
- vibrance.psthreshold.setValues (thresh, thresh);
+ int thresh = keyFile.get_integer("Vibrance", "PSThreshold");
+ vibrance.psthreshold.setValues(thresh, thresh);
} else {
- const std::vector thresh = keyFile.get_integer_list ("Vibrance", "PSThreshold");
+ const std::vector thresh = keyFile.get_integer_list("Vibrance", "PSThreshold");
- if (thresh.size() >= 2 ) {
- vibrance.psthreshold.setValues (thresh[0], thresh[1]);
+ if (thresh.size() >= 2) {
+ vibrance.psthreshold.setValues(thresh[0], thresh[1]);
}
}
@@ -3831,7 +3857,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Vibrance", "SkinTonesCurve", pedited, vibrance.skintonescurve, pedited->vibrance.skintonescurve);
}
- if (keyFile.has_group ("White Balance")) {
+ if (keyFile.has_group("White Balance")) {
assignFromKeyfile(keyFile, "White Balance", "Enabled", pedited, wb.enabled, pedited->wb.enabled);
assignFromKeyfile(keyFile, "White Balance", "Setting", pedited, wb.method, pedited->wb.method);
assignFromKeyfile(keyFile, "White Balance", "Temperature", pedited, wb.temperature, pedited->wb.temperature);
@@ -3840,12 +3866,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "White Balance", "TemperatureBias", pedited, wb.tempBias, pedited->wb.tempBias);
}
- if (keyFile.has_group ("Defringing")) {
+ if (keyFile.has_group("Defringing")) {
assignFromKeyfile(keyFile, "Defringing", "Enabled", pedited, defringe.enabled, pedited->defringe.enabled);
assignFromKeyfile(keyFile, "Defringing", "Radius", pedited, defringe.radius, pedited->defringe.radius);
- if (keyFile.has_key ("Defringing", "Threshold")) {
- defringe.threshold = (float)keyFile.get_integer ("Defringing", "Threshold");
+ if (keyFile.has_key("Defringing", "Threshold")) {
+ defringe.threshold = (float)keyFile.get_integer("Defringing", "Threshold");
if (pedited) {
pedited->defringe.threshold = true;
@@ -3853,13 +3879,13 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
if (ppVersion < 310) {
- defringe.threshold = sqrt (defringe.threshold * 33.f / 5.f);
+ defringe.threshold = sqrt(defringe.threshold * 33.f / 5.f);
}
assignFromKeyfile(keyFile, "Defringing", "HueCurve", pedited, defringe.huecurve, pedited->defringe.huecurve);
}
- if (keyFile.has_group ("Color appearance")) {
+ if (keyFile.has_group("Color appearance")) {
assignFromKeyfile(keyFile, "Color appearance", "Enabled", pedited, colorappearance.enabled, pedited->colorappearance.enabled);
assignFromKeyfile(keyFile, "Color appearance", "Degree", pedited, colorappearance.degree, pedited->colorappearance.degree);
assignFromKeyfile(keyFile, "Color appearance", "AutoDegree", pedited, colorappearance.autodegree, pedited->colorappearance.autodegree);
@@ -3925,12 +3951,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
- if (keyFile.has_group ("Impulse Denoising")) {
+ if (keyFile.has_group("Impulse Denoising")) {
assignFromKeyfile(keyFile, "Impulse Denoising", "Enabled", pedited, impulseDenoise.enabled, pedited->impulseDenoise.enabled);
assignFromKeyfile(keyFile, "Impulse Denoising", "Threshold", pedited, impulseDenoise.thresh, pedited->impulseDenoise.thresh);
}
- if (keyFile.has_group ("Directional Pyramid Denoising")) {//TODO: No longer an accurate description for FT denoise
+ if (keyFile.has_group("Directional Pyramid Denoising")) { //TODO: No longer an accurate description for FT denoise
assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Enabled", pedited, dirpyrDenoise.enabled, pedited->dirpyrDenoise.enabled);
assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Enhance", pedited, dirpyrDenoise.enhance, pedited->dirpyrDenoise.enhance);
assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Median", pedited, dirpyrDenoise.median, pedited->dirpyrDenoise.median);
@@ -3946,6 +3972,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "C2Method", pedited, dirpyrDenoise.C2method, pedited->dirpyrDenoise.C2method);
+
if (dirpyrDenoise.C2method == "PREV") {
dirpyrDenoise.C2method = "MANU";
}
@@ -3964,7 +3991,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Directional Pyramid Denoising", "Passes", pedited, dirpyrDenoise.passes, pedited->dirpyrDenoise.passes);
}
- if (keyFile.has_group ("EPD")) {
+ if (keyFile.has_group("EPD")) {
assignFromKeyfile(keyFile, "EPD", "Enabled", pedited, epd.enabled, pedited->epd.enabled);
assignFromKeyfile(keyFile, "EPD", "Strength", pedited, epd.strength, pedited->epd.strength);
assignFromKeyfile(keyFile, "EPD", "Gamma", pedited, epd.gamma, pedited->epd.gamma);
@@ -3973,7 +4000,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "EPD", "ReweightingIterates", pedited, epd.reweightingIterates, pedited->epd.reweightingIterates);
}
- if (keyFile.has_group ("FattalToneMapping")) {
+ if (keyFile.has_group("FattalToneMapping")) {
assignFromKeyfile(keyFile, "FattalToneMapping", "Enabled", pedited, fattal.enabled, pedited->fattal.enabled);
assignFromKeyfile(keyFile, "FattalToneMapping", "Threshold", pedited, fattal.threshold, pedited->fattal.threshold);
assignFromKeyfile(keyFile, "FattalToneMapping", "Amount", pedited, fattal.amount, pedited->fattal.amount);
@@ -3987,38 +4014,44 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Shadows & Highlights", "Shadows", pedited, sh.shadows, pedited->sh.shadows);
assignFromKeyfile(keyFile, "Shadows & Highlights", "ShadowTonalWidth", pedited, sh.stonalwidth, pedited->sh.stonalwidth);
assignFromKeyfile(keyFile, "Shadows & Highlights", "Radius", pedited, sh.radius, pedited->sh.radius);
+
if (keyFile.has_key("Shadows & Highlights", "LocalContrast") && ppVersion < 329) {
int lc = keyFile.get_integer("Shadows & Highlights", "LocalContrast");
localContrast.amount = float(lc) / 30.;
+
if (pedited) {
pedited->localContrast.amount = true;
}
+
localContrast.enabled = sh.enabled;
+
if (pedited) {
pedited->localContrast.enabled = true;
}
+
localContrast.radius = sh.radius;
+
if (pedited) {
pedited->localContrast.radius = true;
}
}
}
- if (keyFile.has_group ("Crop")) {
+ if (keyFile.has_group("Crop")) {
assignFromKeyfile(keyFile, "Crop", "Enabled", pedited, crop.enabled, pedited->crop.enabled);
assignFromKeyfile(keyFile, "Crop", "X", pedited, crop.x, pedited->crop.x);
assignFromKeyfile(keyFile, "Crop", "Y", pedited, crop.y, pedited->crop.y);
- if (keyFile.has_key ("Crop", "W")) {
- crop.w = std::max (keyFile.get_integer ("Crop", "W"), 1);
+ if (keyFile.has_key("Crop", "W")) {
+ crop.w = std::max(keyFile.get_integer("Crop", "W"), 1);
if (pedited) {
pedited->crop.w = true;
}
}
- if (keyFile.has_key ("Crop", "H")) {
- crop.h = std::max (keyFile.get_integer ("Crop", "H"), 1);
+ if (keyFile.has_key("Crop", "H")) {
+ crop.h = std::max(keyFile.get_integer("Crop", "H"), 1);
if (pedited) {
pedited->crop.h = true;
@@ -4041,39 +4074,40 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
crop.ratio = "11:17 - Tabloid";
}
}
+
assignFromKeyfile(keyFile, "Crop", "Orientation", pedited, crop.orientation, pedited->crop.orientation);
assignFromKeyfile(keyFile, "Crop", "Guide", pedited, crop.guide, pedited->crop.guide);
}
- if (keyFile.has_group ("Coarse Transformation")) {
+ if (keyFile.has_group("Coarse Transformation")) {
assignFromKeyfile(keyFile, "Coarse Transformation", "Rotate", pedited, coarse.rotate, pedited->coarse.rotate);
assignFromKeyfile(keyFile, "Coarse Transformation", "HorizontalFlip", pedited, coarse.hflip, pedited->coarse.hflip);
assignFromKeyfile(keyFile, "Coarse Transformation", "VerticalFlip", pedited, coarse.vflip, pedited->coarse.vflip);
}
- if (keyFile.has_group ("Rotation")) {
+ if (keyFile.has_group("Rotation")) {
assignFromKeyfile(keyFile, "Rotation", "Degree", pedited, rotate.degree, pedited->rotate.degree);
}
- if (keyFile.has_group ("Common Properties for Transformations")) {
+ if (keyFile.has_group("Common Properties for Transformations")) {
assignFromKeyfile(keyFile, "Common Properties for Transformations", "AutoFill", pedited, commonTrans.autofill, pedited->commonTrans.autofill);
}
- if (keyFile.has_group ("Distortion")) {
+ if (keyFile.has_group("Distortion")) {
assignFromKeyfile(keyFile, "Distortion", "Amount", pedited, distortion.amount, pedited->distortion.amount);
}
- if (keyFile.has_group ("LensProfile")) {
- if (keyFile.has_key ("LensProfile", "LcMode")) {
- lensProf.lcMode = lensProf.getMethodNumber (keyFile.get_string ("LensProfile", "LcMode"));
+ if (keyFile.has_group("LensProfile")) {
+ if (keyFile.has_key("LensProfile", "LcMode")) {
+ lensProf.lcMode = lensProf.getMethodNumber(keyFile.get_string("LensProfile", "LcMode"));
if (pedited) {
pedited->lensProf.lcMode = true;
}
}
- if (keyFile.has_key ("LensProfile", "LCPFile")) {
- lensProf.lcpFile = expandRelativePath (fname, "", keyFile.get_string ("LensProfile", "LCPFile"));
+ if (keyFile.has_key("LensProfile", "LCPFile")) {
+ lensProf.lcpFile = expandRelativePath(fname, "", keyFile.get_string("LensProfile", "LCPFile"));
if (pedited) {
pedited->lensProf.lcpFile = true;
@@ -4090,6 +4124,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
if (keyFile.has_key("LensProfile", "LFCameraMake")) {
lensProf.lfCameraMake = keyFile.get_string("LensProfile", "LFCameraMake");
+
if (pedited) {
pedited->lensProf.lfCameraMake = true;
}
@@ -4097,6 +4132,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
if (keyFile.has_key("LensProfile", "LFCameraModel")) {
lensProf.lfCameraModel = keyFile.get_string("LensProfile", "LFCameraModel");
+
if (pedited) {
pedited->lensProf.lfCameraModel = true;
}
@@ -4104,18 +4140,19 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
if (keyFile.has_key("LensProfile", "LFLens")) {
lensProf.lfLens = keyFile.get_string("LensProfile", "LFLens");
+
if (pedited) {
pedited->lensProf.lfLens = true;
}
}
}
- if (keyFile.has_group ("Perspective")) {
+ if (keyFile.has_group("Perspective")) {
assignFromKeyfile(keyFile, "Perspective", "Horizontal", pedited, perspective.horizontal, pedited->perspective.horizontal);
assignFromKeyfile(keyFile, "Perspective", "Vertical", pedited, perspective.vertical, pedited->perspective.vertical);
}
- if (keyFile.has_group ("Gradient")) {
+ if (keyFile.has_group("Gradient")) {
assignFromKeyfile(keyFile, "Gradient", "Enabled", pedited, gradient.enabled, pedited->gradient.enabled);
assignFromKeyfile(keyFile, "Gradient", "Degree", pedited, gradient.degree, pedited->gradient.degree);
assignFromKeyfile(keyFile, "Gradient", "Feather", pedited, gradient.feather, pedited->gradient.feather);
@@ -4124,19 +4161,19 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Gradient", "CenterY", pedited, gradient.centerY, pedited->gradient.centerY);
}
- if (keyFile.has_group ("PCVignette")) {
+ if (keyFile.has_group("PCVignette")) {
assignFromKeyfile(keyFile, "PCVignette", "Enabled", pedited, pcvignette.enabled, pedited->pcvignette.enabled);
assignFromKeyfile(keyFile, "PCVignette", "Strength", pedited, pcvignette.strength, pedited->pcvignette.strength);
assignFromKeyfile(keyFile, "PCVignette", "Feather", pedited, pcvignette.feather, pedited->pcvignette.feather);
assignFromKeyfile(keyFile, "PCVignette", "Roundness", pedited, pcvignette.roundness, pedited->pcvignette.roundness);
}
- if (keyFile.has_group ("CACorrection")) {
+ if (keyFile.has_group("CACorrection")) {
assignFromKeyfile(keyFile, "CACorrection", "Red", pedited, cacorrection.red, pedited->cacorrection.red);
assignFromKeyfile(keyFile, "CACorrection", "Blue", pedited, cacorrection.blue, pedited->cacorrection.blue);
}
- if (keyFile.has_group ("Vignetting Correction")) {
+ if (keyFile.has_group("Vignetting Correction")) {
assignFromKeyfile(keyFile, "Vignetting Correction", "Amount", pedited, vignetting.amount, pedited->vignetting.amount);
assignFromKeyfile(keyFile, "Vignetting Correction", "Radius", pedited, vignetting.radius, pedited->vignetting.radius);
assignFromKeyfile(keyFile, "Vignetting Correction", "Strength", pedited, vignetting.strength, pedited->vignetting.strength);
@@ -4144,7 +4181,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Vignetting Correction", "CenterY", pedited, vignetting.centerY, pedited->vignetting.centerY);
}
- if (keyFile.has_group ("Resize")) {
+ if (keyFile.has_group("Resize")) {
assignFromKeyfile(keyFile, "Resize", "Enabled", pedited, resize.enabled, pedited->resize.enabled);
assignFromKeyfile(keyFile, "Resize", "Scale", pedited, resize.scale, pedited->resize.scale);
assignFromKeyfile(keyFile, "Resize", "AppliesTo", pedited, resize.appliesTo, pedited->resize.appliesTo);
@@ -4162,21 +4199,21 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_group ("PostResizeSharpening")) {
+ if (keyFile.has_group("PostResizeSharpening")) {
assignFromKeyfile(keyFile, "PostResizeSharpening", "Enabled", pedited, prsharpening.enabled, pedited->prsharpening.enabled);
assignFromKeyfile(keyFile, "PostResizeSharpening", "Contrast", pedited, prsharpening.contrast, pedited->prsharpening.contrast);
assignFromKeyfile(keyFile, "PostResizeSharpening", "Radius", pedited, prsharpening.radius, pedited->prsharpening.radius);
assignFromKeyfile(keyFile, "PostResizeSharpening", "Amount", pedited, prsharpening.amount, pedited->prsharpening.amount);
- if (keyFile.has_key ("PostResizeSharpening", "Threshold")) {
+ if (keyFile.has_key("PostResizeSharpening", "Threshold")) {
if (ppVersion < 302) {
- int thresh = min (keyFile.get_integer ("PostResizeSharpening", "Threshold"), 2000);
- prsharpening.threshold.setValues (thresh, thresh, 2000, 2000); // TODO: 2000 is the maximum value and is taken of rtgui/sharpening.cc ; should be changed by the tool modularization
+ int thresh = min(keyFile.get_integer("PostResizeSharpening", "Threshold"), 2000);
+ prsharpening.threshold.setValues(thresh, thresh, 2000, 2000); // TODO: 2000 is the maximum value and is taken of rtgui/sharpening.cc ; should be changed by the tool modularization
} else {
- const std::vector thresh = keyFile.get_integer_list ("PostResizeSharpening", "Threshold");
+ const std::vector thresh = keyFile.get_integer_list("PostResizeSharpening", "Threshold");
if (thresh.size() >= 4) {
- prsharpening.threshold.setValues (thresh[0], thresh[1], min (thresh[2], 2000), min (thresh[3], 2000));
+ prsharpening.threshold.setValues(thresh[0], thresh[1], min(thresh[2], 2000), min(thresh[3], 2000));
}
}
@@ -4197,12 +4234,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "PostResizeSharpening", "DeconvIterations", pedited, prsharpening.deconviter, pedited->prsharpening.deconviter);
}
- if (keyFile.has_group ("Color Management")) {
- if (keyFile.has_key ("Color Management", "InputProfile")) {
- icm.input = expandRelativePath (fname, "file:", keyFile.get_string ("Color Management", "InputProfile"));
+ if (keyFile.has_group("Color Management")) {
+ if (keyFile.has_key("Color Management", "InputProfile")) {
+ icm.inputProfile = expandRelativePath(fname, "file:", keyFile.get_string("Color Management", "InputProfile"));
if (pedited) {
- pedited->icm.input = true;
+ pedited->icm.inputProfile = true;
}
}
@@ -4211,11 +4248,35 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Color Management", "ApplyBaselineExposureOffset", pedited, icm.applyBaselineExposureOffset, pedited->icm.applyBaselineExposureOffset);
assignFromKeyfile(keyFile, "Color Management", "ApplyHueSatMap", pedited, icm.applyHueSatMap, pedited->icm.applyHueSatMap);
assignFromKeyfile(keyFile, "Color Management", "DCPIlluminant", pedited, icm.dcpIlluminant, pedited->icm.dcpIlluminant);
- assignFromKeyfile(keyFile, "Color Management", "WorkingProfile", pedited, icm.working, pedited->icm.working);
- assignFromKeyfile(keyFile, "Color Management", "OutputProfile", pedited, icm.output, pedited->icm.output);
+ assignFromKeyfile(keyFile, "Color Management", "WorkingProfile", pedited, icm.workingProfile, pedited->icm.workingProfile);
+ assignFromKeyfile(keyFile, "Color Management", "WorkingTRC", pedited, icm.workingTRC, pedited->icm.workingTRC);
+ assignFromKeyfile(keyFile, "Color Management", "WorkingTRCGamma", pedited, icm.workingTRCGamma, pedited->icm.workingTRCGamma);
+ assignFromKeyfile(keyFile, "Color Management", "WorkingTRCSlope", pedited, icm.workingTRCSlope, pedited->icm.workingTRCSlope);
- if (keyFile.has_key ("Color Management", "OutputProfileIntent")) {
- Glib::ustring intent = keyFile.get_string ("Color Management", "OutputProfileIntent");
+ assignFromKeyfile(keyFile, "Color Management", "OutputProfile", pedited, icm.outputProfile, pedited->icm.outputProfile);
+ if (ppVersion < 341) {
+ if (icm.outputProfile == "RT_Medium_gsRGB") {
+ icm.outputProfile = "RTv4_Medium";
+ } else if (icm.outputProfile == "RT_Large_gBT709" || icm.outputProfile == "RT_Large_g10" || icm.outputProfile == "RT_Large_gsRGB") {
+ icm.outputProfile = "RTv4_Large";
+ } else if (icm.outputProfile == "WideGamutRGB") {
+ icm.outputProfile = "RTv4_Wide";
+ } else if (icm.outputProfile == "RT_sRGB_gBT709" || icm.outputProfile == "RT_sRGB_g10" || icm.outputProfile == "RT_sRGB") {
+ icm.outputProfile = "RTv4_sRGB";
+ } else if (icm.outputProfile == "BetaRGB") { // Have we ever provided this profile ? Should we convert this filename ?
+ icm.outputProfile = "RTv4_Beta";
+ } else if (icm.outputProfile == "BestRGB") { // Have we ever provided this profile ? Should we convert this filename ?
+ icm.outputProfile = "RTv4_Best";
+ } else if (icm.outputProfile == "Rec2020") {
+ icm.outputProfile = "RTv4_Rec2020";
+ } else if (icm.outputProfile == "Bruce") { // Have we ever provided this profile ? Should we convert this filename ?
+ icm.outputProfile = "RTv4_Bruce";
+ } else if (icm.outputProfile == "ACES") {
+ icm.outputProfile = "RTv4_ACES-AP0";
+ }
+ }
+ if (keyFile.has_key("Color Management", "OutputProfileIntent")) {
+ Glib::ustring intent = keyFile.get_string("Color Management", "OutputProfileIntent");
if (intent == "Perceptual") {
icm.outputIntent = RI_PERCEPTUAL;
@@ -4231,15 +4292,10 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
pedited->icm.outputIntent = true;
}
}
-
assignFromKeyfile(keyFile, "Color Management", "OutputBPC", pedited, icm.outputBPC, pedited->icm.outputBPC);
- assignFromKeyfile(keyFile, "Color Management", "Gammafree", pedited, icm.gamma, pedited->icm.gamma);
- assignFromKeyfile(keyFile, "Color Management", "Freegamma", pedited, icm.freegamma, pedited->icm.freegamma);
- assignFromKeyfile(keyFile, "Color Management", "GammaValue", pedited, icm.gampos, pedited->icm.gampos);
- assignFromKeyfile(keyFile, "Color Management", "GammaSlope", pedited, icm.slpos, pedited->icm.slpos);
}
- if (keyFile.has_group ("Wavelet")) {
+ if (keyFile.has_group("Wavelet")) {
assignFromKeyfile(keyFile, "Wavelet", "Enabled", pedited, wavelet.enabled, pedited->wavelet.enabled);
assignFromKeyfile(keyFile, "Wavelet", "Strength", pedited, wavelet.strength, pedited->wavelet.strength);
assignFromKeyfile(keyFile, "Wavelet", "Balance", pedited, wavelet.balance, pedited->wavelet.balance);
@@ -4257,15 +4313,18 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Wavelet", "Lipst", pedited, wavelet.lipst, pedited->wavelet.lipst);
assignFromKeyfile(keyFile, "Wavelet", "AvoidColorShift", pedited, wavelet.avoid, pedited->wavelet.avoid);
assignFromKeyfile(keyFile, "Wavelet", "TMr", pedited, wavelet.tmr, pedited->wavelet.tmr);
+
if (ppVersion < 331) { // wavelet.Lmethod was a string before version 331
Glib::ustring temp;
assignFromKeyfile(keyFile, "Wavelet", "LevMethod", pedited, temp, pedited->wavelet.Lmethod);
+
if (!temp.empty()) {
wavelet.Lmethod = std::stoi(temp);
}
} else {
assignFromKeyfile(keyFile, "Wavelet", "LevMethod", pedited, wavelet.Lmethod, pedited->wavelet.Lmethod);
}
+
assignFromKeyfile(keyFile, "Wavelet", "ChoiceLevMethod", pedited, wavelet.CLmethod, pedited->wavelet.CLmethod);
assignFromKeyfile(keyFile, "Wavelet", "BackMethod", pedited, wavelet.Backmethod, pedited->wavelet.Backmethod);
assignFromKeyfile(keyFile, "Wavelet", "TilesMethod", pedited, wavelet.Tilesmethod, pedited->wavelet.Tilesmethod);
@@ -4311,11 +4370,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Wavelet", "CHcurve", pedited, wavelet.Chcurve, pedited->wavelet.Chcurve);
assignFromKeyfile(keyFile, "Wavelet", "WavclCurve", pedited, wavelet.wavclCurve, pedited->wavelet.wavclCurve);
- if (keyFile.has_key ("Wavelet", "Hueskin")) {
- const std::vector thresh = keyFile.get_integer_list ("Wavelet", "Hueskin");
+ if (keyFile.has_key("Wavelet", "Hueskin")) {
+ const std::vector thresh = keyFile.get_integer_list("Wavelet", "Hueskin");
if (thresh.size() >= 4) {
- wavelet.hueskin.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300));
+ wavelet.hueskin.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300));
}
if (pedited) {
@@ -4323,11 +4382,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("Wavelet", "HueRange")) {
- const std::vector thresh = keyFile.get_integer_list ("Wavelet", "HueRange");
+ if (keyFile.has_key("Wavelet", "HueRange")) {
+ const std::vector thresh = keyFile.get_integer_list("Wavelet", "HueRange");
if (thresh.size() >= 4) {
- wavelet.hueskin2.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300));
+ wavelet.hueskin2.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300));
}
if (pedited) {
@@ -4335,11 +4394,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("Wavelet", "HLRange")) {
- const std::vector thresh = keyFile.get_integer_list ("Wavelet", "HLRange");
+ if (keyFile.has_key("Wavelet", "HLRange")) {
+ const std::vector thresh = keyFile.get_integer_list("Wavelet", "HLRange");
if (thresh.size() >= 4) {
- wavelet.hllev.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300));
+ wavelet.hllev.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300));
}
if (pedited) {
@@ -4347,11 +4406,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("Wavelet", "SHRange")) {
- const std::vector thresh = keyFile.get_integer_list ("Wavelet", "SHRange");
+ if (keyFile.has_key("Wavelet", "SHRange")) {
+ const std::vector thresh = keyFile.get_integer_list("Wavelet", "SHRange");
if (thresh.size() >= 4) {
- wavelet.bllev.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300));
+ wavelet.bllev.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300));
}
if (pedited) {
@@ -4359,11 +4418,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("Wavelet", "Edgcont")) {
- const std::vector thresh = keyFile.get_integer_list ("Wavelet", "Edgcont");
+ if (keyFile.has_key("Wavelet", "Edgcont")) {
+ const std::vector thresh = keyFile.get_integer_list("Wavelet", "Edgcont");
if (thresh.size() >= 4) {
- wavelet.edgcont.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300));
+ wavelet.edgcont.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300));
}
if (pedited) {
@@ -4371,11 +4430,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("Wavelet", "Level0noise")) {
- const std::vector thresh = keyFile.get_double_list ("Wavelet", "Level0noise");
+ if (keyFile.has_key("Wavelet", "Level0noise")) {
+ const std::vector thresh = keyFile.get_double_list("Wavelet", "Level0noise");
if (thresh.size() >= 2) {
- wavelet.level0noise.setValues (thresh[0], thresh[1]);
+ wavelet.level0noise.setValues(thresh[0], thresh[1]);
}
if (pedited) {
@@ -4383,11 +4442,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("Wavelet", "Level1noise")) {
- const std::vector thresh = keyFile.get_double_list ("Wavelet", "Level1noise");
+ if (keyFile.has_key("Wavelet", "Level1noise")) {
+ const std::vector thresh = keyFile.get_double_list("Wavelet", "Level1noise");
if (thresh.size() >= 2) {
- wavelet.level1noise.setValues (thresh[0], thresh[1]);
+ wavelet.level1noise.setValues(thresh[0], thresh[1]);
}
if (pedited) {
@@ -4395,11 +4454,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("Wavelet", "Level2noise")) {
- const std::vector thresh = keyFile.get_double_list ("Wavelet", "Level2noise");
+ if (keyFile.has_key("Wavelet", "Level2noise")) {
+ const std::vector thresh = keyFile.get_double_list("Wavelet", "Level2noise");
if (thresh.size() >= 2) {
- wavelet.level2noise.setValues (thresh[0], thresh[1]);
+ wavelet.level2noise.setValues(thresh[0], thresh[1]);
}
if (pedited) {
@@ -4407,11 +4466,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("Wavelet", "Level3noise")) {
- const std::vector thresh = keyFile.get_double_list ("Wavelet", "Level3noise");
+ if (keyFile.has_key("Wavelet", "Level3noise")) {
+ const std::vector thresh = keyFile.get_double_list("Wavelet", "Level3noise");
if (thresh.size() >= 2) {
- wavelet.level3noise.setValues (thresh[0], thresh[1]);
+ wavelet.level3noise.setValues(thresh[0], thresh[1]);
}
if (pedited) {
@@ -4419,11 +4478,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("Wavelet", "Pastlev")) {
- const std::vector thresh = keyFile.get_integer_list ("Wavelet", "Pastlev");
+ if (keyFile.has_key("Wavelet", "Pastlev")) {
+ const std::vector thresh = keyFile.get_integer_list("Wavelet", "Pastlev");
if (thresh.size() >= 4) {
- wavelet.pastlev.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300));
+ wavelet.pastlev.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300));
}
if (pedited) {
@@ -4431,11 +4490,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("Wavelet", "Satlev")) {
- const std::vector thresh = keyFile.get_integer_list ("Wavelet", "Satlev");
+ if (keyFile.has_key("Wavelet", "Satlev")) {
+ const std::vector thresh = keyFile.get_integer_list("Wavelet", "Satlev");
if (thresh.size() >= 4) {
- wavelet.satlev.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300));
+ wavelet.satlev.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300));
}
if (pedited) {
@@ -4451,8 +4510,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
std::stringstream ss;
ss << "Contrast" << (i + 1);
- if (keyFile.has_key ("Wavelet", ss.str())) {
- wavelet.c[i] = keyFile.get_integer ("Wavelet", ss.str());
+ if (keyFile.has_key("Wavelet", ss.str())) {
+ wavelet.c[i] = keyFile.get_integer("Wavelet", ss.str());
if (pedited) {
pedited->wavelet.c[i] = true;
@@ -4464,14 +4523,15 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
std::stringstream ss;
ss << "Chroma" << (i + 1);
- if (keyFile.has_key ("Wavelet", ss.str())) {
- wavelet.ch[i] = keyFile.get_integer ("Wavelet", ss.str());
+ if (keyFile.has_key("Wavelet", ss.str())) {
+ wavelet.ch[i] = keyFile.get_integer("Wavelet", ss.str());
if (pedited) {
pedited->wavelet.ch[i] = true;
}
}
}
+
assignFromKeyfile(keyFile, "Wavelet", "Expedge", pedited, wavelet.expedge, pedited->wavelet.expedge);
assignFromKeyfile(keyFile, "Wavelet", "Expresid", pedited, wavelet.expresid, pedited->wavelet.expresid);
assignFromKeyfile(keyFile, "Wavelet", "Expfinal", pedited, wavelet.expfinal, pedited->wavelet.expfinal);
@@ -4479,16 +4539,16 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "Wavelet", "Expnoise", pedited, wavelet.expnoise, pedited->wavelet.expnoise);
}
- if (keyFile.has_group ("Directional Pyramid Equalizer")) {
+ if (keyFile.has_group("Directional Pyramid Equalizer")) {
assignFromKeyfile(keyFile, "Directional Pyramid Equalizer", "Enabled", pedited, dirpyrequalizer.enabled, pedited->dirpyrequalizer.enabled);
assignFromKeyfile(keyFile, "Directional Pyramid Equalizer", "Gamutlab", pedited, dirpyrequalizer.gamutlab, pedited->dirpyrequalizer.gamutlab);
assignFromKeyfile(keyFile, "Directional Pyramid Equalizer", "cbdlMethod", pedited, dirpyrequalizer.cbdlMethod, pedited->dirpyrequalizer.cbdlMethod);
- if (keyFile.has_key ("Directional Pyramid Equalizer", "Hueskin")) {
- const std::vector thresh = keyFile.get_integer_list ("Directional Pyramid Equalizer", "Hueskin");
+ if (keyFile.has_key("Directional Pyramid Equalizer", "Hueskin")) {
+ const std::vector thresh = keyFile.get_integer_list("Directional Pyramid Equalizer", "Hueskin");
if (thresh.size() >= 4) {
- dirpyrequalizer.hueskin.setValues (thresh[0], thresh[1], min (thresh[2], 300), min (thresh[3], 300));
+ dirpyrequalizer.hueskin.setValues(thresh[0], thresh[1], min(thresh[2], 300), min(thresh[3], 300));
}
if (pedited) {
@@ -4501,15 +4561,15 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
std::stringstream ss;
ss << "Mult" << i;
- if (keyFile.has_key ("Directional Pyramid Equalizer", ss.str())) {
+ if (keyFile.has_key("Directional Pyramid Equalizer", ss.str())) {
if (i == 4) {
- dirpyrequalizer.threshold = keyFile.get_double ("Directional Pyramid Equalizer", ss.str());
+ dirpyrequalizer.threshold = keyFile.get_double("Directional Pyramid Equalizer", ss.str());
if (pedited) {
pedited->dirpyrequalizer.threshold = true;
}
} else {
- dirpyrequalizer.mult[i] = keyFile.get_double ("Directional Pyramid Equalizer", ss.str());
+ dirpyrequalizer.mult[i] = keyFile.get_double("Directional Pyramid Equalizer", ss.str());
if (pedited) {
pedited->dirpyrequalizer.mult[i] = true;
@@ -4525,8 +4585,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
std::stringstream ss;
ss << "Mult" << i;
- if (keyFile.has_key ("Directional Pyramid Equalizer", ss.str())) {
- dirpyrequalizer.mult[i] = keyFile.get_double ("Directional Pyramid Equalizer", ss.str());
+ if (keyFile.has_key("Directional Pyramid Equalizer", ss.str())) {
+ dirpyrequalizer.mult[i] = keyFile.get_double("Directional Pyramid Equalizer", ss.str());
if (pedited) {
pedited->dirpyrequalizer.mult[i] = true;
@@ -4544,14 +4604,15 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "SoftLight", "Strength", pedited, softlight.strength, pedited->softlight.strength);
}
- if (keyFile.has_group ("Film Simulation")) {
+ if (keyFile.has_group("Film Simulation")) {
assignFromKeyfile(keyFile, "Film Simulation", "Enabled", pedited, filmSimulation.enabled, pedited->filmSimulation.enabled);
assignFromKeyfile(keyFile, "Film Simulation", "ClutFilename", pedited, filmSimulation.clutFilename, pedited->filmSimulation.clutFilename);
- if (keyFile.has_key ("Film Simulation", "Strength")) {
+
+ if (keyFile.has_key("Film Simulation", "Strength")) {
if (ppVersion < 321) {
- filmSimulation.strength = keyFile.get_double ("Film Simulation", "Strength") * 100 + 0.1;
+ filmSimulation.strength = keyFile.get_double("Film Simulation", "Strength") * 100 + 0.1;
} else {
- filmSimulation.strength = keyFile.get_integer ("Film Simulation", "Strength");
+ filmSimulation.strength = keyFile.get_integer("Film Simulation", "Strength");
}
if (pedited) {
@@ -4560,15 +4621,17 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_group ("HSV Equalizer")) {
+ if (keyFile.has_group("HSV Equalizer")) {
if (ppVersion >= 329) {
assignFromKeyfile(keyFile, "HSV Equalizer", "Enabled", pedited, hsvequalizer.enabled, pedited->hsvequalizer.enabled);
} else {
hsvequalizer.enabled = true;
+
if (pedited) {
pedited->hsvequalizer.enabled = true;
}
}
+
if (ppVersion >= 300) {
assignFromKeyfile(keyFile, "HSV Equalizer", "HCurve", pedited, hsvequalizer.hcurve, pedited->hsvequalizer.hcurve);
assignFromKeyfile(keyFile, "HSV Equalizer", "SCurve", pedited, hsvequalizer.scurve, pedited->hsvequalizer.scurve);
@@ -4576,22 +4639,24 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_group ("RGB Curves")) {
+ if (keyFile.has_group("RGB Curves")) {
if (ppVersion >= 329) {
assignFromKeyfile(keyFile, "RGB Curves", "Enabled", pedited, rgbCurves.enabled, pedited->rgbCurves.enabled);
} else {
rgbCurves.enabled = true;
+
if (pedited) {
pedited->rgbCurves.enabled = true;
}
}
+
assignFromKeyfile(keyFile, "RGB Curves", "LumaMode", pedited, rgbCurves.lumamode, pedited->rgbCurves.lumamode);
assignFromKeyfile(keyFile, "RGB Curves", "rCurve", pedited, rgbCurves.rcurve, pedited->rgbCurves.rcurve);
assignFromKeyfile(keyFile, "RGB Curves", "gCurve", pedited, rgbCurves.gcurve, pedited->rgbCurves.gcurve);
assignFromKeyfile(keyFile, "RGB Curves", "bCurve", pedited, rgbCurves.bcurve, pedited->rgbCurves.bcurve);
}
- if (keyFile.has_group ("ColorToning")) {
+ if (keyFile.has_group("ColorToning")) {
assignFromKeyfile(keyFile, "ColorToning", "Enabled", pedited, colorToning.enabled, pedited->colorToning.enabled);
assignFromKeyfile(keyFile, "ColorToning", "Method", pedited, colorToning.method, pedited->colorToning.method);
assignFromKeyfile(keyFile, "ColorToning", "Lumamode", pedited, colorToning.lumamode, pedited->colorToning.lumamode);
@@ -4603,11 +4668,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "ColorToning", "SaturatedOpacity", pedited, colorToning.saturatedOpacity, pedited->colorToning.saturatedopacity);
assignFromKeyfile(keyFile, "ColorToning", "Strength", pedited, colorToning.strength, pedited->colorToning.strength);
- if (keyFile.has_key ("ColorToning", "HighlightsColorSaturation")) {
- const std::vector thresh = keyFile.get_integer_list ("ColorToning", "HighlightsColorSaturation");
+ if (keyFile.has_key("ColorToning", "HighlightsColorSaturation")) {
+ const std::vector thresh = keyFile.get_integer_list("ColorToning", "HighlightsColorSaturation");
if (thresh.size() >= 2) {
- colorToning.hlColSat.setValues (thresh[0], thresh[1]);
+ colorToning.hlColSat.setValues(thresh[0], thresh[1]);
}
if (pedited) {
@@ -4615,11 +4680,11 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_key ("ColorToning", "ShadowsColorSaturation")) {
- const std::vector thresh = keyFile.get_integer_list ("ColorToning", "ShadowsColorSaturation");
+ if (keyFile.has_key("ColorToning", "ShadowsColorSaturation")) {
+ const std::vector thresh = keyFile.get_integer_list("ColorToning", "ShadowsColorSaturation");
if (thresh.size() >= 2) {
- colorToning.shadowsColSat.setValues (thresh[0], thresh[1]);
+ colorToning.shadowsColSat.setValues(thresh[0], thresh[1]);
}
if (pedited) {
@@ -4652,12 +4717,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
colorToning.labgridAHigh *= scale;
colorToning.labgridBLow *= scale;
colorToning.labgridBHigh *= scale;
- }
+ }
}
- if (keyFile.has_group ("RAW")) {
- if (keyFile.has_key ("RAW", "DarkFrame")) {
- raw.dark_frame = expandRelativePath (fname, "", keyFile.get_string ("RAW", "DarkFrame" ));
+ if (keyFile.has_group("RAW")) {
+ if (keyFile.has_key("RAW", "DarkFrame")) {
+ raw.dark_frame = expandRelativePath(fname, "", keyFile.get_string("RAW", "DarkFrame"));
if (pedited) {
pedited->raw.darkFrame = true;
@@ -4666,8 +4731,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "RAW", "DarkFrameAuto", pedited, raw.df_autoselect, pedited->raw.df_autoselect);
- if (keyFile.has_key ("RAW", "FlatFieldFile")) {
- raw.ff_file = expandRelativePath (fname, "", keyFile.get_string ("RAW", "FlatFieldFile" ));
+ if (keyFile.has_key("RAW", "FlatFieldFile")) {
+ raw.ff_file = expandRelativePath(fname, "", keyFile.get_string("RAW", "FlatFieldFile"));
if (pedited) {
pedited->raw.ff_file = true;
@@ -4678,6 +4743,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "RAW", "FlatFieldBlurRadius", pedited, raw.ff_BlurRadius, pedited->raw.ff_BlurRadius);
assignFromKeyfile(keyFile, "RAW", "FlatFieldBlurType", pedited, raw.ff_BlurType, pedited->raw.ff_BlurType);
assignFromKeyfile(keyFile, "RAW", "FlatFieldAutoClipControl", pedited, raw.ff_AutoClipControl, pedited->raw.ff_AutoClipControl);
+
if (ppVersion < 328) {
// With ppversion < 328 this value was stored as a boolean, which is nonsense.
// To avoid annoying warnings we skip reading and assume 0.
@@ -4685,20 +4751,24 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
} else {
assignFromKeyfile(keyFile, "RAW", "FlatFieldClipControl", pedited, raw.ff_clipControl, pedited->raw.ff_clipControl);
}
+
assignFromKeyfile(keyFile, "RAW", "CA", pedited, raw.ca_autocorrect, pedited->raw.ca_autocorrect);
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
assignFromKeyfile(keyFile, "RAW", "HotDeadPixels", pedited, raw.hotPixelFilter, pedited->raw.hotPixelFilter);
raw.deadPixelFilter = raw.hotPixelFilter;
+
if (pedited) {
pedited->raw.deadPixelFilter = pedited->raw.hotPixelFilter;
}
+
assignFromKeyfile(keyFile, "RAW", "HotPixelFilter", pedited, raw.hotPixelFilter, pedited->raw.hotPixelFilter);
assignFromKeyfile(keyFile, "RAW", "DeadPixelFilter", pedited, raw.deadPixelFilter, pedited->raw.deadPixelFilter);
assignFromKeyfile(keyFile, "RAW", "HotDeadPixelThresh", pedited, raw.hotdeadpix_thresh, pedited->raw.hotdeadpix_thresh);
assignFromKeyfile(keyFile, "RAW", "PreExposure", pedited, raw.expos, pedited->raw.exPos);
assignFromKeyfile(keyFile, "RAW", "PrePreserv", pedited, raw.preser, pedited->raw.exPreser);
+
if (ppVersion < 320) {
assignFromKeyfile(keyFile, "RAW", "Method", pedited, raw.bayersensor.method, pedited->raw.bayersensor.method);
assignFromKeyfile(keyFile, "RAW", "CcSteps", pedited, raw.bayersensor.ccSteps, pedited->raw.bayersensor.ccSteps);
@@ -4715,12 +4785,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
}
- if (keyFile.has_group ("RAW Bayer")) {
+ if (keyFile.has_group("RAW Bayer")) {
assignFromKeyfile(keyFile, "RAW Bayer", "Method", pedited, raw.bayersensor.method, pedited->raw.bayersensor.method);
assignFromKeyfile(keyFile, "RAW Bayer", "Border", pedited, raw.bayersensor.border, pedited->raw.bayersensor.border);
- if (keyFile.has_key ("RAW Bayer", "ImageNum")) {
- raw.bayersensor.imageNum = keyFile.get_integer ("RAW Bayer", "ImageNum") - 1;
+ if (keyFile.has_key("RAW Bayer", "ImageNum")) {
+ raw.bayersensor.imageNum = keyFile.get_integer("RAW Bayer", "ImageNum") - 1;
if (pedited) {
pedited->raw.bayersensor.imageNum = true;
@@ -4734,20 +4804,23 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "RAW Bayer", "PreBlack3", pedited, raw.bayersensor.black3, pedited->raw.bayersensor.exBlack3);
assignFromKeyfile(keyFile, "RAW Bayer", "PreTwoGreen", pedited, raw.bayersensor.twogreen, pedited->raw.bayersensor.exTwoGreen);
assignFromKeyfile(keyFile, "RAW Bayer", "LineDenoise", pedited, raw.bayersensor.linenoise, pedited->raw.bayersensor.linenoise);
+
if (keyFile.has_key("RAW Bayer", "LineDenoiseDirection")) {
raw.bayersensor.linenoiseDirection = RAWParams::BayerSensor::LineNoiseDirection(keyFile.get_integer("RAW Bayer", "LineDenoiseDirection"));
+
if (pedited) {
pedited->raw.bayersensor.linenoiseDirection = true;
}
}
+
assignFromKeyfile(keyFile, "RAW Bayer", "GreenEqThreshold", pedited, raw.bayersensor.greenthresh, pedited->raw.bayersensor.greenEq);
assignFromKeyfile(keyFile, "RAW Bayer", "DCBIterations", pedited, raw.bayersensor.dcb_iterations, pedited->raw.bayersensor.dcbIterations);
assignFromKeyfile(keyFile, "RAW Bayer", "DCBEnhance", pedited, raw.bayersensor.dcb_enhance, pedited->raw.bayersensor.dcbEnhance);
assignFromKeyfile(keyFile, "RAW Bayer", "LMMSEIterations", pedited, raw.bayersensor.lmmse_iterations, pedited->raw.bayersensor.lmmseIterations);
assignFromKeyfile(keyFile, "RAW Bayer", "DualDemosaicContrast", pedited, raw.bayersensor.dualDemosaicContrast, pedited->raw.bayersensor.dualDemosaicContrast);
- if (keyFile.has_key ("RAW Bayer", "PixelShiftMotionCorrectionMethod")) {
- raw.bayersensor.pixelShiftMotionCorrectionMethod = (RAWParams::BayerSensor::PSMotionCorrectionMethod)keyFile.get_integer ("RAW Bayer", "PixelShiftMotionCorrectionMethod");
+ if (keyFile.has_key("RAW Bayer", "PixelShiftMotionCorrectionMethod")) {
+ raw.bayersensor.pixelShiftMotionCorrectionMethod = (RAWParams::BayerSensor::PSMotionCorrectionMethod)keyFile.get_integer("RAW Bayer", "PixelShiftMotionCorrectionMethod");
if (pedited) {
pedited->raw.bayersensor.pixelShiftMotionCorrectionMethod = true;
@@ -4789,7 +4862,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
assignFromKeyfile(keyFile, "RAW Bayer", "PDAFLinesFilter", pedited, raw.bayersensor.pdafLinesFilter, pedited->raw.bayersensor.pdafLinesFilter);
}
- if (keyFile.has_group ("RAW X-Trans")) {
+ if (keyFile.has_group("RAW X-Trans")) {
assignFromKeyfile(keyFile, "RAW X-Trans", "Method", pedited, raw.xtranssensor.method, pedited->raw.xtranssensor.method);
assignFromKeyfile(keyFile, "RAW X-Trans", "DualDemosaicContrast", pedited, raw.xtranssensor.dualDemosaicContrast, pedited->raw.xtranssensor.dualDemosaicContrast);
assignFromKeyfile(keyFile, "RAW X-Trans", "CcSteps", pedited, raw.xtranssensor.ccSteps, pedited->raw.xtranssensor.ccSteps);
@@ -4801,16 +4874,17 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
if (keyFile.has_group("MetaData")) {
int mode = int(MetaDataParams::TUNNEL);
assignFromKeyfile(keyFile, "MetaData", "Mode", pedited, mode, pedited->metadata.mode);
+
if (mode >= int(MetaDataParams::TUNNEL) && mode <= int(MetaDataParams::STRIP)) {
metadata.mode = static_cast(mode);
}
}
- if (keyFile.has_group ("Exif")) {
- std::vector keys = keyFile.get_keys ("Exif");
+ if (keyFile.has_group("Exif")) {
+ std::vector keys = keyFile.get_keys("Exif");
for (const auto& key : keyFile.get_keys("Exif")) {
- exif[key] = keyFile.get_string ("Exif", key);
+ exif[key] = keyFile.get_string("Exif", key);
if (pedited) {
pedited->exif = true;
@@ -4830,7 +4904,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
* tag content is fully replaced by the new one,
* i.e. they don't merge
*/
- if (keyFile.has_group ("IPTC")) {
+ if (keyFile.has_group("IPTC")) {
for (const auto& key : keyFile.get_keys("IPTC")) {
// does this key already exist?
const IPTCPairs::iterator element = iptc.find(key);
@@ -4841,8 +4915,8 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
}
// TODO: look out if merging Keywords and SupplementalCategories from the procparams chain would be interesting
- for (const auto& currLoadedTagValue : keyFile.get_string_list ("IPTC", key)) {
- iptc[key].push_back (currLoadedTagValue);
+ for (const auto& currLoadedTagValue : keyFile.get_string_list("IPTC", key)) {
+ iptc[key].push_back(currLoadedTagValue);
}
if (pedited) {
@@ -4853,12 +4927,12 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
return 0;
} catch (const Glib::Error& e) {
- printf ("-->%s\n", e.what().c_str());
- setDefaults ();
+ printf("-->%s\n", e.what().c_str());
+ setDefaults();
return 1;
} catch (...) {
- printf ("-->unknown exception!\n");
- setDefaults ();
+ printf("-->unknown exception!\n");
+ setDefaults();
return 1;
}
@@ -4942,13 +5016,13 @@ int ProcParams::write(const Glib::ustring& fname, const Glib::ustring& content)
if (fname.length()) {
FILE *f;
- f = g_fopen (fname.c_str (), "wt");
+ f = g_fopen(fname.c_str(), "wt");
if (f == nullptr) {
error = 1;
} else {
- fprintf (f, "%s", content.c_str());
- fclose (f);
+ fprintf(f, "%s", content.c_str());
+ fclose(f);
}
}
@@ -4959,7 +5033,7 @@ PartialProfile::PartialProfile(bool createInstance, bool paramsEditedValue)
{
if (createInstance) {
pparams = new ProcParams();
- pedited = new ParamsEdited (paramsEditedValue);
+ pedited = new ParamsEdited(paramsEditedValue);
} else {
pparams = nullptr;
pedited = nullptr;
@@ -4969,13 +5043,13 @@ PartialProfile::PartialProfile(bool createInstance, bool paramsEditedValue)
PartialProfile::PartialProfile(ProcParams* pp, ParamsEdited* pe, bool fullCopy)
{
if (fullCopy && pp) {
- pparams = new ProcParams (*pp);
+ pparams = new ProcParams(*pp);
} else {
pparams = pp;
}
if (fullCopy && pe) {
- pedited = new ParamsEdited (*pe);
+ pedited = new ParamsEdited(*pe);
} else {
pedited = pe;
}
@@ -4984,13 +5058,13 @@ PartialProfile::PartialProfile(ProcParams* pp, ParamsEdited* pe, bool fullCopy)
PartialProfile::PartialProfile(const ProcParams* pp, const ParamsEdited* pe)
{
if (pp) {
- pparams = new ProcParams (*pp);
+ pparams = new ProcParams(*pp);
} else {
pparams = nullptr;
}
if (pe) {
- pedited = new ParamsEdited (*pe);
+ pedited = new ParamsEdited(*pe);
} else {
pedited = nullptr;
}
@@ -5033,7 +5107,7 @@ int PartialProfile::load(const Glib::ustring& fName)
} else if (fName == DEFPROFILE_DYNAMIC) {
return -1; // should not happen here
} else {
- return pparams->load (fName, pedited);
+ return pparams->load(fName, pedited);
}
}
@@ -5044,14 +5118,18 @@ int PartialProfile::load(const Glib::ustring& fName)
void PartialProfile::set(bool v)
{
if (pedited) {
- pedited->set (v);
+ pedited->set(v);
}
}
-void PartialProfile::applyTo(ProcParams* destParams) const
+void PartialProfile::applyTo(ProcParams* destParams, bool fromLastSave) const
{
if (destParams && pparams && pedited) {
- pedited->combine (*destParams, *pparams, true);
+ bool fromHistMatching = fromLastSave && destParams->toneCurve.histmatching && pparams->toneCurve.histmatching;
+ pedited->combine(*destParams, *pparams, true);
+ if (!fromLastSave) {
+ destParams->toneCurve.fromHistMatching = fromHistMatching;
+ }
}
}
diff --git a/rtengine/procparams.h b/rtengine/procparams.h
index b6fd1befd..bbc9763cf 100644
--- a/rtengine/procparams.h
+++ b/rtengine/procparams.h
@@ -76,14 +76,14 @@ public:
{
if (is_double) {
return
- std::fabs (bottom_left - rhs.bottom_left) < 1e-10
- && std::fabs (top_left - rhs.top_left) < 1e-10
- && std::fabs (bottom_right - rhs.bottom_right) < 1e-10
- && std::fabs (top_right - rhs.top_right) < 1e-10;
+ std::fabs(bottom_left - rhs.bottom_left) < 1e-10
+ && std::fabs(top_left - rhs.top_left) < 1e-10
+ && std::fabs(bottom_right - rhs.bottom_right) < 1e-10
+ && std::fabs(top_right - rhs.top_right) < 1e-10;
} else {
return
- std::fabs (bottom_left - rhs.bottom_left) < 1e-10
- && std::fabs (top_left - rhs.top_left) < 1e-10;
+ std::fabs(bottom_left - rhs.bottom_left) < 1e-10
+ && std::fabs(top_left - rhs.top_left) < 1e-10;
}
}
@@ -113,7 +113,7 @@ public:
return top_left;
}
- T getBottomLeft() const
+ T getBottomLeft() const
{
return bottom_left;
}
@@ -123,7 +123,7 @@ public:
return top_left;
}
- T getBottomRight() const
+ T getBottomRight() const
{
return bottom_right;
}
@@ -173,7 +173,7 @@ public:
// RV: Type of the value on the X axis
// RV2: Type of the maximum value on the Y axis
template
- RT multiply (RV x, RV2 y_max) const
+ RT multiply(RV x, RV2 y_max) const
{
const double val = x;
@@ -281,6 +281,7 @@ struct ToneCurveParams {
int hlcompr; // Highlight Recovery's compression
int hlcomprthresh; // Highlight Recovery's threshold
bool histmatching; // histogram matching
+ bool fromHistMatching;
bool clampOOG; // clamp out of gamut colours
ToneCurveParams();
@@ -293,8 +294,7 @@ struct ToneCurveParams {
/**
* Parameters of Retinex
*/
-struct RetinexParams
-{
+struct RetinexParams {
bool enabled;
std::vector cdcurve;
std::vector cdHcurve;
@@ -340,8 +340,7 @@ struct RetinexParams
/**
* Parameters of the luminance curve
*/
-struct LCurveParams
-{
+struct LCurveParams {
bool enabled;
std::vector lcurve;
std::vector acurve;
@@ -368,7 +367,7 @@ struct LCurveParams
/**
* Parameters for local contrast
- */
+ */
struct LocalContrastParams {
bool enabled;
int radius;
@@ -1012,22 +1011,22 @@ struct ResizeParams {
* Parameters of the color spaces used during the processing
*/
struct ColorManagementParams {
- Glib::ustring input;
- bool toneCurve;
- bool applyLookTable;
- bool applyBaselineExposureOffset;
- bool applyHueSatMap;
+ Glib::ustring inputProfile;
+ bool toneCurve;
+ bool applyLookTable;
+ bool applyBaselineExposureOffset;
+ bool applyHueSatMap;
int dcpIlluminant;
- Glib::ustring working;
- Glib::ustring output;
+
+ Glib::ustring workingProfile;
+ Glib::ustring workingTRC;
+ double workingTRCGamma;
+ double workingTRCSlope;
+
+ Glib::ustring outputProfile;
RenderingIntent outputIntent;
bool outputBPC;
- Glib::ustring gamma;
- double gampos;
- double slpos;
- bool freegamma;
-
static const Glib::ustring NoICMString;
ColorManagementParams();
@@ -1346,7 +1345,7 @@ struct RAWParams {
static const std::vector& getMethodStrings();
static Glib::ustring getMethodString(Method method);
- };
+ };
BayerSensor bayersensor; ///< RAW parameters for Bayer sensors
XTransSensor xtranssensor; ///< RAW parameters for X-Trans sensors
@@ -1475,7 +1474,7 @@ public:
/** Creates a new instance of ProcParams.
* @return a pointer to the new ProcParams instance. */
- static ProcParams* create ();
+ static ProcParams* create();
/** Destroys an instance of ProcParams.
* @param pp a pointer to the ProcParams instance to destroy. */
@@ -1516,7 +1515,7 @@ public:
void clearGeneral();
int load(const Glib::ustring& fName);
void set(bool v);
- void applyTo(ProcParams* destParams) const ;
+ void applyTo(ProcParams* destParams, bool fromLastSaved = false) const ;
rtengine::procparams::ProcParams* pparams;
ParamsEdited* pedited;
diff --git a/rtengine/rawimage.h b/rtengine/rawimage.h
index 95e7aea8d..7595ad196 100644
--- a/rtengine/rawimage.h
+++ b/rtengine/rawimage.h
@@ -167,10 +167,22 @@ public:
{
return top_margin;
}
+
+ int get_rawwidth() const
+ {
+ return raw_width;
+ }
+
int get_FujiWidth() const
{
return fuji_width;
}
+
+ float const * get_FloatRawImage() const
+ {
+ return float_raw_image;
+ }
+
eSensorType getSensorType();
void getRgbCam (float rgbcam[3][4]);
@@ -312,6 +324,11 @@ public:
return filters == 9;
}
+ bool isFloat() const
+ {
+ return float_raw_image;
+ }
+
public:
// dcraw functions
void pre_interpolate()
diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc
index 29039b712..e851cce9c 100644
--- a/rtengine/rawimagesource.cc
+++ b/rtengine/rawimagesource.cc
@@ -911,16 +911,16 @@ DCPProfile *RawImageSource::getDCP(const ColorManagementParams &cmp, DCPProfile:
{
DCPProfile *dcpProf = nullptr;
cmsHPROFILE dummy;
- findInputProfile(cmp.input, nullptr, (static_cast(getMetaData()))->getCamera(), &dcpProf, dummy);
+ findInputProfile(cmp.inputProfile, nullptr, (static_cast(getMetaData()))->getCamera(), &dcpProf, dummy);
if (dcpProf == nullptr) {
if (settings->verbose) {
- printf("Can't load DCP profile '%s'!\n", cmp.input.c_str());
+ printf("Can't load DCP profile '%s'!\n", cmp.inputProfile.c_str());
}
return nullptr;
}
- dcpProf->setStep2ApplyState(cmp.working, cmp.toneCurve, cmp.applyLookTable, cmp.applyBaselineExposureOffset, as);
+ dcpProf->setStep2ApplyState(cmp.workingProfile, cmp.toneCurve, cmp.applyLookTable, cmp.applyBaselineExposureOffset, as);
return dcpProf;
}
@@ -2182,7 +2182,7 @@ void RawImageSource::retinexPrepareBuffers(const ColorManagementParams& cmp, con
int mode = 0;
Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope
- // printf("g_a0=%f g_a1=%f g_a2=%f g_a3=%f g_a4=%f\n", g_a0,g_a1,g_a2,g_a3,g_a4);
+ // printf("g_a0=%f g_a1=%f g_a2=%f g_a3=%f g_a4=%f\n", g_a0,g_a1,g_a2,g_a3,g_a4);
double start;
double add;
@@ -2344,7 +2344,7 @@ void RawImageSource::retinexPrepareBuffers(const ColorManagementParams& cmp, con
}
} else {
- TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (cmp.working);
+ TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (cmp.workingProfile);
const float wp[3][3] = {
{static_cast(wprof[0][0]), static_cast(wprof[0][1]), static_cast(wprof[0][2])},
{static_cast(wprof[1][0]), static_cast(wprof[1][1]), static_cast(wprof[1][2])},
@@ -2621,7 +2621,7 @@ void RawImageSource::retinex(const ColorManagementParams& cmp, const RetinexPara
}
} else {
- TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.working);
+ TMatrix wiprof = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.workingProfile);
double wip[3][3] = {
{wiprof[0][0], wiprof[0][1], wiprof[0][2]},
@@ -3977,7 +3977,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen
cmsHPROFILE in;
DCPProfile *dcpProf;
- if (!findInputProfile(cmp.input, embedded, camName, &dcpProf, in)) {
+ if (!findInputProfile(cmp.inputProfile, embedded, camName, &dcpProf, in)) {
return;
}
@@ -3994,7 +3994,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen
{camMatrix[2][0], camMatrix[2][1], camMatrix[2][2]}
}
};
- dcpProf->apply(im, cmp.dcpIlluminant, cmp.working, wb, pre_mul_row, cam_matrix, cmp.applyHueSatMap);
+ dcpProf->apply(im, cmp.dcpIlluminant, cmp.workingProfile, wb, pre_mul_row, cam_matrix, cmp.applyHueSatMap);
return;
}
@@ -4003,7 +4003,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen
// in this case we avoid using the slllllooooooowwww lcms
// Calculate matrix for direct conversion raw>working space
- TMatrix work = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.working);
+ TMatrix work = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.workingProfile);
double mat[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
for (int i = 0; i < 3; i++)
@@ -4029,7 +4029,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen
}
} else {
- bool working_space_is_prophoto = (cmp.working == "ProPhoto");
+ bool working_space_is_prophoto = (cmp.workingProfile == "ProPhoto");
// use supplied input profile
@@ -4101,7 +4101,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen
// check if the working space is fully contained in prophoto
if (!working_space_is_prophoto && camera_icc_type == CAMERA_ICC_TYPE_GENERIC) {
- TMatrix toxyz = ICCStore::getInstance()->workingSpaceMatrix(cmp.working);
+ TMatrix toxyz = ICCStore::getInstance()->workingSpaceMatrix(cmp.workingProfile);
TMatrix torgb = ICCStore::getInstance()->workingSpaceInverseMatrix("ProPhoto");
float rgb[3] = {0.f, 0.f, 0.f};
for (int i = 0; i < 2 && !working_space_is_prophoto; ++i) {
@@ -4114,9 +4114,9 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen
for (int j = 0; j < 2; ++j) {
if (rgb[j] < 0.f || rgb[j] > 1.f) {
working_space_is_prophoto = true;
- prophoto = ICCStore::getInstance()->workingSpace(cmp.working);
+ prophoto = ICCStore::getInstance()->workingSpace(cmp.workingProfile);
if (settings->verbose) {
- std::cout << "colorSpaceConversion_: converting directly to " << cmp.working << " instead of passing through ProPhoto" << std::endl;
+ std::cout << "colorSpaceConversion_: converting directly to " << cmp.workingProfile << " instead of passing through ProPhoto" << std::endl;
}
break;
}
@@ -4169,7 +4169,7 @@ void RawImageSource::colorSpaceConversion_ (Imagefloat* im, const ColorManagemen
if (!working_space_is_prophoto) {
toxyz = ICCStore::getInstance()->workingSpaceMatrix ("ProPhoto");
- torgb = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.working); //sRGB .. Adobe...Wide...
+ torgb = ICCStore::getInstance()->workingSpaceInverseMatrix (cmp.workingProfile); //sRGB .. Adobe...Wide...
}
#ifdef _OPENMP
@@ -4603,7 +4603,7 @@ void RawImageSource::HLRecovery_CIELab (float* rin, float* gin, float* bin, floa
float bo = min(b, maxval);
float yy = xyz_cam[1][0] * r + xyz_cam[1][1] * g + xyz_cam[1][2] * b;
float fy = (yy < 65535.0 ? Color::cachef[yy] / 327.68 : std::cbrt(yy / MAXVALD));
- // compute LCH decompostion of the clipped pixel (only color information, thus C and H will be used)
+ // compute LCH decomposition of the clipped pixel (only color information, thus C and H will be used)
float x = xyz_cam[0][0] * ro + xyz_cam[0][1] * go + xyz_cam[0][2] * bo;
float y = xyz_cam[1][0] * ro + xyz_cam[1][1] * go + xyz_cam[1][2] * bo;
float z = xyz_cam[2][0] * ro + xyz_cam[2][1] * go + xyz_cam[2][2] * bo;
diff --git a/rtengine/refreshmap.h b/rtengine/refreshmap.h
index 88092adfc..b9ccc2b65 100644
--- a/rtengine/refreshmap.h
+++ b/rtengine/refreshmap.h
@@ -66,7 +66,7 @@
#define DEFRINGE (M_LUMINANCE|M_COLOR)
#define DIRPYRDENOISE (M_LUMINANCE|M_COLOR)
#define DIRPYREQUALIZER (M_LUMINANCE|M_COLOR)
-#define GAMMA M_MONITOR
+#define GAMMA M_VOID //M_MONITOR
#define CROP M_CROP
#define RESIZE M_VOID
#define EXIF M_VOID
diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h
index c76c542e3..d26d82396 100644
--- a/rtengine/rtengine.h
+++ b/rtengine/rtengine.h
@@ -537,7 +537,7 @@ public:
virtual bool fastPipeline() const = 0;
};
-/** This function performs all the image processinf steps corresponding to the given ProcessingJob. It returns when it is ready, so it can be slow.
+/** This function performs all the image processing steps corresponding to the given ProcessingJob. It returns when it is ready, so it can be slow.
* The ProcessingJob passed becomes invalid, you can not use it any more.
* @param job the ProcessingJob to cancel.
* @param errorCode is the error code if an error occurred (e.g. the input image could not be loaded etc.)
@@ -557,7 +557,7 @@ public:
virtual ProcessingJob* imageReady (IImagefloat* img) = 0;
virtual void error (Glib::ustring message) = 0;
};
-/** This function performs all the image processinf steps corresponding to the given ProcessingJob. It runs in the background, thus it returns immediately,
+/** This function performs all the image processing steps corresponding to the given ProcessingJob. It runs in the background, thus it returns immediately,
* When it finishes, it calls the BatchProcessingListener with the resulting image and asks for the next job. It the listener gives a new job, it goes on
* with processing. If no new job is given, it finishes.
* The ProcessingJob passed becomes invalid, you can not use it any more.
diff --git a/rtengine/rtlensfun.cc b/rtengine/rtlensfun.cc
index 8216f0b83..792a86b61 100644
--- a/rtengine/rtlensfun.cc
+++ b/rtengine/rtlensfun.cc
@@ -33,6 +33,7 @@ extern const Settings *settings;
LFModifier::~LFModifier()
{
if (data_) {
+ MyMutex::MyLock lock(*lfModifierMutex);
data_->Destroy();
}
}
@@ -56,7 +57,7 @@ void LFModifier::correctDistortion(double &x, double &y, int cx, int cy, double
if (swap_xy_) {
std::swap(xx, yy);
}
- if (data_->ApplyGeometryDistortion(xx, yy, 1, 1, pos)) {
+ if (data_->ApplyGeometryDistortion(xx, yy, 1, 1, pos)) { // This is thread-safe
x = pos[0];
y = pos[1];
if (swap_xy_) {
@@ -95,7 +96,7 @@ void LFModifier::correctCA(double &x, double &y, int cx, int cy, int channel) co
if (swap_xy_) {
std::swap(x, y);
}
- data_->ApplySubpixelDistortion(x, y, 1, 1, pos);
+ data_->ApplySubpixelDistortion(x, y, 1, 1, pos); // This is thread-safe
x = pos[2*channel];
y = pos[2*channel+1];
if (swap_xy_) {
@@ -112,12 +113,14 @@ void LFModifier::correctCA(double &x, double &y, int cx, int cy, int channel) co
void LFModifier::processVignetteLine(int width, int y, float *line) const
{
+ MyMutex::MyLock lock(*lfModifierMutex);
data_->ApplyColorModification(line, 0, y, width, 1, LF_CR_1(INTENSITY), 0);
}
void LFModifier::processVignetteLine3Channels(int width, int y, float *line) const
{
+ MyMutex::MyLock lock(*lfModifierMutex);
data_->ApplyColorModification(line, 0, y, width, 1, LF_CR_3(RED, GREEN, BLUE), 0);
}
@@ -157,6 +160,7 @@ LFModifier::LFModifier(lfModifier *m, bool swap_xy, int flags):
swap_xy_(swap_xy),
flags_(flags)
{
+ lfModifierMutex = new MyMutex;
}
@@ -374,12 +378,14 @@ bool LFDatabase::LoadDirectory(const char *dirname)
LFDatabase::LFDatabase():
data_(nullptr)
{
+ lfDBMutex = new MyMutex;
}
LFDatabase::~LFDatabase()
{
if (data_) {
+ MyMutex::MyLock lock(*lfDBMutex);
data_->Destroy();
}
}
@@ -395,6 +401,7 @@ std::vector LFDatabase::getCameras() const
{
std::vector ret;
if (data_) {
+ MyMutex::MyLock lock(*lfDBMutex);
auto cams = data_->GetCameras();
while (*cams) {
ret.emplace_back();
@@ -410,6 +417,7 @@ std::vector LFDatabase::getLenses() const
{
std::vector ret;
if (data_) {
+ MyMutex::MyLock lock(*lfDBMutex);
auto lenses = data_->GetLenses();
while (*lenses) {
ret.emplace_back();
@@ -425,6 +433,7 @@ LFCamera LFDatabase::findCamera(const Glib::ustring &make, const Glib::ustring &
{
LFCamera ret;
if (data_) {
+ MyMutex::MyLock lock(*lfDBMutex);
auto found = data_->FindCamerasExt(make.c_str(), model.c_str());
if (found) {
ret.data_ = found[0];
@@ -439,6 +448,7 @@ LFLens LFDatabase::findLens(const LFCamera &camera, const Glib::ustring &name) c
{
LFLens ret;
if (data_) {
+ MyMutex::MyLock lock(*lfDBMutex);
auto found = data_->FindLenses(camera.data_, nullptr, name.c_str());
for (size_t pos = 0; !found && pos < name.size(); ) {
// try to split the maker from the model of the lens -- we have to
@@ -476,6 +486,7 @@ std::unique_ptr LFDatabase::getModifier(const LFCamera &camera, cons
{
std::unique_ptr ret;
if (data_) {
+ MyMutex::MyLock lock(*lfDBMutex);
if (camera && lens) {
lfModifier *mod = lfModifier::Create(lens.data_, camera.getCropFactor(), width, height);
int flags = LF_MODIFY_DISTORTION | LF_MODIFY_SCALE | LF_MODIFY_TCA;
diff --git a/rtengine/rtlensfun.h b/rtengine/rtlensfun.h
index 7690ef544..f75f25d4f 100644
--- a/rtengine/rtlensfun.h
+++ b/rtengine/rtlensfun.h
@@ -57,6 +57,7 @@ private:
lfModifier *data_;
bool swap_xy_;
int flags_;
+ MyMutex *lfModifierMutex;
};
class LFCamera final
@@ -121,6 +122,7 @@ private:
LFDatabase();
bool LoadDirectory(const char *dirname);
+ MyMutex *lfDBMutex;
static LFDatabase instance_;
lfDatabase *data_;
};
diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc
index 47a6d7349..79dee36bf 100644
--- a/rtengine/rtthumbnail.cc
+++ b/rtengine/rtthumbnail.cc
@@ -66,7 +66,11 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
if (ri->isBayer()) {
const int height = ri->get_iheight();
const int width = ri->get_iwidth();
-
+ const bool isFloat = ri->isFloat();
+ const int top_margin = ri->get_topmargin();
+ const int left_margin = ri->get_leftmargin();
+ const int raw_width = ri->get_rawwidth();
+ const float * const float_raw_image = ri->get_FloatRawImage();
#ifdef _OPENMP
#pragma omp parallel for if(multiThread)
#endif
@@ -76,8 +80,15 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
int col = 0;
for (; col < width - 1; col += 2) {
- float val0 = image[row * width + col][c0];
- float val1 = image[row * width + col + 1][c1];
+ float val0;
+ float val1;
+ if (isFloat) {
+ val0 = float_raw_image[(row + top_margin) * raw_width + col + left_margin];
+ val1 = float_raw_image[(row + top_margin) * raw_width + col + left_margin + 1];
+ } else {
+ val0 = image[row * width + col][c0];
+ val1 = image[row * width + col + 1][c1];
+ }
val0 -= cblack[c0];
val1 -= cblack[c1];
val0 *= scale_mul[c0];
@@ -87,7 +98,12 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
}
if (col < width) { // in case width is odd
- float val0 = image[row * width + col][c0];
+ float val0;
+ if (isFloat) {
+ val0 = float_raw_image[(row + top_margin) * raw_width + col + left_margin];
+ } else {
+ val0 = image[row * width + col][c0];
+ }
val0 -= cblack[c0];
val0 *= scale_mul[c0];
image[row * width + col][c0] = rtengine::CLIP (val0);
@@ -96,6 +112,11 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
} else if (ri->isXtrans()) {
const int height = ri->get_iheight();
const int width = ri->get_iwidth();
+ const bool isFloat = ri->isFloat();
+ const int top_margin = ri->get_topmargin();
+ const int left_margin = ri->get_leftmargin();
+ const int raw_width = ri->get_rawwidth();
+ const float * const float_raw_image = ri->get_FloatRawImage();
#ifdef _OPENMP
#pragma omp parallel for if(multiThread)
@@ -111,7 +132,12 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
for (; col < width - 5; col += 6) {
for (int i = 0; i < 6; ++i) {
const unsigned ccol = c[i];
- float val = image[row * width + col + i][ccol];
+ float val;
+ if (isFloat) {
+ val = float_raw_image[(row + top_margin) * raw_width + col + i + left_margin];
+ } else {
+ val = image[row * width + col + i][ccol];
+ }
val -= cblack[ccol];
val *= scale_mul[ccol];
image[row * width + col + i][ccol] = rtengine::CLIP (val);
@@ -120,7 +146,12 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4],
for (; col < width; ++col) { // remaining columns
const unsigned ccol = ri->XTRANSFC (row, col);
- float val = image[row * width + col][ccol];
+ float val;
+ if (isFloat) {
+ val = float_raw_image[(row + top_margin) * raw_width + col + left_margin];
+ } else {
+ val = image[row * width + col][ccol];
+ }
val -= cblack[ccol];
val *= scale_mul[ccol];
image[row * width + col][ccol] = rtengine::CLIP (val);
@@ -285,8 +316,8 @@ Image8 *load_inspector_mode(const Glib::ustring &fname, RawMetaDataLocation &rml
ProcParams neutral;
neutral.raw.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST);
neutral.raw.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST);
- neutral.icm.input = "(camera)";
- neutral.icm.working = "RT_sRGB";
+ neutral.icm.inputProfile = "(camera)";
+ neutral.icm.workingProfile = options.rtSettings.srgb;
src.preprocess(neutral.raw, neutral.lensProf, neutral.coarse, false);
double thresholdDummy = 0.f;
@@ -1088,7 +1119,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT
gmi = gm * defGain / mul_lum;
bmi = bm * defGain / mul_lum;
- // The RAW exposure is not reflected since it's done in preprocessing. If we only have e.g. the chached thumb,
+ // The RAW exposure is not reflected since it's done in preprocessing. If we only have e.g. the cached thumb,
// that is already preprocessed. So we simulate the effect here roughly my modifying the exposure accordingly
if (isRaw) {
rmi *= params.raw.expos;
@@ -1234,7 +1265,7 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT
bool opautili = false;
if (params.colorToning.enabled) {
- TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.working);
+ TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.workingProfile);
double wp[3][3] = {
{wprof[0][0], wprof[0][1], wprof[0][2]},
{wprof[1][0], wprof[1][1], wprof[1][2]},
@@ -1286,10 +1317,10 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT
if (isRaw) {
cmsHPROFILE dummy;
- RawImageSource::findInputProfile (params.icm.input, nullptr, camName, &dcpProf, dummy);
+ RawImageSource::findInputProfile (params.icm.inputProfile, nullptr, camName, &dcpProf, dummy);
if (dcpProf) {
- dcpProf->setStep2ApplyState (params.icm.working, params.icm.toneCurve, params.icm.applyLookTable, params.icm.applyBaselineExposureOffset, as);
+ dcpProf->setStep2ApplyState (params.icm.workingProfile, params.icm.toneCurve, params.icm.applyLookTable, params.icm.applyBaselineExposureOffset, as);
}
}
diff --git a/rtengine/settings.h b/rtengine/settings.h
index 639d3bf4a..65a469794 100644
--- a/rtengine/settings.h
+++ b/rtengine/settings.h
@@ -50,17 +50,17 @@ public:
bool verbose;
Glib::ustring darkFramesPath; ///< The default directory for dark frames
Glib::ustring flatFieldsPath; ///< The default directory for flat fields
- Glib::ustring adobe; // default name of AdobeRGB1998
- Glib::ustring prophoto; // default name of Prophoto
- Glib::ustring prophoto10; // default name of Prophoto
- Glib::ustring widegamut; //default name of WidegamutRGB
- Glib::ustring beta; // default name of BetaRGB
- Glib::ustring best; // default name of BestRGB
- Glib::ustring bruce; // default name of Bruce
- Glib::ustring srgb; // default name of SRGB space profile
- Glib::ustring srgb10; // default name of SRGB space profile
- Glib::ustring rec2020; // default name of rec2020
+ Glib::ustring adobe; // filename of AdobeRGB1998 profile (default to the bundled one)
+ Glib::ustring prophoto; // filename of Prophoto profile (default to the bundled one)
+ Glib::ustring widegamut; // filename of WidegamutRGB profile (default to the bundled one)
+ Glib::ustring beta; // filename of BetaRGB profile (default to the bundled one)
+ Glib::ustring best; // filename of BestRGB profile (default to the bundled one)
+ Glib::ustring bruce; // filename of BruceRGB profile (default to the bundled one)
+ Glib::ustring srgb; // filename of sRGB profile (default to the bundled one)
+ Glib::ustring rec2020; // filename of Rec2020 profile (default to the bundled one)
+ Glib::ustring ACESp0; // filename of ACES P0 profile (default to the bundled one)
+ Glib::ustring ACESp1; // filename of ACES P1 profile (default to the bundled one)
bool gamutICC; // no longer used
bool gamutLch;
@@ -89,13 +89,13 @@ public:
RAW_IF_NOT_JPEG_FULLSIZE
};
ThumbnailInspectorMode thumbnail_inspector_mode;
-
+
/** Creates a new instance of Settings.
* @return a pointer to the new Settings instance. */
- static Settings* create ();
+ static Settings* create();
/** Destroys an instance of Settings.
* @param s a pointer to the Settings instance to destroy. */
- static void destroy (Settings* s);
+ static void destroy(Settings* s);
};
}
diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc
index f825e34a9..fbee20f44 100644
--- a/rtengine/simpleprocess.cc
+++ b/rtengine/simpleprocess.cc
@@ -375,21 +375,21 @@ private:
float multip = 1.f;
float adjustr = 1.f;
- if (params.icm.working == "ProPhoto") {
+ if (params.icm.workingProfile == "ProPhoto") {
adjustr = 1.f; //
- } else if (params.icm.working == "Adobe RGB") {
+ } else if (params.icm.workingProfile == "Adobe RGB") {
adjustr = 1.f / 1.3f;
- } else if (params.icm.working == "sRGB") {
+ } else if (params.icm.workingProfile == "sRGB") {
adjustr = 1.f / 1.3f;
- } else if (params.icm.working == "WideGamut") {
+ } else if (params.icm.workingProfile == "WideGamut") {
adjustr = 1.f / 1.1f;
- } else if (params.icm.working == "Rec2020") {
+ } else if (params.icm.workingProfile == "Rec2020") {
adjustr = 1.f / 1.1f;
- } else if (params.icm.working == "Beta RGB") {
+ } else if (params.icm.workingProfile == "Beta RGB") {
adjustr = 1.f / 1.2f;
- } else if (params.icm.working == "BestRGB") {
+ } else if (params.icm.workingProfile == "BestRGB") {
adjustr = 1.f / 1.2f;
- } else if (params.icm.working == "BruceRGB") {
+ } else if (params.icm.workingProfile == "BruceRGB") {
adjustr = 1.f / 1.2f;
}
@@ -618,21 +618,21 @@ private:
float MinRMoy = 0.f;
float MinBMoy = 0.f;
- if (params.icm.working == "ProPhoto") {
+ if (params.icm.workingProfile == "ProPhoto") {
adjustr = 1.f;
- } else if (params.icm.working == "Adobe RGB") {
+ } else if (params.icm.workingProfile == "Adobe RGB") {
adjustr = 1.f / 1.3f;
- } else if (params.icm.working == "sRGB") {
+ } else if (params.icm.workingProfile == "sRGB") {
adjustr = 1.f / 1.3f;
- } else if (params.icm.working == "WideGamut") {
+ } else if (params.icm.workingProfile == "WideGamut") {
adjustr = 1.f / 1.1f;
- } else if (params.icm.working == "Rec2020") {
+ } else if (params.icm.workingProfile == "Rec2020") {
adjustr = 1.f / 1.1f;
- } else if (params.icm.working == "Beta RGB") {
+ } else if (params.icm.workingProfile == "Beta RGB") {
adjustr = 1.f / 1.2f;
- } else if (params.icm.working == "BestRGB") {
+ } else if (params.icm.workingProfile == "BestRGB") {
adjustr = 1.f / 1.2f;
- } else if (params.icm.working == "BruceRGB") {
+ } else if (params.icm.workingProfile == "BruceRGB") {
adjustr = 1.f / 1.2f;
}
@@ -749,7 +749,9 @@ private:
ipf.getAutoExp (aehist, aehistcompr, params.toneCurve.clip, expcomp, bright, contr, black, hlcompr, hlcomprthresh);
}
if (params.toneCurve.histmatching) {
- imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve);
+ if (!params.toneCurve.fromHistMatching) {
+ imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve);
+ }
if (params.toneCurve.autoexp) {
params.toneCurve.expcomp = 0.0;
@@ -761,7 +763,6 @@ private:
params.toneCurve.brightness = 0;
params.toneCurve.contrast = 0;
params.toneCurve.black = 0;
-
}
// at this stage, we can flush the raw data to free up quite an important amount of memory
@@ -884,9 +885,49 @@ private:
const int W = baseImg->getWidth();
const int H = baseImg->getHeight();
LabImage labcbdl (W, H);
- ipf.rgb2lab (*baseImg, labcbdl, params.icm.working);
+ ipf.rgb2lab (*baseImg, labcbdl, params.icm.workingProfile);
ipf.dirpyrequalizer (&labcbdl, 1);
- ipf.lab2rgb (labcbdl, *baseImg, params.icm.working);
+ ipf.lab2rgb (labcbdl, *baseImg, params.icm.workingProfile);
+ }
+
+ //gamma TRC working
+ if (params.icm.workingTRC == "Custom") { //exec TRC IN free
+ Glib::ustring profile;
+ profile = params.icm.workingProfile;
+
+ if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") {
+ int cw = baseImg->getWidth();
+ int ch = baseImg->getHeight();
+ // put gamma TRC to 1
+ Imagefloat* readyImg0 = NULL;
+ readyImg0 = ipf.workingtrc(baseImg, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310);
+ #pragma omp parallel for
+
+ for (int row = 0; row < ch; row++) {
+ for (int col = 0; col < cw; col++) {
+ baseImg->r(row, col) = (float)readyImg0->r(row, col);
+ baseImg->g(row, col) = (float)readyImg0->g(row, col);
+ baseImg->b(row, col) = (float)readyImg0->b(row, col);
+ }
+ }
+
+ delete readyImg0;
+
+ //adjust TRC
+ Imagefloat* readyImg = NULL;
+ readyImg = ipf.workingtrc(baseImg, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope);
+ #pragma omp parallel for
+
+ for (int row = 0; row < ch; row++) {
+ for (int col = 0; col < cw; col++) {
+ baseImg->r(row, col) = (float)readyImg->r(row, col);
+ baseImg->g(row, col) = (float)readyImg->g(row, col);
+ baseImg->b(row, col) = (float)readyImg->b(row, col);
+ }
+ }
+
+ delete readyImg;
+ }
}
// RGB processing
@@ -913,7 +954,7 @@ private:
bool opautili = false;
if (params.colorToning.enabled) {
- TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.working);
+ TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix (params.icm.workingProfile);
double wp[3][3] = {
{wprof[0][0], wprof[0][1], wprof[0][2]},
{wprof[1][0], wprof[1][1], wprof[1][2]},
@@ -1219,29 +1260,16 @@ private:
bool useLCMS = false;
bool bwonly = params.blackwhite.enabled && !params.colorToning.enabled && !autili && !butili ;
- if (params.icm.gamma != "default" || params.icm.freegamma) { // if select gamma output between BT709, sRGB, linear, low, high, 2.2 , 1.8
+ ///////////// Custom output gamma has been removed, the user now has to create
+ ///////////// a new output profile with the ICCProfileCreator
- GammaValues ga;
- // if(params.blackwhite.enabled) params.toneCurve.hrenabled=false;
- readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm, &ga);
- customGamma = true;
+ // if Default gamma mode: we use the profile selected in the "Output profile" combobox;
+ // gamma come from the selected profile, otherwise it comes from "Free gamma" tool
- //or selected Free gamma
- useLCMS = false;
+ readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm);
- if ((jprof = ICCStore::getInstance()->createCustomGammaOutputProfile (params.icm, ga)) == nullptr) {
- useLCMS = true;
- }
-
- } else {
- // if Default gamma mode: we use the profile selected in the "Output profile" combobox;
- // gamma come from the selected profile, otherwise it comes from "Free gamma" tool
-
- readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm);
-
- if (settings->verbose) {
- printf ("Output profile_: \"%s\"\n", params.icm.output.c_str());
- }
+ if (settings->verbose) {
+ printf ("Output profile_: \"%s\"\n", params.icm.outputProfile.c_str());
}
delete labView;
@@ -1300,21 +1328,21 @@ private:
} else {
// use the selected output profile if present, otherwise use LCMS2 profile generate by lab2rgb16 w/ gamma
- if (params.icm.output != "" && params.icm.output != ColorManagementParams::NoICMString) {
+ if (params.icm.outputProfile != "" && params.icm.outputProfile != ColorManagementParams::NoICMString) {
// if ICCStore::getInstance()->getProfile send back an object, then ICCStore::getInstance()->getContent will do too
- cmsHPROFILE jprof = ICCStore::getInstance()->getProfile (params.icm.output); //get outProfile
+ cmsHPROFILE jprof = ICCStore::getInstance()->getProfile (params.icm.outputProfile); //get outProfile
if (jprof == nullptr) {
if (settings->verbose) {
- printf ("\"%s\" ICC output profile not found!\n - use LCMS2 substitution\n", params.icm.output.c_str());
+ printf ("\"%s\" ICC output profile not found!\n - use LCMS2 substitution\n", params.icm.outputProfile.c_str());
}
} else {
if (settings->verbose) {
- printf ("Using \"%s\" output profile\n", params.icm.output.c_str());
+ printf ("Using \"%s\" output profile\n", params.icm.outputProfile.c_str());
}
- ProfileContent pc = ICCStore::getInstance()->getContent (params.icm.output);
+ ProfileContent pc = ICCStore::getInstance()->getContent (params.icm.outputProfile);
readyImg->setOutputProfile (pc.getData().c_str(), pc.getData().size());
}
} else {
@@ -1361,7 +1389,7 @@ private:
double scale_factor = ipf.resizeScale (¶ms, fw, fh, imw, imh);
std::unique_ptr tmplab (new LabImage (fw, fh));
- ipf.rgb2lab (*baseImg, *tmplab, params.icm.working);
+ ipf.rgb2lab (*baseImg, *tmplab, params.icm.workingProfile);
if (params.crop.enabled) {
int cx = params.crop.x;
@@ -1398,7 +1426,7 @@ private:
delete baseImg;
baseImg = new Imagefloat (fw, fh);
- ipf.lab2rgb (*tmplab, *baseImg, params.icm.working);
+ ipf.lab2rgb (*tmplab, *baseImg, params.icm.workingProfile);
}
void adjust_procparams (double scale_factor)
diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc
index 7fa55cfb7..c75995b25 100644
--- a/rtengine/stdimagesource.cc
+++ b/rtengine/stdimagesource.cc
@@ -220,9 +220,9 @@ void StdImageSource::colorSpaceConversion (Imagefloat* im, const ColorManagement
bool skipTransform = false;
cmsHPROFILE in = nullptr;
- cmsHPROFILE out = ICCStore::getInstance()->workingSpace (cmp.working);
+ cmsHPROFILE out = ICCStore::getInstance()->workingSpace (cmp.workingProfile);
- if (cmp.input == "(embedded)" || cmp.input == "" || cmp.input == "(camera)" || cmp.input == "(cameraICC)") {
+ if (cmp.inputProfile == "(embedded)" || cmp.inputProfile == "" || cmp.inputProfile == "(camera)" || cmp.inputProfile == "(cameraICC)") {
if (embedded) {
in = embedded;
} else {
@@ -233,8 +233,8 @@ void StdImageSource::colorSpaceConversion (Imagefloat* im, const ColorManagement
}
}
} else {
- if (cmp.input != "(none)") {
- in = ICCStore::getInstance()->getProfile (cmp.input);
+ if (cmp.inputProfile != "(none)") {
+ in = ICCStore::getInstance()->getProfile (cmp.inputProfile);
if (in == nullptr && embedded) {
in = embedded;
@@ -270,7 +270,7 @@ void StdImageSource::colorSpaceConversion (Imagefloat* im, const ColorManagement
cmsDeleteTransform(hTransform);
} else {
- printf("Could not convert from %s to %s\n", in == embedded ? "embedded profile" : cmp.input.data(), cmp.working.data());
+ printf("Could not convert from %s to %s\n", in == embedded ? "embedded profile" : cmp.inputProfile.data(), cmp.workingProfile.data());
}
}
}
diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc
index c6faef2e7..359b33575 100644
--- a/rtengine/tmo_fattal02.cc
+++ b/rtengine/tmo_fattal02.cc
@@ -1092,7 +1092,7 @@ void ImProcFunctions::ToneMapFattal02 (Imagefloat *rgb)
constexpr float luminance_noise_floor = 65.535f;
constexpr float min_luminance = 1.f;
- TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix (params->icm.working);
+ TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix (params->icm.workingProfile);
#ifdef _OPENMP
#pragma omp parallel for if(multiThread)
diff --git a/rtengine/utils.cc b/rtengine/utils.cc
index 4ab5bc1b8..613b67be8 100644
--- a/rtengine/utils.cc
+++ b/rtengine/utils.cc
@@ -265,3 +265,21 @@ void swab(const void* from, void* to, ssize_t n)
}
}
+
+#if __SIZEOF_WCHAR_T__ == 4
+Glib::ustring utf32_to_utf8(wchar_t* UTF32Buffer, size_t sizeOfUTF32Buffer)
+{
+ char *buffer2 = new char[sizeOfUTF32Buffer];
+ char *pBuffer2 = buffer2;
+ gchar a[6];
+ for (size_t i=0; i < sizeOfUTF32Buffer/4; ++i) {
+ gint bytesWritten = g_unichar_to_utf8((gunichar)UTF32Buffer[i], a);
+ for (gint j=0; j < bytesWritten; ++j) {
+ *(pBuffer2++) = a[j];
+ }
+ }
+ Glib::ustring modelDesc(buffer2);
+ delete [] buffer2;
+ return modelDesc;
+}
+#endif
diff --git a/rtengine/utils.h b/rtengine/utils.h
index 5730c2544..14593edae 100644
--- a/rtengine/utils.h
+++ b/rtengine/utils.h
@@ -55,3 +55,8 @@ bool hasPngExtension(const Glib::ustring& filename);
void swab(const void* from, void* to, ssize_t n);
}
+
+#if __SIZEOF_WCHAR_T__ == 4
+Glib::ustring utf32_to_utf8(wchar_t* UTF32Buffer, size_t sizeOfUTF32Buffer);
+#endif
+
diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt
index f2167c654..b1c05d3b5 100644
--- a/rtgui/CMakeLists.txt
+++ b/rtgui/CMakeLists.txt
@@ -71,6 +71,7 @@ set(NONCLISOURCEFILES
histogrampanel.cc
history.cc
hsvequalizer.cc
+ iccprofilecreator.cc
icmpanel.cc
ilabel.cc
imagearea.cc
diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h
index 95da5f900..8cf39aa29 100644
--- a/rtgui/addsetids.h
+++ b/rtgui/addsetids.h
@@ -50,8 +50,6 @@ enum {
ADDSET_SHARPENMICRO_UNIFORMITY,
ADDSET_VIBRANCE_PASTELS,
ADDSET_VIBRANCE_SATURATED,
- ADDSET_FREE_OUPUT_GAMMA,
- ADDSET_FREE_OUTPUT_SLOPE,
ADDSET_CAT_DEGREE,
ADDSET_CAT_ADAPTSCENE,
ADDSET_CAT_ADAPTVIEWING,
diff --git a/rtgui/adjuster.cc b/rtgui/adjuster.cc
index b66f617a4..6260314b1 100644
--- a/rtgui/adjuster.cc
+++ b/rtgui/adjuster.cc
@@ -79,7 +79,7 @@ Adjuster::Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep
}
reset = Gtk::manage (new Gtk::Button ());
- reset->add (*Gtk::manage (new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png")));
+ reset->add (*Gtk::manage (new RTImage ("undo-small.png", "redo-small.png")));
setExpandAlignProperties(reset, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
reset->set_relief (Gtk::RELIEF_NONE);
reset->set_tooltip_markup (M("ADJUSTER_RESET_TO_DEFAULT"));
@@ -166,7 +166,7 @@ void Adjuster::addAutoButton (Glib::ustring tooltip)
{
if (!automatic) {
automatic = new Gtk::CheckButton ();
- //automatic->add (*Gtk::manage (new RTImage ("processing.png")));
+ //automatic->add (*Gtk::manage (new RTImage ("gears.png")));
automatic->set_tooltip_markup(tooltip.length() ? Glib::ustring::compose("%1\n\n%2", M("GENERAL_AUTO"), tooltip) : M("GENERAL_AUTO"));
setExpandAlignProperties(automatic, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
autoChange = automatic->signal_toggled().connect( sigc::mem_fun(*this, &Adjuster::autoToggled) );
diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc
index 2f3505a08..9e5086fef 100644
--- a/rtgui/batchqueue.cc
+++ b/rtgui/batchqueue.cc
@@ -53,16 +53,16 @@ BatchQueue::BatchQueue (FileCatalog* aFileCatalog) : processing(nullptr), fileCa
pmenu.attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p + 1);
p++;
- pmenu.attach (*Gtk::manage(head = new MyImageMenuItem (M("FILEBROWSER_POPUPMOVEHEAD"), "toleftend.png")), 0, 1, p, p + 1);
+ pmenu.attach (*Gtk::manage(head = new MyImageMenuItem (M("FILEBROWSER_POPUPMOVEHEAD"), "goto-start-small.png")), 0, 1, p, p + 1);
p++;
- pmenu.attach (*Gtk::manage(tail = new MyImageMenuItem (M("FILEBROWSER_POPUPMOVEEND"), "torightend.png")), 0, 1, p, p + 1);
+ pmenu.attach (*Gtk::manage(tail = new MyImageMenuItem (M("FILEBROWSER_POPUPMOVEEND"), "goto-end-small.png")), 0, 1, p, p + 1);
p++;
pmenu.attach (*Gtk::manage(new Gtk::SeparatorMenuItem ()), 0, 1, p, p + 1);
p++;
- pmenu.attach (*Gtk::manage(cancel = new MyImageMenuItem (M("FILEBROWSER_POPUPCANCELJOB"), "gtk-close.png")), 0, 1, p, p + 1);
+ pmenu.attach (*Gtk::manage(cancel = new MyImageMenuItem (M("FILEBROWSER_POPUPCANCELJOB"), "cancel-small.png")), 0, 1, p, p + 1);
pmenu.show_all ();
diff --git a/rtgui/batchqueuebuttonset.cc b/rtgui/batchqueuebuttonset.cc
index fefcdf3c9..19c309791 100644
--- a/rtgui/batchqueuebuttonset.cc
+++ b/rtgui/batchqueuebuttonset.cc
@@ -31,9 +31,9 @@ BatchQueueButtonSet::BatchQueueButtonSet (BatchQueueEntry* myEntry)
{
if (!iconsLoaded) {
- cancelIcon = RTImage::createFromPng ("gtk-close.png");
- headIcon = RTImage::createFromPng ("toleftend.png");
- tailIcon = RTImage::createFromPng ("torightend.png");
+ cancelIcon = RTImage::createFromPng ("cancel-small.png");
+ headIcon = RTImage::createFromPng ("goto-start-small.png");
+ tailIcon = RTImage::createFromPng ("goto-end-small.png");
iconsLoaded = true;
}
diff --git a/rtgui/batchqueueentry.cc b/rtgui/batchqueueentry.cc
index 3092d6db4..336e81ab9 100644
--- a/rtgui/batchqueueentry.cc
+++ b/rtgui/batchqueueentry.cc
@@ -55,7 +55,7 @@ BatchQueueEntry::BatchQueueEntry (rtengine::ProcessingJob* pjob, const rtengine:
#endif
if (!iconsLoaded) {
- savedAsIcon = RTImage::createFromFile ("gtk-save.png");
+ savedAsIcon = RTImage::createFromFile ("save-small.png");
iconsLoaded = true;
}
diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc
index 6dfa9ad9c..1a9e08b94 100644
--- a/rtgui/batchqueuepanel.cc
+++ b/rtgui/batchqueuepanel.cc
@@ -87,7 +87,7 @@ BatchQueuePanel::BatchQueuePanel (FileCatalog* aFileCatalog) : parent(nullptr)
outdirFolderButton->signal_pressed().connect( sigc::mem_fun(*this, &BatchQueuePanel::pathFolderButtonPressed) );
outdirFolderButton->set_tooltip_markup (M("PREFERENCES_OUTDIRFOLDERHINT"));
outdirFolderButton->set_label(makeFolderLabel(options.savePathFolder));
- Gtk::Image* folderImg = Gtk::manage (new RTImage ("gtk-directory.png"));
+ Gtk::Image* folderImg = Gtk::manage (new RTImage ("folder-closed.png"));
folderImg->show ();
outdirFolderButton->set_image (*folderImg);
outdirFolder = nullptr;
@@ -151,13 +151,13 @@ BatchQueuePanel::BatchQueuePanel (FileCatalog* aFileCatalog) : parent(nullptr)
zoomLabel->set_use_markup (true);
zoomBox->pack_start (*zoomLabel, Gtk::PACK_SHRINK, 4);
zoomInButton = Gtk::manage (new Gtk::Button ());
- zoomInButton->set_image (*Gtk::manage (new RTImage ("gtk-zoom-in.png")));
+ zoomInButton->set_image (*Gtk::manage (new RTImage ("magnifier-plus.png")));
zoomInButton->signal_pressed().connect (sigc::mem_fun(*batchQueue, &BatchQueue::zoomIn));
zoomInButton->set_relief (Gtk::RELIEF_NONE);
zoomInButton->set_tooltip_markup (M("FILEBROWSER_ZOOMINHINT"));
zoomBox->pack_end (*zoomInButton, Gtk::PACK_SHRINK);
zoomOutButton = Gtk::manage (new Gtk::Button ());
- zoomOutButton->set_image (*Gtk::manage (new RTImage ("gtk-zoom-out.png")));
+ zoomOutButton->set_image (*Gtk::manage (new RTImage ("magnifier-minus.png")));
zoomOutButton->signal_pressed().connect (sigc::mem_fun(*batchQueue, &BatchQueue::zoomOut));
zoomOutButton->set_relief (Gtk::RELIEF_NONE);
zoomOutButton->set_tooltip_markup (M("FILEBROWSER_ZOOMOUTHINT"));
@@ -206,13 +206,13 @@ void BatchQueuePanel::updateTab (int qsize, int forceOrientation)
Gtk::Label* l;
if(!qsize ) {
- grid->attach_next_to(*Gtk::manage (new RTImage ("processing.png")), Gtk::POS_TOP, 1, 1);
+ grid->attach_next_to(*Gtk::manage (new RTImage ("gears.png")), Gtk::POS_TOP, 1, 1);
l = Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE")) );
} else if (qStartStop->get_active()) {
- grid->attach_next_to(*Gtk::manage (new RTImage ("processing-play.png")), Gtk::POS_TOP, 1, 1);
+ grid->attach_next_to(*Gtk::manage (new RTImage ("gears-play.png")), Gtk::POS_TOP, 1, 1);
l = Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE") + " [" + Glib::ustring::format( qsize ) + "]"));
} else {
- grid->attach_next_to(*Gtk::manage (new RTImage ("processing-pause.png")), Gtk::POS_TOP, 1, 1);
+ grid->attach_next_to(*Gtk::manage (new RTImage ("gears-pause.png")), Gtk::POS_TOP, 1, 1);
l = Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("MAIN_FRAME_BATCHQUEUE") + " [" + Glib::ustring::format( qsize ) + "]" ));
}
@@ -226,13 +226,13 @@ void BatchQueuePanel::updateTab (int qsize, int forceOrientation)
}
} else {
if (!qsize ) {
- grid->attach_next_to(*Gtk::manage (new RTImage ("processing.png")), Gtk::POS_RIGHT, 1, 1);
+ grid->attach_next_to(*Gtk::manage (new RTImage ("gears.png")), Gtk::POS_RIGHT, 1, 1);
grid->attach_next_to(*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE") )), Gtk::POS_RIGHT, 1, 1);
} else if (qStartStop->get_active()) {
- grid->attach_next_to(*Gtk::manage (new RTImage ("processing-play.png")), Gtk::POS_RIGHT, 1, 1);
+ grid->attach_next_to(*Gtk::manage (new RTImage ("gears-play.png")), Gtk::POS_RIGHT, 1, 1);
grid->attach_next_to(*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE") + " [" + Glib::ustring::format( qsize ) + "]" )), Gtk::POS_RIGHT, 1, 1);
} else {
- grid->attach_next_to(*Gtk::manage (new RTImage ("processing-pause.png")), Gtk::POS_RIGHT, 1, 1);
+ grid->attach_next_to(*Gtk::manage (new RTImage ("gears-pause.png")), Gtk::POS_RIGHT, 1, 1);
grid->attach_next_to(*Gtk::manage (new Gtk::Label (M("MAIN_FRAME_BATCHQUEUE") + " [" + Glib::ustring::format( qsize ) + "]" )), Gtk::POS_RIGHT, 1, 1);
}
diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc
index cbbff4060..b31f41e4f 100644
--- a/rtgui/batchtoolpanelcoord.cc
+++ b/rtgui/batchtoolpanelcoord.cc
@@ -150,7 +150,6 @@ void BatchToolPanelCoordinator::initSession ()
prsharpening->setAdjusterBehavior (false, false, false, false, false, false, false);
sharpenEdge->setAdjusterBehavior (false, false);
sharpenMicro->setAdjusterBehavior (false, false, false);
- icm->setAdjusterBehavior (false, false);
epd->setAdjusterBehavior (false, false, false, false, false);
fattal->setAdjusterBehavior (false, false, false);
@@ -199,7 +198,6 @@ void BatchToolPanelCoordinator::initSession ()
sharpenEdge->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENEDGE_AMOUNT], options.baBehav[ADDSET_SHARPENEDGE_PASS]);
sharpenMicro->setAdjusterBehavior (options.baBehav[ADDSET_SHARPENMICRO_AMOUNT], options.baBehav[ADDSET_SHARPENMICRO_CONTRAST], options.baBehav[ADDSET_SHARPENMICRO_UNIFORMITY]);
- icm->setAdjusterBehavior (options.baBehav[ADDSET_FREE_OUPUT_GAMMA], options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]);
// colortoning->setAdjusterBehavior (options.baBehav[ADDSET_COLORTONING_SPLIT], options.baBehav[ADDSET_COLORTONING_SATTHRESHOLD], options.baBehav[ADDSET_COLORTONING_SATOPACITY], options.baBehav[ADDSET_COLORTONING_STRPROTECT], options.baBehav[ADDSET_COLORTONING_BALANCE]);
colortoning->setAdjusterBehavior (options.baBehav[ADDSET_COLORTONING_SPLIT], options.baBehav[ADDSET_COLORTONING_SATTHRESHOLD], options.baBehav[ADDSET_COLORTONING_SATOPACITY], options.baBehav[ADDSET_COLORTONING_STRENGTH], options.baBehav[ADDSET_COLORTONING_BALANCE]);
filmSimulation->setAdjusterBehavior(options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]);
@@ -279,8 +277,6 @@ void BatchToolPanelCoordinator::initSession ()
if (options.baBehav[ADDSET_CAT_CONTRAST]) { pparams.colorappearance.contrast = 0; }
if (options.baBehav[ADDSET_CAT_CONTRAST_Q]) { pparams.colorappearance.qcontrast = 0; }
if (options.baBehav[ADDSET_CAT_HUE]) { pparams.colorappearance.colorh = 0; }
- if (options.baBehav[ADDSET_FREE_OUPUT_GAMMA]) { pparams.icm.gampos = 0; }
- if (options.baBehav[ADDSET_FREE_OUTPUT_SLOPE]) { pparams.icm.slpos = 0; }
//if (options.baBehav[ADDSET_CBOOST_AMOUNT]) pparams.colorBoost.amount = 0;
//if (options.baBehav[ADDSET_CS_BLUEYELLOW]) pparams.colorShift.a = 0;
//if (options.baBehav[ADDSET_CS_GREENMAGENTA]) pparams.colorShift.b = 0;
diff --git a/rtgui/blackwhite.cc b/rtgui/blackwhite.cc
index 507d3aee6..469094fb8 100644
--- a/rtgui/blackwhite.cc
+++ b/rtgui/blackwhite.cc
@@ -179,18 +179,18 @@ BlackWhite::BlackWhite (): FoldableToolPanel(this, "blackwhite", M("TP_BWMIX_LAB
//----------- RGB / ROYGCBPM Mixer ------------------------------
- imgIcon[0] = Gtk::manage (new RTImage ("Chanmixer-R.png"));
- imgIcon[1] = Gtk::manage (new RTImage ("Chanmixer-O.png"));
- imgIcon[2] = Gtk::manage (new RTImage ("Chanmixer-Y.png"));
- imgIcon[3] = Gtk::manage (new RTImage ("Chanmixer-G.png"));
- imgIcon[4] = Gtk::manage (new RTImage ("Chanmixer-C.png"));
- imgIcon[5] = Gtk::manage (new RTImage ("Chanmixer-B.png"));
- imgIcon[6] = Gtk::manage (new RTImage ("Chanmixer-P.png"));
- imgIcon[7] = Gtk::manage (new RTImage ("Chanmixer-M.png"));
+ imgIcon[0] = Gtk::manage (new RTImage ("circle-red-small.png"));
+ imgIcon[1] = Gtk::manage (new RTImage ("circle-orange-small.png"));
+ imgIcon[2] = Gtk::manage (new RTImage ("circle-yellow-small.png"));
+ imgIcon[3] = Gtk::manage (new RTImage ("circle-green-small.png"));
+ imgIcon[4] = Gtk::manage (new RTImage ("circle-cyan-small.png"));
+ imgIcon[5] = Gtk::manage (new RTImage ("circle-blue-small.png"));
+ imgIcon[6] = Gtk::manage (new RTImage ("circle-purple-small.png"));
+ imgIcon[7] = Gtk::manage (new RTImage ("circle-magenta-small.png"));
- imgIcon[8] = Gtk::manage (new RTImage ("Chanmixer-Rgamma.png"));
- imgIcon[9] = Gtk::manage (new RTImage ("Chanmixer-Ggamma.png"));
- imgIcon[10] = Gtk::manage (new RTImage ("Chanmixer-Bgamma.png"));
+ imgIcon[8] = Gtk::manage (new RTImage ("circle-empty-red-small.png"));
+ imgIcon[9] = Gtk::manage (new RTImage ("circle-empty-green-small.png"));
+ imgIcon[10] = Gtk::manage (new RTImage ("circle-empty-blue-small.png"));
mixerVBox->pack_start (*Gtk::manage (new Gtk::HSeparator()));
diff --git a/rtgui/cacorrection.cc b/rtgui/cacorrection.cc
index e303b5660..ffaa57c34 100644
--- a/rtgui/cacorrection.cc
+++ b/rtgui/cacorrection.cc
@@ -26,10 +26,10 @@ using namespace rtengine::procparams;
CACorrection::CACorrection () : FoldableToolPanel(this, "cacorrection", M("TP_CACORRECTION_LABEL"))
{
- Gtk::Image* icaredL = Gtk::manage (new RTImage ("ajd-ca-red1.png"));
- Gtk::Image* icaredR = Gtk::manage (new RTImage ("ajd-ca-red2.png"));
- Gtk::Image* icablueL = Gtk::manage (new RTImage ("ajd-ca-blue1.png"));
- Gtk::Image* icablueR = Gtk::manage (new RTImage ("ajd-ca-blue2.png"));
+ Gtk::Image* icaredL = Gtk::manage (new RTImage ("circle-red-cyan-small.png"));
+ Gtk::Image* icaredR = Gtk::manage (new RTImage ("circle-cyan-red-small.png"));
+ Gtk::Image* icablueL = Gtk::manage (new RTImage ("circle-blue-yellow-small.png"));
+ Gtk::Image* icablueR = Gtk::manage (new RTImage ("circle-yellow-blue-small.png"));
red = Gtk::manage (new Adjuster (M("TP_CACORRECTION_RED"), -0.005, 0.005, 0.0001, 0, icaredL, icaredR));
red->setAdjusterListener (this);
diff --git a/rtgui/chmixer.cc b/rtgui/chmixer.cc
index 8c997f797..1e3bb395e 100644
--- a/rtgui/chmixer.cc
+++ b/rtgui/chmixer.cc
@@ -25,15 +25,15 @@ using namespace rtengine::procparams;
ChMixer::ChMixer (): FoldableToolPanel(this, "chmixer", M("TP_CHMIXER_LABEL"), false, true)
{
- imgIcon[0] = Gtk::manage (new RTImage ("Chanmixer-RR.png"));
- imgIcon[1] = Gtk::manage (new RTImage ("Chanmixer-RG.png"));
- imgIcon[2] = Gtk::manage (new RTImage ("Chanmixer-RB.png"));
- imgIcon[3] = Gtk::manage (new RTImage ("Chanmixer-GR.png"));
- imgIcon[4] = Gtk::manage (new RTImage ("Chanmixer-GG.png"));
- imgIcon[5] = Gtk::manage (new RTImage ("Chanmixer-GB.png"));
- imgIcon[6] = Gtk::manage (new RTImage ("Chanmixer-BR.png"));
- imgIcon[7] = Gtk::manage (new RTImage ("Chanmixer-BG.png"));
- imgIcon[8] = Gtk::manage (new RTImage ("Chanmixer-BB.png"));
+ imgIcon[0] = Gtk::manage (new RTImage ("circle-red-small.png"));
+ imgIcon[1] = Gtk::manage (new RTImage ("circle-green-red-small.png"));
+ imgIcon[2] = Gtk::manage (new RTImage ("circle-blue-red-small.png"));
+ imgIcon[3] = Gtk::manage (new RTImage ("circle-red-green-small.png"));
+ imgIcon[4] = Gtk::manage (new RTImage ("circle-green-small.png"));
+ imgIcon[5] = Gtk::manage (new RTImage ("circle-blue-green-small.png"));
+ imgIcon[6] = Gtk::manage (new RTImage ("circle-red-blue-small.png"));
+ imgIcon[7] = Gtk::manage (new RTImage ("circle-green-blue-small.png"));
+ imgIcon[8] = Gtk::manage (new RTImage ("circle-blue-small.png"));
Gtk::Label* rlabel = Gtk::manage (new Gtk::Label ());
rlabel->set_markup (Glib::ustring("\t") + M("TP_CHMIXER_RED") + Glib::ustring(":"));
diff --git a/rtgui/coarsepanel.cc b/rtgui/coarsepanel.cc
index a201b1f7f..8f927239e 100644
--- a/rtgui/coarsepanel.cc
+++ b/rtgui/coarsepanel.cc
@@ -28,25 +28,25 @@ CoarsePanel::CoarsePanel () : ToolPanel (), oldhflip(false), oldvflip(false)
degree = 0;
degreechanged = true;
- Gtk::Image* rotateli = Gtk::manage (new RTImage ("stock-rotate-270.png"));
+ Gtk::Image* rotateli = Gtk::manage (new RTImage ("rotate-left-90.png"));
rotate_left = Gtk::manage (new Gtk::Button ());
rotate_left->add (*rotateli);
rotate_left->set_relief(Gtk::RELIEF_NONE);
pack_start (*rotate_left);
- Gtk::Image* rotateri = Gtk::manage (new RTImage ("stock-rotate-90.png"));
+ Gtk::Image* rotateri = Gtk::manage (new RTImage ("rotate-right-90.png"));
rotate_right = Gtk::manage (new Gtk::Button ());
rotate_right->add (*rotateri);
rotate_right->set_relief(Gtk::RELIEF_NONE);
pack_start (*rotate_right);
- Gtk::Image* fliphi = Gtk::manage (new RTImage ("stock-flip-horizontal.png"));
+ Gtk::Image* fliphi = Gtk::manage (new RTImage ("flip-horizontal.png"));
hflip = Gtk::manage (new Gtk::ToggleButton ());
hflip->add (*fliphi);
hflip->set_relief(Gtk::RELIEF_NONE);
pack_start (*hflip);
- Gtk::Image* flipvi = Gtk::manage (new RTImage ("stock-flip-vertical.png"));
+ Gtk::Image* flipvi = Gtk::manage (new RTImage ("flip-vertical.png"));
vflip = Gtk::manage (new Gtk::ToggleButton ());
vflip->add (*flipvi);
vflip->set_relief(Gtk::RELIEF_NONE);
diff --git a/rtgui/colorappearance.cc b/rtgui/colorappearance.cc
index f8dee05df..2e83d63d9 100644
--- a/rtgui/colorappearance.cc
+++ b/rtgui/colorappearance.cc
@@ -268,10 +268,10 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance"
wbmHBox->pack_start (*wbmodel);
p1VBox->pack_start (*wbmHBox);
- Gtk::Image* itempL = Gtk::manage (new RTImage ("ajd-wb-temp1.png"));
- Gtk::Image* itempR = Gtk::manage (new RTImage ("ajd-wb-temp2.png"));
- Gtk::Image* igreenL = Gtk::manage (new RTImage ("ajd-wb-green1.png"));
- Gtk::Image* igreenR = Gtk::manage (new RTImage ("ajd-wb-green2.png"));
+ Gtk::Image* itempL = Gtk::manage (new RTImage ("circle-blue-small.png"));
+ Gtk::Image* itempR = Gtk::manage (new RTImage ("circle-yellow-small.png"));
+ Gtk::Image* igreenL = Gtk::manage (new RTImage ("circle-magenta-small.png"));
+ Gtk::Image* igreenR = Gtk::manage (new RTImage ("circle-green-small.png"));
tempsc = Gtk::manage (new Adjuster (M ("TP_WBALANCE_TEMPERATURE"), MINTEMP0, MAXTEMP0, 5, CENTERTEMP0, itempL, itempR, &wbSlider2Temp, &wbTemp2Slider));
@@ -575,10 +575,10 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance"
p3VBox = Gtk::manage ( new Gtk::VBox());
p3VBox->set_spacing (2);
- Gtk::Image* itempL1 = Gtk::manage (new RTImage ("ajd-wb-temp1.png"));
- Gtk::Image* itempR1 = Gtk::manage (new RTImage ("ajd-wb-temp2.png"));
- Gtk::Image* igreenL1 = Gtk::manage (new RTImage ("ajd-wb-green1.png"));
- Gtk::Image* igreenR1 = Gtk::manage (new RTImage ("ajd-wb-green2.png"));
+ Gtk::Image* itempL1 = Gtk::manage (new RTImage ("circle-blue-small.png"));
+ Gtk::Image* itempR1 = Gtk::manage (new RTImage ("circle-yellow-small.png"));
+ Gtk::Image* igreenL1 = Gtk::manage (new RTImage ("circle-magenta-small.png"));
+ Gtk::Image* igreenR1 = Gtk::manage (new RTImage ("circle-green-small.png"));
// adaplum = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ADAPTVIEWING"), 0.1, 16384., 0.1, 16.));
adaplum = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ADAPTVIEWING"), MINLA0, MAXLA0, 0.01, 16, NULL, NULL, &wbSlider2la, &wbla2Slider));
@@ -590,8 +590,8 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance"
adaplum->set_tooltip_markup (M ("TP_COLORAPP_ADAPTVIEWING_TOOLTIP"));
p3VBox->pack_start (*adaplum);
-// Gtk::Image* iblueredL = Gtk::manage (new RTImage ("ajd-wb-bluered1.png"));
-// Gtk::Image* iblueredR = Gtk::manage (new RTImage ("ajd-wb-bluered2.png"));
+// Gtk::Image* iblueredL = Gtk::manage (new RTImage ("circle-blue-small.png"));
+// Gtk::Image* iblueredR = Gtk::manage (new RTImage ("circle-red-small.png"));
degreeout = Gtk::manage (new Adjuster (M ("TP_COLORAPP_CIECAT_DEGREE"), 0., 100., 1., 100.));
@@ -604,10 +604,10 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance"
degreeout->set_tooltip_markup (M ("TP_COLORAPP_DEGREE_TOOLTIP"));
p3VBox->pack_start (*degreeout);
/*
- Gtk::Image* itempL1 = Gtk::manage (new RTImage ("ajd-wb-temp1.png"));
- Gtk::Image* itempR1 = Gtk::manage (new RTImage ("ajd-wb-temp2.png"));
- Gtk::Image* igreenL1 = Gtk::manage (new RTImage ("ajd-wb-green1.png"));
- Gtk::Image* igreenR1 = Gtk::manage (new RTImage ("ajd-wb-green2.png"));
+ Gtk::Image* itempL1 = Gtk::manage (new RTImage ("circle-blue-small.png"));
+ Gtk::Image* itempR1 = Gtk::manage (new RTImage ("circle-yellow-small.png"));
+ Gtk::Image* igreenL1 = Gtk::manage (new RTImage ("circle-magenta-small.png"));
+ Gtk::Image* igreenR1 = Gtk::manage (new RTImage ("circle-green-small.png"));
*/
tempout = Gtk::manage (new Adjuster (M ("TP_WBALANCE_TEMPERATURE"), MINTEMP0, MAXTEMP0, 5, CENTERTEMP0, itempR1, itempL1, &wbSlider2Temp, &wbTemp2Slider));
greenout = Gtk::manage (new Adjuster (M ("TP_WBALANCE_GREEN"), MINGREEN0, MAXGREEN0, 0.001, 1.0, igreenR1, igreenL1));
@@ -669,7 +669,7 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance"
//reset button
neutral = Gtk::manage (new Gtk::Button (M ("TP_COLORAPP_NEUTRAL")));
setExpandAlignProperties (neutral, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
- RTImage *resetImg = Gtk::manage (new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png"));
+ RTImage *resetImg = Gtk::manage (new RTImage ("undo-small.png", "redo-small.png"));
setExpandAlignProperties (resetImg, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
neutral->set_image (*resetImg);
neutral->set_tooltip_text (M ("TP_COLORAPP_NEUTRAL_TIP"));
diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc
index a7f063460..7b3fb97df 100644
--- a/rtgui/colortoning.cc
+++ b/rtgui/colortoning.cc
@@ -104,8 +104,8 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR
pack_start( *opacityCurveEditorG, Gtk::PACK_SHRINK, 2);
//---------Chroma curve 1 --------------------
- iby = Gtk::manage (new RTImage ("Chanmixer-BY.png"));
- irg = Gtk::manage (new RTImage ("Chanmixer-RG.png"));
+ iby = Gtk::manage (new RTImage ("circle-yellow-blue-small.png"));
+ irg = Gtk::manage (new RTImage ("circle-green-red-small.png"));
clCurveEditorG = new CurveEditorGroup (options.lastColorToningCurvesDir, M("TP_COLORTONING_CHROMAC"));
clCurveEditorG->setCurveListener (this);
@@ -146,7 +146,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR
//--------------------- Reset curves -----------------------------
/* Each curve can reset to a different curve, so this button only save one click now... so we remove it.
neutralCurves = Gtk::manage (new Gtk::Button (M("TP_COLORTONING_NEUTRALCUR")));
- RTImage *resetImgc = Gtk::manage (new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png"));
+ RTImage *resetImgc = Gtk::manage (new RTImage ("undo-small.png", "redo-small.png"));
neutralCurves->set_image(*resetImgc);
neutralCurves->set_tooltip_text (M("TP_COLORTONING_NEUTRALCUR_TIP"));
neutralcurvesconn = neutralCurves->signal_pressed().connect( sigc::mem_fun(*this, &ColorToning::neutralCurves_pressed) );
@@ -226,26 +226,26 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR
Gtk::VBox *chanMixerMidBox = Gtk::manage (new Gtk::VBox());
Gtk::VBox *chanMixerShadowsBox = Gtk::manage (new Gtk::VBox());
- Gtk::Image* iblueR = Gtk::manage (new RTImage ("ajd-wb-temp1.png"));
- Gtk::Image* iyelL = Gtk::manage (new RTImage ("ajd-wb-temp2.png"));
- Gtk::Image* imagL = Gtk::manage (new RTImage ("ajd-wb-green1.png"));
- Gtk::Image* igreenR = Gtk::manage (new RTImage ("ajd-wb-green2.png"));
- Gtk::Image* icyanL = Gtk::manage (new RTImage ("ajd-wb-bluered1.png"));
- Gtk::Image* iredR = Gtk::manage (new RTImage ("ajd-wb-bluered2.png"));
+ Gtk::Image* iblueR = Gtk::manage (new RTImage ("circle-blue-small.png"));
+ Gtk::Image* iyelL = Gtk::manage (new RTImage ("circle-yellow-small.png"));
+ Gtk::Image* imagL = Gtk::manage (new RTImage ("circle-magenta-small.png"));
+ Gtk::Image* igreenR = Gtk::manage (new RTImage ("circle-green-small.png"));
+ Gtk::Image* icyanL = Gtk::manage (new RTImage ("circle-blue-small.png"));
+ Gtk::Image* iredR = Gtk::manage (new RTImage ("circle-red-small.png"));
- Gtk::Image* iblueRm = Gtk::manage (new RTImage ("ajd-wb-temp1.png"));
- Gtk::Image* iyelLm = Gtk::manage (new RTImage ("ajd-wb-temp2.png"));
- Gtk::Image* imagLm = Gtk::manage (new RTImage ("ajd-wb-green1.png"));
- Gtk::Image* igreenRm = Gtk::manage (new RTImage ("ajd-wb-green2.png"));
- Gtk::Image* icyanLm = Gtk::manage (new RTImage ("ajd-wb-bluered1.png"));
- Gtk::Image* iredRm = Gtk::manage (new RTImage ("ajd-wb-bluered2.png"));
+ Gtk::Image* iblueRm = Gtk::manage (new RTImage ("circle-blue-small.png"));
+ Gtk::Image* iyelLm = Gtk::manage (new RTImage ("circle-yellow-small.png"));
+ Gtk::Image* imagLm = Gtk::manage (new RTImage ("circle-magenta-small.png"));
+ Gtk::Image* igreenRm = Gtk::manage (new RTImage ("circle-green-small.png"));
+ Gtk::Image* icyanLm = Gtk::manage (new RTImage ("circle-blue-small.png"));
+ Gtk::Image* iredRm = Gtk::manage (new RTImage ("circle-red-small.png"));
- Gtk::Image* iblueRh = Gtk::manage (new RTImage ("ajd-wb-temp1.png"));
- Gtk::Image* iyelLh = Gtk::manage (new RTImage ("ajd-wb-temp2.png"));
- Gtk::Image* imagLh = Gtk::manage (new RTImage ("ajd-wb-green1.png"));
- Gtk::Image* igreenRh = Gtk::manage (new RTImage ("ajd-wb-green2.png"));
- Gtk::Image* icyanLh = Gtk::manage (new RTImage ("ajd-wb-bluered1.png"));
- Gtk::Image* iredRh = Gtk::manage (new RTImage ("ajd-wb-bluered2.png"));
+ Gtk::Image* iblueRh = Gtk::manage (new RTImage ("circle-blue-small.png"));
+ Gtk::Image* iyelLh = Gtk::manage (new RTImage ("circle-yellow-small.png"));
+ Gtk::Image* imagLh = Gtk::manage (new RTImage ("circle-magenta-small.png"));
+ Gtk::Image* igreenRh = Gtk::manage (new RTImage ("circle-green-small.png"));
+ Gtk::Image* icyanLh = Gtk::manage (new RTImage ("circle-blue-small.png"));
+ Gtk::Image* iredRh = Gtk::manage (new RTImage ("circle-red-small.png"));
redhigh = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., icyanLh, iredRh ));
greenhigh = Gtk::manage (new Adjuster ("", -100., 100., 1., 0., imagLh , igreenRh));
@@ -324,7 +324,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR
labgrid = Gtk::manage(new LabGrid(EvColorToningLabGridValue));
labgridBox->pack_start(*labgrid, true, true);
labgridReset = Gtk::manage(new Gtk::Button ());
- labgridReset->add (*Gtk::manage(new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png")));
+ labgridReset->add (*Gtk::manage(new RTImage ("undo-small.png", "redo-small.png")));
setExpandAlignProperties(labgridReset, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_START);
labgridReset->set_relief(Gtk::RELIEF_NONE);
labgridReset->set_tooltip_markup(M("ADJUSTER_RESET_TO_DEFAULT"));
@@ -377,7 +377,7 @@ void ColorToning::neutralCurves_pressed () {
}
*/
-// Will only reset the chanel mixer
+// Will only reset the channel mixer
void ColorToning::neutral_pressed ()
{
disableListener();
diff --git a/rtgui/coordinateadjuster.h b/rtgui/coordinateadjuster.h
index e6e16b7a2..08f2fb479 100644
--- a/rtgui/coordinateadjuster.h
+++ b/rtgui/coordinateadjuster.h
@@ -57,7 +57,7 @@ public:
/** @brief Update the position of the edited point ; will trigger events
*
* @param pos New position
- * @param chanIdx Chanel index as given in the std::vector upon instantiation
+ * @param chanIdx Channel index as given in the std::vector upon instantiation
*/
virtual void setPos(double pos, int chanIdx) = 0;
virtual void stopNumericalAdjustment() = 0;
@@ -91,7 +91,7 @@ public:
// used to update the AxisAdjuster's parameters
void updateGUI(const Axis &axis);
- // useed to update the displayed value
+ // used to update the displayed value
void setValue(double newValue);
//bool keyPressed(GdkEventKey* event);
void valueChanged();
diff --git a/rtgui/crop.cc b/rtgui/crop.cc
index 29c64501d..7205fc3ad 100644
--- a/rtgui/crop.cc
+++ b/rtgui/crop.cc
@@ -128,7 +128,8 @@ Crop::Crop():
pack_start (*hb2, Gtk::PACK_SHRINK, 4);
selectCrop = Gtk::manage (new Gtk::Button (M("TP_CROP_SELECTCROP")));
- selectCrop->set_image (*Gtk::manage (new RTImage ("crop.png")));
+ selectCrop->get_style_context()->add_class("independent");
+ selectCrop->set_image (*Gtk::manage (new RTImage ("crop-small.png")));
pack_start (*selectCrop, Gtk::PACK_SHRINK, 2);
@@ -629,7 +630,7 @@ void Crop::ratioFixedChanged ()
void Crop::ratioChanged ()
{
if (!fixr->get_active ()) {
- fixr->set_active(true); // will ajust ratio anyway
+ fixr->set_active(true); // will adjust ratio anyway
} else {
adjustCropToRatio();
}
diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc
index bf01a9c7b..1bbaf21a1 100644
--- a/rtgui/cropwindow.cc
+++ b/rtgui/cropwindow.cc
@@ -57,11 +57,11 @@ CropWindow::CropWindow (ImageArea* parent, bool isLowUpdatePriority_, bool isDet
titleHeight = ih;
- bZoomOut = new LWButton (RTImage::createFromPng ("gtk-zoom-out-small.png"), 0, nullptr, LWButton::Left, LWButton::Center, "Zoom Out");
- bZoomIn = new LWButton (RTImage::createFromPng ("gtk-zoom-in-small.png"), 1, nullptr, LWButton::Left, LWButton::Center, "Zoom In");
- bZoom100 = new LWButton (RTImage::createFromPng ("gtk-zoom-100-small.png"), 2, nullptr, LWButton::Left, LWButton::Center, "Zoom 100/%");
- //bZoomFit = new LWButton (RTImage::createFromPng ("gtk-zoom-fit.png"), 3, NULL, LWButton::Left, LWButton::Center, "Zoom Fit");
- bClose = new LWButton (RTImage::createFromPng ("gtk-close-small.png"), 4, nullptr, LWButton::Right, LWButton::Center, "Close");
+ bZoomOut = new LWButton (RTImage::createFromPng ("magnifier-minus-small.png"), 0, nullptr, LWButton::Left, LWButton::Center, "Zoom Out");
+ bZoomIn = new LWButton (RTImage::createFromPng ("magnifier-plus-small.png"), 1, nullptr, LWButton::Left, LWButton::Center, "Zoom In");
+ bZoom100 = new LWButton (RTImage::createFromPng ("magnifier-1to1-small.png"), 2, nullptr, LWButton::Left, LWButton::Center, "Zoom 100/%");
+ //bZoomFit = new LWButton (RTImage::createFromPng ("magnifier-fit.png"), 3, NULL, LWButton::Left, LWButton::Center, "Zoom Fit");
+ bClose = new LWButton (RTImage::createFromPng ("cancel-small.png"), 4, nullptr, LWButton::Right, LWButton::Center, "Close");
buttonSet.add (bZoomOut);
buttonSet.add (bZoomIn);
@@ -362,7 +362,7 @@ void CropWindow::buttonPress (int button, int type, int bstate, int x, int y)
// Add a new Color Picker
rtengine::Coord imgPos;
screenCoordToImage(x, y, imgPos.x, imgPos.y);
- LockableColorPicker *newPicker = new LockableColorPicker(this, &cropHandler.colorParams.output, &cropHandler.colorParams.working);
+ LockableColorPicker *newPicker = new LockableColorPicker(this, &cropHandler.colorParams.outputProfile, &cropHandler.colorParams.workingProfile);
colorPickers.push_back(newPicker);
hoveredPicker = newPicker;
updateHoveredPicker(&imgPos);
@@ -1010,12 +1010,12 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
/* Glib::ustring outputProfile;
outputProfile =cropHandler.colorParams.output ;
printf("Using \"%s\" output\n", outputProfile.c_str());
- if(outputProfile=="RT_sRGB") printf("OK SRGB2");
+ if(outputProfile==options.rtSettings.srgb) printf("OK SRGB2");
*/
- pmlistener->pointerMoved (false, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, -1, -1, -1);
+ pmlistener->pointerMoved (false, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, -1, -1, -1);
if (pmhlistener) {
- pmhlistener->pointerMoved (false, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, -1, -1, -1);
+ pmhlistener->pointerMoved (false, cropHandler.colorParams.outputProfile, cropHandler.colorParams.workingProfile, mx, my, -1, -1, -1);
}
} else {
@@ -1043,7 +1043,7 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
// 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.cropPixbuftrue->get_pixels() + vy * cropHandler.cropPixbuf->get_rowstride() + vx * 3;
+ guint8* pix = cropHandler.cropPixbuf->get_pixels() + vy * cropHandler.cropPixbuf->get_rowstride() + vx * 3;
int rval = pix[0];
int gval = pix[1];
@@ -1059,12 +1059,12 @@ void CropWindow::pointerMoved (int bstate, int x, int y)
}
}
// pmlistener->pointerMoved (true, cropHandler.colorParams.working, mx, my, pix[0], pix[1], pix[2]);
- pmlistener->pointerMoved (true, cropHandler.colorParams.output, cropHandler.colorParams.working, mx, my, rval, gval, bval);
+ 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.output, 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]);
}
}
diff --git a/rtgui/cursormanager.cc b/rtgui/cursormanager.cc
index 29d0990ff..d1973dcca 100644
--- a/rtgui/cursormanager.cc
+++ b/rtgui/cursormanager.cc
@@ -51,25 +51,25 @@ 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 ("cross.png");
- Glib::RefPtr close_hand = RTImage::createFromFile ("closedhand.png");
- Glib::RefPtr wbpick = RTImage::createFromFile ("gtk-color-picker-small.png");
- Glib::RefPtr cpick = RTImage::createFromFile ("gtk-color-picker-add.png");
+ 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 empty = RTImage::createFromFile ("empty.png");
- Glib::RefPtr move2D = RTImage::createFromFile ("move-2D.png");
- Glib::RefPtr move1DH = RTImage::createFromFile ("move-1D-h.png");
- Glib::RefPtr move1DV = RTImage::createFromFile ("move-1D-v.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");
- cHand = hand ? Gdk::Cursor::create (cAdd->get_display(), hand, 10, 10) : Gdk::Cursor::create (cAdd->get_display(), Gdk::HAND2);
- cClosedHand = close_hand ? Gdk::Cursor::create (cAdd->get_display(), close_hand, 10, 10) : Gdk::Cursor::create (cAdd->get_display(), Gdk::HAND2);
- cWB = wbpick ? Gdk::Cursor::create (cAdd->get_display(), wbpick, 3, 15) : Gdk::Cursor::create (cAdd->get_display(), Gdk::ARROW);
- cAddPicker = cpick ? Gdk::Cursor::create (cAdd->get_display(), cpick, 3, 18) : Gdk::Cursor::create (cAdd->get_display(), Gdk::ARROW);
+ 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, 11, 11) : Gdk::Cursor::create (cAdd->get_display(), Gdk::FLEUR);
- cMove1DH = move1DH ? Gdk::Cursor::create (cAdd->get_display(), move1DH, 11, 11) : Gdk::Cursor::create (cAdd->get_display(), Gdk::FLEUR);
- cMove1DV = move1DV ? Gdk::Cursor::create (cAdd->get_display(), move1DV, 11, 11) : Gdk::Cursor::create (cAdd->get_display(), Gdk::FLEUR);
- cMoveRotate = moveRotate ? Gdk::Cursor::create (cAdd->get_display(), moveRotate, 11, 11) : Gdk::Cursor::create (cAdd->get_display(), Gdk::CIRCLE);
+ 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);
window = mainWindow;
}
diff --git a/rtgui/curveeditor.cc b/rtgui/curveeditor.cc
index 9f2dbffab..8b319ecbe 100644
--- a/rtgui/curveeditor.cc
+++ b/rtgui/curveeditor.cc
@@ -34,10 +34,10 @@ DiagonalCurveEditor::DiagonalCurveEditor (Glib::ustring text, CurveEditorGroup*
{
// Order set in the same order than "enum DiagonalCurveType". Shouldn't change, for compatibility reason
- curveType->addEntry("curveType-linear.png", M("CURVEEDITOR_LINEAR")); // 0 Linear
- curveType->addEntry("curveType-spline.png", M("CURVEEDITOR_CUSTOM")); // 1 Spline
- curveType->addEntry("curveType-parametric.png", M("CURVEEDITOR_PARAMETRIC")); // 2 Parametric
- curveType->addEntry("curveType-NURBS.png", M("CURVEEDITOR_NURBS")); // 3 NURBS
+ curveType->addEntry("curve-linear-small.png", M("CURVEEDITOR_LINEAR")); // 0 Linear
+ curveType->addEntry("curve-spline-small.png", M("CURVEEDITOR_CUSTOM")); // 1 Spline
+ curveType->addEntry("curve-parametric-small.png", M("CURVEEDITOR_PARAMETRIC")); // 2 Parametric
+ curveType->addEntry("curve-nurbs-small.png", M("CURVEEDITOR_NURBS")); // 3 NURBS
curveType->setSelected(DCT_Linear);
curveType->show();
@@ -145,8 +145,8 @@ FlatCurveEditor::FlatCurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup,
identityValue = 0.5;
// Order set in the same order than "enum FlatCurveType". Shouldn't change, for compatibility reason
- curveType->addEntry("curveType-flatLinear.png", M("CURVEEDITOR_LINEAR")); // 0 Linear
- curveType->addEntry("curveType-controlPoints.png", M("CURVEEDITOR_MINMAXCPOINTS")); // 1 Min/Max ControlPoints
+ curveType->addEntry("curve-flat-small.png", M("CURVEEDITOR_LINEAR")); // 0 Linear
+ curveType->addEntry("curve-controlpoints-small.png", M("CURVEEDITOR_MINMAXCPOINTS")); // 1 Min/Max ControlPoints
curveType->setSelected(FCT_Linear);
curveType->show();
}
diff --git a/rtgui/curveeditorgroup.cc b/rtgui/curveeditorgroup.cc
index e8f636f8b..4e5f038d6 100644
--- a/rtgui/curveeditorgroup.cc
+++ b/rtgui/curveeditorgroup.cc
@@ -152,7 +152,7 @@ void CurveEditorGroup::newLine()
if (isHeader) {
curve_reset = Gtk::manage (new Gtk::Button ());
setExpandAlignProperties(curve_reset, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
- curve_reset->add (*Gtk::manage (new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png")));
+ curve_reset->add (*Gtk::manage (new RTImage ("undo-small.png", "redo-small.png")));
curve_reset->set_relief (Gtk::RELIEF_NONE);
curve_reset->set_tooltip_text (M("CURVEEDITOR_TOOLTIPLINEAR"));
curve_reset->signal_clicked().connect( sigc::mem_fun(*this, &CurveEditorGroup::curveResetPressed) );
@@ -370,7 +370,7 @@ void CurveEditorGroup::setTooltip( Glib::ustring ttip)
void CurveEditorGroup::setBatchMode (bool batchMode)
{
for (std::vector::iterator i = curveEditors.begin(); i != curveEditors.end(); ++i) {
- (*i)->curveType->addEntry("unchanged-18.png", M("GENERAL_UNCHANGED"));
+ (*i)->curveType->addEntry("template-24.png", M("GENERAL_UNCHANGED"));
(*i)->curveType->show();
}
}
diff --git a/rtgui/darkframe.cc b/rtgui/darkframe.cc
index 9f1f61d18..d0f2e9ed0 100644
--- a/rtgui/darkframe.cc
+++ b/rtgui/darkframe.cc
@@ -33,7 +33,7 @@ DarkFrame::DarkFrame () : FoldableToolPanel(this, "darkframe", M("TP_DARKFRAME_L
bindCurrentFolder (*darkFrameFile, options.lastDarkframeDir);
dfLabel = Gtk::manage(new Gtk::Label(M("GENERAL_FILE")));
btnReset = Gtk::manage(new Gtk::Button());
- btnReset->set_image (*Gtk::manage(new RTImage ("gtk-cancel.png")));
+ btnReset->set_image (*Gtk::manage(new RTImage ("cancel-small.png")));
hbdf->pack_start(*dfLabel, Gtk::PACK_SHRINK, 0);
hbdf->pack_start(*darkFrameFile);
hbdf->pack_start(*btnReset, Gtk::PACK_SHRINK, 0);
diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc
index 43a58b674..e7599b502 100644
--- a/rtgui/diagonalcurveeditorsubgroup.cc
+++ b/rtgui/diagonalcurveeditorsubgroup.cc
@@ -67,18 +67,18 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
}
editPointCustom = Gtk::manage (new Gtk::ToggleButton ());
- initButton(*editPointCustom, Glib::ustring("gtk-edit.png"), Gtk::ALIGN_START, false, "CURVEEDITOR_EDITPOINT_HINT");
+ initButton(*editPointCustom, Glib::ustring("edit-point.png"), Gtk::ALIGN_START, false, "CURVEEDITOR_EDITPOINT_HINT");
editCustom = Gtk::manage (new Gtk::ToggleButton());
- initButton(*editCustom, Glib::ustring("editmodehand.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
+ initButton(*editCustom, Glib::ustring("crosshair-adjust.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
editCustom->hide();
copyCustom = Gtk::manage (new Gtk::Button ());
- initButton(*copyCustom, Glib::ustring("edit-copy.png"), Gtk::ALIGN_END, true);
+ initButton(*copyCustom, Glib::ustring("copy.png"), Gtk::ALIGN_END, true);
pasteCustom = Gtk::manage (new Gtk::Button ());
- initButton(*pasteCustom, Glib::ustring("edit-paste.png"), Gtk::ALIGN_END, false);
+ initButton(*pasteCustom, Glib::ustring("paste.png"), Gtk::ALIGN_END, false);
loadCustom = Gtk::manage (new Gtk::Button ());
- initButton(*loadCustom, Glib::ustring("gtk-open.png"), Gtk::ALIGN_END, false);
+ initButton(*loadCustom, Glib::ustring("folder-open.png"), Gtk::ALIGN_END, false);
saveCustom = Gtk::manage (new Gtk::Button ());
- initButton(*saveCustom, Glib::ustring("gtk-save-large.png"), Gtk::ALIGN_END, false);
+ initButton(*saveCustom, Glib::ustring("save.png"), Gtk::ALIGN_END, false);
custombbox->attach_next_to(*editPointCustom, sideStart, 1, 1);
custombbox->attach_next_to(*editCustom, sideStart, 1, 1);
@@ -144,18 +144,18 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt,
}
editPointNURBS = Gtk::manage (new Gtk::ToggleButton ());
- initButton(*editPointNURBS, Glib::ustring("gtk-edit.png"), Gtk::ALIGN_START, false, "CURVEEDITOR_EDITPOINT_HINT");
+ initButton(*editPointNURBS, Glib::ustring("edit-point.png"), Gtk::ALIGN_START, false, "CURVEEDITOR_EDITPOINT_HINT");
editNURBS = Gtk::manage (new Gtk::ToggleButton());
- initButton(*editNURBS, Glib::ustring("editmodehand.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
+ initButton(*editNURBS, Glib::ustring("crosshair-adjust.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
editNURBS->hide();
copyNURBS = Gtk::manage (new Gtk::Button ());
- initButton(*copyNURBS, Glib::ustring("edit-copy.png"), Gtk::ALIGN_END, true);
+ initButton(*copyNURBS, Glib::ustring("copy.png"), Gtk::ALIGN_END, true);
pasteNURBS = Gtk::manage (new Gtk::Button ());
- initButton(*pasteNURBS, Glib::ustring("edit-paste.png"), Gtk::ALIGN_END, false);
+ initButton(*pasteNURBS, Glib::ustring("paste.png"), Gtk::ALIGN_END, false);
loadNURBS = Gtk::manage (new Gtk::Button ());
- initButton(*loadNURBS, Glib::ustring("gtk-open.png"), Gtk::ALIGN_END, false);
+ initButton(*loadNURBS, Glib::ustring("folder-open.png"), Gtk::ALIGN_END, false);
saveNURBS = Gtk::manage (new Gtk::Button ());
- initButton(*saveNURBS, Glib::ustring("gtk-save-large.png"), Gtk::ALIGN_END, false);
+ initButton(*saveNURBS, Glib::ustring("save.png"), Gtk::ALIGN_END, false);
NURBSbbox->attach_next_to(*editPointNURBS, sideStart, 1, 1);
NURBSbbox->attach_next_to(*editNURBS, sideStart, 1, 1);
@@ -224,16 +224,16 @@ 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("editmodehand.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
+ initButton(*editParam, Glib::ustring("crosshair-adjust.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
editParam->hide();
copyParam = Gtk::manage (new Gtk::Button ());
- initButton(*copyParam, Glib::ustring("edit-copy.png"), Gtk::ALIGN_END, true);
+ initButton(*copyParam, Glib::ustring("copy.png"), Gtk::ALIGN_END, true);
pasteParam = Gtk::manage (new Gtk::Button ());
- initButton(*pasteParam, Glib::ustring("edit-paste.png"), Gtk::ALIGN_END, false);
+ initButton(*pasteParam, Glib::ustring("paste.png"), Gtk::ALIGN_END, false);
loadParam = Gtk::manage (new Gtk::Button ());
- initButton(*loadParam, Glib::ustring("gtk-open.png"), Gtk::ALIGN_END, false);
+ initButton(*loadParam, Glib::ustring("folder-open.png"), Gtk::ALIGN_END, false);
saveParam = Gtk::manage (new Gtk::Button ());
- initButton(*saveParam, Glib::ustring("gtk-save-large.png"), Gtk::ALIGN_END, false);
+ initButton(*saveParam, Glib::ustring("save.png"), Gtk::ALIGN_END, false);
parambbox->attach_next_to(*editParam, sideStart, 1, 1);
parambbox->attach_next_to(*copyParam, sideEnd, 1, 1);
diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc
index bf4a31f49..501296860 100644
--- a/rtgui/dirbrowser.cc
+++ b/rtgui/dirbrowser.cc
@@ -121,13 +121,13 @@ DirBrowser::~DirBrowser()
void DirBrowser::fillDirTree ()
{
- openfolder = RTImage::createFromFile ("gtk-open.png");
- closedfolder = RTImage::createFromFile ("folder.png");
- icdrom = RTImage::createFromFile ("drive-optical.png");
- ifloppy = RTImage::createFromFile ("drive-removable-media.png");
- ihdd = RTImage::createFromFile ("drive-harddisk.png");
- iremovable = RTImage::createFromFile ("media-usb.png");
- inetwork = RTImage::createFromFile ("network.png");
+ openfolder = RTImage::createFromFile ("folder-open-small.png");
+ closedfolder = RTImage::createFromFile ("folder-closed-small.png");
+ icdrom = RTImage::createFromFile ("device-optical.png");
+ ifloppy = RTImage::createFromFile ("device-floppy.png");
+ ihdd = RTImage::createFromFile ("device-hdd.png");
+ iremovable = RTImage::createFromFile ("device-usb.png");
+ inetwork = RTImage::createFromFile ("device-network.png");
//Create the Tree model:
dirTreeModel = Gtk::TreeStore::create(dtColumns);
diff --git a/rtgui/distortion.cc b/rtgui/distortion.cc
index 1fadec9d9..c181ed479 100644
--- a/rtgui/distortion.cc
+++ b/rtgui/distortion.cc
@@ -28,15 +28,16 @@ Distortion::Distortion (): FoldableToolPanel(this, "distortion", M("TP_DISTORTIO
rlistener = nullptr;
autoDistor = Gtk::manage (new Gtk::Button (M("GENERAL_AUTO")));
- autoDistor->set_image (*Gtk::manage (new RTImage ("distortion-auto.png")));
+ autoDistor->set_image (*Gtk::manage (new RTImage ("distortion-auto-small.png")));
+ autoDistor->get_style_context()->add_class("independent");
autoDistor->set_alignment(0.5f, 0.5f);
autoDistor->set_tooltip_text (M("TP_DISTORTION_AUTO_TIP"));
idConn = autoDistor->signal_pressed().connect( sigc::mem_fun(*this, &Distortion::idPressed) );
autoDistor->show();
pack_start (*autoDistor);
- Gtk::Image* idistL = Gtk::manage (new RTImage ("distortion-pincushion.png"));
- Gtk::Image* idistR = Gtk::manage (new RTImage ("distortion-barrel.png"));
+ Gtk::Image* idistL = Gtk::manage (new RTImage ("distortion-pincushion-small.png"));
+ Gtk::Image* idistR = Gtk::manage (new RTImage ("distortion-barrel-small.png"));
distor = Gtk::manage (new Adjuster (M("TP_DISTORTION_AMOUNT"), -0.5, 0.5, 0.001, 0, idistL, idistR));
distor->setAdjusterListener (this);
diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc
index a9cd7a994..dbcc6fd50 100644
--- a/rtgui/editorpanel.cc
+++ b/rtgui/editorpanel.cc
@@ -272,7 +272,7 @@ private:
}
#else
- profile = "RT_sRGB";
+ profile = options.rtSettings.srgb;
#endif
#if !defined(__APPLE__) // monitor profile not supported on apple
@@ -538,8 +538,8 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
beforeAfter->set_relief (Gtk::RELIEF_NONE);
beforeAfter->set_tooltip_markup (M ("MAIN_TOOLTIP_TOGGLE"));
- iBeforeLockON = new RTImage ("lock-on.png");
- iBeforeLockOFF = new RTImage ("lock-off.png");
+ iBeforeLockON = new RTImage ("padlock-locked-small.png");
+ iBeforeLockOFF = new RTImage ("padlock-unlocked-small.png");
Gtk::VSeparator* vsept = Gtk::manage (new Gtk::VSeparator ());
Gtk::VSeparator* vsepz = Gtk::manage (new Gtk::VSeparator ());
@@ -651,19 +651,19 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
iops->set_row_spacing (2);
iops->set_column_spacing (2);
- Gtk::Image *saveButtonImage = Gtk::manage (new RTImage ("gtk-save-large.png"));
+ Gtk::Image *saveButtonImage = Gtk::manage (new RTImage ("save.png"));
saveimgas = Gtk::manage (new Gtk::Button ());
saveimgas->add (*saveButtonImage);
saveimgas->set_tooltip_markup (M ("MAIN_BUTTON_SAVE_TOOLTIP"));
setExpandAlignProperties (saveimgas, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
- Gtk::Image *queueButtonImage = Gtk::manage (new RTImage ("processing.png"));
+ Gtk::Image *queueButtonImage = Gtk::manage (new RTImage ("gears.png"));
queueimg = Gtk::manage (new Gtk::Button ());
queueimg->add (*queueButtonImage);
queueimg->set_tooltip_markup (M ("MAIN_BUTTON_PUTTOQUEUE_TOOLTIP"));
setExpandAlignProperties (queueimg, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
- Gtk::Image *sendToEditorButtonImage = Gtk::manage (new RTImage ("image-editor.png"));
+ Gtk::Image *sendToEditorButtonImage = Gtk::manage (new RTImage ("palette-brush.png"));
sendtogimp = Gtk::manage (new Gtk::Button ());
sendtogimp->add (*sendToEditorButtonImage);
sendtogimp->set_tooltip_markup (M ("MAIN_BUTTON_SENDTOEDITOR_TOOLTIP"));
@@ -699,7 +699,7 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
if (!simpleEditor && !options.tabbedUI) {
// Navigation buttons
- Gtk::Image *navPrevImage = Gtk::manage (new RTImage ("nav-prev.png"));
+ Gtk::Image *navPrevImage = Gtk::manage (new RTImage ("arrow2-left.png"));
navPrevImage->set_padding (0, 0);
navPrev = Gtk::manage (new Gtk::Button ());
navPrev->add (*navPrevImage);
@@ -707,7 +707,7 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
navPrev->set_tooltip_markup (M ("MAIN_BUTTON_NAVPREV_TOOLTIP"));
setExpandAlignProperties (navPrev, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
- Gtk::Image *navNextImage = Gtk::manage (new RTImage ("nav-next.png"));
+ Gtk::Image *navNextImage = Gtk::manage (new RTImage ("arrow2-right.png"));
navNextImage->set_padding (0, 0);
navNext = Gtk::manage (new Gtk::Button ());
navNext->add (*navNextImage);
@@ -715,7 +715,7 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
navNext->set_tooltip_markup (M ("MAIN_BUTTON_NAVNEXT_TOOLTIP"));
setExpandAlignProperties (navNext, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
- Gtk::Image *navSyncImage = Gtk::manage (new RTImage ("nav-sync.png"));
+ Gtk::Image *navSyncImage = Gtk::manage (new RTImage ("arrow-updown.png"));
navSyncImage->set_padding (0, 0);
navSync = Gtk::manage (new Gtk::Button ());
navSync->add (*navSyncImage);
diff --git a/rtgui/editwindow.cc b/rtgui/editwindow.cc
index f42bf4739..a5592e6da 100644
--- a/rtgui/editwindow.cc
+++ b/rtgui/editwindow.cc
@@ -53,7 +53,7 @@ EditWindow* EditWindow::getInstance(RTWindow* p, bool restore)
EditWindow::EditWindow (RTWindow* p) : parent(p) , isFullscreen(false), isClosed(true)
{
- Glib::ustring fName = "rt-logo-tiny.png";
+ Glib::ustring fName = "rawtherapee-logo-24.png";
Glib::ustring fullPath = rtengine::findIconAbsolutePath(fName);
try {
@@ -172,11 +172,11 @@ void EditWindow::addEditorPanel (EditorPanel* ep, const std::string &name)
// construct closeable tab for the image
Gtk::HBox* hb = Gtk::manage (new Gtk::HBox ());
- hb->pack_start (*Gtk::manage (new RTImage ("rtwindow.png")));
+ hb->pack_start (*Gtk::manage (new RTImage ("aperture.png")));
hb->pack_start (*Gtk::manage (new Gtk::Label (Glib::path_get_basename (name))));
hb->set_tooltip_markup (name);
Gtk::Button* closeb = Gtk::manage (new Gtk::Button ());
- closeb->set_image (*Gtk::manage(new RTImage ("gtk-close.png")));
+ closeb->set_image (*Gtk::manage(new RTImage ("cancel-small.png")));
closeb->set_relief (Gtk::RELIEF_NONE);
closeb->set_focus_on_click (false);
diff --git a/rtgui/exifpanel.cc b/rtgui/exifpanel.cc
index 168106804..fa362a351 100644
--- a/rtgui/exifpanel.cc
+++ b/rtgui/exifpanel.cc
@@ -48,9 +48,9 @@ ExifPanel::ExifPanel () : idata (nullptr)
exifTree->set_grid_lines (Gtk::TREE_VIEW_GRID_LINES_NONE);
exifTree->set_row_separator_func (sigc::mem_fun(*this, &ExifPanel::rowSeperatorFunc));
- delicon = RTImage::createFromFile ("gtk-close.png");
- keepicon = RTImage::createFromFile ("gtk-apply.png");
- editicon = RTImage::createFromFile ("gtk-add.png");
+ delicon = RTImage::createFromFile ("cancel-small.png");
+ keepicon = RTImage::createFromFile ("tick-small.png");
+ editicon = RTImage::createFromFile ("add-small.png");
Gtk::TreeView::Column *viewcol = Gtk::manage (new Gtk::TreeView::Column ("Field Name"));
Gtk::CellRendererPixbuf* render_pb = Gtk::manage (new Gtk::CellRendererPixbuf ());
@@ -128,14 +128,14 @@ ExifPanel::ExifPanel () : idata (nullptr)
buttons2->attach_next_to (*showAll, Gtk::POS_LEFT, 1, 1);
reset = Gtk::manage (new Gtk::Button ()); // M("EXIFPANEL_RESET")
- reset->set_image (*Gtk::manage (new RTImage ("gtk-undo-ltr.png", "gtk-undo-rtl.png")));
+ reset->set_image (*Gtk::manage (new RTImage ("undo.png", "redo.png")));
reset->set_tooltip_text (M ("EXIFPANEL_RESETHINT"));
reset->get_style_context()->add_class ("MiddleH");
setExpandAlignProperties (reset, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
buttons2->attach_next_to (*reset, Gtk::POS_RIGHT, 1, 1);
resetAll = Gtk::manage (new Gtk::Button ()); // M("EXIFPANEL_RESETALL")
- resetAll->set_image (*Gtk::manage (new RTImage ("gtk-undoall-ltr.png", "gtk-undoall-rtl.png")));
+ resetAll->set_image (*Gtk::manage (new RTImage ("undo-all.png", "redo-all.png")));
resetAll->set_tooltip_text (M ("EXIFPANEL_RESETALLHINT"));
resetAll->get_style_context()->add_class ("Right");
setExpandAlignProperties (resetAll, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
diff --git a/rtgui/exportpanel.cc b/rtgui/exportpanel.cc
index 6c9b96ab7..3a74d3ca3 100644
--- a/rtgui/exportpanel.cc
+++ b/rtgui/exportpanel.cc
@@ -180,14 +180,14 @@ ExportPanel::ExportPanel () : listener (nullptr)
// Buttons
btnFastExport = Gtk::manage ( new Gtk::Button () );
btnFastExport->set_tooltip_text (M ("EXPORT_PUTTOQUEUEFAST"));
- btnFastExport->set_image (*Gtk::manage (new RTImage ("processing.png")));
+ btnFastExport->set_image (*Gtk::manage (new RTImage ("gears.png")));
pack_start (*btnFastExport, Gtk::PACK_SHRINK, 4);
// add panel ending
Gtk::VBox* vboxpe = Gtk::manage (new Gtk::VBox ());
Gtk::HSeparator* hseptpe = Gtk::manage (new Gtk::HSeparator ());
- Gtk::Image* peImg = Gtk::manage (new RTImage ("PanelEnding.png"));
+ Gtk::Image* peImg = Gtk::manage (new RTImage ("ornament1.png"));
vboxpe->pack_start (*hseptpe, Gtk::PACK_SHRINK, 4);
vboxpe->pack_start (*peImg);
pack_start (*vboxpe, Gtk::PACK_SHRINK, 0);
diff --git a/rtgui/exportpanel.h b/rtgui/exportpanel.h
index 0bea30d22..369682169 100644
--- a/rtgui/exportpanel.h
+++ b/rtgui/exportpanel.h
@@ -51,7 +51,7 @@ protected:
/* icm_input = "(camera)";
icm_working = "sRGB";
- icm_output = "RT_sRGB";
+ icm_output = options.rtSettings.srgb;
icm_gamma = "default";
*/
Gtk::CheckButton* bypass_dirpyrequalizer; // also could leave untouched but disable only small radius adjustments
diff --git a/rtgui/fattaltonemap.cc b/rtgui/fattaltonemap.cc
index af2b9eddf..545a313a9 100644
--- a/rtgui/fattaltonemap.cc
+++ b/rtgui/fattaltonemap.cc
@@ -32,8 +32,8 @@ FattalToneMapping::FattalToneMapping(): FoldableToolPanel(this, "fattal", M("TP_
amount = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_AMOUNT"), 1., 100., 1., 30.));
threshold = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_THRESHOLD"), -100., 100., 1., 0.0));
- Gtk::Image *al = Gtk::manage(new RTImage("adj-black.png"));
- Gtk::Image *ar = Gtk::manage(new RTImage("adj-white.png"));
+ Gtk::Image *al = Gtk::manage(new RTImage("circle-black-small.png"));
+ Gtk::Image *ar = Gtk::manage(new RTImage("circle-white-small.png"));
anchor = Gtk::manage(new Adjuster(M("TP_TM_FATTAL_ANCHOR"), 1, 100, 1, 50, al, ar));
amount->setAdjusterListener(this);
diff --git a/rtgui/favoritbrowser.cc b/rtgui/favoritbrowser.cc
index 29b82f510..379ce26e6 100644
--- a/rtgui/favoritbrowser.cc
+++ b/rtgui/favoritbrowser.cc
@@ -55,7 +55,7 @@ FavoritBrowser::FavoritBrowser () : listener (NULL), lastSelectedDir ("")
add->set_vexpand(false);
add->set_halign(Gtk::ALIGN_FILL);
add->set_valign(Gtk::ALIGN_START);
- add->set_image (*Gtk::manage (new RTImage ("gtk-add.png")));
+ add->set_image (*Gtk::manage (new RTImage ("add-small.png")));
add->get_style_context()->add_class("Left");
del = Gtk::manage (new Gtk::Button ());
del->set_tooltip_text(M("MAIN_FRAME_PLACES_DEL"));
@@ -63,7 +63,7 @@ FavoritBrowser::FavoritBrowser () : listener (NULL), lastSelectedDir ("")
del->set_vexpand(false);
del->set_halign(Gtk::ALIGN_FILL);
del->set_valign(Gtk::ALIGN_START);
- del->set_image (*Gtk::manage (new RTImage ("list-remove.png")));
+ del->set_image (*Gtk::manage (new RTImage ("remove-small.png")));
del->get_style_context()->add_class("Right");
Gtk::HBox* buttonBox = Gtk::manage (new Gtk::HBox ());
buttonBox->pack_start (*add);
diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc
index 4d6994e23..edd37f7dd 100644
--- a/rtgui/filebrowser.cc
+++ b/rtgui/filebrowser.cc
@@ -152,7 +152,7 @@ FileBrowser::FileBrowser () :
pmenu = new Gtk::Menu ();
pmenu->attach (*Gtk::manage(open = new Gtk::MenuItem (M("FILEBROWSER_POPUPOPEN"))), 0, 1, p, p + 1);
p++;
- pmenu->attach (*Gtk::manage(develop = new MyImageMenuItem (M("FILEBROWSER_POPUPPROCESS"), "processing.png")), 0, 1, p, p + 1);
+ pmenu->attach (*Gtk::manage(develop = new MyImageMenuItem (M("FILEBROWSER_POPUPPROCESS"), "gears.png")), 0, 1, p, p + 1);
p++;
pmenu->attach (*Gtk::manage(developfast = new Gtk::MenuItem (M("FILEBROWSER_POPUPPROCESSFAST"))), 0, 1, p, p + 1);
p++;
@@ -201,13 +201,19 @@ FileBrowser::FileBrowser () :
/***********************
* color labels
***********************/
+
+ // Thumbnail context menu
+ // Similar image arrays in filecatalog.cc
+ std::array clabelActiveIcons = {"circle-empty-gray-small.png", "circle-red-small.png", "circle-yellow-small.png", "circle-green-small.png", "circle-blue-small.png", "circle-purple-small.png"};
+ std::array clabelInactiveIcons = {"circle-empty-darkgray-small.png", "circle-empty-red-small.png", "circle-empty-yellow-small.png", "circle-empty-green-small.png", "circle-empty-blue-small.png", "circle-empty-purple-small.png"};
+
if (options.menuGroupLabel) {
pmenu->attach (*Gtk::manage(menuLabel = new Gtk::MenuItem (M("FILEBROWSER_POPUPCOLORLABEL"))), 0, 1, p, p + 1);
p++;
Gtk::Menu* submenuLabel = Gtk::manage (new Gtk::Menu ());
for (int i = 0; i <= 5; i++) {
- submenuLabel->attach (*Gtk::manage(colorlabel[i] = new MyImageMenuItem (M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), i == 0 ? "cglabel0.png" : Glib::ustring::compose("%1%2%3", "clabel", i, ".png"))), 0, 1, p, p + 1);
+ submenuLabel->attach(*Gtk::manage(colorlabel[i] = new MyImageMenuItem(M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), clabelActiveIcons[i])), 0, 1, p, p + 1);
p++;
}
@@ -215,7 +221,7 @@ FileBrowser::FileBrowser () :
menuLabel->set_submenu (*submenuLabel);
} else {
for (int i = 0; i <= 5; i++) {
- pmenu->attach (*Gtk::manage(colorlabel[i] = new MyImageMenuItem (M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), i == 0 ? "cglabel0.png" : Glib::ustring::compose("%1%2%3", "clabel", i, ".png"))), 0, 1, p, p + 1);
+ pmenu->attach(*Gtk::manage(colorlabel[i] = new MyImageMenuItem(M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), clabelInactiveIcons[i])), 0, 1, p, p + 1);
p++;
}
}
@@ -337,7 +343,7 @@ FileBrowser::FileBrowser () :
* Profile Operations
* *********************/
if (options.menuGroupProfileOperations) {
- pmenu->attach (*Gtk::manage(menuProfileOperations = new MyImageMenuItem (M("FILEBROWSER_POPUPPROFILEOPERATIONS"), "logoicon-wind.png")), 0, 1, p, p + 1);
+ pmenu->attach (*Gtk::manage(menuProfileOperations = new Gtk::MenuItem (M("FILEBROWSER_POPUPPROFILEOPERATIONS"))), 0, 1, p, p + 1);
p++;
Gtk::Menu* submenuProfileOperations = Gtk::manage (new Gtk::Menu ());
@@ -449,14 +455,14 @@ FileBrowser::FileBrowser () :
// A separate pop-up menu for Color Labels
int c = 0;
- pmenuColorLabels = new Gtk::Menu ();
+ pmenuColorLabels = new Gtk::Menu();
for (int i = 0; i <= 5; i++) {
- pmenuColorLabels->attach (*Gtk::manage(colorlabel_pop[i] = new MyImageMenuItem (M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), i == 0 ? "cglabel0.png" : Glib::ustring::compose("%1%2%3", "clabel", i, ".png"))), 0, 1, c, c + 1);
+ pmenuColorLabels->attach(*Gtk::manage(colorlabel_pop[i] = new MyImageMenuItem(M(Glib::ustring::compose("%1%2", "FILEBROWSER_POPUPCOLORLABEL", i)), clabelActiveIcons[i])), 0, 1, c, c + 1);
c++;
}
- pmenuColorLabels->show_all ();
+ pmenuColorLabels->show_all();
// Has to be located after creation of applyprof and applypartprof
updateProfileList ();
diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h
index 2c5acfccb..1d8bc4b2b 100644
--- a/rtgui/filebrowser.h
+++ b/rtgui/filebrowser.h
@@ -85,7 +85,7 @@ protected:
Gtk::MenuItem* menuRank;
Gtk::MenuItem* menuLabel;
Gtk::MenuItem* menuFileOperations;
- MyImageMenuItem* menuProfileOperations;
+ Gtk::MenuItem* menuProfileOperations;
Gtk::MenuItem* menuExtProg;
Gtk::MenuItem** amiExtProg;
Gtk::MenuItem* miOpenDefaultViewer;
diff --git a/rtgui/filebrowserentry.cc b/rtgui/filebrowserentry.cc
index 04a5b2723..6046d372d 100644
--- a/rtgui/filebrowserentry.cc
+++ b/rtgui/filebrowserentry.cc
@@ -56,11 +56,11 @@ FileBrowserEntry::FileBrowserEntry (Thumbnail* thm, const Glib::ustring& fname)
scale = 1;
if (!iconsLoaded) {
- editedIcon = RTImage::createFromFile ("edited.png");
- recentlySavedIcon = RTImage::createFromFile ("recent-save.png");
- enqueuedIcon = RTImage::createFromFile ("processing.png");
- hdr = RTImage::createFromFile ("HDR-thumbnail.png");
- ps = RTImage::createFromFile ("PixelShift-thumbnail.png");
+ editedIcon = RTImage::createFromFile ("tick-small.png");
+ recentlySavedIcon = RTImage::createFromFile ("save-small.png");
+ enqueuedIcon = RTImage::createFromFile ("gears-small.png");
+ hdr = RTImage::createFromFile ("filetype-hdr.png");
+ ps = RTImage::createFromFile ("filetype-ps.png");
iconsLoaded = true;
}
diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc
index ad7af7c8d..a0d767d79 100644
--- a/rtgui/filecatalog.cc
+++ b/rtgui/filecatalog.cc
@@ -74,7 +74,7 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
trashButtonBox = Gtk::manage( new Gtk::VBox );
Gtk::Button* emptyT = Gtk::manage( new Gtk::Button ());
emptyT->set_tooltip_markup (M("FILEBROWSER_EMPTYTRASHHINT"));
- emptyT->set_image (*Gtk::manage(new RTImage ("trash.png")));
+ emptyT->set_image (*Gtk::manage(new RTImage ("trash-delete.png")));
emptyT->signal_pressed().connect (sigc::mem_fun(*this, &FileCatalog::emptyTrash));
trashButtonBox->pack_start (*emptyT, Gtk::PACK_SHRINK, 4);
emptyT->show ();
@@ -84,8 +84,8 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
hbToolBar1 = Gtk::manage(new Gtk::HBox ());
//setup BrowsePath
- iRefreshWhite = new RTImage("refresh-white.png");
- iRefreshRed = new RTImage("refresh-red.png");
+ iRefreshWhite = new RTImage("refresh-small.png");
+ iRefreshRed = new RTImage("refresh-red-small.png");
BrowsePath = Gtk::manage(new Gtk::Entry ());
BrowsePath->set_width_chars (50);
@@ -104,7 +104,7 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
BrowsePath->signal_key_press_event().connect(sigc::mem_fun(*this, &FileCatalog::BrowsePath_key_pressed));
//setup Query
- iQueryClear = new RTImage("gtk-close-small.png");
+ iQueryClear = new RTImage("cancel-small.png");
Gtk::Label* labelQuery = Gtk::manage(new Gtk::Label(M("FILEBROWSER_QUERYLABEL")));
Query = Gtk::manage(new Gtk::Entry ()); // cannot use Gtk::manage here as FileCatalog::getFilter will fail on Query->get_text()
Query->set_text("");
@@ -149,11 +149,11 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
vSepiLeftPanel = new Gtk::VSeparator ();
buttonBar->pack_start (*vSepiLeftPanel, Gtk::PACK_SHRINK);
- iFilterClear = new RTImage ("filterclear.png");
+ iFilterClear = new RTImage ("filter-clear.png");
igFilterClear = new RTImage ("filter.png");
bFilterClear = Gtk::manage(new Gtk::ToggleButton ());
bFilterClear->set_active (true);
- bFilterClear->set_image(*iFilterClear);// (*Gtk::manage(new RTImage ("filterclear.png")));
+ bFilterClear->set_image(*iFilterClear);// (*Gtk::manage(new RTImage ("filter-clear.png")));
bFilterClear->set_relief (Gtk::RELIEF_NONE);
bFilterClear->set_tooltip_markup (M("FILEBROWSER_SHOWDIRHINT"));
bFilterClear->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event), false);
@@ -163,11 +163,14 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
fltrVbox1 = Gtk::manage (new Gtk::VBox());
fltrRankbox = Gtk::manage (new Gtk::HBox());
+ fltrRankbox->get_style_context()->add_class("smallbuttonbox");
fltrLabelbox = Gtk::manage (new Gtk::HBox());
+ fltrLabelbox->get_style_context()->add_class("smallbuttonbox");
- iUnRanked = new RTImage ("ratednot.png");
- igUnRanked = new RTImage ("ratednotg.png");
+ iUnRanked = new RTImage ("star-gold-hollow-small.png");
+ igUnRanked = new RTImage ("star-hollow-small.png");
bUnRanked = Gtk::manage( new Gtk::ToggleButton () );
+ bUnRanked->get_style_context()->add_class("smallbutton");
bUnRanked->set_active (false);
bUnRanked->set_image (*igUnRanked);
bUnRanked->set_relief (Gtk::RELIEF_NONE);
@@ -177,11 +180,12 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
bUnRanked->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event), false);
for (int i = 0; i < 5; i++) {
- iranked[i] = new RTImage ("rated.png");
- igranked[i] = new RTImage ("grayrated.png");
+ iranked[i] = new RTImage ("star-gold-small.png");
+ igranked[i] = new RTImage ("star-small.png");
iranked[i]->show ();
igranked[i]->show ();
bRank[i] = Gtk::manage( new Gtk::ToggleButton () );
+ bRank[i]->get_style_context()->add_class("smallbutton");
bRank[i]->set_image (*igranked[i]);
bRank[i]->set_relief (Gtk::RELIEF_NONE);
fltrRankbox->pack_start (*bRank[i], Gtk::PACK_SHRINK);
@@ -189,26 +193,33 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
bRank[i]->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event), false);
}
- iUnCLabeled = new RTImage ("clabel0.png");
- igUnCLabeled = new RTImage ("cglabel0.png");
- bUnCLabeled = Gtk::manage(new Gtk::ToggleButton ());
- bUnCLabeled->set_active (false);
- bUnCLabeled->set_image (*igUnCLabeled);
- bUnCLabeled->set_relief (Gtk::RELIEF_NONE);
- bUnCLabeled->set_tooltip_markup (M("FILEBROWSER_SHOWUNCOLORHINT"));
+ // Toolbar
+ // Similar image arrays in filebrowser.cc
+ std::array clabelActiveIcons = {"circle-gray-small.png", "circle-red-small.png", "circle-yellow-small.png", "circle-green-small.png", "circle-blue-small.png", "circle-purple-small.png"};
+ std::array clabelInactiveIcons = {"circle-empty-gray-small.png", "circle-empty-red-small.png", "circle-empty-yellow-small.png", "circle-empty-green-small.png", "circle-empty-blue-small.png", "circle-empty-purple-small.png"};
+
+ iUnCLabeled = new RTImage(clabelActiveIcons[0]);
+ igUnCLabeled = new RTImage(clabelInactiveIcons[0]);
+ bUnCLabeled = Gtk::manage(new Gtk::ToggleButton());
+ bUnCLabeled->get_style_context()->add_class("smallbutton");
+ bUnCLabeled->set_active(false);
+ bUnCLabeled->set_image(*igUnCLabeled);
+ bUnCLabeled->set_relief(Gtk::RELIEF_NONE);
+ bUnCLabeled->set_tooltip_markup(M("FILEBROWSER_SHOWUNCOLORHINT"));
bCateg[7] = bUnCLabeled->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bUnCLabeled, true));
- fltrLabelbox->pack_start (*bUnCLabeled, Gtk::PACK_SHRINK);
+ fltrLabelbox->pack_start(*bUnCLabeled, Gtk::PACK_SHRINK);
bUnCLabeled->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event), false);
for (int i = 0; i < 5; i++) {
- iCLabeled[i] = new RTImage (Glib::ustring::compose("%1%2%3", "clabel", i + 1, ".png"));
- igCLabeled[i] = new RTImage (Glib::ustring::compose("%1%2%3", "cglabel", i + 1, ".png"));
- iCLabeled[i]->show ();
- igCLabeled[i]->show ();
- bCLabel[i] = Gtk::manage(new Gtk::ToggleButton ());
- bCLabel[i]->set_image (*igCLabeled[i]);
- bCLabel[i]->set_relief (Gtk::RELIEF_NONE);
- fltrLabelbox->pack_start (*bCLabel[i], Gtk::PACK_SHRINK);
+ iCLabeled[i] = new RTImage(clabelActiveIcons[i+1]);
+ igCLabeled[i] = new RTImage(clabelInactiveIcons[i+1]);
+ iCLabeled[i]->show();
+ igCLabeled[i]->show();
+ bCLabel[i] = Gtk::manage(new Gtk::ToggleButton());
+ bCLabel[i]->get_style_context()->add_class("smallbutton");
+ bCLabel[i]->set_image(*igCLabeled[i]);
+ bCLabel[i]->set_relief(Gtk::RELIEF_NONE);
+ fltrLabelbox->pack_start(*bCLabel[i], Gtk::PACK_SHRINK);
bCateg[i + 8] = bCLabel[i]->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bCLabel[i], true));
bCLabel[i]->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event), false);
}
@@ -233,17 +244,23 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
fltrVbox2 = Gtk::manage (new Gtk::VBox());
fltrEditedBox = Gtk::manage (new Gtk::HBox());
+ fltrEditedBox->get_style_context()->add_class("smallbuttonbox");
fltrRecentlySavedBox = Gtk::manage (new Gtk::HBox());
+ fltrRecentlySavedBox->get_style_context()->add_class("smallbuttonbox");
// bEdited
- iEdited[0] = new RTImage ("editednot-small.png");
- igEdited[0] = new RTImage ("editednotg-small.png");
- iEdited[1] = new RTImage ("edited-small.png");
- igEdited[1] = new RTImage ("editedg-small.png");
+ // TODO The "g" variant was the more transparent variant of the icon, used
+ // when the button was not toggled. Simplify this, change to ordinary
+ // togglebutton, use CSS for opacity change.
+ iEdited[0] = new RTImage ("tick-hollow-small.png");
+ igEdited[0] = new RTImage ("tick-hollow-small.png");
+ iEdited[1] = new RTImage ("tick-small.png");
+ igEdited[1] = new RTImage ("tick-small.png");
for (int i = 0; i < 2; i++) {
iEdited[i]->show ();
bEdited[i] = Gtk::manage(new Gtk::ToggleButton ());
+ bEdited[i]->get_style_context()->add_class("smallbutton");
bEdited[i]->set_active (false);
bEdited[i]->set_image (*igEdited[i]);
bEdited[i]->set_relief (Gtk::RELIEF_NONE);
@@ -257,14 +274,18 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
bEdited[1]->set_tooltip_markup (M("FILEBROWSER_SHOWEDITEDHINT"));
// RecentlySaved
- iRecentlySaved[0] = new RTImage ("savednot.png");
- igRecentlySaved[0] = new RTImage ("savednotg.png");
- iRecentlySaved[1] = new RTImage ("saved.png");
- igRecentlySaved[1] = new RTImage ("savedg.png");
+ // TODO The "g" variant was the more transparent variant of the icon, used
+ // when the button was not toggled. Simplify this, change to ordinary
+ // togglebutton, use CSS for opacity change.
+ iRecentlySaved[0] = new RTImage ("saved-no-small.png");
+ igRecentlySaved[0] = new RTImage ("saved-no-small.png");
+ iRecentlySaved[1] = new RTImage ("saved-yes-small.png");
+ igRecentlySaved[1] = new RTImage ("saved-yes-small.png");
for (int i = 0; i < 2; i++) {
iRecentlySaved[i]->show ();
bRecentlySaved[i] = Gtk::manage(new Gtk::ToggleButton ());
+ bRecentlySaved[i]->get_style_context()->add_class("smallbutton");
bRecentlySaved[i]->set_active (false);
bRecentlySaved[i]->set_image (*igRecentlySaved[i]);
bRecentlySaved[i]->set_relief (Gtk::RELIEF_NONE);
@@ -284,18 +305,18 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
buttonBar->pack_start (*Gtk::manage(new Gtk::VSeparator), Gtk::PACK_SHRINK);
// Trash
- iTrashEmpty = new RTImage("trash-show-empty.png") ;
- iTrashFull = new RTImage("trash-show-full.png") ;
+ iTrashShowEmpty = new RTImage("trash-empty-show.png") ;
+ iTrashShowFull = new RTImage("trash-full-show.png") ;
bTrash = Gtk::manage( new Gtk::ToggleButton () );
- bTrash->set_image (*iTrashEmpty);
+ bTrash->set_image (*iTrashShowEmpty);
bTrash->set_relief (Gtk::RELIEF_NONE);
bTrash->set_tooltip_markup (M("FILEBROWSER_SHOWTRASHHINT"));
bCateg[17] = bTrash->signal_toggled().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::categoryButtonToggled), bTrash, true));
bTrash->signal_button_press_event().connect (sigc::mem_fun(*this, &FileCatalog::capture_event), false);
iNotTrash = new RTImage("trash-hide-deleted.png") ;
- iOriginal = new RTImage("filter-original-2.png");
+ iOriginal = new RTImage("filter-original.png");
bNotTrash = Gtk::manage( new Gtk::ToggleButton () );
bNotTrash->set_image (*iNotTrash);
@@ -374,13 +395,13 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) :
// thumbnail zoom
Gtk::HBox* zoomBox = Gtk::manage( new Gtk::HBox () );
zoomInButton = Gtk::manage( new Gtk::Button () );
- zoomInButton->set_image (*Gtk::manage(new RTImage ("gtk-zoom-in.png")));
+ zoomInButton->set_image (*Gtk::manage(new RTImage ("magnifier-plus.png")));
zoomInButton->signal_pressed().connect (sigc::mem_fun(*this, &FileCatalog::zoomIn));
zoomInButton->set_relief (Gtk::RELIEF_NONE);
zoomInButton->set_tooltip_markup (M("FILEBROWSER_ZOOMINHINT"));
zoomBox->pack_end (*zoomInButton, Gtk::PACK_SHRINK);
zoomOutButton = Gtk::manage( new Gtk::Button () );
- zoomOutButton->set_image (*Gtk::manage(new RTImage ("gtk-zoom-out.png")));
+ zoomOutButton->set_image (*Gtk::manage(new RTImage ("magnifier-minus.png")));
zoomOutButton->signal_pressed().connect (sigc::mem_fun(*this, &FileCatalog::zoomOut));
zoomOutButton->set_relief (Gtk::RELIEF_NONE);
zoomOutButton->set_tooltip_markup (M("FILEBROWSER_ZOOMOUTHINT"));
@@ -461,8 +482,8 @@ FileCatalog::~FileCatalog()
delete igUnRanked;
delete iUnCLabeled;
delete igUnCLabeled;
- delete iTrashEmpty;
- delete iTrashFull;
+ delete iTrashShowEmpty;
+ delete iTrashShowFull;
delete iNotTrash;
delete iOriginal;
delete iRefreshWhite;
@@ -692,7 +713,7 @@ void FileCatalog::_refreshProgressBar ()
Gtk::Label *label = nullptr;
if (!previewsToLoad ) {
- grid->attach_next_to(*Gtk::manage (new RTImage ("gtk-directory.png")), options.mainNBVertical ? Gtk::POS_TOP : Gtk::POS_RIGHT, 1, 1);
+ grid->attach_next_to(*Gtk::manage (new RTImage ("folder-closed.png")), options.mainNBVertical ? Gtk::POS_TOP : Gtk::POS_RIGHT, 1, 1);
int filteredCount = min(fileBrowser->getNumFiltered(), previewsLoaded);
label = Gtk::manage (new Gtk::Label (M("MAIN_FRAME_FILEBROWSER") +
@@ -700,7 +721,7 @@ void FileCatalog::_refreshProgressBar ()
+ Glib::ustring::format(previewsLoaded) +
(filteredCount != previewsLoaded ? "]" : ")")));
} else {
- grid->attach_next_to(*Gtk::manage (new RTImage ("gtk-find.png")), options.mainNBVertical ? Gtk::POS_TOP : Gtk::POS_RIGHT, 1, 1);
+ grid->attach_next_to(*Gtk::manage (new RTImage ("magnifier.png")), options.mainNBVertical ? Gtk::POS_TOP : Gtk::POS_RIGHT, 1, 1);
label = Gtk::manage (new Gtk::Label (M("MAIN_FRAME_FILEBROWSER") + " [" + Glib::ustring::format(std::fixed, std::setprecision(0), std::setw(3), (double)previewsLoaded / previewsToLoad * 100 ) + "%]" ));
filepanel->loadingThumbs("", (double)previewsLoaded / previewsToLoad);
}
@@ -1191,12 +1212,11 @@ void FileCatalog::developRequested (std::vector tbe, bool fas
params.raw.bayersensor.method = options.fastexport_raw_bayer_method;
params.raw.xtranssensor.method = options.fastexport_raw_xtrans_method;
- params.icm.input = options.fastexport_icm_input;
- params.icm.working = options.fastexport_icm_working;
- params.icm.output = options.fastexport_icm_output;
+ params.icm.inputProfile = options.fastexport_icm_input_profile;
+ params.icm.workingProfile = options.fastexport_icm_working_profile;
+ params.icm.outputProfile = options.fastexport_icm_output_profile;
params.icm.outputIntent = options.fastexport_icm_outputIntent;
params.icm.outputBPC = options.fastexport_icm_outputBPC;
- params.icm.gamma = options.fastexport_icm_gamma;
}
if (params.resize.enabled) {
@@ -1965,9 +1985,9 @@ void FileCatalog::setFilterPanel (FilterPanel* fpanel)
void FileCatalog::trashChanged ()
{
if (trashIsEmpty()) {
- bTrash->set_image(*iTrashEmpty);
+ bTrash->set_image(*iTrashShowEmpty);
} else {
- bTrash->set_image(*iTrashFull);
+ bTrash->set_image(*iTrashShowFull);
}
}
diff --git a/rtgui/filecatalog.h b/rtgui/filecatalog.h
index 29e4a370a..66f14b6b2 100644
--- a/rtgui/filecatalog.h
+++ b/rtgui/filecatalog.h
@@ -104,7 +104,7 @@ private:
Gtk::Image* iCLabeled[5], *igCLabeled[5], *iUnCLabeled, *igUnCLabeled;
Gtk::Image* iEdited[2], *igEdited[2];
Gtk::Image* iRecentlySaved[2], *igRecentlySaved[2];
- Gtk::Image *iTrashEmpty, *iTrashFull;
+ Gtk::Image *iTrashShowEmpty, *iTrashShowFull;
Gtk::Image *iNotTrash, *iOriginal;
Gtk::Image *iRefreshWhite, *iRefreshRed;
Gtk::Image *iLeftPanel_1_Show, *iLeftPanel_1_Hide, *iRightPanel_1_Show, *iRightPanel_1_Hide;
diff --git a/rtgui/filethumbnailbuttonset.cc b/rtgui/filethumbnailbuttonset.cc
index 286324bdf..d32c1c339 100644
--- a/rtgui/filethumbnailbuttonset.cc
+++ b/rtgui/filethumbnailbuttonset.cc
@@ -42,19 +42,19 @@ FileThumbnailButtonSet::FileThumbnailButtonSet (FileBrowserEntry* myEntry)
{
if (!iconsLoaded) {
- unRankIcon = RTImage::createFromPng ("ratednotg.png");
- rankIcon = RTImage::createFromPng ("rated.png");
- gRankIcon = RTImage::createFromPng ("grayrated.png");
- trashIcon = RTImage::createFromPng ("trash-thumbnail.png");
- unTrashIcon = RTImage::createFromPng ("undelete-thumbnail.png");
- processIcon = RTImage::createFromPng ("processing-thumbnail.png");
+ unRankIcon = RTImage::createFromPng ("star-hollow-small.png");
+ rankIcon = RTImage::createFromPng ("star-gold-small.png");
+ gRankIcon = RTImage::createFromPng ("star-small.png");
+ trashIcon = RTImage::createFromPng ("trash-small.png");
+ unTrashIcon = RTImage::createFromPng ("trash-remove-small.png");
+ processIcon = RTImage::createFromPng ("gears-small.png");
- colorLabelIcon_0 = RTImage::createFromPng ("cglabel0.png"); //("nocolorlabel.png");
- colorLabelIcon_1 = RTImage::createFromPng ("clabel1.png");
- colorLabelIcon_2 = RTImage::createFromPng ("clabel2.png");
- colorLabelIcon_3 = RTImage::createFromPng ("clabel3.png");
- colorLabelIcon_4 = RTImage::createFromPng ("clabel4.png");
- colorLabelIcon_5 = RTImage::createFromPng ("clabel5.png");
+ colorLabelIcon_0 = RTImage::createFromPng ("circle-empty-gray-small.png");
+ colorLabelIcon_1 = RTImage::createFromPng ("circle-red-small.png");
+ colorLabelIcon_2 = RTImage::createFromPng ("circle-yellow-small.png");
+ colorLabelIcon_3 = RTImage::createFromPng ("circle-green-small.png");
+ colorLabelIcon_4 = RTImage::createFromPng ("circle-blue-small.png");
+ colorLabelIcon_5 = RTImage::createFromPng ("circle-purple-small.png");
iconsLoaded = true;
}
diff --git a/rtgui/filterpanel.cc b/rtgui/filterpanel.cc
index 5f8fa2781..4ba332d3d 100644
--- a/rtgui/filterpanel.cc
+++ b/rtgui/filterpanel.cc
@@ -129,7 +129,7 @@ FilterPanel::FilterPanel () : listener (nullptr)
// add panel ending
Gtk::VBox* vboxpe = Gtk::manage (new Gtk::VBox ());
Gtk::HSeparator* hseptpe = Gtk::manage (new Gtk::HSeparator ());
- Gtk::Image* peImg = Gtk::manage (new RTImage("PanelEnding.png"));
+ Gtk::Image* peImg = Gtk::manage (new RTImage("ornament1.png"));
vboxpe->pack_start(*hseptpe, Gtk::PACK_SHRINK, 4);
vboxpe->pack_start(*peImg);
pack_start(*vboxpe, Gtk::PACK_SHRINK, 0);
diff --git a/rtgui/flatcurveeditorsubgroup.cc b/rtgui/flatcurveeditorsubgroup.cc
index a9d51abec..055a8a92f 100644
--- a/rtgui/flatcurveeditorsubgroup.cc
+++ b/rtgui/flatcurveeditorsubgroup.cc
@@ -63,17 +63,17 @@ FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::u
}
editCPoints = Gtk::manage (new Gtk::ToggleButton());
- initButton(*editCPoints, Glib::ustring("editmodehand.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
+ initButton(*editCPoints, Glib::ustring("crosshair-adjust.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP");
editPointCPoints = Gtk::manage (new Gtk::ToggleButton ());
- initButton(*editPointCPoints, Glib::ustring("gtk-edit.png"), Gtk::ALIGN_START, false, "CURVEEDITOR_EDITPOINT_HINT");
+ initButton(*editPointCPoints, Glib::ustring("edit-point.png"), Gtk::ALIGN_START, false, "CURVEEDITOR_EDITPOINT_HINT");
copyCPoints = Gtk::manage (new Gtk::Button ());
- initButton(*copyCPoints, Glib::ustring("edit-copy.png"), Gtk::ALIGN_END, true);
+ initButton(*copyCPoints, Glib::ustring("copy.png"), Gtk::ALIGN_END, true);
pasteCPoints = Gtk::manage (new Gtk::Button ());
- initButton(*pasteCPoints, Glib::ustring("edit-paste.png"), Gtk::ALIGN_END, false);
+ initButton(*pasteCPoints, Glib::ustring("paste.png"), Gtk::ALIGN_END, false);
loadCPoints = Gtk::manage (new Gtk::Button ());
- initButton(*loadCPoints, Glib::ustring("gtk-open.png"), Gtk::ALIGN_END, false);
+ initButton(*loadCPoints, Glib::ustring("folder-open.png"), Gtk::ALIGN_END, false);
saveCPoints = Gtk::manage (new Gtk::Button ());
- initButton(*saveCPoints, Glib::ustring("gtk-save-large.png"), Gtk::ALIGN_END, false);
+ initButton(*saveCPoints, Glib::ustring("save.png"), Gtk::ALIGN_END, false);
CPointsbbox->attach_next_to(*editPointCPoints, sideStart, 1, 1);
CPointsbbox->attach_next_to(*editCPoints, sideStart, 1, 1);
diff --git a/rtgui/flatfield.cc b/rtgui/flatfield.cc
index 21b5f319a..1b77ae316 100644
--- a/rtgui/flatfield.cc
+++ b/rtgui/flatfield.cc
@@ -33,7 +33,7 @@ FlatField::FlatField () : FoldableToolPanel(this, "flatfield", M("TP_FLATFIELD_L
bindCurrentFolder (*flatFieldFile, options.lastFlatfieldDir);
ffLabel = Gtk::manage(new Gtk::Label(M("GENERAL_FILE")));
flatFieldFileReset = Gtk::manage(new Gtk::Button());
- flatFieldFileReset->set_image (*Gtk::manage(new RTImage ("gtk-cancel.png")));
+ flatFieldFileReset->set_image (*Gtk::manage(new RTImage ("cancel-small.png")));
hbff->pack_start(*ffLabel, Gtk::PACK_SHRINK, 0);
hbff->pack_start(*flatFieldFile);
hbff->pack_start(*flatFieldFileReset, Gtk::PACK_SHRINK, 0);
diff --git a/rtgui/gradient.cc b/rtgui/gradient.cc
index cbaa39066..88e67adb3 100644
--- a/rtgui/gradient.cc
+++ b/rtgui/gradient.cc
@@ -13,7 +13,8 @@ Gradient::Gradient () : FoldableToolPanel(this, "gradient", M("TP_GRADIENT_LABEL
editHBox = Gtk::manage (new Gtk::HBox());
edit = Gtk::manage (new Gtk::ToggleButton());
- edit->add (*Gtk::manage (new RTImage ("editmodehand.png")));
+ edit->get_style_context()->add_class("independent");
+ edit->add (*Gtk::manage (new RTImage ("crosshair-adjust.png")));
edit->set_tooltip_text(M("EDIT_OBJECT_TOOLTIP"));
editConn = edit->signal_toggled().connect( sigc::mem_fun(*this, &Gradient::editToggled) );
editHBox->pack_start(*edit, Gtk::PACK_SHRINK, 0);
diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc
index 5160ccedd..28d3f6324 100644
--- a/rtgui/guiutils.cc
+++ b/rtgui/guiutils.cc
@@ -553,11 +553,11 @@ void ExpanderBox::hideBox()
void MyExpander::init()
{
- inconsistentPBuf = Gdk::Pixbuf::create_from_file(rtengine::findIconAbsolutePath("expanderInconsistent.png"));
- enabledPBuf = Gdk::Pixbuf::create_from_file(rtengine::findIconAbsolutePath("expanderEnabled.png"));
- disabledPBuf = Gdk::Pixbuf::create_from_file(rtengine::findIconAbsolutePath("expanderDisabled.png"));
- openedPBuf = Gdk::Pixbuf::create_from_file(rtengine::findIconAbsolutePath("expanderOpened.png"));
- closedPBuf = Gdk::Pixbuf::create_from_file(rtengine::findIconAbsolutePath("expanderClosed.png"));
+ inconsistentPBuf = Gdk::Pixbuf::create_from_file(rtengine::findIconAbsolutePath("power-inconsistent-small.png"));
+ enabledPBuf = Gdk::Pixbuf::create_from_file(rtengine::findIconAbsolutePath("power-on-small.png"));
+ disabledPBuf = Gdk::Pixbuf::create_from_file(rtengine::findIconAbsolutePath("power-off-small.png"));
+ openedPBuf = Gdk::Pixbuf::create_from_file(rtengine::findIconAbsolutePath("expander-open-small.png"));
+ closedPBuf = Gdk::Pixbuf::create_from_file(rtengine::findIconAbsolutePath("expander-closed-small.png"));
}
MyExpander::MyExpander(bool useEnabled, Gtk::Widget* titleWidget) :
@@ -1179,7 +1179,7 @@ MyFileChooserButton::MyFileChooserButton(const Glib::ustring &title, Gtk::FileCh
set_none();
box_.pack_start(lbl_, true, true);
Gtk::Image *img = Gtk::manage(new Gtk::Image());
- img->set_from_icon_name("document-open", Gtk::ICON_SIZE_BUTTON);
+ img->set_from_icon_name("folder-open", Gtk::ICON_SIZE_BUTTON);
box_.pack_start(*Gtk::manage(new Gtk::VSeparator()), false, false, 5);
box_.pack_start(*img, false, false);
box_.show_all_children();
diff --git a/rtgui/histogrampanel.cc b/rtgui/histogrampanel.cc
index 511f7f35e..e7e7abfb3 100644
--- a/rtgui/histogrampanel.cc
+++ b/rtgui/histogrampanel.cc
@@ -60,24 +60,25 @@ HistogramPanel::HistogramPanel ()
gfxGrid->add (*histogramRGBArea);
}
- redImage = new RTImage ("histRed.png");
- greenImage = new RTImage ("histGreen.png");
- blueImage = new RTImage ("histBlue.png");
- valueImage = new RTImage ("histValue.png");
- chroImage = new RTImage ("histChro.png");
- rawImage = new RTImage ("histRaw.png");
- modeImage = new RTImage ("histFull.png"); // needs replacement!
- barImage = new RTImage ("histBar.png");
+ redImage = new RTImage ("histogram-red-on-small.png");
+ greenImage = new RTImage ("histogram-green-on-small.png");
+ blueImage = new RTImage ("histogram-blue-on-small.png");
+ valueImage = new RTImage ("histogram-silver-on-small.png");
+ chroImage = new RTImage ("histogram-gold-on-small.png");
+ rawImage = new RTImage ("histogram-bayer-on-small.png");
+ modeImage0 = new RTImage ("histogram-mode-linear-small.png");
+ modeImage1 = new RTImage ("histogram-mode-logx-small.png");
+ modeImage2 = new RTImage ("histogram-mode-logxy-small.png");
+ barImage = new RTImage ("histogram-bar-on-small.png");
- redImage_g = new RTImage ("histRedg.png");
- greenImage_g = new RTImage ("histGreeng.png");
- blueImage_g = new RTImage ("histBlueg.png");
- valueImage_g = new RTImage ("histValueg.png");
- chroImage_g = new RTImage ("histChrog.png");
- rawImage_g = new RTImage ("histRawg.png");
- modeImage_g = new RTImage ("histFullg.png"); // needs replacement!
- modeImage_g2 = new RTImage ("histBarg.png"); // needs replacement!
- barImage_g = new RTImage ("histBarg.png");
+ redImage_g = new RTImage ("histogram-red-off-small.png");
+ greenImage_g = new RTImage ("histogram-green-off-small.png");
+ blueImage_g = new RTImage ("histogram-blue-off-small.png");
+ 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");
showRed = Gtk::manage (new Gtk::ToggleButton ());
showGreen = Gtk::manage (new Gtk::ToggleButton ());
@@ -141,11 +142,11 @@ HistogramPanel::HistogramPanel ()
showChro->set_image (showChro->get_active() ? *chroImage : *chroImage_g);
showRAW->set_image (showRAW->get_active() ? *rawImage : *rawImage_g);
if (options.histogramDrawMode == 0)
- showMode->set_image(*modeImage);
+ showMode->set_image(*modeImage0);
else if (options.histogramDrawMode == 1)
- showMode->set_image(*modeImage_g);
+ showMode->set_image(*modeImage1);
else
- showMode->set_image(*modeImage_g2);
+ showMode->set_image(*modeImage2);
showBAR->set_image (showBAR->get_active() ? *barImage : *barImage_g);
setExpandAlignProperties(showRed , false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
@@ -197,7 +198,9 @@ HistogramPanel::~HistogramPanel ()
delete valueImage;
delete chroImage;
delete rawImage;
- delete modeImage;
+ delete modeImage0;
+ delete modeImage1;
+ delete modeImage2;
delete barImage;
delete redImage_g;
@@ -206,8 +209,6 @@ HistogramPanel::~HistogramPanel ()
delete valueImage_g;
delete chroImage_g;
delete rawImage_g;
- delete modeImage_g;
- delete modeImage_g2;
delete barImage_g;
}
@@ -276,11 +277,11 @@ void HistogramPanel::mode_released ()
{
options.histogramDrawMode = (options.histogramDrawMode + 1) % 3;
if (options.histogramDrawMode == 0)
- showMode->set_image(*modeImage);
+ showMode->set_image(*modeImage0);
else if (options.histogramDrawMode == 1)
- showMode->set_image(*modeImage_g);
+ showMode->set_image(*modeImage1);
else
- showMode->set_image(*modeImage_g2);
+ showMode->set_image(*modeImage2);
rgbv_toggled();
}
@@ -345,11 +346,11 @@ void HistogramPanel::reorder (Gtk::PositionType align)
void HistogramPanel::toggle_button_mode ()
{
if (options.histogramDrawMode == 0)
- showMode->set_image(*modeImage);
+ showMode->set_image(*modeImage0);
else if (options.histogramDrawMode == 1)
- showMode->set_image(*modeImage_g);
+ showMode->set_image(*modeImage1);
else
- showMode->set_image(*modeImage_g2);
+ showMode->set_image(*modeImage2);
}
//
diff --git a/rtgui/histogrampanel.h b/rtgui/histogrampanel.h
index b38a20d3c..bb530337f 100644
--- a/rtgui/histogrampanel.h
+++ b/rtgui/histogrampanel.h
@@ -183,9 +183,9 @@ protected:
Gtk::Image *barImage_g;
Gtk::Image *chroImage_g;
- Gtk::Image *modeImage;
- Gtk::Image *modeImage_g;
- Gtk::Image *modeImage_g2;
+ Gtk::Image *modeImage0;
+ Gtk::Image *modeImage1;
+ Gtk::Image *modeImage2;
sigc::connection rconn;
void setHistInvalid ();
diff --git a/rtgui/history.cc b/rtgui/history.cc
index 6b07ee7b2..458a30c0b 100644
--- a/rtgui/history.cc
+++ b/rtgui/history.cc
@@ -88,7 +88,7 @@ History::History (bool bookmarkSupport) : historyVPaned(nullptr), blistener(null
//addBookmark->get_style_context()->set_junction_sides(Gtk::JUNCTION_RIGHT);
addBookmark->get_style_context()->add_class("Left");
addBookmark->set_tooltip_markup (M("HISTORY_NEWSNAPSHOT_TOOLTIP"));
- Gtk::Image* addimg = Gtk::manage (new RTImage ("gtk-add.png"));
+ Gtk::Image* addimg = Gtk::manage (new RTImage ("add-small.png"));
addBookmark->set_image (*addimg);
ahbox->pack_start (*addBookmark);
@@ -96,7 +96,7 @@ History::History (bool bookmarkSupport) : historyVPaned(nullptr), blistener(null
setExpandAlignProperties(delBookmark, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
//delBookmark->get_style_context()->set_junction_sides(Gtk::JUNCTION_LEFT);
delBookmark->get_style_context()->add_class("Right");
- Gtk::Image* delimg = Gtk::manage (new RTImage ("list-remove.png"));
+ Gtk::Image* delimg = Gtk::manage (new RTImage ("remove-small.png"));
delBookmark->set_image (*delimg);
ahbox->pack_start (*delBookmark);
diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc
new file mode 100644
index 000000000..a61f0e80d
--- /dev/null
+++ b/rtgui/iccprofilecreator.cc
@@ -0,0 +1,1033 @@
+/*
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2018 Jacques DESMIS
+ * Copyright (c) 2018 Jean-Christophe FRISCH
+ *
+ * RawTherapee is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RawTherapee is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with RawTherapee. If not, see .
+ */
+#include
+#include "iccprofilecreator.h"
+#include "multilangmgr.h"
+#include "cachemanager.h"
+#include "addsetids.h"
+#include "../rtengine/icons.h"
+#include "../rtengine/color.h"
+#include "rtimage.h"
+#ifdef _OPENMP
+#include
+#endif
+
+extern Options options;
+
+namespace rtengine
+{
+
+extern const Settings* settings;
+
+}
+
+const char* sTRCPreset[] = {"BT709_g2.2_s4.5", "sRGB_g2.4_s12.92", "linear_g1.0", "standard_g2.2", "standard_g1.8", "High_g1.3_s3.35", "Low_g2.6_s6.9", "Lab_g3.0s9.03296"}; //gamma free
+
+ICCProfileCreator::ICCProfileCreator(RTWindow *rtwindow)
+ : Gtk::Dialog (M ("MAIN_BUTTON_ICCPROFCREATOR"), *rtwindow, true)
+ , primariesPreset(options.ICCPC_primariesPreset)
+ , redPrimaryX(options.ICCPC_redPrimaryX)
+ , redPrimaryY(options.ICCPC_redPrimaryY)
+ , greenPrimaryX(options.ICCPC_greenPrimaryX)
+ , greenPrimaryY(options.ICCPC_greenPrimaryY)
+ , bluePrimaryX(options.ICCPC_bluePrimaryX)
+ , bluePrimaryY(options.ICCPC_bluePrimaryY)
+ , gammaPreset(options.ICCPC_gammaPreset)
+ , gamma(options.ICCPC_gamma)
+ , slope(options.ICCPC_slope)
+ , appendParamsToDesc(options.ICCPC_appendParamsToDesc)
+ , profileVersion(options.ICCPC_profileVersion)
+ , illuminant(options.ICCPC_illuminant)
+ , description(options.ICCPC_description)
+ , copyright(options.ICCPC_copyright)
+ , parent(rtwindow)
+{
+
+ set_default_size(600, -1);
+
+ Gtk::Grid* mainGrid = Gtk::manage(new Gtk::Grid());
+ mainGrid->set_column_spacing(3);
+ mainGrid->set_row_spacing(3);
+
+ //--------------------------------- primaries
+
+ Gtk::Label* prilab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_PRIMARIES")));
+ setExpandAlignProperties(prilab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
+ mainGrid->attach(*prilab, 0, 0, 1, 1);
+
+ primaries = Gtk::manage(new MyComboBoxText());
+ setExpandAlignProperties(primaries, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
+ primaries->append(M("ICCPROFCREATOR_CUSTOM"));
+ primaries->append(M("ICCPROFCREATOR_PRIM_ACESP0"));
+ primaries->append(M("ICCPROFCREATOR_PRIM_ACESP1"));
+ primaries->append(M("ICCPROFCREATOR_PRIM_ADOBE"));
+ primaries->append(M("ICCPROFCREATOR_PRIM_PROPH"));
+ primaries->append(M("ICCPROFCREATOR_PRIM_REC2020"));
+ primaries->append(M("ICCPROFCREATOR_PRIM_SRGB"));
+ primaries->append(M("ICCPROFCREATOR_PRIM_WIDEG"));
+ primaries->append(M("ICCPROFCREATOR_PRIM_BEST"));
+ primaries->append(M("ICCPROFCREATOR_PRIM_BETA"));
+ primaries->append(M("ICCPROFCREATOR_PRIM_BRUCE"));
+ primaries->set_tooltip_text(M("ICCPROFCREATOR_PRIM_TOOLTIP"));
+ mainGrid->attach(*primaries, 1, 0, 1, 1);
+
+ primariesGrid = Gtk::manage(new Gtk::Grid());
+ setExpandAlignProperties(primariesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
+ primariesGrid->set_column_spacing(5);
+
+ /*
+ Gtk::Image* gamuts0 = Gtk::manage(new RTImage("rt-logo-tiny.png"));
+ Gtk::Image* gamutl0 = Gtk::manage(new RTImage("rt-logo-small.png"));
+ Gtk::Image* gamuts1 = Gtk::manage(new RTImage("rt-logo-tiny.png"));
+ Gtk::Image* gamutl1 = Gtk::manage(new RTImage("rt-logo-small.png"));
+ Gtk::Image* gamuts2 = Gtk::manage(new RTImage("rt-logo-tiny.png"));
+ Gtk::Image* gamutl2 = Gtk::manage(new RTImage("rt-logo-small.png"));
+ Gtk::Image* gamuts3 = Gtk::manage(new RTImage("rt-logo-tiny.png"));
+ Gtk::Image* gamutl3 = Gtk::manage(new RTImage("rt-logo-small.png"));
+ Gtk::Image* gamuts4 = Gtk::manage(new RTImage("rt-logo-tiny.png"));
+ Gtk::Image* gamutl4 = Gtk::manage(new RTImage("rt-logo-small.png"));
+ Gtk::Image* gamuts5 = Gtk::manage(new RTImage("rt-logo-tiny.png"));
+ Gtk::Image* gamutl5 = Gtk::manage(new RTImage("rt-logo-small.png"));
+ */
+
+ aPrimariesRedX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDX"), 0.6300, 0.7350, 0.0001, 0.6400/*, gamuts0, gamutl0*/));
+ setExpandAlignProperties(aPrimariesRedX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
+ aPrimariesRedY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_REDY"), 0.2650, 0.3350, 0.0001, 0.3300/*, gamutl1, gamuts1*/));
+ setExpandAlignProperties(aPrimariesRedY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
+ aPrimariesGreenX = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREX"), 0.0000, 0.3100, 0.0001, 0.3000/*, gamutl2, gamuts2*/));
+ setExpandAlignProperties(aPrimariesGreenX, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
+ aPrimariesGreenY = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_PRIM_GREY"), 0.5900, 1.0000, 0.0001, 0.6000/*, gamuts3, gamutl3*/));
+ 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*/));
+ setExpandAlignProperties(aPrimariesBlueY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
+
+ primariesGrid->attach(*aPrimariesRedX, 0, 0, 1, 1);
+ primariesGrid->attach(*aPrimariesRedY, 1, 0, 1, 1);
+
+ primariesGrid->attach(*aPrimariesGreenX, 0, 1, 1, 1);
+ primariesGrid->attach(*aPrimariesGreenY, 1, 1, 1, 1);
+
+ primariesGrid->attach(*aPrimariesBlueX, 0, 2, 1, 1);
+ primariesGrid->attach(*aPrimariesBlueY, 1, 2, 1, 1);
+
+ mainGrid->attach(*primariesGrid, 1, 1, 1, 1);
+
+ //--------------------------------- output gamma
+
+ Gtk::Label* galab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_TRC_PRESET")));
+ setExpandAlignProperties(galab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
+ mainGrid->attach(*galab, 0, 2, 1, 1);
+
+ trcPresets = Gtk::manage(new MyComboBoxText());
+ setExpandAlignProperties(trcPresets, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
+ std::vector outputTRCPresets;
+ outputTRCPresets.push_back(M("ICCPROFCREATOR_CUSTOM"));
+ for (unsigned int i = 0; i < sizeof(sTRCPreset) / sizeof(sTRCPreset[0]); i++) {
+ outputTRCPresets.push_back(sTRCPreset[i]);
+ }
+ for (size_t i = 0; i < outputTRCPresets.size(); i++) {
+ trcPresets->append(outputTRCPresets[i]);
+ }
+ mainGrid->attach(*trcPresets, 1, 2, 1, 1);
+
+ //--------------------------------- sliders gampos and slpos
+
+ aGamma = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_GAMMA"), 1, 3.5, 0.01, 2.4));
+ setExpandAlignProperties(aGamma, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
+
+ if (aGamma->delay < options.adjusterMaxDelay) {
+ aGamma->delay = options.adjusterMaxDelay;
+ }
+ aGamma->show();
+ mainGrid->attach(*aGamma, 1, 3, 1, 1); //gamma
+
+ aSlope = Gtk::manage(new Adjuster(M("ICCPROFCREATOR_SLOPE"), 0, 15, 0.00001, 12.92310));
+ setExpandAlignProperties(aSlope, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
+
+ if (aSlope->delay < options.adjusterMaxDelay) {
+ aSlope->delay = options.adjusterMaxDelay;
+ }
+ aSlope->show();
+ mainGrid->attach(*aSlope, 1, 4, 1, 1); //slope
+
+ //--------------------------------- temperature
+
+ Gtk::Label* illlab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ILL")));
+ setExpandAlignProperties(illlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
+ mainGrid->attach(*illlab, 0, 5, 1, 1); //slope
+ cIlluminant = Gtk::manage(new MyComboBoxText());
+ setExpandAlignProperties(cIlluminant, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
+ cIlluminant->append(M("ICCPROFCREATOR_ILL_DEF"));
+ cIlluminant->append(M("ICCPROFCREATOR_ILL_41"));
+ cIlluminant->append(M("ICCPROFCREATOR_ILL_50"));
+ cIlluminant->append(M("ICCPROFCREATOR_ILL_55"));
+ cIlluminant->append(M("ICCPROFCREATOR_ILL_60"));
+ cIlluminant->append(M("ICCPROFCREATOR_ILL_65"));
+ cIlluminant->append(M("ICCPROFCREATOR_ILL_80"));
+ cIlluminant->append(M("ICCPROFCREATOR_ILL_INC"));
+ cIlluminant->set_tooltip_text(M("ICCPROFCREATOR_ILL_TOOLTIP"));
+ mainGrid->attach(*cIlluminant, 1, 5, 1, 1);
+
+ //--------------------------------- V2 or V4 profiles
+
+ Gtk::Label* proflab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_ICCVERSION")));
+ setExpandAlignProperties(proflab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
+ mainGrid->attach(*proflab, 0, 6, 1, 1);
+ iccVersion = Gtk::manage(new MyComboBoxText());
+ setExpandAlignProperties(iccVersion, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE);
+ iccVersion->append(M("ICCPROFCREATOR_PROF_V4"));
+ iccVersion->append(M("ICCPROFCREATOR_PROF_V2"));
+ mainGrid->attach(*iccVersion, 1, 6, 1, 1);
+
+ //--------------------------------- Description
+
+ Gtk::Label* desclab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_DESCRIPTION")));
+ setExpandAlignProperties(desclab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START);
+ mainGrid->attach(*desclab, 0, 7, 1, 2);
+ eDescription = Gtk::manage(new Gtk::Entry());
+ setExpandAlignProperties(eDescription, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
+ eDescription->set_tooltip_text(M("ICCPROFCREATOR_DESCRIPTION_TOOLTIP"));
+ mainGrid->attach(*eDescription, 1, 7, 1, 1);
+ cAppendParamsToDesc = Gtk::manage(new Gtk::CheckButton(M("ICCPROFCREATOR_DESCRIPTION_ADDPARAM")));
+ setExpandAlignProperties(cAppendParamsToDesc, true, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
+ mainGrid->attach(*cAppendParamsToDesc, 1, 8, 1, 1);
+
+ //--------------------------------- Copyright
+
+ Gtk::Label* copylab = Gtk::manage(new Gtk::Label(M("ICCPROFCREATOR_COPYRIGHT")));
+ setExpandAlignProperties(copylab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE);
+ mainGrid->attach(*copylab, 0, 9, 1, 1);
+ Gtk::Grid* copygrid = Gtk::manage(new Gtk::Grid());
+ setExpandAlignProperties(copygrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
+ eCopyright = Gtk::manage(new Gtk::Entry());
+ setExpandAlignProperties(eCopyright, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
+ copygrid->attach(*eCopyright, 0, 0, 1, 1);
+ resetCopyright = Gtk::manage(new Gtk::Button());
+ resetCopyright->add (*Gtk::manage (new RTImage ("undo-small.png", "redo-small.png")));
+ setExpandAlignProperties(resetCopyright, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
+ resetCopyright->set_relief (Gtk::RELIEF_NONE);
+ resetCopyright->set_tooltip_markup (M("ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP"));
+ resetCopyright->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT);
+ resetCopyright->set_can_focus(false);
+ copygrid->attach(*resetCopyright, 1, 0, 1, 1);
+ mainGrid->attach(*copygrid, 1, 9, 1, 1);
+
+ //--------------------------------- Adding the mainGrid
+
+ get_content_area()->add(*mainGrid);
+
+ //--------------------------------- Setting default values for Adjusters
+
+ aGamma->setDefault(gamma);
+ aSlope->setDefault(slope);
+ aPrimariesRedX->setDefault(redPrimaryX);
+ aPrimariesRedY->setDefault(redPrimaryY);
+ aPrimariesGreenX->setDefault(greenPrimaryX);
+ aPrimariesGreenY->setDefault(greenPrimaryY);
+ aPrimariesBlueX->setDefault(bluePrimaryX);
+ aPrimariesBlueY->setDefault(bluePrimaryY);
+
+ //--------------- Updating widgets with actual values (from options)
+
+ if (primariesPreset == "custom") {
+ primaries->set_active_text(M("ICCPROFCREATOR_CUSTOM"));
+ } else if (primariesPreset == "ACES-AP0") {
+ primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP0"));
+ } else if (primariesPreset == "ACES-AP1") {
+ primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ACESP1"));
+ } else if (primariesPreset == "Adobe") {
+ primaries->set_active_text(M("ICCPROFCREATOR_PRIM_ADOBE"));
+ } else if (primariesPreset == "ProPhoto") {
+ primaries->set_active_text(M("ICCPROFCREATOR_PRIM_PROPH"));
+ } else if (primariesPreset == "Rec2020") {
+ primaries->set_active_text(M("ICCPROFCREATOR_PRIM_REC2020"));
+ } else if (primariesPreset == "sRGB") {
+ primaries->set_active_text(M("ICCPROFCREATOR_PRIM_SRGB"));
+ } else if (primariesPreset == "Widegamut") {
+ primaries->set_active_text(M("ICCPROFCREATOR_PRIM_WIDEG"));
+ } else if (primariesPreset == "BestRGB") {
+ primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BEST"));
+ } else if (primariesPreset == "BetaRGB") {
+ primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BETA"));
+ } else if (primariesPreset == "BruceRGB") {
+ primaries->set_active_text(M("ICCPROFCREATOR_PRIM_BRUCE"));
+ }
+
+ trcPresets->set_active(0);
+ if (gammaPreset != "Custom") {
+ trcPresets->set_active_text(gammaPreset);
+ }
+
+ aGamma->setValue(gamma);
+ aSlope->setValue(slope);
+ aPrimariesRedX->setValue(redPrimaryX);
+ aPrimariesRedY->setValue(redPrimaryY);
+ aPrimariesGreenX->setValue(greenPrimaryX);
+ aPrimariesGreenY->setValue(greenPrimaryY);
+ aPrimariesBlueX->setValue(bluePrimaryX);
+ aPrimariesBlueY->setValue(bluePrimaryY);
+
+ eDescription->set_text(description);
+ eCopyright->set_text(copyright);
+ cAppendParamsToDesc->set_active(appendParamsToDesc);
+
+ if (illuminant == "DEF") {
+ cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_DEF"));
+ } else if (illuminant == "D41") {
+ cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_41"));
+ } else if (illuminant == "D50") {
+ cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_50"));
+ } else if (illuminant == "D55") {
+ cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_55"));
+ } else if (illuminant == "D60") {
+ cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_60"));
+ } else if (illuminant == "D65") {
+ cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_65"));
+ } else if (illuminant == "D80") {
+ cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_80"));
+ } else if (illuminant == "stdA") {
+ cIlluminant->set_active_text(M("ICCPROFCREATOR_ILL_INC"));
+ }
+
+ iccVersion->set_active(0);
+ if (profileVersion == "v2") {
+ iccVersion->set_active(1);
+ }
+
+ trcPresetsChanged();
+ illuminantChanged();
+ primariesChanged();
+
+ //--------------- Action area button
+
+ Gtk::Button* save = Gtk::manage (new Gtk::Button (M ("GENERAL_SAVE_AS")));
+ save->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::savePressed) );
+ get_action_area()->pack_start (*save);
+
+ Gtk::Button* close = Gtk::manage (new Gtk::Button (M ("GENERAL_CLOSE")));
+ close->signal_clicked().connect ( sigc::mem_fun (*this, &ICCProfileCreator::closePressed) );
+ get_action_area()->pack_start (*close);
+
+ //--------------- Show childrens
+
+ show_all_children ();
+
+ //--------------- Connecting the signals
+
+ aPrimariesRedX->setAdjusterListener(this);
+ aPrimariesRedY->setAdjusterListener(this);
+ aPrimariesGreenX->setAdjusterListener(this);
+ aPrimariesGreenY->setAdjusterListener(this);
+ aPrimariesBlueX->setAdjusterListener(this);
+ aPrimariesBlueY->setAdjusterListener(this);
+ aGamma->setAdjusterListener(this);
+ aSlope->setAdjusterListener(this);
+ primariesconn = primaries->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::primariesChanged));
+ trcpresetsconn = trcPresets->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::trcPresetsChanged));
+ illconn = cIlluminant->signal_changed().connect(sigc::mem_fun(*this, &ICCProfileCreator::illuminantChanged));
+ resetCopyright->signal_clicked().connect(sigc::mem_fun(*this, &ICCProfileCreator::onResetCopyright));
+}
+
+void ICCProfileCreator::closePressed()
+{
+ storeValues();
+ hide();
+}
+
+void ICCProfileCreator::updateICCVersion()
+{
+ if (cIlluminant->get_active_text() != M("ICCPROFCREATOR_ILL_DEF") || primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) {
+ iccVersion->set_active_text(M("ICCPROFCREATOR_PROF_V4"));
+ iccVersion->set_sensitive(false);
+ } else {
+ iccVersion->set_sensitive(true);
+ }
+}
+
+void ICCProfileCreator::adjusterChanged (Adjuster* a, double newval)
+{
+ if (a == aPrimariesRedX || a == aPrimariesRedY ||
+ a == aPrimariesGreenX || a == aPrimariesGreenY ||
+ a == aPrimariesBlueX || a == aPrimariesBlueY)
+ {
+ if (primaries->get_active_row_number() > 0) {
+ ConnectionBlocker blocker(primariesconn);
+ primaries->set_active(0);
+ updateICCVersion();
+ }
+ } else if (a == aGamma || a == aSlope) {
+ if (trcPresets->get_active_row_number() > 0) {
+ ConnectionBlocker blocker(trcpresetsconn);
+ trcPresets->set_active(0);
+ }
+ }
+}
+
+void ICCProfileCreator::primariesChanged()
+{
+ if (primaries->get_active_row_number() > 0) {
+ float p[6];
+ ColorTemp temp;
+ Glib::ustring activeValue = primaries->get_active_text();
+ Glib::ustring primPresetName = getPrimariesPresetName(activeValue);
+ getPrimaries(primPresetName, p, temp);
+ aPrimariesRedX->setValue(p[0]);
+ aPrimariesRedY->setValue(p[1]);
+ aPrimariesGreenX->setValue(p[2]);
+ aPrimariesGreenY->setValue(p[3]);
+ aPrimariesBlueX->setValue(p[4]);
+ aPrimariesBlueY->setValue(p[5]);
+ }
+ updateICCVersion();
+}
+
+void ICCProfileCreator::illuminantChanged()
+{
+ updateICCVersion();
+}
+
+void ICCProfileCreator::trcPresetsChanged()
+{
+ aGamma->block(true);
+ aSlope->block(true);
+
+ double gamma;
+ double slope;
+ getGamma(getGammaPresetName(trcPresets->get_active_text()), gamma, slope);
+ aGamma->setValue(gamma);
+ aSlope->setValue(slope);
+
+ aGamma->block(false);
+ aSlope->block(false);
+}
+
+void ICCProfileCreator::storeValues()
+{
+ if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V4")) {
+ options.ICCPC_profileVersion = profileVersion = "v4";
+ } else if (iccVersion->get_active_text() == M("ICCPROFCREATOR_PROF_V2")) {
+ options.ICCPC_profileVersion = profileVersion = "v2";
+ }
+
+ if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_DEF")) {
+ options.ICCPC_illuminant = illuminant = "DEF";
+ } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_41")) {
+ options.ICCPC_illuminant = illuminant = "D41";
+ } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_50")) {
+ options.ICCPC_illuminant = illuminant = "D50";
+ } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_55")) {
+ options.ICCPC_illuminant = illuminant = "D55";
+ } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_60")) {
+ options.ICCPC_illuminant = illuminant = "D60";
+ } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_65")) {
+ options.ICCPC_illuminant = illuminant = "D65";
+ } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_80")) {
+ options.ICCPC_illuminant = illuminant = "D80";
+ } else if (cIlluminant->get_active_text() == M("ICCPROFCREATOR_ILL_INC")) {
+ options.ICCPC_illuminant = illuminant = "stdA";
+ }
+
+ options.ICCPC_primariesPreset = primariesPreset = getPrimariesPresetName(primaries->get_active_text());
+ options.ICCPC_gammaPreset = gammaPreset = getGammaPresetName(trcPresets->get_active_text());
+ options.ICCPC_gamma = gamma = aGamma->getValue();
+ options.ICCPC_slope = slope = aSlope->getValue();
+ options.ICCPC_redPrimaryX = redPrimaryX = aPrimariesRedX->getValue();
+ options.ICCPC_redPrimaryY = redPrimaryY = aPrimariesRedY->getValue();
+ options.ICCPC_greenPrimaryX = greenPrimaryX = aPrimariesGreenX->getValue();
+ options.ICCPC_greenPrimaryY = greenPrimaryY = aPrimariesGreenY->getValue();
+ options.ICCPC_bluePrimaryX = bluePrimaryX = aPrimariesBlueX->getValue();
+ options.ICCPC_bluePrimaryY = bluePrimaryY = aPrimariesBlueY->getValue();
+ options.ICCPC_description = description = eDescription->get_text();
+ options.ICCPC_copyright = copyright = eCopyright->get_text();
+ options.ICCPC_appendParamsToDesc = appendParamsToDesc = cAppendParamsToDesc->get_active();
+}
+
+Glib::ustring ICCProfileCreator::getPrimariesPresetName(const Glib::ustring &preset)
+{
+ if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP0")) {
+ return Glib::ustring("ACES-AP0");
+ } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ACESP1")) {
+ return Glib::ustring("ACES-AP1");
+ } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_ADOBE")) {
+ return Glib::ustring("Adobe");
+ } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_PROPH")) {
+ return Glib::ustring("ProPhoto");
+ } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_REC2020")) {
+ return Glib::ustring("Rec2020");
+ } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_SRGB")) {
+ return Glib::ustring("sRGB");
+ } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_WIDEG")) {
+ return Glib::ustring("Widegamut");
+ } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BEST")) {
+ return Glib::ustring("BestRGB");
+ } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BETA")) {
+ return Glib::ustring("BetaRGB");
+ } else if (primaries->get_active_text() == M("ICCPROFCREATOR_PRIM_BRUCE")) {
+ return Glib::ustring("BruceRGB");
+ } else if (primaries->get_active_text() == M("ICCPROFCREATOR_CUSTOM")) {
+ return Glib::ustring("custom");
+ } else {
+ return Glib::ustring();
+ }
+}
+
+void ICCProfileCreator::getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp)
+{
+ temp = ColorTemp::D50;
+ if (preset == "Widegamut") {
+ p[0] = 0.7350; //Widegamut primaries
+ p[1] = 0.2650;
+ p[2] = 0.1150;
+ p[3] = 0.8260;
+ p[4] = 0.1570;
+ p[5] = 0.0180;
+
+ } else if (preset == "Adobe") {
+ p[0] = 0.6400; //Adobe primaries
+ p[1] = 0.3300;
+ p[2] = 0.2100;
+ p[3] = 0.7100;
+ p[4] = 0.1500;
+ p[5] = 0.0600;
+ temp = ColorTemp::D65;
+ } else if (preset == "sRGB") {
+ p[0] = 0.6400; // sRGB primaries
+ p[1] = 0.3300;
+ p[2] = 0.3000;
+ p[3] = 0.6000;
+ p[4] = 0.1500;
+ p[5] = 0.0600;
+ temp = ColorTemp::D65;
+ } else if (preset == "BruceRGB") {
+ p[0] = 0.6400; // Bruce primaries
+ p[1] = 0.3300;
+ p[2] = 0.2800;
+ p[3] = 0.6500;
+ p[4] = 0.1500;
+ p[5] = 0.0600;
+ temp = ColorTemp::D65;
+ } else if (preset == "BetaRGB") {
+ p[0] = 0.6888; // Beta primaries
+ p[1] = 0.3112;
+ p[2] = 0.1986;
+ p[3] = 0.7551;
+ p[4] = 0.1265;
+ p[5] = 0.0352;
+ } else if (preset == "BestRGB") {
+ p[0] = 0.7347; // Best primaries
+ p[1] = 0.2653;
+ p[2] = 0.2150;
+ p[3] = 0.7750;
+ p[4] = 0.1300;
+ p[5] = 0.0350;
+ } else if (preset == "Rec2020") {
+ p[0] = 0.7080; // Rec2020 primaries
+ p[1] = 0.2920;
+ p[2] = 0.1700;
+ p[3] = 0.7970;
+ p[4] = 0.1310;
+ p[5] = 0.0460;
+ temp = ColorTemp::D65;
+ } else if (preset == "ACES-AP0") {
+ p[0] = 0.7347; // ACES P0 primaries
+ p[1] = 0.2653;
+ p[2] = 0.0000;
+ p[3] = 1.0;
+ p[4] = 0.0001;
+ p[5] = -0.0770;
+ temp = ColorTemp::D60;
+ } else if (preset == "ACES-AP1") {
+ p[0] = 0.713; // ACES P1 primaries
+ p[1] = 0.293;
+ p[2] = 0.165;
+ p[3] = 0.830;
+ p[4] = 0.128;
+ p[5] = 0.044;
+ temp = ColorTemp::D60;
+ } else if (preset == "ProPhoto") {
+ p[0] = 0.7347; // ProPhoto and default primaries
+ p[1] = 0.2653;
+ p[2] = 0.1596;
+ p[3] = 0.8404;
+ p[4] = 0.0366;
+ p[5] = 0.0001;
+ } else if (preset == "custom") {
+ p[0] = redPrimaryX;
+ p[1] = redPrimaryY;
+ p[2] = greenPrimaryX;
+ p[3] = greenPrimaryY;
+ p[4] = bluePrimaryX;
+ p[5] = bluePrimaryY;
+
+ } else {
+ p[0] = 0.7347; //default primaries
+ p[1] = 0.2653;
+ p[2] = 0.1596;
+ p[3] = 0.8404;
+ p[4] = 0.0366;
+ p[5] = 0.0001;
+ }
+}
+
+Glib::ustring ICCProfileCreator::getGammaPresetName(const Glib::ustring &preset)
+{
+ Glib::ustring name(trcPresets->get_active_text());
+ if (name == M("ICCPROFCREATOR_CUSTOM")) {
+ name = "Custom";
+ }
+ return name;
+}
+
+void ICCProfileCreator::getGamma(const Glib::ustring &preset, double &presetGamma, double &presetSlope)
+{
+ if (preset == "High_g1.3_s3.35") {
+ presetGamma = 1.3;
+ presetSlope = 3.35;
+ } else if (preset == "Low_g2.6_s6.9") {
+ presetGamma = 2.6;
+ presetSlope = 6.9;
+ } else if (preset == "sRGB_g2.4_s12.92") {
+ presetGamma = 2.4;
+ presetSlope = 12.92310;
+ } else if (preset == "BT709_g2.2_s4.5") {
+ presetGamma = 2.22;
+ presetSlope = 4.5;
+ } else if (preset == "linear_g1.0") {
+ presetGamma = 1.;
+ presetSlope = 0.;
+ } else if (preset == "standard_g2.2") {
+ presetGamma = 2.2;
+ presetSlope = 0.;
+ } else if (preset == "standard_g1.8") {
+ presetGamma = 1.8;
+ presetSlope = 0.;
+ } else if (preset == "Lab_g3.0s9.03296") {
+ presetGamma = 3.0;
+ presetSlope = 9.03296;
+ } else if (preset == "Custom") {
+ presetGamma = gamma;
+ presetSlope = slope;
+ } else {
+ presetGamma = 2.4;
+ presetSlope = 12.92310;
+ }
+}
+
+void ICCProfileCreator::onResetCopyright()
+{
+ eCopyright->set_text(Options::getICCProfileCopyright());
+}
+
+// Copyright (c) 2018 Jacques DESMIS
+// WARNING: the caller must lock lcmsMutex
+void ICCProfileCreator::savePressed()
+{
+ cmsHPROFILE newProfile = nullptr;
+ Glib::ustring sNewProfile;
+ Glib::ustring sPrimariesPreset;
+ Glib::ustring sGammaPreset;
+
+ storeValues();
+
+ // -------------------------------------------- Compute the default file name
+
+ //necessary for V2 profile
+ if (primariesPreset == "ACES-AP0" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp0)) {
+ sNewProfile = options.rtSettings.ACESp0;
+ sPrimariesPreset = "ACES-AP0";
+ } else if (primariesPreset == "ACES-AP1" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.ACESp1)) {
+ sNewProfile = options.rtSettings.ACESp1;
+ sPrimariesPreset = "ACES-AP1";
+ } else if (primariesPreset == "Adobe" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.adobe)) {
+ sNewProfile = options.rtSettings.adobe;
+ sPrimariesPreset = "Medium";
+ } else if (primariesPreset == "ProPhoto" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.prophoto)) {
+ sNewProfile = options.rtSettings.prophoto;
+ sPrimariesPreset = "Large";
+ } else if (primariesPreset == "Rec2020" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.rec2020)) {
+ sNewProfile = options.rtSettings.rec2020;
+ sPrimariesPreset = "Rec2020";
+ } else if (primariesPreset == "sRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.srgb)) {
+ sNewProfile = options.rtSettings.srgb;
+ sPrimariesPreset = "sRGB";
+ } else if (primariesPreset == "Widegamut" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.widegamut)) {
+ sNewProfile = options.rtSettings.widegamut;
+ sPrimariesPreset = "Wide";
+ } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) {
+ sNewProfile = options.rtSettings.best;
+ sPrimariesPreset = "Best";
+ } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) {
+ sNewProfile = options.rtSettings.beta;
+ sPrimariesPreset = "Beta";
+ } else if (primariesPreset == "BruceRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.bruce)) {
+ sNewProfile = options.rtSettings.bruce;
+ sPrimariesPreset = "Bruce";
+ } else if (primariesPreset == "custom") {
+ sNewProfile = options.rtSettings.srgb;
+ sPrimariesPreset = "Custom";
+ } else {
+ // Should not occurs
+ if (rtengine::settings->verbose) {
+ printf("\"%s\": unknown working profile! - use LCMS2 substitution\n", primariesPreset.c_str());
+ }
+ return;
+ }
+
+ //begin adaptation rTRC gTRC bTRC
+ //"newProfile" profile has the same characteristics than RGB values, but TRC are adapted... for applying profile
+ if (rtengine::settings->verbose) {
+ printf("Output Gamma - profile Primaries as RT profile: \"%s\"\n", sNewProfile.c_str());
+ }
+
+ newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile
+
+ if (newProfile == nullptr) {
+
+ if (rtengine::settings->verbose) {
+ printf("\"%s\" ICC output profile not found!\n", sNewProfile.c_str());
+ }
+ return;
+ }
+
+ //change desc Tag , to "free gamma", or "BT709", etc.
+ Glib::ustring fName;
+ Glib::ustring sPrimariesAndIlluminant;
+ double presetGamma = 2.4;
+ double presetSlope = 12.92310;
+ const double eps = 0.000000001; // not divide by zero
+ getGamma(gammaPreset, presetGamma, presetSlope);
+ if (gammaPreset == "High_g1.3_s3.35") {
+ sGammaPreset = "High_g=1.3_s=3.35";
+ ga[0] = 1.3 ; //for high dynamic images
+ ga[1] = 0.998279;
+ ga[2] = 0.001721;
+ ga[3] = 0.298507;
+ ga[4] = 0.005746;
+ } else if (gammaPreset == "Low_g2.6_s6.9") {
+ sGammaPreset = "Low_g=2.6_s=6.9";
+ ga[0] = 2.6 ; //gamma 2.6 variable : for low contrast images
+ ga[1] = 0.891161;
+ ga[2] = 0.108839;
+ ga[3] = 0.144928;
+ ga[4] = 0.076332;
+ } else if (gammaPreset == "sRGB_g2.4_s12.92") {
+ sGammaPreset = "sRGB_g=2.4_s=12.92310";
+ ga[0] = 2.40; //sRGB 2.4 12.92 - RT default as Lightroom
+ ga[1] = 0.947858;
+ ga[2] = 0.052142;
+ ga[3] = 0.077399;
+ ga[4] = 0.039293;
+ } else if (gammaPreset == "BT709_g2.2_s4.5") {
+ sGammaPreset = "BT709_g=2.2_s=4.5";
+ ga[0] = 2.22; //BT709 2.2 4.5 - my preferred as D.Coffin
+ ga[1] = 0.909995;
+ ga[2] = 0.090005;
+ ga[3] = 0.222222;
+ ga[4] = 0.081071;
+ } else if (gammaPreset == "linear_g1.0") {
+ sGammaPreset = "Linear_g=1.0";
+ ga[0] = 1.0; //gamma=1 linear : for high dynamic images (cf D.Coffin...)
+ ga[1] = 1.;
+ ga[2] = 0.;
+ ga[3] = 1. / eps;
+ ga[4] = 0.;
+ } else if (gammaPreset == "standard_g2.2") {
+ sGammaPreset = "g=2.2";
+ ga[0] = 2.2; //gamma=2.2(as gamma of Adobe, Widegamut...)
+ ga[1] = 1.;
+ ga[2] = 0.;
+ ga[3] = 1. / eps;
+ ga[4] = 0.;
+ } else if (gammaPreset == "standard_g1.8") {
+ sGammaPreset = "g=1.8";
+ ga[0] = 1.8; //gamma=1.8(as gamma of Prophoto)
+ ga[1] = 1.;
+ ga[2] = 0.;
+ ga[3] = 1. / eps;
+ ga[4] = 0.;
+ } else if (gammaPreset == "Lab_g3.0s9.03296") {
+ sGammaPreset = "LAB_g3.0_s9.03296";
+ ga[0] = 3.0; //Lab gamma =3 slope=9.03296
+ ga[1] = 0.8621;
+ ga[2] = 0.1379;
+ ga[3] = 0.1107;
+ ga[4] = 0.08;
+ } else if (gammaPreset == "Custom") {
+ rtengine::GammaValues g_a; //gamma parameters
+ double pwr = 1.0 / gamma;
+ double ts = slope;
+ double slope2 = slope == 0 ? eps : slope;
+
+ int mode = 0;
+ rtengine::Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope : return parameters for LCMS2
+ ga[4] = g_a[3] * ts;
+ //printf("g_a.gamma0=%f g_a.gamma1=%f g_a.gamma2=%f g_a.gamma3=%f g_a.gamma4=%f\n", g_a.gamma0,g_a.gamma1,g_a.gamma2,g_a.gamma3,g_a.gamma4);
+ ga[0] = gamma;
+ ga[1] = 1. /(1.0 + g_a[4]);
+ ga[2] = g_a[4] /(1.0 + g_a[4]);
+ ga[3] = 1. / slope2;
+ //printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", ga[0],ga[1],ga[2],ga[3],ga[4]);
+
+ sGammaPreset = Glib::ustring::compose("g%1_s%2",
+ Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma),
+ Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope));
+ presetGamma = gamma;
+ presetSlope = slope;
+ }
+ ga[5] = 0.0;
+ ga[6] = 0.0;
+
+
+ sPrimariesAndIlluminant = sPrimariesPreset;
+
+ if (profileVersion == "v4" && illuminant != "DEF") {
+ sPrimariesPreset += "-" + illuminant;
+ // printf("outpr=%s \n",outPr.c_str());
+ }
+
+ Glib::ustring profileDesc;
+ Glib::ustring sGammaSlopeParam;//to save gamma and slope in a dmdd
+ Glib::ustring sGammaSlopeDesc; //to save gamma and slope in a desc
+ Glib::ustring sGamma;
+ Glib::ustring sSlope;
+
+ if (gammaPreset == "Custom") {
+ sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), gamma);
+ sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), slope);
+ fName = Glib::ustring::compose("RT%1_%2_g%3_s%4.icc", profileVersion, sPrimariesAndIlluminant, sGamma, sSlope);
+ profileDesc = sPrimariesPreset;
+ } else {
+ sGamma = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), presetGamma);
+ sSlope = Glib::ustring::format (std::setw(6), std::fixed, std::setprecision(5), presetSlope);
+ fName = Glib::ustring::compose("RT%1_%2_%3.icc", profileVersion, sPrimariesAndIlluminant, sGammaPreset);
+ profileDesc == sPrimariesPreset + sGammaPreset;
+ }
+ sGammaSlopeParam = Glib::ustring::compose("g%1s%2!", sGamma, sSlope);
+ sGammaSlopeDesc = Glib::ustring::compose("g=%1 s=%2", sGamma, sSlope);
+
+ // -------------------------------------------- Asking the file name
+
+ Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("ICCPROFCREATOR_SAVEDIALOG_TITLE"), Gtk::FILE_CHOOSER_ACTION_SAVE);
+ bindCurrentFolder(dialog, options.lastICCProfCreatorDir);
+ dialog.set_current_name(fName);
+ //dialog.set_current_folder(lastPath);
+
+ dialog.add_button(M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL);
+ dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK);
+
+ Glib::RefPtr filter_icc = Gtk::FileFilter::create();
+ filter_icc->set_name(M("FILECHOOSER_FILTER_COLPROF"));
+ filter_icc->add_pattern("*.icc");
+ dialog.add_filter(filter_icc);
+
+ /*
+ Glib::RefPtr filter_any = Gtk::FileFilter::create();
+ filter_any->set_name(M("FILECHOOSER_FILTER_ANY"));
+ filter_any->add_pattern("*");
+ dialog.add_filter(filter_any);
+ */
+
+ dialog.show_all_children();
+ //dialog.set_do_overwrite_confirmation (true);
+
+ Glib::ustring absoluteFName;
+
+ do {
+ int result = dialog.run();
+
+ if (result != Gtk::RESPONSE_OK) {
+ return;
+ } else {
+ absoluteFName = dialog.get_filename();
+ Glib::ustring ext = getExtension(absoluteFName);
+
+ if (ext != "icc") {
+ absoluteFName += ".icc";
+ }
+
+ if (confirmOverwrite(dialog, absoluteFName)) {
+ //lastPath = Glib::path_get_dirname(absoluteFName);
+ break;
+ }
+ }
+ } while (1);
+
+ // --------------- main tags ------------------
+
+ if (profileVersion == "v4") {
+ cmsSetProfileVersion(newProfile, 4.3);
+ } else {
+ cmsSetProfileVersion(newProfile, 2.0);
+ }
+
+//change
+ float p[6]; //primaries
+ ga[6] = 0.0;
+
+ ColorTemp temp;
+ getPrimaries(primariesPreset, p, temp);
+
+ cmsCIExyY xyD;
+ cmsCIExyYTRIPLE Primaries = {
+ {p[0], p[1], 1.0}, // red
+ {p[2], p[3], 1.0}, // green
+ {p[4], p[5], 1.0} // blue
+ };
+
+ if (profileVersion == "v4" && illuminant != "DEF") {
+ double tempv4 = 5000.;
+ if (illuminant == "D41") {
+ tempv4 = 4100.;
+ } else if (illuminant == "D50") {
+ tempv4 = 5003.;
+ } else if (illuminant == "D55") {
+ tempv4 = 5500.;
+ } else if (illuminant == "D60") {
+ tempv4 = 6004.;
+ } else if (illuminant == "D65") {
+ tempv4 = 6504.;
+ } else if (illuminant == "D80") {
+ tempv4 = 8000.;
+ } else if (illuminant == "stdA") {
+ tempv4 = 5003.;
+ }
+ cmsWhitePointFromTemp(&xyD, tempv4);
+ } else {
+ cmsWhitePointFromTemp(&xyD, (double)temp);
+ }
+
+ if (illuminant == "stdA") {
+ xyD = {0.447573, 0.407440, 1.0};
+ }
+
+ // Calculate output profile's rTRC gTRC bTRC
+ cmsToneCurve* GammaTRC[3];
+ GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga);
+
+ if (profileVersion == "v4") {
+ newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC);
+ }
+
+ cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]);
+ cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]);
+ cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]);
+
+ // --------------- set dmnd tag ------------------
+
+ cmsMLU *dmnd;
+ dmnd = cmsMLUalloc(nullptr, 1);
+ cmsMLUsetASCII(dmnd, "en", "US", "RawTherapee");
+ cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd);
+ cmsMLUfree(dmnd);
+
+ // --------------- set dmdd tag ------------------
+
+ if (profileVersion == "v2") {
+ //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile
+ std::wostringstream wGammaSlopeParam;
+ wGammaSlopeParam << sGammaSlopeParam;
+
+ cmsMLU *dmdd = cmsMLUalloc(nullptr, 1);
+ // Language code (2 letters code) : https://www.iso.org/obp/ui/
+ // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php
+ if (sGammaSlopeParam.is_ascii()) {
+ if (cmsMLUsetASCII(dmdd, "en", "US", sGammaSlopeParam.c_str())) {
+ if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) {
+ printf("Error: Can't write cmsSigProfileDescriptionTag!\n");
+ }
+ }
+ } else if (cmsMLUsetWide(dmdd, "en", "US", wGammaSlopeParam.str().c_str())) {
+ if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) {
+ printf("Error: Can't write cmsSigDeviceModelDescTag!\n");
+ }
+ } else {
+ printf("Error: cmsMLUsetWide failed for dmdd \"%s\" !\n", sGammaSlopeParam.c_str());
+ }
+ cmsMLUfree(dmdd);
+ }
+
+ // --------------- set desc tag ------------------
+
+ Glib::ustring sDescription;
+ if (!description.empty()) {
+ if (cAppendParamsToDesc->get_active()) {
+ sDescription = description + " / " + sGammaSlopeDesc;
+ } else {
+ sDescription = description;
+ }
+ } else {
+ if (cAppendParamsToDesc->get_active()) {
+ sDescription = profileDesc + " / " + sGammaSlopeDesc;
+ } else {
+ sDescription = profileDesc;
+ }
+ }
+
+ //write in tag 'dmdd' values of current gamma and slope to retrieve after in Output profile
+ std::wostringstream wDescription;
+ wDescription << sDescription;
+
+ cmsMLU *descMLU = cmsMLUalloc(nullptr, 1);
+ // Language code (2 letters code) : https://www.iso.org/obp/ui/
+ // Country code (2 letters code) : http://www.loc.gov/standards/iso639-2/php/code_list.php
+ if (sDescription.is_ascii()) {
+ if (cmsMLUsetASCII(descMLU, "en", "US", sDescription.c_str())) {
+ if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) {
+ printf("Error: Can't write cmsSigProfileDescriptionTag!\n");
+ }
+ }
+ } else if (cmsMLUsetWide(descMLU, "en", "US", wDescription.str().c_str())) {
+ if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) {
+ printf("Error: Can't write cmsSigProfileDescriptionTag!\n");
+ }
+ } else {
+ printf("Error: cmsMLUsetWide failed for desc \"%s\" !\n", sDescription.c_str());
+ }
+ cmsMLUfree(descMLU);
+
+ // --------------- set cprt tag ------------------
+
+ std::wostringstream wCopyright;
+ wCopyright << copyright;
+
+ cmsMLU *copyMLU = cmsMLUalloc(nullptr, 1);
+ if (cmsMLUsetWide(copyMLU, "en", "US", wCopyright.str().c_str())) {
+ if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) {
+ printf("Error: Can't write cmsSigCopyrightTag!\n");
+ }
+ } else {
+ printf("Error: cmsMLUsetWide failed for cprt \"%s\" !\n", copyright.c_str());
+ }
+ cmsMLUfree(copyMLU);
+
+
+ /* //to read XYZ values
+ cmsCIEXYZ *redT = static_cast(cmsReadTag(newProfile, cmsSigRedMatrixColumnTag));
+ cmsCIEXYZ *greenT = static_cast(cmsReadTag(newProfile, cmsSigGreenMatrixColumnTag));
+ cmsCIEXYZ *blueT = static_cast(cmsReadTag(newProfile, cmsSigBlueMatrixColumnTag));
+ printf("rx=%f gx=%f bx=%f ry=%f gy=%f by=%f rz=%f gz=%f bz=%f\n", redT->X, greenT->X, blueT->X, redT->Y, greenT->Y, blueT->Y, redT->Z, greenT->Z, blueT->Z);
+ */
+
+ cmsSaveProfileToFile(newProfile, absoluteFName.c_str());
+
+ cmsFreeToneCurve(GammaTRC[0]);
+}
diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h
new file mode 100644
index 000000000..c3f2e48a1
--- /dev/null
+++ b/rtgui/iccprofilecreator.h
@@ -0,0 +1,106 @@
+/*
+ * This file is part of RawTherapee.
+ *
+ * Copyright (c) 2018 Jacques DESMIS
+ * Copyright (c) 2018 Jean-Christophe FRISCH
+ *
+ * RawTherapee is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * RawTherapee is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with RawTherapee. If not, see .
+ */
+#pragma once
+
+#include
+#include "adjuster.h"
+#include "options.h"
+#include
+#include "rtwindow.h"
+
+class ICCProfileCreator : public Gtk::Dialog, public AdjusterListener
+{
+
+private:
+
+ enum class ColorTemp {
+ D50 = 5003, // for Widegamut, Prophoto Best, Beta -> D50
+ D60 = 6005, // for ACESc -> D60
+ D65 = 6504 // for sRGB, AdobeRGB, Bruce Rec2020 -> D65
+ };
+
+ cmsFloat64Number ga[7]; // 7 parameters for smoother curves
+
+ //------------------------ Params -----------------------
+ Glib::ustring primariesPreset;
+ double redPrimaryX;
+ double redPrimaryY;
+ double greenPrimaryX;
+ double greenPrimaryY;
+ double bluePrimaryX;
+ double bluePrimaryY;
+ Glib::ustring gammaPreset;
+ double gamma;
+ double slope;
+ bool appendParamsToDesc;
+
+ Glib::ustring profileVersion;
+ Glib::ustring illuminant;
+ Glib::ustring description;
+ Glib::ustring copyright;
+ //-------------------------------------------------------
+
+ RTWindow *parent;
+
+ Adjuster* aGamma;
+ Adjuster* aSlope;
+ Adjuster* aPrimariesRedX;
+ Adjuster* aPrimariesRedY;
+ Adjuster* aPrimariesGreenX;
+ Adjuster* aPrimariesGreenY;
+ Adjuster* aPrimariesBlueX;
+ Adjuster* aPrimariesBlueY;
+
+ Gtk::Grid* primariesGrid;
+ MyComboBoxText* iccVersion;
+ MyComboBoxText* trcPresets;
+ sigc::connection trcpresetsconn;
+ MyComboBoxText* primaries;
+ sigc::connection primariesconn;
+ MyComboBoxText* cIlluminant;
+ sigc::connection illconn;
+ Gtk::Entry* eDescription;
+ Gtk::Entry* eCopyright;
+ Gtk::Button* resetCopyright;
+ Gtk::CheckButton *cAppendParamsToDesc;
+
+ //Glib::ustring lastPath;
+
+ void initWithDefaults ();
+ void storeDefaults ();
+ void storeValues();
+
+ void updateICCVersion();
+ void primariesChanged();
+ void illuminantChanged();
+ void trcPresetsChanged();
+ void adjusterChanged (Adjuster* a, double newval);
+ static std::vector getGamma();
+ Glib::ustring getPrimariesPresetName(const Glib::ustring &preset);
+ void getPrimaries(const Glib::ustring &preset, float *p, ColorTemp &temp);
+ Glib::ustring getGammaPresetName(const Glib::ustring &preset);
+ void getGamma(const Glib::ustring &preset, double &gamma, double &slope);
+ void savePressed();
+ void closePressed();
+ void onResetCopyright();
+
+public:
+ explicit ICCProfileCreator (RTWindow *rtwindow);
+};
diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc
index f71ff354b..936b68fd0 100644
--- a/rtgui/icmpanel.cc
+++ b/rtgui/icmpanel.cc
@@ -19,6 +19,8 @@
#include
#include "icmpanel.h"
#include "options.h"
+#include "eventmapper.h"
+
#include "guiutils.h"
#include "../rtengine/iccstore.h"
#include "../rtengine/dcp.h"
@@ -29,103 +31,115 @@ using namespace rtengine::procparams;
extern Options options;
-ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunchanged(nullptr), icmplistener(nullptr), lastRefFilename(""), camName("")
+ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunchanged(nullptr), icmplistener(nullptr), lastRefFilename(""), camName("")
{
+ auto m = ProcEventMapper::getInstance();
+ EvICMprimariMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICM_OUTPUT_PRIMARIES");
+ EvICMprofileMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICM_OUTPUT_TYPE");
+ EvICMtempMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICM_OUTPUT_TEMP");
+ EvICMpredx = m->newEvent(GAMMA, "HISTORY_MSG_ICMPREDX");
+ EvICMpredy = m->newEvent(GAMMA, "HISTORY_MSG_ICMPREDY");
+ EvICMpgrex = m->newEvent(GAMMA, "HISTORY_MSG_ICMPGREX");
+ EvICMpgrey = m->newEvent(GAMMA, "HISTORY_MSG_ICMPGREY");
+ EvICMpblux = m->newEvent(GAMMA, "HISTORY_MSG_ICMPBLUX");
+ EvICMpbluy = m->newEvent(GAMMA, "HISTORY_MSG_ICMPBLUY");
+ EvICMgamm = m->newEvent(AUTOEXP, "HISTORY_MSG_ICM_WORKING_GAMMA");
+ EvICMslop = m->newEvent(AUTOEXP, "HISTORY_MSG_ICM_WORKING_SLOPE");
+ EvICMtrcinMethod = m->newEvent(AUTOEXP, "HISTORY_MSG_ICM_WORKING_TRC_METHOD");
- isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = lastgamfree = false;
+ isBatchMode = lastToneCurve = lastApplyLookTable = lastApplyBaselineExposureOffset = lastApplyHueSatMap = false;
- ipDialog = Gtk::manage (new MyFileChooserButton (M("TP_ICM_INPUTDLGLABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN));
- ipDialog->set_tooltip_text (M("TP_ICM_INPUTCUSTOM_TOOLTIP"));
- bindCurrentFolder (*ipDialog, options.lastIccDir);
+ ipDialog = Gtk::manage(new MyFileChooserButton(M("TP_ICM_INPUTDLGLABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN));
+ ipDialog->set_tooltip_text(M("TP_ICM_INPUTCUSTOM_TOOLTIP"));
+ bindCurrentFolder(*ipDialog, options.lastIccDir);
// ------------------------------- Input profile
- Gtk::Frame *iFrame = Gtk::manage (new Gtk::Frame(M("TP_ICM_INPUTPROFILE")) );
+ Gtk::Frame *iFrame = Gtk::manage(new Gtk::Frame(M("TP_ICM_INPUTPROFILE")));
iFrame->set_label_align(0.025, 0.5);
- iVBox = Gtk::manage ( new Gtk::VBox());
- iVBox->set_spacing(2);
+ iVBox = Gtk::manage(new Gtk::VBox());
- inone = Gtk::manage (new Gtk::RadioButton (M("TP_ICM_INPUTNONE")));
- inone->set_tooltip_text (M("TP_ICM_INPUTNONE_TOOLTIP"));
- iVBox->pack_start (*inone, Gtk::PACK_SHRINK);
+ inone = Gtk::manage(new Gtk::RadioButton(M("TP_ICM_INPUTNONE")));
+ inone->set_tooltip_text(M("TP_ICM_INPUTNONE_TOOLTIP"));
+ iVBox->pack_start(*inone, Gtk::PACK_SHRINK);
- iembedded = Gtk::manage (new Gtk::RadioButton (M("TP_ICM_INPUTEMBEDDED")));
- iembedded->set_tooltip_text (M("TP_ICM_INPUTEMBEDDED_TOOLTIP"));
- iVBox->pack_start (*iembedded, Gtk::PACK_SHRINK);
+ iembedded = Gtk::manage(new Gtk::RadioButton(M("TP_ICM_INPUTEMBEDDED")));
+ iembedded->set_tooltip_text(M("TP_ICM_INPUTEMBEDDED_TOOLTIP"));
+ iVBox->pack_start(*iembedded, Gtk::PACK_SHRINK);
- icamera = Gtk::manage (new Gtk::RadioButton (M("TP_ICM_INPUTCAMERA")));
- icamera->set_tooltip_text (M("TP_ICM_INPUTCAMERA_TOOLTIP"));
- iVBox->pack_start (*icamera, Gtk::PACK_SHRINK);
+ icamera = Gtk::manage(new Gtk::RadioButton(M("TP_ICM_INPUTCAMERA")));
+ icamera->set_tooltip_text(M("TP_ICM_INPUTCAMERA_TOOLTIP"));
+ iVBox->pack_start(*icamera, Gtk::PACK_SHRINK);
- icameraICC = Gtk::manage (new Gtk::RadioButton (M("TP_ICM_INPUTCAMERAICC")));
- icameraICC->set_tooltip_text (M("TP_ICM_INPUTCAMERAICC_TOOLTIP"));
- iVBox->pack_start (*icameraICC, Gtk::PACK_SHRINK);
+ icameraICC = Gtk::manage(new Gtk::RadioButton(M("TP_ICM_INPUTCAMERAICC")));
+ icameraICC->set_tooltip_text(M("TP_ICM_INPUTCAMERAICC_TOOLTIP"));
+ iVBox->pack_start(*icameraICC, Gtk::PACK_SHRINK);
- ifromfile = Gtk::manage (new Gtk::RadioButton (M("TP_ICM_INPUTCUSTOM") + ":"));
- Gtk::HBox* ffbox = Gtk::manage (new Gtk::HBox ());
- ifromfile->set_tooltip_text (M("TP_ICM_INPUTCUSTOM_TOOLTIP"));
- ffbox->pack_start (*ifromfile, Gtk::PACK_SHRINK);
- ffbox->pack_start (*ipDialog);
+ ifromfile = Gtk::manage(new Gtk::RadioButton(M("TP_ICM_INPUTCUSTOM") + ":"));
+ Gtk::HBox* ffbox = Gtk::manage(new Gtk::HBox());
+ ifromfile->set_tooltip_text(M("TP_ICM_INPUTCUSTOM_TOOLTIP"));
+ ffbox->pack_start(*ifromfile, Gtk::PACK_SHRINK);
+ ffbox->pack_start(*ipDialog);
- iVBox->pack_start (*ffbox, Gtk::PACK_SHRINK);
+ iVBox->pack_start(*ffbox, Gtk::PACK_SHRINK);
opts = icamera->get_group();
- icameraICC->set_group (opts);
- iembedded->set_group (opts);
- ifromfile->set_group (opts);
- inone->set_group (opts);
+ icameraICC->set_group(opts);
+ iembedded->set_group(opts);
+ ifromfile->set_group(opts);
+ inone->set_group(opts);
- dcpFrame = Gtk::manage (new Gtk::Frame ("DCP"));
+ dcpFrame = Gtk::manage(new Gtk::Frame("DCP"));
- Gtk::Grid* dcpGrid = Gtk::manage ( new Gtk::Grid());
+ Gtk::Grid* dcpGrid = Gtk::manage(new Gtk::Grid());
dcpGrid->set_column_homogeneous(false);
dcpGrid->set_row_homogeneous(false);
dcpGrid->set_column_spacing(2);
dcpGrid->set_row_spacing(2);
- Gtk::Grid* dcpIllGrid = Gtk::manage ( new Gtk::Grid());
+ Gtk::Grid* dcpIllGrid = Gtk::manage(new Gtk::Grid());
dcpIllGrid->set_column_homogeneous(false);
dcpIllGrid->set_row_homogeneous(false);
dcpIllGrid->set_column_spacing(2);
dcpIllGrid->set_row_spacing(2);
- dcpIllLabel = Gtk::manage (new Gtk::Label (M("TP_ICM_DCPILLUMINANT") + ":"));
+ dcpIllLabel = Gtk::manage(new Gtk::Label(M("TP_ICM_DCPILLUMINANT") + ":"));
setExpandAlignProperties(dcpIllLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
- dcpIllLabel->set_tooltip_text (M("TP_ICM_DCPILLUMINANT_TOOLTIP"));
- dcpIllLabel->show ();
- dcpIll = Gtk::manage (new MyComboBoxText ());
+ dcpIllLabel->set_tooltip_text(M("TP_ICM_DCPILLUMINANT_TOOLTIP"));
+ dcpIllLabel->show();
+ dcpIll = Gtk::manage(new MyComboBoxText());
setExpandAlignProperties(dcpIll, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
- dcpIll->set_tooltip_text (M("TP_ICM_DCPILLUMINANT_TOOLTIP"));
- dcpIll->append (M("TP_ICM_DCPILLUMINANT_INTERPOLATED"));
- dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 1");
- dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 2");
- dcpIll->show ();
+ dcpIll->set_tooltip_text(M("TP_ICM_DCPILLUMINANT_TOOLTIP"));
+ dcpIll->append(M("TP_ICM_DCPILLUMINANT_INTERPOLATED"));
+ dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 1");
+ dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 2");
+ dcpIll->show();
dcpTemperatures[0] = 0;
dcpTemperatures[1] = 0;
dcpIllGrid->attach_next_to(*dcpIllLabel, Gtk::POS_LEFT, 1, 1);
dcpIllGrid->attach_next_to(*dcpIll, *dcpIllLabel, Gtk::POS_RIGHT, 1, 1);
- ckbToneCurve = Gtk::manage (new Gtk::CheckButton (M("TP_ICM_TONECURVE")));
- ckbToneCurve->set_sensitive (false);
- ckbToneCurve->set_tooltip_text (M("TP_ICM_TONECURVE_TOOLTIP"));
+ ckbToneCurve = Gtk::manage(new Gtk::CheckButton(M("TP_ICM_TONECURVE")));
+ ckbToneCurve->set_sensitive(false);
+ ckbToneCurve->set_tooltip_text(M("TP_ICM_TONECURVE_TOOLTIP"));
setExpandAlignProperties(ckbToneCurve, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
- ckbApplyLookTable = Gtk::manage (new Gtk::CheckButton (M("TP_ICM_APPLYLOOKTABLE")));
- ckbApplyLookTable->set_sensitive (false);
- ckbApplyLookTable->set_tooltip_text (M("TP_ICM_APPLYLOOKTABLE_TOOLTIP"));
+ ckbApplyLookTable = Gtk::manage(new Gtk::CheckButton(M("TP_ICM_APPLYLOOKTABLE")));
+ ckbApplyLookTable->set_sensitive(false);
+ ckbApplyLookTable->set_tooltip_text(M("TP_ICM_APPLYLOOKTABLE_TOOLTIP"));
setExpandAlignProperties(ckbApplyLookTable, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
- ckbApplyHueSatMap = Gtk::manage (new Gtk::CheckButton (M("TP_ICM_APPLYHUESATMAP")));
- ckbApplyHueSatMap->set_sensitive (false);
- ckbApplyHueSatMap->set_tooltip_text (M("TP_ICM_APPLYHUESATMAP_TOOLTIP"));
+ ckbApplyHueSatMap = Gtk::manage(new Gtk::CheckButton(M("TP_ICM_APPLYHUESATMAP")));
+ ckbApplyHueSatMap->set_sensitive(false);
+ ckbApplyHueSatMap->set_tooltip_text(M("TP_ICM_APPLYHUESATMAP_TOOLTIP"));
setExpandAlignProperties(ckbApplyHueSatMap, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
- ckbApplyBaselineExposureOffset = Gtk::manage (new Gtk::CheckButton (M("TP_ICM_APPLYBASELINEEXPOSUREOFFSET")));
- ckbApplyBaselineExposureOffset->set_sensitive (false);
- ckbApplyBaselineExposureOffset->set_tooltip_text (M("TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP"));
+ ckbApplyBaselineExposureOffset = Gtk::manage(new Gtk::CheckButton(M("TP_ICM_APPLYBASELINEEXPOSUREOFFSET")));
+ ckbApplyBaselineExposureOffset->set_sensitive(false);
+ ckbApplyBaselineExposureOffset->set_tooltip_text(M("TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP"));
setExpandAlignProperties(ckbApplyBaselineExposureOffset, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
dcpGrid->attach_next_to(*dcpIllGrid, Gtk::POS_BOTTOM, 1, 1);
@@ -136,142 +150,128 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch
dcpFrame->add(*dcpGrid);
dcpFrame->set_sensitive(false);
- iVBox->pack_start (*dcpFrame);
+ iVBox->pack_start(*dcpFrame);
- saveRef = Gtk::manage (new Gtk::Button (M("TP_ICM_SAVEREFERENCE")));
- saveRef->set_image (*Gtk::manage (new RTImage ("gtk-save-large.png")));
- saveRef->set_alignment (0.5f, 0.5f);
- saveRef->set_tooltip_markup (M("TP_ICM_SAVEREFERENCE_TOOLTIP"));
- iVBox->pack_start (*saveRef, Gtk::PACK_SHRINK);
+ saveRef = Gtk::manage(new Gtk::Button(M("TP_ICM_SAVEREFERENCE")));
+ saveRef->set_image(*Gtk::manage(new RTImage("save-small.png")));
+ saveRef->set_alignment(0.5f, 0.5f);
+ saveRef->set_tooltip_markup(M("TP_ICM_SAVEREFERENCE_TOOLTIP"));
+ iVBox->pack_start(*saveRef, Gtk::PACK_SHRINK);
iFrame->add(*iVBox);
- pack_start (*iFrame, Gtk::PACK_EXPAND_WIDGET);
+ pack_start(*iFrame, Gtk::PACK_EXPAND_WIDGET);
// ---------------------------- Working profile
- Gtk::Frame *wFrame = Gtk::manage (new Gtk::Frame(M("TP_ICM_WORKINGPROFILE")) );
+ Gtk::Frame *wFrame = Gtk::manage(new Gtk::Frame(M("TP_ICM_WORKINGPROFILE")));
wFrame->set_label_align(0.025, 0.5);
- Gtk::VBox *wVBox = Gtk::manage ( new Gtk::VBox());
- wVBox->set_spacing(2);
+ Gtk::VBox *wProfVBox = Gtk::manage(new Gtk::VBox());
- wnames = Gtk::manage (new MyComboBoxText ());
- wVBox->pack_start (*wnames, Gtk::PACK_SHRINK);
+ wProfNames = Gtk::manage(new MyComboBoxText());
+ wProfVBox->pack_start(*wProfNames, Gtk::PACK_SHRINK);
std::vector wpnames = rtengine::ICCStore::getInstance()->getWorkingProfiles();
for (size_t i = 0; i < wpnames.size(); i++) {
- wnames->append (wpnames[i]);
+ wProfNames->append(wpnames[i]);
}
- wnames->set_active (0);
+ wProfNames->set_active(0);
- wFrame->add(*wVBox);
- pack_start (*wFrame, Gtk::PACK_EXPAND_WIDGET);
+ // wFrame->add(*wVBox);
+
+ //-----------------gamma TRC working
+
+ wTRCHBox = Gtk::manage(new Gtk::HBox());
+
+ Gtk::Label* wtrclab = Gtk::manage(new Gtk::Label(M("TP_ICM_WORKING_TRC")));
+
+ wTRCHBox->pack_start(*wtrclab, Gtk::PACK_SHRINK);
+ wTRC = Gtk::manage(new MyComboBoxText());
+ wTRCHBox->pack_start(*wTRC, Gtk::PACK_EXPAND_WIDGET);
+ wProfVBox->pack_start(*wTRCHBox, Gtk::PACK_EXPAND_WIDGET);
+ wTRC->append(M("TP_ICM_WORKING_TRC_NONE"));
+ wTRC->append(M("TP_ICM_WORKING_TRC_CUSTOM"));
+
+ wTRC->set_active(0);
+ wTRC->set_tooltip_text(M("TP_ICM_WORKING_TRC_TOOLTIP"));
+
+
+ wGamma = Gtk::manage(new Adjuster(M("TP_ICM_WORKING_TRC_GAMMA"), 0.40, 15.0, 0.001, 2.4));
+ wSlope = Gtk::manage(new Adjuster(M("TP_ICM_WORKING_TRC_SLOPE"), 0., 150., 0.01, 12.92310));
+ wProfVBox->pack_start(*wGamma, Gtk::PACK_SHRINK);
+ wGamma->show();
+
+ wProfVBox->pack_start(*wSlope, Gtk::PACK_SHRINK);
+ wSlope->show();
+
+
+ wGamma->setAdjusterListener(this);
+ wSlope->setAdjusterListener(this);
+
+ if (wGamma->delay < options.adjusterMaxDelay) {
+ wGamma->delay = options.adjusterMaxDelay;
+ }
+
+ if (wSlope->delay < options.adjusterMaxDelay) {
+ wSlope->delay = options.adjusterMaxDelay;
+ }
+
+ wFrame->add(*wProfVBox);
+
+ pack_start(*wFrame, Gtk::PACK_EXPAND_WIDGET);
// ---------------------------- Output profile
- Gtk::Frame *oFrame = Gtk::manage (new Gtk::Frame(M("TP_ICM_OUTPUTPROFILE")) );
+ Gtk::Frame *oFrame = Gtk::manage(new Gtk::Frame(M("TP_ICM_OUTPUTPROFILE")));
oFrame->set_label_align(0.025, 0.5);
- Gtk::VBox *oVBox = Gtk::manage ( new Gtk::VBox());
- oVBox->set_spacing(2);
+ Gtk::VBox *oProfVBox = Gtk::manage(new Gtk::VBox());
- onames = Gtk::manage (new MyComboBoxText ());
- oVBox->pack_start (*onames, Gtk::PACK_SHRINK);
+ oProfNames = Gtk::manage(new MyComboBoxText());
+ oProfVBox->pack_start(*oProfNames, Gtk::PACK_SHRINK);
- onames->append (M("TP_ICM_NOICM"));
- onames->set_active (0);
+ oProfNames->append(M("TP_ICM_NOICM"));
+ oProfNames->set_active(0);
- std::vector opnames = ICCStore::getInstance()->getProfiles (rtengine::ICCStore::ProfileType::OUTPUT);
+ std::vector opnames = ICCStore::getInstance()->getProfiles(rtengine::ICCStore::ProfileType::OUTPUT);
for (size_t i = 0; i < opnames.size(); i++) {
- onames->append (opnames[i]);
+ oProfNames->append(opnames[i]);
}
- onames->set_active (0);
+ oProfNames->set_active(0);
// Rendering intent
- Gtk::HBox *riHBox = Gtk::manage ( new Gtk::HBox());
- Gtk::Label* outputIntentLbl = Gtk::manage (new Gtk::Label(M("TP_ICM_PROFILEINTENT")+":"));
- riHBox->pack_start (*outputIntentLbl, Gtk::PACK_SHRINK);
- ointent.reset (new PopUpButton ());
- ointent->addEntry("intent-perceptual.png", M("PREFERENCES_INTENT_PERCEPTUAL"));
- ointent->addEntry("intent-relative.png", M("PREFERENCES_INTENT_RELATIVE"));
- ointent->addEntry("intent-saturation.png", M("PREFERENCES_INTENT_SATURATION"));
- ointent->addEntry("intent-absolute.png", M("PREFERENCES_INTENT_ABSOLUTE"));
- ointent->setSelected (1);
- ointent->show();
- riHBox->pack_start (*ointent->buttonGroup, Gtk::PACK_EXPAND_PADDING);
- oVBox->pack_start(*riHBox, Gtk::PACK_SHRINK);
+ Gtk::HBox *riHBox = Gtk::manage(new Gtk::HBox());
+ Gtk::Label* outputIntentLbl = Gtk::manage(new Gtk::Label(M("TP_ICM_PROFILEINTENT")));
+ riHBox->pack_start(*outputIntentLbl, Gtk::PACK_SHRINK);
+ oRendIntent.reset(new PopUpButton());
+ oRendIntent->addEntry("intent-perceptual.png", M("PREFERENCES_INTENT_PERCEPTUAL"));
+ oRendIntent->addEntry("intent-relative.png", M("PREFERENCES_INTENT_RELATIVE"));
+ oRendIntent->addEntry("intent-saturation.png", M("PREFERENCES_INTENT_SATURATION"));
+ oRendIntent->addEntry("intent-absolute.png", M("PREFERENCES_INTENT_ABSOLUTE"));
+ oRendIntent->setSelected(1);
+ oRendIntent->show();
+ riHBox->pack_start(*oRendIntent->buttonGroup, Gtk::PACK_EXPAND_PADDING);
+ oProfVBox->pack_start(*riHBox, Gtk::PACK_SHRINK);
// Black Point Compensation
obpc = Gtk::manage(new Gtk::CheckButton((M("TP_ICM_BPC"))));
- obpc->set_active (true);
- oVBox->pack_start(*obpc, Gtk::PACK_SHRINK);
+ obpc->set_active(true);
+ oProfVBox->pack_start(*obpc, Gtk::PACK_SHRINK);
- // Output gamma
-
- Gtk::HBox* gaHBox = Gtk::manage (new Gtk::HBox ());
- Gtk::Label* galab = Gtk::manage (new Gtk::Label (M("TP_GAMMA_OUTPUT") + ":"));
- //galab->set_alignment (0.0, 0.5);
-
- gaHBox->pack_start (*galab, Gtk::PACK_SHRINK);
- wgamma = Gtk::manage (new MyComboBoxText ());
- gaHBox->pack_start (*wgamma, Gtk::PACK_EXPAND_WIDGET);
-
- oVBox->pack_start(*gaHBox, Gtk::PACK_EXPAND_WIDGET);
-
- std::vector wpgamma = rtengine::ICCStore::getGamma();
-
- for (size_t i = 0; i < wpgamma.size(); i++) {
- wgamma->append (wpgamma[i]);
- }
-
- wgamma->set_active (0);
-
- Gtk::Frame* fgFrame = Gtk::manage (new Gtk::Frame ());
-
- Gtk::VBox *fgVBox = Gtk::manage ( new Gtk::VBox());
- fgVBox->set_spacing(2);
-
- freegamma = Gtk::manage(new Gtk::CheckButton((M("TP_GAMMA_FREE"))));
- freegamma->set_active (false);
- fgFrame->set_label_widget(*freegamma);
-
- gampos = Gtk::manage(new Adjuster (M("TP_GAMMA_CURV"), 1, 3.5, 0.01, 2.22));
- gampos->setAdjusterListener (this);
-
- if (gampos->delay < options.adjusterMaxDelay) {
- gampos->delay = options.adjusterMaxDelay;
- }
-
- gampos->show();
- slpos = Gtk::manage(new Adjuster (M("TP_GAMMA_SLOP"), 0, 15, 0.01, 4.5));
- slpos->setAdjusterListener (this);
-
- if (slpos->delay < options.adjusterMaxDelay) {
- slpos->delay = options.adjusterMaxDelay;
- }
-
- slpos->show();
- fgVBox->pack_start( *gampos, Gtk::PACK_SHRINK);//gamma
- fgVBox->pack_start( *slpos, Gtk::PACK_SHRINK);//slope
-
- fgFrame->add(*fgVBox);
- oVBox->pack_start(*fgFrame, Gtk::PACK_EXPAND_WIDGET);
-
- oFrame->add(*oVBox);
- pack_start (*oFrame, Gtk::PACK_EXPAND_WIDGET);
+ oFrame->add(*oProfVBox);
+ pack_start(*oFrame, Gtk::PACK_EXPAND_WIDGET);
// ---------------------------- Output gamma list entries
-
Glib::RefPtr filter_icc = Gtk::FileFilter::create();
filter_icc->set_name(M("FILECHOOSER_FILTER_COLPROF"));
filter_icc->add_pattern("*.dcp");
@@ -294,42 +294,41 @@ ICMPanel::ICMPanel () : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iunch
filter_any->set_name(M("FILECHOOSER_FILTER_ANY"));
filter_any->add_pattern("*");
- ipDialog->add_filter (filter_icc);
- ipDialog->add_filter (filter_iccdng);
- ipDialog->add_filter (filter_any);
+ ipDialog->add_filter(filter_icc);
+ ipDialog->add_filter(filter_iccdng);
+ ipDialog->add_filter(filter_any);
#ifdef WIN32
ipDialog->set_show_hidden(true); // ProgramData is hidden on Windows
#endif
-
oldip = "";
- wnamesconn = wnames->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::wpChanged) );
- onamesconn = onames->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::opChanged) );
- ointentconn = ointent->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::oiChanged) );
- wgammaconn = wgamma->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::gpChanged) );
- dcpillconn = dcpIll->signal_changed().connect( sigc::mem_fun(*this, &ICMPanel::dcpIlluminantChanged) );
+ wprofnamesconn = wProfNames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wpChanged));
+ oprofnamesconn = oProfNames->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::opChanged));
+ orendintentconn = oRendIntent->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::oiChanged));
+ dcpillconn = dcpIll->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::dcpIlluminantChanged));
+ wtrcconn = wTRC->signal_changed().connect(sigc::mem_fun(*this, &ICMPanel::wtrcinChanged));
- obpcconn = obpc->signal_toggled().connect( sigc::mem_fun(*this, &ICMPanel::oBPCChanged) );
- gamcsconn = freegamma->signal_toggled().connect ( sigc::mem_fun(*this, &ICMPanel::GamChanged));
- tcurveconn = ckbToneCurve->signal_toggled().connect ( sigc::mem_fun(*this, &ICMPanel::toneCurveChanged));
- ltableconn = ckbApplyLookTable->signal_toggled().connect ( sigc::mem_fun(*this, &ICMPanel::applyLookTableChanged));
- beoconn = ckbApplyBaselineExposureOffset->signal_toggled().connect ( sigc::mem_fun(*this, &ICMPanel::applyBaselineExposureOffsetChanged));
- hsmconn = ckbApplyHueSatMap->signal_toggled().connect ( sigc::mem_fun(*this, &ICMPanel::applyHueSatMapChanged));
+ obpcconn = obpc->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::oBPCChanged));
+ tcurveconn = ckbToneCurve->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::toneCurveChanged));
+ ltableconn = ckbApplyLookTable->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyLookTableChanged));
+ beoconn = ckbApplyBaselineExposureOffset->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyBaselineExposureOffsetChanged));
+ hsmconn = ckbApplyHueSatMap->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::applyHueSatMapChanged));
- icamera->signal_toggled().connect( sigc::mem_fun(*this, &ICMPanel::ipChanged) );
- icameraICC->signal_toggled().connect( sigc::mem_fun(*this, &ICMPanel::ipChanged) );
- iembedded->signal_toggled().connect( sigc::mem_fun(*this, &ICMPanel::ipChanged) );
- ifromfile->signal_toggled().connect( sigc::mem_fun(*this, &ICMPanel::ipChanged) );
+ icamera->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::ipChanged));
+ icameraICC->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::ipChanged));
+ iembedded->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::ipChanged));
+ ifromfile->signal_toggled().connect(sigc::mem_fun(*this, &ICMPanel::ipChanged));
- ipc = ipDialog->signal_selection_changed().connect( sigc::mem_fun(*this, &ICMPanel::ipSelectionChanged) );
- saveRef->signal_pressed().connect( sigc::mem_fun(*this, &ICMPanel::saveReferencePressed) );
+ ipc = ipDialog->signal_selection_changed().connect(sigc::mem_fun(*this, &ICMPanel::ipSelectionChanged));
+ saveRef->signal_pressed().connect(sigc::mem_fun(*this, &ICMPanel::saveReferencePressed));
- show_all ();
+ show_all();
}
-void ICMPanel::updateRenderingIntent (const Glib::ustring &profile) {
- const uint8_t supportedIntents = rtengine::ICCStore::getInstance()->getOutputIntents (profile);
+void ICMPanel::updateRenderingIntent(const Glib::ustring &profile)
+{
+ const uint8_t supportedIntents = rtengine::ICCStore::getInstance()->getOutputIntents(profile);
const bool supportsPerceptual = supportedIntents & 1 << INTENT_PERCEPTUAL;
const bool supportsRelative = supportedIntents & 1 << INTENT_RELATIVE_COLORIMETRIC;
const bool supportsSaturation = supportedIntents & 1 << INTENT_SATURATION;
@@ -338,44 +337,44 @@ void ICMPanel::updateRenderingIntent (const Glib::ustring &profile) {
//printf("Intents: %d / Perceptual: %d Relative: %d Saturation: %d Absolute: %d\n", supportedIntents, supportsPerceptual, supportsRelative, supportsSaturation, supportsAbsolute);
if (!profile.empty() && (supportsPerceptual || supportsRelative || supportsSaturation || supportsAbsolute)) {
- ointent->set_sensitive (true);
- ointent->setItemSensitivity(0, supportsPerceptual);
- ointent->setItemSensitivity(1, supportsRelative);
- ointent->setItemSensitivity(2, supportsSaturation);
- ointent->setItemSensitivity(3, supportsAbsolute);
+ oRendIntent->set_sensitive(true);
+ oRendIntent->setItemSensitivity(0, supportsPerceptual);
+ oRendIntent->setItemSensitivity(1, supportsRelative);
+ oRendIntent->setItemSensitivity(2, supportsSaturation);
+ oRendIntent->setItemSensitivity(3, supportsAbsolute);
} else {
- ointent->setItemSensitivity(0, true);
- ointent->setItemSensitivity(1, true);
- ointent->setItemSensitivity(2, true);
- ointent->setItemSensitivity(3, true);
- ointent->set_sensitive (false);
- ointent->setSelected (1);
+ oRendIntent->setItemSensitivity(0, true);
+ oRendIntent->setItemSensitivity(1, true);
+ oRendIntent->setItemSensitivity(2, true);
+ oRendIntent->setItemSensitivity(3, true);
+ oRendIntent->set_sensitive(false);
+ oRendIntent->setSelected(1);
}
}
-void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name)
+void ICMPanel::updateDCP(int dcpIlluminant, Glib::ustring dcp_name)
{
ConnectionBlocker dcpillconn_(dcpillconn);
if (isBatchMode) {
dcpFrame->set_sensitive(true);
- ckbToneCurve->set_sensitive (true);
- ckbApplyLookTable->set_sensitive (true);
- ckbApplyBaselineExposureOffset->set_sensitive (true);
- ckbApplyHueSatMap->set_sensitive (true);
- dcpIllLabel->set_sensitive (true);
- dcpIll->set_sensitive (true);
+ ckbToneCurve->set_sensitive(true);
+ ckbApplyLookTable->set_sensitive(true);
+ ckbApplyBaselineExposureOffset->set_sensitive(true);
+ ckbApplyHueSatMap->set_sensitive(true);
+ dcpIllLabel->set_sensitive(true);
+ dcpIll->set_sensitive(true);
if (dcpTemperatures[0] != 0 || dcpTemperatures[1] != 0) {
int curr_active = dcpIll->get_active_row_number();
- dcpIll->remove_all ();
- dcpIll->append (M("TP_ICM_DCPILLUMINANT_INTERPOLATED"));
- dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 1");
- dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 2");
- dcpIll->append (M("GENERAL_UNCHANGED"));
+ dcpIll->remove_all();
+ dcpIll->append(M("TP_ICM_DCPILLUMINANT_INTERPOLATED"));
+ dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 1");
+ dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 2");
+ dcpIll->append(M("GENERAL_UNCHANGED"));
dcpTemperatures[0] = 0;
dcpTemperatures[1] = 0;
- dcpIll->set_active (curr_active);
+ dcpIll->set_active(curr_active);
}
if (dcpIll->get_active_row_number() == -1 && dcpIlluminant == -1) {
@@ -384,22 +383,22 @@ void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name)
dcpIll->set_active(dcpIlluminant);
}
- dcpIll->set_sensitive (true);
- dcpIllLabel->set_sensitive (true);
+ dcpIll->set_sensitive(true);
+ dcpIllLabel->set_sensitive(true);
return;
}
- ckbToneCurve->set_sensitive (false);
- ckbApplyLookTable->set_sensitive (false);
- ckbApplyBaselineExposureOffset->set_sensitive (false);
- ckbApplyHueSatMap->set_sensitive (false);
- dcpIllLabel->set_sensitive (false);
- dcpIll->set_sensitive (false);
+ ckbToneCurve->set_sensitive(false);
+ ckbApplyLookTable->set_sensitive(false);
+ ckbApplyBaselineExposureOffset->set_sensitive(false);
+ ckbApplyHueSatMap->set_sensitive(false);
+ dcpIllLabel->set_sensitive(false);
+ dcpIll->set_sensitive(false);
dcpFrame->set_sensitive(false);
DCPProfile* dcp = nullptr;
- if(dcp_name == "(cameraICC)") {
+ if (dcp_name == "(cameraICC)") {
dcp = DCPStore::getInstance()->getStdProfile(camName);
} else if (ifromfile->get_active() && DCPStore::getInstance()->isValidDCPFileName(dcp_name)) {
dcp = DCPStore::getInstance()->getProfile(dcp_name);
@@ -409,19 +408,19 @@ void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name)
dcpFrame->set_sensitive(true);
if (dcp->getHasToneCurve()) {
- ckbToneCurve->set_sensitive (true);
+ ckbToneCurve->set_sensitive(true);
}
if (dcp->getHasLookTable()) {
- ckbApplyLookTable->set_sensitive (true);
+ ckbApplyLookTable->set_sensitive(true);
}
if (dcp->getHasBaselineExposureOffset()) {
- ckbApplyBaselineExposureOffset->set_sensitive (true);
+ ckbApplyBaselineExposureOffset->set_sensitive(true);
}
if (dcp->getHasHueSatMap()) {
- ckbApplyHueSatMap->set_sensitive (true);
+ ckbApplyHueSatMap->set_sensitive(true);
}
const DCPProfile::Illuminants illuminants = dcp->getIlluminants();
@@ -432,13 +431,13 @@ void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name)
sprintf(tempstr1, "%.0fK", illuminants.temperature_1);
sprintf(tempstr2, "%.0fK", illuminants.temperature_2);
int curr_active = dcpIll->get_active_row_number();
- dcpIll->remove_all ();
- dcpIll->append (M("TP_ICM_DCPILLUMINANT_INTERPOLATED"));
- dcpIll->append (tempstr1);
- dcpIll->append (tempstr2);
+ dcpIll->remove_all();
+ dcpIll->append(M("TP_ICM_DCPILLUMINANT_INTERPOLATED"));
+ dcpIll->append(tempstr1);
+ dcpIll->append(tempstr2);
dcpTemperatures[0] = illuminants.temperature_1;
dcpTemperatures[1] = illuminants.temperature_2;
- dcpIll->set_active (curr_active);
+ dcpIll->set_active(curr_active);
}
if (dcpIlluminant > 2) {
@@ -451,8 +450,8 @@ void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name)
dcpIll->set_active(dcpIlluminant);
}
- dcpIll->set_sensitive (true);
- dcpIllLabel->set_sensitive (true);
+ dcpIll->set_sensitive(true);
+ dcpIllLabel->set_sensitive(true);
} else {
if (dcpIll->get_active_row_number() != -1) {
dcpIll->set_active(-1);
@@ -463,269 +462,269 @@ void ICMPanel::updateDCP (int dcpIlluminant, Glib::ustring dcp_name)
if (!dcpIllLabel->get_sensitive() && dcpIll->get_active_row_number() != 0) {
if (dcpTemperatures[0] != 0 || dcpTemperatures[1] != 0) {
int curr_active = dcpIll->get_active_row_number();
- dcpIll->remove_all ();
- dcpIll->append (M("TP_ICM_DCPILLUMINANT_INTERPOLATED"));
- dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 1");
- dcpIll->append (M("TP_ICM_DCPILLUMINANT") + " 2");
+ dcpIll->remove_all();
+ dcpIll->append(M("TP_ICM_DCPILLUMINANT_INTERPOLATED"));
+ dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 1");
+ dcpIll->append(M("TP_ICM_DCPILLUMINANT") + " 2");
if (isBatchMode) {
- dcpIll->append (M("GENERAL_UNCHANGED"));
+ dcpIll->append(M("GENERAL_UNCHANGED"));
}
dcpTemperatures[0] = 0;
dcpTemperatures[1] = 0;
- dcpIll->set_active (curr_active);
+ dcpIll->set_active(curr_active);
}
}
}
-void ICMPanel::read (const ProcParams* pp, const ParamsEdited* pedited)
+void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited)
{
- disableListener ();
+ disableListener();
ConnectionBlocker obpcconn_(obpcconn);
ConnectionBlocker ipc_(ipc);
- ConnectionBlocker gamcsconn_(gamcsconn);
ConnectionBlocker tcurveconn_(tcurveconn);
ConnectionBlocker ltableconn_(ltableconn);
ConnectionBlocker beoconn_(beoconn);
ConnectionBlocker hsmconn_(hsmconn);
- ConnectionBlocker wnamesconn_(wnamesconn);
- ConnectionBlocker onamesconn_(onamesconn);
- ConnectionBlocker ointentconn_(ointentconn);
- ConnectionBlocker wgammaconn_(wgammaconn);
+ ConnectionBlocker wprofnamesconn_(wprofnamesconn);
+ ConnectionBlocker oprofnamesconn_(oprofnamesconn);
+ ConnectionBlocker orendintentconn_(orendintentconn);
ConnectionBlocker dcpillconn_(dcpillconn);
- if(pp->icm.input.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) {
- ipDialog->set_filename(pp->icm.input);
+ if (pp->icm.inputProfile.substr(0, 5) != "file:" && !ipDialog->get_filename().empty()) {
+ ipDialog->set_filename(pp->icm.inputProfile);
}
- if (pp->icm.input == "(none)") {
- inone->set_active (true);
+ if (pp->icm.inputProfile == "(none)") {
+ inone->set_active(true);
updateDCP(pp->icm.dcpIlluminant, "");
- } else if (pp->icm.input == "(embedded)" || ((pp->icm.input == "(camera)" || pp->icm.input == "") && icamera->get_state() == Gtk::STATE_INSENSITIVE)) {
- iembedded->set_active (true);
+ } else if (pp->icm.inputProfile == "(embedded)" || ((pp->icm.inputProfile == "(camera)" || pp->icm.inputProfile == "") && icamera->get_state() == Gtk::STATE_INSENSITIVE)) {
+ iembedded->set_active(true);
updateDCP(pp->icm.dcpIlluminant, "");
- } else if ((pp->icm.input == "(cameraICC)") && icameraICC->get_state() != Gtk::STATE_INSENSITIVE) {
- icameraICC->set_active (true);
+ } else if ((pp->icm.inputProfile == "(cameraICC)") && icameraICC->get_state() != Gtk::STATE_INSENSITIVE) {
+ icameraICC->set_active(true);
updateDCP(pp->icm.dcpIlluminant, "(cameraICC)");
- } else if ((pp->icm.input == "(cameraICC)") && icamera->get_state() != Gtk::STATE_INSENSITIVE && icameraICC->get_state() == Gtk::STATE_INSENSITIVE) {
+ } else if ((pp->icm.inputProfile == "(cameraICC)") && icamera->get_state() != Gtk::STATE_INSENSITIVE && icameraICC->get_state() == Gtk::STATE_INSENSITIVE) {
// this is the case when (cameraICC) is instructed by packaged profiles, but ICC file is not found
// therefore falling back UI to explicitly reflect the (camera) option
- icamera->set_active (true);
+ icamera->set_active(true);
updateDCP(pp->icm.dcpIlluminant, "");
- } else if ((pp->icm.input == "(cameraICC)") && icamera->get_state() == Gtk::STATE_INSENSITIVE && icameraICC->get_state() == Gtk::STATE_INSENSITIVE) {
+ } else if ((pp->icm.inputProfile == "(cameraICC)") && icamera->get_state() == Gtk::STATE_INSENSITIVE && icameraICC->get_state() == Gtk::STATE_INSENSITIVE) {
// If neither (camera) nor (cameraICC) are available, as is the case when loading a non-raw, activate (embedded).
- iembedded->set_active (true);
+ iembedded->set_active(true);
updateDCP(pp->icm.dcpIlluminant, "(cameraICC)");
- } else if ((pp->icm.input == "(camera)" || pp->icm.input == "") && icamera->get_state() != Gtk::STATE_INSENSITIVE) {
- icamera->set_active (true);
+ } else if ((pp->icm.inputProfile == "(camera)" || pp->icm.inputProfile == "") && icamera->get_state() != Gtk::STATE_INSENSITIVE) {
+ icamera->set_active(true);
updateDCP(pp->icm.dcpIlluminant, "");
} else {
- ifromfile->set_active (true);
- oldip = pp->icm.input.substr(5); // cut of "file:"
- ipDialog->set_filename (pp->icm.input.substr(5));
- updateDCP(pp->icm.dcpIlluminant, pp->icm.input.substr(5));
+ ifromfile->set_active(true);
+ oldip = pp->icm.inputProfile.substr(5); // cut of "file:"
+ ipDialog->set_filename(pp->icm.inputProfile.substr(5));
+ updateDCP(pp->icm.dcpIlluminant, pp->icm.inputProfile.substr(5));
}
- wnames->set_active_text (pp->icm.working);
- wgamma->set_active_text (pp->icm.gamma);
+ wProfNames->set_active_text(pp->icm.workingProfile);
- if (pp->icm.output == ColorManagementParams::NoICMString) {
- onames->set_active_text (M("TP_ICM_NOICM"));
+ if (pp->icm.workingTRC == "none") {
+ wTRC->set_active(0);
+ } else if (pp->icm.workingTRC == "Custom") {
+ wTRC->set_active(1);
+ }
+
+ wtrcinChanged();
+
+ if (pp->icm.outputProfile == ColorManagementParams::NoICMString) {
+ oProfNames->set_active_text(M("TP_ICM_NOICM"));
} else {
- onames->set_active_text (pp->icm.output);
+ oProfNames->set_active_text(pp->icm.outputProfile);
}
- if (onames->get_active_row_number() == -1) {
- onames->set_active_text (M("TP_ICM_NOICM"));
+ if (oProfNames->get_active_row_number() == -1) {
+ oProfNames->set_active_text(M("TP_ICM_NOICM"));
}
- ointent->setSelected (pp->icm.outputIntent);
- obpc->set_active (pp->icm.outputBPC);
- ckbToneCurve->set_active (pp->icm.toneCurve);
+ oRendIntent->setSelected(pp->icm.outputIntent);
+
+ obpc->set_active(pp->icm.outputBPC);
+ ckbToneCurve->set_active(pp->icm.toneCurve);
lastToneCurve = pp->icm.toneCurve;
- ckbApplyLookTable->set_active (pp->icm.applyLookTable);
+ ckbApplyLookTable->set_active(pp->icm.applyLookTable);
lastApplyLookTable = pp->icm.applyLookTable;
- ckbApplyBaselineExposureOffset->set_active (pp->icm.applyBaselineExposureOffset);
+ ckbApplyBaselineExposureOffset->set_active(pp->icm.applyBaselineExposureOffset);
lastApplyBaselineExposureOffset = pp->icm.applyBaselineExposureOffset;
- ckbApplyHueSatMap->set_active (pp->icm.applyHueSatMap);
+ ckbApplyHueSatMap->set_active(pp->icm.applyHueSatMap);
lastApplyHueSatMap = pp->icm.applyHueSatMap;
- freegamma->set_active (pp->icm.freegamma);
- lastgamfree = pp->icm.freegamma;
-
- if (!batchMode) {
- onames->set_sensitive(wgamma->get_active_row_number() == 0 && !pp->icm.freegamma); //"default"
- wgamma->set_sensitive(!pp->icm.freegamma);
- gampos->set_sensitive(pp->icm.freegamma);
- slpos->set_sensitive(pp->icm.freegamma);
- updateRenderingIntent(pp->icm.output);
- }
-
- gampos->setValue (pp->icm.gampos);
- slpos->setValue (pp->icm.slpos);
+ wGamma->setValue(pp->icm.workingTRCGamma);
+ wSlope->setValue(pp->icm.workingTRCSlope);
if (pedited) {
- iunchanged->set_active (!pedited->icm.input);
+ iunchanged->set_active(!pedited->icm.inputProfile);
obpc->set_inconsistent(!pedited->icm.outputBPC);
ckbToneCurve->set_inconsistent(!pedited->icm.toneCurve);
ckbApplyLookTable->set_inconsistent(!pedited->icm.applyLookTable);
ckbApplyBaselineExposureOffset->set_inconsistent(!pedited->icm.applyBaselineExposureOffset);
ckbApplyHueSatMap->set_inconsistent(!pedited->icm.applyHueSatMap);
- freegamma->set_inconsistent (!pedited->icm.freegamma);
- if (!pedited->icm.working) {
- wnames->set_active_text(M("GENERAL_UNCHANGED"));
+ if (!pedited->icm.workingProfile) {
+ wProfNames->set_active_text(M("GENERAL_UNCHANGED"));
}
- if (!pedited->icm.output) {
- onames->set_active_text(M("GENERAL_UNCHANGED"));
+ if (!pedited->icm.outputProfile) {
+ oProfNames->set_active_text(M("GENERAL_UNCHANGED"));
}
if (!pedited->icm.outputIntent) {
- ointent->setSelected (4);
+ oRendIntent->setSelected(4);
}
if (!pedited->icm.dcpIlluminant) {
dcpIll->set_active_text(M("GENERAL_UNCHANGED"));
}
- if (!pedited->icm.gamma) {
- wgamma->set_active_text(M("GENERAL_UNCHANGED"));
- wgamma->set_active_text(M("GENERAL_UNCHANGED"));
+ if (!pedited->icm.workingTRC) {
+ wTRC->set_active_text(M("GENERAL_UNCHANGED"));
}
- gampos->setEditedState (pedited->icm.gampos ? Edited : UnEdited);
- slpos->setEditedState (pedited->icm.slpos ? Edited : UnEdited);
+ wGamma->setEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited);
+ wSlope->setEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited);
}
- enableListener ();
+ enableListener();
}
-void ICMPanel::write (ProcParams* pp, ParamsEdited* pedited)
+void ICMPanel::write(ProcParams* pp, ParamsEdited* pedited)
{
if (inone->get_active()) {
- pp->icm.input = "(none)";
- } else if (iembedded->get_active ()) {
- pp->icm.input = "(embedded)";
- } else if (icamera->get_active ()) {
- pp->icm.input = "(camera)";
- } else if (icameraICC->get_active ()) {
- pp->icm.input = "(cameraICC)";
+ pp->icm.inputProfile = "(none)";
+ } else if (iembedded->get_active()) {
+ pp->icm.inputProfile = "(embedded)";
+ } else if (icamera->get_active()) {
+ pp->icm.inputProfile = "(camera)";
+ } else if (icameraICC->get_active()) {
+ pp->icm.inputProfile = "(cameraICC)";
} else {
- if (Glib::file_test (ipDialog->get_filename (), Glib::FILE_TEST_EXISTS) && !Glib::file_test (ipDialog->get_filename (), Glib::FILE_TEST_IS_DIR)) {
- pp->icm.input = "file:" + ipDialog->get_filename ();
+ if (Glib::file_test(ipDialog->get_filename(), Glib::FILE_TEST_EXISTS) && !Glib::file_test(ipDialog->get_filename(), Glib::FILE_TEST_IS_DIR)) {
+ pp->icm.inputProfile = "file:" + ipDialog->get_filename();
} else {
- pp->icm.input = ""; // just a directory
+ pp->icm.inputProfile = ""; // just a directory
}
- Glib::ustring p = Glib::path_get_dirname(ipDialog->get_filename ());
+ Glib::ustring p = Glib::path_get_dirname(ipDialog->get_filename());
}
- pp->icm.working = wnames->get_active_text ();
- pp->icm.gamma = wgamma->get_active_text ();
+ pp->icm.workingProfile = wProfNames->get_active_text();
pp->icm.dcpIlluminant = rtengine::max(dcpIll->get_active_row_number(), 0);
+ pp->icm.workingTRC = wTRC->get_active_text();
- if (onames->get_active_text() == M("TP_ICM_NOICM")) {
- pp->icm.output = ColorManagementParams::NoICMString;
+ if (oProfNames->get_active_text() == M("TP_ICM_NOICM")) {
+ pp->icm.outputProfile = ColorManagementParams::NoICMString;
} else {
- pp->icm.output = onames->get_active_text();
+ pp->icm.outputProfile = oProfNames->get_active_text();
}
- int ointentVal = ointent->getSelected ();
+ int ointentVal = oRendIntent->getSelected();
+
if (ointentVal >= 0 && ointentVal < RI__COUNT) {
pp->icm.outputIntent = static_cast(ointentVal);
} else {
pp->icm.outputIntent = rtengine::RI_RELATIVE;
}
- pp->icm.freegamma = freegamma->get_active();
- pp->icm.toneCurve = ckbToneCurve->get_active ();
- pp->icm.applyLookTable = ckbApplyLookTable->get_active ();
- pp->icm.applyBaselineExposureOffset = ckbApplyBaselineExposureOffset->get_active ();
- pp->icm.applyHueSatMap = ckbApplyHueSatMap->get_active ();
- pp->icm.gampos = (double) gampos->getValue();
- pp->icm.slpos = (double) slpos->getValue();
- pp->icm.outputBPC = obpc->get_active ();
+ if (wTRC->get_active_row_number() == 0) {
+ pp->icm.workingTRC = "none";
+ } else if (wTRC->get_active_row_number() == 1) {
+ pp->icm.workingTRC = "Custom";
+ }
+
+ pp->icm.toneCurve = ckbToneCurve->get_active();
+ pp->icm.applyLookTable = ckbApplyLookTable->get_active();
+ pp->icm.applyBaselineExposureOffset = ckbApplyBaselineExposureOffset->get_active();
+ pp->icm.applyHueSatMap = ckbApplyHueSatMap->get_active();
+ pp->icm.outputBPC = obpc->get_active();
+ pp->icm.workingTRCGamma = (double) wGamma->getValue();
+ pp->icm.workingTRCSlope = (double) wSlope->getValue();
+ pp->toneCurve.fromHistMatching = false;
if (pedited) {
- pedited->icm.input = !iunchanged->get_active ();
- pedited->icm.working = wnames->get_active_text() != M("GENERAL_UNCHANGED");
- pedited->icm.output = onames->get_active_text() != M("GENERAL_UNCHANGED");
- pedited->icm.outputIntent = ointent->getSelected () < 4;
- pedited->icm.outputBPC = !obpc->get_inconsistent ();
+ pedited->icm.inputProfile = !iunchanged->get_active();
+ pedited->icm.workingProfile = wProfNames->get_active_text() != M("GENERAL_UNCHANGED");
+ pedited->icm.outputProfile = oProfNames->get_active_text() != M("GENERAL_UNCHANGED");
+ pedited->icm.outputIntent = oRendIntent->getSelected() < 4;
+ pedited->icm.outputBPC = !obpc->get_inconsistent();
pedited->icm.dcpIlluminant = dcpIll->get_active_text() != M("GENERAL_UNCHANGED");
- pedited->icm.toneCurve = !ckbToneCurve->get_inconsistent ();
- pedited->icm.applyLookTable = !ckbApplyLookTable->get_inconsistent ();
- pedited->icm.applyBaselineExposureOffset = !ckbApplyBaselineExposureOffset->get_inconsistent ();
- pedited->icm.applyHueSatMap = !ckbApplyHueSatMap->get_inconsistent ();
- pedited->icm.gamma = wgamma->get_active_text() != M("GENERAL_UNCHANGED");
- pedited->icm.freegamma = !freegamma->get_inconsistent();
- pedited->icm.gampos = gampos->getEditedState ();
- pedited->icm.slpos = slpos->getEditedState ();
+ pedited->icm.toneCurve = !ckbToneCurve->get_inconsistent();
+ pedited->icm.applyLookTable = !ckbApplyLookTable->get_inconsistent();
+ pedited->icm.applyBaselineExposureOffset = !ckbApplyBaselineExposureOffset->get_inconsistent();
+ pedited->icm.applyHueSatMap = !ckbApplyHueSatMap->get_inconsistent();
+ pedited->icm.workingTRCGamma = wGamma->getEditedState();
+ pedited->icm.workingTRCSlope = wSlope->getEditedState();
+ pedited->icm.workingTRC = wTRC->get_active_text() != M("GENERAL_UNCHANGED");
}
}
-void ICMPanel::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited)
+void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedited)
{
- gampos->setDefault (defParams->icm.gampos);
- slpos->setDefault (defParams->icm.slpos);
+ wGamma->setDefault(defParams->icm.workingTRCGamma);
+ wSlope->setDefault(defParams->icm.workingTRCSlope);
if (pedited) {
- gampos->setDefaultEditedState (pedited->icm.gampos ? Edited : UnEdited);
- slpos->setDefaultEditedState (pedited->icm.slpos ? Edited : UnEdited);
+ wGamma->setDefaultEditedState(pedited->icm.workingTRCGamma ? Edited : UnEdited);
+ wSlope->setDefaultEditedState(pedited->icm.workingTRCSlope ? Edited : UnEdited);
+
} else {
- gampos->setDefaultEditedState (Irrelevant);
- slpos->setDefaultEditedState (Irrelevant);
+ wGamma->setDefaultEditedState(Irrelevant);
+ wSlope->setDefaultEditedState(Irrelevant);
+
}
}
-void ICMPanel::setAdjusterBehavior (bool gammaadd, bool slopeadd)
+void ICMPanel::adjusterChanged(Adjuster* a, double newval)
{
- gampos->setAddMode (gammaadd);
- slpos->setAddMode (slopeadd);
-}
+ if (listener || batchMode) {
+ Glib::ustring costr2 = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), newval);
-void ICMPanel::adjusterChanged (Adjuster* a, double newval)
-{
-
- if (listener && (freegamma->get_active() || batchMode)) {
-
- Glib::ustring costr = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), newval);
-
- if (a == gampos) {
- listener->panelChanged (EvGAMPOS, costr);
- } else if (a == slpos) {
- listener->panelChanged (EvSLPOS, costr);
+ if (a == wGamma) {
+ listener->panelChanged(EvICMgamm, costr2);
+ } else if (a == wSlope) {
+ listener->panelChanged(EvICMslop, costr2);
}
+
}
}
-void ICMPanel::wpChanged ()
+void ICMPanel::wpChanged()
{
-
if (listener) {
- listener->panelChanged (EvWProfile, wnames->get_active_text ());
+ listener->panelChanged(EvWProfile, wProfNames->get_active_text());
}
}
-void ICMPanel::gpChanged ()
+void ICMPanel::wtrcinChanged()
{
+ if (wTRC->get_active_row_number() == 0) {
+ wGamma->set_sensitive(false);
+ wSlope->set_sensitive(false);
+
+ } else {
+ wGamma->set_sensitive(true);
+ wSlope->set_sensitive(true);
+ }
if (listener) {
- listener->panelChanged (EvGAMMA, wgamma->get_active_text ());
- onames->set_sensitive(wgamma->get_active_row_number() == 0); //"default"
+ listener->panelChanged(EvICMtrcinMethod, wTRC->get_active_text());
}
}
void ICMPanel::dcpIlluminantChanged()
{
if (listener) {
- listener->panelChanged (EvDCPIlluminant, dcpIll->get_active_text ());
+ listener->panelChanged(EvDCPIlluminant, dcpIll->get_active_text());
}
}
@@ -733,24 +732,24 @@ void ICMPanel::toneCurveChanged()
{
if (multiImage) {
if (ckbToneCurve->get_inconsistent()) {
- ckbToneCurve->set_inconsistent (false);
- tcurveconn.block (true);
- ckbToneCurve->set_active (false);
- tcurveconn.block (false);
+ ckbToneCurve->set_inconsistent(false);
+ tcurveconn.block(true);
+ ckbToneCurve->set_active(false);
+ tcurveconn.block(false);
} else if (lastToneCurve) {
- ckbToneCurve->set_inconsistent (true);
+ ckbToneCurve->set_inconsistent(true);
}
- lastToneCurve = ckbToneCurve->get_active ();
+ lastToneCurve = ckbToneCurve->get_active();
}
if (listener) {
if (ckbToneCurve->get_inconsistent()) {
- listener->panelChanged (EvDCPToneCurve, M("GENERAL_UNCHANGED"));
+ listener->panelChanged(EvDCPToneCurve, M("GENERAL_UNCHANGED"));
} else if (ckbToneCurve->get_active()) {
- listener->panelChanged (EvDCPToneCurve, M("GENERAL_ENABLED"));
+ listener->panelChanged(EvDCPToneCurve, M("GENERAL_ENABLED"));
} else {
- listener->panelChanged (EvDCPToneCurve, M("GENERAL_DISABLED"));
+ listener->panelChanged(EvDCPToneCurve, M("GENERAL_DISABLED"));
}
}
}
@@ -759,24 +758,24 @@ void ICMPanel::applyLookTableChanged()
{
if (multiImage) {
if (ckbApplyLookTable->get_inconsistent()) {
- ckbApplyLookTable->set_inconsistent (false);
- ltableconn.block (true);
- ckbApplyLookTable->set_active (false);
- ltableconn.block (false);
+ ckbApplyLookTable->set_inconsistent(false);
+ ltableconn.block(true);
+ ckbApplyLookTable->set_active(false);
+ ltableconn.block(false);
} else if (lastApplyLookTable) {
- ckbApplyLookTable->set_inconsistent (true);
+ ckbApplyLookTable->set_inconsistent(true);
}
- lastApplyLookTable = ckbApplyLookTable->get_active ();
+ lastApplyLookTable = ckbApplyLookTable->get_active();
}
if (listener) {
if (ckbApplyLookTable->get_inconsistent()) {
- listener->panelChanged (EvDCPApplyLookTable, M("GENERAL_UNCHANGED"));
+ listener->panelChanged(EvDCPApplyLookTable, M("GENERAL_UNCHANGED"));
} else if (ckbApplyLookTable->get_active()) {
- listener->panelChanged (EvDCPApplyLookTable, M("GENERAL_ENABLED"));
+ listener->panelChanged(EvDCPApplyLookTable, M("GENERAL_ENABLED"));
} else {
- listener->panelChanged (EvDCPApplyLookTable, M("GENERAL_DISABLED"));
+ listener->panelChanged(EvDCPApplyLookTable, M("GENERAL_DISABLED"));
}
}
}
@@ -785,24 +784,24 @@ void ICMPanel::applyBaselineExposureOffsetChanged()
{
if (multiImage) {
if (ckbApplyBaselineExposureOffset->get_inconsistent()) {
- ckbApplyBaselineExposureOffset->set_inconsistent (false);
- beoconn.block (true);
- ckbApplyBaselineExposureOffset->set_active (false);
- beoconn.block (false);
+ ckbApplyBaselineExposureOffset->set_inconsistent(false);
+ beoconn.block(true);
+ ckbApplyBaselineExposureOffset->set_active(false);
+ beoconn.block(false);
} else if (lastApplyBaselineExposureOffset) {
- ckbApplyBaselineExposureOffset->set_inconsistent (true);
+ ckbApplyBaselineExposureOffset->set_inconsistent(true);
}
- lastApplyBaselineExposureOffset = ckbApplyBaselineExposureOffset->get_active ();
+ lastApplyBaselineExposureOffset = ckbApplyBaselineExposureOffset->get_active();
}
if (listener) {
if (ckbApplyBaselineExposureOffset->get_inconsistent()) {
- listener->panelChanged (EvDCPApplyBaselineExposureOffset, M("GENERAL_UNCHANGED"));
+ listener->panelChanged(EvDCPApplyBaselineExposureOffset, M("GENERAL_UNCHANGED"));
} else if (ckbApplyBaselineExposureOffset->get_active()) {
- listener->panelChanged (EvDCPApplyBaselineExposureOffset, M("GENERAL_ENABLED"));
+ listener->panelChanged(EvDCPApplyBaselineExposureOffset, M("GENERAL_ENABLED"));
} else {
- listener->panelChanged (EvDCPApplyBaselineExposureOffset, M("GENERAL_DISABLED"));
+ listener->panelChanged(EvDCPApplyBaselineExposureOffset, M("GENERAL_DISABLED"));
}
}
}
@@ -811,170 +810,137 @@ void ICMPanel::applyHueSatMapChanged()
{
if (multiImage) {
if (ckbApplyHueSatMap->get_inconsistent()) {
- ckbApplyHueSatMap->set_inconsistent (false);
- hsmconn.block (true);
- ckbApplyHueSatMap->set_active (false);
- hsmconn.block (false);
+ ckbApplyHueSatMap->set_inconsistent(false);
+ hsmconn.block(true);
+ ckbApplyHueSatMap->set_active(false);
+ hsmconn.block(false);
} else if (lastApplyHueSatMap) {
- ckbApplyHueSatMap->set_inconsistent (true);
+ ckbApplyHueSatMap->set_inconsistent(true);
}
- lastApplyHueSatMap = ckbApplyHueSatMap->get_active ();
+ lastApplyHueSatMap = ckbApplyHueSatMap->get_active();
}
if (listener) {
if (ckbApplyHueSatMap->get_inconsistent()) {
- listener->panelChanged (EvDCPApplyHueSatMap, M("GENERAL_UNCHANGED"));
+ listener->panelChanged(EvDCPApplyHueSatMap, M("GENERAL_UNCHANGED"));
} else if (ckbApplyHueSatMap->get_active()) {
- listener->panelChanged (EvDCPApplyHueSatMap, M("GENERAL_ENABLED"));
+ listener->panelChanged(EvDCPApplyHueSatMap, M("GENERAL_ENABLED"));
} else {
- listener->panelChanged (EvDCPApplyHueSatMap, M("GENERAL_DISABLED"));
+ listener->panelChanged(EvDCPApplyHueSatMap, M("GENERAL_DISABLED"));
}
}
}
-void ICMPanel::ipChanged ()
+void ICMPanel::ipChanged()
{
Glib::ustring profname;
if (inone->get_active()) {
profname = "(none)";
- } else if (iembedded->get_active ()) {
+ } else if (iembedded->get_active()) {
profname = "(embedded)";
- } else if (icamera->get_active ()) {
+ } else if (icamera->get_active()) {
profname = "(camera)";
- } else if (icameraICC->get_active ()) {
+ } else if (icameraICC->get_active()) {
profname = "(cameraICC)";
} else {
- profname = ipDialog->get_filename ();
+ profname = ipDialog->get_filename();
}
updateDCP(-1, profname);
if (listener && profname != oldip) {
- listener->panelChanged (EvIProfile, profname);
+ listener->panelChanged(EvIProfile, profname);
}
oldip = profname;
}
-void ICMPanel::GamChanged()
-{
- if (multiImage) {
- if (freegamma->get_inconsistent()) {
- freegamma->set_inconsistent (false);
- gamcsconn.block (true);
- freegamma->set_active (false);
- gamcsconn.block (false);
- } else if (lastgamfree) {
- freegamma->set_inconsistent (true);
- }
-
- lastgamfree = freegamma->get_active ();
- }
-
- if (listener) {
- if (freegamma->get_inconsistent()) {
- listener->panelChanged (EvGAMFREE, M("GENERAL_UNCHANGED"));
- }
- else if (freegamma->get_active()) {
- listener->panelChanged (EvGAMFREE, M("GENERAL_ENABLED"));
- if (!batchMode) {
- onames->set_sensitive(false);//disabled choice
- wgamma->set_sensitive(false);
- gampos->set_sensitive(true);
- slpos->set_sensitive(true);
- }
- } else {
- listener->panelChanged (EvGAMFREE, M("GENERAL_DISABLED"));
- if (!batchMode) {
- onames->set_sensitive(wgamma->get_active_row_number() == 0);
- wgamma->set_sensitive(true);
- gampos->set_sensitive(false);
- slpos->set_sensitive(false);
- }
- }
- }
-}
-
-void ICMPanel::opChanged ()
+void ICMPanel::opChanged()
{
if (!batchMode) {
- updateRenderingIntent(onames->get_active_text());
+ updateRenderingIntent(oProfNames->get_active_text());
}
if (listener) {
- listener->panelChanged (EvOProfile, onames->get_active_text());
+ listener->panelChanged(EvOProfile, oProfNames->get_active_text());
}
}
-void ICMPanel::oiChanged (int n)
+void ICMPanel::oiChanged(int n)
{
if (listener) {
Glib::ustring str;
+
switch (n) {
- case 0:
- str = M("PREFERENCES_INTENT_PERCEPTUAL");
- break;
- case 1:
- str = M("PREFERENCES_INTENT_RELATIVE");
- break;
- case 2:
- str = M("PREFERENCES_INTENT_SATURATION");
- break;
- case 3:
- str = M("PREFERENCES_INTENT_ABSOLUTE");
- break;
- case 4:
- default:
- str = M("GENERAL_UNCHANGED");
- break;
+ case 0:
+ str = M("PREFERENCES_INTENT_PERCEPTUAL");
+ break;
+
+ case 1:
+ str = M("PREFERENCES_INTENT_RELATIVE");
+ break;
+
+ case 2:
+ str = M("PREFERENCES_INTENT_SATURATION");
+ break;
+
+ case 3:
+ str = M("PREFERENCES_INTENT_ABSOLUTE");
+ break;
+
+ case 4:
+ default:
+ str = M("GENERAL_UNCHANGED");
+ break;
}
- listener->panelChanged (EvOIntent, str);
+
+ listener->panelChanged(EvOIntent, str);
}
}
-void ICMPanel::oBPCChanged ()
+void ICMPanel::oBPCChanged()
{
if (multiImage) {
if (obpc->get_inconsistent()) {
- obpc->set_inconsistent (false);
- obpcconn.block (true);
- obpc->set_active (false);
- obpcconn.block (false);
+ obpc->set_inconsistent(false);
+ obpcconn.block(true);
+ obpc->set_active(false);
+ obpcconn.block(false);
} else if (lastobpc) {
- obpc->set_inconsistent (true);
+ obpc->set_inconsistent(true);
}
- lastobpc = obpc->get_active ();
+ lastobpc = obpc->get_active();
}
if (listener) {
if (obpc->get_inconsistent()) {
- listener->panelChanged (EvOBPCompens, M("GENERAL_UNCHANGED"));
+ listener->panelChanged(EvOBPCompens, M("GENERAL_UNCHANGED"));
} else if (obpc->get_active()) {
- listener->panelChanged (EvOBPCompens, M("GENERAL_ENABLED"));
+ listener->panelChanged(EvOBPCompens, M("GENERAL_ENABLED"));
} else {
- listener->panelChanged (EvOBPCompens, M("GENERAL_DISABLED"));
+ listener->panelChanged(EvOBPCompens, M("GENERAL_DISABLED"));
}
}
}
-void ICMPanel::setRawMeta (bool raw, const rtengine::FramesData* pMeta)
+void ICMPanel::setRawMeta(bool raw, const rtengine::FramesData* pMeta)
{
- disableListener ();
+ disableListener();
- icamera->set_active (raw);
- iembedded->set_active (!raw);
- icamera->set_sensitive (raw);
+ icamera->set_active(raw);
+ iembedded->set_active(!raw);
+ icamera->set_sensitive(raw);
camName = pMeta->getCamera();
- icameraICC->set_sensitive (raw && (ICCStore::getInstance()->getStdProfile(pMeta->getCamera()) != nullptr || DCPStore::getInstance()->getStdProfile(pMeta->getCamera()) != nullptr));
- iembedded->set_sensitive (!raw);
+ icameraICC->set_sensitive(raw && (ICCStore::getInstance()->getStdProfile(pMeta->getCamera()) != nullptr || DCPStore::getInstance()->getStdProfile(pMeta->getCamera()) != nullptr));
+ iembedded->set_sensitive(!raw);
- enableListener ();
+ enableListener();
}
void ICMPanel::ipSelectionChanged()
@@ -987,23 +953,23 @@ void ICMPanel::ipSelectionChanged()
ipChanged();
}
-void ICMPanel::saveReferencePressed ()
+void ICMPanel::saveReferencePressed()
{
if (!icmplistener) {
return;
}
- Gtk::FileChooserDialog dialog (getToplevelWindow (this), M("TP_ICM_SAVEREFERENCE"), Gtk::FILE_CHOOSER_ACTION_SAVE);
- bindCurrentFolder (dialog, options.lastProfilingReferenceDir);
- dialog.set_current_name (lastRefFilename);
+ Gtk::FileChooserDialog dialog(getToplevelWindow(this), M("TP_ICM_SAVEREFERENCE"), Gtk::FILE_CHOOSER_ACTION_SAVE);
+ bindCurrentFolder(dialog, options.lastProfilingReferenceDir);
+ dialog.set_current_name(lastRefFilename);
dialog.add_button(M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL);
dialog.add_button(M("GENERAL_SAVE"), Gtk::RESPONSE_OK);
Gtk::CheckButton applyWB(M("TP_ICM_SAVEREFERENCE_APPLYWB"));
- applyWB.set_tooltip_text (M("TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP"));
- Gtk::HBox* hbox = Gtk::manage( new Gtk::HBox() );
+ applyWB.set_tooltip_text(M("TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP"));
+ Gtk::HBox* hbox = Gtk::manage(new Gtk::HBox());
hbox->pack_end(applyWB, Gtk::PACK_SHRINK, 2);
Gtk::Box *box = dialog.get_content_area();
box->pack_end(*hbox, Gtk::PACK_SHRINK, 2);
@@ -1038,8 +1004,8 @@ void ICMPanel::saveReferencePressed ()
}
if (confirmOverwrite(dialog, fname)) {
- icmplistener->saveInputICCReference (fname, applyWB.get_active());
- lastRefFilename = Glib::path_get_basename (fname);
+ icmplistener->saveInputICCReference(fname, applyWB.get_active());
+ lastRefFilename = Glib::path_get_basename(fname);
done = true;
}
}
@@ -1048,23 +1014,23 @@ void ICMPanel::saveReferencePressed ()
return;
}
-void ICMPanel::setBatchMode (bool batchMode)
+void ICMPanel::setBatchMode(bool batchMode)
{
isBatchMode = true;
- ToolPanel::setBatchMode (batchMode);
- iunchanged = Gtk::manage (new Gtk::RadioButton (M("GENERAL_UNCHANGED")));
- iunchanged->set_group (opts);
- iVBox->pack_start (*iunchanged, Gtk::PACK_SHRINK, 4);
- iVBox->reorder_child (*iunchanged, 5);
- removeIfThere (this, saveRef);
- onames->append (M("GENERAL_UNCHANGED"));
- ointent->addEntry("unchanged-22.png", M("GENERAL_UNCHANGED"));
- ointent->show();
- wnames->append (M("GENERAL_UNCHANGED"));
- wgamma->append (M("GENERAL_UNCHANGED"));
- dcpIll->append (M("GENERAL_UNCHANGED"));
- gampos->showEditedCB ();
- slpos->showEditedCB ();
+ ToolPanel::setBatchMode(batchMode);
+ iunchanged = Gtk::manage(new Gtk::RadioButton(M("GENERAL_UNCHANGED")));
+ iunchanged->set_group(opts);
+ iVBox->pack_start(*iunchanged, Gtk::PACK_SHRINK, 4);
+ iVBox->reorder_child(*iunchanged, 5);
+ removeIfThere(this, saveRef);
+ oProfNames->append(M("GENERAL_UNCHANGED"));
+ oRendIntent->addEntry("template-24.png", M("GENERAL_UNCHANGED"));
+ oRendIntent->show();
+ wProfNames->append(M("GENERAL_UNCHANGED"));
+ wTRC->append(M("GENERAL_UNCHANGED"));
+ dcpIll->append(M("GENERAL_UNCHANGED"));
+ wGamma->showEditedCB();
+ wSlope->showEditedCB();
}
diff --git a/rtgui/icmpanel.h b/rtgui/icmpanel.h
index f8c762b0e..e04a4397e 100644
--- a/rtgui/icmpanel.h
+++ b/rtgui/icmpanel.h
@@ -33,18 +33,26 @@ class ICMPanelListener
public:
virtual ~ICMPanelListener() {}
- virtual void saveInputICCReference (Glib::ustring fname, bool apply_wb) {}
+ virtual void saveInputICCReference(Glib::ustring fname, bool apply_wb) {}
};
-class ICMPanel : public ToolParamBlock, public AdjusterListener, public FoldableToolPanel
+class ICMPanel :
+ public ToolParamBlock,
+ public AdjusterListener,
+ public FoldableToolPanel
{
protected:
- Gtk::Frame* dcpFrame;
- Adjuster* gampos;
- Adjuster* slpos;
- bool lastgamfree;
- sigc::connection gamcsconn;
+ Gtk::Frame* dcpFrame;
+ Gtk::Frame* coipFrame;
+
+ Adjuster* wGamma;
+ Adjuster* wSlope;
+
+ Gtk::Label* labmga;
+ Gtk::HBox* gabox;
+
+
//bool freegamma;
bool lastToneCurve;
sigc::connection tcurveconn;
@@ -59,73 +67,84 @@ protected:
bool isBatchMode;
private:
- Gtk::VBox * iVBox;
+ rtengine::ProcEvent EvICMprimariMethod;
+ rtengine::ProcEvent EvICMprofileMethod;
+ rtengine::ProcEvent EvICMtempMethod;
+ rtengine::ProcEvent EvICMpredx;
+ rtengine::ProcEvent EvICMpredy;
+ rtengine::ProcEvent EvICMpgrex;
+ rtengine::ProcEvent EvICMpgrey;
+ rtengine::ProcEvent EvICMpblux;
+ rtengine::ProcEvent EvICMpbluy;
+ rtengine::ProcEvent EvICMgamm;
+ rtengine::ProcEvent EvICMslop;
+ rtengine::ProcEvent EvICMtrcinMethod;
- Gtk::CheckButton* obpc;
- Gtk::CheckButton* freegamma;
- Gtk::RadioButton* inone;
+ Gtk::VBox* iVBox;
+ Gtk::HBox* wTRCHBox;
- Gtk::RadioButton* iembedded;
- Gtk::RadioButton* icamera;
- Gtk::RadioButton* icameraICC;
- Gtk::RadioButton* ifromfile;
- Gtk::Label* dcpIllLabel;
- MyComboBoxText* dcpIll;
- sigc::connection dcpillconn;
- Gtk::CheckButton* ckbToneCurve;
- Gtk::CheckButton* ckbApplyLookTable;
- Gtk::CheckButton* ckbApplyBaselineExposureOffset;
- Gtk::CheckButton* ckbApplyHueSatMap;
- MyComboBoxText* wnames;
- sigc::connection wnamesconn;
- MyComboBoxText* wgamma;
- sigc::connection wgammaconn;
+ Gtk::CheckButton* obpc;
+ Gtk::RadioButton* inone;
- MyComboBoxText* onames;
- sigc::connection onamesconn;
- std::unique_ptr ointent;
- sigc::connection ointentconn;
- Gtk::RadioButton* iunchanged;
+ Gtk::RadioButton* iembedded;
+ Gtk::RadioButton* icamera;
+ Gtk::RadioButton* icameraICC;
+ Gtk::RadioButton* ifromfile;
+ Gtk::Label* dcpIllLabel;
+ MyComboBoxText* dcpIll;
+ sigc::connection dcpillconn;
+ Gtk::CheckButton* ckbToneCurve;
+ Gtk::CheckButton* ckbApplyLookTable;
+ Gtk::CheckButton* ckbApplyBaselineExposureOffset;
+ Gtk::CheckButton* ckbApplyHueSatMap;
+ MyComboBoxText* wProfNames;
+ sigc::connection wprofnamesconn;
+ MyComboBoxText* wTRC;
+ sigc::connection wtrcconn;
+
+ MyComboBoxText* oProfNames;
+ sigc::connection oprofnamesconn;
+ std::unique_ptr oRendIntent;
+ sigc::connection orendintentconn;
+ Gtk::RadioButton* iunchanged;
MyFileChooserButton* ipDialog;
Gtk::RadioButton::Group opts;
- Gtk::Button* saveRef;
- sigc::connection ipc;
- Glib::ustring oldip;
- ICMPanelListener* icmplistener;
+ Gtk::Button* saveRef;
+ sigc::connection ipc;
+ Glib::ustring oldip;
+ ICMPanelListener* icmplistener;
double dcpTemperatures[2];
Glib::ustring lastRefFilename;
Glib::ustring camName;
void updateDCP(int dcpIlluminant, Glib::ustring dcp_name);
- void updateRenderingIntent (const Glib::ustring &profile);
+ void updateRenderingIntent(const Glib::ustring &profile);
public:
- ICMPanel ();
+ ICMPanel();
- void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
- void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
- void setBatchMode (bool batchMode);
- void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
- void adjusterChanged (Adjuster* a, double newval);
- void setAdjusterBehavior (bool gammaadd, bool slopeadd);
+ void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr);
+ void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr);
+ void setBatchMode(bool batchMode);
+ void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr);
+ void adjusterChanged(Adjuster* a, double newval);
- void wpChanged ();
- void opChanged ();
- void oiChanged (int n);
- void oBPCChanged ();
- void ipChanged ();
- void gpChanged ();
- void GamChanged ();
- void ipSelectionChanged ();
+ void wpChanged();
+ void wtrcinChanged();
+ void opChanged();
+ void oiChanged(int n);
+ void oBPCChanged();
+ void ipChanged();
+ void ipSelectionChanged();
void dcpIlluminantChanged();
void toneCurveChanged();
void applyLookTableChanged();
void applyBaselineExposureOffsetChanged();
void applyHueSatMapChanged();
- void setRawMeta (bool raw, const rtengine::FramesData* pMeta);
- void saveReferencePressed ();
+ void setRawMeta(bool raw, const rtengine::FramesData* pMeta);
+ void saveReferencePressed();
- void setICMPanelListener (ICMPanelListener* ipl)
+ void setICMPanelListener(ICMPanelListener* ipl)
{
icmplistener = ipl;
}
diff --git a/rtgui/imagearea.cc b/rtgui/imagearea.cc
index b5989b098..b2b938139 100644
--- a/rtgui/imagearea.cc
+++ b/rtgui/imagearea.cc
@@ -43,6 +43,7 @@ ImageArea::ImageArea (ImageAreaPanel* p) : parent(p), fullImageWidth(0), fullIma
zoomPanel = Gtk::manage (new ZoomPanel (this));
indClippedPanel = Gtk::manage (new IndicateClippedPanel (this));
previewModePanel = Gtk::manage (new PreviewModePanel (this));
+ previewModePanel->get_style_context()->add_class("narrowbuttonbox");
add_events(Gdk::LEAVE_NOTIFY_MASK);
diff --git a/rtgui/indclippedpanel.cc b/rtgui/indclippedpanel.cc
index f065359dd..aff5035fe 100644
--- a/rtgui/indclippedpanel.cc
+++ b/rtgui/indclippedpanel.cc
@@ -24,12 +24,12 @@
IndicateClippedPanel::IndicateClippedPanel (ImageArea* ia) : imageArea(ia)
{
- iFon = new RTImage ("previewmodeF-focusScreen-on.png");
- iFoff = new RTImage ("previewmodeF-focusScreen-off.png");
+ iFon = new RTImage ("focusscreen-on.png");
+ iFoff = new RTImage ("focusscreen-off.png");
// for previewSharpMask, needs to be replaced with different icons
- iSon = new RTImage ("previewmodeF-focusScreen-on.png");
- iSoff = new RTImage ("previewmodeF-focusScreen-off.png");
+ iSon = new RTImage ("contrastmask-on.png");
+ iSoff = new RTImage ("contrastmask-off.png");
previewFocusMask = Gtk::manage (new Gtk::ToggleButton ());
previewFocusMask->set_relief(Gtk::RELIEF_NONE);
@@ -45,7 +45,7 @@ IndicateClippedPanel::IndicateClippedPanel (ImageArea* ia) : imageArea(ia)
indClippedH = Gtk::manage (new Gtk::ToggleButton ());
indClippedH->set_relief(Gtk::RELIEF_NONE);
- indClippedH->add (*Gtk::manage (new RTImage ("warnhl.png")));
+ indClippedH->add (*Gtk::manage (new RTImage ("warning-highlights.png")));
tt = Glib::ustring::compose("%1\n%2 = %3", M("MAIN_TOOLTIP_INDCLIPPEDH"), M("MAIN_TOOLTIP_THRESHOLD"), options.highlightThreshold);
if (tt.find("<") == Glib::ustring::npos && tt.find(">") == Glib::ustring::npos) {
@@ -56,7 +56,7 @@ IndicateClippedPanel::IndicateClippedPanel (ImageArea* ia) : imageArea(ia)
indClippedS = Gtk::manage (new Gtk::ToggleButton ());
indClippedS->set_relief(Gtk::RELIEF_NONE);
- indClippedS->add (*Gtk::manage (new RTImage ("warnsh.png")));
+ indClippedS->add (*Gtk::manage (new RTImage ("warning-shadows.png")));
tt = Glib::ustring::compose("%1\n%2 = %3", M("MAIN_TOOLTIP_INDCLIPPEDS"), M("MAIN_TOOLTIP_THRESHOLD"), options.shadowThreshold);
if (tt.find("<") == Glib::ustring::npos && tt.find(">") == Glib::ustring::npos) {
diff --git a/rtgui/iptcpanel.cc b/rtgui/iptcpanel.cc
index cd0fe4050..0dafe940f 100644
--- a/rtgui/iptcpanel.cc
+++ b/rtgui/iptcpanel.cc
@@ -112,9 +112,9 @@ IPTCPanel::IPTCPanel ()
setExpandAlignProperties(addKW, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
delKW = Gtk::manage( new Gtk::Button () );
setExpandAlignProperties(delKW, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
- Gtk::Image* addKWImg = Gtk::manage( new RTImage ("list-add-small.png") );
+ Gtk::Image* addKWImg = Gtk::manage( new RTImage ("add-small.png") );
setExpandAlignProperties(addKWImg, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
- Gtk::Image* delKWImg = Gtk::manage( new RTImage ("list-remove-red-small.png") );
+ Gtk::Image* delKWImg = Gtk::manage( new RTImage ("remove-small.png") );
setExpandAlignProperties(delKWImg, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
addKW->add (*addKWImg);
delKW->add (*delKWImg);
@@ -162,9 +162,9 @@ IPTCPanel::IPTCPanel ()
setExpandAlignProperties(addSC, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
delSC = Gtk::manage( new Gtk::Button () );
setExpandAlignProperties(delSC, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
- Gtk::Image* addSCImg = Gtk::manage( new RTImage ("list-add-small.png") );
+ Gtk::Image* addSCImg = Gtk::manage( new RTImage ("add-small.png") );
setExpandAlignProperties(addSCImg, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
- Gtk::Image* delSCImg = Gtk::manage( new RTImage ("list-remove-red-small.png") );
+ Gtk::Image* delSCImg = Gtk::manage( new RTImage ("remove-small.png") );
setExpandAlignProperties(delSCImg, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
addSC->add (*addSCImg);
delSC->add (*delSCImg);
@@ -328,25 +328,25 @@ IPTCPanel::IPTCPanel ()
reset = Gtk::manage( new Gtk::Button () ); // M("IPTCPANEL_RESET")
reset->get_style_context()->add_class("Left");
- reset->set_image (*Gtk::manage(new RTImage ("gtk-undo-ltr.png", "gtk-undo-rtl.png")));
+ reset->set_image (*Gtk::manage(new RTImage ("undo.png", "redo.png")));
setExpandAlignProperties(reset, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
bbox->attach_next_to (*reset, Gtk::POS_LEFT, 1, 1);
file = Gtk::manage( new Gtk::Button () ); // M("IPTCPANEL_EMBEDDED")
file->get_style_context()->add_class("MiddleH");
- file->set_image (*Gtk::manage(new RTImage ("gtk-open.png")));
+ file->set_image (*Gtk::manage(new RTImage ("folder-open.png")));
setExpandAlignProperties(file, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
bbox->attach_next_to (*file, Gtk::POS_RIGHT, 1, 1);
copy = Gtk::manage( new Gtk::Button () );
copy->get_style_context()->add_class("MiddleH");
- copy->set_image (*Gtk::manage(new RTImage ("edit-copy.png")));
+ copy->set_image (*Gtk::manage(new RTImage ("copy.png")));
setExpandAlignProperties(copy, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
bbox->attach_next_to (*copy, Gtk::POS_RIGHT, 1, 1);
paste = Gtk::manage( new Gtk::Button () );
paste->get_style_context()->add_class("Right");
- paste->set_image (*Gtk::manage(new RTImage ("edit-paste.png")));
+ paste->set_image (*Gtk::manage(new RTImage ("paste.png")));
setExpandAlignProperties(paste, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
bbox->attach_next_to (*paste, Gtk::POS_RIGHT, 1, 1);
diff --git a/rtgui/lensgeom.cc b/rtgui/lensgeom.cc
index 7cae75d87..898fa1105 100644
--- a/rtgui/lensgeom.cc
+++ b/rtgui/lensgeom.cc
@@ -30,7 +30,8 @@ LensGeometry::LensGeometry () : FoldableToolPanel(this, "lensgeom", M("TP_LENSGE
pack_start (*fill);
autoCrop = Gtk::manage (new Gtk::Button (M("TP_LENSGEOM_AUTOCROP")));
- autoCrop->set_image (*Gtk::manage (new RTImage ("crop-auto.png")));
+ autoCrop->set_image (*Gtk::manage (new RTImage ("crop-auto-small.png")));
+ autoCrop->get_style_context()->add_class("independent");
pack_start (*autoCrop, Gtk::PACK_SHRINK, 2);
packBox = Gtk::manage (new ToolParamBlock ());
diff --git a/rtgui/main.cc b/rtgui/main.cc
index 327b0ab33..f345fecc8 100644
--- a/rtgui/main.cc
+++ b/rtgui/main.cc
@@ -100,7 +100,7 @@ static void myGdkLockEnter()
}
static void myGdkLockLeave()
{
- // Automatic gdk_flush for non main tread
+ // Automatic gdk_flush for non main thread
#if AUTO_GDK_FLUSH
//if (Glib::Thread::self() != mainThread) {
// gdk_flush();
diff --git a/rtgui/myicon.rc b/rtgui/myicon.rc
index b5f390783..88f5f79fa 100644
--- a/rtgui/myicon.rc
+++ b/rtgui/myicon.rc
@@ -1 +1 @@
-1 ICON "../rtdata/icons/RT.ico"
+1 ICON "../rtdata/images/non-themed/rawtherapee.ico"
diff --git a/rtgui/options.cc b/rtgui/options.cc
index 7350ba056..eb920a7d6 100644
--- a/rtgui/options.cc
+++ b/rtgui/options.cc
@@ -49,16 +49,16 @@ Options options;
Glib::ustring versionString = RTVERSION;
Glib::ustring paramFileExtension = ".pp3";
-Options::Options ()
+Options::Options()
{
defProfError = 0;
- setDefaults ();
+ setDefaults();
}
const char *DefaultLanguage = "English (US)";
-inline bool Options::checkProfilePath (Glib::ustring &path)
+inline bool Options::checkProfilePath(Glib::ustring &path)
{
if (path.empty()) {
return false;
@@ -66,18 +66,18 @@ inline bool Options::checkProfilePath (Glib::ustring &path)
Glib::ustring p = getUserProfilePath();
- if (!p.empty() && Glib::file_test (path + paramFileExtension, Glib::FILE_TEST_EXISTS)) {
+ if (!p.empty() && Glib::file_test(path + paramFileExtension, Glib::FILE_TEST_EXISTS)) {
return true;
}
p = getGlobalProfilePath();
- return !p.empty() && Glib::file_test (path + paramFileExtension, Glib::FILE_TEST_EXISTS);
+ return !p.empty() && Glib::file_test(path + paramFileExtension, Glib::FILE_TEST_EXISTS);
}
-bool Options::checkDirPath (Glib::ustring &path, Glib::ustring errString)
+bool Options::checkDirPath(Glib::ustring &path, Glib::ustring errString)
{
- if (Glib::file_test (path, Glib::FILE_TEST_EXISTS) && Glib::file_test (path, Glib::FILE_TEST_IS_DIR)) {
+ if (Glib::file_test(path, Glib::FILE_TEST_EXISTS) && Glib::file_test(path, Glib::FILE_TEST_IS_DIR)) {
return true;
} else {
if (!errString.empty()) {
@@ -96,53 +96,53 @@ void Options::updatePaths()
userProfilePath = "";
globalProfilePath = "";
- if (Glib::path_is_absolute (profilePath)) {
+ if (Glib::path_is_absolute(profilePath)) {
// absolute path
- if (!checkDirPath (profilePath, "")) {
- g_mkdir_with_parents (profilePath.c_str (), 511);
+ if (!checkDirPath(profilePath, "")) {
+ g_mkdir_with_parents(profilePath.c_str(), 511);
- if (!checkDirPath (profilePath, "")) { // had problems with mkdir_with_parents return value on OS X, just check dir again
- Glib::ustring msg = Glib::ustring::compose ("Creation of the user's processing profile directory \"%1\" failed!\n", profilePath);
- throw Error (msg);
+ if (!checkDirPath(profilePath, "")) { // had problems with mkdir_with_parents return value on OS X, just check dir again
+ Glib::ustring msg = Glib::ustring::compose("Creation of the user's processing profile directory \"%1\" failed!\n", profilePath);
+ throw Error(msg);
}
}
- if (checkDirPath (profilePath, "Error: the user's processing profile path doesn't point to a directory or doesn't exist!\n")) {
+ if (checkDirPath(profilePath, "Error: the user's processing profile path doesn't point to a directory or doesn't exist!\n")) {
userProfilePath = profilePath;
- tmpPath = Glib::build_filename (argv0, "profiles");
+ tmpPath = Glib::build_filename(argv0, "profiles");
- if (checkDirPath (tmpPath, "Error: the global's processing profile path doesn't point to a directory or doesn't exist!\n")) {
+ if (checkDirPath(tmpPath, "Error: the global's processing profile path doesn't point to a directory or doesn't exist!\n")) {
if (userProfilePath != tmpPath) {
globalProfilePath = tmpPath;
}
}
} else {
- tmpPath = Glib::build_filename (argv0, "profiles");
+ tmpPath = Glib::build_filename(argv0, "profiles");
- if (checkDirPath (tmpPath, "Error: the global's processing profile path doesn't point to a directory or doesn't exist!\n")) {
+ if (checkDirPath(tmpPath, "Error: the global's processing profile path doesn't point to a directory or doesn't exist!\n")) {
globalProfilePath = tmpPath;
}
}
} else {
// relative paths
- tmpPath = Glib::build_filename (rtdir, profilePath);
+ tmpPath = Glib::build_filename(rtdir, profilePath);
- if (!checkDirPath (tmpPath, "")) {
- g_mkdir_with_parents (tmpPath.c_str (), 511);
+ if (!checkDirPath(tmpPath, "")) {
+ g_mkdir_with_parents(tmpPath.c_str(), 511);
- if (!checkDirPath (tmpPath, "")) {
- Glib::ustring msg = Glib::ustring::compose ("Creation of the user's processing profile directory \"%1\" failed!\n", tmpPath.c_str());
- throw Error (msg);
+ if (!checkDirPath(tmpPath, "")) {
+ Glib::ustring msg = Glib::ustring::compose("Creation of the user's processing profile directory \"%1\" failed!\n", tmpPath.c_str());
+ throw Error(msg);
}
}
- if (checkDirPath (tmpPath, "Error: the user's processing profile path doesn't point to a directory!\n")) {
+ if (checkDirPath(tmpPath, "Error: the user's processing profile path doesn't point to a directory!\n")) {
userProfilePath = tmpPath;
}
- tmpPath = Glib::build_filename (argv0, "profiles");
+ tmpPath = Glib::build_filename(argv0, "profiles");
- if (checkDirPath (tmpPath, "Error: the user's processing profile path doesn't point to a directory or doesn't exist!\n")) {
+ if (checkDirPath(tmpPath, "Error: the user's processing profile path doesn't point to a directory or doesn't exist!\n")) {
globalProfilePath = tmpPath;
}
}
@@ -150,54 +150,57 @@ void Options::updatePaths()
Glib::ustring preferredPath = getPreferredProfilePath();
// Paths are updated only if the user or global profile path is set
- if (lastRgbCurvesDir.empty() || !Glib::file_test (lastRgbCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastRgbCurvesDir, Glib::FILE_TEST_IS_DIR)) {
+ if (lastRgbCurvesDir.empty() || !Glib::file_test(lastRgbCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastRgbCurvesDir, Glib::FILE_TEST_IS_DIR)) {
lastRgbCurvesDir = preferredPath;
}
- if (lastLabCurvesDir.empty() || !Glib::file_test (lastLabCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastLabCurvesDir, Glib::FILE_TEST_IS_DIR)) {
+ if (lastLabCurvesDir.empty() || !Glib::file_test(lastLabCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastLabCurvesDir, Glib::FILE_TEST_IS_DIR)) {
lastLabCurvesDir = preferredPath;
}
- if (lastRetinexDir.empty() || !Glib::file_test (lastRetinexDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastLabCurvesDir, Glib::FILE_TEST_IS_DIR)) {
+ if (lastRetinexDir.empty() || !Glib::file_test(lastRetinexDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastLabCurvesDir, Glib::FILE_TEST_IS_DIR)) {
lastRetinexDir = preferredPath;
}
- if (lastDenoiseCurvesDir.empty() || !Glib::file_test (lastDenoiseCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastDenoiseCurvesDir, Glib::FILE_TEST_IS_DIR)) {
+ if (lastDenoiseCurvesDir.empty() || !Glib::file_test(lastDenoiseCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastDenoiseCurvesDir, Glib::FILE_TEST_IS_DIR)) {
lastDenoiseCurvesDir = preferredPath;
}
- if (lastWaveletCurvesDir.empty() || !Glib::file_test (lastWaveletCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastWaveletCurvesDir, Glib::FILE_TEST_IS_DIR)) {
+ if (lastWaveletCurvesDir.empty() || !Glib::file_test(lastWaveletCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastWaveletCurvesDir, Glib::FILE_TEST_IS_DIR)) {
lastWaveletCurvesDir = preferredPath;
}
- if (lastPFCurvesDir.empty() || !Glib::file_test (lastPFCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastPFCurvesDir, Glib::FILE_TEST_IS_DIR)) {
+ if (lastPFCurvesDir.empty() || !Glib::file_test(lastPFCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastPFCurvesDir, Glib::FILE_TEST_IS_DIR)) {
lastPFCurvesDir = preferredPath;
}
- if (lastHsvCurvesDir.empty() || !Glib::file_test (lastHsvCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastHsvCurvesDir, Glib::FILE_TEST_IS_DIR)) {
+ if (lastHsvCurvesDir.empty() || !Glib::file_test(lastHsvCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastHsvCurvesDir, Glib::FILE_TEST_IS_DIR)) {
lastHsvCurvesDir = preferredPath;
}
- if (lastToneCurvesDir.empty() || !Glib::file_test (lastToneCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastToneCurvesDir, Glib::FILE_TEST_IS_DIR)) {
+ if (lastToneCurvesDir.empty() || !Glib::file_test(lastToneCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastToneCurvesDir, Glib::FILE_TEST_IS_DIR)) {
lastToneCurvesDir = preferredPath;
}
- if (lastProfilingReferenceDir.empty() || !Glib::file_test (lastProfilingReferenceDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastProfilingReferenceDir, Glib::FILE_TEST_IS_DIR)) {
+ if (lastProfilingReferenceDir.empty() || !Glib::file_test(lastProfilingReferenceDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastProfilingReferenceDir, Glib::FILE_TEST_IS_DIR)) {
lastProfilingReferenceDir = preferredPath;
}
- if (lastVibranceCurvesDir.empty() || !Glib::file_test (lastVibranceCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastVibranceCurvesDir, Glib::FILE_TEST_IS_DIR)) {
+ if (lastVibranceCurvesDir.empty() || !Glib::file_test(lastVibranceCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastVibranceCurvesDir, Glib::FILE_TEST_IS_DIR)) {
lastVibranceCurvesDir = preferredPath;
}
- if (loadSaveProfilePath.empty() || !Glib::file_test (loadSaveProfilePath, Glib::FILE_TEST_EXISTS) || !Glib::file_test (loadSaveProfilePath, Glib::FILE_TEST_IS_DIR)) {
+ if (loadSaveProfilePath.empty() || !Glib::file_test(loadSaveProfilePath, Glib::FILE_TEST_EXISTS) || !Glib::file_test(loadSaveProfilePath, Glib::FILE_TEST_IS_DIR)) {
loadSaveProfilePath = preferredPath;
}
- if (lastBWCurvesDir.empty() || !Glib::file_test (lastBWCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test (lastBWCurvesDir, Glib::FILE_TEST_IS_DIR)) {
+ if (lastBWCurvesDir.empty() || !Glib::file_test(lastBWCurvesDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastBWCurvesDir, Glib::FILE_TEST_IS_DIR)) {
lastBWCurvesDir = preferredPath;
}
+ if (lastICCProfCreatorDir.empty() || !Glib::file_test(lastICCProfCreatorDir, Glib::FILE_TEST_EXISTS) || !Glib::file_test(lastICCProfCreatorDir, Glib::FILE_TEST_IS_DIR)) {
+ lastICCProfCreatorDir = preferredPath;
+ }
}
Glib::ustring Options::getPreferredProfilePath()
@@ -218,7 +221,7 @@ Glib::ustring Options::getPreferredProfilePath()
*@return Send back the absolute path of the given filename or "Neutral" if "Neutral" has been set to profName. Implementor will have
* to test for this particular value. If the absolute path is invalid (e.g. the file doesn't exist), it will return an empty string.
*/
-Glib::ustring Options::findProfilePath (Glib::ustring &profName)
+Glib::ustring Options::findProfilePath(Glib::ustring &profName)
{
if (profName.empty()) {
return "";
@@ -232,41 +235,41 @@ Glib::ustring Options::findProfilePath (Glib::ustring &profName)
return profName;
}
- Glib::ustring p = profName.substr (0, 4);
+ Glib::ustring p = profName.substr(0, 4);
if (p == "${U}") {
// the path starts by the User virtual path
p = getUserProfilePath();
- Glib::ustring fullPath = Glib::build_filename (p, profName.substr (5) + paramFileExtension);
+ Glib::ustring fullPath = Glib::build_filename(p, profName.substr(5) + paramFileExtension);
- if (!p.empty() && Glib::file_test (fullPath, Glib::FILE_TEST_EXISTS)) {
- return Glib::path_get_dirname (fullPath);
+ if (!p.empty() && Glib::file_test(fullPath, Glib::FILE_TEST_EXISTS)) {
+ return Glib::path_get_dirname(fullPath);
}
} else if (p == "${G}") {
// the path starts by the User virtual path
p = getGlobalProfilePath();
- Glib::ustring fullPath = Glib::build_filename (p, profName.substr (5) + paramFileExtension);
+ Glib::ustring fullPath = Glib::build_filename(p, profName.substr(5) + paramFileExtension);
- if (!p.empty() && Glib::file_test (fullPath, Glib::FILE_TEST_EXISTS)) {
- return Glib::path_get_dirname (fullPath);
+ if (!p.empty() && Glib::file_test(fullPath, Glib::FILE_TEST_EXISTS)) {
+ return Glib::path_get_dirname(fullPath);
}
} else {
// compatibility case -> convert the path to the new format
p = getUserProfilePath();
- Glib::ustring fullPath = Glib::build_filename (p, profName + paramFileExtension);
+ Glib::ustring fullPath = Glib::build_filename(p, profName + paramFileExtension);
- if (!p.empty() && Glib::file_test (fullPath, Glib::FILE_TEST_EXISTS)) {
+ if (!p.empty() && Glib::file_test(fullPath, Glib::FILE_TEST_EXISTS)) {
// update the profile path
- profName = Glib::build_filename ("${U}", profName);
- return Glib::path_get_dirname (fullPath);
+ profName = Glib::build_filename("${U}", profName);
+ return Glib::path_get_dirname(fullPath);
}
p = getGlobalProfilePath();
- fullPath = Glib::build_filename (p, profName + paramFileExtension);
+ fullPath = Glib::build_filename(p, profName + paramFileExtension);
- if (!p.empty() && Glib::file_test (fullPath, Glib::FILE_TEST_EXISTS)) {
- profName = Glib::build_filename ("${G}", profName);
- return Glib::path_get_dirname (fullPath);
+ if (!p.empty() && Glib::file_test(fullPath, Glib::FILE_TEST_EXISTS)) {
+ profName = Glib::build_filename("${G}", profName);
+ return Glib::path_get_dirname(fullPath);
}
}
@@ -274,7 +277,7 @@ Glib::ustring Options::findProfilePath (Glib::ustring &profName)
}
-void Options::setDefaults ()
+void Options::setDefaults()
{
windowWidth = 1200;
@@ -390,21 +393,21 @@ void Options::setDefaults ()
CPBKeys = CPBKT_TID;
editorToSendTo = 1;
favoriteDirs.clear();
- tpOpen.clear ();
+ tpOpen.clear();
autoSaveTpOpen = true;
//crvOpen.clear ();
- parseExtensions.clear ();
- parseExtensionsEnabled.clear ();
- parsedExtensions.clear ();
+ parseExtensions.clear();
+ parseExtensionsEnabled.clear();
+ parsedExtensions.clear();
renameUseTemplates = false;
- renameTemplates.clear ();
- thumbnailZoomRatios.clear ();
- thumbnailZoomRatios.push_back (0.2);
- thumbnailZoomRatios.push_back (0.3);
- thumbnailZoomRatios.push_back (0.45);
- thumbnailZoomRatios.push_back (0.6);
- thumbnailZoomRatios.push_back (0.8);
- thumbnailZoomRatios.push_back (1.0);
+ renameTemplates.clear();
+ thumbnailZoomRatios.clear();
+ thumbnailZoomRatios.push_back(0.2);
+ thumbnailZoomRatios.push_back(0.3);
+ thumbnailZoomRatios.push_back(0.45);
+ thumbnailZoomRatios.push_back(0.6);
+ thumbnailZoomRatios.push_back(0.8);
+ thumbnailZoomRatios.push_back(1.0);
overlayedFileNames = false;
filmStripOverlayedFileNames = false;
internalThumbIfUntouched = true; // if TRUE, only fast, internal preview images are taken if the image is not edited yet
@@ -441,6 +444,22 @@ void Options::setDefaults ()
menuGroupProfileOperations = true;
menuGroupExtProg = true;
+ ICCPC_primariesPreset = "sRGB",
+ ICCPC_redPrimaryX = 0.6400;
+ ICCPC_redPrimaryY = 0.3300;
+ ICCPC_greenPrimaryX = 0.3000;
+ ICCPC_greenPrimaryY = 0.6000;
+ ICCPC_bluePrimaryX = 0.1500;
+ ICCPC_bluePrimaryY = 0.0600;
+ ICCPC_gammaPreset = "Custom";
+ ICCPC_gamma = 2.4;
+ ICCPC_slope = 12.92;
+ ICCPC_profileVersion = "v4";
+ ICCPC_illuminant = "DEF";
+ ICCPC_description = "";
+ ICCPC_copyright = Options::getICCProfileCopyright();
+ ICCPC_appendParamsToDesc = false;
+
fastexport_bypass_sharpening = true;
fastexport_bypass_sharpenEdge = true;
fastexport_bypass_sharpenMicro = true;
@@ -462,12 +481,11 @@ void Options::setDefaults ()
fastexport_bypass_raw_ca = true;
fastexport_bypass_raw_df = true;
fastexport_bypass_raw_ff = true;
- fastexport_icm_input = "(camera)";
- fastexport_icm_working = "ProPhoto";
- fastexport_icm_output = "RT_sRGB";
+ fastexport_icm_input_profile = "(camera)";
+ fastexport_icm_working_profile = "ProPhoto";
+ fastexport_icm_output_profile = options.rtSettings.srgb;
fastexport_icm_outputIntent = rtengine::RI_RELATIVE;
fastexport_icm_outputBPC = true;
- fastexport_icm_gamma = "default";
fastexport_resize_enabled = true;
fastexport_resize_scale = 1;
fastexport_resize_appliesTo = "Cropped area";
@@ -502,10 +520,10 @@ void Options::setDefaults ()
rtSettings.darkFramesPath = "";
rtSettings.flatFieldsPath = "";
#ifdef WIN32
- const gchar* sysRoot = g_getenv ("SystemRoot"); // Returns e.g. "c:\Windows"
+ const gchar* sysRoot = g_getenv("SystemRoot"); // Returns e.g. "c:\Windows"
if (sysRoot != NULL) {
- rtSettings.iccDirectory = Glib::ustring (sysRoot) + Glib::ustring ("\\System32\\spool\\drivers\\color");
+ rtSettings.iccDirectory = Glib::ustring(sysRoot) + Glib::ustring("\\System32\\spool\\drivers\\color");
} else {
rtSettings.iccDirectory = "C:\\WINDOWS\\System32\\spool\\drivers\\color";
}
@@ -531,16 +549,16 @@ void Options::setDefaults ()
rtSettings.monitorIntent = rtengine::RI_RELATIVE;
rtSettings.monitorBPC = true;
rtSettings.autoMonitorProfile = false;
- rtSettings.adobe = "RT_Medium_gsRGB"; // put the name of yours profiles (here windows)
- rtSettings.prophoto = "RT_Large_gBT709"; // these names appear in the menu "output profile"
- rtSettings.prophoto10 = "RT_Large_g10"; // these names appear in the menu "output profile"
- rtSettings.srgb10 = "RT_sRGB_g10";
- rtSettings.widegamut = "WideGamutRGB";
- rtSettings.srgb = "RT_sRGB";
- rtSettings.bruce = "Bruce";
- rtSettings.beta = "BetaRGB";
- rtSettings.best = "BestRGB";
- rtSettings.rec2020 = "Rec2020";
+ rtSettings.adobe = "RTv4_Medium"; // put the name of yours profiles (here windows)
+ rtSettings.prophoto = "RTv4_Large"; // these names appear in the menu "output profile"
+ rtSettings.widegamut = "RTv4_Wide";
+ rtSettings.srgb = "RTv4_sRGB";
+ rtSettings.bruce = "RTv4_Bruce";
+ rtSettings.beta = "RTv4_Beta";
+ rtSettings.best = "RTv4_Best";
+ rtSettings.rec2020 = "RTv4_Rec2020";
+ rtSettings.ACESp0 = "RTv4_ACES-AP0";
+ rtSettings.ACESp1 = "RTv4_ACES-AP1";
rtSettings.verbose = false;
rtSettings.gamutICC = true;
rtSettings.gamutLch = true;
@@ -587,6 +605,7 @@ void Options::setDefaults ()
lastProfilingReferenceDir = "";
lastBWCurvesDir = "";
lastLensProfileDir = "";
+ lastICCProfCreatorDir = "";
gimpPluginShowInfoDialog = true;
maxRecentFolders = 15;
rtSettings.lensfunDbDirectory = ""; // set also in main.cc and main-cli.cc
@@ -596,480 +615,480 @@ void Options::setDefaults ()
rtSettings.thumbnail_inspector_mode = rtengine::Settings::ThumbnailInspectorMode::JPEG;
}
-Options* Options::copyFrom (Options* other)
+Options* Options::copyFrom(Options* other)
{
*this = *other;
return this;
}
-void Options::filterOutParsedExtensions ()
+void Options::filterOutParsedExtensions()
{
parsedExtensions.clear();
for (unsigned int i = 0; i < parseExtensions.size(); i++)
if (parseExtensionsEnabled[i]) {
- parsedExtensions.push_back (parseExtensions[i].lowercase());
+ parsedExtensions.push_back(parseExtensions[i].lowercase());
}
}
-void Options::readFromFile (Glib::ustring fname)
+void Options::readFromFile(Glib::ustring fname)
{
- setlocale (LC_NUMERIC, "C"); // to set decimal point to "."
+ setlocale(LC_NUMERIC, "C"); // to set decimal point to "."
Glib::KeyFile keyFile;
- if ( !Glib::file_test (fname, Glib::FILE_TEST_EXISTS)) {
- Glib::ustring msg = Glib::ustring::compose ("Options file %1 does not exist", fname);
- throw Error (msg);
+ if (!Glib::file_test(fname, Glib::FILE_TEST_EXISTS)) {
+ Glib::ustring msg = Glib::ustring::compose("Options file %1 does not exist", fname);
+ throw Error(msg);
}
try {
- if (keyFile.load_from_file (fname)) {
+ if (keyFile.load_from_file(fname)) {
// --------------------------------------------------------------------------------------------------------
- if (keyFile.has_group ("General")) {
- if (keyFile.has_key ("General", "TabbedEditor")) {
- tabbedUI = keyFile.get_boolean ("General", "TabbedEditor");
+ if (keyFile.has_group("General")) {
+ if (keyFile.has_key("General", "TabbedEditor")) {
+ tabbedUI = keyFile.get_boolean("General", "TabbedEditor");
}
- if (keyFile.has_key ("General", "StartupDirectory")) {
- if ( keyFile.get_string ("General", "StartupDirectory") == "home") {
+ if (keyFile.has_key("General", "StartupDirectory")) {
+ if (keyFile.get_string("General", "StartupDirectory") == "home") {
startupDir = STARTUPDIR_HOME;
- } else if ( keyFile.get_string ("General", "StartupDirectory") == "current") {
+ } else if (keyFile.get_string("General", "StartupDirectory") == "current") {
startupDir = STARTUPDIR_CURRENT;
- } else if ( keyFile.get_string ("General", "StartupDirectory") == "last") {
+ } else if (keyFile.get_string("General", "StartupDirectory") == "last") {
startupDir = STARTUPDIR_LAST;
- } else if ( keyFile.get_string ("General", "StartupDirectory") == "custom") {
+ } else if (keyFile.get_string("General", "StartupDirectory") == "custom") {
startupDir = STARTUPDIR_CUSTOM;
}
}
- if (keyFile.has_key ("General", "StartupPath")) {
- startupPath = keyFile.get_string ("General", "StartupPath");
+ if (keyFile.has_key("General", "StartupPath")) {
+ startupPath = keyFile.get_string("General", "StartupPath");
}
- if (keyFile.has_key ("General", "DateFormat")) {
- dateFormat = keyFile.get_string ("General", "DateFormat");
+ if (keyFile.has_key("General", "DateFormat")) {
+ dateFormat = keyFile.get_string("General", "DateFormat");
}
- if (keyFile.has_key ("General", "AdjusterMinDelay")) {
- adjusterMinDelay = keyFile.get_integer ("General", "AdjusterMinDelay");
+ if (keyFile.has_key("General", "AdjusterMinDelay")) {
+ adjusterMinDelay = keyFile.get_integer("General", "AdjusterMinDelay");
}
- if (keyFile.has_key ("General", "AdjusterMaxDelay")) {
- adjusterMaxDelay = keyFile.get_integer ("General", "AdjusterMaxDelay");
+ if (keyFile.has_key("General", "AdjusterMaxDelay")) {
+ adjusterMaxDelay = keyFile.get_integer("General", "AdjusterMaxDelay");
}
- if (keyFile.has_key ("General", "StoreLastProfile")) {
- savesParamsAtExit = keyFile.get_boolean ("General", "StoreLastProfile");
+ if (keyFile.has_key("General", "StoreLastProfile")) {
+ savesParamsAtExit = keyFile.get_boolean("General", "StoreLastProfile");
}
- if (keyFile.has_key ("General", "MultiUser")) {
- multiUser = keyFile.get_boolean ("General", "MultiUser");
+ if (keyFile.has_key("General", "MultiUser")) {
+ multiUser = keyFile.get_boolean("General", "MultiUser");
}
- if (keyFile.has_key ("General", "Version")) {
- version = keyFile.get_string ("General", "Version");
+ if (keyFile.has_key("General", "Version")) {
+ version = keyFile.get_string("General", "Version");
}
- if (keyFile.has_key ("General", "Language")) {
- language = keyFile.get_string ("General", "Language");
+ if (keyFile.has_key("General", "Language")) {
+ language = keyFile.get_string("General", "Language");
}
- if (keyFile.has_key ("General", "LanguageAutoDetect")) {
- languageAutoDetect = keyFile.get_boolean ("General", "LanguageAutoDetect");
+ if (keyFile.has_key("General", "LanguageAutoDetect")) {
+ languageAutoDetect = keyFile.get_boolean("General", "LanguageAutoDetect");
}
- if (keyFile.has_key ("General", "Theme")) {
- theme = keyFile.get_string ("General", "Theme");
+ if (keyFile.has_key("General", "Theme")) {
+ theme = keyFile.get_string("General", "Theme");
}
- if ( keyFile.has_key ("General", "DarkFramesPath")) {
- rtSettings.darkFramesPath = keyFile.get_string ("General", "DarkFramesPath");
+ if (keyFile.has_key("General", "DarkFramesPath")) {
+ rtSettings.darkFramesPath = keyFile.get_string("General", "DarkFramesPath");
}
- if ( keyFile.has_key ("General", "FlatFieldsPath")) {
- rtSettings.flatFieldsPath = keyFile.get_string ("General", "FlatFieldsPath");
+ if (keyFile.has_key("General", "FlatFieldsPath")) {
+ rtSettings.flatFieldsPath = keyFile.get_string("General", "FlatFieldsPath");
}
- if ( keyFile.has_key ("General", "Verbose")) {
- rtSettings.verbose = keyFile.get_boolean ( "General", "Verbose");
+ if (keyFile.has_key("General", "Verbose")) {
+ rtSettings.verbose = keyFile.get_boolean("General", "Verbose");
}
}
- if (keyFile.has_group ("External Editor")) {
- if (keyFile.has_key ("External Editor", "EditorKind")) {
- editorToSendTo = keyFile.get_integer ("External Editor", "EditorKind");
+ if (keyFile.has_group("External Editor")) {
+ if (keyFile.has_key("External Editor", "EditorKind")) {
+ editorToSendTo = keyFile.get_integer("External Editor", "EditorKind");
}
- if (keyFile.has_key ("External Editor", "GimpDir")) {
- gimpDir = keyFile.get_string ("External Editor", "GimpDir");
+ if (keyFile.has_key("External Editor", "GimpDir")) {
+ gimpDir = keyFile.get_string("External Editor", "GimpDir");
}
- if (keyFile.has_key ("External Editor", "PhotoshopDir")) {
- psDir = keyFile.get_string ("External Editor", "PhotoshopDir");
+ if (keyFile.has_key("External Editor", "PhotoshopDir")) {
+ psDir = keyFile.get_string("External Editor", "PhotoshopDir");
}
- if (keyFile.has_key ("External Editor", "CustomEditor")) {
- customEditorProg = keyFile.get_string ("External Editor", "CustomEditor");
+ if (keyFile.has_key("External Editor", "CustomEditor")) {
+ customEditorProg = keyFile.get_string("External Editor", "CustomEditor");
}
}
- if (keyFile.has_group ("Output")) {
- if (keyFile.has_key ("Output", "Format")) {
- saveFormat.format = keyFile.get_string ("Output", "Format");
+ if (keyFile.has_group("Output")) {
+ if (keyFile.has_key("Output", "Format")) {
+ saveFormat.format = keyFile.get_string("Output", "Format");
}
- if (keyFile.has_key ("Output", "JpegQuality")) {
- saveFormat.jpegQuality = keyFile.get_integer ("Output", "JpegQuality");
+ if (keyFile.has_key("Output", "JpegQuality")) {
+ saveFormat.jpegQuality = keyFile.get_integer("Output", "JpegQuality");
}
- if (keyFile.has_key ("Output", "JpegSubSamp")) {
- saveFormat.jpegSubSamp = keyFile.get_integer ("Output", "JpegSubSamp");
+ if (keyFile.has_key("Output", "JpegSubSamp")) {
+ saveFormat.jpegSubSamp = keyFile.get_integer("Output", "JpegSubSamp");
}
- if (keyFile.has_key ("Output", "PngBps")) {
- saveFormat.pngBits = keyFile.get_integer ("Output", "PngBps");
+ if (keyFile.has_key("Output", "PngBps")) {
+ saveFormat.pngBits = keyFile.get_integer("Output", "PngBps");
}
- if (keyFile.has_key ("Output", "TiffBps")) {
- saveFormat.tiffBits = keyFile.get_integer ("Output", "TiffBps");
+ if (keyFile.has_key("Output", "TiffBps")) {
+ saveFormat.tiffBits = keyFile.get_integer("Output", "TiffBps");
}
- if (keyFile.has_key ("Output", "TiffUncompressed")) {
- saveFormat.tiffUncompressed = keyFile.get_boolean ("Output", "TiffUncompressed");
+ if (keyFile.has_key("Output", "TiffUncompressed")) {
+ saveFormat.tiffUncompressed = keyFile.get_boolean("Output", "TiffUncompressed");
}
- if (keyFile.has_key ("Output", "SaveProcParams")) {
- saveFormat.saveParams = keyFile.get_boolean ("Output", "SaveProcParams");
+ if (keyFile.has_key("Output", "SaveProcParams")) {
+ saveFormat.saveParams = keyFile.get_boolean("Output", "SaveProcParams");
}
- if (keyFile.has_key ("Output", "FormatBatch")) {
- saveFormatBatch.format = keyFile.get_string ("Output", "FormatBatch");
+ if (keyFile.has_key("Output", "FormatBatch")) {
+ saveFormatBatch.format = keyFile.get_string("Output", "FormatBatch");
}
- if (keyFile.has_key ("Output", "JpegQualityBatch")) {
- saveFormatBatch.jpegQuality = keyFile.get_integer ("Output", "JpegQualityBatch");
+ if (keyFile.has_key("Output", "JpegQualityBatch")) {
+ saveFormatBatch.jpegQuality = keyFile.get_integer("Output", "JpegQualityBatch");
}
- if (keyFile.has_key ("Output", "JpegSubSampBatch")) {
- saveFormatBatch.jpegSubSamp = keyFile.get_integer ("Output", "JpegSubSampBatch");
+ if (keyFile.has_key("Output", "JpegSubSampBatch")) {
+ saveFormatBatch.jpegSubSamp = keyFile.get_integer("Output", "JpegSubSampBatch");
}
- if (keyFile.has_key ("Output", "PngBpsBatch")) {
- saveFormatBatch.pngBits = keyFile.get_integer ("Output", "PngBpsBatch");
+ if (keyFile.has_key("Output", "PngBpsBatch")) {
+ saveFormatBatch.pngBits = keyFile.get_integer("Output", "PngBpsBatch");
}
- if (keyFile.has_key ("Output", "TiffBpsBatch")) {
- saveFormatBatch.tiffBits = keyFile.get_integer ("Output", "TiffBpsBatch");
+ if (keyFile.has_key("Output", "TiffBpsBatch")) {
+ saveFormatBatch.tiffBits = keyFile.get_integer("Output", "TiffBpsBatch");
}
- if (keyFile.has_key ("Output", "TiffUncompressedBatch")) {
- saveFormatBatch.tiffUncompressed = keyFile.get_boolean ("Output", "TiffUncompressedBatch");
+ if (keyFile.has_key("Output", "TiffUncompressedBatch")) {
+ saveFormatBatch.tiffUncompressed = keyFile.get_boolean("Output", "TiffUncompressedBatch");
}
- if (keyFile.has_key ("Output", "SaveProcParamsBatch")) {
- saveFormatBatch.saveParams = keyFile.get_boolean ("Output", "SaveProcParamsBatch");
+ if (keyFile.has_key("Output", "SaveProcParamsBatch")) {
+ saveFormatBatch.saveParams = keyFile.get_boolean("Output", "SaveProcParamsBatch");
}
- if (keyFile.has_key ("Output", "Path")) {
- savePathTemplate = keyFile.get_string ("Output", "Path");
+ if (keyFile.has_key("Output", "Path")) {
+ savePathTemplate = keyFile.get_string("Output", "Path");
}
- if (keyFile.has_key ("Output", "PathTemplate")) {
- savePathTemplate = keyFile.get_string ("Output", "PathTemplate");
+ if (keyFile.has_key("Output", "PathTemplate")) {
+ savePathTemplate = keyFile.get_string("Output", "PathTemplate");
}
- if (keyFile.has_key ("Output", "PathFolder")) {
- savePathFolder = keyFile.get_string ("Output", "PathFolder");
+ if (keyFile.has_key("Output", "PathFolder")) {
+ savePathFolder = keyFile.get_string("Output", "PathFolder");
}
- if (keyFile.has_key ("Output", "AutoSuffix")) {
- autoSuffix = keyFile.get_boolean ("Output", "AutoSuffix");
+ if (keyFile.has_key("Output", "AutoSuffix")) {
+ autoSuffix = keyFile.get_boolean("Output", "AutoSuffix");
}
- if (keyFile.has_key ("Output", "ForceFormatOpts")) {
- forceFormatOpts = keyFile.get_boolean ("Output", "ForceFormatOpts");
+ if (keyFile.has_key("Output", "ForceFormatOpts")) {
+ forceFormatOpts = keyFile.get_boolean("Output", "ForceFormatOpts");
}
- if (keyFile.has_key ("Output", "SaveMethodNum")) {
- saveMethodNum = keyFile.get_integer ("Output", "SaveMethodNum");
+ if (keyFile.has_key("Output", "SaveMethodNum")) {
+ saveMethodNum = keyFile.get_integer("Output", "SaveMethodNum");
}
- if (keyFile.has_key ("Output", "UsePathTemplate")) {
- saveUsePathTemplate = keyFile.get_boolean ("Output", "UsePathTemplate");
+ if (keyFile.has_key("Output", "UsePathTemplate")) {
+ saveUsePathTemplate = keyFile.get_boolean("Output", "UsePathTemplate");
}
- if (keyFile.has_key ("Output", "LastSaveAsPath")) {
- lastSaveAsPath = keyFile.get_string ("Output", "LastSaveAsPath");
+ if (keyFile.has_key("Output", "LastSaveAsPath")) {
+ lastSaveAsPath = keyFile.get_string("Output", "LastSaveAsPath");
}
- if (keyFile.has_key ("Output", "OverwriteOutputFile")) {
- overwriteOutputFile = keyFile.get_boolean ("Output", "OverwriteOutputFile");
+ if (keyFile.has_key("Output", "OverwriteOutputFile")) {
+ overwriteOutputFile = keyFile.get_boolean("Output", "OverwriteOutputFile");
}
}
- if (keyFile.has_group ("Profiles")) {
- if (keyFile.has_key ("Profiles", "Directory")) {
- profilePath = keyFile.get_string ("Profiles", "Directory");
+ if (keyFile.has_group("Profiles")) {
+ if (keyFile.has_key("Profiles", "Directory")) {
+ profilePath = keyFile.get_string("Profiles", "Directory");
}
- if (keyFile.has_key ("Profiles", "UseBundledProfiles")) {
- useBundledProfiles = keyFile.get_boolean ("Profiles", "UseBundledProfiles");
+ if (keyFile.has_key("Profiles", "UseBundledProfiles")) {
+ useBundledProfiles = keyFile.get_boolean("Profiles", "UseBundledProfiles");
}
- if (keyFile.has_key ("Profiles", "LoadSaveProfilePath")) {
- loadSaveProfilePath = keyFile.get_string ("Profiles", "LoadSaveProfilePath");
+ if (keyFile.has_key("Profiles", "LoadSaveProfilePath")) {
+ loadSaveProfilePath = keyFile.get_string("Profiles", "LoadSaveProfilePath");
}
- if (keyFile.has_key ("Profiles", "RawDefault")) {
- defProfRaw = keyFile.get_string ("Profiles", "RawDefault");
+ if (keyFile.has_key("Profiles", "RawDefault")) {
+ defProfRaw = keyFile.get_string("Profiles", "RawDefault");
}
- if (keyFile.has_key ("Profiles", "ImgDefault")) {
- defProfImg = keyFile.get_string ("Profiles", "ImgDefault");
+ if (keyFile.has_key("Profiles", "ImgDefault")) {
+ defProfImg = keyFile.get_string("Profiles", "ImgDefault");
}
- if (keyFile.has_key ("Profiles", "FilledProfile")) {
- filledProfile = keyFile.get_boolean ("Profiles", "FilledProfile");
+ if (keyFile.has_key("Profiles", "FilledProfile")) {
+ filledProfile = keyFile.get_boolean("Profiles", "FilledProfile");
}
- if (keyFile.has_key ("Profiles", "SaveParamsWithFile")) {
- saveParamsFile = keyFile.get_boolean ("Profiles", "SaveParamsWithFile");
+ if (keyFile.has_key("Profiles", "SaveParamsWithFile")) {
+ saveParamsFile = keyFile.get_boolean("Profiles", "SaveParamsWithFile");
}
- if (keyFile.has_key ("Profiles", "SaveParamsToCache")) {
- saveParamsCache = keyFile.get_boolean ("Profiles", "SaveParamsToCache");
+ if (keyFile.has_key("Profiles", "SaveParamsToCache")) {
+ saveParamsCache = keyFile.get_boolean("Profiles", "SaveParamsToCache");
}
- if (keyFile.has_key ("Profiles", "LoadParamsFromLocation")) {
- paramsLoadLocation = (PPLoadLocation)keyFile.get_integer ("Profiles", "LoadParamsFromLocation");
+ if (keyFile.has_key("Profiles", "LoadParamsFromLocation")) {
+ paramsLoadLocation = (PPLoadLocation)keyFile.get_integer("Profiles", "LoadParamsFromLocation");
}
- if (keyFile.has_key ("Profiles", "CustomProfileBuilder")) {
- CPBPath = keyFile.get_string ("Profiles", "CustomProfileBuilder"); // for backward compatibility only
+ if (keyFile.has_key("Profiles", "CustomProfileBuilder")) {
+ CPBPath = keyFile.get_string("Profiles", "CustomProfileBuilder"); // for backward compatibility only
}
- if (keyFile.has_key ("Profiles", "CustomProfileBuilderPath")) {
- CPBPath = keyFile.get_string ("Profiles", "CustomProfileBuilderPath");
+ if (keyFile.has_key("Profiles", "CustomProfileBuilderPath")) {
+ CPBPath = keyFile.get_string("Profiles", "CustomProfileBuilderPath");
}
- if (keyFile.has_key ("Profiles", "CustomProfileBuilderKeys")) {
- CPBKeys = (CPBKeyType)keyFile.get_integer ("Profiles", "CustomProfileBuilderKeys");
+ if (keyFile.has_key("Profiles", "CustomProfileBuilderKeys")) {
+ CPBKeys = (CPBKeyType)keyFile.get_integer("Profiles", "CustomProfileBuilderKeys");
}
}
- if (keyFile.has_group ("File Browser")) {
- if (keyFile.has_key ("File Browser", "ThumbnailSize")) {
- thumbSize = keyFile.get_integer ("File Browser", "ThumbnailSize");
+ if (keyFile.has_group("File Browser")) {
+ if (keyFile.has_key("File Browser", "ThumbnailSize")) {
+ thumbSize = keyFile.get_integer("File Browser", "ThumbnailSize");
}
- if (keyFile.has_key ("File Browser", "ThumbnailSizeTab")) {
- thumbSizeTab = keyFile.get_integer ("File Browser", "ThumbnailSizeTab");
+ if (keyFile.has_key("File Browser", "ThumbnailSizeTab")) {
+ thumbSizeTab = keyFile.get_integer("File Browser", "ThumbnailSizeTab");
}
- if (keyFile.has_key ("File Browser", "ThumbnailSizeQueue")) {
- thumbSizeQueue = keyFile.get_integer ("File Browser", "ThumbnailSizeQueue");
+ if (keyFile.has_key("File Browser", "ThumbnailSizeQueue")) {
+ thumbSizeQueue = keyFile.get_integer("File Browser", "ThumbnailSizeQueue");
}
- if (keyFile.has_key ("File Browser", "SameThumbSize")) {
- sameThumbSize = keyFile.get_integer ("File Browser", "SameThumbSize");
+ if (keyFile.has_key("File Browser", "SameThumbSize")) {
+ sameThumbSize = keyFile.get_integer("File Browser", "SameThumbSize");
}
- if (keyFile.has_key ("File Browser", "BrowseOnlyRaw")) {
- fbOnlyRaw = keyFile.get_boolean ("File Browser", "BrowseOnlyRaw");
+ if (keyFile.has_key("File Browser", "BrowseOnlyRaw")) {
+ fbOnlyRaw = keyFile.get_boolean("File Browser", "BrowseOnlyRaw");
}
- if (keyFile.has_key ("File Browser", "BrowserShowsDate")) {
- fbShowDateTime = keyFile.get_boolean ("File Browser", "BrowserShowsDate");
+ if (keyFile.has_key("File Browser", "BrowserShowsDate")) {
+ fbShowDateTime = keyFile.get_boolean("File Browser", "BrowserShowsDate");
}
- if (keyFile.has_key ("File Browser", "BrowserShowsExif")) {
- fbShowBasicExif = keyFile.get_boolean ("File Browser", "BrowserShowsExif");
+ if (keyFile.has_key("File Browser", "BrowserShowsExif")) {
+ fbShowBasicExif = keyFile.get_boolean("File Browser", "BrowserShowsExif");
}
- if (keyFile.has_key ("File Browser", "BrowserShowsExpComp")) {
- fbShowExpComp = keyFile.get_boolean ("File Browser", "BrowserShowsExpComp");
+ if (keyFile.has_key("File Browser", "BrowserShowsExpComp")) {
+ fbShowExpComp = keyFile.get_boolean("File Browser", "BrowserShowsExpComp");
}
- if (keyFile.has_key ("File Browser", "BrowserShowsHidden")) {
- fbShowHidden = keyFile.get_boolean ("File Browser", "BrowserShowsHidden");
+ if (keyFile.has_key("File Browser", "BrowserShowsHidden")) {
+ fbShowHidden = keyFile.get_boolean("File Browser", "BrowserShowsHidden");
}
- if (keyFile.has_key ("File Browser", "MaxPreviewHeight")) {
- maxThumbnailHeight = keyFile.get_integer ("File Browser", "MaxPreviewHeight");
+ if (keyFile.has_key("File Browser", "MaxPreviewHeight")) {
+ maxThumbnailHeight = keyFile.get_integer("File Browser", "MaxPreviewHeight");
}
- if (keyFile.has_key ("File Browser", "MaxCacheEntries")) {
- maxCacheEntries = keyFile.get_integer ("File Browser", "MaxCacheEntries");
+ if (keyFile.has_key("File Browser", "MaxCacheEntries")) {
+ maxCacheEntries = keyFile.get_integer("File Browser", "MaxCacheEntries");
}
- if (keyFile.has_key ("File Browser", "ParseExtensions")) {
- parseExtensions = keyFile.get_string_list ("File Browser", "ParseExtensions");
+ if (keyFile.has_key("File Browser", "ParseExtensions")) {
+ parseExtensions = keyFile.get_string_list("File Browser", "ParseExtensions");
}
- if (keyFile.has_key ("File Browser", "ParseExtensionsEnabled")) {
- parseExtensionsEnabled = keyFile.get_integer_list ("File Browser", "ParseExtensionsEnabled");
+ if (keyFile.has_key("File Browser", "ParseExtensionsEnabled")) {
+ parseExtensionsEnabled = keyFile.get_integer_list("File Browser", "ParseExtensionsEnabled");
}
- if (keyFile.has_key ("File Browser", "ThumbnailArrangement")) {
- fbArrangement = keyFile.get_integer ("File Browser", "ThumbnailArrangement");
+ if (keyFile.has_key("File Browser", "ThumbnailArrangement")) {
+ fbArrangement = keyFile.get_integer("File Browser", "ThumbnailArrangement");
}
- if (keyFile.has_key ("File Browser", "ThumbnailInterpolation")) {
- thumbInterp = keyFile.get_integer ("File Browser", "ThumbnailInterpolation");
+ if (keyFile.has_key("File Browser", "ThumbnailInterpolation")) {
+ thumbInterp = keyFile.get_integer("File Browser", "ThumbnailInterpolation");
}
- if (keyFile.has_key ("File Browser", "FavoriteDirs")) {
- favoriteDirs = keyFile.get_string_list ("File Browser", "FavoriteDirs");
+ if (keyFile.has_key("File Browser", "FavoriteDirs")) {
+ favoriteDirs = keyFile.get_string_list("File Browser", "FavoriteDirs");
}
- if (keyFile.has_key ("File Browser", "RenameTemplates")) {
- renameTemplates = keyFile.get_string_list ("File Browser", "RenameTemplates");
+ if (keyFile.has_key("File Browser", "RenameTemplates")) {
+ renameTemplates = keyFile.get_string_list("File Browser", "RenameTemplates");
}
- if (keyFile.has_key ("File Browser", "RenameUseTemplates")) {
- renameUseTemplates = keyFile.get_boolean ("File Browser", "RenameUseTemplates");
+ if (keyFile.has_key("File Browser", "RenameUseTemplates")) {
+ renameUseTemplates = keyFile.get_boolean("File Browser", "RenameUseTemplates");
}
- if (keyFile.has_key ("File Browser", "ThumbnailZoomRatios")) {
- thumbnailZoomRatios = keyFile.get_double_list ("File Browser", "ThumbnailZoomRatios");
+ if (keyFile.has_key("File Browser", "ThumbnailZoomRatios")) {
+ thumbnailZoomRatios = keyFile.get_double_list("File Browser", "ThumbnailZoomRatios");
}
- if (keyFile.has_key ("File Browser", "OverlayedFileNames")) {
- overlayedFileNames = keyFile.get_boolean ("File Browser", "OverlayedFileNames");
+ if (keyFile.has_key("File Browser", "OverlayedFileNames")) {
+ overlayedFileNames = keyFile.get_boolean("File Browser", "OverlayedFileNames");
}
- if (keyFile.has_key ("File Browser", "FilmStripOverlayedFileNames")) {
- filmStripOverlayedFileNames = keyFile.get_boolean ("File Browser", "FilmStripOverlayedFileNames");
+ if (keyFile.has_key("File Browser", "FilmStripOverlayedFileNames")) {
+ filmStripOverlayedFileNames = keyFile.get_boolean("File Browser", "FilmStripOverlayedFileNames");
}
- if (keyFile.has_key ("File Browser", "ShowFileNames")) {
- showFileNames = keyFile.get_boolean ("File Browser", "ShowFileNames");
+ if (keyFile.has_key("File Browser", "ShowFileNames")) {
+ showFileNames = keyFile.get_boolean("File Browser", "ShowFileNames");
}
- if (keyFile.has_key ("File Browser", "FilmStripShowFileNames")) {
- filmStripShowFileNames = keyFile.get_boolean ("File Browser", "FilmStripShowFileNames");
+ if (keyFile.has_key("File Browser", "FilmStripShowFileNames")) {
+ filmStripShowFileNames = keyFile.get_boolean("File Browser", "FilmStripShowFileNames");
}
- if (keyFile.has_key ("File Browser", "InternalThumbIfUntouched")) {
- internalThumbIfUntouched = keyFile.get_boolean ("File Browser", "InternalThumbIfUntouched");
+ if (keyFile.has_key("File Browser", "InternalThumbIfUntouched")) {
+ internalThumbIfUntouched = keyFile.get_boolean("File Browser", "InternalThumbIfUntouched");
}
- if (keyFile.has_key ("File Browser", "menuGroupRank")) {
- menuGroupRank = keyFile.get_boolean ("File Browser", "menuGroupRank");
+ if (keyFile.has_key("File Browser", "menuGroupRank")) {
+ menuGroupRank = keyFile.get_boolean("File Browser", "menuGroupRank");
}
- if (keyFile.has_key ("File Browser", "menuGroupLabel")) {
- menuGroupLabel = keyFile.get_boolean ("File Browser", "menuGroupLabel");
+ if (keyFile.has_key("File Browser", "menuGroupLabel")) {
+ menuGroupLabel = keyFile.get_boolean("File Browser", "menuGroupLabel");
}
- if (keyFile.has_key ("File Browser", "menuGroupFileOperations")) {
- menuGroupFileOperations = keyFile.get_boolean ("File Browser", "menuGroupFileOperations");
+ if (keyFile.has_key("File Browser", "menuGroupFileOperations")) {
+ menuGroupFileOperations = keyFile.get_boolean("File Browser", "menuGroupFileOperations");
}
- if (keyFile.has_key ("File Browser", "menuGroupProfileOperations")) {
- menuGroupProfileOperations = keyFile.get_boolean ("File Browser", "menuGroupProfileOperations");
+ if (keyFile.has_key("File Browser", "menuGroupProfileOperations")) {
+ menuGroupProfileOperations = keyFile.get_boolean("File Browser", "menuGroupProfileOperations");
}
- if (keyFile.has_key ("File Browser", "menuGroupExtProg")) {
- menuGroupExtProg = keyFile.get_boolean ("File Browser", "menuGroupExtProg");
+ if (keyFile.has_key("File Browser", "menuGroupExtProg")) {
+ menuGroupExtProg = keyFile.get_boolean("File Browser", "menuGroupExtProg");
}
- if (keyFile.has_key ("File Browser", "MaxRecentFolders")) {
- maxRecentFolders = keyFile.get_integer ("File Browser", "MaxRecentFolders");
+ if (keyFile.has_key("File Browser", "MaxRecentFolders")) {
+ maxRecentFolders = keyFile.get_integer("File Browser", "MaxRecentFolders");
}
- recentFolders.reserve (maxRecentFolders + 10); // reserve some more than maxRecentFolders, because at runtime it stores more than that
+ recentFolders.reserve(maxRecentFolders + 10); // reserve some more than maxRecentFolders, because at runtime it stores more than that
- if (keyFile.has_key ("File Browser", "RecentFolders")) {
- recentFolders = keyFile.get_string_list ("File Browser", "RecentFolders");
+ if (keyFile.has_key("File Browser", "RecentFolders")) {
+ recentFolders = keyFile.get_string_list("File Browser", "RecentFolders");
}
}
- if (keyFile.has_group ("Clipping Indication")) {
- if (keyFile.has_key ("Clipping Indication", "HighlightThreshold")) {
- highlightThreshold = keyFile.get_integer ("Clipping Indication", "HighlightThreshold");
+ if (keyFile.has_group("Clipping Indication")) {
+ if (keyFile.has_key("Clipping Indication", "HighlightThreshold")) {
+ highlightThreshold = keyFile.get_integer("Clipping Indication", "HighlightThreshold");
}
- if (keyFile.has_key ("Clipping Indication", "ShadowThreshold")) {
- shadowThreshold = keyFile.get_integer ("Clipping Indication", "ShadowThreshold");
+ if (keyFile.has_key("Clipping Indication", "ShadowThreshold")) {
+ shadowThreshold = keyFile.get_integer("Clipping Indication", "ShadowThreshold");
}
- if (keyFile.has_key ("Clipping Indication", "BlinkClipped")) {
- blinkClipped = keyFile.get_boolean ("Clipping Indication", "BlinkClipped");
+ if (keyFile.has_key("Clipping Indication", "BlinkClipped")) {
+ blinkClipped = keyFile.get_boolean("Clipping Indication", "BlinkClipped");
}
}
- if (keyFile.has_group ("Performance")) {
- if (keyFile.has_key ("Performance", "RgbDenoiseThreadLimit")) {
- rgbDenoiseThreadLimit = keyFile.get_integer ("Performance", "RgbDenoiseThreadLimit");
+ if (keyFile.has_group("Performance")) {
+ if (keyFile.has_key("Performance", "RgbDenoiseThreadLimit")) {
+ rgbDenoiseThreadLimit = keyFile.get_integer("Performance", "RgbDenoiseThreadLimit");
}
- if ( keyFile.has_key ("Performance", "NRauto")) {
- rtSettings.nrauto = keyFile.get_double ("Performance", "NRauto");
+ if (keyFile.has_key("Performance", "NRauto")) {
+ rtSettings.nrauto = keyFile.get_double("Performance", "NRauto");
}
- if ( keyFile.has_key ("Performance", "NRautomax")) {
- rtSettings.nrautomax = keyFile.get_double ("Performance", "NRautomax");
+ if (keyFile.has_key("Performance", "NRautomax")) {
+ rtSettings.nrautomax = keyFile.get_double("Performance", "NRautomax");
}
- if ( keyFile.has_key ("Performance", "NRhigh")) {
- rtSettings.nrhigh = keyFile.get_double ("Performance", "NRhigh");
+ if (keyFile.has_key("Performance", "NRhigh")) {
+ rtSettings.nrhigh = keyFile.get_double("Performance", "NRhigh");
}
if (rtSettings.nrhigh == 0.0) { //avoid crash by division by zero in noise reduction
rtSettings.nrhigh = 0.45;
}
- if ( keyFile.has_key ("Performance", "NRWavlevel")) {
- rtSettings.nrwavlevel = keyFile.get_integer ("Performance", "NRWavlevel");
+ if (keyFile.has_key("Performance", "NRWavlevel")) {
+ rtSettings.nrwavlevel = keyFile.get_integer("Performance", "NRWavlevel");
}
- if (keyFile.has_key ("Performance", "LevNR")) {
- rtSettings.leveldnv = keyFile.get_integer ("Performance", "LevNR");
+ if (keyFile.has_key("Performance", "LevNR")) {
+ rtSettings.leveldnv = keyFile.get_integer("Performance", "LevNR");
}
- if (keyFile.has_key ("Performance", "LevNRTI")) {
- rtSettings.leveldnti = keyFile.get_integer ("Performance", "LevNRTI");
+ if (keyFile.has_key("Performance", "LevNRTI")) {
+ rtSettings.leveldnti = keyFile.get_integer("Performance", "LevNRTI");
}
- if (keyFile.has_key ("Performance", "LevNRAUT")) {
- rtSettings.leveldnaut = keyFile.get_integer ("Performance", "LevNRAUT");
+ if (keyFile.has_key("Performance", "LevNRAUT")) {
+ rtSettings.leveldnaut = keyFile.get_integer("Performance", "LevNRAUT");
}
- if (keyFile.has_key ("Performance", "LevNRLISS")) {
- rtSettings.leveldnliss = keyFile.get_integer ("Performance", "LevNRLISS");
+ if (keyFile.has_key("Performance", "LevNRLISS")) {
+ rtSettings.leveldnliss = keyFile.get_integer("Performance", "LevNRLISS");
}
- if (keyFile.has_key ("Performance", "SIMPLNRAUT")) {
- rtSettings.leveldnautsimpl = keyFile.get_integer ("Performance", "SIMPLNRAUT");
+ if (keyFile.has_key("Performance", "SIMPLNRAUT")) {
+ rtSettings.leveldnautsimpl = keyFile.get_integer("Performance", "SIMPLNRAUT");
}
- if (keyFile.has_key ("Performance", "ClutCacheSize")) {
- clutCacheSize = keyFile.get_integer ("Performance", "ClutCacheSize");
+ if (keyFile.has_key("Performance", "ClutCacheSize")) {
+ clutCacheSize = keyFile.get_integer("Performance", "ClutCacheSize");
}
- if (keyFile.has_key ("Performance", "MaxInspectorBuffers")) {
- maxInspectorBuffers = keyFile.get_integer ("Performance", "MaxInspectorBuffers");
+ if (keyFile.has_key("Performance", "MaxInspectorBuffers")) {
+ maxInspectorBuffers = keyFile.get_integer("Performance", "MaxInspectorBuffers");
}
- if (keyFile.has_key ("Performance", "InspectorDelay")) {
+ if (keyFile.has_key("Performance", "InspectorDelay")) {
inspectorDelay = keyFile.get_integer("Performance", "InspectorDelay");
}
- if (keyFile.has_key ("Performance", "PreviewDemosaicFromSidecar")) {
- prevdemo = (prevdemo_t)keyFile.get_integer ("Performance", "PreviewDemosaicFromSidecar");
+ if (keyFile.has_key("Performance", "PreviewDemosaicFromSidecar")) {
+ prevdemo = (prevdemo_t)keyFile.get_integer("Performance", "PreviewDemosaicFromSidecar");
}
- if (keyFile.has_key ("Performance", "Daubechies")) {
- rtSettings.daubech = keyFile.get_boolean ("Performance", "Daubechies");
+ if (keyFile.has_key("Performance", "Daubechies")) {
+ rtSettings.daubech = keyFile.get_boolean("Performance", "Daubechies");
}
- if (keyFile.has_key ("Performance", "SerializeTiffRead")) {
- serializeTiffRead = keyFile.get_boolean ("Performance", "SerializeTiffRead");
+ if (keyFile.has_key("Performance", "SerializeTiffRead")) {
+ serializeTiffRead = keyFile.get_boolean("Performance", "SerializeTiffRead");
}
if (keyFile.has_key("Performance", "ThumbnailInspectorMode")) {
@@ -1077,218 +1096,218 @@ void Options::readFromFile (Glib::ustring fname)
}
}
- if (keyFile.has_group ("GUI")) {
- if (keyFile.has_key ("GUI", "WindowWidth")) {
- windowWidth = keyFile.get_integer ("GUI", "WindowWidth");
+ if (keyFile.has_group("GUI")) {
+ if (keyFile.has_key("GUI", "WindowWidth")) {
+ windowWidth = keyFile.get_integer("GUI", "WindowWidth");
}
- if (keyFile.has_key ("GUI", "WindowHeight")) {
- windowHeight = keyFile.get_integer ("GUI", "WindowHeight");
+ if (keyFile.has_key("GUI", "WindowHeight")) {
+ windowHeight = keyFile.get_integer("GUI", "WindowHeight");
}
- if (keyFile.has_key ("GUI", "WindowX")) {
- windowX = keyFile.get_integer ("GUI", "WindowX");
+ if (keyFile.has_key("GUI", "WindowX")) {
+ windowX = keyFile.get_integer("GUI", "WindowX");
}
- if (keyFile.has_key ("GUI", "WindowY")) {
- windowY = keyFile.get_integer ("GUI", "WindowY");
+ if (keyFile.has_key("GUI", "WindowY")) {
+ windowY = keyFile.get_integer("GUI", "WindowY");
}
- if (keyFile.has_key ("GUI", "WindowMonitor")) {
- windowMonitor = keyFile.get_integer ("GUI", "WindowMonitor");
+ if (keyFile.has_key("GUI", "WindowMonitor")) {
+ windowMonitor = keyFile.get_integer("GUI", "WindowMonitor");
}
- if (keyFile.has_key ("GUI", "MeowMonitor")) {
- meowMonitor = keyFile.get_integer ("GUI", "MeowMonitor");
+ if (keyFile.has_key("GUI", "MeowMonitor")) {
+ meowMonitor = keyFile.get_integer("GUI", "MeowMonitor");
}
- if (keyFile.has_key ("GUI", "MeowFullScreen")) {
- meowFullScreen = keyFile.get_boolean ("GUI", "MeowFullScreen");
+ if (keyFile.has_key("GUI", "MeowFullScreen")) {
+ meowFullScreen = keyFile.get_boolean("GUI", "MeowFullScreen");
}
- if (keyFile.has_key ("GUI", "MeowMaximized")) {
- meowMaximized = keyFile.get_boolean ("GUI", "MeowMaximized");
+ if (keyFile.has_key("GUI", "MeowMaximized")) {
+ meowMaximized = keyFile.get_boolean("GUI", "MeowMaximized");
}
- if (keyFile.has_key ("GUI", "MeowWidth")) {
- meowWidth = keyFile.get_integer ("GUI", "MeowWidth");
+ if (keyFile.has_key("GUI", "MeowWidth")) {
+ meowWidth = keyFile.get_integer("GUI", "MeowWidth");
}
- if (keyFile.has_key ("GUI", "MeowHeight")) {
- meowHeight = keyFile.get_integer ("GUI", "MeowHeight");
+ if (keyFile.has_key("GUI", "MeowHeight")) {
+ meowHeight = keyFile.get_integer("GUI", "MeowHeight");
}
- if (keyFile.has_key ("GUI", "MeowX")) {
- meowX = keyFile.get_integer ("GUI", "MeowX");
+ if (keyFile.has_key("GUI", "MeowX")) {
+ meowX = keyFile.get_integer("GUI", "MeowX");
}
- if (keyFile.has_key ("GUI", "MeowY")) {
- meowY = keyFile.get_integer ("GUI", "MeowY");
+ if (keyFile.has_key("GUI", "MeowY")) {
+ meowY = keyFile.get_integer("GUI", "MeowY");
}
- if (keyFile.has_key ("GUI", "WindowMaximized")) {
- windowMaximized = keyFile.get_boolean ("GUI", "WindowMaximized");
+ if (keyFile.has_key("GUI", "WindowMaximized")) {
+ windowMaximized = keyFile.get_boolean("GUI", "WindowMaximized");
}
- if (keyFile.has_key ("GUI", "DetailWindowWidth")) {
- detailWindowWidth = keyFile.get_integer ("GUI", "DetailWindowWidth");
+ if (keyFile.has_key("GUI", "DetailWindowWidth")) {
+ detailWindowWidth = keyFile.get_integer("GUI", "DetailWindowWidth");
}
- if (keyFile.has_key ("GUI", "DetailWindowHeight")) {
- detailWindowHeight = keyFile.get_integer ("GUI", "DetailWindowHeight");
+ if (keyFile.has_key("GUI", "DetailWindowHeight")) {
+ detailWindowHeight = keyFile.get_integer("GUI", "DetailWindowHeight");
}
- if (keyFile.has_key ("GUI", "DirBrowserWidth")) {
- dirBrowserWidth = keyFile.get_integer ("GUI", "DirBrowserWidth");
+ if (keyFile.has_key("GUI", "DirBrowserWidth")) {
+ dirBrowserWidth = keyFile.get_integer("GUI", "DirBrowserWidth");
}
- if (keyFile.has_key ("GUI", "DirBrowserHeight")) {
- dirBrowserHeight = keyFile.get_integer ("GUI", "DirBrowserHeight");
+ if (keyFile.has_key("GUI", "DirBrowserHeight")) {
+ dirBrowserHeight = keyFile.get_integer("GUI", "DirBrowserHeight");
}
- if (keyFile.has_key ("GUI", "SortType")) {
- dirBrowserSortType = static_cast (keyFile.get_integer ("GUI", "SortType"));
+ if (keyFile.has_key("GUI", "SortType")) {
+ dirBrowserSortType = static_cast(keyFile.get_integer("GUI", "SortType"));
}
- if (keyFile.has_key ("GUI", "PreferencesWidth")) {
- preferencesWidth = keyFile.get_integer ("GUI", "PreferencesWidth");
+ if (keyFile.has_key("GUI", "PreferencesWidth")) {
+ preferencesWidth = keyFile.get_integer("GUI", "PreferencesWidth");
}
- if (keyFile.has_key ("GUI", "PreferencesHeight")) {
- preferencesHeight = keyFile.get_integer ("GUI", "PreferencesHeight");
+ if (keyFile.has_key("GUI", "PreferencesHeight")) {
+ preferencesHeight = keyFile.get_integer("GUI", "PreferencesHeight");
}
- if (keyFile.has_key ("GUI", "SaveAsDialogWidth")) {
- saveAsDialogWidth = keyFile.get_integer ("GUI", "SaveAsDialogWidth");
+ if (keyFile.has_key("GUI", "SaveAsDialogWidth")) {
+ saveAsDialogWidth = keyFile.get_integer("GUI", "SaveAsDialogWidth");
}
- if (keyFile.has_key ("GUI", "SaveAsDialogHeight")) {
- saveAsDialogHeight = keyFile.get_integer ("GUI", "SaveAsDialogHeight");
+ if (keyFile.has_key("GUI", "SaveAsDialogHeight")) {
+ saveAsDialogHeight = keyFile.get_integer("GUI", "SaveAsDialogHeight");
}
- if (keyFile.has_key ("GUI", "ToolPanelWidth")) {
- toolPanelWidth = keyFile.get_integer ("GUI", "ToolPanelWidth");
+ if (keyFile.has_key("GUI", "ToolPanelWidth")) {
+ toolPanelWidth = keyFile.get_integer("GUI", "ToolPanelWidth");
}
- if (keyFile.has_key ("GUI", "BrowserToolPanelWidth")) {
- browserToolPanelWidth = keyFile.get_integer ("GUI", "BrowserToolPanelWidth");
+ if (keyFile.has_key("GUI", "BrowserToolPanelWidth")) {
+ browserToolPanelWidth = keyFile.get_integer("GUI", "BrowserToolPanelWidth");
}
- if (keyFile.has_key ("GUI", "BrowserToolPanelHeight")) {
- browserToolPanelHeight = keyFile.get_integer ("GUI", "BrowserToolPanelHeight");
+ if (keyFile.has_key("GUI", "BrowserToolPanelHeight")) {
+ browserToolPanelHeight = keyFile.get_integer("GUI", "BrowserToolPanelHeight");
}
- if (keyFile.has_key ("GUI", "BrowserToolPanelOpened")) {
- browserToolPanelOpened = keyFile.get_boolean ("GUI", "BrowserToolPanelOpened");
+ if (keyFile.has_key("GUI", "BrowserToolPanelOpened")) {
+ browserToolPanelOpened = keyFile.get_boolean("GUI", "BrowserToolPanelOpened");
}
- if (keyFile.has_key ("GUI", "BrowserDirPanelOpened")) {
- browserDirPanelOpened = keyFile.get_boolean ("GUI", "BrowserDirPanelOpened");
+ if (keyFile.has_key("GUI", "BrowserDirPanelOpened")) {
+ browserDirPanelOpened = keyFile.get_boolean("GUI", "BrowserDirPanelOpened");
}
- if (keyFile.has_key ("GUI", "EditorFilmStripOpened")) {
- editorFilmStripOpened = keyFile.get_boolean ("GUI", "EditorFilmStripOpened");
+ if (keyFile.has_key("GUI", "EditorFilmStripOpened")) {
+ editorFilmStripOpened = keyFile.get_boolean("GUI", "EditorFilmStripOpened");
}
- if (keyFile.has_key ("GUI", "HistoryPanelWidth")) {
- historyPanelWidth = keyFile.get_integer ("GUI", "HistoryPanelWidth");
+ if (keyFile.has_key("GUI", "HistoryPanelWidth")) {
+ historyPanelWidth = keyFile.get_integer("GUI", "HistoryPanelWidth");
}
- if (keyFile.has_key ("GUI", "FontFamily")) {
- fontFamily = keyFile.get_string ("GUI", "FontFamily");
+ if (keyFile.has_key("GUI", "FontFamily")) {
+ fontFamily = keyFile.get_string("GUI", "FontFamily");
}
- if (keyFile.has_key ("GUI", "FontSize")) {
- fontSize = keyFile.get_integer ("GUI", "FontSize");
+ if (keyFile.has_key("GUI", "FontSize")) {
+ fontSize = keyFile.get_integer("GUI", "FontSize");
}
- if (keyFile.has_key ("GUI", "CPFontFamily")) {
- CPFontFamily = keyFile.get_string ("GUI", "CPFontFamily");
+ if (keyFile.has_key("GUI", "CPFontFamily")) {
+ CPFontFamily = keyFile.get_string("GUI", "CPFontFamily");
}
- if (keyFile.has_key ("GUI", "CPFontSize")) {
- CPFontSize = keyFile.get_integer ("GUI", "CPFontSize");
+ if (keyFile.has_key("GUI", "CPFontSize")) {
+ CPFontSize = keyFile.get_integer("GUI", "CPFontSize");
}
- if (keyFile.has_key ("GUI", "LastPreviewScale")) {
- lastScale = keyFile.get_integer ("GUI", "LastPreviewScale");
+ if (keyFile.has_key("GUI", "LastPreviewScale")) {
+ lastScale = keyFile.get_integer("GUI", "LastPreviewScale");
}
- if (keyFile.has_key ("GUI", "LastShowAllExif")) {
- lastShowAllExif = keyFile.get_boolean ("GUI", "LastShowAllExif");
+ if (keyFile.has_key("GUI", "LastShowAllExif")) {
+ lastShowAllExif = keyFile.get_boolean("GUI", "LastShowAllExif");
}
- if (keyFile.has_key ("GUI", "PanAccelFactor")) {
- panAccelFactor = keyFile.get_integer ("GUI", "PanAccelFactor");
+ if (keyFile.has_key("GUI", "PanAccelFactor")) {
+ panAccelFactor = keyFile.get_integer("GUI", "PanAccelFactor");
}
- if (keyFile.has_key ("GUI", "RememberZoomAndPan")) {
- rememberZoomAndPan = keyFile.get_boolean ("GUI", "RememberZoomAndPan");
+ if (keyFile.has_key("GUI", "RememberZoomAndPan")) {
+ rememberZoomAndPan = keyFile.get_boolean("GUI", "RememberZoomAndPan");
}
- if (keyFile.has_key ("GUI", "LastCropSize")) {
- lastCropSize = keyFile.get_integer ("GUI", "LastCropSize");
+ if (keyFile.has_key("GUI", "LastCropSize")) {
+ lastCropSize = keyFile.get_integer("GUI", "LastCropSize");
}
- if (keyFile.has_key ("GUI", "ShowHistory")) {
- showHistory = keyFile.get_boolean ("GUI", "ShowHistory");
+ if (keyFile.has_key("GUI", "ShowHistory")) {
+ showHistory = keyFile.get_boolean("GUI", "ShowHistory");
}
- if (keyFile.has_key ("GUI", "ShowFilePanelState")) {
- showFilePanelState = keyFile.get_integer ("GUI", "ShowFilePanelState");
+ if (keyFile.has_key("GUI", "ShowFilePanelState")) {
+ showFilePanelState = keyFile.get_integer("GUI", "ShowFilePanelState");
}
- if (keyFile.has_key ("GUI", "ShowInfo")) {
- showInfo = keyFile.get_boolean ("GUI", "ShowInfo");
+ if (keyFile.has_key("GUI", "ShowInfo")) {
+ showInfo = keyFile.get_boolean("GUI", "ShowInfo");
}
- if (keyFile.has_key ("GUI", "MainNBVertical")) {
- mainNBVertical = keyFile.get_boolean ("GUI", "MainNBVertical");
+ if (keyFile.has_key("GUI", "MainNBVertical")) {
+ mainNBVertical = keyFile.get_boolean("GUI", "MainNBVertical");
}
- if (keyFile.has_key ("GUI", "ShowClippedHighlights")) {
- showClippedHighlights = keyFile.get_boolean ("GUI", "ShowClippedHighlights");
+ if (keyFile.has_key("GUI", "ShowClippedHighlights")) {
+ showClippedHighlights = keyFile.get_boolean("GUI", "ShowClippedHighlights");
}
- if (keyFile.has_key ("GUI", "ShowClippedShadows")) {
- showClippedShadows = keyFile.get_boolean ("GUI", "ShowClippedShadows");
+ if (keyFile.has_key("GUI", "ShowClippedShadows")) {
+ showClippedShadows = keyFile.get_boolean("GUI", "ShowClippedShadows");
}
- if (keyFile.has_key ("GUI", "FrameColor")) {
- bgcolor = keyFile.get_integer ("GUI", "FrameColor");
+ if (keyFile.has_key("GUI", "FrameColor")) {
+ bgcolor = keyFile.get_integer("GUI", "FrameColor");
}
- if (keyFile.has_key ("GUI", "ProcessingQueueEnbled")) {
- procQueueEnabled = keyFile.get_boolean ("GUI", "ProcessingQueueEnbled");
+ if (keyFile.has_key("GUI", "ProcessingQueueEnbled")) {
+ procQueueEnabled = keyFile.get_boolean("GUI", "ProcessingQueueEnbled");
}
- if (keyFile.has_key ("GUI", "ToolPanelsExpanded")) {
- tpOpen = keyFile.get_integer_list ("GUI", "ToolPanelsExpanded");
+ if (keyFile.has_key("GUI", "ToolPanelsExpanded")) {
+ tpOpen = keyFile.get_integer_list("GUI", "ToolPanelsExpanded");
}
- if (keyFile.has_key ("GUI", "ToolPanelsExpandedAutoSave")) {
- autoSaveTpOpen = keyFile.get_boolean ("GUI", "ToolPanelsExpandedAutoSave");
+ if (keyFile.has_key("GUI", "ToolPanelsExpandedAutoSave")) {
+ autoSaveTpOpen = keyFile.get_boolean("GUI", "ToolPanelsExpandedAutoSave");
}
- if (keyFile.has_key ("GUI", "MultiDisplayMode")) {
- multiDisplayMode = keyFile.get_integer ("GUI", "MultiDisplayMode");
+ if (keyFile.has_key("GUI", "MultiDisplayMode")) {
+ multiDisplayMode = keyFile.get_integer("GUI", "MultiDisplayMode");
}
//if (keyFile.has_key ("GUI", "CurvePanelsExpanded")) crvOpen = keyFile.get_integer_list ("GUI", "CurvePanelsExpanded");
- if (keyFile.has_key ("GUI", "CutOverlayBrush")) {
- cutOverlayBrush = keyFile.get_double_list ("GUI", "CutOverlayBrush");
+ if (keyFile.has_key("GUI", "CutOverlayBrush")) {
+ cutOverlayBrush = keyFile.get_double_list("GUI", "CutOverlayBrush");
}
- if (keyFile.has_key ("GUI", "NavGuideBrush")) {
- navGuideBrush = keyFile.get_double_list ("GUI", "NavGuideBrush");
+ if (keyFile.has_key("GUI", "NavGuideBrush")) {
+ navGuideBrush = keyFile.get_double_list("GUI", "NavGuideBrush");
}
- if (keyFile.has_key ("GUI", "HistogramPosition")) {
- histogramPosition = keyFile.get_integer ("GUI", "HistogramPosition");
+ if (keyFile.has_key("GUI", "HistogramPosition")) {
+ histogramPosition = keyFile.get_integer("GUI", "HistogramPosition");
}
- if (keyFile.has_key ("GUI", "HistogramBar")) {
- histogramBar = keyFile.get_boolean ("GUI", "HistogramBar");
+ if (keyFile.has_key("GUI", "HistogramBar")) {
+ histogramBar = keyFile.get_boolean("GUI", "HistogramBar");
}
if (keyFile.has_key ("GUI", "HistogramHeight")) {
@@ -1299,102 +1318,107 @@ void Options::readFromFile (Glib::ustring fname)
histogramDrawMode = keyFile.get_integer ("GUI", "HistogramDrawMode");
}
- if (keyFile.has_key ("GUI", "NavigatorRGBUnit")) {
- navRGBUnit = (NavigatorUnit)keyFile.get_integer ("GUI", "NavigatorRGBUnit");
+ if (keyFile.has_key("GUI", "NavigatorRGBUnit")) {
+ navRGBUnit = (NavigatorUnit)keyFile.get_integer("GUI", "NavigatorRGBUnit");
}
- if (keyFile.has_key ("GUI", "NavigatorHSVUnit")) {
- navHSVUnit = (NavigatorUnit)keyFile.get_integer ("GUI", "NavigatorHSVUnit");
+ if (keyFile.has_key("GUI", "NavigatorHSVUnit")) {
+ navHSVUnit = (NavigatorUnit)keyFile.get_integer("GUI", "NavigatorHSVUnit");
}
- if (keyFile.has_key ("GUI", "ShowFilmStripToolBar")) {
- showFilmStripToolBar = keyFile.get_boolean ("GUI", "ShowFilmStripToolBar");
+ if (keyFile.has_key("GUI", "ShowFilmStripToolBar")) {
+ showFilmStripToolBar = keyFile.get_boolean("GUI", "ShowFilmStripToolBar");
}
- if (keyFile.has_key ("GUI", "FileBrowserToolbarSingleRow")) {
- FileBrowserToolbarSingleRow = keyFile.get_boolean ("GUI", "FileBrowserToolbarSingleRow");
+ if (keyFile.has_key("GUI", "FileBrowserToolbarSingleRow")) {
+ FileBrowserToolbarSingleRow = keyFile.get_boolean("GUI", "FileBrowserToolbarSingleRow");
}
#if defined(__linux__) && ((GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION > 18) || GTK_MAJOR_VERSION > 3)
// Cannot scroll toolbox with mousewheel when HideTPVScrollbar=true #3413
hideTPVScrollbar = false;
#else
- if (keyFile.has_key ("GUI", "HideTPVScrollbar")) {
- hideTPVScrollbar = keyFile.get_boolean ("GUI", "HideTPVScrollbar");
+
+ if (keyFile.has_key("GUI", "HideTPVScrollbar")) {
+ hideTPVScrollbar = keyFile.get_boolean("GUI", "HideTPVScrollbar");
}
+
#endif
- if (keyFile.has_key ("GUI", "UseIconNoText")) {
- UseIconNoText = keyFile.get_boolean ("GUI", "UseIconNoText");
+
+ if (keyFile.has_key("GUI", "UseIconNoText")) {
+ UseIconNoText = keyFile.get_boolean("GUI", "UseIconNoText");
}
- if (keyFile.has_key ("GUI", "HistogramWorking")) {
- rtSettings.HistogramWorking = keyFile.get_boolean ("GUI", "HistogramWorking");
+ if (keyFile.has_key("GUI", "HistogramWorking")) {
+ rtSettings.HistogramWorking = keyFile.get_boolean("GUI", "HistogramWorking");
}
- if (keyFile.has_key ("GUI", "CurveBBoxPosition")) {
- curvebboxpos = keyFile.get_integer ("GUI", "CurveBBoxPosition");
+ if (keyFile.has_key("GUI", "CurveBBoxPosition")) {
+ curvebboxpos = keyFile.get_integer("GUI", "CurveBBoxPosition");
}
}
- if (keyFile.has_group ("Crop Settings")) {
- if (keyFile.has_key ("Crop Settings", "PPI")) {
- cropPPI = keyFile.get_integer ("Crop Settings", "PPI");
+ if (keyFile.has_group("Crop Settings")) {
+ if (keyFile.has_key("Crop Settings", "PPI")) {
+ cropPPI = keyFile.get_integer("Crop Settings", "PPI");
}
+
if (keyFile.has_key("Crop Settings", "GuidesMode")) {
cropGuides = CropGuidesMode(std::max(int(CROP_GUIDE_NONE), std::min(keyFile.get_integer("Crop Settings", "GuidesMode"), int(CROP_GUIDE_FULL))));
}
+
if (keyFile.has_key("Crop Settings", "AutoFit")) {
cropAutoFit = keyFile.get_boolean("Crop Settings", "AutoFit");
}
}
- if (keyFile.has_group ("Color Management")) {
- if (keyFile.has_key ("Color Management", "ICCDirectory")) {
- rtSettings.iccDirectory = keyFile.get_string ("Color Management", "ICCDirectory");
+ if (keyFile.has_group("Color Management")) {
+ if (keyFile.has_key("Color Management", "ICCDirectory")) {
+ rtSettings.iccDirectory = keyFile.get_string("Color Management", "ICCDirectory");
}
- if (keyFile.has_key ("Color Management", "PrinterIntent")) {
- rtSettings.printerIntent = static_cast (keyFile.get_integer ("Color Management", "PrinterIntent"));
+ if (keyFile.has_key("Color Management", "PrinterIntent")) {
+ rtSettings.printerIntent = static_cast(keyFile.get_integer("Color Management", "PrinterIntent"));
}
- if (keyFile.has_key ("Color Management", "PrinterBPC")) {
- rtSettings.printerBPC = keyFile.get_boolean ("Color Management", "PrinterBPC");
+ if (keyFile.has_key("Color Management", "PrinterBPC")) {
+ rtSettings.printerBPC = keyFile.get_boolean("Color Management", "PrinterBPC");
}
- if (keyFile.has_key ("Color Management", "PrinterProfile")) {
- rtSettings.printerProfile = keyFile.get_string ("Color Management", "PrinterProfile");
+ if (keyFile.has_key("Color Management", "PrinterProfile")) {
+ rtSettings.printerProfile = keyFile.get_string("Color Management", "PrinterProfile");
}
- if (keyFile.has_key ("Color Management", "MonitorProfile")) {
- rtSettings.monitorProfile = keyFile.get_string ("Color Management", "MonitorProfile");
+ if (keyFile.has_key("Color Management", "MonitorProfile")) {
+ rtSettings.monitorProfile = keyFile.get_string("Color Management", "MonitorProfile");
}
- if (keyFile.has_key ("Color Management", "AutoMonitorProfile")) {
- rtSettings.autoMonitorProfile = keyFile.get_boolean ("Color Management", "AutoMonitorProfile");
+ if (keyFile.has_key("Color Management", "AutoMonitorProfile")) {
+ rtSettings.autoMonitorProfile = keyFile.get_boolean("Color Management", "AutoMonitorProfile");
}
- if (keyFile.has_key ("Color Management", "Autocielab")) {
- rtSettings.autocielab = keyFile.get_boolean ("Color Management", "Autocielab");
+ if (keyFile.has_key("Color Management", "Autocielab")) {
+ rtSettings.autocielab = keyFile.get_boolean("Color Management", "Autocielab");
}
- if (keyFile.has_key ("Color Management", "RGBcurvesLumamode_Gamut")) {
- rtSettings.rgbcurveslumamode_gamut = keyFile.get_boolean ("Color Management", "RGBcurvesLumamode_Gamut");
+ if (keyFile.has_key("Color Management", "RGBcurvesLumamode_Gamut")) {
+ rtSettings.rgbcurveslumamode_gamut = keyFile.get_boolean("Color Management", "RGBcurvesLumamode_Gamut");
}
- if (keyFile.has_key ("Color Management", "Intent")) {
- rtSettings.monitorIntent = static_cast (keyFile.get_integer ("Color Management", "Intent"));
+ if (keyFile.has_key("Color Management", "Intent")) {
+ rtSettings.monitorIntent = static_cast(keyFile.get_integer("Color Management", "Intent"));
}
- if (keyFile.has_key ("Color Management", "MonitorBPC")) {
- rtSettings.monitorBPC = keyFile.get_boolean ("Color Management", "MonitorBPC");
+ if (keyFile.has_key("Color Management", "MonitorBPC")) {
+ rtSettings.monitorBPC = keyFile.get_boolean("Color Management", "MonitorBPC");
}
- if (keyFile.has_key ("Color Management", "CRI")) {
- rtSettings.CRI_color = keyFile.get_integer ("Color Management", "CRI");
+ if (keyFile.has_key("Color Management", "CRI")) {
+ rtSettings.CRI_color = keyFile.get_integer("Color Management", "CRI");
}
- if (keyFile.has_key ("Color Management", "DenoiseLabgamma")) {
- rtSettings.denoiselabgamma = keyFile.get_integer ("Color Management", "DenoiseLabgamma");
+ if (keyFile.has_key("Color Management", "DenoiseLabgamma")) {
+ rtSettings.denoiselabgamma = keyFile.get_integer("Color Management", "DenoiseLabgamma");
}
/*
@@ -1412,332 +1436,401 @@ void Options::readFromFile (Glib::ustring fname)
}
*/
- if (keyFile.has_key ("Color Management", "CBDLlevel0")) {
- rtSettings.level0_cbdl = keyFile.get_double ("Color Management", "CBDLlevel0");
+ if (keyFile.has_key("Color Management", "CBDLlevel0")) {
+ rtSettings.level0_cbdl = keyFile.get_double("Color Management", "CBDLlevel0");
}
- if (keyFile.has_key ("Color Management", "CBDLlevel123")) {
- rtSettings.level123_cbdl = keyFile.get_double ("Color Management", "CBDLlevel123");
+ if (keyFile.has_key("Color Management", "CBDLlevel123")) {
+ rtSettings.level123_cbdl = keyFile.get_double("Color Management", "CBDLlevel123");
}
//if (keyFile.has_key ("Color Management", "Colortoningab")) rtSettings.colortoningab = keyFile.get_double("Color Management", "Colortoningab");
//if (keyFile.has_key ("Color Management", "Decaction")) rtSettings.decaction = keyFile.get_double("Color Management", "Decaction");
- if (keyFile.has_key ("Color Management", "WhiteBalanceSpotSize")) {
- whiteBalanceSpotSize = keyFile.get_integer ("Color Management", "WhiteBalanceSpotSize");
+ if (keyFile.has_key("Color Management", "WhiteBalanceSpotSize")) {
+ whiteBalanceSpotSize = keyFile.get_integer("Color Management", "WhiteBalanceSpotSize");
}
- if ( keyFile.has_key ("Color Management", "GamutICC")) {
- rtSettings.gamutICC = keyFile.get_boolean ("Color Management", "GamutICC");
+ if (keyFile.has_key("Color Management", "GamutICC")) {
+ rtSettings.gamutICC = keyFile.get_boolean("Color Management", "GamutICC");
}
- if ( keyFile.has_key ("Color Management", "AdobeRGB")) {
- rtSettings.adobe = keyFile.get_string ("Color Management", "AdobeRGB");
+ if (keyFile.has_key("Color Management", "AdobeRGB")) {
+ rtSettings.adobe = keyFile.get_string("Color Management", "AdobeRGB");
+ if (rtSettings.adobe == "RT_Medium_gsRGB") {
+ rtSettings.adobe = "RTv4_Medium";
+ }
}
- if ( keyFile.has_key ("Color Management", "ProPhoto")) {
- rtSettings.prophoto = keyFile.get_string ("Color Management", "ProPhoto");
+ if (keyFile.has_key("Color Management", "ProPhoto")) {
+ rtSettings.prophoto = keyFile.get_string("Color Management", "ProPhoto");
+ if (rtSettings.prophoto == "RT_Large_gBT709") {
+ rtSettings.prophoto = "RTv4_Large";
+ }
}
- if ( keyFile.has_key ("Color Management", "ProPhoto10")) {
- rtSettings.prophoto10 = keyFile.get_string ("Color Management", "ProPhoto10");
+ if (keyFile.has_key("Color Management", "WideGamut")) {
+ rtSettings.widegamut = keyFile.get_string("Color Management", "WideGamut");
+ if (rtSettings.widegamut == "WideGamutRGB") {
+ rtSettings.widegamut = "RTv4_Wide";
+ }
}
- if ( keyFile.has_key ("Color Management", "WideGamut")) {
- rtSettings.widegamut = keyFile.get_string ("Color Management", "WideGamut");
+ if (keyFile.has_key("Color Management", "sRGB")) {
+ rtSettings.srgb = keyFile.get_string("Color Management", "sRGB");
+ if (rtSettings.srgb == "RT_sRGB") {
+ rtSettings.srgb = "RTv4_sRGB";
+ }
}
- if ( keyFile.has_key ("Color Management", "sRGB")) {
- rtSettings.srgb = keyFile.get_string ("Color Management", "sRGB");
+ if (keyFile.has_key("Color Management", "Beta")) {
+ rtSettings.beta = keyFile.get_string("Color Management", "Beta");
+ if (rtSettings.beta == "BetaRGB") {
+ rtSettings.beta = "RTv4_Beta";
+ }
}
- if ( keyFile.has_key ("Color Management", "sRGB10")) {
- rtSettings.srgb10 = keyFile.get_string ("Color Management", "sRGB10");
+ if (keyFile.has_key("Color Management", "Best")) {
+ rtSettings.best = keyFile.get_string("Color Management", "Best");
+ if (rtSettings.best == "BestRGB") {
+ rtSettings.best = "RTv4_Best";
+ }
}
- if ( keyFile.has_key ("Color Management", "Beta")) {
- rtSettings.beta = keyFile.get_string ("Color Management", "Beta");
+ if (keyFile.has_key("Color Management", "Rec2020")) {
+ rtSettings.rec2020 = keyFile.get_string("Color Management", "Rec2020");
+ if (rtSettings.rec2020 == "Rec2020") {
+ rtSettings.rec2020 = "RTv4_Rec2020";
+ }
}
- if ( keyFile.has_key ("Color Management", "Best")) {
- rtSettings.best = keyFile.get_string ("Color Management", "Best");
+ if (keyFile.has_key("Color Management", "Bruce")) {
+ rtSettings.bruce = keyFile.get_string("Color Management", "Bruce");
+ if (rtSettings.bruce == "Bruce") {
+ rtSettings.bruce = "RTv4_Bruce";
+ }
}
- if ( keyFile.has_key ("Color Management", "Rec2020")) {
- rtSettings.rec2020 = keyFile.get_string ("Color Management", "Rec2020");
+ if (keyFile.has_key("Color Management", "ACES-AP0")) {
+ rtSettings.ACESp0 = keyFile.get_string("Color Management", "ACES-AP0");
}
- if ( keyFile.has_key ("Color Management", "Bruce")) {
- rtSettings.bruce = keyFile.get_string ("Color Management", "Bruce");
+ if (keyFile.has_key("Color Management", "ACES-AP1")) {
+ rtSettings.ACESp1 = keyFile.get_string("Color Management", "ACES-AP1");
}
- if ( keyFile.has_key ("Color Management", "GamutLch")) {
- rtSettings.gamutLch = keyFile.get_boolean ("Color Management", "GamutLch");
+ if (keyFile.has_key("Color Management", "GamutLch")) {
+ rtSettings.gamutLch = keyFile.get_boolean("Color Management", "GamutLch");
}
- if ( keyFile.has_key ("Color Management", "ProtectRed")) {
- rtSettings.protectred = keyFile.get_integer ("Color Management", "ProtectRed");
+ if (keyFile.has_key("Color Management", "ProtectRed")) {
+ rtSettings.protectred = keyFile.get_integer("Color Management", "ProtectRed");
}
- if ( keyFile.has_key ("Color Management", "ProtectRedH")) {
- rtSettings.protectredh = keyFile.get_double ("Color Management", "ProtectRedH");
+ if (keyFile.has_key("Color Management", "ProtectRedH")) {
+ rtSettings.protectredh = keyFile.get_double("Color Management", "ProtectRedH");
}
- if ( keyFile.has_key ("Color Management", "Amountchroma")) {
- rtSettings.amchroma = keyFile.get_integer ("Color Management", "Amountchroma");
+ if (keyFile.has_key("Color Management", "Amountchroma")) {
+ rtSettings.amchroma = keyFile.get_integer("Color Management", "Amountchroma");
}
- if ( keyFile.has_key ("Color Management", "ClutsDirectory")) {
- clutsDir = keyFile.get_string ("Color Management", "ClutsDirectory");
+ if (keyFile.has_key("Color Management", "ClutsDirectory")) {
+ clutsDir = keyFile.get_string("Color Management", "ClutsDirectory");
}
//if( keyFile.has_key ("Color Management", "Ciebadpixgauss")) rtSettings.ciebadpixgauss = keyFile.get_boolean("Color Management", "Ciebadpixgauss");
}
- if (keyFile.has_group ("Batch Processing")) {
- if (keyFile.has_key ("Batch Processing", "AdjusterBehavior")) {
- baBehav = keyFile.get_integer_list ("Batch Processing", "AdjusterBehavior");
+ if (keyFile.has_group("ICC Profile Creator")) {
+ if (keyFile.has_key("ICC Profile Creator", "PimariesPreset")) {
+ ICCPC_primariesPreset = keyFile.get_string("ICC Profile Creator", "PimariesPreset");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "RedPrimaryX")) {
+ ICCPC_redPrimaryX = keyFile.get_double("ICC Profile Creator", "RedPrimaryX");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "RedPrimaryY")) {
+ ICCPC_redPrimaryY = keyFile.get_double("ICC Profile Creator", "RedPrimaryY");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "GreenPrimaryX")) {
+ ICCPC_greenPrimaryX = keyFile.get_double("ICC Profile Creator", "GreenPrimaryX");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "GreenPrimaryY")) {
+ ICCPC_greenPrimaryY = keyFile.get_double("ICC Profile Creator", "GreenPrimaryY");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "BluePrimaryX")) {
+ ICCPC_bluePrimaryX = keyFile.get_double("ICC Profile Creator", "BluePrimaryX");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "BluePrimaryY")) {
+ ICCPC_bluePrimaryY = keyFile.get_double("ICC Profile Creator", "BluePrimaryY");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "GammaPreset")) {
+ ICCPC_gammaPreset = keyFile.get_string("ICC Profile Creator", "GammaPreset");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "Gamma")) {
+ ICCPC_gamma = keyFile.get_double("ICC Profile Creator", "Gamma");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "Slope")) {
+ ICCPC_slope = keyFile.get_double("ICC Profile Creator", "Slope");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "ProfileVersion")) {
+ ICCPC_profileVersion = keyFile.get_string("ICC Profile Creator", "ProfileVersion");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "Illuminant")) {
+ ICCPC_illuminant = keyFile.get_string("ICC Profile Creator", "Illuminant");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "Description")) {
+ ICCPC_description = keyFile.get_string("ICC Profile Creator", "Description");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "Copyright")) {
+ ICCPC_copyright = keyFile.get_string("ICC Profile Creator", "Copyright");
+ }
+ if (keyFile.has_key("ICC Profile Creator", "AppendParamsToDesc")) {
+ ICCPC_appendParamsToDesc = keyFile.get_boolean("ICC Profile Creator", "AppendParamsToDesc");
}
}
- if (keyFile.has_group ("Sounds")) {
- if (keyFile.has_key ("Sounds", "Enable")) {
- sndEnable = keyFile.get_boolean ("Sounds", "Enable");
- }
-
- if (keyFile.has_key ("Sounds", "BatchQueueDone")) {
- sndBatchQueueDone = keyFile.get_string ("Sounds", "BatchQueueDone");
- }
-
- if (keyFile.has_key ("Sounds", "LngEditProcDone")) {
- sndLngEditProcDone = keyFile.get_string ("Sounds", "LngEditProcDone");
- }
-
- if (keyFile.has_key ("Sounds", "LngEditProcDoneSecs")) {
- sndLngEditProcDoneSecs = keyFile.get_double ("Sounds", "LngEditProcDoneSecs");
+ if (keyFile.has_group("Batch Processing")) {
+ if (keyFile.has_key("Batch Processing", "AdjusterBehavior")) {
+ baBehav = keyFile.get_integer_list("Batch Processing", "AdjusterBehavior");
}
}
- if (keyFile.has_group ("Fast Export")) {
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_sharpening" )) {
- fastexport_bypass_sharpening = keyFile.get_boolean ("Fast Export", "fastexport_bypass_sharpening" );
+ if (keyFile.has_group("Sounds")) {
+ if (keyFile.has_key("Sounds", "Enable")) {
+ sndEnable = keyFile.get_boolean("Sounds", "Enable");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_sharpenEdge" )) {
- fastexport_bypass_sharpenEdge = keyFile.get_boolean ("Fast Export", "fastexport_bypass_sharpenEdge" );
+ if (keyFile.has_key("Sounds", "BatchQueueDone")) {
+ sndBatchQueueDone = keyFile.get_string("Sounds", "BatchQueueDone");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_sharpenMicro" )) {
- fastexport_bypass_sharpenMicro = keyFile.get_boolean ("Fast Export", "fastexport_bypass_sharpenMicro" );
+ if (keyFile.has_key("Sounds", "LngEditProcDone")) {
+ sndLngEditProcDone = keyFile.get_string("Sounds", "LngEditProcDone");
+ }
+
+ if (keyFile.has_key("Sounds", "LngEditProcDoneSecs")) {
+ sndLngEditProcDoneSecs = keyFile.get_double("Sounds", "LngEditProcDoneSecs");
+ }
+ }
+
+ if (keyFile.has_group("Fast Export")) {
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_sharpening")) {
+ fastexport_bypass_sharpening = keyFile.get_boolean("Fast Export", "fastexport_bypass_sharpening");
+ }
+
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_sharpenEdge")) {
+ fastexport_bypass_sharpenEdge = keyFile.get_boolean("Fast Export", "fastexport_bypass_sharpenEdge");
+ }
+
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_sharpenMicro")) {
+ fastexport_bypass_sharpenMicro = keyFile.get_boolean("Fast Export", "fastexport_bypass_sharpenMicro");
}
//if (keyFile.has_key ("Fast Export", "fastexport_bypass_lumaDenoise" )) fastexport_bypass_lumaDenoise = keyFile.get_boolean ("Fast Export", "fastexport_bypass_lumaDenoise" );
//if (keyFile.has_key ("Fast Export", "fastexport_bypass_colorDenoise" )) fastexport_bypass_colorDenoise = keyFile.get_boolean ("Fast Export", "fastexport_bypass_colorDenoise" );
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_defringe" )) {
- fastexport_bypass_defringe = keyFile.get_boolean ("Fast Export", "fastexport_bypass_defringe" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_defringe")) {
+ fastexport_bypass_defringe = keyFile.get_boolean("Fast Export", "fastexport_bypass_defringe");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_dirpyrDenoise" )) {
- fastexport_bypass_dirpyrDenoise = keyFile.get_boolean ("Fast Export", "fastexport_bypass_dirpyrDenoise" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_dirpyrDenoise")) {
+ fastexport_bypass_dirpyrDenoise = keyFile.get_boolean("Fast Export", "fastexport_bypass_dirpyrDenoise");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_dirpyrequalizer" )) {
- fastexport_bypass_dirpyrequalizer = keyFile.get_boolean ("Fast Export", "fastexport_bypass_dirpyrequalizer" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_dirpyrequalizer")) {
+ fastexport_bypass_dirpyrequalizer = keyFile.get_boolean("Fast Export", "fastexport_bypass_dirpyrequalizer");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_wavelet" )) {
- fastexport_bypass_wavelet = keyFile.get_boolean ("Fast Export", "fastexport_bypass_wavelet" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_wavelet")) {
+ fastexport_bypass_wavelet = keyFile.get_boolean("Fast Export", "fastexport_bypass_wavelet");
}
- if (keyFile.has_key ("Fast Export", "fastexport_raw_dmethod" )) {
- fastexport_raw_bayer_method = keyFile.get_string ("Fast Export", "fastexport_raw_dmethod" );
+ if (keyFile.has_key("Fast Export", "fastexport_raw_dmethod")) {
+ fastexport_raw_bayer_method = keyFile.get_string("Fast Export", "fastexport_raw_dmethod");
}
- if (keyFile.has_key ("Fast Export", "fastexport_raw_bayer_method" )) {
- fastexport_raw_bayer_method = keyFile.get_string ("Fast Export", "fastexport_raw_bayer_method" );
+ if (keyFile.has_key("Fast Export", "fastexport_raw_bayer_method")) {
+ fastexport_raw_bayer_method = keyFile.get_string("Fast Export", "fastexport_raw_bayer_method");
}
//if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_all_enhance" )) fastexport_bypass_raw_bayer_all_enhance = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_all_enhance" );
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_dcb_iterations" )) {
- fastexport_bypass_raw_bayer_dcb_iterations = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_dcb_iterations" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_dcb_iterations")) {
+ fastexport_bypass_raw_bayer_dcb_iterations = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_dcb_iterations");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations" )) {
- fastexport_bypass_raw_bayer_dcb_iterations = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations")) {
+ fastexport_bypass_raw_bayer_dcb_iterations = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_dcb_enhance" )) {
- fastexport_bypass_raw_bayer_dcb_enhance = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_dcb_enhance" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_dcb_enhance")) {
+ fastexport_bypass_raw_bayer_dcb_enhance = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_dcb_enhance");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance" )) {
- fastexport_bypass_raw_bayer_dcb_enhance = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance")) {
+ fastexport_bypass_raw_bayer_dcb_enhance = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_lmmse_iterations" )) {
- fastexport_bypass_raw_bayer_lmmse_iterations = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_lmmse_iterations" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_lmmse_iterations")) {
+ fastexport_bypass_raw_bayer_lmmse_iterations = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_lmmse_iterations");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations")) {
- fastexport_bypass_raw_bayer_lmmse_iterations = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations");
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations")) {
+ fastexport_bypass_raw_bayer_lmmse_iterations = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_linenoise" )) {
- fastexport_bypass_raw_bayer_linenoise = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_linenoise" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_linenoise")) {
+ fastexport_bypass_raw_bayer_linenoise = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_linenoise");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_linenoise" )) {
- fastexport_bypass_raw_bayer_linenoise = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_bayer_linenoise" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_bayer_linenoise")) {
+ fastexport_bypass_raw_bayer_linenoise = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_bayer_linenoise");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_greenthresh" )) {
- fastexport_bypass_raw_bayer_greenthresh = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_greenthresh" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_greenthresh")) {
+ fastexport_bypass_raw_bayer_greenthresh = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_greenthresh");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_bayer_greenthresh" )) {
- fastexport_bypass_raw_bayer_greenthresh = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_bayer_greenthresh" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_bayer_greenthresh")) {
+ fastexport_bypass_raw_bayer_greenthresh = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_bayer_greenthresh");
}
- if (keyFile.has_key ("Fast Export", "fastexport_raw_xtrans_method" )) {
- fastexport_raw_xtrans_method = keyFile.get_string ("Fast Export", "fastexport_raw_xtrans_method" );
+ if (keyFile.has_key("Fast Export", "fastexport_raw_xtrans_method")) {
+ fastexport_raw_xtrans_method = keyFile.get_string("Fast Export", "fastexport_raw_xtrans_method");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_ccSteps" )) {
- fastexport_bypass_raw_ccSteps = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_ccSteps" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_ccSteps")) {
+ fastexport_bypass_raw_ccSteps = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_ccSteps");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_ca" )) {
- fastexport_bypass_raw_ca = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_ca" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_ca")) {
+ fastexport_bypass_raw_ca = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_ca");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_df" )) {
- fastexport_bypass_raw_df = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_df" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_df")) {
+ fastexport_bypass_raw_df = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_df");
}
- if (keyFile.has_key ("Fast Export", "fastexport_bypass_raw_ff" )) {
- fastexport_bypass_raw_ff = keyFile.get_boolean ("Fast Export", "fastexport_bypass_raw_ff" );
+ if (keyFile.has_key("Fast Export", "fastexport_bypass_raw_ff")) {
+ fastexport_bypass_raw_ff = keyFile.get_boolean("Fast Export", "fastexport_bypass_raw_ff");
}
- if (keyFile.has_key ("Fast Export", "fastexport_icm_input" )) {
- fastexport_icm_input = keyFile.get_string ("Fast Export", "fastexport_icm_input" );
+ if (keyFile.has_key("Fast Export", "fastexport_icm_input")) {
+ fastexport_icm_input_profile = keyFile.get_string("Fast Export", "fastexport_icm_input");
}
- if (keyFile.has_key ("Fast Export", "fastexport_icm_working" )) {
- fastexport_icm_working = keyFile.get_string ("Fast Export", "fastexport_icm_working" );
+ if (keyFile.has_key("Fast Export", "fastexport_icm_working")) {
+ fastexport_icm_working_profile = keyFile.get_string("Fast Export", "fastexport_icm_working");
}
- if (keyFile.has_key ("Fast Export", "fastexport_icm_output" )) {
- fastexport_icm_output = keyFile.get_string ("Fast Export", "fastexport_icm_output" );
+ if (keyFile.has_key("Fast Export", "fastexport_icm_output")) {
+ fastexport_icm_output_profile = keyFile.get_string("Fast Export", "fastexport_icm_output");
}
- if (keyFile.has_key ("Fast Export", "fastexport_icm_output_intent" )) {
- fastexport_icm_outputIntent = static_cast (keyFile.get_integer ("Fast Export", "fastexport_icm_output_intent" ));
+ if (keyFile.has_key("Fast Export", "fastexport_icm_output_intent")) {
+ fastexport_icm_outputIntent = static_cast(keyFile.get_integer("Fast Export", "fastexport_icm_output_intent"));
}
- if (keyFile.has_key ("Fast Export", "fastexport_icm_output_bpc" )) {
- fastexport_icm_outputBPC = keyFile.get_boolean ("Fast Export", "fastexport_icm_output_bpc" );
+ if (keyFile.has_key("Fast Export", "fastexport_icm_output_bpc")) {
+ fastexport_icm_outputBPC = keyFile.get_boolean("Fast Export", "fastexport_icm_output_bpc");
}
- if (keyFile.has_key ("Fast Export", "fastexport_icm_gamma" )) {
- fastexport_icm_gamma = keyFile.get_string ("Fast Export", "fastexport_icm_gamma" );
+ if (keyFile.has_key("Fast Export", "fastexport_resize_enabled")) {
+ fastexport_resize_enabled = keyFile.get_boolean("Fast Export", "fastexport_resize_enabled");
}
- if (keyFile.has_key ("Fast Export", "fastexport_resize_enabled" )) {
- fastexport_resize_enabled = keyFile.get_boolean ("Fast Export", "fastexport_resize_enabled" );
+ if (keyFile.has_key("Fast Export", "fastexport_resize_scale")) {
+ fastexport_resize_scale = keyFile.get_double("Fast Export", "fastexport_resize_scale");
}
- if (keyFile.has_key ("Fast Export", "fastexport_resize_scale" )) {
- fastexport_resize_scale = keyFile.get_double ("Fast Export", "fastexport_resize_scale" );
+ if (keyFile.has_key("Fast Export", "fastexport_resize_appliesTo")) {
+ fastexport_resize_appliesTo = keyFile.get_string("Fast Export", "fastexport_resize_appliesTo");
}
- if (keyFile.has_key ("Fast Export", "fastexport_resize_appliesTo" )) {
- fastexport_resize_appliesTo = keyFile.get_string ("Fast Export", "fastexport_resize_appliesTo" );
+ if (keyFile.has_key("Fast Export", "fastexport_resize_method")) {
+ fastexport_resize_method = keyFile.get_string("Fast Export", "fastexport_resize_method");
}
- if (keyFile.has_key ("Fast Export", "fastexport_resize_method" )) {
- fastexport_resize_method = keyFile.get_string ("Fast Export", "fastexport_resize_method" );
+ if (keyFile.has_key("Fast Export", "fastexport_resize_dataspec")) {
+ fastexport_resize_dataspec = keyFile.get_integer("Fast Export", "fastexport_resize_dataspec");
}
- if (keyFile.has_key ("Fast Export", "fastexport_resize_dataspec" )) {
- fastexport_resize_dataspec = keyFile.get_integer ("Fast Export", "fastexport_resize_dataspec" );
+ if (keyFile.has_key("Fast Export", "fastexport_resize_width")) {
+ fastexport_resize_width = keyFile.get_integer("Fast Export", "fastexport_resize_width");
}
- if (keyFile.has_key ("Fast Export", "fastexport_resize_width" )) {
- fastexport_resize_width = keyFile.get_integer ("Fast Export", "fastexport_resize_width" );
+ if (keyFile.has_key("Fast Export", "fastexport_resize_height")) {
+ fastexport_resize_height = keyFile.get_integer("Fast Export", "fastexport_resize_height");
}
- if (keyFile.has_key ("Fast Export", "fastexport_resize_height" )) {
- fastexport_resize_height = keyFile.get_integer ("Fast Export", "fastexport_resize_height" );
- }
-
- if (keyFile.has_key ("Fast Export", "fastexport_use_fast_pipeline" )) {
- fastexport_use_fast_pipeline = keyFile.get_integer ("Fast Export", "fastexport_use_fast_pipeline" );
+ if (keyFile.has_key("Fast Export", "fastexport_use_fast_pipeline")) {
+ fastexport_use_fast_pipeline = keyFile.get_integer("Fast Export", "fastexport_use_fast_pipeline");
}
}
- if (keyFile.has_group ("Dialogs")) {
- safeDirGet (keyFile, "Dialogs", "LastIccDir", lastIccDir);
- safeDirGet (keyFile, "Dialogs", "LastDarkframeDir", lastDarkframeDir);
- safeDirGet (keyFile, "Dialogs", "LastFlatfieldDir", lastFlatfieldDir);
- safeDirGet (keyFile, "Dialogs", "LastRgbCurvesDir", lastRgbCurvesDir);
- safeDirGet (keyFile, "Dialogs", "LastLabCurvesDir", lastLabCurvesDir);
- safeDirGet (keyFile, "Dialogs", "LastRetinexDir", lastRetinexDir);
- safeDirGet (keyFile, "Dialogs", "LastDenoiseCurvesDir", lastDenoiseCurvesDir);
- safeDirGet (keyFile, "Dialogs", "LastWaveletCurvesDir", lastWaveletCurvesDir);
- safeDirGet (keyFile, "Dialogs", "LastPFCurvesDir", lastPFCurvesDir);
- safeDirGet (keyFile, "Dialogs", "LastHsvCurvesDir", lastHsvCurvesDir);
- safeDirGet (keyFile, "Dialogs", "LastBWCurvesDir", lastBWCurvesDir);
+ if (keyFile.has_group("Dialogs")) {
+ safeDirGet(keyFile, "Dialogs", "LastIccDir", lastIccDir);
+ safeDirGet(keyFile, "Dialogs", "LastDarkframeDir", lastDarkframeDir);
+ safeDirGet(keyFile, "Dialogs", "LastFlatfieldDir", lastFlatfieldDir);
+ safeDirGet(keyFile, "Dialogs", "LastRgbCurvesDir", lastRgbCurvesDir);
+ safeDirGet(keyFile, "Dialogs", "LastLabCurvesDir", lastLabCurvesDir);
+ safeDirGet(keyFile, "Dialogs", "LastRetinexDir", lastRetinexDir);
+ safeDirGet(keyFile, "Dialogs", "LastDenoiseCurvesDir", lastDenoiseCurvesDir);
+ safeDirGet(keyFile, "Dialogs", "LastWaveletCurvesDir", lastWaveletCurvesDir);
+ safeDirGet(keyFile, "Dialogs", "LastPFCurvesDir", lastPFCurvesDir);
+ safeDirGet(keyFile, "Dialogs", "LastHsvCurvesDir", lastHsvCurvesDir);
+ safeDirGet(keyFile, "Dialogs", "LastBWCurvesDir", lastBWCurvesDir);
- safeDirGet (keyFile, "Dialogs", "LastToneCurvesDir", lastToneCurvesDir);
- safeDirGet (keyFile, "Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir);
- safeDirGet (keyFile, "Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir);
- safeDirGet (keyFile, "Dialogs", "LastLensProfileDir", lastLensProfileDir);
+ safeDirGet(keyFile, "Dialogs", "LastToneCurvesDir", lastToneCurvesDir);
+ safeDirGet(keyFile, "Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir);
+ safeDirGet(keyFile, "Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir);
+ safeDirGet(keyFile, "Dialogs", "LastLensProfileDir", lastLensProfileDir);
+ safeDirGet(keyFile, "Dialogs", "LastICCProfCreatorDir", lastICCProfCreatorDir);
- if (keyFile.has_key ("Dialogs", "GimpPluginShowInfoDialog")) {
- gimpPluginShowInfoDialog = keyFile.get_boolean ("Dialogs", "GimpPluginShowInfoDialog");
+ if (keyFile.has_key("Dialogs", "GimpPluginShowInfoDialog")) {
+ gimpPluginShowInfoDialog = keyFile.get_boolean("Dialogs", "GimpPluginShowInfoDialog");
}
}
- if (keyFile.has_group ("Lensfun")) {
- if (keyFile.has_key ("Lensfun", "DBDirectory")) {
- rtSettings.lensfunDbDirectory = keyFile.get_string ("Lensfun", "DBDirectory");
+ if (keyFile.has_group("Lensfun")) {
+ if (keyFile.has_key("Lensfun", "DBDirectory")) {
+ rtSettings.lensfunDbDirectory = keyFile.get_string("Lensfun", "DBDirectory");
}
}
// --------------------------------------------------------------------------------------------------------
- filterOutParsedExtensions ();
+ filterOutParsedExtensions();
return;
}
} catch (Glib::Error &err) {
- Glib::ustring msg = Glib::ustring::compose ("Options::readFromFile / Error code %1 while reading values from \"%2\":\n%3", err.code(), fname, err.what());
+ Glib::ustring msg = Glib::ustring::compose("Options::readFromFile / Error code %1 while reading values from \"%2\":\n%3", err.code(), fname, err.what());
if (options.rtSettings.verbose) {
- printf ("%s\n", msg.c_str());
+ printf("%s\n", msg.c_str());
}
- throw Error (msg);
+ throw Error(msg);
} catch (...) {
- Glib::ustring msg = Glib::ustring::compose ("Options::readFromFile / Unknown exception while trying to load \"%1\"!", fname);
+ Glib::ustring msg = Glib::ustring::compose("Options::readFromFile / Unknown exception while trying to load \"%1\"!", fname);
if (options.rtSettings.verbose) {
- printf ("%s\n", msg.c_str());
+ printf("%s\n", msg.c_str());
}
- throw Error (msg);
+ throw Error(msg);
}
}
-bool Options::safeDirGet (const Glib::KeyFile& keyFile, const Glib::ustring& section,
- const Glib::ustring& entryName, Glib::ustring& destination)
+bool Options::safeDirGet(const Glib::KeyFile& keyFile, const Glib::ustring& section,
+ const Glib::ustring& entryName, Glib::ustring& destination)
{
try {
- if (keyFile.has_key (section, entryName) && !keyFile.get_string (section, entryName).empty ()) {
- destination = keyFile.get_string (section, entryName);
+ if (keyFile.has_key(section, entryName) && !keyFile.get_string(section, entryName).empty()) {
+ destination = keyFile.get_string(section, entryName);
return true;
}
@@ -1746,7 +1839,7 @@ bool Options::safeDirGet (const Glib::KeyFile& keyFile, const Glib::ustring& sec
return false;
}
-void Options::saveToFile (Glib::ustring fname)
+void Options::saveToFile(Glib::ustring fname)
{
Glib::ustring keyData;
@@ -1755,186 +1848,186 @@ void Options::saveToFile (Glib::ustring fname)
Glib::KeyFile keyFile;
- keyFile.set_boolean ("General", "TabbedEditor", tabbedUI);
- keyFile.set_boolean ("General", "StoreLastProfile", savesParamsAtExit);
+ keyFile.set_boolean("General", "TabbedEditor", tabbedUI);
+ keyFile.set_boolean("General", "StoreLastProfile", savesParamsAtExit);
if (startupDir == STARTUPDIR_HOME) {
- keyFile.set_string ("General", "StartupDirectory", "home");
+ keyFile.set_string("General", "StartupDirectory", "home");
} else if (startupDir == STARTUPDIR_CURRENT) {
- keyFile.set_string ("General", "StartupDirectory", "current");
+ keyFile.set_string("General", "StartupDirectory", "current");
} else if (startupDir == STARTUPDIR_CUSTOM) {
- keyFile.set_string ("General", "StartupDirectory", "custom");
+ keyFile.set_string("General", "StartupDirectory", "custom");
} else if (startupDir == STARTUPDIR_LAST) {
- keyFile.set_string ("General", "StartupDirectory", "last");
+ keyFile.set_string("General", "StartupDirectory", "last");
}
- keyFile.set_string ("General", "StartupPath", startupPath);
- keyFile.set_string ("General", "DateFormat", dateFormat);
- keyFile.set_integer ("General", "AdjusterMinDelay", adjusterMinDelay);
- keyFile.set_integer ("General", "AdjusterMaxDelay", adjusterMaxDelay);
- keyFile.set_boolean ("General", "MultiUser", multiUser);
- keyFile.set_string ("General", "Language", language);
- keyFile.set_boolean ("General", "LanguageAutoDetect", languageAutoDetect);
- keyFile.set_string ("General", "Theme", theme);
- keyFile.set_string ("General", "Version", RTVERSION);
- keyFile.set_string ("General", "DarkFramesPath", rtSettings.darkFramesPath);
- keyFile.set_string ("General", "FlatFieldsPath", rtSettings.flatFieldsPath);
- keyFile.set_boolean ("General", "Verbose", rtSettings.verbose);
- keyFile.set_integer ("External Editor", "EditorKind", editorToSendTo);
- keyFile.set_string ("External Editor", "GimpDir", gimpDir);
- keyFile.set_string ("External Editor", "PhotoshopDir", psDir);
- keyFile.set_string ("External Editor", "CustomEditor", customEditorProg);
+ keyFile.set_string("General", "StartupPath", startupPath);
+ keyFile.set_string("General", "DateFormat", dateFormat);
+ keyFile.set_integer("General", "AdjusterMinDelay", adjusterMinDelay);
+ keyFile.set_integer("General", "AdjusterMaxDelay", adjusterMaxDelay);
+ keyFile.set_boolean("General", "MultiUser", multiUser);
+ keyFile.set_string("General", "Language", language);
+ keyFile.set_boolean("General", "LanguageAutoDetect", languageAutoDetect);
+ keyFile.set_string("General", "Theme", theme);
+ keyFile.set_string("General", "Version", RTVERSION);
+ keyFile.set_string("General", "DarkFramesPath", rtSettings.darkFramesPath);
+ keyFile.set_string("General", "FlatFieldsPath", rtSettings.flatFieldsPath);
+ keyFile.set_boolean("General", "Verbose", rtSettings.verbose);
+ keyFile.set_integer("External Editor", "EditorKind", editorToSendTo);
+ keyFile.set_string("External Editor", "GimpDir", gimpDir);
+ keyFile.set_string("External Editor", "PhotoshopDir", psDir);
+ keyFile.set_string("External Editor", "CustomEditor", customEditorProg);
- keyFile.set_boolean ("File Browser", "BrowseOnlyRaw", fbOnlyRaw);
- keyFile.set_boolean ("File Browser", "BrowserShowsDate", fbShowDateTime);
- keyFile.set_boolean ("File Browser", "BrowserShowsExif", fbShowBasicExif);
- keyFile.set_boolean ("File Browser", "BrowserShowsExpComp", fbShowExpComp);
- keyFile.set_boolean ("File Browser", "BrowserShowsHidden", fbShowHidden);
- keyFile.set_integer ("File Browser", "ThumbnailSize", thumbSize);
- keyFile.set_integer ("File Browser", "ThumbnailSizeTab", thumbSizeTab);
- keyFile.set_integer ("File Browser", "ThumbnailSizeQueue", thumbSizeQueue);
- keyFile.set_integer ("File Browser", "SameThumbSize", sameThumbSize);
- keyFile.set_integer ("File Browser", "MaxPreviewHeight", maxThumbnailHeight);
- keyFile.set_integer ("File Browser", "MaxCacheEntries", maxCacheEntries);
+ keyFile.set_boolean("File Browser", "BrowseOnlyRaw", fbOnlyRaw);
+ keyFile.set_boolean("File Browser", "BrowserShowsDate", fbShowDateTime);
+ keyFile.set_boolean("File Browser", "BrowserShowsExif", fbShowBasicExif);
+ keyFile.set_boolean("File Browser", "BrowserShowsExpComp", fbShowExpComp);
+ keyFile.set_boolean("File Browser", "BrowserShowsHidden", fbShowHidden);
+ keyFile.set_integer("File Browser", "ThumbnailSize", thumbSize);
+ keyFile.set_integer("File Browser", "ThumbnailSizeTab", thumbSizeTab);
+ keyFile.set_integer("File Browser", "ThumbnailSizeQueue", thumbSizeQueue);
+ keyFile.set_integer("File Browser", "SameThumbSize", sameThumbSize);
+ keyFile.set_integer("File Browser", "MaxPreviewHeight", maxThumbnailHeight);
+ keyFile.set_integer("File Browser", "MaxCacheEntries", maxCacheEntries);
Glib::ArrayHandle pext = parseExtensions;
- keyFile.set_string_list ("File Browser", "ParseExtensions", pext);
+ keyFile.set_string_list("File Browser", "ParseExtensions", pext);
Glib::ArrayHandle pextena = parseExtensionsEnabled;
- keyFile.set_integer_list ("File Browser", "ParseExtensionsEnabled", pextena);
- keyFile.set_integer ("File Browser", "ThumbnailArrangement", fbArrangement);
- keyFile.set_integer ("File Browser", "ThumbnailInterpolation", thumbInterp);
+ keyFile.set_integer_list("File Browser", "ParseExtensionsEnabled", pextena);
+ keyFile.set_integer("File Browser", "ThumbnailArrangement", fbArrangement);
+ keyFile.set_integer("File Browser", "ThumbnailInterpolation", thumbInterp);
Glib::ArrayHandle pfav = favoriteDirs;
- keyFile.set_string_list ("File Browser", "FavoriteDirs", pfav);
+ keyFile.set_string_list("File Browser", "FavoriteDirs", pfav);
Glib::ArrayHandle pren = renameTemplates;
- keyFile.set_string_list ("File Browser", "RenameTemplates", pren);
- keyFile.set_boolean ("File Browser", "RenameUseTemplates", renameUseTemplates);
+ keyFile.set_string_list("File Browser", "RenameTemplates", pren);
+ keyFile.set_boolean("File Browser", "RenameUseTemplates", renameUseTemplates);
Glib::ArrayHandle ptzoom = thumbnailZoomRatios;
- keyFile.set_double_list ("File Browser", "ThumbnailZoomRatios", ptzoom);
- keyFile.set_boolean ("File Browser", "OverlayedFileNames", overlayedFileNames);
- keyFile.set_boolean ("File Browser", "FilmStripOverlayedFileNames", filmStripOverlayedFileNames);
- keyFile.set_boolean ("File Browser", "ShowFileNames", showFileNames );
- keyFile.set_boolean ("File Browser", "FilmStripShowFileNames", filmStripShowFileNames );
- keyFile.set_boolean ("File Browser", "InternalThumbIfUntouched", internalThumbIfUntouched );
- keyFile.set_boolean ("File Browser", "menuGroupRank", menuGroupRank);
- keyFile.set_boolean ("File Browser", "menuGroupLabel", menuGroupLabel);
- keyFile.set_boolean ("File Browser", "menuGroupFileOperations", menuGroupFileOperations);
- keyFile.set_boolean ("File Browser", "menuGroupProfileOperations", menuGroupProfileOperations);
- keyFile.set_boolean ("File Browser", "menuGroupExtProg", menuGroupExtProg);
- keyFile.set_integer ("File Browser", "MaxRecentFolders", maxRecentFolders);
+ keyFile.set_double_list("File Browser", "ThumbnailZoomRatios", ptzoom);
+ keyFile.set_boolean("File Browser", "OverlayedFileNames", overlayedFileNames);
+ keyFile.set_boolean("File Browser", "FilmStripOverlayedFileNames", filmStripOverlayedFileNames);
+ keyFile.set_boolean("File Browser", "ShowFileNames", showFileNames);
+ keyFile.set_boolean("File Browser", "FilmStripShowFileNames", filmStripShowFileNames);
+ keyFile.set_boolean("File Browser", "InternalThumbIfUntouched", internalThumbIfUntouched);
+ keyFile.set_boolean("File Browser", "menuGroupRank", menuGroupRank);
+ keyFile.set_boolean("File Browser", "menuGroupLabel", menuGroupLabel);
+ keyFile.set_boolean("File Browser", "menuGroupFileOperations", menuGroupFileOperations);
+ keyFile.set_boolean("File Browser", "menuGroupProfileOperations", menuGroupProfileOperations);
+ keyFile.set_boolean("File Browser", "menuGroupExtProg", menuGroupExtProg);
+ keyFile.set_integer("File Browser", "MaxRecentFolders", maxRecentFolders);
{
std::vector temp;
- temp.reserve (maxRecentFolders);
+ temp.reserve(maxRecentFolders);
- for (unsigned int i = 0; i < std::min (recentFolders.size(), maxRecentFolders); i++) {
- temp.push_back (recentFolders[i]);
+ for (unsigned int i = 0; i < std::min(recentFolders.size(), maxRecentFolders); i++) {
+ temp.push_back(recentFolders[i]);
}
- keyFile.set_string_list ("File Browser", "RecentFolders", temp);
+ keyFile.set_string_list("File Browser", "RecentFolders", temp);
}
- keyFile.set_integer ("Clipping Indication", "HighlightThreshold", highlightThreshold);
- keyFile.set_integer ("Clipping Indication", "ShadowThreshold", shadowThreshold);
- keyFile.set_boolean ("Clipping Indication", "BlinkClipped", blinkClipped);
+ keyFile.set_integer("Clipping Indication", "HighlightThreshold", highlightThreshold);
+ keyFile.set_integer("Clipping Indication", "ShadowThreshold", shadowThreshold);
+ keyFile.set_boolean("Clipping Indication", "BlinkClipped", blinkClipped);
- keyFile.set_integer ("Performance", "RgbDenoiseThreadLimit", rgbDenoiseThreadLimit);
- keyFile.set_double ("Performance", "NRauto", rtSettings.nrauto);
- keyFile.set_double ("Performance", "NRautomax", rtSettings.nrautomax);
- keyFile.set_double ("Performance", "NRhigh", rtSettings.nrhigh);
- keyFile.set_integer ("Performance", "NRWavlevel", rtSettings.nrwavlevel);
- keyFile.set_integer ("Performance", "LevNR", rtSettings.leveldnv);
- keyFile.set_integer ("Performance", "LevNRTI", rtSettings.leveldnti);
- keyFile.set_integer ("Performance", "LevNRAUT", rtSettings.leveldnaut);
- keyFile.set_integer ("Performance", "LevNRLISS", rtSettings.leveldnliss);
- keyFile.set_integer ("Performance", "SIMPLNRAUT", rtSettings.leveldnautsimpl);
- keyFile.set_integer ("Performance", "ClutCacheSize", clutCacheSize);
- keyFile.set_integer ("Performance", "MaxInspectorBuffers", maxInspectorBuffers);
- keyFile.set_integer ("Performance", "InspectorDelay", inspectorDelay);
- keyFile.set_integer ("Performance", "PreviewDemosaicFromSidecar", prevdemo);
- keyFile.set_boolean ("Performance", "Daubechies", rtSettings.daubech);
- keyFile.set_boolean ("Performance", "SerializeTiffRead", serializeTiffRead);
+ keyFile.set_integer("Performance", "RgbDenoiseThreadLimit", rgbDenoiseThreadLimit);
+ keyFile.set_double("Performance", "NRauto", rtSettings.nrauto);
+ keyFile.set_double("Performance", "NRautomax", rtSettings.nrautomax);
+ keyFile.set_double("Performance", "NRhigh", rtSettings.nrhigh);
+ keyFile.set_integer("Performance", "NRWavlevel", rtSettings.nrwavlevel);
+ keyFile.set_integer("Performance", "LevNR", rtSettings.leveldnv);
+ keyFile.set_integer("Performance", "LevNRTI", rtSettings.leveldnti);
+ keyFile.set_integer("Performance", "LevNRAUT", rtSettings.leveldnaut);
+ keyFile.set_integer("Performance", "LevNRLISS", rtSettings.leveldnliss);
+ keyFile.set_integer("Performance", "SIMPLNRAUT", rtSettings.leveldnautsimpl);
+ keyFile.set_integer("Performance", "ClutCacheSize", clutCacheSize);
+ keyFile.set_integer("Performance", "MaxInspectorBuffers", maxInspectorBuffers);
+ keyFile.set_integer("Performance", "InspectorDelay", inspectorDelay);
+ keyFile.set_integer("Performance", "PreviewDemosaicFromSidecar", prevdemo);
+ keyFile.set_boolean("Performance", "Daubechies", rtSettings.daubech);
+ keyFile.set_boolean("Performance", "SerializeTiffRead", serializeTiffRead);
keyFile.set_integer("Performance", "ThumbnailInspectorMode", int(rtSettings.thumbnail_inspector_mode));
- keyFile.set_string ("Output", "Format", saveFormat.format);
- keyFile.set_integer ("Output", "JpegQuality", saveFormat.jpegQuality);
- keyFile.set_integer ("Output", "JpegSubSamp", saveFormat.jpegSubSamp);
- keyFile.set_integer ("Output", "PngBps", saveFormat.pngBits);
- keyFile.set_integer ("Output", "TiffBps", saveFormat.tiffBits);
- keyFile.set_boolean ("Output", "TiffUncompressed", saveFormat.tiffUncompressed);
- keyFile.set_boolean ("Output", "SaveProcParams", saveFormat.saveParams);
+ keyFile.set_string("Output", "Format", saveFormat.format);
+ keyFile.set_integer("Output", "JpegQuality", saveFormat.jpegQuality);
+ keyFile.set_integer("Output", "JpegSubSamp", saveFormat.jpegSubSamp);
+ keyFile.set_integer("Output", "PngBps", saveFormat.pngBits);
+ keyFile.set_integer("Output", "TiffBps", saveFormat.tiffBits);
+ keyFile.set_boolean("Output", "TiffUncompressed", saveFormat.tiffUncompressed);
+ keyFile.set_boolean("Output", "SaveProcParams", saveFormat.saveParams);
- keyFile.set_string ("Output", "FormatBatch", saveFormatBatch.format);
- keyFile.set_integer ("Output", "JpegQualityBatch", saveFormatBatch.jpegQuality);
- keyFile.set_integer ("Output", "JpegSubSampBatch", saveFormatBatch.jpegSubSamp);
- keyFile.set_integer ("Output", "PngBpsBatch", saveFormatBatch.pngBits);
- keyFile.set_integer ("Output", "TiffBpsBatch", saveFormatBatch.tiffBits);
- keyFile.set_boolean ("Output", "TiffUncompressedBatch", saveFormatBatch.tiffUncompressed);
- keyFile.set_boolean ("Output", "SaveProcParamsBatch", saveFormatBatch.saveParams);
+ keyFile.set_string("Output", "FormatBatch", saveFormatBatch.format);
+ keyFile.set_integer("Output", "JpegQualityBatch", saveFormatBatch.jpegQuality);
+ keyFile.set_integer("Output", "JpegSubSampBatch", saveFormatBatch.jpegSubSamp);
+ keyFile.set_integer("Output", "PngBpsBatch", saveFormatBatch.pngBits);
+ keyFile.set_integer("Output", "TiffBpsBatch", saveFormatBatch.tiffBits);
+ keyFile.set_boolean("Output", "TiffUncompressedBatch", saveFormatBatch.tiffUncompressed);
+ keyFile.set_boolean("Output", "SaveProcParamsBatch", saveFormatBatch.saveParams);
- keyFile.set_string ("Output", "PathTemplate", savePathTemplate);
- keyFile.set_string ("Output", "PathFolder", savePathFolder);
- keyFile.set_boolean ("Output", "AutoSuffix", autoSuffix);
- keyFile.set_boolean ("Output", "ForceFormatOpts", forceFormatOpts);
- keyFile.set_integer ("Output", "SaveMethodNum", saveMethodNum);
- keyFile.set_boolean ("Output", "UsePathTemplate", saveUsePathTemplate);
- keyFile.set_string ("Output", "LastSaveAsPath", lastSaveAsPath);
- keyFile.set_boolean ("Output", "OverwriteOutputFile", overwriteOutputFile);
+ keyFile.set_string("Output", "PathTemplate", savePathTemplate);
+ keyFile.set_string("Output", "PathFolder", savePathFolder);
+ keyFile.set_boolean("Output", "AutoSuffix", autoSuffix);
+ keyFile.set_boolean("Output", "ForceFormatOpts", forceFormatOpts);
+ keyFile.set_integer("Output", "SaveMethodNum", saveMethodNum);
+ keyFile.set_boolean("Output", "UsePathTemplate", saveUsePathTemplate);
+ keyFile.set_string("Output", "LastSaveAsPath", lastSaveAsPath);
+ keyFile.set_boolean("Output", "OverwriteOutputFile", overwriteOutputFile);
- keyFile.set_string ("Profiles", "Directory", profilePath);
- keyFile.set_boolean ("Profiles", "UseBundledProfiles", useBundledProfiles);
- keyFile.set_string ("Profiles", "LoadSaveProfilePath", loadSaveProfilePath);
- keyFile.set_string ("Profiles", "RawDefault", defProfRaw);
- keyFile.set_string ("Profiles", "ImgDefault", defProfImg);
- keyFile.set_boolean ("Profiles", "FilledProfile", filledProfile);
- keyFile.set_boolean ("Profiles", "SaveParamsWithFile", saveParamsFile);
- keyFile.set_boolean ("Profiles", "SaveParamsToCache", saveParamsCache);
- keyFile.set_integer ("Profiles", "LoadParamsFromLocation", paramsLoadLocation);
- keyFile.set_string ("Profiles", "CustomProfileBuilderPath", CPBPath);
- keyFile.set_integer ("Profiles", "CustomProfileBuilderKeys", CPBKeys);
+ keyFile.set_string("Profiles", "Directory", profilePath);
+ keyFile.set_boolean("Profiles", "UseBundledProfiles", useBundledProfiles);
+ keyFile.set_string("Profiles", "LoadSaveProfilePath", loadSaveProfilePath);
+ keyFile.set_string("Profiles", "RawDefault", defProfRaw);
+ keyFile.set_string("Profiles", "ImgDefault", defProfImg);
+ keyFile.set_boolean("Profiles", "FilledProfile", filledProfile);
+ keyFile.set_boolean("Profiles", "SaveParamsWithFile", saveParamsFile);
+ keyFile.set_boolean("Profiles", "SaveParamsToCache", saveParamsCache);
+ keyFile.set_integer("Profiles", "LoadParamsFromLocation", paramsLoadLocation);
+ keyFile.set_string("Profiles", "CustomProfileBuilderPath", CPBPath);
+ keyFile.set_integer("Profiles", "CustomProfileBuilderKeys", CPBKeys);
- keyFile.set_integer ("GUI", "WindowWidth", windowWidth);
- keyFile.set_integer ("GUI", "WindowHeight", windowHeight);
- keyFile.set_integer ("GUI", "WindowX", windowX);
- keyFile.set_integer ("GUI", "WindowY", windowY);
- keyFile.set_integer ("GUI", "WindowMonitor", windowMonitor);
- keyFile.set_integer ("GUI", "MeowMonitor", meowMonitor);
- keyFile.set_boolean ("GUI", "MeowFullScreen", meowFullScreen);
- keyFile.set_boolean ("GUI", "MeowMaximized", meowMaximized);
- keyFile.set_integer ("GUI", "MeowWidth", meowWidth);
- keyFile.set_integer ("GUI", "MeowHeight", meowHeight);
- keyFile.set_integer ("GUI", "MeowX", meowX);
- keyFile.set_integer ("GUI", "MeowY", meowY);
- keyFile.set_boolean ("GUI", "WindowMaximized", windowMaximized);
- keyFile.set_integer ("GUI", "DetailWindowWidth", detailWindowWidth);
- keyFile.set_integer ("GUI", "DetailWindowHeight", detailWindowHeight);
- keyFile.set_integer ("GUI", "DirBrowserWidth", dirBrowserWidth);
- keyFile.set_integer ("GUI", "DirBrowserHeight", dirBrowserHeight);
- keyFile.set_integer ("GUI", "SortType", dirBrowserSortType);
- keyFile.set_integer ("GUI", "PreferencesWidth", preferencesWidth);
- keyFile.set_integer ("GUI", "PreferencesHeight", preferencesHeight);
- keyFile.set_integer ("GUI", "SaveAsDialogWidth", saveAsDialogWidth);
- keyFile.set_integer ("GUI", "SaveAsDialogHeight", saveAsDialogHeight);
- keyFile.set_integer ("GUI", "ToolPanelWidth", toolPanelWidth);
- keyFile.set_integer ("GUI", "BrowserToolPanelWidth", browserToolPanelWidth);
- keyFile.set_integer ("GUI", "BrowserToolPanelHeight", browserToolPanelHeight);
- keyFile.set_boolean ("GUI", "BrowserToolPanelOpened", browserToolPanelOpened);
- keyFile.set_boolean ("GUI", "EditorFilmStripOpened", editorFilmStripOpened);
- keyFile.set_boolean ("GUI", "BrowserDirPanelOpened", browserDirPanelOpened);
- keyFile.set_integer ("GUI", "HistoryPanelWidth", historyPanelWidth);
- keyFile.set_string ("GUI", "FontFamily", fontFamily);
- keyFile.set_integer ("GUI", "FontSize", fontSize);
- keyFile.set_string ("GUI", "CPFontFamily", CPFontFamily);
- keyFile.set_integer ("GUI", "CPFontSize", CPFontSize);
- keyFile.set_integer ("GUI", "LastPreviewScale", lastScale);
- keyFile.set_boolean ("GUI", "LastShowAllExif", lastShowAllExif);
- keyFile.set_integer ("GUI", "PanAccelFactor", panAccelFactor);
- keyFile.set_boolean ("GUI", "RememberZoomAndPan", rememberZoomAndPan);
- keyFile.set_integer ("GUI", "LastCropSize", lastCropSize);
- keyFile.set_boolean ("GUI", "ShowHistory", showHistory);
- keyFile.set_integer ("GUI", "ShowFilePanelState", showFilePanelState);
- keyFile.set_boolean ("GUI", "ShowInfo", showInfo);
- keyFile.set_boolean ("GUI", "MainNBVertical", mainNBVertical);
- keyFile.set_boolean ("GUI", "ShowClippedHighlights", showClippedHighlights);
- keyFile.set_boolean ("GUI", "ShowClippedShadows", showClippedShadows);
- keyFile.set_integer ("GUI", "FrameColor", bgcolor);
- keyFile.set_boolean ("GUI", "ProcessingQueueEnbled", procQueueEnabled);
+ keyFile.set_integer("GUI", "WindowWidth", windowWidth);
+ keyFile.set_integer("GUI", "WindowHeight", windowHeight);
+ keyFile.set_integer("GUI", "WindowX", windowX);
+ keyFile.set_integer("GUI", "WindowY", windowY);
+ keyFile.set_integer("GUI", "WindowMonitor", windowMonitor);
+ keyFile.set_integer("GUI", "MeowMonitor", meowMonitor);
+ keyFile.set_boolean("GUI", "MeowFullScreen", meowFullScreen);
+ keyFile.set_boolean("GUI", "MeowMaximized", meowMaximized);
+ keyFile.set_integer("GUI", "MeowWidth", meowWidth);
+ keyFile.set_integer("GUI", "MeowHeight", meowHeight);
+ keyFile.set_integer("GUI", "MeowX", meowX);
+ keyFile.set_integer("GUI", "MeowY", meowY);
+ keyFile.set_boolean("GUI", "WindowMaximized", windowMaximized);
+ keyFile.set_integer("GUI", "DetailWindowWidth", detailWindowWidth);
+ keyFile.set_integer("GUI", "DetailWindowHeight", detailWindowHeight);
+ keyFile.set_integer("GUI", "DirBrowserWidth", dirBrowserWidth);
+ keyFile.set_integer("GUI", "DirBrowserHeight", dirBrowserHeight);
+ keyFile.set_integer("GUI", "SortType", dirBrowserSortType);
+ keyFile.set_integer("GUI", "PreferencesWidth", preferencesWidth);
+ keyFile.set_integer("GUI", "PreferencesHeight", preferencesHeight);
+ keyFile.set_integer("GUI", "SaveAsDialogWidth", saveAsDialogWidth);
+ keyFile.set_integer("GUI", "SaveAsDialogHeight", saveAsDialogHeight);
+ keyFile.set_integer("GUI", "ToolPanelWidth", toolPanelWidth);
+ keyFile.set_integer("GUI", "BrowserToolPanelWidth", browserToolPanelWidth);
+ keyFile.set_integer("GUI", "BrowserToolPanelHeight", browserToolPanelHeight);
+ keyFile.set_boolean("GUI", "BrowserToolPanelOpened", browserToolPanelOpened);
+ keyFile.set_boolean("GUI", "EditorFilmStripOpened", editorFilmStripOpened);
+ keyFile.set_boolean("GUI", "BrowserDirPanelOpened", browserDirPanelOpened);
+ keyFile.set_integer("GUI", "HistoryPanelWidth", historyPanelWidth);
+ keyFile.set_string("GUI", "FontFamily", fontFamily);
+ keyFile.set_integer("GUI", "FontSize", fontSize);
+ keyFile.set_string("GUI", "CPFontFamily", CPFontFamily);
+ keyFile.set_integer("GUI", "CPFontSize", CPFontSize);
+ keyFile.set_integer("GUI", "LastPreviewScale", lastScale);
+ keyFile.set_boolean("GUI", "LastShowAllExif", lastShowAllExif);
+ keyFile.set_integer("GUI", "PanAccelFactor", panAccelFactor);
+ keyFile.set_boolean("GUI", "RememberZoomAndPan", rememberZoomAndPan);
+ keyFile.set_integer("GUI", "LastCropSize", lastCropSize);
+ keyFile.set_boolean("GUI", "ShowHistory", showHistory);
+ keyFile.set_integer("GUI", "ShowFilePanelState", showFilePanelState);
+ keyFile.set_boolean("GUI", "ShowInfo", showInfo);
+ keyFile.set_boolean("GUI", "MainNBVertical", mainNBVertical);
+ keyFile.set_boolean("GUI", "ShowClippedHighlights", showClippedHighlights);
+ keyFile.set_boolean("GUI", "ShowClippedShadows", showClippedShadows);
+ keyFile.set_integer("GUI", "FrameColor", bgcolor);
+ keyFile.set_boolean("GUI", "ProcessingQueueEnbled", procQueueEnabled);
Glib::ArrayHandle tpopen = tpOpen;
keyFile.set_integer_list ("GUI", "ToolPanelsExpanded", tpopen);
keyFile.set_boolean ("GUI", "ToolPanelsExpandedAutoSave", autoSaveTpOpen);
@@ -1957,134 +2050,150 @@ void Options::saveToFile (Glib::ustring fname)
//Glib::ArrayHandle crvopen = crvOpen;
//keyFile.set_integer_list ("GUI", "CurvePanelsExpanded", crvopen);
- keyFile.set_integer ("Crop Settings", "PPI", cropPPI);
+ keyFile.set_integer("Crop Settings", "PPI", cropPPI);
keyFile.set_integer("Crop Settings", "GuidesMode", cropGuides);
keyFile.set_boolean("Crop Settings", "AutoFit", cropAutoFit);
- keyFile.set_string ("Color Management", "PrinterProfile", rtSettings.printerProfile);
- keyFile.set_integer ("Color Management", "PrinterIntent", rtSettings.printerIntent);
- keyFile.set_boolean ("Color Management", "PrinterBPC", rtSettings.printerBPC);
+ keyFile.set_string("Color Management", "PrinterProfile", rtSettings.printerProfile);
+ keyFile.set_integer("Color Management", "PrinterIntent", rtSettings.printerIntent);
+ keyFile.set_boolean("Color Management", "PrinterBPC", rtSettings.printerBPC);
- keyFile.set_string ("Color Management", "ICCDirectory", rtSettings.iccDirectory);
- keyFile.set_string ("Color Management", "MonitorProfile", rtSettings.monitorProfile);
- keyFile.set_boolean ("Color Management", "AutoMonitorProfile", rtSettings.autoMonitorProfile);
- keyFile.set_boolean ("Color Management", "Autocielab", rtSettings.autocielab);
- keyFile.set_boolean ("Color Management", "RGBcurvesLumamode_Gamut", rtSettings.rgbcurveslumamode_gamut);
- keyFile.set_integer ("Color Management", "Intent", rtSettings.monitorIntent);
- keyFile.set_boolean ("Color Management", "MonitorBPC", rtSettings.monitorBPC);
+ keyFile.set_string("Color Management", "ICCDirectory", rtSettings.iccDirectory);
+ keyFile.set_string("Color Management", "MonitorProfile", rtSettings.monitorProfile);
+ keyFile.set_boolean("Color Management", "AutoMonitorProfile", rtSettings.autoMonitorProfile);
+ keyFile.set_boolean("Color Management", "Autocielab", rtSettings.autocielab);
+ keyFile.set_boolean("Color Management", "RGBcurvesLumamode_Gamut", rtSettings.rgbcurveslumamode_gamut);
+ keyFile.set_integer("Color Management", "Intent", rtSettings.monitorIntent);
+ keyFile.set_boolean("Color Management", "MonitorBPC", rtSettings.monitorBPC);
//keyFile.set_integer ("Color Management", "view", rtSettings.viewingdevice);
//keyFile.set_integer ("Color Management", "grey", rtSettings.viewingdevicegrey);
// keyFile.set_integer ("Color Management", "greySc", rtSettings.viewinggreySc);
- keyFile.set_string ("Color Management", "AdobeRGB", rtSettings.adobe);
- keyFile.set_string ("Color Management", "ProPhoto", rtSettings.prophoto);
- keyFile.set_string ("Color Management", "ProPhoto10", rtSettings.prophoto10);
- keyFile.set_string ("Color Management", "WideGamut", rtSettings.widegamut);
- keyFile.set_string ("Color Management", "sRGB", rtSettings.srgb);
- keyFile.set_string ("Color Management", "sRGB10", rtSettings.srgb10);
- keyFile.set_string ("Color Management", "Beta", rtSettings.beta);
- keyFile.set_string ("Color Management", "Best", rtSettings.best);
- keyFile.set_string ("Color Management", "Rec2020", rtSettings.rec2020);
- keyFile.set_string ("Color Management", "Bruce", rtSettings.bruce);
- keyFile.set_integer ("Color Management", "WhiteBalanceSpotSize", whiteBalanceSpotSize);
- keyFile.set_boolean ("Color Management", "GamutICC", rtSettings.gamutICC);
- keyFile.set_boolean ("Color Management", "GamutLch", rtSettings.gamutLch);
- keyFile.set_integer ("Color Management", "ProtectRed", rtSettings.protectred);
- keyFile.set_integer ("Color Management", "Amountchroma", rtSettings.amchroma);
- keyFile.set_double ("Color Management", "ProtectRedH", rtSettings.protectredh);
- keyFile.set_integer ("Color Management", "CRI", rtSettings.CRI_color);
- keyFile.set_integer ("Color Management", "DenoiseLabgamma", rtSettings.denoiselabgamma);
+ keyFile.set_string("Color Management", "AdobeRGB", rtSettings.adobe);
+ keyFile.set_string("Color Management", "ProPhoto", rtSettings.prophoto);
+ keyFile.set_string("Color Management", "WideGamut", rtSettings.widegamut);
+ keyFile.set_string("Color Management", "sRGB", rtSettings.srgb);
+ keyFile.set_string("Color Management", "Beta", rtSettings.beta);
+ keyFile.set_string("Color Management", "Best", rtSettings.best);
+ keyFile.set_string("Color Management", "Rec2020", rtSettings.rec2020);
+ keyFile.set_string("Color Management", "Bruce", rtSettings.bruce);
+ keyFile.set_string("Color Management", "ACES-AP0", rtSettings.ACESp0);
+ keyFile.set_string("Color Management", "ACES-AP1", rtSettings.ACESp1);
+ keyFile.set_integer("Color Management", "WhiteBalanceSpotSize", whiteBalanceSpotSize);
+ keyFile.set_boolean("Color Management", "GamutICC", rtSettings.gamutICC);
+ keyFile.set_boolean("Color Management", "GamutLch", rtSettings.gamutLch);
+ keyFile.set_integer("Color Management", "ProtectRed", rtSettings.protectred);
+ keyFile.set_integer("Color Management", "Amountchroma", rtSettings.amchroma);
+ keyFile.set_double("Color Management", "ProtectRedH", rtSettings.protectredh);
+ keyFile.set_integer("Color Management", "CRI", rtSettings.CRI_color);
+ keyFile.set_integer("Color Management", "DenoiseLabgamma", rtSettings.denoiselabgamma);
//keyFile.set_boolean ("Color Management", "Ciebadpixgauss", rtSettings.ciebadpixgauss);
- keyFile.set_double ("Color Management", "CBDLlevel0", rtSettings.level0_cbdl);
- keyFile.set_double ("Color Management", "CBDLlevel123", rtSettings.level123_cbdl);
+ keyFile.set_double("Color Management", "CBDLlevel0", rtSettings.level0_cbdl);
+ keyFile.set_double("Color Management", "CBDLlevel123", rtSettings.level123_cbdl);
//keyFile.set_double ("Color Management", "Colortoningab", rtSettings.colortoningab);
//keyFile.set_double ("Color Management", "Decaction", rtSettings.decaction);
- keyFile.set_string ("Color Management", "ClutsDirectory", clutsDir);
+ keyFile.set_string("Color Management", "ClutsDirectory", clutsDir);
+
+ keyFile.set_string("ICC Profile Creator", "PimariesPreset", ICCPC_primariesPreset);
+ keyFile.set_double("ICC Profile Creator", "RedPrimaryX", ICCPC_redPrimaryX);
+ keyFile.set_double("ICC Profile Creator", "RedPrimaryY", ICCPC_redPrimaryY);
+ keyFile.set_double("ICC Profile Creator", "GreenPrimaryX", ICCPC_greenPrimaryX);
+ keyFile.set_double("ICC Profile Creator", "GreenPrimaryY", ICCPC_greenPrimaryY);
+ keyFile.set_double("ICC Profile Creator", "BluePrimaryX", ICCPC_bluePrimaryX);
+ keyFile.set_double("ICC Profile Creator", "BluePrimaryY", ICCPC_bluePrimaryY);
+ keyFile.set_string("ICC Profile Creator", "GammaPreset", ICCPC_gammaPreset);
+ keyFile.set_double("ICC Profile Creator", "Gamma", ICCPC_gamma);
+ keyFile.set_double("ICC Profile Creator", "Slope", ICCPC_slope);
+ keyFile.set_string("ICC Profile Creator", "ProfileVersion", ICCPC_profileVersion);
+ keyFile.set_string("ICC Profile Creator", "Illuminant", ICCPC_illuminant);
+ keyFile.set_string("ICC Profile Creator", "Description", ICCPC_description);
+ keyFile.set_string("ICC Profile Creator", "Copyright", ICCPC_copyright);
+ keyFile.set_boolean("ICC Profile Creator", "AppendParamsToDesc", ICCPC_appendParamsToDesc);
Glib::ArrayHandle bab = baBehav;
- keyFile.set_integer_list ("Batch Processing", "AdjusterBehavior", bab);
+ keyFile.set_integer_list("Batch Processing", "AdjusterBehavior", bab);
- keyFile.set_boolean ("Sounds", "Enable", sndEnable);
- keyFile.set_string ("Sounds", "BatchQueueDone", sndBatchQueueDone);
- keyFile.set_string ("Sounds", "LngEditProcDone", sndLngEditProcDone);
- keyFile.set_double ("Sounds", "LngEditProcDoneSecs", sndLngEditProcDoneSecs);
+ keyFile.set_boolean("Sounds", "Enable", sndEnable);
+ keyFile.set_string("Sounds", "BatchQueueDone", sndBatchQueueDone);
+ keyFile.set_string("Sounds", "LngEditProcDone", sndLngEditProcDone);
+ keyFile.set_double("Sounds", "LngEditProcDoneSecs", sndLngEditProcDoneSecs);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpening", fastexport_bypass_sharpening);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenEdge", fastexport_bypass_sharpenEdge);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_sharpenMicro", fastexport_bypass_sharpenMicro);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_sharpening", fastexport_bypass_sharpening);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_sharpenEdge", fastexport_bypass_sharpenEdge);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_sharpenMicro", fastexport_bypass_sharpenMicro);
//keyFile.set_boolean ("Fast Export", "fastexport_bypass_lumaDenoise" , fastexport_bypass_lumaDenoise);
//keyFile.set_boolean ("Fast Export", "fastexport_bypass_colorDenoise" , fastexport_bypass_colorDenoise);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_defringe", fastexport_bypass_defringe);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrDenoise", fastexport_bypass_dirpyrDenoise);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_dirpyrequalizer", fastexport_bypass_dirpyrequalizer);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_wavelet", fastexport_bypass_wavelet);
- keyFile.set_string ("Fast Export", "fastexport_raw_bayer_method", fastexport_raw_bayer_method);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_defringe", fastexport_bypass_defringe);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_dirpyrDenoise", fastexport_bypass_dirpyrDenoise);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_dirpyrequalizer", fastexport_bypass_dirpyrequalizer);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_wavelet", fastexport_bypass_wavelet);
+ keyFile.set_string("Fast Export", "fastexport_raw_bayer_method", fastexport_raw_bayer_method);
//keyFile.set_boolean ("Fast Export", "fastexport_bypass_bayer_raw_all_enhance" , fastexport_bypass_raw_bayer_all_enhance);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations", fastexport_bypass_raw_bayer_dcb_iterations);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance", fastexport_bypass_raw_bayer_dcb_enhance);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations", fastexport_bypass_raw_bayer_lmmse_iterations);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_linenoise", fastexport_bypass_raw_bayer_linenoise);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_bayer_greenthresh", fastexport_bypass_raw_bayer_greenthresh);
- keyFile.set_string ("Fast Export", "fastexport_raw_xtrans_method", fastexport_raw_xtrans_method);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ccSteps", fastexport_bypass_raw_ccSteps);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ca", fastexport_bypass_raw_ca);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_df", fastexport_bypass_raw_df);
- keyFile.set_boolean ("Fast Export", "fastexport_bypass_raw_ff", fastexport_bypass_raw_ff);
- keyFile.set_string ("Fast Export", "fastexport_icm_input", fastexport_icm_input);
- keyFile.set_string ("Fast Export", "fastexport_icm_working", fastexport_icm_working);
- keyFile.set_string ("Fast Export", "fastexport_icm_output", fastexport_icm_output);
- keyFile.set_integer ("Fast Export", "fastexport_icm_output_intent", fastexport_icm_outputIntent);
- keyFile.set_boolean ("Fast Export", "fastexport_icm_output_bpc", fastexport_icm_outputBPC);
- keyFile.set_string ("Fast Export", "fastexport_icm_gamma", fastexport_icm_gamma);
- keyFile.set_boolean ("Fast Export", "fastexport_resize_enabled", fastexport_resize_enabled);
- keyFile.set_double ("Fast Export", "fastexport_resize_scale", fastexport_resize_scale);
- keyFile.set_string ("Fast Export", "fastexport_resize_appliesTo", fastexport_resize_appliesTo);
- keyFile.set_string ("Fast Export", "fastexport_resize_method", fastexport_resize_method);
- keyFile.set_integer ("Fast Export", "fastexport_resize_dataspec", fastexport_resize_dataspec);
- keyFile.set_integer ("Fast Export", "fastexport_resize_width", fastexport_resize_width);
- keyFile.set_integer ("Fast Export", "fastexport_resize_height", fastexport_resize_height);
- keyFile.set_integer ("Fast Export", "fastexport_use_fast_pipeline", fastexport_use_fast_pipeline);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_bayer_dcb_iterations", fastexport_bypass_raw_bayer_dcb_iterations);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_bayer_dcb_enhance", fastexport_bypass_raw_bayer_dcb_enhance);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_bayer_lmmse_iterations", fastexport_bypass_raw_bayer_lmmse_iterations);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_bayer_linenoise", fastexport_bypass_raw_bayer_linenoise);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_bayer_greenthresh", fastexport_bypass_raw_bayer_greenthresh);
+ keyFile.set_string("Fast Export", "fastexport_raw_xtrans_method", fastexport_raw_xtrans_method);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_ccSteps", fastexport_bypass_raw_ccSteps);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_ca", fastexport_bypass_raw_ca);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_df", fastexport_bypass_raw_df);
+ keyFile.set_boolean("Fast Export", "fastexport_bypass_raw_ff", fastexport_bypass_raw_ff);
+ keyFile.set_string("Fast Export", "fastexport_icm_input", fastexport_icm_input_profile);
+ keyFile.set_string("Fast Export", "fastexport_icm_working", fastexport_icm_working_profile);
+ keyFile.set_string("Fast Export", "fastexport_icm_output", fastexport_icm_output_profile);
+ keyFile.set_integer("Fast Export", "fastexport_icm_output_intent", fastexport_icm_outputIntent);
+ keyFile.set_boolean("Fast Export", "fastexport_icm_output_bpc", fastexport_icm_outputBPC);
+ keyFile.set_boolean("Fast Export", "fastexport_resize_enabled", fastexport_resize_enabled);
+ keyFile.set_double("Fast Export", "fastexport_resize_scale", fastexport_resize_scale);
+ keyFile.set_string("Fast Export", "fastexport_resize_appliesTo", fastexport_resize_appliesTo);
+ keyFile.set_string("Fast Export", "fastexport_resize_method", fastexport_resize_method);
+ keyFile.set_integer("Fast Export", "fastexport_resize_dataspec", fastexport_resize_dataspec);
+ keyFile.set_integer("Fast Export", "fastexport_resize_width", fastexport_resize_width);
+ keyFile.set_integer("Fast Export", "fastexport_resize_height", fastexport_resize_height);
+ keyFile.set_integer("Fast Export", "fastexport_use_fast_pipeline", fastexport_use_fast_pipeline);
- keyFile.set_string ("Dialogs", "LastIccDir", lastIccDir);
- keyFile.set_string ("Dialogs", "LastDarkframeDir", lastDarkframeDir);
- keyFile.set_string ("Dialogs", "LastFlatfieldDir", lastFlatfieldDir);
- keyFile.set_string ("Dialogs", "LastRgbCurvesDir", lastRgbCurvesDir);
- keyFile.set_string ("Dialogs", "LastLabCurvesDir", lastLabCurvesDir);
- keyFile.set_string ("Dialogs", "LastRetinexDir", lastRetinexDir);
- keyFile.set_string ("Dialogs", "LastDenoiseCurvesDir", lastDenoiseCurvesDir);
- keyFile.set_string ("Dialogs", "LastWaveletCurvesDir", lastWaveletCurvesDir);
- keyFile.set_string ("Dialogs", "LastPFCurvesDir", lastPFCurvesDir);
- keyFile.set_string ("Dialogs", "LastHsvCurvesDir", lastHsvCurvesDir);
- keyFile.set_string ("Dialogs", "LastBWCurvesDir", lastBWCurvesDir);
- keyFile.set_string ("Dialogs", "LastToneCurvesDir", lastToneCurvesDir);
- keyFile.set_string ("Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir);
- keyFile.set_string ("Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir);
- keyFile.set_string ("Dialogs", "LastLensProfileDir", lastLensProfileDir);
- keyFile.set_boolean ("Dialogs", "GimpPluginShowInfoDialog", gimpPluginShowInfoDialog);
+ keyFile.set_string("Dialogs", "LastIccDir", lastIccDir);
+ keyFile.set_string("Dialogs", "LastDarkframeDir", lastDarkframeDir);
+ keyFile.set_string("Dialogs", "LastFlatfieldDir", lastFlatfieldDir);
+ keyFile.set_string("Dialogs", "LastRgbCurvesDir", lastRgbCurvesDir);
+ keyFile.set_string("Dialogs", "LastLabCurvesDir", lastLabCurvesDir);
+ keyFile.set_string("Dialogs", "LastRetinexDir", lastRetinexDir);
+ keyFile.set_string("Dialogs", "LastDenoiseCurvesDir", lastDenoiseCurvesDir);
+ keyFile.set_string("Dialogs", "LastWaveletCurvesDir", lastWaveletCurvesDir);
+ keyFile.set_string("Dialogs", "LastPFCurvesDir", lastPFCurvesDir);
+ keyFile.set_string("Dialogs", "LastHsvCurvesDir", lastHsvCurvesDir);
+ keyFile.set_string("Dialogs", "LastBWCurvesDir", lastBWCurvesDir);
+ keyFile.set_string("Dialogs", "LastToneCurvesDir", lastToneCurvesDir);
+ keyFile.set_string("Dialogs", "LastVibranceCurvesDir", lastVibranceCurvesDir);
+ keyFile.set_string("Dialogs", "LastProfilingReferenceDir", lastProfilingReferenceDir);
+ keyFile.set_string("Dialogs", "LastLensProfileDir", lastLensProfileDir);
+ keyFile.set_string("Dialogs", "LastICCProfCreatorDir", lastICCProfCreatorDir);
+ keyFile.set_boolean("Dialogs", "GimpPluginShowInfoDialog", gimpPluginShowInfoDialog);
- keyFile.set_string ("Lensfun", "DBDirectory", rtSettings.lensfunDbDirectory);
+ keyFile.set_string("Lensfun", "DBDirectory", rtSettings.lensfunDbDirectory);
- keyData = keyFile.to_data ();
+ keyData = keyFile.to_data();
} catch (Glib::KeyFileError &e) {
- throw Error (e.what());
+ throw Error(e.what());
}
- FILE *f = g_fopen (fname.c_str (), "wt");
+ FILE *f = g_fopen(fname.c_str(), "wt");
if (f == nullptr) {
std::cout << "Warning! Unable to save your preferences to: " << fname << std::endl;
- Glib::ustring msg_ = Glib::ustring::compose (M ("MAIN_MSG_WRITEFAILED"), fname.c_str());
- throw Error (msg_);
+ Glib::ustring msg_ = Glib::ustring::compose(M("MAIN_MSG_WRITEFAILED"), fname.c_str());
+ throw Error(msg_);
} else {
- fprintf (f, "%s", keyData.c_str ());
- fclose (f);
+ fprintf(f, "%s", keyData.c_str());
+ fclose(f);
}
}
-void Options::load (bool lightweight)
+void Options::load(bool lightweight)
{
// Find the application data path
@@ -2092,89 +2201,91 @@ void Options::load (bool lightweight)
const gchar* path;
Glib::ustring dPath;
- path = g_getenv ("RT_SETTINGS");
+ path = g_getenv("RT_SETTINGS");
if (path != nullptr) {
- rtdir = Glib::ustring (path);
+ rtdir = Glib::ustring(path);
- if (!Glib::path_is_absolute (rtdir)) {
- Glib::ustring msg = Glib::ustring::compose ("Settings path %1 is not absolute", rtdir);
- throw Error (msg);
+ if (!Glib::path_is_absolute(rtdir)) {
+ Glib::ustring msg = Glib::ustring::compose("Settings path %1 is not absolute", rtdir);
+ throw Error(msg);
}
} else {
#ifdef WIN32
WCHAR pathW[MAX_PATH] = {0};
- if (SHGetSpecialFolderPathW (NULL, pathW, CSIDL_LOCAL_APPDATA, false)) {
+ if (SHGetSpecialFolderPathW(NULL, pathW, CSIDL_LOCAL_APPDATA, false)) {
char pathA[MAX_PATH];
- WideCharToMultiByte (CP_UTF8, 0, pathW, -1, pathA, MAX_PATH, 0, 0);
- rtdir = Glib::build_filename (Glib::ustring (pathA), Glib::ustring (CACHEFOLDERNAME));
+ WideCharToMultiByte(CP_UTF8, 0, pathW, -1, pathA, MAX_PATH, 0, 0);
+ rtdir = Glib::build_filename(Glib::ustring(pathA), Glib::ustring(CACHEFOLDERNAME));
}
#else
- rtdir = Glib::build_filename (Glib::ustring (g_get_user_config_dir ()), Glib::ustring (CACHEFOLDERNAME));
+ rtdir = Glib::build_filename(Glib::ustring(g_get_user_config_dir()), Glib::ustring(CACHEFOLDERNAME));
#endif
}
if (options.rtSettings.verbose) {
- printf ("Settings directory (rtdir) = %s\n", rtdir.c_str());
+ printf("Settings directory (rtdir) = %s\n", rtdir.c_str());
}
// Set the cache folder in RT's base folder
- cacheBaseDir = Glib::build_filename (argv0, "mycache");
+ cacheBaseDir = Glib::build_filename(argv0, "mycache");
// Read the global option file (the one located in the application's base folder)
try {
- options.readFromFile (Glib::build_filename (argv0, "options"));
+ options.readFromFile(Glib::build_filename(argv0, "options"));
} catch (Options::Error &) {
// ignore errors here
}
if (!options.multiUser && path == nullptr) {
- rtdir = Glib::build_filename (argv0, "mysettings");
+ rtdir = Glib::build_filename(argv0, "mysettings");
}
// Modify the path of the cache folder to the one provided in RT_CACHE environment variable
- path = g_getenv ("RT_CACHE");
+ path = g_getenv("RT_CACHE");
if (path != nullptr) {
- cacheBaseDir = Glib::ustring (path);
+ cacheBaseDir = Glib::ustring(path);
- if (!Glib::path_is_absolute (cacheBaseDir)) {
- Glib::ustring msg = Glib::ustring::compose ("Cache base dir %1 is not absolute", cacheBaseDir);
- throw Error (msg);
+ if (!Glib::path_is_absolute(cacheBaseDir)) {
+ Glib::ustring msg = Glib::ustring::compose("Cache base dir %1 is not absolute", cacheBaseDir);
+ throw Error(msg);
}
}
// No environment variable provided, so falling back to the multi user mode, if enabled
else if (options.multiUser) {
#ifdef WIN32
- cacheBaseDir = Glib::build_filename (rtdir, "cache");
+ cacheBaseDir = Glib::build_filename(rtdir, "cache");
#else
- cacheBaseDir = Glib::build_filename (Glib::ustring (g_get_user_cache_dir()), Glib::ustring (CACHEFOLDERNAME));
+ cacheBaseDir = Glib::build_filename(Glib::ustring(g_get_user_cache_dir()), Glib::ustring(CACHEFOLDERNAME));
#endif
}
// Read the user option file (the one located somewhere in the user's home folder)
// Those values supersets those of the global option file
try {
- options.readFromFile (Glib::build_filename (rtdir, "options"));
+ options.readFromFile(Glib::build_filename(rtdir, "options"));
} catch (Options::Error &) {
// If the local option file does not exist or is broken, and the local cache folder does not exist, recreate it
- if (!g_mkdir_with_parents (rtdir.c_str (), 511)) {
+ if (!g_mkdir_with_parents(rtdir.c_str(), 511)) {
// Save the option file
- options.saveToFile (Glib::build_filename (rtdir, "options"));
+ options.saveToFile(Glib::build_filename(rtdir, "options"));
}
}
#ifdef __APPLE__
+
if (options.multiUser) {
// make sure .local/share exists on OS X so we don't get problems with recently-used.xbel
- g_mkdir_with_parents (g_get_user_data_dir(), 511);
+ g_mkdir_with_parents(g_get_user_data_dir(), 511);
}
+
#endif
if (options.rtSettings.verbose) {
- printf ("Cache directory (cacheBaseDir) = %s\n", cacheBaseDir.c_str());
+ printf("Cache directory (cacheBaseDir) = %s\n", cacheBaseDir.c_str());
}
// Update profile's path and recreate it if necessary
@@ -2184,7 +2295,7 @@ void Options::load (bool lightweight)
if (options.defProfRaw.empty()) {
options.defProfRaw = DEFPROFILE_RAW;
} else {
- if (!options.findProfilePath (options.defProfRaw).empty()) {
+ if (!options.findProfilePath(options.defProfRaw).empty()) {
if (options.rtSettings.verbose) {
std::cout << "Default profile for raw images \"" << options.defProfRaw << "\" found" << std::endl;
}
@@ -2193,7 +2304,8 @@ void Options::load (bool lightweight)
options.setDefProfRawMissing(true);
Glib::ustring dpr(DEFPROFILE_RAW);
- if (options.findProfilePath (dpr).empty()) {
+
+ if (options.findProfilePath(dpr).empty()) {
options.setBundledDefProfRawMissing(true);
}
} else {
@@ -2205,7 +2317,7 @@ void Options::load (bool lightweight)
if (options.defProfImg.empty()) {
options.defProfImg = DEFPROFILE_IMG;
} else {
- if (!options.findProfilePath (options.defProfImg).empty()) {
+ if (!options.findProfilePath(options.defProfImg).empty()) {
if (options.rtSettings.verbose) {
std::cout << "Default profile for non-raw images \"" << options.defProfImg << "\" found" << std::endl;
}
@@ -2214,7 +2326,8 @@ void Options::load (bool lightweight)
options.setDefProfImgMissing(true);
Glib::ustring dpi(DEFPROFILE_IMG);
- if (options.findProfilePath (dpi).empty()) {
+
+ if (options.findProfilePath(dpi).empty()) {
options.setBundledDefProfImgMissing(true);
}
} else {
@@ -2238,7 +2351,7 @@ void Options::load (bool lightweight)
// out which are the parent translations. Furthermore, there must be a file for each locale () -- you cannot have
// 'French (CA)' unless there is a file 'French'.
- Glib::ustring defaultTranslation = Glib::build_filename (argv0, "languages", "default");
+ Glib::ustring defaultTranslation = Glib::build_filename(argv0, "languages", "default");
Glib::ustring languageTranslation = "";
Glib::ustring localeTranslation = "";
@@ -2247,34 +2360,34 @@ void Options::load (bool lightweight)
}
if (!options.language.empty()) {
- std::vector langPortions = Glib::Regex::split_simple (" ", options.language);
+ std::vector langPortions = Glib::Regex::split_simple(" ", options.language);
if (langPortions.size() >= 1) {
- languageTranslation = Glib::build_filename (argv0, "languages", langPortions.at (0));
+ languageTranslation = Glib::build_filename(argv0, "languages", langPortions.at(0));
}
if (langPortions.size() >= 2) {
- localeTranslation = Glib::build_filename (argv0, "languages", options.language);
+ localeTranslation = Glib::build_filename(argv0, "languages", options.language);
}
}
- langMgr.load (options.language, {localeTranslation, languageTranslation, defaultTranslation});
+ langMgr.load(options.language, {localeTranslation, languageTranslation, defaultTranslation});
- rtengine::init (&options.rtSettings, argv0, rtdir, !lightweight);
+ rtengine::init(&options.rtSettings, argv0, rtdir, !lightweight);
}
-void Options::save ()
+void Options::save()
{
- options.saveToFile (Glib::build_filename (rtdir, "options"));
+ options.saveToFile(Glib::build_filename(rtdir, "options"));
}
/*
* return true if ext is a parsed extension (retained or not)
*/
-bool Options::is_parse_extention (Glib::ustring fname)
+bool Options::is_parse_extention(Glib::ustring fname)
{
- Glib::ustring ext = getExtension (fname).lowercase();
+ Glib::ustring ext = getExtension(fname).lowercase();
if (!ext.empty()) {
// there is an extension to the filename
@@ -2293,10 +2406,10 @@ bool Options::is_parse_extention (Glib::ustring fname)
/*
* return true if fname ends with one of the retained image file extensions
*/
-bool Options::has_retained_extention (Glib::ustring fname)
+bool Options::has_retained_extention(Glib::ustring fname)
{
- Glib::ustring ext = getExtension (fname).lowercase();
+ Glib::ustring ext = getExtension(fname).lowercase();
if (!ext.empty()) {
// there is an extension to the filename
@@ -2315,7 +2428,7 @@ bool Options::has_retained_extention (Glib::ustring fname)
/*
* return true if ext is an enabled extension
*/
-bool Options::is_extention_enabled (Glib::ustring ext)
+bool Options::is_extention_enabled(Glib::ustring ext)
{
for (int j = 0; j < (int)parseExtensions.size(); j++)
if (parseExtensions[j].casefold() == ext.casefold()) {
@@ -2343,7 +2456,7 @@ bool Options::is_defProfImgMissing()
{
return defProfError & rtengine::toUnderlying(DefProfError::defProfImgMissing);
}
-void Options::setDefProfRawMissing (bool value)
+void Options::setDefProfRawMissing(bool value)
{
if (value) {
defProfError |= rtengine::toUnderlying(DefProfError::defProfRawMissing);
@@ -2351,7 +2464,7 @@ void Options::setDefProfRawMissing (bool value)
defProfError &= ~rtengine::toUnderlying(DefProfError::defProfRawMissing);
}
}
-void Options::setDefProfImgMissing (bool value)
+void Options::setDefProfImgMissing(bool value)
{
if (value) {
defProfError |= rtengine::toUnderlying(DefProfError::defProfImgMissing);
@@ -2367,7 +2480,7 @@ bool Options::is_bundledDefProfImgMissing()
{
return defProfError & rtengine::toUnderlying(DefProfError::bundledDefProfImgMissing);
}
-void Options::setBundledDefProfRawMissing (bool value)
+void Options::setBundledDefProfRawMissing(bool value)
{
if (value) {
defProfError |= rtengine::toUnderlying(DefProfError::bundledDefProfRawMissing);
@@ -2375,7 +2488,7 @@ void Options::setBundledDefProfRawMissing (bool value)
defProfError &= ~rtengine::toUnderlying(DefProfError::bundledDefProfRawMissing);
}
}
-void Options::setBundledDefProfImgMissing (bool value)
+void Options::setBundledDefProfImgMissing(bool value)
{
if (value) {
defProfError |= rtengine::toUnderlying(DefProfError::bundledDefProfImgMissing);
@@ -2383,4 +2496,9 @@ void Options::setBundledDefProfImgMissing (bool value)
defProfError &= ~rtengine::toUnderlying(DefProfError::bundledDefProfImgMissing);
}
}
-
+Glib::ustring Options::getICCProfileCopyright()
+{
+ Glib::Date now;
+ now.set_time_current();
+ return Glib::ustring::compose("Copyright RawTherapee %1, CC0", now.get_year());
+}
diff --git a/rtgui/options.h b/rtgui/options.h
index c8d287e08..93f29b7ac 100644
--- a/rtgui/options.h
+++ b/rtgui/options.h
@@ -288,6 +288,23 @@ public:
bool menuGroupProfileOperations;
bool menuGroupExtProg;
+ // ICC Profile Creator
+ Glib::ustring ICCPC_primariesPreset;
+ double ICCPC_redPrimaryX;
+ double ICCPC_redPrimaryY;
+ double ICCPC_greenPrimaryX;
+ double ICCPC_greenPrimaryY;
+ double ICCPC_bluePrimaryX;
+ double ICCPC_bluePrimaryY;
+ Glib::ustring ICCPC_gammaPreset;
+ double ICCPC_gamma;
+ double ICCPC_slope;
+ Glib::ustring ICCPC_profileVersion;
+ Glib::ustring ICCPC_illuminant;
+ Glib::ustring ICCPC_description;
+ Glib::ustring ICCPC_copyright;
+ bool ICCPC_appendParamsToDesc;
+
// fast export options
bool fastexport_bypass_sharpening;
bool fastexport_bypass_sharpenEdge;
@@ -310,12 +327,12 @@ public:
bool fastexport_bypass_raw_ca;
bool fastexport_bypass_raw_df;
bool fastexport_bypass_raw_ff;
- Glib::ustring fastexport_icm_input;
- Glib::ustring fastexport_icm_working;
- Glib::ustring fastexport_icm_output;
+ Glib::ustring fastexport_icm_input_profile;
+ Glib::ustring fastexport_icm_working_profile;
+ Glib::ustring fastexport_icm_output_profile;
rtengine::RenderingIntent fastexport_icm_outputIntent;
bool fastexport_icm_outputBPC;
- Glib::ustring fastexport_icm_gamma;
+ Glib::ustring fastexport_icm_custom_output_profile;
bool fastexport_resize_enabled;
double fastexport_resize_scale;
Glib::ustring fastexport_resize_appliesTo;
@@ -342,6 +359,7 @@ public:
Glib::ustring lastProfilingReferenceDir;
Glib::ustring lastBWCurvesDir;
Glib::ustring lastLensProfileDir;
+ Glib::ustring lastICCProfCreatorDir;
bool gimpPluginShowInfoDialog;
size_t maxRecentFolders; // max. number of recent folders stored in options file
@@ -374,6 +392,7 @@ public:
void setBundledDefProfRawMissing (bool value);
void setDefProfImgMissing (bool value);
void setBundledDefProfImgMissing (bool value);
+ static Glib::ustring getICCProfileCopyright();
};
extern Options options;
diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc
index ad9df6896..400568203 100644
--- a/rtgui/paramsedited.cc
+++ b/rtgui/paramsedited.cc
@@ -21,13 +21,13 @@
#include "options.h"
#include "addsetids.h"
-ParamsEdited::ParamsEdited (bool value)
+ParamsEdited::ParamsEdited(bool value)
{
- set (value);
+ set(value);
}
-void ParamsEdited::set (bool v)
+void ParamsEdited::set(bool v)
{
general.rank = v;
@@ -50,6 +50,7 @@ void ParamsEdited::set (bool v)
toneCurve.hrenabled = v;
toneCurve.method = v;
toneCurve.histmatching = v;
+ toneCurve.fromHistMatching = v;
toneCurve.clampOOG = v;
retinex.cdcurve = v;
retinex.mapcurve = v;
@@ -378,20 +379,19 @@ void ParamsEdited::set (bool v)
resize.height = v;
resize.enabled = v;
resize.allowUpscaling = v;
- icm.input = v;
+ icm.inputProfile = v;
icm.toneCurve = v;
icm.applyLookTable = v;
icm.applyBaselineExposureOffset = v;
icm.applyHueSatMap = v;
icm.dcpIlluminant = v;
- icm.working = v;
- icm.output = v;
+ icm.workingProfile = v;
+ icm.outputProfile = v;
icm.outputIntent = v;
- icm.outputBPC = v;
- icm.gamma = v;
- icm.freegamma = v;
- icm.gampos = v;
- icm.slpos = v;
+ icm.outputBPC = v;
+ icm.workingTRCGamma = v;
+ icm.workingTRCSlope = v;
+ icm.workingTRC = v;
raw.bayersensor.method = v;
raw.bayersensor.border = v;
raw.bayersensor.imageNum = v;
@@ -572,10 +572,10 @@ void ParamsEdited::set (bool v)
using namespace rtengine;
using namespace rtengine::procparams;
-void ParamsEdited::initFrom (const std::vector& src)
+void ParamsEdited::initFrom(const std::vector& src)
{
- set (true);
+ set(true);
if (src.empty()) {
return;
@@ -602,6 +602,7 @@ void ParamsEdited::initFrom (const std::vector
toneCurve.hrenabled = toneCurve.hrenabled && p.toneCurve.hrenabled == other.toneCurve.hrenabled;
toneCurve.method = toneCurve.method && p.toneCurve.method == other.toneCurve.method;
toneCurve.histmatching = toneCurve.histmatching && p.toneCurve.histmatching == other.toneCurve.histmatching;
+ toneCurve.fromHistMatching = toneCurve.fromHistMatching && p.toneCurve.fromHistMatching == other.toneCurve.fromHistMatching;
toneCurve.clampOOG = toneCurve.clampOOG && p.toneCurve.clampOOG == other.toneCurve.clampOOG;
retinex.cdcurve = retinex.cdcurve && p.retinex.cdcurve == other.retinex.cdcurve;
retinex.mapcurve = retinex.mapcurve && p.retinex.mapcurve == other.retinex.mapcurve;
@@ -652,12 +653,12 @@ void ParamsEdited::initFrom (const std::vector
labCurve.rstprotection = labCurve.rstprotection && p.labCurve.rstprotection == other.labCurve.rstprotection;
labCurve.lcredsk = labCurve.lcredsk && p.labCurve.lcredsk == other.labCurve.lcredsk;
- localContrast.enabled = localContrast.enabled && p.localContrast.enabled == other.localContrast.enabled;
+ localContrast.enabled = localContrast.enabled && p.localContrast.enabled == other.localContrast.enabled;
localContrast.radius = localContrast.radius && p.localContrast.radius == other.localContrast.radius;
localContrast.amount = localContrast.amount && p.localContrast.amount == other.localContrast.amount;
localContrast.darkness = localContrast.darkness && p.localContrast.darkness == other.localContrast.darkness;
localContrast.lightness = localContrast.lightness && p.localContrast.lightness == other.localContrast.lightness;
-
+
rgbCurves.enabled = rgbCurves.enabled && p.rgbCurves.enabled == other.rgbCurves.enabled;
rgbCurves.lumamode = rgbCurves.lumamode && p.rgbCurves.lumamode == other.rgbCurves.lumamode;
rgbCurves.rcurve = rgbCurves.rcurve && p.rgbCurves.rcurve == other.rgbCurves.rcurve;
@@ -841,7 +842,7 @@ void ParamsEdited::initFrom (const std::vector
fattal.threshold = fattal.threshold && p.fattal.threshold == other.fattal.threshold;
fattal.amount = fattal.amount && p.fattal.amount == other.fattal.amount;
fattal.anchor = fattal.anchor && p.fattal.anchor == other.fattal.anchor;
-
+
sh.enabled = sh.enabled && p.sh.enabled == other.sh.enabled;
sh.highlights = sh.highlights && p.sh.highlights == other.sh.highlights;
sh.htonalwidth = sh.htonalwidth && p.sh.htonalwidth == other.sh.htonalwidth;
@@ -933,20 +934,19 @@ void ParamsEdited::initFrom (const std::vector
resize.height = resize.height && p.resize.height == other.resize.height;
resize.enabled = resize.enabled && p.resize.enabled == other.resize.enabled;
resize.allowUpscaling = resize.allowUpscaling && p.resize.allowUpscaling == other.resize.allowUpscaling;
- icm.input = icm.input && p.icm.input == other.icm.input;
+ icm.inputProfile = icm.inputProfile && p.icm.inputProfile == other.icm.inputProfile;
icm.toneCurve = icm.toneCurve && p.icm.toneCurve == other.icm.toneCurve;
icm.applyLookTable = icm.applyLookTable && p.icm.applyLookTable == other.icm.applyLookTable;
icm.applyBaselineExposureOffset = icm.applyBaselineExposureOffset && p.icm.applyBaselineExposureOffset == other.icm.applyBaselineExposureOffset;
icm.applyHueSatMap = icm.applyHueSatMap && p.icm.applyHueSatMap == other.icm.applyHueSatMap;
icm.dcpIlluminant = icm.dcpIlluminant && p.icm.dcpIlluminant == other.icm.dcpIlluminant;
- icm.working = icm.working && p.icm.working == other.icm.working;
- icm.output = icm.output && p.icm.output == other.icm.output;
+ icm.workingProfile = icm.workingProfile && p.icm.workingProfile == other.icm.workingProfile;
+ icm.outputProfile = icm.outputProfile && p.icm.outputProfile == other.icm.outputProfile;
icm.outputIntent = icm.outputIntent && p.icm.outputIntent == other.icm.outputIntent;
icm.outputBPC = icm.outputBPC && p.icm.outputBPC == other.icm.outputBPC ;
- icm.gamma = icm.gamma && p.icm.gamma == other.icm.gamma;
- icm.freegamma = icm.freegamma && p.icm.freegamma == other.icm.freegamma;
- icm.gampos = icm.gampos && p.icm.gampos == other.icm.gampos;
- icm.slpos = icm.slpos && p.icm.slpos == other.icm.slpos;
+ icm.workingTRCGamma = icm.workingTRCGamma && p.icm.workingTRCGamma == other.icm.workingTRCGamma;
+ icm.workingTRCSlope = icm.workingTRCSlope && p.icm.workingTRCSlope == other.icm.workingTRCSlope;
+ icm.workingTRC = icm.workingTRC && p.icm.workingTRC == other.icm.workingTRC;
raw.bayersensor.method = raw.bayersensor.method && p.raw.bayersensor.method == other.raw.bayersensor.method;
raw.bayersensor.border = raw.bayersensor.border && p.raw.bayersensor.border == other.raw.bayersensor.border;
raw.bayersensor.imageNum = raw.bayersensor.imageNum && p.raw.bayersensor.imageNum == other.raw.bayersensor.imageNum;
@@ -1104,7 +1104,7 @@ void ParamsEdited::initFrom (const std::vector
dirpyrequalizer.skinprotect = dirpyrequalizer.skinprotect && p.dirpyrequalizer.skinprotect == other.dirpyrequalizer.skinprotect;
// dirpyrequalizer.algo = dirpyrequalizer.algo && p.dirpyrequalizer.algo == other.dirpyrequalizer.algo;
dirpyrequalizer.hueskin = dirpyrequalizer.hueskin && p.dirpyrequalizer.hueskin == other.dirpyrequalizer.hueskin;
- hsvequalizer.enabled = hsvequalizer.enabled && p.hsvequalizer.enabled == other.hsvequalizer.enabled;
+ hsvequalizer.enabled = hsvequalizer.enabled && p.hsvequalizer.enabled == other.hsvequalizer.enabled;
hsvequalizer.hcurve = hsvequalizer.hcurve && p.hsvequalizer.hcurve == other.hsvequalizer.hcurve;
hsvequalizer.scurve = hsvequalizer.scurve && p.hsvequalizer.scurve == other.hsvequalizer.scurve;
hsvequalizer.vcurve = hsvequalizer.vcurve && p.hsvequalizer.vcurve == other.hsvequalizer.vcurve;
@@ -1121,7 +1121,7 @@ void ParamsEdited::initFrom (const std::vector
}
}
-void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods, bool forceSet)
+void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods, bool forceSet)
{
bool dontforceSet = !forceSet;
@@ -1194,10 +1194,14 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.toneCurve.histmatching = mods.toneCurve.histmatching;
}
+ if (toneCurve.fromHistMatching) {
+ toEdit.toneCurve.fromHistMatching = mods.toneCurve.fromHistMatching;
+ }
+
if (toneCurve.clampOOG) {
toEdit.toneCurve.clampOOG = mods.toneCurve.clampOOG;
}
-
+
if (retinex.enabled) {
toEdit.retinex.enabled = mods.retinex.enabled;
}
@@ -1331,7 +1335,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (labCurve.enabled) {
toEdit.labCurve.enabled = mods.labCurve.enabled;
}
-
+
if (labCurve.lcurve) {
toEdit.labCurve.lcurve = mods.labCurve.lcurve;
}
@@ -1544,12 +1548,15 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (colorToning.labgridALow) {
toEdit.colorToning.labgridALow = mods.colorToning.labgridALow;
}
+
if (colorToning.labgridBLow) {
toEdit.colorToning.labgridBLow = mods.colorToning.labgridBLow;
}
+
if (colorToning.labgridAHigh) {
toEdit.colorToning.labgridAHigh = mods.colorToning.labgridAHigh;
}
+
if (colorToning.labgridBHigh) {
toEdit.colorToning.labgridBHigh = mods.colorToning.labgridBHigh;
}
@@ -1615,7 +1622,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
}
if (sharpening.edges_radius) {
- toEdit.sharpening.edges_radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.edges_radius + mods.sharpening.edges_radius: mods.sharpening.edges_radius;
+ toEdit.sharpening.edges_radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.edges_radius + mods.sharpening.edges_radius : mods.sharpening.edges_radius;
}
if (sharpening.edges_tolerance) {
@@ -1749,7 +1756,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (wb.enabled) {
toEdit.wb.enabled = mods.wb.enabled;
}
-
+
if (wb.method) {
toEdit.wb.method = mods.wb.method;
}
@@ -2068,15 +2075,18 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (fattal.enabled) {
toEdit.fattal.enabled = mods.fattal.enabled;
}
+
if (fattal.threshold) {
toEdit.fattal.threshold = mods.fattal.threshold;
}
+
if (fattal.amount) {
toEdit.fattal.amount = mods.fattal.amount;
- }
+ }
+
if (fattal.anchor) {
toEdit.fattal.anchor = mods.fattal.anchor;
- }
+ }
if (sh.enabled) {
toEdit.sh.enabled = mods.sh.enabled;
@@ -2273,7 +2283,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (chmixer.enabled) {
toEdit.chmixer.enabled = mods.chmixer.enabled;
}
-
+
for (int i = 0; i < 3; i++) {
if (chmixer.red[i]) {
toEdit.chmixer.red[i] = dontforceSet && options.baBehav[ADDSET_CHMIXER] ? toEdit.chmixer.red[i] + mods.chmixer.red[i] : mods.chmixer.red[i];
@@ -2412,8 +2422,8 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.resize.allowUpscaling = mods.resize.allowUpscaling;
}
- if (icm.input) {
- toEdit.icm.input = mods.icm.input;
+ if (icm.inputProfile) {
+ toEdit.icm.inputProfile = mods.icm.inputProfile;
}
if (icm.toneCurve) {
@@ -2436,12 +2446,12 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.icm.dcpIlluminant = mods.icm.dcpIlluminant;
}
- if (icm.working) {
- toEdit.icm.working = mods.icm.working;
+ if (icm.workingProfile) {
+ toEdit.icm.workingProfile = mods.icm.workingProfile;
}
- if (icm.output) {
- toEdit.icm.output = mods.icm.output;
+ if (icm.outputProfile) {
+ toEdit.icm.outputProfile = mods.icm.outputProfile;
}
if (icm.outputIntent) {
@@ -2452,20 +2462,16 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
toEdit.icm.outputBPC = mods.icm.outputBPC;
}
- if (icm.gampos) {
- toEdit.icm.gampos = dontforceSet && options.baBehav[ADDSET_FREE_OUPUT_GAMMA] ? toEdit.icm.gampos + mods.icm.gampos : mods.icm.gampos;
+ if (icm.workingTRCGamma) {
+ toEdit.icm.workingTRCGamma = mods.icm.workingTRCGamma;
}
- if (icm.slpos) {
- toEdit.icm.slpos = dontforceSet && options.baBehav[ADDSET_FREE_OUTPUT_SLOPE] ? toEdit.icm.slpos + mods.icm.slpos : mods.icm.slpos;
+ if (icm.workingTRCSlope) {
+ toEdit.icm.workingTRCSlope = mods.icm.workingTRCSlope;
}
- if (icm.gamma) {
- toEdit.icm.gamma = mods.icm.gamma;
- }
-
- if (icm.freegamma) {
- toEdit.icm.freegamma = mods.icm.freegamma;
+ if (icm.workingTRC) {
+ toEdit.icm.workingTRC = mods.icm.workingTRC;
}
if (raw.bayersensor.method) {
@@ -2587,7 +2593,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (raw.bayersensor.linenoiseDirection) {
toEdit.raw.bayersensor.linenoiseDirection = mods.raw.bayersensor.linenoiseDirection;
}
-
+
if (raw.bayersensor.pdafLinesFilter) {
toEdit.raw.bayersensor.pdafLinesFilter = mods.raw.bayersensor.pdafLinesFilter;
}
@@ -3056,7 +3062,7 @@ void ParamsEdited::combine (rtengine::procparams::ProcParams& toEdit, const rten
if (hsvequalizer.enabled) {
toEdit.hsvequalizer.enabled = mods.hsvequalizer.enabled;
}
-
+
if (hsvequalizer.hcurve) {
toEdit.hsvequalizer.hcurve = mods.hsvequalizer.hcurve;
}
diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h
index 959a1ff39..c4c36ce61 100644
--- a/rtgui/paramsedited.h
+++ b/rtgui/paramsedited.h
@@ -54,6 +54,7 @@ public:
bool hrenabled;
bool method;
bool histmatching;
+ bool fromHistMatching;
bool clampOOG;
};
@@ -121,7 +122,8 @@ public:
};
-class LocalContrastParamsEdited {
+class LocalContrastParamsEdited
+{
public:
bool enabled;
bool radius;
@@ -385,7 +387,8 @@ public:
};
-class FattalToneMappingParamsEdited {
+class FattalToneMappingParamsEdited
+{
public:
bool enabled;
bool threshold;
@@ -576,20 +579,21 @@ class ColorManagementParamsEdited
{
public:
- bool input;
+ bool inputProfile;
bool toneCurve;
bool applyLookTable;
bool applyBaselineExposureOffset;
bool applyHueSatMap;
bool dcpIlluminant;
- bool working;
- bool output;
+
+ bool workingProfile;
+ bool workingTRC;
+ bool workingTRCGamma;
+ bool workingTRCSlope;
+
+ bool outputProfile;
bool outputIntent;
bool outputBPC;
- bool gamma;
- bool gampos;
- bool slpos;
- bool freegamma;
};
class WaveletParamsEdited
{
@@ -803,7 +807,8 @@ public:
};
-class MetaDataParamsEdited {
+class MetaDataParamsEdited
+{
public:
bool mode;
};
@@ -862,10 +867,10 @@ public:
bool exif;
bool iptc;
- explicit ParamsEdited (bool value = false);
+ explicit ParamsEdited(bool value = false);
- void set (bool v);
- void initFrom (const std::vector& src);
- void combine (rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods, bool forceSet);
+ void set(bool v);
+ void initFrom(const std::vector& src);
+ void combine(rtengine::procparams::ProcParams& toEdit, const rtengine::procparams::ProcParams& mods, bool forceSet);
};
#endif
diff --git a/rtgui/perspective.cc b/rtgui/perspective.cc
index c94e9d568..1ca6e54b6 100644
--- a/rtgui/perspective.cc
+++ b/rtgui/perspective.cc
@@ -25,10 +25,10 @@ using namespace rtengine::procparams;
PerspCorrection::PerspCorrection () : FoldableToolPanel(this, "perspective", M("TP_PERSPECTIVE_LABEL"))
{
- Gtk::Image* ipersHL = Gtk::manage (new RTImage ("perspective-h1.png"));
- Gtk::Image* ipersHR = Gtk::manage (new RTImage ("perspective-h2.png"));
- Gtk::Image* ipersVL = Gtk::manage (new RTImage ("perspective-v1.png"));
- Gtk::Image* ipersVR = Gtk::manage (new RTImage ("perspective-v2.png"));
+ Gtk::Image* ipersHL = Gtk::manage (new RTImage ("perspective-horizontal-left-small.png"));
+ Gtk::Image* ipersHR = Gtk::manage (new RTImage ("perspective-horizontal-right-small.png"));
+ Gtk::Image* ipersVL = Gtk::manage (new RTImage ("perspective-vertical-bottom-small.png"));
+ Gtk::Image* ipersVR = Gtk::manage (new RTImage ("perspective-vertical-top-small.png"));
horiz = Gtk::manage (new Adjuster (M("TP_PERSPECTIVE_HORIZONTAL"), -100, 100, 0.1, 0, ipersHL, ipersHR));
horiz->setAdjusterListener (this);
diff --git a/rtgui/placesbrowser.cc b/rtgui/placesbrowser.cc
index 490b9ff47..0d20e9bad 100644
--- a/rtgui/placesbrowser.cc
+++ b/rtgui/placesbrowser.cc
@@ -42,13 +42,13 @@ PlacesBrowser::PlacesBrowser ()
setExpandAlignProperties(add, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
//add->get_style_context()->set_junction_sides(Gtk::JUNCTION_RIGHT);
add->get_style_context()->add_class("Left");
- add->set_image (*Gtk::manage (new RTImage ("list-add.png")));
+ add->set_image (*Gtk::manage (new RTImage ("add-small.png")));
del = Gtk::manage (new Gtk::Button ());
del->set_tooltip_text(M("MAIN_FRAME_PLACES_DEL"));
setExpandAlignProperties(del, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
//del->get_style_context()->set_junction_sides(Gtk::JUNCTION_LEFT);
del->get_style_context()->add_class("Right");
- del->set_image (*Gtk::manage (new RTImage ("list-remove.png")));
+ del->set_image (*Gtk::manage (new RTImage ("remove-small.png")));
Gtk::Grid* buttonBox = Gtk::manage (new Gtk::Grid ());
buttonBox->set_orientation(Gtk::ORIENTATION_HORIZONTAL);
buttonBox->attach_next_to(*add, Gtk::POS_LEFT, 1, 1);
diff --git a/rtgui/popupcommon.cc b/rtgui/popupcommon.cc
index c79c69011..b7d08721e 100644
--- a/rtgui/popupcommon.cc
+++ b/rtgui/popupcommon.cc
@@ -47,6 +47,7 @@ PopUpCommon::PopUpCommon (Gtk::Button* thisButton, const Glib::ustring& label)
buttonGroup = Gtk::manage( new Gtk::Grid());
setExpandAlignProperties(buttonGroup, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
buttonGroup->attach(*button, 0, 0, 1, 1);
+ buttonGroup->get_style_context()->add_class("image-combo");
}
PopUpCommon::~PopUpCommon ()
@@ -79,7 +80,8 @@ bool PopUpCommon::addEntry (const Glib::ustring& fileName, const Glib::ustring&
// When there is at least 1 choice, we add the arrow button
if (images.size() == 1) {
Gtk::Button* arrowButton = Gtk::manage( new Gtk::Button() );
- RTImage* arrowImage = Gtk::manage( new RTImage("popuparrow.png") );
+ Gtk::Image *arrowImage = Gtk::manage(new Gtk::Image());
+ arrowImage->set_from_icon_name("pan-down-symbolic", Gtk::ICON_SIZE_BUTTON);
setExpandAlignProperties(arrowButton, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
arrowButton->add(*arrowImage); //menuSymbol);
buttonGroup->attach_next_to(*arrowButton, *button, Gtk::POS_RIGHT, 1, 1);
diff --git a/rtgui/ppversion.h b/rtgui/ppversion.h
index 7c6a291c0..f4ca1f360 100644
--- a/rtgui/ppversion.h
+++ b/rtgui/ppversion.h
@@ -1,11 +1,15 @@
#pragma once
// This number has to be incremented whenever the PP3 file format is modified or the behaviour of a tool changes
-#define PPVERSION 339
+#define PPVERSION 340
#define PPVERSION_AEXP 301 //value of PPVERSION when auto exposure algorithm was modified
/*
Log of version changes
+ 341 2018-07-22
+ [ICM] enhanced custom output profile
+ 340 2018-07-08
+ store whether curve is from histogram matching
339 2018-07-04
added allowUpscaling to ResizeParams
338 2018-06-15
diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc
index 4b4355be4..48e3b865a 100644
--- a/rtgui/preferences.cc
+++ b/rtgui/preferences.cc
@@ -49,13 +49,6 @@ Preferences::Preferences (RTWindow *rtwindow)
moptions.copyFrom (&options);
- /*
- * Do not increase height, since it's not visible on e.g. smaller netbook
- * screens. The default height is about 620 pixels currently, that's why
- * we do not set the height anymore. Netbook users will most certainly set
- * a smaller font, so they'll be able to shrink the Preferences window and
- * close it.
- */
set_size_request (650, -1);
set_default_size (options.preferencesWidth, options.preferencesHeight);
@@ -69,9 +62,9 @@ Preferences::Preferences (RTWindow *rtwindow)
mainBox->set_spacing (8);
#endif
//GTK318
- //set_has_separator (false);
Gtk::Notebook* nb = Gtk::manage (new Gtk::Notebook ());
+ nb->set_scrollable(true);
nb->set_name ("PrefNotebook");
mainBox->pack_start (*nb);
@@ -87,16 +80,16 @@ Preferences::Preferences (RTWindow *rtwindow)
get_action_area()->pack_end (*ok);
get_action_area()->pack_end (*cancel);
- nb->append_page (*getGeneralPanel(), M ("PREFERENCES_TAB_GENERAL"));
- nb->append_page (*getProcParamsPanel(), M ("PREFERENCES_TAB_IMPROC"));
- nb->append_page (*getDynProfilePanel(), M ("PREFERENCES_TAB_DYNAMICPROFILE"));
- nb->append_page (*getFileBrowserPanel(), M ("PREFERENCES_TAB_BROWSER"));
- nb->append_page (*getColorManagementPanel(), M ("PREFERENCES_TAB_COLORMGR"));
- nb->append_page (*getBatchProcPanel(), M ("PREFERENCES_BATCH_PROCESSING"));
- nb->append_page (*getPerformancePanel(), M ("PREFERENCES_TAB_PERFORMANCE"));
+ nb->append_page(*getGeneralPanel(), M("PREFERENCES_TAB_GENERAL"));
+ nb->append_page(*getImageProcessingPanel(), M("PREFERENCES_TAB_IMPROC"));
+ nb->append_page(*getDynamicProfilePanel(), M("PREFERENCES_TAB_DYNAMICPROFILE"));
+ nb->append_page(*getFileBrowserPanel(), M("PREFERENCES_TAB_BROWSER"));
+ nb->append_page(*getColorManPanel(), M("PREFERENCES_TAB_COLORMGR"));
+ nb->append_page(*getBatchProcPanel(), M("PREFERENCES_BATCH_PROCESSING"));
+ nb->append_page(*getPerformancePanel(), M("PREFERENCES_TAB_PERFORMANCE"));
// Sounds only on Windows and Linux
#if defined(WIN32) || defined(__linux__)
- nb->append_page (*getSoundPanel(), M ("PREFERENCES_TAB_SOUND"));
+ nb->append_page(*getSoundsPanel(), M("PREFERENCES_TAB_SOUND"));
#endif
nb->set_current_page (0);
@@ -131,8 +124,10 @@ int Preferences::getThemeRowNumber (Glib::ustring& longThemeFName)
Gtk::Widget* Preferences::getBatchProcPanel ()
{
+ swBatchProc = Gtk::manage(new Gtk::ScrolledWindow());
+ swBatchProc->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
- Gtk::VBox* mvbpp = Gtk::manage (new Gtk::VBox ());
+ Gtk::VBox* vbBatchProc = Gtk::manage (new Gtk::VBox ());
Gtk::ScrolledWindow* behscrollw = Gtk::manage (new Gtk::ScrolledWindow ());
behscrollw->set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
@@ -141,8 +136,7 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
vbbeh->pack_start (*behscrollw, Gtk::PACK_EXPAND_WIDGET);
Gtk::Frame* behFrame = Gtk::manage (new Gtk::Frame (M ("PREFERENCES_BEHAVIOR")));
behFrame->add (*vbbeh);
- //mvbpp->pack_start (*behFrame);
- mvbpp->pack_start (*behFrame, Gtk::PACK_EXPAND_WIDGET, 4);
+ vbBatchProc->pack_start (*behFrame, Gtk::PACK_EXPAND_WIDGET, 4);
Gtk::TreeView* behTreeView = Gtk::manage (new Gtk::TreeView ());
behscrollw->add (*behTreeView);
@@ -239,7 +233,6 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
appendBehavList(mi, M("TP_LOCALCONTRAST_AMOUNT"), ADDSET_LOCALCONTRAST_AMOUNT, false);
appendBehavList(mi, M("TP_LOCALCONTRAST_DARKNESS"), ADDSET_LOCALCONTRAST_DARKNESS, false);
appendBehavList(mi, M("TP_LOCALCONTRAST_LIGHTNESS"), ADDSET_LOCALCONTRAST_LIGHTNESS, false);
-
mi = behModel->append ();
mi->set_value (behavColumns.label, M ("TP_SHARPENEDGE_LABEL"));
@@ -254,7 +247,6 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
mi = behModel->append ();
mi->set_value (behavColumns.label, M ("TP_DIRPYRDENOISE_LABEL"));
- //appendBehavList (mi, M("TP_DIRPYRDENOISE_LUMA")+", "+M("TP_DIRPYRDENOISE_CHROMA"), ADDSET_DIRPYRDN_CHLUM, true);
appendBehavList (mi, M ("TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING"), ADDSET_DIRPYRDN_LUMA, true);
appendBehavList (mi, M ("TP_DIRPYRDENOISE_LUMINANCE_DETAIL"), ADDSET_DIRPYRDN_LUMDET, true);
appendBehavList (mi, M ("TP_DIRPYRDENOISE_CHROMINANCE_MASTER"), ADDSET_DIRPYRDN_CHROMA, true);
@@ -292,8 +284,6 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
mi = behModel->append ();
mi->set_value (behavColumns.label, M ("TP_GAMMA_OUTPUT"));
- appendBehavList (mi, M ("TP_GAMMA_CURV"), ADDSET_FREE_OUPUT_GAMMA, false);
- appendBehavList (mi, M ("TP_GAMMA_SLOP"), ADDSET_FREE_OUTPUT_SLOPE, false);
mi = behModel->append ();
mi->set_value (behavColumns.label, M ("TP_CHMIXER_LABEL"));
@@ -437,15 +427,15 @@ Gtk::Widget* Preferences::getBatchProcPanel ()
behSetAll->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::behSetAllPressed) );
Gtk::HBox* buttonpanel1 = Gtk::manage (new Gtk::HBox ());
- //buttonpanel1->set_spacing(8);
buttonpanel1->pack_end (*behSetAll, Gtk::PACK_SHRINK, 4);
buttonpanel1->pack_end (*behAddAll, Gtk::PACK_SHRINK, 4);
vbbeh->pack_start (*buttonpanel1, Gtk::PACK_SHRINK, 4);
chOverwriteOutputFile = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_OVERWRITEOUTPUTFILE")) );
- mvbpp->pack_start (*chOverwriteOutputFile, Gtk::PACK_SHRINK, 4);
+ vbBatchProc->pack_start (*chOverwriteOutputFile, Gtk::PACK_SHRINK, 4);
- return mvbpp;
+ swBatchProc->add(*vbBatchProc);
+ return swBatchProc;
}
void Preferences::appendBehavList (Gtk::TreeModel::iterator& parent, Glib::ustring label, int id, bool set)
@@ -477,17 +467,24 @@ void Preferences::behSetRadioToggled (const Glib::ustring& path)
}
-Gtk::Widget *Preferences::getDynProfilePanel()
+Gtk::Widget *Preferences::getDynamicProfilePanel()
{
+ swDynamicProfile = Gtk::manage(new Gtk::ScrolledWindow());
+ swDynamicProfile->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
+
dynProfilePanel = Gtk::manage (new DynamicProfilePanel());
- return dynProfilePanel;
+
+ swDynamicProfile->add(*dynProfilePanel);
+ return swDynamicProfile;
}
-Gtk::Widget* Preferences::getProcParamsPanel ()
+Gtk::Widget* Preferences::getImageProcessingPanel ()
{
+ swImageProcessing = Gtk::manage(new Gtk::ScrolledWindow());
+ swImageProcessing->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
- Gtk::VBox* mvbpp = Gtk::manage (new Gtk::VBox ());
+ Gtk::VBox* vbImageProcessing = Gtk::manage (new Gtk::VBox ());
Gtk::Frame* fpp = Gtk::manage (new Gtk::Frame (M ("PREFERENCES_IMPROCPARAMS")));
Gtk::VBox* vbpp = Gtk::manage (new Gtk::VBox ());
@@ -514,7 +511,7 @@ Gtk::Widget* Preferences::getProcParamsPanel ()
bpconn = useBundledProfiles->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::bundledProfilesChanged) );
vbpp->pack_start (*useBundledProfiles, Gtk::PACK_SHRINK, 4);
fpp->add (*vbpp);
- mvbpp->pack_start (*fpp, Gtk::PACK_SHRINK, 4);
+ vbImageProcessing->pack_start (*fpp, Gtk::PACK_SHRINK, 4);
// Custom profile builder box
Gtk::Frame* cpfrm = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_CUSTPROFBUILD")) );
@@ -532,7 +529,7 @@ Gtk::Widget* Preferences::getProcParamsPanel ()
cpbt->attach (*cpltypelab, 0, 1, 1, 2, Gtk::FILL, Gtk::SHRINK, 2, 2);
cpbt->attach (*custProfBuilderLabelType, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL | Gtk::SHRINK, Gtk::SHRINK, 2, 2);
cpfrm->add (*cpbt);
- mvbpp->pack_start (*cpfrm, Gtk::PACK_SHRINK, 4);
+ vbImageProcessing->pack_start (*cpfrm, Gtk::PACK_SHRINK, 4);
Gtk::Frame* fdp = Gtk::manage (new Gtk::Frame (M ("PREFERENCES_PROFILEHANDLING")));
Gtk::Table* vbdp = Gtk::manage (new Gtk::Table (2, 2));
@@ -550,7 +547,7 @@ Gtk::Widget* Preferences::getProcParamsPanel ()
vbdp->attach (*lplab, 0, 1, 1, 2, Gtk::FILL, Gtk::SHRINK, 2, 2);
vbdp->attach (*loadParamsPreference, 1, 2, 1, 2, Gtk::EXPAND | Gtk::FILL | Gtk::SHRINK, Gtk::SHRINK, 2, 2);
fdp->add (*vbdp);
- mvbpp->pack_start (*fdp, Gtk::PACK_SHRINK, 4);
+ vbImageProcessing->pack_start (*fdp, Gtk::PACK_SHRINK, 4);
// Directories
Gtk::Frame* cdf = Gtk::manage (new Gtk::Frame (M ("PREFERENCES_DIRECTORIES")) );
@@ -568,8 +565,7 @@ Gtk::Widget* Preferences::getProcParamsPanel ()
dirgrid->attach_next_to(*darkFrameDir, *dfLab, Gtk::POS_RIGHT, 1, 1);
dirgrid->attach_next_to(*dfLabel, *darkFrameDir, Gtk::POS_RIGHT, 1, 1);
- //dfconn = darkFrameDir->signal_file_set().connect ( sigc::mem_fun(*this, &Preferences::darkFrameChanged), true);
- dfconn = darkFrameDir->signal_selection_changed().connect ( sigc::mem_fun (*this, &Preferences::darkFrameChanged)); //, true);
+ dfconn = darkFrameDir->signal_selection_changed().connect ( sigc::mem_fun (*this, &Preferences::darkFrameChanged));
// FLATFIELD
Gtk::Label *ffLab = Gtk::manage (new Gtk::Label (M ("PREFERENCES_FLATFIELDSDIR") + ":"));
@@ -583,8 +579,7 @@ Gtk::Widget* Preferences::getProcParamsPanel ()
dirgrid->attach_next_to(*flatFieldDir, *ffLab, Gtk::POS_RIGHT, 1, 1);
dirgrid->attach_next_to(*ffLabel, *flatFieldDir, Gtk::POS_RIGHT, 1, 1);
- //ffconn = flatFieldDir->signal_file_set().connect ( sigc::mem_fun(*this, &Preferences::flatFieldChanged), true);
- ffconn = flatFieldDir->signal_selection_changed().connect ( sigc::mem_fun (*this, &Preferences::flatFieldChanged)); //, true);
+ ffconn = flatFieldDir->signal_selection_changed().connect ( sigc::mem_fun (*this, &Preferences::flatFieldChanged));
//Cluts Dir
Gtk::Label *clutsDirLabel = Gtk::manage (new Gtk::Label (M ("PREFERENCES_CLUTSDIR") + ":"));
@@ -599,7 +594,7 @@ Gtk::Widget* Preferences::getProcParamsPanel ()
dirgrid->attach_next_to(*clutsRestartNeeded, *clutsDir, Gtk::POS_RIGHT, 1, 1);
cdf->add(*dirgrid);
- mvbpp->pack_start (*cdf, Gtk::PACK_SHRINK, 4 );
+ vbImageProcessing->pack_start (*cdf, Gtk::PACK_SHRINK, 4 );
// Crop
Gtk::Frame *cropframe = Gtk::manage(new Gtk::Frame(M("PREFERENCES_CROP")));
@@ -615,15 +610,19 @@ Gtk::Widget* Preferences::getProcParamsPanel ()
cropAutoFit = Gtk::manage(new Gtk::CheckButton(M("PREFERENCES_CROP_AUTO_FIT")));
cropvb->pack_start(*cropAutoFit);
cropframe->add(*cropvb);
- mvbpp->pack_start(*cropframe, Gtk::PACK_SHRINK, 4);
+ vbImageProcessing->pack_start(*cropframe, Gtk::PACK_SHRINK, 4);
- return mvbpp;
+ swImageProcessing->add(*vbImageProcessing);
+ return swImageProcessing;
}
Gtk::Widget* Preferences::getPerformancePanel ()
{
- Gtk::VBox* mainContainer = Gtk::manage ( new Gtk::VBox () );
- mainContainer->set_spacing (4);
+ swPerformance = Gtk::manage(new Gtk::ScrolledWindow());
+ swPerformance->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
+
+ Gtk::VBox* vbPerformance = Gtk::manage ( new Gtk::VBox () );
+ vbPerformance->set_spacing (4);
Gtk::Frame* fprevdemo = Gtk::manage (new Gtk::Frame (M ("PREFERENCES_PREVDEMO")));
Gtk::HBox* hbprevdemo = Gtk::manage (new Gtk::HBox (false, 4));
@@ -635,7 +634,7 @@ Gtk::Widget* Preferences::getPerformancePanel ()
hbprevdemo->pack_start (*lprevdemo, Gtk::PACK_SHRINK);
hbprevdemo->pack_start (*cprevdemo);
fprevdemo->add (*hbprevdemo);
- mainContainer->pack_start (*fprevdemo, Gtk::PACK_SHRINK, 4);
+ vbPerformance->pack_start (*fprevdemo, Gtk::PACK_SHRINK, 4);
Gtk::Frame* ftiffserialize = Gtk::manage (new Gtk::Frame (M ("PREFERENCES_SERIALIZE_TIFF_READ")));
Gtk::HBox* htiffserialize = Gtk::manage (new Gtk::HBox (false, 4));
@@ -643,7 +642,7 @@ Gtk::Widget* Preferences::getPerformancePanel ()
ctiffserialize->set_tooltip_text (M ("PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP"));
htiffserialize->pack_start (*ctiffserialize);
ftiffserialize->add (*htiffserialize);
- mainContainer->pack_start (*ftiffserialize, Gtk::PACK_SHRINK, 4);
+ vbPerformance->pack_start (*ftiffserialize, Gtk::PACK_SHRINK, 4);
Gtk::Frame* fclut = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_CLUTSCACHE")) );
Gtk::HBox* clutCacheSizeHB = Gtk::manage ( new Gtk::HBox () );
@@ -661,7 +660,7 @@ Gtk::Widget* Preferences::getPerformancePanel ()
clutCacheSizeHB->pack_start (*CLUTLl, Gtk::PACK_SHRINK, 0);
clutCacheSizeHB->pack_end (*clutCacheSizeSB, Gtk::PACK_SHRINK, 0);
fclut->add (*clutCacheSizeHB);
- mainContainer->pack_start (*fclut, Gtk::PACK_SHRINK, 4);
+ vbPerformance->pack_start (*fclut, Gtk::PACK_SHRINK, 4);
Gtk::Frame* finspect = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_INSPECT_LABEL")) );
Gtk::HBox* maxIBuffersHB = Gtk::manage ( new Gtk::HBox () );
@@ -688,7 +687,7 @@ Gtk::Widget* Preferences::getPerformancePanel ()
insphb->pack_start(*thumbnailInspectorMode);
inspectorvb->pack_start(*insphb);
finspect->add (*inspectorvb);
- mainContainer->pack_start (*finspect, Gtk::PACK_SHRINK, 4);
+ vbPerformance->pack_start (*finspect, Gtk::PACK_SHRINK, 4);
Gtk::Frame* fdenoise = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_NOISE")) );
Gtk::VBox* vbdenoise = Gtk::manage ( new Gtk::VBox (Gtk::PACK_SHRINK, 4) );
@@ -768,16 +767,19 @@ Gtk::Widget* Preferences::getPerformancePanel ()
// vbdenoise->pack_start (*cbdaubech, Gtk::PACK_SHRINK);
// --->
fdenoise->add (*vbdenoise);
- mainContainer->pack_start (*fdenoise, Gtk::PACK_SHRINK, 4);
+ vbPerformance->pack_start (*fdenoise, Gtk::PACK_SHRINK, 4);
- return mainContainer;
+ swPerformance->add(*vbPerformance);
+ return swPerformance;
}
-Gtk::Widget* Preferences::getColorManagementPanel ()
+Gtk::Widget* Preferences::getColorManPanel ()
{
+ swColorMan = Gtk::manage(new Gtk::ScrolledWindow());
+ swColorMan->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
- Gtk::VBox* mvbcm = Gtk::manage (new Gtk::VBox ());
- mvbcm->set_spacing (4);
+ Gtk::VBox* vbColorMan = Gtk::manage (new Gtk::VBox ());
+ vbColorMan->set_spacing (4);
iccDir = Gtk::manage (new MyFileChooserButton (M ("PREFERENCES_ICCDIR"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER));
setExpandAlignProperties (iccDir, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER);
@@ -797,7 +799,7 @@ Gtk::Widget* Preferences::getColorManagementPanel ()
iccDir->signal_selection_changed ().connect (sigc::mem_fun (this, &Preferences::iccDirChanged));
- mvbcm->pack_start (*iccdgrid, Gtk::PACK_SHRINK);
+ vbColorMan->pack_start (*iccdgrid, Gtk::PACK_SHRINK);
//------------------------- MONITOR ----------------------
@@ -837,11 +839,9 @@ Gtk::Widget* Preferences::getColorManagementPanel ()
setExpandAlignProperties (monBPC, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
monBPC->set_active (true);
-//#if defined(WIN32) // Auto-detection not implemented for Linux, see issue 851
cbAutoMonProfile = Gtk::manage (new Gtk::CheckButton (M ("PREFERENCES_AUTOMONPROFILE")));
setExpandAlignProperties (cbAutoMonProfile, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
autoMonProfileConn = cbAutoMonProfile->signal_toggled().connect (sigc::mem_fun (*this, &Preferences::autoMonProfileToggled));
-//#endif
int row = 0;
gmonitor->attach (*mplabel, 0, row, 1, 1);
@@ -853,22 +853,18 @@ Gtk::Widget* Preferences::getColorManagementPanel ()
gmonitor->attach (*monProfile, 1, row, 1, 1);
#endif
++row;
-//#if defined(WIN32)
gmonitor->attach (*cbAutoMonProfile, 1, row, 1, 1);
++row;
-//#endif
gmonitor->attach (*milabel, 0, row, 1, 1);
gmonitor->attach (*monIntent, 1, row, 1, 1);
++row;
gmonitor->attach (*monBPC, 0, row, 2, 1);
-//#if defined(WIN32)
autoMonProfileToggled();
-//#endif
fmonitor->add (*gmonitor);
- mvbcm->pack_start (*fmonitor, Gtk::PACK_SHRINK);
+ vbColorMan->pack_start (*fmonitor, Gtk::PACK_SHRINK);
//------------------------- PRINTER ----------------------
@@ -913,23 +909,24 @@ Gtk::Widget* Preferences::getColorManagementPanel ()
++row;
gprinter->attach (*prtBPC, 0, row, 2, 1);
-//#if defined(WIN32)
autoMonProfileToggled();
-//#endif
fprinter->add (*gprinter);
- mvbcm->pack_start (*fprinter, Gtk::PACK_SHRINK);
+ vbColorMan->pack_start (*fprinter, Gtk::PACK_SHRINK);
- return mvbcm;
+ swColorMan->add(*vbColorMan);
+ return swColorMan;
}
Gtk::Widget* Preferences::getGeneralPanel ()
{
+ swGeneral = Gtk::manage(new Gtk::ScrolledWindow());
+ swGeneral->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
- Gtk::Grid* mvbsd = Gtk::manage ( new Gtk::Grid () );
- mvbsd->set_column_spacing (4);
- mvbsd->set_row_spacing (4);
+ Gtk::Grid* vbGeneral = Gtk::manage ( new Gtk::Grid () );
+ vbGeneral->set_column_spacing (4);
+ vbGeneral->set_row_spacing (4);
Gtk::Frame* fworklflow = Gtk::manage (new Gtk::Frame (M ("PREFERENCES_WORKFLOW")));
setExpandAlignProperties (fworklflow, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
@@ -1012,7 +1009,7 @@ Gtk::Widget* Preferences::getGeneralPanel ()
fworklflow->add (*workflowGrid);
- mvbsd->attach_next_to (*fworklflow, Gtk::POS_TOP, 2, 1);
+ vbGeneral->attach_next_to (*fworklflow, Gtk::POS_TOP, 2, 1);
// ---------------------------------------------
@@ -1047,7 +1044,7 @@ Gtk::Widget* Preferences::getGeneralPanel ()
langGrid->attach_next_to (*languages, *langlab, Gtk::POS_RIGHT, 1, 1);
langGrid->attach_next_to (*langw, *languages, Gtk::POS_RIGHT, 1, 1);
flang->add (*langGrid);
- mvbsd->attach_next_to (*flang, *fworklflow, Gtk::POS_BOTTOM, 2, 1);
+ vbGeneral->attach_next_to (*flang, *fworklflow, Gtk::POS_BOTTOM, 2, 1);
// ---------------------------------------------
@@ -1120,7 +1117,7 @@ Gtk::Widget* Preferences::getGeneralPanel ()
themeGrid->attach_next_to (*butNavGuideCol, *navGuideLabel, Gtk::POS_RIGHT, 1, 1);
ftheme->add (*themeGrid);
- mvbsd->attach_next_to (*ftheme, *flang, Gtk::POS_BOTTOM, 2, 1);
+ vbGeneral->attach_next_to (*ftheme, *flang, Gtk::POS_BOTTOM, 2, 1);
// ---------------------------------------------
@@ -1153,7 +1150,7 @@ Gtk::Widget* Preferences::getGeneralPanel ()
clipGrid->attach_next_to (*shThresh, *shl, Gtk::POS_RIGHT, 1, 1);
fclip->add (*clipGrid);
- mvbsd->attach_next_to (*fclip, *ftheme, Gtk::POS_BOTTOM, 1, 1);
+ vbGeneral->attach_next_to (*fclip, *ftheme, Gtk::POS_BOTTOM, 1, 1);
// ---------------------------------------------
@@ -1181,7 +1178,7 @@ Gtk::Widget* Preferences::getGeneralPanel ()
navigationGrid->attach_next_to (*rememberZoomPanCheckbutton, *panFactorLabel, Gtk::POS_BOTTOM, 2, 1);
fnav->add (*navigationGrid);
- mvbsd->attach_next_to (*fnav, *fclip, Gtk::POS_RIGHT, 1, 1);
+ vbGeneral->attach_next_to (*fnav, *fclip, Gtk::POS_RIGHT, 1, 1);
// ---------------------------------------------
@@ -1244,20 +1241,23 @@ Gtk::Widget* Preferences::getGeneralPanel ()
#endif
fdg->add (*externaleditorGrid);
- mvbsd->attach_next_to (*fdg, *fclip, Gtk::POS_BOTTOM, 2, 1);
+ vbGeneral->attach_next_to (*fdg, *fclip, Gtk::POS_BOTTOM, 2, 1);
langAutoDetectConn = ckbLangAutoDetect->signal_toggled().connect (sigc::mem_fun (*this, &Preferences::langAutoDetectToggled));
tconn = theme->signal_changed().connect ( sigc::mem_fun (*this, &Preferences::themeChanged) );
fconn = fontButton->signal_font_set().connect ( sigc::mem_fun (*this, &Preferences::fontChanged) );
cpfconn = colorPickerFontButton->signal_font_set().connect ( sigc::mem_fun (*this, &Preferences::cpFontChanged) );
- return mvbsd;
+ swGeneral->add(*vbGeneral);
+ return swGeneral;
}
Gtk::Widget* Preferences::getFileBrowserPanel ()
{
+ swFileBrowser = Gtk::manage(new Gtk::ScrolledWindow());
+ swFileBrowser->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
- Gtk::VBox* mvbfb = Gtk::manage ( new Gtk::VBox () );
+ Gtk::VBox* vbFileBrowser = Gtk::manage ( new Gtk::VBox () );
Gtk::Frame* fsd = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_STARTUPIMDIR")) );
@@ -1268,7 +1268,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel ()
startupdir = Gtk::manage ( new Gtk::Entry () );
Gtk::Button* sdselect = Gtk::manage ( new Gtk::Button () );
- sdselect->set_image (*Gtk::manage (new RTImage ("gtk-open.png")));
+ sdselect->set_image (*Gtk::manage (new RTImage ("folder-open.png")));
Gtk::RadioButton::Group opts = sdcurrent->get_group();
sdlast->set_group (opts);
@@ -1286,7 +1286,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel ()
vbsd->pack_start (*otherbox, Gtk::PACK_SHRINK, 0);
fsd->add (*vbsd);
- mvbfb->pack_start (*fsd, Gtk::PACK_SHRINK, 4);
+ vbFileBrowser->pack_start (*fsd, Gtk::PACK_SHRINK, 4);
sdselect->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::selectStartupDir) );
@@ -1370,8 +1370,8 @@ Gtk::Widget* Preferences::getFileBrowserPanel ()
delExt->set_tooltip_text (M ("PREFERENCES_PARSEDEXTDELHINT"));
moveExtUp->set_tooltip_text (M ("PREFERENCES_PARSEDEXTUPHINT"));
moveExtDown->set_tooltip_text (M ("PREFERENCES_PARSEDEXTDOWNHINT"));
- Gtk::Image* addExtImg = Gtk::manage ( new RTImage ("list-add-small.png") );
- Gtk::Image* delExtImg = Gtk::manage ( new RTImage ("list-remove-red-small.png") );
+ Gtk::Image* addExtImg = Gtk::manage ( new RTImage ("add-small.png") );
+ Gtk::Image* delExtImg = Gtk::manage ( new RTImage ("remove-small.png") );
Gtk::Image* moveExtUpImg = Gtk::manage ( new RTImage ("arrow-up-small.png") );
Gtk::Image* moveExtDownImg = Gtk::manage ( new RTImage ("arrow-down-small.png") );
addExt->add (*addExtImg);
@@ -1441,11 +1441,7 @@ Gtk::Widget* Preferences::getFileBrowserPanel ()
hb6->pack_start (*fre);
hb6->set_spacing (4);
- mvbfb->pack_start (*hb6, Gtk::PACK_SHRINK, 4);
-
-// mvbfb->pack_start (*fro, Gtk::PACK_SHRINK, 4);
-// mvbfb->pack_start (*fre);
-// mvbfb->pack_start (*frc, Gtk::PACK_SHRINK, 4);
+ vbFileBrowser->pack_start (*hb6, Gtk::PACK_SHRINK, 4);
addExt->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::addExtPressed) );
delExt->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::delExtPressed) );
@@ -1456,22 +1452,26 @@ Gtk::Widget* Preferences::getFileBrowserPanel ()
clearProfiles->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::clearProfilesPressed) );
clearAll->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::clearAllPressed) );
- return mvbfb;
+ swFileBrowser->add(*vbFileBrowser);
+ return swFileBrowser;
}
-Gtk::Widget* Preferences::getSoundPanel ()
+Gtk::Widget* Preferences::getSoundsPanel ()
{
- Gtk::VBox* pSnd = new Gtk::VBox ();
+ swSounds = Gtk::manage(new Gtk::ScrolledWindow());
+ swSounds->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
+
+ Gtk::VBox* vbSounds = new Gtk::VBox ();
ckbSndEnable = Gtk::manage ( new Gtk::CheckButton (M ("GENERAL_ENABLE")));
sndEnableConn = ckbSndEnable->signal_toggled().connect (sigc::mem_fun (*this, &Preferences::sndEnableToggled));
- pSnd->pack_start (*ckbSndEnable, Gtk::PACK_SHRINK, 4);
+ vbSounds->pack_start (*ckbSndEnable, Gtk::PACK_SHRINK, 4);
Gtk::HBox* hblSndHelp = Gtk::manage (new Gtk::HBox ());
Gtk::Label* lSndHelp = Gtk::manage (new Gtk::Label (M ("PREFERENCES_SND_HELP")));
hblSndHelp->pack_start (*lSndHelp, Gtk::PACK_SHRINK, 4);
- pSnd->pack_start (*hblSndHelp, Gtk::PACK_SHRINK, 4);
+ vbSounds->pack_start (*hblSndHelp, Gtk::PACK_SHRINK, 4);
// BatchQueueDone
Gtk::HBox* pBatchQueueDone = Gtk::manage ( new Gtk::HBox() );
@@ -1482,7 +1482,7 @@ Gtk::Widget* Preferences::getSoundPanel ()
txtSndBatchQueueDone = Gtk::manage (new Gtk::Entry());
pBatchQueueDone->pack_end (*txtSndBatchQueueDone, Gtk::PACK_EXPAND_WIDGET, 4);
- pSnd->pack_start (*pBatchQueueDone, Gtk::PACK_SHRINK, 4);
+ vbSounds->pack_start (*pBatchQueueDone, Gtk::PACK_SHRINK, 4);
// LngEditProcDone
Gtk::HBox* pSndLngEditProcDone = Gtk::manage ( new Gtk::HBox() );
@@ -1502,11 +1502,12 @@ Gtk::Widget* Preferences::getSoundPanel ()
spbSndLngEditProcDoneSecs->set_range (0, 10);
pSndLngEditProcDone->pack_end (*spbSndLngEditProcDoneSecs, Gtk::PACK_SHRINK, 4);
- pSnd->pack_start (*pSndLngEditProcDone, Gtk::PACK_SHRINK, 4);
+ vbSounds->pack_start (*pSndLngEditProcDone, Gtk::PACK_SHRINK, 4);
sndEnableToggled();
- return pSnd;
+ swSounds->add(*vbSounds);
+ return swSounds;
}
void Preferences::parseDir (Glib::ustring dirname, std::vector& items, Glib::ustring ext)
@@ -1598,8 +1599,9 @@ void Preferences::parseThemeDir (Glib::ustring dirname)
void Preferences::storePreferences ()
{
-// With the new mechanism, we can't be sure of the availability of the DEFPROFILE_RAW & DEFPROFILE_IMG profiles,
-// because useBundledProfiles may be false. We're now using DEFPROFILE_INTERNAL instead, which is always available.
+ // With the new mechanism, we can't be sure of the availability of the DEFPROFILE_RAW & DEFPROFILE_IMG profiles,
+ // because useBundledProfiles may be false. We're now using DEFPROFILE_INTERNAL instead, which is always available.
+
moptions.defProfRaw = rprofiles->getFullPathFromActiveRow();
if (moptions.defProfRaw.empty()) {
@@ -1732,16 +1734,11 @@ void Preferences::storePreferences ()
}
moptions.rtSettings.monitorBPC = monBPC->get_active ();
-//#if defined(WIN32)
moptions.rtSettings.autoMonitorProfile = cbAutoMonProfile->get_active ();
-//#endif
#endif
moptions.rtSettings.iccDirectory = iccDir->get_filename ();
-// moptions.rtSettings.viewingdevice = view->get_active_row_number ();
-// moptions.rtSettings.viewingdevicegrey = grey->get_active_row_number ();
-// moptions.rtSettings.viewinggreySc = greySc->get_active_row_number ();
-// moptions.rtSettings.autocielab = cbAutocielab->get_active ();
+
moptions.rtSettings.leveldnv = dnv->get_active_row_number ();
moptions.rtSettings.leveldnti = dnti->get_active_row_number ();
moptions.rtSettings.leveldnliss = dnliss->get_active_row_number ();
@@ -1891,18 +1888,13 @@ void Preferences::fillPreferences ()
}
monBPC->set_active (moptions.rtSettings.monitorBPC);
-//#if defined(WIN32)
cbAutoMonProfile->set_active (moptions.rtSettings.autoMonitorProfile);
-//#endif
#endif
if (Glib::file_test (moptions.rtSettings.iccDirectory, Glib::FILE_TEST_IS_DIR)) {
iccDir->set_current_folder (moptions.rtSettings.iccDirectory);
}
-// view->set_active (moptions.rtSettings.viewingdevice);
-// grey->set_active (moptions.rtSettings.viewingdevicegrey);
-// greySc->set_active (moptions.rtSettings.viewinggreySc);
dnv->set_active (moptions.rtSettings.leveldnv);
dnti->set_active (moptions.rtSettings.leveldnti);
dnliss->set_active (moptions.rtSettings.leveldnliss);
@@ -1912,7 +1904,6 @@ void Preferences::fillPreferences ()
cprevdemo->set_active (moptions.prevdemo);
cbdaubech->set_active (moptions.rtSettings.daubech);
-// cbAutocielab->set_active (moptions.rtSettings.autocielab);
languages->set_active_text (moptions.language);
ckbLangAutoDetect->set_active (moptions.languageAutoDetect);
int themeNbr = getThemeRowNumber (moptions.theme);
@@ -2025,7 +2016,6 @@ void Preferences::fillPreferences ()
curveBBoxPosC->set_active (moptions.curvebboxpos);
ckbHistogramPositionLeft->set_active (moptions.histogramPosition == 1);
-// ckbHistogramWorking->set_active(moptions.histogramWorking==1);
ckbFileBrowserToolbarSingleRow->set_active (moptions.FileBrowserToolbarSingleRow);
ckbShowFilmStripToolBar->set_active (moptions.showFilmStripToolBar);
ckbHideTPVScrollbar->set_active (moptions.hideTPVScrollbar);
@@ -2100,17 +2090,17 @@ void Preferences::savePressed () {
}
*/
-//#if defined(WIN32)
void Preferences::autoMonProfileToggled ()
{
monProfile->set_sensitive (!cbAutoMonProfile->get_active());
}
-//#endif
+
/*
void Preferences::autocielabToggled () {
// cbAutocielab->set_sensitive(cbAutocielab->get_active());
}
*/
+
void Preferences::sndEnableToggled ()
{
txtSndBatchQueueDone->set_sensitive (ckbSndEnable->get_active());
@@ -2164,7 +2154,7 @@ void Preferences::cancelPressed ()
// update the profileStore
if (useBundledProfiles->get_active () != options.useBundledProfiles) {
- // we have to rescan with the old value;
+ // we have to rescan with the old value
bpconn.block (true);
useBundledProfiles->set_active (false);
bundledProfilesChanged();
@@ -2178,7 +2168,7 @@ void Preferences::selectStartupDir ()
{
Gtk::FileChooserDialog dialog (getToplevelWindow (this), M ("PREFERENCES_DIRSELECTDLG"), Gtk::FILE_CHOOSER_ACTION_SELECT_FOLDER);
-// dialog.set_transient_for(*this);
+ //dialog.set_transient_for(*this);
//Add response buttons to the dialog:
dialog.add_button (M ("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL);
diff --git a/rtgui/preferences.h b/rtgui/preferences.h
index 3a51deb13..d9f61f157 100644
--- a/rtgui/preferences.h
+++ b/rtgui/preferences.h
@@ -242,14 +242,23 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener
void appendBehavList (Gtk::TreeModel::iterator& parent, Glib::ustring label, int id, bool set);
- Gtk::Widget* getProcParamsPanel ();
- Gtk::Widget* getColorManagementPanel ();
- Gtk::Widget* getFileBrowserPanel ();
- Gtk::Widget* getGeneralPanel ();
- Gtk::Widget* getBatchProcPanel ();
- Gtk::Widget* getPerformancePanel ();
- Gtk::Widget* getSoundPanel ();
- Gtk::Widget* getDynProfilePanel ();
+ Gtk::ScrolledWindow *swGeneral;
+ Gtk::ScrolledWindow *swImageProcessing;
+ Gtk::ScrolledWindow *swDynamicProfile;
+ Gtk::ScrolledWindow *swFileBrowser;
+ Gtk::ScrolledWindow *swColorMan;
+ Gtk::ScrolledWindow *swBatchProc;
+ Gtk::ScrolledWindow *swPerformance;
+ Gtk::ScrolledWindow *swSounds;
+
+ Gtk::Widget *getGeneralPanel();
+ Gtk::Widget *getImageProcessingPanel();
+ Gtk::Widget *getDynamicProfilePanel();
+ Gtk::Widget *getFileBrowserPanel();
+ Gtk::Widget *getColorManPanel();
+ Gtk::Widget *getBatchProcPanel();
+ Gtk::Widget *getPerformancePanel();
+ Gtk::Widget *getSoundsPanel();
public:
explicit Preferences (RTWindow *rtwindow);
diff --git a/rtgui/previewmodepanel.cc b/rtgui/previewmodepanel.cc
index 60b450e4a..4b821f298 100644
--- a/rtgui/previewmodepanel.cc
+++ b/rtgui/previewmodepanel.cc
@@ -24,60 +24,68 @@
PreviewModePanel::PreviewModePanel (ImageArea* ia) : imageArea(ia)
{
- iR = new RTImage ("previewmodeR-on.png");
- iG = new RTImage ("previewmodeG-on.png");
- iB = new RTImage ("previewmodeB-on.png");
- iL = new RTImage ("previewmodeL-on.png");
- iBC0 = new RTImage ("previewmodeBC0-on.png");
- iBC1 = new RTImage ("previewmodeBC1-on.png");
- iBC2 = new RTImage ("previewmodeBC2-on.png");
- iBC3 = new RTImage ("previewmodeBC3-on.png");
+ 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");
- igR = new RTImage ("previewmodeR-off.png");
- igG = new RTImage ("previewmodeG-off.png");
- igB = new RTImage ("previewmodeB-off.png");
- igL = new RTImage ("previewmodeL-off.png");
- igBC0 = new RTImage ("previewmodeBC0-off.png");
- igBC1 = new RTImage ("previewmodeBC1-off.png");
- igBC2 = new RTImage ("previewmodeBC2-off.png");
- igBC3 = new RTImage ("previewmodeBC3-off.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");
backColor0 = Gtk::manage (new Gtk::ToggleButton ());
+ backColor0->get_style_context()->add_class("narrowbutton");
backColor0->set_relief(Gtk::RELIEF_NONE);
backColor0->set_tooltip_markup (M("MAIN_TOOLTIP_BACKCOLOR0"));
backColor0->set_image(options.bgcolor == 0 ? *iBC0 : *igBC0);
backColor1 = Gtk::manage (new Gtk::ToggleButton ());
+ backColor1->get_style_context()->add_class("narrowbutton");
backColor1->set_relief(Gtk::RELIEF_NONE);
backColor1->set_tooltip_markup (M("MAIN_TOOLTIP_BACKCOLOR1"));
backColor1->set_image(options.bgcolor == 1 ? *iBC1 : *igBC1);
backColor3 = Gtk::manage (new Gtk::ToggleButton ());
+ backColor3->get_style_context()->add_class("narrowbutton");
backColor3->set_relief(Gtk::RELIEF_NONE);
backColor3->set_tooltip_markup (M("MAIN_TOOLTIP_BACKCOLOR3"));
backColor3->set_image(options.bgcolor == 3 ? *iBC3 : *igBC3);
backColor2 = Gtk::manage (new Gtk::ToggleButton ());
+ backColor2->get_style_context()->add_class("narrowbutton");
backColor2->set_relief(Gtk::RELIEF_NONE);
backColor2->set_tooltip_markup (M("MAIN_TOOLTIP_BACKCOLOR2"));
backColor2->set_image(options.bgcolor == 2 ? *iBC2 : *igBC2);
previewR = Gtk::manage (new Gtk::ToggleButton ());
+ previewR->get_style_context()->add_class("narrowbutton");
previewR->set_relief(Gtk::RELIEF_NONE);
previewR->set_tooltip_markup (M("MAIN_TOOLTIP_PREVIEWR"));
previewR->set_image(*igR);
previewG = Gtk::manage (new Gtk::ToggleButton ());
+ previewG->get_style_context()->add_class("narrowbutton");
previewG->set_relief(Gtk::RELIEF_NONE);
previewG->set_tooltip_markup (M("MAIN_TOOLTIP_PREVIEWG"));
previewG->set_image(*igG);
previewB = Gtk::manage (new Gtk::ToggleButton ());
+ previewB->get_style_context()->add_class("narrowbutton");
previewB->set_relief(Gtk::RELIEF_NONE);
previewB->set_tooltip_markup (M("MAIN_TOOLTIP_PREVIEWB"));
previewB->set_image(*igB);
previewL = Gtk::manage (new Gtk::ToggleButton ());
+ previewL->get_style_context()->add_class("narrowbutton");
previewL->set_relief(Gtk::RELIEF_NONE);
previewL->set_tooltip_markup (M("MAIN_TOOLTIP_PREVIEWL"));
previewL->set_image(*igL);
diff --git a/rtgui/profilechangelistener.h b/rtgui/profilechangelistener.h
index b3baa62d7..79705b114 100644
--- a/rtgui/profilechangelistener.h
+++ b/rtgui/profilechangelistener.h
@@ -27,7 +27,7 @@ class ProfileChangeListener
public:
virtual ~ProfileChangeListener() {}
- virtual void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr) {}
+ virtual void profileChange (const rtengine::procparams::PartialProfile* nparams, rtengine::ProcEvent event, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr, bool fromLastSaved = false) {}
virtual void setDefaults (rtengine::procparams::ProcParams* defparams) {}
};
diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc
index 98210860f..b1ab05eda 100644
--- a/rtgui/profilepanel.cc
+++ b/rtgui/profilepanel.cc
@@ -63,20 +63,20 @@ ProfilePanel::ProfilePanel () : storedPProfile(nullptr), lastFilename(""), image
setExpandAlignProperties(profiles, true, true, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL);
load = Gtk::manage (new Gtk::Button ());
- load->add (*Gtk::manage (new RTImage ("gtk-open.png")));
+ load->add (*Gtk::manage (new RTImage ("folder-open.png")));
load->get_style_context()->add_class("Left");
load->set_margin_left(2);
setExpandAlignProperties(load, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
save = Gtk::manage (new Gtk::Button ());
- save->add (*Gtk::manage (new RTImage ("gtk-save-large.png")));
+ save->add (*Gtk::manage (new RTImage ("save.png")));
save->get_style_context()->add_class("MiddleH");
setExpandAlignProperties(save, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
copy = Gtk::manage (new Gtk::Button ());
- copy->add (*Gtk::manage (new RTImage ("edit-copy.png")));
+ copy->add (*Gtk::manage (new RTImage ("copy.png")));
copy->get_style_context()->add_class("MiddleH");
setExpandAlignProperties(copy, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
paste = Gtk::manage (new Gtk::Button ());
- paste->add (*Gtk::manage (new RTImage ("edit-paste.png")));
+ paste->add (*Gtk::manage (new RTImage ("paste.png")));
paste->get_style_context()->add_class("Right");
setExpandAlignProperties(paste, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL);
@@ -797,7 +797,7 @@ void ProfilePanel::initProfile (const Glib::ustring& profileFullPath, ProcParams
if (tpc) {
tpc->setDefaults (lastsaved->pparams);
- tpc->profileChange (lastsaved, EvPhotoLoaded, profiles->getSelectedEntry()->label);
+ tpc->profileChange (lastsaved, EvPhotoLoaded, profiles->getSelectedEntry()->label, nullptr, true);
}
} else {
if (pse) {
diff --git a/rtgui/rawcacorrection.cc b/rtgui/rawcacorrection.cc
index 75c60a7a2..7e263a19a 100644
--- a/rtgui/rawcacorrection.cc
+++ b/rtgui/rawcacorrection.cc
@@ -25,10 +25,10 @@ using namespace rtengine::procparams;
RAWCACorr::RAWCACorr () : FoldableToolPanel(this, "rawcacorrection", M("TP_CHROMATABERR_LABEL"))
{
- Gtk::Image* icaredL = Gtk::manage (new RTImage ("ajd-ca-red1.png"));
- Gtk::Image* icaredR = Gtk::manage (new RTImage ("ajd-ca-red2.png"));
- Gtk::Image* icablueL = Gtk::manage (new RTImage ("ajd-ca-blue1.png"));
- Gtk::Image* icablueR = Gtk::manage (new RTImage ("ajd-ca-blue2.png"));
+ Gtk::Image* icaredL = Gtk::manage (new RTImage ("circle-red-cyan-small.png"));
+ Gtk::Image* icaredR = Gtk::manage (new RTImage ("circle-cyan-red-small.png"));
+ Gtk::Image* icablueL = Gtk::manage (new RTImage ("circle-blue-yellow-small.png"));
+ Gtk::Image* icablueR = Gtk::manage (new RTImage ("circle-yellow-blue-small.png"));
caAutocorrect = Gtk::manage (new CheckBox(M("TP_RAWCACORR_AUTO"), multiImage));
caAutocorrect->setCheckBoxListener (this);
diff --git a/rtgui/renamedlg.cc b/rtgui/renamedlg.cc
index ce59fe5f5..f03df455f 100644
--- a/rtgui/renamedlg.cc
+++ b/rtgui/renamedlg.cc
@@ -179,8 +179,8 @@ Glib::ustring RenameDialog::getNewName ()
// templ = Gtk::manage (new Gtk::Entry ());
// Gtk::Button* add = Gtk::manage (new Gtk::Button ());
// Gtk::Button* del = Gtk::manage (new Gtk::Button ());
-// add->add (*Gtk::manage (new RTImage ("list-add-small.png")));
-// del->add (*Gtk::manage (new RTImage ("list-remove-red-small.png")));
+// add->add (*Gtk::manage (new RTImage ("add-small.png")));
+// del->add (*Gtk::manage (new RTImage ("remove-small.png")));
// hb->pack_start (*templ);
// hb->pack_start (*add, Gtk::PACK_SHRINK, 2);
// hb->pack_start (*del, Gtk::PACK_SHRINK, 2);
diff --git a/rtgui/resize.cc b/rtgui/resize.cc
index d72b606ad..d99068096 100644
--- a/rtgui/resize.cc
+++ b/rtgui/resize.cc
@@ -26,7 +26,7 @@ using namespace rtengine::procparams;
Resize::Resize () : FoldableToolPanel(this, "resize", M("TP_RESIZE_LABEL"), false, true), maxw(100000), maxh(100000)
{
auto m = ProcEventMapper::getInstance();
- EvResizeAllowUpscaling = m->newEvent(RESIZE, "HISTORY_MSG_RESIZE_ALLOW_UPSCALING");
+ EvResizeAllowUpscaling = m->newEvent(RESIZE, "HISTORY_MSG_RESIZE_ALLOWUPSCALING");
cropw = 0;
croph = 0;
diff --git a/rtgui/retinex.cc b/rtgui/retinex.cc
index 320c91fd5..5fdb8998a 100644
--- a/rtgui/retinex.cc
+++ b/rtgui/retinex.cc
@@ -468,7 +468,7 @@ Retinex::Retinex () : FoldableToolPanel (this, "retinex", M ("TP_RETINEX_LABEL")
neutral = Gtk::manage (new Gtk::Button (M ("TP_RETINEX_NEUTRAL")));
setExpandAlignProperties (neutral, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START);
- RTImage *resetImg = Gtk::manage (new RTImage ("gtk-undo-ltr-small.png", "gtk-undo-rtl-small.png"));
+ RTImage *resetImg = Gtk::manage (new RTImage ("undo-small.png", "redo-small.png"));
setExpandAlignProperties (resetImg, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
neutral->set_image (*resetImg);
neutral->set_tooltip_text (M ("TP_RETINEX_NEUTRAL_TIP"));
diff --git a/rtgui/rotate.cc b/rtgui/rotate.cc
index e8ea6c48e..802519d8d 100644
--- a/rtgui/rotate.cc
+++ b/rtgui/rotate.cc
@@ -30,15 +30,16 @@ Rotate::Rotate () : FoldableToolPanel(this, "rotate", M("TP_ROTATE_LABEL"))
rlistener = nullptr;
//TODO the action of the rotation slider is counter-intuitive
- Gtk::Image* irotateL = Gtk::manage (new RTImage ("rotate-right-2.png"));
- Gtk::Image* irotateR = Gtk::manage (new RTImage ("rotate-left-2.png"));
+ Gtk::Image* irotateL = Gtk::manage (new RTImage ("rotate-right-small.png"));
+ Gtk::Image* irotateR = Gtk::manage (new RTImage ("rotate-left-small.png"));
degree = Gtk::manage (new Adjuster (M("TP_ROTATE_DEGREE"), -45, 45, 0.01, 0, irotateL, irotateR));
degree->setAdjusterListener (this);
pack_start (*degree);
selectStraight = Gtk::manage (new Gtk::Button (M("TP_ROTATE_SELECTLINE")));
- selectStraight->set_image (*Gtk::manage (new RTImage ("straighten-small.png")));
+ selectStraight->set_image (*Gtk::manage (new RTImage ("rotate-straighten-small.png")));
+ selectStraight->get_style_context()->add_class("independent");
pack_start (*selectStraight, Gtk::PACK_SHRINK, 2);
selectStraight->signal_pressed().connect( sigc::mem_fun(*this, &Rotate::selectStraightPressed) );
diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc
index 0a8140955..8541504f8 100644
--- a/rtgui/rtwindow.cc
+++ b/rtgui/rtwindow.cc
@@ -21,6 +21,7 @@
#include "rtwindow.h"
#include "options.h"
#include "preferences.h"
+#include "iccprofilecreator.h"
#include "cursormanager.h"
#include "rtimage.h"
#include "whitebalance.h"
@@ -95,10 +96,11 @@ RTWindow::RTWindow ()
#ifndef WIN32
const std::vector> appIcons = {
- RTImage::createFromFile("rt-logo-tiny.png"),
- RTImage::createFromFile("rt-logo-small.png"),
- RTImage::createFromFile("rt-logo-medium.png"),
- RTImage::createFromFile("rt-logo-large.png")
+ RTImage::createFromFile("rawtherapee-logo-16.png"),
+ RTImage::createFromFile("rawtherapee-logo-24.png"),
+ RTImage::createFromFile("rawtherapee-logo-48.png"),
+ RTImage::createFromFile("rawtherapee-logo-128.png"),
+ RTImage::createFromFile("rawtherapee-logo-256.png")
};
try {
set_default_icon_list(appIcons);
@@ -190,10 +192,10 @@ RTWindow::RTWindow ()
if (options.mainNBVertical) {
mainNB->set_tab_pos (Gtk::POS_LEFT);
fpl->set_angle (90);
- fpanelLabelGrid->attach_next_to (*Gtk::manage (new RTImage ("gtk-directory.png")), Gtk::POS_TOP, 1, 1);
+ fpanelLabelGrid->attach_next_to (*Gtk::manage (new RTImage ("folder-closed.png")), Gtk::POS_TOP, 1, 1);
fpanelLabelGrid->attach_next_to (*fpl, Gtk::POS_TOP, 1, 1);
} else {
- fpanelLabelGrid->attach_next_to (*Gtk::manage (new RTImage ("gtk-directory.png")), Gtk::POS_RIGHT, 1, 1);
+ fpanelLabelGrid->attach_next_to (*Gtk::manage (new RTImage ("folder-closed.png")), Gtk::POS_RIGHT, 1, 1);
fpanelLabelGrid->attach_next_to (*fpl, Gtk::POS_RIGHT, 1, 1);
}
@@ -225,14 +227,20 @@ RTWindow::RTWindow ()
//mainBox->pack_start (*mainNB);
// filling bottom box
- iFullscreen = new RTImage ("fullscreen.png");
- iFullscreen_exit = new RTImage ("fullscreen-exit.png");
+ iFullscreen = new RTImage ("fullscreen-enter.png");
+ iFullscreen_exit = new RTImage ("fullscreen-leave.png");
+
+ Gtk::Button* iccProfileCreator = Gtk::manage (new Gtk::Button ());
+ setExpandAlignProperties (iccProfileCreator, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
+ iccProfileCreator->set_image (*Gtk::manage (new RTImage ("gamut-plus.png")));
+ iccProfileCreator->set_tooltip_markup (M ("MAIN_BUTTON_ICCPROFCREATOR"));
+ iccProfileCreator->signal_clicked().connect ( sigc::mem_fun (*this, &RTWindow::showICCProfileCreator) );
//Gtk::LinkButton* rtWeb = Gtk::manage (new Gtk::LinkButton ("http://rawtherapee.com")); // unused... but fail to be linked anyway !?
//Gtk::Button* preferences = Gtk::manage (new Gtk::Button (M("MAIN_BUTTON_PREFERENCES")+"..."));
Gtk::Button* preferences = Gtk::manage (new Gtk::Button ());
setExpandAlignProperties (preferences, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER);
- preferences->set_image (*Gtk::manage (new RTImage ("gtk-preferences.png")));
+ preferences->set_image (*Gtk::manage (new RTImage ("preferences.png")));
preferences->set_tooltip_markup (M ("MAIN_BUTTON_PREFERENCES"));
preferences->signal_clicked().connect ( sigc::mem_fun (*this, &RTWindow::showPreferences) );
@@ -256,6 +264,7 @@ RTWindow::RTWindow ()
prProgBar.set_inverted (true);
actionGrid->set_orientation (Gtk::ORIENTATION_VERTICAL);
actionGrid->attach_next_to (prProgBar, Gtk::POS_BOTTOM, 1, 1);
+ actionGrid->attach_next_to (*iccProfileCreator, Gtk::POS_BOTTOM, 1, 1);
actionGrid->attach_next_to (*preferences, Gtk::POS_BOTTOM, 1, 1);
actionGrid->attach_next_to (*btn_fullscreen, Gtk::POS_BOTTOM, 1, 1);
mainNB->set_action_widget (actionGrid, Gtk::PACK_END);
@@ -263,6 +272,7 @@ RTWindow::RTWindow ()
prProgBar.set_orientation (Gtk::ORIENTATION_HORIZONTAL);
actionGrid->set_orientation (Gtk::ORIENTATION_HORIZONTAL);
actionGrid->attach_next_to (prProgBar, Gtk::POS_RIGHT, 1, 1);
+ actionGrid->attach_next_to (*iccProfileCreator, Gtk::POS_RIGHT, 1, 1);
actionGrid->attach_next_to (*preferences, Gtk::POS_RIGHT, 1, 1);
actionGrid->attach_next_to (*btn_fullscreen, Gtk::POS_RIGHT, 1, 1);
mainNB->set_action_widget (actionGrid, Gtk::PACK_END);
@@ -440,7 +450,7 @@ void RTWindow::addEditorPanel (EditorPanel* ep, const std::string &name)
// construct closeable tab for the image
Gtk::Grid* titleGrid = Gtk::manage (new Gtk::Grid ());
titleGrid->set_tooltip_markup (name);
- RTImage *closebimg = Gtk::manage (new RTImage ("gtk-close.png"));
+ RTImage *closebimg = Gtk::manage (new RTImage ("cancel-small.png"));
Gtk::Button* closeb = Gtk::manage (new Gtk::Button ());
closeb->set_name ("CloseButton");
closeb->add (*closebimg);
@@ -448,7 +458,7 @@ void RTWindow::addEditorPanel (EditorPanel* ep, const std::string &name)
closeb->set_focus_on_click (false);
closeb->signal_clicked().connect ( sigc::bind (sigc::mem_fun (*this, &RTWindow::remEditorPanel), ep));
- titleGrid->attach_next_to (*Gtk::manage (new RTImage ("rtwindow.png")), Gtk::POS_RIGHT, 1, 1);
+ titleGrid->attach_next_to (*Gtk::manage (new RTImage ("aperture.png")), Gtk::POS_RIGHT, 1, 1);
titleGrid->attach_next_to (*Gtk::manage (new Gtk::Label (Glib::path_get_basename (name))), Gtk::POS_RIGHT, 1, 1);
titleGrid->attach_next_to (*closeb, Gtk::POS_RIGHT, 1, 1);
titleGrid->show_all ();
@@ -747,6 +757,23 @@ void RTWindow::writeToolExpandedStatus (std::vector