diff --git a/AUTHORS.txt b/AUTHORS.txt index a9f501919..15e3e13d4 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -63,4 +63,5 @@ Other contributors (profiles, ideas, mockups, testing, forum activity, translati Johan Thor Vitalis Tiknius TooWaBoo + Franz Trischberger Colin Walker diff --git a/CMakeLists.txt b/CMakeLists.txt index f2739c4da..72c6a510b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,11 @@ if(APPLE) cmake_minimum_required(VERSION 3.3) - CMAKE_POLICY(SET CMP0025 NEW) + cmake_policy(SET CMP0025 NEW) else() cmake_minimum_required(VERSION 2.8.8) endif() -# Must stay before the PROJECT() command: +# Must stay before the project() command: if(${CMAKE_EXTRA_GENERATOR} MATCHES "Eclipse CDT4") set(CMAKE_CXX_COMPILER_ARG1 "-std=c++11" CACHE STRING "C++ version for eclipse" FORCE) # Users building with Eclipse should set CMAKE_ECLIPSE_VERSION through the @@ -13,18 +13,18 @@ if(${CMAKE_EXTRA_GENERATOR} MATCHES "Eclipse CDT4") #set(CMAKE_ECLIPSE_VERSION "4.6.0" CACHE STRING "Eclipse version" FORCE) endif() -PROJECT(RawTherapee) +project(RawTherapee) # The default target is Debug: if(CMAKE_BUILD_TYPE STREQUAL "") - set (CMAKE_BUILD_TYPE Debug CACHE STRING "One of: None Debug Release RelWithDebInfo MinSizeRel" FORCE) + set(CMAKE_BUILD_TYPE Debug CACHE STRING "One of: None Debug Release RelWithDebInfo MinSizeRel" FORCE) endif() string(TOUPPER ${CMAKE_BUILD_TYPE} UPPER_CMAKE_BUILD_TYPE) # Set required C and C++ standards and check GCC version: -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9") message(FATAL_ERROR "Building RawTherapee requires using GCC version 4.9 or higher!") @@ -32,14 +32,14 @@ endif() # We might want to build using the old C++ ABI, even when using a new GCC version: if(USE_OLD_CXX_ABI) - add_definitions (-D_GLIBCXX_USE_CXX11_ABI=0) + add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) endif() if(UPPER_CMAKE_BUILD_TYPE STREQUAL "DEBUG") - add_definitions (-D_DEBUG) + add_definitions(-D_DEBUG) else() - add_definitions (-DNDEBUG) - add_definitions (-D_DNDEBUG) + add_definitions(-DNDEBUG) + add_definitions(-D_DNDEBUG) endif() message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") @@ -141,7 +141,7 @@ if(WIN32 OR APPLE) if(BUILD_BUNDLE) message(STATUS "You have set BUILD_BUNDLE=ON but this is not necessary - the option is forced to ON for Windows and macOS.") endif() - set (BUILD_BUNDLE ON FORCE) + set(BUILD_BUNDLE ON FORCE) endif() if(NOT DEFINED BUNDLE_BASE_INSTALL_DIR) @@ -262,7 +262,7 @@ endif() if(NOT BUILD_BUNDLE) foreach(path BINDIR DATADIR LIBDIR DOCDIR CREDITSDIR LICENCEDIR) if(NOT (IS_ABSOLUTE "${${path}}")) - message (FATAL_ERROR "The ${path} path has to be absolute when using -DBUILD_BUNDLE=OFF") + message(FATAL_ERROR "The ${path} path has to be absolute when using -DBUILD_BUNDLE=OFF") endif() endforeach() endif() @@ -342,41 +342,42 @@ endif() if(WITH_LTO) # Using LTO with older versions of binutils requires setting extra flags - SET(BINUTILS_VERSION_MININUM "2.29") + set(BINUTILS_VERSION_MININUM "2.29") execute_process(COMMAND ar --version OUTPUT_VARIABLE BINUTILS_VERSION_DETECTED) string(REGEX REPLACE ".* ([0-9.]+)\n.*" "\\1" BINUTILS_VERSION_DETECTED "${BINUTILS_VERSION_DETECTED}") if("${BINUTILS_VERSION_DETECTED}" VERSION_LESS "${BINUTILS_VERSION_MININUM}") if(APPLE) - SET(CMAKE_AR "/opt/local/bin/ar") - SET(CMAKE_RANLIB "/opt/local/bin/ranlib") + set(CMAKE_AR "/opt/local/bin/ar") + set(CMAKE_RANLIB "/opt/local/bin/ranlib") else() - SET(CMAKE_AR "/usr/bin/gcc-ar") - SET(CMAKE_RANLIB "/usr/bin/gcc-ranlib") + set(CMAKE_AR "/usr/bin/gcc-ar") + set(CMAKE_RANLIB "/usr/bin/gcc-ranlib") endif() message(STATUS "Binutils version detected as less than " ${BINUTILS_VERSION_MININUM} " - setting CMake parameters to enable LTO linking:\n CMAKE_AR=\"" ${CMAKE_AR} "\"\n CMAKE_RANLIB=\"" ${CMAKE_RANLIB} "\"") endif() - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto") endif() if(WITH_SAN) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=${WITH_SAN}") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${WITH_SAN}") - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${WITH_SAN}") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=${WITH_SAN}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${WITH_SAN}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${WITH_SAN}") endif() if(WITH_PROF) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg") - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pg") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pg") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pg") endif() +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wuninitialized -Wno-deprecated-declarations -Wno-unused-result") if(OPTION_OMP) find_package(OpenMP) if(OPENMP_FOUND) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -Werror=unknown-pragmas -Wall -Wno-unused-result -Wno-deprecated-declarations") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS} -Werror=unknown-pragmas") endif() endif() diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7e79edc27..85776d557 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,11 +16,12 @@ The most useful feedback is based on the latest development code, and in the cas - Announce and discuss your plans in GitHub before starting work. - Work in a new branch. Fork if necessary. - Keep branches small so that completed and working features can be merged into the "dev" branch often, and so that they can be abandoned if they head in the wrong direction. -- Use C++11 +- Use C++11. - The naming isn't homogeneous throughout the code but here is a rough guideline: - - *Types* (classes, structs, enums, typedefs...) should be named with `UpperCamelCase` - - *Functions* and *methods* should be named with `lowerCamelCase` - - *Variables* should be either named with `lowerCamelCase` or better with `lower_underscores` to avoid conflicts - - *Enum values* should be named with `UPPER_UNDERSCORES` - - Most important: Be consistent, even when not sticking to the rules + - *Identifiers* (variables, functions, methods, keys, enums, etc.) should be clear and unambiguous. Make them as long as necessary to ensure that your code is understandable to others. + - *Types* (classes, structs, enums, typedefs...) should be named with `UpperCamelCase`. + - *Functions* and *methods* should be named with `lowerCamelCase`. + - *Variables* should be either named with `lowerCamelCase` or better with `lower_underscores` to avoid conflicts. + - *Enum values* should be named with `UPPER_UNDERSCORES`. + - Be consistent, even when not sticking to the rules. - Code may be run through astyle version 3 or newer. If using astyle, it is important that the astyle changes go into their own commit, so that style changes are not mixed with actual code changes. Command: `astyle --options=rawtherapee.astylerc code.cc` diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index c320e61f0..248d27f36 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt @@ -1,4 +1,4 @@ -RAWTHERAPEE 5.4-dev RELEASE NOTES +RAWTHERAPEE 5.5-dev RELEASE NOTES This is a development version of RawTherapee. We update the code almost daily. Every few months, once enough changes have accumulated and the code is stabilized, we make a new official release. Every code change between these releases is known as a "development" version, and this is one of them. @@ -13,6 +13,7 @@ While we only commit tested and relatively stable code and so the development ve - Bugs present in the stable versions get fixed in the development versions, and make it into the next stable version when we make a new official release. That means that in some ways the development versions can be "more stable" than the latest stable release. At the same time, new features may introduce new bugs. This is a trade-off you should be aware of. + NEWS RELEVANT TO PHOTOGRAPHERS RawTherapee supports most raw formats, including Pentax and Sony Pixel Shift, Canon Dual-Pixel, and those from Foveon and X-Trans sensors. @@ -25,12 +26,8 @@ In order to use RawTherapee efficiently you should know that: - All curves support the Shift and Ctrl keys while dragging a point. Shift+drag makes the point snap to a meaningful axis (top, bottom, diagonal, other), while Ctrl+drag makes your mouse movement super-fine for precise point positioning. - There are many keyboard shortcuts which make working with RawTherapee much faster and give you greater control. Make sure you familiarize yourself with them on RawPedia's "Keyboard Shortcuts" page! -New features since 5.4: -- TODO. - -RawTherapee and other open-source projects require access to sample raw files from various camera makes and models in order to support those raw formats correctly. -You can help by submitting raw files to RPU: -https://raw.pixls.us/ +New features since 5.5: +TODO. @@ -45,9 +42,6 @@ In general: - For stable releases use -DCACHE_NAME_SUFFIX="" - For development builds and release-candidates use -DCACHE_NAME_SUFFIX="5-dev" -Changes since 5.4: -- TODO. - NEWS RELEVANT TO DEVELOPERS @@ -89,13 +83,6 @@ More information here: http://rawpedia.rawtherapee.com/IRC -SOCIAL NETWORKS - -Google+ -https://plus.google.com/+RawTherapee - - - REVISION HISTORY The complete changelog is available at: diff --git a/UpdateInfo.cmake b/UpdateInfo.cmake index 8ffaf0636..d1f532506 100644 --- a/UpdateInfo.cmake +++ b/UpdateInfo.cmake @@ -2,25 +2,25 @@ # If we find ReleaseInfo.cmake we use the info from there and don't need Git to be installed find_file(REL_INFO_FILE ReleaseInfo.cmake PATHS "${PROJECT_SOURCE_DIR}" NO_DEFAULT_PATH) -if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) +if(REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) # we look for the git command in this paths by order of preference - if (WIN32) + if(WIN32) find_program(GIT_CMD git.exe HINTS ENV Path PATH_SUFFIXES ../) - elseif (APPLE) + elseif(APPLE) find_program(GIT_CMD git PATHS "/opt/local/bin" "/usr/local/bin" "/usr/bin") find_program(GIT_CMD git) - set (SHELL "/bin/bash") - else (WIN32) # Linux + set(SHELL "/bin/bash") + else(WIN32) # Linux find_program(GIT_CMD git) - set (SHELL "/bin/bash") - endif (WIN32) + set(SHELL "/bin/bash") + endif(WIN32) # Fail if Git is not installed - if (GIT_CMD STREQUAL GIT_CMD-NOTFOUND) + if(GIT_CMD STREQUAL GIT_CMD-NOTFOUND) message(FATAL_ERROR "git command not found!") - else () + else() message(STATUS "git command found: ${GIT_CMD}") - endif () + endif() # Get version description. # Depending on whether you checked out a branch (dev) or a tag (release), @@ -50,19 +50,19 @@ if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) execute_process(COMMAND ${GIT_CMD} rev-list --count HEAD --not --tags OUTPUT_VARIABLE GIT_COMMITS_SINCE_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") # If user checked-out something which is not a branch, use the description as branch name. - if (GIT_BRANCH STREQUAL "") - set (GIT_BRANCH "${GIT_DESCRIBE}") + if(GIT_BRANCH STREQUAL "") + set(GIT_BRANCH "${GIT_DESCRIBE}") endif() # Create numeric version. # This version is nonsense, either don't use it at all or use it only where you have no other choice, e.g. Inno Setup's VersionInfoVersion. # Strip everything after hyphen, e.g. "5.0-gtk2" -> "5.0", "5.1-rc1" -> "5.1" (ergo BS). - if (GIT_COMMITS_SINCE_TAG STREQUAL "") - set (GIT_NUMERIC_VERSION_BS "0.0.0") - else () + if(GIT_COMMITS_SINCE_TAG STREQUAL "") + set(GIT_NUMERIC_VERSION_BS "0.0.0") + else() string(REGEX REPLACE "-.*" "" GIT_NUMERIC_VERSION_BS ${GIT_DESCRIBE}) set(GIT_NUMERIC_VERSION_BS "${GIT_NUMERIC_VERSION_BS}.${GIT_COMMITS_SINCE_TAG}") - endif () + endif() message(STATUS "Git checkout information:") message(STATUS " Commit description: ${GIT_DESCRIBE}") @@ -73,38 +73,38 @@ if (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) message(STATUS " Commits since branch: ${GIT_COMMITS_SINCE_BRANCH}") message(STATUS " Version (unreliable): ${GIT_NUMERIC_VERSION_BS}") - if (NOT DEFINED CACHE_NAME_SUFFIX) + if(NOT DEFINED CACHE_NAME_SUFFIX) set(CACHE_NAME_SUFFIX "${GIT_DESCRIBE}") message(STATUS "CACHE_NAME_SUFFIX was not defined, it is now \"${CACHE_NAME_SUFFIX}\"") - else () + else() message(STATUS "CACHE_NAME_SUFFIX is \"${CACHE_NAME_SUFFIX}\"") - endif () + endif() -else (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) +else(REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) include("${PROJECT_SOURCE_DIR}/ReleaseInfo.cmake") -endif (REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) +endif(REL_INFO_FILE STREQUAL REL_INFO_FILE-NOTFOUND) -if (WIN32) - if (BIT_DEPTH EQUAL 4) +if(WIN32) + if(BIT_DEPTH EQUAL 4) set(BUILD_BIT_DEPTH 32) # 32 bits builds has to be installable on 64 bits system, to support WinXP/64. set(ARCHITECTURE_ALLOWED "x86 x64 ia64") # installing in 32 bits mode even on 64 bits OS and architecture set(INSTALL_MODE "") - elseif (BIT_DEPTH EQUAL 8) + elseif(BIT_DEPTH EQUAL 8) set(BUILD_BIT_DEPTH 64) # Restricting the 64 bits builds to 64 bits systems only set(ARCHITECTURE_ALLOWED "x64 ia64") # installing in 64 bits mode for all 64 bits processors, even for itanium architecture set(INSTALL_MODE "x64 ia64") - endif (BIT_DEPTH EQUAL 4) + endif(BIT_DEPTH EQUAL 4) # set part of the output archive name set(SYSTEM_NAME "WinVista") - configure_file ("${PROJECT_SOURCE_DIR}/tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_BINARY_DIR}/rtdata/WindowsInnoSetup.iss") -endif (WIN32) + configure_file("${PROJECT_SOURCE_DIR}/tools/win/InnoSetup/WindowsInnoSetup.iss.in" "${CMAKE_BINARY_DIR}/rtdata/WindowsInnoSetup.iss") +endif(WIN32) # build version.h from template -configure_file ("${PROJECT_SOURCE_DIR}/rtgui/version.h.in" "${CMAKE_BINARY_DIR}/rtgui/version.h") +configure_file("${PROJECT_SOURCE_DIR}/rtgui/version.h.in" "${CMAKE_BINARY_DIR}/rtgui/version.h") # build AboutThisBuild.txt from template -configure_file ("${PROJECT_SOURCE_DIR}/AboutThisBuild.txt.in" "${CMAKE_BINARY_DIR}/AboutThisBuild.txt") +configure_file("${PROJECT_SOURCE_DIR}/AboutThisBuild.txt.in" "${CMAKE_BINARY_DIR}/AboutThisBuild.txt") diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc index 34363781f..dce81742c 100644 Binary files a/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc and b/rtdata/iccprofiles/output/RTv2_ACES-AP0.icc differ diff --git a/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc b/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc index 413360817..65af92f1c 100644 Binary files a/rtdata/iccprofiles/output/RTv2_ACES-AP1.icc 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 index 3f9db89e0..6390b1f34 100644 Binary files a/rtdata/iccprofiles/output/RTv2_Best.icc 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 index ebd5005e2..13907b35a 100644 Binary files a/rtdata/iccprofiles/output/RTv2_Beta.icc 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 index c795da140..7dd7f383c 100644 Binary files a/rtdata/iccprofiles/output/RTv2_Bruce.icc 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 index 40f86fcf1..9d2c3fc01 100644 Binary files a/rtdata/iccprofiles/output/RTv2_Large.icc 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 index 59bdf6706..ebaf4d133 100644 Binary files a/rtdata/iccprofiles/output/RTv2_Medium.icc 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 index b6969a6f1..5a1614bed 100644 Binary files a/rtdata/iccprofiles/output/RTv2_Rec2020.icc 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 index 32ce13c7d..e17668966 100644 Binary files a/rtdata/iccprofiles/output/RTv2_Wide.icc 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 index 5efc365f8..eb841129e 100644 Binary files a/rtdata/iccprofiles/output/RTv2_sRGB.icc 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 index 30df95eac..e07da6e04 100644 Binary files a/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc and b/rtdata/iccprofiles/output/RTv4_ACES-AP0.icc differ diff --git a/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc b/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc index 5dfb4cb0d..7194ff6da 100644 Binary files a/rtdata/iccprofiles/output/RTv4_ACES-AP1.icc 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 index c67688686..8d40518ad 100644 Binary files a/rtdata/iccprofiles/output/RTv4_Best.icc 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 index 86825164a..118615326 100644 Binary files a/rtdata/iccprofiles/output/RTv4_Beta.icc 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 index c3a01b116..d61767305 100644 Binary files a/rtdata/iccprofiles/output/RTv4_Bruce.icc 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 index 176bff9a7..9aef72934 100644 Binary files a/rtdata/iccprofiles/output/RTv4_Large.icc 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 index d63965fa5..075e9637c 100644 Binary files a/rtdata/iccprofiles/output/RTv4_Medium.icc 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 index 27b1f8c49..9fcb5d263 100644 Binary files a/rtdata/iccprofiles/output/RTv4_Rec2020.icc 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 index f95587797..6dca43823 100644 Binary files a/rtdata/iccprofiles/output/RTv4_Wide.icc 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 index af95e0fd4..60607da55 100644 Binary files a/rtdata/iccprofiles/output/RTv4_sRGB.icc and b/rtdata/iccprofiles/output/RTv4_sRGB.icc differ diff --git a/rtdata/images/non-themed/png/splash.png b/rtdata/images/non-themed/png/splash.png index 14e3ddc9b..f3c523b88 100644 Binary files a/rtdata/images/non-themed/png/splash.png and b/rtdata/images/non-themed/png/splash.png differ diff --git a/rtdata/images/non-themed/rt-splash.svg b/rtdata/images/non-themed/rt-splash.svg index 3e419fcbf..87b493153 100644 --- a/rtdata/images/non-themed/rt-splash.svg +++ b/rtdata/images/non-themed/rt-splash.svg @@ -15,9 +15,9 @@ viewBox="0 0 146.05 91.545836" version="1.1" id="svg783" - inkscape:version="0.92.2 5c3e80d, 2017-08-06" - sodipodi:docname="rt_splash.svg" - inkscape:export-filename="/tmp/splash.png" + inkscape:version="0.92.2 2405546, 2018-03-11" + sodipodi:docname="rt-splash.svg" + inkscape:export-filename="/home/morgan/programs/code-rawtherapee/rtdata/images/non-themed/png/splash.png" inkscape:export-xdpi="96" inkscape:export-ydpi="96"> @@ -902,7 +902,7 @@ y="2.2370076" x="283.85016" id="tspan3664" - sodipodi:role="line">. 4 + sodipodi:role="line">. 5 + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/curve-catmullrom-small.svg b/rtdata/images/themed/svg/curve-catmullrom-small.svg new file mode 100644 index 000000000..bc6378bb4 --- /dev/null +++ b/rtdata/images/themed/svg/curve-catmullrom-small.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/curve-catmullrom.svg b/rtdata/images/themed/svg/curve-catmullrom.svg new file mode 100644 index 000000000..b59954885 --- /dev/null +++ b/rtdata/images/themed/svg/curve-catmullrom.svg @@ -0,0 +1,131 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/redo-small.svg b/rtdata/images/themed/svg/redo-small.svg index be05d9592..639aebb42 100644 --- a/rtdata/images/themed/svg/redo-small.svg +++ b/rtdata/images/themed/svg/redo-small.svg @@ -26,14 +26,14 @@ borderopacity="1.0" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:zoom="22.627417" - inkscape:cx="-2.333987" - inkscape:cy="3.4079617" + inkscape:zoom="50.5" + inkscape:cx="8" + inkscape:cy="8" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:window-width="1920" - inkscape:window-height="1019" + inkscape:window-height="1017" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" @@ -63,7 +63,7 @@ image/svg+xml - + Maciej Dworak @@ -100,20 +100,11 @@ inkscape:groupmode="layer" inkscape:label="Layer 1" transform="translate(0,-8)"> - - - - + diff --git a/rtdata/images/themed/svg/star.svg b/rtdata/images/themed/svg/star.svg new file mode 100644 index 000000000..af9ca870e --- /dev/null +++ b/rtdata/images/themed/svg/star.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + diff --git a/rtdata/images/themed/svg/undo-small.svg b/rtdata/images/themed/svg/undo-small.svg index 83b4663a0..f06c73392 100644 --- a/rtdata/images/themed/svg/undo-small.svg +++ b/rtdata/images/themed/svg/undo-small.svg @@ -26,14 +26,14 @@ borderopacity="1.0" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:zoom="51.375" + inkscape:zoom="50.625" inkscape:cx="8" inkscape:cy="8" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:window-width="1920" - inkscape:window-height="1019" + inkscape:window-height="1017" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" @@ -45,7 +45,7 @@ inkscape:object-nodes="false" inkscape:snap-grids="true" inkscape:snap-bbox-midpoints="false" - inkscape:snap-global="false"> + inkscape:snap-global="true"> diff --git a/rtdata/images/themed/svg/warning.svg b/rtdata/images/themed/svg/warning.svg new file mode 100644 index 000000000..c24ba0653 --- /dev/null +++ b/rtdata/images/themed/svg/warning.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + image/svg+xml + + + + + Maciej Dworak + + + + + + + + RawTherapee icon. + + + + + + + + + + + + + + + + + + diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index c3a7ea1d0..ce7e9e378 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -84,8 +84,6 @@ FILEBROWSER_AUTOFLATFIELD;Auto camp pla FILEBROWSER_BROWSEPATHBUTTONHINT;Clic per navegar al path escollit FILEBROWSER_BROWSEPATHHINT;Escriviu path on buscar.\nCtrl-O dirigir-se al path de la finestra de text.\nEnter / Ctrl-Enter (en el gestor de fitxers) per a navegar allí;\n\nPath dreceres:\n ~ - directori home de l'usuari\n ! - directori de fotografies de l'usuari FILEBROWSER_CACHE;Cau -FILEBROWSER_CACHECLEARFROMFULL;Esborra el cau - tot -FILEBROWSER_CACHECLEARFROMPARTIAL;Esborra el cau - part FILEBROWSER_CLEARPROFILE;Neteja FILEBROWSER_COPYPROFILE;Copia FILEBROWSER_CURRENT_NAME;Nom actual: @@ -493,9 +491,6 @@ PREFERENCES_APPLNEXTSTARTUP;Efectiu en reiniciar PREFERENCES_AUTOMONPROFILE;Usa els perfils dels monitors dels sist. operatius automàticament PREFERENCES_BATCH_PROCESSING;Process. per lots PREFERENCES_BEHAVIOR;Comportament -PREFERENCES_CACHECLEARALL;Esborrar tot -PREFERENCES_CACHECLEARPROFILES;Esborrar perfils -PREFERENCES_CACHECLEARTHUMBS;Esborra minifotos PREFERENCES_CACHEMAXENTRIES;Màxim nombre d'entrades a la mem. cau PREFERENCES_CACHEOPTS;Opcions memòria cau PREFERENCES_CACHETHUMBHEIGHT;Màxima alçada de minifoto @@ -503,7 +498,6 @@ PREFERENCES_CLIPPINGIND;Indicador de pèrdues PREFERENCES_CUSTPROFBUILD;Constructor de perfils de procés particulars PREFERENCES_CUSTPROFBUILDHINT;Nom del fitxer executable (o script) per a usar un nou perfil de procés en una imatge.\nRep paràmetres en línia d'ordres per a la generació de perfils basats en regles:\n[raw/JPG path] [path per omissió del perfil de procés] [número f] [expos. en segons] [long. focal en mm] [ISO] [objectiu] [càmera] PREFERENCES_CUSTPROFBUILDPATH;Executable path -PREFERENCES_CUTOVERLAYBRUSH;Cropa màscara color/transparència PREFERENCES_DARKFRAMEFOUND;Trobat PREFERENCES_DARKFRAMESHOTS;trets PREFERENCES_DARKFRAMETEMPLATES;plantilles @@ -518,7 +512,6 @@ PREFERENCES_DIRSOFTWARE;Instal·lació al directori PREFERENCES_EDITORLAYOUT;Sortida d'editor PREFERENCES_EXTERNALEDITOR;Editor extern PREFERENCES_FBROWSEROPTS;Opcions de navegador i minifotos -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barra de gestor de fitxers d'una línia (inapropiat en monitors de baixa resolució) PREFERENCES_FILEFORMAT;Format de fitxer PREFERENCES_FLATFIELDFOUND;Trobat PREFERENCES_FLATFIELDSDIR;Carpeta de camps plans @@ -566,9 +559,7 @@ PREFERENCES_PROFILESAVECACHE;Desa els paràmetres de procés a la memòria cau PREFERENCES_PROFILESAVEINPUT;Desa els paràm. de procés juntament amb la imatge PREFERENCES_PROPERTY;Propietat PREFERENCES_PSPATH;Directori d'instal. d'Adobe Photoshop -PREFERENCES_SELECTFONT;Selec. font PREFERENCES_SELECTLANG;Seleccionar idioma -PREFERENCES_SELECTTHEME;Seleccionar tema PREFERENCES_SET;Fixa PREFERENCES_SHOWBASICEXIF;Mostra principals dades Exif PREFERENCES_SHOWDATETIME;Indica data i hora @@ -667,7 +658,6 @@ TP_CROP_GUIDETYPE;Tipus de guia: TP_CROP_H;Alt TP_CROP_LABEL;Cropa TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Selecc. cropar TP_CROP_W;Ample TP_CROP_X;x TP_CROP_Y;y @@ -795,9 +785,6 @@ TP_LENSGEOM_AUTOCROP;Auto cropa TP_LENSGEOM_FILL;Auto omple TP_LENSGEOM_LABEL;Lent / Geometria TP_LENSPROFILE_LABEL;Perfil de correcció de lent -TP_LENSPROFILE_USECA;Usa correcció AC -TP_LENSPROFILE_USEDIST;Correcció de distorsió -TP_LENSPROFILE_USEVIGN;Correcció de vores fosques TP_NEUTRAL_TIP;Torna els controls d'exposició a valors neutrals TP_PERSPECTIVE_HORIZONTAL;Horitzontal TP_PERSPECTIVE_LABEL;Perspectiva @@ -953,12 +940,17 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -975,6 +967,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality. !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_POPUPCOLORLABEL0;Label: None !FILEBROWSER_POPUPCOLORLABEL1;Label: Red @@ -1008,6 +1002,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !GENERAL_ASIMAGE;As Image !GENERAL_AUTO;Automatic !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... @@ -1315,14 +1310,32 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1346,6 +1359,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1416,10 +1430,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !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. -!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_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 @@ -1433,8 +1443,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1453,6 +1463,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PARTIALPASTE_CHANNELMIXERBW;Black-and-white !PARTIALPASTE_COLORAPP;CIECAM02 !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control @@ -1473,18 +1484,29 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1504,6 +1526,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_D65;6500K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 @@ -1533,7 +1556,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1552,15 +1574,13 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1591,7 +1611,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1654,11 +1674,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1669,6 +1685,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1688,8 +1705,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1701,14 +1716,13 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1728,11 +1742,9 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1746,6 +1758,25 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1774,6 +1805,12 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1837,7 +1874,6 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts in the transitions between skin colors (hue, chroma, luma) and the rest of the image. !TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. !TP_EPD_GAMMA;Gamma -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_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. @@ -1894,6 +1930,15 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_LABCURVE_CURVEEDITOR_LH;LH !TP_LABCURVE_CURVEEDITOR_LH_TOOLTIP;Luminance according to hue L=f(H) !TP_LABCURVE_CURVEEDITOR_LL_TOOLTIP;Luminance according to luminance L=f(L) +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1923,10 +1968,10 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACK_0;Green 1 (lead) @@ -1950,6 +1995,8 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2001,10 +2048,10 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !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 -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2042,7 +2089,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2092,7 +2139,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 @@ -2258,6 +2305,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !TP_WAVELET_TON;Toning !TP_WBALANCE_EQBLUERED;Blue/Red equalizer !TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behavior of "white balance" by modulating the blue/red balance.\nThis can be useful when shooting conditions:\na) are far from the standard illuminant (e.g. underwater),\nb) are far from conditions where calibrations were performed,\nc) where the matrices or ICC profiles are unsuitable. +!TP_WBALANCE_PICKER;Pick !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_WATER1;UnderWater 1 diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 077da51c0..f0d50ec3e 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -95,8 +95,6 @@ FILEBROWSER_AUTODARKFRAME;自动暗场 FILEBROWSER_AUTOFLATFIELD;自动平场 FILEBROWSER_BROWSEPATHBUTTONHINT;点击浏览选择的路径 FILEBROWSER_CACHE;缓存 -FILEBROWSER_CACHECLEARFROMFULL;清空缓存 -FILEBROWSER_CACHECLEARFROMPARTIAL;清理缓存 FILEBROWSER_CLEARPROFILE;清空配置 FILEBROWSER_COPYPROFILE;复制配置 FILEBROWSER_CURRENT_NAME;当前名称: @@ -487,6 +485,7 @@ PARTIALPASTE_VIGNETTING;暗角修正 PARTIALPASTE_WAVELETGROUP;小波变换等级 PARTIALPASTE_WHITEBALANCE;白平衡 PREFERENCES_ADD;添加 +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;导航器引导颜色 PREFERENCES_APPLNEXTSTARTUP;下次启动生效 PREFERENCES_AUTOMONPROFILE;使用操作系统主显示器的色彩档案 PREFERENCES_BATCH_PROCESSING;批处理 @@ -494,16 +493,9 @@ PREFERENCES_BEHADDALL;全 '添加' PREFERENCES_BEHAVIOR;行为 PREFERENCES_BEHSETALL;全 '设定' PREFERENCES_BLACKBODY;钨丝灯 -PREFERENCES_CACHECLEARALL;全部清除 -PREFERENCES_CACHECLEARPROFILES;清除配置 -PREFERENCES_CACHECLEARTHUMBS;清除缩略图 PREFERENCES_CACHEMAXENTRIES;最大缓存数量 PREFERENCES_CACHEOPTS;缓存选项 PREFERENCES_CACHETHUMBHEIGHT;最大缩略图高度 -PREFERENCES_CIEART;CIECAM02 优化 -PREFERENCES_CIEART_FRAME;CIECAM02-特定选项 -PREFERENCES_CIEART_LABEL;使用单浮点精度而不是双精度 -PREFERENCES_CIEART_TOOLTIP;如果启用, CIECAM02 将使用单精度浮点计算, 结果是品质轻微下降, 速度则可以提高一些 PREFERENCES_CLIPPINGIND;高光溢出提示 PREFERENCES_CLUTSCACHE;HaldCLUT 缓存 PREFERENCES_CLUTSCACHE_LABEL;CLUTs 最大缓存数 @@ -519,7 +511,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Keys format PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;可执行文件路径 -PREFERENCES_CUTOVERLAYBRUSH;裁切遮罩色彩和透明度 PREFERENCES_D50;5000K PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -539,7 +530,6 @@ PREFERENCES_DIRSOFTWARE;软件安装路径 PREFERENCES_EDITORLAYOUT;编辑器布局 PREFERENCES_EXTERNALEDITOR;外部编辑器 PREFERENCES_FBROWSEROPTS;文件浏览选项 -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) PREFERENCES_FILEFORMAT;文件格式 PREFERENCES_FLATFIELDFOUND;找到 PREFERENCES_FLATFIELDSDIR;平场图像路径 @@ -596,7 +586,6 @@ PREFERENCES_MONPROFILE;默认色彩配置文件 PREFERENCES_MONPROFILE_WARNOSX;受MacOS限制, 仅支持sRGB PREFERENCES_MULTITAB;多编辑器标签模式 PREFERENCES_MULTITABDUALMON;多编辑器标签独立模式 -PREFERENCES_NAVGUIDEBRUSH;导航器引导颜色 PREFERENCES_NAVIGATIONFRAME;导航器 PREFERENCES_OUTDIR;输出路径 PREFERENCES_OUTDIRFOLDER;保存至文件夹 @@ -633,13 +622,10 @@ PREFERENCES_PRTPROFILE;色彩配置文件 PREFERENCES_PSPATH;Adobe Photoshop安装路径 PREFERENCES_REMEMBERZOOMPAN;记忆缩放和位置 PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -PREFERENCES_SELECTFONT;设置主要字体 -PREFERENCES_SELECTFONT_COLPICKER;设置色彩选择器字体 PREFERENCES_SELECTLANG;选择语言 -PREFERENCES_SELECTTHEME;选择主题 -PREFERENCES_SERIALIZE_TIFF_READ;Tiff 读取设定 -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;连续载入tiff文件 -PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;开启后可以提高在无压缩tiff图片文件夹中的缩略图生成速度 +PREFERENCES_SERIALIZE_TIFF_READ;TIFF 读取设定 +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;连续载入TIFF文件 +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;开启后可以提高在无压缩TIFF图片文件夹中的缩略图生成速度 PREFERENCES_SET;设置 PREFERENCES_SHOWBASICEXIF;显示基本Exif信息 PREFERENCES_SHOWDATETIME;显示时间日期 @@ -659,7 +645,6 @@ PREFERENCES_TAB_DYNAMICPROFILE;动态预设规则 PREFERENCES_TAB_GENERAL;一般 PREFERENCES_TAB_IMPROC;图片处理 PREFERENCES_TAB_SOUND;音效 -PREFERENCES_THEME;主题 PREFERENCES_TP_LABEL;工具栏 PREFERENCES_TP_VSCROLLBAR;隐藏垂直滚动栏 PREFERENCES_TUNNELMETADATA;无损复制 Exif/IPTC/XMP 到输出文件 @@ -776,7 +761,6 @@ TP_CROP_GUIDETYPE;辅助方式: TP_CROP_H;高 TP_CROP_LABEL;剪裁 TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;选择预设 TP_CROP_W;宽 TP_CROP_X;x TP_CROP_Y;y @@ -883,9 +867,6 @@ TP_LENSGEOM_AUTOCROP;自动剪切 TP_LENSGEOM_FILL;自动填充 TP_LENSGEOM_LABEL;镜头 / 几何 TP_LENSPROFILE_LABEL;镜头矫正档案 -TP_LENSPROFILE_USECA;色散矫正 -TP_LENSPROFILE_USEDIST;畸变矫正 -TP_LENSPROFILE_USEVIGN;暗角矫正 TP_PCVIGNETTE_FEATHER;羽化 TP_PCVIGNETTE_LABEL;暗角滤镜 TP_PCVIGNETTE_ROUNDNESS;圆度 @@ -999,7 +980,12 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !EDIT_OBJECT_TOOLTIP;Displays a widget on the preview window which lets you adjust this tool. !EDIT_PIPETTE_TOOLTIP;To add an adjustment point to the curve, hold the Ctrl key while left-clicking the desired spot in the image preview.\nTo adjust the point, hold the Ctrl key while left-clicking the corresponding area in the preview, then let go of Ctrl (unless you desire fine control) and while still holding the left mouse button move the mouse up or down to move that point up or down in the curve. !EXIFFILTER_IMAGETYPE;Image type @@ -1015,6 +1001,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality. !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_QUERYHINT;Type filenames to search for. Supports partial filenames. Separate the search terms using commas, e.g.\n1001,1004,1199\n\nExclude search terms by prefixing them with !=\ne.g.\n!=1001,1004,1199\n\nShortcuts:\nCtrl-f - focus the Find box,\nEnter - search,\nEsc - clear the Find box,\nShift-Esc - defocus the Find box. !FILEBROWSER_SHOWCOLORLABEL1HINT;Show images labeled Red.\nShortcut: Alt-1 @@ -1029,6 +1017,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Show unsaved images.\nShortcut: Alt-6 !FILEBROWSER_SHOWUNCOLORHINT;Show images without a color label.\nShortcut: Alt-0 !FILEBROWSER_UNRANK_TOOLTIP;Unrank.\nShortcut: Shift-0 +!GENERAL_CURRENT;Current !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider @@ -1392,14 +1381,32 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1423,6 +1430,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1492,10 +1500,6 @@ 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. -!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_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 @@ -1507,21 +1511,22 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !MAIN_MSG_WRITEFAILED;Failed to write\n"%1"\n\nMake sure that the folder exists and that you have write permission to it. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter @@ -1529,11 +1534,21 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !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. -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1541,9 +1556,10 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !PREFERENCES_CUSTPROFBUILDHINT;Executable (or script) file called when a new initial processing profile should be generated for an image.\n\nThe path of the communication file (*.ini style, a.k.a. "Keyfile") is added as a command line parameter. It contains various parameters required for the scripts and image Exif to allow a rules-based processing profile generation.\n\nWARNING: You are responsible for using double quotes where necessary if you're using paths containing spaces. !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show @@ -1583,7 +1599,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_TOOLTIP;Linear: will produce a normal linear response.\nSpecial effects: will produce special effects by mixing channels non-linearly. !TP_BWMIX_CC_ENABLED;Adjust complementary color @@ -1615,11 +1631,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1630,6 +1642,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1649,8 +1662,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1659,14 +1670,13 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORAPP_LABEL;CIE Color Appearance Model 2002 !TP_COLORAPP_LABEL_SCENE;Scene Conditions !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_EXDARK;Extremly Dark (Cutsheet) !TP_COLORAPP_SURROUND_TOOLTIP;Changes tones and colors to take into account the viewing conditions of the output device.\n\nAverage: Average light environment (standard). The image will not change.\n\nDim: Dim environment (TV). The image will become slighty dark.\n\nDark: Dark environment (projector). The image will become more dark.\n\nExtremly Dark: Extremly dark environment (cutsheet). The image will become very dark. @@ -1680,11 +1690,9 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1698,6 +1706,25 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1723,7 +1750,13 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_COLORTONING_TWOBY;Special a* and b* !TP_COLORTONING_TWOCOLOR_TOOLTIP;Standard chroma:\nLinear response, a* = b*.\n\nSpecial chroma:\nLinear response, a* = b*, but unbound - try under the diagonal.\n\nSpecial a* and b*:\nLinear response unbound with separate curves for a* and b*. Intended for special effects.\n\nSpecial chroma 2 colors:\nMore predictable. !TP_COLORTONING_TWOSTD;Standard chroma +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1786,7 +1819,6 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_EPD_EDGESTOPPING;Edge stopping !TP_EPD_GAMMA;Gamma !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. @@ -1865,6 +1897,15 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_LABCURVE_LCREDSK_TIP;If enabled, the LC Curve affects only red and skin-tones.\nIf disabled, it applies to all tones. !TP_LABCURVE_RSTPROTECTION;Red and skin-tones protection !TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1891,10 +1932,10 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACKS;Black Levels @@ -1925,6 +1966,8 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps @@ -1979,10 +2022,10 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !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* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2020,7 +2063,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2069,7 +2112,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2272,6 +2315,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !TP_WBALANCE_LAMP_HEADER;Lamp !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SOLUX47;Solux 4700K (vendor) !TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) !TP_WBALANCE_TEMPBIAS;AWB temperature bias diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 2b2477748..b6e4dedbc 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -239,9 +239,6 @@ PARTIALPASTE_SHARPENING;Sharpening PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_APPLNEXTSTARTUP;下次啟動生效 -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails PREFERENCES_CACHEMAXENTRIES;Maximal Number of Cache Entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height @@ -283,7 +280,6 @@ PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_SELECTLANG;選擇語言 -PREFERENCES_SELECTTHEME;Select theme PREFERENCES_SHOWBASICEXIF;顯示基本Exif資訊 PREFERENCES_SHOWDATETIME;顯示時間日期 PREFERENCES_SHTHRESHOLD;暗部不足闕值 @@ -343,7 +339,6 @@ TP_CROP_GTRULETHIRDS;1/3法則 TP_CROP_GUIDETYPE;輔助方式: TP_CROP_H;高 TP_CROP_LABEL;剪裁 -TP_CROP_SELECTCROP; 選擇預設 TP_CROP_W;寬 TP_CROP_X;x TP_CROP_Y;y @@ -437,9 +432,10 @@ TP_WBALANCE_TEMPERATURE;色溫 !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !CURVEEDITOR_HIGHLIGHTS;Highlights @@ -456,6 +452,10 @@ TP_WBALANCE_TEMPERATURE;色溫 !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -507,8 +507,8 @@ TP_WBALANCE_TEMPERATURE;色溫 !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -575,6 +575,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !GENERAL_ASIMAGE;As Image !GENERAL_AUTO;Automatic !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open @@ -977,14 +978,32 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1008,6 +1027,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1078,10 +1098,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !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. -!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_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 @@ -1114,17 +1130,17 @@ TP_WBALANCE_TEMPERATURE;色溫 !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1154,6 +1170,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1204,8 +1221,14 @@ TP_WBALANCE_TEMPERATURE;色溫 !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1213,12 +1236,17 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1234,7 +1262,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1246,8 +1273,8 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1293,7 +1320,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1316,15 +1342,13 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done @@ -1334,7 +1358,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1390,7 +1413,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1454,11 +1477,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1469,6 +1488,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1488,8 +1508,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1501,14 +1519,13 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1528,11 +1545,9 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1546,6 +1561,25 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1578,11 +1612,17 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1662,7 +1702,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. @@ -1791,10 +1830,16 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1832,11 +1877,11 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1869,6 +1914,8 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps @@ -1927,10 +1974,10 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RESIZE_FITBOX;Bounding Box !TP_RESIZE_FULLIMAGE;Full Image !TP_RESIZE_LANCZOS;Lanczos -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1968,7 +2015,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2031,7 +2078,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2244,6 +2291,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 18af7bf65..56900e28b 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -41,12 +41,14 @@ #40 2017-12-13 updated by mkyral #41 2018-03-03 updated by mkyral #42 2018-04-28 updated by mkyral +#43 2018-12-13 updated by mkyral ABOUT_TAB_BUILD;Verze ABOUT_TAB_CREDITS;Zásluhy ABOUT_TAB_LICENSE;Licence ABOUT_TAB_RELEASENOTES;Poznámky k vydání ABOUT_TAB_SPLASH;Úvodní obrazovka +ADJUSTER_RESET_TO_DEFAULT;Kliknutí - návrat k výchozí hodnotě.\nCtrl+kliknutí - návrat k počáteční hodnotě. BATCHQUEUE_AUTOSTART;Automatický start BATCHQUEUE_AUTOSTARTHINT;Automatické spuštění zpracování po vložení nové úlohy. BATCHQUEUE_DESTFILENAME;Cesta a název souboru @@ -55,10 +57,11 @@ BATCH_PROCESSING;Dávkové zpracování CURVEEDITOR_AXIS_IN;Vstup: CURVEEDITOR_AXIS_LEFT_TAN;LS: CURVEEDITOR_AXIS_OUT;Výstup: -CURVEEDITOR_AXIS_RIGHT_TAN;PS: +CURVEEDITOR_AXIS_RIGHT_TAN;RT: +CURVEEDITOR_CATMULLROM;Elastická CURVEEDITOR_CURVE;Křivka CURVEEDITOR_CURVES;Křivky -CURVEEDITOR_CUSTOM;Vlastní +CURVEEDITOR_CUSTOM;Běžná CURVEEDITOR_DARKS;Tmavé CURVEEDITOR_EDITPOINT_HINT;Povolit úpravu hodnoty vstupně výstupního uzlu.\n\nKliknutím pravým tlačítkem na uzel jej vyberete. \nKliknutím pravým tlačítkem do prázdného místa zrušíte výběr. CURVEEDITOR_HIGHLIGHTS;Světla @@ -82,6 +85,10 @@ DYNPROFILEEDITOR_DELETE;Smazat DYNPROFILEEDITOR_EDIT;Upravit DYNPROFILEEDITOR_EDIT_RULE;Upravit pravidlo dynamického profilu DYNPROFILEEDITOR_ENTRY_TOOLTIP;Porovnávání rozlišuje velikost písmen.\nPro vložení regulárního výrazu přidejte\nprefix "re:". +DYNPROFILEEDITOR_IMGTYPE_ANY;Jakýkoli +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +DYNPROFILEEDITOR_IMGTYPE_STD;Běžná DYNPROFILEEDITOR_MOVE_DOWN;Posunout dolů DYNPROFILEEDITOR_MOVE_UP;Posunout nahoru DYNPROFILEEDITOR_NEW;Nový @@ -154,8 +161,8 @@ FILEBROWSER_AUTOFLATFIELD;Auto Flat Field FILEBROWSER_BROWSEPATHBUTTONHINT;Klikněte pro výběr cesty. FILEBROWSER_BROWSEPATHHINT;Vložte cestu pro procházení.\n\nKlávesové zkratky:\nCtrl-o pro přepnutí do adresního řádku.\nEnter/ Ctrl-Enter pro procházení ;\nEsc pro zrušení změn.\nShift-Esc pro zrušení přepnutí.\n\nZkratky pro cesty:\n~\t- domácí složka uživatele.\n!\t- složka s obrázky uživatele. FILEBROWSER_CACHE;Mezipaměť -FILEBROWSER_CACHECLEARFROMFULL;Vymazat z mezipaměti - úplně -FILEBROWSER_CACHECLEARFROMPARTIAL;Vymazat z mezipaměti - částečně +FILEBROWSER_CACHECLEARFROMFULL;Smazat vše včetně profilů zpracování v mezipaměti +FILEBROWSER_CACHECLEARFROMPARTIAL;Smazat všechny profily mimo těch v mezipaměti FILEBROWSER_CLEARPROFILE;Smazat FILEBROWSER_COLORLABEL_TOOLTIP;Barevný štítek.\n\nPoužijte výběr ze seznamu nebo klávesové zkratky:\nShift-Ctrl-0 Bez barvy\nShift-Ctrl-1 Červený\nShift-Ctrl-2 Žlutý\nShift-Ctrl-3 Zelený\nShift-Ctrl-4 Modrý\nShift-Ctrl-5 Nachový FILEBROWSER_COPYPROFILE;Kopírovat @@ -244,7 +251,7 @@ FILEBROWSER_UNRANK_TOOLTIP;Zrušit hodnocení.\nZkratka: Shift - 0 FILEBROWSER_ZOOMINHINT;Zvětšit velikosti náhledů.\n\nZkratky:\n+ - režim více karet editoru,\nAlt-+ - režim jedné karty editoru. FILEBROWSER_ZOOMOUTHINT;Zmenšit velikosti náhledů.\n\nZkratky:\n- - režim více karet editoru,\nAlt-- - režim jedné karty editoru. FILECHOOSER_FILTER_ANY;Všechny soubory -FILECHOOSER_FILTER_COLPROF;Barevné profily +FILECHOOSER_FILTER_COLPROF;Barevné profily (*.icc) FILECHOOSER_FILTER_CURVE;Soubory křivek FILECHOOSER_FILTER_LCP;Korekční profily objektivu FILECHOOSER_FILTER_PP;Profily zpracování @@ -258,6 +265,7 @@ GENERAL_AUTO;Automaticky GENERAL_BEFORE;Před GENERAL_CANCEL;Zrušit GENERAL_CLOSE;Zavřít +GENERAL_CURRENT;Současný GENERAL_DISABLE;Vypnout GENERAL_DISABLED;Vypnuto GENERAL_ENABLE;Zapnout @@ -270,17 +278,19 @@ GENERAL_NONE;Nic GENERAL_OK;OK GENERAL_OPEN;Otevřít GENERAL_PORTRAIT;Na výšku +GENERAL_RESET;Obnovit GENERAL_SAVE;Uložit +GENERAL_SAVE_AS;Uložit jako... GENERAL_SLIDER;Posuvník GENERAL_UNCHANGED;(Beze změny) GENERAL_WARNING;Varování GIMP_PLUGIN_INFO;Vítejte v RawTherapee doplňku pro GIMP!\nPo dokončení úprav prostě zavřete hlavní okno RawTherapee a obrázek bude automaticky načten GIMPem. HISTOGRAM_TOOLTIP_B;Skrýt/Zobrazit histogram modré. -HISTOGRAM_TOOLTIP_BAR;Skrýt/Zobrazit řádek RGB indikátoru\nKlikněte pravým tlačítkem myši na náhled pro zmrazení/uvolnění. +HISTOGRAM_TOOLTIP_BAR;Zobrazit/Skrýt řádek RGB indikátoru. HISTOGRAM_TOOLTIP_CHRO;Skrýt/Zobrazit histogram barevnosti. -HISTOGRAM_TOOLTIP_FULL;Plný (zapnuto) nebo přiblížený (vypnuto) histogram. HISTOGRAM_TOOLTIP_G;Skrýt/Zobrazit histogram zelené. HISTOGRAM_TOOLTIP_L;Skrýt/Zobrazit CIELab histogram jasu. +HISTOGRAM_TOOLTIP_MODE;Přepíná mezi lineárním, log-lineárním a log-log škálováním histogramu. HISTOGRAM_TOOLTIP_R;Skrýt/Zobrazit histogram červené. HISTOGRAM_TOOLTIP_RAW;Skrýt/Zobrazit raw histogram. HISTORY_CHANGED;Změněno @@ -471,7 +481,7 @@ HISTORY_MSG_181;CAM02 - Chroma (C) HISTORY_MSG_182;CAM02 - Automatická CAT02 HISTORY_MSG_183;CAM02 - Kontrast (J) HISTORY_MSG_184;CAM02 - Okolí scény -HISTORY_MSG_185;CAM02 - Kontrola palety +HISTORY_MSG_185;CAM02 - Kontrola gamutu HISTORY_MSG_186;CAM02 - Algoritmus HISTORY_MSG_187;CAM02 - Ochrana červ. a pleť. tónů HISTORY_MSG_188;CAM02 - Světlost (Q) @@ -520,7 +530,9 @@ HISTORY_MSG_231;ČB - Křivka 'Před' HISTORY_MSG_232;ČB - Typ křivky 'Před' HISTORY_MSG_233;ČB - Křivka 'Po' HISTORY_MSG_234;ČB - Typ křivky 'Po' +HISTORY_MSG_235;ČB - MK - Auto HISTORY_MSG_236;--nepoužito-- +HISTORY_MSG_237;ČB - MK HISTORY_MSG_238;PF - Rozptyl HISTORY_MSG_239;PF - Síla HISTORY_MSG_240;PF - Střed @@ -556,6 +568,7 @@ HISTORY_MSG_269;Barevné tónování - Světla - červená HISTORY_MSG_270;Barevné tónování - Světla - zelená HISTORY_MSG_271;Barevné tónování - Světla - modrá HISTORY_MSG_272;Barevné tónování - Vyvážení +HISTORY_MSG_273;Barevné tónování - Vyvážení barev SMH HISTORY_MSG_274;Barevné tónování - Nasycení stínů HISTORY_MSG_275;Barevné tónování - Nasycení světel HISTORY_MSG_276;Barevné tónování - Neprůhlednost @@ -570,8 +583,8 @@ HISTORY_MSG_284;Barevné tónování - Aut. ochrana nasycení HISTORY_MSG_285;Redukce šumu - Medián - Metoda HISTORY_MSG_286;Redukce šumu - Medián - Typ HISTORY_MSG_287;Redukce šumu - Medián - Průchody -HISTORY_MSG_288;Flat-Field - kontrola oříznutí -HISTORY_MSG_289;Flat-Field - kontrola oříznutí - Auto +HISTORY_MSG_288;Flat Field - Kontrola oříznutí +HISTORY_MSG_289; Flat Field - Kontrola oříznutí - Aut HISTORY_MSG_290;Úroveň černé - Červená HISTORY_MSG_291;Úroveň černé - Zelená 1 HISTORY_MSG_292;Úroveň černé - Modrá @@ -596,15 +609,15 @@ HISTORY_MSG_310;Vlnka - Zůstatek - Zaměření a ochrana tónů oblohy HISTORY_MSG_311;Vlnka - Úrovně vlnky HISTORY_MSG_312;Vlnka - Zůstatek - Práh stínů HISTORY_MSG_313;Vlnka - Barevnost - Pastel./Sat. -HISTORY_MSG_314;Vlnka - Paleta - Omezení artefaktů +HISTORY_MSG_314;Vlnka - Gamut - Omezení artefaktů HISTORY_MSG_315;Vlnka - Zůstatek - Kontrast -HISTORY_MSG_316;Vlnka - Paleta - Ochrana a zaměření pleťových tónů -HISTORY_MSG_317;Vlnka - Paleta - Odstín pleti +HISTORY_MSG_316;Vlnka - Gamut - Ochrana a zaměření pleťových tónů +HISTORY_MSG_317;Vlnka - Gamut - Odstín pleti HISTORY_MSG_318;Vlnka - Kontrast - Úrovně světel HISTORY_MSG_319;Vlnka - Kontrast - - rozsah světel HISTORY_MSG_320;Vlnka - Kontrast - Rozsah stínů HISTORY_MSG_321;Vlnka - Kontrast - Úrovně stínů -HISTORY_MSG_322;Vlnka - Paleta - Zabránit posunu barev +HISTORY_MSG_322;Vlnka - Gamut - Zabránit posunu barev HISTORY_MSG_323;Vlnka - DH - Místní kontrast HISTORY_MSG_324;Vlnka - Barevnost - Pastelové HISTORY_MSG_325;Vlnka - Barevnost - Nasycení @@ -640,7 +653,7 @@ HISTORY_MSG_354;Vlnka - DH - Vylepšení HISTORY_MSG_355;Vlnka - DH - Minimální práh HISTORY_MSG_356;Vlnka - DH - Maximální práh HISTORY_MSG_357;Vlnka - Odšumění - Propojení s DH -HISTORY_MSG_358;Vlnka - Paleta - Kontrast úrovní barevnost +HISTORY_MSG_358;Vlnka - Gamut - Kontrast úrovní barevnost HISTORY_MSG_359;Vypálené/Mrtvé - Práh HISTORY_MSG_360;TM - Gama HISTORY_MSG_361;Vlnka - Dokončení - Vyvážení barev @@ -674,6 +687,7 @@ HISTORY_MSG_388;Vlnka - Zůstatek - VB střední: zelená HISTORY_MSG_389;Vlnka - Zůstatek - VB střední: modrá HISTORY_MSG_390;Vlnka - Zůstatek - VB stíny: zelená HISTORY_MSG_391;Vlnka - Zůstatek - VB stíny: modrá +HISTORY_MSG_392;Vlnka - Zůstatek - Vyvážení barev HISTORY_MSG_393;DCP - tabulka vzhledu HISTORY_MSG_394;DCP - základní expozice HISTORY_MSG_395;DCP - základní tabulka @@ -753,24 +767,105 @@ HISTORY_MSG_484;CAT02 - Automatická Yb scény HISTORY_MSG_485;Korekce objektivu HISTORY_MSG_486;Korekce objektivu - Fotoaparát HISTORY_MSG_487;Korekce objektivu - Objektiv +HISTORY_MSG_488;Komprese dynamického rozsahu +HISTORY_MSG_489;DRC - Detail +HISTORY_MSG_490;DRC - Míra HISTORY_MSG_491;Vyvážení bílé HISTORY_MSG_492;RGB křivky HISTORY_MSG_493;L*a*b* úpravy -HISTORY_MSG_CLAMPOOG;Oříznutí barvy mimo gamut +HISTORY_MSG_CLAMPOOG;Oříznout barvy mimo gamut HISTORY_MSG_COLORTONING_LABGRID_VALUE;Barevné tónování - Korekce barev -HISTORY_MSG_HISTMATCHING;Automaticky přizpůsobená Tónová křivka +HISTORY_MSG_COLORTONING_LABREGION_AB;Barevné tónování - Korekce barev +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;BT - Kanál +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;BT -oblast C masky +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;Barevné tónování - H maska +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;BT - Světlost +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;BT - L maska +HISTORY_MSG_COLORTONING_LABREGION_LIST;BT - +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;BT - oblast masky rozostření +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;BT - oblast posunu +HISTORY_MSG_COLORTONING_LABREGION_POWER;BT - oblast síly +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;BT- Nasycení +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;BT - oblast zobrazené masky +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;BT - oblast sklonu +HISTORY_MSG_DEHAZE_DEPTH;Závoj - Hloubka +HISTORY_MSG_DEHAZE_ENABLED;Odstranění závoje +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Závoj - Ukázat hloubkovou mapu +HISTORY_MSG_DEHAZE_STRENGTH;Závoj - Síla +HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dvojité demozajkování - automatický práh +HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dvojité demozajkování - Práh kontrastu +HISTORY_MSG_HISTMATCHING;Automaticky nalezená tónová křivka +HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Výstup - Základní barvy +HISTORY_MSG_ICM_OUTPUT_TEMP;Výstup - ICC-v4 světelný zdroj D +HISTORY_MSG_ICM_OUTPUT_TYPE;Výstup - Typ +HISTORY_MSG_ICM_WORKING_GAMMA;Pracovní - Gama +HISTORY_MSG_ICM_WORKING_SLOPE;Pracovní - sklon +HISTORY_MSG_ICM_WORKING_TRC_METHOD;Pracovní - Metoda TRC HISTORY_MSG_LOCALCONTRAST_AMOUNT;Místní kontrast - Míra HISTORY_MSG_LOCALCONTRAST_DARKNESS;Místní kontrast - Tmavé HISTORY_MSG_LOCALCONTRAST_ENABLED;Místní kontrast HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Místní kontrast - Světlé HISTORY_MSG_LOCALCONTRAST_RADIUS;Místní kontrast - Poloměr HISTORY_MSG_METADATA_MODE;Režim kopírování metadat +HISTORY_MSG_MICROCONTRAST_CONTRAST;Mikrokontrast - Práh kontrastu +HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Metoda demozajkování pohybu HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Směr filtru linkového rušení HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;Filtr PDAF linek +HISTORY_MSG_PRSHARPEN_CONTRAST;Doostření - Práh kontrastu +HISTORY_MSG_RAWCACORR_AUTOIT;Raw korekce CA - Iterace +HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw korekce CA - Zabránit posunu barev +HISTORY_MSG_RAW_BORDER;Okraj Raw +HISTORY_MSG_RESIZE_ALLOWUPSCALING;Změna rozměrů - Povolit zvětšení +HISTORY_MSG_SHARPENING_CONTRAST;Doostření - Práh kontrastu +HISTORY_MSG_SH_COLORSPACE;S/S - Barevný prostor +HISTORY_MSG_SOFTLIGHT_ENABLED;Měkké světlo +HISTORY_MSG_SOFTLIGHT_STRENGTH;Měkká světla - Síla +HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Kotva HISTORY_NEWSNAPSHOT;Přidat HISTORY_NEWSNAPSHOT_TOOLTIP;Zkratka: Alt-s HISTORY_SNAPSHOT;Snímek HISTORY_SNAPSHOTS;Snímky +ICCPROFCREATOR_COPYRIGHT;Autorská práva: +ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Vrátit se k původní deklaraci práv a majitele, nastaví "RawTherapee, CC0" +ICCPROFCREATOR_CUSTOM;Vlastní +ICCPROFCREATOR_DESCRIPTION;Popis: +ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Přidá hodnoty gamy a sklonu do popisu +ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Ponechte prázdné pro nastavení výchozího popisu. +ICCPROFCREATOR_GAMMA;Gama +ICCPROFCREATOR_ICCVERSION;Verze ICC: +ICCPROFCREATOR_ILL;Osvětlení: +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;Výchozí +ICCPROFCREATOR_ILL_INC;StdA 2856K +ICCPROFCREATOR_ILL_TOOLTIP;Světelný zdroj může být nastaven pouze u ICC v4 profilů. +ICCPROFCREATOR_PRIMARIES;Základní barvy: +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;Modrá X +ICCPROFCREATOR_PRIM_BLUY;Modrá Y +ICCPROFCREATOR_PRIM_BRUCE;BruceRGB +ICCPROFCREATOR_PRIM_GREX;Zelená X +ICCPROFCREATOR_PRIM_GREY;Zelená Y +ICCPROFCREATOR_PRIM_PROPH;Prophoto +ICCPROFCREATOR_PRIM_REC2020;Rec2020 +ICCPROFCREATOR_PRIM_REDX;Červená X +ICCPROFCREATOR_PRIM_REDY;Červená Y +ICCPROFCREATOR_PRIM_SRGB;sRGB +ICCPROFCREATOR_PRIM_TOOLTIP;Vlastní základní barvy lze nastavit pouze u ICC v4 profilu. +ICCPROFCREATOR_PRIM_WIDEG;Široký gamut +ICCPROFCREATOR_PROF_V2;ICC v2 +ICCPROFCREATOR_PROF_V4;ICC v4 +ICCPROFCREATOR_SAVEDIALOG_TITLE;Uložit ICC profil jako... +ICCPROFCREATOR_SLOPE;Sklon +ICCPROFCREATOR_TRC_PRESET;Tónová křivka odezvy: IPTCPANEL_CATEGORY;Kategorie IPTCPANEL_CATEGORYHINT;Identifikuje předmět obrázku dle názoru dodavatele. IPTCPANEL_CITY;Město @@ -813,17 +908,14 @@ IPTCPANEL_TITLE;Titulek IPTCPANEL_TITLEHINT;Vložte krátké, popisné a lidsky čitelné jméno obrázku. Například název souboru. IPTCPANEL_TRANSREFERENCE;Číslo úlohy IPTCPANEL_TRANSREFERENCEHINT;Zadejte číslo nebo identifikátor potřebný v pracovním postupu nebo pro sledování. -LENSPROFILE_CORRECTION_AUTOMATCH;Automatický dohledané korekční parametry -LENSPROFILE_CORRECTION_LCPFILE;LCP Soubor -LENSPROFILE_CORRECTION_MANUAL;Ruční korekční parametry -LENSPROFILE_LENS_WARNING;Varování: crop factor použitý pro profilování objektivu je větší než crop factor fotoaparátu. Výsledek může být nesprávný. MAIN_BUTTON_FULLSCREEN;Celá obrazovka +MAIN_BUTTON_ICCPROFCREATOR;Nástroj pro vytváření ICC profilu MAIN_BUTTON_NAVNEXT_TOOLTIP;Přejít k dalšímu obrázku relativnímu k obrázku otevřenému v editoru.\nZkratka: Shift-F4\n\nPřejít k dalšímu obrázku relativnímu k vybranému náhledu v prohlížeči souborů nebo na filmovém pásu:\nZkratka: F4 MAIN_BUTTON_NAVPREV_TOOLTIP;Přejít k předchozímu obrázku relativnímu k obrázku otevřenému v editoru.\nZkratka: Shift-F3\n\nPřejít k předchozímu obrázku relativnímu k vybranému náhledu v prohlížeči souborů nebo na filmovém pásu:\nZkratka: F3 MAIN_BUTTON_NAVSYNC_TOOLTIP;Synchronizovat prohlížeč souborů s editorem pro zobrazení náhledu aktuálně otevřeného obrázku a smazání filtrů v prohlížeči souborů.\nZkratka: x\n\nStejně jako výše, ale bez smazání filtrů v prohlížeči souborů:\nZkratka: y\n(Náhled otevřeného obrázku nebude zobrazen pokud je filtrován). MAIN_BUTTON_PREFERENCES;Volby MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Vložit současný obrázek do fronty zpracování.\nZkratka: Ctrl+b -MAIN_BUTTON_SAVE_TOOLTIP;Uložit současný obrázek.\nZkratka: Ctrl+s +MAIN_BUTTON_SAVE_TOOLTIP;Uloží aktuální obrázek.\nZkratka: Ctrl+s\nUloží současný profil (.pp3).\nZkratka: Ctrl+Shift+s MAIN_BUTTON_SENDTOEDITOR;Upravit obrázek v externím editoru MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Editovat současný obrázek v externím editoru.\nZkratka: Ctrl+e MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Zobrazit/skrýt všechny postranní panely.\nZkratka: m @@ -872,19 +964,20 @@ MAIN_TAB_RAW;Raw MAIN_TAB_RAW_TOOLTIP;Zkratka: Alt-r MAIN_TAB_TRANSFORM;Transformace MAIN_TAB_TRANSFORM_TOOLTIP;Zkratka: Alt-t -MAIN_TOOLTIP_BACKCOLOR0;Barva pozadí náhledu: Dle motivu\nZkratka: 9 -MAIN_TOOLTIP_BACKCOLOR1;Barva pozadí náhledu: Černá\nZkratka: 9 -MAIN_TOOLTIP_BACKCOLOR2;Barva pozadí náhledu: Bílá\nZkratka: 9 -MAIN_TOOLTIP_BACKCOLOR3;Barva pozadí náhledu: Středně šedá\nZkratka: 9 +MAIN_TOOLTIP_BACKCOLOR0;Barva pozadí náhledu: dle motivu\nZkratka: 9 +MAIN_TOOLTIP_BACKCOLOR1;Barva pozadí náhledu: černá\nZkratka: 9 +MAIN_TOOLTIP_BACKCOLOR2;Barva pozadí náhledu: bílá\nZkratka: 9 +MAIN_TOOLTIP_BACKCOLOR3;Barva pozadí náhledu: středně šedá\nZkratka: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Zamknout / Odemknout pohled Před\n\nZamknout: ponechá pohled Před nezměněn.\nUžitečné pro posouzení výsledného efektu po použití více nástrojů.\nNavíc může být porovnání provedeno proti kterémukoli stavu v historii.\n\nOdemknout: pohled Před bude následovat pohled Poté, vždy jen o jeden krok zpět, představí vliv právě použitého nástroje. MAIN_TOOLTIP_HIDEHP;Zobrazit či schovat levý panel (obsahující historii).\nZkratka: l MAIN_TOOLTIP_INDCLIPPEDH;Zvýraznit oříznutá světla.\nZkratka: < MAIN_TOOLTIP_INDCLIPPEDS;Zvýraznit oříznuté stíny.\nZkratka: > MAIN_TOOLTIP_PREVIEWB;Náhled modrého kanálu.\nZkratka: b -MAIN_TOOLTIP_PREVIEWFOCUSMASK;Náhled Masky zaostření.\nZkratka: Shift-f\n\nVíce přesné u snímků s nízkou hloubkou ostrosti, nízkým šumem a na vyšších úrovních zvětšení.\n\nPro zlepšení přesnosti detekce u zašuměných snímků použijte menší zvětšení, mezi 10 až 30%. +MAIN_TOOLTIP_PREVIEWFOCUSMASK;Náhled masky zaostření.\nZkratka: Shift-f\n\nVíce přesné u snímků s nízkou hloubkou ostrosti, nízkým šumem a na vyšších úrovních zvětšení.\n\nPoužijte přiblížení v rozsahu 10 až 30% pro zlepšení přesnosti detekce u zašuměných snímků. MAIN_TOOLTIP_PREVIEWG;Náhled zeleného kanálu.\nZkratka: g -MAIN_TOOLTIP_PREVIEWL;Náhled Svítivost.\nZkratka: v\n\n0.299*R + 0.587*G + 0.114*B +MAIN_TOOLTIP_PREVIEWL;Náhled svítivost.\nZkratka: v\n\n0.299*R + 0.587*G + 0.114*B MAIN_TOOLTIP_PREVIEWR;Náhled červeného kanálu.\nZkratka: r +MAIN_TOOLTIP_PREVIEWSHARPMASK;Náhled masky kontrastu doostření.\nZkratka: p\n\nFunguje pouze pokud doostření zapnuto a přiblížení je >=100%. MAIN_TOOLTIP_QINFO;Stručné informace o obrázku.\nZkratka: i MAIN_TOOLTIP_SHOWHIDELP1;Zobrazit/skrýt levý panel.\nZkratka: l MAIN_TOOLTIP_SHOWHIDERP1;Zobrazit/skrýt pravý panel.\nZkratka: Alt-l @@ -922,6 +1015,7 @@ PARTIALPASTE_CROP;Ořez PARTIALPASTE_DARKFRAMEAUTOSELECT;Automatický výběr tmavých snímků PARTIALPASTE_DARKFRAMEFILE;Soubor tmavého snímku PARTIALPASTE_DEFRINGE;Odstranění lemu +PARTIALPASTE_DEHAZE;Odstranění závoje PARTIALPASTE_DETAILGROUP;Nastavení detailů PARTIALPASTE_DIALOGLABEL;Částečné vložení profilu zpracování PARTIALPASTE_DIRPYRDENOISE;Redukce šumu @@ -955,13 +1049,16 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Filtr mrtvých pixelů PARTIALPASTE_PREPROCESS_GREENEQUIL;Vyrovnání zelené PARTIALPASTE_PREPROCESS_HOTPIXFILT;Filtr vypálených pixelů PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtrovat linkové rušení +PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;Filtr PDAF linek PARTIALPASTE_PRSHARPENING;Doostření po změně velikosti PARTIALPASTE_RAWCACORR_AUTO;Automatická korekce CA +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA zabránit posunu barev PARTIALPASTE_RAWCACORR_CAREDBLUE;CA červená a modrá PARTIALPASTE_RAWEXPOS_BLACK;Úrovně černé PARTIALPASTE_RAWEXPOS_LINEAR;Korekce bílého bodu PARTIALPASTE_RAWEXPOS_PRESER;Zachování světel PARTIALPASTE_RAWGROUP;Nastavení Raw +PARTIALPASTE_RAW_BORDER;Okraj Raw PARTIALPASTE_RAW_DCBENHANCE;Vylepšení DCB PARTIALPASTE_RAW_DCBITERATIONS;Průchody DCB PARTIALPASTE_RAW_DMETHOD;Metoda demozajkování @@ -977,13 +1074,21 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Stíny/Světla PARTIALPASTE_SHARPENEDGE;Hrany PARTIALPASTE_SHARPENING;Doostření (USM/RL) PARTIALPASTE_SHARPENMICRO;Mikrokontrast +PARTIALPASTE_SOFTLIGHT;Měkké světlo +PARTIALPASTE_TM_FATTAL;Komprese dynamického rozsahu PARTIALPASTE_VIBRANCE;Živost PARTIALPASTE_VIGNETTING;Korekce vinětace PARTIALPASTE_WHITEBALANCE;Nastavení bílé PREFERENCES_ADD;Přidat +PREFERENCES_APPEARANCE;Vzhled +PREFERENCES_APPEARANCE_COLORPICKERFONT;Písmo Průzkumníka barev +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Barva masky ořezu +PREFERENCES_APPEARANCE_MAINFONT;Hlavní písmo +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Barva vodítek navigátoru +PREFERENCES_APPEARANCE_THEME;Motiv PREFERENCES_APPLNEXTSTARTUP;vyžaduje restart aplikace PREFERENCES_AUTOMONPROFILE;Použít barevný profil hlavního monitoru z operačního systému -PREFERENCES_AUTOSAVE_TP_OPEN;Před ukončením automaticky uložit\nstav sbalení/rozbalení nástrojů. +PREFERENCES_AUTOSAVE_TP_OPEN;Uložit stav sbalení/rozbalení nástrojů při ukončení PREFERENCES_BATCH_PROCESSING;Dávkové zpracování PREFERENCES_BEHADDALL;Vše do 'Přidat' PREFERENCES_BEHADDALLHINT;Nastaví všechny parametry do módu Přidat.\nZměna parametrů v panelu dávkového zpracování se aplikuje jako rozdíl k uloženým hodnotám. @@ -991,9 +1096,11 @@ PREFERENCES_BEHAVIOR;Režim PREFERENCES_BEHSETALL;Vše do 'Nastavit' PREFERENCES_BEHSETALLHINT;Nastaví všechny parametry do módu Nastavit.\nZměna parametrů v panelu dávkového zpracování se aplikuje jako absolutní, budou zobrazeny aktuální hodnoty. PREFERENCES_BLACKBODY;Wolfram -PREFERENCES_CACHECLEARALL;Vymazat vše -PREFERENCES_CACHECLEARPROFILES;Smazat profily zpracování -PREFERENCES_CACHECLEARTHUMBS;Vymazat náhledy +PREFERENCES_CACHECLEAR;Smazat +PREFERENCES_CACHECLEAR_ALL;Smazat z mezipaměti všechny soubory : +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Smazat z mezipaměti všechny soubory mimo profilů zpracování: +PREFERENCES_CACHECLEAR_ONLYPROFILES;Smazat z mezipaměti pouze profily zpracování: +PREFERENCES_CACHECLEAR_SAFETY;Jsou smazány pouze soubory ve vyrovnávací paměti. Profily zpracování uložené u zdrojových obrázků zůstávají nedotčeny. PREFERENCES_CACHEMAXENTRIES;Maximální počet záznamů v mezipaměti PREFERENCES_CACHEOPTS;Vlastnosti mezipaměti PREFERENCES_CACHETHUMBHEIGHT;Maximální výška náhledu @@ -1003,7 +1110,7 @@ PREFERENCES_CLUTSCACHE_LABEL;Maximální počet přednačtených CLUTů PREFERENCES_CLUTSDIR;Složka HaldCLUT PREFERENCES_CMMBPC;Kompenzace černého bodu PREFERENCES_CROP;Úprava ořezu -PREFERENCES_CROP_AUTO_FIT;Automaticky přizpůsobit přiblížení oblasti ořezu +PREFERENCES_CROP_AUTO_FIT;Automaticky přizpůsobit přiblížení ořezu PREFERENCES_CROP_GUIDES;Zobrazovat vodítka i když neprobíhá ořez PREFERENCES_CROP_GUIDES_FRAME;Snímek PREFERENCES_CROP_GUIDES_FULL;Originál @@ -1019,7 +1126,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Formát klíče PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Jméno PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Cesta k programu -PREFERENCES_CUTOVERLAYBRUSH;Barva masky ořezu/průhlednosti PREFERENCES_D50;Nastavení v hlavní nabídce PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -1041,7 +1147,7 @@ PREFERENCES_EDITORCMDLINE;Vlastní příkazová řádka PREFERENCES_EDITORLAYOUT;Rozvržení editoru PREFERENCES_EXTERNALEDITOR;Externí editor PREFERENCES_FBROWSEROPTS;Volby prohlížeče souborů / náhledů -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Jednořádková lišta nástrojů v prohlížeči souborů\n(vypněte na nízkých rozlišeních) +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Kompaktní nástroje v Prohlížeči souborů PREFERENCES_FILEFORMAT;Formát souboru PREFERENCES_FLATFIELDFOUND;Nalezeno PREFERENCES_FLATFIELDSDIR;Složka Flat Field souborů @@ -1098,7 +1204,6 @@ PREFERENCES_MONPROFILE;Výchozí barevný profil PREFERENCES_MONPROFILE_WARNOSX;Na MacOS je podporováno pouze sRGB. PREFERENCES_MULTITAB;Mód více karet editoru PREFERENCES_MULTITABDUALMON;Mód více karet editoru ve vlastním okně -PREFERENCES_NAVGUIDEBRUSH;Barva vodítek navigátoru PREFERENCES_NAVIGATIONFRAME;Navigátor PREFERENCES_OUTDIR;Výstupní složka PREFERENCES_OUTDIRFOLDER;Ulož do souboru @@ -1115,6 +1220,8 @@ PREFERENCES_PARSEDEXTADDHINT;Vymazat označenou příponu ze seznamu. PREFERENCES_PARSEDEXTDELHINT;Vymazat označenou příponu ze seznamu. PREFERENCES_PARSEDEXTDOWNHINT;Vybranou příponu posunout na seznamu níže. PREFERENCES_PARSEDEXTUPHINT;Vybranou příponu posunout na seznamu výše. +PREFERENCES_PERFORMANCE_THREADS;Vlákna +PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximální počet vláken pro Redukci šumu a Úrovně vlnky (0 = Automaticky) PREFERENCES_PREVDEMO;Metoda demozajkování náhledu PREFERENCES_PREVDEMO_FAST;Rychlá PREFERENCES_PREVDEMO_LABEL;Metoda demozajkování pro náhled při přiblížení menším než 100%: @@ -1135,19 +1242,16 @@ PREFERENCES_PRTPROFILE;Barevný profil PREFERENCES_PSPATH;Instalační složka Adobe Photoshop PREFERENCES_REMEMBERZOOMPAN;Zapamatovat si procento přiblížení a posun obrázku PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Zapamatovat si procento přiblížení a posun aktuálního obrázku a použít tyto hodnoty při otevírání nového obrázku.\n\nTato volba funguje pouze v režimu "Mód jedné karty editoru" a volba "Metoda demozajkování pro náhled při přiblížení menším než 100%" je nastavena na "Stejně jako v PP3". -PREFERENCES_SAVE_TP_OPEN_NOW;Uložit stav sbalení/rozbalení nástrojů hned -PREFERENCES_SELECTFONT;Vyberte hlavní písmo -PREFERENCES_SELECTFONT_COLPICKER;Vybrat písmo pro Průzkumníka barev +PREFERENCES_SAVE_TP_OPEN_NOW;Uložit současný stav sbalení/rozbalení nástrojů PREFERENCES_SELECTLANG;Volba jazyka -PREFERENCES_SELECTTHEME;Zvolit vzhled -PREFERENCES_SERIALIZE_TIFF_READ;Nastavení čtení Tiff -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serializovat čtení tiff souborů -PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Povolení této volby může zvýšit výkon generování náhledů ve složkách obsahujících mnoho nezkomprimovaných tiff souborů. +PREFERENCES_SERIALIZE_TIFF_READ;Nastavení čtení TIFF +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serializovat čtení TIFF souborů +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Povolení této volby může zvýšit výkon generování náhledů ve složkách obsahujících mnoho nezkomprimovaných TIFF souborů. PREFERENCES_SET;Nastavit PREFERENCES_SHOWBASICEXIF;Zobrazovat základní Exif informace PREFERENCES_SHOWDATETIME;Zobrazovat datum a čas PREFERENCES_SHOWEXPOSURECOMPENSATION;Přidat kompenzaci expozice -PREFERENCES_SHOWFILMSTRIPTOOLBAR;Zobrazit lištu s filmovým pásem +PREFERENCES_SHOWFILMSTRIPTOOLBAR;Lišta s filmovým pásem PREFERENCES_SHTHRESHOLD;Práh oříznutých stínů PREFERENCES_SINGLETAB;Mód jedné karty editoru PREFERENCES_SINGLETABVERTAB;Mód jedné karty editoru, svislé karty @@ -1161,11 +1265,11 @@ PREFERENCES_TAB_COLORMGR;Správa barev PREFERENCES_TAB_DYNAMICPROFILE;Pravidla dynamických profilů PREFERENCES_TAB_GENERAL;Obecné PREFERENCES_TAB_IMPROC;Zpracování obrázku +PREFERENCES_TAB_PERFORMANCE;Výkon PREFERENCES_TAB_SOUND;Zvuky -PREFERENCES_THEME;Vzhled -PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Vložený JPEG náhled -PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Obrázek k zobrazení -PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutrální vykreslení raw +PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Náhled vloženého JPEG +PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Obrázek pro zobrazení +PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutrální vykreslení RAW PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Vložený JPEG náhled pokud je v plné velikosti, jinak neutrální raw PREFERENCES_TP_LABEL;Panel nástrojů: PREFERENCES_TP_VSCROLLBAR;Skrýt svislou posuvnou lištu @@ -1212,13 +1316,16 @@ QINFO_ISO;ISO QINFO_NOEXIF;Exif údaje nejsou k dispozici. QINFO_PIXELSHIFT;Pixel Shift / %2 snímků SAMPLEFORMAT_0;Neznámý datový formát -SAMPLEFORMAT_1;Neznaménkový, 8 bitů -SAMPLEFORMAT_2;Neznaménkový, 16 bitů -SAMPLEFORMAT_4;LogLuv, 24 bitů -SAMPLEFORMAT_8;LogLuv, 32 bitů -SAMPLEFORMAT_16;S pohyblivou čárkou, 32 bitů +SAMPLEFORMAT_1;8-bitový neznaménkový +SAMPLEFORMAT_2;16-bitový neznaménkový +SAMPLEFORMAT_4;24-bitový LogLuv +SAMPLEFORMAT_8;32-bitový LogLuv +SAMPLEFORMAT_16;S pohyblivou čárkou, 16 bitů +SAMPLEFORMAT_32;S pohyblivou čárkou, 24 bitů +SAMPLEFORMAT_64;S pohyblivou čárkou, 32 bitů SAVEDLG_AUTOSUFFIX;Automaticky přidat příponu pokud soubor již existuje SAVEDLG_FILEFORMAT;Formát souboru +SAVEDLG_FILEFORMAT_FLOAT;S pohyblivou čárkou SAVEDLG_FORCEFORMATOPTS;Vynutit volby uložení SAVEDLG_JPEGQUAL;Kvalita JPEG SAVEDLG_PUTTOQUEUE;Vložit soubor do fronty @@ -1243,8 +1350,8 @@ THRESHOLDSELECTOR_HINT;Držte klávesu Shift pro přesun individuálních THRESHOLDSELECTOR_T;Nahoře THRESHOLDSELECTOR_TL;Nahoře vlevo THRESHOLDSELECTOR_TR;Nahoře vpravo -TOOLBAR_TOOLTIP_COLORPICKER;Uzamykatelný Průzkumník barev\n\nPokud je povolen:\nPřidáte průzkumníka barev kliknutím levým tlačítkem myši do náhledu\nPodržením levého tlačítka myši a tažením průzkumníka přesunete\nPokud na průzkumníka kliknete pravým tlačítkem, dojde k jeho smazání\nSmazání všech průzkumníků po stisknutí klávesy Shift a pravého tlačítka myši\nKliknutím pravým tlačítkem kdekoli mimo průzkumníka přepne zpět na nástroj posunu -TOOLBAR_TOOLTIP_CROP;Oříznutí výběru.\nZkratka: c\nOblast výřezu posunete pomocí Shift + tažení myši +TOOLBAR_TOOLTIP_COLORPICKER;Uzamykatelný Průzkumník barev\n\nPokud je nástroj aktivní:\n- Přidání sondy: levý-klik.\n- Posunutí sondy: levý-klik a posunutí.\n- Smazání sondy: pravý-klik.\n- Smazání všech sond: shift+pravý-klik.\n- Návrat k nástroji posunu: pravý-klik. +TOOLBAR_TOOLTIP_CROP;Oříznutí výběru.\nZkratka: c\nVýřez posunete pomocí Shift + tažení myši TOOLBAR_TOOLTIP_HAND;Posun.\nZkratka: h TOOLBAR_TOOLTIP_STRAIGHTEN;Vyznačení roviny / rotace.\nZkratka: s\n\nZobrazení míry rotace pomocí vodící linky na náhledu snímky. Úhel rotace je zobrazen vedle vodící linky. Střed rotace je geometrický střed snímku. TOOLBAR_TOOLTIP_WB;Bodové vyvážení bílé.\nZkratka: w @@ -1279,6 +1386,8 @@ TP_BWMIX_MET;Metoda TP_BWMIX_MET_CHANMIX;Míchání kanálů TP_BWMIX_MET_DESAT;Odbarvení TP_BWMIX_MET_LUMEQUAL;Korekce jasu +TP_BWMIX_MIXC;Míchání kanálů +TP_BWMIX_NEUTRAL;Obnovit TP_BWMIX_RGBLABEL;R: %1%% G: %2%% B: %3%% Celkem: %4%% TP_BWMIX_RGBLABEL_HINT;Výsledné RGB faktory po započtení všech mixérů\n"Celkem" zobrazí součet aktuálně aplikovaných RGB hodnot:\n- vždy 100% v relativním režimu\n- více (světlejší) nebo méně (tmavší) než 100% v absolutním režimu. TP_BWMIX_RGB_TOOLTIP;Mísení RGB kanálů. Jako vodítko můžete použít uložená přednastavení.\nPovšimněte si prosím, že záporné hodnoty mohou vést ke vzniku artefaktů nebo chybnému chování. @@ -1320,11 +1429,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Překlopit horizontálně. TP_COARSETRAF_TOOLTIP_ROTLEFT;Otočit doleva.\n\nZkratky:\n[ - režim více karet editoru,\nAlt-[- režim jedné karty editoru. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Otočit doprava.\n\nZkratky:\n] - režim více karet editoru,\nAlt-]- režim jedné karty editoru. TP_COARSETRAF_TOOLTIP_VFLIP;Překlopit vertikálně. -TP_COLORAPP_ADAPTSCENE;Absolutní jas scény -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolutní jas scény prostředí (cd/m²).\n 1) Vypočítáno z Exifu:\nRychlost závěrky - citlivost - clona - expoziční korekce fotoaparátu.\n 2) Vypočítáno z hodnoty raw bílého bodu a expoziční kompenzace Rawtherapee. -TP_COLORAPP_ADAPTVIEWING;Absolutní jas prohlížení (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolutní jas prostředí prohlížení\n(obvykle 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Pokud je povoleno (doporučeno), RawTherapee vypočítá optimální hodnotu z Exif dat.\nPokud si přejete zadat hodnotu ručně, nejprve zrušte zatržení tohoto pole. +TP_COLORAPP_ABSOLUTELUMINANCE;Absolutní jas TP_COLORAPP_ALGO;Algoritmus TP_COLORAPP_ALGO_ALL;Vše TP_COLORAPP_ALGO_JC;Světlost + Barevnost (JC) @@ -1335,8 +1440,9 @@ TP_COLORAPP_BADPIXSL;Filtr vypálených/mrtvých pixelů TP_COLORAPP_BADPIXSL_TOOLTIP;Potlačení vypálených/mrtvých (jasně zabarvených) pixelů.\n0 = Bez efektu\n1 = Medián\n2 = Gaussův.\nPopřípadě obrázek upravte tak, aby jste se vyhnuli velmi tmavým stínům.\n\nTyto artefakty vznikají díky omezením CIECAM02. TP_COLORAPP_BRIGHT;Jas (O) TP_COLORAPP_BRIGHT_TOOLTIP;Jas v CIECAM02 bere v potaz svítivost bílé a rozdíly jasů mezi L*a*b* a RGB. +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;U ručního nastavení jsou doporučeny hodnoty nad 65. TP_COLORAPP_CHROMA;Barevnost (C) -TP_COLORAPP_CHROMA_M;Barevnost (M) +TP_COLORAPP_CHROMA_M;Pestrobarevnost (M) TP_COLORAPP_CHROMA_M_TOOLTIP;Pestrobarevnost se v CIECAM02 liší od pestrobarevnosti L*a*b* a RGB. TP_COLORAPP_CHROMA_S;Nasycení (S) TP_COLORAPP_CHROMA_S_TOOLTIP;Nasycení se v CIECAM02 liší od nasycení L*a*b* a RGB. @@ -1354,11 +1460,9 @@ TP_COLORAPP_CURVEEDITOR3;Barevná křivka TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Upravte barevnost, nasycení nebo pestrobarevnost.\n\nZobrazí histogram barevnosti (L*a*b*) před CIECAM02.\nPokud je volba "Zobrazit CIECAM02 histogramy výstupu v křivkách" povolena, zobrazí histogram C, S nebo M po CIECAM02 .\n\nC, S a M histogramy nejsou na hlavním panelu zobrazeny.\nHistogram konečného výsledku je zobrazen na hlavním panelu. TP_COLORAPP_DATACIE;CIECAM02 histogramy výstupu v křivkách TP_COLORAPP_DATACIE_TOOLTIP;Pokud je povoleno, zobrazuje histogram v CIECAM02 křivkách přibližné hodnoty/rozsahy po CIECAM02 úpravách J nebo Q, a C, S nebo M.\nVýběr neovlivňuje histogram na hlavním panelu.\n\nPokud je zakázáno, zobrazuje histogram v CIECAM02 křivkách L*a*b* hodnoty před CIECAM02 úpravami. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Pokud je povoleno (doporučeno), RawTherapee vypočítá optimální hodnotu, jenž následně používá jak CAT02 tak i celý CIECAM02.\nZakažte, pokud si přejete zadat hodnotu ručně (doporučeny jsou hodnoty nad 65). -TP_COLORAPP_DEGREE_TOOLTIP;Míra CIE Chromatic Adaptation Transform 2002. TP_COLORAPP_FREE;Volná teplota + zelená + CAT02 + [výstup] -TP_COLORAPP_GAMUT;Kontrola palety (L*a*b*) -TP_COLORAPP_GAMUT_TOOLTIP;Povolí kontrolu palety v L*a*b* režimu. +TP_COLORAPP_GAMUT;Kontrola gamutu (L*a*b*) +TP_COLORAPP_GAMUT_TOOLTIP;Povolí kontrolu gamutu v L*a*b* režimu. TP_COLORAPP_HUE;Odstín (h) TP_COLORAPP_HUE_TOOLTIP;Odstín (h) - úhel mezi 0° a 360°. TP_COLORAPP_LABEL;CIE model přizpůsobení barev 2002 @@ -1367,14 +1471,13 @@ TP_COLORAPP_LABEL_SCENE;Podmínky scény TP_COLORAPP_LABEL_VIEWING;Podmínky zobrazení TP_COLORAPP_LIGHT;Světlost (I) TP_COLORAPP_LIGHT_TOOLTIP;Světlost v CIECAM02 se liší od světlosti v L*a*b* a RGB. +TP_COLORAPP_MEANLUMINANCE;Střední jas (Yb%) TP_COLORAPP_MODEL;VB - Model TP_COLORAPP_MODEL_TOOLTIP;Model bílého bodu.\n\nWB [RT] + [výstup]: Pro scénu je použito vyvážení bílé RawTherapee , CIECAM02 je nastaven na D50 a vyvážení bílé výstupního zařízení je nastaveno v Podmínkách prohlížení.\n\nWB [RT+CAT02] + [výstup]: CAT02 používá RawTherapee nastavení vyvážení bílé a vyvážení bílé výstupního zařízení je nastaveno v Podmínkách prohlížení.\n\nVolná teplota+zelená + CAT02 + [výstup]: teplota a zelená je vybrána uživatelem, vyvážení bílé výstupního zařízení je nastaveno v Podmínkách prohlížení. TP_COLORAPP_NEUTRAL;Obnovit TP_COLORAPP_NEUTRAL_TIP;Obnoví původní hodnoty u všech posuvníků a křivek. TP_COLORAPP_RSTPRO;Ochrana červených a pleťových tónů TP_COLORAPP_RSTPRO_TOOLTIP;Ochrana červených a pleťových tónů ovlivňuje posuvníky i křivky. -TP_COLORAPP_SHARPCIE;--nepoužito-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--nepoužito-- TP_COLORAPP_SURROUND;Okolí TP_COLORAPP_SURROUND_AVER;Průměrné TP_COLORAPP_SURROUND_DARK;Tmavé @@ -1394,11 +1497,9 @@ TP_COLORAPP_TCMODE_SATUR;Nasycení TP_COLORAPP_TEMP_TOOLTIP;Pro výběr osvětlení vždy nastavte Tint=1.\n\nA barva=2856\nD50 barva=5003\nD55 barva=5503\nD65 barva=6504\nD75 barva=7504 TP_COLORAPP_TONECIE;Mapování tónů pomocí CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Pokud je volba zakázána, probíhá mapování tónů v prostoru L*a*b*.\nPokud je volba povolena. probíhá mapování tónů pomocí CIECAM02.\nAby měla tato volba efekt, musí být povolen nástroj Mapování tónů. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolutní jas prostředí prohlížení\n(obvykle 16 cd/m²). TP_COLORAPP_WBCAM;WB [RT+CAT02] + [výstup] TP_COLORAPP_WBRT;WB [RT] + [výstup] -TP_COLORAPP_YB;Yb% (střední jas) -TP_COLORAPP_YBSCENE;Yb% (střední jas) -TP_COLORAPP_YBSCENE_TOOLTIP;Pokud je povolena automatika, Yb je vypočteno ze střední hodnoty jasu aktuálního obrázku TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;Automaticky TP_COLORTONING_BALANCE;Vyvážené @@ -1412,6 +1513,25 @@ TP_COLORTONING_LAB;Mísení L*a*b* TP_COLORTONING_LABEL;Barevné tónování TP_COLORTONING_LABGRID;Korekční mřížka L*a*b* barev TP_COLORTONING_LABGRID_VALUES;SV: a=%1 b=%2\nSA: a=%3 b=%4 +TP_COLORTONING_LABREGIONS;Oblasti oprav barvy +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;Kanál +TP_COLORTONING_LABREGION_CHANNEL_ALL;Vše +TP_COLORTONING_LABREGION_CHANNEL_B;Modrá +TP_COLORTONING_LABREGION_CHANNEL_G;Zelená +TP_COLORTONING_LABREGION_CHANNEL_R;Červená +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;H +TP_COLORTONING_LABREGION_LIGHTNESS;Světlost +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_LIST_TITLE;Oprava +TP_COLORTONING_LABREGION_MASK;Maska +TP_COLORTONING_LABREGION_MASKBLUR;Maska neostrosti +TP_COLORTONING_LABREGION_OFFSET;Posun +TP_COLORTONING_LABREGION_POWER;Síla +TP_COLORTONING_LABREGION_SATURATION;Nasycení +TP_COLORTONING_LABREGION_SHOWMASK;Ukázat masku +TP_COLORTONING_LABREGION_SLOPE;Sklon TP_COLORTONING_LUMA;Jas TP_COLORTONING_LUMAMODE;Zachování jasu TP_COLORTONING_LUMAMODE_TOOLTIP;Pokud je povoleno, je při změně barvy (červená, zelená, tyrkysová, modrá...) zachován jas každého pixelu. @@ -1451,15 +1571,20 @@ TP_CROP_GUIDETYPE;Druh vodítek: TP_CROP_H;Výška TP_CROP_LABEL;Ořez TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Vyznačit výřez +TP_CROP_RESETCROP;Obnovit +TP_CROP_SELECTCROP;Vybrat TP_CROP_W;Šířka -TP_CROP_X;X -TP_CROP_Y;Y +TP_CROP_X;Vlevo +TP_CROP_Y;Nahoře TP_DARKFRAME_AUTOSELECT;Automatický výběr TP_DARKFRAME_LABEL;Tmavý snímek TP_DEFRINGE_LABEL;Odstranění lemu TP_DEFRINGE_RADIUS;Poloměr TP_DEFRINGE_THRESHOLD;Práh +TP_DEHAZE_DEPTH;Hloubka +TP_DEHAZE_LABEL;Odstranění závoje +TP_DEHAZE_SHOW_DEPTH_MAP;Ukázat hloubkovou mapu +TP_DEHAZE_STRENGTH;Síla TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Více zónová automatika TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatická celková TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Zkusí odhadnout barevný šum\nPozor, tento výpočet je zprůměrován a zcela subjektivní! @@ -1541,7 +1666,6 @@ TP_EPD_LABEL;Mapování tónů TP_EPD_REWEIGHTINGITERATES;Počet průchodů převážení TP_EPD_SCALE;Měřítko TP_EPD_STRENGTH;Síla -TP_EPD_TOOLTIP;Mapování tónů je dostupné v L*a*b* (standard) a CIECAM02 módu.\n\nV L*a*b* módu může být mapování tónů použito i pro zůstatkový obraz nástroje Vlnka\n\nPro zapnutí mapování tónů v CIECAM02 módu zapněte prosím následující volby:\n1. CIECAM02\n2. Algoritmus="Jas a pestrobarevnost (QM)"\n3. "Mapování tónů pomocí jasu CIECAM02 (Q)" TP_EXPOSURE_AUTOLEVELS;Automatické úrovně TP_EXPOSURE_AUTOLEVELS_TIP;Přepne provedení Automatické úrovně na automatickou sadu hodnot parametrů založených na analýze obrázku\nPokud to je nezbytné, povolí rekonstrukci světel. TP_EXPOSURE_BLACKLEVEL;Černá @@ -1557,7 +1681,7 @@ TP_EXPOSURE_CURVEEDITOR1;Tónová křivka 1 TP_EXPOSURE_CURVEEDITOR2;Tónová křivka 2 TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;Podívejte se prosím na článek "Exposure > Tone Curves" na RawPedii, kde se můžete naučit. jak pomocí dvou tónových křivek dosáhnout ten nejlepší výsledek. TP_EXPOSURE_EXPCOMP;Kompenzace expozice -TP_EXPOSURE_HISTMATCHING;Automaticky přizpůsobená Tónová křivka +TP_EXPOSURE_HISTMATCHING;Automaticky nalezená Tónová křivka TP_EXPOSURE_HISTMATCHING_TOOLTIP;Automatické nastavení posuvníků a křivek (kromě kompenzace expozice) tak, aby bylo dosaženo co největší shody s vloženým Jpeg náhledem. TP_EXPOSURE_LABEL;Expozice TP_EXPOSURE_SATURATION;Nasycení @@ -1585,10 +1709,6 @@ TP_FLATFIELD_BT_VERTICAL;Svisle TP_FLATFIELD_CLIPCONTROL;Kontrola oříznutí TP_FLATFIELD_CLIPCONTROL_TOOLTIP;Kontrola oříznutí zabrání oříznutí světel po aplikaci Flat Field. Pokud byly světla oříznuta ještě před aplikací Flat field, může se objevit barevný nádech. TP_FLATFIELD_LABEL;Flat Field -TP_GAMMA_CURV;Gama -TP_GAMMA_FREE;Volná gama -TP_GAMMA_OUTPUT;Výstupní gama -TP_GAMMA_SLOP;Sklon (lineární) TP_GENERAL_11SCALE_TOOLTIP;Efekt tohoto nástroje je viditelný pouze při přiblížení 1:1. TP_GRADIENT_CENTER;Střed TP_GRADIENT_CENTER_X;Střed X @@ -1649,10 +1769,16 @@ TP_ICM_SAVEREFERENCE_TOOLTIP;Uloží lineární TIFF obrázek před aplikování TP_ICM_TONECURVE;Tónová křivka TP_ICM_TONECURVE_TOOLTIP;Použije vloženou DCP tónovou křivku. Nastavení je dostupné pouze v případě, že vybrané DCP obsahuje tónovou křivku. TP_ICM_WORKINGPROFILE;Pracovní barevný prostor +TP_ICM_WORKING_TRC;Tónová křivka odezvy: +TP_ICM_WORKING_TRC_CUSTOM;Vlastní +TP_ICM_WORKING_TRC_GAMMA;Gama +TP_ICM_WORKING_TRC_NONE;Nic +TP_ICM_WORKING_TRC_SLOPE;Sklon +TP_ICM_WORKING_TRC_TOOLTIP;Pouze pro vložené profily. TP_IMPULSEDENOISE_LABEL;Redukce impulzního šumu TP_IMPULSEDENOISE_THRESH;Práh TP_LABCURVE_AVOIDCOLORSHIFT;Zabránit posunu barev -TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Přizpůsobit barvy palety barevného pracovního prostoru a aplikovat Munsellovu korekci. +TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Napasovat barvy do gamutu barevného pracovního prostoru a aplikovat Munsellovu korekci. TP_LABCURVE_BRIGHTNESS;Světlost TP_LABCURVE_CHROMATICITY;Barevnost TP_LABCURVE_CHROMA_TOOLTIP;Pro černobílé tónování nastavte barevnost na -100. @@ -1691,10 +1817,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Pracuje s posuvníkem barevnosti a CC křivkou. TP_LENSGEOM_AUTOCROP;Automatický ořez TP_LENSGEOM_FILL;Automatické vyplnění TP_LENSGEOM_LABEL;Objektiv / Geometrie +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automaticky +TP_LENSPROFILE_CORRECTION_LCPFILE;LCP soubor +TP_LENSPROFILE_CORRECTION_MANUAL;Ručně TP_LENSPROFILE_LABEL;Korekční profily objektivů -TP_LENSPROFILE_USECA;Korekce chromatické aberace -TP_LENSPROFILE_USEDIST;Korekce zkreslení -TP_LENSPROFILE_USEVIGN;Korekce vinětace +TP_LENSPROFILE_LENS_WARNING;Varování: crop factor použitý pro profilování objektivu je větší než crop factor fotoaparátu. Výsledek může být nesprávný. +TP_LENSPROFILE_MODE_HEADER;Výběr profilu objektivu: +TP_LENSPROFILE_USE_CA;Chromatická aberace +TP_LENSPROFILE_USE_GEOMETRIC;Geometrická +TP_LENSPROFILE_USE_HEADER;Vyberte zkreslení na opravu: +TP_LENSPROFILE_USE_VIGNETTING;Vinětace TP_LOCALCONTRAST_AMOUNT;Míra TP_LOCALCONTRAST_DARKNESS;Úroveň tmavé TP_LOCALCONTRAST_LABEL;Místní kontrast @@ -1728,14 +1860,16 @@ TP_PREPROCESS_LINEDENOISE;Filtrovat linkové rušení TP_PREPROCESS_LINEDENOISE_DIRECTION;Směr TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Oba TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Vodorovně -TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Vodorovně pouze PDAF řádky +TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Vodorovně pouze u PDAF řádků TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Svisle TP_PREPROCESS_NO_FOUND;Nic nenalezeno TP_PREPROCESS_PDAFLINESFILTER;Filtr PDAF linek -TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Pokusí se potlačit proužkový šum způsobený PDAF pixely na sensoru, vznikající na některých bezzrcadlovkách Sony v některých scénách se záblesky v protisvětle. TP_PRSHARPENING_LABEL;Doostření po změně velikosti TP_PRSHARPENING_TOOLTIP;Obrázek po zmenšení doostří. Funguje pouze pokud je použita "Lanczos" metoda zmenšení. Náhled výsledku není v tomto nástroji možný. Podívejte se do RawPedie pro návod k použití. TP_RAWCACORR_AUTO;Automatická korekce +TP_RAWCACORR_AUTOIT;Počet průchodů +TP_RAWCACORR_AUTOIT_TOOLTIP;Toto nastavení je dostupné po zatržení volby "Automatická korekce".\nAutomatická korekce je konzervativní, což znamená, že často neodstraní úplně veškerou chromatickou aberaci..\nPro korekci zbývající chromatické aberace můžete použít až pěti opakování automatické korekce..\nKaždé opakování sníží zbývající chromatickou aberaci z předchozího běhu za cenu prodloužení celkového času zpracování. +TP_RAWCACORR_AVOIDCOLORSHIFT;Zabránit posunu barev TP_RAWCACORR_CABLUE;Modrá TP_RAWCACORR_CARED;Červená TP_RAWCACORR_CASTR;Síla @@ -1751,17 +1885,25 @@ TP_RAWEXPOS_LINEAR;Korekce bílého bodu TP_RAWEXPOS_PRESER;Zachování světel TP_RAWEXPOS_RGB;Červená, telená, modrá TP_RAWEXPOS_TWOGREEN;Spojit zelené -TP_RAW_1PASSMEDIUM;Jeden průchod (střední) -TP_RAW_3PASSBEST;Tři průchody (nejlepší) +TP_RAW_1PASSMEDIUM;Jeden průchod (Markesteijn) +TP_RAW_2PASS;Jeden průchod + rychlý +TP_RAW_3PASSBEST;Tři průchody (Markesteijn) +TP_RAW_4PASS;Tři průchody + rychlý TP_RAW_AHD;AHD TP_RAW_AMAZE;AMaZE +TP_RAW_AMAZEVNG4;AMaZE+VNG4 +TP_RAW_BORDER;Okraj TP_RAW_DCB;DCB TP_RAW_DCBENHANCE;Vylepšení DCB TP_RAW_DCBITERATIONS;Počet průchodů DCB +TP_RAW_DCBVNG4;DCB+VNG4 TP_RAW_DMETHOD;Metoda TP_RAW_DMETHOD_PROGRESSBAR;%1 demozajkování... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Vylepšení demozajkování... TP_RAW_DMETHOD_TOOLTIP;Poznámka: IGV a LMMSE jsou určeny pro obrázky s vysokým ISO, kterým pomáhají vyhnout se u redukce šumu vzniku vzorů, posterizaci a vyžehlenému vzhledu.\n\nPixel Shift je určen pro soubory Pentax/Sony Pixel Shift.\nPro soubory neobsahující Pixel Shift data je použita metoda AMaZE. +TP_RAW_DUALDEMOSAICAUTOCONTRAST;Automatický práh +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;Pokud je zatrženo (doporučeno), RawTherapee vypočítá optimální hodnotu, jenž následně používá na ploché oblasti snímku.\nPokud není na snímku plochý region nebo je snímek příliš zašuměný bude hodnota nastavena na 0.\nPro ruční nastavení této hodnoty nejprve zrušte zatržení této volby (vhodné hodnoty závisí na hloubce ostrosti snímku). +TP_RAW_DUALDEMOSAICCONTRAST;Práh kontrastu TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;Počet kroků potlačování chybných barev TP_RAW_FAST;Rychlá @@ -1779,8 +1921,9 @@ TP_RAW_MONO;Mono TP_RAW_NONE;Žádná (zobrazí strukturu senzoru) TP_RAW_PIXELSHIFT;Pixel Shift TP_RAW_PIXELSHIFTBLUR;Maska pohybové neostrosti +TP_RAW_PIXELSHIFTDMETHOD;Metoda demozajkování pro pohyb TP_RAW_PIXELSHIFTEPERISO;Citlivost -TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;Výchozí hodnota 0 by měla dostatečně fungovat pro základní hodnoty ISO.\nDetekci pohybu na vyšších hodnotách ISO vylepšíte navýšením této hodnoty.\nZvyšujte po malých krocích a sledujte přitom masku pohybu.\nPro podexponované nebo obrázky s vysokým ISO zvyšte citlivost. +TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;Výchozí hodnota 0 by měla dobře fungovat u základní hodnoty ISO.\nVyšší hodnoty zvýší citlivost detekce pohybu.\nZvyšujte po malých krocích a sledujte přitom masku pohybu.\nZvyšte citlivost u podexponovaných snímků nebo snímků s vysokým ISO. TP_RAW_PIXELSHIFTEQUALBRIGHT;Vyrovnat jas snímků TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Korekce po kanálech TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Zapnuto: Nezávislá korekce jednotlivých RGB kanálů.\nVypnuto: Použije se stejná hodnota pro všechny kanály. @@ -1807,10 +1950,12 @@ TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;Výchozí poloměr 1,0 většinou velmi dobře fu TP_RAW_PIXELSHIFTSMOOTH;Hladké přechody TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Vyhlazení přechodů mezi oblastmi s pohybem a bez pohybu.\nNastavte na 0 pro vypnutí vyhlazování přechodů.\nNastavte na 1 pro získání AMaZE/LMMSE výsledku pro vybraný snímek (závisí na tom, zda je vybrána volba "Použít LMMSE") nebo mediánu všech čtyř snímků (pokud je vybrána volba "Použít medián"). TP_RAW_RCD;RCD +TP_RAW_RCDVNG4;RCD+VNG4 TP_RAW_SENSOR_BAYER_LABEL;Snímač s Bayerovou maskou -TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;Tří průchodová dává lepší výsledky (doporučeno pro fotky s nízkým ISO).\nJednoprůchodová je téměř k nerozeznání od tří průchodové pro vysoké ISO a je rychlejší. +TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;Tří průchodová dává lepší výsledky (doporučeno pro fotky s nízkým ISO).\nJednoprůchodová je téměř k nerozeznání od tří průchodové pro vysoké ISO a je rychlejší.\n+rychlá vytváří méně artefaktů v plochých oblastech TP_RAW_SENSOR_XTRANS_LABEL;Senzory s X-Trans maticí TP_RAW_VNG4;VNG4 +TP_RESIZE_ALLOW_UPSCALING;Povolit zvětšení TP_RESIZE_APPLIESTO;Aplikovat na: TP_RESIZE_CROPPEDAREA;Oblast ořezu TP_RESIZE_FITBOX;Výřez @@ -1825,10 +1970,10 @@ TP_RESIZE_SCALE;Měřítko TP_RESIZE_SPECIFY;Zvolte: TP_RESIZE_W;Šířka: TP_RESIZE_WIDTH;Šířka -TP_RETINEX_CONTEDIT_HSL;HSV korekce histogramu -TP_RETINEX_CONTEDIT_LAB;Histogram korekce L*a*b* -TP_RETINEX_CONTEDIT_LH;Korekce odstínu -TP_RETINEX_CONTEDIT_MAP;Korekce masky +TP_RETINEX_CONTEDIT_HSL;HSL histogram +TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +TP_RETINEX_CONTEDIT_LH;Odstín +TP_RETINEX_CONTEDIT_MAP;Korekce TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Jas dle jasu L=f(L).\nUpraví raw data pro snížení výskytu halo efektu a vzniku artefaktů. TP_RETINEX_CURVEEDITOR_LH;Síla=f(O) @@ -1840,6 +1985,7 @@ TP_RETINEX_FREEGAMMA;Volná gama TP_RETINEX_GAIN;Zisk TP_RETINEX_GAINOFFS;Zisk a posun (jasu) TP_RETINEX_GAINTRANSMISSION;Přenos zisku +TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Zesílí nebo zeslabí mapu přenosu pro dosažení požadovaného jasu.\nOsa X je přenos.\nOsa Y je zisk. TP_RETINEX_GAIN_TOOLTIP;Působí na obnovený obrázek.\n\nToto je velmi odlišné od ostatních nastavení. Použito pro černé nebo bílé pixely a pro vyvážení histogramu. TP_RETINEX_GAMMA;Gama TP_RETINEX_GAMMA_FREE;Volná @@ -1865,7 +2011,7 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Maska TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Slabé -TP_RETINEX_MAP;Metoda masky +TP_RETINEX_MAP;Metoda TP_RETINEX_MAP_GAUS;Gaussova maska TP_RETINEX_MAP_MAPP;Ostrá maska (částečná vlnka) TP_RETINEX_MAP_MAPT;Ostrá maska (kompletní vlnka) @@ -1928,6 +2074,7 @@ TP_SHARPENEDGE_LABEL;Hrany TP_SHARPENEDGE_PASSES;Počet průchodů TP_SHARPENEDGE_THREE;Pouze jas TP_SHARPENING_AMOUNT;Míra +TP_SHARPENING_CONTRAST;Práh kontrastu TP_SHARPENING_EDRADIUS;Poloměr TP_SHARPENING_EDTOLERANCE;Tolerance k hranám TP_SHARPENING_HALOCONTROL;Omezení halo efektu @@ -1943,9 +2090,16 @@ TP_SHARPENING_RLD_ITERATIONS;Počet průchodů TP_SHARPENING_THRESHOLD;Práh TP_SHARPENING_USM;Maskování rozostření TP_SHARPENMICRO_AMOUNT;Kvantita +TP_SHARPENMICRO_CONTRAST;Práh kontrastu TP_SHARPENMICRO_LABEL;Mikrokontrast TP_SHARPENMICRO_MATRIX;Matice 3×3 namísto 5×5 TP_SHARPENMICRO_UNIFORMITY;Jednolitost +TP_SOFTLIGHT_LABEL;Měkké světlo +TP_SOFTLIGHT_STRENGTH;Síla +TP_TM_FATTAL_AMOUNT;Míra +TP_TM_FATTAL_ANCHOR;Kotva +TP_TM_FATTAL_LABEL;Komprese dynamického rozsahu +TP_TM_FATTAL_THRESHOLD;Detaily TP_VIBRANCE_AVOIDCOLORSHIFT;Zabránit posunu barev TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tóny pleti @@ -2012,7 +2166,7 @@ TP_WAVELET_COMPGAMMA;Komprese gamy TP_WAVELET_COMPGAMMA_TOOLTIP;Úprava gamy zůstatku obrázku vám umožní vyvážit data a histogram. TP_WAVELET_COMPTM;Mapování tónů TP_WAVELET_CONTEDIT;Křivka kontrastu 'Po' -TP_WAVELET_CONTR;Paleta +TP_WAVELET_CONTR;Gamut TP_WAVELET_CONTRA;Kontrast TP_WAVELET_CONTRAST_MINUS;Kontrast - TP_WAVELET_CONTRAST_PLUS;Kontrast + @@ -2020,7 +2174,7 @@ TP_WAVELET_CONTRA_TOOLTIP;Změní kontrast zůstatku obrazu. TP_WAVELET_CTYPE;Ovládání barevnosti TP_WAVELET_CURVEEDITOR_CC_TOOLTIP;Mění lokální kontrast jako funkci originálního lokálního kontrastu(úsečka).\nNízké hodnoty na úsečce představují malý lokální kontrast (skutečné hodnoty okolo 10..20).\n50% z úsečky představuje průměrný lokální kontrast (skutečné hodnoty okolo 100..300).\n66% z úsečky představuje představuje standardní odchylku lokálního kontrastu (skutečné hodnoty okolo 300..800).\n100% z úsečky představuje maximální lokální kontrast (skutečné hodnoty okolo 3000..8000). TP_WAVELET_CURVEEDITOR_CH;Kontrast úrovní=f(Barevnost) -TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Mění kontrast každé úrovně jako funkci odstínu.\nDejte pozor, abyste nepřepsali změny udělané v podnástroji Paleta nástroje Odstín.\nZměny křivky se projeví pouze v případě, že posuvníky kontrastu úrovní vlnky nejsou nastaveny na nulu. +TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Mění kontrast každé úrovně jako funkci odstínu.\nDejte pozor, abyste nepřepsali změny udělané v podnástroji Gamut nástroje Odstín.\nZměny křivky se projeví pouze v případě, že posuvníky kontrastu úrovní vlnky nejsou nastaveny na nulu. TP_WAVELET_CURVEEDITOR_CL;L TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Aplikuje finální křivku kontrastu jasů na konci zpracování vlnky. TP_WAVELET_CURVEEDITOR_HH;HH @@ -2038,7 +2192,7 @@ TP_WAVELET_DTHR;Napříč TP_WAVELET_DTWO;Vodorovně TP_WAVELET_EDCU;Křivka TP_WAVELET_EDGCONT;Místní kontrast -TP_WAVELET_EDGCONT_TOOLTIP;Posunutí bodů doleva snižuje kontrast a posunutí bodů doprava jej zvyšuje.\nRohy levý spodní, levý horní, pravý horní, pravý spodní postupně představují místní kontrast pro nízké hodnoty, průměr, průměr + stdev maximum +TP_WAVELET_EDGCONT_TOOLTIP;Posunutí bodů doleva snižuje kontrast a posunutí bodů doprava jej zvyšuje.\nRohy levý spodní, levý horní, pravý horní, pravý spodní postupně představují místní kontrast pro nízké hodnoty, průměr, průměr + stdev a maximum. TP_WAVELET_EDGE;Doostření hran TP_WAVELET_EDGEAMPLI;Základní zesílení TP_WAVELET_EDGEDETECT;Sklon citlivosti @@ -2049,7 +2203,7 @@ TP_WAVELET_EDGEDETECT_TOOLTIP;Posunutím posuvníku vpravo zvýšíte citlivost TP_WAVELET_EDGESENSI;Citlivost detekce hran TP_WAVELET_EDGREINF_TOOLTIP;Zesílení nebo zeslabení vlivu první úrovně, v porovnání se druhou úrovní. Ostatní úrovně zůstanou nezměněny. TP_WAVELET_EDGTHRESH;Detaily -TP_WAVELET_EDGTHRESH_TOOLTIP;Změní rozložení mezi prvními a ostatními úrovněmi. Čím větší práh, tím větší je význam prvních úrovní. Dejte si pozor na záporné hodnoty. Ty zvětšují efekt vyšších úrovní a mohou způsobit vznik artefaktů. +TP_WAVELET_EDGTHRESH_TOOLTIP;Změní rozložení mezi prvními a ostatními úrovněmi. Čím větší práh, tím větší je význam prvních úrovní. Dejt e si pozor na záporné hodnoty. Ty zvětšují efekt vyšších úrovní a mohou způsobit vznik artefaktů TP_WAVELET_EDRAD;Poloměr TP_WAVELET_EDRAD_TOOLTIP;Toto nastavení poloměru se velmi liší od ostatních nástrojů doostření. Jeho hodnota je pomocí komplexní funkce porovnána s každou úrovní. To znamená, že i nastavení hodnoty na nulu má na úrovně vliv. TP_WAVELET_EDSL;Práh posuvníků @@ -2167,13 +2321,14 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Metoda +TP_WBALANCE_PICKER;Nabrat TP_WBALANCE_SHADE;Stín TP_WBALANCE_SIZE;Rozměr: 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;Bodové vyvážení +TP_WBALANCE_SPOTWB;Použijte pipetu pro nabrání vyvážení bílé z neutrální oblasti v náhledu. TP_WBALANCE_TEMPBIAS;AVB - Zdůraznění teploty TP_WBALANCE_TEMPBIAS_TOOLTIP;Dovolí ovlivnit výpočet "automatického vyvážení bílé"\nzdůrazněním teplejší nebo chladnější teploty. Toto zdůraznění\nje vyjádřeno v procentech vypočtené teploty a výsledek\nlze vyjádřit vzorcem "vypočtenáTeplota + vypočtenáTeplota * zdůraznění". TP_WBALANCE_TEMPERATURE;Teplota @@ -2189,118 +2344,3 @@ ZOOMPANEL_ZOOMFITSCREEN;Přizpůsobit celý obrázek obrazovce\nZkratka: Alt< ZOOMPANEL_ZOOMIN;Přiblížit\nZkratka: + ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. -!GENERAL_RESET;Reset -!GENERAL_SAVE_AS;Save as... -!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. -!HISTORY_MSG_235;B&W - CM - Auto -!HISTORY_MSG_237;B&W - CM -!HISTORY_MSG_273;CT - Color Balance SMH -!HISTORY_MSG_392;W - Residual - Color Balance -!HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold -!HISTORY_MSG_490;DRC - Amount -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold -!HISTORY_MSG_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_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift -!HISTORY_MSG_RAW_BORDER;Raw border -!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling -!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold -!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_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift -!PARTIALPASTE_RAW_BORDER;Raw border -!PARTIALPASTE_SOFTLIGHT;Soft light -!PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_PERFORMANCE_THREADS;Threads -!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) -!PREFERENCES_TAB_PERFORMANCE;Performance -!SAMPLEFORMAT_32;24-bit floating-point -!SAMPLEFORMAT_64;32-bit floating-point -!SAVEDLG_FILEFORMAT_FLOAT; floating-point -!TP_BWMIX_MIXC;Channel Mixer -!TP_BWMIX_NEUTRAL;Reset -!TP_ICM_WORKING_TRC;Tone response curve: -!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_RAWCACORR_AUTOIT;Iterations -!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift -!TP_RAW_2PASS;1-pass+fast -!TP_RAW_4PASS;3-pass+fast -!TP_RAW_AMAZEVNG4;AMaZE+VNG4 -!TP_RAW_BORDER;Border -!TP_RAW_DCBVNG4;DCB+VNG4 -!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold -!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion -!TP_RAW_RCDVNG4;RCD+VNG4 -!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. -!TP_SHARPENING_CONTRAST;Contrast threshold -!TP_SHARPENMICRO_CONTRAST;Contrast threshold -!TP_SOFTLIGHT_LABEL;Soft Light -!TP_SOFTLIGHT_STRENGTH;Strength -!TP_TM_FATTAL_AMOUNT;Amount -!TP_TM_FATTAL_ANCHOR;Anchor -!TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 547c5a6e6..72b795c29 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Skarphed PARTIALPASTE_VIGNETTING;Vignettering PARTIALPASTE_WHITEBALANCE;Hvidbalance PREFERENCES_APPLNEXTSTARTUP;Anvendes ved næste opstart -PREFERENCES_CACHECLEARALL;Ryd alt -PREFERENCES_CACHECLEARPROFILES;Ryd profiler -PREFERENCES_CACHECLEARTHUMBS;Ryd miniaturer PREFERENCES_CACHEMAXENTRIES;Maksimalt antal indskrivninger i cache PREFERENCES_CACHEOPTS;Cache-indstillinger PREFERENCES_CACHETHUMBHEIGHT;Maksimal miniaturehøjde @@ -274,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Gem bearbejdningsparametre i cache PREFERENCES_PROFILESAVEINPUT;Gem bearbejdningsparametre sammen med input-filen PREFERENCES_PSPATH;Installationsmappe til Adobe Photoshop PREFERENCES_SELECTLANG;Vælg sprog -PREFERENCES_SELECTTHEME;Vælg tema PREFERENCES_SHOWBASICEXIF;Vis grundlæggende exif-data PREFERENCES_SHOWDATETIME;Vis dato og tid PREFERENCES_SHTHRESHOLD;Tærskel for udbrændte skygger @@ -334,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Reglen om tredjedele TP_CROP_GUIDETYPE;Hjælpelinjer: TP_CROP_H;H TP_CROP_LABEL;Beskær -TP_CROP_SELECTCROP; Vælg beskæring TP_CROP_W;B TP_CROP_X;x TP_CROP_Y;y @@ -429,9 +424,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !CURVEEDITOR_HIGHLIGHTS;Highlights @@ -448,6 +444,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -499,8 +499,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -569,6 +569,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open @@ -972,14 +973,32 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1003,6 +1022,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1073,10 +1093,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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. -!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_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 @@ -1110,17 +1126,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1151,6 +1167,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1201,8 +1218,14 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1210,12 +1233,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1231,7 +1259,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1243,8 +1270,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1290,7 +1317,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1313,15 +1339,13 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done @@ -1331,7 +1355,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1387,7 +1410,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1451,11 +1474,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1466,6 +1485,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1485,8 +1505,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1498,14 +1516,13 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1525,11 +1542,9 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1543,6 +1558,25 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1575,11 +1609,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1659,7 +1699,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. @@ -1788,10 +1827,16 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1829,11 +1874,11 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1865,6 +1910,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1925,10 +1972,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1966,7 +2013,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2029,7 +2076,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2242,6 +2289,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index dd0655242..4bf12cbed 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -71,6 +71,11 @@ #70 25.07.2018 Korrekturen (TooWaBoo) RT 5.4 #71 28.09.2018 Korrekturen (TooWaBoo) RT 5.5 #72 05.10.2018 Korrekturen (TooWaBoo) RT 5.5 +#73 21.11.2018 Erweiterung (TooWaBoo) RT 5.5 +#74 24.11.2018 Erweiterung (TooWaBoo) RT 5.5 +#75 02.12.2018 Erweiterung (TooWaBoo) RT 5.5 +#76 11.12.2018 Erweiterung (TooWaBoo) RT 5.5 +#77 16.12.2018 Korrektur Farbwähler-Tooltip (TooWaBoo) RT 5.5 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -87,9 +92,10 @@ CURVEEDITOR_AXIS_IN;x: CURVEEDITOR_AXIS_LEFT_TAN;LT: CURVEEDITOR_AXIS_OUT;y: CURVEEDITOR_AXIS_RIGHT_TAN;RT: +CURVEEDITOR_CATMULLROM;Flexibel CURVEEDITOR_CURVE;Kurve CURVEEDITOR_CURVES;Kurven -CURVEEDITOR_CUSTOM;Angepasst +CURVEEDITOR_CUSTOM;Standard CURVEEDITOR_DARKS;Tiefen CURVEEDITOR_EDITPOINT_HINT;Bearbeitung der Kurvenpunkte über Zahlenwerte.\n\nRechtsklick auf einen Kurvenpunkt um ihn auszuwählen.\nRechtsklick in einen leeren Bereich um ihn abzuwählen. CURVEEDITOR_HIGHLIGHTS;Spitzlichter @@ -113,6 +119,10 @@ DYNPROFILEEDITOR_DELETE;Löschen DYNPROFILEEDITOR_EDIT;Ändern DYNPROFILEEDITOR_EDIT_RULE;Profilregel ändern DYNPROFILEEDITOR_ENTRY_TOOLTIP;Groß-/Kleinschreibung wird NICHT berücksichtigt.\nFür einen regulären Ausdruck benutzen Sie bitte\n"re:" als Prefix. +DYNPROFILEEDITOR_IMGTYPE_ANY;Alle +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Pixel-Shift +DYNPROFILEEDITOR_IMGTYPE_STD;Standard DYNPROFILEEDITOR_MOVE_DOWN;Runter DYNPROFILEEDITOR_MOVE_UP;Hoch DYNPROFILEEDITOR_NEW;Neu @@ -152,15 +162,15 @@ EXPORT_BYPASS_DEFRINGE;Farbsaum entfernen überspringen EXPORT_BYPASS_DIRPYRDENOISE;Rauschreduzierung überspringen EXPORT_BYPASS_DIRPYREQUALIZER;Detailebenenkontrast überspringen EXPORT_BYPASS_EQUALIZER;Waveletebenen überspringen -EXPORT_BYPASS_RAW_CA;CA-Korrektur überspringen [RAW] -EXPORT_BYPASS_RAW_CCSTEPS;Falschfarbenreduzierung überspringen\n[RAW] -EXPORT_BYPASS_RAW_DCB_ENHANCE;DCB-Verbesserungsstufen überspringen\n[RAW] -EXPORT_BYPASS_RAW_DCB_ITERATIONS;DCB-Interationen überspringen [RAW] -EXPORT_BYPASS_RAW_DF;Dunkelbild überspringen [RAW] -EXPORT_BYPASS_RAW_FF;Weißbild überspringen [RAW] -EXPORT_BYPASS_RAW_GREENTHRESH;Grün-Ausgleich überspringen [RAW] -EXPORT_BYPASS_RAW_LINENOISE;Zeilenrauschfilter überspringen [RAW] -EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;LMMSE-Verbesserungsstufen überspringen [RAW] +EXPORT_BYPASS_RAW_CA;CA-Korrektur überspringen +EXPORT_BYPASS_RAW_CCSTEPS;Falschfarbenreduzierung überspringen +EXPORT_BYPASS_RAW_DCB_ENHANCE;DCB-Verbesserungsstufen überspringen +EXPORT_BYPASS_RAW_DCB_ITERATIONS;DCB-Interationen überspringen +EXPORT_BYPASS_RAW_DF;Dunkelbild überspringen +EXPORT_BYPASS_RAW_FF;Weißbild überspringen +EXPORT_BYPASS_RAW_GREENTHRESH;Grün-Ausgleich überspringen +EXPORT_BYPASS_RAW_LINENOISE;Zeilenrauschfilter überspringen +EXPORT_BYPASS_RAW_LMMSE_ITERATIONS;LMMSE-Verbesserungsstufen überspringen EXPORT_BYPASS_SHARPENEDGE;Kantenschärfung überspringen EXPORT_BYPASS_SHARPENING;Schärfung überspringen EXPORT_BYPASS_SHARPENMICRO;Mikrokontrast überspringen @@ -173,7 +183,7 @@ EXPORT_PIPELINE;Verarbeitungspipeline EXPORT_PUTTOQUEUEFAST; Zur Warteschlange “Schneller Export“ hinzufügen EXPORT_RAW_DMETHOD;Demosaikmethode EXPORT_USE_FAST_PIPELINE;Priorität Geschwindigkeit -EXPORT_USE_FAST_PIPELINE_TIP;Wendet alle Bearbeitungsschritte, im Gegensatz\nzu „Standard“ , auf das bereits skalierte Bild an.\nDadurch steigt die Verarbeitungsgeschwindigkeit\nauf Kosten der Qualität. +EXPORT_USE_FAST_PIPELINE_TIP;Wendet alle Bearbeitungsschritte, im Gegensatz\nzu „Standard“, auf das bereits skalierte Bild an.\nDadurch steigt die Verarbeitungsgeschwindigkeit\nauf Kosten der Qualität. EXPORT_USE_NORMAL_PIPELINE;Standard EXTPROGTARGET_1;RAW EXTPROGTARGET_2;Stapelverarbeitung beendet @@ -185,8 +195,8 @@ FILEBROWSER_AUTOFLATFIELD;Automatisches Weißbild FILEBROWSER_BROWSEPATHBUTTONHINT;Ausgewählten Pfad öffnen. FILEBROWSER_BROWSEPATHHINT;Einen Pfad eingeben:\nTaste:\nStrg + o Setzt den Cursor in das Eingabefeld\nEnter Öffnet den Pfad\nEsc Änderungen verwerfen\nUmschalt + Esc Eingabefeld verlassen\n\nSchnellnavigation:\nTaste:\n~ “Home“-Verzeichnis des Benutzers\n! Bilder-Verzeichnis des Benutzers FILEBROWSER_CACHE;Festplatten-Cache -FILEBROWSER_CACHECLEARFROMFULL;Aus dem Festplatten-Cache entfernen (vollständig) -FILEBROWSER_CACHECLEARFROMPARTIAL;Aus dem Festplatten-Cache entfernen (teilweise) +FILEBROWSER_CACHECLEARFROMFULL;Alle zwischengespeicherte Profile löschen +FILEBROWSER_CACHECLEARFROMPARTIAL;Alle NICHT zwischengespeicherte Profile löschen FILEBROWSER_CLEARPROFILE;Profil löschen FILEBROWSER_COLORLABEL_TOOLTIP;Farbmarkierung\n\nTaste: Strg + Umschalt + 0 Ohne\nTaste: Strg + Umschalt + 1 Rot\nTaste: Strg + Umschalt + 2 Gelb\nTaste: Strg + Umschalt + 3 Grün\nTaste: Strg + Umschalt + 4 Blau\nTaste: Strg + Umschalt + 5 Violett FILEBROWSER_COPYPROFILE;Profil kopieren @@ -289,6 +299,7 @@ GENERAL_AUTO;Automatisch GENERAL_BEFORE;Vorher GENERAL_CANCEL;Abbrechen GENERAL_CLOSE;Schließen +GENERAL_CURRENT;Aktuell GENERAL_DISABLE;Deaktivieren GENERAL_DISABLED;Deaktiviert GENERAL_ENABLE;Aktivieren @@ -356,7 +367,7 @@ HISTORY_MSG_32;(Schärfung) - RLD\nDämpfung HISTORY_MSG_33;(Schärfung) - RLD\nIterationen HISTORY_MSG_34;(Objektivkorrektur)\nProfil - Verzeichnung HISTORY_MSG_35;(Objektivkorrektur)\nProfil - Vignettierung -HISTORY_MSG_36;(Objektivkorrektur)\nProfil - CA-Korrektur +HISTORY_MSG_36;(Objektivkorrektur)\nProfil - CA HISTORY_MSG_37;(Belichtung) - Auto HISTORY_MSG_38;(Weißabgleich) - Methode HISTORY_MSG_39;(Weißabgleich)\nFarbtemperatur @@ -792,13 +803,31 @@ HISTORY_MSG_485;(Objektivkorrektur)\nProfil HISTORY_MSG_486;(Objektivkorrektur)\nProfil - Kamera HISTORY_MSG_487;(Objektivkorrektur)\nProfil - Objektiv HISTORY_MSG_488;(Dynamikkompression) -HISTORY_MSG_489;(Dynamikkompression)\nSchwelle +HISTORY_MSG_489;(Dynamikkompression)\nDetails HISTORY_MSG_490;(Dynamikkompression)\nIntensität HISTORY_MSG_491;(Weißabgleich) HISTORY_MSG_492;(RGB-Kurven) HISTORY_MSG_493;(L*a*b*) HISTORY_MSG_CLAMPOOG;(Belichtung) - Farben\nauf Farbraum beschränken -HISTORY_MSG_COLORTONING_LABGRID_VALUE;(Farbanpassungen)\nL*a*b* - Farbkorrektur +HISTORY_MSG_COLORTONING_LABGRID_VALUE;(Farbanpassungen)\nL*a*b*-Farbkorrektur +HISTORY_MSG_COLORTONING_LABREGION_AB;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Kanal +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - C-Maske +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - H-Maske +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Helligkeit +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - L-Maske +HISTORY_MSG_COLORTONING_LABREGION_LIST;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Liste +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maskenunschärfe +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Versatz +HISTORY_MSG_COLORTONING_LABREGION_POWER;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Verstärkung +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Sättigung +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Maske anzeigen +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;(Farbanpassungen)\nL*a*b*-Farbkorrektur\nBereich - Steigung +HISTORY_MSG_DEHAZE_DEPTH;(Bildschleier entfernen)\nTiefe +HISTORY_MSG_DEHAZE_ENABLED;(Bildschleier entfernen) +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;(Bildschleier entfernen)\nMaske anzeigen +HISTORY_MSG_DEHAZE_STRENGTH;(Bildschleier entfernen)\nIntensität +HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;(Sensor—Matrix)\nFarbinterpolation\nAuto-Kontrastschwelle HISTORY_MSG_DUALDEMOSAIC_CONTRAST;(Sensor-Matrix)\nFarbinterpolation\nKontrastschwelle HISTORY_MSG_HISTMATCHING;(Belichtung)\nAuto-Tonwertkurve HISTORY_MSG_ICM_OUTPUT_PRIMARIES;(Farbmanagement)\nAusgabeprofil\nVorlagen @@ -823,6 +852,7 @@ HISTORY_MSG_RAWCACORR_COLORSHIFT;(Sensor-Matrix)\nChromatische Aberration\nFarbv HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand HISTORY_MSG_RESIZE_ALLOWUPSCALING;(Skalieren)\nHochskalieren zulassen HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle +HISTORY_MSG_SH_COLORSPACE;Farbraum HISTORY_MSG_SOFTLIGHT_ENABLED;(Weiches Licht) HISTORY_MSG_SOFTLIGHT_STRENGTH;(Weiches Licht)\nIntensität HISTORY_MSG_TM_FATTAL_ANCHOR;(Dynamikkompression)\nHelligkeitsverschiebung @@ -913,9 +943,6 @@ IPTCPANEL_TITLE;Titel IPTCPANEL_TITLEHINT;Geben Sie einen kurzen lesbaren Namen\nfür das Bild ein, z.B. den Dateinamen. IPTCPANEL_TRANSREFERENCE;Verarbeitungs-ID IPTCPANEL_TRANSREFERENCEHINT;Geben Sie eine Kennung zur Kontrolle oder\nVerfolgung des Arbeitsablaufes ein. -LENSPROFILE_CORRECTION_AUTOMATCH;Automatisch (Lensfun) -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. @@ -988,7 +1015,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Vorschau Fokusmaske\nTaste: Umschalt + f MAIN_TOOLTIP_PREVIEWG;Vorschau Grün-Kanal\nTaste: g MAIN_TOOLTIP_PREVIEWL;Vorschau Helligkeit\nTaste: v\n\n0.299·R + 0.587·G + 0.114·B MAIN_TOOLTIP_PREVIEWR;Vorschau Rot-Kanal\nTaste: r -MAIN_TOOLTIP_PREVIEWSHARPMASK;Schärfungs-Kontroll-Maske ein-/ausschalten.\n\nFunktioniert nur bei aktivierter Schärfung\nund Zoom >= 100%. +MAIN_TOOLTIP_PREVIEWSHARPMASK;Schärfungs-Kontroll-Maske ein-/ausschalten.\n\nFunktioniert nur bei aktivierter Schärfung\nund Zoom >= 100%.\nTaste: p MAIN_TOOLTIP_QINFO;Bildinformationen ein-/ausblenden.\nTaste: i MAIN_TOOLTIP_SHOWHIDELP1;Linkes Bedienfeld ein-/ausblenden.\nTaste: l MAIN_TOOLTIP_SHOWHIDERP1;Rechtes Bedienfeld ein-/ausblenden.\nTaste: Alt + l @@ -1026,6 +1053,7 @@ PARTIALPASTE_CROP;Ausschnitt PARTIALPASTE_DARKFRAMEAUTOSELECT;Dunkelbild: Automatische Auswahl PARTIALPASTE_DARKFRAMEFILE;Dunkelbild: Datei PARTIALPASTE_DEFRINGE;Farbsaum entfernen (Defringe) +PARTIALPASTE_DEHAZE;Bildschleier entfernen PARTIALPASTE_DETAILGROUP;Detailparameter PARTIALPASTE_DIALOGLABEL;Selektives Einfügen des Bearbeitungsprofils PARTIALPASTE_DIRPYRDENOISE;Rauschreduzierung @@ -1091,6 +1119,12 @@ PARTIALPASTE_VIGNETTING;Vignettierungskorrektur PARTIALPASTE_WAVELETGROUP;Wavelet PARTIALPASTE_WHITEBALANCE;Weißabgleich PREFERENCES_ADD;HINZU +PREFERENCES_APPEARANCE;Oberflächendesign (erfordert Neustart) +PREFERENCES_APPEARANCE_COLORPICKERFONT;Schriftart Farbwähler +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Farbe/Transparenz für Schnittmaske +PREFERENCES_APPEARANCE_MAINFONT;Schriftart: +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Farbe der Navigationshilfe +PREFERENCES_APPEARANCE_THEME;Oberflächendesign PREFERENCES_APPLNEXTSTARTUP;erfordert Neustart PREFERENCES_AUTOMONPROFILE;Automatisch das für den aktuellen Monitor festgelegte Profil verwenden PREFERENCES_AUTOSAVE_TP_OPEN;Werkzeugstatus vor dem Beenden automatisch speichern @@ -1101,16 +1135,14 @@ PREFERENCES_BEHAVIOR;Verhalten PREFERENCES_BEHSETALL;Alle setzen PREFERENCES_BEHSETALLHINT;Setzt alle Parameter auf Setzen.\nAnpassungen der Parameter in der Hintergrundstapelverarbeitung werden als Absolut zu den gespeicherten Werten interpretiert. PREFERENCES_BLACKBODY;Wolfram -PREFERENCES_CACHECLEARALL;Alles löschen -PREFERENCES_CACHECLEARPROFILES;Profile löschen -PREFERENCES_CACHECLEARTHUMBS;Miniaturbilder löschen +PREFERENCES_CACHECLEAR;Löschen +PREFERENCES_CACHECLEAR_ALL;Alle Dateien im Zwischenspeicher löschen: +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Alle Dateien im Zwischenspeicher löschen mit Ausnahme der Bearbeitungsprofile: +PREFERENCES_CACHECLEAR_ONLYPROFILES;Alle Bearbeitungsprofile im Zwischenspeicher löschen: +PREFERENCES_CACHECLEAR_SAFETY;Nur Dateien im Zwischenspeicher werden gelöscht. Bearbeitungsprofile im Bildordner bleiben unberührt. PREFERENCES_CACHEMAXENTRIES;Maximale Anzahl der Miniaturbilder im Festplatten-Cache PREFERENCES_CACHEOPTS;Einstellungen des Festplatten-Cache für Miniaturbilder PREFERENCES_CACHETHUMBHEIGHT;Maximale Höhe der Miniaturbilder -PREFERENCES_CIEART;CIECAM02-Optimierung -PREFERENCES_CIEART_FRAME;CIECAM02-spezifische Einstellungen -PREFERENCES_CIEART_LABEL;Einfache statt doppelte Genauigkeit -PREFERENCES_CIEART_TOOLTIP;Wenn aktiviert, werden CIECAM02-Berechnungen mit einfacher Genauigkeit statt doppelter durchgeführt. Dadurch wird der Vorgang etwas beschleunigt. Die Qualität nimmt jedoch geringfügig ab. PREFERENCES_CLIPPINGIND;Anzeige zu heller/dunkler Bereiche PREFERENCES_CLUTSCACHE;HaldCLUT-Zwischenspeicher PREFERENCES_CLUTSCACHE_LABEL;Maximale Anzahl CLUTs im Zwischenspeicher @@ -1133,7 +1165,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Format PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;Tag-ID PREFERENCES_CUSTPROFBUILDPATH;Anwendungspfad -PREFERENCES_CUTOVERLAYBRUSH;Farbe/Transparenz für Schnittmaske PREFERENCES_D50;5000K PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -1155,7 +1186,7 @@ PREFERENCES_EDITORCMDLINE;Benutzerdefinierte Befehlszeile PREFERENCES_EDITORLAYOUT;Editor-Layout PREFERENCES_EXTERNALEDITOR;Externer Editor PREFERENCES_FBROWSEROPTS;Bildinformationen und Miniaturbilder -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Einzeilige Toolbar\n(Bei geringer Bildschirmauflösung deaktivieren) +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Einzeilige Toolbar PREFERENCES_FILEFORMAT;Dateiformat PREFERENCES_FLATFIELDFOUND;Gefunden PREFERENCES_FLATFIELDSDIR;Weißbild-Verzeichnis @@ -1187,7 +1218,7 @@ PREFERENCES_HISTOGRAM_TOOLTIP;Wenn aktiviert, wird das Arbeitsprofil für die Da PREFERENCES_HLTHRESHOLD;Lichter - Schwelle PREFERENCES_ICCDIR;ICC-Profile-Verzeichnis PREFERENCES_IMG_RELOAD_NEEDED;Änderungen werden nur auf neu geöffnete Bilder angewendet -PREFERENCES_IMPROCPARAMS;Standard-Bildverarbeitungsparameter +PREFERENCES_IMPROCPARAMS;Standard-Bearbeitungsprofile PREFERENCES_INSPECT_LABEL;Bildzwischenspeicher PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximale Anzahl Bilder im Zwischenspeicher PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Legt die maximale Anzahl Bilder fest, die im Zwischenspeicher gehalten werden, wenn man in der Dateiverwaltung mit der Maus über ein Bild fährt.\n\nAuf Systemen mit nicht mehr als 2GB RAM, sollte der Wert nicht größer als 2 gewählt werden. @@ -1212,7 +1243,6 @@ PREFERENCES_MONPROFILE;Standardfarbprofil PREFERENCES_MONPROFILE_WARNOSX;Aufgrund einer macOS-Limitierung wird nur sRGB unterstützt. PREFERENCES_MULTITAB;Multi-Reitermodus PREFERENCES_MULTITABDUALMON;Multi-Reitermodus (auf zweitem Monitor, wenn verfügbar) -PREFERENCES_NAVGUIDEBRUSH;Farbe der Navigationshilfe PREFERENCES_NAVIGATIONFRAME;Navigation PREFERENCES_OUTDIR;Ausgabeverzeichnis PREFERENCES_OUTDIRFOLDER;In dieses Verzeichnis speichern @@ -1240,9 +1270,9 @@ PREFERENCES_PROFILEHANDLING;Behandlung der Bearbeitungsprofile PREFERENCES_PROFILELOADPR;Priorität der Profile beim Laden PREFERENCES_PROFILEPRCACHE;Bearbeitungsprofil im Festplatten-Cache PREFERENCES_PROFILEPRFILE;Bearbeitungsprofil welches dem geladenen Bild beiliegt (Sidecar) -PREFERENCES_PROFILESAVEBOTH;Verarbeitungsparameter im Festplatten-Cache und zusammen mit dem Bild speichern -PREFERENCES_PROFILESAVECACHE;Verarbeitungsparameter im Festplatten-Cache speichern -PREFERENCES_PROFILESAVEINPUT;Verarbeitungsparameter zusammen mit dem Bild speichern (Sidecar) +PREFERENCES_PROFILESAVEBOTH;Bearbeitungsprofile im Festplatten-Cache und zusammen mit dem Bild speichern +PREFERENCES_PROFILESAVECACHE;Bearbeitungsprofile im Festplatten-Cache speichern +PREFERENCES_PROFILESAVEINPUT;Bearbeitungsprofile zusammen mit dem Bild speichern (Sidecar) PREFERENCES_PROFILESAVELOCATION;Speicherort der Profile PREFERENCES_PROFILE_NONE;Kein Farbprofil PREFERENCES_PROPERTY;Eigenschaft @@ -1252,10 +1282,7 @@ PREFERENCES_PSPATH;Adobe Photoshop Installationsverzeichnis PREFERENCES_REMEMBERZOOMPAN;Zoom und Bildposition merken PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Öffnen eines neuen Bildes mit den Zoom- und Positionswerten\ndes vorangegangenen Bildes.\n\nFunktioniert nur unter folgenden Bedingungen:\nEin-Reitermodus aktiv\n“Demosaikmethode für 100%-Ansicht“ muss auf “Wie im Bild-\nverarbeitungsprofil vorgegeben“ eingestellt sein. PREFERENCES_SAVE_TP_OPEN_NOW;Werkzeugstatus jetzt speichern -PREFERENCES_SELECTFONT;Schriftart: -PREFERENCES_SELECTFONT_COLPICKER;Schriftart Farbwähler PREFERENCES_SELECTLANG;Sprache -PREFERENCES_SELECTTHEME;Oberflächendesign PREFERENCES_SERIALIZE_TIFF_READ;TIFF-Bilder PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialisiertes Lesen von TIFF-Bildern verwenden PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Beim Arbeiten mit Ordnern voll unkomprimierter TIFF-Bilder, kann diese Einstellung das Generieren von Miniaturbildern deutlich beschleunigen. @@ -1279,7 +1306,6 @@ PREFERENCES_TAB_GENERAL;Allgemein PREFERENCES_TAB_IMPROC;Bildbearbeitung PREFERENCES_TAB_PERFORMANCE;Performance PREFERENCES_TAB_SOUND;Klänge -PREFERENCES_THEME;Oberflächendesign (erfordert Neustart) PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Eingebundenes JPEG PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Bildanzeige PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutrales RAW-Bild @@ -1346,7 +1372,7 @@ SAVEDLG_PUTTOQUEUE;Zur Warteschlange hinzufügen SAVEDLG_PUTTOQUEUEHEAD;An den Anfang der Warteschlange hinzufügen SAVEDLG_PUTTOQUEUETAIL;An das Ende der Warteschlange hinzufügen SAVEDLG_SAVEIMMEDIATELY;Sofort speichern -SAVEDLG_SAVESPP;Verarbeitungsparameter mit dem Bild speichern +SAVEDLG_SAVESPP;Bearbeitungsprofile mit dem Bild speichern SAVEDLG_SUBSAMP;Komprimierung SAVEDLG_SUBSAMP_1;Beste Kompression SAVEDLG_SUBSAMP_2;Ausgeglichen @@ -1364,7 +1390,7 @@ THRESHOLDSELECTOR_HINT;Umschalt-Taste halten, um individuelle\nKontrollpu THRESHOLDSELECTOR_T;Oben THRESHOLDSELECTOR_TL;Oben-Links THRESHOLDSELECTOR_TR;Oben-Rechts -TOOLBAR_TOOLTIP_COLORPICKER;Farbwähler\n\nWenn eingeschaltet:\n- Mit der linken Maustaste können Sie einen Farbwähler setzen.\n- Zum Verschieben, linke Maustaste festhalten.\n- Umschalttaste + Rechts-Klick entfernt alle Farbwähler.\n- Rechts-Klick auf den Farbwählerbutton blendet die Farbwähler ein/aus\n- Rechts-Klick in einen freien Bereich schaltet auf das Hand-Werkzeug zurück. +TOOLBAR_TOOLTIP_COLORPICKER;Farbwähler\n\nWenn eingeschaltet:\n- Mit der linken Maustaste können Sie einen Farbwähler setzen.\n- Zum Verschieben, linke Maustaste festhalten.\n- Strg + Umschalttaste + Rechts-Klick entfernt alle Farbwähler.\n- Rechts-Klick auf den Farbwählerbutton blendet die Farbwähler ein/aus\n- Rechts-Klick in einen freien Bereich schaltet auf das Hand-Werkzeug zurück. TOOLBAR_TOOLTIP_CROP;Ausschnitt wählen.\nTaste: c\n\nZum Verschieben des Ausschnitts,\nUmschalttaste festhalten. TOOLBAR_TOOLTIP_HAND;Hand-Werkzeug\nTaste: h TOOLBAR_TOOLTIP_STRAIGHTEN;Ausrichten / Drehen\nTaste: s\n\nRichtet das Bild entlang einer Leitlinie aus. @@ -1443,11 +1469,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Horizontal spiegeln. TP_COARSETRAF_TOOLTIP_ROTLEFT;Nach links drehen.\nTaste: [ TP_COARSETRAF_TOOLTIP_ROTRIGHT;Nach rechts drehen.\nTaste: ] TP_COARSETRAF_TOOLTIP_VFLIP;Vertikal spiegeln. -TP_COLORAPP_ADAPTSCENE;Luminanz (cd/m²) -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute Luminanz der Szenenleuchstärket\n(normalerweise 2000cd/m²). -TP_COLORAPP_ADAPTVIEWING;Luminanz (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute Luminanz der Betrachtungsumgebung\n(normalerweise 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Wenn aktiviert (empfohlen), werden die optimalen\nWerte aus den Exif-Daten automatisch berechnet. +TP_COLORAPP_ABSOLUTELUMINANCE;Absolute Luminanz TP_COLORAPP_ALGO;Algorithmus TP_COLORAPP_ALGO_ALL;Alle TP_COLORAPP_ALGO_JC;Helligkeit + Buntheit (JH) @@ -1458,6 +1480,7 @@ TP_COLORAPP_BADPIXSL;Hot / Bad-Pixelfilter TP_COLORAPP_BADPIXSL_TOOLTIP;Unterdrückt “Hot / Bad“-Pixel\n\n0 = keine Auswirkung\n1 = Mittel\n2 = Gaussian TP_COLORAPP_BRIGHT;Helligkeit (Q) TP_COLORAPP_BRIGHT_TOOLTIP;Helligkeit in CIECAM02 berücksichtigt die Weißintensität und unterscheidet sich von L*a*b* und RGB-Helligkeit. +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;Bei manueller Einstellung werden Werte über 65 empfohlen. TP_COLORAPP_CHROMA;Buntheit (H) TP_COLORAPP_CHROMA_M;Farbigkeit (M) TP_COLORAPP_CHROMA_M_TOOLTIP;Die Farbigkeit in CIECAM02 unterscheidet sich\nvon L*a*b*- und RGB-Farbigkeit. @@ -1477,8 +1500,6 @@ TP_COLORAPP_CURVEEDITOR3;Farbkurve TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Korrigiert Buntheit, Sättigung oder Farbigkeit.\n\nZeigt das Histogramm der Chromatizität (L*a*b* ) VOR den CIECAM02-Änderungen an.\nWenn "CIECAM02-Ausgabe-Histogramm in Kurven anzeigen" aktiviert ist, wird das Histogramm von C, S oder M NACH den CIECAM02-Änderungen angezeigt.\n\nC, S und M werden nicht im Haupt-Histogramm angezeigt.\nFür die endgültige Ausgabe verwenden Sie das Haupt-Histogramm. TP_COLORAPP_DATACIE;CIECAM02-Ausgabe-Histogramm in\nKurven anzeigen TP_COLORAPP_DATACIE_TOOLTIP;Wenn aktiviert, zeigen die Histogramme\nder CIECAM02-Kurven die angenäherten\nWerte/Bereiche für J oder Q und C, S oder M\nNACH den CIECAM02-Anpassungen an. Das\nbetrifft nicht das Haupt-Histogramm.\n\nWenn deaktiviert, zeigen die Histogramme\nder CIECAM02-Kurven die L*a*b*-Werte\nVOR den CIECAM02-Anpassungen an. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Wenn aktiviert (empfohlen), wird ein optimaler\nWert berechnet, der von CAT02 und CIECAM02\nverwendet wird.\nUm den Wert manuell zu setzen, muss die Option\ndeaktiviert sein (Werte über 64 sind empfohlen). -TP_COLORAPP_DEGREE_TOOLTIP;Umfang der “CIE Chromatic Adaptation Transform 2002“. TP_COLORAPP_FREE;Farbtemperatur + Tönung + CAT02 + [Ausgabe] TP_COLORAPP_GAMUT;Gamutkontrolle (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Gamutkontrolle im L*a*b*-Modus erlauben. @@ -1490,14 +1511,13 @@ TP_COLORAPP_LABEL_SCENE;Umgebungsbedingungen (Szene) TP_COLORAPP_LABEL_VIEWING;Betrachtungsbedingungen TP_COLORAPP_LIGHT;Helligkeit (J) TP_COLORAPP_LIGHT_TOOLTIP;Helligkeit in CIECAM02 unterscheidet sich\nvon L*a*b* und RGB Helligkeit. +TP_COLORAPP_MEANLUMINANCE;Mittlere Luminanz (Yb%) TP_COLORAPP_MODEL;Weißpunktmodell TP_COLORAPP_MODEL_TOOLTIP;Weißabgleich [RT] + [Ausgabe]:\nRT's Weißabgleich wird für die Szene verwendet,\nCIECAM02 auf D50 gesetzt und der Weißabgleich\ndes Ausgabegerätes kann unter:\nEinstellungen > Farb-Management\neingestellt werden.\n\nWeißabgleich [RT+CAT02] + [Ausgabe]:\nRT's Weißabgleich wird für CAT02 verwendet und\nder Weißabgleich des Ausgabegerätes kann unter\nEinstellungen > Farb-Management\neingestellt werden. TP_COLORAPP_NEUTRAL;Zurücksetzen TP_COLORAPP_NEUTRAL_TIP;Setzt alle CIECAM02-Parameter auf Vorgabewerte zurück. TP_COLORAPP_RSTPRO;Hautfarbtöne schützen TP_COLORAPP_RSTPRO_TOOLTIP;Hautfarbtöne schützen\nWirkt sich auf Regler und Kurven aus. -TP_COLORAPP_SHARPCIE;--unused-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- TP_COLORAPP_SURROUND;Umgebung TP_COLORAPP_SURROUND_AVER;Durchschnitt TP_COLORAPP_SURROUND_DARK;Dunkel @@ -1517,11 +1537,9 @@ TP_COLORAPP_TCMODE_SATUR;Sättigung (S) TP_COLORAPP_TEMP_TOOLTIP;Um eine Farbtemperatur auszuwählen\nsetzen Sie die Tönung immer auf "1".\nA Temp=2856\nD50 Temp=5003\nD55 Temp=5503\nD65 Temp=6504\nD75 Temp=7504 TP_COLORAPP_TONECIE;Tonwertkorrektur mittels\nCIECAM02-Helligkeit (Q) TP_COLORAPP_TONECIE_TOOLTIP;Wenn diese Option ausgeschaltet ist, wird die Tonwertkorrektur im L*a*b*-Farbraum durchgeführt.\nWenn die Option eingeschaltet ist, wird CIECAM02 für die Tonwertkorrektur verwendet. Das Werkzeug Tonwertkorrektur muss aktiviert sein, damit diese Option berücksichtigt wird. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute Luminanz der Betrachtungsumgebung\n(normalerweise 16cd/m²). TP_COLORAPP_WBCAM;[RT+CAT02] + [Ausgabe] TP_COLORAPP_WBRT;[RT] + [Ausgabe] -TP_COLORAPP_YB;Yb% (Ø Luminanz) -TP_COLORAPP_YBSCENE;Yb% (Ø Luminanz) -TP_COLORAPP_YBSCENE_TOOLTIP;Wenn aktiviert, wird der Durchschnittswert der Luminanz berechnet. TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;Automatisch TP_COLORTONING_BALANCE;Farbausgleich @@ -1533,8 +1551,27 @@ TP_COLORTONING_HIGHLIGHT;Lichter TP_COLORTONING_HUE;Farbton TP_COLORTONING_LAB;L*a*b*-Überlagerung TP_COLORTONING_LABEL;Farbanpassungen -TP_COLORTONING_LABGRID;L*a*b* - Farbkorrektur +TP_COLORTONING_LABGRID;L*a*b*-Farbkorrektur TP_COLORTONING_LABGRID_VALUES;HL: a=%1, b=%2\nS: a=%3, b=%4 +TP_COLORTONING_LABREGIONS;L*a*b*-Farbkorrektur Bereiche +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;Kanal +TP_COLORTONING_LABREGION_CHANNEL_ALL;Alle +TP_COLORTONING_LABREGION_CHANNEL_B;Blau +TP_COLORTONING_LABREGION_CHANNEL_G;Grün +TP_COLORTONING_LABREGION_CHANNEL_R;Rot +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;H +TP_COLORTONING_LABREGION_LIGHTNESS;Helligkeit +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_LIST_TITLE;Farbkorrektur +TP_COLORTONING_LABREGION_MASK;Maske +TP_COLORTONING_LABREGION_MASKBLUR;Maskenunschärfe +TP_COLORTONING_LABREGION_OFFSET;Versatz +TP_COLORTONING_LABREGION_POWER;Verstärkung +TP_COLORTONING_LABREGION_SATURATION;Sättigung +TP_COLORTONING_LABREGION_SHOWMASK;Maske anzeigen +TP_COLORTONING_LABREGION_SLOPE;Steigung TP_COLORTONING_LUMA;Luminanz TP_COLORTONING_LUMAMODE;Luminanz schützen TP_COLORTONING_LUMAMODE_TOOLTIP;Wenn aktiviert, wird die Luminanz der Farben Rot, Grün, Cyan, Blau... geschützt. @@ -1573,16 +1610,21 @@ TP_CROP_GTTRIANGLE2;Goldenes Dreieck 2 TP_CROP_GUIDETYPE;Hilfslinien: TP_CROP_H;Höhe TP_CROP_LABEL;Ausschnitt -TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Ausschnitt wählen +TP_CROP_PPI;PPI = +TP_CROP_RESETCROP;Zurücksetzen +TP_CROP_SELECTCROP;Ausschnitt TP_CROP_W;Breite -TP_CROP_X;x -TP_CROP_Y;y +TP_CROP_X;Links +TP_CROP_Y;Oben TP_DARKFRAME_AUTOSELECT;Automatische Auswahl TP_DARKFRAME_LABEL;Dunkelbild TP_DEFRINGE_LABEL;Farbsaum entfernen (Defringe) TP_DEFRINGE_RADIUS;Radius TP_DEFRINGE_THRESHOLD;Schwelle +TP_DEHAZE_DEPTH;Tiefe +TP_DEHAZE_LABEL;Bildschleier entfernen +TP_DEHAZE_SHOW_DEPTH_MAP;Maske anzeigen +TP_DEHAZE_STRENGTH;Intensität TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto-Multizonen TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatisch Global TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Bewertung des Farbrauschens.\nDie Bewertung ist ungenau und sehr subjektiv! @@ -1665,7 +1707,6 @@ TP_EPD_LABEL;Tonwertkorrektur TP_EPD_REWEIGHTINGITERATES;Iterationen TP_EPD_SCALE;Faktor TP_EPD_STRENGTH;Intensität -TP_EPD_TOOLTIP;Tonwertkorrektur ist mit dem L*a*b*- und CIECAM02-Modus möglich.\n\nFür den CIECAM02-Modus müssen folgende Optionen aktiviert sein:\n1. CIECAM02\n2. Algorithmus = Helligkeit + Farbigkeit (QM)\n3. Tonwertkorrektur mittels CIECAM02-Helligkeit (Q) TP_EXPOSURE_AUTOLEVELS;Auto TP_EXPOSURE_AUTOLEVELS_TIP;Automatische Belichtungseinstellung\nbasierend auf Bildanalyse. TP_EXPOSURE_BLACKLEVEL;Schwarzwert @@ -1821,10 +1862,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Kann mit dem Chromatizitätsregler und\nder CC-Kurve TP_LENSGEOM_AUTOCROP;Auto-Schneiden TP_LENSGEOM_FILL;Auto-Füllen TP_LENSGEOM_LABEL;Objektivkorrekturen +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatisch (Lensfun) +TP_LENSPROFILE_CORRECTION_LCPFILE;LCP-Datei +TP_LENSPROFILE_CORRECTION_MANUAL;Benutzerdefiniert (Lensfun) TP_LENSPROFILE_LABEL;Objektivkorrekturprofil -TP_LENSPROFILE_USECA;CA korrigieren -TP_LENSPROFILE_USEDIST;Verzeichnung korrigieren -TP_LENSPROFILE_USEVIGN;Vignettierung korrigieren +TP_LENSPROFILE_LENS_WARNING;Achtung: Der Crop-Faktor des Profils entspricht\nnicht dem der Kamera.\nDie Ergebnisse sind möglicherweise falsch. +TP_LENSPROFILE_MODE_HEADER;Profil auswählen +TP_LENSPROFILE_USE_CA;CA +TP_LENSPROFILE_USE_GEOMETRIC;Verzeichnung +TP_LENSPROFILE_USE_HEADER;Korrektur auswählen +TP_LENSPROFILE_USE_VIGNETTING;Vignettierung TP_LOCALCONTRAST_AMOUNT;Intensität TP_LOCALCONTRAST_DARKNESS;Dunkle Bereiche TP_LOCALCONTRAST_LABEL;Lokaler Kontrast @@ -1862,11 +1909,11 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal (nur PDAF-Zeilen) TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertikal TP_PREPROCESS_NO_FOUND;Nichts gefunden TP_PREPROCESS_PDAFLINESFILTER;PDAF-Zeilenfilter -TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Minimiert Streifenrauschen, das bei Gegenlichtaufnahmen mit\nsichtbaren Flares einiger spiegellosen Sony-Kameras entsteht. TP_PRSHARPENING_LABEL;Nach Skalierung schärfen TP_PRSHARPENING_TOOLTIP;Schärft das Bild nach der Größenänderung.\nFunktioniert nur mit der Methode “Lanczos“.\nDas Ergebnis wird nicht in RawTherapee\nangezeigt.\n\nWeitere Informationen finden Sie auf “RawPedia“. -TP_RAWCACORR_AUTO;Automatische Korrektur +TP_RAWCACORR_AUTO;Autokorrektur TP_RAWCACORR_AUTOIT;Iterationen +TP_RAWCACORR_AUTOIT_TOOLTIP;Diese Einstellung ist verfügbar, wenn "Autokorrektur" aktiviert ist.\nDie Autokorrektur ist konservativ, d.h. sie korrigiert häufig nicht alle\nchromatischen Aberrationen. Um die verbleibenden chromatischen\nAberrationen zu korrigieren, können Sie bis zu fünf Iterationen\nverwenden. Jede Iteration verringert die verbleibende chromatische\nAberration auf Kosten zusätzlicher Verarbeitungszeit. TP_RAWCACORR_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden TP_RAWCACORR_CABLUE;Blau TP_RAWCACORR_CARED;Rot @@ -1899,6 +1946,8 @@ TP_RAW_DMETHOD;Methode TP_RAW_DMETHOD_PROGRESSBAR;%1 verarbeitet TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaikoptimierung TP_RAW_DMETHOD_TOOLTIP;IGV und LMMSE sind speziel für High-ISO-Aufnahmen um die\nRauschreduzierung zu unterstützen ohne zu Maze-Mustern,\nPosterisierung oder einem ausgewaschenen Look zu führen.\n\nPixel-Shift ist für “Pentax Pixel-Shift“-Dateien. Für "Nicht-Pixel-\nShift"-Dateien wird automatisch AMaZE verwendet. +TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto-Kontrastschwelle +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;Wenn das Kontrollkästchen aktiviert ist (empfohlen), berechnet\nRawTherapee einen optimalen Wert auf der Grundlage homogener\nBereiche im Bild. Wenn kein homogener Bereich vorhanden ist oder\ndas Bild zu sehr rauscht, wird der Wert auf 0 gesetzt. TP_RAW_DUALDEMOSAICCONTRAST;Kontrastschwelle TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;Falschfarbenreduzierung @@ -2114,7 +2163,7 @@ TP_SOFTLIGHT_STRENGTH;Intensität TP_TM_FATTAL_AMOUNT;Intensität TP_TM_FATTAL_ANCHOR;Helligkeitsverschiebung TP_TM_FATTAL_LABEL;Dynamikkompression -TP_TM_FATTAL_THRESHOLD;Schwelle +TP_TM_FATTAL_THRESHOLD;Details TP_VIBRANCE_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Hautfarbtöne @@ -2336,6 +2385,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Methode +TP_WBALANCE_PICKER;Farbwähler TP_WBALANCE_SHADE;Schatten TP_WBALANCE_SIZE;Größe: TP_WBALANCE_SOLUX35;Solux 3500K @@ -2357,3 +2407,4 @@ ZOOMPANEL_ZOOMFITCROPSCREEN;Ausschnitt an Bildschirm anpassen.\nTaste: f ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen.\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - + diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 800e23527..edde8946e 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -26,32 +26,34 @@ HISTORY_MSG_392;W - Residual - Colour Balance HISTORY_MSG_419;Retinex - Colour space HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colours HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Colour correction +HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Colour correction HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid colour shift +HISTORY_MSG_SH_COLORSPACE;S/H - Colourspace MAIN_TAB_COLOR;Colour -MAIN_TOOLTIP_BACKCOLOR0;Background colour of the preview: Theme-based\nShortcut: 9 -MAIN_TOOLTIP_BACKCOLOR1;Background colour of the preview: Black\nShortcut: 9 -MAIN_TOOLTIP_BACKCOLOR2;Background colour of the preview: White\nShortcut: 9 -MAIN_TOOLTIP_BACKCOLOR3;Background colour of the preview: Middle grey\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR0;Background colour of the preview: theme-based\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR1;Background colour of the preview: black\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR2;Background colour of the preview: white\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR3;Background colour of the preview: middle grey\nShortcut: 9 PARTIALPASTE_COLORGROUP;Colour Related Settings PARTIALPASTE_COLORTONING;Colour toning PARTIALPASTE_ICMSETTINGS;Colour management settings PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid colour shift PARTIALPASTE_RAW_FALSECOLOR;False colour suppression +PREFERENCES_APPEARANCE_COLORPICKERFONT;Colour picker font +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask colour +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide colour PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor colour profile PREFERENCES_BEHAVIOR;Behaviour -PREFERENCES_CUTOVERLAYBRUSH;Crop mask colour/transparency PREFERENCES_ICCDIR;Directory containing colour profiles PREFERENCES_INTENT_ABSOLUTE;Absolute Colourimetric PREFERENCES_INTENT_RELATIVE;Relative Colourimetric PREFERENCES_MENUGROUPLABEL;Group "Colour label" PREFERENCES_MONPROFILE;Default colour profile -PREFERENCES_NAVGUIDEBRUSH;Navigator guide colour PREFERENCES_PRTPROFILE;Colour profile -PREFERENCES_SELECTFONT_COLPICKER;Select Colour Picker's font PREFERENCES_TAB_COLORMGR;Colour Management SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colours with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Colour Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -TOOLBAR_TOOLTIP_COLORPICKER;Lockable Colour Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a colour picker\nDrag it around while pressing the left mouse button\nDelete the colour picker with a right mouse button click\nDelete all colour pickers with Shift + Right mouse button click\nRight click away from any colour picker to go back to the Hand tool +TOOLBAR_TOOLTIP_COLORPICKER;Lockable Colour Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Centre of rotation is the geometrical centre of the image. TP_BWMIX_CC_ENABLED;Adjust complementary colour TP_BWMIX_CC_TOOLTIP;Enable to allow automatic adjustment of complementary colours in ROYGCBPM mode. @@ -71,6 +73,7 @@ TP_COLORAPP_TCMODE_COLORF;Colourfulness TP_COLORTONING_COLOR;Colour TP_COLORTONING_LABEL;Colour Toning TP_COLORTONING_LABGRID;L*a*b* colour correction grid +TP_COLORTONING_LABREGIONS;Colour correction regions TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change colour (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. TP_COLORTONING_METHOD_TOOLTIP;"L*a*b* blending", "RGB sliders" and "RGB curves" use interpolated colour blending.\n"Colour balance (Shadows/Midtones/Highlights)" and "Saturation 2 colours" use direct colours.\n\nThe Black-and-White tool can be enabled when using any colour toning method, which allows for colour toning. TP_COLORTONING_SPLITCOCO;Colour Balance Shadows/Midtones/Highlights @@ -84,7 +87,6 @@ TP_DIRPYRDENOISE_MAIN_COLORSPACE;Colour space TP_DIRPYREQUALIZER_ALGO;Skin Colour Range TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fine: closer to the colours of the skin, minimizing the action on other colours\nLarge: avoid more artifacts. TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts in the transitions between skin colours (hue, chroma, luma) and the rest of the image. -TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colourfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colours 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 colour cast. TP_GRADIENT_CENTER;Centre @@ -135,9 +137,10 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !CURVEEDITOR_HIGHLIGHTS;Highlights @@ -161,6 +164,10 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -232,8 +239,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_CLEARPROFILE;Clear !FILEBROWSER_COPYPROFILE;Copy !FILEBROWSER_CURRENT_NAME;Current name: @@ -332,6 +339,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !GENERAL_BEFORE;Before !GENERAL_CANCEL;Cancel !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_DISABLE;Disable !GENERAL_DISABLED;Disabled !GENERAL_ENABLE;Enable @@ -813,12 +821,29 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_490;DRC - Amount !HISTORY_MSG_491;White Balance !HISTORY_MSG_492;RGB Curves !HISTORY_MSG_493;L*a*b* Adjustments -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -931,10 +956,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !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. -!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_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 @@ -994,12 +1015,12 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !MAIN_TOOLTIP_HIDEHP;Show/Hide the left panel (including the history).\nShortcut: l !MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: < !MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: > -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l @@ -1035,6 +1056,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIALOGLABEL;Partial paste processing profile !PARTIALPASTE_DIRPYRDENOISE;Noise reduction @@ -1096,17 +1118,22 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PARTIALPASTE_VIGNETTING;Vignetting correction !PARTIALPASTE_WHITEBALANCE;White balance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_APPLNEXTSTARTUP;restart required -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten -!PREFERENCES_CACHECLEARALL;Clear All -!PREFERENCES_CACHECLEARPROFILES;Clear Processing Profiles -!PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CACHEMAXENTRIES;Maximum number of cache entries !PREFERENCES_CACHEOPTS;Cache Options !PREFERENCES_CACHETHUMBHEIGHT;Maximum thumbnail height @@ -1115,8 +1142,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1150,10 +1177,10 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup... !PREFERENCES_DIRSOFTWARE;Installation directory !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_EXTERNALEDITOR;External Editor !PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FILEFORMAT;File format !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory @@ -1242,18 +1269,16 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_PSPATH;Adobe Photoshop installation directory !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SELECTLANG;Select language -!PREFERENCES_SELECTTHEME;Select theme -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWBASICEXIF;Show basic Exif info !PREFERENCES_SHOWDATETIME;Show date and time !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs @@ -1268,7 +1293,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_TAB_IMPROC;Image Processing !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1350,7 +1374,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop area using Shift-mouse drag +!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift+mouse drag. !TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h !TOOLBAR_TOOLTIP_WB;Spot white balance.\nShortcut: w !TP_BWMIX_ALGO;Algorithm OYCPM @@ -1421,11 +1445,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Editor Tabs Mode,\nAlt-[ - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1434,6 +1454,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORAPP_BADPIXSL;Hot/bad pixel filter !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_S;Saturation (S) !TP_COLORAPP_CHROMA_S_TOOLTIP;Saturation in CIECAM02 differs from L*a*b* and RGB saturation. @@ -1449,8 +1470,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORAPP_CURVEEDITOR2_TOOLTIP;Same usage as with the second exposure tone curve. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1461,14 +1480,13 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1486,11 +1504,9 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1501,6 +1517,24 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_COLORTONING_HUE;Hue !TP_COLORTONING_LAB;L*a*b* blending !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_METHOD;Method @@ -1534,15 +1568,20 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_CROP_H;Height !TP_CROP_LABEL;Crop !TP_CROP_PPI;PPI= -!TP_CROP_SELECTCROP;Select Crop +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_CROP_W;Width -!TP_CROP_X;X -!TP_CROP_Y;Y +!TP_CROP_X;Left +!TP_CROP_Y;Top !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1754,10 +1793,16 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1793,11 +1838,11 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red !TP_RAWCACORR_CASTR;Strength @@ -1829,6 +1874,8 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1894,10 +1941,10 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_W;Width: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1935,7 +1982,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2022,7 +2069,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones !TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE1;Red/Purple @@ -2234,6 +2281,7 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 !TP_WBALANCE_METHOD;Method +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SIZE;Size: !TP_WBALANCE_SOLUX35;Solux 3500K diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index fc2fa83dd..078989905 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -18,9 +18,10 @@ !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !CURVEEDITOR_HIGHLIGHTS;Highlights @@ -44,6 +45,10 @@ !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -116,8 +121,8 @@ !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_CLEARPROFILE;Clear !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_COPYPROFILE;Copy @@ -220,6 +225,7 @@ !GENERAL_BEFORE;Before !GENERAL_CANCEL;Cancel !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_DISABLE;Disable !GENERAL_DISABLED;Disabled !GENERAL_ENABLE;Enable @@ -722,14 +728,32 @@ !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -753,6 +777,7 @@ !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -843,10 +868,6 @@ !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. -!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_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 @@ -903,20 +924,20 @@ !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM;Transform !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. !MAIN_TOOLTIP_HIDEHP;Show/Hide the left panel (including the history).\nShortcut: l !MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: < !MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: > -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l @@ -954,6 +975,7 @@ !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIALOGLABEL;Partial paste processing profile !PARTIALPASTE_DIRPYRDENOISE;Noise reduction @@ -1018,9 +1040,15 @@ !PARTIALPASTE_VIGNETTING;Vignetting correction !PARTIALPASTE_WHITEBALANCE;White balance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_APPLNEXTSTARTUP;restart required !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1028,9 +1056,11 @@ !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten -!PREFERENCES_CACHECLEARALL;Clear All -!PREFERENCES_CACHECLEARPROFILES;Clear Processing Profiles -!PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CACHEMAXENTRIES;Maximum number of cache entries !PREFERENCES_CACHEOPTS;Cache Options !PREFERENCES_CACHETHUMBHEIGHT;Maximum thumbnail height @@ -1039,8 +1069,8 @@ !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1056,7 +1086,6 @@ !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1075,10 +1104,10 @@ !PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup... !PREFERENCES_DIRSOFTWARE;Installation directory !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout +!PREFERENCES_EDITORLAYOUT;Editor layout !PREFERENCES_EXTERNALEDITOR;External Editor !PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FILEFORMAT;File format !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory @@ -1135,7 +1164,6 @@ !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OUTDIR;Output Directory !PREFERENCES_OUTDIRFOLDER;Save to folder @@ -1174,19 +1202,16 @@ !PREFERENCES_PSPATH;Adobe Photoshop installation directory !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_SELECTLANG;Select language -!PREFERENCES_SELECTTHEME;Select theme -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWBASICEXIF;Show basic Exif info !PREFERENCES_SHOWDATETIME;Show date and time !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs @@ -1202,7 +1227,6 @@ !PREFERENCES_TAB_IMPROC;Image Processing !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1286,8 +1310,8 @@ !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool -!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop area using Shift-mouse drag +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. +!TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift+mouse drag. !TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h !TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Center of rotation is the geometrical center of the image. !TOOLBAR_TOOLTIP_WB;Spot white balance.\nShortcut: w @@ -1365,11 +1389,7 @@ !TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Editor Tabs Mode,\nAlt-[ - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. !TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1380,6 +1400,7 @@ !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1399,8 +1420,6 @@ !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1412,14 +1431,13 @@ !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1439,11 +1457,9 @@ !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1457,6 +1473,25 @@ !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1496,15 +1531,20 @@ !TP_CROP_H;Height !TP_CROP_LABEL;Crop !TP_CROP_PPI;PPI= -!TP_CROP_SELECTCROP;Select Crop +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_CROP_W;Width -!TP_CROP_X;X -!TP_CROP_Y;Y +!TP_CROP_X;Left +!TP_CROP_Y;Top !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1586,7 +1626,6 @@ !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS;Auto Levels !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_BLACKLEVEL;Black @@ -1738,10 +1777,16 @@ !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1779,11 +1824,11 @@ !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1816,6 +1861,8 @@ !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FALSECOLOR;False color suppression steps @@ -1883,10 +1930,10 @@ !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_W;Width: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1924,7 +1971,7 @@ !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2012,7 +2059,7 @@ !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2234,6 +2281,7 @@ !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 !TP_WBALANCE_METHOD;Method +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SIZE;Size: !TP_WBALANCE_SOLUX35;Solux 3500K diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 5402f6579..3260d167c 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -60,20 +60,28 @@ #60 2013-01-03 OdeLama, translation for v4.0.12 of untranslated/changed strings #61 2014-01-14 mapelo, bug correction and small enhancements. #62 2014-10-10 fotger +#63 2018-12-09 Faber777 ABOUT_TAB_BUILD;Versión ABOUT_TAB_CREDITS;Créditos ABOUT_TAB_LICENSE;Licencia ABOUT_TAB_RELEASENOTES;Notas de la versión ABOUT_TAB_SPLASH;Splash +ADJUSTER_RESET_TO_DEFAULT;Restablece los valores predeterminados BATCHQUEUE_AUTOSTART;Inicio automático BATCHQUEUE_AUTOSTARTHINT;Iniciar automáticamente el procesamiento en cuanto llega un nuevo trabajo BATCHQUEUE_DESTFILENAME;Ruta y nombre del archivo +BATCHQUEUE_STARTSTOPHINT;Iniciar o detener el procesamiento de las imágenes en la cola.\nTecla de Atajo: Ctrl + s BATCH_PROCESSING;Proceso por lotes +CURVEEDITOR_AXIS_IN;I: +CURVEEDITOR_AXIS_LEFT_TAN;LT: +CURVEEDITOR_AXIS_OUT;O: +CURVEEDITOR_AXIS_RIGHT_TAN;RT: CURVEEDITOR_CURVE;Curva CURVEEDITOR_CURVES;Curvas CURVEEDITOR_CUSTOM;Personalizado CURVEEDITOR_DARKS;Oscuros +CURVEEDITOR_EDITPOINT_HINT;Active la edición de los valores de entrada / salida del nodo. \nHaga clic con el botón derecho en un nodo para seleccionarlo. \nHaga clic con el botón derecho en el espacio vacío para anular la selección del nodo. CURVEEDITOR_HIGHLIGHTS;Luces altas CURVEEDITOR_LIGHTS;Luces CURVEEDITOR_LINEAR;Lineal @@ -90,6 +98,20 @@ CURVEEDITOR_TOOLTIPPASTE;Pegar curva desde el portapapeles CURVEEDITOR_TOOLTIPSAVE;Guardar curva actual CURVEEDITOR_TYPE;Tipo: DIRBROWSER_FOLDERS;Carpetas +DONT_SHOW_AGAIN;No muestres este mensaje otra vez. +DYNPROFILEEDITOR_DELETE;Borrar +DYNPROFILEEDITOR_EDIT;Editar +DYNPROFILEEDITOR_EDIT_RULE;Editar regla de perfil dinámico +DYNPROFILEEDITOR_ENTRY_TOOLTIP;La coincidencia no distingue entre mayúsculas y minúsculas. \nUtilice el prefijo "re:" para ingresar \nUna expresión regular. +DYNPROFILEEDITOR_IMGTYPE_ANY;Cualquier +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Cambio de píxel +DYNPROFILEEDITOR_IMGTYPE_STD;Estándar +DYNPROFILEEDITOR_MOVE_DOWN;Mover hacia abajo +DYNPROFILEEDITOR_MOVE_UP;Mover hacia arriba +DYNPROFILEEDITOR_NEW;Nuevo +DYNPROFILEEDITOR_NEW_RULE;Nueva regla de perfil dinámico +DYNPROFILEEDITOR_PROFILE;Perfil de procesamiento EDITWINDOW_TITLE;Edición de imagen EDIT_OBJECT_TOOLTIP;Muestra un instrumento en la ventana de previo, el cual le permitirá ajustar esta herramienta. EDIT_PIPETTE_TOOLTIP;Para agregar un punto de ajuste en la curva , mantenga presionada la tecla Ctrl mientras oprime el botón izquierdo del ratón sobre el punto deseado en el previo de la imagen.\nPara ajustar el punto, mantenga presionada la tecla Ctrl mientras oprime el botón izquierdo del ratón sobre la correspondiente area en el previo y muevase hacia arriba y/o hacia abajo, logrando un ajuste fino del punto en la curva. Si desea un ajuste mayor, libere la tecla Ctrl. @@ -98,6 +120,7 @@ EXIFFILTER_CAMERA;Cámara EXIFFILTER_EXPOSURECOMPENSATION;Compensación de exposición (EV) EXIFFILTER_FILETYPE;Tipo de archivo EXIFFILTER_FOCALLEN;Distancia focal +EXIFFILTER_IMAGETYPE;Tipo de imagen EXIFFILTER_ISO;ISO EXIFFILTER_LENS;Lente EXIFFILTER_METADATAFILTER;Activar filtros de metadatos @@ -115,11 +138,14 @@ EXIFPANEL_RESET;Restablecer EXIFPANEL_RESETALL;Restablecer todo EXIFPANEL_RESETALLHINT;Restablecer todos los atributos a los valores predeterminados EXIFPANEL_RESETHINT;Restablecer atributos seleccionados a los valores predeterminados +EXIFPANEL_SHOWALL;Mostrar todo EXIFPANEL_SUBDIRECTORY;Subcarpeta +EXPORT_BYPASS;Procesamiento de pasos a bypass EXPORT_BYPASS_ALL;Seleccionar / Deseleccionar todo EXPORT_BYPASS_DEFRINGE;Saltar Quitar borde púrpura EXPORT_BYPASS_DIRPYRDENOISE;Saltar Reducción de ruido EXPORT_BYPASS_DIRPYREQUALIZER;Saltar Contraste por niveles de detalle +EXPORT_BYPASS_EQUALIZER;Bypass Wavelet niveles EXPORT_BYPASS_RAW_CA;Saltar [raw] Corrección de aberración cromática EXPORT_BYPASS_RAW_CCSTEPS;Saltar [raw] Supresión de falso color EXPORT_BYPASS_RAW_DCB_ENHANCE;Saltar [raw] Aplicar pasos de mejora DCB @@ -137,8 +163,12 @@ EXPORT_FASTEXPORTOPTIONS;Opciones de Exportación Rápida EXPORT_INSTRUCTIONS;Las opciones de Exportación Rápida proporcionan la posibilidad de saltarse pasos de revelado que consumen mucho tiempo y recursos, ejecutando en su lugar el procesamiento de la cola utilizando los ajustes de Exportación Rápida. Se recomienda este método para generar más rápidamente imágenes de menor resolución: cuando la velocidad es prioritaria, o cuando se desea cambiar el tamaño de una o muchas imágenes de salida sin modificar sus parámetros de revelado. EXPORT_MAXHEIGHT;Altura máxima: EXPORT_MAXWIDTH;Anchura máxima: +EXPORT_PIPELINE;Fuente de procesamiento EXPORT_PUTTOQUEUEFAST; Poner en la cola de Exportación Rápida EXPORT_RAW_DMETHOD;Método de interpolado +EXPORT_USE_FAST_PIPELINE;Dedicado (procesamiento completo en imagen redimensionada) +EXPORT_USE_FAST_PIPELINE_TIP;Usar un conducto de procesamiento dedicado para las imágenes en el modo Exportación rápida, que cambia la velocidad por la calidad. El cambio de tamaño de la imagen se realiza lo antes posible, en lugar de hacerlo al final como en el conducto normal. La aceleración puede ser importante, pero prepárese para ver elementos extraños y una degradación general de la calidad de salida. +EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) EXTPROGTARGET_1;Raw EXTPROGTARGET_2;procesado en cola FILEBROWSER_ADDDELTEMPLATE;Añadir/Borrar plantillas... @@ -171,6 +201,7 @@ FILEBROWSER_PARTIALPASTEPROFILE;Pegar perfil parcialmente FILEBROWSER_PASTEPROFILE;Pegar perfil FILEBROWSER_POPUPCANCELJOB;Cancelar trabajo FILEBROWSER_POPUPCOLORLABEL;Etiquetar con un color +FILEBROWSER_POPUPCOLORLABEL0;Etiqueta: Ninguna FILEBROWSER_POPUPCOLORLABEL1;Etiqueta: Rojo FILEBROWSER_POPUPCOLORLABEL2;Etiqueta: Amarillo FILEBROWSER_POPUPCOLORLABEL3;Etiqueta: Verde @@ -203,12 +234,13 @@ FILEBROWSER_POPUPUNTRASH;Sacar de la papelera FILEBROWSER_QUERYBUTTONHINT;Borrar la búsqueda FILEBROWSER_QUERYHINT;Escriba parte del nombre del archivo a buscar, o una lista separada con comas.\nP.ej. 1001,1004,1199\n\nCtrl-F Para poner el foco en el campo Buscar.\nEnter Para iniciar la búsqueda.\nEsc Para limpiar.\nShift-Esc Para quitar el foco. FILEBROWSER_QUERYLABEL; Buscar: -FILEBROWSER_RANK1_TOOLTIP;Rango 1 *\nAtajoShift-1 -FILEBROWSER_RANK2_TOOLTIP;Rango 2 **\nAtajoShift-2 -FILEBROWSER_RANK3_TOOLTIP;Rango 3 ***\nAtajoShift-3 -FILEBROWSER_RANK4_TOOLTIP;Rango 4 ****\nAtajoShift-4 -FILEBROWSER_RANK5_TOOLTIP;Rango 5 *****\nAtajoShift-5 +FILEBROWSER_RANK1_TOOLTIP;Rango 1 *\nTecla de AtajoShift-1 +FILEBROWSER_RANK2_TOOLTIP;Rango 2 **\nTecla de AtajoShift-2 +FILEBROWSER_RANK3_TOOLTIP;Rango 3 ***\nTecla de AtajoShift-3 +FILEBROWSER_RANK4_TOOLTIP;Rango 4 ****\nTecla de AtajoShift-4 +FILEBROWSER_RANK5_TOOLTIP;Rango 5 *****\nTecla de AtajoShift-5 FILEBROWSER_RENAMEDLGLABEL;Renombrar archivo +FILEBROWSER_RESETDEFAULTPROFILE;Restablecen a los predeterminados FILEBROWSER_SELECTDARKFRAME;Seleccionar Toma Negra… FILEBROWSER_SELECTFLATFIELD;Seleccionar Campo Plano… FILEBROWSER_SHOWCOLORLABEL1HINT;Mostrar imágenes etiquetadas con Rojo Alt-1 @@ -216,30 +248,42 @@ FILEBROWSER_SHOWCOLORLABEL2HINT;Mostrar imágenes etiquetadas con Amarillo Al FILEBROWSER_SHOWCOLORLABEL3HINT;Mostrar imágenes etiquetadas con Verde Alt-3 FILEBROWSER_SHOWCOLORLABEL4HINT;Mostrar imágenes etiquetadas con Azul Alt-4 FILEBROWSER_SHOWCOLORLABEL5HINT;Mostrar imágenes etiquetadas con Púrpura Alt-5 -FILEBROWSER_SHOWDIRHINT;Quitar todos los filtros.\nAtajo: d -FILEBROWSER_SHOWEDITEDHINT;Mostrar imágenes editadas.\nAtajo: 7 -FILEBROWSER_SHOWEDITEDNOTHINT;Mostrar imágenes no editadas.\nAtajo: 6 -FILEBROWSER_SHOWEXIFINFO;Mostrar datos Exif.\nAtajo: i\n\nAtajo en modo editor simple: Alt-I -FILEBROWSER_SHOWRANK1HINT;Mostrar imágenes con 1 estrella.\nAtajo: 1 -FILEBROWSER_SHOWRANK2HINT;Mostrar imágenes con 2 estrellas.\nAtajo: 2 -FILEBROWSER_SHOWRANK3HINT;Mostrar imágenes con 3 estrellas.\nAtajo: 3 -FILEBROWSER_SHOWRANK4HINT;Mostrar imágenes con 4 estrellas.\nAtajo: 4 -FILEBROWSER_SHOWRANK5HINT;Mostrar imágenes con 5 estrellas.\nAtajo: 5 -FILEBROWSER_SHOWRECENTLYSAVEDHINT;Mostrar imágenes guardadas recientemente.\nAtajo: Alt-7 -FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Mostrar imágenes no guardadas recientemente.\nAtajo: Alt-6 -FILEBROWSER_SHOWTRASHHINT;Mostrar el contenido de la papelera.\nAtajo: Ctrl-t -FILEBROWSER_SHOWUNCOLORHINT;Mostrar imágenes sin etiqueta de color.\nAtajo: Alt-0 -FILEBROWSER_SHOWUNRANKHINT;Mostrar imágenes sin rango.\nAtajo: 0 +FILEBROWSER_SHOWDIRHINT;Quitar todos los filtros.\nTecla de Atajo: d +FILEBROWSER_SHOWEDITEDHINT;Mostrar imágenes editadas.\nTecla de Atajo: 7 +FILEBROWSER_SHOWEDITEDNOTHINT;Mostrar imágenes no editadas.\nTecla de Atajo: 6 +FILEBROWSER_SHOWEXIFINFO;Mostrar datos Exif.\nTecla de Atajo: i\n\nTecla de Atajo en modo editor simple: Alt-I +FILEBROWSER_SHOWNOTTRASHHINT;Mostrar solo las imágenes no borradas. +FILEBROWSER_SHOWORIGINALHINT;Muestre solo imágenes originales. \nCuando existen varias imágenes con el mismo nombre de archivo pero con diferentes extensiones, la que se considera original es aquella cuya extensión está más cerca de la parte superior de la lista de extensiones analizadas en Preferencias> Explorador de archivos> Extensiones analizadas. +FILEBROWSER_SHOWRANK1HINT;Mostrar imágenes con 1 estrella.\nTecla de Atajo: 1 +FILEBROWSER_SHOWRANK2HINT;Mostrar imágenes con 2 estrellas.\nTecla de Atajo: 2 +FILEBROWSER_SHOWRANK3HINT;Mostrar imágenes con 3 estrellas.\nTecla de Atajo: 3 +FILEBROWSER_SHOWRANK4HINT;Mostrar imágenes con 4 estrellas.\nTecla de Atajo: 4 +FILEBROWSER_SHOWRANK5HINT;Mostrar imágenes con 5 estrellas.\nTecla de Atajo: 5 +FILEBROWSER_SHOWRECENTLYSAVEDHINT;Mostrar imágenes guardadas recientemente.\nTecla de Atajo: Alt-7 +FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Mostrar imágenes no guardadas recientemente.\nTecla de Atajo: Alt-6 +FILEBROWSER_SHOWTRASHHINT;Mostrar el contenido de la papelera.\nTecla de Atajo: Ctrl-t +FILEBROWSER_SHOWUNCOLORHINT;Mostrar imágenes sin etiqueta de color.\nTecla de Atajo: Alt-0 +FILEBROWSER_SHOWUNRANKHINT;Mostrar imágenes sin rango.\nTecla de Atajo: 0 FILEBROWSER_THUMBSIZE;Tamaño miniatura -FILEBROWSER_UNRANK_TOOLTIP;Sin Rango\nAtajoShift - 0 -FILEBROWSER_ZOOMINHINT;Agrandar miniatura.\nAtajo: +\n\nAtajo en modo editor simple: Alt-+ -FILEBROWSER_ZOOMOUTHINT;Reducir miniatura.\nAtajo: -\n\nAtajo en modo editor simple: Alt-- +FILEBROWSER_UNRANK_TOOLTIP;Sin Rango\nTecla de AtajoShift - 0 +FILEBROWSER_ZOOMINHINT;Agrandar miniatura.\nTecla de Atajo: +\n\nTecla de Atajo en modo editor simple: Alt-+ +FILEBROWSER_ZOOMOUTHINT;Reducir miniatura.\nTecla de Atajo: -\n\nTecla de Atajo en modo editor simple: Alt-- +FILECHOOSER_FILTER_ANY;Todos los archivos +FILECHOOSER_FILTER_COLPROF;Perfiles de color +FILECHOOSER_FILTER_CURVE;Archivos de curva +FILECHOOSER_FILTER_LCP;Perfiles de corrección de lentes. +FILECHOOSER_FILTER_PP;Processing profiles +FILECHOOSER_FILTER_SAME;Same format as current photo +FILECHOOSER_FILTER_TIFF;Archivos TIFF GENERAL_ABOUT;Acerca de GENERAL_AFTER;Después +GENERAL_APPLY;Aplicar +GENERAL_ASIMAGE;Como imagen GENERAL_AUTO;Automático GENERAL_BEFORE;Antes GENERAL_CANCEL;Cancelar GENERAL_CLOSE;Cerrar +GENERAL_CURRENT;Actual GENERAL_DISABLE;Desactivar GENERAL_DISABLED;Desactivado GENERAL_ENABLE;Activar @@ -250,16 +294,22 @@ GENERAL_NA;n/a GENERAL_NO;No GENERAL_NONE;Ninguno GENERAL_OK;Aceptar +GENERAL_OPEN;Abrir GENERAL_PORTRAIT;Retrato +GENERAL_RESET;Reiniciar GENERAL_SAVE;Guardar +GENERAL_SAVE_AS;Guardar como... +GENERAL_SLIDER;Deslizador GENERAL_UNCHANGED;(Sin cambios) GENERAL_WARNING;Advertencia +GIMP_PLUGIN_INFO;¡Bienvenido al complemento GIMP de RawTherapee! \nUna vez que haya terminado de editar, simplemente cierre la ventana principal de RawTherapee y la imagen se importará automáticamente en GIMP. HISTOGRAM_TOOLTIP_B;Mostrar/Ocultar Histograma Azul HISTOGRAM_TOOLTIP_BAR;Mostrar/Ocultar barra indicadora RGB\nHacer clic con el botón derecho del ratón en la previsualización para congelar/descongelar HISTOGRAM_TOOLTIP_CHRO;Mostrar/Ocultar Histograma de cromaticidad HISTOGRAM_TOOLTIP_FULL;Cambiar entre Histograma completo o escalado HISTOGRAM_TOOLTIP_G;Mostrar/Ocultar Histograma Verde HISTOGRAM_TOOLTIP_L;Mostrar/Ocultar Histograma de Luminancia CIELAB +HISTOGRAM_TOOLTIP_MODE;Alterne entre la escala lineal, log-linear y log-log del histograma. HISTOGRAM_TOOLTIP_R;Mostrar/Ocultar Histograma Rojo HISTOGRAM_TOOLTIP_RAW;Mostrar/ocultar Histograma Raw HISTORY_CHANGED;Cambiado @@ -360,7 +410,7 @@ HISTORY_MSG_91;RR - Crominancia Maestra HISTORY_MSG_92;RR - Gamma HISTORY_MSG_93;Contraste/niveles de detalle - Valor HISTORY_MSG_94;Contraste por niveles de detalle -HISTORY_MSG_95;Lab - Cromaticidad +HISTORY_MSG_95;Lab - Cromaticidad (saturación) HISTORY_MSG_96;Curva 'a' HISTORY_MSG_97;Curva 'b' HISTORY_MSG_98;Método de Interpolación @@ -401,7 +451,7 @@ HISTORY_MSG_132;Reducción de ruido de crominancia HISTORY_MSG_133;Gamma de salida HISTORY_MSG_134;Gamma libre HISTORY_MSG_135;Gamma libre -HISTORY_MSG_136;Pendiente de gamma +HISTORY_MSG_136;Pendiente de (la curva) gamma HISTORY_MSG_137;Nivel de negro - Verde 1 HISTORY_MSG_138;Nivel de negro - Rojo HISTORY_MSG_139;Nivel de negro - Azul @@ -415,7 +465,7 @@ HISTORY_MSG_146;Enfoque de bordes (EB) HISTORY_MSG_147;EB - Sólo luminancia HISTORY_MSG_148;Micro-contraste HISTORY_MSG_149;Micro-contraste - matriz 3×3 -HISTORY_MSG_150;Reducción artefactos/ruido post interpolado +HISTORY_MSG_150;Reducción elementos extraños/ruido post interpolado HISTORY_MSG_151;Vibranza (Vib) HISTORY_MSG_152;Vib - Tonos pastel HISTORY_MSG_153;Vib - Tonos saturados @@ -431,12 +481,14 @@ HISTORY_MSG_162;Mapeo tonal (MT) HISTORY_MSG_163;Curvas RGB - Rojo HISTORY_MSG_164;Curvas RGB - Verde HISTORY_MSG_165;Curvas RGB - Azul +HISTORY_MSG_166;Exposición - Restablecer HISTORY_MSG_167;Método de Interpolación HISTORY_MSG_168;Curva 'CC' HISTORY_MSG_169;Curva 'CM' HISTORY_MSG_170;Vib - Curva HISTORY_MSG_171;Curva 'LC' HISTORY_MSG_172;Lab - Restringe 'LC' +HISTORY_MSG_173;NR - Recuperación del detalle HISTORY_MSG_174;CIECAM02 HISTORY_MSG_175;CAM02 - Adaptación CAT02 HISTORY_MSG_176;CAM02 - Entorno de visualización @@ -466,6 +518,7 @@ HISTORY_MSG_199;CAM02 - Histogramas de salida HISTORY_MSG_200;CAMO2 - Mapeo tonal HISTORY_MSG_201;RR - Crominancia Ro,Ve HISTORY_MSG_202;RR - Crominancia Az,Am +HISTORY_MSG_203;NR - Espacio de color HISTORY_MSG_204;Pasos de mejora LMMSE HISTORY_MSG_205;CAM02 - Píxel caliente/muerto HISTORY_MSG_206;CAT02 - Luz de escena auto. @@ -496,7 +549,9 @@ HISTORY_MSG_231;B&N - Curva 'Antes' HISTORY_MSG_232;B&N - Tipo de curva 'Antes' HISTORY_MSG_233;B&N - Curva 'Después' HISTORY_MSG_234;B&N - Tipo de curva 'Después' +HISTORY_MSG_235;B&N - Mezcla canales Auto. HISTORY_MSG_236;--Sin uso-- +HISTORY_MSG_237;B&N - Mezclador HISTORY_MSG_238;FG - Difuminado HISTORY_MSG_239;FG - Intensidad HISTORY_MSG_240;FG - Centro @@ -515,6 +570,7 @@ HISTORY_MSG_252;CbDL - Tono de piel HISTORY_MSG_253;CbDL - Reducir elementos extraños HISTORY_MSG_254;CbDL - Matiz de piel HISTORY_MSG_255;RR - Filtro Median +HISTORY_MSG_256;NR - La mediana - Tipo HISTORY_MSG_257;Tonificación de Color HISTORY_MSG_258;TC - Color HISTORY_MSG_259;TC - Opacidad @@ -531,6 +587,7 @@ HISTORY_MSG_269;TC - Altas Luces - Rojo HISTORY_MSG_270;TC - Altas Luces - Verde HISTORY_MSG_271;TC - Altas Luces - Azul HISTORY_MSG_272;TC - Balance +HISTORY_MSG_273;TC - Restablecer HISTORY_MSG_274;TC - Sat. de Sombras HISTORY_MSG_275;TC - Sat. de Altas Luces HISTORY_MSG_276;TC - Opacidad @@ -554,47 +611,346 @@ HISTORY_MSG_293;Simulación de Fílmico HISTORY_MSG_294;Simulación de Fílmico - Intensidad HISTORY_MSG_295;Simulación de Fílmico - Filme HISTORY_MSG_296;RR - Modular luminancia +HISTORY_MSG_297;NR - Modo HISTORY_MSG_298;Filtro Pixel Muerto +HISTORY_MSG_299;NR - Curva de crominancia +HISTORY_MSG_300;- +HISTORY_MSG_301;NR - Luma control +HISTORY_MSG_302;NR - Método crominancia(color) +HISTORY_MSG_303;NR - Método crominancia(color) +HISTORY_MSG_304;W - Niveles de contraste +HISTORY_MSG_305;Wavelet niveles +HISTORY_MSG_306;W - Proceso +HISTORY_MSG_307;W - Proceso +HISTORY_MSG_308;W - dirección del Proceso +HISTORY_MSG_309;W - ES - Detalle +HISTORY_MSG_310;W - Residual - cielo tar/prot +HISTORY_MSG_311;W - Wavelet niveles +HISTORY_MSG_312;W - Residual - Umbral de sombras +HISTORY_MSG_313;W - Cromaticidad(color) - Saturados/pastel +HISTORY_MSG_314;W - Gamut - Reduce elementos extraños +HISTORY_MSG_315;W - Residual - Contraste +HISTORY_MSG_316;W - Gamut- Piel tar/prot +HISTORY_MSG_317;W - Gamut - Tono de piel +HISTORY_MSG_318;W - Contraste - Niveles luces altas +HISTORY_MSG_319;W - Contraste - Rango de luces altas +HISTORY_MSG_320;W - Contraste - Rango de las sombras +HISTORY_MSG_321;W - Contraste - Niveles de sombra +HISTORY_MSG_322;W - Gamut - Evita el cambio de color. +HISTORY_MSG_323;W - ES - Contraste local +HISTORY_MSG_324;W - Cromaticidad(colores) - Pastel +HISTORY_MSG_325;W - Cromaticidad(color) - Saturado +HISTORY_MSG_326;W - Cromaticidad(color) - Método +HISTORY_MSG_327;W - Contraste - Aplicar a +HISTORY_MSG_328;W - Cromaticidad - Fuerza de enlace +HISTORY_MSG_329;W - Tonificación - Opacidad RG +HISTORY_MSG_330;W - Tonificación - Opacidad BY +HISTORY_MSG_331;W - Niveles de contraste - Extra +HISTORY_MSG_332;W - Método de mosaico +HISTORY_MSG_333;W - Sombras-Residual +HISTORY_MSG_334;W - Cromaticidad(color)-Residual +HISTORY_MSG_335;W - Umbral de luces-Residual +HISTORY_MSG_336;W - Umbral de luces altas-Residual +HISTORY_MSG_337;W - Tono del cielo-Residual +HISTORY_MSG_338;W - ES - Radio +HISTORY_MSG_339;W - ES - Fuerza +HISTORY_MSG_340;W - Fuerza +HISTORY_MSG_341;W - Rendimiento del enfoque +HISTORY_MSG_342;W - ES-Primer nivel +HISTORY_MSG_343;W - Niveles de crominancia(color) +HISTORY_MSG_344;W - Método de crominancia (color)sl/cur +HISTORY_MSG_345;W - ES - Contraste local +HISTORY_MSG_346;W - ES - Método de contraste local +HISTORY_MSG_347;W - Quitar ruido - Nivel 1 +HISTORY_MSG_348;W - Quitar ruido - Nivel 2 +HISTORY_MSG_349;W - Quitar ruido - Nivel 3 +HISTORY_MSG_350;W - ES - Edge detection +HISTORY_MSG_351;W - Residual-curva HH +HISTORY_MSG_352;W - Fondo +HISTORY_MSG_353;W - ES - Sensibilidad del gradiente +HISTORY_MSG_354;W - ES - Mejorado +HISTORY_MSG_355;W - ES - Umbral bajo +HISTORY_MSG_356;W - ES - Umbral alto +HISTORY_MSG_357;W - Quitar ruido -Enlace con ES +HISTORY_MSG_358;W - Gamut - CH +HISTORY_MSG_359;Vivo/Muerto - Umbral +HISTORY_MSG_360;TM - gamma +HISTORY_MSG_361;W - Final - Balance del cromaticidad(color) +HISTORY_MSG_362;W - Residual - Método de compresión +HISTORY_MSG_363;W - Residual - Fuerza comprensiva +HISTORY_MSG_364;W - Final - Balance del contraste +HISTORY_MSG_365;W - Final - balance Delta +HISTORY_MSG_366;W - Residual - Compresión gamma +HISTORY_MSG_367;W - Final - curva de contraste 'Después' +HISTORY_MSG_368;W - Final - Balance de contraste +HISTORY_MSG_369;W - Final - Método de balance +HISTORY_MSG_370;W - Final - Curva de contraste local +HISTORY_MSG_371;Enfocar después del cambio de tamaño +HISTORY_MSG_372;PRS USM - Radio +HISTORY_MSG_373;PRS USM - Cantidad +HISTORY_MSG_374;PRS USM - Límite +HISTORY_MSG_375;PRS USM - Enfocar solo los bordes +HISTORY_MSG_376;PRS USM - Radio de detección de bordes +HISTORY_MSG_377;PRS USM - Tolerancia del borde +HISTORY_MSG_378;PRS USM - Control del halo +HISTORY_MSG_379;PRS USM - Cantidad de control del halo +HISTORY_MSG_380;PRS - Método +HISTORY_MSG_381;PRS RLD - Radio +HISTORY_MSG_382;PRS RLD - Cantidad +HISTORY_MSG_383;PRS RLD - Amortiguador +HISTORY_MSG_384;PRS RLD - Iteraciones +HISTORY_MSG_385;W - Residual - Balance del color +HISTORY_MSG_386;W - Residual - CB Verde Alto +HISTORY_MSG_387;W - Residual - CB Azul Alto +HISTORY_MSG_388;W - Residual - CB Verde medio +HISTORY_MSG_389;W - Residual - CB Azul medio +HISTORY_MSG_390;W - Residual - CB Verde Bajo +HISTORY_MSG_391;W - Residual - CB Azul Bajo +HISTORY_MSG_392;W - Residual - CB Reiniciar +HISTORY_MSG_393;DCP - revisar tabla +HISTORY_MSG_394;DCP - Punto de partida en la exposición +HISTORY_MSG_395;DCP - Tabla base +HISTORY_MSG_396;W - Contraste sub-herramienta +HISTORY_MSG_397;W - Cromaticidad(color) sub-herramienta +HISTORY_MSG_398;W - ES sub-herramienta +HISTORY_MSG_399;W - Residual sub-herramienta +HISTORY_MSG_400;W - Final sub-herramienta +HISTORY_MSG_401;W - Viraje sub-herramienta +HISTORY_MSG_402;W - Quitar ruido sub-herramienta +HISTORY_MSG_403;W - ES - Edge sensitivity +HISTORY_MSG_404;W - ES - Amplificación de base +HISTORY_MSG_405;W - Quitar ruido - Nivel 4 +HISTORY_MSG_406;W - ES - Píxeles vecinos +HISTORY_MSG_407;Retinex - Método +HISTORY_MSG_408;Retinex - Radio +HISTORY_MSG_409;Retinex - Contraste +HISTORY_MSG_410;Retinex - Offset +HISTORY_MSG_411;Retinex - Fuerza +HISTORY_MSG_412;Retinex - Gradiente gaussiano +HISTORY_MSG_413;Retinex - Contraste +HISTORY_MSG_414;Retinex - Histograma - Lab +HISTORY_MSG_415;Retinex - Transmisión +HISTORY_MSG_416;Retinex +HISTORY_MSG_417;Retinex - Transmisión mediana +HISTORY_MSG_418;Retinex - Límite +HISTORY_MSG_419;Retinex - Espacio de color +HISTORY_MSG_420;Retinex - Histograma - HSL +HISTORY_MSG_421;Retinex - Gamma +HISTORY_MSG_422;Retinex - Gamma +HISTORY_MSG_423;Retinex - Gamma slope +HISTORY_MSG_424;Retinex - HL Límite +HISTORY_MSG_425;Retinex - Base del registro +HISTORY_MSG_426;Retinex - Ecualizador(ajuste) de tono +HISTORY_MSG_427;Intento de reproducción de salida +HISTORY_MSG_428;Monitoreo del intento de representación +HISTORY_MSG_429;Retinex - Iteraciones +HISTORY_MSG_430;Retinex - Transmisión gradiente +HISTORY_MSG_431;Retinex - Fuerza del gradiente +HISTORY_MSG_432;Retinex - M - Luces altas +HISTORY_MSG_433;Retinex - M - Luces altas TW +HISTORY_MSG_434;Retinex - M - Sombras +HISTORY_MSG_435;Retinex - M - Sombras TW +HISTORY_MSG_436;Retinex - M - Radio +HISTORY_MSG_437;Retinex - M - Método +HISTORY_MSG_438;Retinex - M - Equalizer +HISTORY_MSG_439;Retinex - Proceso +HISTORY_MSG_440;CbDL - Método +HISTORY_MSG_441;Retinex - Ganancia de la transmisión +HISTORY_MSG_442;Retinex - Escala +HISTORY_MSG_443;Compensación del punto negro de salida +HISTORY_MSG_444;WB - Sesgo temporal +HISTORY_MSG_445;Raw sub-imágen +HISTORY_MSG_449;PS - ISO adaptación +HISTORY_MSG_452;PS - Mostrar movimiento +HISTORY_MSG_453;PS - Mostrar máscara solamente +HISTORY_MSG_457;PS - Verificar rojo/azul +HISTORY_MSG_462;PS - Verificar verde +HISTORY_MSG_464;PS - Máscara de desenfoque del movimiento +HISTORY_MSG_465;PS - Radio de desenfoque +HISTORY_MSG_468;PS - Rellenar fallos +HISTORY_MSG_469;PS - Mediano/a +HISTORY_MSG_471;PS - Corrección del movimiento +HISTORY_MSG_472;PS - Transiciones suaves +HISTORY_MSG_473;PS - Utilizar LMMSE +HISTORY_MSG_474;PS - Ecualizar (ajustar) +HISTORY_MSG_475;PS - Equalizar(ajustar) el canal +HISTORY_MSG_476;CAM02 - Fuera de tempera +HISTORY_MSG_477;CAM02 - Fuera del verde +HISTORY_MSG_478;CAM02 - Yb Fuera +HISTORY_MSG_479;CAM02 - CAT02 adaptación incorrecta +HISTORY_MSG_480;CAM02 - Salida automática CAT02 +HISTORY_MSG_481;CAM02 - Temperatura de la scena +HISTORY_MSG_482;CAM02 - Escena verde +HISTORY_MSG_483;CAM02 - Yb escena +HISTORY_MSG_484;CAM02 - Auto Yb escena +HISTORY_MSG_485;Corrección de lentes +HISTORY_MSG_486;Corrección de lente - Cámara +HISTORY_MSG_487;Lente Corrección - Lente +HISTORY_MSG_488;HDR Mapeo de tonos +HISTORY_MSG_489;HDR TM - Límite +HISTORY_MSG_490;HDR TM - Cantidad +HISTORY_MSG_491;Balance de Blancos +HISTORY_MSG_492;RGB Curvas +HISTORY_MSG_493;L*a*b* Ajustes +HISTORY_MSG_CLAMPOOG;Recortar la gama de colores +HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Corrección del color +HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Corrección de color +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Canal +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - máscara de región C +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - Mascara h +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - luminosidad +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L máscara +HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - Lista +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - desenfoque la máscara de región +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - Compensar la region +HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - Poder de la región +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturacion +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT -Muetra la máscara de región +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - Región de la pendiente +HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Profundidad +HISTORY_MSG_DEHAZE_ENABLED;Haze Eliminación +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Mostrar mapa de profundidad +HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Fuerza +HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Doble demosaicado - Umbral automático +HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Doble demosaicado - Umbral de contraste +HISTORY_MSG_HISTMATCHING;Curva de tono auto-emparejado +HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Salida - Primaria +HISTORY_MSG_ICM_OUTPUT_TEMP;Salida - ICC-v4 iluminante D +HISTORY_MSG_ICM_OUTPUT_TYPE;Salida - Tipo +HISTORY_MSG_ICM_WORKING_GAMMA;Trabajando - Gamma +HISTORY_MSG_ICM_WORKING_SLOPE;Trabajando - pendiente +HISTORY_MSG_ICM_WORKING_TRC_METHOD;Trabajando - TRC método +HISTORY_MSG_LOCALCONTRAST_AMOUNT;Contraste cantidad-local +HISTORY_MSG_LOCALCONTRAST_DARKNESS;Contraste Oscuridad-local +HISTORY_MSG_LOCALCONTRAST_ENABLED;Contraste local +HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Contraste luminosidad-local +HISTORY_MSG_LOCALCONTRAST_RADIUS;Contraste radio-local +HISTORY_MSG_METADATA_MODE;Modo de copia de metadatos +HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Umbral de contraste +HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaicado método para el movimiento. +HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Dirección del filtro de ruido de línea +HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF filtro de líneas +HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Umbral de contraste +HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Corrección - Iteraciones +HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw Corrección de CA bruta - Evite el cambio de color +HISTORY_MSG_RAW_BORDER;Raw margen/borde +HISTORY_MSG_RESIZE_ALLOWUPSCALING;Redimensionar - Permitir escalado +HISTORY_MSG_SHARPENING_CONTRAST;Enfoque - Umbral de contraste +HISTORY_MSG_SH_COLORSPACE;S/H - Espacio de color +HISTORY_MSG_SOFTLIGHT_ENABLED;Luz tenue +HISTORY_MSG_SOFTLIGHT_STRENGTH;Luz tenue - Fuerza +HISTORY_MSG_TM_FATTAL_ANCHOR;HDR TM - Ancla HISTORY_NEWSNAPSHOT;Agregar -HISTORY_NEWSNAPSHOT_TOOLTIP;Atajo: Alt-s +HISTORY_NEWSNAPSHOT_TOOLTIP;Tecla de Atajo: Alt-s HISTORY_SNAPSHOT;Instantánea HISTORY_SNAPSHOTS;Instantáneas +ICCPROFCREATOR_COPYRIGHT;Copyright: +ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Restablecer los derechos de autor predeterminados, otorgados a "RawTherapee, CC0" +ICCPROFCREATOR_CUSTOM;Personalizado +ICCPROFCREATOR_DESCRIPTION;Descripción: +ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Anexar los valores de gamma y pendiente a la descripción. +ICCPROFCREATOR_DESCRIPTION_TOOLTIP;Deje vacío para establecer la descripción por defecto. +ICCPROFCREATOR_GAMMA;Gamma (curva) +ICCPROFCREATOR_ICCVERSION;ICC versión: +ICCPROFCREATOR_ILL;Illuminante: +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;Valor por defecto +ICCPROFCREATOR_ILL_INC;StdA 2856K +ICCPROFCREATOR_ILL_TOOLTIP;Solo se puede configurar el iluminante para los perfiles ICC v4. +ICCPROFCREATOR_PRIMARIES;Primarios: +ICCPROFCREATOR_PRIM_ACESP0;ACES AP0 +ICCPROFCREATOR_PRIM_ACESP1;ACES AP1 +ICCPROFCREATOR_PRIM_ADOBE;Adobe RGB (1998) +ICCPROFCREATOR_PRIM_BEST;MejorRGB +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;Rojo X +ICCPROFCREATOR_PRIM_REDY;Rojo Y +ICCPROFCREATOR_PRIM_SRGB;sRGB +ICCPROFCREATOR_PRIM_TOOLTIP;Solo puede establecer (colores) primarios personalizados para los perfiles ICC v4. +ICCPROFCREATOR_PRIM_WIDEG;Gamma Amplia +ICCPROFCREATOR_PROF_V2;ICC v2 +ICCPROFCREATOR_PROF_V4;ICC v4 +ICCPROFCREATOR_SAVEDIALOG_TITLE;Guardar el perfil ICC como ... +ICCPROFCREATOR_SLOPE;Pendiente de la curva gamma +ICCPROFCREATOR_TRC_PRESET;Curva de respuesta de tono: IPTCPANEL_CATEGORY;Categoría +IPTCPANEL_CATEGORYHINT;Identifica el tema de la imagen en la opinión del proveedor. IPTCPANEL_CITY;Ciudad +IPTCPANEL_CITYHINT;Ingrese el nombre de la ciudad representada en esta imagen. IPTCPANEL_COPYHINT;Copiar ajustes IPTC al portapapeles +IPTCPANEL_COPYRIGHT;aviso de copyright +IPTCPANEL_COPYRIGHTHINT;Ingrese un Aviso sobre el propietario actual de los derechos de autor de esta imagen, como © 2008 Jane Doe. IPTCPANEL_COUNTRY;País +IPTCPANEL_COUNTRYHINT;Ingrese el nombre del país representado en esta imagen. +IPTCPANEL_CREATOR;Creador +IPTCPANEL_CREATORHINT;Ingrese el nombre de la persona que creó esta imagen. +IPTCPANEL_CREATORJOBTITLE;Título del trabajo del creador +IPTCPANEL_CREATORJOBTITLEHINT;Ingrese el título de trabajo de la persona que aparece en el campo Creador. IPTCPANEL_CREDIT;Créditos IPTCPANEL_CREDITHINT;Identifica el proveedor de la imagen, que no necesariamente el dueño o creador. IPTCPANEL_DATECREATED;Fecha de creación +IPTCPANEL_DATECREATEDHINT;Ingrese la fecha en que se tomó la imagen. +IPTCPANEL_DESCRIPTION;Descripción +IPTCPANEL_DESCRIPTIONHINT;Ingrese una "leyenda" que describa quién, qué y por qué de lo que está sucediendo en esta imagen, esto podría incluir nombres de personas y / o su rol en la acción que se lleva a cabo dentro de la imagen. +IPTCPANEL_DESCRIPTIONWRITER;Descripción del escritor +IPTCPANEL_DESCRIPTIONWRITERHINT;Ingrese el nombre de la persona involucrada en escribir, editar o corregir la descripción de la imagen. IPTCPANEL_EMBEDDED;Incrustado IPTCPANEL_EMBEDDEDHINT;Restablecer a los datos IPTC incrustados en el archivo de la imagen IPTCPANEL_HEADLINE;Encabezado +IPTCPANEL_HEADLINEHINT;Ingrese un breve resumen publicable o resumen de los contenidos de la imagen. IPTCPANEL_INSTRUCTIONS;Instrucciones +IPTCPANEL_INSTRUCTIONSHINT;Ingrese información sobre embargos u otras restricciones no cubiertas por el campo de Copyright. IPTCPANEL_KEYWORDS;Palabras clave +IPTCPANEL_KEYWORDSHINT;Ingrese cualquier número de palabras clave, términos o frases utilizadas para expresar el tema en la imagen. IPTCPANEL_PASTEHINT;Pegar ajustes IPTC desde el portapapeles +IPTCPANEL_PROVINCE;Provincia o Estado +IPTCPANEL_PROVINCEHINT;Ingrese el nombre de la provincia o estado que se muestra en esta imagen. IPTCPANEL_RESET;Restablecer IPTCPANEL_RESETHINT;Restablecer a los ajustes predeterminados del perfil. IPTCPANEL_SOURCE;Fuente +IPTCPANEL_SOURCEHINT;Ingrese o edite el nombre de una persona o parte que tiene un rol en la cadena de suministro de contenido, como una persona o entidad de la que recibió esta imagen. +IPTCPANEL_SUPPCATEGORIES;Categorias suplementarias +IPTCPANEL_SUPPCATEGORIESHINT;Además purifica el tema de la imagen. IPTCPANEL_TITLE;Título +IPTCPANEL_TITLEHINT;Ingrese un nombre corto legible y humano para la imagen, este puede ser el nombre del archivo. +IPTCPANEL_TRANSREFERENCE;Identificación del trabajo +IPTCPANEL_TRANSREFERENCEHINT;Ingrese un número o identificador necesario para el control o seguimiento del flujo de trabajo. +LENSPROFILE_CORRECTION_AUTOMATCH;Parámetros de corrección auto-emparejados +LENSPROFILE_CORRECTION_LCPFILE;LCP archivo +LENSPROFILE_CORRECTION_MANUAL;Parámetros de corrección manual +LENSPROFILE_LENS_WARNING;Advertencia: el factor de recorte utilizado para el perfilado de la lente es mayor que el factor de recorte de la cámara, los resultados pueden ser incorrectos. MAIN_BUTTON_FULLSCREEN;Pantalla completa +MAIN_BUTTON_ICCPROFCREATOR;Creador de perfiles ICC MAIN_BUTTON_NAVNEXT_TOOLTIP;Navegar hasta la imagen Siguiente a la que está abierta en el editor:\nShift-F4\n\nPara navegar hasta la imagen Siguiente a aquella cuya miniatura está seleccionada en el Explorador de Archivos:\nF4 MAIN_BUTTON_NAVPREV_TOOLTIP;Navegar hasta la imagen Anterior a la que está abierta en el editor:\nShift-F3\n\nPara navegar hasta la imagen Anterior a aquella cuya miniatura está seleccionada en el Explorador de Archivos:\nF3 MAIN_BUTTON_NAVSYNC_TOOLTIP;Sincronizar el Navegador de Archivos con el Editor para mostrar la miniatura de la imagen actualmente abierta y quitar los filtros en el Navegador de Archivos:\nx\n\nPara hacer lo dicho anteriormente, pero sin quitar los filtros en el Navegador de Archivos:\ny\n(Note que la miniatura del archivo abierto no será mostrada si los filtros la excluyen). MAIN_BUTTON_PREFERENCES;Preferencias MAIN_BUTTON_PUTTOQUEUE;Poner en la cola -MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Añadir imagen actual a la cola de procesamiento.\nAtajo: Ctrl+B +MAIN_BUTTON_PUTTOQUEUE_TOOLTIP;Añadir imagen actual a la cola de procesamiento.\nTecla de Atajo: Ctrl+B MAIN_BUTTON_SAVE;Guardar imagen -MAIN_BUTTON_SAVE_TOOLTIP;Guardar imagen actual.\nAtajo: Ctrl+S +MAIN_BUTTON_SAVE_TOOLTIP;Guardar imagen actual.\nTecla de Atajo: Ctrl+S MAIN_BUTTON_SENDTOEDITOR;Abrir con editor -MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Editar imagen actual en editor externo.\nAtajo: Ctrl+E -MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Mostrar/ocultar todos los paneles laterales.\nAtajo: m +MAIN_BUTTON_SENDTOEDITOR_TOOLTIP;Editar imagen actual en editor externo.\nTecla de Atajo: Ctrl+E +MAIN_BUTTON_SHOWHIDESIDEPANELS_TOOLTIP;Mostrar/ocultar todos los paneles laterales.\nTecla de Atajo: m MAIN_BUTTON_UNFULLSCREEN;Salir de Pantalla completa MAIN_FRAME_BATCHQUEUE;Cola de lotes -MAIN_FRAME_BATCHQUEUE_TOOLTIP; Cola de lotes.\nAtajo: Ctrl-F3 +MAIN_FRAME_BATCHQUEUE_TOOLTIP; Cola de lotes.\nTecla de Atajo: Ctrl-F3 MAIN_FRAME_EDITOR;Editor -MAIN_FRAME_EDITOR_TOOLTIP; Editor.\nAtajo: Ctrl-F4 +MAIN_FRAME_EDITOR_TOOLTIP; Editor.\nTecla de Atajo: Ctrl-F4 MAIN_FRAME_FILEBROWSER;Explorador de archivos -MAIN_FRAME_FILEBROWSER_TOOLTIP; Explorador de archivos.\nAtajo: Ctrl-F2 +MAIN_FRAME_FILEBROWSER_TOOLTIP; Explorador de archivos.\nTecla de Atajo: Ctrl-F2 MAIN_FRAME_PLACES;Ubicaciones MAIN_FRAME_PLACES_ADD;Añadir MAIN_FRAME_PLACES_DEL;Borrar @@ -611,50 +967,70 @@ MAIN_MSG_OPERATIONCANCELLED;Operación cancelada MAIN_MSG_PATHDOESNTEXIST;La ruta\n\n%1\n\nno existe. Por favor, establezca una ruta correcta en la ventana de Preferencias. MAIN_MSG_QOVERWRITE;¿Quiere sobre-escribirlo? MAIN_MSG_SETPATHFIRST;Para poder usar esta función, primero tiene que establecer una \nruta objetivo en la ventana de Preferencias! +MAIN_MSG_TOOMANYOPENEDITORS;Demasiados editores abiertos.\nPor favor cierre un editor para continuar. MAIN_MSG_WRITEFAILED;Falla al escribir\n\n"%1"\n\nAsegurese de que el folder exista y que usted tenga permiso de escritura sobre él. +MAIN_TAB_ADVANCED;Avanzado +MAIN_TAB_ADVANCED_TOOLTIP;Tecla de Atajo: Alt-w MAIN_TAB_COLOR;Color -MAIN_TAB_COLOR_TOOLTIP;Atajo: Alt-C +MAIN_TAB_COLOR_TOOLTIP;Tecla de Atajo: Alt-C MAIN_TAB_DETAIL;Detalle -MAIN_TAB_DETAIL_TOOLTIP;Atajo: Alt-D +MAIN_TAB_DETAIL_TOOLTIP;Tecla de Atajo: Alt-D MAIN_TAB_DEVELOP;Revelar MAIN_TAB_EXIF;Exif MAIN_TAB_EXPORT; Exportación Rápida MAIN_TAB_EXPOSURE;Exposición -MAIN_TAB_EXPOSURE_TOOLTIP;Atajo: Alt-E +MAIN_TAB_EXPOSURE_TOOLTIP;Tecla de Atajo: Alt-E MAIN_TAB_FILTER;Filtro +MAIN_TAB_INSPECT; Inspeccionar MAIN_TAB_IPTC;IPTC MAIN_TAB_METADATA;Metadatos -MAIN_TAB_METADATA_TOOLTIP;Atajo: Alt-M +MAIN_TAB_METADATA_TOOLTIP;Tecla de Atajo: Alt-M MAIN_TAB_RAW;Raw -MAIN_TAB_RAW_TOOLTIP;Atajo: Alt-R +MAIN_TAB_RAW_TOOLTIP;Tecla de Atajo: Alt-R MAIN_TAB_TRANSFORM;Transformar -MAIN_TAB_TRANSFORM_TOOLTIP;Atajo: Alt-T -MAIN_TOOLTIP_BACKCOLOR0;Color de fondo de la previsualización: Color del tema\nAtajo: 8 -MAIN_TOOLTIP_BACKCOLOR1;Color de fondo de la previsualización: Negro\nAtajo: 9 -MAIN_TOOLTIP_BACKCOLOR2;Color de fondo de la previsualización: Blanco\nAtajo: 0 +MAIN_TAB_TRANSFORM_TOOLTIP;Tecla de Atajo: Alt-T +MAIN_TOOLTIP_BACKCOLOR0;Color de fondo de la previsualización: Color del tema\nTecla de Atajo: 8 +MAIN_TOOLTIP_BACKCOLOR1;Color de fondo de la previsualización: Negro\nTecla de Atajo: 9 +MAIN_TOOLTIP_BACKCOLOR2;Color de fondo de la previsualización: Blanco\nTecla de Atajo: 0 +MAIN_TOOLTIP_BACKCOLOR3;Color de fondo de la vista previa: Medio gris \nMétodo rápido: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Bloquear / Desbloquear la vista Antes\n\nBloquear: la vista Antes permanece inalterada - \nútil para evaluar el efecto acumulativo de varias herramientas.\nAdemás, se puede hacer una comparación con cualquier estado en el Historial\n\nDesbloquear: la vista Antes seguirá a la vista Después un paso por detrás, mostrando la imagen antes del efecto de la herramienta que se está usando -MAIN_TOOLTIP_HIDEHP;Mostrar/Ocultar panel izquierdo (incluyendo historial).\nAtajo: i -MAIN_TOOLTIP_INDCLIPPEDH;Indicación de luces altas recortadas.\nAtajo: < -MAIN_TOOLTIP_INDCLIPPEDS;Indicación de sombras recortadas.\nAtajo: > -MAIN_TOOLTIP_PREVIEWB;Previsualización Canal azul.\nAtajo: b -MAIN_TOOLTIP_PREVIEWFOCUSMASK;Previsualización Máscara de Foco.\nAtajo: Shift-F\n\nMás preciso en imágenes con poca profundidad de campo, bajo ruido y a mayores niveles de aumento\n\nPara mejorar la precisión en imágenes con ruido evalúe usando menor aumento (10%-30%)\n\nPreview es realizada más lentamente cuando la Máscara de Foco esta activa. -MAIN_TOOLTIP_PREVIEWG;Previsualización Canal verde.\nAtajo: g -MAIN_TOOLTIP_PREVIEWL;Previsualización Luminosidad.\nAtajo: v\n\n0.299*R + 0.587*G + 0.114*B -MAIN_TOOLTIP_PREVIEWR;Previsualización Canal rojo.\nAtajo: r -MAIN_TOOLTIP_QINFO; Información breve de la imagen.\nAtajo: i -MAIN_TOOLTIP_SHOWHIDELP1;Mostrar/ocultar el panel izquierdo.\nAtajo: l -MAIN_TOOLTIP_SHOWHIDERP1;Mostrar/ocultar el panel derecho.\nAtajo: Alt-L -MAIN_TOOLTIP_SHOWHIDETP1;Mostrar/ocultar el panel superior.\nAtajo: Shift-L +MAIN_TOOLTIP_HIDEHP;Mostrar/Ocultar panel izquierdo (incluyendo historial).\nTecla de Atajo: i +MAIN_TOOLTIP_INDCLIPPEDH;Indicación de luces altas recortadas.\nTecla de Atajo: < +MAIN_TOOLTIP_INDCLIPPEDS;Indicación de sombras recortadas.\nTecla de Atajo: > +MAIN_TOOLTIP_PREVIEWB;Previsualización Canal azul.\nTecla de Atajo: b +MAIN_TOOLTIP_PREVIEWFOCUSMASK;Previsualización Máscara de Foco.\nTecla de Atajo: Shift-F\n\nMás preciso en imágenes con poca profundidad de campo, bajo ruido y a mayores niveles de aumento\n\nPara mejorar la precisión en imágenes con ruido evalúe usando menor aumento (10%-30%)\n\nLa vista previa es realizada más lentamente cuando la Máscara de Foco esta activa. +MAIN_TOOLTIP_PREVIEWG;Previsualización Canal verde.\nTecla de Atajo: g +MAIN_TOOLTIP_PREVIEWL;Previsualización Luminosidad.\Tecla de Atajo: v\n\n0.299*R + 0.587*G + 0.114*B +MAIN_TOOLTIP_PREVIEWR;Previsualización Canal rojo.\nTecla de Atajo: r +MAIN_TOOLTIP_PREVIEWSHARPMASK;Obtenga una vista previa de la máscara de contraste de nitidez . \n Tecla de atajo: p \n\nSólo funciona cuando la nitidez está activada y el zoom> = 100%. +MAIN_TOOLTIP_QINFO; Información breve de la imagen.\nTecla de Atajo : i +MAIN_TOOLTIP_SHOWHIDELP1;Mostrar/ocultar el panel izquierdo.\nTecla de Atajo: l +MAIN_TOOLTIP_SHOWHIDERP1;Mostrar/ocultar el panel derecho.\nTecla de Atajo: Alt-L +MAIN_TOOLTIP_SHOWHIDETP1;Mostrar/ocultar el panel superior.\nTecla de Atajo: Shift-L MAIN_TOOLTIP_THRESHOLD;Umbral -MAIN_TOOLTIP_TOGGLE;Cambiar vista antes/después.\nAtajo: Shift-B +MAIN_TOOLTIP_TOGGLE;Cambiar vista antes/después.\nTecla de Atajo: Shift-B +MONITOR_PROFILE_SYSTEM;Sistema por defecto +NAVIGATOR_B;B: +NAVIGATOR_G;G: +NAVIGATOR_H;H: +NAVIGATOR_LAB_A;a*: +NAVIGATOR_LAB_B;b*: +NAVIGATOR_LAB_L;L*: NAVIGATOR_NA; -- +NAVIGATOR_R;R: +NAVIGATOR_S;S: +NAVIGATOR_V;V: NAVIGATOR_XY_FULL;Ancho = %1, Alto = %2 NAVIGATOR_XY_NA;x = n/a, y = n/a +OPTIONS_BUNDLED_MISSING;No se pudo encontrar el perfil "% 1 " incluido. \nSe podría dañar su instalación. \nnLos valores internos predeterminados se usarán en su lugar. +OPTIONS_DEFIMG_MISSING;No se pudo encontrar el perfil predeterminado para fotos sin formato o no está establecido. \nPor favor, compruebe el directorio de sus perfiles, puede que falte o esté dañado. \n "% 1 "se utilizará en su lugar +OPTIONS_DEFRAW_MISSING;No se pudo encontrar el perfil predeterminado para fotos sin procesar o no está configurado. \nPor favor, compruebe el directorio de sus perfiles, puede que falte o esté dañado. \n "% 1 < / b> "será usado en su lugar. +PARTIALPASTE_ADVANCEDGROUP;Ajustes avanzados PARTIALPASTE_BASICGROUP;Ajustes básicos PARTIALPASTE_CACORRECTION;Corrección de aberraciones cromáticas PARTIALPASTE_CHANNELMIXER;Mezclador de canales PARTIALPASTE_CHANNELMIXERBW;Blanco y Negro -PARTIALPASTE_COARSETRANS;Rotar 90º/ voltear +PARTIALPASTE_COARSETRANS;Rotar 90°/ voltear PARTIALPASTE_COLORAPP;Modelo CIE 2002 de apariencia de color PARTIALPASTE_COLORGROUP;Ajustes de color PARTIALPASTE_COLORTONING;Tonificación de Color @@ -664,12 +1040,14 @@ PARTIALPASTE_CROP;Recortar PARTIALPASTE_DARKFRAMEAUTOSELECT;Auto Selección de la Toma Negra PARTIALPASTE_DARKFRAMEFILE;Archivo con Toma negra PARTIALPASTE_DEFRINGE;Eliminar borde púrpura +PARTIALPASTE_DEHAZE;Remoción de neblina PARTIALPASTE_DETAILGROUP;Ajustes de detalle PARTIALPASTE_DIALOGLABEL;Pegar parcialmente perfil de procesamiento PARTIALPASTE_DIRPYRDENOISE;Reducción de ruido PARTIALPASTE_DIRPYREQUALIZER;Contraste por niveles de detalle PARTIALPASTE_DISTORTION;Corrección de Distorsión PARTIALPASTE_EPD;Mapeo tonal +PARTIALPASTE_EQUALIZER;Niveles Wavelet PARTIALPASTE_EVERYTHING;Todo PARTIALPASTE_EXIFCHANGES;Cambio en datos Exif PARTIALPASTE_EXPOSURE;Exposición @@ -679,6 +1057,7 @@ PARTIALPASTE_FLATFIELDBLURRADIUS;Radio de difuminado de campo plano PARTIALPASTE_FLATFIELDBLURTYPE;Tipo de difuminado de campo plano PARTIALPASTE_FLATFIELDCLIPCONTROL;Control de recorte de Campo Plano PARTIALPASTE_FLATFIELDFILE;Archivo de campo plano +PARTIALPASTE_GRADIENT;Graduar filtro PARTIALPASTE_HSVEQUALIZER;Ecualizador HSV PARTIALPASTE_ICMSETTINGS;Ajustes de Gestión de Color PARTIALPASTE_IMPULSEDENOISE;Impulsar Reducción de ruido @@ -686,6 +1065,8 @@ PARTIALPASTE_IPTCINFO;Información IPTC PARTIALPASTE_LABCURVE;Ajustes Lab PARTIALPASTE_LENSGROUP;Ajustes relativos al lente PARTIALPASTE_LENSPROFILE;Perfil de corrección de lente +PARTIALPASTE_LOCALCONTRAST;Contraste local +PARTIALPASTE_METADATA;Modo de metadatos PARTIALPASTE_METAGROUP;Ajustes de metadatos PARTIALPASTE_PCVIGNETTE;Filtro quitar viñeteado PARTIALPASTE_PERSPECTIVE;Perspectiva @@ -693,29 +1074,52 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Aplicar filtro Pixel Muerto PARTIALPASTE_PREPROCESS_GREENEQUIL;Equilibrio del verde PARTIALPASTE_PREPROCESS_HOTPIXFILT;Aplicar filtro Pixel Caliente PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtro de ruido de línea +PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF filtro de líneas +PARTIALPASTE_PRSHARPENING;Enfocar después del cambio de tamaño PARTIALPASTE_RAWCACORR_AUTO;Auto corrección de Aberración Cromática +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA evitar el cambio de color +PARTIALPASTE_RAWCACORR_CAREDBLUE;CA Rojo & Azul PARTIALPASTE_RAWEXPOS_BLACK;Nivel de negro PARTIALPASTE_RAWEXPOS_LINEAR;Corrección de punto blanco PARTIALPASTE_RAWEXPOS_PRESER;Preservar Luces Altas PARTIALPASTE_RAWGROUP;Ajustes Raw +PARTIALPASTE_RAW_BORDER;Raw margen/borde PARTIALPASTE_RAW_DCBENHANCE;Aplicar paso de mejora DCB PARTIALPASTE_RAW_DCBITERATIONS;Número de iteraciones DCB PARTIALPASTE_RAW_DMETHOD;Método de interpolado PARTIALPASTE_RAW_FALSECOLOR;Pasos de supresión de falso color de interpolado +PARTIALPASTE_RAW_IMAGENUM;Sub-imagen PARTIALPASTE_RAW_LMMSEITERATIONS;Pasos de mejora LMMSE +PARTIALPASTE_RAW_PIXELSHIFT;Cambio de píxel PARTIALPASTE_RESIZE;Cambiar tamaño +PARTIALPASTE_RETINEX;Retinex PARTIALPASTE_RGBCURVES;Curvas RGB PARTIALPASTE_ROTATION;Rotar PARTIALPASTE_SHADOWSHIGHLIGHTS;Sombras/Luces altas PARTIALPASTE_SHARPENEDGE;Bordes PARTIALPASTE_SHARPENING;Enfoque PARTIALPASTE_SHARPENMICRO;Micro-contraste +PARTIALPASTE_SOFTLIGHT;Luz tenue +PARTIALPASTE_TM_FATTAL;Mapeo de tonos HDR PARTIALPASTE_VIBRANCE;Vibranza PARTIALPASTE_VIGNETTING;Corrección de viñeteo PARTIALPASTE_WHITEBALANCE;Equilibrio de blancos PREFERENCES_ADD;Añadir +PREFERENCES_APPEARANCE;Apariencia +PREFERENCES_APPEARANCE_COLORPICKERFONT;Selector del color de la fuente +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Recortar la máscara de color +PREFERENCES_APPEARANCE_MAINFONT;Fuente principal +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Color de la guía del navegador +PREFERENCES_APPEARANCE_THEME;Tema PREFERENCES_APPLNEXTSTARTUP;requiere reinicio +PREFERENCES_AUTLISLOW;Bajo +PREFERENCES_AUTLISMAX;Max - Promedio de todos los mosaicos +PREFERENCES_AUTLISSTD;Alto +PREFERENCES_AUTLISVLOW;Ninguno +PREFERENCES_AUTLOW;Bajo PREFERENCES_AUTOMONPROFILE;Usar perfil de color del monitor principal en el sistema operativo +PREFERENCES_AUTOSAVE_TP_OPEN;Guardar automáticamente las herramientas contraídas/expandidas \nEstado antes de salir +PREFERENCES_AUTSTD;Estandar PREFERENCES_BATCH_PROCESSING;Procesamiento por lotes PREFERENCES_BEHADDALL;Todo para 'Agregar' PREFERENCES_BEHADDALLHINT;Establezca todos los parámetros del modo Agregar.\nLos ajustes de parámetros en el panel de la herramienta de lotes serán deltas de los valores guardados @@ -723,17 +1127,37 @@ PREFERENCES_BEHAVIOR;Comportamiento PREFERENCES_BEHSETALL;Todo para 'Establecer' PREFERENCES_BEHSETALLHINT;Todos los parámetros para el modo Establecer.\nLos ajustes de parámetros en el panel de la herramienta de lotes serán serán absolutos, se mostrarán los valores vigentes PREFERENCES_BLACKBODY;Tungsteno +PREFERENCES_CACHECLEAR;Borrar PREFERENCES_CACHECLEARALL;Borrar todo PREFERENCES_CACHECLEARPROFILES;Borrar perfiles PREFERENCES_CACHECLEARTHUMBS;Borrar miniaturas +PREFERENCES_CACHECLEAR_ALL;Borrar todos los archivos en caché: +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Borre todos los archivos en caché excepto los perfiles de procesamiento en caché: +PREFERENCES_CACHECLEAR_ONLYPROFILES;Borrar solo los perfiles de procesamiento en caché: +PREFERENCES_CACHECLEAR_SAFETY;Sólo se borran los archivos en el caché. Los perfiles de procesamiento almacenados junto con las imágenes de origen no se tocan. PREFERENCES_CACHEMAXENTRIES;Cantidad máxima de entradas en la memoria intermedia PREFERENCES_CACHEOPTS;Opciones de memoria intermedia PREFERENCES_CACHETHUMBHEIGHT;Altura máxima de las miniaturas PREFERENCES_CIEART;Optimización CIECAM02 +PREFERENCES_CIEART_FRAME;Configuración específica de CIECAM02 PREFERENCES_CIEART_LABEL;Usar precisión flotante simple en lugar de doble. PREFERENCES_CIEART_TOOLTIP;Si se habilita, los cálculos CIECAM02 se realizan con precisión flotante simple en lugar de doble. Esto provee un pequeño aumento en la velocidad de cálculo a expensas de una casi imperceptible pérdida de calidad PREFERENCES_CLIPPINGIND;Indicación de recortes +PREFERENCES_CLUTSCACHE;HaldCLUT Cache +PREFERENCES_CLUTSCACHE_LABEL;Número máximo de CLUTs en caché PREFERENCES_CLUTSDIR;Directorio HaldCLUT +PREFERENCES_CMMBPC;Compensación de punto negro +PREFERENCES_CROP;Edición del corte +PREFERENCES_CROP_AUTO_FIT;Zoom automático para adaptarse al área de recorte +PREFERENCES_CROP_GUIDES;Guías mostradas al no editar el recorte. +PREFERENCES_CROP_GUIDES_FRAME;Cuadro +PREFERENCES_CROP_GUIDES_FULL;Original +PREFERENCES_CROP_GUIDES_NONE;Ninguno +PREFERENCES_CURVEBBOXPOS;Posición de la curva copiar y pegar nodos +PREFERENCES_CURVEBBOXPOS_ABOVE;Encima +PREFERENCES_CURVEBBOXPOS_BELOW;Abajo +PREFERENCES_CURVEBBOXPOS_LEFT;Izquierda +PREFERENCES_CURVEBBOXPOS_RIGHT;Derecha PREFERENCES_CUSTPROFBUILD;Programa generador de perfiles de procesamiento de imagen del usuario PREFERENCES_CUSTPROFBUILDHINT;Archivo ejecutable (o script) invocado un nuevo perfil de procesamiento inicial debe ser generado para una imagen.\n\nLa ruta del archivo de comunicación (estilo .ini) es agregado como parámetro de comando en línea. Éste contiene diversos parámetros requeridos y metadatos Exif de la imagen para permitir la generación de perfiles de procesamientos basados en reglas.\n\nADVERTENCIA:Usted es responsable de colocar comillas donde se requieren cuando se usan rutas conteniendo espacios en blanco. PREFERENCES_CUSTPROFBUILDKEYFORMAT;Clave de formato @@ -741,22 +1165,28 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nombre PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;ID Etiqueta PREFERENCES_CUSTPROFBUILDPATH;Ruta al programa ejecutable PREFERENCES_CUTOVERLAYBRUSH;Recortar máscara de color/transparencia -PREFERENCES_D50;5000ºK -PREFERENCES_D55;5500ºK -PREFERENCES_D60;6000ºK -PREFERENCES_D65;6500ºK +PREFERENCES_D50;5000°K +PREFERENCES_D50_OLD;5000°K +PREFERENCES_D55;5500°K +PREFERENCES_D60;6000°K +PREFERENCES_D65;6500°K PREFERENCES_DARKFRAMEFOUND;Encontrado PREFERENCES_DARKFRAMESHOTS;disparos PREFERENCES_DARKFRAMETEMPLATES;plantillas PREFERENCES_DATEFORMAT;Formato de fecha PREFERENCES_DATEFORMATHINT;Puede usar las siguientes variables :\n%y : año\n%m : mes\n%d : dia\n\nPor ejemplo, la fecha en formato Húngaro es: \n%y/%m/%d +PREFERENCES_DAUB_LABEL;Use las wavelets D6 de Daubechies en lugar de D4 +PREFERENCES_DAUB_TOOLTIP;Las herramientas de reducción de ruido y niveles de wavelet utilizan una wavelet madre de Debauchies. Si elige D6 en lugar de D4, aumenta el número de coeficientes de Daubechies ortogonales y probablemente aumenta la calidad de los niveles de pequeña escala. \nNo hay diferencia entre los dos, en el uso de memoria o de tiempo de procesamiento. PREFERENCES_DIRDARKFRAMES;Carpeta con las Tomas Negras +PREFERENCES_DIRECTORIES;Directorios PREFERENCES_DIRHOME;Carpeta de usuario PREFERENCES_DIRLAST;Última carpeta visitada PREFERENCES_DIROTHER;Otro PREFERENCES_DIRSELECTDLG;Seleccionar carpeta de imágenes en el arranque... PREFERENCES_DIRSOFTWARE;Carpeta de instalación +PREFERENCES_EDITORCMDLINE;Línea de comando personalizada PREFERENCES_EDITORLAYOUT;Disposición del editor +PREFERENCES_EXPAUT;Experto PREFERENCES_EXTERNALEDITOR;Editor externo PREFERENCES_FBROWSEROPTS;Opciones del explorador de archivos/Miniaturas PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barra de herramientas del explorador en una sola fila (deseleccionar para pantallas de baja resolución) @@ -770,27 +1200,44 @@ PREFERENCES_FLUOF7;Fluorescente F7 PREFERENCES_FLUOF11;Fluorescente F11 PREFERENCES_FORIMAGE;Para fotos de tipo diferente a raw PREFERENCES_FORRAW;Para fotos Raw +PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;La misma altura en miniatura entre la tira de película y el explorador de archivos +PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Tener un tamaño separado,en las miniaturas, requerirá más tiempo de procesamiento cada vez que alterne entre la única pestaña Editor y el Explorador de archivos. PREFERENCES_GIMPPATH;Carpeta de instalación de GIMP PREFERENCES_GREY;Luminancia (%) Yb del dispositivo de salida PREFERENCES_GREY05;Yb=05 CIE L#30 PREFERENCES_GREY10;Yb=10 CIE L#40 PREFERENCES_GREY15;Yb=15 CIE L#45 PREFERENCES_GREY18;Yb=18 CIE L#50 +PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 PREFERENCES_GREY23;Yb=23 CIE L#55 PREFERENCES_GREY30;Yb=30 CIE L#60 PREFERENCES_GREY40;Yb=40 CIE L#70 +PREFERENCES_GREYSC;Escena Yb luminancia (%) +PREFERENCES_GREYSC18;Yb=18 CIE L#50 +PREFERENCES_GREYSCA;Automático PREFERENCES_HISTOGRAMPOSITIONLEFT;Histograma en panel izquierdo PREFERENCES_HISTOGRAMWORKING;Usar perfil de trabajo para el histograma principal y el navegador -PREFERENCES_HISTOGRAM_TOOLTIP;Si está activado, el perfil de trabajo se utiliza para renderizar el histograma principal y el panel navegador, de lo contrario se utiliza el perfil de Gamma Corregida de salida. +PREFERENCES_HISTOGRAM_TOOLTIP;Si está activado, el perfil de trabajo se utiliza para renderizar el histograma principal y el panel navegador, de lo contrario se utiliza el perfil de Gamma de la Corrección de salida. PREFERENCES_HLTHRESHOLD;Umbral de luces altas cortadas PREFERENCES_ICCDIR;Carpeta con perfiles de color ICC +PREFERENCES_IMG_RELOAD_NEEDED;Estos cambios requieren que la imagen se vuelva a cargar (o que se abra una nueva imagen) para que tenga efecto. PREFERENCES_IMPROCPARAMS;Parámetros de procesamiento de imágenes predeterminados +PREFERENCES_INSPECT_LABEL;Inspeccionar +PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Número máximo de imágenes en caché +PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Establezca el número máximo de imágenes almacenadas en la memoria caché cuando se desplaza sobre ellas en el explorador de archivos;\nLos sistemas con poca RAM (2 GB) deben mantener este valor establecido en 1 o 2. PREFERENCES_INTENT_ABSOLUTE;Colorimétrico absoluto PREFERENCES_INTENT_PERCEPTUAL;Perceptual PREFERENCES_INTENT_RELATIVE;Colorimétrico relativo PREFERENCES_INTENT_SATURATION;Saturación PREFERENCES_INTERNALTHUMBIFUNTOUCHED;Mostrar miniatura JPEG incrustada si foto Raw no se ha editado +PREFERENCES_LANG;Idioma PREFERENCES_LANGAUTODETECT;Usar idioma del sistema +PREFERENCES_LEVAUTDN;Nivel de supresión de ruido +PREFERENCES_LEVDN;Tamaño de celda +PREFERENCES_LISS;Suavizado automático multizona +PREFERENCES_MAX;Maxi (baldoza) +PREFERENCES_MAXRECENTFOLDERS;Número máximo de carpetas recientes +PREFERENCES_MED;Medio(Tile/2) PREFERENCES_MENUGROUPEXTPROGS;Grupo "Abrir con" PREFERENCES_MENUGROUPFILEOPERATIONS;Grupo "Operaciones de archivo" PREFERENCES_MENUGROUPLABEL;Grupo "Etiquetado con color" @@ -798,53 +1245,104 @@ PREFERENCES_MENUGROUPPROFILEOPERATIONS;Grupo "Operaciones de Perfil de Procesami PREFERENCES_MENUGROUPRANK;Grupo "Asignar Rango" PREFERENCES_MENUOPTIONS;Opciones de menú de contexto PREFERENCES_METADATA;Metadatos +PREFERENCES_MONINTENT;Intento de representación predeterminado +PREFERENCES_MONITOR;Monitor +PREFERENCES_MONPROFILE;Perfil de color predeterminado +PREFERENCES_MONPROFILE_WARNOSX;Debido a las limitaciones de MacOS, solo se admite sRGB. PREFERENCES_MULTITAB;Modo Editor de varias pestañas PREFERENCES_MULTITABDUALMON;Modo Editor de varias pestañas, si está disponible en segundo monitor PREFERENCES_NAVGUIDEBRUSH;Color de la guía del navegador +PREFERENCES_NAVIGATIONFRAME;Navegación +PREFERENCES_NOISE;Reducción de ruido PREFERENCES_OUTDIR;Carpeta de salida PREFERENCES_OUTDIRFOLDER;Guardar en carpeta PREFERENCES_OUTDIRFOLDERHINT;Guardar las imágenes creadas en una carpeta elegida PREFERENCES_OUTDIRTEMPLATE;Usar plantilla PREFERENCES_OUTDIRTEMPLATEHINT;Se pueden usar las variables siguientes:\n%f, %d1, %d2, ..., %p1, %p2, ...\n\nEstas variables son referencias a las carpetas y subrutas de las rutas del lugar donde se encuentra la imagen raw.\n\nPor ejemplo, si abres /home/tom/image/02-09-2006/dsc0012.nef, los valores de las variables son:\n%f=dsc0012, %d1=02-09-2006, %d2=image, ...\n%p1=/home/tom/image/02-09-2006, %p2=/home/tom/image, p3=/home/tom, ...\n\nSi quieres guardar la imagen de salida en el lugar original, usa:\n%p1/%f\n\nSi quieres guardar la imagen de salida en una carpeta 'convertida' dentro de la carpeta original, usa:\n%p1/convertida/%f\n\nSi quieres guardar la imagen de salida en la carpeta '/home/tom/convertida' conservando la misma subcarpeta de fechas, usa:\n%p2/convertida/%d1/%f PREFERENCES_OVERLAY_FILENAMES;Superponer nombres de archivo en miniaturas +PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Superponer los nombres de archivo en las miniaturas en el panel del editor PREFERENCES_OVERWRITEOUTPUTFILE;Sobreescribir archivos de salida existentes PREFERENCES_PANFACTORLABEL;Factor PREFERENCES_PARSEDEXT;Extensiones analizadas PREFERENCES_PARSEDEXTADD;Agregar extensión PREFERENCES_PARSEDEXTADDHINT;Ingrese una extensión y pulse este botón para agregarla a la lista PREFERENCES_PARSEDEXTDELHINT;Borrar de la lista las extensiones seleccionadas +PREFERENCES_PARSEDEXTDOWNHINT;Mueve la extensión seleccionada hacia abajo en la lista. +PREFERENCES_PARSEDEXTUPHINT;Mueve la extensión seleccionada hacia arriba en la lista. +PREFERENCES_PERFORMANCE_THREADS;Hilos(Procesos) +PREFERENCES_PERFORMANCE_THREADS_LABEL;Número máximo de subprocesos para reducción de ruido y niveles de wavelet (0 = automático) +PREFERENCES_PREVDEMO;Vista previa del método Desmosaicado +PREFERENCES_PREVDEMO_FAST;Rápido +PREFERENCES_PREVDEMO_LABEL;Método de desmosaicado utilizado para la vista previa al <100% de zoom: +PREFERENCES_PREVDEMO_SIDECAR;Como en PP3 +PREFERENCES_PRINTER;Impresora(tenue-corregir) PREFERENCES_PROFILEHANDLING;Tratamiento de perfiles de procesamiento PREFERENCES_PROFILELOADPR;Prioridad de perfiles cuando se abre imagen PREFERENCES_PROFILEPRCACHE;Perfil en memoria intermedia PREFERENCES_PROFILEPRFILE;Perfil junto a imagen de entrada +PREFERENCES_PROFILESAVEBOTH;Guarda el perfil de procesamiento tanto en la memoria caché como junto al archivo de entrada PREFERENCES_PROFILESAVECACHE;Guardar perfiles de procesamiento en memoria intermedia PREFERENCES_PROFILESAVEINPUT;Guardar perfiles de procesamiento junto con imagen de entrada +PREFERENCES_PROFILESAVELOCATION;Ubicación del lugar donde se guardo el perfil de procesamiento +PREFERENCES_PROFILE_NONE;Ninguno PREFERENCES_PROPERTY;Propiedad +PREFERENCES_PRTINTENT;Intento de representación +PREFERENCES_PRTPROFILE;Perfil de color PREFERENCES_PSPATH;Carpeta de instalación de Adobe Photoshop +PREFERENCES_REMEMBERZOOMPAN;Recuerde el % de zoom y el desplazamiento del paneo +PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Recuerde que el% de zoom y el desplazamiento de la panorámica de la imagen actual al abrir una nueva imagen. \nEsta opción solo funciona en el "Modo de pestaña Editor único" y cuando el "Método de demostración utilizado para la vista previa a <100% de zoom" está configurado en " Como en PP3 " +PREFERENCES_RGBDTL_LABEL;Número máximo de hilos para reducción de ruido +PREFERENCES_RGBDTL_TOOLTIP;La Reducción de Ruido requiere como base 128MB de RAM para una imagen de 10MPix o 512MB para una imagen de 40MPix; más 128MB RAM por hilo de proceso.\nMientras más hilos corren en paralelo, más rápido es el procesamiento. Coloque “0” para que automáticamente se use tantos hilos como sea posible según la capacidad de su equipo. +PREFERENCES_SAVE_TP_OPEN_NOW;Guardar herramientas colapsadas/expandidas ahora PREFERENCES_SELECTFONT;Seleccionar fuente +PREFERENCES_SELECTFONT_COLPICKER;Seleccione la fuente del Selector de color PREFERENCES_SELECTLANG;Seleccionar idioma PREFERENCES_SELECTTHEME;Seleccionar tema +PREFERENCES_SERIALIZE_TIFF_READ;Configuración de lectura Tiff +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serializar la lectura de archivos tiff +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Cuando trabaje con carpetas llenas de archivos tiff sin comprimir, habilitar esta opción puede aumentar el rendimiento en la generación de la miniatura. PREFERENCES_SET;Establecer PREFERENCES_SHOWBASICEXIF;Mostrar datos Exif básicos PREFERENCES_SHOWDATETIME;Mostrar fecha y hora PREFERENCES_SHOWEXPOSURECOMPENSATION;Mostrar compensación de exposición +PREFERENCES_SHOWFILMSTRIPTOOLBAR;Mostrar barra de herramientas estilo tira de película PREFERENCES_SHTHRESHOLD;Umbral de sombras cortadas +PREFERENCES_SIMPLAUT;Modo de herramienta PREFERENCES_SINGLETAB;Modo Editor de pestaña única PREFERENCES_SINGLETABVERTAB;Modo Editor de pestaña única, pestañas verticales +PREFERENCES_SMA;A una escala pequeña(250x287) PREFERENCES_SND_BATCHQUEUEDONE;Trabajos en cola finalizados PREFERENCES_SND_HELP;Introducir el path o dejar en blanco (sin sonido). En Windows, usar "SystemDefault", "SystemAsterisk" etc. para los sonidos del sistema\nEn Linux use "complete", "window-attention" etc. para los sonidos del sistema. PREFERENCES_SND_LNGEDITPROCDONE;Procesado del editor terminado -PREFERENCES_SND_THRESHOLDSECS;después de seg. +PREFERENCES_SND_THRESHOLDSECS;Despues de segundos +PREFERENCES_SND_TRESHOLDSECS;después de seg. PREFERENCES_STARTUPIMDIR;Carpeta de imágenes en el arranque +PREFERENCES_STDAUT;Estándar PREFERENCES_TAB_BROWSER;Explorador de archivos PREFERENCES_TAB_COLORMGR;Gestión del color +PREFERENCES_TAB_DYNAMICPROFILE;Reglas de perfil dinámico PREFERENCES_TAB_GENERAL;General PREFERENCES_TAB_IMPROC;Procesamiento de imágenes +PREFERENCES_TAB_PERFORMANCE;Rendimiento PREFERENCES_TAB_SOUND;Sonidos +PREFERENCES_THEME;Tema +PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Vista previa de JPEG incrustado +PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Imagen para mostrar +PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Representación (Render) Raw neutral +PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;JPEG incrustado si es de tamaño completo, de lo contrario es neutral sin formato +PREFERENCES_TIMAX;Alto +PREFERENCES_TINB;Número de mosaicos +PREFERENCES_TISTD;Estándar PREFERENCES_TP_LABEL;Panel de herramientas: +PREFERENCES_TP_USEICONORTEXT;Usar iconos de pestaña en lugar de texto PREFERENCES_TP_VSCROLLBAR;Ocultar barra de desplazamiento vertical del panel de herramientas +PREFERENCES_TUNNELMETADATA;Copie Exif / IPTC / XMP sin cambios en el archivo de salida PREFERENCES_USEBUNDLEDPROFILES;Usar perfiles empaquetados PREFERENCES_VIEW;Balance de blancos en el dispositivo de salida (monitor, TV, proyector...) +PREFERENCES_WAVLEV;Aumentar el nivel de wavelet en calidad 'alta' +PREFERENCES_WLONE;Un nivel +PREFERENCES_WLTWO;Dos niveles +PREFERENCES_WLZER;No PREFERENCES_WORKFLOW;Disposición PROFILEPANEL_COPYPPASTE;Parámetros a copiar PROFILEPANEL_GLOBALPROFILES;Perfiles empaquetados @@ -855,6 +1353,7 @@ PROFILEPANEL_MODE_TIP;Modo de procesamiento de perfiles.\n\nBotón Presionado: l PROFILEPANEL_MYPROFILES;Mis perfiles PROFILEPANEL_PASTEPPASTE;Parámetros PROFILEPANEL_PCUSTOM;A medida +PROFILEPANEL_PDYNAMIC;Dinámico PROFILEPANEL_PFILE;Desde archivo PROFILEPANEL_PINTERNAL;Neutro PROFILEPANEL_PLASTSAVED;Último guardado @@ -878,10 +1377,22 @@ PROGRESSBAR_SAVEPNG;Guardando archivo PNG... PROGRESSBAR_SAVETIFF;Guardando archivo TIFF... PROGRESSBAR_SNAPSHOT_ADDED;Se añadió instantánea PROGRESSDLG_PROFILECHANGEDINBROWSER;Perfil de procesamiento cambiado en explorador +QINFO_FRAMECOUNT;%2 cuadro +QINFO_HDR;HDR / %2 cuadro(s) QINFO_ISO;ISO QINFO_NOEXIF;No hay datos EXIF. +QINFO_PIXELSHIFT;Pixel variación /% 2 cuadro(s) +SAMPLEFORMAT_0;Formato de datos desconocido +SAMPLEFORMAT_1;Sin firma 8 bits +SAMPLEFORMAT_2;Sin firma 16 bits +SAMPLEFORMAT_4;24-bit LogLuv +SAMPLEFORMAT_8;32-bit LogLuv +SAMPLEFORMAT_16;Punto flotante de 32 bits +SAMPLEFORMAT_32;24-bit punto flotante +SAMPLEFORMAT_64;32-bit punto flotante SAVEDLG_AUTOSUFFIX;Automáticamente añade un sufijo cuando el archivo ya existe SAVEDLG_FILEFORMAT;Formato de archivo +SAVEDLG_FILEFORMAT_FLOAT; punto flotante SAVEDLG_FORCEFORMATOPTS;Opciones de guardar forzado SAVEDLG_JPEGQUAL;Calidad JPEG SAVEDLG_PNGCOMPR;Compresión PNG @@ -894,9 +1405,12 @@ SAVEDLG_SUBSAMP;Submuestreo SAVEDLG_SUBSAMP_1;Máxima compresión SAVEDLG_SUBSAMP_2;Balanceado SAVEDLG_SUBSAMP_3;Máxima calidad +SAVEDLG_SUBSAMP_TOOLTIP;Mejor compresión: \nJ: a: b 4: 2: 0 \nh / v 2/2 \nColor reducido a la mitad horizontal y verticalmente. \n Equilibrado: \nJ: a: b 4: 2: 2 \nh / v 2 / 1 \nColor dividido a la mitad horizontalmente. \nMejor calidad: \ nJ: a: b 4: 4: 4 \nh / v 1/1 \nNo hay submuestreo del color. SAVEDLG_TIFFUNCOMPRESSED;TIFF sin compresión SAVEDLG_WARNFILENAME;Se asignará nombre al archivo SHCSELECTOR_TOOLTIP;Pulsar el botón derecho del ratón para restablecer la posición de los tres controles deslizantes +SOFTPROOF_GAMUTCHECK_TOOLTIP;Resalta los píxeles con colores fuera de gamma con respecto a: \n-El perfil de la impresora, si se establece uno y la prueba evaluacion de la correspondencia con el perfil está habilitada, \n-El perfil de salida, si el perfil de la impresora no está configurado y la prueba de la evaluacion de la saturación del perfil está habilitada \n-El perfil del monitor, si la prueba de evaluacion de la correspondencia con el perfil está deshabilitada. +SOFTPROOF_TOOLTIP;La prueba evaluacion de la correspondencia con el perfil simula la apariencia de la imagen: \n-Cuando se imprime, si un perfil de impresora está configurado en Preferencias-> Administración de color, \n-Cuando se ve en una pantalla que usa el perfil de salida actual, si no se configura un perfil de impresora . THRESHOLDSELECTOR_B;Inferior THRESHOLDSELECTOR_BL;Inferior izquierdo THRESHOLDSELECTOR_BR;Inferior derecho @@ -904,15 +1418,17 @@ THRESHOLDSELECTOR_HINT;Mantenga la tecla Mayús presionada para mover pun THRESHOLDSELECTOR_T;Superior THRESHOLDSELECTOR_TL;Superior izquierdo THRESHOLDSELECTOR_TR;Superior derecho -TOOLBAR_TOOLTIP_CROP;Selección de recorte.\nAtajo: c -TOOLBAR_TOOLTIP_HAND;Herramienta mano.\nAtajo: h -TOOLBAR_TOOLTIP_STRAIGHTEN;Enderezado / Rotación Fina.\nAtajo: s\n\nIndique la vertical u horizontal trazando una línea guía sobre la vista previa de la imagen. El ángulo de rotación será mostrado al continuación de la línea guía. El centro de la imagen es el centro de rotación. -TOOLBAR_TOOLTIP_WB;Muestrea equilibrio de blancos.\nAtajo: w +TOOLBAR_TOOLTIP_COLORPICKER;Selector de color bloqueable \nCuando esté habilitado: \nHaga clic en la vista previa con el botón izquierdo del ratón para agregar un selector de color \nArrastre alrededor mientras presiona el botón izquierdo del mouse \nElimine el selector de color con el botón derecho del mouse haga clic en \nEliminar todos los selectores de color con Mayús + clic con el botón derecho del mouse \nHaz clic derecho para alejarse de cualquier selector de color y volver a la herramienta Mano +TOOLBAR_TOOLTIP_CROP;Selección de recorte.\nTecla de Atajo: c +TOOLBAR_TOOLTIP_HAND;Herramienta mano.\nTecla de Atajo: h +TOOLBAR_TOOLTIP_STRAIGHTEN;Enderezado / Rotación Fina.\nTecla de Atajo: s\n\nIndique la vertical u horizontal trazando una línea guía sobre la vista previa de la imagen. El ángulo de rotación será mostrado al continuación de la línea guía. El centro de la imagen es el centro de rotación. +TOOLBAR_TOOLTIP_WB;Muestrea equilibrio de blancos.\nTecla de Atajo: w TP_BWMIX_ALGO;Algoritmo OYCPM TP_BWMIX_ALGO_LI;Lineal TP_BWMIX_ALGO_SP;Efectos especiales TP_BWMIX_ALGO_TOOLTIP;Lineal: producirá una respuesta lineal normal.\nEfectos especiales: producirá efectos especiales por mezclar no linealmente los canales. TP_BWMIX_AUTOCH;Auto +TP_BWMIX_AUTOCH_TIP;Calcular valores óptimos para el Mezclador de Canales TP_BWMIX_CC_ENABLED;Ajustar color complementario TP_BWMIX_CC_TOOLTIP;Permite el ajuste automático de colores complementarios en modo RNAmVCAzPM TP_BWMIX_CHANNEL;Ecualizador de luminancia @@ -939,6 +1455,9 @@ TP_BWMIX_MET;Método TP_BWMIX_MET_CHANMIX;Mezclador de canales TP_BWMIX_MET_DESAT;Des-saturación TP_BWMIX_MET_LUMEQUAL;Ecualizador de Luminancia +TP_BWMIX_MIXC;Mezclador +TP_BWMIX_NEUTRAL;Restablece el mezclador +TP_BWMIX_NEUTRAL_TIP;Restablece todos los parámetros (filtro, mezclador de canales) a sus valores predeterminados. TP_BWMIX_RGBLABEL;R: %1%% V: %2%% A: %3%% Total: %4%% TP_BWMIX_RGBLABEL_HINT;Factores finales RGB tomando en cuenta todas las opciones del mezclador\nTotal muestra la suma de los valores RGB actualmente aplicados:\n- En modo relativo Siempre 100% \n- En modo absoluto mayor (más claro) o menor (más oscuro) que 100% TP_BWMIX_RGB_TOOLTIP;Mezcla de canales RGB. Use como guía valores pre-establecidos.\nTenga en cuenta que valores negativos pueden introducir elementos extraños (artifacts) o resultados erráticos. @@ -967,15 +1486,20 @@ TP_BWMIX_VAL;L TP_CACORRECTION_BLUE;Azul TP_CACORRECTION_LABEL;Corrección de aberraciones cromáticas TP_CACORRECTION_RED;Rojo +TP_CBDL_AFT;Después de blanco y negro +TP_CBDL_BEF;Antes de blanco y negro +TP_CBDL_METHOD;Proceso localizado +TP_CBDL_METHOD_TOOLTIP;Elija si la herramienta Contraste por niveles de detalle se colocará después de la herramienta Blanco y negro, que la hace funcionar en el espacio L * a * b *, o antes, que la hace funcionar en el espacio RGB. TP_CHMIXER_BLUE;Canal Azul TP_CHMIXER_GREEN;Canal Verde TP_CHMIXER_LABEL;Mezclador de canales TP_CHMIXER_RED;Canal Rojo TP_CHROMATABERR_LABEL;Aberración cromática (AC) -TP_COARSETRAF_TOOLTIP_HFLIP;Voltear horizontalmente.\nAtajo: '[' -TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotar a la izquierda.\nAtajo: ']' +TP_COARSETRAF_TOOLTIP_HFLIP;Voltear horizontalmente.\nTecla de Atajo: '[' +TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotar a la izquierda.\nTecla de Atajo: ']' TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotar a la derecha TP_COARSETRAF_TOOLTIP_VFLIP;Voltear verticalmente +TP_COLORAPP_ABSOLUTELUMINANCE;Luminancia absoluta TP_COLORAPP_ADAPTSCENE;Adaptación a la luminosidad de la escena TP_COLORAPP_ADAPTSCENE_TOOLTIP;Luminancia absoluta del entorno de la escena (cd/m²).\n1) Calculado en base a datos Exif: \nTiempo de Exposición - Velocidad ISO - Número F de apertura - Corrección de exposición\n2) Calculado a partir del Punto Blanco raw y Compensación de Exposición RT. TP_COLORAPP_ADAPTVIEWING;Luminosidad de visualización (cd/m²) @@ -991,6 +1515,7 @@ TP_COLORAPP_BADPIXSL;Filtro de píxeles calientes/muertos TP_COLORAPP_BADPIXSL_TOOLTIP;Supresión de píxeles calientes/muertos (con coloreado brillante).\n 0 = Sin efecto \n 1 = Mediana \n 2 = Gaussiano.\n\nEstos elementos extraños son causados por limitaciones de CIECAM02. Como alternativa, ajuste la imagen para evitar sombras muy oscuras. TP_COLORAPP_BRIGHT;Brillo (Q) TP_COLORAPP_BRIGHT_TOOLTIP;En CIECAM02 el Brillo tiene en cuenta la luminosidad de los blancos y es diferente al de Lab y al de RGB +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;Cuando se configura manualmente, se recomiendan valores por encima de 65. TP_COLORAPP_CHROMA;Crominancia (C) TP_COLORAPP_CHROMA_M;Colorido (M) TP_COLORAPP_CHROMA_M_TOOLTIP;El Colorido CIECAM02 es diferente al de Lab y al de RGB @@ -1012,6 +1537,7 @@ TP_COLORAPP_DATACIE;Curvas con histogramas de salida CIECAM02 TP_COLORAPP_DATACIE_TOOLTIP;Si está seleccionada, los histogramas en las curvas CIECAM02 muestran aproximadamente valores/rangos de J o Q, y C, s o M después de los ajustes CIECAM02.\nEsta selección no influye en el histograma del panel principal.\n\nCuando no está seleccionada, los histogramas en las curvas CIECAM02 muestran valores Lab antes de los ajustes CIECAM02 TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Si la casilla está seleccionada (como se recomienda), RT calcula el valor óptimo, que es usado por CAT02, y también por todo CIECAM02.\nPara establecer manualmente el valor, primero desmarque la casilla (se recomienda usar valores mayores a 65) TP_COLORAPP_DEGREE_TOOLTIP;Cantidad de transformación de adaptación cromática CIE 2002 +TP_COLORAPP_FREE;Libre tempera+verde + CAT02 + [output] TP_COLORAPP_GAMUT;Control de Gamut (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Permite control de gamut en modo Lab TP_COLORAPP_HUE;Matiz (h) @@ -1022,8 +1548,11 @@ TP_COLORAPP_LABEL_SCENE;Condiciones de la escena TP_COLORAPP_LABEL_VIEWING;Condiciones de visualización TP_COLORAPP_LIGHT;Claridad (J) TP_COLORAPP_LIGHT_TOOLTIP;Claridad en CIECAM02 es diferente a la de Lab y a la de RGB +TP_COLORAPP_MEANLUMINANCE;Luminancia media (Yb%) TP_COLORAPP_MODEL;Modelo de Punto Blanco TP_COLORAPP_MODEL_TOOLTIP;Modelo de Punto Blanco\n\nWB [RT] + [salida]:\nEl Balance de Blancos de RT es usado para la escena, CIECAM02 es establecido a D50, y el Balance de Blancos del dispositivo de salida es el establecido en Preferencias > Gestión de Color\n\nWB [RT+CAT02] + [salida]:\nEl Balance de Blancos de RT es usado por CAT02 y el del dispositivo de salida es el establecido en preferencias +TP_COLORAPP_NEUTRAL;Restablecer +TP_COLORAPP_NEUTRAL_TIP;Restablecer todos los controles deslizantes y las curvas a sus valores predeterminados TP_COLORAPP_RSTPRO; Protección de tonos rojos y color piel TP_COLORAPP_RSTPRO_TOOLTIP;Intensidad de protección de tonos rojos y color piel (en curvas y en controles deslizantes) TP_COLORAPP_SHARPCIE;Enfoque, Contraste por niveles de detalle, Micro-contraste & Eliminación de AC con Q/C @@ -1044,10 +1573,15 @@ TP_COLORAPP_TCMODE_LABEL2;Curve modo 2 TP_COLORAPP_TCMODE_LABEL3;Curva en modo crominancia TP_COLORAPP_TCMODE_LIGHTNESS;Claridad TP_COLORAPP_TCMODE_SATUR;Saturación +TP_COLORAPP_TEMP_TOOLTIP;Para seleccionar un iluminante, configure siempre Tinte = 1. \nA temperatura = 2856 \nD50 temperatura = 5003 \nD55 temperatura = 5503 \nD65 temperatura = 6504 \nD75 temperatura = 7504 TP_COLORAPP_TONECIE;Mapeo tonal usando Brillo (Q) CIECAM02. TP_COLORAPP_TONECIE_TOOLTIP;Si esta opción no está seleccionada, el mapeo tonal se hace usando el espacio de color Lab.\nSi esta opción está seleccionada, el mapeo tonal se hace usando CIECAM02.\nLa herramienta de mapeo tonal debe de estar habilitada para que esta selección tenga efecto +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminancia absoluta del entorno de visualización \ n (normalmente 16 cd / m²). TP_COLORAPP_WBCAM;BalBlanco [RT+CAT02] + [salida] TP_COLORAPP_WBRT;BalBlanco [RT] + [salida] +TP_COLORAPP_YB;Yb% (luminancia media) +TP_COLORAPP_YBSCENE;Yb% (luminancia media) +TP_COLORAPP_YBSCENE_TOOLTIP;Si está habilitado el modo automático, Yb se calcula a partir del valor medio de la luminancia de la imagen real TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;Automático TP_COLORTONING_BALANCE;Balance @@ -1059,6 +1593,27 @@ TP_COLORTONING_HIGHLIGHT;Luces Altas TP_COLORTONING_HUE;Matiz TP_COLORTONING_LAB;Mezcla Lab TP_COLORTONING_LABEL;Tonificación de Color +TP_COLORTONING_LABGRID;L*a*b* cuadrícula de corrección del color +TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +TP_COLORTONING_LABREGIONS;Regiones de corrección de color +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;Canal +TP_COLORTONING_LABREGION_CHANNEL_ALL;Todos +TP_COLORTONING_LABREGION_CHANNEL_B;Azul +TP_COLORTONING_LABREGION_CHANNEL_G;Verde +TP_COLORTONING_LABREGION_CHANNEL_R;Rojo +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;H +TP_COLORTONING_LABREGION_LIGHTNESS;Luminosidad +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_LIST_TITLE;Corrección +TP_COLORTONING_LABREGION_MASK;Máscara +TP_COLORTONING_LABREGION_MASKBLUR;Desenfoque de la máscara +TP_COLORTONING_LABREGION_OFFSET;Compensar +TP_COLORTONING_LABREGION_POWER;Potencia +TP_COLORTONING_LABREGION_SATURATION;Saturación +TP_COLORTONING_LABREGION_SHOWMASK;Mostrar máscara +TP_COLORTONING_LABREGION_SLOPE;Bajar TP_COLORTONING_LUMA;Luminancia TP_COLORTONING_LUMAMODE;Preservar luminancia TP_COLORTONING_LUMAMODE_TOOLTIP;Si está activado, cuando se cambia el color(rojo, verde, cian, azul, etc.) la luminancia de cada pixel es preservada. @@ -1082,19 +1637,23 @@ TP_COLORTONING_STRENGTH;Intensidad TP_COLORTONING_TWO2;Crominancia especial '2 colores' TP_COLORTONING_TWOALL;Crominancia especial TP_COLORTONING_TWOBY;Especial 'a' y 'b' -TP_COLORTONING_TWOCOLOR_TOOLTIP;Crominancia estándar:\nRespuesta lineal, a* = b*.\n\nCrominancia especial:\nRespuesta lineal, a* = b*, pero no unidas - intentar debajo de la diagonal.\n\nEspecial a* and b*:\nRespuesta lineal no unida con curvas separadas para a* y b*. Previsto para efectos especiales.\n\nCrominancia especial 2 colores:\nMás predecible. +TP_COLORTONING_TWOCOLOR_TOOLTIP;Crominancia estándar:\nRespuesta lineal, a* = b*.\n\nCrominancia especial:\nRespuesta lineal, a* = b*, pero no unidas - intentar debajo de la diagonal.\n\nEspecial a* and b*:\nRespuesta lineal no unida con curvas separadas para a* y b*. Previsto para efectos especiales.\nCrominancia especial 2 colores:\nMás predecible. TP_COLORTONING_TWOSTD;Crominancia estándar TP_CROP_FIXRATIO;Fijar proporciones: TP_CROP_GTDIAGONALS;Regla de las diagonales TP_CROP_GTEPASSPORT;Pasaporte biométrico TP_CROP_GTFRAME;Marco TP_CROP_GTGRID;Rejilla +TP_CROP_GTHARMMEANS;Proporciones Armónicas TP_CROP_GTNONE;Ninguna TP_CROP_GTRULETHIRDS;Regla de los tercios +TP_CROP_GTTRIANGLE1;Triángulos de oro(áureo)1 +TP_CROP_GTTRIANGLE2;Triángulos de oro(áureo)2 TP_CROP_GUIDETYPE;Clase de guía: TP_CROP_H;Al TP_CROP_LABEL;Recortar TP_CROP_PPI;Ptos/Pulgada= +TP_CROP_RESETCROP;Reiniciar TP_CROP_SELECTCROP;Seleccionar recorte TP_CROP_W;Ancho TP_CROP_X;x @@ -1104,15 +1663,40 @@ TP_DARKFRAME_LABEL;Toma Negra TP_DEFRINGE_LABEL;Quitar borde púrpura TP_DEFRINGE_RADIUS;Radio TP_DEFRINGE_THRESHOLD;Umbral +TP_DEHAZE_DEPTH;Profundidad +TP_DEHAZE_LABEL;Eliminación de neblina +TP_DEHAZE_SHOW_DEPTH_MAP;Mostrar mapa de profundidad +TP_DEHAZE_STRENGTH;Fuerza +TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Control automático de multi-zonas +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Control automático global +TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Trate de evaluar el ruido del color \nTenga cuidado, este cálculo es promedio y es bastante subjetivo. TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Crominancia: Azul-Amarillo +TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Curva de Crominancia +TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Aumente (multiplique) el valor de todos los controles deslizantes de crominancia. \nEsta curva le permite ajustar la intensidad de la reducción de ruido cromático en función de la cromaticidad, por ejemplo, para aumentar la acción en áreas de baja saturación y para disminuirla en aquellas de alta saturación. +TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Crominancia +TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual TP_DIRPYRDENOISE_CHROMINANCE_MASTER;Crominancia: Maestra +TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Método +TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual \nActos en la imagen completa. \nUsted controla la configuración de reducción de ruido manualmente. \nAutomático global \ nAcciones en la imagen completa. \n9 zonas se utilizan para calcular una configuración de reducción de ruido de crominancia global. \nVista previa \nAcciones activadas en la totalidad de la imagen. \ nLa parte de la imagen visible en la vista previa se utiliza para calcular la configuración global de reducción de ruido de crominancia. +TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual \nAcciones en la imagen completa. \nUsted controla las configuraciones de reducción de ruido manualmente. \nAutomático global \nAcciones en la imagen completa. \n9 zonas se utilizan para calcular una configuración global de reducción de ruido de crominancia. \nMúltiples zonas automáticas \ nNo hay vista previa: funciona solo durante el guardado, pero al usar el método de "Vista previa" al hacer coincidir el tamaño y centro del mosaico con el centro y el tamaño de la vista previa, puede obtener una idea de los resultados esperados. \ nLa imagen se divide en mosaicos (aproximadamente 10 a 70 dependiendo del tamaño de la imagen) y cada ficha recibe su propia configuración de reducción de ruido de crominancia. \nPrevisión \nAcciones en toda la imagen. \nLa parte de la imagen visible en la vista previa se utiliza para calcular la configuración global de reducción de ruido de crominancia. +TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Vista previa de múltiples zonas +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Vista previa +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Muestra los niveles de ruido restantes de la parte de la imagen visible en la vista previa después de wavelet. \n> 300 Muy ruidoso \n100-300 Ruidoso \n50-100 Un poco ruidoso \n <50 Muy bajo ruido \n Cuidado, los valores diferirán entre los modos RGB y L * a * b *. Los valores RGB son menos precisos porque el modo RGB no separa completamente la luminancia y la crominancia. +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Tamaño de la vista previa =% 1, Centro: Px =% 2 Py =% 3 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Previsualización de ruido: Media =% 1 Alta =% 2 +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Previsualización del ruido: Media = - Alta = - +TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tamaño del mosaico =% 1, Centro: Tx =% 2 Ty =% 3 TP_DIRPYRDENOISE_CHROMINANCE_REDGREEN;Crominancia: Rojo-Verde TP_DIRPYRDENOISE_ENH;Modo mejorado TP_DIRPYRDENOISE_ENH_TOOLTIP;Incrementa la calidad de la Reducción de Ruido a costa de un incremento de 20% en el tiempo de procesamiento +TP_DIRPYRDENOISE_LABEL;Reducción del ruido +TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Control de luminancia TP_DIRPYRDENOISE_LUMINANCE_CURVE;Curva de Luminancia TP_DIRPYRDENOISE_LUMINANCE_DETAIL;Detalle en luminancia +TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminancia TP_DIRPYRDENOISE_LUMINANCE_SMOOTHING;Luminancia TP_DIRPYRDENOISE_MAIN_COLORSPACE;Método +TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* TP_DIRPYRDENOISE_MAIN_COLORSPACE_LABEL;Reducción de ruido TP_DIRPYRDENOISE_MAIN_COLORSPACE_RGB;RGB TP_DIRPYRDENOISE_MAIN_COLORSPACE_TOOLTIP;Para imágenes raw puede usar tanto el método RGB como el Lab.\n\nPara imágenes no raw el método Lab será usado de todas maneras, ignorando el método seleccionado. @@ -1123,15 +1707,27 @@ TP_DIRPYRDENOISE_MAIN_MODE_AGGRESSIVE;Alto TP_DIRPYRDENOISE_MAIN_MODE_CONSERVATIVE;Estándar TP_DIRPYRDENOISE_MAIN_MODE_TOOLTIP;La Calidad puede ser adaptada a un patrón de ruido. Al seleccionar "Alto" se incrementa el efecto de reducción de ruido a costa de prolongar el tiempo de procesamiento. TP_DIRPYRDENOISE_MEDIAN_METHOD;Método Median -TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;Lab +TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Solo croma(color) +TP_DIRPYRDENOISE_MEDIAN_METHOD_LAB;L*a*b* TP_DIRPYRDENOISE_MEDIAN_METHOD_LABEL;Median TP_DIRPYRDENOISE_MEDIAN_METHOD_LUMINANCE;Sólo luminancia TP_DIRPYRDENOISE_MEDIAN_METHOD_RGB;RGB TP_DIRPYRDENOISE_MEDIAN_METHOD_TOOLTIP;Cuando se utiliza "Sólo Luminancia" y los métodos "Lab", el filtro Median será aplicado inmediatamente después de cada proceso de toda la cadena de reducción de ruido.\nCuando se utiliza el modo "RGB", el filtro Median se aplicará al final de toda la cadena de procesos de reducción de ruido. +TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Ponderado L * (pequeño) + a * b * (normal) TP_DIRPYRDENOISE_MEDIAN_PASSES;Iteracciones Median +TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;La aplicación de tres iteraciones de filtro de mediana con un tamaño de ventana de 3 × 3 a menudo conduce a mejores resultados que el uso de una iteración de filtro de mediana con un tamaño de ventana de 7 × 7. TP_DIRPYRDENOISE_MEDIAN_TYPE;Tipo Median +TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Aplica un filtro de mediana para el tamaño de la ventana deseada. Cuanto mayor sea el tamaño de la ventana, más tiempo tardará. \n3 × 3 soft: trata 5 píxeles en una ventana de 3 × 3 píxeles. \n3 × 3: trata 9 píxeles en una ventana de 3 × 3 píxeles. \n5 × 5 suave: trata 13 píxeles en una ventana de 5 × 5 píxeles. \n5 × 5: trata 25 píxeles en una ventana de 5 × 5 píxeles. \n7 × 7: trata 49 píxeles en una ventana de 7 × 7 píxeles. \n9 × 9: trata 81 píxeles en una ventana de 9 × 9 píxeles. \nA veces es posible lograr una mayor calidad ejecutando varias iteraciones con un tamaño de ventana más pequeño que una iteración con una más grande. +TP_DIRPYRDENOISE_SLI;Deslizador +TP_DIRPYRDENOISE_TYPE_3X3;3×3 +TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 suavisado +TP_DIRPYRDENOISE_TYPE_5X5;5×5 +TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 suavisado +TP_DIRPYRDENOISE_TYPE_7X7;7×7 +TP_DIRPYRDENOISE_TYPE_9X9;9×9 TP_DIRPYREQUALIZER_ALGO;Rango de Color de Piel TP_DIRPYREQUALIZER_ALGO_TOOLTIP;Fino: cercano a los colores de la piel, minimizando la acción en otros colores\nAmplio: evita más elementos extraños. +TP_DIRPYREQUALIZER_ARTIF;Reduce elementos extraños TP_DIRPYREQUALIZER_HUESKIN;Matiz de la piel TP_DIRPYREQUALIZER_HUESKIN_TOOLTIP;En la parte superior se selecciona la zona con los valores máximos.\nEn la parte inferior se ajusta la transición.\nSi necesita para mover el área de manera significativa a la izquierda o a la derecha - o si hay elementos extraños:.. El balance de blancos es incorrecto \nPuedes reducir ligeramente la zona para evitar que el resto de la imagen se vea afectada. TP_DIRPYREQUALIZER_LABEL;Contraste por niveles de detalle @@ -1145,17 +1741,19 @@ TP_DIRPYREQUALIZER_SKIN_TOOLTIP;A -100 se focalizan los tonos de piel.\nA 0 todo TP_DIRPYREQUALIZER_THRESHOLD;Umbral TP_DIRPYREQUALIZER_TOOLTIP;Reduce los elementos extraños producidos en la transición entre los colores de piel (matiz, crominancia, luminancia) y el resto de la imagen. TP_DISTORTION_AMOUNT;Cantidad +TP_DISTORTION_AUTO_TIP;Corrige automáticamente la distorsión de la lente en archivos sin procesar al compararla con la imagen JPEG incrustada, si existe, y la cámara ha corregido automáticamente la distorsión de la lente. TP_DISTORTION_LABEL;Corrección de Distorsión TP_EPD_EDGESTOPPING;Parada en los bordes +TP_EPD_GAMMA;Gamma TP_EPD_LABEL;Mapeo tonal TP_EPD_REWEIGHTINGITERATES;Iteraciones de reponderación TP_EPD_SCALE;Escala TP_EPD_STRENGTH;Intensidad -TP_EPD_TOOLTIP;El mapeo tonal puede hacerse en modo Lab (estándar) y en modo CIECAM02.\n\nPara activar mapeo tonal modo CIECAM02 haga los siguientes ajustes:\n1. CIECAM02\n2. Algoritmo="Brillo + Colorido (QM)"\n3. "Mapeo tonal usando Brillo CIECAM02 (Q)" TP_EXPOSURE_AUTOLEVELS;Niveles automáticos TP_EXPOSURE_AUTOLEVELS_TIP;Ejecuta Niveles Automáticos. Establece automáticamente los valores de los parámetros basándose en el análisis de la imagen.\nHabilita la reconstrucción de luces altas si es necesario TP_EXPOSURE_BLACKLEVEL;Nivel de Negro TP_EXPOSURE_BRIGHTNESS;Brillo +TP_EXPOSURE_CLAMPOOG;Corte fuera de la gama de colores TP_EXPOSURE_CLIP;Recorte % TP_EXPOSURE_CLIP_TIP;Fracción de los píxeles que se recortará en una operación de Niveles Automáticos TP_EXPOSURE_COMPRHIGHLIGHTS;Compresión de luces altas @@ -1166,17 +1764,22 @@ TP_EXPOSURE_CURVEEDITOR1;Curva tonal 1 TP_EXPOSURE_CURVEEDITOR2;Curva tonal 2 TP_EXPOSURE_CURVEEDITOR2_TOOLTIP;Por favor, consulte RawPedia para aprender cómo obtener mejores resultados usando dos curvas tonales TP_EXPOSURE_EXPCOMP;Compensación de exposición +TP_EXPOSURE_HISTMATCHING;Curva de tono auto-balanceada +TP_EXPOSURE_HISTMATCHING_TOOLTIP;Ajuste automáticamente los controles deslizantes y las curvas (excepto la compensación de exposición) para que coincidan con el aspecto de la miniatura JPEG incrustada. TP_EXPOSURE_LABEL;Exposición TP_EXPOSURE_SATURATION;Saturación TP_EXPOSURE_TCMODE_FILMLIKE;Similar a película TP_EXPOSURE_TCMODE_LABEL1;Curva modo 1 TP_EXPOSURE_TCMODE_LABEL2;Curva modo 2 +TP_EXPOSURE_TCMODE_LUMINANCE;Luminancia +TP_EXPOSURE_TCMODE_PERCEPTUAL;Perceptual TP_EXPOSURE_TCMODE_SATANDVALBLENDING;Mezcla de saturación y valor TP_EXPOSURE_TCMODE_STANDARD;Estándar TP_EXPOSURE_TCMODE_WEIGHTEDSTD;Estándar ponderado TP_EXPOS_BLACKPOINT_LABEL;Raw - Puntos Negros TP_EXPOS_WHITEPOINT_LABEL;Raw - Puntos Blancos TP_FILMSIMULATION_LABEL;Simulación de Fílmico +TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee está configurado para buscar imágenes Hald CLUT, que se usan para la herramienta Simulación de película, en una carpeta que tarda demasiado en cargarse. \nVaya a Preferencias> Procesamiento de imagen> Simulación de película \npara ver qué carpeta se está utilizando. Debería apuntar RawTherapee a una carpeta que contenga solo imágenes de Hald CLUT y nada más, o a una carpeta vacía si no desea usar la herramienta Simulación de película. \nLea el artículo de Simulación de película en RawPedia para obtener más información. \n¿Desea cancelar el escaneo ahora? TP_FILMSIMULATION_STRENGTH;Intensidad TP_FILMSIMULATION_ZEROCLUTSFOUND;Seleccionar el directorio HaldCLUT en Preferencias TP_FLATFIELD_AUTOSELECT;Auto selección @@ -1218,8 +1821,15 @@ TP_HSVEQUALIZER_HUE;H TP_HSVEQUALIZER_LABEL;Ecualizador HSV TP_HSVEQUALIZER_SAT;S TP_HSVEQUALIZER_VAL;V +TP_ICM_APPLYBASELINEEXPOSUREOFFSET;Exposición, punto de partida +TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP;Emplear el desplazamiento de la línea de base de DCP incrustado. La configuración solo está disponible si el DCP seleccionado tiene uno. +TP_ICM_APPLYHUESATMAP;Tabla base +TP_ICM_APPLYHUESATMAP_TOOLTIP;Emplear la tabla base DCP incrustada (Mapa Hue Sat). La configuración solo está disponible si el DCP seleccionado tiene unoloy the embedded DCP base table (HueSatMap). The setting is only available if the selected DCP has one. +TP_ICM_APPLYLOOKTABLE;Revisar tabla +TP_ICM_APPLYLOOKTABLE_TOOLTIP;Emplear la tabla de apariencia DCP incrustada. La configuración solo está disponible si el DCP seleccionado tiene uno. TP_ICM_BLENDCMSMATRIX;Mezclar las luces altas ICC con matriz TP_ICM_BLENDCMSMATRIX_TOOLTIP;Permite recuperar luces altas quemadas cuando se usan perfiles ICC basados en LUT +TP_ICM_BPC;Compensación de punto negro TP_ICM_DCPILLUMINANT;Iluminante TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolado TP_ICM_DCPILLUMINANT_TOOLTIP;Seleccione el Iluminante a emplear. El valor predeterminado es "interpolado", que es una mezcla entre dos basados en el Balance de Blancos. Este ajuste es posible solo si un Iluminante dual DCP con soporte de interpolación es seleccionado. @@ -1238,16 +1848,26 @@ TP_ICM_INPUTPROFILE;Perfil de entrada TP_ICM_LABEL;Gestión de color TP_ICM_NOICM;Sin ICM: Salida sRGB TP_ICM_OUTPUTPROFILE;Perfil de salida +TP_ICM_PROFILEINTENT;Iintento de interpretación. +TP_ICM_SAVEREFERENCE;Guardar imagen de referencia +TP_ICM_SAVEREFERENCE_APPLYWB;Aplicar balance de blancos +TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;En general, aplique el balance de blancos cuando guarde imágenes para crear perfiles ICC, y no aplique el balance de blancos para crear perfiles DCP. TP_ICM_SAVEREFERENCE_TOOLTIP;Guardar la imagen TIFF lineal antes de aplicar el perfil de entrada. El resultado puede ser utilizado para fines de calibración y la generación de un perfil de cámara. TP_ICM_TONECURVE;Usar la curva tonal en DCP TP_ICM_TONECURVE_TOOLTIP;Activa el uso de las curvas de tono que pueden contener los perfiles DCP. Este ajuste es posible solo si el DCP seleccionado contiene una curva tonal. TP_ICM_WORKINGPROFILE;Perfil de trabajo +TP_ICM_WORKING_TRC;Curva de respuesta de tono: +TP_ICM_WORKING_TRC_CUSTOM;Personalizado +TP_ICM_WORKING_TRC_GAMMA;Gamma +TP_ICM_WORKING_TRC_NONE;Ninguna/o +TP_ICM_WORKING_TRC_SLOPE;Bajar +TP_ICM_WORKING_TRC_TOOLTIP;Solo para perfiles incorporados. TP_IMPULSEDENOISE_LABEL;Impulsar Reducc. ruido TP_IMPULSEDENOISE_THRESH;Umbral TP_LABCURVE_AVOIDCOLORSHIFT;Evitar desplazamiento de colores -TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Encaja los colores dentro de la gama del espacio de color de trabajo y aplica la corrección de Munsell +TP_LABCURVE_AVOIDCOLORSHIFT_TOOLTIP;Encaja los colores dentro de la gamma del espacio de color de trabajo y aplica la corrección de Munsell TP_LABCURVE_BRIGHTNESS;Brillo -TP_LABCURVE_CHROMATICITY;Cromaticidad +TP_LABCURVE_CHROMATICITY;Cromaticidad (Saturación) TP_LABCURVE_CHROMA_TOOLTIP;Para aplicar mapeo tonal en blanco y negro, establezca la Cromaticidad a -100 TP_LABCURVE_CONTRAST;Contraste TP_LABCURVE_CURVEEDITOR;Curva de luminancia @@ -1259,6 +1879,7 @@ TP_LABCURVE_CURVEEDITOR_B_RANGE1;Azul saturado TP_LABCURVE_CURVEEDITOR_B_RANGE2;Azul pastel TP_LABCURVE_CURVEEDITOR_B_RANGE3;Amarillo pastel TP_LABCURVE_CURVEEDITOR_B_RANGE4;Amarillo saturado +TP_LABCURVE_CURVEEDITOR_CC;CC TP_LABCURVE_CURVEEDITOR_CC_RANGE1;Neutros TP_LABCURVE_CURVEEDITOR_CC_RANGE2;Mates TP_LABCURVE_CURVEEDITOR_CC_RANGE3;Pastel @@ -1283,10 +1904,29 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Puede usarse con el deslizador Cromaticidad y con la TP_LENSGEOM_AUTOCROP;Auto recorte TP_LENSGEOM_FILL;Auto relleno TP_LENSGEOM_LABEL;Lente / Geometría +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automáticamente +TP_LENSPROFILE_CORRECTION_LCPFILE;LCP archivo +TP_LENSPROFILE_CORRECTION_MANUAL;Manual TP_LENSPROFILE_LABEL;Perfil de corrección de lente +TP_LENSPROFILE_LENS_WARNING;Advertencia: el factor de recorte utilizado para el perfilado de la lente es mayor que el factor de recorte de la cámara, los resultados pueden ser incorrectos. +TP_LENSPROFILE_MODE_HEADER;Seleccione el perfil de la lente: TP_LENSPROFILE_USECA;Corrección de AC TP_LENSPROFILE_USEDIST;Corrección de distorsión TP_LENSPROFILE_USEVIGN;Corrección de viñeteo +TP_LENSPROFILE_USE_CA;Aberración cromática +TP_LENSPROFILE_USE_GEOMETRIC;Geométrico +TP_LENSPROFILE_USE_HEADER;Seleccione distorsiones para corregir: +TP_LENSPROFILE_USE_VIGNETTING;Viñeteado +TP_LOCALCONTRAST_AMOUNT;Cantidad +TP_LOCALCONTRAST_DARKNESS;Nivel de sombras +TP_LOCALCONTRAST_LABEL;Contraste local +TP_LOCALCONTRAST_LIGHTNESS;Nivel de luminosidad +TP_LOCALCONTRAST_RADIUS;Radio +TP_METADATA_EDIT;Aplicar modificaciones +TP_METADATA_MODE;Modo de copia de metadatos +TP_METADATA_STRIP;Eliminar todos los metadatos +TP_METADATA_TUNNEL;Copiar sin cambios +TP_NEUTRAL;Reiniciar TP_NEUTRAL_TIP;Restablecer controles de exposición a valores neutros\nAplica a los mismos controles que son afectados por Niveles Automáticos, sin importar si usa o no Niveles Automáticos TP_PCVIGNETTE_FEATHER;Difuminado TP_PCVIGNETTE_FEATHER_TOOLTIP;Difuminación: \n0=Solo Esquinas\n50=Hasta medio camino al centro\n100=Hasta el Centro @@ -1307,10 +1947,22 @@ TP_PREPROCESS_HOTPIXFILT;Filtro Pixel Caliente TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Trata de eliminar los píxeles calientes. TP_PREPROCESS_LABEL;Preprocesado TP_PREPROCESS_LINEDENOISE;Filtro de ruido de línea +TP_PREPROCESS_LINEDENOISE_DIRECTION;Dirección +TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Ambos +TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal +TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal solo en filas PDAF +TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical TP_PREPROCESS_NO_FOUND;No encontrado +TP_PREPROCESS_PDAFLINESFILTER;PDAF filtro de líneas +TP_PRSHARPENING_LABEL;Enfocar después del cambio de tamaño +TP_PRSHARPENING_TOOLTIP;Enfoca la imagen después de cambiar el tamaño. Solo funciona cuando se utiliza el método de cambio de tamaño "Lanczos". Es imposible previsualizar los efectos de esta herramienta. Ver RawPedia para instrucciones de uso. TP_RAWCACORR_AUTO;Auto corrección +TP_RAWCACORR_AUTOIT;Iterations +TP_RAWCACORR_AUTOIT_TOOLTIP;Esta configuración está disponible si se marca "Corrección automática". \nLa autocorrección es conservadora, lo que significa que a menudo no corrige toda la aberración cromática. \nPara corregir la aberración cromática restante, puede usar hasta cinco iteraciones de aberración cromática automática. corrección. \nCada iteración reducirá la aberración cromática restante de la última iteración al costo de un tiempo de procesamiento adicional. +TP_RAWCACORR_AVOIDCOLORSHIFT;Evitar el cambio de color TP_RAWCACORR_CABLUE;Azul TP_RAWCACORR_CARED;Rojo +TP_RAWCACORR_CASTR;Fuerza TP_RAWEXPOS_BLACKS;Niveles de negro TP_RAWEXPOS_BLACK_0;Verde 1 (principal) TP_RAWEXPOS_BLACK_1;Rojo @@ -1323,19 +1975,96 @@ TP_RAWEXPOS_LINEAR;Corrección de punto blanco TP_RAWEXPOS_PRESER;Preservación de Luces Altas TP_RAWEXPOS_RGB;Rojo, Verde, Azul TP_RAWEXPOS_TWOGREEN;Vincular verdes +TP_RAW_1PASSMEDIUM;1-pasaje (medio) +TP_RAW_2PASS;1-paso+rápido +TP_RAW_3PASSBEST;3-Pasaje (Mejor) +TP_RAW_4PASS;3-paso+rápido +TP_RAW_AHD;AHD +TP_RAW_AMAZE;AMaZE +TP_RAW_AMAZEVNG4;AMaZE+VNG4 +TP_RAW_BORDER;Borde +TP_RAW_DCB;DCB TP_RAW_DCBENHANCE;Aplicar paso de mejora DCB TP_RAW_DCBITERATIONS;Número de iteraciones DCB +TP_RAW_DCBVNG4;DCB+VNG4 TP_RAW_DMETHOD;Método TP_RAW_DMETHOD_PROGRESSBAR;%1 interpolando mosaico... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Refinando la interpolación del mosaico... TP_RAW_DMETHOD_TOOLTIP;Nota: IGV y LMMSE están dedicados a imágenes tomadas con grandes velocidades ISO +TP_RAW_DUALDEMOSAICAUTOCONTRAST;Umbral automático +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;Si la casilla está marcada (recomendado), RawTherapee calcula un valor óptimo según las regiones planas de la imagen. \nSi no hay una región plana en la imagen o la imagen es demasiado ruidosa, el valor se establecerá en 0. \nPara establecer manualmente el valor, desmarque la casilla de verificación primero (los valores razonables dependen de la imagen). +TP_RAW_DUALDEMOSAICCONTRAST;Umbral de contraste +TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;Pasos de supresión de color falso +TP_RAW_FAST;Fast +TP_RAW_HD;Límite +TP_RAW_HD_TOOLTIP;Los valores más bajos hacen que la detección de píxeles muertos/vivos sea más agresiva, pero los falsos positivos pueden llevar a producir elementos extraños. Si observa que aparecen elementos extraños al habilitar los filtros de píxeles calientes/muertos, aumente gradualmente el valor del umbral hasta que desaparezcan. +TP_RAW_HPHD;HPHD +TP_RAW_IGV;IGV +TP_RAW_IMAGENUM;Sub-imagen +TP_RAW_IMAGENUM_TOOLTIP;Algunos archivos en bruto constan de varias sub-imágenes (Pentax / Sony Pixel Shift, Pentax 3-en-1 HDR, Canon Dual Pixel). \nAl usar cualquier método de demostración que no sea Pixel Shift, esto selecciona qué sub-imagen se usa . \nCuando se usa el método de demostración Pixel Shift en un Pixel Shift sin procesar, se usan todas las subimágenes, y esto selecciona qué subimagen se debe usar para mover partes. TP_RAW_LABEL;Desmosaicado +TP_RAW_LMMSE;LMMSE TP_RAW_LMMSEITERATIONS;Pasos de mejora LMMSE TP_RAW_LMMSE_TOOLTIP;Agregar gamma (paso 1)\n Agregar mediana (pasos 2,3,4)\nAgregar refinamientos (pasos 5,6) para reducir objetos espurios y mejorar la relación señal a ruido +TP_RAW_MONO;Mono +TP_RAW_NONE;Ninguno (muestra el patrón del sensor) +TP_RAW_PIXELSHIFT;Cambio de píxel +TP_RAW_PIXELSHIFTADAPTIVE;Detección adaptativa +TP_RAW_PIXELSHIFTBLUR;Máscara de movimiento de desenfoque +TP_RAW_PIXELSHIFTDMETHOD;Demosaicado, método para el movimiento +TP_RAW_PIXELSHIFTEPERISO;ISO adaptación +TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;El valor predeterminado de 0 debería funcionar bien para la base ISO. \nAumente el valor para mejorar la detección del movimiento para una ISO más alta. \nAumente en pequeños pasos y observe la máscara de movimiento mientras aumenta. +TP_RAW_PIXELSHIFTEQUALBRIGHT;Ecualiza el brillo de los cuadros. +TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Igualar por canal +TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Activado: ecualice los canales RGB individualmente. \nDeshabilitado: use el mismo factor de ecualización para todos los canales. +TP_RAW_PIXELSHIFTEQUALBRIGHT_TOOLTIP;Ecualice el brillo de los cuadros con el brillo del cuadro seleccionado. \nSi hay áreas sobreexpuestas en los cuadros, seleccione el cuadro más brillante para evitar la aparición de colores magenta en áreas sobreexpuestas o habilite la corrección de movimiento. +TP_RAW_PIXELSHIFTEXP0;Experimental +TP_RAW_PIXELSHIFTGREEN;Compruebe el canal verde para el movimiento +TP_RAW_PIXELSHIFTHOLEFILL;Rellene los fallos en la máscara de movimiento +TP_RAW_PIXELSHIFTHOLEFILL_TOOLTIP;Rellene los fallos en la máscara de movimiento +TP_RAW_PIXELSHIFTLMMSE;Utilice LMMSE para regiones móviles +TP_RAW_PIXELSHIFTLMMSE_TOOLTIP;Use LMMSE en lugar de AMaZE para las áreas de movimiento. \nÚtil para imágenes de alta ISO. +TP_RAW_PIXELSHIFTMASKTHRESHOLD;3x3 nuevo umbral +TP_RAW_PIXELSHIFTMEDIAN;Usa la mediana pa3x3 nuevo umbral parara las regiones móviles. +TP_RAW_PIXELSHIFTMEDIAN3;Excluir el cuadro seleccionado de la mediana +TP_RAW_PIXELSHIFTMEDIAN3_TOOLTIP;Excluye el cuadro seleccionado de la mediana. \nUtilícelo si los objetos en movimiento se superponen en el cuadro 2 y 3 +TP_RAW_PIXELSHIFTMEDIAN_TOOLTIP;Use la mediana de todos los cuadros en lugar del cuadro seleccionado para las regiones con movimiento. \nElimina los objetos que se encuentran en diferentes lugares en todos los cuadros. \nBrinda efecto de movimiento en objetos de movimiento lento (superpuestos). +TP_RAW_PIXELSHIFTMM_AUTO;Automático +TP_RAW_PIXELSHIFTMM_CUSTOM;Personalizado +TP_RAW_PIXELSHIFTMM_OFF;Apagado +TP_RAW_PIXELSHIFTMOTION;Nivel de detección de movimiento (en desuso) +TP_RAW_PIXELSHIFTMOTIONCORRECTION;Magnitudo de la corrección del movimiento verde +TP_RAW_PIXELSHIFTMOTIONMETHOD;Corrección del movimiento +TP_RAW_PIXELSHIFTMOTION_TOOLTIP;0 significa que no hay detección de movimiento. \n1 - 99 significa que el movimiento se detectará de acuerdo con este valor. Aumente el valor para aumentar la tasa de detección. \n100 significa que se utilizará el marco de demostración AMaZE.ción de movimiento. \n1 - 99 significa que el movimiento se detectará de acuerdo con este valor. Aumente el valor para aumentar la tasa de detección. \n100 significa que se utilizará el marco de demostración AMaZE.no motion detection.\n1 - 99 means motion will be detected according to this value. Increase value to increase detection rate.\n100 means the AMaZE-demosaiced frame will be used. +TP_RAW_PIXELSHIFTNONGREENAMAZE;Compruebe AMaZE rojo / azul +TP_RAW_PIXELSHIFTNONGREENCROSS;Compruebe los canales rojos/azules para el movimiento +TP_RAW_PIXELSHIFTNONGREENCROSS2;Compruebe verde AMaZE +TP_RAW_PIXELSHIFTNONGREENHORIZONTAL;Compruebe rojo/azul horizontal +TP_RAW_PIXELSHIFTNONGREENVERTICAL;Compruebe rojo/azul vertical +TP_RAW_PIXELSHIFTNREADISO;nLeer +TP_RAW_PIXELSHIFTONEGREEN;Utilice un verde en lugar de media +TP_RAW_PIXELSHIFTONEGREEN_TOOLTIP;Use un verde en lugar de promediar dos verdes para regiones sin movimiento. +TP_RAW_PIXELSHIFTPRNU;PRNU (%) +TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Fuerza Rojo&Azul +TP_RAW_PIXELSHIFTSHOWMOTION;Mostrar máscara de movimiento +TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY;Mostrar solo máscara de movimiento +TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY_TOOLTIP;Muestra la máscara de movimiento sin la imagen. +TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Superpone la imagen con una máscara que muestra las regiones con movimiento. +TP_RAW_PIXELSHIFTSIGMA;Radio de desenfoque +TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;El radio predeterminado de 1.0 por lo general se ajusta bien a la base ISO. \nAumente el valor para tomas con ISO alto, 5.0 es un buen punto de partida. \nMire la máscara de movimiento mientras cambia el valor. +TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions +TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Transiciones suaves entre áreas con movimiento y áreas sin movimiento. \nConfigure en 0 para deshabilitar el suavizado en la transición. \nConfigure en 1 para obtener el resultado AMaZE / LMMSE del marco seleccionado (dependiendo de si se selecciona "Usar LMMSE") o la mediana de los cuatro cuadros si se selecciona "Usar mediana". +TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;Factor de StdDev Azul +TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;Factor de StdDev Verde +TP_RAW_PIXELSHIFTSTDDEVFACTORRED;Factor de StdDev Rojo +TP_RAW_RCD;RCD +TP_RAW_RCDVNG4;RCD+VNG4 TP_RAW_SENSOR_BAYER_LABEL;Sensor con matriz Bayer TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-pases da mejores resultados (recomendado para imágenes de ISO bajo).\n1-pase es más rápido y es casi indistinguible del modo 3-pases para imágenes de ISO altas. TP_RAW_SENSOR_XTRANS_LABEL;Sensor con matriz X-Trans +TP_RAW_VNG4;VNG4 +TP_RESIZE_ALLOW_UPSCALING;Permitir escalado TP_RESIZE_APPLIESTO;Aplica a: TP_RESIZE_CROPPEDAREA;Área recortada TP_RESIZE_FITBOX;Rectángulo límite @@ -1350,6 +2079,86 @@ TP_RESIZE_SCALE;Escala TP_RESIZE_SPECIFY;Especificar: TP_RESIZE_W;An: TP_RESIZE_WIDTH;Anchura +TP_RETINEX_CONTEDIT_HSL;Ecualizador HSL del histograma +TP_RETINEX_CONTEDIT_LAB;Ecualizador L * a * b * del histograma +TP_RETINEX_CONTEDIT_LH;Ecualizador de tono +TP_RETINEX_CONTEDIT_MAP;Ecualizador de máscara +TP_RETINEX_CURVEEDITOR_CD;L=f(L) +TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminancia según luminancia L = f (L) \nCorregir datos sin procesar para reducir halos y elementos extraños. +TP_RETINEX_CURVEEDITOR_LH;Fuerza=f(H) +TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Fuerza según el tono Fuerza = f (H) \nEsta curva también actúa sobre el croma cuando se usa el método 'Resaltar' retinex. +TP_RETINEX_CURVEEDITOR_MAP;L=f(L) +TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;Esta curva se puede aplicar sola o con una máscara gaussiana o una máscara wavelet. \n¡Cuidado con los elementos extraños! +TP_RETINEX_EQUAL;Equalizador +TP_RETINEX_FREEGAMMA;Gamma libre +TP_RETINEX_GAIN;Aumentar +TP_RETINEX_GAINOFFS;Aumentar y Offset (brillo) +TP_RETINEX_GAINTRANSMISSION;Aumentar transmisión +TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplifique o reduzca el mapa de transmisión para lograr la luminancia. \nAbscisa: transmisión -min desde 0, media y valores (máx.). \nOrdena: ganancia. +TP_RETINEX_GAIN_TOOLTIP;Actúa sobre la imagen restaurada. \nÉsta es muy diferente de las otras configuraciones. Se utiliza para píxeles blancos o negros, y para ayudar a equilibrar el histograma. +TP_RETINEX_GAMMA;Gamma +TP_RETINEX_GAMMA_FREE;Libre +TP_RETINEX_GAMMA_HIGH;Alta +TP_RETINEX_GAMMA_LOW;Baja +TP_RETINEX_GAMMA_MID;Media +TP_RETINEX_GAMMA_NONE;Ninguna +TP_RETINEX_GAMMA_TOOLTIP;Restaura los tonos aplicando gamma antes y después de Retinex. Diferente de las curvas de Retinex u otras curvas (Lab, Exposición, etc.). +TP_RETINEX_GRAD;Gradiente de transmisión +TP_RETINEX_GRADS;Fuerza del Gradiente +TP_RETINEX_GRADS_TOOLTIP;Si el control deslizante está en 0, todas las iteraciones son idénticas. \nSi es mayor a 0, la fuerza se reduce cuando las iteraciones aumentan, y viceversa. +TP_RETINEX_GRAD_TOOLTIP;Si el control deslizante está en 0, todas las iteraciones son idénticas. \nSi es mayor a 0, la variación y el umbral se reducen cuando las iteraciones aumentan, y viceversa. +TP_RETINEX_HIGH;Alto +TP_RETINEX_HIGHLIG;Luces Altas +TP_RETINEX_HIGHLIGHT;Umbral de resaltado +TP_RETINEX_HIGHLIGHT_TOOLTIP;Aumente la acción del algoritmo alto. \nPuede requerir que vuelva a ajustar "Píxeles adyacentes" y aumentar la "Corrección de punto blanco" en la pestaña Sin formato -> Herramienta Puntos blancos sin procesar. +TP_RETINEX_HSLSPACE_LIN;HSL-Lineal +TP_RETINEX_HSLSPACE_LOG;HSL-Logarítmica +TP_RETINEX_ITER;Iteracciones (mapeo-tonos) +TP_RETINEX_ITERF;Mapeo de tonos +TP_RETINEX_ITER_TOOLTIP;Simule un operador de mapeo de tonos. \nLos valores altos aumentan el tiempo de procesamiento. +TP_RETINEX_LABEL;Retinex +TP_RETINEX_LABEL_MASK;Máscara +TP_RETINEX_LABSPACE;L*a*b* +TP_RETINEX_LOW;Bajo +TP_RETINEX_MAP;Método de máscara +TP_RETINEX_MAP_GAUS;Máscara Gaussian +TP_RETINEX_MAP_MAPP;Máscara de enfoque (wavelet partial) +TP_RETINEX_MAP_MAPT;Máscara de enfoque(wavelet total) +TP_RETINEX_MAP_METHOD_TOOLTIP;Use la máscara generada por la función gaussiana anterior (Radio, Método) para reducir los halos y los elementos extraños. \nCortar solo: aplique una curva de contraste diagonal en la máscara. \n¡Cuidado con los elementos extraños! \nMáscara gaussiana: genere y use un Desenfoque gaussiano de la máscara original. \nRápido. \nMáscara de corte: genere y use un wavelet en la máscara original. \nBajo. +TP_RETINEX_MAP_NONE;Ninguno +TP_RETINEX_MEDIAN;filtro de transmision mediana +TP_RETINEX_METHOD;Método +TP_RETINEX_METHOD_TOOLTIP;Baja = Reforzar la luz baja. \nUniforme = Ecualizar la acción. \nAlta = Reforzar la luz alta. \nLuces Altas = Eliminar magenta en las partes altas +TP_RETINEX_MLABEL;Restaurado sin turbidez Min. =% 1 Max =% 2. +TP_RETINEX_MLABEL_TOOLTIP;Debe estar cerca del mín = 0 máx = 32768 \nImagen restaurada sin mezcla. +TP_RETINEX_NEIGHBOR;Radio +TP_RETINEX_NEUTRAL;Restablecer +TP_RETINEX_NEUTRAL_TIP;Restablecer todos los controles deslizantes y curvas a sus valores predeterminados. +TP_RETINEX_OFFSET;compensar(brillo) +TP_RETINEX_SCALES;Gradiente gaussiano +TP_RETINEX_SCALES_TOOLTIP;Si el control deslizante está en 0, todas las iteraciones son idénticas. \nSi es mayor a 0 la escala y el radio se reducen cuando aumentan las iteraciones, y viceversa. +TP_RETINEX_SETTINGS;Ajustes +TP_RETINEX_SKAL;Escala +TP_RETINEX_SLOPE;Gamma Libre al bajarla +TP_RETINEX_STRENGTH;Fuerza +TP_RETINEX_THRESHOLD;Límite +TP_RETINEX_THRESHOLD_TOOLTIP; Límites de entrada/salida. \nEn = fuente de imagen,\nhacia afuera = imagen gauss. +TP_RETINEX_TLABEL;TM Min=%1 Max=%2 Mean=%3 Sigma=%4 +TP_RETINEX_TLABEL2;TM Tm=%1 TM=%2 +TP_RETINEX_TLABEL_TOOLTIP;Resultado del mapa de transmisión. \nMin y Max son utilizados por diferencia.\nMean y Sigma. \nTm = Min TM = Max de mapa de transmisión. +TP_RETINEX_TRANF;transmisión +TP_RETINEX_TRANSMISSION;Mapa de transmisión +TP_RETINEX_TRANSMISSION_TOOLTIP;Transmisión según la transmisión. \nAbscisa: transmisión desde valores negativos (mín.), Media y valores positivos (máx.). \nDerecha: amplificación o reducción. +TP_RETINEX_UNIFORM;Uniforme +TP_RETINEX_VARIANCE;Contraste +TP_RETINEX_VARIANCE_TOOLTIP;La varianza baja aumenta el contraste y la saturación locales, pero puede producir elementos extraños. +TP_RETINEX_VIEW;Proceso +TP_RETINEX_VIEW_MASK;Máscara +TP_RETINEX_VIEW_METHOD_TOOLTIP;Estándar - Visualización normal. \nMascara - Muestra la máscara. \nUna máscara de enfoque - Muestra la imagen con una máscara de desenfoque de radio alto. \nTransmisión - Automática \nFija - Muestra el mapa de transmisión del archivo, antes de cualquier acción sobre contraste y brillo. \nAtención: la máscara no corresponde a la realidad, pero se amplifica para hacerla más visible. +TP_RETINEX_VIEW_NONE;Estandard +TP_RETINEX_VIEW_TRAN;Transmisión - Auto +TP_RETINEX_VIEW_TRAN2;Transmisión - Fija +TP_RETINEX_VIEW_UNSHARP;Máscara de enfoque TP_RGBCURVES_BLUE;B TP_RGBCURVES_CHANNEL;Canal TP_RGBCURVES_GREEN;G @@ -1360,7 +2169,7 @@ TP_RGBCURVES_RED;R TP_ROTATE_DEGREE;Grados TP_ROTATE_LABEL;Rotar TP_ROTATE_SELECTLINE;Seleccionar línea recta -TP_SAVEDIALOG_OK_TIP;Atajo Ctrl-Enter +TP_SAVEDIALOG_OK_TIP;Tecla de Atajo Ctrl-Enter TP_SHADOWSHLIGHTS_HIGHLIGHTS;Luces altas TP_SHADOWSHLIGHTS_HLTONALW;Ancho tonal de Luces Altas TP_SHADOWSHLIGHTS_LABEL;Sombras/Luces altas @@ -1374,6 +2183,7 @@ TP_SHARPENEDGE_LABEL;Bordes TP_SHARPENEDGE_PASSES;Iteraciones TP_SHARPENEDGE_THREE;Sólo luminancia TP_SHARPENING_AMOUNT;Cantidad +TP_SHARPENING_CONTRAST;Umbral de contraste TP_SHARPENING_EDRADIUS;Radio TP_SHARPENING_EDTOLERANCE;Tolerancia de bordes TP_SHARPENING_HALOCONTROL;Control de halo @@ -1389,9 +2199,16 @@ TP_SHARPENING_RLD_ITERATIONS;Iteraciones TP_SHARPENING_THRESHOLD;Umbral TP_SHARPENING_USM;Máscara de enfoque TP_SHARPENMICRO_AMOUNT;Cantidad +TP_SHARPENMICRO_CONTRAST;Umbral de contraste TP_SHARPENMICRO_LABEL;Microcontraste TP_SHARPENMICRO_MATRIX;Matriz 3×3 en lugar de 5×5 TP_SHARPENMICRO_UNIFORMITY;Uniformidad +TP_SOFTLIGHT_LABEL;Luz tenue +TP_SOFTLIGHT_STRENGTH;Fuerza +TP_TM_FATTAL_AMOUNT;Cantidad +TP_TM_FATTAL_ANCHOR;Ancla +TP_TM_FATTAL_LABEL;HDR Mapeo de tonos +TP_TM_FATTAL_THRESHOLD;Límite TP_VIBRANCE_AVOIDCOLORSHIFT;Evitar desplazamiento de color TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tonos de piel @@ -1416,6 +2233,170 @@ TP_VIGNETTING_CENTER_Y;Centro Y TP_VIGNETTING_LABEL;Corrección de viñeteo TP_VIGNETTING_RADIUS;Radio TP_VIGNETTING_STRENGTH;Intensidad +TP_WAVELET_1;Nivel 1 +TP_WAVELET_2;Nivel 2 +TP_WAVELET_3;Nivel 3 +TP_WAVELET_4;Nivel 4 +TP_WAVELET_5;Nivel 5 +TP_WAVELET_6;Nivel 6 +TP_WAVELET_7;Nivel 7 +TP_WAVELET_8;Nivel 8 +TP_WAVELET_9;Nivel 9 +TP_WAVELET_APPLYTO;Aplicar para +TP_WAVELET_AVOID;Evitar el cambio de color +TP_WAVELET_B0;negro +TP_WAVELET_B1;Gris +TP_WAVELET_B2;Residual +TP_WAVELET_BACKGROUND;Fondo +TP_WAVELET_BACUR;Curva +TP_WAVELET_BALANCE;Balance de contraste d/v-h +TP_WAVELET_BALANCE_TOOLTIP;Altera el balance entre las direcciones wavelet: vertical-horizontal y diagonal. \nSi se activa el contraste, en el color o el mapeo de tonos residuales, el efecto debido al balance se amplifica. +TP_WAVELET_BALCHRO;Balance del color +TP_WAVELET_BALCHRO_TOOLTIP;Si está habilitado, la curva o el control deslizante 'Balance de contraste' también modifica el balance del color. +TP_WAVELET_BANONE;Ninguno +TP_WAVELET_BASLI;Deslizador +TP_WAVELET_BATYPE;Método de balance de contraste +TP_WAVELET_CBENAB;Tonificación y balance de color +TP_WAVELET_CB_TOOLTIP;Para valores fuertes, el tono del color del producto se combina o no con la descomposición de niveles 'tonificación' \nPara valores bajos, puede cambiar el balance de blancos del fondo (cielo, ...) sin cambiar el del plano frontal, generalmente más contrastado +TP_WAVELET_CCURVE;Contraste local +TP_WAVELET_CH1;gamma completa del color +TP_WAVELET_CH2;Saturado/pastel +TP_WAVELET_CH3;Enlazar con los niveles de contraste +TP_WAVELET_CHCU;Curva +TP_WAVELET_CHR;Fuerza de enlace con el contraste del color +TP_WAVELET_CHRO;Umbral saturado/pastel +TP_WAVELET_CHRO_TOOLTIP;Establece el nivel de wavelet que será el umbral entre los colores saturados y pastel. \n1-x: saturado \nx-9: pastel \nSi el valor supera la cantidad de niveles de wavelet que está utilizando, se ignorará. +TP_WAVELET_CHR_TOOLTIP;Ajusta el color en función de los "niveles de contraste" y la "fuerza de enlace del contraste de croma" +TP_WAVELET_CHSL;Deslizadores +TP_WAVELET_CHTYPE;Método de crominancia +TP_WAVELET_COLORT;Opacidad rojo-verde +TP_WAVELET_COMPCONT;Contraste +TP_WAVELET_COMPGAMMA;Gamma de compresión +TP_WAVELET_COMPGAMMA_TOOLTIP;Ajustar la gamma de la imagen residual le permite equilibrar los datos y el histograma. +TP_WAVELET_COMPTM;Mapeo de tonos +TP_WAVELET_CONTEDIT;'Después',Curva de contraste +TP_WAVELET_CONTR;Gamma +TP_WAVELET_CONTRA;Contraste +TP_WAVELET_CONTRAST_MINUS;Contraste - +TP_WAVELET_CONTRAST_PLUS;Contraste + +TP_WAVELET_CONTRA_TOOLTIP;Cambia el contraste de la imagen residual. +TP_WAVELET_CTYPE;Control de crominancia +TP_WAVELET_CURVEEDITOR_CC_TOOLTIP;Modifica el contraste local como una función del contraste local original (abscisa). \nLos valores bajos de abscisa representan un contraste local pequeño (valores reales aproximadamente 10 ... 20). \n50% de abscisa representa el contraste local promedio (valor real aproximadamente 100..300) . \n66% de abscisas representa la desviación estándar del contraste local (valor real de aproximadamente 300 ... 800). \n100% de abscisa representa el máximo contraste local (valor real de aproximadamente 3000 ... 8000). +TP_WAVELET_CURVEEDITOR_CH;Niveles de contrate=f(Matiz) +TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Modifica el contraste de cada nivel en función del tono. \nTenga cuidado de no sobrescribir los cambios realizados con los controles de tono de la subherramienta Gamut. \nLa curva solo tendrá efecto cuando los controles deslizantes del nivel de contraste de wavelets no sean cero. +TP_WAVELET_CURVEEDITOR_CL;L +TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Aplica una curva de luminancia de contraste definitiva al final del tratamiento con wavelets. +TP_WAVELET_CURVEEDITOR_HH;HH +TP_WAVELET_CURVEEDITOR_HH_TOOLTIP;Modifica el matiz de la imagen residual en función del matiz. +TP_WAVELET_DALL;Todas las direcciones +TP_WAVELET_DAUB;Cualidad del borde +TP_WAVELET_DAUB2;D2 - bajo +TP_WAVELET_DAUB4;D4 - estandar +TP_WAVELET_DAUB6;D6 - estándar mayor +TP_WAVELET_DAUB10;D10 - medio +TP_WAVELET_DAUB14;D14 - alto +TP_WAVELET_DAUB_TOOLTIP;Cambios en los coeficientes de Daubechies: \nD4 = Estándar, \nD14 = A menudo, el mejor rendimiento, un 10% más de tiempo. \nAfecta la detección de bordes, así como la calidad general de los primeros niveles. Sin embargo, la calidad no está estrictamente relacionada con este coeficiente y puede variar con las imágenes y los usos. +TP_WAVELET_DONE;Vertical +TP_WAVELET_DTHR;Diagonal +TP_WAVELET_DTWO;Horizontal +TP_WAVELET_EDCU;Curva +TP_WAVELET_EDGCONT;Contraste local +TP_WAVELET_EDGCONT_TOOLTIP;El ajuste de los puntos a la izquierda disminuye el contraste, y a la derecha lo aumenta. \nAbajo-izquierda, Arriba-Izquierda, Arriba-Derecha, Abajo-derecha \nRepresenta respectivamente el contraste local para valores bajos, media, mean + stdev, máxima +TP_WAVELET_EDGE;Nitidez del borde +TP_WAVELET_EDGEAMPLI;Amplificación de base +TP_WAVELET_EDGEDETECT;Sensibilidad de gradiente +TP_WAVELET_EDGEDETECTTHR;Umbral bajo (ruido) +TP_WAVELET_EDGEDETECTTHR2;Umbral alto (detección) +TP_WAVELET_EDGEDETECTTHR_TOOLTIP;Este ajustador le permite trabajar la detección de bordes, por ejemplo, para evitar aplicar la nitidez de los bordes a detalles finos, como el ruido en el cielo. +TP_WAVELET_EDGEDETECT_TOOLTIP;Al mover el control deslizante hacia la derecha aumenta la sensibilidad del borde. Esto afecta el contraste local, la configuración de borde y el ruido. +TP_WAVELET_EDGESENSI;Sensibilidad del borde +TP_WAVELET_EDGREINF_TOOLTIP;Refuerza o reduce la acción del primer nivel, hace lo contrario con el segundo nivel y deja el resto sin cambios. +TP_WAVELET_EDGTHRESH;Detalle +TP_WAVELET_EDGTHRESH_TOOLTIP;Cambiar el reparto entre los primeros niveles y los demás. Cuanto más alto sea el umbral, más se centrará la acción en los primeros niveles. Tenga cuidado con los valores negativos, aumentan la acción de los niveles altos y pueden producir elementos extraños +TP_WAVELET_EDRAD;Radio +TP_WAVELET_EDRAD_TOOLTIP;Este ajuste de radio es muy diferente de aquellos en otras herramientas de enfoque. Su valor se compara con cada nivel a través de una función compleja. En este sentido, un valor de cero todavía tiene un efecto +TP_WAVELET_EDSL;Deslizadores de umbral +TP_WAVELET_EDTYPE;Método de contraste local +TP_WAVELET_EDVAL;Fuerza +TP_WAVELET_FINAL;Retoque final +TP_WAVELET_FINEST;Mejor +TP_WAVELET_HIGHLIGHT;Rango de luminancia +TP_WAVELET_HS1;Rango de luminancia total +TP_WAVELET_HS2;Sombras/Luces altas +TP_WAVELET_HUESKIN;Tono de piel +TP_WAVELET_HUESKIN_TOOLTIP;Los puntos inferiores establecen el comienzo de la zona de transición, y los puntos superiores el final de la misma, donde el efecto es máximo.\nSi necesita mover el área significativamente, o si hay elementos extraños, es porque el balance de blancos es incorrecto +TP_WAVELET_HUESKY;Tono del cielo +TP_WAVELET_HUESKY_TOOLTIP;Los puntos inferiores establecen el comienzo de la zona de transición, y los puntos superiores el final de la misma, donde el efecto es máximo. \nSi necesita mover el área significativamente, o si hay elementos extraños, entonces el balance de blancos es incorrecto . +TP_WAVELET_ITER;Niveles de equilibrio delta +TP_WAVELET_ITER_TOOLTIP;Izquierda: aumenta los niveles bajos y reduce los niveles altos, \nDerecha: reduce los niveles bajos y aumenta los niveles altos. +TP_WAVELET_LABEL;Niveles wavelet +TP_WAVELET_LARGEST;Más grueso +TP_WAVELET_LEVCH;Cromaticidad(Color): saturación ó pureza +TP_WAVELET_LEVDIR_ALL;Todos los nivels en todas las direcciones. +TP_WAVELET_LEVDIR_INF;Por debajo o igual al nivel +TP_WAVELET_LEVDIR_ONE;Un solo nivel +TP_WAVELET_LEVDIR_SUP;Por encima del nivel +TP_WAVELET_LEVELS;Niveles wavelet +TP_WAVELET_LEVELS_TOOLTIP;Elija la cantidad de niveles de detalle en que se descompondrá la imagen. Más niveles requieren más RAM y más tiempo de procesamiento. +TP_WAVELET_LEVF;Contraste +TP_WAVELET_LEVLABEL;Vista previa de los niveles máximos posibles = %1 +TP_WAVELET_LEVONE;Nivel 2 +TP_WAVELET_LEVTHRE;Nivel 4 +TP_WAVELET_LEVTWO;Nivel 3 +TP_WAVELET_LEVZERO;Nivel 1 +TP_WAVELET_LINKEDG;Enlaza con la fuerza de la nitidez de los bordes +TP_WAVELET_LIPST;Algoritmo mejorado +TP_WAVELET_LOWLIGHT;Rango de luminancia de la sombra +TP_WAVELET_MEDGREINF;Primer nivel +TP_WAVELET_MEDI;Reduce los elementos extraños en el cielo azul +TP_WAVELET_MEDILEV;Detección de bordes +TP_WAVELET_MEDILEV_TOOLTIP;Cuando habilita la detección de bordes, se recomienda: \nTener los niveles de bajo contraste deshabilitados para evitar elementos extraños, \nusar para valores altos de sensibilidad de gradiente. \nPuede modular la fuerza con 'enfocar' desde quitar ruido y enfocar. +TP_WAVELET_NEUTRAL;Neutral +TP_WAVELET_NOIS;Quitar ruido +TP_WAVELET_NOISE;Quitar ruido y clarificar +TP_WAVELET_NPHIGH;Alto +TP_WAVELET_NPLOW;Bajo +TP_WAVELET_NPNONE;Ninguno +TP_WAVELET_NPTYPE;Píxeles vecinos +TP_WAVELET_NPTYPE_TOOLTIP;Este algoritmo utiliza la proximidad de un píxel y ocho de sus vecinos. Si hay una diferencia menor, los bordes se refuerzan. +TP_WAVELET_OPACITY;Opacidad Azul-Amarillo +TP_WAVELET_OPACITYW; Curva de balance d/v-h para contrast +TP_WAVELET_OPACITYWL;Contraste local final +TP_WAVELET_OPACITYWL_TOOLTIP;Modifica el contraste local definitivo al final del tratamiento wavelet \ nEl lado izquierdo representa el contraste local más pequeño, avanzando hacia la derecha el contraste local más grande +TP_WAVELET_PASTEL;Cromaticidad(colores) pastel +TP_WAVELET_PROC;Proceso +TP_WAVELET_RE1;Reforzado +TP_WAVELET_RE2;Sin alterar +TP_WAVELET_RE3;Reducir +TP_WAVELET_RESCHRO;Cromaticidad(aquí saturación) +TP_WAVELET_RESCON;Sombras +TP_WAVELET_RESCONH;Luces altas(Reflejos) +TP_WAVELET_RESID;Imagen residual +TP_WAVELET_SAT;Saturar la cromaticidad(color) +TP_WAVELET_SETTINGS;Configuraciones Wavelet +TP_WAVELET_SKIN;Enfocar piel/proteción +TP_WAVELET_SKIN_TOOLTIP;A (menos)-100 los tonos de piel están afectados. \nA 0 todos los tonos se tratan por igual. \nA +100 los tonos de piel están protegidos, mientras que todos los demás tonos están afectados. +TP_WAVELET_SKY;protección del cielo al enfocar +TP_WAVELET_SKY_TOOLTIP;A -100 se apuntan los tonos del cielo. \nEn 0 todos los tonos se tratan por igual. \nEn +100 los tonos del cielo están protegidos, mientras que todos los demás tonos están afectados. +TP_WAVELET_SKY_TOOLTIPEn (menos)-100se afecta a los tonos del cielo. \nEn 0 todos los tonos se tratan por igual. \nen +100 los tonos del cielo están protegidos, mientras que todos los demás tonos están afectados. +TP_WAVELET_STREN;Fuerza +TP_WAVELET_STRENGTH;Fuerza +TP_WAVELET_SUPE;Extra +TP_WAVELET_THR;Límite de la sombra +TP_WAVELET_THRESHOLD;Niveles de luces altas +TP_WAVELET_THRESHOLD2;Niveles de sombra +TP_WAVELET_THRESHOLD2_TOOLTIP;Solo los niveles entre 9 y 9 menos el valor se verán afectados por el rango de luminancia de la sombra. Otros niveles serán tratados completamente. El nivel más alto posible está limitado por el valor del nivel de resaltado (9 menos el valor del nivel de resaltado) +TP_WAVELET_THRESHOLD_TOOLTIP;Solo los niveles más allá del valor elegido se verán afectados por el rango de luminancia de resaltado. Otros niveles serán tratados completamente. El valor elegido aquí limita el valor más alto posible de la sombra.niveles +TP_WAVELET_THRH;Umbral de luces altas +TP_WAVELET_TILESBIG;Mosaicos grandes +TP_WAVELET_TILESFULL;Imagen completa +TP_WAVELET_TILESIZE;Método de mosaico +TP_WAVELET_TILESLIT;Mosaicos pequeños +TP_WAVELET_TILES_TOOLTIP;El procesamiento de la imagen completa conduce a una mejor calidad y es la opción recomendada, mientras que el uso de mosaicos es una solución alternativa para los usuarios con poca memoria RAM. Consulte RawPedia para los requisitos de memoria. +TP_WAVELET_TMSTRENGTH;Fuerza comprensiva +TP_WAVELET_TMSTRENGTH_TOOLTIP;Controle la intensidad del mapeo de tonos o la compresión de contraste de la imagen residual. Cuando el valor es diferente de 0 , los controles deslizantes Fuerza y ​​Gamma de la herramienta de asignación de tonos en la pestaña Exposición se atenuarán. +TP_WAVELET_TMTYPE;Método de compresión +TP_WAVELET_TON;Viraje TP_WBALANCE_AUTO;Auto TP_WBALANCE_CAMERA;Cámara TP_WBALANCE_CLOUDY;Nublado @@ -1450,6 +2431,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Método +TP_WBALANCE_PICKER;Seleccionar TP_WBALANCE_SHADE;Sombra TP_WBALANCE_SIZE;Tamaño: TP_WBALANCE_SOLUX35;Solux 3500K @@ -1457,6 +2439,8 @@ TP_WBALANCE_SOLUX41;Solux 4100K TP_WBALANCE_SOLUX47;Solux 4700K (proveedor) TP_WBALANCE_SOLUX47_NG;Solux 4700K (Nat. Gallery) TP_WBALANCE_SPOTWB;Muestra bal. blancos +TP_WBALANCE_TEMPBIAS;Sesgo de temperatura AWB +TP_WBALANCE_TEMPBIAS_TOOLTIP;Permite alterar el cálculo del "balance de blancos automático" \ndirigiéndolo hacia temperaturas más cálidas o más bajas. \nEl sesgo se expresa como un porcentaje de la temperatura calculada, por lo que el resultado viene dado por "computedTemp + computedTemp * bias". TP_WBALANCE_TEMPERATURE;Temperatura TP_WBALANCE_TUNGSTEN;Tungsteno TP_WBALANCE_WATER1;Subacuático 1 @@ -1464,869 +2448,14 @@ TP_WBALANCE_WATER2;Subacuático 2 TP_WBALANCE_WATER_HEADER;Subacuático ZOOMPANEL_100;(100%) ZOOMPANEL_NEWCROPWINDOW;Abrir (nueva) ventana de detalle -ZOOMPANEL_ZOOM100;Zoom al 100%\nAtajo: z -ZOOMPANEL_ZOOMFITSCREEN;Ajustar a pantalla\nAtajo: Alt-f -ZOOMPANEL_ZOOMIN;Aumentar Zoom\nAtajo: + -ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - +ZOOMPANEL_ZOOM100;Zoom al 100%\nTecla de Atajo: z +ZOOMPANEL_ZOOMFITCROPSCREEN;Ajustar el recorte a la pantalla \nCorte corto: f +ZOOMPANEL_ZOOMFITSCREEN;Ajustar a pantalla\nTecla de Atajo: Alt-f +ZOOMPANEL_ZOOMIN;Aumentar Zoom\nTecla de Atajo: + +ZOOMPANEL_ZOOMOUT;Reducir Zoom\nTecla de Atajo: - !!!!!!!!!!!!!!!!!!!!!!!!! ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. -!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s -!CURVEEDITOR_AXIS_IN;I: -!CURVEEDITOR_AXIS_LEFT_TAN;LT: -!CURVEEDITOR_AXIS_OUT;O: -!CURVEEDITOR_AXIS_RIGHT_TAN;RT: -!CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. -!DONT_SHOW_AGAIN;Don't show this message again. -!DYNPROFILEEDITOR_DELETE;Delete -!DYNPROFILEEDITOR_EDIT;Edit -!DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule -!DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. -!DYNPROFILEEDITOR_MOVE_DOWN;Move Down -!DYNPROFILEEDITOR_MOVE_UP;Move Up -!DYNPROFILEEDITOR_NEW;New -!DYNPROFILEEDITOR_NEW_RULE;New Dynamic Profile Rule -!DYNPROFILEEDITOR_PROFILE;Processing Profile -!EXIFFILTER_IMAGETYPE;Image type -!EXIFPANEL_SHOWALL;Show all -!EXPORT_BYPASS;Processing steps to bypass -!EXPORT_BYPASS_EQUALIZER;Bypass Wavelet Levels -!EXPORT_PIPELINE;Processing pipeline -!EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) -!EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality. -!EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) -!FILEBROWSER_POPUPCOLORLABEL0;Label: None -!FILEBROWSER_RESETDEFAULTPROFILE;Reset to default -!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 (*.icc) -!FILECHOOSER_FILTER_CURVE;Curve files -!FILECHOOSER_FILTER_LCP;Lens correction profiles -!FILECHOOSER_FILTER_PP;Processing profiles -!FILECHOOSER_FILTER_SAME;Same format as current photo -!FILECHOOSER_FILTER_TIFF;TIFF files -!GENERAL_APPLY;Apply -!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. -!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. -!HISTORY_MSG_166;Exposure - Reset -!HISTORY_MSG_173;NR - Detail recovery -!HISTORY_MSG_203;NR - Color space -!HISTORY_MSG_235;B&W - CM - Auto -!HISTORY_MSG_237;B&W - CM -!HISTORY_MSG_256;NR - Median - Type -!HISTORY_MSG_273;CT - Color Balance SMH -!HISTORY_MSG_297;NR - Mode -!HISTORY_MSG_299;NR - Chrominance curve -!HISTORY_MSG_300;- -!HISTORY_MSG_301;NR - Luma control -!HISTORY_MSG_302;NR - Chroma method -!HISTORY_MSG_303;NR - Chroma method -!HISTORY_MSG_304;W - Contrast levels -!HISTORY_MSG_305;Wavelet Levels -!HISTORY_MSG_306;W - Process -!HISTORY_MSG_307;W - Process -!HISTORY_MSG_308;W - Process direction -!HISTORY_MSG_309;W - ES - Detail -!HISTORY_MSG_310;W - Residual - Sky tar/prot -!HISTORY_MSG_311;W - Wavelet levels -!HISTORY_MSG_312;W - Residual - Shadows threshold -!HISTORY_MSG_313;W - Chroma - Sat/past -!HISTORY_MSG_314;W - Gamut - Reduce artifacts -!HISTORY_MSG_315;W - Residual - Contrast -!HISTORY_MSG_316;W - Gamut - Skin tar/prot -!HISTORY_MSG_317;W - Gamut - Skin hue -!HISTORY_MSG_318;W - Contrast - Highlight levels -!HISTORY_MSG_319;W - Contrast - Highlight range -!HISTORY_MSG_320;W - Contrast - Shadow range -!HISTORY_MSG_321;W - Contrast - Shadow levels -!HISTORY_MSG_322;W - Gamut - Avoid color shift -!HISTORY_MSG_323;W - ES - Local contrast -!HISTORY_MSG_324;W - Chroma - Pastel -!HISTORY_MSG_325;W - Chroma - Saturated -!HISTORY_MSG_326;W - Chroma - Method -!HISTORY_MSG_327;W - Contrast - Apply to -!HISTORY_MSG_328;W - Chroma - Link strength -!HISTORY_MSG_329;W - Toning - Opacity RG -!HISTORY_MSG_330;W - Toning - Opacity BY -!HISTORY_MSG_331;W - Contrast levels - Extra -!HISTORY_MSG_332;W - Tiling method -!HISTORY_MSG_333;W - Residual - Shadows -!HISTORY_MSG_334;W - Residual - Chroma -!HISTORY_MSG_335;W - Residual - Highlights -!HISTORY_MSG_336;W - Residual - Highlights threshold -!HISTORY_MSG_337;W - Residual - Sky hue -!HISTORY_MSG_338;W - ES - Radius -!HISTORY_MSG_339;W - ES - Strength -!HISTORY_MSG_340;W - Strength -!HISTORY_MSG_341;W - Edge performance -!HISTORY_MSG_342;W - ES - First level -!HISTORY_MSG_343;W - Chroma levels -!HISTORY_MSG_344;W - Meth chroma sl/cur -!HISTORY_MSG_345;W - ES - Local contrast -!HISTORY_MSG_346;W - ES - Local contrast method -!HISTORY_MSG_347;W - Denoise - Level 1 -!HISTORY_MSG_348;W - Denoise - Level 2 -!HISTORY_MSG_349;W - Denoise - Level 3 -!HISTORY_MSG_350;W - ES - Edge detection -!HISTORY_MSG_351;W - Residual - HH curve -!HISTORY_MSG_352;W - Background -!HISTORY_MSG_353;W - ES - Gradient sensitivity -!HISTORY_MSG_354;W - ES - Enhanced -!HISTORY_MSG_355;W - ES - Threshold low -!HISTORY_MSG_356;W - ES - Threshold high -!HISTORY_MSG_357;W - Denoise - Link with ES -!HISTORY_MSG_358;W - Gamut - CH -!HISTORY_MSG_359;Hot/Dead - Threshold -!HISTORY_MSG_360;TM - Gamma -!HISTORY_MSG_361;W - Final - Chroma balance -!HISTORY_MSG_362;W - Residual - Compression method -!HISTORY_MSG_363;W - Residual - Compression strength -!HISTORY_MSG_364;W - Final - Contrast balance -!HISTORY_MSG_365;W - Final - Delta balance -!HISTORY_MSG_366;W - Residual - Compression gamma -!HISTORY_MSG_367;W - Final - 'After' contrast curve -!HISTORY_MSG_368;W - Final - Contrast balance -!HISTORY_MSG_369;W - Final - Balance method -!HISTORY_MSG_370;W - Final - Local contrast curve -!HISTORY_MSG_371;Post-Resize Sharpening -!HISTORY_MSG_372;PRS USM - Radius -!HISTORY_MSG_373;PRS USM - Amount -!HISTORY_MSG_374;PRS USM - Threshold -!HISTORY_MSG_375;PRS USM - Sharpen only edges -!HISTORY_MSG_376;PRS USM - Edge detection radius -!HISTORY_MSG_377;PRS USM - Edge tolerance -!HISTORY_MSG_378;PRS USM - Halo control -!HISTORY_MSG_379;PRS USM - Halo control amount -!HISTORY_MSG_380;PRS - Method -!HISTORY_MSG_381;PRS RLD - Radius -!HISTORY_MSG_382;PRS RLD - Amount -!HISTORY_MSG_383;PRS RLD - Damping -!HISTORY_MSG_384;PRS RLD - Iterations -!HISTORY_MSG_385;W - Residual - Color Balance -!HISTORY_MSG_386;W - Residual - CB green high -!HISTORY_MSG_387;W - Residual - CB blue high -!HISTORY_MSG_388;W - Residual - CB green mid -!HISTORY_MSG_389;W - Residual - CB blue mid -!HISTORY_MSG_390;W - Residual - CB green low -!HISTORY_MSG_391;W - Residual - CB blue low -!HISTORY_MSG_392;W - Residual - Color Balance -!HISTORY_MSG_393;DCP - Look table -!HISTORY_MSG_394;DCP - Baseline exposure -!HISTORY_MSG_395;DCP - Base table -!HISTORY_MSG_396;W - Contrast sub-tool -!HISTORY_MSG_397;W - Chroma sub-tool -!HISTORY_MSG_398;W - ES sub-tool -!HISTORY_MSG_399;W - Residual sub-tool -!HISTORY_MSG_400;W - Final sub-tool -!HISTORY_MSG_401;W - Toning sub-tool -!HISTORY_MSG_402;W - Denoise sub-tool -!HISTORY_MSG_403;W - ES - Edge sensitivity -!HISTORY_MSG_404;W - ES - Base amplification -!HISTORY_MSG_405;W - Denoise - Level 4 -!HISTORY_MSG_406;W - ES - Neighboring pixels -!HISTORY_MSG_407;Retinex - Method -!HISTORY_MSG_408;Retinex - Radius -!HISTORY_MSG_409;Retinex - Contrast -!HISTORY_MSG_410;Retinex - Offset -!HISTORY_MSG_411;Retinex - Strength -!HISTORY_MSG_412;Retinex - Gaussian gradient -!HISTORY_MSG_413;Retinex - Contrast -!HISTORY_MSG_414;Retinex - Histogram - Lab -!HISTORY_MSG_415;Retinex - Transmission -!HISTORY_MSG_416;Retinex -!HISTORY_MSG_417;Retinex - Transmission median -!HISTORY_MSG_418;Retinex - Threshold -!HISTORY_MSG_419;Retinex - Color space -!HISTORY_MSG_420;Retinex - Histogram - HSL -!HISTORY_MSG_421;Retinex - Gamma -!HISTORY_MSG_422;Retinex - Gamma -!HISTORY_MSG_423;Retinex - Gamma slope -!HISTORY_MSG_424;Retinex - HL threshold -!HISTORY_MSG_425;Retinex - Log base -!HISTORY_MSG_426;Retinex - Hue equalizer -!HISTORY_MSG_427;Output rendering intent -!HISTORY_MSG_428;Monitor rendering intent -!HISTORY_MSG_429;Retinex - Iterations -!HISTORY_MSG_430;Retinex - Transmission gradient -!HISTORY_MSG_431;Retinex - Strength gradient -!HISTORY_MSG_432;Retinex - M - Highlights -!HISTORY_MSG_433;Retinex - M - Highlights TW -!HISTORY_MSG_434;Retinex - M - Shadows -!HISTORY_MSG_435;Retinex - M - Shadows TW -!HISTORY_MSG_436;Retinex - M - Radius -!HISTORY_MSG_437;Retinex - M - Method -!HISTORY_MSG_438;Retinex - M - Equalizer -!HISTORY_MSG_439;Retinex - Process -!HISTORY_MSG_440;CbDL - Method -!HISTORY_MSG_441;Retinex - Gain transmission -!HISTORY_MSG_442;Retinex - Scale -!HISTORY_MSG_443;Output black point compensation -!HISTORY_MSG_444;WB - Temp bias -!HISTORY_MSG_445;Raw sub-image -!HISTORY_MSG_449;PS - ISO adaption -!HISTORY_MSG_452;PS - Show motion -!HISTORY_MSG_453;PS - Show mask only -!HISTORY_MSG_457;PS - Check red/blue -!HISTORY_MSG_462;PS - Check green -!HISTORY_MSG_464;PS - Blur motion mask -!HISTORY_MSG_465;PS - Blur radius -!HISTORY_MSG_468;PS - Fill holes -!HISTORY_MSG_469;PS - Median -!HISTORY_MSG_471;PS - Motion correction -!HISTORY_MSG_472;PS - Smooth transitions -!HISTORY_MSG_473;PS - Use LMMSE -!HISTORY_MSG_474;PS - Equalize -!HISTORY_MSG_475;PS - Equalize channel -!HISTORY_MSG_476;CAM02 - Temp out -!HISTORY_MSG_477;CAM02 - Green out -!HISTORY_MSG_478;CAM02 - Yb out -!HISTORY_MSG_479;CAM02 - CAT02 adaptation out -!HISTORY_MSG_480;CAM02 - Automatic CAT02 out -!HISTORY_MSG_481;CAM02 - Temp scene -!HISTORY_MSG_482;CAM02 - Green scene -!HISTORY_MSG_483;CAM02 - Yb scene -!HISTORY_MSG_484;CAM02 - Auto Yb scene -!HISTORY_MSG_485;Lens Correction -!HISTORY_MSG_486;Lens Correction - Camera -!HISTORY_MSG_487;Lens Correction - Lens -!HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold -!HISTORY_MSG_490;DRC - Amount -!HISTORY_MSG_491;White Balance -!HISTORY_MSG_492;RGB Curves -!HISTORY_MSG_493;L*a*b* Adjustments -!HISTORY_MSG_CLAMPOOG;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_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 -!HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Local Contrast - Lightness -!HISTORY_MSG_LOCALCONTRAST_RADIUS;Local Contrast - Radius -!HISTORY_MSG_METADATA_MODE;Metadata copy mode -!HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontrast - Contrast threshold -!HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion -!HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction -!HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold -!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift -!HISTORY_MSG_RAW_BORDER;Raw border -!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling -!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold -!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 -!IPTCPANEL_COPYRIGHTHINT;Enter a Notice on the current owner of the Copyright for this image, such as ©2008 Jane Doe. -!IPTCPANEL_COUNTRYHINT;Enter the name of the country pictured in this image. -!IPTCPANEL_CREATOR;Creator -!IPTCPANEL_CREATORHINT;Enter the name of the person that created this image. -!IPTCPANEL_CREATORJOBTITLE;Creator's job title -!IPTCPANEL_CREATORJOBTITLEHINT;Enter the Job Title of the person listed in the Creator field. -!IPTCPANEL_DATECREATEDHINT;Enter the Date the image was taken. -!IPTCPANEL_DESCRIPTION;Description -!IPTCPANEL_DESCRIPTIONHINT;Enter a "caption" describing the who, what, and why of what is happening in this image, this might include names of people, and/or their role in the action that is taking place within the image. -!IPTCPANEL_DESCRIPTIONWRITER;Description writer -!IPTCPANEL_DESCRIPTIONWRITERHINT;Enter the name of the person involved in writing, editing or correcting the description of the image. -!IPTCPANEL_HEADLINEHINT;Enter a brief publishable synopsis or summary of the contents of the image. -!IPTCPANEL_INSTRUCTIONSHINT;Enter information about embargoes, or other restrictions not covered by the Copyright field. -!IPTCPANEL_KEYWORDSHINT;Enter any number of keywords, terms or phrases used to express the subject matter in the image. -!IPTCPANEL_PROVINCE;Province or state -!IPTCPANEL_PROVINCEHINT;Enter the name of the province or state pictured in this image. -!IPTCPANEL_SOURCEHINT;Enter or edit the name of a person or party who has a role in the content supply chain, such as a person or entity from whom you received this image from. -!IPTCPANEL_SUPPCATEGORIES;Supplemental categories -!IPTCPANEL_SUPPCATEGORIESHINT;Further refines the subject of the image. -!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. -!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 -!MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. -!MONITOR_PROFILE_SYSTEM;System default -!NAVIGATOR_B;B: -!NAVIGATOR_G;G: -!NAVIGATOR_H;H: -!NAVIGATOR_LAB_A;a*: -!NAVIGATOR_LAB_B;b*: -!NAVIGATOR_LAB_L;L*: -!NAVIGATOR_R;R: -!NAVIGATOR_S;S: -!NAVIGATOR_V;V: -!OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. -!OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. -!OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. -!PARTIALPASTE_ADVANCEDGROUP;Advanced Settings -!PARTIALPASTE_EQUALIZER;Wavelet levels -!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_AVOIDCOLORSHIFT;CA avoid color shift -!PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue -!PARTIALPASTE_RAW_BORDER;Raw border -!PARTIALPASTE_RAW_IMAGENUM;Sub-image -!PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift -!PARTIALPASTE_RETINEX;Retinex -!PARTIALPASTE_SOFTLIGHT;Soft light -!PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting -!PREFERENCES_CLUTSCACHE;HaldCLUT Cache -!PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs -!PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area -!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop -!PREFERENCES_CROP_GUIDES_FRAME;Frame -!PREFERENCES_CROP_GUIDES_FULL;Original -!PREFERENCES_CROP_GUIDES_NONE;None -!PREFERENCES_CURVEBBOXPOS;Position of curve copy & paste buttons -!PREFERENCES_CURVEBBOXPOS_ABOVE;Above -!PREFERENCES_CURVEBBOXPOS_BELOW;Below -!PREFERENCES_CURVEBBOXPOS_LEFT;Left -!PREFERENCES_CURVEBBOXPOS_RIGHT;Right -!PREFERENCES_D50_OLD;5000K -!PREFERENCES_DIRECTORIES;Directories -!PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser -!PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. -!PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 -!PREFERENCES_GREYSC;Scene Yb luminance (%) -!PREFERENCES_GREYSC18;Yb=18 CIE L#50 -!PREFERENCES_GREYSCA;Automatic -!PREFERENCES_IMG_RELOAD_NEEDED;These changes require the image to be reloaded (or a new image to be opened) to take effect. -!PREFERENCES_INSPECT_LABEL;Inspect -!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images -!PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2. -!PREFERENCES_LANG;Language -!PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders -!PREFERENCES_MONINTENT;Default rendering intent -!PREFERENCES_MONITOR;Monitor -!PREFERENCES_MONPROFILE;Default color profile -!PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVIGATIONFRAME;Navigation -!PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel -!PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. -!PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list. -!PREFERENCES_PERFORMANCE_THREADS;Threads -!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) -!PREFERENCES_PREVDEMO;Preview Demosaic Method -!PREFERENCES_PREVDEMO_FAST;Fast -!PREFERENCES_PREVDEMO_LABEL;Demosaicing method used for the preview at <100% zoom: -!PREFERENCES_PREVDEMO_SIDECAR;As in PP3 -!PREFERENCES_PRINTER;Printer (Soft-Proofing) -!PREFERENCES_PROFILESAVEBOTH;Save processing profile both to the cache and next to the input file -!PREFERENCES_PROFILESAVELOCATION;Processing profile saving location -!PREFERENCES_PROFILE_NONE;None -!PREFERENCES_PRTINTENT;Rendering intent -!PREFERENCES_PRTPROFILE;Color profile -!PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset -!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar -!PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules -!PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme -!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview -!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise -!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file -!PROFILEPANEL_PDYNAMIC;Dynamic -!QINFO_FRAMECOUNT;%2 frames -!QINFO_HDR;HDR / %2 frame(s) -!QINFO_PIXELSHIFT;Pixel Shift / %2 frame(s) -!SAMPLEFORMAT_0;Unknown data format -!SAMPLEFORMAT_1;8-bit unsigned -!SAMPLEFORMAT_2;16-bit unsigned -!SAMPLEFORMAT_4;24-bit LogLuv -!SAMPLEFORMAT_8;32-bit LogLuv -!SAMPLEFORMAT_16;16-bit floating-point -!SAMPLEFORMAT_32;24-bit floating-point -!SAMPLEFORMAT_64;32-bit floating-point -!SAVEDLG_FILEFORMAT_FLOAT; floating-point -!SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. -!SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. -!SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool -!TP_BWMIX_MIXC;Channel Mixer -!TP_BWMIX_NEUTRAL;Reset -!TP_CBDL_AFT;After Black-and-White -!TP_CBDL_BEF;Before Black-and-White -!TP_CBDL_METHOD;Process located -!TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. -!TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] -!TP_COLORAPP_NEUTRAL;Reset -!TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values -!TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance -!TP_COLORTONING_LABGRID;L*a*b* color correction grid -!TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 -!TP_CROP_GTHARMMEANS;Harmonic Means -!TP_CROP_GTTRIANGLE1;Golden Triangles 1 -!TP_CROP_GTTRIANGLE2;Golden Triangles 2 -!TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones -!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global -!TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! -!TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Chrominance curve -!TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. -!TP_DIRPYRDENOISE_CHROMINANCE_FRAME;Chrominance -!TP_DIRPYRDENOISE_CHROMINANCE_MANUAL;Manual -!TP_DIRPYRDENOISE_CHROMINANCE_METHOD;Method -!TP_DIRPYRDENOISE_CHROMINANCE_METHODADVANCED_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. -!TP_DIRPYRDENOISE_CHROMINANCE_PMZ;Preview multi-zones -!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW;Preview -!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEWRESIDUAL_INFO_TOOLTIP;Displays the remaining noise levels of the part of the image visible in the preview after wavelet.\n\n>300 Very noisy\n100-300 Noisy\n50-100 A little noisy\n<50 Very low noise\n\nBeware, the values will differ between RGB and L*a*b* mode. The RGB values are less accurate because the RGB mode does not completely separate luminance and chrominance. -!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO;Preview size=%1, Center: Px=%2 Py=%3 -!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO;Preview noise: Mean=%1 High=%2 -!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY;Preview noise: Mean= - High= - -!TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO;Tile size=%1, Center: Tx=%2 Ty=%3 -!TP_DIRPYRDENOISE_LABEL;Noise Reduction -!TP_DIRPYRDENOISE_LUMINANCE_CONTROL;Luminance control -!TP_DIRPYRDENOISE_LUMINANCE_FRAME;Luminance -!TP_DIRPYRDENOISE_MAIN_COLORSPACE_LAB;L*a*b* -!TP_DIRPYRDENOISE_MEDIAN_METHOD_CHROMINANCE;Chroma only -!TP_DIRPYRDENOISE_MEDIAN_METHOD_WEIGHTED;Weighted L* (little) + a*b* (normal) -!TP_DIRPYRDENOISE_MEDIAN_PASSES_TOOLTIP;Applying three median filter iterations with a 3×3 window size often leads to better results than using one median filter iteration with a 7×7 window size. -!TP_DIRPYRDENOISE_MEDIAN_TYPE_TOOLTIP;Apply a median filter of the desired window size. The larger the window's size, the longer it takes.\n\n3×3 soft: treats 5 pixels in a 3×3 pixel window.\n3×3: treats 9 pixels in a 3×3 pixel window.\n5×5 soft: treats 13 pixels in a 5×5 pixel window.\n5×5: treats 25 pixels in a 5×5 pixel window.\n7×7: treats 49 pixels in a 7×7 pixel window.\n9×9: treats 81 pixels in a 9×9 pixel window.\n\nSometimes it is possible to achieve higher quality running several iterations with a smaller window size than one iteration with a larger one. -!TP_DIRPYRDENOISE_SLI;Slider -!TP_DIRPYRDENOISE_TYPE_3X3;3×3 -!TP_DIRPYRDENOISE_TYPE_3X3SOFT;3×3 soft -!TP_DIRPYRDENOISE_TYPE_5X5;5×5 -!TP_DIRPYRDENOISE_TYPE_5X5SOFT;5×5 soft -!TP_DIRPYRDENOISE_TYPE_7X7;7×7 -!TP_DIRPYRDENOISE_TYPE_9X9;9×9 -!TP_DIRPYREQUALIZER_ARTIF;Reduce artifacts -!TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. -!TP_EPD_GAMMA;Gamma -!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_EXPOSURE_TCMODE_LUMINANCE;Luminance -!TP_EXPOSURE_TCMODE_PERCEPTUAL;Perceptual -!TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee is configured to look for Hald CLUT images, which are used for the Film Simulation tool, in a folder which is taking too long to load.\nGo to Preferences > Image Processing > Film Simulation\nto see which folder is being used. You should either point RawTherapee to a folder which contains only Hald CLUT images and nothing more, or to an empty folder if you don't want to use the Film Simulation tool.\n\nRead the Film Simulation article in RawPedia for more information.\n\nDo you want to cancel the scan now? -!TP_ICM_APPLYBASELINEEXPOSUREOFFSET;Baseline exposure -!TP_ICM_APPLYBASELINEEXPOSUREOFFSET_TOOLTIP;Employ the embedded DCP baseline exposure offset. The setting is only available if the selected DCP has one. -!TP_ICM_APPLYHUESATMAP;Base table -!TP_ICM_APPLYHUESATMAP_TOOLTIP;Employ the embedded DCP base table (HueSatMap). The setting is only available if the selected DCP has one. -!TP_ICM_APPLYLOOKTABLE;Look table -!TP_ICM_APPLYLOOKTABLE_TOOLTIP;Employ the embedded DCP look table. The setting is only available if the selected DCP has one. -!TP_ICM_BPC;Black Point Compensation -!TP_ICM_PROFILEINTENT;Rendering Intent -!TP_ICM_SAVEREFERENCE;Save Reference Image -!TP_ICM_SAVEREFERENCE_APPLYWB;Apply white balance -!TP_ICM_SAVEREFERENCE_APPLYWB_TOOLTIP;Generally, apply the white balance when saving images to create ICC profiles, and do not apply the white balance to create DCP profiles. -!TP_ICM_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 -!TP_LOCALCONTRAST_LABEL;Local Contrast -!TP_LOCALCONTRAST_LIGHTNESS;Lightness level -!TP_LOCALCONTRAST_RADIUS;Radius -!TP_METADATA_EDIT;Apply modifications -!TP_METADATA_MODE;Metadata copy mode -!TP_METADATA_STRIP;Strip all metadata -!TP_METADATA_TUNNEL;Copy unchanged -!TP_NEUTRAL;Reset -!TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction -!TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both -!TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal -!TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows -!TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical -!TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. -!TP_PRSHARPENING_LABEL;Post-Resize Sharpening -!TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. -!TP_RAWCACORR_AUTOIT;Iterations -!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift -!TP_RAWCACORR_CASTR;Strength -!TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) -!TP_RAW_2PASS;1-pass+fast -!TP_RAW_3PASSBEST;3-pass (Markesteijn) -!TP_RAW_4PASS;3-pass+fast -!TP_RAW_AHD;AHD -!TP_RAW_AMAZE;AMaZE -!TP_RAW_AMAZEVNG4;AMaZE+VNG4 -!TP_RAW_BORDER;Border -!TP_RAW_DCB;DCB -!TP_RAW_DCBVNG4;DCB+VNG4 -!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold -!TP_RAW_EAHD;EAHD -!TP_RAW_FAST;Fast -!TP_RAW_HD;Threshold -!TP_RAW_HD_TOOLTIP;Lower values make hot/dead pixel detection more aggressive, but false positives may lead to artifacts. If you notice any artifacts appearing when enabling the Hot/Dead Pixel Filters, gradually increase the threshold value until they disappear. -!TP_RAW_HPHD;HPHD -!TP_RAW_IGV;IGV -!TP_RAW_IMAGENUM;Sub-image -!TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. -!TP_RAW_LMMSE;LMMSE -!TP_RAW_MONO;Mono -!TP_RAW_NONE;None (Shows sensor pattern) -!TP_RAW_PIXELSHIFT;Pixel Shift -!TP_RAW_PIXELSHIFTBLUR;Blur motion mask -!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion -!TP_RAW_PIXELSHIFTEPERISO;Sensitivity -!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images. -!TP_RAW_PIXELSHIFTEQUALBRIGHT;Equalize brightness of frames -!TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Equalize per channel -!TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Enabled: Equalize the RGB channels individually.\nDisabled: Use same equalization factor for all channels. -!TP_RAW_PIXELSHIFTEQUALBRIGHT_TOOLTIP;Equalize the brightness of the frames to the brightness of the selected frame.\nIf there are overexposed areas in the frames select the brightest frame to avoid magenta color cast in overexposed areas or enable motion correction. -!TP_RAW_PIXELSHIFTGREEN;Check green channel for motion -!TP_RAW_PIXELSHIFTHOLEFILL;Fill holes in motion mask -!TP_RAW_PIXELSHIFTHOLEFILL_TOOLTIP;Fill holes in motion mask -!TP_RAW_PIXELSHIFTLMMSE;Use LMMSE for moving parts -!TP_RAW_PIXELSHIFTLMMSE_TOOLTIP;Use LMMSE instead of AMaZE for areas of motion.\nUseful for high ISO images. -!TP_RAW_PIXELSHIFTMEDIAN;Use median for moving parts -!TP_RAW_PIXELSHIFTMEDIAN_TOOLTIP;Use median of all frames instead of selected frame for regions with motion.\nRemoves objects which are at different places in all frames.\nGives motion effect on slow moving (overlapping) objects. -!TP_RAW_PIXELSHIFTMM_AUTO;Automatic -!TP_RAW_PIXELSHIFTMM_CUSTOM;Custom -!TP_RAW_PIXELSHIFTMM_OFF;Off -!TP_RAW_PIXELSHIFTMOTIONMETHOD;Motion Correction -!TP_RAW_PIXELSHIFTMOTION_TOOLTIP;0 means no motion detection.\n1 - 99 means motion will be detected according to this value. Increase value to increase detection rate.\n100 means the AMaZE-demosaiced frame will be used. -!TP_RAW_PIXELSHIFTNONGREENCROSS;Check red/blue channels for motion -!TP_RAW_PIXELSHIFTSHOWMOTION;Show motion mask -!TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY;Show only motion mask -!TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY_TOOLTIP;Shows the motion mask without the image. -!TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion. -!TP_RAW_PIXELSHIFTSIGMA;Blur radius -!TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;The default radius of 1.0 usually fits well for base ISO.\nIncrease the value for high ISO shots, 5.0 is a good starting point.\nWatch the motion mask while changing the value. -!TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions -!TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. -!TP_RAW_RCD;RCD -!TP_RAW_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 -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer -!TP_RETINEX_CURVEEDITOR_CD;L=f(L) -!TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. -!TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) -!TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Strength according to hue Strength=f(H)\nThis curve also acts on chroma when using the "Highlight" retinex method. -!TP_RETINEX_CURVEEDITOR_MAP;L=f(L) -!TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts! -!TP_RETINEX_EQUAL;Equalizer -!TP_RETINEX_FREEGAMMA;Free gamma -!TP_RETINEX_GAIN;Gain -!TP_RETINEX_GAINOFFS;Gain and Offset (brightness) -!TP_RETINEX_GAINTRANSMISSION;Gain transmission -!TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. -!TP_RETINEX_GAIN_TOOLTIP;Acts on the restored image.\n\nThis is very different from the others settings. Used for black or white pixels, and to help balance the histogram. -!TP_RETINEX_GAMMA;Gamma -!TP_RETINEX_GAMMA_FREE;Free -!TP_RETINEX_GAMMA_HIGH;High -!TP_RETINEX_GAMMA_LOW;Low -!TP_RETINEX_GAMMA_MID;Middle -!TP_RETINEX_GAMMA_NONE;None -!TP_RETINEX_GAMMA_TOOLTIP;Restore tones by applying gamma before and after Retinex. Different from Retinex curves or others curves (Lab, Exposure, etc.). -!TP_RETINEX_GRAD;Transmission gradient -!TP_RETINEX_GRADS;Strength gradient -!TP_RETINEX_GRADS_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Strength is reduced when iterations increase, and conversely. -!TP_RETINEX_GRAD_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Variance and Threshold are reduced when iterations increase, and conversely. -!TP_RETINEX_HIGH;High -!TP_RETINEX_HIGHLIG;Highlight -!TP_RETINEX_HIGHLIGHT;Highlight threshold -!TP_RETINEX_HIGHLIGHT_TOOLTIP;Increase action of High algorithm.\nMay require you to re-adjust "Neighboring pixels" and to increase the "White-point correction" in the Raw tab -> Raw White Points tool. -!TP_RETINEX_HSLSPACE_LIN;HSL-Linear -!TP_RETINEX_HSLSPACE_LOG;HSL-Logarithmic -!TP_RETINEX_ITER;Iterations (Tone-mapping) -!TP_RETINEX_ITERF;Tone mapping -!TP_RETINEX_ITER_TOOLTIP;Simulate a tone-mapping operator.\nHigh values increase the processing time. -!TP_RETINEX_LABEL;Retinex -!TP_RETINEX_LABEL_MASK;Mask -!TP_RETINEX_LABSPACE;L*a*b* -!TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method -!TP_RETINEX_MAP_GAUS;Gaussian mask -!TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) -!TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) -!TP_RETINEX_MAP_METHOD_TOOLTIP;Use the mask generated by the Gaussian function above (Radius, Method) to reduce halos and artifacts.\n\nCurve only: apply a diagonal contrast curve on the mask.\nBeware of artifacts!\n\nGaussian mask: generate and use a Gaussian blur of the original mask.\nQuick.\n\nSharp mask: generate and use a wavelet on the original mask.\nSlow. -!TP_RETINEX_MAP_NONE;None -!TP_RETINEX_MEDIAN;Transmission median filter -!TP_RETINEX_METHOD;Method -!TP_RETINEX_METHOD_TOOLTIP;Low = Reinforce low light.\nUniform = Equalize action.\nHigh = Reinforce high light.\nHighlights = Remove magenta in highlights. -!TP_RETINEX_MLABEL;Restored haze-free Min=%1 Max=%2 -!TP_RETINEX_MLABEL_TOOLTIP;Should be near min=0 max=32768\nRestored image with no mixture. -!TP_RETINEX_NEIGHBOR;Radius -!TP_RETINEX_NEUTRAL;Reset -!TP_RETINEX_NEUTRAL_TIP;Reset all sliders and curves to their default values. -!TP_RETINEX_OFFSET;Offset (brightness) -!TP_RETINEX_SCALES;Gaussian gradient -!TP_RETINEX_SCALES_TOOLTIP;If slider at 0, all iterations are identical.\nIf > 0 Scale and radius are reduced when iterations increase, and conversely. -!TP_RETINEX_SETTINGS;Settings -!TP_RETINEX_SKAL;Scale -!TP_RETINEX_SLOPE;Free gamma slope -!TP_RETINEX_STRENGTH;Strength -!TP_RETINEX_THRESHOLD;Threshold -!TP_RETINEX_THRESHOLD_TOOLTIP;Limits in/out.\nIn = image source,\nOut = image gauss. -!TP_RETINEX_TLABEL;TM Min=%1 Max=%2 Mean=%3 Sigma=%4 -!TP_RETINEX_TLABEL2;TM Tm=%1 TM=%2 -!TP_RETINEX_TLABEL_TOOLTIP;Transmission map result.\nMin and Max are used by Variance.\nMean and Sigma.\nTm=Min TM=Max of transmission map. -!TP_RETINEX_TRANF;Transmission -!TP_RETINEX_TRANSMISSION;Transmission map -!TP_RETINEX_TRANSMISSION_TOOLTIP;Transmission according to transmission.\nAbscissa: transmission from negative values (min), mean, and positives values (max).\nOrdinate: amplification or reduction. -!TP_RETINEX_UNIFORM;Uniform -!TP_RETINEX_VARIANCE;Contrast -!TP_RETINEX_VARIANCE_TOOLTIP;Low variance increase local contrast and saturation, but can lead to artifacts. -!TP_RETINEX_VIEW;Process -!TP_RETINEX_VIEW_MASK;Mask -!TP_RETINEX_VIEW_METHOD_TOOLTIP;Standard - Normal display.\nMask - Displays the mask.\nUnsharp mask - Displays the image with a high radius unsharp mask.\nTransmission - Auto/Fixed - Displays the file transmission-map, before any action on contrast and brightness.\n\nAttention: the mask does not correspond to reality, but is amplified to make it more visible. -!TP_RETINEX_VIEW_NONE;Standard -!TP_RETINEX_VIEW_TRAN;Transmission - Auto -!TP_RETINEX_VIEW_TRAN2;Transmission - Fixed -!TP_RETINEX_VIEW_UNSHARP;Unsharp mask -!TP_SHARPENING_CONTRAST;Contrast threshold -!TP_SHARPENMICRO_CONTRAST;Contrast threshold -!TP_SOFTLIGHT_LABEL;Soft Light -!TP_SOFTLIGHT_STRENGTH;Strength -!TP_TM_FATTAL_AMOUNT;Amount -!TP_TM_FATTAL_ANCHOR;Anchor -!TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold -!TP_WAVELET_1;Level 1 -!TP_WAVELET_2;Level 2 -!TP_WAVELET_3;Level 3 -!TP_WAVELET_4;Level 4 -!TP_WAVELET_5;Level 5 -!TP_WAVELET_6;Level 6 -!TP_WAVELET_7;Level 7 -!TP_WAVELET_8;Level 8 -!TP_WAVELET_9;Level 9 -!TP_WAVELET_APPLYTO;Apply To -!TP_WAVELET_AVOID;Avoid color shift -!TP_WAVELET_B0;Black -!TP_WAVELET_B1;Grey -!TP_WAVELET_B2;Residual -!TP_WAVELET_BACKGROUND;Background -!TP_WAVELET_BACUR;Curve -!TP_WAVELET_BALANCE;Contrast balance d/v-h -!TP_WAVELET_BALANCE_TOOLTIP;Alters the balance between the wavelet directions: vertical-horizontal and diagonal.\nIf contrast, chroma or residual tone mapping are activated, the effect due to balance is amplified. -!TP_WAVELET_BALCHRO;Chroma balance -!TP_WAVELET_BALCHRO_TOOLTIP;If enabled, the 'Contrast balance' curve or slider also modifies chroma balance. -!TP_WAVELET_BANONE;None -!TP_WAVELET_BASLI;Slider -!TP_WAVELET_BATYPE;Contrast balance method -!TP_WAVELET_CBENAB;Toning and Color Balance -!TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted -!TP_WAVELET_CCURVE;Local contrast -!TP_WAVELET_CH1;Whole chroma range -!TP_WAVELET_CH2;Saturated/pastel -!TP_WAVELET_CH3;Link contrast levels -!TP_WAVELET_CHCU;Curve -!TP_WAVELET_CHR;Chroma-contrast link strength -!TP_WAVELET_CHRO;Saturated/pastel threshold -!TP_WAVELET_CHRO_TOOLTIP;Sets the wavelet level which will be the threshold between saturated and pastel colors.\n1-x: saturated\nx-9: pastel\n\nIf the value exceeds the amount of wavelet levels you are using then it will be ignored. -!TP_WAVELET_CHR_TOOLTIP;Adjusts chroma as a function of "contrast levels" and "chroma-contrast link strength" -!TP_WAVELET_CHSL;Sliders -!TP_WAVELET_CHTYPE;Chrominance method -!TP_WAVELET_COLORT;Opacity Red-Green -!TP_WAVELET_COMPCONT;Contrast -!TP_WAVELET_COMPGAMMA;Compression gamma -!TP_WAVELET_COMPGAMMA_TOOLTIP;Adjusting the gamma of the residual image allows you to equilibrate the data and histogram. -!TP_WAVELET_COMPTM;Tone mapping -!TP_WAVELET_CONTEDIT;'After' contrast curve -!TP_WAVELET_CONTR;Gamut -!TP_WAVELET_CONTRA;Contrast -!TP_WAVELET_CONTRAST_MINUS;Contrast - -!TP_WAVELET_CONTRAST_PLUS;Contrast + -!TP_WAVELET_CONTRA_TOOLTIP;Changes contrast of the residual image. -!TP_WAVELET_CTYPE;Chrominance control -!TP_WAVELET_CURVEEDITOR_CC_TOOLTIP;Modifies local contrast as a function of the original local contrast (abscissa).\nLow abscissa values represent small local contrast (real values about 10..20).\n50% abscissa represents average local contrast (real value about 100..300).\n66% abscissa represents standard deviation of local contrast (real value about 300..800).\n100% abscissa represents maximum local contrast (real value about 3000..8000). -!TP_WAVELET_CURVEEDITOR_CH;Contrast levels=f(Hue) -!TP_WAVELET_CURVEEDITOR_CH_TOOLTIP;Modifies each level's contrast as a function of hue.\nTake care not to overwrite changes made with the Gamut sub-tool's hue controls.\nThe curve will only have an effect when wavelet contrast level sliders are non-zero. -!TP_WAVELET_CURVEEDITOR_CL;L -!TP_WAVELET_CURVEEDITOR_CL_TOOLTIP;Applies a final contrast luminance curve at the end of the wavelet treatment. -!TP_WAVELET_CURVEEDITOR_HH;HH -!TP_WAVELET_CURVEEDITOR_HH_TOOLTIP;Modifies the residual image's hue as a function of hue. -!TP_WAVELET_DALL;All directions -!TP_WAVELET_DAUB;Edge performance -!TP_WAVELET_DAUB2;D2 - low -!TP_WAVELET_DAUB4;D4 - standard -!TP_WAVELET_DAUB6;D6 - standard plus -!TP_WAVELET_DAUB10;D10 - medium -!TP_WAVELET_DAUB14;D14 - high -!TP_WAVELET_DAUB_TOOLTIP;Changes Daubechies coefficients:\nD4 = Standard,\nD14 = Often best performance, 10% more time-intensive.\n\nAffects edge detection as well as the general quality of the firsts levels. However the quality is not strictly related to this coefficient and can vary with images and uses. -!TP_WAVELET_DONE;Vertical -!TP_WAVELET_DTHR;Diagonal -!TP_WAVELET_DTWO;Horizontal -!TP_WAVELET_EDCU;Curve -!TP_WAVELET_EDGCONT;Local contrast -!TP_WAVELET_EDGCONT_TOOLTIP;Adjusting the points to the left decreases contrast, and to the right increases it.\nBottom-left, top-left, top-right and bottom-right represent respectively local contrast for low values, mean, mean+stdev and maxima. -!TP_WAVELET_EDGE;Edge Sharpness -!TP_WAVELET_EDGEAMPLI;Base amplification -!TP_WAVELET_EDGEDETECT;Gradient sensitivity -!TP_WAVELET_EDGEDETECTTHR;Threshold low (noise) -!TP_WAVELET_EDGEDETECTTHR2;Threshold high (detection) -!TP_WAVELET_EDGEDETECTTHR_TOOLTIP;This adjuster lets you target edge detection for example to avoid applying edge sharpness to fine details, such as noise in the sky. -!TP_WAVELET_EDGEDETECT_TOOLTIP;Moving the slider to the right increases edge sensitivity. This affects local contrast, edge settings and noise. -!TP_WAVELET_EDGESENSI;Edge sensitivity -!TP_WAVELET_EDGREINF_TOOLTIP;Reinforce or reduce the action of the first level, do the opposite to the second level, and leave the rest unchanged. -!TP_WAVELET_EDGTHRESH;Detail -!TP_WAVELET_EDGTHRESH_TOOLTIP;Change the repartition between the first levels and the others. The higher the threshold the more the action is centered on the first levels. Be careful with negative values, they increase the action of high levels and can introduce artifacts. -!TP_WAVELET_EDRAD;Radius -!TP_WAVELET_EDRAD_TOOLTIP;This radius adjustment is very different from those in other sharpening tools. Its value is compared to each level through a complex function. In this sense, a value of zero still has an effect. -!TP_WAVELET_EDSL;Threshold Sliders -!TP_WAVELET_EDTYPE;Local contrast method -!TP_WAVELET_EDVAL;Strength -!TP_WAVELET_FINAL;Final Touchup -!TP_WAVELET_FINEST;Finest -!TP_WAVELET_HIGHLIGHT;Highlight luminance range -!TP_WAVELET_HS1;Whole luminance range -!TP_WAVELET_HS2;Shadows/Highlights -!TP_WAVELET_HUESKIN;Skin hue -!TP_WAVELET_HUESKIN_TOOLTIP;The bottom points set the beginning of the transition zone, and the upper points the end of it, where the effect is at its maximum.\n\nIf you need to move the area significantly, or if there are artifacts, then the white balance is incorrect. -!TP_WAVELET_HUESKY;Sky hue -!TP_WAVELET_HUESKY_TOOLTIP;The bottom points set the beginning of the transition zone, and the upper points the end of it, where the effect is at its maximum.\n\nIf you need to move the area significantly, or if there are artifacts, then the white balance is incorrect. -!TP_WAVELET_ITER;Delta balance levels -!TP_WAVELET_ITER_TOOLTIP;Left: increase low levels and reduce high levels,\nRight: reduce low levels and increase high levels. -!TP_WAVELET_LABEL;Wavelet Levels -!TP_WAVELET_LARGEST;Coarsest -!TP_WAVELET_LEVCH;Chroma -!TP_WAVELET_LEVDIR_ALL;All levels in all directions -!TP_WAVELET_LEVDIR_INF;Below or equal the level -!TP_WAVELET_LEVDIR_ONE;One level -!TP_WAVELET_LEVDIR_SUP;Above the level -!TP_WAVELET_LEVELS;Wavelet levels -!TP_WAVELET_LEVELS_TOOLTIP;Choose the number of detail levels the image is to be decomposed into. More levels require more RAM and require a longer processing time. -!TP_WAVELET_LEVF;Contrast -!TP_WAVELET_LEVLABEL;Preview maximum possible levels = %1 -!TP_WAVELET_LEVONE;Level 2 -!TP_WAVELET_LEVTHRE;Level 4 -!TP_WAVELET_LEVTWO;Level 3 -!TP_WAVELET_LEVZERO;Level 1 -!TP_WAVELET_LINKEDG;Link with Edge Sharpness' Strength -!TP_WAVELET_LIPST;Enhanced algoritm -!TP_WAVELET_LOWLIGHT;Shadow luminance range -!TP_WAVELET_MEDGREINF;First level -!TP_WAVELET_MEDI;Reduce artifacts in blue sky -!TP_WAVELET_MEDILEV;Edge detection -!TP_WAVELET_MEDILEV_TOOLTIP;When you enable Edge Detection, it is recommanded:\n- to disabled low contrast levels to avoid artifacts,\n- to use high values of gradient sensitivity.\n\nYou can modulate the strength with 'refine' from Denoise and Refine. -!TP_WAVELET_NEUTRAL;Neutral -!TP_WAVELET_NOIS;Denoise -!TP_WAVELET_NOISE;Denoise and Refine -!TP_WAVELET_NPHIGH;High -!TP_WAVELET_NPLOW;Low -!TP_WAVELET_NPNONE;None -!TP_WAVELET_NPTYPE;Neighboring pixels -!TP_WAVELET_NPTYPE_TOOLTIP;This algorithm uses the proximity of a pixel and eight of its neighbors. If less difference, edges are reinforced. -!TP_WAVELET_OPACITY;Opacity Blue-Yellow -!TP_WAVELET_OPACITYW;Contrast balance d/v-h curve -!TP_WAVELET_OPACITYWL;Final local contrast -!TP_WAVELET_OPACITYWL_TOOLTIP;Modify the final local contrast at the end of the wavelet treatment.\n\nThe left side represents the smallest local contrast, progressing to the largest local contrast on the right. -!TP_WAVELET_PASTEL;Pastel chroma -!TP_WAVELET_PROC;Process -!TP_WAVELET_RE1;Reinforced -!TP_WAVELET_RE2;Unchanged -!TP_WAVELET_RE3;Reduced -!TP_WAVELET_RESCHRO;Chroma -!TP_WAVELET_RESCON;Shadows -!TP_WAVELET_RESCONH;Highlights -!TP_WAVELET_RESID;Residual Image -!TP_WAVELET_SAT;Saturated chroma -!TP_WAVELET_SETTINGS;Wavelet Settings -!TP_WAVELET_SKIN;Skin targetting/protection -!TP_WAVELET_SKIN_TOOLTIP;At -100 skin-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 skin-tones are protected while all other tones are affected. -!TP_WAVELET_SKY;Sky targetting/protection -!TP_WAVELET_SKY_TOOLTIP;At -100 sky-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 sky-tones are protected while all other tones are affected. -!TP_WAVELET_STREN;Strength -!TP_WAVELET_STRENGTH;Strength -!TP_WAVELET_SUPE;Extra -!TP_WAVELET_THR;Shadows threshold -!TP_WAVELET_THRESHOLD;Highlight levels -!TP_WAVELET_THRESHOLD2;Shadow levels -!TP_WAVELET_THRESHOLD2_TOOLTIP;Only levels between 9 and 9 minus the value will be affected by the shadow luminance range. Other levels will be fully treated. The highest level possible is limited by the highlight level value (9 minus highlight level value). -!TP_WAVELET_THRESHOLD_TOOLTIP;Only levels beyond the chosen value will be affected by the highlight luminance range. Other levels will be fully treated. The chosen value here limits the highest possible value of the shadow levels. -!TP_WAVELET_THRH;Highlights threshold -!TP_WAVELET_TILESBIG;Big tiles -!TP_WAVELET_TILESFULL;Full image -!TP_WAVELET_TILESIZE;Tiling method -!TP_WAVELET_TILESLIT;Little tiles -!TP_WAVELET_TILES_TOOLTIP;Processing the full image leads to better quality and is the recommended option, while using tiles is a fall-back solution for users with little RAM. Refer to RawPedia for memory requirements. -!TP_WAVELET_TMSTRENGTH;Compression strength -!TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. -!TP_WAVELET_TMTYPE;Compression method -!TP_WAVELET_TON;Toning -!TP_WBALANCE_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". -!ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: f +!CURVEEDITOR_CATMULLROM;Flexible diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 851536a29..6d947cdd9 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Sharpening PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_APPLNEXTSTARTUP;hurrengo abioan aplikatua -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails PREFERENCES_CACHEMAXENTRIES;Maximal Number of Cache Entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height @@ -274,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_SELECTLANG;Hizkuntza hautatu -PREFERENCES_SELECTTHEME;Select theme PREFERENCES_SHOWBASICEXIF;Oinarrizko EXIF datuak bistaratu PREFERENCES_SHOWDATETIME;Data eta ordua bistratu PREFERENCES_SHTHRESHOLD;Moztutako itzalen muga @@ -334,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Herenen erregela TP_CROP_GUIDETYPE;Gida mota: TP_CROP_H;H TP_CROP_LABEL;Moztu -TP_CROP_SELECTCROP; Mozketa hautatu TP_CROP_W;W TP_CROP_X;x TP_CROP_Y;y @@ -430,9 +425,10 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !CURVEEDITOR_HIGHLIGHTS;Highlights @@ -449,6 +445,10 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -500,8 +500,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -570,6 +570,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open @@ -973,14 +974,32 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1004,6 +1023,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1074,10 +1094,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !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. -!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_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 @@ -1111,17 +1127,17 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1152,6 +1168,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1202,8 +1219,14 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1211,12 +1234,17 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1232,7 +1260,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1244,8 +1271,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1291,7 +1318,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1314,15 +1340,13 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done @@ -1332,7 +1356,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1388,7 +1411,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1452,11 +1475,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1467,6 +1486,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1486,8 +1506,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1499,14 +1517,13 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1526,11 +1543,9 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1544,6 +1559,25 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1576,11 +1610,17 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1660,7 +1700,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. @@ -1789,10 +1828,16 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1830,11 +1875,11 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1866,6 +1911,8 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1926,10 +1973,10 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1967,7 +2014,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2030,7 +2077,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2243,6 +2290,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index 9c1fcce59..987774546 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -5,6 +5,7 @@ ABOUT_TAB_CREDITS;Crédits ABOUT_TAB_LICENSE;Licence ABOUT_TAB_RELEASENOTES;Notes de version ABOUT_TAB_SPLASH;Splash +ADJUSTER_RESET_TO_DEFAULT;Clic - réinitialise à la valeur par défaut.\nCtrl+clic - réinitialise à la valeur initiale. BATCHQUEUE_AUTOSTART;Démarrage auto BATCHQUEUE_AUTOSTARTHINT;Démarrer automatiquement le traitement à l'arrivée d'une nouvelle tâche BATCHQUEUE_DESTFILENAME;Chemin et nom de fichier @@ -14,6 +15,7 @@ CURVEEDITOR_AXIS_IN;E: CURVEEDITOR_AXIS_LEFT_TAN;TG: CURVEEDITOR_AXIS_OUT;S: CURVEEDITOR_AXIS_RIGHT_TAN;TD: +CURVEEDITOR_CATMULLROM;Flexible CURVEEDITOR_CURVE;Courbe CURVEEDITOR_CURVES;Courbes CURVEEDITOR_CUSTOM;Personnalisé @@ -40,6 +42,10 @@ DYNPROFILEEDITOR_DELETE;Supprimer DYNPROFILEEDITOR_EDIT;Modifier DYNPROFILEEDITOR_EDIT_RULE;Modifier une règle de Profil Dynamique DYNPROFILEEDITOR_ENTRY_TOOLTIP;La correspondance est insensible à la casse.\nUtilisez le préfix "re:" pour entrer\nune expression régulière. +DYNPROFILEEDITOR_IMGTYPE_ANY;Tout +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +DYNPROFILEEDITOR_IMGTYPE_STD;Standard DYNPROFILEEDITOR_MOVE_DOWN;Déplacer vers le bas DYNPROFILEEDITOR_MOVE_UP;Déplacer vers le haut DYNPROFILEEDITOR_NEW;Nouveau @@ -53,6 +59,7 @@ EXIFFILTER_CAMERA;Appareil photo EXIFFILTER_EXPOSURECOMPENSATION;Compensation d'exposition (EV) EXIFFILTER_FILETYPE;Type de fichier EXIFFILTER_FOCALLEN;Longueur focale +EXIFFILTER_IMAGETYPE;Type d'image EXIFFILTER_ISO;ISO EXIFFILTER_LENS;Objectif EXIFFILTER_METADATAFILTER;Activer les filtres sur les Métadonnées @@ -111,8 +118,8 @@ FILEBROWSER_AUTOFLATFIELD;Champ Uniforme auto FILEBROWSER_BROWSEPATHBUTTONHINT;Cliquez pour parcourir le chemin saisi FILEBROWSER_BROWSEPATHHINT;Saisissez le chemin à parcourir\nCtrl-O pour placer le focus sur le champ de saisie.\nEntrée / Ctrl-Entrée pour y naviguer;\nEsc pour effacer les modifications.\nShift-Esc pour enlever le focus.\n\n\nRaccourcis pour les chemins:\n ~ - le dossier utilisateur\n ! - le dossier Images de l'utilisateur FILEBROWSER_CACHE;Cache -FILEBROWSER_CACHECLEARFROMFULL;Supprimer du cache (complet) -FILEBROWSER_CACHECLEARFROMPARTIAL;Supprimer du cache (partiel) +FILEBROWSER_CACHECLEARFROMFULL;Vider tout y compris les profils mis en cache +FILEBROWSER_CACHECLEARFROMPARTIAL;Vider tout sauf les profils mis en cache FILEBROWSER_CLEARPROFILE;Remettre le profil à zéro FILEBROWSER_COLORLABEL_TOOLTIP;Label couleur\n\nUtilisez le menu déroulant ou le raccourci clavier:\nShift-Ctrl-0 Pas de couleur\nShift-Ctrl-1 Rouge\nShift-Ctrl-2 Jaune\nShift-Ctrl-3 Vert\nShift-Ctrl-4 Bleu\nShift-Ctrl-5 Pourpre FILEBROWSER_COPYPROFILE;Copier le profil @@ -215,6 +222,7 @@ GENERAL_AUTO;Automatique GENERAL_BEFORE;Avant GENERAL_CANCEL;Annuler GENERAL_CLOSE;Fermer +GENERAL_CURRENT;Actuel GENERAL_DISABLE;Désactiver GENERAL_DISABLED;Désactivé GENERAL_ENABLE;Activer @@ -227,6 +235,7 @@ GENERAL_NONE;Aucun GENERAL_OK;OK GENERAL_OPEN;Ouvrir GENERAL_PORTRAIT;Portrait +GENERAL_RESET;Réinitialiser GENERAL_SAVE;Enregistrer GENERAL_SAVE_AS;Enregistrer sous... GENERAL_SLIDER;Curseur @@ -239,6 +248,7 @@ HISTOGRAM_TOOLTIP_CHRO;Montrer/Cacher l'histogramme de Chromaticité HISTOGRAM_TOOLTIP_FULL;Basculer la vue de l'histogramme : complet (activé) / zoomé (désactivé) HISTOGRAM_TOOLTIP_G;Montrer/cacher l'histogramme VERT HISTOGRAM_TOOLTIP_L;Montrer/cacher l'histogramme Luminance CIELAB +HISTOGRAM_TOOLTIP_MODE;Bascule entre une échelle linéaire, linéaire-log et log-log de l'histogramme. HISTOGRAM_TOOLTIP_R;Montrer/cacher l'histogramme ROUGE HISTOGRAM_TOOLTIP_RAW;Montrer/Cacher l'histogramme des données RAW HISTORY_CHANGED;Changé @@ -478,7 +488,9 @@ HISTORY_MSG_231;N&B - Courbe 'Avant' HISTORY_MSG_232;N&B - Type de courbe 'Avant' HISTORY_MSG_233;N&B - Courbe 'Après' HISTORY_MSG_234;N&B - Type de courbe 'Après' +HISTORY_MSG_235;N&B - Mixeur de Canaux - Auto HISTORY_MSG_236;--inutilisé-- +HISTORY_MSG_237;N&B - Mixeur de Canaux HISTORY_MSG_238;FD - Étendu HISTORY_MSG_239;FD - Force HISTORY_MSG_240;FD - Centre @@ -499,32 +511,33 @@ HISTORY_MSG_254;CpND - Teinte chair HISTORY_MSG_255;Réd. de bruit - Filtre médian HISTORY_MSG_256;Réd. de bruit - Médian - Type HISTORY_MSG_257;Virage Partiel -HISTORY_MSG_258;Virage Partiel - Couleur -HISTORY_MSG_259;Virage Partiel - Opacité -HISTORY_MSG_260;Virage Partiel - Opacité 'a[b]' -HISTORY_MSG_261;Virage Partiel - Méthode -HISTORY_MSG_262;Virage Partiel - Opacité 'b' -HISTORY_MSG_263;Virage Partiel - Ombres - Rouge -HISTORY_MSG_264;Virage Partiel - Ombres - Vert -HISTORY_MSG_265;Virage Partiel - Ombres - Bleu -HISTORY_MSG_266;Virage Partiel - Moyen - Rouge -HISTORY_MSG_267;Virage Partiel - Moyen - Vert -HISTORY_MSG_268;Virage Partiel - Moyen - Bleu -HISTORY_MSG_269;Virage Partiel - HL - Rouge -HISTORY_MSG_270;Virage Partiel - HL - Vert -HISTORY_MSG_271;Virage Partiel - HL - Bleu -HISTORY_MSG_272;Virage Partiel - Balance -HISTORY_MSG_274;Virage Partiel - Saturation des ombres -HISTORY_MSG_275;Virage Partiel - Saturation des HL -HISTORY_MSG_276;Virage Partiel - Opacité +HISTORY_MSG_258;VP - Couleur +HISTORY_MSG_259;VP - Opacité +HISTORY_MSG_260;VP - Opacité 'a[b]' +HISTORY_MSG_261;VP - Méthode +HISTORY_MSG_262;VP - Opacité 'b' +HISTORY_MSG_263;VP - Ombres - Rouge +HISTORY_MSG_264;VP - Ombres - Vert +HISTORY_MSG_265;VP - Ombres - Bleu +HISTORY_MSG_266;VP - Moyen - Rouge +HISTORY_MSG_267;VP - Moyen - Vert +HISTORY_MSG_268;VP - Moyen - Bleu +HISTORY_MSG_269;VP - HL - Rouge +HISTORY_MSG_270;VP - HL - Vert +HISTORY_MSG_271;VP - HL - Bleu +HISTORY_MSG_272;VP - Balance +HISTORY_MSG_273;VP - Balance Couleur O/TM/HL +HISTORY_MSG_274;VP - Saturation des ombres +HISTORY_MSG_275;VP - Saturation des HL +HISTORY_MSG_276;VP - Opacité HISTORY_MSG_277;--inutilisé-- -HISTORY_MSG_278;Virage Partiel - Préserver luminance -HISTORY_MSG_279;Virage partiel - Ombres -HISTORY_MSG_280;Virage partiel - Hautes lumières -HISTORY_MSG_281;Virage partiel - Protect. Saturé -HISTORY_MSG_282;Virage partiel - Seuil de protection -HISTORY_MSG_283;Virage partiel - Force -HISTORY_MSG_284;Virage partiel - Protect. saturé auto +HISTORY_MSG_278;VP - Préserver luminance +HISTORY_MSG_279;VP - Ombres +HISTORY_MSG_280;VP - Hautes lumières +HISTORY_MSG_281;VP - Protect. Saturé +HISTORY_MSG_282;VP - Seuil de protection +HISTORY_MSG_283;VP - Force +HISTORY_MSG_284;VP - Protect. saturé auto HISTORY_MSG_285;Réd. de bruit - Médiane - Méthode HISTORY_MSG_286;Réd. de bruit - Médiane - Type HISTORY_MSG_287;Réd. de bruit - Médiane - Itérations @@ -632,6 +645,7 @@ HISTORY_MSG_388;O - Résiduel - BC vert moyen HISTORY_MSG_389;O - Résiduel - BC bleu moyen HISTORY_MSG_390;O - Résiduel - BC vert bas HISTORY_MSG_391;O - Résiduel - BC bleu bas +HISTORY_MSG_392;O - Résiduel - Balance Couleur HISTORY_MSG_393;DCP - Table de corresp. (LUT) HISTORY_MSG_394;DCP - Exposition de base HISTORY_MSG_395;DCP - Table de base @@ -711,25 +725,70 @@ HISTORY_MSG_484;CAM02 - Yb auto scène HISTORY_MSG_485;Correction d'Objectif HISTORY_MSG_486;Corr. d'Obj. - Appareil HISTORY_MSG_487;Corr. d'Obj. - Objectif +HISTORY_MSG_488;Compression de Plage Dymanique +HISTORY_MSG_489;CPD - Détail +HISTORY_MSG_490;CPD - Quantité HISTORY_MSG_491;Balances des Blancs HISTORY_MSG_492;Courbes RVB HISTORY_MSG_493;Ajustements L*a*b* -HISTORY_MSG_COLORTONING_LABGRID_VALUE;Virage Partiel - Correction couleur +HISTORY_MSG_CLAMPOOG;Tronquer les couleurs hors gamut +HISTORY_MSG_COLORTONING_LABGRID_VALUE;VP - Correction couleur +HISTORY_MSG_COLORTONING_LABREGION_AB;VP - Correction couleur +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;VP - Canal +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;VP - Masque C +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;VP - Masque T +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;VP - Luminosité +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;VP - Masque L +HISTORY_MSG_COLORTONING_LABREGION_LIST;VP - Liste +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;VP - Masque flou local +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;VP - Offset local +HISTORY_MSG_COLORTONING_LABREGION_POWER;VP - Puissance locale +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;VP - Saturation +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;VP - Montrer le masque +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;VP - Pente locale +HISTORY_MSG_DEHAZE_DEPTH;EB - Profondeur +HISTORY_MSG_DEHAZE_ENABLED;Élimination de la Brume +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;EB - Montrer carte de profondeur +HISTORY_MSG_DEHAZE_STRENGTH;EB - Force +HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Double dématriçage - Seuil auto +HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Double dématriçage - Seuil de contraste HISTORY_MSG_HISTMATCHING;Calcul Courbe Tonale svt Aperçu +HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Sortie - Primaires +HISTORY_MSG_ICM_OUTPUT_TEMP;Sortie - ICC-v4 illuminant D +HISTORY_MSG_ICM_OUTPUT_TYPE;Sortie - Type +HISTORY_MSG_ICM_WORKING_GAMMA;Travail - Gamma +HISTORY_MSG_ICM_WORKING_SLOPE;Travail - Pente +HISTORY_MSG_ICM_WORKING_TRC_METHOD;Travail - Méthode TRC HISTORY_MSG_LOCALCONTRAST_AMOUNT;Contraste Local - Quantité HISTORY_MSG_LOCALCONTRAST_DARKNESS;Contraste Local - Ombres HISTORY_MSG_LOCALCONTRAST_ENABLED;Contraste Local HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Contraste Local - H.L. HISTORY_MSG_LOCALCONTRAST_RADIUS;Contraste Local - Rayon HISTORY_MSG_METADATA_MODE;Mode de copie des métadonnées +HISTORY_MSG_MICROCONTRAST_CONTRAST;Microcontraste - Seuil de contraste +HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Méthode de dématriçage pour les mouvements +HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Direction du filtre de bruit de ligne +HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;Filtre de ligne PDAF +HISTORY_MSG_PRSHARPEN_CONTRAST;NPR - Seuil de contraste +HISTORY_MSG_RAWCACORR_AUTOIT;A.C. Raw - Itérations +HISTORY_MSG_RAWCACORR_COLORSHIFT;A.C. Raw - Éviter les dérives de teinte +HISTORY_MSG_RAW_BORDER;Bord Raw +HISTORY_MSG_RESIZE_ALLOWUPSCALING;Redim. - Autoriser l'agrandissement +HISTORY_MSG_SHARPENING_CONTRAST;Netteté - Seuil de contraste +HISTORY_MSG_SH_COLORSPACE;O/HL - Espace couleur +HISTORY_MSG_SOFTLIGHT_ENABLED;Lumière douce +HISTORY_MSG_SOFTLIGHT_STRENGTH;Lumière douce - Force +HISTORY_MSG_TM_FATTAL_ANCHOR;CPD - Ancre 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_COPYRIGHT_RESET_TOOLTIP;Réinitialise au copyright par défaut, attribué à "RawTherapee, CC0" ICCPROFCREATOR_CUSTOM;Personnalisé ICCPROFCREATOR_DESCRIPTION;Description: +ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Ajouter les valeurs gamma et pente à la 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é: @@ -808,9 +867,6 @@ IPTCPANEL_TITLE;Titre IPTCPANEL_TITLEHINT;Enterez un nom court et humainement lisible pour l'image, cela peut être le nom du fichier. IPTCPANEL_TRANSREFERENCE;ID du travail IPTCPANEL_TRANSREFERENCEHINT;Enterez un nombre ou identifiant servant au contrôle du flux de travail ou au suivi. -LENSPROFILE_CORRECTION_AUTOMATCH;Paramètres de correction trouvés automatiquement -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 @@ -883,6 +939,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Affichage du Masque du focus\nRaccourci: canal Vert\nRaccourci: g MAIN_TOOLTIP_PREVIEWL;Affichage de la Luminosité\nRaccourci: v\n\n0.299*R + 0.587*V + 0.114*B MAIN_TOOLTIP_PREVIEWR;Affichage du canal Rouge\nRaccourci: r +MAIN_TOOLTIP_PREVIEWSHARPMASK;Prévisualiser le masque de contraste de netteté.\nRaccourci: p\n\nNe fonctionne que si l'outil Netteté est activé et pour un zomm >= 100%. MAIN_TOOLTIP_QINFO;Informations rapide sur l'image\nRaccourci: i MAIN_TOOLTIP_SHOWHIDELP1;Montrer/Cacher le panneau gauche\nRaccourci: l MAIN_TOOLTIP_SHOWHIDERP1;Afficher/Cacher le panneau droit\nRaccourci: Alt-l @@ -920,6 +977,7 @@ PARTIALPASTE_CROP;Recadrage PARTIALPASTE_DARKFRAMEAUTOSELECT;Sélection auto de la Trame Noire PARTIALPASTE_DARKFRAMEFILE;Fichier de Trame Noire PARTIALPASTE_DEFRINGE;Aberration chromatique +PARTIALPASTE_DEHAZE;Élimination de la Brume PARTIALPASTE_DETAILGROUP;Détail PARTIALPASTE_DIALOGLABEL;Collage partiel de profil de traitement PARTIALPASTE_DIRPYRDENOISE;Réduction du bruit @@ -953,13 +1011,16 @@ PARTIALPASTE_PREPROCESS_DEADPIXFILT;Filtrage des pixels morts PARTIALPASTE_PREPROCESS_GREENEQUIL;Équilibrage du vert PARTIALPASTE_PREPROCESS_HOTPIXFILT;Filtrage des pixels chauds PARTIALPASTE_PREPROCESS_LINEDENOISE;Filtre de bruit de ligne +PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;Filtre de ligne PDAF PARTIALPASTE_PRSHARPENING;Netteté post-redim. PARTIALPASTE_RAWCACORR_AUTO;Corr. auto. de l'aberr. chromatique -PARTIALPASTE_RAWCACORR_CAREDBLUE;Aberr. chromatique rouge et bleu +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;A.C. Raw - Éviter les dérives couleurs +PARTIALPASTE_RAWCACORR_CAREDBLUE;A.C. Raw - Rouge et bleu PARTIALPASTE_RAWEXPOS_BLACK;Niveaux de noir PARTIALPASTE_RAWEXPOS_LINEAR;Correction du point blanc PARTIALPASTE_RAWEXPOS_PRESER;Préservation des hautes humières PARTIALPASTE_RAWGROUP;Réglages RAW +PARTIALPASTE_RAW_BORDER;Bord Raw PARTIALPASTE_RAW_DCBENHANCE;Amélioration de DCB PARTIALPASTE_RAW_DCBITERATIONS;Nombre d'itération de DCB PARTIALPASTE_RAW_DMETHOD;Algorithme de dématriçage @@ -975,14 +1036,22 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Ombres/Hautes lumières PARTIALPASTE_SHARPENEDGE;Bords PARTIALPASTE_SHARPENING;Netteté PARTIALPASTE_SHARPENMICRO;Microcontraste +PARTIALPASTE_SOFTLIGHT;Lumière douce +PARTIALPASTE_TM_FATTAL;Compression de plage dynamique PARTIALPASTE_VIBRANCE;Vibrance PARTIALPASTE_VIGNETTING;Correction du vignettage PARTIALPASTE_WAVELETGROUP;Niveaux d'ondelette PARTIALPASTE_WHITEBALANCE;Balance des blancs PREFERENCES_ADD;Ajoute +PREFERENCES_APPEARANCE;Apparence +PREFERENCES_APPEARANCE_COLORPICKERFONT;Police des ancres de vérification couleur +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Couleur du masque de recadrage +PREFERENCES_APPEARANCE_MAINFONT;Police principale +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Couleur du cadre dans le Navigateur +PREFERENCES_APPEARANCE_THEME;Thème PREFERENCES_APPLNEXTSTARTUP;appliqué au prochain lancement PREFERENCES_AUTOMONPROFILE;Utiliser automatiquement le profil de l'écran principal -PREFERENCES_AUTOSAVE_TP_OPEN;Sauver automatiquement l'état ouvert/fermé\n des outils avant de fermer +PREFERENCES_AUTOSAVE_TP_OPEN;Sauvegarder l'état ouvert/fermé des outils en quittant PREFERENCES_BATCH_PROCESSING;Traitement par lot PREFERENCES_BEHADDALL;Tout à 'Ajoute' PREFERENCES_BEHADDALLHINT;Règle tous les paramètres sur le mode Ajoute.\nLa modification des paramètres dans le panneau d'édition en par lot sera des deltas par-rapport aux valeurs existantes @@ -990,16 +1059,14 @@ PREFERENCES_BEHAVIOR;Comportement PREFERENCES_BEHSETALL;Tout à 'Remplace' PREFERENCES_BEHSETALLHINT;Règle tous les paramètres sur le mode Remplace.\nLa modification des paramètres dans le panneau d'édition en par lot sera absolue, les valeurs réelles seront affichées PREFERENCES_BLACKBODY;Tungstène -PREFERENCES_CACHECLEARALL;Tout nettoyer -PREFERENCES_CACHECLEARPROFILES;Nettoyer les profils -PREFERENCES_CACHECLEARTHUMBS;Nettoyer les vignettes +PREFERENCES_CACHECLEAR;Vider +PREFERENCES_CACHECLEAR_ALL;Vider tous les fichiers mis en cache : +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Vider tous les fichiers mis en cache excepté les profils de traitement : +PREFERENCES_CACHECLEAR_ONLYPROFILES;Vider seulement les profils de traitement mis en cache : +PREFERENCES_CACHECLEAR_SAFETY;Seuls les fichiers mis en cache sont effacés. Les profils de traitement enregitrés à côté des images sources ne sont pas touchés. PREFERENCES_CACHEMAXENTRIES;Nombre maximal d'éléments dans le Cache PREFERENCES_CACHEOPTS;Options du Cache PREFERENCES_CACHETHUMBHEIGHT;Hauteur maximale des vignettes -PREFERENCES_CIEART;CIECAM02 optimisation -PREFERENCES_CIEART_FRAME;Réglages spécifiques à CIECAM02 -PREFERENCES_CIEART_LABEL;Utilise la précision float au lieu de double pour CIECAM02 -PREFERENCES_CIEART_TOOLTIP;Si activé, les calculs CIECAM sont réalisés en précision float au lieu de précision double. Cela amène un léger accroissement de vitesse, et une légère réduction de qualité PREFERENCES_CLIPPINGIND;Indication du dépassement de plage dynamique PREFERENCES_CLUTSCACHE;Cache HaldCLUT PREFERENCES_CLUTSCACHE_LABEL;Nombre maximum de chache CLUT @@ -1022,7 +1089,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Format des clés PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nom PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Chemin de l'exécutable -PREFERENCES_CUTOVERLAYBRUSH;Masque de recadrage PREFERENCES_D50;5000K PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -1044,7 +1110,7 @@ PREFERENCES_EDITORCMDLINE;Ligne de commande personnelle PREFERENCES_EDITORLAYOUT;Disposition de l'éditeur PREFERENCES_EXTERNALEDITOR;Éditeur externe PREFERENCES_FBROWSEROPTS;Options du navigateur de fichiers et de vignettes -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barre de menu de l'explorateur de fichiers uni-ligne\n(à désactiver pour les écrans de faible résolution) +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barre d'outil compact dans le Navigateur de Fichiers PREFERENCES_FILEFORMAT;Format du fichier PREFERENCES_FLATFIELDFOUND;Trouvé PREFERENCES_FLATFIELDSDIR;Dossier des images de Champ Uniforme @@ -1071,8 +1137,8 @@ PREFERENCES_GREYSC;Luminance Yb de la scène (%) PREFERENCES_GREYSC18;Yb=18 CIE L#50 PREFERENCES_GREYSCA;Automatique PREFERENCES_HISTOGRAMPOSITIONLEFT;Histogramme dans le panneau de gauche -PREFERENCES_HISTOGRAMWORKING;Utiliser le profil de travail pour l'histograme principal et le Navigateur -PREFERENCES_HISTOGRAM_TOOLTIP;Si activé, le profil couleur de travail est utilisé pour les données d'histograme et le panneau Navigateur, sinon le profil de travail de sortie "gamma-corrigé" est utilisé. +PREFERENCES_HISTOGRAMWORKING;Utiliser le profil de travail pour l'histogramme principal et le Navigateur +PREFERENCES_HISTOGRAM_TOOLTIP;Si activé, le profil couleur de travail est utilisé pour les données d'histogramme et le panneau Navigateur, sinon le profil de travail de sortie "gamma-corrigé" est utilisé. PREFERENCES_HLTHRESHOLD;Seuil pour le dépassement de domaine supérieur PREFERENCES_ICCDIR;Dossier des profils ICC PREFERENCES_IMG_RELOAD_NEEDED;Ces changements nécessitent un rechargement de l'image (ou l'ouverture d'une autre image) pour prendre effet. @@ -1101,7 +1167,6 @@ PREFERENCES_MONPROFILE;Profil couleur par défaut PREFERENCES_MONPROFILE_WARNOSX;Due à des limitations de macOS, seul sRGB est supporté. PREFERENCES_MULTITAB;Éditeurs multiple PREFERENCES_MULTITABDUALMON;Éditeurs multiple, si possible sur un second moniteur -PREFERENCES_NAVGUIDEBRUSH;Couleur du cadre dans le Navigateur PREFERENCES_NAVIGATIONFRAME;Navigation PREFERENCES_OUTDIR;Dossier de sortie PREFERENCES_OUTDIRFOLDER;Dossier de sauvegarde @@ -1118,6 +1183,8 @@ PREFERENCES_PARSEDEXTADDHINT;Tapez une extension et cliquez ce bouton pour l'ajo PREFERENCES_PARSEDEXTDELHINT;Supprime de la liste les extensions sélectionnées PREFERENCES_PARSEDEXTDOWNHINT;Déplacer l'extension sélectionnée plus bas dans la liste. PREFERENCES_PARSEDEXTUPHINT;Déplacer l'extension sélectionnée plus haut dans la liste. +PREFERENCES_PERFORMANCE_THREADS;Unités d'exécution (Threads) +PREFERENCES_PERFORMANCE_THREADS_LABEL;Nombre maximum d'unité d'exécution pour la Réduction de Bruit et les Niveaux d'Ondelettes (0 = Automatique) PREFERENCES_PREVDEMO;Méthode de Dématriçage de l'Aperçu PREFERENCES_PREVDEMO_FAST;Rapide PREFERENCES_PREVDEMO_LABEL;Méthode de dématriçage utilisé pour l'aperçu à un zoom <100%: @@ -1139,10 +1206,7 @@ PREFERENCES_PSPATH;Dossier d'installation d'Adobe Photoshop PREFERENCES_REMEMBERZOOMPAN;Se souvenir de niveau de zoom et de la position de l'image PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Retient le niveau de zoom et la position de l'image courante lors de l'ouverture d'une nouvelle image.\n\nCette option ne fonctionne que dans le mode "Éditeur unique" et quand "Méthode de dématriçage utilisé pour l'aperçu à un zoom <100%" is set to "Idem PP3". PREFERENCES_SAVE_TP_OPEN_NOW;Sauver l'état ouvert/fermé maintenant -PREFERENCES_SELECTFONT;Police principale -PREFERENCES_SELECTFONT_COLPICKER;Police des pipette à couleur PREFERENCES_SELECTLANG;Choix de la langue -PREFERENCES_SELECTTHEME;Choisissez un thème PREFERENCES_SERIALIZE_TIFF_READ;Réglage de lecture des images TIFF PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Sérialiser la lecture des fichiers TIFF PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Lorsque d'un travail avec des dossiers plein de fichier TIFF non compressé, activer cette option peut augmenter les performance de la génération des vignettes. @@ -1164,8 +1228,12 @@ PREFERENCES_TAB_COLORMGR;Gestion des couleurs PREFERENCES_TAB_DYNAMICPROFILE;Règles de Profil Dynamique PREFERENCES_TAB_GENERAL;Général PREFERENCES_TAB_IMPROC;Traitement de l'image +PREFERENCES_TAB_PERFORMANCE;Performance PREFERENCES_TAB_SOUND;Sons -PREFERENCES_THEME;Thème +PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Prévisualisation JPEG incluse +PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image à montrer +PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Rendu Neutre des données Raw +PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;JPEG inclus si pleine taille, rendu Neutre des données Raw sinon PREFERENCES_TP_LABEL;Panneau des outils: PREFERENCES_TP_VSCROLLBAR;Cacher la barre de défilement verticale PREFERENCES_TUNNELMETADATA;Copier les données Exif/IPTC/XMP tel quel dans le fichier de sortie @@ -1246,7 +1314,7 @@ THRESHOLDSELECTOR_HINT;Maintenez la touche Shift appuyée pour déplacer THRESHOLDSELECTOR_T;Haut THRESHOLDSELECTOR_TL;Haut-Gauche THRESHOLDSELECTOR_TR;Haut-droite -TOOLBAR_TOOLTIP_COLORPICKER;Ancre de Vérification Couleur\n\nLorque activé:\nCliquez la zone d'image avec le bouton gauche de la souris pour ajouter une ancre\nDéplacez-le en le "tirant" avec le bouton gauche de la souris\nSupprimez une ancre en cliquant dessus avec le bouton droit de la souris\nSupprimez toutes les ancres avec Shift + click avec le bouton droit\nCliquez avec le bouton droit de la souris en dehors de toute ancre pour revenir au mode Déplacement +TOOLBAR_TOOLTIP_COLORPICKER;Ancre de Vérification Couleur\n\nLorque activé:\n- Ajouter une ancre: clic-gauche.\n- Déplacer une ancre: clic-gauche et tirer.\n- Supprimez une ancre: clic-droit.\n- Supprimez toutes les ancres: ctrl+shift+clic-droit.\n- Revenir au mode Déplacement: clic-droit en dehors de toute ancre. TOOLBAR_TOOLTIP_CROP;Sélection du recadrage\nRaccourci: c\nDéplacez le recadrage en utilisant Shift + Glisser TOOLBAR_TOOLTIP_HAND;Outil de navigation\nRaccourci: h TOOLBAR_TOOLTIP_STRAIGHTEN;Sélection de la ligne d'horizon\nRaccourci: s\n\nIndiquez la verticale ou l'horizontale en dessinant une ligne à travers l'image de prévisualisation. L'angle de rotation sera affiché près de la ligne guide. Le centre de rotation est le centre géométrique de l'image. @@ -1282,6 +1350,8 @@ TP_BWMIX_MET;Méthode TP_BWMIX_MET_CHANMIX;Mixeur de Canaux TP_BWMIX_MET_DESAT;Désaturation TP_BWMIX_MET_LUMEQUAL;Égaliseur de Luminance +TP_BWMIX_MIXC;Mixeur de cannaux +TP_BWMIX_NEUTRAL;Réinitialiser TP_BWMIX_RGBLABEL;R: %1%% V: %2%% B: %3%% Total: %4%% TP_BWMIX_RGBLABEL_HINT;Coefficients RVB finaux qui tiennent compte de toutes les options du mixeur\nTotal affiche la somme des valeurs RVB actuellement appliqué:\n- toujours 100% en mode relatif\n- supérieur (plus clair) ou inférieur (plus sombre) à 100% en mode absolu. TP_BWMIX_RGB_TOOLTIP;Mixe les canaux RVB. Utilisez les Préréglages pour vous guider.\nAttention aux valeurs négatives qui peuvent causer des artefacts ou un comportement erratique. @@ -1323,11 +1393,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Symétriser / axe vertical TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotation vers la gauche\nRaccourci: [\n\nRaccourci en mode Éditeur unique: Alt-[ TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotation vers la droite\nRaccourci: ]\n\nRaccourci en mode Éditeur unique: Alt-] TP_COARSETRAF_TOOLTIP_VFLIP;Symétriser / axe horizontal -TP_COLORAPP_ADAPTSCENE;Luminosité de la scène -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Luminance absolue de l'environnement de la scène (cd/m²).\n1) Calculé à partir des données Exif:\nVitesse d'obturation - val. ISO - ouverture F - correction d'expos. du boitier.\n2) Calculé à partir du Point Blanc Raw et de la Compensation d'Exposition de RawTherapee -TP_COLORAPP_ADAPTVIEWING;Luminosité du visionnage (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Luminance absolue de l'environnement de visionnage\n(souvent 16cd/m²) -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Si la case est cochée (recommandé), une valeur optimum est calculée à partir des données Exif.\nPour régler la valeur manuellement, décochez d'abord la case +TP_COLORAPP_ABSOLUTELUMINANCE;Luminance absolue TP_COLORAPP_ALGO;Algorithme TP_COLORAPP_ALGO_ALL;Tout TP_COLORAPP_ALGO_JC;Luminosité + Chroma (JC) @@ -1338,6 +1404,7 @@ TP_COLORAPP_BADPIXSL;Filtrer les pixels chauds/morts TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression des pixels chauds/morts (colorés de manière intense).\n0=Aucun effet 1=Médian 2=Gaussien.\n\nCes artefacts sont dus aux limitations de CIECAM02. Vous pouvez également adjuster l'image afin d'éviter les ombres très sombres. TP_COLORAPP_BRIGHT;Brillance (Q) TP_COLORAPP_BRIGHT_TOOLTIP;Brillance dans CIECAM02 est différent de Lab et RVB, prend en compte la luminosité du blanc +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;Lorsque réglé manuellement, les valeurs au-dessus de 65 sont recommandées. TP_COLORAPP_CHROMA;Chroma (C) TP_COLORAPP_CHROMA_M;Niveau de couleurs (M) TP_COLORAPP_CHROMA_M_TOOLTIP;Niveau de couleurs dans CIECAM02 est différent de Lab et RVB @@ -1357,8 +1424,6 @@ TP_COLORAPP_CURVEEDITOR3;Courbes chroma TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Vous pouvez choisir entre chroma -saturation- niveau couleurs.\n Histogramme affiche la chromaticité Lab avant CIECAM.\n On peut voir le résultat final dans la fenêtre histogramme.\n Histogramme de C,s,M avant/après si la cas à cocher "Données CIECAM" est activée.\n (C,s,M) ne sont pas affichés dans le panneau histogramme TP_COLORAPP_DATACIE;Histogrammes post CIECAM dans les courbes TP_COLORAPP_DATACIE_TOOLTIP;Quand activé, les histogrammes de fond des courbes CIECAM02 montrent des valeurs/amplitudes approximatives de J/Q, ou de C:s/M après les ajustements CIECAM.\nCette sélection n'a pas d'incidence sur l'histogramme général.\n\nQuand désactivé, les histogrammes de fond des courbes CIECAM affichent les valeurs Lab avant les ajustements CIECAM -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Si la case est cochée (recommandé), RT calcule une valeur optimale, qui est utilisée par CAT02, mais aussi pour l'ensemble de CIECAM02.\nVous pouvez décocher la case et changer la valeur du curseur; (les valeurs supérieures à 65 sont recommandées) -TP_COLORAPP_DEGREE_TOOLTIP;Niveau d'adaptation chromatique CIE CAT 2002 TP_COLORAPP_FREE;Temp libre+vert + CAT02 + [sortie] TP_COLORAPP_GAMUT;Contrôle du gamut (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Permet le controle du gamut en mode Lab @@ -1370,14 +1435,13 @@ TP_COLORAPP_LABEL_SCENE;Conditions de la scène TP_COLORAPP_LABEL_VIEWING;Conditions de visionnage TP_COLORAPP_LIGHT;Luminosité (J) TP_COLORAPP_LIGHT_TOOLTIP;Luminosité dans CIECAM02 est différent de celui de Lab et RVB +TP_COLORAPP_MEANLUMINANCE;Luminance moyenne (Yb%) TP_COLORAPP_MODEL;Modèle de Point Blanc TP_COLORAPP_MODEL_TOOLTIP;Modèle de Point Blanc\n\nBB [RT] + [sortie]:\nLa BB de RT est utilisée pour la scène, CIECAM est réglé sur D50, le blanc du périphérique de sortie utilise la valeur réglée dans Préférences\n\nBB [RT+CAT02] + [sortie]:\nLes réglages de BB de RT sont utilisés par CAT02 et le blanc du périphérique de sortie utilise la valeur réglée dans Préférences TP_COLORAPP_NEUTRAL;Résinitialiser TP_COLORAPP_NEUTRAL_TIP;Réinitialiser tous les curseurs, cases à cocher et courbes à leurs valeur par défaut TP_COLORAPP_RSTPRO;Protection des tons chairs et rouges TP_COLORAPP_RSTPRO_TOOLTIP;Protection des tons chairs et rouges (curseurs et courbes) -TP_COLORAPP_SHARPCIE;Netteté, Contraste par niveau de détails, Microcontraste & Aberration chromatique avec Q/C -TP_COLORAPP_SHARPCIE_TOOLTIP;Netteté, Contraste par niveau de détails, Microcontraste & Aberration chromatique utiliseront CIECAM02 si activé. TP_COLORAPP_SURROUND;Entourage TP_COLORAPP_SURROUND_AVER;Moyen TP_COLORAPP_SURROUND_DARK;Sombre @@ -1397,11 +1461,9 @@ TP_COLORAPP_TCMODE_SATUR;Saturation TP_COLORAPP_TEMP_TOOLTIP;Pour sélectionner un illuminant, toujours régler Teinte=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 TP_COLORAPP_TONECIE;Compression Tonale utilisant CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Si cette option est désactivée, la compression tonale est faite dans l'espace Lab.\nSi cette options est activée, la compression tonale est faite en utilisant CIECAM02.\nL'outil Compression Tonale doit être activé pour que ce réglage prenne effet +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminance absolue de l'environnement de visionnage\n(souvent 16cd/m²) TP_COLORAPP_WBCAM;BB [RT+CAT02] + [sortie] TP_COLORAPP_WBRT;BB [RT] + [sortie] -TP_COLORAPP_YB;Yb% (luminance moyenne) -TP_COLORAPP_YBSCENE;Yb% (luminance moyenne) -TP_COLORAPP_YBSCENE_TOOLTIP;si auto activé, Yb est calculé suivant la valeur de luminance moyenne de l'image actuelle TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;Automatique TP_COLORTONING_BALANCE;Balance @@ -1415,6 +1477,25 @@ TP_COLORTONING_LAB;Mixage Lab TP_COLORTONING_LABEL;Virage Partiel TP_COLORTONING_LABGRID;Grille de correction L*a*b* TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nO: a=%3 b=%4 +TP_COLORTONING_LABREGIONS;Régions de correction L*a*b* +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;Canal +TP_COLORTONING_LABREGION_CHANNEL_ALL;Tous +TP_COLORTONING_LABREGION_CHANNEL_B;Bleu +TP_COLORTONING_LABREGION_CHANNEL_G;Vert +TP_COLORTONING_LABREGION_CHANNEL_R;Rouge +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;T +TP_COLORTONING_LABREGION_LIGHTNESS;Luminosité +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_LIST_TITLE;Correction +TP_COLORTONING_LABREGION_MASK;Masque +TP_COLORTONING_LABREGION_MASKBLUR;Masque Flou +TP_COLORTONING_LABREGION_OFFSET;Décalage +TP_COLORTONING_LABREGION_POWER;Puissance +TP_COLORTONING_LABREGION_SATURATION;Saturation +TP_COLORTONING_LABREGION_SHOWMASK;Montrer le masque +TP_COLORTONING_LABREGION_SLOPE;Pente TP_COLORTONING_LUMA;Luminance TP_COLORTONING_LUMAMODE;Préserver la luminance TP_COLORTONING_LUMAMODE_TOOLTIP;Si activé, lorsque vous changez la couleur (rouge, vert, cyan, bleu, etc.), la luminance de chaque pixel est préservé @@ -1454,7 +1535,8 @@ TP_CROP_GUIDETYPE;Type de guide: TP_CROP_H;H TP_CROP_LABEL;Recadrage TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP; Sélection du recadrage +TP_CROP_RESETCROP;Réinitialiser +TP_CROP_SELECTCROP;Sélectionner TP_CROP_W;L TP_CROP_X;X TP_CROP_Y;Y @@ -1463,6 +1545,10 @@ TP_DARKFRAME_LABEL;Trame Noire TP_DEFRINGE_LABEL;Aberration chromatique TP_DEFRINGE_RADIUS;Rayon TP_DEFRINGE_THRESHOLD;Seuil +TP_DEHAZE_DEPTH;Profondeur +TP_DEHAZE_LABEL;Élimination de la Brume +TP_DEHAZE_SHOW_DEPTH_MAP;Montrer la Carte de Profondeur +TP_DEHAZE_STRENGTH;Force TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Multi-zones auto TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Global automatique TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Essaie d'évaluer le bruit chroma\nFaites attention, cela calcul une moyenne, et est très subjectif ! @@ -1546,11 +1632,11 @@ TP_EPD_LABEL;Compression tonale TP_EPD_REWEIGHTINGITERATES;Itérations de la pondération TP_EPD_SCALE;Échelle TP_EPD_STRENGTH;Force -TP_EPD_TOOLTIP;Vous pouvez choisir entre le mode Lab (standard) ou le mode CIECAM02.\n En activant "Compression tonale avec brillance Q CIECAM" dans le menu "Brillance + Niveau de couleur CIECAM" TP_EXPOSURE_AUTOLEVELS;Niveaux Auto TP_EXPOSURE_AUTOLEVELS_TIP;Bascule l'usage de Niveaux automatiques afin de régler automatiquement les valeurs basé sur l'analyse de l'image\nActive la Reconstruction des Hautes Lumières si nécessaire. TP_EXPOSURE_BLACKLEVEL;Noir TP_EXPOSURE_BRIGHTNESS;Luminosité +TP_EXPOSURE_CLAMPOOG;Tronquer les couleurs hors gamut TP_EXPOSURE_CLIP;Rognage % TP_EXPOSURE_CLIP_TIP;La fraction de pixels que l'outil Niveaux Auto passera en dehors du domaine TP_EXPOSURE_COMPRHIGHLIGHTS;Compression hautes lumières @@ -1701,10 +1787,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Peut être utilisé avec le curseur Chromaticité et TP_LENSGEOM_AUTOCROP;Recadrage auto TP_LENSGEOM_FILL;Remplir TP_LENSGEOM_LABEL;Objectif / Géométrie +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatiquement +TP_LENSPROFILE_CORRECTION_LCPFILE;Fichier LCP +TP_LENSPROFILE_CORRECTION_MANUAL;Manuellement TP_LENSPROFILE_LABEL;Profil de correction d'objectif -TP_LENSPROFILE_USECA;Corr. de l'aber. chromatique -TP_LENSPROFILE_USEDIST;Corr. de la distortion -TP_LENSPROFILE_USEVIGN;Corr. du vignettage +TP_LENSPROFILE_LENS_WARNING;Attention: le facteur de recadrage utilisé pour la caractérisation d'un objectif est plus grand que le facteur de recadrage de l'appareil photo, les résultats pourraient être faux. +TP_LENSPROFILE_MODE_HEADER;Sélectionner le profil d'objectif: +TP_LENSPROFILE_USE_CA;Aberration chromatique +TP_LENSPROFILE_USE_GEOMETRIC;Géometrique +TP_LENSPROFILE_USE_HEADER;Sélectionner les distortions à corriger: +TP_LENSPROFILE_USE_VIGNETTING;Vignetage TP_LOCALCONTRAST_AMOUNT;Quantité TP_LOCALCONTRAST_DARKNESS;Niveau des ombres TP_LOCALCONTRAST_LABEL;Contraste Local @@ -1735,10 +1827,19 @@ TP_PREPROCESS_HOTPIXFILT;Filtrer les pixels chauds TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Essaie de supprimer les pixels chauds TP_PREPROCESS_LABEL;Traitement pre-dématriçage TP_PREPROCESS_LINEDENOISE;Filtre de bruit de ligne +TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction +TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Toutes +TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontale +TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontale seulement sur les lignes PDAF +TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Verticale TP_PREPROCESS_NO_FOUND;Aucun trouvé +TP_PREPROCESS_PDAFLINESFILTER;Filtre de ligne PDAF TP_PRSHARPENING_LABEL;Netteté post-redimensionnement TP_PRSHARPENING_TOOLTIP;Augmente la netteté de l'image après le redimentionnement. Ne fonctionne que si la méthode de redimensionnement "Lanczos" est utilisé. Il est impossible de prévisualiser les effets de cet outil. Cf. RawPedia pour les instructions d'utilisation. TP_RAWCACORR_AUTO;Correction automatique +TP_RAWCACORR_AUTOIT;Itérations +TP_RAWCACORR_AUTOIT_TOOLTIP;Ce réglage est disponible si "Correction-auto" est activé.\nCorrection-auto est conservatif, signifiant qu'il ne corrige souvent pas toute l'aberration chromatique.\nPour corriger l'aberration restante, vous pouvez uttiliser jusqu'à cinq itérations de de la correction automatique de l'aberration chromatique.\nChaque itération réduira l'aberration restante de l'itération précédente avec un prix d'un temps de traitement plus long. +TP_RAWCACORR_AVOIDCOLORSHIFT;Éviter les dérives couleurs TP_RAWCACORR_CABLUE;Bleu TP_RAWCACORR_CARED;Rouge TP_RAWCACORR_CASTR;Force @@ -1755,16 +1856,24 @@ TP_RAWEXPOS_PRESER;Préservation des HL TP_RAWEXPOS_RGB;Rouge, Vert, Bleu TP_RAWEXPOS_TWOGREEN;Lier les verts TP_RAW_1PASSMEDIUM;1-Passe (Medium) +TP_RAW_2PASS;1-passe+Fast TP_RAW_3PASSBEST;3-Passes (Meilleur) +TP_RAW_4PASS;3-passes+Fast TP_RAW_AHD;AHD TP_RAW_AMAZE;AMaZE +TP_RAW_AMAZEVNG4;AMaZE+VNG4 +TP_RAW_BORDER;Bord TP_RAW_DCB;DCB TP_RAW_DCBENHANCE;Amélioration de DCB TP_RAW_DCBITERATIONS;Nombre d'itération de DCB +TP_RAW_DCBVNG4;DCB+VNG4 TP_RAW_DMETHOD;Méthode TP_RAW_DMETHOD_PROGRESSBAR;Dématriçage %1... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Affinage du dématriçage... TP_RAW_DMETHOD_TOOLTIP;Note: IGV et LMMSE sont dédiés aux images à haut ISO +TP_RAW_DUALDEMOSAICAUTOCONTRAST;Seuil auto +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;Si la case est cochée (recommandé), RawTherapee calcul une valeur optimum basée sur les régions de "couleur unie" de l'image.\nS'il n'y en a pas ou que l'image est trop bruité, la valeur sera réglée à 0.\nPour régler la valeur manuellement, décochez la case d'abord (les valeurs raisonables dépendent de l'image). +TP_RAW_DUALDEMOSAICCONTRAST;Seuil de contraste TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;Itérations pour la suppression\ndes fausses couleurs TP_RAW_FAST;Fast @@ -1783,6 +1892,9 @@ TP_RAW_NONE;Aucun (montre ce que voit le capteur) TP_RAW_PIXELSHIFT;Pixel Shift TP_RAW_PIXELSHIFTADAPTIVE;Détection adaptative TP_RAW_PIXELSHIFTBLUR;Flouter le masque de mouvement +TP_RAW_PIXELSHIFTDMETHOD;Méthode de dématriçage pour les mouvements +TP_RAW_PIXELSHIFTEPERISO;Sensibilité +TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;La valeur par défaut de 0 devrait bien fonctionner pour l'ISO de base.\nLes valeurs plus hautes augmentent la sensibilité de la détection de mouvement.\nChangez par petits incréments et observez le masque de mouvement se mettre à jour pendant votre ajustement.\nAugmentez la sensibilité pour les images sous-exposées ou à haut ISO. TP_RAW_PIXELSHIFTEQUALBRIGHT;Égaliser la luminosité des sous-images TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL;Égaliser par canal TP_RAW_PIXELSHIFTEQUALBRIGHTCHANNEL_TOOLTIP;Activé: Égalise les canaux RVB individuellement.\nDésactivé: Utilise le même facteur d'égalisation pour tous les canaux. @@ -1818,6 +1930,7 @@ TP_RAW_PIXELSHIFTREDBLUEWEIGHT;Poid Rouge&Bleu TP_RAW_PIXELSHIFTSHOWMOTION;Voir le masque de mouvement TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY;Voir uniquement le masque TP_RAW_PIXELSHIFTSHOWMOTIONMASKONLY_TOOLTIP;Affiche le masque sans l'image. +TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Applique un masque vert montrant les régions contenant du mouvement. TP_RAW_PIXELSHIFTSIGMA;Rayon de floutage TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;Le rayon par défaut de 1.0 fonctionne généralement bien pour l'ISO de base.\nAugmentez cette valeur pour les images de haut ISO, 5.0 est un bon point de départ.\nContrôlez le masque de mouvement à chaque nouvelle valeur. TP_RAW_PIXELSHIFTSMOOTH;Adoucir les transitions @@ -1826,10 +1939,12 @@ TP_RAW_PIXELSHIFTSTDDEVFACTORBLUE;Facteur DevStd Bleu TP_RAW_PIXELSHIFTSTDDEVFACTORGREEN;Facteur DevStd Vert TP_RAW_PIXELSHIFTSTDDEVFACTORRED;Facteur DevStd Rouge TP_RAW_RCD;RCD +TP_RAW_RCDVNG4;RCD+VNG4 TP_RAW_SENSOR_BAYER_LABEL;Capteur à matrice de Bayer TP_RAW_SENSOR_XTRANS_DMETHOD_TOOLTIP;3-passes donne les meilleurs résultats (recommendé pour les images de faible ISO).\n1-passe est presque indifférentiable de 3-passes pour les images à haut ISO et est plus rapide. TP_RAW_SENSOR_XTRANS_LABEL;Capteur à matrice X-Trans TP_RAW_VNG4;VNG4 +TP_RESIZE_ALLOW_UPSCALING;Autoriser l'Agrandissement TP_RESIZE_APPLIESTO;S'applique à: TP_RESIZE_CROPPEDAREA;La zone recadrée TP_RESIZE_FITBOX;Boîte englobante @@ -1847,7 +1962,7 @@ TP_RESIZE_WIDTH;Largeur TP_RETINEX_CONTEDIT_HSL;Égaliseur d'histogramme TSV TP_RETINEX_CONTEDIT_LAB;Égaliseur d'histogramme L*a*b* TP_RETINEX_CONTEDIT_LH;Égaliseur de teinte -TP_RETINEX_CONTEDIT_MAP;Égaliseur de masque +TP_RETINEX_CONTEDIT_MAP;Égaliseur TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance en fonction de la luminance L=f(L)\nCorrige les données raw pour réduire halos et artéfacts. TP_RETINEX_CURVEEDITOR_LH;Force=f(T) @@ -1885,7 +2000,7 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Masque TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Bas -TP_RETINEX_MAP;Méthode de masquage +TP_RETINEX_MAP;Méthode TP_RETINEX_MAP_GAUS;Masque gaussien TP_RETINEX_MAP_MAPP;Masque pointu (ondelettes partielles) TP_RETINEX_MAP_MAPT;Masque pointu (ondelettes totales) @@ -1948,6 +2063,7 @@ TP_SHARPENEDGE_LABEL;Bords TP_SHARPENEDGE_PASSES;Itérations TP_SHARPENEDGE_THREE;Luminance uniquement TP_SHARPENING_AMOUNT;Quantité +TP_SHARPENING_CONTRAST;Seuil de contraste TP_SHARPENING_EDRADIUS;Rayon TP_SHARPENING_EDTOLERANCE;Tolérance des bords TP_SHARPENING_HALOCONTROL;Contrôle du halo @@ -1963,9 +2079,16 @@ TP_SHARPENING_RLD_ITERATIONS;Itérations TP_SHARPENING_THRESHOLD;Seuil TP_SHARPENING_USM;Masque flou (USM) TP_SHARPENMICRO_AMOUNT;Quantité +TP_SHARPENMICRO_CONTRAST;Seuil de contraste TP_SHARPENMICRO_LABEL;Microcontraste TP_SHARPENMICRO_MATRIX;Matrice 3×3 au lieu de 5×5 TP_SHARPENMICRO_UNIFORMITY;Uniformité +TP_SOFTLIGHT_LABEL;Lumière douce +TP_SOFTLIGHT_STRENGTH;Force +TP_TM_FATTAL_AMOUNT;Quantité +TP_TM_FATTAL_ANCHOR;Ancre +TP_TM_FATTAL_LABEL;Compression de Plage Dynamique +TP_TM_FATTAL_THRESHOLD;Détail TP_VIBRANCE_AVOIDCOLORSHIFT;Éviter les dérives de teinte TP_VIBRANCE_CURVEEDITOR_SKINTONES;TT TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tons chair @@ -2029,7 +2152,7 @@ TP_WAVELET_CHTYPE;Méthode de chrominance TP_WAVELET_COLORT;Opacité Rouge-Vert TP_WAVELET_COMPCONT;Contraste TP_WAVELET_COMPGAMMA;Compression gamma -TP_WAVELET_COMPGAMMA_TOOLTIP;Ajuster le gamma de l'image résiduelle vous permet d'équiilibrer les données de l'histograme. +TP_WAVELET_COMPGAMMA_TOOLTIP;Ajuster le gamma de l'image résiduelle vous permet d'équiilibrer les données de l'histogramme. TP_WAVELET_COMPTM;Compression tonale TP_WAVELET_CONTEDIT;Courbe de contraste 'Après' TP_WAVELET_CONTR;Gamut @@ -2187,6 +2310,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Méthode +TP_WBALANCE_PICKER;Sélectionner TP_WBALANCE_SHADE;Ombre TP_WBALANCE_SIZE;Taille: TP_WBALANCE_SOLUX35;Solux 3500K @@ -2209,86 +2333,3 @@ ZOOMPANEL_ZOOMFITSCREEN;Affiche l'image entière\nRaccourci: Alt-f ZOOMPANEL_ZOOMIN;Zoom Avant\nRaccourci: + ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. -!EXIFFILTER_IMAGETYPE;Image type -!GENERAL_RESET;Reset -!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. -!HISTORY_MSG_235;B&W - CM - Auto -!HISTORY_MSG_237;B&W - CM -!HISTORY_MSG_273;CT - Color Balance SMH -!HISTORY_MSG_392;W - Residual - Color Balance -!HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold -!HISTORY_MSG_490;DRC - Amount -!HISTORY_MSG_CLAMPOOG;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_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift -!HISTORY_MSG_RAW_BORDER;Raw border -!HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling -!HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold -!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_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift -!PARTIALPASTE_RAW_BORDER;Raw border -!PARTIALPASTE_SOFTLIGHT;Soft light -!PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_PERFORMANCE_THREADS;Threads -!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) -!PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview -!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise -!TP_BWMIX_MIXC;Channel Mixer -!TP_BWMIX_NEUTRAL;Reset -!TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors -!TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction -!TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both -!TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal -!TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows -!TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical -!TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. -!TP_RAWCACORR_AUTOIT;Iterations -!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift -!TP_RAW_2PASS;1-pass+fast -!TP_RAW_4PASS;3-pass+fast -!TP_RAW_AMAZEVNG4;AMaZE+VNG4 -!TP_RAW_BORDER;Border -!TP_RAW_DCBVNG4;DCB+VNG4 -!TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold -!TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion -!TP_RAW_PIXELSHIFTEPERISO;Sensitivity -!TP_RAW_PIXELSHIFTEPERISO_TOOLTIP;The default value of 0 should work fine for base ISO.\nHigher values increase sensitivity of motion detection.\nChange in small steps and watch the motion mask while changing.\nIncrease sensitivity for underexposed or high ISO images. -!TP_RAW_PIXELSHIFTSHOWMOTION_TOOLTIP;Overlays the image with a green mask showing the regions with motion. -!TP_RAW_RCDVNG4;RCD+VNG4 -!TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_SHARPENING_CONTRAST;Contrast threshold -!TP_SHARPENMICRO_CONTRAST;Contrast threshold -!TP_SOFTLIGHT_LABEL;Soft Light -!TP_SOFTLIGHT_STRENGTH;Strength -!TP_TM_FATTAL_AMOUNT;Amount -!TP_TM_FATTAL_ANCHOR;Anchor -!TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 086710b52..eba373871 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Sharpening PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_APPLNEXTSTARTUP;εφαρμόζεται στην επόμενη εκκίνηση -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails PREFERENCES_CACHEMAXENTRIES;Maximal Number of Cache Entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height @@ -274,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_SELECTLANG;Επιλογή γλώσσας -PREFERENCES_SELECTTHEME;Επιλογή θέματος PREFERENCES_SHOWBASICEXIF;Προβολή βασικών στοιχείων Exif PREFERENCES_SHOWDATETIME;Προβολή ημερομηνίας και ώρας PREFERENCES_SHTHRESHOLD;Κατώφλι ψαλιδίσματος σκιών @@ -334,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Κανόνας τρίτων TP_CROP_GUIDETYPE;Είδος βοηθών: TP_CROP_H;H TP_CROP_LABEL;Αποκοπή -TP_CROP_SELECTCROP; Επιλογή αποκοπής TP_CROP_W;W TP_CROP_X;x TP_CROP_Y;y @@ -429,9 +424,10 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !CURVEEDITOR_HIGHLIGHTS;Highlights @@ -448,6 +444,10 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -499,8 +499,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -569,6 +569,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open @@ -972,14 +973,32 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1003,6 +1022,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1073,10 +1093,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !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. -!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_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 @@ -1110,17 +1126,17 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1151,6 +1167,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1201,8 +1218,14 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1210,12 +1233,17 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1231,7 +1259,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1243,8 +1270,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1290,7 +1317,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1313,15 +1339,13 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done @@ -1331,7 +1355,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1387,7 +1410,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1451,11 +1474,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1466,6 +1485,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1485,8 +1505,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1498,14 +1516,13 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1525,11 +1542,9 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1543,6 +1558,25 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1575,11 +1609,17 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1659,7 +1699,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. @@ -1788,10 +1827,16 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1829,11 +1874,11 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1865,6 +1910,8 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1925,10 +1972,10 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1966,7 +2013,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2029,7 +2076,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2242,6 +2289,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index c7477fd09..faa279860 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Sharpening PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_APPLNEXTSTARTUP;ייושם באתחול הבא -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails PREFERENCES_CACHEMAXENTRIES;Maximal Number of Cache Entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height @@ -274,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_SELECTLANG;בחר שפה -PREFERENCES_SELECTTHEME;Select theme PREFERENCES_SHOWBASICEXIF;Exif הראה מידע PREFERENCES_SHOWDATETIME;הראה תאריך ושעה PREFERENCES_SHTHRESHOLD;סף קיצוץ תחתון @@ -334,7 +330,6 @@ TP_CROP_GTRULETHIRDS;כלל השליש TP_CROP_GUIDETYPE;סוג מדריך TP_CROP_H;גובה TP_CROP_LABEL;גזור -TP_CROP_SELECTCROP;בחור גזירה TP_CROP_W;רוחב TP_CROP_X;x TP_CROP_Y;y @@ -430,9 +425,10 @@ TP_WBALANCE_TEMPERATURE;מידת חום !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !CURVEEDITOR_HIGHLIGHTS;Highlights @@ -449,6 +445,10 @@ TP_WBALANCE_TEMPERATURE;מידת חום !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -500,8 +500,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -570,6 +570,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open @@ -973,14 +974,32 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1004,6 +1023,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1074,10 +1094,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !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. -!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_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 @@ -1111,17 +1127,17 @@ TP_WBALANCE_TEMPERATURE;מידת חום !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1152,6 +1168,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1202,8 +1219,14 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1211,12 +1234,17 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1232,7 +1260,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1244,8 +1271,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1291,7 +1318,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1314,15 +1340,13 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done @@ -1332,7 +1356,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1388,7 +1411,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1452,11 +1475,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1467,6 +1486,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1486,8 +1506,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1499,14 +1517,13 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1526,11 +1543,9 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1544,6 +1559,25 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1576,11 +1610,17 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1660,7 +1700,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. @@ -1789,10 +1828,16 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1830,11 +1875,11 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1866,6 +1911,8 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1926,10 +1973,10 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1967,7 +2014,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2030,7 +2077,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2243,6 +2290,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index ca048d956..0c0f66576 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -92,8 +92,6 @@ FILEBROWSER_AUTOFLATFIELD;Flat Field automatico FILEBROWSER_BROWSEPATHBUTTONHINT;Premi per aprire il percorso inserito FILEBROWSER_BROWSEPATHHINT;Inserisci il percorso da aprire\nCtrl-o seleziona il percorso\nEnter, Ctrl-Enter (solo nel Navigatore) porta alla destinazione ;\nScorciatoie:\n ~ - Cartella home\n ! - Cartella Immagini FILEBROWSER_CACHE;Memoria -FILEBROWSER_CACHECLEARFROMFULL;Rimuovi dalla memoria - totale -FILEBROWSER_CACHECLEARFROMPARTIAL;Rimuovi dalla memoria - parziale FILEBROWSER_CLEARPROFILE;Cancella FILEBROWSER_COLORLABEL_TOOLTIP;Etichetta colore.\n\nUsa il menù o le scorciatoie:\nShift-Ctrl-0 Nessun Colore\nShift-Ctrl-1 Rosso\nShift-Ctrl-2 Giallo\nShift-Ctrl-3 Verde\nShift-Ctrl-4 Blu\nShift-Ctrl-5 Viola FILEBROWSER_COPYPROFILE;Copia @@ -620,6 +618,7 @@ PARTIALPASTE_VIBRANCE;Vividezza PARTIALPASTE_VIGNETTING;Correzione Vignettatura PARTIALPASTE_WHITEBALANCE;Bilanciamento del bianco PREFERENCES_ADD;Somma +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Colore delle guide del Navigatore PREFERENCES_APPLNEXTSTARTUP;applicato al prossimo avvio PREFERENCES_AUTOMONPROFILE;Usa il profilo colore dello schermo principale del sistema operativo PREFERENCES_BATCH_PROCESSING;Sviluppo in serie @@ -629,15 +628,9 @@ PREFERENCES_BEHAVIOR;Comportamento PREFERENCES_BEHSETALL;Tutti a 'Imposta' PREFERENCES_BEHSETALLHINT;Imposta tutti i parametri nella modalità Imposta.\nLe regolazioni dei parametri nel pannello strumenti batch saranno assoluti, verranno mostrati i valori reali. PREFERENCES_BLACKBODY;Tungsteno -PREFERENCES_CACHECLEARALL;Rimuovi tutto -PREFERENCES_CACHECLEARPROFILES;Rimuovi i profili di sviluppo -PREFERENCES_CACHECLEARTHUMBS;Rimuovi le miniature PREFERENCES_CACHEMAXENTRIES;Numero massimo di voci in memoria PREFERENCES_CACHEOPTS;Opzioni della memoria PREFERENCES_CACHETHUMBHEIGHT;Massima altezza delle miniature -PREFERENCES_CIEART;Ottimizzazione CIECAM02 -PREFERENCES_CIEART_LABEL;Utilizza precisione singola anziché doppia -PREFERENCES_CIEART_TOOLTIP;Se abilitata, i calcoli CIECAM02 sono effettuati in formato a virgola mobile a precisione singola anziché doppia. Questo permette un piccolo incremento di velocità al costo di una trascurabile perdita di qualità. PREFERENCES_CLIPPINGIND;Indicazione di tosaggio PREFERENCES_CUSTPROFBUILD;Generatore profili personalizzati PREFERENCES_CUSTPROFBUILDHINT;File eseguibile (o script) richiamato quando è necessario generare un nuovo profilo per un'immagine.\nIl percorso del file di comunicazione (del tipo *.ini, detto "Keyfile") è aggiunto come parametro da linea di comando. Contiene diversi paramentri necessari agli script e ai dati Exif per generare un profilo di elaborazione.\n\nATTENZIONE:: Devi utilizzare le virgolette doppie quando necessario se utilizzi percorsi contenenti spazi. @@ -645,7 +638,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Formato tasti PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nome PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Percorso dell'eseguibile -PREFERENCES_CUTOVERLAYBRUSH;Colore/Trasparenza della maschera di ritaglio PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -664,7 +656,6 @@ PREFERENCES_DIRSOFTWARE;Cartella d'installazione PREFERENCES_EDITORLAYOUT;Disposizione PREFERENCES_EXTERNALEDITOR;Programma di ritocco esterni PREFERENCES_FBROWSEROPTS;Opzioni del Navigatore e delle miniature -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barra di navigazione a singola riga (deseleziona nel caso di schermo a bassa risoluzione) PREFERENCES_FILEFORMAT;Formato file PREFERENCES_FLATFIELDFOUND;Trovati PREFERENCES_FLATFIELDSDIR;Cartella dei fotogrammi di campo (Flat Field) @@ -705,7 +696,6 @@ PREFERENCES_MENUOPTIONS;Opzioni del menù a discesa PREFERENCES_METADATA;Metadati PREFERENCES_MULTITAB;Modalità a Schede Multiple PREFERENCES_MULTITABDUALMON;Modalità a Schede Multiple (se disponibile sul secondo schermo) -PREFERENCES_NAVGUIDEBRUSH;Colore delle guide del Navigatore PREFERENCES_OUTDIR;Cartella di destinazione PREFERENCES_OUTDIRFOLDER;Salva nella cartella PREFERENCES_OUTDIRFOLDERHINT;Salva le immagini nella cartella scelta @@ -726,9 +716,7 @@ PREFERENCES_PROFILESAVECACHE;Salva il profilo di sviluppo nella memoria PREFERENCES_PROFILESAVEINPUT;Salva il profilo di sviluppo a fianco del file originario PREFERENCES_PROPERTY;Proprietà PREFERENCES_PSPATH;Cartella d'installazione di Adobe Photoshop -PREFERENCES_SELECTFONT;Seleziona il carattere PREFERENCES_SELECTLANG;Seleziona la lingua -PREFERENCES_SELECTTHEME;Seleziona il tema PREFERENCES_SET;Imposta PREFERENCES_SHOWBASICEXIF;Mostra dati Exif di base PREFERENCES_SHOWDATETIME;Mostra data e ora @@ -881,11 +869,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Rifletti orizzontalmente. TP_COARSETRAF_TOOLTIP_ROTLEFT;Ruota a sinistra.\nScorciatoie:\n[ - Modalità a Scheda Multipla,\nAlt-[ - Modalità a Scheda Singola. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Ruota a destra.\nScorciatoie:\n] - Modalità a Scheda Multipla,\nAlt-] - Modalità a Scheda Singola. TP_COARSETRAF_TOOLTIP_VFLIP;Rifletti verticalmente -TP_COLORAPP_ADAPTSCENE;Luminanza della scena -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Luminanza assoluta dell'ambiente della scena (cd/m²)\n1) Calcolata dai dati Exif:\nTempo - ISO - Diaframma - Compensazione dell'Esposizione.\n2) Calcolata dal punto di bianco del raw e dal cursore di Compensazione dell'Esposizione. -TP_COLORAPP_ADAPTVIEWING;Luminanza di visualizzazione (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Luminanza assoluta dell'ambiente di visualizzazione\n(normalmente 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Se questa casella è selezionata (raccomandato) RT calcola un valore ottimale dai dati Exif.\nPer impostare un valore manualmente, deseleziona la casella. TP_COLORAPP_ALGO;Algoritmo TP_COLORAPP_ALGO_ALL;Tutto TP_COLORAPP_ALGO_JC;Chiarezza + Croma (JC) @@ -915,8 +898,6 @@ TP_COLORAPP_CURVEEDITOR3;Curva Colore TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Regola Croma, Saturazione o Pienezza.\nL'Istogramma mostra la Cromaticità (Lab) prima di CIECAM02.\nSe "Mostra gli istogrammi di uscita CIECAM02 nelle curve" è abilitato, l'Istogramma mostra C, s e M dopo CIECAM02.\nC, s e M non sono mostrati direttamente nel pannello Istogramma.\nPer l'output finale fare riferimento al pannello Istogramma TP_COLORAPP_DATACIE;Mostra gli istogrammi di uscita CIECAM02 nelle curve TP_COLORAPP_DATACIE_TOOLTIP;Quando abilitato, gli istogrammi nelle curve CIECAM02 mostrano valori e intervalli approssimati di J o Q, e C, s o M dopo le regolazioni CIECAM02.\nQuesta selezione non ha effetto nel pannello Istogramma principale.\n\nQuando disabilitato, gli istogrammi nelle curve CIECAM02 mostrano i valori Lab, come sono prima delle regolazioni CIECAM02. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Se abilitato (raccomandato), RT calcola un valore ottimale, che sarà utilizzato da CAT02, e anche per l'intero CIECAM02.\nDisabilitare per impostare il valore manualmente (sono raccomandati valori superiori a 65). -TP_COLORAPP_DEGREE_TOOLTIP;Quantità di Trasformazione di Adattamento Cromatico CIE 2002 TP_COLORAPP_GAMUT;Controllo Gamut (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Consenti il controllo gamut nella modalità Lab TP_COLORAPP_HUE;Tinta (h) @@ -931,8 +912,6 @@ TP_COLORAPP_MODEL;Modello del Punto di Bianco TP_COLORAPP_MODEL_TOOLTIP;Modello del Punto di bianco.\n\nWB [RT] + [output]: Per la scena viene usato il Bilanciamento del Bianco di RT, CIECAM02 è impostato a D50, il bianco del dispositivo di uscita utilizza il valore impostato in Preferenze > Gestione Colore.\n\nWB [RT+CAT02] + [output]: Le impostazioni di Bilanciamento del Bianco di RT sono utilizzate da CAT02 e il bianco del dispositivo di uscita utilizza il valore impostato in Preferenze > Gestione Colore. TP_COLORAPP_RSTPRO;Protezione rossi e incarnato TP_COLORAPP_RSTPRO_TOOLTIP;Protezione dei toni rossi e dell'incarnato (cursori e curve) -TP_COLORAPP_SHARPCIE;--inutilizzato-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--inutilizzato-- TP_COLORAPP_SURROUND;Ambiente TP_COLORAPP_SURROUND_AVER;Medio TP_COLORAPP_SURROUND_DARK;Scuro @@ -951,6 +930,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Chiarezza TP_COLORAPP_TCMODE_SATUR;Saturazione TP_COLORAPP_TONECIE;Tone mapping con CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Se questa opzione è disabilitata, il Tone Mapping è eseguito nello spazio Lab.\nSe l'opzione è abilitata, il Tone Mapping è fatto usando CIECAM02.\nLo strumento Tone Mapping (Lab/CIECAM02) deve essere abilitato affinché questa impostazione abbia effetto. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminanza assoluta dell'ambiente di visualizzazione\n(normalmente 16cd/m²). TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] TP_COLORAPP_WBRT;WB [RT] + [output] TP_CROP_FIXRATIO;Rapporto fisso: @@ -964,7 +944,6 @@ TP_CROP_GUIDETYPE;Tipo di guida: TP_CROP_H;A TP_CROP_LABEL;Ritaglio TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP; Seleziona Area TP_CROP_W;L TP_CROP_X;X TP_CROP_Y;Y @@ -1008,7 +987,6 @@ TP_EPD_LABEL;Tone Mapping TP_EPD_REWEIGHTINGITERATES;Iterazioni di Ribilanciamento TP_EPD_SCALE;Scala TP_EPD_STRENGTH;Forza -TP_EPD_TOOLTIP;Il Tone Mapping è possibile in modalità Lab (standard) o CIECAM02.\n\nPer utilizare il Tone Mapping CIECAM02 abilita quste impostazioni: \n 1. CIECAM02\n 2. Algoritmo="Brillanza + Pienezza (QM)"\n 3. "Tone mapping con CIECAM02" TP_EXPOSURE_AUTOLEVELS;Livelli automatici TP_EXPOSURE_AUTOLEVELS_TIP;Abilita l'esecuzione dei livelli automatici per impostare automaticamente il cursore Esposizione in base all'analisi dell'immagine.\nSe necessario, abilita Ricostruzione Alteluci. TP_EXPOSURE_BLACKLEVEL;Livello del nero @@ -1135,9 +1113,6 @@ TP_LENSGEOM_AUTOCROP; Ritaglio automatico TP_LENSGEOM_FILL;Adattamento automatico TP_LENSGEOM_LABEL;Obiettivo/Geometria TP_LENSPROFILE_LABEL;Profilo di Correzione dell'Obiettivo -TP_LENSPROFILE_USECA;Correzione dell'Aberrazione Cromatica (AC) -TP_LENSPROFILE_USEDIST;Correzione della Distorsione -TP_LENSPROFILE_USEVIGN;Correzione della Vignettatura TP_NEUTRAL_TIP;Riporta i controlli dell'esposizione ai valori neutrali.\nVale per gli stessi controlli cui è applicato Livelli Automatici, indipendentemente dal fatto che Livelli Automatici sia abilitato. TP_PCVIGNETTE_FEATHER;Scia TP_PCVIGNETTE_FEATHER_TOOLTIP;Scia:\n0 = solo i bordi,\n50 = a metà strada con il centro,\n100 = al centro. @@ -1315,12 +1290,17 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1334,6 +1314,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality. !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default !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. @@ -1346,6 +1328,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !FILECHOOSER_FILTER_TIFF;TIFF files !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... @@ -1574,14 +1557,32 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1605,6 +1606,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1674,24 +1676,21 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !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. -!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_BUTTON_SENDTOEDITOR;Edit image in external editor !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control @@ -1709,13 +1708,23 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1728,6 +1737,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1762,15 +1772,13 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1792,20 +1800,20 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1819,6 +1827,25 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1847,6 +1874,12 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1924,6 +1957,15 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1944,10 +1986,10 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACK_0;Green 1 (lead) @@ -1968,6 +2010,8 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2017,10 +2061,10 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !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 -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2058,7 +2102,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2104,7 +2148,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 @@ -2268,6 +2312,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !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". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: f diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index fe8b79022..ad8996907 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -48,6 +48,7 @@ CURVEEDITOR_AXIS_IN;I: CURVEEDITOR_AXIS_LEFT_TAN;LT: CURVEEDITOR_AXIS_OUT;O: CURVEEDITOR_AXIS_RIGHT_TAN;RT: +CURVEEDITOR_CATMULLROM;フレキシブル CURVEEDITOR_CURVE;カーブ CURVEEDITOR_CURVES;カーブ CURVEEDITOR_CUSTOM;カスタム @@ -74,6 +75,10 @@ DYNPROFILEEDITOR_DELETE;削除 DYNPROFILEEDITOR_EDIT;編集 DYNPROFILEEDITOR_EDIT_RULE;ダイナミックプロファイルの規定を変更 DYNPROFILEEDITOR_ENTRY_TOOLTIP;既定の符号は鈍いので\n入力する際に"re:"という接頭語を付けます\n通常の表現を使います +DYNPROFILEEDITOR_IMGTYPE_ANY;任意 +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;ピクセルシフト +DYNPROFILEEDITOR_IMGTYPE_STD;標準え DYNPROFILEEDITOR_MOVE_DOWN;下に移動 DYNPROFILEEDITOR_MOVE_UP;上に移動 DYNPROFILEEDITOR_NEW;新規 @@ -146,8 +151,8 @@ FILEBROWSER_AUTOFLATFIELD;オート・フラットフィールド FILEBROWSER_BROWSEPATHBUTTONHINT;クリックで選択したパスをブラウズ FILEBROWSER_BROWSEPATHHINT;参照するパスを入力します\nCtrl-O パスのテキストボックスにフォーカス\nEnter / Ctrl-Enterその場所をブラウズします\nEsc 変更をクリア\nShift-Escフォーカスを削除\nパスのショートカット:\n ~ - ユーザーのホームディレクトリ\n ! - ユーザーの画像ディレクトリ FILEBROWSER_CACHE;cache -FILEBROWSER_CACHECLEARFROMFULL;cacheをクリア - すべて -FILEBROWSER_CACHECLEARFROMPARTIAL;cacheをクリア - 一部 +FILEBROWSER_CACHECLEARFROMFULL;プロファイルを含めcache内をクリアにする +FILEBROWSER_CACHECLEARFROMPARTIAL;プロファイルを除き、cache内をクリアにする FILEBROWSER_CLEARPROFILE;プロファイルのクリア FILEBROWSER_COLORLABEL_TOOLTIP;カラー・ラベル\n\nドロップダウン・メニューからか、ショートカット:\nShift-Ctrl-1 レッド\nShift-Ctrl-2 イエロー\nShift-Ctrl-3 グリーン\nShift-Ctrl-4 ブルー\nShift-Ctrl-5 パープル FILEBROWSER_COPYPROFILE;プロファイルをコピー @@ -250,6 +255,7 @@ GENERAL_AUTO;自動 GENERAL_BEFORE;補正前 GENERAL_CANCEL;キャンセル GENERAL_CLOSE;閉じる +GENERAL_CURRENT;現在 GENERAL_DISABLE;無効 GENERAL_DISABLED;無効 GENERAL_ENABLE;有効 @@ -753,13 +759,31 @@ HISTORY_MSG_485;レンズ補正 HISTORY_MSG_486;レンズ補正 - カメラ HISTORY_MSG_487;レンズ補正 - レンズ HISTORY_MSG_488;ダイナミックレンジ圧縮 -HISTORY_MSG_489;DRC - しきい値 +HISTORY_MSG_489;DRC - ディテール HISTORY_MSG_490;DRC - 量 HISTORY_MSG_491;ホワイトバランス HISTORY_MSG_492;RGBカーブ HISTORY_MSG_493;L*a*b*調整 HISTORY_MSG_CLAMPOOG;色域外の色を切り取る HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - カラー補正 +HISTORY_MSG_COLORTONING_LABREGION_AB;CT - 色の補正 +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - 色チャンネル +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - 色度のマスク +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - 色相のマスク +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - 明度 +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - 輝度のマスク +HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - リスト +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - マスクぼかし +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - オフセット +HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - 強化 +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - 彩度 +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - マスクの表示 +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - スロープ +HISTORY_MSG_DEHAZE_DEPTH;霞除去 - 深度 +HISTORY_MSG_DEHAZE_ENABLED;霞除去 +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;霞除去 - 深度マップの表示 +HISTORY_MSG_DEHAZE_STRENGTH;霞除去 - 強さ +HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;デュアルデモザイク - 自動しきい値 HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - コントラストのしきい値 HISTORY_MSG_HISTMATCHING;トーンカーブの自動調節 HISTORY_MSG_ICM_OUTPUT_PRIMARIES;出力 - プライマリ @@ -784,6 +808,7 @@ HISTORY_MSG_RAWCACORR_COLORSHIFT;Rawの色収差補正 - 色ずれを回避 HISTORY_MSG_RAW_BORDER;Rawの境界 HISTORY_MSG_RESIZE_ALLOWUPSCALING;リサイズ - アップスケーリングを可能にする HISTORY_MSG_SHARPENING_CONTRAST;シャープ化 - コントラストのしきい値 +HISTORY_MSG_SH_COLORSPACE;S/H - 色空間 HISTORY_MSG_SOFTLIGHT_ENABLED;ソフトライト HISTORY_MSG_SOFTLIGHT_STRENGTH;ソフトライト - 強さ HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - アンカー @@ -874,9 +899,6 @@ IPTCPANEL_TITLE;タイトル IPTCPANEL_TITLEHINT;画像を短く表す言葉や撮影者名、或いは画像のタイトルでもよい IPTCPANEL_TRANSREFERENCE;作業のID IPTCPANEL_TRANSREFERENCEHINT;作業工程の管理やトラッキングのための画像の数字或いは識別 -LENSPROFILE_CORRECTION_AUTOMATCH;自動でパラメータを補正する -LENSPROFILE_CORRECTION_LCPFILE;LCPファイル -LENSPROFILE_CORRECTION_MANUAL;手動でパラメータを補正する LENSPROFILE_LENS_WARNING;注意:レンズプロファイルに関する切り抜きの因数がカメラの因数より大きいと、誤った結果になるかもしれません MAIN_BUTTON_FULLSCREEN;フルスクリーン MAIN_BUTTON_ICCPROFCREATOR;ICCプロファイルクリエーター @@ -947,7 +969,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_PREVIEWSHARPMASK;プレビューで見るシャープ化機能のコントラストマスク\nショートカット: p\n\nこの機能が使えるのはシャープ化機能が有効で、画像が100%以上に拡大されている場合だけ MAIN_TOOLTIP_QINFO;画像の情報\nショートカット: i MAIN_TOOLTIP_SHOWHIDELP1;表示/非表示 左パネル\nショートカット: l MAIN_TOOLTIP_SHOWHIDERP1;表示/非表示 右パネル\nショートカット: Alt-l @@ -985,6 +1007,7 @@ PARTIALPASTE_CROP;切り抜き PARTIALPASTE_DARKFRAMEAUTOSELECT;ダークフレーム自動選択 PARTIALPASTE_DARKFRAMEFILE;ダークフレーム・ファイル PARTIALPASTE_DEFRINGE;フリンジ低減 +PARTIALPASTE_DEHAZE;霞除去 PARTIALPASTE_DETAILGROUP;ディテールの設定 PARTIALPASTE_DIALOGLABEL;処理プロファイルの部分ペースト PARTIALPASTE_DIRPYRDENOISE;ノイズ低減 @@ -1021,6 +1044,7 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;ラインノイズ フィルタ PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF ラインフィルタ PARTIALPASTE_PRSHARPENING;リサイズ後のシャープ化 PARTIALPASTE_RAWCACORR_AUTO;自動色収差補正 +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA 色ずれを回避 PARTIALPASTE_RAWCACORR_CAREDBLUE;色収差 レッドとブルー PARTIALPASTE_RAWEXPOS_BLACK;黒レベル PARTIALPASTE_RAWEXPOS_LINEAR;raw ホワイトポイント リニア補正係数 @@ -1048,9 +1072,15 @@ PARTIALPASTE_VIBRANCE;自然な彩度 PARTIALPASTE_VIGNETTING;周辺光量補正 PARTIALPASTE_WHITEBALANCE;ホワイトバランス PREFERENCES_ADD;追加 +PREFERENCES_APPEARANCE;外観 +PREFERENCES_APPEARANCE_COLORPICKERFONT;カラーピッカーのフォント +PREFERENCES_APPEARANCE_CROPMASKCOLOR;切り抜きのマスクカラー +PREFERENCES_APPEARANCE_MAINFONT;メインフォント +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;ナビゲーターのガイドカラー +PREFERENCES_APPEARANCE_THEME;テーマ PREFERENCES_APPLNEXTSTARTUP;要再起動 PREFERENCES_AUTOMONPROFILE;OSのメインモニター・プロファイルを使用 -PREFERENCES_AUTOSAVE_TP_OPEN;プログラム終了の前に、機能パネルの開閉状態を自動的に保存する +PREFERENCES_AUTOSAVE_TP_OPEN;プログラム終了時の機能パネルの開閉状態を保存 PREFERENCES_BATCH_PROCESSING;バッチ処理 PREFERENCES_BEHADDALL;すべて '追加' PREFERENCES_BEHADDALLHINT;すべてのパラメータを 追加モードにします\nバッチツールパネルで設定される調整値が、各画像の既定値に加算されます @@ -1058,15 +1088,17 @@ PREFERENCES_BEHAVIOR;ビヘイビア PREFERENCES_BEHSETALL;すべて '設定' PREFERENCES_BEHSETALLHINT;すべてのパラメータを 設定モードにします\nバッチツールパネルで設定される調整値が、各画像の既定値に取って代わり同一になります PREFERENCES_BLACKBODY;タングステン -PREFERENCES_CACHECLEARALL;すべてクリア -PREFERENCES_CACHECLEARPROFILES;プロファイルのクリア -PREFERENCES_CACHECLEARTHUMBS;サムネイルのクリア -PREFERENCES_CACHEMAXENTRIES;キャッシュエントリーの最大数 +PREFERENCES_CACHECLEAR;クリア +PREFERENCES_CACHECLEAR_ALL;cacheに入れられたファイルを全てクリア: +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;cacheに入れた処理プロファイル以外をクリア: +PREFERENCES_CACHECLEAR_ONLYPROFILES;cacheに入れた処理プロファイルだけをクリア: +PREFERENCES_CACHECLEAR_SAFETY;casheに入れたファイルだけをクリア。元画像に付随した処理プロファイルはそのまま +PREFERENCES_CACHEMAXENTRIES;cacheに入れるファイルの最大数 PREFERENCES_CACHEOPTS;cache オプション PREFERENCES_CACHETHUMBHEIGHT;サムネイル縦の最大値 PREFERENCES_CLIPPINGIND;クリッピング領域の表示 PREFERENCES_CLUTSCACHE;HaldCLUT cache -PREFERENCES_CLUTSCACHE_LABEL;cacheに置けるHaldCLUTの最大数 +PREFERENCES_CLUTSCACHE_LABEL;cacheに入れるHaldCLUTの最大数 PREFERENCES_CLUTSDIR;HaldCLUTのディレクトリー PREFERENCES_CMMBPC;ブラックポイントの補正 PREFERENCES_CROP;切り抜き画像の編集 @@ -1086,7 +1118,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;キーフォーマット PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;名前 PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;タグID PREFERENCES_CUSTPROFBUILDPATH;実行ファイルのパス -PREFERENCES_CUTOVERLAYBRUSH;切り抜きマスクカラー 不透明度 PREFERENCES_D50;5000K PREFERENCES_D50_OLD;5000k PREFERENCES_D55;5500K @@ -1108,7 +1139,7 @@ PREFERENCES_EDITORCMDLINE;カスタムコマンドライン PREFERENCES_EDITORLAYOUT;編集 レイアウト PREFERENCES_EXTERNALEDITOR;外部エディタ PREFERENCES_FBROWSEROPTS;ファイルブラウザ/サムネイルのオプション -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;ファイルブラウザでの一行のツールバー (低解像度表示用に選択解除) +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;ファイルブラウザのツールバーを圧縮 PREFERENCES_FILEFORMAT;ファイル形式 PREFERENCES_FLATFIELDFOUND;検出 PREFERENCES_FLATFIELDSDIR;フラットフィールド・ディレクトリ @@ -1165,7 +1196,6 @@ PREFERENCES_MONPROFILE;デフォルトのモニタープロファイル PREFERENCES_MONPROFILE_WARNOSX;MacのOSの制約により、サポート出来るのはsRGBだけです PREFERENCES_MULTITAB;マルチ編集タブモード PREFERENCES_MULTITABDUALMON;独自のウィンドウモードによるマルチ編集タブ -PREFERENCES_NAVGUIDEBRUSH;ナビゲーターのガイドカラー PREFERENCES_NAVIGATIONFRAME;ナビゲーション PREFERENCES_OUTDIR;出力ディレクトリ PREFERENCES_OUTDIRFOLDER;フォルダに保存 @@ -1205,18 +1235,15 @@ PREFERENCES_PSPATH;Adobe Photoshop のインストール・ディレクトリ PREFERENCES_REMEMBERZOOMPAN;ズームレベルとパン速度を記憶する PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;現在の画像のズームレベルとパン速度を記憶し、新しく開く画像に適用\n\nこのオプションが使えるのは、編集画面のモードが“シングル編集”で、“プレビューのズームレベルが100%以下の場合に使うデモザイク”が“pp3に従う”と設定されている場合だけです。 PREFERENCES_SAVE_TP_OPEN_NOW;機能パネルの今の開閉状態を保存する -PREFERENCES_SELECTFONT;フォント選択 -PREFERENCES_SELECTFONT_COLPICKER;カラーピッカーのフォントを選択 PREFERENCES_SELECTLANG;言語選択 -PREFERENCES_SELECTTHEME;テーマの選択 PREFERENCES_SERIALIZE_TIFF_READ;TIFFファイルの読み込み設定 -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;TIFFファイルのシリアル化 +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;TIFFファイルの読み込みをシリアライズ PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;画像フォルダーが多数の非圧縮のTIFFファイルで閉められている場合、このオプションを有効にすることで、サムネイル画像生成の効率が上がります PREFERENCES_SET;設定 PREFERENCES_SHOWBASICEXIF;基本Exif情報を表示 PREFERENCES_SHOWDATETIME;日付表示 PREFERENCES_SHOWEXPOSURECOMPENSATION;露光補正追加 -PREFERENCES_SHOWFILMSTRIPTOOLBAR;画像スライドのツールバーを表示する +PREFERENCES_SHOWFILMSTRIPTOOLBAR;画像スライドにツールバーを表示する PREFERENCES_SHTHRESHOLD;シャドウ・クリッピング領域のしきい値 PREFERENCES_SINGLETAB;シングルタブモードモード PREFERENCES_SINGLETABVERTAB;シングル編集タブモード, 垂直タブ @@ -1232,7 +1259,6 @@ PREFERENCES_TAB_GENERAL;一般 PREFERENCES_TAB_IMPROC;画像処理 PREFERENCES_TAB_PERFORMANCE;パフォーマンス PREFERENCES_TAB_SOUND;サウンド -PREFERENCES_THEME;テーマ PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;埋め込まれているJPEGのプレビュー PREFERENCES_THUMBNAIL_INSPECTOR_MODE;表示する画像 PREFERENCES_THUMBNAIL_INSPECTOR_RAW;ニュートラルなrawレンダリング @@ -1395,11 +1421,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;左右反転 TP_COARSETRAF_TOOLTIP_ROTLEFT;90度左回転\nショートカット: [\n\nシングル・エディタ・タブのショートカット: Alt-[ TP_COARSETRAF_TOOLTIP_ROTRIGHT;90度右回転\nショートカット: ]\n\nシングル・エディタ・タブのショートカット: Alt-] TP_COARSETRAF_TOOLTIP_VFLIP;上下反転 -TP_COLORAPP_ADAPTSCENE;撮影輝度への適応 -TP_COLORAPP_ADAPTSCENE_TOOLTIP;撮影環境の絶対輝度(cd/m2)\n1)Exif情報から算出:\nシャッター速度、ISO、絞り、カメラの露出補正\n2)rawのホワイトポイントとRTの露光補正スライダー値から算出 -TP_COLORAPP_ADAPTVIEWING;観視輝度への適応 (cd/m2) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;観視環境の絶対輝度\n(通常 16cd/m2) -TP_COLORAPP_ADAP_AUTO_TOOLTIP;チェックボックッスが有効の場合(推奨)はRTがExif情報に基づいて最適値を計算します\n手動で行う場合はチェックボックスを無効にします +TP_COLORAPP_ABSOLUTELUMINANCE;絶対輝度 TP_COLORAPP_ALGO;アルゴリズム TP_COLORAPP_ALGO_ALL;すべて TP_COLORAPP_ALGO_JC;明度 + 色度 (JC) @@ -1410,6 +1432,7 @@ TP_COLORAPP_BADPIXSL;ホット/バッドピクセルフィルター TP_COLORAPP_BADPIXSL_TOOLTIP;明るい部分のホット/バッドピクセルを圧縮します\n 0は効果なし 1は中間 2はガウスほかし\n\nこれらアーティファクトはCIECAM02の限界に起因するものです。色域を抑制する代わりに、イメージに暗い影が現れるのを防ぎます TP_COLORAPP_BRIGHT;明るさ (Q) TP_COLORAPP_BRIGHT_TOOLTIP;CIECAM02の明るさは L*a*b*やRGBとは異なり、白の輝度を計算に入れます +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;設定を手動で行う場合、65以上の設定値を推奨 TP_COLORAPP_CHROMA;色度 (C) TP_COLORAPP_CHROMA_M;鮮やかさ (M) TP_COLORAPP_CHROMA_M_TOOLTIP;CIECAM02の鮮やかさは L*a*b*やRGBの鮮やかさとは異なります @@ -1429,8 +1452,6 @@ TP_COLORAPP_CURVEEDITOR3;カラーカーブ TP_COLORAPP_CURVEEDITOR3_TOOLTIP;色度、彩度、鮮やかさのいずれかを調整します\n\nCIECAM02調整前の色度(L*a*b*)のヒストグラムを表示します\nチェックボックスの"カーブにCIECAM02出力のヒストグラムを表示" が有効の場合、CIECAM02調整後のC,sまたはMのヒストグラムを表示します\n\nC, sとMは、メインのヒストグラム・パネルには表示されません\n最終出力は、メインのヒストグラム・パネルを参照してください TP_COLORAPP_DATACIE;カーブにCIECAM02出力のヒストグラムを表示 TP_COLORAPP_DATACIE_TOOLTIP;有効の場合、CIECAM02カーブのヒストグラムは、JかQ、CIECAM02調整後のCかs、またはMの値/範囲の近似値を表示します\nこの選択はメイン・ヒストグラムパネルには影響を与えません\n\n無効の場合、CIECAM02カーブのヒストグラムは、CIECAM調整前のL*a*b*値を表示します -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;チェックボックスが有効の場合 (推奨)\nRTは、CAT02で使用され、更にCIECAM02全体で使用する最適値を算出します\n手動で値を設定するには、チェックボックスを無効にします (65以上の値を推奨) -TP_COLORAPP_DEGREE_TOOLTIP;CIE色順応変換2002(CAT02)の量 TP_COLORAPP_FREE;任意の色温度+グリーン + CAT02 + [出力] TP_COLORAPP_GAMUT;色域制御 (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;L*a*b*モードの色域制御を許可 @@ -1442,14 +1463,13 @@ TP_COLORAPP_LABEL_SCENE;撮影環境条件 TP_COLORAPP_LABEL_VIEWING;観視条件 TP_COLORAPP_LIGHT;明度 (J) TP_COLORAPP_LIGHT_TOOLTIP;CIECAM02の明度は L*a*b*やRGBの明度とは異なります +TP_COLORAPP_MEANLUMINANCE;中間輝度 (Yb%) TP_COLORAPP_MODEL;ホワイトポイント・モデル TP_COLORAPP_MODEL_TOOLTIP;WB [RT] + [出力]:\nRTのホワイトバランスは、撮影環境に使用されます。CIECAM02はD50の設定, 出力デバイスのホワイトバランスは「環境設定」の「カラーマネジメント」の設定\n\nWB [RT+CAT02] + [出力]:\nRTのホワイトバランス設定は、CAT02で使用され、出力デバイスのホワイトバランスは環境設定の値を使用します TP_COLORAPP_NEUTRAL;リセット TP_COLORAPP_NEUTRAL_TIP;全てのスライダーチェックボックスとカーブをデフォルトにリセットします TP_COLORAPP_RSTPRO;レッドと肌色トーンを保護 TP_COLORAPP_RSTPRO_TOOLTIP;レッドと肌色トーンを保護はスライダーとカーブの両方に影響します -TP_COLORAPP_SHARPCIE;Q/C で、シャープ化、ディテールレベルのコントラストとフリンジ低減 -TP_COLORAPP_SHARPCIE_TOOLTIP;有効にした場合、シャープ化、ディテールレベルのコントラストとフリンジ低減は、CIECAM02を使用します TP_COLORAPP_SURROUND;周囲環境 TP_COLORAPP_SURROUND_AVER;普通 TP_COLORAPP_SURROUND_DARK;暗い @@ -1469,11 +1489,9 @@ TP_COLORAPP_TCMODE_SATUR;彩度 TP_COLORAPP_TEMP_TOOLTIP;選択した光源に関し色偏差は常に1が使われます\n\n色温度=2856\nD50 色温度=5003\nD55 色温度=5503\nD65 色温度=6504\nD75 色温度=7504 TP_COLORAPP_TONECIE;CIECAM02 明るさ(Q)を使用してトーンマッピング TP_COLORAPP_TONECIE_TOOLTIP;このオプションが無効になっている場合、トーンマッピングはL*a*b*空間を使用します\nこのオプションが有効になっている場合、トーンマッピングは、CIECAM02を使用します\nトーンマッピング(L*a*b*/CIECAM02)ツールを有効にするには、この設定を有効にする必要があります +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;観視環境の絶対輝度\n(通常 16cd/m2) TP_COLORAPP_WBCAM;WB [RT+CAT02] + [出力] TP_COLORAPP_WBRT;WB [RT] + [出力] -TP_COLORAPP_YB;Yb% (平均輝度) -TP_COLORAPP_YBSCENE;Yb% (平均輝度) -TP_COLORAPP_YBSCENE_TOOLTIP;自動が有効になると、Ybは画像の輝度の中間値から計算されます TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;自動彩度 TP_COLORTONING_BALANCE;バランス @@ -1487,6 +1505,25 @@ TP_COLORTONING_LAB;L*a*b*モデルでブレンド TP_COLORTONING_LABEL;カラートーン調整 TP_COLORTONING_LABGRID;L*a*b*カラー補正グリッド TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +TP_COLORTONING_LABREGIONS;L*a*b*の補正領域 +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;色チャンネル +TP_COLORTONING_LABREGION_CHANNEL_ALL;全ての色チャンネル +TP_COLORTONING_LABREGION_CHANNEL_B;ブルー +TP_COLORTONING_LABREGION_CHANNEL_G;グリーン +TP_COLORTONING_LABREGION_CHANNEL_R;レッド +TP_COLORTONING_LABREGION_CHROMATICITYMASK;色度 +TP_COLORTONING_LABREGION_HUEMASK;色相 +TP_COLORTONING_LABREGION_LIGHTNESS;明度 +TP_COLORTONING_LABREGION_LIGHTNESSMASK;明度 +TP_COLORTONING_LABREGION_LIST_TITLE;補正 +TP_COLORTONING_LABREGION_MASK;マスク +TP_COLORTONING_LABREGION_MASKBLUR;マスクぼかし +TP_COLORTONING_LABREGION_OFFSET;オフセット +TP_COLORTONING_LABREGION_POWER;強化 +TP_COLORTONING_LABREGION_SATURATION;彩度 +TP_COLORTONING_LABREGION_SHOWMASK;マスクの表示 +TP_COLORTONING_LABREGION_SLOPE;スロープ TP_COLORTONING_LUMA;明度 TP_COLORTONING_LUMAMODE;明度を維持 TP_COLORTONING_LUMAMODE_TOOLTIP;カラー(レッド、グリーン、シアン、ブルーなど)を変える際に、これを有効にすると、各ピクセルの明度は維持されます。 @@ -1526,7 +1563,8 @@ TP_CROP_GUIDETYPE;ガイドタイプ: TP_CROP_H;高さ TP_CROP_LABEL;切り抜き TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP; 選択範囲切り抜き +TP_CROP_RESETCROP;リセット +TP_CROP_SELECTCROP;セレクト TP_CROP_W;W 幅 TP_CROP_X;X TP_CROP_Y;Y @@ -1535,6 +1573,10 @@ TP_DARKFRAME_LABEL;ダークフレーム TP_DEFRINGE_LABEL;フリンジ低減 TP_DEFRINGE_RADIUS;半径 TP_DEFRINGE_THRESHOLD;しきい値 +TP_DEHAZE_DEPTH;深度 +TP_DEHAZE_LABEL;霞除去 +TP_DEHAZE_SHOW_DEPTH_MAP;深度マップの表示 +TP_DEHAZE_STRENGTH;強さ TP_DIRPYRDENOISE_CHROMINANCE_AMZ;自動(多分割方式) TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;自動(分割方式) TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;色ノイズ低減の効果を確認して下さい\n注意:設定値の計算はあくまで平均的なもので、かなり主観的でです @@ -1616,7 +1658,6 @@ TP_EPD_LABEL;トーンマッピング TP_EPD_REWEIGHTINGITERATES;再加重反復 TP_EPD_SCALE;スケール TP_EPD_STRENGTH;強さ -TP_EPD_TOOLTIP;トーンマッピングは、L*a*b*モード(標準)またはCIECAM02モードを介して可能です\n\nL*a*b*モードの場合、トーンマッピングはウェーブレット機能の残差画像にも使えます\n\n CIECAM02トーンマッピングモードは以下の設定を有効にします:\n 1. CIECAM02\n 2. アルゴリズム="明るさ + 鮮やかさ (QM)"\n 3. "CIECAM02 明るさ(Q)でトーンマッピング" TP_EXPOSURE_AUTOLEVELS;自動露光補正 TP_EXPOSURE_AUTOLEVELS_TIP;画像を解析し露光補正を自動で設定します TP_EXPOSURE_BLACKLEVEL;黒レベル @@ -1768,10 +1809,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;色度スライダーとCCカーブを使用するこ TP_LENSGEOM_AUTOCROP;自動的に切り抜き選択 TP_LENSGEOM_FILL;オートフィル TP_LENSGEOM_LABEL;レンズ / ジオメトリ +TP_LENSPROFILE_CORRECTION_AUTOMATCH;自動で +TP_LENSPROFILE_CORRECTION_LCPFILE;LCPファイル +TP_LENSPROFILE_CORRECTION_MANUAL;手動で TP_LENSPROFILE_LABEL;レンズ補正 プロファイル -TP_LENSPROFILE_USECA;色収差補正 -TP_LENSPROFILE_USEDIST;歪曲収差補正 -TP_LENSPROFILE_USEVIGN;周辺光量補正 +TP_LENSPROFILE_LENS_WARNING;注意:レンズプロファイルに使われるクロップファクターはカメラのクロップファクターより大きいので、誤った結果になる可能性があります。 +TP_LENSPROFILE_MODE_HEADER;レンズプロファイルを選択 +TP_LENSPROFILE_USE_CA;色収差 +TP_LENSPROFILE_USE_GEOMETRIC;歪曲収差 +TP_LENSPROFILE_USE_HEADER;補正する収差を選択: +TP_LENSPROFILE_USE_VIGNETTING;周辺光量 TP_LOCALCONTRAST_AMOUNT;量 TP_LOCALCONTRAST_DARKNESS;暗い部分のレベル TP_LOCALCONTRAST_LABEL;ローカルコントラスト @@ -1814,6 +1861,7 @@ TP_PRSHARPENING_LABEL;リサイズ後のシャープ化 TP_PRSHARPENING_TOOLTIP;リサイズ後の画像をシャープ化します。但し、リサイズの方式がランチョスの場合に限ります。プレビュー画面でこの機能の効果を見ることは出来ません。使用法に関してはRawPediaを参照して下さい。 TP_RAWCACORR_AUTO;自動補正 TP_RAWCACORR_AUTOIT;繰り返し +TP_RAWCACORR_AUTOIT_TOOLTIP;”自動補正”が有効になっている場合にこの設定が可能です。\n自動補正の作用は控えめなため、全ての色収差が常に補正されるとは限りません。\n残りの色収差を補正するためには、自動色収差補正の繰り返しを最大5回行います。\n繰り返すたびに、直前の繰り返しで残った色収差を軽減しますが、その分処理時間は増えます。 TP_RAWCACORR_AVOIDCOLORSHIFT;色ずれを回避 TP_RAWCACORR_CABLUE;ブルー TP_RAWCACORR_CARED;レッド @@ -1846,6 +1894,8 @@ TP_RAW_DMETHOD;方式 TP_RAW_DMETHOD_PROGRESSBAR;%1 デモザイク中... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;デモザイク・リファイン中... TP_RAW_DMETHOD_TOOLTIP;注: IGVとLMMSEは高ISO画像に適しています +TP_RAW_DUALDEMOSAICAUTOCONTRAST;自動しきい値 +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;チェックボックスを有効にすると(推奨), RawTherapeeは画像の滑らかな部分をベースに最適値を計算します。\n画像に滑らかな部分がない、或いはノイズが非常に多い画像の場合、最適値は0に設定されます。\n最適値を手動で設定する場合は、チェックボックスを無効にします(画像に次第で最適値は異なります)。 TP_RAW_DUALDEMOSAICCONTRAST;コントラストのしきい値 TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;偽色抑制処理の回数 @@ -1908,7 +1958,7 @@ TP_RESIZE_HEIGHT;高さ TP_RESIZE_LABEL;リサイズ TP_RESIZE_LANCZOS;ランチョス TP_RESIZE_METHOD;方式: -TP_RESIZE_NEAREST;ニアリスト +TP_RESIZE_NEAREST;ニアレスト TP_RESIZE_SCALE;スケール TP_RESIZE_SPECIFY;条件指定: TP_RESIZE_W;幅: @@ -1916,7 +1966,7 @@ TP_RESIZE_WIDTH;幅 TP_RETINEX_CONTEDIT_HSL;ヒストグラムイコライザ HSL TP_RETINEX_CONTEDIT_LAB;ヒストグラムイコライザ L*a*b* TP_RETINEX_CONTEDIT_LH;色相イコライザ -TP_RETINEX_CONTEDIT_MAP;マスクイコライザ +TP_RETINEX_CONTEDIT_MAP;イコライザ TP_RETINEX_CURVEEDITOR_CD;輝度=f(輝度) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;輝度に応じた輝度の関数 L=f(L)\nハロとアーティファクトを減らすためにrawデータを補正します TP_RETINEX_CURVEEDITOR_LH;強さ=f(色相) @@ -1954,7 +2004,7 @@ TP_RETINEX_LABEL;レティネックス TP_RETINEX_LABEL_MASK;マスク TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;低 -TP_RETINEX_MAP;マスクの方法 +TP_RETINEX_MAP;方式 TP_RETINEX_MAP_GAUS;ガウシアンマスク TP_RETINEX_MAP_MAPP;シャープマスク (一部ウェーブレット) TP_RETINEX_MAP_MAPT;シャープマスク (全てウェーブレット) @@ -2042,7 +2092,7 @@ TP_SOFTLIGHT_STRENGTH;強さ TP_TM_FATTAL_AMOUNT;量 TP_TM_FATTAL_ANCHOR;アンカー TP_TM_FATTAL_LABEL;ダイナミックレンジ圧縮 -TP_TM_FATTAL_THRESHOLD;しきい値 +TP_TM_FATTAL_THRESHOLD;ディテール TP_VIBRANCE_AVOIDCOLORSHIFT;色ずれを回避 TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;肌色トーン @@ -2264,6 +2314,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;モード +TP_WBALANCE_PICKER;ピック TP_WBALANCE_SHADE;日陰 TP_WBALANCE_SIZE;サイズ: TP_WBALANCE_SOLUX35;Solux 3500K @@ -2286,8 +2337,3 @@ ZOOMPANEL_ZOOMFITSCREEN;画像全体を画面に合わせる\nショートカッ ZOOMPANEL_ZOOMIN;ズームイン\nショートカット: + ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 6689e4f95..83fd32895 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Asināšana PARTIALPASTE_VIGNETTING;Vinjetes labošana PARTIALPASTE_WHITEBALANCE;Baltā līdzsvarss PREFERENCES_APPLNEXTSTARTUP;lietos nākamā reizē -PREFERENCES_CACHECLEARALL;Attīrīt visu -PREFERENCES_CACHECLEARPROFILES;Attīrīt Profilus -PREFERENCES_CACHECLEARTHUMBS;Attīrīt sīktēlus PREFERENCES_CACHEMAXENTRIES;Maksimālais keša ierakstu skaits PREFERENCES_CACHEOPTS;Keša opcijas PREFERENCES_CACHETHUMBHEIGHT;Keša maksimālais sīktēla augstums @@ -274,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Saglabāt apstrādes profilu kešā PREFERENCES_PROFILESAVEINPUT;Saglabāt apstrādes profilu pie ievades faila PREFERENCES_PSPATH;Adobe Photoshop instalācijas direktorijs PREFERENCES_SELECTLANG;Izvēlies valodu -PREFERENCES_SELECTTHEME;Izvēlieties tēmu PREFERENCES_SHOWBASICEXIF;Rādīt Exif pamatdatus PREFERENCES_SHOWDATETIME;Rādīt datumu un laiku PREFERENCES_SHTHRESHOLD;Cirpto ēnu slieksnis @@ -334,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Trešdaļas TP_CROP_GUIDETYPE;Vadlīnijas: TP_CROP_H;A TP_CROP_LABEL;Kadrējums -TP_CROP_SELECTCROP; Norādīt kadrējumu TP_CROP_W;P TP_CROP_X;x TP_CROP_Y;y @@ -430,9 +425,10 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !CURVEEDITOR_HIGHLIGHTS;Highlights @@ -449,6 +445,10 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -500,8 +500,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -570,6 +570,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open @@ -973,14 +974,32 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1004,6 +1023,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1074,10 +1094,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !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. -!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_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 @@ -1111,17 +1127,17 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1152,6 +1168,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1202,8 +1219,14 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1211,12 +1234,17 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1232,7 +1260,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1244,8 +1271,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1291,7 +1318,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1314,15 +1340,13 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done @@ -1332,7 +1356,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1388,7 +1411,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1452,11 +1475,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1467,6 +1486,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1486,8 +1506,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1499,14 +1517,13 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1526,11 +1543,9 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1544,6 +1559,25 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1576,11 +1610,17 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1660,7 +1700,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. @@ -1789,10 +1828,16 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1830,11 +1875,11 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1866,6 +1911,8 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1926,10 +1973,10 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1967,7 +2014,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2030,7 +2077,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2243,6 +2290,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index d0f806fea..d13d6d5a4 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -82,8 +82,6 @@ FILEBROWSER_AUTOFLATFIELD;Auto Flat Field FILEBROWSER_BROWSEPATHBUTTONHINT;Kattints a kiválasztott útvonal böngészéséhez FILEBROWSER_BROWSEPATHHINT;Gépeld be az elérni kívánt útvonalat.\nCtrl-O-val tudod a fókuszt a beviteli mezőre vinni.\nEnter / Ctrl-Enter (az állományböngészőben) az ottani böngészéshez;\n\nÚtvonalrövidítések:\n ~ - felhasználói fiók (home) könyvtára\n - a felhasználó képkönyvtára FILEBROWSER_CACHE;Gyorsítótár -FILEBROWSER_CACHECLEARFROMFULL;Gyorsítótár ürítése - teljes -FILEBROWSER_CACHECLEARFROMPARTIAL;Gyorsítótár ürítése - részleges FILEBROWSER_CLEARPROFILE;Feldolgozási paraméter törlése FILEBROWSER_COPYPROFILE;Feldolgozási paraméterek másolása FILEBROWSER_CURRENT_NAME;Aktuális név: @@ -477,9 +475,6 @@ PREFERENCES_APPLNEXTSTARTUP;újraindítás után érvényes PREFERENCES_AUTOMONPROFILE;Oprendszerben beállított monitor-színprofil automatikus használata PREFERENCES_BATCH_PROCESSING;Kötegelt feldolgozás PREFERENCES_BEHAVIOR;Viselkedés -PREFERENCES_CACHECLEARALL;Teljes gyorsítótár törlése -PREFERENCES_CACHECLEARPROFILES;Feldolg. param. törlése -PREFERENCES_CACHECLEARTHUMBS;Előnézeti képek törlése PREFERENCES_CACHEMAXENTRIES;Gyorsítótárban tárolt képek max. száma PREFERENCES_CACHEOPTS;Gyorsítótár beállítások PREFERENCES_CACHETHUMBHEIGHT;Előnézeti kép maximális magassága @@ -487,7 +482,6 @@ PREFERENCES_CLIPPINGIND;Kiégett és bebukott részek jelzése PREFERENCES_CUSTPROFBUILD;Egyedi profil készítő PREFERENCES_CUSTPROFBUILDHINT;Executable (or script) file called when a new initial profile should be generated for an image.\nReceives command line params to allow a rules based .pp3 generation:\n[Path raw/JPG] [Path default profile] [f-no] [exposure in secs] [focal length in mm] [ISO] [Lens] [Camera] PREFERENCES_CUSTPROFBUILDPATH;Indítóállomány útvonala -PREFERENCES_CUTOVERLAYBRUSH;Vágás maszkjának színe/áttetszősége PREFERENCES_DARKFRAMEFOUND;Találat PREFERENCES_DARKFRAMESHOTS;kép PREFERENCES_DARKFRAMETEMPLATES;sablonok @@ -502,7 +496,6 @@ PREFERENCES_DIRSOFTWARE;Telepítés helye PREFERENCES_EDITORLAYOUT;Szerkesztési mód PREFERENCES_EXTERNALEDITOR;Külső képszerkesztő program PREFERENCES_FBROWSEROPTS;Állományböngésző beállításai -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Egysoros állományböngésző eszköztár (alacsony felbontás esetén hagyd üresen) PREFERENCES_FILEFORMAT;Állományformátum PREFERENCES_FLATFIELDFOUND;Találat PREFERENCES_FLATFIELDSDIR;Flat Fields könyvtár @@ -549,9 +542,7 @@ PREFERENCES_PROFILESAVECACHE;Feldolgozási paraméterek mentése a gyorsítótá PREFERENCES_PROFILESAVEINPUT;Feldolgozási paraméterek mentése a kép mellé PREFERENCES_PROPERTY;Property PREFERENCES_PSPATH;Adobe Photoshop telepítési könyvtára -PREFERENCES_SELECTFONT;Betűtípus kiválasztása PREFERENCES_SELECTLANG;Nyelv kiválasztása -PREFERENCES_SELECTTHEME;Kinézet kiválasztása PREFERENCES_SET;Beállítás PREFERENCES_SHOWBASICEXIF;Fontosabb EXIF információk megjelenítése PREFERENCES_SHOWDATETIME;Felvétel dátumának és idejének megjelenítése @@ -635,7 +626,6 @@ TP_CROP_GUIDETYPE;Segédvonal típusa: TP_CROP_H;M TP_CROP_LABEL;Kivágás TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP; Kijelölés egérrel TP_CROP_W;Sz TP_CROP_X;x TP_CROP_Y;y @@ -871,12 +861,17 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -895,6 +890,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) !EXTPROGTARGET_1;raw !EXTPROGTARGET_2;queue-processed +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_EXTPROGMENU;Open with !FILEBROWSER_OPENDEFAULTVIEWER;Windows default viewer (queue-processed) @@ -931,6 +928,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !GENERAL_ASIMAGE;As Image !GENERAL_AUTO;Automatic !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... @@ -1245,14 +1243,32 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1276,6 +1292,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1346,10 +1363,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !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. -!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_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 @@ -1363,11 +1376,11 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1387,6 +1400,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PARTIALPASTE_CHANNELMIXERBW;Black-and-white !PARTIALPASTE_COLORAPP;CIECAM02 !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control @@ -1408,18 +1422,29 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1439,6 +1464,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_D65;6500K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLUOF2;Fluorescent F2 !PREFERENCES_FLUOF7;Fluorescent F7 !PREFERENCES_FLUOF11;Fluorescent F11 @@ -1469,7 +1495,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1488,15 +1513,13 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1541,7 +1564,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1604,11 +1627,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1619,6 +1638,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1638,8 +1658,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1651,14 +1669,13 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1678,11 +1695,9 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1696,6 +1711,25 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1725,6 +1759,12 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1789,7 +1829,6 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts in the transitions between skin colors (hue, chroma, luma) and the rest of the image. !TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. !TP_EPD_GAMMA;Gamma -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CURVEEDITOR1;Tone curve 1 !TP_EXPOSURE_CURVEEDITOR2;Tone curve 2 @@ -1882,10 +1921,16 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_LABCURVE_LCREDSK_TIP;If enabled, the LC Curve affects only red and skin-tones.\nIf disabled, it applies to all tones. !TP_LABCURVE_RSTPROTECTION;Red and skin-tones protection !TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1915,10 +1960,10 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACK_0;Green 1 (lead) @@ -1942,6 +1987,8 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1993,10 +2040,10 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !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 -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2034,7 +2081,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2084,7 +2131,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones !TP_VIBRANCE_CURVEEDITOR_SKINTONES_RANGE1;Red/Purple @@ -2260,6 +2307,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !TP_WAVELET_TON;Toning !TP_WBALANCE_EQBLUERED;Blue/Red equalizer !TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behavior of "white balance" by modulating the blue/red balance.\nThis can be useful when shooting conditions:\na) are far from the standard illuminant (e.g. underwater),\nb) are far from conditions where calibrations were performed,\nc) where the matrices or ICC profiles are unsuitable. +!TP_WBALANCE_PICKER;Pick !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_WATER1;UnderWater 1 diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index f5948ef26..225b3ecf4 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -123,8 +123,6 @@ FILEBROWSER_AUTOFLATFIELD;Selecteer automatisch vlakveldopname FILEBROWSER_BROWSEPATHBUTTONHINT;Klik om te navigeren naar het gekozen pad FILEBROWSER_BROWSEPATHHINT;Typ het pad naar de doelmap.\nCtrl-O markeer het pad in het tekstveld.\nEnter / Ctrl-Enter open de map.\nEsc maak het tekstveld leeg.\nShift-Esc verwijder markering.\n\n\nSneltoetsen:\n ~ - gebruikers home directory\n ! - gebruikers afbeeldingen map FILEBROWSER_CACHE;Cache -FILEBROWSER_CACHECLEARFROMFULL;Verwijder uit cache - volledig -FILEBROWSER_CACHECLEARFROMPARTIAL;Verwijder uit cache - gedeeltelijk FILEBROWSER_CLEARPROFILE;Verwijder profiel FILEBROWSER_COLORLABEL_TOOLTIP;Kleur label\n\nGebruik keuzemenu of nSneltoets:\nShift-Ctrl-0 Geen kleur\nShift-Ctrl-1 Rood\nShift-Ctrl-2 Geel\nShift-Ctrl-3 Groen\nShift-Ctrl-4 Blauw\nShift-Ctrl-5 Paars FILEBROWSER_COPYPROFILE;Kopieer profiel @@ -905,6 +903,7 @@ PARTIALPASTE_VIGNETTING;Vignetteringscorrectie PARTIALPASTE_WAVELETGROUP;Wavelet verwerking PARTIALPASTE_WHITEBALANCE;Witbalans PREFERENCES_ADD;Toevoegen +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator randkleur PREFERENCES_APPLNEXTSTARTUP;herstart vereist PREFERENCES_AUTOMONPROFILE;Gebruik automatisch het standaard monitorprofiel \nvan het besturingsysteem PREFERENCES_BATCH_PROCESSING;Batch-verwerking @@ -914,16 +913,9 @@ PREFERENCES_BEHAVIOR;Gedrag PREFERENCES_BEHSETALL;Alles op 'Activeer' PREFERENCES_BEHSETALLHINT;Zet alle parameters in de Activeer mode.\nWijzigingen van parameters in de batch tool zijn absoluut. De actuele waarden worden gebruikt. PREFERENCES_BLACKBODY;Tungsten(wolfraam) -PREFERENCES_CACHECLEARALL;Wis alles -PREFERENCES_CACHECLEARPROFILES;Wis profielen -PREFERENCES_CACHECLEARTHUMBS;Wis miniaturen PREFERENCES_CACHEMAXENTRIES;Maximaal aantal elementen in cache PREFERENCES_CACHEOPTS;Cache-opties PREFERENCES_CACHETHUMBHEIGHT;Maximale hoogte miniaturen -PREFERENCES_CIEART;CIECAM02 optimalisatie -PREFERENCES_CIEART_FRAME;CIECAM02-Specifieke instellingen -PREFERENCES_CIEART_LABEL;Gebruik float precisie in plaats van double -PREFERENCES_CIEART_TOOLTIP;Indien aangezet worden CIECAM02 berekening uitgevoerd in het single-precision floating-point formaat in plaats van double-precision. Dit levert een iets hogere verwerkingssnelheid ten koste van een verwaarloosbaar verlies aan kwaliteit PREFERENCES_CLIPPINGIND;Indicatie over-/onderbelichting PREFERENCES_CLUTSCACHE;HaldCLUT cache PREFERENCES_CLUTSCACHE_LABEL;Maximum aantal cached Cluts @@ -940,7 +932,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Keys formaat PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Naam PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Pad naar programma of script -PREFERENCES_CUTOVERLAYBRUSH;Kleur uitsnedemasker PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -959,7 +950,6 @@ PREFERENCES_DIRSOFTWARE;Installatiemap PREFERENCES_EDITORLAYOUT;Bewerkingsvenster PREFERENCES_EXTERNALEDITOR;Externe editor PREFERENCES_FBROWSEROPTS;Opties bestandsnavigator -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Enkele rij navigator werkbalk (de-activeer voor lage resolutie) PREFERENCES_FILEFORMAT;Bestandstype PREFERENCES_FLATFIELDFOUND;Gevonden PREFERENCES_FLATFIELDSDIR;Vlakveldmap @@ -1014,7 +1004,6 @@ PREFERENCES_MONPROFILE;Standaard kleurprofiel PREFERENCES_MONPROFILE_WARNOSX;Als gevolg van MacOS beperkingen wordt alleen sRGB ondersteund. PREFERENCES_MULTITAB;Multi-tab: elke foto opent in nieuw tabvenster PREFERENCES_MULTITABDUALMON;Multi-tab, indien beschikbaar op tweede monitor -PREFERENCES_NAVGUIDEBRUSH;Navigator randkleur PREFERENCES_NAVIGATIONFRAME;Navigatie PREFERENCES_OUTDIR;Uitvoermap PREFERENCES_OUTDIRFOLDER;Sla op in map @@ -1049,13 +1038,10 @@ PREFERENCES_PRTPROFILE;Kleurprofiel PREFERENCES_PSPATH;Installatiemap Adobe Photoshop PREFERENCES_REMEMBERZOOMPAN;Onthoud zoom % en pan startpunt PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Onthoud het zoom % en pan startpunt van de huidige afbeelding als er een nieuwe afbeelding wordt geopend.\n\nDeze optie werkt alleen in "Single Editor Tab Mode" en wanneer "Demozaïekmethode van het voorbeeld <100% zoom" hetzelfde is als "Gelijk aan PP3". -PREFERENCES_SELECTFONT;Kies lettertype -PREFERENCES_SELECTFONT_COLPICKER;Font van de Kleurkiezer PREFERENCES_SELECTLANG;Selecteer taal -PREFERENCES_SELECTTHEME;Kies thema -PREFERENCES_SERIALIZE_TIFF_READ;Tiff Lees Instellingen -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serieel lezen van tiff bestanden -PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Als een map veel ongecomprimeerde tiff bestanden bevat dan versnelt deze optie het genereren van de miniaturen. +PREFERENCES_SERIALIZE_TIFF_READ;TIFF Lees Instellingen +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serieel lezen van TIFF bestanden +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Als een map veel ongecomprimeerde TIFF bestanden bevat dan versnelt deze optie het genereren van de miniaturen. PREFERENCES_SET;Activeer PREFERENCES_SHOWBASICEXIF;Toon standaard Exif-info PREFERENCES_SHOWDATETIME;Toon datum en tijd @@ -1219,11 +1205,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Horizontaal spiegelen TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nSneltoets:\n[ - Multi-tab Mode,\nAlt-[ - Enkel-tab Mode. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nSneltoets:\n] - Multi-tab Mode,\nAlt-] - Enkel-tab Mode. TP_COARSETRAF_TOOLTIP_VFLIP;Verticaal spiegelen -TP_COLORAPP_ADAPTSCENE;Opnameomgeving luminositeit -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminantie van de opnameomgeving (cd/m²).\n1) Berekend op basis van de Exif data:\nSluitertijd - ISO-waarde - Diafragma - Camera belichtingscompensatie.\n2) Berekend op basis van het raw witpunt en RT's Belichtingscompensatie -TP_COLORAPP_ADAPTVIEWING;Weergaveomgeving luminositeit (cd/m2) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminantie van de weergaveomgeving \n(gebruikelijk 16cd/m²) -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Als het keuzevakje is aangezet (aanbevolen), dan berekent RT de optimale waarde op basis van de Exif data.\nOm de waarde handmatig in te stellen moet het keuzevakje worden uitgezet TP_COLORAPP_ALGO;Algoritme TP_COLORAPP_ALGO_ALL;Alle TP_COLORAPP_ALGO_JC;Lichtheid + Chroma (JC) @@ -1253,8 +1234,6 @@ TP_COLORAPP_CURVEEDITOR3;Chroma curve TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Wijzigt ofwel chroma, verzadiging of kleurrijkheid.\n Het Histogram toont chromaticiteit (Lab) voor CIECAM wijzigingen.\nHet Histogram toont C,s,M na toepassing van CIECAM indien het selectievakje 'Toon CIECAM uitvoer' is aangezet.\n(C,s,M) worden niet getoond in het Hoofd histogram paneel. \nRaadpleeg het Histogram paneel voor de definitieve uitvoer TP_COLORAPP_DATACIE;CIECAM02 uitvoer histogram in de curven TP_COLORAPP_DATACIE_TOOLTIP;Indien aangezet, tonen de histogrammen van de CIECAM02 curven bij benadering de waarden/reeksen voor J of Q, en C, s of M na de CIECAM02 aanpassingen.\nDit beïnvloed niet het hoofd histogram paneel.\n\nIndien uitgezet tonen de histogrammen van de CIECAM02 curven de Lab waarden zoals deze waren voor de CIECAM02 aanpassingen -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Als het keuzevakje is aangezet (aanbevolen), dan berekent RT een optimale waarde. Deze wordt gebruikt door CAT02 en door CIECAM02.\nOm de waarden handmatig in te stellen moet het keuzevakje worden uitgezet (waarden groter dan 65 worden aanbevolen) -TP_COLORAPP_DEGREE_TOOLTIP;Hoeveelheid van CIE Chromatic Adaptation Transform 2002 TP_COLORAPP_GAMUT;Gamut controle (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Sta gamut controle toe in Lab mode TP_COLORAPP_HUE;Tint (h) @@ -1269,8 +1248,6 @@ TP_COLORAPP_MODEL;Witpunt Model TP_COLORAPP_MODEL_TOOLTIP;WB [RT] + [uitvoer]:\nRT's WB wordt gebruikt voor de opname, CIECAM02 wordt gezet op D50. Het uitvoerapparaat's wit gebruikt de instelling van Voorkeuren > Kleurbeheer\n\nWB [RT+CAT02] + [output]:\nRT's WB instellingen worden gebruikt door CAT02 en het uitvoerapparaat's wit gebruikt de waarde van de Voorkeuren. TP_COLORAPP_RSTPRO;Rode en Huidtinten bescherming TP_COLORAPP_RSTPRO_TOOLTIP;Rode en Huidtinten bescherming (schuifbalk en curven) -TP_COLORAPP_SHARPCIE;Verscherpen, Detailcontrast, Microcontrast & Randen met Q/C -TP_COLORAPP_SHARPCIE_TOOLTIP;Verscherpen, Detailcontrast, Microcontrast & Randen zullen CIECAM02 gebruiken wanneer dit is aangezet. TP_COLORAPP_SURROUND;Omgeving TP_COLORAPP_SURROUND_AVER;Gemmiddeld TP_COLORAPP_SURROUND_DARK;Donker @@ -1289,6 +1266,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;lichtheid TP_COLORAPP_TCMODE_SATUR;Verzadiging TP_COLORAPP_TONECIE;Tonemapping gebruik makend van CIECAM TP_COLORAPP_TONECIE_TOOLTIP;Indien uitgezet zal tonemapping plaats vinden in Lab.\nIndien aangezet zal tonemapping gebruik maken van CIECAM02.\nVoorwaarde is dat Tonemapping (Lab/CIECAM02) actief is. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminantie van de weergaveomgeving \n(gebruikelijk 16cd/m²) TP_COLORAPP_WBCAM;WB [RT+CAT02] + [uitvoer] TP_COLORAPP_WBRT;WB [RT] + [uitvoer] TP_COLORTONING_AB;o C/L @@ -1341,7 +1319,6 @@ TP_CROP_GUIDETYPE;Hulplijnen: TP_CROP_H;Hoogte TP_CROP_LABEL;Bijsnijden TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Selecteer gebied TP_CROP_W;Breedte TP_CROP_X;X TP_CROP_Y;Y @@ -1431,7 +1408,6 @@ TP_EPD_LABEL;Tonemapping (Lab/CIECAM02) TP_EPD_REWEIGHTINGITERATES;Herhaling TP_EPD_SCALE;Schaal TP_EPD_STRENGTH;Sterkte -TP_EPD_TOOLTIP;Tonemapping is mogelijk via Lab mode (standaard) of CIECAM02 mode.\n\nOm CIECAM02 Tonemapping mode te gebruiken moeten de volgende instellingen worden gekozen: \n1. CIECAM\n2. Algoritme="Helderheid + Kleurrijkheid (QM)"\n3. "Tonemapping gebruik makend van CIECAM02 helderheid (Q)" TP_EXPOSURE_AUTOLEVELS;Autom. niveaus TP_EXPOSURE_AUTOLEVELS_TIP;Activeer automatische niveaus\nActiveer Herstel Hoge lichten indien nodig. TP_EXPOSURE_BLACKLEVEL;Schaduwen @@ -1580,9 +1556,6 @@ TP_LENSGEOM_AUTOCROP;Automatisch bijsnijden TP_LENSGEOM_FILL;Automatisch uitvullen TP_LENSGEOM_LABEL;Objectief / Geometrie TP_LENSPROFILE_LABEL;Lenscorrectie Profielen -TP_LENSPROFILE_USECA;CA correctie -TP_LENSPROFILE_USEDIST;Lensvervorming correctie -TP_LENSPROFILE_USEVIGN;Vignettering correctie TP_NEUTRAL;Terugzetten TP_NEUTRAL_TIP;Alle belichtingsinstellingen naar 0 TP_PCVIGNETTE_FEATHER;Straal @@ -1710,7 +1683,6 @@ TP_RESIZE_WIDTH;Breedte TP_RETINEX_CONTEDIT_HSL;Histogram balans HSL TP_RETINEX_CONTEDIT_LAB;Histogram balans L*a*b* TP_RETINEX_CONTEDIT_LH;Tint balans -TP_RETINEX_CONTEDIT_MAP;Masker mixer TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminantie volgens luminantie L=f(L)\nCorrigeert ruwe data om halo's and artefacte te verminderen. TP_RETINEX_CURVEEDITOR_LH;Sterkte=f(H) @@ -1745,7 +1717,6 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Masker TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Laag -TP_RETINEX_MAP;Masker methode TP_RETINEX_MAP_GAUS;Gaussiaans masker TP_RETINEX_MAP_MAPP;Verscherp masker (wavelet gedeeltelijk) TP_RETINEX_MAP_MAPT;Verscherp masker (wavelet totaal) @@ -2077,9 +2048,17 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. !BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s +!CURVEEDITOR_CATMULLROM;Flexible !DONT_SHOW_AGAIN;Don't show this message again. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !EXIFFILTER_IMAGETYPE;Image type !EXIFPANEL_SHOWALL;Show all +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles +!GENERAL_CURRENT;Current !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider @@ -2108,14 +2087,32 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -2139,6 +2136,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -2183,20 +2181,17 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !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 -!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%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter @@ -2204,9 +2199,19 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -2214,15 +2219,15 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 !PREFERENCES_LANG;Language !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_PROFILESAVEBOTH;Save processing profile both to the cache and next to the input file !PREFERENCES_PROFILESAVELOCATION;Processing profile saving location -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -2243,15 +2248,40 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. !TP_DIRPYRDENOISE_LABEL;Noise Reduction !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors @@ -2263,6 +2293,15 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -2278,14 +2317,16 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAW_2PASS;1-pass+fast !TP_RAW_4PASS;3-pass+fast !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_BORDER;Border !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. !TP_RAW_PIXELSHIFTDMETHOD;Demosaic method for motion @@ -2297,9 +2338,11 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_RAW_RCD;RCD !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_GAINOFFS;Gain and Offset (brightness) !TP_RETINEX_GAINTRANSMISSION;Gain transmission !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. +!TP_RETINEX_MAP;Method !TP_SHARPENING_CONTRAST;Contrast threshold !TP_SHARPENMICRO_CONTRAST;Contrast threshold !TP_SOFTLIGHT_LABEL;Soft Light @@ -2307,5 +2350,6 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted +!TP_WBALANCE_PICKER;Pick diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 4a76fdcda..1fd3e18c1 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Oppskarping PARTIALPASTE_VIGNETTING;Vignetteringskorreksjon PARTIALPASTE_WHITEBALANCE;Hvitbalanse PREFERENCES_APPLNEXTSTARTUP;Endres ved neste oppstart -PREFERENCES_CACHECLEARALL;Slett alle -PREFERENCES_CACHECLEARPROFILES;Slett profiler -PREFERENCES_CACHECLEARTHUMBS;Slett thumbnails PREFERENCES_CACHEMAXENTRIES;Maksimalt antall cache oppføringer PREFERENCES_CACHEOPTS;Cache innstillinger PREFERENCES_CACHETHUMBHEIGHT;Maksimal Thumbnail Høyde @@ -274,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Lagre prosesseringsparametre til cachen PREFERENCES_PROFILESAVEINPUT;Lagre prosesseringsparametre i innfilen PREFERENCES_PSPATH;Adobe Photoshop installasjonsfolder PREFERENCES_SELECTLANG;Velg språk -PREFERENCES_SELECTTHEME;Velg tema PREFERENCES_SHOWBASICEXIF;Vis utvidet Exif-informasjon PREFERENCES_SHOWDATETIME;Vis dato og tid PREFERENCES_SHTHRESHOLD;Terskelverdi for markerte skygger @@ -334,7 +330,6 @@ TP_CROP_GTRULETHIRDS;Tredjedelsreglen TP_CROP_GUIDETYPE;Guidetype: TP_CROP_H;H TP_CROP_LABEL;Beskjæring -TP_CROP_SELECTCROP;Velg beskjæringsområde TP_CROP_W;B TP_CROP_X;x TP_CROP_Y;y @@ -429,9 +424,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !CURVEEDITOR_HIGHLIGHTS;Highlights @@ -448,6 +444,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -499,8 +499,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -569,6 +569,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open @@ -972,14 +973,32 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1003,6 +1022,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1073,10 +1093,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !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. -!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_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 @@ -1110,17 +1126,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1151,6 +1167,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1201,8 +1218,14 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1210,12 +1233,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1231,7 +1259,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1243,8 +1270,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1290,7 +1317,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1313,15 +1339,13 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done @@ -1331,7 +1355,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1387,7 +1410,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1451,11 +1474,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1466,6 +1485,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1485,8 +1505,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1498,14 +1516,13 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1525,11 +1542,9 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1543,6 +1558,25 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1575,11 +1609,17 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1659,7 +1699,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. @@ -1788,10 +1827,16 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1829,11 +1874,11 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1865,6 +1910,8 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1925,10 +1972,10 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1966,7 +2013,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2029,7 +2076,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2242,6 +2289,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index f54de5593..916ea2b90 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -96,8 +96,6 @@ FILEBROWSER_AUTOFLATFIELD;Automatyczne użycie klatki typu puste pole FILEBROWSER_BROWSEPATHBUTTONHINT;Należy kliknąć, aby przeglądać wybraną ścieżkę FILEBROWSER_BROWSEPATHHINT;Umożliwia przeglądanie wprowadzonej ścieżki\nCtrl-o zaznaczenie\nEnter, Ctrl-Enter (w menedżerze plików) przeglądanie\nSkróty:\n ~ - katalog domowy użytkownika\n ! - katalog z obrazami użytkownia FILEBROWSER_CACHE;Pamięć podręczna -FILEBROWSER_CACHECLEARFROMFULL;Czyszczenie pamięci podręcznej - pełne -FILEBROWSER_CACHECLEARFROMPARTIAL;Czyszczenie pamięci podręcznej - częściowe FILEBROWSER_CLEARPROFILE;Wyczyść profil FILEBROWSER_COLORLABEL_TOOLTIP;Kolorowe etykiety\n\nUżyj za pomocą rozwijanej listy lub skrótów:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Czerwona\nShift-Ctrl-2 Żółta\nShift-Ctrl-3 Zielona\nShift-Ctrl-4 Niebieska\nShift-Ctrl-5 Purpurowa FILEBROWSER_COPYPROFILE;Kopiuj profil @@ -669,6 +667,7 @@ PARTIALPASTE_VIBRANCE;Jaskrawość PARTIALPASTE_VIGNETTING;Korekcja winietowania PARTIALPASTE_WHITEBALANCE;Balans bieli PREFERENCES_ADD;Dodaj +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Kolor ramki Nawigatora PREFERENCES_APPLNEXTSTARTUP;wymaga ponownego uruchomienia PREFERENCES_AUTOMONPROFILE;Automatycznie użyj systemowego profilu monitora PREFERENCES_BATCH_PROCESSING;Przetwarzanie wsadowe @@ -678,15 +677,9 @@ PREFERENCES_BEHAVIOR;Zachowanie PREFERENCES_BEHSETALL;'Ustaw' wszystkie PREFERENCES_BEHSETALLHINT;Ustaw wszystkie narzędzia w tryb Ustaw.\nZmiany parametrów w panelu edycji zbiorczej zostaną traktowane jako absolutne, nie biorąc pod uwagę poprzednich wartości. PREFERENCES_BLACKBODY;Wolfram -PREFERENCES_CACHECLEARALL;Wyczyść wszystko -PREFERENCES_CACHECLEARPROFILES;Wyczyść profile -PREFERENCES_CACHECLEARTHUMBS;Wyczyść miniaturki PREFERENCES_CACHEMAXENTRIES;Maksymalna liczba wpisów w pamięci podręcznej PREFERENCES_CACHEOPTS;Opcje pamięci podręcznej PREFERENCES_CACHETHUMBHEIGHT;Maksymalna wysokość miniatury -PREFERENCES_CIEART;CIECAM02 optymalizacja -PREFERENCES_CIEART_LABEL;Użyj precyzję zmiennoprzecinkową zamiast podwójną. -PREFERENCES_CIEART_TOOLTIP;Gdy umożliwione, kalkulacje CIECAM02 są wykonywane w notacji zmiennoprzecinkowej o pojedyńczej precyzji zamiast podwójnej. Skraca to czas egzekucji kosztem nieistotnej zmiany w jakości. PREFERENCES_CLIPPINGIND;Pokazywanie obciętych prześwietleń/cieni PREFERENCES_CLUTSDIR;Folder obrazów HaldCLUT PREFERENCES_CUSTPROFBUILD;Zewnętrzny kreator profilów przetwarzania @@ -695,7 +688,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Rodzaj kluczy PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nazwa PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Ścieżka pliku wykonywalnego -PREFERENCES_CUTOVERLAYBRUSH;Kolor/przezroczystość maski kadrowania PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -714,7 +706,6 @@ PREFERENCES_DIRSOFTWARE;Katalog instalacyjny PREFERENCES_EDITORLAYOUT;Układ edytora PREFERENCES_EXTERNALEDITOR;Zewnętrzny edytor PREFERENCES_FBROWSEROPTS;Opcje przeglądarki plików -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Pojedynczy wiersz paska narzędzi (odznaczyć dla niskich rozdzielczości) PREFERENCES_FILEFORMAT;Format pliku PREFERENCES_FLATFIELDFOUND;Znaleziono PREFERENCES_FLATFIELDSDIR;Katalog z pustymi polami @@ -755,7 +746,6 @@ PREFERENCES_MENUOPTIONS;Opcje menu PREFERENCES_METADATA;Metadane PREFERENCES_MULTITAB;Tryb wielu zakładek PREFERENCES_MULTITABDUALMON;Tryb wielu zakładek (na drugim monitorze jeśli dostępny) -PREFERENCES_NAVGUIDEBRUSH;Kolor ramki Nawigatora PREFERENCES_OUTDIR;Katalog wyjściowy PREFERENCES_OUTDIRFOLDER;Zapisz do katalogu PREFERENCES_OUTDIRFOLDERHINT;Umieszcza zapisywane zdjęcia w wybranym katalogu @@ -776,9 +766,7 @@ PREFERENCES_PROFILESAVECACHE;Zapisz parametry przetwarzania w pamięci podręczn PREFERENCES_PROFILESAVEINPUT;Zapisz parametry przetwarzania obok pliku wejściowego PREFERENCES_PROPERTY;Własność PREFERENCES_PSPATH;Katalog w którym zainstalowany jest Adobe Photoshop -PREFERENCES_SELECTFONT;Wybierz czcionkę PREFERENCES_SELECTLANG;Wybierz język -PREFERENCES_SELECTTHEME;Wybierz temat PREFERENCES_SET;Ustaw PREFERENCES_SHOWBASICEXIF;Pokaż podstawowe dane Exif PREFERENCES_SHOWDATETIME;Pokaż datę i czas @@ -931,11 +919,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Odbij w poziomie TP_COARSETRAF_TOOLTIP_ROTLEFT;Obróć w lewo.\n\nSkróty:\n[ - Tryb wielu zakładek,\nAlt-[ - Tryb jednej zakładki. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Obróć w prawo.\n\nSkróty:\n] - Tryb wielu zakładek,\nAlt-] - Tryb jednej zakładki. TP_COARSETRAF_TOOLTIP_VFLIP;Odbij w pionie -TP_COLORAPP_ADAPTSCENE;Luminancji sceny -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Bezwzględna luminancja sceny (cd/m²).\n1)Obliczona za pomocą Exif:\nCzas naświetlania - ISO - Przysłona - Korekcja ekspozycji EV w aparacie.\n2)Obliczona również na podstawie punktu bieli raw oraz korekty ekspozycji w RawTherapee -TP_COLORAPP_ADAPTVIEWING;Luminancji widowni (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Bezwzględna luminancja widowni\n(zazwyczaj 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Jesli zaznaczone (polecamy), RawTherapee obliczy optymalną wartość na podstawie Exif.\nAby ustawic wartość ręcznie, należy wpierw odznaczyc pudło. TP_COLORAPP_ALGO;Algorytm TP_COLORAPP_ALGO_ALL;Wszystkie TP_COLORAPP_ALGO_JC;Światłość + Chroma (JC) @@ -965,8 +948,6 @@ TP_COLORAPP_CURVEEDITOR3;Krzywa koloru TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Ustawienie chromy, nasycenia bądź barwistości.\n\nPokazuje histogram chromatyczności (L*a*b*) przed CIECAM02.\nJeśli opcja "Pokaż histogramy wyjściowe CIECAM02 za krzywymi" jest włączona, pokazuje histogram C, s bądź M po CIECAM02.\n\nC, s oraz M nie są pokazywane w głównym histogramie.\nEfekt końcowy jest przedstawiony w głównym histogramie. TP_COLORAPP_DATACIE;Pokaż histogramy wyjściowe CIECAM02 za krzywymi TP_COLORAPP_DATACIE_TOOLTIP;Kiedy opcja jest włączona, histogramy za krzywymi CIECAM02 pokazują przybliżone wartości/zakresy J lub Q, oraz C, s lub M po korekcjach CIECAM02.\nTen wybór nie ma wpływu na główny histogram.\n\nKiedy opcja jest wyłączona, histogramy za krzywymi CIECAM02 pokazują wartości L*a*b* przed korekcjami CIECAM02. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Jeśli opcja jest zaznaczona (zalecane), RawTherapee kalkuluje wartość optymalną, która jest potem użyta przez CAT02 oraz przez całość CIECAM02.\nAby ustawić wartość ręcznie, odznacz wpierw opcję (wartości powyżej 65 zalecane). -TP_COLORAPP_DEGREE_TOOLTIP;Siła CIE Chromatic Adaptation Transform 2002 TP_COLORAPP_GAMUT;Kontrola gamma (L*a*b*). TP_COLORAPP_GAMUT_TOOLTIP;Włącz kontrolę gamma w trybie L*a*b*. TP_COLORAPP_HUE;Odcień (hue, h) @@ -981,8 +962,6 @@ TP_COLORAPP_MODEL;Model PB TP_COLORAPP_MODEL_TOOLTIP;Model punktu bieli.\n\nBB [RT] + [wyjściowy]:\nBalans bieli RawTherapee jest użyty dla sceny, CIECAM02 jest ustawione na D50, i balans bieli urządzenia wyjściowego ustawiony jest w Ustawieniach > Zarządzanie Kolorami\n\nBB [RT+CAT02] + [wyjściowe]:\nUstawienia balansu bieli RawTherapee są używane przez CAT02, i balans bieli urządzenia wyjściowego jest ustawione w Ustawieniach > Zarządzanie Kolorami. TP_COLORAPP_RSTPRO;Ochrona odcieni skóry i czerwieni TP_COLORAPP_RSTPRO_TOOLTIP;Ochrona odcieni skóry i czerwieni (suwaki i krzywe) -TP_COLORAPP_SHARPCIE;- -TP_COLORAPP_SHARPCIE_TOOLTIP;- TP_COLORAPP_SURROUND;Otoczenie TP_COLORAPP_SURROUND_AVER;Średnie TP_COLORAPP_SURROUND_DARK;Ciemne @@ -1001,6 +980,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Światłość TP_COLORAPP_TCMODE_SATUR;Nasycenie TP_COLORAPP_TONECIE;Tone mapping za pomocą jasności CIECAM02 (Q) TP_COLORAPP_TONECIE_TOOLTIP;Jeśli ta opcja jest wyłączona, tone mapping odbywa się w przestrzeni kolorów L*a*b*, zaś jeśli jest włączona, w przestrzeni kolorów CIECAM02.\nNarzędzie Tone Mapping musi być włączone aby to utawienie działało. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Bezwzględna luminancja widowni\n(zazwyczaj 16cd/m²). TP_COLORAPP_WBCAM;BB [RT+CAT02] + [wyjściowy] TP_COLORAPP_WBRT;BB [RT] + [wyjściowy] TP_COLORTONING_AB;o C/L @@ -1050,7 +1030,6 @@ TP_CROP_GUIDETYPE;Typ pomocy: TP_CROP_H;Wysokość TP_CROP_LABEL;Kadrowanie TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Wybierz kadr TP_CROP_W;Szerokość TP_CROP_X;X TP_CROP_Y;Y @@ -1106,7 +1085,6 @@ TP_EPD_LABEL;Tone Mapping TP_EPD_REWEIGHTINGITERATES;Powtarzanie rozważania TP_EPD_SCALE;Skala TP_EPD_STRENGTH;Siła -TP_EPD_TOOLTIP;Tone mapping może się odbyć w przestrzeni kolorów L*a*b* (domyślnie) oraz CIECAM02.\n\nAby wykonać tone mapping w przestrzeni CIECAM02 należy włączyć następujące ustawienia:\n1. CIECAM02\n2. Algorytm="Jasność + Barwistość (QM)"\n3. "Tone mapping za pomocą jasności CIECAM02 (Q)" TP_EXPOSURE_AUTOLEVELS;Wyrównaj poziomy TP_EXPOSURE_AUTOLEVELS_TIP;Dokonaj automatycznego ustawienia parametrów ekspozycji na podstawie analizy obrazu TP_EXPOSURE_BLACKLEVEL;Czerń @@ -1241,9 +1219,6 @@ TP_LENSGEOM_AUTOCROP;Auto-kadrowanie TP_LENSGEOM_FILL;Auto-wypełnienie TP_LENSGEOM_LABEL;Obiektyw / Geometria TP_LENSPROFILE_LABEL;Profil korekcji obiektywu LCP -TP_LENSPROFILE_USECA;Korekja aberacji chromatycznej -TP_LENSPROFILE_USEDIST;Korekcja dystorsji -TP_LENSPROFILE_USEVIGN;Korekcja winietowania TP_NEUTRAL_TIP;Zresetuj ustawienia do wartości neutralnych.\nDziała na tych samych suwakach na których funkcja "Wyrównaj poziomy" działa, niezależnie od tego czy funkcja ta była użyta czy nie. TP_PCVIGNETTE_FEATHER;Wtapianie TP_PCVIGNETTE_FEATHER_TOOLTIP;Wtapianie:\n0 = tylko brzegi,\n50 = w pół drogi do środka,\n100 = aż do środka. @@ -1437,12 +1412,17 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1456,6 +1436,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality. !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default !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. @@ -1468,6 +1450,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !FILECHOOSER_FILTER_TIFF;TIFF files !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... @@ -1656,14 +1639,32 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1687,6 +1688,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1756,23 +1758,20 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !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. -!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_BUTTON_SENDTOEDITOR;Edit image in external editor !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode @@ -1786,12 +1785,22 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1804,6 +1813,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1838,15 +1848,13 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1868,25 +1876,50 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1945,6 +1978,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1961,10 +2003,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) @@ -1977,6 +2019,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2023,10 +2067,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !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 -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2064,7 +2108,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2110,7 +2154,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 @@ -2274,5 +2318,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !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". diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index d3e62a777..6b18c604e 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -96,8 +96,6 @@ FILEBROWSER_AUTOFLATFIELD;Automatyczne uzycie klatki typu puste pole FILEBROWSER_BROWSEPATHBUTTONHINT;Nalezy kliknac, aby przegladac wybrana sciezke FILEBROWSER_BROWSEPATHHINT;Umozliwia przegladanie wprowadzonej sciezki\nCtrl-o zaznaczenie\nEnter, Ctrl-Enter (w menedzerze plikow) przegladanie\nSkroty:\n ~ - katalog domowy uzytkownika\n ! - katalog z obrazami uzytkownia FILEBROWSER_CACHE;Pamiec podreczna -FILEBROWSER_CACHECLEARFROMFULL;Czyszczenie pamieci podrecznej - pelne -FILEBROWSER_CACHECLEARFROMPARTIAL;Czyszczenie pamieci podrecznej - czesciowe FILEBROWSER_CLEARPROFILE;Wyczysc profil FILEBROWSER_COLORLABEL_TOOLTIP;Kolorowe etykiety\n\nUzyj za pomoca rozwijanej listy lub skrotow:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Czerwona\nShift-Ctrl-2 Zolta\nShift-Ctrl-3 Zielona\nShift-Ctrl-4 Niebieska\nShift-Ctrl-5 Purpurowa FILEBROWSER_COPYPROFILE;Kopiuj profil @@ -669,6 +667,7 @@ PARTIALPASTE_VIBRANCE;Jaskrawosc PARTIALPASTE_VIGNETTING;Korekcja winietowania PARTIALPASTE_WHITEBALANCE;Balans bieli PREFERENCES_ADD;Dodaj +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Kolor ramki Nawigatora PREFERENCES_APPLNEXTSTARTUP;wymaga ponownego uruchomienia PREFERENCES_AUTOMONPROFILE;Automatycznie uzyj systemowego profilu monitora PREFERENCES_BATCH_PROCESSING;Przetwarzanie wsadowe @@ -678,15 +677,9 @@ PREFERENCES_BEHAVIOR;Zachowanie PREFERENCES_BEHSETALL;'Ustaw' wszystkie PREFERENCES_BEHSETALLHINT;Ustaw wszystkie narzedzia w tryb Ustaw.\nZmiany parametrow w panelu edycji zbiorczej zostana traktowane jako absolutne, nie biorac pod uwage poprzednich wartosci. PREFERENCES_BLACKBODY;Wolfram -PREFERENCES_CACHECLEARALL;Wyczysc wszystko -PREFERENCES_CACHECLEARPROFILES;Wyczysc profile -PREFERENCES_CACHECLEARTHUMBS;Wyczysc miniaturki PREFERENCES_CACHEMAXENTRIES;Maksymalna liczba wpisow w pamieci podrecznej PREFERENCES_CACHEOPTS;Opcje pamieci podrecznej PREFERENCES_CACHETHUMBHEIGHT;Maksymalna wysokosc miniatury -PREFERENCES_CIEART;CIECAM02 optymalizacja -PREFERENCES_CIEART_LABEL;Uzyj precyzje zmiennoprzecinkowa zamiast podwojna. -PREFERENCES_CIEART_TOOLTIP;Gdy umozliwione, kalkulacje CIECAM02 sa wykonywane w notacji zmiennoprzecinkowej o pojedynczej precyzji zamiast podwojnej. Skraca to czas egzekucji kosztem nieistotnej zmiany w jakosci. PREFERENCES_CLIPPINGIND;Pokazywanie obcietych przeswietlen/cieni PREFERENCES_CLUTSDIR;Folder obrazow HaldCLUT PREFERENCES_CUSTPROFBUILD;Zewnetrzny kreator profilow przetwarzania @@ -695,7 +688,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Rodzaj kluczy PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nazwa PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Sciezka pliku wykonywalnego -PREFERENCES_CUTOVERLAYBRUSH;Kolor/przezroczystosc maski kadrowania PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -714,7 +706,6 @@ PREFERENCES_DIRSOFTWARE;Katalog instalacyjny PREFERENCES_EDITORLAYOUT;Uklad edytora PREFERENCES_EXTERNALEDITOR;Zewnetrzny edytor PREFERENCES_FBROWSEROPTS;Opcje przegladarki plikow -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Pojedynczy wiersz paska narzedzi (odznaczyc dla niskich rozdzielczosci) PREFERENCES_FILEFORMAT;Format pliku PREFERENCES_FLATFIELDFOUND;Znaleziono PREFERENCES_FLATFIELDSDIR;Katalog z pustymi polami @@ -755,7 +746,6 @@ PREFERENCES_MENUOPTIONS;Opcje menu PREFERENCES_METADATA;Metadane PREFERENCES_MULTITAB;Tryb wielu zakladek PREFERENCES_MULTITABDUALMON;Tryb wielu zakladek (na drugim monitorze jesli dostepny) -PREFERENCES_NAVGUIDEBRUSH;Kolor ramki Nawigatora PREFERENCES_OUTDIR;Katalog wyjsciowy PREFERENCES_OUTDIRFOLDER;Zapisz do katalogu PREFERENCES_OUTDIRFOLDERHINT;Umieszcza zapisywane zdjecia w wybranym katalogu @@ -776,9 +766,7 @@ PREFERENCES_PROFILESAVECACHE;Zapisz parametry przetwarzania w pamieci podrecznej PREFERENCES_PROFILESAVEINPUT;Zapisz parametry przetwarzania obok pliku wejsciowego PREFERENCES_PROPERTY;Wlasnosc PREFERENCES_PSPATH;Katalog w ktorym zainstalowany jest Adobe Photoshop -PREFERENCES_SELECTFONT;Wybierz czcionke PREFERENCES_SELECTLANG;Wybierz jezyk -PREFERENCES_SELECTTHEME;Wybierz temat PREFERENCES_SET;Ustaw PREFERENCES_SHOWBASICEXIF;Pokaz podstawowe dane Exif PREFERENCES_SHOWDATETIME;Pokaz date i czas @@ -931,11 +919,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Odbij w poziomie TP_COARSETRAF_TOOLTIP_ROTLEFT;Obroc w lewo.\n\nSkroty:\n[ - Tryb wielu zakladek,\nAlt-[ - Tryb jednej zakladki. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Obroc w prawo.\n\nSkroty:\n] - Tryb wielu zakladek,\nAlt-] - Tryb jednej zakladki. TP_COARSETRAF_TOOLTIP_VFLIP;Odbij w pionie -TP_COLORAPP_ADAPTSCENE;Luminancji sceny -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Bezwzgledna luminancja sceny (cd/m²).\n1)Obliczona za pomoca Exif:\nCzas naswietlania - ISO - Przyslona - Korekcja ekspozycji EV w aparacie.\n2)Obliczona rowniez na podstawie punktu bieli raw oraz korekty ekspozycji w RawTherapee -TP_COLORAPP_ADAPTVIEWING;Luminancji widowni (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Bezwzgledna luminancja widowni\n(zazwyczaj 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Jesli zaznaczone (polecamy), RawTherapee obliczy optymalna wartosc na podstawie Exif.\nAby ustawic wartosc recznie, nalezy wpierw odznaczyc pudlo. TP_COLORAPP_ALGO;Algorytm TP_COLORAPP_ALGO_ALL;Wszystkie TP_COLORAPP_ALGO_JC;Swiatlosc + Chroma (JC) @@ -965,8 +948,6 @@ TP_COLORAPP_CURVEEDITOR3;Krzywa koloru TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Ustawienie chromy, nasycenia badz barwistosci.\n\nPokazuje histogram chromatycznosci (L*a*b*) przed CIECAM02.\nJesli opcja "Pokaz histogramy wyjsciowe CIECAM02 za krzywymi" jest wlaczona, pokazuje histogram C, s badz M po CIECAM02.\n\nC, s oraz M nie sa pokazywane w glownym histogramie.\nEfekt koncowy jest przedstawiony w glownym histogramie. TP_COLORAPP_DATACIE;Pokaz histogramy wyjsciowe CIECAM02 za krzywymi TP_COLORAPP_DATACIE_TOOLTIP;Kiedy opcja jest wlaczona, histogramy za krzywymi CIECAM02 pokazuja przyblizone wartosci/zakresy J lub Q, oraz C, s lub M po korekcjach CIECAM02.\nTen wybor nie ma wplywu na glowny histogram.\n\nKiedy opcja jest wylaczona, histogramy za krzywymi CIECAM02 pokazuja wartosci L*a*b* przed korekcjami CIECAM02. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Jesli opcja jest zaznaczona (zalecane), RawTherapee kalkuluje wartosc optymalna, ktora jest potem uzyta przez CAT02 oraz przez calosc CIECAM02.\nAby ustawic wartosc recznie, odznacz wpierw opcje (wartosci powyzej 65 zalecane). -TP_COLORAPP_DEGREE_TOOLTIP;Sila CIE Chromatic Adaptation Transform 2002 TP_COLORAPP_GAMUT;Kontrola gamma (L*a*b*). TP_COLORAPP_GAMUT_TOOLTIP;Wlacz kontrole gamma w trybie L*a*b*. TP_COLORAPP_HUE;Odcien (hue, h) @@ -981,8 +962,6 @@ TP_COLORAPP_MODEL;Model PB TP_COLORAPP_MODEL_TOOLTIP;Model punktu bieli.\n\nBB [RT] + [wyjsciowy]:\nBalans bieli RawTherapee jest uzyty dla sceny, CIECAM02 jest ustawione na D50, i balans bieli urzadzenia wyjsciowego ustawiony jest w Ustawieniach > Zarzadzanie Kolorami\n\nBB [RT+CAT02] + [wyjsciowe]:\nUstawienia balansu bieli RawTherapee sa uzywane przez CAT02, i balans bieli urzadzenia wyjsciowego jest ustawione w Ustawieniach > Zarzadzanie Kolorami. TP_COLORAPP_RSTPRO;Ochrona odcieni skory i czerwieni TP_COLORAPP_RSTPRO_TOOLTIP;Ochrona odcieni skory i czerwieni (suwaki i krzywe) -TP_COLORAPP_SHARPCIE;- -TP_COLORAPP_SHARPCIE_TOOLTIP;- TP_COLORAPP_SURROUND;Otoczenie TP_COLORAPP_SURROUND_AVER;Srednie TP_COLORAPP_SURROUND_DARK;Ciemne @@ -1001,6 +980,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Swiatlosc TP_COLORAPP_TCMODE_SATUR;Nasycenie TP_COLORAPP_TONECIE;Tone mapping za pomoca jasnosci CIECAM02 (Q) TP_COLORAPP_TONECIE_TOOLTIP;Jesli ta opcja jest wylaczona, tone mapping odbywa sie w przestrzeni kolorow L*a*b*, zas jesli jest wlaczona, w przestrzeni kolorow CIECAM02.\nNarzedzie Tone Mapping musi byc wlaczone aby to utawienie dzialalo. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Bezwzgledna luminancja widowni\n(zazwyczaj 16cd/m²). TP_COLORAPP_WBCAM;BB [RT+CAT02] + [wyjsciowy] TP_COLORAPP_WBRT;BB [RT] + [wyjsciowy] TP_COLORTONING_AB;o C/L @@ -1050,7 +1030,6 @@ TP_CROP_GUIDETYPE;Typ pomocy: TP_CROP_H;Wysokosc TP_CROP_LABEL;Kadrowanie TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Wybierz kadr TP_CROP_W;Szerokosc TP_CROP_X;X TP_CROP_Y;Y @@ -1106,7 +1085,6 @@ TP_EPD_LABEL;Tone Mapping TP_EPD_REWEIGHTINGITERATES;Powtarzanie rozwazania TP_EPD_SCALE;Skala TP_EPD_STRENGTH;Sila -TP_EPD_TOOLTIP;Tone mapping moze sie odbyc w przestrzeni kolorow L*a*b* (domyslnie) oraz CIECAM02.\n\nAby wykonac tone mapping w przestrzeni CIECAM02 nalezy wlaczyc nastepujace ustawienia:\n1. CIECAM02\n2. Algorytm="Jasnosc + Barwistosc (QM)"\n3. "Tone mapping za pomoca jasnosci CIECAM02 (Q)" TP_EXPOSURE_AUTOLEVELS;Wyrownaj poziomy TP_EXPOSURE_AUTOLEVELS_TIP;Dokonaj automatycznego ustawienia parametrow ekspozycji na podstawie analizy obrazu TP_EXPOSURE_BLACKLEVEL;Czern @@ -1241,9 +1219,6 @@ TP_LENSGEOM_AUTOCROP;Auto-kadrowanie TP_LENSGEOM_FILL;Auto-wypelnienie TP_LENSGEOM_LABEL;Obiektyw / Geometria TP_LENSPROFILE_LABEL;Profil korekcji obiektywu LCP -TP_LENSPROFILE_USECA;Korekja aberacji chromatycznej -TP_LENSPROFILE_USEDIST;Korekcja dystorsji -TP_LENSPROFILE_USEVIGN;Korekcja winietowania TP_NEUTRAL_TIP;Zresetuj ustawienia do wartosci neutralnych.\nDziala na tych samych suwakach na ktorych funkcja "Wyrownaj poziomy" dziala, niezaleznie od tego czy funkcja ta byla uzyta czy nie. TP_PCVIGNETTE_FEATHER;Wtapianie TP_PCVIGNETTE_FEATHER_TOOLTIP;Wtapianie:\n0 = tylko brzegi,\n50 = w pol drogi do srodka,\n100 = az do srodka. @@ -1437,12 +1412,17 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1456,6 +1436,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality. !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default !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. @@ -1468,6 +1450,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !FILECHOOSER_FILTER_TIFF;TIFF files !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... @@ -1656,14 +1639,32 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1687,6 +1688,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1756,23 +1758,20 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !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. -!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_BUTTON_SENDTOEDITOR;Edit image in external editor !MAIN_MSG_TOOMANYOPENEDITORS;Too many open editors.\nPlease close an editor to continue. !MAIN_TAB_ADVANCED;Advanced !MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode @@ -1786,12 +1785,22 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1804,6 +1813,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1838,15 +1848,13 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1868,25 +1876,50 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_AFT;After Black-and-White !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1945,6 +1978,15 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1961,10 +2003,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) @@ -1977,6 +2019,8 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2023,10 +2067,10 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !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 -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2064,7 +2108,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2110,7 +2154,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 @@ -2274,5 +2318,6 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !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". diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 7acb91cce..1b25b43dc 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -113,8 +113,6 @@ FILEBROWSER_AUTOFLATFIELD;Flat-field automático FILEBROWSER_BROWSEPATHBUTTONHINT;Clique para navegar até o caminho escolhido. FILEBROWSER_BROWSEPATHHINT;Digite um caminho para navegar até.\n\nAtalhos do teclado:\nCtrl-o para focar na caixa de texto do caminho.\nEnter / Ctrl-Enter para navegar lá;\nEsc para limpar as alterações.\nShift-Esc para remover o foco.\n\nAtalhos do caminho:\n~ - diretório home do usuário.\n! - diretório de fotos do usuário FILEBROWSER_CACHE;Cache -FILEBROWSER_CACHECLEARFROMFULL;Limpeza do cache - completa -FILEBROWSER_CACHECLEARFROMPARTIAL;Limpeza do cache - partcial FILEBROWSER_CLEARPROFILE;Perfil de limpeza FILEBROWSER_COLORLABEL_TOOLTIP;Etiqueta de cor.\n\nUse o menu suspenso ou atalhos:\nShift-Ctrl-0 Sem Cor\nShift-Ctrl-1 Vermelho\nShift-Ctrl-2 Amarelo\nShift-Ctrl-3 Verde\nShift-Ctrl-4 Azul\nShift-Ctrl-5 Roxo FILEBROWSER_COPYPROFILE;Copiar perfil @@ -719,7 +717,6 @@ HISTORY_MSG_485;Correção de Lente HISTORY_MSG_486;Correção de Lente - Câmera HISTORY_MSG_487;Correção de Lente - Lente HISTORY_MSG_488;Compressão de Amplitude Dinâmica(DRC) -HISTORY_MSG_489;DRC - Limite HISTORY_MSG_490;DRC - Montante HISTORY_MSG_491;Balanço de Branco HISTORY_MSG_492;Curvas RGB @@ -838,9 +835,6 @@ IPTCPANEL_TITLE;Título IPTCPANEL_TITLEHINT;Digite um nome curto e legível para a imagem, pode ser o nome do arquivo. IPTCPANEL_TRANSREFERENCE;Job ID IPTCPANEL_TRANSREFERENCEHINT;Digite um número ou identificador necessário para controle ou rastreamento do fluxo de trabalho. -LENSPROFILE_CORRECTION_AUTOMATCH;Parâmetros de correção de correspondência automática -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 @@ -911,7 +905,7 @@ MAIN_TOOLTIP_PREVIEWFOCUSMASK;Pré-visualize a Máscara de Foco.\nAtalho: MAIN_TOOLTIP_PREVIEWG;Pré-visualize o Canal verde.\nAtalho: g MAIN_TOOLTIP_PREVIEWL;Pré-visualize a Luminosidade.\nAtalho: v\n\n0.299*R + 0.587*G + 0.114*B MAIN_TOOLTIP_PREVIEWR;Pré-visualize o Canal vermelho.\nAtalho: r -MAIN_TOOLTIP_PREVIEWSHARPMASK;Pré-visualize a Máscara de Contraste de Nitidez.\nAtalho: Nenhum\n\nSó funciona quando a nitidez e o zoom estão ativados >= 100%. +MAIN_TOOLTIP_PREVIEWSHARPMASK;Pré-visualize a Máscara de Contraste de Nitidez.\nAtalho: p\n\nSó funciona quando a nitidez e o zoom estão ativados >= 100%. MAIN_TOOLTIP_QINFO;Informação rápida na imagem.\nAtalho: i MAIN_TOOLTIP_SHOWHIDELP1;Mostrar/Ocultar o painel esquerdo.\nShortcut: l MAIN_TOOLTIP_SHOWHIDERP1;Mostrar/Ocultar o painel direito.\nAtalho: Alt-l @@ -1012,9 +1006,9 @@ PARTIALPASTE_VIBRANCE;Vibração PARTIALPASTE_VIGNETTING;Correção de vinheta PARTIALPASTE_WHITEBALANCE;Balanço de branco PREFERENCES_ADD;Adicionar +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Cor do guia do navegador PREFERENCES_APPLNEXTSTARTUP;é necessário reiniciar PREFERENCES_AUTOMONPROFILE;Usar o perfil de cores do monitor principal do sistema operacional -PREFERENCES_AUTOSAVE_TP_OPEN;Salvar automaticamente ferramentas recolhidas/expandidas\nestado antes de sair PREFERENCES_BATCH_PROCESSING;Processamento em Lote PREFERENCES_BEHADDALL;Tudo para 'Adicionar' PREFERENCES_BEHADDALLHINT;Definir todos os parâmetros para o Adicionar modo.\nAjustes de parâmetros no painel de ferramentas de lote serão deltas para os valores armazenados. @@ -1022,9 +1016,6 @@ PREFERENCES_BEHAVIOR;Comportamento PREFERENCES_BEHSETALL;Tudo para 'Configurar' PREFERENCES_BEHSETALLHINT;Definir todos os parâmetros para o Configurar modo.\nAjustes de parâmetros no painel de ferramentas de lote serão absoluto, os valores reais serão exibidos. PREFERENCES_BLACKBODY;Tungstênio -PREFERENCES_CACHECLEARALL;Limpar Tudo -PREFERENCES_CACHECLEARPROFILES;Limpar Perfis de Processamento -PREFERENCES_CACHECLEARTHUMBS;Limpar Miniaturas PREFERENCES_CACHEMAXENTRIES;Número máximo de entradas de cache PREFERENCES_CACHEOPTS;Opções de Cache PREFERENCES_CACHETHUMBHEIGHT;Altura máxima da miniatura @@ -1050,7 +1041,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Formato de chaves PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Nome PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;ID da Tag PREFERENCES_CUSTPROFBUILDPATH;Caminho executável -PREFERENCES_CUTOVERLAYBRUSH;Cor da máscara de corte/transparência PREFERENCES_D50;Configurações no menu principal PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -1072,7 +1062,6 @@ PREFERENCES_EDITORCMDLINE;Linha de comando personalizada PREFERENCES_EDITORLAYOUT;Layout do Editor PREFERENCES_EXTERNALEDITOR;Editor Externo PREFERENCES_FBROWSEROPTS;Navegador de Arquivos / Opções de Miniaturas -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Barra de ferramentas do navegador de arquivos de linha única\n(desmarque para exibição de baixa resolução) PREFERENCES_FILEFORMAT;Formato de arquivo PREFERENCES_FLATFIELDFOUND;Encontrado PREFERENCES_FLATFIELDSDIR;Diretório de campos planos @@ -1129,7 +1118,6 @@ PREFERENCES_MONPROFILE;Perfil de cor padrão PREFERENCES_MONPROFILE_WARNOSX;Devido às limitações do MacOS, apenas o sRGB é suportado. PREFERENCES_MULTITAB;Modo de Mútiplas Abas do Editor PREFERENCES_MULTITABDUALMON;Múltiplas Abas do Editor no Modo de Janela Própria -PREFERENCES_NAVGUIDEBRUSH;Cor do guia do navegador PREFERENCES_NAVIGATIONFRAME;Navegação PREFERENCES_OUTDIR;Diretório de Saída PREFERENCES_OUTDIRFOLDER;Salvar na pasta @@ -1167,13 +1155,10 @@ PREFERENCES_PSPATH;Diretório de instalação do Adobe Photoshop PREFERENCES_REMEMBERZOOMPAN;Lembre-se de zoom % e compensar pan PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Lembre-se do zoom % e de compensar o pan da imagem atual ao abrir uma nova imagem.\n\nEsta opção só funciona em "Modo da Aba do Editor Único" e quando "o método Demosaicing utilizado para a pré-visualização em <100% zoom" está definido como "Como no PP3". PREFERENCES_SAVE_TP_OPEN_NOW;Salvar ferramentas no estado recolhidas/expandididas agora -PREFERENCES_SELECTFONT;Selecione a fonte principal -PREFERENCES_SELECTFONT_COLPICKER;Selecione a fonte do Seletor de Cor PREFERENCES_SELECTLANG;Selecione linguagem -PREFERENCES_SELECTTHEME;Selecione tema -PREFERENCES_SERIALIZE_TIFF_READ;Configurações de leitura tiff -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize a leitura de arquivos tiff -PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Ao trabalhar com pastas cheias de arquivos tiff não compactados, ativar essa opção pode aumentar o desempenho da geração de miniaturas. +PREFERENCES_SERIALIZE_TIFF_READ;Configurações de leitura TIFF +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize a leitura de arquivos TIFF +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Ao trabalhar com pastas cheias de arquivos TIFF não compactados, ativar essa opção pode aumentar o desempenho da geração de miniaturas. PREFERENCES_SET;Configuração PREFERENCES_SHOWBASICEXIF;Mostrar informações Exif básicas PREFERENCES_SHOWDATETIME;Mostrar data e hora @@ -1193,7 +1178,6 @@ PREFERENCES_TAB_DYNAMICPROFILE;Regras de Perfil Dinâmico PREFERENCES_TAB_GENERAL;Geral PREFERENCES_TAB_IMPROC;Processamento de Imagem PREFERENCES_TAB_SOUND;Sons -PREFERENCES_THEME;Tema PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Visualização JPEG incorporada PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Imagem para mostrar PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Renderização raw neutra @@ -1357,11 +1341,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Girar horizontalmente. TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotacione à esquerda.\n\nAtalhos:\n[ - Modo de Guias do Editor Múltiplo,\nAlt-[ - Modo de Guia do Editor Único. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotacione à direita.\n\nAtalhos:\n] - Modo de Guias do Editor Múltiplo,\nAlt-] - Modo de Guia do Editor Único. TP_COARSETRAF_TOOLTIP_VFLIP;Girar verticalmente. -TP_COLORAPP_ADAPTSCENE;Luminância absoluta da cena -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Luminância absoluta do ambiente da cena (cd/m²).\n1) Calculada a partir dos dados Exif:\nVelocidade do obturador - velocidade ISO - número F - correção de exposição da câmera.\n2) Calculado a partir do ponto branco raw e do controle deslizante de Compensação de Exposição do RT. -TP_COLORAPP_ADAPTVIEWING;Visualizando luminância absoluta (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Luminância absoluta do ambiente de visualização\n(usualmente 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Se a caixa de seleção estiver marcada (recommendado) RawTherapee calcula um valor ótimo a partir dos dados Exif.\nPara definir o valor manualmente, desmarque a caixa de seleção primeiro. TP_COLORAPP_ALGO;Algorimo TP_COLORAPP_ALGO_ALL;Tudo TP_COLORAPP_ALGO_JC;Claridade + Croma (JC) @@ -1391,8 +1370,6 @@ TP_COLORAPP_CURVEEDITOR3;Curva de cor TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Ajustar croma, saturação ou colorido.\n\nMostra o histograma da cromaticidade (L*a*b*) antes de CIECAM02.\nSe a caixa de seleção "Mostrar histogramas de saída do CIECAM02 em curvas" estiver ativada, mostra o histograma de C, s ou M depois de CIECAM02.\n\nC, s e M não são mostrados no painel principal do histograma.\nPara a saída final, consulte o painel principal do histograma. TP_COLORAPP_DATACIE;Histogramas de saída em curvas do CIECAM02 TP_COLORAPP_DATACIE_TOOLTIP;Quando ativado, os histogramas em curvas do CIECAM02 mostram valores/intervalos aproximados para J ou Q, e C, s ou M após os ajustes do CIECAM02.\nEsta seleção não afeta o painel principal do histograma.\n\nQuando desativado, os histogramas em curvas do CIECAM02 mostram L*a*b* valores antes dos ajustes do CIECAM02. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Se a caixa de seleção estiver marcada (recomendado), RawTherapee calcula um valor ótimo, que será usado pelo CAT02, e também para todo o CIECAM02.\nPara definir o valor manualmente, primeiro desmarque a caixa de seleção (valores acima de 65 são recomendados). -TP_COLORAPP_DEGREE_TOOLTIP;Quantidade de Adaptação Cromática CIE Transformar 2002. TP_COLORAPP_FREE;Temp+verde livre + CAT02 + [saída] TP_COLORAPP_GAMUT;Controle Gamut (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Permitir controle gamut no modo L*a*b*. @@ -1410,8 +1387,6 @@ TP_COLORAPP_NEUTRAL;Restaurar TP_COLORAPP_NEUTRAL_TIP;Restaurar todas as caixas de seleção e curvas dos controles deslizantes para seus valores padrão TP_COLORAPP_RSTPRO;Proteção vermelho e de tons de pele TP_COLORAPP_RSTPRO_TOOLTIP;Vermelho & proteção de tons de pele afeta os controles deslizantes e as curvas. -TP_COLORAPP_SHARPCIE;--sem uso-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--sem uso-- TP_COLORAPP_SURROUND;Borda TP_COLORAPP_SURROUND_AVER;Média TP_COLORAPP_SURROUND_DARK;Escuro @@ -1431,11 +1406,9 @@ TP_COLORAPP_TCMODE_SATUR;Saturação TP_COLORAPP_TEMP_TOOLTIP;Para selecionar um iluminante, defina sempre Matiz=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 TP_COLORAPP_TONECIE;Mapeamento de tom usando CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Se esta opção estiver desativada, o mapeamento de tom é feito no espaço L*a*b*.\nSe esta opção estiver habilitada, o mapeamento de tom é feito usando CIECAM02.\nA ferramenta de Mapeamento de Tom deve estar ativada para que esta configuração tenha efeito. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminância absoluta do ambiente de visualização\n(usualmente 16cd/m²). TP_COLORAPP_WBCAM;WB [RT+CAT02] + [saída] TP_COLORAPP_WBRT;WB [RT] + [saída] -TP_COLORAPP_YB;Yb% (média luminância) -TP_COLORAPP_YBSCENE;Yb% (média luminância) -TP_COLORAPP_YBSCENE_TOOLTIP;Se "auto" estiver ativado, Yb é calculado a partir do valor médio da luminância real da imagem TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;Automático TP_COLORTONING_BALANCE;Balanço @@ -1488,7 +1461,6 @@ TP_CROP_GUIDETYPE;Tipo de guia: TP_CROP_H;Altura TP_CROP_LABEL;Cortar TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Selecione para Cortar TP_CROP_W;Largura TP_CROP_X;X TP_CROP_Y;Y @@ -1578,7 +1550,6 @@ TP_EPD_LABEL;Mapeamento de Tom TP_EPD_REWEIGHTINGITERATES;Reponderando iterações TP_EPD_SCALE;Escala TP_EPD_STRENGTH;Intensidade -TP_EPD_TOOLTIP;O mapeamento de tom é possível no modo L*a*b* (padão) e no modo CIECAM02.\n\nQuando no modo L*a*b*, o mapeamento de tom também pode ser usado na imagem residual da ferramenta de Níveis de Wavelet.\n\nPara ativar o modo de mapeamento de tom CIECAM02, habilite as seguintes configurações:\n1. CIECAM02\n2. Algorítimo = "Brilho + Colorido (QM)"\n3. "Mapeamento de tom usando o brilho do CIECAM02 (Q)" TP_EXPOSURE_AUTOLEVELS;Níveis Automáticos TP_EXPOSURE_AUTOLEVELS_TIP;Alterna a execução dos Níveis Automáticos para definir automaticamente os valores do controle deslizante de Exposição baseado numa análise de imagem.\nHabilita a Reconstrução de Realce se necessário. TP_EXPOSURE_BLACKLEVEL;Preto @@ -1735,9 +1706,6 @@ TP_LENSGEOM_AUTOCROP;Corte automático TP_LENSGEOM_FILL;Preenchimento automático TP_LENSGEOM_LABEL;Lente / Geometria TP_LENSPROFILE_LABEL;Correção de lente perfilada -TP_LENSPROFILE_USECA;Correção da aberração cromática -TP_LENSPROFILE_USEDIST;Correção de distorção -TP_LENSPROFILE_USEVIGN;Correção de vinheta TP_LOCALCONTRAST_AMOUNT;Montante TP_LOCALCONTRAST_DARKNESS;Nível de escuridão TP_LOCALCONTRAST_LABEL;Contraste Local @@ -1775,7 +1743,6 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal apenas em linhas PDAF TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical TP_PREPROCESS_NO_FOUND;Nenhum encontrado TP_PREPROCESS_PDAFLINESFILTER;Filtro de linhas PDAF -TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tenta suprimir o ruído de faixas causado por pixels PDAF no sensor, ocorrendo com algumas câmeras mirrorless da Sony em algumas cenas em contraluz com "flare" visível. TP_PRSHARPENING_LABEL;Pós-Redimensionamento de Nitidez TP_PRSHARPENING_TOOLTIP;Focaliza a imagem após o redimensionamento. Funciona somente quando o método de redimensionamento "Lanczos" é usado. É impossível visualizar os efeitos dessa ferramenta. Veja RawPedia para instruções de uso. TP_RAWCACORR_AUTO;Auto correção @@ -1880,7 +1847,6 @@ TP_RESIZE_WIDTH;Largura TP_RETINEX_CONTEDIT_HSL;Equalizador de histograma HSL TP_RETINEX_CONTEDIT_LAB;Equalizador de histograma L*a*b* TP_RETINEX_CONTEDIT_LH;Equalizador de matiz -TP_RETINEX_CONTEDIT_MAP;Equalizador de máscara TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminância de acordo com a luminância L=f(L)\nCorrija dados raw para reduzir halos e artefatos. TP_RETINEX_CURVEEDITOR_LH;Intensidade=f(M) @@ -1917,7 +1883,6 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Máscara TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Baixo -TP_RETINEX_MAP;Método de máscara TP_RETINEX_MAP_GAUS;Máscara gaussiana TP_RETINEX_MAP_MAPP;Máscara de nitidez (wavelet parcial) TP_RETINEX_MAP_MAPT;Máscara de nitidez (wavelet total) @@ -2005,7 +1970,6 @@ 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) -TP_TM_FATTAL_THRESHOLD;Limite TP_VIBRANCE_AVOIDCOLORSHIFT;Evite mudança de cor TP_VIBRANCE_CURVEEDITOR_SKINTONES;MM TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Tons cor de pele @@ -2253,16 +2217,101 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! +!CURVEEDITOR_CATMULLROM;Flexible +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles +!GENERAL_CURRENT;Current !HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. +!HISTORY_MSG_489;DRC - Detail +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations !HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_TAB_PERFORMANCE;Performance !SAVEDLG_FILEFORMAT_FLOAT; floating-point +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. +!TP_RETINEX_MAP;Method +!TP_TM_FATTAL_THRESHOLD;Detail +!TP_WBALANCE_PICKER;Pick diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 36b63772e..b440470a3 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -5,16 +5,19 @@ #05 2010-11-01 Ilia Popov #06 2012-07-17 Roman Milanskij #07 2014-02-12 Kostia (Kildor) Romanov -#07 2018-02-10 Kostia (Kildor) Romanov +#08 2018-02-10 Kostia (Kildor) Romanov +#09 2018-12-13 Kostia (Kildor) Romanov ABOUT_TAB_BUILD;Версия ABOUT_TAB_CREDITS;Авторы ABOUT_TAB_LICENSE;Лицензия ABOUT_TAB_RELEASENOTES;Примечания к выпуску ABOUT_TAB_SPLASH;Заставка +ADJUSTER_RESET_TO_DEFAULT;Click: Сбросить на значение по умолчанию.\nCtrl+click: Сбросить на начальное значение. BATCHQUEUE_AUTOSTART;Автостарт BATCHQUEUE_AUTOSTARTHINT;Автоматически запускать обработку при добавлении файла в очередь BATCHQUEUE_DESTFILENAME;Имя файла и путь к нему +BATCHQUEUE_STARTSTOPHINT;Начать или остановить обработку изображений в очереди.\n\Горячая клавиша: Ctrl-S BATCH_PROCESSING;Пакетная обработка CURVEEDITOR_AXIS_IN;I: CURVEEDITOR_AXIS_OUT;O: @@ -37,12 +40,16 @@ CURVEEDITOR_TOOLTIPLOAD;Загрузить тоновую кривую CURVEEDITOR_TOOLTIPPASTE;Вставить кривую из буфера обмена CURVEEDITOR_TOOLTIPSAVE;Сохранить тоновую кривую CURVEEDITOR_TYPE;Тип: -DIRBROWSER_FOLDERS;Папки +DIRBROWSER_FOLDERS;Каталоги DONT_SHOW_AGAIN;Больше не показывать это сообщение. DYNPROFILEEDITOR_DELETE;Удалить DYNPROFILEEDITOR_EDIT;Редактировать DYNPROFILEEDITOR_EDIT_RULE;Редактировать правило подбора DYNPROFILEEDITOR_ENTRY_TOOLTIP;Сопоставление нечувствительно к регистру.\nИспользуйте префикс "re:"\nчтоб ввести регулярное выражение. +DYNPROFILEEDITOR_IMGTYPE_ANY;Любой +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Сдвиг пикселей +DYNPROFILEEDITOR_IMGTYPE_STD;Стандарт DYNPROFILEEDITOR_MOVE_DOWN;Вниз DYNPROFILEEDITOR_MOVE_UP;Вверх DYNPROFILEEDITOR_NEW;Новый @@ -52,8 +59,9 @@ EDITWINDOW_TITLE;Редактор EXIFFILTER_APERTURE;Диафрагма EXIFFILTER_CAMERA;Камера EXIFFILTER_EXPOSURECOMPENSATION;Компенсация экспозиции (EV) -EXIFFILTER_FILETYPE;Тип фильтра +EXIFFILTER_FILETYPE;Тип файла EXIFFILTER_FOCALLEN;Фокусное расстояние +EXIFFILTER_IMAGETYPE;Тип изображения EXIFFILTER_ISO;ISO EXIFFILTER_LENS;Объектив EXIFFILTER_METADATAFILTER;Включить фильтры метаданных @@ -71,6 +79,7 @@ EXIFPANEL_RESET;Сбросить EXIFPANEL_RESETALL;Сбросить все EXIFPANEL_RESETALLHINT;Сбросить все теги в первоначальные значения EXIFPANEL_RESETHINT;Сбросить выбранные теги в первоначальные значения +EXIFPANEL_SHOWALL;Показать всё EXIFPANEL_SUBDIRECTORY;Подкаталог EXPORT_BYPASS_ALL;Выделить все / Снять выделение EXPORT_BYPASS_DEFRINGE;Пропустить подавление ореолов @@ -103,10 +112,8 @@ FILEBROWSER_APPLYPROFILE_PARTIAL;Применить - частично FILEBROWSER_AUTODARKFRAME;Автоматический темновой кадр FILEBROWSER_AUTOFLATFIELD;Автоматическое плоское поле FILEBROWSER_BROWSEPATHBUTTONHINT;Нажмите кнопку мыши чтобы перейти к выбранному каталогу -FILEBROWSER_BROWSEPATHHINT;Введите путь для перехода.\nCtrl-O для перехода на диалог ввода текста.\nEnter / Ctrl-Enter (в обозревателе файлов) для перехода;\n\nЯрлыки путей:\n ~ - домашняя папка пользователя\n ! - папка пользователя с изображениями +FILEBROWSER_BROWSEPATHHINT;Введите путь для перехода.\nCtrl-O для перехода на диалог ввода текста.\nEnter / Ctrl-Enter (в обозревателе файлов) для перехода;\n\nЯрлыки путей:\n ~ - домашний каталог пользователя\n ! - каталог пользователя с изображениями FILEBROWSER_CACHE;Кэш -FILEBROWSER_CACHECLEARFROMFULL;Удалить из кэша - полностью -FILEBROWSER_CACHECLEARFROMPARTIAL;Удалить из кэша - частично FILEBROWSER_CLEARPROFILE;Удалить профиль FILEBROWSER_COLORLABEL_TOOLTIP;Color label\n\nUse dropdown menu or Shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple FILEBROWSER_COPYPROFILE;Скопировать профиль @@ -119,8 +126,8 @@ FILEBROWSER_EMPTYTRASH;Очистить корзину FILEBROWSER_EMPTYTRASHHINT;Удалить файлы из корзины без возможности восстановления FILEBROWSER_EXTPROGMENU;Открыть с помощью FILEBROWSER_FLATFIELD;Плоское поле -FILEBROWSER_MOVETODARKFDIR;Переместить в папку темновых кадров -FILEBROWSER_MOVETOFLATFIELDDIR;Переместить в папку с файлами плоских полей +FILEBROWSER_MOVETODARKFDIR;Переместить в каталог темновых кадров +FILEBROWSER_MOVETOFLATFIELDDIR;Переместить в каталог файлов плоских полей FILEBROWSER_NEW_NAME;Новое имя: FILEBROWSER_OPENDEFAULTVIEWER;Программа просмотра в Windows по умолчанию (после обработки) FILEBROWSER_PARTIALPASTEPROFILE;Частичная вставка @@ -144,6 +151,7 @@ FILEBROWSER_POPUPPROCESS;Поместить в очередь на обрабо FILEBROWSER_POPUPPROCESSFAST;Поставить в очередь (Быстрый экспорт) FILEBROWSER_POPUPPROFILEOPERATIONS;Обработка операций профиля FILEBROWSER_POPUPRANK;Рейтинг +FILEBROWSER_POPUPRANK0;Снять FILEBROWSER_POPUPRANK1;Рейтинг 1 * FILEBROWSER_POPUPRANK2;Рейтинг 2 ** FILEBROWSER_POPUPRANK3;Рейтинг 3 *** @@ -176,7 +184,7 @@ FILEBROWSER_SHOWCOLORLABEL5HINT;Показать изображения, отм FILEBROWSER_SHOWDIRHINT;Сбросить все фильтры.\nГорячая клавиша: d FILEBROWSER_SHOWEDITEDHINT;Показать измененные изображения.\nГорячая клавиша: 7 FILEBROWSER_SHOWEDITEDNOTHINT;Показать не измененные изображения.\nГорячая клавиша: 6 -FILEBROWSER_SHOWEXIFINFO;Показать информацию EXIF.\nГорячая клавиша: i\n\nГорячая клавиша в режиме Одиночного редактора: Alt-i +FILEBROWSER_SHOWEXIFINFO;Показать информацию EXIF.\nГорячая клавиша: i\n\nГорячая клавиша в режиме Одиночного редактора: Alt-I FILEBROWSER_SHOWNOTTRASHHINT;Показать только неудалённые изображения. FILEBROWSER_SHOWRANK1HINT;Показать изображения с рейтингом 1.\nГорячая клавиша: 1 FILEBROWSER_SHOWRANK2HINT;Показать изображения с рейтингом 2.\nГорячая клавиша: 2 @@ -185,11 +193,11 @@ FILEBROWSER_SHOWRANK4HINT;Показать изображения с рейти FILEBROWSER_SHOWRANK5HINT;Показать изображения с рейтингом 5.\nГорячая клавиша: 5 FILEBROWSER_SHOWRECENTLYSAVEDHINT;Показать изображения, сохранённые недавно.\nГорячая клавиша: Alt-7 FILEBROWSER_SHOWRECENTLYSAVEDNOTHINT;Показать изображения, сохранённые давно.\nГорячая клавиша: Alt-6 -FILEBROWSER_SHOWTRASHHINT;Показать содержимое корзины.\nГорячая клавиша: Ctrl-t +FILEBROWSER_SHOWTRASHHINT;Показать содержимое корзины.\nГорячая клавиша: Ctrl-T FILEBROWSER_SHOWUNCOLORHINT;Показать изображения без цветовой метки.\nГорячая клавиша: Alt-0 FILEBROWSER_SHOWUNRANKHINT;Показать изображения без рейтинга\nГорячая клавиша: 0 FILEBROWSER_THUMBSIZE;Размер эскиза -FILEBROWSER_UNRANK_TOOLTIP;Удалить рейтинг\nГорячая клавиша: Shift-~ +FILEBROWSER_UNRANK_TOOLTIP;Снять рейтинг\nГорячая клавиша: Shift-~ FILEBROWSER_ZOOMINHINT;Увеличить размер эскиза\nГорячая клавиша: +\n\nГорячая клавиша в режиме Одиночного редактора: Alt-+ FILEBROWSER_ZOOMOUTHINT;Уменьшить размер эскиза\nГорячая клавиша: +\n\nГорячая клавиша в режиме Одиночного редактора: Alt-- FILECHOOSER_FILTER_ANY;Все файлы @@ -205,6 +213,7 @@ GENERAL_AUTO;Автоматический GENERAL_BEFORE;До GENERAL_CANCEL;Отмена GENERAL_CLOSE;Закрыть +GENERAL_CURRENT;Текущий GENERAL_DISABLE;Выключить GENERAL_DISABLED;Выключено GENERAL_ENABLE;Включить @@ -217,7 +226,9 @@ GENERAL_NONE;Нет GENERAL_OK;OK GENERAL_OPEN;Открыть GENERAL_PORTRAIT;Портретный +GENERAL_RESET;Сбросить GENERAL_SAVE;Сохранить +GENERAL_SAVE_AS;Сохранить как... GENERAL_SLIDER;Ползунок GENERAL_UNCHANGED;(не менялось) GENERAL_WARNING;Внимание @@ -482,10 +493,25 @@ HISTORY_MSG_249;КпУД: Порог HISTORY_MSG_250;ПШ: Улучшенный HISTORY_MSG_251;Ч&Б: Алгоритм HISTORY_MSG_277;--неиспользуемый-- +HISTORY_MSG_293;Имитация плёнки +HISTORY_MSG_294;Имитация плёнки: Сила +HISTORY_MSG_295;Имитация плёнки: Плёнка +HISTORY_MSG_298;Фильтр битых пикселей HISTORY_MSG_300;- +HISTORY_MSG_440;КпУД: Метод +HISTORY_MSG_485;Коррекция объектива +HISTORY_MSG_486;Коррекция объектива: Камера +HISTORY_MSG_487;Коррекция объектива: Объектив +HISTORY_MSG_488;Компрессия динамического диапазона +HISTORY_MSG_490;КДД: Величина HISTORY_MSG_491;Баланс белого HISTORY_MSG_492;Кривые RGB HISTORY_MSG_493;Настройки L*a*b* +HISTORY_MSG_CLAMPOOG;Обрезание цвета за пределами охвата +HISTORY_MSG_DEHAZE_DEPTH;Убрать дымку: Глубина +HISTORY_MSG_DEHAZE_ENABLED;Убрать дымку +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Убрать дымку: Маска глубин +HISTORY_MSG_DEHAZE_STRENGTH;Убрать дымку: Сила HISTORY_MSG_HISTMATCHING;Автоподбор тоновой кривой HISTORY_MSG_LOCALCONTRAST_AMOUNT;Лок.контраст: Величина HISTORY_MSG_LOCALCONTRAST_DARKNESS;Лок.контраст: Тёмные тона @@ -493,10 +519,39 @@ HISTORY_MSG_LOCALCONTRAST_ENABLED;Лок.контраст HISTORY_MSG_LOCALCONTRAST_LIGHTNESS;Лок.контраст: Светлые тона HISTORY_MSG_LOCALCONTRAST_RADIUS;Лок.контраст: Радиус HISTORY_MSG_METADATA_MODE;Режим копирования метаданных +HISTORY_MSG_SOFTLIGHT_ENABLED;Мягкий свет +HISTORY_MSG_SOFTLIGHT_STRENGTH;Мягкий свет: Сила +HISTORY_MSG_TM_FATTAL_ANCHOR;КДД: Привязка HISTORY_NEWSNAPSHOT;Добавить -HISTORY_NEWSNAPSHOT_TOOLTIP;Горячая клавиша: Alt-s +HISTORY_NEWSNAPSHOT_TOOLTIP;Горячая клавиша: Alt-S HISTORY_SNAPSHOT;Снимок HISTORY_SNAPSHOTS;Снимки +ICCPROFCREATOR_ICCVERSION;Версия ICC: +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_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_PROF_V2;ICC v2 +ICCPROFCREATOR_PROF_V4;ICC v4 IPTCPANEL_CATEGORY;Категория IPTCPANEL_CITY;Город IPTCPANEL_COPYHINT;Копировать данные IPTC в буфер обмена @@ -514,9 +569,6 @@ IPTCPANEL_RESET;Сбросить IPTCPANEL_RESETHINT;Сбросить профиль на значения по умолчанию IPTCPANEL_SOURCE;Источник IPTCPANEL_TITLE;Название -LENSPROFILE_CORRECTION_AUTOMATCH;Автоподбор параметров коррекции -LENSPROFILE_CORRECTION_LCPFILE;Файл LCP -LENSPROFILE_CORRECTION_MANUAL;Ручные параметры коррекции LENSPROFILE_LENS_WARNING;Внимание: кроп-фактор используемый для анализа объектива больше чем кроп-фактор камеры, результаты могут быть не верны. MAIN_BUTTON_FULLSCREEN;Полный экран MAIN_BUTTON_NAVNEXT_TOOLTIP;Перейти к следующему изображению относительно открытого в редакторе\nГорячая клавиша: Shift+F4\n\nПерейти к следущему изображению относительно выбранного в файловом браузере\nгорячая клавиша F4 @@ -538,7 +590,7 @@ MAIN_FRAME_FILEBROWSER_TOOLTIP;Проводник.\nГорячая клавиш MAIN_FRAME_PLACES;Закладки MAIN_FRAME_PLACES_ADD;Добавить MAIN_FRAME_PLACES_DEL;Удалить -MAIN_FRAME_RECENT;Недавние папки +MAIN_FRAME_RECENT;Недавние каталоги MAIN_MSG_ALREADYEXISTS;Файл уже существует. MAIN_MSG_CANNOTLOAD;Невозможно загрузить изображение MAIN_MSG_CANNOTSAVE;Ошибка при сохранении файла @@ -553,7 +605,7 @@ MAIN_MSG_QOVERWRITE;Вы хотите перезаписать его? MAIN_MSG_SETPATHFIRST;Прежде необходимо установить целевой каталог в настройках\nчтоб использовать эту функцию! MAIN_MSG_WRITEFAILED;Не удалось записать\n\n"%1".\n\nУбедитесь, что каталог существует и у вас есть права на запись в него. MAIN_TAB_ADVANCED;Дополнительные -MAIN_TAB_ADVANCED_TOOLTIP;Горячая клавиша: Alt-w +MAIN_TAB_ADVANCED_TOOLTIP;Горячая клавиша: Alt-W MAIN_TAB_COLOR;Цвет MAIN_TAB_COLOR_TOOLTIP;Горячая клавиша: Alt-C MAIN_TAB_DETAIL;Детализация @@ -586,10 +638,10 @@ MAIN_TOOLTIP_PREVIEWL;Просмотреть Световую составл MAIN_TOOLTIP_PREVIEWR;Просмотреть канал красного.\nГорячая клавиша: r MAIN_TOOLTIP_QINFO;Информация об изображении.\nГорячая клавиша i MAIN_TOOLTIP_SHOWHIDELP1;Показать/скрыть левую панель\nГорячая клавиша: l -MAIN_TOOLTIP_SHOWHIDERP1;Показать/скрыть правую панель\nГорячая клавиша: Alt-l +MAIN_TOOLTIP_SHOWHIDERP1;Показать/скрыть правую панель\nГорячая клавиша: Alt-L MAIN_TOOLTIP_SHOWHIDETP1;Показать/скрыть верхнюю панель\nГорячая клавиша: Shift-L MAIN_TOOLTIP_THRESHOLD;Порог -MAIN_TOOLTIP_TOGGLE;Включить режим "до/после".\nГорячая клавиша Shift-B +MAIN_TOOLTIP_TOGGLE;Включить режим "до/после".\nГорячая клавиша Shift-B NAVIGATOR_B;B: NAVIGATOR_G;G: NAVIGATOR_H;H: @@ -602,6 +654,9 @@ NAVIGATOR_S;S: NAVIGATOR_V;V: NAVIGATOR_XY_FULL;Ширина: %1, Высота: %2 NAVIGATOR_XY_NA;x: --, y: -- +OPTIONS_BUNDLED_MISSING;Встроенный профиль "%1" не найден!\n\nВаша установка может быть повреждена.\n\nБудут использованы внутренние дефолтные значения по умолчанию. +OPTIONS_DEFIMG_MISSING;Профиль по умолчанию для не-raw снимков не найден или не установлен.\n\nПожалуйста, проверьте каталог с профилями, он может отсутствовать или быть повреждён.\n\nБудет использован профиль "%1". +OPTIONS_DEFRAW_MISSING;Профиль по умолчанию для raw снимков не найден или не установлен.\n\nПожалуйста, проверьте каталог с профилями, он может отсутствовать или быть повреждён.\n\nБудет использован профиль "%1". PARTIALPASTE_ADVANCEDGROUP;Дополнительные параметры PARTIALPASTE_BASICGROUP;Базовые настройки PARTIALPASTE_CACORRECTION;Коррекция C/A @@ -642,7 +697,9 @@ PARTIALPASTE_METADATA;Режим метаданных PARTIALPASTE_METAGROUP;Настройка метаданных PARTIALPASTE_PCVIGNETTE;Фильтр виньетирования PARTIALPASTE_PERSPECTIVE;Перспектива +PARTIALPASTE_PREPROCESS_DEADPIXFILT;Фильтр битых пикселей PARTIALPASTE_PREPROCESS_GREENEQUIL;Выравнивание зелёного канала +PARTIALPASTE_PREPROCESS_HOTPIXFILT;Фильтр горячих пикселей PARTIALPASTE_PREPROCESS_LINEDENOISE;Фильтр полосообразного шума PARTIALPASTE_RAWCACORR_AUTO;Автоматическая коррекция ХА PARTIALPASTE_RAWEXPOS_BLACK;Уровень черного @@ -661,12 +718,21 @@ PARTIALPASTE_SHADOWSHIGHLIGHTS;Тени/света PARTIALPASTE_SHARPENEDGE;Края PARTIALPASTE_SHARPENING;Повышение резкости PARTIALPASTE_SHARPENMICRO;Микроконтраст +PARTIALPASTE_SOFTLIGHT;Мягкий свет +PARTIALPASTE_TM_FATTAL;Компрессия динамического диапазона PARTIALPASTE_VIBRANCE;Красочность PARTIALPASTE_VIGNETTING;Коррекция виньетирования PARTIALPASTE_WHITEBALANCE;Баланс белого PREFERENCES_ADD;Добавить +PREFERENCES_APPEARANCE;Внешний вид +PREFERENCES_APPEARANCE_COLORPICKERFONT;Шрифт пипетки +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Цвет маски обрезки +PREFERENCES_APPEARANCE_MAINFONT;Основной шрифт +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Цвет направляющих +PREFERENCES_APPEARANCE_THEME;Тема PREFERENCES_APPLNEXTSTARTUP;нужен перезапуск PREFERENCES_AUTOMONPROFILE;Использовать профиль основного монитора ОС +PREFERENCES_AUTOSAVE_TP_OPEN;Сохранить свёрнутое/развёрнутое состояние при выходе PREFERENCES_BATCH_PROCESSING;Пакетная обработка PREFERENCES_BEHADDALL;Всё в "Добавить" PREFERENCES_BEHADDALLHINT;Выставить все параметры в режим Добавить.\nНастройки параметров в панели пакетной обработки будут дельтой к сохранённым данным @@ -674,16 +740,17 @@ PREFERENCES_BEHAVIOR;Поведение PREFERENCES_BEHSETALL;Всё в "Установить" PREFERENCES_BEHSETALLHINT;Выставить все параметры в режим Установить.\nНастройки параметров в панели пакетной обработки будут абсолютными, будут показаны используемые значения PREFERENCES_BLACKBODY;Лампа накаливания -PREFERENCES_CACHECLEARALL;Удалить все -PREFERENCES_CACHECLEARPROFILES;Удалить параметры обработки -PREFERENCES_CACHECLEARTHUMBS;Удалить эскизы +PREFERENCES_CACHECLEAR;Очистить PREFERENCES_CACHEMAXENTRIES;Максимальное число элементов в кэше PREFERENCES_CACHEOPTS;Параметры кэширования PREFERENCES_CACHETHUMBHEIGHT;Максимальная высота эскиза -PREFERENCES_CIEART;Оптимизация CIECAM02 -PREFERENCES_CIEART_LABEL;Использовать числа с плавающей запятой вместо двойной точности -PREFERENCES_CIEART_TOOLTIP;Если включено, вычисления CIECAM02 будут выполняться в формате плавающей запятой с одинарной точностью вместо использования двойной точности. Это обеспечит небольшое увеличение скорости с несущественной потерей качества. PREFERENCES_CLIPPINGIND;Индикация пересветов/затемнений +PREFERENCES_CLUTSDIR;Каталог файлов HaldCLUT +PREFERENCES_CROP;Режим обрезки +PREFERENCES_CROP_GUIDES;Направляющие, отображающиеся вне режима обрезки +PREFERENCES_CROP_GUIDES_FRAME;Рамка +PREFERENCES_CROP_GUIDES_FULL;Оригинальные +PREFERENCES_CROP_GUIDES_NONE;Нет PREFERENCES_CURVEBBOXPOS;Позиция кнопок для копирования и вставки кривых PREFERENCES_CURVEBBOXPOS_ABOVE;Выше PREFERENCES_CURVEBBOXPOS_BELOW;Ниже @@ -695,7 +762,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Формат ключей PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Имя PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Путь к исполняемому файлу -PREFERENCES_CUTOVERLAYBRUSH; Цвет/прозрачность маски обрезки PREFERENCES_D50;5000K PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -707,6 +773,7 @@ PREFERENCES_DARKFRAMETEMPLATES;шаблонов PREFERENCES_DATEFORMAT;Формат даты PREFERENCES_DATEFORMATHINT;Вы можете использовать следующие элементы форматирования:\n%y: год\n%m: месяц\n%d: день\n\nНапример, ISO 8601 требует использовать следующий формат даты:\n%y-%m-%d PREFERENCES_DIRDARKFRAMES;Каталог размещения темновых кадров +PREFERENCES_DIRECTORIES;Каталоги PREFERENCES_DIRHOME;Домашний каталог PREFERENCES_DIRLAST;Последний каталог PREFERENCES_DIROTHER;Другой @@ -715,10 +782,9 @@ PREFERENCES_DIRSOFTWARE;Каталог установки PREFERENCES_EDITORLAYOUT;Тип редактора PREFERENCES_EXTERNALEDITOR;Внешний редактор PREFERENCES_FBROWSEROPTS;Настройки -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Однорядная панель обозревателя файлов\n(отключите для экранов с низким разрешением) PREFERENCES_FILEFORMAT;Формат файлов PREFERENCES_FLATFIELDFOUND;Найдено -PREFERENCES_FLATFIELDSDIR;Папка с файлами плоских полей +PREFERENCES_FLATFIELDSDIR;Каталог файлов плоских полей PREFERENCES_FLATFIELDSHOTS;снимков PREFERENCES_FLATFIELDTEMPLATES;шаблонов PREFERENCES_FLUOF2;Лампа дневного света F2 @@ -739,6 +805,8 @@ PREFERENCES_HISTOGRAMPOSITIONLEFT;Гистограмма на левой пан PREFERENCES_HLTHRESHOLD;Порог срабатывания пересветов PREFERENCES_ICCDIR;Каталог ICC профилей PREFERENCES_IMPROCPARAMS;Профиль обработки по умолчанию +PREFERENCES_INSPECT_LABEL;Предпросмотр +PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Максимальное количество кешированных файлов PREFERENCES_INTENT_ABSOLUTE;Абсолютное колориметрическое PREFERENCES_INTENT_PERCEPTUAL;Перцепционное PREFERENCES_INTENT_RELATIVE;Относительное колориметрическое @@ -756,11 +824,12 @@ PREFERENCES_METADATA;Метаданные PREFERENCES_MONITOR;Монитор PREFERENCES_MULTITAB;Много вкладок PREFERENCES_MULTITABDUALMON;Много вкладок, на втором мониторе (если возможно) +PREFERENCES_NAVIGATIONFRAME;Навигация PREFERENCES_OUTDIR;Каталог для сохранения изображений PREFERENCES_OUTDIRFOLDER;Сохранять в каталог PREFERENCES_OUTDIRFOLDERHINT;Сохранение изображений в выбранный каталог PREFERENCES_OUTDIRTEMPLATE;Использовать шаблон -PREFERENCES_OUTDIRTEMPLATEHINT;Вы можете использовать следующие элементы форматирования:\n%f, %d1, %d2, …, %p1, %p2, …, %r, %s1, %s2, …\n\nЭлементы соответствуют различным элементам в пути к RAW-файлу, некоторым атрибутам файла или индексу в очереди пакетной обработки.\n\nНапример, если был открыт файл /home/tom/image/2006-02-09/dsc0012.nef, элементы форматирования будут выглядеть так:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2006-02-09\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\n%r заменится на рейтинг фотографии, либо '0' при пустом, либо на 'x' если фотография находится в корзине.\n\n%s1, %s2 и т.д. заменятся на индекс фотографии в очереди обработки, дополненный нулями до 1-9 символов. Индекс сбрасывается при старте и увеличивается на единицу при обработке фотографии.\nЕсли вы хотите сохранять изображения в каталоге с оригиналом, введите:\n%p1/%f\n\nЕсли вы хотите сохранять изображения в каталоге "converted" в каталоге оригинального файла, введите строку:\n%p1/converted/%f\nДля сохранения изображений в папке "/home/tom/photos/converted/2006-02-09", напишите:\n%p2/converted/%d1/%f +PREFERENCES_OUTDIRTEMPLATEHINT;Вы можете использовать следующие элементы форматирования:\n%f, %d1, %d2, …, %p1, %p2, …, %r, %s1, %s2, …\n\nЭлементы соответствуют различным элементам в пути к RAW-файлу, некоторым атрибутам файла или индексу в очереди пакетной обработки.\n\nНапример, если был открыт файл /home/tom/image/2006-02-09/dsc0012.nef, элементы форматирования будут выглядеть так:\n%d4 = home\n%d3 = tom\n%d2 = photos\n%d1 = 2006-02-09\n%f = dsc0042\n%p1 = /home/tom/photos/2010-10-31/\n%p2 = /home/tom/photos/\n%p3 = /home/tom/\n%p4 = /home/\n\n%r заменится на рейтинг фотографии, либо '0' при пустом, либо на 'x' если фотография находится в корзине.\n\n%s1, %s2 и т.д. заменятся на индекс фотографии в очереди обработки, дополненный нулями до 1-9 символов. Индекс сбрасывается при старте и увеличивается на единицу при обработке фотографии.\nЕсли вы хотите сохранять изображения в каталоге с оригиналом, введите:\n%p1/%f\n\nЕсли вы хотите сохранять изображения в каталоге "converted" в каталоге оригинального файла, введите строку:\n%p1/converted/%f\nДля сохранения изображений в каталоге "/home/tom/photos/converted/2006-02-09", напишите:\n%p2/converted/%d1/%f PREFERENCES_OVERLAY_FILENAMES;Показывать информацию поверх миниатюр PREFERENCES_OVERWRITEOUTPUTFILE;Перезаписывать существующие файлы PREFERENCES_PANFACTORLABEL;Коэффициент @@ -768,6 +837,8 @@ PREFERENCES_PARSEDEXT;Расширения для предпросмотра PREFERENCES_PARSEDEXTADD;Добавить PREFERENCES_PARSEDEXTADDHINT;Введите расширение и нажмите на эту кнопку, чтобы добавить его в список PREFERENCES_PARSEDEXTDELHINT;Удаление выбранных расширений из списка +PREFERENCES_PERFORMANCE_THREADS;Потоки +PREFERENCES_PERFORMANCE_THREADS_LABEL;Максимальное количество потоков для шумоподавления и уровней вейвлетов (0 для автовыбора) PREFERENCES_PREVDEMO;Метод демозаика для превью PREFERENCES_PREVDEMO_FAST;Быстрый PREFERENCES_PREVDEMO_LABEL;Метод демозаика, используемый для превью при масштабе < 100% @@ -778,11 +849,12 @@ PREFERENCES_PROFILEPRCACHE;загружать из кэша PREFERENCES_PROFILEPRFILE;загружать из каталога с файлом PREFERENCES_PROFILESAVECACHE;Сохранять профиль обработки в кэше PREFERENCES_PROFILESAVEINPUT;Сохранять профиль обработки в одном каталоге с исходным файлом +PREFERENCES_PROFILE_NONE;Нет PREFERENCES_PROPERTY;Свойство PREFERENCES_PSPATH;Каталог установки Adobe Photoshop -PREFERENCES_SELECTFONT;Выбрать шрифт +PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Запоминает масштаб и позицию текущего изображения при открытии нового.\n\nЭта настройка работает только при типе редактора "Одна вкладка" и выставлении настройки "Метод демозаика, используемый для превью при масштабе < 100%" в "Как в PP3". +PREFERENCES_SAVE_TP_OPEN_NOW;Сохранить сейчас PREFERENCES_SELECTLANG;Выбрать язык -PREFERENCES_SELECTTHEME;Выбрать тему PREFERENCES_SET;Установить PREFERENCES_SHOWBASICEXIF;Показывать основные данные Exif PREFERENCES_SHOWDATETIME;Показывать дату и время @@ -800,10 +872,15 @@ PREFERENCES_TAB_COLORMGR;Управление цветом PREFERENCES_TAB_DYNAMICPROFILE;Динамические профили PREFERENCES_TAB_GENERAL;Основное PREFERENCES_TAB_IMPROC;Обработка изображения +PREFERENCES_TAB_PERFORMANCE;Производительность PREFERENCES_TAB_SOUND;Звуки -PREFERENCES_THEME;Тема +PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Встроенное jpeg превью +PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Показывать изображение +PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Нейтрально обработанный raw-файл +PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Встроенный полноразмерный jpeg, иначе нейтральный raw PREFERENCES_TP_LABEL;Панель инструментов: PREFERENCES_TP_VSCROLLBAR;Спрятать вертикальную полосу прокрутки +PREFERENCES_TUNNELMETADATA;Копировать данные Exif/IPTC/XMP неизменённо PREFERENCES_USEBUNDLEDPROFILES;Использовать предустановленный профиль PREFERENCES_VIEW;ББ устройства вывода (монитор, проектор и т.д.) PREFERENCES_WORKFLOW;Стиль работы @@ -821,10 +898,10 @@ PROFILEPANEL_PINTERNAL;Нейтральный PROFILEPANEL_PLASTSAVED;Последний сохранённый PROFILEPANEL_SAVEDLGLABEL;Сохранить профиль обработки... PROFILEPANEL_SAVEPPASTE;Параметры для сохранения -PROFILEPANEL_TOOLTIPCOPY;Скопировать текущий профиль в буфер обмена.\nCtrl+click для выбора параметров для копирования -PROFILEPANEL_TOOLTIPLOAD;Загрузить профиль из файла\nCtrl+click для выбора параметров для загрузки -PROFILEPANEL_TOOLTIPPASTE;Вставить профиль из буфера обмена\nCtrl+click для выбора параметров для вставки -PROFILEPANEL_TOOLTIPSAVE;Сохранить текущий профиль\nCtrl+click для выбора параметров для сохранения +PROFILEPANEL_TOOLTIPCOPY;Скопировать текущий профиль в буфер обмена.\nCtrl+Click для выбора параметров для копирования +PROFILEPANEL_TOOLTIPLOAD;Загрузить профиль из файла\nCtrl+Click для выбора параметров для загрузки +PROFILEPANEL_TOOLTIPPASTE;Вставить профиль из буфера обмена\nCtrl+Click для выбора параметров для вставки +PROFILEPANEL_TOOLTIPSAVE;Сохранить текущий профиль\nCtrl+Click для выбора параметров для сохранения PROGRESSBAR_LOADING;Загрузка изображения... PROGRESSBAR_LOADINGTHUMBS;Загрузка миниатюр... PROGRESSBAR_LOADJPEG;Чтение JPEG файла... @@ -839,8 +916,11 @@ PROGRESSBAR_SAVEPNG;Сохранение PNG файла... PROGRESSBAR_SAVETIFF;Сохранение TIFF файла... PROGRESSBAR_SNAPSHOT_ADDED;Снимок добавлен PROGRESSDLG_PROFILECHANGEDINBROWSER;Профиль изменён в браузере +QINFO_FRAMECOUNT;%2 кадров +QINFO_HDR;HDR / %2 кадр(ов) QINFO_ISO;ISO QINFO_NOEXIF;Данные Exif недоступны +QINFO_PIXELSHIFT;Сдвиг пикселей / %2 frame(s) SAVEDLG_AUTOSUFFIX;Автоматически добавлять суффикс если файл существует SAVEDLG_FILEFORMAT;Формат файла SAVEDLG_FORCEFORMATOPTS;Принудительно установить настройки сохранения @@ -900,6 +980,8 @@ TP_BWMIX_MET;Метод TP_BWMIX_MET_CHANMIX;Миксер каналов TP_BWMIX_MET_DESAT;Обесцвечивание TP_BWMIX_MET_LUMEQUAL;Яркостный Эквалайзер +TP_BWMIX_MIXC;Миксер каналов +TP_BWMIX_NEUTRAL;Сбросить TP_BWMIX_RGBLABEL;К: %1%% З: %2%% С: %3%% Итог: %4%% TP_BWMIX_RGBLABEL_HINT;Итоговые значения RGB, учитывающие все настройки миксера.\nИтог показывает сумму применённых значений RGB:\n- всегда 100% в относительных режимах\n- выше (светлее) или ниже (темнее) в абсолютных режимах. TP_BWMIX_RGB_TOOLTIP;Смешивание каналов RGB. Используйте пресеты для руководства.\nУчтите что отрицательные значения могут вызвать искажения или неустойчивое поведение. @@ -937,11 +1019,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Горизонтальное зеркальное о TP_COARSETRAF_TOOLTIP_ROTLEFT;Повернуть влево\n\nГорячие клавиши:\n[ - режим множественных редакторов,\nAlt-[ - режим одного редактора TP_COARSETRAF_TOOLTIP_ROTRIGHT;Повернуть вправо\n\nГорячие клавиши:\n] - режим множественных редакторов,\nAlt-] - режим одного редактора TP_COARSETRAF_TOOLTIP_VFLIP;Вертикальное зеркальное отражение -TP_COLORAPP_ADAPTSCENE;Яркость обстановки -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Абсолютная освещённость места и объекта съёмки (кд/м²).\n1) Высчитывается из данных Exif:\nВыдержка − Значение ISO − Значение F − Внутрикамерная коррекция выдержки.\n2) Высчитывается из точки белого в raw и значения компенсации экспозиции RT. -TP_COLORAPP_ADAPTVIEWING;Яркость при просмотре (кд/м²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Абсолютная яркость при просмотре.\n(Обычно 16 кд/м²) -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Если галка отмечена (рекомендуется) RT расчитывает оптимальное значение из данных Exif.\nДля ручного редактирования необходимо предварительно снять галку. TP_COLORAPP_ALGO;Алгоритм TP_COLORAPP_ALGO_ALL;Все TP_COLORAPP_ALGO_JC;Светимость + Цвет (JC) @@ -974,8 +1051,7 @@ TP_COLORAPP_GAMUT;Контроль гаммы (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Позволяет контролировать гамму в режиме L*a*b*. TP_COLORAPP_HUE;Цвет (h) TP_COLORAPP_MODEL;Модель точки белого -TP_COLORAPP_SHARPCIE;--неиспользуемый-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--неиспользуемый-- +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Абсолютная яркость при просмотре.\n(Обычно 16 кд/м²) TP_CROP_FIXRATIO;Пропорция: TP_CROP_GTDIAGONALS;Правило диагоналей TP_CROP_GTEPASSPORT;Биометрический паспорт @@ -986,11 +1062,12 @@ TP_CROP_GTNONE;Нет TP_CROP_GTRULETHIRDS;Правило третей TP_CROP_GTTRIANGLE1;Золотые треугольники 1 TP_CROP_GTTRIANGLE2;Золотые треугольники 2 -TP_CROP_GUIDETYPE;Тип направляющей: +TP_CROP_GUIDETYPE;Направляющие: TP_CROP_H;Высота TP_CROP_LABEL;Кадрирование TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Включить режим обрезки +TP_CROP_RESETCROP;Сбросить +TP_CROP_SELECTCROP;Выбрать TP_CROP_W;Ширина TP_CROP_X;x TP_CROP_Y;y @@ -999,6 +1076,10 @@ TP_DARKFRAME_LABEL;Темновой кадр TP_DEFRINGE_LABEL;Подавление ореолов TP_DEFRINGE_RADIUS;Радиус TP_DEFRINGE_THRESHOLD;Порог +TP_DEHAZE_DEPTH;Глубина +TP_DEHAZE_LABEL;Убрать дымку +TP_DEHAZE_SHOW_DEPTH_MAP;Показать маску глубин +TP_DEHAZE_STRENGTH;Сила TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Автоматический глобальный TP_DIRPYRDENOISE_CHROMINANCE_BLUEYELLOW;Цветность: синий-жёлтый TP_DIRPYRDENOISE_CHROMINANCE_CURVE;Кривая цветности @@ -1052,11 +1133,11 @@ TP_EPD_LABEL;Тональная компрессия TP_EPD_REWEIGHTINGITERATES;Перевзвешивание проходов TP_EPD_SCALE;Масштаб TP_EPD_STRENGTH;Интенсивность -TP_EPD_TOOLTIP;Тональная компрессия возможна в режиме L*a*b* (по умолчанию) и CIECAM02.\nВ режиме L*a*b* тональная компрессия также может быть использована для остаточного изображения Вейвлетов.\n\n.Для использования модели тональной компрессии CIECAM02 включите следующие настройки:\n1. CIECAM02\n2. Алгоритм Яркость+Красочность (QM)\n3. Тональная компрессия, использующая яркость CIECAM02 (Q). TP_EXPOSURE_AUTOLEVELS;Автоуровни TP_EXPOSURE_AUTOLEVELS_TIP;Переключение выполнения автоуровней для автоматической установки параметров экспозиции на основе анализа изображения TP_EXPOSURE_BLACKLEVEL;Уровень чёрного TP_EXPOSURE_BRIGHTNESS;Яркость +TP_EXPOSURE_CLAMPOOG;Обрезать цвета за пределами охвата TP_EXPOSURE_CLIP;Ограничить TP_EXPOSURE_CLIP_TIP;Часть пикселей, обрезаемая операцией автоматических уровней TP_EXPOSURE_COMPRHIGHLIGHTS;Сжатие светов @@ -1126,7 +1207,7 @@ TP_ICM_DCPILLUMINANT;Источник света TP_ICM_DCPILLUMINANT_INTERPOLATED;Интерполированный TP_ICM_INPUTCAMERA;По умолчанию для камеры TP_ICM_INPUTCAMERAICC;Автоопределенный для камеры -TP_ICM_INPUTCAMERAICC_TOOLTIP;Использовать входящий цветовой профиль RawTherapee (DCP или ICC) для конкретной камеры. Эти профили более точные, чем простые матрицы. Доступны не для всех камер. Эти профили хранятся в папках /iccprofiles/input и /dcpprofiles и автоматически выбираются на основе сопоставления имени файла и названия модели камеры. +TP_ICM_INPUTCAMERAICC_TOOLTIP;Использовать входящий цветовой профиль RawTherapee (DCP или ICC) для конкретной камеры. Эти профили более точные, чем простые матрицы. Доступны не для всех камер. Эти профили хранятся в каталогах /iccprofiles/input и /dcpprofiles и автоматически выбираются на основе сопоставления имени файла и названия модели камеры. TP_ICM_INPUTCAMERA_TOOLTIP;Использовать простую цветовую матрицу из dcraw, улучшенную версию от RawTherapee (если она доступна для соотв. камеры) или встроенную в DNG. TP_ICM_INPUTCUSTOM;Пользовательский TP_ICM_INPUTCUSTOM_TOOLTIP;Выбор собственного файла профиля DCP/ICC для камеры @@ -1185,10 +1266,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Защита красных тонов и оттен TP_LENSGEOM_AUTOCROP;Автокадрирование TP_LENSGEOM_FILL;Автозаполнение TP_LENSGEOM_LABEL;Геометрия +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Автоматически +TP_LENSPROFILE_CORRECTION_LCPFILE;Файл LCP +TP_LENSPROFILE_CORRECTION_MANUAL;Вручную TP_LENSPROFILE_LABEL;Профиль коррекции объектива -TP_LENSPROFILE_USECA;Корректировать ХА -TP_LENSPROFILE_USEDIST;Корректировать дисторсию -TP_LENSPROFILE_USEVIGN;Корректировать виньетирование +TP_LENSPROFILE_LENS_WARNING;Внимание: кроп-фактор, используемый для профилирования объектива больше чем кроп-фактор камеры. Результат может быть ошибочным. +TP_LENSPROFILE_MODE_HEADER;Выбор профиля объектива: +TP_LENSPROFILE_USE_CA;Хроматические абберации +TP_LENSPROFILE_USE_GEOMETRIC;Геометрия +TP_LENSPROFILE_USE_HEADER;Выбор искажений для коррекции: +TP_LENSPROFILE_USE_VIGNETTING;Виньетирование TP_LOCALCONTRAST_AMOUNT;Величина TP_LOCALCONTRAST_DARKNESS;Тёмные тона TP_LOCALCONTRAST_LABEL;Локальный контраст @@ -1212,16 +1299,31 @@ TP_PERSPECTIVE_LABEL;Перспектива TP_PERSPECTIVE_VERTICAL;Вертикальная TP_PFCURVE_CURVEEDITOR_CH;Цвет TP_PFCURVE_CURVEEDITOR_CH_TOOLTIP;Контроль силы подавления в зависимости от цвета.\nВыше - сильней, ниже - слабей. +TP_PREPROCESS_DEADPIXFILT;Битых пиксели +TP_PREPROCESS_DEADPIXFILT_TOOLTIP;Фильтр пытается подавить битые пиксели. TP_PREPROCESS_GREENEQUIL;Выравнивание зелёного +TP_PREPROCESS_HOTPIXFILT;Горячие пиксели +TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Фильтр пытается подавить горячие пиксели. TP_PREPROCESS_LABEL;Предобработка TP_PREPROCESS_LINEDENOISE;Фильтр линейного шума TP_PREPROCESS_NO_FOUND;Ничего не найдено TP_RAWCACORR_AUTO;Автоматическая коррекция +TP_RAWCACORR_AUTOIT;Подходов +TP_RAWCACORR_AVOIDCOLORSHIFT;Избегать сдвига цветов TP_RAWCACORR_CABLUE;Синий TP_RAWCACORR_CARED;Красный +TP_RAWCACORR_CASTR;Сила TP_RAWEXPOS_BLACKS;Уровни черного +TP_RAWEXPOS_BLACK_0;Зелёный 1 (ведущий) +TP_RAWEXPOS_BLACK_1;Красный +TP_RAWEXPOS_BLACK_2;Синий +TP_RAWEXPOS_BLACK_3;Зелёный 2 +TP_RAWEXPOS_BLACK_BLUE;Синий +TP_RAWEXPOS_BLACK_GREEN;Зелёный +TP_RAWEXPOS_BLACK_RED;Красный TP_RAWEXPOS_LINEAR;Коррекция точки белого TP_RAWEXPOS_PRESER;Сохранение пересветов +TP_RAWEXPOS_RGB;Красный, Зелёный, Синий TP_RAWEXPOS_TWOGREEN;Два зеленых совместно TP_RAW_AHD;AHD TP_RAW_AMAZE;AMaZE @@ -1247,9 +1349,11 @@ TP_RAW_MONO;Моно TP_RAW_NONE;Нет (Показать структуру сенсора) TP_RAW_PIXELSHIFT;Сдвиг пикселей TP_RAW_RCD;RCD +TP_RAW_RCDVNG4;RCD+VNG4 TP_RAW_SENSOR_BAYER_LABEL;Сенсор с матрицей Байера TP_RAW_SENSOR_XTRANS_LABEL;Сенсор с матрицей X-Trans TP_RAW_VNG4;VNG4 +TP_RESIZE_ALLOW_UPSCALING;Разрешить увеличение TP_RESIZE_APPLIESTO;Применить к: TP_RESIZE_CROPPEDAREA;Кадрированной области TP_RESIZE_FITBOX;Ограничивающую рамку @@ -1292,6 +1396,7 @@ TP_SHARPENEDGE_LABEL;Края TP_SHARPENEDGE_PASSES;Подходы TP_SHARPENEDGE_THREE;Только освещенность TP_SHARPENING_AMOUNT;Величина +TP_SHARPENING_CONTRAST;Порог контраста TP_SHARPENING_EDRADIUS;Радиус TP_SHARPENING_EDTOLERANCE;Границы краёв TP_SHARPENING_HALOCONTROL;Регулировка хром. аберраций @@ -1307,9 +1412,16 @@ TP_SHARPENING_RLD_ITERATIONS;Повторений TP_SHARPENING_THRESHOLD;Порог TP_SHARPENING_USM;Маска размытия TP_SHARPENMICRO_AMOUNT;Величина +TP_SHARPENMICRO_CONTRAST;Порог контраста TP_SHARPENMICRO_LABEL;Микроконтраст TP_SHARPENMICRO_MATRIX;Матрица 3×3 вместо 5×5 TP_SHARPENMICRO_UNIFORMITY;Равномерность +TP_SOFTLIGHT_LABEL;Мягкий свет +TP_SOFTLIGHT_STRENGTH;Сила +TP_TM_FATTAL_AMOUNT;Величина +TP_TM_FATTAL_ANCHOR;Якорь +TP_TM_FATTAL_LABEL;Компрессия динамического диапазона +TP_TM_FATTAL_THRESHOLD;Детализация TP_VIBRANCE_AVOIDCOLORSHIFT;Избегать сдвига цветов TP_VIBRANCE_CURVEEDITOR_SKINTONES;ОО TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Оттенки кожи @@ -1370,6 +1482,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;Светодиодный TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Метод +TP_WBALANCE_PICKER;Выбрать TP_WBALANCE_SHADE;Тень TP_WBALANCE_SIZE;Размер пипетки: TP_WBALANCE_SOLUX35;Solux 3500K @@ -1386,7 +1499,7 @@ ZOOMPANEL_100;(100%) ZOOMPANEL_NEWCROPWINDOW;Новое окно детального просмотра ZOOMPANEL_ZOOM100;Масштаб 100%\nГорячая клавиша: z ZOOMPANEL_ZOOMFITCROPSCREEN;Уместить кадрированное изображение по размеру экрану\nГорячая клавиша: f -ZOOMPANEL_ZOOMFITSCREEN;Уместить изображение по размерам окна\nГорячая клавиша: Alt-f +ZOOMPANEL_ZOOMFITSCREEN;Уместить изображение по размерам окна\nГорячая клавиша: Alt-F ZOOMPANEL_ZOOMIN;Приблизить\nГорячая клавиша: + ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - @@ -1394,27 +1507,23 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!ADJUSTER_RESET_TO_DEFAULT;Click - reset to default value.\nCtrl+click - reset to initial value. -!BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !EDIT_OBJECT_TOOLTIP;Displays a widget on the preview window which lets you adjust this tool. !EDIT_PIPETTE_TOOLTIP;To add an adjustment point to the curve, hold the Ctrl key while left-clicking the desired spot in the image preview.\nTo adjust the point, hold the Ctrl key while left-clicking the corresponding area in the preview, then let go of Ctrl (unless you desire fine control) and while still holding the left mouse button move the mouse up or down to move that point up or down in the curve. -!EXIFFILTER_IMAGETYPE;Image type -!EXIFPANEL_SHOWALL;Show all !EXPORT_BYPASS;Processing steps to bypass !EXPORT_BYPASS_EQUALIZER;Bypass Wavelet Levels !EXPORT_PIPELINE;Processing pipeline !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality. !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) -!FILEBROWSER_POPUPRANK0;Unrank +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !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_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. !HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. !HISTORY_MSG_235;B&W - CM - Auto @@ -1459,12 +1568,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_290;Black Level - Red !HISTORY_MSG_291;Black Level - Green !HISTORY_MSG_292;Black Level - Blue -!HISTORY_MSG_293;Film Simulation -!HISTORY_MSG_294;Film Simulation - Strength -!HISTORY_MSG_295;Film Simulation - Film !HISTORY_MSG_296;NR - Luminance curve !HISTORY_MSG_297;NR - Mode -!HISTORY_MSG_298;Dead pixel filter !HISTORY_MSG_299;NR - Chrominance curve !HISTORY_MSG_301;NR - Luma control !HISTORY_MSG_302;NR - Chroma method @@ -1605,7 +1710,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_437;Retinex - M - Method !HISTORY_MSG_438;Retinex - M - Equalizer !HISTORY_MSG_439;Retinex - Process -!HISTORY_MSG_440;CbDL - Method !HISTORY_MSG_441;Retinex - Gain transmission !HISTORY_MSG_442;Retinex - Scale !HISTORY_MSG_443;Output black point compensation @@ -1634,15 +1738,23 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_482;CAM02 - Green scene !HISTORY_MSG_483;CAM02 - Yb scene !HISTORY_MSG_484;CAM02 - Auto Yb scene -!HISTORY_MSG_485;Lens Correction -!HISTORY_MSG_486;Lens Correction - Camera -!HISTORY_MSG_487;Lens Correction - Lens -!HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold -!HISTORY_MSG_490;DRC - Amount -!HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colors +!HISTORY_MSG_489;DRC - Detail !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - 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 @@ -1659,9 +1771,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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_MSG_SH_COLORSPACE;S/H - Colorspace !ICCPROFCREATOR_COPYRIGHT;Copyright: !ICCPROFCREATOR_COPYRIGHT_RESET_TOOLTIP;Reset to the default copyright, granted to "RawTherapee, CC0" !ICCPROFCREATOR_CUSTOM;Custom @@ -1669,37 +1779,11 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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: @@ -1730,18 +1814,14 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default -!OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. -!OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. -!OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !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_AVOIDCOLORSHIFT;CA avoid color shift @@ -1750,21 +1830,16 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PARTIALPASTE_RAW_IMAGENUM;Sub-image !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_RETINEX;Retinex -!PARTIALPASTE_SOFTLIGHT;Soft light -!PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs -!PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area -!PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop -!PREFERENCES_CROP_GUIDES_FRAME;Frame -!PREFERENCES_CROP_GUIDES_FULL;Original -!PREFERENCES_CROP_GUIDES_NONE;None -!PREFERENCES_DIRECTORIES;Directories +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1774,44 +1849,25 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PREFERENCES_HISTOGRAMWORKING;Use working profile for main histogram and Navigator !PREFERENCES_HISTOGRAM_TOOLTIP;If enabled, the working profile is used for rendering the main histogram and the Navigator panel, otherwise the gamma-corrected output profile is used. !PREFERENCES_IMG_RELOAD_NEEDED;These changes require the image to be reloaded (or a new image to be opened) to take effect. -!PREFERENCES_INSPECT_LABEL;Inspect -!PREFERENCES_INSPECT_MAXBUFFERS_LABEL;Maximum number of cached images !PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2. !PREFERENCES_MAXRECENTFOLDERS;Maximum number of recent folders !PREFERENCES_MONINTENT;Default rendering intent !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color -!PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. !PREFERENCES_PARSEDEXTUPHINT;Move selected extension up in the list. -!PREFERENCES_PERFORMANCE_THREADS;Threads -!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_PRINTER;Printer (Soft-Proofing) !PREFERENCES_PROFILESAVEBOTH;Save processing profile both to the cache and next to the input file !PREFERENCES_PROFILESAVELOCATION;Processing profile saving location -!PREFERENCES_PROFILE_NONE;None !PREFERENCES_PRTINTENT;Rendering intent !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset -!PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar -!PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview -!PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering -!PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise -!PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PROFILEPANEL_PDYNAMIC;Dynamic -!QINFO_FRAMECOUNT;%2 frames -!QINFO_HDR;HDR / %2 frame(s) -!QINFO_PIXELSHIFT;Pixel Shift / %2 frame(s) !SAMPLEFORMAT_0;Unknown data format !SAMPLEFORMAT_1;8-bit unsigned !SAMPLEFORMAT_2;16-bit unsigned @@ -1824,16 +1880,14 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !SAVEDLG_SUBSAMP_TOOLTIP;Best compression:\nJ:a:b 4:2:0\nh/v 2/2\nChroma halved horizontally and vertically.\n\nBalanced:\nJ:a:b 4:2:2\nh/v 2/1\nChroma halved horizontally.\n\nBest quality:\nJ:a:b 4:4:4\nh/v 1/1\nNo chroma subsampling. !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool -!TP_BWMIX_MIXC;Channel Mixer -!TP_BWMIX_NEUTRAL;Reset +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_CBDL_AFT;After Black-and-White !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_HUE_TOOLTIP;Hue (h) - angle between 0° and 360°. !TP_COLORAPP_LABEL;CIE Color Appearance Model 2002 @@ -1842,6 +1896,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values @@ -1868,9 +1923,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1884,6 +1936,25 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1938,7 +2009,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_DIRPYREQUALIZER_SKIN_TOOLTIP;At -100 skin-tones are targetted.\nAt 0 all tones are treated equally.\nAt +100 skin-tones are protected while all other tones are affected. !TP_DIRPYREQUALIZER_TOOLTIP;Attempts to reduce artifacts in the transitions between skin colors (hue, chroma, luma) and the rest of the image. !TP_DISTORTION_AUTO_TIP;Automatically corrects lens distortion in raw files by matching it against the embedded JPEG image if one exists and has had its lens disortion auto-corrected by the camera. -!TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOS_BLACKPOINT_LABEL;Raw Black Points !TP_EXPOS_WHITEPOINT_LABEL;Raw White Points !TP_FILMSIMULATION_SLOWPARSEDIR;RawTherapee is configured to look for Hald CLUT images, which are used for the Film Simulation tool, in a folder which is taking too long to load.\nGo to Preferences > Image Processing > Film Simulation\nto see which folder is being used. You should either point RawTherapee to a folder which contains only Hald CLUT images and nothing more, or to an empty folder if you don't want to use the Film Simulation tool.\n\nRead the Film Simulation article in RawPedia for more information.\n\nDo you want to cancel the scan now? @@ -1961,30 +2031,15 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !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 -!TP_PREPROCESS_HOTPIXFILT_TOOLTIP;Tries to suppress hot pixels. !TP_PREPROCESS_LINEDENOISE_DIRECTION;Direction !TP_PREPROCESS_LINEDENOISE_DIRECTION_BOTH;Both !TP_PREPROCESS_LINEDENOISE_DIRECTION_HORIZONTAL;Horizontal !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. -!TP_RAWCACORR_AUTOIT;Iterations -!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift -!TP_RAWCACORR_CASTR;Strength -!TP_RAWEXPOS_BLACK_0;Green 1 (lead) -!TP_RAWEXPOS_BLACK_1;Red -!TP_RAWEXPOS_BLACK_2;Blue -!TP_RAWEXPOS_BLACK_3;Green 2 -!TP_RAWEXPOS_BLACK_BLUE;Blue -!TP_RAWEXPOS_BLACK_GREEN;Green -!TP_RAWEXPOS_BLACK_RED;Red -!TP_RAWEXPOS_RGB;Red, Green, Blue +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) !TP_RAW_2PASS;1-pass+fast !TP_RAW_3PASSBEST;3-pass (Markesteijn) @@ -1992,6 +2047,8 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RAW_AMAZEVNG4;AMaZE+VNG4 !TP_RAW_BORDER;Border !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_IMAGENUM;Sub-image !TP_RAW_IMAGENUM_TOOLTIP;Some raw files consist of several sub-images (Pentax/Sony Pixel Shift, Pentax 3-in-1 HDR, Canon Dual Pixel).\n\nWhen using any demosaicing method other than Pixel Shift, this selects which sub-image is used.\n\nWhen using the Pixel Shift demosaicing method on a Pixel Shift raw, all sub-images are used, and this selects which sub-image should be used for moving parts. @@ -2024,13 +2081,11 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RAW_PIXELSHIFTSIGMA_TOOLTIP;The default radius of 1.0 usually fits well for base ISO.\nIncrease the value for high ISO shots, 5.0 is a good starting point.\nWatch the motion mask while changing the value. !TP_RAW_PIXELSHIFTSMOOTH;Smooth transitions !TP_RAW_PIXELSHIFTSMOOTH_TOOLTIP;Smooth transitions between areas with motion and areas without.\nSet to 0 to disable transition smoothing.\nSet to 1 to either get the AMaZE/LMMSE result of the selected frame (depending on whether "Use LMMSE" is selected), or the median of all four frames if "Use median" is selected. -!TP_RAW_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 -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_LH_TOOLTIP;Strength according to hue Strength=f(H)\nThis curve also acts on chroma when using the "Highlight" retinex method. !TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts! !TP_RETINEX_EQUAL;Equalizer @@ -2064,7 +2119,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2103,14 +2158,6 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !TP_RETINEX_VIEW_TRAN;Transmission - Auto !TP_RETINEX_VIEW_TRAN2;Transmission - Fixed !TP_RETINEX_VIEW_UNSHARP;Unsharp mask -!TP_SHARPENING_CONTRAST;Contrast threshold -!TP_SHARPENMICRO_CONTRAST;Contrast threshold -!TP_SOFTLIGHT_LABEL;Soft Light -!TP_SOFTLIGHT_STRENGTH;Strength -!TP_TM_FATTAL_AMOUNT;Amount -!TP_TM_FATTAL_ANCHOR;Anchor -!TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index e69c9b874..d6e357068 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -85,8 +85,6 @@ FILEBROWSER_AUTOFLATFIELD;Аутоматски одреди равно поље FILEBROWSER_BROWSEPATHBUTTONHINT;Кликните за одлазак на узабрану путању FILEBROWSER_BROWSEPATHHINT;Укуцајте путању за разгледање (Ctrl-o поставља фокус, Ctrl-Enter приказује у разгледачу датотека);nПречице путања: ~ — лични директоријум, ! — директоријум са сликама FILEBROWSER_CACHE;Остава -FILEBROWSER_CACHECLEARFROMFULL;Очисти из оставе — све -FILEBROWSER_CACHECLEARFROMPARTIAL;Очисти из оставе — половично FILEBROWSER_CLEARPROFILE;Обриши профил FILEBROWSER_COLORLABEL_TOOLTIP;Натпис у боји.\n\nКористите приложени мени или пречице:\nShift-Ctrl-0 Без боје\nShift-Ctrl-1 Црвена\nShift-Ctrl-2 Жута\nShift-Ctrl-3 Зелена\nShift-Ctrl-4 Плана\nShift-Ctrl-5 Љубичаста FILEBROWSER_COPYPROFILE;Умножи профил @@ -599,15 +597,9 @@ PREFERENCES_BEHAVIOR;Понашање PREFERENCES_BEHSETALL;Све у „Постави“ PREFERENCES_BEHSETALLHINT;Поставља све параметре у режим Постави.\nЊихово подешавање помоћу алата из панела за заказано ће бити апсолутне вредности као што су и изабране. PREFERENCES_BLACKBODY;Обична сијалица -PREFERENCES_CACHECLEARALL;Обриши све -PREFERENCES_CACHECLEARPROFILES;Обриши профиле -PREFERENCES_CACHECLEARTHUMBS;Обриши приказе PREFERENCES_CACHEMAXENTRIES;Највећи број мест у остави PREFERENCES_CACHEOPTS;Подешавање оставе PREFERENCES_CACHETHUMBHEIGHT;Највећа висина приказа -PREFERENCES_CIEART;CIECAM02 оптимизација -PREFERENCES_CIEART_LABEL;Једнострука тачност уместо двоструке -PREFERENCES_CIEART_TOOLTIP;Уколико је омогућено, ради CIECAM02 рачунања са једноструком тачношћу уместо са двоструком. Ово даје мало повећање брзине уз неизоставан губитак на квалитету. PREFERENCES_CLIPPINGIND;Показивачи одсечених делова PREFERENCES_CUSTPROFBUILD;Изградња произвољног почетног профила слике PREFERENCES_CUSTPROFBUILDHINT;Извршна датотека (или скрипта) која се позива када изграђујете нови почетни профил за слику.nПрихвата параметре из командне линије ради прављења .pp3 датотеке на основу неких правила:n[Путања до RAW/JPG] [Путања подразумеваног профила] [Бленда] [Експозиција у s] [Жижна дужина mm] [ИСО] [Објектив] [Фото-апарат] @@ -615,7 +607,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Кључни формати PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Назив PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;БрОзнаке PREFERENCES_CUSTPROFBUILDPATH;Извршна путања -PREFERENCES_CUTOVERLAYBRUSH;Маска исецања боје/провидног PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -634,7 +625,6 @@ PREFERENCES_DIRSOFTWARE;Директоријум са инсталацијом PREFERENCES_EDITORLAYOUT;Размештај програма PREFERENCES_EXTERNALEDITOR;Спољни уређивач PREFERENCES_FBROWSEROPTS;Опције разгледача датотеке -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Прикажи алатке у једном реду PREFERENCES_FILEFORMAT;Формат датотеке PREFERENCES_FLATFIELDFOUND;Нађено PREFERENCES_FLATFIELDSDIR;Директоријум за равна поља @@ -693,9 +683,7 @@ PREFERENCES_PROFILESAVECACHE;Сачувај параметре обраде у PREFERENCES_PROFILESAVEINPUT;Сачувај парамтре обраде поред улазне датотеке PREFERENCES_PROPERTY;Особина PREFERENCES_PSPATH;Директоријум са инсталираним Адобе Фотошопом -PREFERENCES_SELECTFONT;Изаберите фонт PREFERENCES_SELECTLANG;Језик -PREFERENCES_SELECTTHEME;Тема PREFERENCES_SET;Постави PREFERENCES_SHOWBASICEXIF;Прикажи основне Exif податке PREFERENCES_SHOWDATETIME;Прикажи датум и време @@ -846,11 +834,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Изврће слику хоризонтално TP_COARSETRAF_TOOLTIP_ROTLEFT;Окреће слику улево TP_COARSETRAF_TOOLTIP_ROTRIGHT;Окреће слику удесно TP_COARSETRAF_TOOLTIP_VFLIP;Изврће слику вертикално -TP_COLORAPP_ADAPTSCENE;Луминозност сцене -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Апосолутна луминозност окружења сцене (cd/m²).\n1) Рачуна се из Exif података:\nБрзина затварача - ИСО вредност - отвор бленде - корекција експозиције камере.\n2) Рачуна се из беле тачке сирове слике унутар дела програма за компензацију експозиције. -TP_COLORAPP_ADAPTVIEWING;Луминозност за преглед (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Апсолутна луминозност окружења за преглед\n(обично 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Уколико је штиклирано (препоручено), програм рачуна оптималне вредности на основу Exif података.\nЗа ручно постављање ових вредности, одштиклирајте ово поље. TP_COLORAPP_ALGO;Алгоритам TP_COLORAPP_ALGO_ALL;Све TP_COLORAPP_ALGO_JC;Светлина + Боја (JC) @@ -880,8 +863,6 @@ TP_COLORAPP_CURVEEDITOR3;Крива боја TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Подешава било хрому, засићеност или живост боја.\n\nПриказује хистограм хроматисе (Лаб) пре CIECAM02.\nУколико је омогућено „CIECAM02 излазни хистограм у кривуљама“, приказује хистограм за C, s или M након CIECAM02.\n\nC, s и M се не приказују у главној површи за хистограм.\nЗа конаачни изла погледајте главну површ хистограма. TP_COLORAPP_DATACIE;CIECAM02 излазни хистограм у кривуљама TP_COLORAPP_DATACIE_TOOLTIP;Када је омогућено, хистограми у CIECAM02 кривим приказују приближне вредности/опсеге за J или Q, и C, s или M након CIECAM02 подешавања.\nОвај избор не утиче на приказ у главној површи за хистограм.\n\nКада је искључено, хистограми у CIECAM02 кривим приказују Лаб вредности пре CIECAM02 подешавања. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Уколико је штиклирано (препоручено), програм рачина оптималне вредности, које се затим користе за CAT02, а такође за читав CIECAM02.\nДа би поставили вредности ручне, одштиклирајте ово поље (препоручене су вредности изнад 65). -TP_COLORAPP_DEGREE_TOOLTIP;Количина преображаја CIE хроматске адаптације2002. TP_COLORAPP_GAMUT;Контрола гамута (Лаб) TP_COLORAPP_GAMUT_TOOLTIP;Омогућава контролу гамута у Лаб режиму. TP_COLORAPP_HUE;Нијанса (h) @@ -896,8 +877,6 @@ TP_COLORAPP_MODEL;WP модел TP_COLORAPP_MODEL_TOOLTIP;Модел беле-тачке.\n\nБаланс беле [RT] + [излаз]: баланс беле из програма се користи за кадар, CIECAM02 се поставља на D50, а баланс беле излазног уређаја се одређује из Подешавања > Управљање бојама.\n\nБаланс беле [RT+CAT02] + [излаз]: подешавања баланса беле из програма се користе од стране CAT02, а баланс беле излазног уређаја се одређује из Подешавања - Управљање бојама. TP_COLORAPP_RSTPRO;Заштита црвене и боје коже TP_COLORAPP_RSTPRO_TOOLTIP;Заштита црвене боје и боје коже (клизачи и криве). -TP_COLORAPP_SHARPCIE;--не користи се-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--не користи се-- TP_COLORAPP_SURROUND;Окружено TP_COLORAPP_SURROUND_AVER;Просечно TP_COLORAPP_SURROUND_DARK;Тамно @@ -916,6 +895,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Светлина TP_COLORAPP_TCMODE_SATUR;Засићеност TP_COLORAPP_TONECIE;Мапирање тонова у CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Уколико је искључена ова опција, мапирање тонова се врши у Лаб окружењу.\nУколико је укључена, мапирање се врши помоћу CIECAM02.\nМорате користити алат за мапирање тонова како би ова опција била примењена. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Апсолутна луминозност окружења за преглед\n(обично 16cd/m²). TP_COLORAPP_WBCAM;Баланс беле [RT+CAT02] + [излаз] TP_COLORAPP_WBRT;Баланс беле [RT] + [излаз] TP_CROP_FIXRATIO;Сразмерно: @@ -929,7 +909,6 @@ TP_CROP_GUIDETYPE;Вођицe: TP_CROP_H;В TP_CROP_LABEL;Исецање TP_CROP_PPI;ППИ= -TP_CROP_SELECTCROP; Изабери област TP_CROP_W;Ш TP_CROP_X;x TP_CROP_Y;y @@ -965,7 +944,6 @@ TP_EPD_LABEL;Мапирање тонова TP_EPD_REWEIGHTINGITERATES;Број поновних мерења TP_EPD_SCALE;Размера TP_EPD_STRENGTH;Јачина -TP_EPD_TOOLTIP;Мапирање тонова је могуће у Лаб (стандардном) или CIECAM02 режиму.\n\nЗа рад у CIECAM02 режиму укључите:\n1. CIECAM02\n2. Алгоритам="Осветљење + живописност (QM)"\n3. "Мапирање тонова у CIECAM02 осветљењу (Q)" TP_EXPOSURE_AUTOLEVELS;Ауто-нивои TP_EXPOSURE_AUTOLEVELS_TIP;Омогућава аутоматско одређивање нивоа, који подешава клизаче експозиције на основу податка о самој слици.\nУкључује чупање светлих делова уколико је неопходно. TP_EXPOSURE_BLACKLEVEL;Црна @@ -1091,9 +1069,6 @@ TP_LENSGEOM_AUTOCROP;Сам исеци TP_LENSGEOM_FILL;Сам попуни TP_LENSGEOM_LABEL;Објектив и геометрија TP_LENSPROFILE_LABEL;Профили за исправљање изобличења објектива -TP_LENSPROFILE_USECA;Исправљање хром. аберација -TP_LENSPROFILE_USEDIST;Исправљање изобличења -TP_LENSPROFILE_USEVIGN;Исправљање вињетарења TP_NEUTRAL;Неутрално TP_NEUTRAL_TIP;Враћа клизаче експозиције на неутралне вредности.\nПримењује се на исте контроле као у Ауто нивои, без обзира на то да ли сте користили Ауто нивое или не. TP_PCVIGNETTE_FEATHER;Умекшавање @@ -1272,6 +1247,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !DIRBROWSER_FOLDERS;Folders !DONT_SHOW_AGAIN;Don't show this message again. @@ -1279,6 +1255,10 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1294,6 +1274,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality. !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_POPUPCOLORLABEL0;Label: None !FILEBROWSER_POPUPCOLORLABEL1;Label: Red !FILEBROWSER_POPUPCOLORLABEL2;Label: Yellow @@ -1319,6 +1301,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !FILECHOOSER_FILTER_TIFF;TIFF files !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... @@ -1550,14 +1533,32 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1581,6 +1582,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1650,17 +1652,13 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !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. -!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 !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1677,6 +1675,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control @@ -1695,13 +1694,24 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1714,6 +1724,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1732,7 +1743,6 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1751,15 +1761,13 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1780,7 +1788,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. !THRESHOLDSELECTOR_BL;Bottom-left -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_FILTER_TOOLTIP;The color filter simulates shots taken with a colored filter placed in front of the lens. Colored filters reduce the transmission of specific color ranges and therefore affect their lightness. E.g. a red filter darkens blue skies. !TP_BWMIX_FILTER_YELLOW;Yellow !TP_BWMIX_GAMMA;Gamma Correction @@ -1791,13 +1799,13 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1811,6 +1819,25 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1839,6 +1866,12 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1926,6 +1959,15 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1945,10 +1987,10 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACK_0;Green 1 (lead) @@ -1969,6 +2011,8 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2018,10 +2062,10 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !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 -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2059,7 +2103,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2105,7 +2149,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 @@ -2269,6 +2313,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !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". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: f diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index 727cdeb9a..4d833d202 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -85,8 +85,6 @@ FILEBROWSER_AUTOFLATFIELD;Automatski odredi ravno polje FILEBROWSER_BROWSEPATHBUTTONHINT;Kliknite za odlazak na uzabranu putanju FILEBROWSER_BROWSEPATHHINT;Ukucajte putanju za razgledanje (Ctrl-o postavlja fokus, Ctrl-Enter prikazuje u razgledaču datoteka);nPrečice putanja: ~ — lični direktorijum, ! — direktorijum sa slikama FILEBROWSER_CACHE;Ostava -FILEBROWSER_CACHECLEARFROMFULL;Očisti iz ostave — sve -FILEBROWSER_CACHECLEARFROMPARTIAL;Očisti iz ostave — polovično FILEBROWSER_CLEARPROFILE;Obriši profil FILEBROWSER_COLORLABEL_TOOLTIP;Natpis u boji.\n\nKoristite priloženi meni ili prečice:\nShift-Ctrl-0 Bez boje\nShift-Ctrl-1 Crvena\nShift-Ctrl-2 Žuta\nShift-Ctrl-3 Zelena\nShift-Ctrl-4 Plana\nShift-Ctrl-5 Ljubičasta FILEBROWSER_COPYPROFILE;Umnoži profil @@ -599,15 +597,9 @@ PREFERENCES_BEHAVIOR;Ponašanje PREFERENCES_BEHSETALL;Sve u „Postavi“ PREFERENCES_BEHSETALLHINT;Postavlja sve parametre u režim Postavi.\nNjihovo podešavanje pomoću alata iz panela za zakazano će biti apsolutne vrednosti kao što su i izabrane. PREFERENCES_BLACKBODY;Obična sijalica -PREFERENCES_CACHECLEARALL;Obriši sve -PREFERENCES_CACHECLEARPROFILES;Obriši profile -PREFERENCES_CACHECLEARTHUMBS;Obriši prikaze PREFERENCES_CACHEMAXENTRIES;Najveći broj mest u ostavi PREFERENCES_CACHEOPTS;Podešavanje ostave PREFERENCES_CACHETHUMBHEIGHT;Najveća visina prikaza -PREFERENCES_CIEART;CIECAM02 optimizacija -PREFERENCES_CIEART_LABEL;Jednostruka tačnost umesto dvostruke -PREFERENCES_CIEART_TOOLTIP;Ukoliko je omogućeno, radi CIECAM02 računanja sa jednostrukom tačnošću umesto sa dvostrukom. Ovo daje malo povećanje brzine uz neizostavan gubitak na kvalitetu. PREFERENCES_CLIPPINGIND;Pokazivači odsečenih delova PREFERENCES_CUSTPROFBUILD;Izgradnja proizvoljnog početnog profila slike PREFERENCES_CUSTPROFBUILDHINT;Izvršna datoteka (ili skripta) koja se poziva kada izgrađujete novi početni profil za sliku.nPrihvata parametre iz komandne linije radi pravljenja .pp3 datoteke na osnovu nekih pravila:n[Putanja do RAW/JPG] [Putanja podrazumevanog profila] [Blenda] [Ekspozicija u s] [Žižna dužina mm] [ISO] [Objektiv] [Foto-aparat] @@ -615,7 +607,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Ključni formati PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Naziv PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;BrOznake PREFERENCES_CUSTPROFBUILDPATH;Izvršna putanja -PREFERENCES_CUTOVERLAYBRUSH;Maska isecanja boje/providnog PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -634,7 +625,6 @@ PREFERENCES_DIRSOFTWARE;Direktorijum sa instalacijom PREFERENCES_EDITORLAYOUT;Razmeštaj programa PREFERENCES_EXTERNALEDITOR;Spoljni uređivač PREFERENCES_FBROWSEROPTS;Opcije razgledača datoteke -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Prikaži alatke u jednom redu PREFERENCES_FILEFORMAT;Format datoteke PREFERENCES_FLATFIELDFOUND;Nađeno PREFERENCES_FLATFIELDSDIR;Direktorijum za ravna polja @@ -693,9 +683,7 @@ PREFERENCES_PROFILESAVECACHE;Sačuvaj parametre obrade u ostavu PREFERENCES_PROFILESAVEINPUT;Sačuvaj paramtre obrade pored ulazne datoteke PREFERENCES_PROPERTY;Osobina PREFERENCES_PSPATH;Direktorijum sa instaliranim Adobe Fotošopom -PREFERENCES_SELECTFONT;Izaberite font PREFERENCES_SELECTLANG;Jezik -PREFERENCES_SELECTTHEME;Tema PREFERENCES_SET;Postavi PREFERENCES_SHOWBASICEXIF;Prikaži osnovne Exif podatke PREFERENCES_SHOWDATETIME;Prikaži datum i vreme @@ -846,11 +834,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Izvrće sliku horizontalno TP_COARSETRAF_TOOLTIP_ROTLEFT;Okreće sliku ulevo TP_COARSETRAF_TOOLTIP_ROTRIGHT;Okreće sliku udesno TP_COARSETRAF_TOOLTIP_VFLIP;Izvrće sliku vertikalno -TP_COLORAPP_ADAPTSCENE;Luminoznost scene -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Aposolutna luminoznost okruženja scene (cd/m²).\n1) Računa se iz Exif podataka:\nBrzina zatvarača - ISO vrednost - otvor blende - korekcija ekspozicije kamere.\n2) Računa se iz bele tačke sirove slike unutar dela programa za kompenzaciju ekspozicije. -TP_COLORAPP_ADAPTVIEWING;Luminoznost za pregled (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Apsolutna luminoznost okruženja za pregled\n(obično 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Ukoliko je štiklirano (preporučeno), program računa optimalne vrednosti na osnovu Exif podataka.\nZa ručno postavljanje ovih vrednosti, odštiklirajte ovo polje. TP_COLORAPP_ALGO;Algoritam TP_COLORAPP_ALGO_ALL;Sve TP_COLORAPP_ALGO_JC;Svetlina + Boja (JC) @@ -880,8 +863,6 @@ TP_COLORAPP_CURVEEDITOR3;Kriva boja TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Podešava bilo hromu, zasićenost ili živost boja.\n\nPrikazuje histogram hromatise (Lab) pre CIECAM02.\nUkoliko je omogućeno „CIECAM02 izlazni histogram u krivuljama“, prikazuje histogram za C, s ili M nakon CIECAM02.\n\nC, s i M se ne prikazuju u glavnoj površi za histogram.\nZa konaačni izla pogledajte glavnu površ histograma. TP_COLORAPP_DATACIE;CIECAM02 izlazni histogram u krivuljama TP_COLORAPP_DATACIE_TOOLTIP;Kada je omogućeno, histogrami u CIECAM02 krivim prikazuju približne vrednosti/opsege za J ili Q, i C, s ili M nakon CIECAM02 podešavanja.\nOvaj izbor ne utiče na prikaz u glavnoj površi za histogram.\n\nKada je isključeno, histogrami u CIECAM02 krivim prikazuju Lab vrednosti pre CIECAM02 podešavanja. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Ukoliko je štiklirano (preporučeno), program račina optimalne vrednosti, koje se zatim koriste za CAT02, a takođe za čitav CIECAM02.\nDa bi postavili vrednosti ručne, odštiklirajte ovo polje (preporučene su vrednosti iznad 65). -TP_COLORAPP_DEGREE_TOOLTIP;Količina preobražaja CIE hromatske adaptacije2002. TP_COLORAPP_GAMUT;Kontrola gamuta (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Omogućava kontrolu gamuta u Lab režimu. TP_COLORAPP_HUE;Nijansa (h) @@ -896,8 +877,6 @@ TP_COLORAPP_MODEL;WP model TP_COLORAPP_MODEL_TOOLTIP;Model bele-tačke.\n\nBalans bele [RT] + [izlaz]: balans bele iz programa se koristi za kadar, CIECAM02 se postavlja na D50, a balans bele izlaznog uređaja se određuje iz Podešavanja > Upravljanje bojama.\n\nBalans bele [RT+CAT02] + [izlaz]: podešavanja balansa bele iz programa se koriste od strane CAT02, a balans bele izlaznog uređaja se određuje iz Podešavanja - Upravljanje bojama. TP_COLORAPP_RSTPRO;Zaštita crvene i boje kože TP_COLORAPP_RSTPRO_TOOLTIP;Zaštita crvene boje i boje kože (klizači i krive). -TP_COLORAPP_SHARPCIE;--ne koristi se-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--ne koristi se-- TP_COLORAPP_SURROUND;Okruženo TP_COLORAPP_SURROUND_AVER;Prosečno TP_COLORAPP_SURROUND_DARK;Tamno @@ -916,6 +895,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Svetlina TP_COLORAPP_TCMODE_SATUR;Zasićenost TP_COLORAPP_TONECIE;Mapiranje tonova u CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;Ukoliko je isključena ova opcija, mapiranje tonova se vrši u Lab okruženju.\nUkoliko je uključena, mapiranje se vrši pomoću CIECAM02.\nMorate koristiti alat za mapiranje tonova kako bi ova opcija bila primenjena. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Apsolutna luminoznost okruženja za pregled\n(obično 16cd/m²). TP_COLORAPP_WBCAM;Balans bele [RT+CAT02] + [izlaz] TP_COLORAPP_WBRT;Balans bele [RT] + [izlaz] TP_CROP_FIXRATIO;Srazmerno: @@ -929,7 +909,6 @@ TP_CROP_GUIDETYPE;Vođice: TP_CROP_H;V TP_CROP_LABEL;Isecanje TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP; Izaberi oblast TP_CROP_W;Š TP_CROP_X;x TP_CROP_Y;y @@ -965,7 +944,6 @@ TP_EPD_LABEL;Mapiranje tonova TP_EPD_REWEIGHTINGITERATES;Broj ponovnih merenja TP_EPD_SCALE;Razmera TP_EPD_STRENGTH;Jačina -TP_EPD_TOOLTIP;Mapiranje tonova je moguće u Lab (standardnom) ili CIECAM02 režimu.\n\nZa rad u CIECAM02 režimu uključite:\n1. CIECAM02\n2. Algoritam="Osvetljenje + živopisnost (QM)"\n3. "Mapiranje tonova u CIECAM02 osvetljenju (Q)" TP_EXPOSURE_AUTOLEVELS;Auto-nivoi TP_EXPOSURE_AUTOLEVELS_TIP;Omogućava automatsko određivanje nivoa, koji podešava klizače ekspozicije na osnovu podatka o samoj slici.\nUključuje čupanje svetlih delova ukoliko je neophodno. TP_EXPOSURE_BLACKLEVEL;Crna @@ -1091,9 +1069,6 @@ TP_LENSGEOM_AUTOCROP;Sam iseci TP_LENSGEOM_FILL;Sam popuni TP_LENSGEOM_LABEL;Objektiv i geometrija TP_LENSPROFILE_LABEL;Profili za ispravljanje izobličenja objektiva -TP_LENSPROFILE_USECA;Ispravljanje hrom. aberacija -TP_LENSPROFILE_USEDIST;Ispravljanje izobličenja -TP_LENSPROFILE_USEVIGN;Ispravljanje vinjetarenja TP_NEUTRAL;Neutralno TP_NEUTRAL_TIP;Vraća klizače ekspozicije na neutralne vrednosti.\nPrimenjuje se na iste kontrole kao u Auto nivoi, bez obzira na to da li ste koristili Auto nivoe ili ne. TP_PCVIGNETTE_FEATHER;Umekšavanje @@ -1272,6 +1247,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !DIRBROWSER_FOLDERS;Folders !DONT_SHOW_AGAIN;Don't show this message again. @@ -1279,6 +1255,10 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1294,6 +1274,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality. !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_POPUPCOLORLABEL0;Label: None !FILEBROWSER_POPUPCOLORLABEL1;Label: Red !FILEBROWSER_POPUPCOLORLABEL2;Label: Yellow @@ -1319,6 +1301,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !FILECHOOSER_FILTER_TIFF;TIFF files !GENERAL_APPLY;Apply !GENERAL_ASIMAGE;As Image +!GENERAL_CURRENT;Current !GENERAL_OPEN;Open !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... @@ -1550,14 +1533,32 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1581,6 +1582,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1650,17 +1652,13 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !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. -!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 !MAIN_TAB_INSPECT; Inspect -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MONITOR_PROFILE_SYSTEM;System default !NAVIGATOR_B;B: !NAVIGATOR_G;G: @@ -1677,6 +1675,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_EQUALIZER;Wavelet levels !PARTIALPASTE_FILMSIMULATION;Film simulation !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control @@ -1695,13 +1694,24 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PARTIALPASTE_RETINEX;Retinex !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1714,6 +1724,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT;Same thumbnail height between the Filmstrip and the File Browser !PREFERENCES_FSTRIP_SAME_THUMB_HEIGHT_HINT;Having separate thumbnail size will require more processing time each time you'll switch between the single Editor tab and the File Browser. !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 @@ -1732,7 +1743,6 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_MONITOR;Monitor !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_PARSEDEXTDOWNHINT;Move selected extension down in the list. @@ -1751,15 +1761,13 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1780,7 +1788,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !SOFTPROOF_GAMUTCHECK_TOOLTIP;Highlight pixels with out-of-gamut colors with respect to:\n- the printer profile, if one is set and soft-proofing is enabled,\n- the output profile, if a printer profile is not set and soft-proofing is enabled,\n- the monitor profile, if soft-proofing is disabled. !SOFTPROOF_TOOLTIP;Soft-proofing simulates the appearance of the image:\n- when printed, if a printer profile is set in Preferences > Color Management,\n- when viewed on a display that uses the current output profile, if a printer profile is not set. !THRESHOLDSELECTOR_BL;Bottom-left -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_FILTER_TOOLTIP;The color filter simulates shots taken with a colored filter placed in front of the lens. Colored filters reduce the transmission of specific color ranges and therefore affect their lightness. E.g. a red filter darkens blue skies. !TP_BWMIX_FILTER_YELLOW;Yellow !TP_BWMIX_GAMMA;Gamma Correction @@ -1791,13 +1799,13 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_CBDL_BEF;Before Black-and-White !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1811,6 +1819,25 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1839,6 +1866,12 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_CROP_GTHARMMEANS;Harmonic Means !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1926,6 +1959,15 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1945,10 +1987,10 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CASTR;Strength !TP_RAWEXPOS_BLACK_0;Green 1 (lead) @@ -1969,6 +2011,8 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2018,10 +2062,10 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !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 -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -2059,7 +2103,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2105,7 +2149,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_1;Level 1 !TP_WAVELET_2;Level 2 !TP_WAVELET_3;Level 3 @@ -2269,6 +2313,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TMTYPE;Compression method !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !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". !ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: f diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 022c715e3..0ceeab884 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -274,9 +274,6 @@ PREFERENCES_ADD;Pridať PREFERENCES_APPLNEXTSTARTUP;Aplikovaný pri ďalšom spustení PREFERENCES_BATCH_PROCESSING;dávkové spracovanie PREFERENCES_BEHAVIOR;Správanie sa -PREFERENCES_CACHECLEARALL;Vyčistiť všetko -PREFERENCES_CACHECLEARPROFILES;Vyčistiť profily -PREFERENCES_CACHECLEARTHUMBS;Vyčistiť zmenšeniny PREFERENCES_CACHEMAXENTRIES;Maximálny počet vstupov v cache PREFERENCES_CACHEOPTS;Možnosti cache PREFERENCES_CACHETHUMBHEIGHT;Maximálna výška zmenšenín @@ -321,9 +318,7 @@ PREFERENCES_PROFILESAVECACHE;Uložiť parametre spracovania do cache PREFERENCES_PROFILESAVEINPUT;Uložiť parametre spracovania k vstupnému súboru PREFERENCES_PROPERTY;Vlastnosť PREFERENCES_PSPATH;Inštalačný adresár Adobe Photoshop -PREFERENCES_SELECTFONT;Vybrať písmo PREFERENCES_SELECTLANG;Vybrať si jazyk -PREFERENCES_SELECTTHEME;Vybrať vzhľad PREFERENCES_SET;Nastaviť PREFERENCES_SHOWBASICEXIF;Zobrazovať základné EXIF informácie PREFERENCES_SHOWDATETIME;Ukázovať dátum a čas @@ -389,7 +384,6 @@ TP_CROP_GTRULETHIRDS;Pravidlo tretín TP_CROP_GUIDETYPE;Type vodidiel: TP_CROP_H;V TP_CROP_LABEL;Orezanie -TP_CROP_SELECTCROP; Vyberte Orez TP_CROP_W;Š TP_CROP_X;x TP_CROP_Y;y @@ -518,6 +512,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. @@ -529,6 +524,10 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -578,8 +577,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_DARKFRAME;Dark-frame !FILEBROWSER_DELETEDLGMSGINCLPROC;Are you sure you want to delete the selected %1 files including a queue-processed version? @@ -643,6 +642,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !GENERAL_ASIMAGE;As Image !GENERAL_AUTO;Automatic !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open @@ -1035,14 +1035,32 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1066,6 +1084,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1136,10 +1155,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !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. -!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_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 @@ -1167,17 +1182,17 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1206,6 +1221,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1254,19 +1270,30 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1282,7 +1309,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1294,7 +1320,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1339,7 +1365,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_MONPROFILE;Default color profile !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel !PREFERENCES_OVERWRITEOUTPUTFILE;Overwrite existing output files @@ -1360,13 +1385,12 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done !PREFERENCES_SND_HELP;Enter a full file path to set a sound, or leave blank for no sound.\nFor system sounds on Windows use "SystemDefault", "SystemAsterisk" etc., and on Linux use "complete", "window-attention" etc. @@ -1375,7 +1399,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1427,7 +1450,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1491,11 +1514,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1506,6 +1525,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1525,8 +1545,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1538,14 +1556,13 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1565,11 +1582,9 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1583,6 +1598,25 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1615,11 +1649,17 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1689,7 +1729,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. @@ -1809,10 +1848,16 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_LABCURVE_LCREDSK_TIP;If enabled, the LC Curve affects only red and skin-tones.\nIf disabled, it applies to all tones. !TP_LABCURVE_RSTPROTECTION;Red and skin-tones protection !TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1845,10 +1890,10 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1878,6 +1923,8 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1935,10 +1982,10 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RESIZE_FITBOX;Bounding Box !TP_RESIZE_FULLIMAGE;Full Image !TP_RESIZE_LANCZOS;Lanczos -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1976,7 +2023,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2039,7 +2086,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2252,6 +2299,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 722bf1b0b..3c3cdc6c5 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Terävöinti PARTIALPASTE_VIGNETTING;Vinjetoinnin korjaus PARTIALPASTE_WHITEBALANCE;Valkotasapaino PREFERENCES_APPLNEXTSTARTUP;käytössä käynnistyksen jälkeen -PREFERENCES_CACHECLEARALL;Tyhjennä kaikki -PREFERENCES_CACHECLEARPROFILES;Tyhjennä profiilit -PREFERENCES_CACHECLEARTHUMBS;Tyhjennä esikatselukuvat PREFERENCES_CACHEMAXENTRIES;Välimuistin koko PREFERENCES_CACHEOPTS;Välimuistin asetukset PREFERENCES_CACHETHUMBHEIGHT;Suurin esikatselukuvan korkeus @@ -274,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Tallenna käsittelyparametrit välimuistiin PREFERENCES_PROFILESAVEINPUT;Tallenna käsittelyparametrit oheistiedostoon PREFERENCES_PSPATH;Adobe Photoshop:n asennushakemisto PREFERENCES_SELECTLANG;Valitse kieli -PREFERENCES_SELECTTHEME;Valitse teema PREFERENCES_SHOWBASICEXIF;Perus EXIF-tiedot PREFERENCES_SHOWDATETIME;Päivämäärä ja aika PREFERENCES_SHTHRESHOLD;Kynnysarvo tummille alueille @@ -335,7 +331,6 @@ TP_CROP_GTRULETHIRDS;Kolmijako TP_CROP_GUIDETYPE;Sommittelumalli: TP_CROP_H;Kork. TP_CROP_LABEL;Rajaus -TP_CROP_SELECTCROP;Valitse alue TP_CROP_W;Lev. TP_CROP_X; x TP_CROP_Y; y @@ -431,9 +426,10 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !CURVEEDITOR_HIGHLIGHTS;Highlights @@ -450,6 +446,10 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -501,8 +501,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -571,6 +571,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open @@ -974,14 +975,32 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1005,6 +1024,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1075,10 +1095,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !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. -!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_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 @@ -1112,17 +1128,17 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1153,6 +1169,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1203,8 +1220,14 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1212,12 +1235,17 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1233,7 +1261,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1245,8 +1272,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1292,7 +1319,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1315,15 +1341,13 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done @@ -1333,7 +1357,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1388,7 +1411,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1452,11 +1475,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1467,6 +1486,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1486,8 +1506,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1499,14 +1517,13 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1526,11 +1543,9 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1544,6 +1559,25 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1576,11 +1610,17 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1660,7 +1700,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. @@ -1789,10 +1828,16 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1830,11 +1875,11 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1866,6 +1911,8 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1926,10 +1973,10 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1967,7 +2014,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2030,7 +2077,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2243,6 +2290,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 44c5dd475..5032496a3 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -94,8 +94,6 @@ FILEBROWSER_AUTOFLATFIELD;Automatisk plattfältskorrigering FILEBROWSER_BROWSEPATHBUTTONHINT;Klicka för att komma till vald sökväg FILEBROWSER_BROWSEPATHHINT;Skriv in en sökväg och tryck Enter (Ctrl-Enter i filhanteraren).\nCtrl-O för att komma till sökfältet.\nEnter / Ctrl-Enter för att bläddra;\nEsc för att rensa ändringar.\nShift-Esc för att ta bort fokus från sökfältet.\n\n\nPath kortkommando:\n ~ - användarens hemkatalog\n ! - användarens bildkatalog FILEBROWSER_CACHE;Cache -FILEBROWSER_CACHECLEARFROMFULL;Rensa från cachen - fullständigt -FILEBROWSER_CACHECLEARFROMPARTIAL;Rensa från cachen - delvis FILEBROWSER_CLEARPROFILE;Återställ profilen FILEBROWSER_COLORLABEL_TOOLTIP;Färgetikett\n\nAnvänd menyn eller kortkommandona:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Röd\nShift-Ctrl-2 Gul\nShift-Ctrl-3 Grön\nShift-Ctrl-4 Blå\nShift-Ctrl-5 Lila FILEBROWSER_COPYPROFILE;Kopiera profil @@ -810,6 +808,7 @@ PARTIALPASTE_VIGNETTING;Reducera vinjettering PARTIALPASTE_WAVELETGROUP;Wavelet-nivåer PARTIALPASTE_WHITEBALANCE;Vitbalans PREFERENCES_ADD;Lägg till +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Översiktsvyns guidefärg PREFERENCES_APPLNEXTSTARTUP;Kräver omstart av RawTherapee PREFERENCES_AUTOMONPROFILE;Använd operativsystemets skärmfärgprofil PREFERENCES_BATCH_PROCESSING;Batchbehandling @@ -819,16 +818,9 @@ PREFERENCES_BEHAVIOR;Uppträdande PREFERENCES_BEHSETALL;Sätt allt till 'Ange' PREFERENCES_BEHSETALLHINT;Sätt alla parametrar till Ange-läge.\nFörändringar i parametrar i batch-verktyget kommer att vara absoluta och de faktiska värdena kommer att visas. PREFERENCES_BLACKBODY;Glödlampa -PREFERENCES_CACHECLEARALL;Återställ alla -PREFERENCES_CACHECLEARPROFILES;Återställ profiler -PREFERENCES_CACHECLEARTHUMBS;Ta bort cachade miniatyrbilder PREFERENCES_CACHEMAXENTRIES;Maximalt antal cachefiler PREFERENCES_CACHEOPTS;Cacheinställningar PREFERENCES_CACHETHUMBHEIGHT;Maximal höjd på miniatyrbilderna -PREFERENCES_CIEART;CIECAM02-optimering -PREFERENCES_CIEART_FRAME;CIECAM02-Specifika inställningar -PREFERENCES_CIEART_LABEL;Använd flyttalsprecision istället för dubbel -PREFERENCES_CIEART_TOOLTIP;Om aktiverat, så kommer alla CIECAM02-beräkningar att utföras med enkel precision i flyttalsformatet istället för med dubbel precision. Detta ger en liten sänkning av beräkningstiden, till ett pris av en försumbar kvalitetsförsämring. PREFERENCES_CLIPPINGIND;Klippindikering PREFERENCES_CLUTSCACHE;HaldCLUT cache PREFERENCES_CLUTSCACHE_LABEL;Maximalt antal cachade CLUTs @@ -844,7 +836,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Format för nycklar PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Namn PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Exekverbar sökväg -PREFERENCES_CUTOVERLAYBRUSH;Bakgrundsfärg vid beskärning PREFERENCES_D50;5000K PREFERENCES_D55;5500K PREFERENCES_D60;6000K @@ -863,7 +854,6 @@ PREFERENCES_DIRSOFTWARE;Installationskatalog PREFERENCES_EDITORLAYOUT;Layout för redigeringsvyn PREFERENCES_EXTERNALEDITOR;Externt bildredigeringsprogram PREFERENCES_FBROWSEROPTS;Inställningar för filvyn/miniatyrbilderna -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Filvyns verktygsrad som en rad (avmarkera för lågupplösta skärmar) PREFERENCES_FILEFORMAT;Filformat PREFERENCES_FLATFIELDFOUND;Hittade PREFERENCES_FLATFIELDSDIR;Plattfältskatalog @@ -913,7 +903,6 @@ PREFERENCES_MENUOPTIONS;Menyval för högerklick PREFERENCES_METADATA;Metadata PREFERENCES_MULTITAB;Öppna bilderna i olika flikar PREFERENCES_MULTITABDUALMON;Visa bild på andra skärmen, om möjligt, i flerfliksläge -PREFERENCES_NAVGUIDEBRUSH;Översiktsvyns guidefärg PREFERENCES_NAVIGATIONFRAME;Navigering PREFERENCES_OUTDIR;Utmatningskatalog PREFERENCES_OUTDIRFOLDER;Spara till katalog @@ -945,11 +934,8 @@ PREFERENCES_PROPERTY;Egenskaper PREFERENCES_PSPATH;Adobe Photoshops installationskatalog PREFERENCES_REMEMBERZOOMPAN;Kom ihåg förstoringsprocent och panorering PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Kom ihåg förstoringsgraden i % och panoreringen för den aktuella bilden när du öppnar en ny bild.\n\nDet här valet fungerar bara i Enkelfliksläget och när "Demosaicing-metod som ska användas för förstoringsgrader <100 %" är satt til "Som i PP3". -PREFERENCES_SELECTFONT;Välj typsnitt -PREFERENCES_SELECTFONT_COLPICKER;Välj typsnitt för färgpipetten PREFERENCES_SELECTLANG;Välj språk -PREFERENCES_SELECTTHEME;Välj tema -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Seriell läsning av tiff-filer +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Seriell läsning av TIFF-filer PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;När man arbetar med bilder i en katalog full med okomprimerade till-filer, så kan prestanda för att generera miniatyrbilder ökas genom att aktivera detta val. PREFERENCES_SET;Ange PREFERENCES_SHOWBASICEXIF;Visa grundlig Exif-information @@ -1110,11 +1096,6 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Vänd horisontellt TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotera åt vänster.\nKortkommando: [ TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotera åt höger.\nKortkommando: ] TP_COARSETRAF_TOOLTIP_VFLIP;Vänd vertikalt -TP_COLORAPP_ADAPTSCENE;Luminans hos vyn -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolut luminans hos vyn (cd/m²).\n1) Beräknas från exif-informationen:\nSlutartid - ISO-tal - Bländartal - exponeringskompensation gjord av kameran.\n2) Beräknas från vitpunkten hos råbilden och RT:s reglage för exponeringskompensation -TP_COLORAPP_ADAPTVIEWING;Betrakningsluminans (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolut luminans hos betrakningsomgivningen\n(vanligtvis 16cd/m²) -TP_COLORAPP_ADAP_AUTO_TOOLTIP;Om checkboxen är aktiverad (rekommenderas) beräknar RT ett optimalt värde från exif-informationen.\nFör att sätta ett värde manuellt, avaktivera funktionen först TP_COLORAPP_ALGO;Algoritm TP_COLORAPP_ALGO_ALL;Alla TP_COLORAPP_ALGO_JC;Ljushet + kroma (JC) @@ -1144,8 +1125,6 @@ TP_COLORAPP_CURVEEDITOR3;Färgkurva TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Justera antingen kroma, mättnad eller colorfulness.\n\nVisar histogrammet hos kromaciteten (Lab) före CIECAM02.\nOm checkboxen "Show CIECAM02 output histograms in curves" är aktiverad, visas histogrammet för C, s eller M efter CIECAM02.\n\nC, s och M visas ej i histogrammet i huvudpanelen.\n\nFör slutligt resultat, se huvudpanelens histogram TP_COLORAPP_DATACIE;Resultat av CIECAM02-histogram i kurvor TP_COLORAPP_DATACIE_TOOLTIP;När detta är aktiverat, visar CIECAM02-histogram ungefärliga värden/intervall för J eller Q, och C, s eller M efter justeringar i CIECAM02.\nDet här valet påverkar inte huvudhistogrammet.\n\nNär detta är avaktiverat, visar histogrammet för CIECAM02-kurvor Lab-värden innan justeringar av CIECAM02 -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;Om den här checkboxen är aktiverad (rekommenderas), beräknar RT ett optimalt värde som sedan dels används av CAT02 och dels för hela CIECAM02.\nFör att ange ett värde manuellt, avaktivera checkboxen först (värden över 65 rekommenderas) -TP_COLORAPP_DEGREE_TOOLTIP;Mängd CIE kromatisk anpassning 2002 TP_COLORAPP_GAMUT;Kontroll av tonomfång (Lab) TP_COLORAPP_GAMUT_TOOLTIP;Tillåt kontroll av tonomfång i Lab-läge TP_COLORAPP_HUE;Nyans(h) @@ -1160,8 +1139,6 @@ TP_COLORAPP_MODEL;Vitpunktsmodell TP_COLORAPP_MODEL_TOOLTIP;Vitpunktsmodell\n\nWB [RT] + [output]:\nRT:s vitbalans används för bilden, CIECAM02 sätts till D50, utmatningsenhetens vitbalans sätts i Inställningar > Färghantering\n\nWB [RT+CAT02] + [output]:\nRT:s vitbalansinställningar används av CAT02 och utmatningsenhetens vitbalans sätts i Inställningar TP_COLORAPP_RSTPRO;Bevara röda färger och hudtoner TP_COLORAPP_RSTPRO_TOOLTIP;Bevara röda färger och hudtoner (reglage och kurvor) -TP_COLORAPP_SHARPCIE;Skärpa, Kontrast genom detaljnivåer, Mikrokontrast och Fyll ut överstrålning med kvalitetskontroll -TP_COLORAPP_SHARPCIE_TOOLTIP;Skärpa, Kontrast genom detaljnivåer, Mikrokontrast och Fyll ut överstrålning kommer att använda CIECAM02 om den är aktiverad TP_COLORAPP_SURROUND;Omgivning TP_COLORAPP_SURROUND_AVER;Medel TP_COLORAPP_SURROUND_DARK;Mörk @@ -1180,6 +1157,7 @@ TP_COLORAPP_TCMODE_LIGHTNESS;Ljushet TP_COLORAPP_TCMODE_SATUR;Mättnad TP_COLORAPP_TONECIE;Tonmappning som använder CIECAM02 ljushet (Q) TP_COLORAPP_TONECIE_TOOLTIP;Om det här valet ej är aktiverat, görs tonmappningen i Lab.\nOm det här valet är aktiverat, görs tonmappningen mha CIECAM02.\nTonmappningsverktyget måste vara aktiverad för att den här inställningen ska ha någon effekt +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolut luminans hos betrakningsomgivningen\n(vanligtvis 16cd/m²) TP_COLORAPP_WBCAM;Vitbalans [RT+CAT02] + [utmatning] TP_COLORAPP_WBRT;Vitbalans [RT] + [utmatning] TP_COLORTONING_AB;o C/L @@ -1228,7 +1206,6 @@ TP_CROP_GUIDETYPE;Guidetyp: TP_CROP_H;Höjd TP_CROP_LABEL;Beskär TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Välj beskärningsområde TP_CROP_W;Bredd TP_CROP_X;x TP_CROP_Y;y @@ -1304,7 +1281,6 @@ TP_EPD_LABEL;Tonmappning TP_EPD_REWEIGHTINGITERATES;Återviktade iterationer TP_EPD_SCALE;Skala TP_EPD_STRENGTH;Styrka -TP_EPD_TOOLTIP;Tonmappning är möjligt via Lab-läge (standard) och CIECAM02-läge.\n\nFör att aktivera CIECAM02- tonmappningsläget, aktivera följande:\n1. CIECAM02\n2. Algoritm="Intensitet + Färgmättnad (QM)"\n3. "Tonmappning mha CIECAM02 intensitet (Q)" TP_EXPOSURE_AUTOLEVELS;Autonivåer TP_EXPOSURE_AUTOLEVELS_TIP;Slå av/på autonivåer för att automatiskt beräkna och använda värden baserat på bildanalys\nAktiverar högdageråterställning om nödvändigt TP_EXPOSURE_BLACKLEVEL;Svärta @@ -1445,9 +1421,6 @@ TP_LENSGEOM_AUTOCROP;Autobeskärning TP_LENSGEOM_FILL;Fyll automatiskt TP_LENSGEOM_LABEL;Geometrisk- och distorsionskorrigering TP_LENSPROFILE_LABEL;Objektivkorrigeringsprofil -TP_LENSPROFILE_USECA;Korrigera för kromatiska abberationer -TP_LENSPROFILE_USEDIST;Korrigera distorsion -TP_LENSPROFILE_USEVIGN;Korrigera vinjettering TP_NEUTRAL;Återställ TP_NEUTRAL_TIP;Återställ exponeringsreglagen till neutrala värden.\nGäller för samma reglage som autonivåer, oavsett om du använder autonivåer eller ej TP_PCVIGNETTE_FEATHER;Fjäder @@ -1827,12 +1800,17 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !BATCHQUEUE_STARTSTOPHINT;Start or stop processing the images in the queue.\n\nShortcut: Ctrl+s !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !DONT_SHOW_AGAIN;Don't show this message again. !DYNPROFILEEDITOR_DELETE;Delete !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -1845,7 +1823,10 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !EXPORT_USE_FAST_PIPELINE;Dedicated (full processing on resized image) !EXPORT_USE_FAST_PIPELINE_TIP;Use a dedicated processing pipeline for images in Fast Export mode, that trades speed for quality. Resizing of the image is done as early as possible, instead of doing it at the end like in the normal pipeline. The speedup can be significant, but be prepared to see artifacts and a general degradation of output quality. !EXPORT_USE_NORMAL_PIPELINE;Standard (bypass some steps, resize at the end) +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_RESETDEFAULTPROFILE;Reset to default +!GENERAL_CURRENT;Current !GENERAL_RESET;Reset !GENERAL_SAVE_AS;Save as... !GENERAL_SLIDER;Slider @@ -1911,14 +1892,32 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1942,6 +1941,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -2011,21 +2011,18 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !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. -!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 -!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%. +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !OPTIONS_BUNDLED_MISSING;The bundled profile "%1" could not be found!\n\nYour installation could be damaged.\n\nDefault internal values will be used instead. !OPTIONS_DEFIMG_MISSING;The default profile for non-raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !OPTIONS_DEFRAW_MISSING;The default profile for raw photos could not be found or is not set.\n\nPlease check your profiles' directory, it may be missing or damaged.\n\n"%1" will be used instead. !PARTIALPASTE_ADVANCEDGROUP;Advanced Settings !PARTIALPASTE_COLORTONING;Color toning +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_FLATFIELDCLIPCONTROL;Flat-field clip control !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode @@ -2037,10 +2034,20 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !PARTIALPASTE_RAW_PIXELSHIFT;Pixel Shift !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_THEME;Theme +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -2048,6 +2055,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !PREFERENCES_D50_OLD;5000K !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_GREY18_OLD;Yb=18 CIE L#50 !PREFERENCES_INSPECT_MAXBUFFERS_TOOLTIP;Set the maximum number of images stored in cache when hovering over them in the File Browser; systems with little RAM (2GB) should keep this value set to 1 or 2. !PREFERENCES_LANG;Language @@ -2062,11 +2070,10 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !PREFERENCES_PROFILESAVELOCATION;Processing profile saving location !PREFERENCES_PRTINTENT;Rendering intent !PREFERENCES_PRTPROFILE;Color profile -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -2089,19 +2096,44 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_BWMIX_MIXC;Channel Mixer !TP_BWMIX_NEUTRAL;Reset !TP_CBDL_METHOD;Process located +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_CURVEEDITOR_CL_TOOLTIP;Chroma opacity as a function of luminance oC=f(L) !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_METHOD_TOOLTIP;"L*a*b* blending", "RGB sliders" and "RGB curves" use interpolated color blending.\n"Color balance (Shadows/Midtones/Highlights)" and "Saturation 2 colors" use direct colors.\n\nThe Black-and-White tool can be enabled when using any color toning method, which allows for color toning. !TP_COLORTONING_TWOCOLOR_TOOLTIP;Standard chroma:\nLinear response, a* = b*.\n\nSpecial chroma:\nLinear response, a* = b*, but unbound - try under the diagonal.\n\nSpecial a* and b*:\nLinear response unbound with separate curves for a* and b*. Intended for special effects.\n\nSpecial chroma 2 colors:\nMore predictable. +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_CURVE_TOOLTIP;Increase (multiply) the value of all chrominance sliders.\nThis curve lets you adjust the strength of chromatic noise reduction as a function of chromaticity, for instance to increase the action in areas of low saturation and to decrease it in those of high saturation. !TP_DIRPYRDENOISE_CHROMINANCE_METHOD_TOOLTIP;Manual\nActs on the full image.\nYou control the noise reduction settings manually.\n\nAutomatic global\nActs on the full image.\n9 zones are used to calculate a global chrominance noise reduction setting.\n\nAutomatic multi-zones\nNo preview - works only during saving, but using the "Preview" method by matching the tile size and center to the preview size and center you can get an idea of the expected results.\nThe image is divided into tiles (about 10 to 70 depending on image size) and each tile receives its own chrominance noise reduction settings.\n\nPreview\nActs on the whole image.\nThe part of the image visible in the preview is used to calculate global chrominance noise reduction settings. @@ -2133,6 +2165,15 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_ICM_WORKING_TRC_NONE;None !TP_ICM_WORKING_TRC_SLOPE;Slope !TP_ICM_WORKING_TRC_TOOLTIP;Only for built-in profiles. +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -2148,8 +2189,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAW_1PASSMEDIUM;1-pass (Markesteijn) !TP_RAW_2PASS;1-pass+fast @@ -2161,6 +2202,8 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RAW_BORDER;Border !TP_RAW_DCB;DCB !TP_RAW_DCBVNG4;DCB+VNG4 +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -2205,7 +2248,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RAW_RCDVNG4;RCD+VNG4 !TP_RAW_VNG4;VNG4 !TP_RESIZE_ALLOW_UPSCALING;Allow Upscaling -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_MAP_TOOLTIP;This curve can be applied alone or with a Gaussian mask or wavelet mask.\nBeware of artifacts! !TP_RETINEX_GAINTRANSMISSION_TOOLTIP;Amplify or reduce the transmission map to achieve the desired luminance.\nThe x-axis is the transmission.\nThe y-axis is the gain. @@ -2213,7 +2256,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_RETINEX_GAMMA_TOOLTIP;Restore tones by applying gamma before and after Retinex. Different from Retinex curves or others curves (Lab, Exposure, etc.). !TP_RETINEX_HIGHLIGHT_TOOLTIP;Increase action of High algorithm.\nMay require you to re-adjust "Neighboring pixels" and to increase the "White-point correction" in the Raw tab -> Raw White Points tool. !TP_RETINEX_LABEL_MASK;Mask -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2235,7 +2278,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_WAVELET_CBENAB;Toning and Color Balance !TP_WAVELET_CB_TOOLTIP;For strong values product color-toning by combining it or not with levels decomposition 'toning'\nFor low values you can change the white balance of the background (sky, ...) without changing that of the front plane, generally more contrasted !TP_WAVELET_CHRO_TOOLTIP;Sets the wavelet level which will be the threshold between saturated and pastel colors.\n1-x: saturated\nx-9: pastel\n\nIf the value exceeds the amount of wavelet levels you are using then it will be ignored. @@ -2274,5 +2317,6 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !TP_WAVELET_TILES_TOOLTIP;Processing the full image leads to better quality and is the recommended option, while using tiles is a fall-back solution for users with little RAM. Refer to RawPedia for memory requirements. !TP_WAVELET_TMSTRENGTH_TOOLTIP;Control the strength of tone mapping or contrast compression of the residual image. When the value is different from 0, the Strength and Gamma sliders of the Tone Mapping tool in the Exposure tab will become grayed out. !TP_WAVELET_TON;Toning +!TP_WBALANCE_PICKER;Pick !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". diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index a3dd1d5ea..39302869d 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -230,9 +230,6 @@ PARTIALPASTE_SHARPENING;Sharpening PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_APPLNEXTSTARTUP;Bir sonraki başlamada uygulacacak. -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails PREFERENCES_CACHEMAXENTRIES;Maximal Number of Cache Entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximal Thumbnail Height @@ -274,7 +271,6 @@ PREFERENCES_PROFILESAVECACHE;Save Processing Parameters to the Cache PREFERENCES_PROFILESAVEINPUT;Save Processing Parameters Next to the Input File PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_SELECTLANG;Dil seç -PREFERENCES_SELECTTHEME;Select theme PREFERENCES_SHOWBASICEXIF;Temel exif bilgisini göster PREFERENCES_SHOWDATETIME;Tarih ve saati göster PREFERENCES_SHTHRESHOLD;Kırpılmış karaltılar için eşik @@ -335,7 +331,6 @@ TP_CROP_GTRULETHIRDS;Üçler kuralı TP_CROP_GUIDETYPE;Kılavuz türü: TP_CROP_H;Y TP_CROP_LABEL;Kırp -TP_CROP_SELECTCROP; Kırpma alanı seç TP_CROP_W;G TP_CROP_X;x TP_CROP_Y;y @@ -430,9 +425,10 @@ TP_WBALANCE_TEMPERATURE;Isı !CURVEEDITOR_AXIS_LEFT_TAN;LT: !CURVEEDITOR_AXIS_OUT;O: !CURVEEDITOR_AXIS_RIGHT_TAN;RT: +!CURVEEDITOR_CATMULLROM;Flexible !CURVEEDITOR_CURVE;Curve !CURVEEDITOR_CURVES;Curves -!CURVEEDITOR_CUSTOM;Custom +!CURVEEDITOR_CUSTOM;Standard !CURVEEDITOR_DARKS;Darks !CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. !CURVEEDITOR_HIGHLIGHTS;Highlights @@ -449,6 +445,10 @@ TP_WBALANCE_TEMPERATURE;Isı !DYNPROFILEEDITOR_EDIT;Edit !DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule !DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +!DYNPROFILEEDITOR_IMGTYPE_ANY;Any +!DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +!DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +!DYNPROFILEEDITOR_IMGTYPE_STD;Standard !DYNPROFILEEDITOR_MOVE_DOWN;Move Down !DYNPROFILEEDITOR_MOVE_UP;Move Up !DYNPROFILEEDITOR_NEW;New @@ -500,8 +500,8 @@ TP_WBALANCE_TEMPERATURE;Isı !FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. !FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory !FILEBROWSER_CACHE;Cache -!FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +!FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +!FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles !FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple !FILEBROWSER_CURRENT_NAME;Current name: !FILEBROWSER_DARKFRAME;Dark-frame @@ -570,6 +570,7 @@ TP_WBALANCE_TEMPERATURE;Isı !GENERAL_AUTO;Automatic !GENERAL_BEFORE;Before !GENERAL_CLOSE;Close +!GENERAL_CURRENT;Current !GENERAL_FILE;File !GENERAL_NONE;None !GENERAL_OPEN;Open @@ -973,14 +974,32 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_486;Lens Correction - Camera !HISTORY_MSG_487;Lens Correction - Lens !HISTORY_MSG_488;Dynamic Range Compression -!HISTORY_MSG_489;DRC - Threshold +!HISTORY_MSG_489;DRC - Detail !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;Clip out-of-gamut colors !HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;AMaZE+VNG4 - Contrast threshold +!HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +!HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +!HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +!HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +!HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +!HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +!HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +!HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +!HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +!HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +!HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +!HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +!HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +!HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +!HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +!HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength +!HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +!HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold !HISTORY_MSG_HISTMATCHING;Auto-matched tone curve !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -1004,6 +1023,7 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +!HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace !HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light !HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength !HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -1074,10 +1094,6 @@ TP_WBALANCE_TEMPERATURE;Isı !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. -!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_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 @@ -1111,17 +1127,17 @@ TP_WBALANCE_TEMPERATURE;Isı !MAIN_TAB_RAW;Raw !MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r !MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +!MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 !MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. -!MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -!MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -!MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -!MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +!MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +!MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +!MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +!MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +!MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +!MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. !MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l !MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l !MAIN_TOOLTIP_SHOWHIDETP1;Show/Hide the top panel.\nShortcut: Shift-l @@ -1152,6 +1168,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection !PARTIALPASTE_DARKFRAMEFILE;Dark-frame file !PARTIALPASTE_DEFRINGE;Defringe +!PARTIALPASTE_DEHAZE;Haze removal !PARTIALPASTE_DETAILGROUP;Detail Settings !PARTIALPASTE_DIRPYRDENOISE;Noise reduction !PARTIALPASTE_DIRPYREQUALIZER;Contrast by detail levels @@ -1202,8 +1219,14 @@ TP_WBALANCE_TEMPERATURE;Isı !PARTIALPASTE_TM_FATTAL;Dynamic range compression !PARTIALPASTE_VIBRANCE;Vibrance !PREFERENCES_ADD;Add +!PREFERENCES_APPEARANCE;Appearance +!PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +!PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +!PREFERENCES_APPEARANCE_MAINFONT;Main font +!PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +!PREFERENCES_APPEARANCE_THEME;Theme !PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -!PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +!PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit !PREFERENCES_BATCH_PROCESSING;Batch Processing !PREFERENCES_BEHADDALL;All to 'Add' !PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1211,12 +1234,17 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_BEHSETALL;All to 'Set' !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. !PREFERENCES_BLACKBODY;Tungsten +!PREFERENCES_CACHECLEAR;Clear +!PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +!PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +!PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +!PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. !PREFERENCES_CLUTSCACHE;HaldCLUT Cache !PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs !PREFERENCES_CLUTSDIR;HaldCLUT directory !PREFERENCES_CMMBPC;Black point compensation -!PREFERENCES_CROP;Crop editing -!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +!PREFERENCES_CROP;Crop Editing +!PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop !PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop !PREFERENCES_CROP_GUIDES_FRAME;Frame !PREFERENCES_CROP_GUIDES_FULL;Original @@ -1232,7 +1260,6 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name !PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID !PREFERENCES_CUSTPROFBUILDPATH;Executable path -!PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency !PREFERENCES_D50;Settings in main menu !PREFERENCES_D50_OLD;5000K !PREFERENCES_D55;5500K @@ -1244,8 +1271,8 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_DIRDARKFRAMES;Dark-frames directory !PREFERENCES_DIRECTORIES;Directories !PREFERENCES_EDITORCMDLINE;Custom command line -!PREFERENCES_EDITORLAYOUT;Editor Layout -!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +!PREFERENCES_EDITORLAYOUT;Editor layout +!PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser !PREFERENCES_FLATFIELDFOUND;Found !PREFERENCES_FLATFIELDSDIR;Flat-fields directory !PREFERENCES_FLATFIELDSHOTS;shots @@ -1291,7 +1318,6 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. !PREFERENCES_MULTITAB;Multiple Editor Tabs Mode !PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -!PREFERENCES_NAVGUIDEBRUSH;Navigator guide color !PREFERENCES_NAVIGATIONFRAME;Navigation !PREFERENCES_OVERLAY_FILENAMES;Overlay filenames on thumbnails in the file browser !PREFERENCES_OVERLAY_FILENAMES_FILMSTRIP;Overlay filenames on thumbnails in the editor pannel @@ -1314,15 +1340,13 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_PRTPROFILE;Color profile !PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset !PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -!PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -!PREFERENCES_SELECTFONT;Select main font -!PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font -!PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +!PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now +!PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +!PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +!PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. !PREFERENCES_SET;Set !PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +!PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar !PREFERENCES_SINGLETAB;Single Editor Tab Mode !PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs !PREFERENCES_SND_BATCHQUEUEDONE;Queue processing done @@ -1332,7 +1356,6 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_TAB_DYNAMICPROFILE;Dynamic Profile Rules !PREFERENCES_TAB_PERFORMANCE;Performance !PREFERENCES_TAB_SOUND;Sounds -!PREFERENCES_THEME;Theme !PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview !PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1387,7 +1410,7 @@ TP_WBALANCE_TEMPERATURE;Isı !THRESHOLDSELECTOR_T;Top !THRESHOLDSELECTOR_TL;Top-left !THRESHOLDSELECTOR_TR;Top-right -!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool +!TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. !TP_BWMIX_ALGO;Algorithm OYCPM !TP_BWMIX_ALGO_LI;Linear !TP_BWMIX_ALGO_SP;Special effects @@ -1451,11 +1474,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_CBDL_METHOD;Process located !TP_CBDL_METHOD_TOOLTIP;Choose whether the Contrast by Detail Levels tool is to be positioned after the Black-and-White tool, which makes it work in L*a*b* space, or before it, which makes it work in RGB space. !TP_CHROMATABERR_LABEL;Chromatic Aberration -!TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -!TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -!TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -!TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -!TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +!TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance !TP_COLORAPP_ALGO;Algorithm !TP_COLORAPP_ALGO_ALL;All !TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1466,6 +1485,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. !TP_COLORAPP_BRIGHT;Brightness (Q) !TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +!TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. !TP_COLORAPP_CHROMA;Chroma (C) !TP_COLORAPP_CHROMA_M;Colorfulness (M) !TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1485,8 +1505,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. !TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves !TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -!TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -!TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. !TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] !TP_COLORAPP_GAMUT;Gamut control (L*a*b*) !TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1498,14 +1516,13 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_COLORAPP_LABEL_VIEWING;Viewing Conditions !TP_COLORAPP_LIGHT;Lightness (J) !TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +!TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) !TP_COLORAPP_MODEL;WP Model !TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. !TP_COLORAPP_NEUTRAL;Reset !TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values !TP_COLORAPP_RSTPRO;Red & skin-tones protection !TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -!TP_COLORAPP_SHARPCIE;--unused-- -!TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- !TP_COLORAPP_SURROUND;Surround !TP_COLORAPP_SURROUND_AVER;Average !TP_COLORAPP_SURROUND_DARK;Dark @@ -1525,11 +1542,9 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 !TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 !TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +!TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). !TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] !TP_COLORAPP_WBRT;WB [RT] + [output] -!TP_COLORAPP_YB;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE;Yb% (mean luminance) -!TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance !TP_COLORTONING_AB;o C/L !TP_COLORTONING_AUTOSAT;Automatic !TP_COLORTONING_BALANCE;Balance @@ -1543,6 +1558,25 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_COLORTONING_LABEL;Color Toning !TP_COLORTONING_LABGRID;L*a*b* color correction grid !TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +!TP_COLORTONING_LABREGIONS;Color correction regions +!TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +!TP_COLORTONING_LABREGION_CHANNEL;Channel +!TP_COLORTONING_LABREGION_CHANNEL_ALL;All +!TP_COLORTONING_LABREGION_CHANNEL_B;Blue +!TP_COLORTONING_LABREGION_CHANNEL_G;Green +!TP_COLORTONING_LABREGION_CHANNEL_R;Red +!TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +!TP_COLORTONING_LABREGION_HUEMASK;H +!TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +!TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +!TP_COLORTONING_LABREGION_LIST_TITLE;Correction +!TP_COLORTONING_LABREGION_MASK;Mask +!TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +!TP_COLORTONING_LABREGION_OFFSET;Offset +!TP_COLORTONING_LABREGION_POWER;Power +!TP_COLORTONING_LABREGION_SATURATION;Saturation +!TP_COLORTONING_LABREGION_SHOWMASK;Show mask +!TP_COLORTONING_LABREGION_SLOPE;Slope !TP_COLORTONING_LUMA;Luminance !TP_COLORTONING_LUMAMODE;Preserve luminance !TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1575,11 +1609,17 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_CROP_GTTRIANGLE1;Golden Triangles 1 !TP_CROP_GTTRIANGLE2;Golden Triangles 2 !TP_CROP_PPI;PPI= +!TP_CROP_RESETCROP;Reset +!TP_CROP_SELECTCROP;Select !TP_DARKFRAME_AUTOSELECT;Auto-selection !TP_DARKFRAME_LABEL;Dark-Frame !TP_DEFRINGE_LABEL;Defringe !TP_DEFRINGE_RADIUS;Radius !TP_DEFRINGE_THRESHOLD;Threshold +!TP_DEHAZE_DEPTH;Depth +!TP_DEHAZE_LABEL;Haze Removal +!TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +!TP_DEHAZE_STRENGTH;Strength !TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global !TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1659,7 +1699,6 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_EPD_REWEIGHTINGITERATES;Reweighting iterates !TP_EPD_SCALE;Scale !TP_EPD_STRENGTH;Strength -!TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" !TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. !TP_EXPOSURE_CLAMPOOG;Clip out-of-gamut colors !TP_EXPOSURE_CLIP_TIP;The fraction of pixels to be clipped in Auto Levels operation. @@ -1788,10 +1827,16 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_LENSGEOM_AUTOCROP;Auto-Crop !TP_LENSGEOM_FILL;Auto-fill !TP_LENSGEOM_LABEL;Lens / Geometry +!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +!TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +!TP_LENSPROFILE_CORRECTION_MANUAL;Manually !TP_LENSPROFILE_LABEL;Profiled Lens Correction -!TP_LENSPROFILE_USECA;Chromatic aberration correction -!TP_LENSPROFILE_USEDIST;Distortion correction -!TP_LENSPROFILE_USEVIGN;Vignetting correction +!TP_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. +!TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +!TP_LENSPROFILE_USE_CA;Chromatic aberration +!TP_LENSPROFILE_USE_GEOMETRIC;Geometric +!TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +!TP_LENSPROFILE_USE_VIGNETTING;Vignetting !TP_LOCALCONTRAST_AMOUNT;Amount !TP_LOCALCONTRAST_DARKNESS;Darkness level !TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1829,11 +1874,11 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical !TP_PREPROCESS_NO_FOUND;None found !TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -!TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. !TP_PRSHARPENING_LABEL;Post-Resize Sharpening !TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. !TP_RAWCACORR_AUTO;Auto-correction !TP_RAWCACORR_AUTOIT;Iterations +!TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. !TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift !TP_RAWCACORR_CABLUE;Blue !TP_RAWCACORR_CARED;Red @@ -1865,6 +1910,8 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... !TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... !TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. +!TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold +!TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). !TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold !TP_RAW_EAHD;EAHD !TP_RAW_FAST;Fast @@ -1925,10 +1972,10 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RESIZE_LANCZOS;Lanczos !TP_RESIZE_SPECIFY;Specify: !TP_RESIZE_WIDTH;Width -!TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -!TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -!TP_RETINEX_CONTEDIT_LH;Hue equalizer -!TP_RETINEX_CONTEDIT_MAP;Mask equalizer +!TP_RETINEX_CONTEDIT_HSL;HSL histogram +!TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +!TP_RETINEX_CONTEDIT_LH;Hue +!TP_RETINEX_CONTEDIT_MAP;Equalizer !TP_RETINEX_CURVEEDITOR_CD;L=f(L) !TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. !TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1966,7 +2013,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_RETINEX_LABEL_MASK;Mask !TP_RETINEX_LABSPACE;L*a*b* !TP_RETINEX_LOW;Low -!TP_RETINEX_MAP;Mask method +!TP_RETINEX_MAP;Method !TP_RETINEX_MAP_GAUS;Gaussian mask !TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) !TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -2029,7 +2076,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_TM_FATTAL_AMOUNT;Amount !TP_TM_FATTAL_ANCHOR;Anchor !TP_TM_FATTAL_LABEL;Dynamic Range Compression -!TP_TM_FATTAL_THRESHOLD;Threshold +!TP_TM_FATTAL_THRESHOLD;Detail !TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift !TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH !TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2242,6 +2289,7 @@ TP_WBALANCE_TEMPERATURE;Isı !TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 !TP_WBALANCE_LED_HEADER;LED !TP_WBALANCE_LED_LSI;LSI Lumelex 2040 +!TP_WBALANCE_PICKER;Pick !TP_WBALANCE_SHADE;Shade !TP_WBALANCE_SOLUX35;Solux 3500K !TP_WBALANCE_SOLUX41;Solux 4100K diff --git a/rtdata/languages/default b/rtdata/languages/default index cc978ce92..343100124 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -17,9 +17,10 @@ CURVEEDITOR_AXIS_IN;I: CURVEEDITOR_AXIS_LEFT_TAN;LT: CURVEEDITOR_AXIS_OUT;O: CURVEEDITOR_AXIS_RIGHT_TAN;RT: +CURVEEDITOR_CATMULLROM;Flexible CURVEEDITOR_CURVE;Curve CURVEEDITOR_CURVES;Curves -CURVEEDITOR_CUSTOM;Custom +CURVEEDITOR_CUSTOM;Standard CURVEEDITOR_DARKS;Darks CURVEEDITOR_EDITPOINT_HINT;Enable edition of node in/out values.\n\nRight-click on a node to select it.\nRight-click on empty space to de-select the node. CURVEEDITOR_HIGHLIGHTS;Highlights @@ -43,6 +44,10 @@ DYNPROFILEEDITOR_DELETE;Delete DYNPROFILEEDITOR_EDIT;Edit DYNPROFILEEDITOR_EDIT_RULE;Edit Dynamic Profile Rule DYNPROFILEEDITOR_ENTRY_TOOLTIP;The matching is case insensitive.\nUse the "re:" prefix to enter\na regular expression. +DYNPROFILEEDITOR_IMGTYPE_ANY;Any +DYNPROFILEEDITOR_IMGTYPE_HDR;HDR +DYNPROFILEEDITOR_IMGTYPE_PS;Pixel Shift +DYNPROFILEEDITOR_IMGTYPE_STD;Standard DYNPROFILEEDITOR_MOVE_DOWN;Move Down DYNPROFILEEDITOR_MOVE_UP;Move Up DYNPROFILEEDITOR_NEW;New @@ -115,8 +120,8 @@ FILEBROWSER_AUTOFLATFIELD;Auto flat-field FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path. FILEBROWSER_BROWSEPATHHINT;Type a path to navigate to.\n\nKeyboard shortcuts:\nCtrl-o to focus to the path text box.\nEnter / Ctrl-Enter to browse there;\nEsc to clear changes.\nShift-Esc to remove focus.\n\nPath shortcuts:\n~ - user's home directory.\n! - user's pictures directory FILEBROWSER_CACHE;Cache -FILEBROWSER_CACHECLEARFROMFULL;Clear from cache - full -FILEBROWSER_CACHECLEARFROMPARTIAL;Clear from cache - partial +FILEBROWSER_CACHECLEARFROMFULL;Clear all including cached profiles +FILEBROWSER_CACHECLEARFROMPARTIAL;Clear all except cached profiles FILEBROWSER_CLEARPROFILE;Clear FILEBROWSER_COLORLABEL_TOOLTIP;Color label.\n\nUse dropdown menu or shortcuts:\nShift-Ctrl-0 No Color\nShift-Ctrl-1 Red\nShift-Ctrl-2 Yellow\nShift-Ctrl-3 Green\nShift-Ctrl-4 Blue\nShift-Ctrl-5 Purple FILEBROWSER_COPYPROFILE;Copy @@ -219,6 +224,7 @@ GENERAL_AUTO;Automatic GENERAL_BEFORE;Before GENERAL_CANCEL;Cancel GENERAL_CLOSE;Close +GENERAL_CURRENT;Current GENERAL_DISABLE;Disable GENERAL_DISABLED;Disabled GENERAL_ENABLE;Enable @@ -721,15 +727,32 @@ HISTORY_MSG_485;Lens Correction HISTORY_MSG_486;Lens Correction - Camera HISTORY_MSG_487;Lens Correction - Lens HISTORY_MSG_488;Dynamic Range Compression -HISTORY_MSG_489;DRC - Threshold +HISTORY_MSG_489;DRC - Detail 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;Clip out-of-gamut colors HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Color correction -HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold +HISTORY_MSG_COLORTONING_LABREGION_AB;CT - Color correction +HISTORY_MSG_COLORTONING_LABREGION_CHANNEL;CT - Channel +HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK;CT - region C mask +HISTORY_MSG_COLORTONING_LABREGION_HUEMASK;CT - H mask +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS;CT - Lightness +HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK;CT - L mask +HISTORY_MSG_COLORTONING_LABREGION_LIST;CT - List +HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR;CT - region mask blur +HISTORY_MSG_COLORTONING_LABREGION_OFFSET;CT - region offset +HISTORY_MSG_COLORTONING_LABREGION_POWER;CT - region power +HISTORY_MSG_COLORTONING_LABREGION_SATURATION;CT - Saturation +HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK;CT - region show mask +HISTORY_MSG_COLORTONING_LABREGION_SLOPE;CT - region slope +HISTORY_MSG_DEHAZE_DEPTH;Dehaze - Depth +HISTORY_MSG_DEHAZE_ENABLED;Haze Removal +HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP;Dehaze - Show depth map +HISTORY_MSG_DEHAZE_STRENGTH;Dehaze - Strength HISTORY_MSG_DUALDEMOSAIC_AUTO_CONTRAST;Dual demosaic - Auto threshold +HISTORY_MSG_DUALDEMOSAIC_CONTRAST;Dual demosaic - Contrast threshold HISTORY_MSG_HISTMATCHING;Auto-matched tone curve HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries HISTORY_MSG_ICM_OUTPUT_TEMP;Output - ICC-v4 illuminant D @@ -752,8 +775,9 @@ HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift HISTORY_MSG_RAW_BORDER;Raw border HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling -HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace +HISTORY_MSG_SHARPENING_BLUR;Sharpening - Blur radius HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold +HISTORY_MSG_SH_COLORSPACE;S/H - Colorspace HISTORY_MSG_SOFTLIGHT_ENABLED;Soft light HISTORY_MSG_SOFTLIGHT_STRENGTH;Soft light - Strength HISTORY_MSG_TM_FATTAL_ANCHOR;DRC - Anchor @@ -844,10 +868,6 @@ IPTCPANEL_TITLE;Title 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. -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_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 @@ -888,6 +908,8 @@ MAIN_TAB_ADVANCED;Advanced MAIN_TAB_ADVANCED_TOOLTIP;Shortcut: Alt-w MAIN_TAB_COLOR;Color MAIN_TAB_COLOR_TOOLTIP;Shortcut: Alt-c +MAIN_TAB_FAVORITES;Favorites +MAIN_TAB_FAVORITES_TOOLTIP;Shortcut: Alt-u MAIN_TAB_DETAIL;Detail MAIN_TAB_DETAIL_TOOLTIP;Shortcut: Alt-d MAIN_TAB_DEVELOP; Batch Edit @@ -904,20 +926,20 @@ MAIN_TAB_RAW;Raw MAIN_TAB_RAW_TOOLTIP;Shortcut: Alt-r MAIN_TAB_TRANSFORM;Transform MAIN_TAB_TRANSFORM_TOOLTIP;Shortcut: Alt-t -MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: Theme-based\nShortcut: 9 -MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: Black\nShortcut: 9 -MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: White\nShortcut: 9 -MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: Middle grey\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR0;Background color of the preview: theme-based\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR1;Background color of the preview: black\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR2;Background color of the preview: white\nShortcut: 9 +MAIN_TOOLTIP_BACKCOLOR3;Background color of the preview: middle grey\nShortcut: 9 MAIN_TOOLTIP_BEFOREAFTERLOCK;Lock / Unlock the Before view\n\nLock: keep the Before view unchanged.\nUseful to evaluate the cumulative effect of multiple tools.\nAdditionally, comparisons can be made to any state in the History.\n\nUnlock: the Before view will follow the After view one step behind, showing the image before the effect of the currently used tool. MAIN_TOOLTIP_HIDEHP;Show/Hide the left panel (including the history).\nShortcut: l MAIN_TOOLTIP_INDCLIPPEDH;Clipped highlight indication.\nShortcut: < MAIN_TOOLTIP_INDCLIPPEDS;Clipped shadow indication.\nShortcut: > -MAIN_TOOLTIP_PREVIEWB;Preview the Blue channel.\nShortcut: b -MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the Focus Mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\n\nTo improve detection accuracy for noisy images evaluate at smaller zoom, about 10-30%. -MAIN_TOOLTIP_PREVIEWG;Preview the Green channel.\nShortcut: g -MAIN_TOOLTIP_PREVIEWL;Preview the Luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B -MAIN_TOOLTIP_PREVIEWR;Preview the Red channel.\nShortcut: r -MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. +MAIN_TOOLTIP_PREVIEWB;Preview the blue channel.\nShortcut: b +MAIN_TOOLTIP_PREVIEWFOCUSMASK;Preview the focus mask.\nShortcut: Shift-f\n\nMore accurate on images with shallow depth of field, low noise and at higher zoom levels.\nZoom out to 10-30% to improve detection accuracy on noisy images. +MAIN_TOOLTIP_PREVIEWG;Preview the green channel.\nShortcut: g +MAIN_TOOLTIP_PREVIEWL;Preview the luminosity.\nShortcut: v\n\n0.299*R + 0.587*G + 0.114*B +MAIN_TOOLTIP_PREVIEWR;Preview the red channel.\nShortcut: r +MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the sharpening contrast mask.\nShortcut: p\n\nOnly works when sharpening is enabled and zoom >= 100%. MAIN_TOOLTIP_QINFO;Quick info on the image.\nShortcut: i MAIN_TOOLTIP_SHOWHIDELP1;Show/Hide the left panel.\nShortcut: l MAIN_TOOLTIP_SHOWHIDERP1;Show/Hide the right panel.\nShortcut: Alt-l @@ -955,6 +977,7 @@ PARTIALPASTE_CROP;Crop PARTIALPASTE_DARKFRAMEAUTOSELECT;Dark-frame auto-selection PARTIALPASTE_DARKFRAMEFILE;Dark-frame file PARTIALPASTE_DEFRINGE;Defringe +PARTIALPASTE_DEHAZE;Haze removal PARTIALPASTE_DETAILGROUP;Detail Settings PARTIALPASTE_DIALOGLABEL;Partial paste processing profile PARTIALPASTE_DIRPYRDENOISE;Noise reduction @@ -1019,9 +1042,15 @@ PARTIALPASTE_VIBRANCE;Vibrance PARTIALPASTE_VIGNETTING;Vignetting correction PARTIALPASTE_WHITEBALANCE;White balance PREFERENCES_ADD;Add +PREFERENCES_APPEARANCE;Appearance +PREFERENCES_APPEARANCE_COLORPICKERFONT;Color picker font +PREFERENCES_APPEARANCE_CROPMASKCOLOR;Crop mask color +PREFERENCES_APPEARANCE_MAINFONT;Main font +PREFERENCES_APPEARANCE_NAVGUIDECOLOR;Navigator guide color +PREFERENCES_APPEARANCE_THEME;Theme PREFERENCES_APPLNEXTSTARTUP;restart required PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor color profile -PREFERENCES_AUTOSAVE_TP_OPEN;Automatically save tools collapsed/expanded\nstate before exiting +PREFERENCES_AUTOSAVE_TP_OPEN;Save tool collapsed/expanded state on exit PREFERENCES_BATCH_PROCESSING;Batch Processing PREFERENCES_BEHADDALL;All to 'Add' PREFERENCES_BEHADDALLHINT;Set all parameters to the Add mode.\nAdjustments of parameters in the batch tool panel will be deltas to the stored values. @@ -1029,9 +1058,11 @@ PREFERENCES_BEHAVIOR;Behavior PREFERENCES_BEHSETALL;All to 'Set' 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. PREFERENCES_BLACKBODY;Tungsten -PREFERENCES_CACHECLEARALL;Clear All -PREFERENCES_CACHECLEARPROFILES;Clear Processing Profiles -PREFERENCES_CACHECLEARTHUMBS;Clear Thumbnails +PREFERENCES_CACHECLEAR;Clear +PREFERENCES_CACHECLEAR_ALL;Clear all cached files: +PREFERENCES_CACHECLEAR_ALLBUTPROFILES;Clear all cached files except for cached processing profiles: +PREFERENCES_CACHECLEAR_ONLYPROFILES;Clear only cached processing profiles: +PREFERENCES_CACHECLEAR_SAFETY;Only files in the cache are cleared. Processing profiles stored alongside the source images are not touched. PREFERENCES_CACHEMAXENTRIES;Maximum number of cache entries PREFERENCES_CACHEOPTS;Cache Options PREFERENCES_CACHETHUMBHEIGHT;Maximum thumbnail height @@ -1040,8 +1071,8 @@ PREFERENCES_CLUTSCACHE;HaldCLUT Cache PREFERENCES_CLUTSCACHE_LABEL;Maximum number of cached CLUTs PREFERENCES_CLUTSDIR;HaldCLUT directory PREFERENCES_CMMBPC;Black point compensation -PREFERENCES_CROP;Crop editing -PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop area +PREFERENCES_CROP;Crop Editing +PREFERENCES_CROP_AUTO_FIT;Automatically zoom to fit the crop PREFERENCES_CROP_GUIDES;Guides shown when not editing the crop PREFERENCES_CROP_GUIDES_FRAME;Frame PREFERENCES_CROP_GUIDES_FULL;Original @@ -1057,7 +1088,6 @@ PREFERENCES_CUSTPROFBUILDKEYFORMAT;Keys format PREFERENCES_CUSTPROFBUILDKEYFORMAT_NAME;Name PREFERENCES_CUSTPROFBUILDKEYFORMAT_TID;TagID PREFERENCES_CUSTPROFBUILDPATH;Executable path -PREFERENCES_CUTOVERLAYBRUSH;Crop mask color/transparency PREFERENCES_D50;Settings in main menu PREFERENCES_D50_OLD;5000K PREFERENCES_D55;5500K @@ -1076,10 +1106,10 @@ PREFERENCES_DIROTHER;Other PREFERENCES_DIRSELECTDLG;Select Image Directory at Startup... PREFERENCES_DIRSOFTWARE;Installation directory PREFERENCES_EDITORCMDLINE;Custom command line -PREFERENCES_EDITORLAYOUT;Editor Layout +PREFERENCES_EDITORLAYOUT;Editor layout PREFERENCES_EXTERNALEDITOR;External Editor PREFERENCES_FBROWSEROPTS;File Browser / Thumbnail Options -PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Single row file browser toolbar\n(de-select for low resolution display) +PREFERENCES_FILEBROWSERTOOLBARSINGLEROW;Compact toolbars in File Browser PREFERENCES_FILEFORMAT;File format PREFERENCES_FLATFIELDFOUND;Found PREFERENCES_FLATFIELDSDIR;Flat-fields directory @@ -1136,7 +1166,6 @@ PREFERENCES_MONPROFILE;Default color profile PREFERENCES_MONPROFILE_WARNOSX;Due to MacOS limitations, only sRGB is supported. PREFERENCES_MULTITAB;Multiple Editor Tabs Mode PREFERENCES_MULTITABDUALMON;Multiple Editor Tabs In Own Window Mode -PREFERENCES_NAVGUIDEBRUSH;Navigator guide color PREFERENCES_NAVIGATIONFRAME;Navigation PREFERENCES_OUTDIR;Output Directory PREFERENCES_OUTDIRFOLDER;Save to folder @@ -1175,19 +1204,16 @@ PREFERENCES_PRTPROFILE;Color profile PREFERENCES_PSPATH;Adobe Photoshop installation directory PREFERENCES_REMEMBERZOOMPAN;Remember zoom % and pan offset PREFERENCES_REMEMBERZOOMPAN_TOOLTIP;Remember the zoom % and pan offset of the current image when opening a new image.\n\nThis option only works in "Single Editor Tab Mode" and when "Demosaicing method used for the preview at <100% zoom" is set to "As in PP3". -PREFERENCES_SAVE_TP_OPEN_NOW;Save tools collapsed/expanded state now -PREFERENCES_SELECTFONT;Select main font -PREFERENCES_SELECTFONT_COLPICKER;Select Color Picker's font +PREFERENCES_SAVE_TP_OPEN_NOW;Save tool collapsed/expanded state now PREFERENCES_SELECTLANG;Select language -PREFERENCES_SELECTTHEME;Select theme -PREFERENCES_SERIALIZE_TIFF_READ;Tiff Read Settings -PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize read of tiff files -PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;When working with folders full of uncompressed tiff files enabling this option can increase performance of thumb generation. +PREFERENCES_SERIALIZE_TIFF_READ;TIFF Read Settings +PREFERENCES_SERIALIZE_TIFF_READ_LABEL;Serialize reading of TIFF files +PREFERENCES_SERIALIZE_TIFF_READ_TOOLTIP;Enabling this option when working with folders containing uncompressed TIFF files can increase performance of thumbnail generation. PREFERENCES_SET;Set PREFERENCES_SHOWBASICEXIF;Show basic Exif info PREFERENCES_SHOWDATETIME;Show date and time PREFERENCES_SHOWEXPOSURECOMPENSATION;Append exposure compensation -PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show filmstrip toolbar +PREFERENCES_SHOWFILMSTRIPTOOLBAR;Show Filmstrip toolbar PREFERENCES_SHTHRESHOLD;Threshold for clipped shadows PREFERENCES_SINGLETAB;Single Editor Tab Mode PREFERENCES_SINGLETABVERTAB;Single Editor Tab Mode, Vertical Tabs @@ -1203,7 +1229,6 @@ PREFERENCES_TAB_GENERAL;General PREFERENCES_TAB_IMPROC;Image Processing PREFERENCES_TAB_PERFORMANCE;Performance PREFERENCES_TAB_SOUND;Sounds -PREFERENCES_THEME;Theme PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Embedded JPEG preview PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering @@ -1287,8 +1312,8 @@ THRESHOLDSELECTOR_HINT;Hold the Shift key to move individual control poin THRESHOLDSELECTOR_T;Top THRESHOLDSELECTOR_TL;Top-left THRESHOLDSELECTOR_TR;Top-right -TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen enabled:\nClick in the preview with left mouse button to add a color picker\nDrag it around while pressing the left mouse button\nDelete the color picker with a right mouse button click\nDelete all color pickers with Shift + Right mouse button click\nRight click away from any color picker to go back to the Hand tool -TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop area using Shift-mouse drag +TOOLBAR_TOOLTIP_COLORPICKER;Lockable Color Picker\n\nWhen the tool is active:\n- Add a picker: left-click.\n- Drag a picker: left-click and drag.\n- Delete a picker: right-click.\n- Delete all pickers: Ctrl+Shift+right-click.\n- Revert to hand tool: right-click outside any picker. +TOOLBAR_TOOLTIP_CROP;Crop selection.\nShortcut: c\nMove the crop using Shift+mouse drag. TOOLBAR_TOOLTIP_HAND;Hand tool.\nShortcut: h TOOLBAR_TOOLTIP_STRAIGHTEN;Straighten / fine rotation.\nShortcut: s\n\nIndicate the vertical or horizontal by drawing a guide line over the image preview. Angle of rotation will be shown next to the guide line. Center of rotation is the geometrical center of the image. TOOLBAR_TOOLTIP_WB;Spot white balance.\nShortcut: w @@ -1366,11 +1391,7 @@ TP_COARSETRAF_TOOLTIP_HFLIP;Flip horizontally. TP_COARSETRAF_TOOLTIP_ROTLEFT;Rotate left.\n\nShortcuts:\n[ - Multiple Editor Tabs Mode,\nAlt-[ - Single Editor Tab Mode. TP_COARSETRAF_TOOLTIP_ROTRIGHT;Rotate right.\n\nShortcuts:\n] - Multiple Editor Tabs Mode,\nAlt-] - Single Editor Tab Mode. TP_COARSETRAF_TOOLTIP_VFLIP;Flip vertically. -TP_COLORAPP_ADAPTSCENE;Scene absolute luminance -TP_COLORAPP_ADAPTSCENE_TOOLTIP;Absolute luminance of the scene environment (cd/m²).\n1) Calculated from the Exif data:\nShutter speed - ISO speed - F number - camera exposure correction.\n2) Calculated from the raw white point and RT's Exposure Compensation slider. -TP_COLORAPP_ADAPTVIEWING;Viewing absolute luminance (cd/m²) -TP_COLORAPP_ADAPTVIEWING_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16cd/m²). -TP_COLORAPP_ADAP_AUTO_TOOLTIP;If the checkbox is checked (recommended) RawTherapee calculates an optimum value from the Exif data.\nTo set the value manually, uncheck the checkbox first. +TP_COLORAPP_ABSOLUTELUMINANCE;Absolute luminance TP_COLORAPP_ALGO;Algorithm TP_COLORAPP_ALGO_ALL;All TP_COLORAPP_ALGO_JC;Lightness + Chroma (JC) @@ -1381,6 +1402,7 @@ TP_COLORAPP_BADPIXSL;Hot/bad pixel filter TP_COLORAPP_BADPIXSL_TOOLTIP;Suppression of hot/bad (brightly colored) pixels.\n0 = No effect\n1 = Median\n2 = Gaussian.\nAlternatively, adjust the image to avoid very dark shadows.\n\nThese artifacts are due to limitations of CIECAM02. TP_COLORAPP_BRIGHT;Brightness (Q) TP_COLORAPP_BRIGHT_TOOLTIP;Brightness in CIECAM02 takes into account the white's luminosity and differs from L*a*b* and RGB brightness. +TP_COLORAPP_CAT02ADAPTATION_TOOLTIP;When setting manually, values above 65 are recommended. TP_COLORAPP_CHROMA;Chroma (C) TP_COLORAPP_CHROMA_M;Colorfulness (M) TP_COLORAPP_CHROMA_M_TOOLTIP;Colorfulness in CIECAM02 differs from L*a*b* and RGB colorfulness. @@ -1400,8 +1422,6 @@ TP_COLORAPP_CURVEEDITOR3;Color curve TP_COLORAPP_CURVEEDITOR3_TOOLTIP;Adjust either chroma, saturation or colorfulness.\n\nShows the histogram of chromaticity (L*a*b*) before CIECAM02.\nIf the "Show CIECAM02 output histograms in curves" checkbox is enabled, shows the histogram of C, s or M after CIECAM02.\n\nC, s and M are not shown in the main histogram panel.\nFor final output refer to the main histogram panel. TP_COLORAPP_DATACIE;CIECAM02 output histograms in curves TP_COLORAPP_DATACIE_TOOLTIP;When enabled, histograms in CIECAM02 curves show approximate values/ranges for J or Q, and C, s or M after the CIECAM02 adjustments.\nThis selection does not impact the main histogram panel.\n\nWhen disabled, histograms in CIECAM02 curves show L*a*b* values before CIECAM02 adjustments. -TP_COLORAPP_DEGREE_AUTO_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value, which is then used by CAT02, and also for the entire CIECAM02.\nTo set the value manually, uncheck the check-box first (values above 65 are recommended). -TP_COLORAPP_DEGREE_TOOLTIP;Amount of CIE Chromatic Adaptation Transform 2002. TP_COLORAPP_FREE;Free temp+green + CAT02 + [output] TP_COLORAPP_GAMUT;Gamut control (L*a*b*) TP_COLORAPP_GAMUT_TOOLTIP;Allow gamut control in L*a*b* mode. @@ -1413,14 +1433,13 @@ TP_COLORAPP_LABEL_SCENE;Scene Conditions TP_COLORAPP_LABEL_VIEWING;Viewing Conditions TP_COLORAPP_LIGHT;Lightness (J) TP_COLORAPP_LIGHT_TOOLTIP;Lightness in CIECAM02 differs from L*a*b* and RGB lightness. +TP_COLORAPP_MEANLUMINANCE;Mean luminance (Yb%) TP_COLORAPP_MODEL;WP Model TP_COLORAPP_MODEL_TOOLTIP;White-Point Model.\n\nWB [RT] + [output]: RT's white balance is used for the scene, CIECAM02 is set to D50, and the output device's white balance is set in Viewing Conditions.\n\nWB [RT+CAT02] + [output]: RT's white balance settings are used by CAT02 and the output device's white balance is set in Viewing Conditions.\n\nFree temp+green + CAT02 + [output]: temp and green are selected by the user, the output device's white balance is set in Viewing Conditions. TP_COLORAPP_NEUTRAL;Reset TP_COLORAPP_NEUTRAL_TIP;Reset all sliders checkbox and curves to their default values TP_COLORAPP_RSTPRO;Red & skin-tones protection TP_COLORAPP_RSTPRO_TOOLTIP;Red & skin-tones protection affects both sliders and curves. -TP_COLORAPP_SHARPCIE;--unused-- -TP_COLORAPP_SHARPCIE_TOOLTIP;--unused-- TP_COLORAPP_SURROUND;Surround TP_COLORAPP_SURROUND_AVER;Average TP_COLORAPP_SURROUND_DARK;Dark @@ -1440,11 +1459,9 @@ TP_COLORAPP_TCMODE_SATUR;Saturation TP_COLORAPP_TEMP_TOOLTIP;To select an illuminant, always set Tint=1.\n\nA temp=2856\nD50 temp=5003\nD55 temp=5503\nD65 temp=6504\nD75 temp=7504 TP_COLORAPP_TONECIE;Tone mapping using CIECAM02 TP_COLORAPP_TONECIE_TOOLTIP;If this option is disabled, tone mapping is done in L*a*b* space.\nIf this option is enabled, tone mapping is done using CIECAM02.\nThe Tone Mapping tool must be enabled for this setting to take effect. +TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Absolute luminance of the viewing environment\n(usually 16 cd/m²). TP_COLORAPP_WBCAM;WB [RT+CAT02] + [output] TP_COLORAPP_WBRT;WB [RT] + [output] -TP_COLORAPP_YB;Yb% (mean luminance) -TP_COLORAPP_YBSCENE;Yb% (mean luminance) -TP_COLORAPP_YBSCENE_TOOLTIP;If "auto" is enabled, Yb is calculated from the mean value of the actual image's luminance TP_COLORTONING_AB;o C/L TP_COLORTONING_AUTOSAT;Automatic TP_COLORTONING_BALANCE;Balance @@ -1458,6 +1475,25 @@ TP_COLORTONING_LAB;L*a*b* blending TP_COLORTONING_LABEL;Color Toning TP_COLORTONING_LABGRID;L*a*b* color correction grid TP_COLORTONING_LABGRID_VALUES;HL: a=%1 b=%2\nS: a=%3 b=%4 +TP_COLORTONING_LABREGIONS;Color correction regions +TP_COLORTONING_LABREGION_ABVALUES;a=%1 b=%2 +TP_COLORTONING_LABREGION_CHANNEL;Channel +TP_COLORTONING_LABREGION_CHANNEL_ALL;All +TP_COLORTONING_LABREGION_CHANNEL_B;Blue +TP_COLORTONING_LABREGION_CHANNEL_G;Green +TP_COLORTONING_LABREGION_CHANNEL_R;Red +TP_COLORTONING_LABREGION_CHROMATICITYMASK;C +TP_COLORTONING_LABREGION_HUEMASK;H +TP_COLORTONING_LABREGION_LIGHTNESS;Lightness +TP_COLORTONING_LABREGION_LIGHTNESSMASK;L +TP_COLORTONING_LABREGION_LIST_TITLE;Correction +TP_COLORTONING_LABREGION_MASK;Mask +TP_COLORTONING_LABREGION_MASKBLUR;Mask Blur +TP_COLORTONING_LABREGION_OFFSET;Offset +TP_COLORTONING_LABREGION_POWER;Power +TP_COLORTONING_LABREGION_SATURATION;Saturation +TP_COLORTONING_LABREGION_SHOWMASK;Show mask +TP_COLORTONING_LABREGION_SLOPE;Slope TP_COLORTONING_LUMA;Luminance TP_COLORTONING_LUMAMODE;Preserve luminance TP_COLORTONING_LUMAMODE_TOOLTIP;If enabled, when you change color (red, green, cyan, blue, etc.) the luminance of each pixel is preserved. @@ -1497,15 +1533,20 @@ TP_CROP_GUIDETYPE;Guide type: TP_CROP_H;Height TP_CROP_LABEL;Crop TP_CROP_PPI;PPI= -TP_CROP_SELECTCROP;Select Crop +TP_CROP_RESETCROP;Reset +TP_CROP_SELECTCROP;Select TP_CROP_W;Width -TP_CROP_X;X -TP_CROP_Y;Y +TP_CROP_X;Left +TP_CROP_Y;Top TP_DARKFRAME_AUTOSELECT;Auto-selection TP_DARKFRAME_LABEL;Dark-Frame TP_DEFRINGE_LABEL;Defringe TP_DEFRINGE_RADIUS;Radius TP_DEFRINGE_THRESHOLD;Threshold +TP_DEHAZE_DEPTH;Depth +TP_DEHAZE_LABEL;Haze Removal +TP_DEHAZE_SHOW_DEPTH_MAP;Show Depth Map +TP_DEHAZE_STRENGTH;Strength TP_DIRPYRDENOISE_CHROMINANCE_AMZ;Auto multi-zones TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL;Automatic global TP_DIRPYRDENOISE_CHROMINANCE_AUTOGLOBAL_TOOLTIP;Try to evaluate chroma noise\nBe careful, this calculation is average, and is quite subjective ! @@ -1587,7 +1628,6 @@ TP_EPD_LABEL;Tone Mapping TP_EPD_REWEIGHTINGITERATES;Reweighting iterates TP_EPD_SCALE;Scale TP_EPD_STRENGTH;Strength -TP_EPD_TOOLTIP;Tone mapping is possible in L*a*b* mode (standard) and CIECAM02 mode.\n\nWhen in L*a*b* mode, tone mapping can also be used on the residual image of the Wavelet Levels tool.\n\nTo engage CIECAM02 tone mapping mode enable the following settings:\n1. CIECAM02\n2. Algorithm="Brightness + Colorfulness (QM)"\n3. "Tone mapping using CIECAM02 brightness (Q)" TP_EXPOSURE_AUTOLEVELS;Auto Levels TP_EXPOSURE_AUTOLEVELS_TIP;Toggles execution of Auto Levels to automatically set Exposure slider values based on an image analysis.\nEnables Highlight Reconstruction if necessary. TP_EXPOSURE_BLACKLEVEL;Black @@ -1739,10 +1779,16 @@ TP_LABCURVE_RSTPRO_TOOLTIP;Works on the Chromaticity slider and the CC curve. TP_LENSGEOM_AUTOCROP;Auto-Crop TP_LENSGEOM_FILL;Auto-fill TP_LENSGEOM_LABEL;Lens / Geometry +TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically +TP_LENSPROFILE_CORRECTION_LCPFILE;LCP file +TP_LENSPROFILE_CORRECTION_MANUAL;Manually TP_LENSPROFILE_LABEL;Profiled Lens Correction -TP_LENSPROFILE_USECA;Chromatic aberration correction -TP_LENSPROFILE_USEDIST;Distortion correction -TP_LENSPROFILE_USEVIGN;Vignetting correction +TP_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. +TP_LENSPROFILE_MODE_HEADER;Select the lens profile: +TP_LENSPROFILE_USE_CA;Chromatic aberration +TP_LENSPROFILE_USE_GEOMETRIC;Geometric +TP_LENSPROFILE_USE_HEADER;Select distortions to correct: +TP_LENSPROFILE_USE_VIGNETTING;Vignetting TP_LOCALCONTRAST_AMOUNT;Amount TP_LOCALCONTRAST_DARKNESS;Darkness level TP_LOCALCONTRAST_LABEL;Local Contrast @@ -1780,11 +1826,11 @@ TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES;Horizontal only on PDAF rows TP_PREPROCESS_LINEDENOISE_DIRECTION_VERTICAL;Vertical TP_PREPROCESS_NO_FOUND;None found TP_PREPROCESS_PDAFLINESFILTER;PDAF lines filter -TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Tries to suppress stripe noise caused by on-sensor PDAF pixels, occurring with some Sony mirrorless cameras on some backlit scenes with visible flare. TP_PRSHARPENING_LABEL;Post-Resize Sharpening TP_PRSHARPENING_TOOLTIP;Sharpens the image after resizing. Only works when the "Lanczos" resizing method is used. It is impossible to preview the effects of this tool. See RawPedia for usage instructions. TP_RAWCACORR_AUTO;Auto-correction TP_RAWCACORR_AUTOIT;Iterations +TP_RAWCACORR_AUTOIT_TOOLTIP;This setting is available if "Auto-correction" is checked.\nAuto-correction is conservative, meaning that it often does not correct all chromatic aberration.\nTo correct the remaining chromatic aberration, you can use up to five iterations of automatic chromatic aberration correction.\nEach iteration will reduce the remaining chromatic aberration from the last iteration at the cost of additional processing time. TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift TP_RAWCACORR_CABLUE;Blue TP_RAWCACORR_CARED;Red @@ -1818,7 +1864,7 @@ TP_RAW_DMETHOD_PROGRESSBAR;%1 demosaicing... TP_RAW_DMETHOD_PROGRESSBAR_REFINE;Demosaicing refinement... TP_RAW_DMETHOD_TOOLTIP;Note: IGV and LMMSE are dedicated to high ISO images to aid in noise reduction without leading to maze patterns, posterization or a washed-out look.\nPixel Shift is for Pentax/Sony Pixel Shift files. It falls back to AMaZE for non-Pixel Shift files. TP_RAW_DUALDEMOSAICAUTOCONTRAST;Auto threshold -TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the check-box is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the check-box first (reasonable values depend on the image). +TP_RAW_DUALDEMOSAICAUTOCONTRAST_TOOLTIP;If the checkbox is checked (recommended), RawTherapee calculates an optimum value based on flat regions in the image.\nIf there is no flat region in the image or the image is too noisy, the value will be set to 0.\nTo set the value manually, uncheck the checkbox first (reasonable values depend on the image). TP_RAW_DUALDEMOSAICCONTRAST;Contrast threshold TP_RAW_EAHD;EAHD TP_RAW_FALSECOLOR;False color suppression steps @@ -1886,10 +1932,10 @@ TP_RESIZE_SCALE;Scale TP_RESIZE_SPECIFY;Specify: TP_RESIZE_W;Width: TP_RESIZE_WIDTH;Width -TP_RETINEX_CONTEDIT_HSL;Histogram equalizer HSL -TP_RETINEX_CONTEDIT_LAB;Histogram equalizer L*a*b* -TP_RETINEX_CONTEDIT_LH;Hue equalizer -TP_RETINEX_CONTEDIT_MAP;Mask equalizer +TP_RETINEX_CONTEDIT_HSL;HSL histogram +TP_RETINEX_CONTEDIT_LAB;L*a*b* histogram +TP_RETINEX_CONTEDIT_LH;Hue +TP_RETINEX_CONTEDIT_MAP;Equalizer TP_RETINEX_CURVEEDITOR_CD;L=f(L) TP_RETINEX_CURVEEDITOR_CD_TOOLTIP;Luminance according to luminance L=f(L)\nCorrect raw data to reduce halos and artifacts. TP_RETINEX_CURVEEDITOR_LH;Strength=f(H) @@ -1927,7 +1973,7 @@ TP_RETINEX_LABEL;Retinex TP_RETINEX_LABEL_MASK;Mask TP_RETINEX_LABSPACE;L*a*b* TP_RETINEX_LOW;Low -TP_RETINEX_MAP;Mask method +TP_RETINEX_MAP;Method TP_RETINEX_MAP_GAUS;Gaussian mask TP_RETINEX_MAP_MAPP;Sharp mask (wavelet partial) TP_RETINEX_MAP_MAPT;Sharp mask (wavelet total) @@ -1990,6 +2036,7 @@ TP_SHARPENEDGE_LABEL;Edges TP_SHARPENEDGE_PASSES;Iterations TP_SHARPENEDGE_THREE;Luminance only TP_SHARPENING_AMOUNT;Amount +TP_SHARPENING_BLUR;Blur radius TP_SHARPENING_CONTRAST;Contrast threshold TP_SHARPENING_EDRADIUS;Radius TP_SHARPENING_EDTOLERANCE;Edge tolerance @@ -2015,7 +2062,7 @@ TP_SOFTLIGHT_STRENGTH;Strength TP_TM_FATTAL_AMOUNT;Amount TP_TM_FATTAL_ANCHOR;Anchor TP_TM_FATTAL_LABEL;Dynamic Range Compression -TP_TM_FATTAL_THRESHOLD;Threshold +TP_TM_FATTAL_THRESHOLD;Detail TP_VIBRANCE_AVOIDCOLORSHIFT;Avoid color shift TP_VIBRANCE_CURVEEDITOR_SKINTONES;HH TP_VIBRANCE_CURVEEDITOR_SKINTONES_LABEL;Skin-tones @@ -2237,6 +2284,7 @@ TP_WBALANCE_LED_CRS;CRS SP12 WWMR16 TP_WBALANCE_LED_HEADER;LED TP_WBALANCE_LED_LSI;LSI Lumelex 2040 TP_WBALANCE_METHOD;Method +TP_WBALANCE_PICKER;Pick TP_WBALANCE_SHADE;Shade TP_WBALANCE_SIZE;Size: TP_WBALANCE_SOLUX35;Solux 3500K diff --git a/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 index 36dd66908..99f0af8fe 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 @@ -1,24 +1,11 @@ +[Exposure] +Auto=false +HistogramMatching=true + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=true -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=1;0;0;1;1; -Curve2=0; - [Directional Pyramid Denoising] Enabled=true Enhance=false @@ -37,8 +24,8 @@ Redchro=0 Bluechro=0 Gamma=1.7 Passes=1 -LCurve=0 -CCCurve=0 +LCurve=0; +CCCurve=0; [LensProfile] LcMode=lfauto @@ -46,21 +33,18 @@ UseDistortion=true UseVignette=true UseCA=false -[RAW] -CA=true - -[RAW Bayer] -Method=lmmse -CcSteps=2 -LMMSEIterations=2 - -[RAW X-Trans] -Method=1-pass (medium) -CcSteps=2 - [Color Management] ToneCurve=false ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true + +[RAW Bayer] +Method=lmmse + +[RAW X-Trans] +Method=1-pass (medium) diff --git a/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 index 7af720c4d..882c0130f 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 @@ -1,36 +1,23 @@ +[Exposure] +Auto=false +HistogramMatching=true + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=true -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=0; -Curve2=0; - [LensProfile] LcMode=lfauto UseDistortion=true UseVignette=true UseCA=false -[RAW] -CA=true - [Color Management] ToneCurve=false ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true diff --git a/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 index a391a7d2c..f9196bb30 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 @@ -1,24 +1,11 @@ +[Exposure] +Auto=false +HistogramMatching=true + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=true -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=0; -Curve2=0; - [Directional Pyramid Denoising] Enabled=true Enhance=false @@ -38,8 +25,8 @@ Redchro=0 Bluechro=0 Gamma=1.7 Passes=1 -LCurve=0 -CCCurve=0 +LCurve=0; +CCCurve=0; [LensProfile] LcMode=lfauto @@ -47,12 +34,12 @@ UseDistortion=true UseVignette=true UseCA=false -[RAW] -CA=true - [Color Management] ToneCurve=false ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true diff --git a/rtdata/profiles/Black-and-White/Black-and-White 1.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 1.pp3 deleted file mode 100644 index 871cc7289..000000000 --- a/rtdata/profiles/Black-and-White/Black-and-White 1.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=1;0;0;0.04;0.03;0.17684498029510265;0.21732319394192093;0.70232558139534862;0.74883720930232545;1;1; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=true -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=43 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=30 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-100 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Black-and-White/Black-and-White 2.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 2.pp3 deleted file mode 100644 index 20579d56a..000000000 --- a/rtdata/profiles/Black-and-White/Black-and-White 2.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=1;0;0;0.45754265471370759;0.57906737998843294;1;1; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=true -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=43 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=30 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-100 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.84892086330935235;0.69064748201438808;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Black-and-White/Black-and-White 3.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 3.pp3 deleted file mode 100644 index 0e62f7a0b..000000000 --- a/rtdata/profiles/Black-and-White/Black-and-White 3.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=true -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=43 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=30 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-100 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=2;0.25;0.5;0.75;50;12;-12;-50; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Black-and-White/Black-and-White 4.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 4.pp3 deleted file mode 100644 index 679630c4c..000000000 --- a/rtdata/profiles/Black-and-White/Black-and-White 4.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=true -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=43 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=30 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=-35 -Chromaticity=-100 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.18623481781376497;0.028340080971659902;0.50607287449392713;0.50607287449392713;0.77732793522267185;0.97975708502024295;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 deleted file mode 100644 index b636f3a8d..000000000 --- a/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.047430830039525626;0.21343873517786571;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.22924901185770752;0.031620553359683806;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 b/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 deleted file mode 100644 index 781ed1380..000000000 --- a/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.047430830039525626;0.21343873517786571;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.22924901185770752;0.031620553359683806;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Amber 1.pp3 b/rtdata/profiles/Faded/Faded Amber 1.pp3 deleted file mode 100644 index 068fb369c..000000000 --- a/rtdata/profiles/Faded/Faded Amber 1.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.047430830039525626;0.21343873517786571;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.22924901185770752;0.031620553359683806;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 deleted file mode 100644 index 43a1f72bd..000000000 --- a/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 b/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 deleted file mode 100644 index a0931ff2c..000000000 --- a/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Blue 1.pp3 b/rtdata/profiles/Faded/Faded Blue 1.pp3 deleted file mode 100644 index a25670c0f..000000000 --- a/rtdata/profiles/Faded/Faded Blue 1.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 b/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 deleted file mode 100644 index 6950325f1..000000000 --- a/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;0.81034482758620685;0.94827586206896552;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Blue Pink.pp3 b/rtdata/profiles/Faded/Faded Blue Pink.pp3 deleted file mode 100644 index ac426a671..000000000 --- a/rtdata/profiles/Faded/Faded Blue Pink.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;0.81034482758620685;0.94827586206896552;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 deleted file mode 100644 index ec0b45cf8..000000000 --- a/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.16206896551724165;0.079310344827586171;1;1; -gCurve=3;0;0;0.1655172413793104;0.034482758620689787;1;1; -bCurve=3;0;0;0.55827995093362426;0.31529235382308862;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 deleted file mode 100644 index e60da1e22..000000000 --- a/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.15733951206215074;0.55445004770342121;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.16206896551724165;0.079310344827586171;1;1; -gCurve=3;0;0;0.1655172413793104;0.034482758620689787;1;1; -bCurve=3;0;0;0.55827995093362426;0.31529235382308862;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Golden 1.pp3 b/rtdata/profiles/Faded/Faded Golden 1.pp3 deleted file mode 100644 index 68e7d163c..000000000 --- a/rtdata/profiles/Faded/Faded Golden 1.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.53359683794466362;0.72870684529014551;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=56 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.086956521739130432;0.090909090909090856;1;1; -gCurve=3;0;0;0.20266764462192638;0.12923950395936107;1;1; -bCurve=1;0;0;0.25296442687747034;0.22529644268774709;0.8656126482213431;0.80632411067193566;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Golden 2.pp3 b/rtdata/profiles/Faded/Faded Golden 2.pp3 deleted file mode 100644 index ffb688403..000000000 --- a/rtdata/profiles/Faded/Faded Golden 2.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.53359683794466362;0.72870684529014551;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=56 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.086956521739130432;0.090909090909090856;0.94466403162055268;0.89328063241106692;1;1; -gCurve=3;0;0;0.20266764462192638;0.12923950395936107;0.90118577075098805;0.88537549407114613;1;1; -bCurve=1;0;0;0.25296442687747034;0.22529644268774709;0.8656126482213431;0.80632411067193566;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 deleted file mode 100644 index 6e5786bda..000000000 --- a/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Green 1 TM.pp3 b/rtdata/profiles/Faded/Faded Green 1 TM.pp3 deleted file mode 100644 index d3a8b3919..000000000 --- a/rtdata/profiles/Faded/Faded Green 1 TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Green 1.pp3 b/rtdata/profiles/Faded/Faded Green 1.pp3 deleted file mode 100644 index 89a0b1afa..000000000 --- a/rtdata/profiles/Faded/Faded Green 1.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Green 2.pp3 b/rtdata/profiles/Faded/Faded Green 2.pp3 deleted file mode 100644 index 1d25d36cf..000000000 --- a/rtdata/profiles/Faded/Faded Green 2.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.083003952569169981;0.075098814229249022;0.74703557312252944;0.81422924901185822;1;1; -gCurve=3;0;0;0.32806324110671931;0.43083003952569182;1;1; -bCurve=3;0;0;0.040612308653546869;0.12528693478940064;0.85375494071146218;0.9130434782608694;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Green 3.pp3 b/rtdata/profiles/Faded/Faded Green 3.pp3 deleted file mode 100644 index 4353eaa1c..000000000 --- a/rtdata/profiles/Faded/Faded Green 3.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.11903093907591648;0.023682704102494199;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;40;0; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.24505928853754988;0.055335968379447285;0.81034482758620685;0.94827586206896552;1;1; -gCurve=3;0;0;0.1146245059288528;0.023715415019764076;1;1; -bCurve=3;0;0;0.086956521739130363;0.21739130434782611;0.9446640316205519;0.69960474308300313;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Neutral TM.pp3 b/rtdata/profiles/Faded/Faded Neutral TM.pp3 deleted file mode 100644 index 8b5beb761..000000000 --- a/rtdata/profiles/Faded/Faded Neutral TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Neutral.pp3 b/rtdata/profiles/Faded/Faded Neutral.pp3 deleted file mode 100644 index adf5069c1..000000000 --- a/rtdata/profiles/Faded/Faded Neutral.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 deleted file mode 100644 index dc686e332..000000000 --- a/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.15517241379310354;0.075862068965517254;1;1; -gCurve=3;0;0;0.13793103448275862;0.055172413793103607;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 b/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 deleted file mode 100644 index 71b0b780e..000000000 --- a/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.15517241379310354;0.075862068965517254;1;1; -gCurve=3;0;0;0.13793103448275862;0.055172413793103607;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Purple 1.pp3 b/rtdata/profiles/Faded/Faded Purple 1.pp3 deleted file mode 100644 index 9224db874..000000000 --- a/rtdata/profiles/Faded/Faded Purple 1.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.15517241379310354;0.075862068965517254;1;1; -gCurve=3;0;0;0.13793103448275862;0.055172413793103607;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 b/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 deleted file mode 100644 index 12c1d4275..000000000 --- a/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.15517241379310354;0.075862068965517254;0.7;0.9;1;1; -gCurve=3;0;0;0.13793103448275862;0.055172413793103607;0.69655172413793076;0.90689655172413808;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Purple 2.pp3 b/rtdata/profiles/Faded/Faded Purple 2.pp3 deleted file mode 100644 index 39f401ca7..000000000 --- a/rtdata/profiles/Faded/Faded Purple 2.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;20; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.15517241379310354;0.075862068965517254;0.69999999999999973;0.90000000000000013;1;1; -gCurve=3;0;0;0.13793103448275862;0.055172413793103607;0.69655172413793076;0.90689655172413808;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 b/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 deleted file mode 100644 index fba0dc024..000000000 --- a/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=170 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.29527054654490958;0.54755349597928327;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.068858525282812999;0.0083378765162873056;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.094310344827586101;0.09189655172413784;0.9956896551724137;0.92051724137931046;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=1;0.073578595317725717;0.69732441471571893;0.35;0.35;0.33333333333333331;0.5;0.35;0.35;0.5;0.5;0.35;0.35;0.66666666666666663;0.5;0.35;0.35;0.83333333333333326;0.5;0.35;0.35; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.18620689655172415;0.044827586206896544;0.85517241379310338;0.91379310344827591;1;1; -gCurve=3;0;0;0.13224137931034488;0.048793103448275733;0.95172413793103461;0.8655172413793103;1;1; -bCurve=3;0;0;0.12758620689655173;0.075862068965517226;0.90344827586206922;0.78620689655172393;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 b/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 deleted file mode 100644 index 34302c02e..000000000 --- a/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=170 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.29527054654490958;0.40962246149652437;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.068858525282812999;0.0083378765162873056;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.094310344827586101;0.09189655172413784;0.89568965517241339;0.9032758620689656;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=1;0.073578595317725717;0.69732441471571893;0.35;0.35;0.33333333333333331;0.5;0.35;0.35;0.5;0.5;0.35;0.35;0.66666666666666663;0.5;0.35;0.35;0.83333333333333326;0.5;0.35;0.35; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.18620689655172415;0.044827586206896544;0.85517241379310338;0.91379310344827591;1;1; -gCurve=3;0;0;0.13224137931034488;0.048793103448275733;0.95172413793103461;0.8655172413793103;1;1; -bCurve=3;0;0;0.12758620689655173;0.075862068965517226;0.90344827586206922;0.78620689655172393;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Teal Orange.pp3 b/rtdata/profiles/Faded/Faded Teal Orange.pp3 deleted file mode 100644 index 946812758..000000000 --- a/rtdata/profiles/Faded/Faded Teal Orange.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.33320158102766828;0.53720866839307635;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.068858525282812999;0.0083378765162873056;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;80; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.094310344827586101;0.09189655172413784;0.89568965517241339;0.9032758620689656;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=1;0.073578595317725717;0.69732441471571893;0.35;0.35;0.33333333333333331;0.5;0.35;0.35;0.5;0.5;0.35;0.35;0.66666666666666663;0.5;0.35;0.35;0.83333333333333326;0.5;0.35;0.35; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.18620689655172415;0.044827586206896544;0.85517241379310338;0.91379310344827591;1;1; -gCurve=3;0;0;0.13224137931034488;0.048793103448275733;0.95172413793103461;0.8655172413793103;1;1; -bCurve=3;0;0;0.12758620689655173;0.075862068965517226;0.90344827586206922;0.78620689655172393;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 deleted file mode 100644 index 18a5898f2..000000000 --- a/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;40; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 b/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 deleted file mode 100644 index 9f8157139..000000000 --- a/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.27667984189723321;0.47035573122529734;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;40; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Warm 1.pp3 b/rtdata/profiles/Faded/Faded Warm 1.pp3 deleted file mode 100644 index 8fa907460..000000000 --- a/rtdata/profiles/Faded/Faded Warm 1.pp3 +++ /dev/null @@ -1,97 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=60;0;20; -Green=0;60;40; -Blue=-20;20;40; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=-25 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HLRecovery] -Enabled=false -Method=Blend - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Warm 2.pp3 b/rtdata/profiles/Faded/Faded Warm 2.pp3 deleted file mode 100644 index 567e235f4..000000000 --- a/rtdata/profiles/Faded/Faded Warm 2.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;20; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.91699604743083007;0.76284584980237169;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Faded/Faded Warm 3.pp3 b/rtdata/profiles/Faded/Faded Warm 3.pp3 deleted file mode 100644 index 873f01f35..000000000 --- a/rtdata/profiles/Faded/Faded Warm 3.pp3 +++ /dev/null @@ -1,93 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=SatAndValueBlending -CurveMode2=FilmLike -Curve=3;0;0;0.23320158102766808;0.58893280632411094;0.69169960474308201;0.96047430830039549;1;1; -Curve2=3;0;0;0.12213438735177862;0.012648221343873525;0.46245059288537577;0.41250131169330889;1;1; - -[Channel Mixer] -Red=80;0;20; -Green=0;60;40; -Blue=-20;20;20; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=-29 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -LcCurve=0; -ClCurve=0; -lhCurve=0; -hhCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=true -Luma=0 -Ldetail=0 -Chroma=20 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.40 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=3;0;0;0.051383399209486022;0.17391304347826081;1;1; -gCurve=3;0;0;1;1; -bCurve=3;0;0;0.051383399209486022;0.17391304347826081;0.57312252964427013;0.95652173913043359;1;1; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Deep Shadows.pp3 b/rtdata/profiles/Generic/Deep Shadows.pp3 deleted file mode 100644 index cfee29587..000000000 --- a/rtdata/profiles/Generic/Deep Shadows.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=3;0;0;0.10280701754385937;0;0.22561403508771805;0.081754385964912232;0.82456140350877249;0.82456140350877249;1;1; -Curve2=3;0;0;0.20585593677025255;0.44367403149511991;0.6315789473684208;0.89473684210526305;1;1; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=true -Pastels=20 -Saturated=20 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=No -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Equilibrated.pp3 b/rtdata/profiles/Generic/Equilibrated.pp3 deleted file mode 100644 index 3194ca5ff..000000000 --- a/rtdata/profiles/Generic/Equilibrated.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=WeightedStd -Curve=3;0;0;0.10641712584710848;0;0.22561403508771805;0.12507568560390137;0.82456140350877249;0.82456140350877249;1;1; -Curve2=3;0;0;0.20585593677025255;0.44367403149511991;0.6315789473684208;0.89473684210526305;1;1; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=No -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/High-Key.pp3 b/rtdata/profiles/Generic/High-Key.pp3 deleted file mode 100644 index 9714151a0..000000000 --- a/rtdata/profiles/Generic/High-Key.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=-10 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=2;0.105;0.25;0.75;15;60;30;-70; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=5 -Chromaticity=-10 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Natural 1.pp3 b/rtdata/profiles/Generic/Natural 1.pp3 deleted file mode 100644 index 4a21f7a05..000000000 --- a/rtdata/profiles/Generic/Natural 1.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=1;0;0;0.04;0.03;0.17684498029510265;0.21732319394192093;0.70232558139534862;0.74883720930232545;1;1; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Natural 2.pp3 b/rtdata/profiles/Generic/Natural 2.pp3 deleted file mode 100644 index c1bf8a832..000000000 --- a/rtdata/profiles/Generic/Natural 2.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=5 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=1;0;0;0.45754265471370759;0.57906737998843294;1;1; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=5 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.84892086330935235;0.69064748201438808;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Punchy 1.pp3 b/rtdata/profiles/Generic/Punchy 1.pp3 deleted file mode 100644 index 370862258..000000000 --- a/rtdata/profiles/Generic/Punchy 1.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=120;-10;-10; -Green=-10;120;-10; -Blue=-10;-10;120; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=10 -Chromaticity=5 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Generic/Punchy 2.pp3 b/rtdata/profiles/Generic/Punchy 2.pp3 deleted file mode 100644 index c98f8e87f..000000000 --- a/rtdata/profiles/Generic/Punchy 2.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=true -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=10 -Chromaticity=5 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=true -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Non-raw/Brighten.pp3 b/rtdata/profiles/Non-raw/Brighten.pp3 index 863102ae0..37f66fb75 100644 --- a/rtdata/profiles/Non-raw/Brighten.pp3 +++ b/rtdata/profiles/Non-raw/Brighten.pp3 @@ -1,16 +1,3 @@ [Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true +Enabled=true LCurve=3;0;0;0.055044034166268768;0;0.52103559870550098;1;1;1; -aCurve=0; -bCurve=0; -ccCurve=3;0;0;0.10679611650485436;0.30420711974110037;1;1; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=3;0;0;0.3592233009708739;0.3592233009708739;0.40129449838187703;0.40129449838187703;1;0.0032362459546936488; diff --git a/rtdata/profiles/Pop/Pop 1.pp3 b/rtdata/profiles/Pop/Pop 1.pp3 index c86b146a8..2152a268b 100644 --- a/rtdata/profiles/Pop/Pop 1.pp3 +++ b/rtdata/profiles/Pop/Pop 1.pp3 @@ -9,31 +9,27 @@ Black=0 HighlightCompr=70 HighlightComprThreshold=0 ShadowCompr=50 +HistogramMatching=false +CurveFromHistogramMatching=false +ClampOOG=true CurveMode=FilmLike CurveMode2=Standard -Curve=3;0;0;0.084;0;0.187;0.188;0.442;0.58;1;1; +Curve=3;0;0;0.084000000000000005;0;0.187;0.188;0.442;0.57999999999999996;1;1; Curve2=0; [HLRecovery] Enabled=true Method=Blend -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false - [Luminance Curve] +Enabled=true Brightness=0 Contrast=0 Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.5;0.4;1;1; +LCurve=3;0;0;0.5;0.40000000000000002;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -43,18 +39,14 @@ hhCurve=0; LcCurve=0; ClCurve=0; -[Vibrance] -Enabled=false - -[White Balance] -Setting=Camera -Equal=1 - [Color appearance] Enabled=true -Degree=100 +Degree=98 AutoDegree=true +Degreeout=85 +AutoDegreeout=true Surround=Average +Surrsrc=Average AdaptLum=16 Badpixsl=0 Model=RawT @@ -70,58 +62,34 @@ H-Hue=0 RSTProtection=0 AdaptScene=208 AutoAdapscen=true +YbScene=15 +Autoybscen=true SurrSource=false Gamut=true +Tempout=5000 +Greenout=1 +Tempsc=5000 +Greensc=1 +Ybout=18 Datacie=false Tonecie=true CurveMode=Brightness CurveMode2=Lightness CurveMode3=Colorfullness Curve=0; -Curve2=3;0;0;0.15;0;0.67;0.91;1;1; -Curve3=3;0;0;0.08;0.02;0.3;0.5;1;1; +Curve2=3;0;0;0.14999999999999999;0;0.67000000000000004;0.91000000000000003;1;1; +Curve3=3;0;0;0.080000000000000002;0.02;0.29999999999999999;0.5;1;1; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.4 -Scale=0.10 +Gamma=1 +EdgeStopping=1.3999999999999999 +Scale=0.5 ReweightingIterates=0 -[Shadows & Highlights] -Enabled=false - -[Gradient] -Enabled=false - [PCVignette] Enabled=true Strength=1 Feather=50 Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - -[RAW] -CA=true -HotPixelFilter=true -DeadPixelFilter=false -HotDeadPixelThresh=100 diff --git a/rtdata/profiles/Pop/Pop 2 L.pp3 b/rtdata/profiles/Pop/Pop 2 Lab.pp3 similarity index 58% rename from rtdata/profiles/Pop/Pop 2 L.pp3 rename to rtdata/profiles/Pop/Pop 2 Lab.pp3 index 854bd3eb5..796aeb5ba 100644 --- a/rtdata/profiles/Pop/Pop 2 L.pp3 +++ b/rtdata/profiles/Pop/Pop 2 Lab.pp3 @@ -9,31 +9,27 @@ Black=0 HighlightCompr=70 HighlightComprThreshold=0 ShadowCompr=50 +HistogramMatching=false +CurveFromHistogramMatching=false +ClampOOG=true CurveMode=FilmLike CurveMode2=Standard -Curve=3;0;0;0.179;0;0.384;0.502;1;1; +Curve=3;0;0;0.17899999999999999;0;0.38400000000000001;0.502;1;1; Curve2=0; [HLRecovery] Enabled=true Method=Blend -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false - [Luminance Curve] +Enabled=true Brightness=0 Contrast=0 Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.12;0.3;0.5;0.46;1;1; +LCurve=3;0;0;0.12;0.29999999999999999;0.5;0.46000000000000002;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -43,18 +39,14 @@ hhCurve=0; LcCurve=0; ClCurve=0; -[Vibrance] -Enabled=false - -[White Balance] -Setting=Camera -Equal=1 - [Color appearance] Enabled=true -Degree=100 +Degree=98 AutoDegree=true +Degreeout=85 +AutoDegreeout=true Surround=Average +Surrsrc=Average AdaptLum=16 Badpixsl=0 Model=RawT @@ -70,58 +62,34 @@ H-Hue=0 RSTProtection=0 AdaptScene=208 AutoAdapscen=true +YbScene=15 +Autoybscen=true SurrSource=false Gamut=true +Tempout=5000 +Greenout=1 +Tempsc=5000 +Greensc=1 +Ybout=18 Datacie=false Tonecie=true CurveMode=Brightness CurveMode2=Lightness CurveMode3=Colorfullness Curve=0; -Curve2=3;0;0;0.15;0;0.67;0.91;1;1; -Curve3=3;0;0;0.08;0.02;0.3;0.5;1;1; +Curve2=3;0;0;0.14999999999999999;0;0.67000000000000004;0.91000000000000003;1;1; +Curve3=3;0;0;0.080000000000000002;0.02;0.29999999999999999;0.5;1;1; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.4 -Scale=0.10 +Gamma=1 +EdgeStopping=1.3999999999999999 +Scale=0.5 ReweightingIterates=0 -[Shadows & Highlights] -Enabled=false - -[Gradient] -Enabled=false - [PCVignette] Enabled=true Strength=1 Feather=50 Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - -[RAW] -CA=true -HotPixelFilter=true -DeadPixelFilter=false -HotDeadPixelThresh=100 diff --git a/rtdata/profiles/Pop/Pop 3 Skin.pp3 b/rtdata/profiles/Pop/Pop 3 Skin.pp3 index ec50418b1..650b2e189 100644 --- a/rtdata/profiles/Pop/Pop 3 Skin.pp3 +++ b/rtdata/profiles/Pop/Pop 3 Skin.pp3 @@ -9,31 +9,27 @@ Black=0 HighlightCompr=70 HighlightComprThreshold=0 ShadowCompr=50 +HistogramMatching=false +CurveFromHistogramMatching=false +ClampOOG=true CurveMode=SatAndValueBlending CurveMode2=Standard -Curve=3;0;0;0.084;0;0.187;0.188;0.442;0.58;1;1; +Curve=3;0;0;0.084000000000000005;0;0.187;0.188;0.442;0.57999999999999996;1;1; Curve2=0; [HLRecovery] Enabled=true Method=Blend -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false - [Luminance Curve] +Enabled=true Brightness=0 Contrast=0 Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.5;0.4;1;1; +LCurve=3;0;0;0.5;0.40000000000000002;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -43,18 +39,14 @@ hhCurve=0; LcCurve=0; ClCurve=0; -[Vibrance] -Enabled=false - -[White Balance] -Setting=Camera -Equal=1 - [Color appearance] Enabled=true -Degree=100 +Degree=98 AutoDegree=true +Degreeout=85 +AutoDegreeout=true Surround=Average +Surrsrc=Average AdaptLum=16 Badpixsl=0 Model=RawT @@ -70,58 +62,34 @@ H-Hue=0 RSTProtection=50 AdaptScene=208 AutoAdapscen=true +YbScene=10 +Autoybscen=true SurrSource=false Gamut=true +Tempout=5000 +Greenout=1 +Tempsc=5000 +Greensc=1 +Ybout=18 Datacie=false Tonecie=true CurveMode=Brightness CurveMode2=Lightness CurveMode3=Colorfullness Curve=0; -Curve2=3;0;0;0.15;0;0.67;0.91;1;1; -Curve3=3;0;0;0.08;0.02;0.38;0.73;1;1; +Curve2=3;0;0;0.14999999999999999;0;0.67000000000000004;0.91000000000000003;1;1; +Curve3=3;0;0;0.080000000000000002;0.02;0.38;0.72999999999999998;1;1; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.4 -Scale=0.10 +Gamma=1 +EdgeStopping=1.3999999999999999 +Scale=0.5 ReweightingIterates=0 -[Shadows & Highlights] -Enabled=false - -[Gradient] -Enabled=false - [PCVignette] Enabled=true Strength=1 Feather=50 Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - -[RAW] -CA=true -HotPixelFilter=true -DeadPixelFilter=false -HotDeadPixelThresh=100 diff --git a/rtdata/profiles/Pop/Pop 4 BW.pp3 b/rtdata/profiles/Pop/Pop 4 Black-and-White.pp3 similarity index 66% rename from rtdata/profiles/Pop/Pop 4 BW.pp3 rename to rtdata/profiles/Pop/Pop 4 Black-and-White.pp3 index b26a9d8a7..9faa32a0a 100644 --- a/rtdata/profiles/Pop/Pop 4 BW.pp3 +++ b/rtdata/profiles/Pop/Pop 4 Black-and-White.pp3 @@ -1,7 +1,7 @@ [Exposure] Auto=false Clip=0.02 -Compensation=0.66 +Compensation=0.66000000000000003 Brightness=0 Contrast=0 Saturation=0 @@ -9,24 +9,22 @@ Black=0 HighlightCompr=70 HighlightComprThreshold=0 ShadowCompr=50 +HistogramMatching=false +CurveFromHistogramMatching=false +ClampOOG=true CurveMode=SatAndValueBlending CurveMode2=Standard -Curve=3;0;0;0.084;0;0.187;0.188;0.587;0.742;1;1; +Curve=3;0;0;0.084000000000000005;0;0.187;0.188;0.58699999999999997;0.74199999999999999;1;1; Curve2=0; [HLRecovery] Enabled=true Method=Blend -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - [Black & White] Enabled=true Method=ChannelMixer -Auto=true +Auto=false ComplementaryColors=true Setting=RGB-Rel Filter=None @@ -49,13 +47,14 @@ BeforeCurve=0; AfterCurve=0; [Luminance Curve] +Enabled=true Brightness=0 Contrast=0 Chromaticity=0 AvoidColorShift=false RedAndSkinTonesProtection=0 LCredsk=true -LCurve=3;0;0;0.212;0.119;0.674;0.773;1;1; +LCurve=3;0;0;0.21199999999999999;0.11899999999999999;0.67400000000000004;0.77300000000000002;1;1; aCurve=0; bCurve=0; ccCurve=0; @@ -65,18 +64,14 @@ hhCurve=0; LcCurve=0; ClCurve=0; -[Vibrance] -Enabled=false - -[White Balance] -Setting=Camera -Equal=1 - [Color appearance] Enabled=true -Degree=100 +Degree=97 AutoDegree=true +Degreeout=85 +AutoDegreeout=true Surround=Average +Surrsrc=Average AdaptLum=16 Badpixsl=0 Model=RawT @@ -90,60 +85,36 @@ J-Contrast=0 Q-Contrast=0 H-Hue=0 RSTProtection=0 -AdaptScene=208 +AdaptScene=164.33000000000001 AutoAdapscen=true +YbScene=10 +Autoybscen=true SurrSource=false Gamut=true +Tempout=5000 +Greenout=1 +Tempsc=5000 +Greensc=1 +Ybout=18 Datacie=false Tonecie=true CurveMode=Lightness CurveMode2=Lightness CurveMode3=Colorfullness -Curve=3;0;0;0.15;0;0.545;1;1;1; +Curve=3;0;0;0.14999999999999999;0;0.54500000000000004;1;1;1; Curve2=0; Curve3=0; [EPD] Enabled=true Strength=0.25 -EdgeStopping=2.4 -Scale=0.10 +Gamma=1 +EdgeStopping=1.3999999999999999 +Scale=0.5 ReweightingIterates=0 -[Shadows & Highlights] -Enabled=false - -[Gradient] -Enabled=false - [PCVignette] Enabled=true Strength=1 Feather=50 Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - -[RAW] -CA=true -HotPixelFilter=true -DeadPixelFilter=false -HotDeadPixelThresh=100 diff --git a/rtdata/profiles/Portrait/Portrait Lejto.pp3 b/rtdata/profiles/Portrait/Portrait Lejto.pp3 deleted file mode 100644 index 085915ad4..000000000 --- a/rtdata/profiles/Portrait/Portrait Lejto.pp3 +++ /dev/null @@ -1,158 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=25 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=SatAndValueBlending -Curve=1;0;0;0.079285714285714293;0.03;0.18041642857142856;0.21375157142857143;0.702326;0.748837;1;1; -Curve2=1;0;0;0.075;0.13571428571428609;0.3;0.42857142857142855;0.7214285714285712;0.74642857142857144;1;1; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=1;0;0;1;1; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=No -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Portrait/Portrait Smooth.pp3 b/rtdata/profiles/Portrait/Portrait Smooth.pp3 deleted file mode 100644 index 8079c050d..000000000 --- a/rtdata/profiles/Portrait/Portrait Smooth.pp3 +++ /dev/null @@ -1,135 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=70 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=FilmLike -CurveMode2=Standard -Curve=1;0;0;0.443;0.574;1;1; -Curve2=0; - -[HLRecovery] -Enabled=true -Method=Luminance - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false - -[Luminance Curve] -Brightness=-20 -Contrast=-20 -Chromaticity=0 -AvoidColorShift=true -RedAndSkinTonesProtection=50 -LCredsk=true -LCurve=3;0;0;0.043;0.014;0.162;0.162;0.652;0.93;1;1; -aCurve=0; -bCurve=0; -ccCurve=1;0;0;0.254;0.3;1;1; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Sharpening] -Enabled=true -Method=usm -Radius=0.5 -Amount=250 -Threshold=20;80;2000;1200; -OnlyEdges=false -EdgedetectionRadius=1.9 -EdgeTolerance=1800 -HalocontrolEnabled=false -HalocontrolAmount=85 -DeconvRadius=0.75 -DeconvAmount=75 -DeconvDamping=20 -DeconvIterations=30 - -[Vibrance] -Enabled=false - -[SharpenEdge] -Enabled=false - -[SharpenMicro] -Enabled=false - -[White Balance] -Setting=Camera - -[Color appearance] -Enabled=false - -[Impulse Denoising] -Enabled=false - -[Defringing] -Enabled=false - -[Directional Pyramid Denoising] -Enabled=false - -[EPD] -Enabled=false - -[Shadows & Highlights] -Enabled=false - -[Crop] -Enabled=false - -[Gradient] -Enabled=false - -[PCVignette] -Enabled=false - -[Directional Pyramid Equalizer] -Enabled=true -Gamutlab=true -Mult0=1 -Mult1=1 -Mult2=1 -Mult3=0.6 -Mult4=0.6 -Threshold=0.2 -Skinprotect=0 -Hueskin=-5;25;170;120; - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - -[RAW] -CA=true - diff --git a/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 b/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 deleted file mode 100644 index d2cd3bb77..000000000 --- a/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=-1500 -HighlightCompr=40 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=FilmLike -CurveMode2=FilmLike -Curve=1;0;0;0.49407114624505927;0.49407114624505927;1;1; -Curve2=1;0;0;0.055335968379446598;0.019762845849802379;0.12648221343873495;0.11067193675889311;1;0.94861660079051413; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.063241106719367585;6.9388939039072284e-18;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=10 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=false -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.29629629629629628;0.19341563786008226;0.69547325102880675;0.80246913580246892;1;1; -Curve2=3;0;0;0.056806920298983779;0.020475350634080798;0.69802637104224341;0.88816662467456142;1;1; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=false -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Natural.pp3 b/rtdata/profiles/Skintones/Skintones - Natural.pp3 deleted file mode 100644 index 0fcdbfbfa..000000000 --- a/rtdata/profiles/Skintones/Skintones - Natural.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=-1500 -HighlightCompr=30 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=FilmLike -CurveMode2=FilmLike -Curve=1;0;0;0.49802371541501977;0.49802371541501977;1;1; -Curve2=1;0;0;0.097430830039525476;0.066798418972331866;0.12648221343873495;0.11067193675889311;1;0.95256916996047469; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.063241106719367585;6.9388939039072284e-18;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=8 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.19753086419753088;0.18106995884773661;0.58847736625514402;0.79012345679012241;1;1; -Curve2=3;0;0;0.056806920298983779;0.020475350634080798;0.69802637104224341;0.88816662467456142;1;1; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 deleted file mode 100644 index f2d2add0e..000000000 --- a/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=10 -Contrast=10 -Saturation=0 -Black=0 -HighlightCompr=40 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.1013677790907735;0.011341564456759405;0.32302405498281778;0.2147079037800686;1;0.81422924901185889; -Curve2=3;0;0;0.16151202749140844;0.24319627128016638;0.59793814432989756;0.90034364261168354;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.063241106719367585;6.9388939039072284e-18;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=-5 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.29629629629629628;0.19341563786008226;0.69547325102880675;0.80246913580246892;1;1; -Curve2=3;0;0;0.056806920298983779;0.020475350634080798;0.69802637104224341;0.88816662467456142;1;1; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 deleted file mode 100644 index d1eefc4c8..000000000 --- a/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=10 -Contrast=10 -Saturation=0 -Black=0 -HighlightCompr=40 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.1013677790907735;0.011341564456759405;0.32302405498281778;0.2147079037800686;1;0.81422924901185889; -Curve2=3;0;0;0.16151202749140844;0.24319627128016638;0.59793814432989756;0.90034364261168354;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.063241106719367585;6.9388939039072284e-18;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=-5 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.29629629629629628;0.19341563786008226;0.69547325102880675;0.80246913580246892;1;1; -Curve2=3;0;0;0.14545;0;0.69802600000000004;0.88816700000000004;1;1; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.25 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Pale.pp3 b/rtdata/profiles/Skintones/Skintones - Pale.pp3 deleted file mode 100644 index b22470758..000000000 --- a/rtdata/profiles/Skintones/Skintones - Pale.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=30 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.1013677790907735;0.011341564456759405;0.32302405498281778;0.2147079037800686;1;1; -Curve2=3;0;0;0.16151202749140844;0.24319627128016638;0.59793814432989756;0.90034364261168354;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=50 -Saturated=50 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=JC -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 b/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 deleted file mode 100644 index 65a8ea742..000000000 --- a/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=No -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=false -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=true -rCurve=3;0;0;0.058419243986254393;0.28522336769759427;0.46735395189003465;0.890034364261168;1;1; -gCurve=3;0;0;0.96563573883161546;0.66323024054982871;1;1; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 b/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 deleted file mode 100644 index 23ae9feac..000000000 --- a/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=0 -HighlightComprThreshold=33 -ShadowCompr=50 -CurveMode=Standard -CurveMode2=Standard -Curve=0; -Curve2=0; - -[HLRecovery] -Enabled=false -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=false -Degree=90 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=No -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=false -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=0; -Curve2=0; -Curve3=0; - -[Directional Pyramid Denoising] -Enabled=false -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.25 -EdgeStopping=1.4 -Scale=1 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=true -rCurve=3;0;0;0.29209621993127149;0.054982817869415793;0.90034364261168398;0.46391752577319617;1;1; -gCurve=3;0;0;0.67697594501718261;0.95532646048109982;1;1; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 b/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 deleted file mode 100644 index 7d9482169..000000000 --- a/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=-1500 -HighlightCompr=40 -HighlightComprThreshold=0 -ShadowCompr=0 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.083003952569169939;0.21343873517786566;1;1; -Curve2=3;0;0;0.063063463161166899;0.13925774599931898;0.86956521739130421;0.76284584980237158;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.15019762845849804;0.02766798418972332;0.31620553359683784;0.23715415019762845;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=10 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.06584362139917696;0.01234567901234568;0.24279835390946511;0.12757201646090524;0.46502057613168757;0.49324520929459226;0.67901234567901192;0.84773662551440199;1;1; -Curve2=0; -Curve3=1;0;0;0.86008230452674928;1; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.15 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=10 -HighlightTonalWidth=80 -Shadows=10 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=30 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - Studio.pp3 b/rtdata/profiles/Skintones/Skintones - Studio.pp3 deleted file mode 100644 index f23d6dbfd..000000000 --- a/rtdata/profiles/Skintones/Skintones - Studio.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=-1500 -HighlightCompr=30 -HighlightComprThreshold=0 -ShadowCompr=0 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;0.083003952569169939;0.21343873517786566;1;1; -Curve2=3;0;0;0.063063463161166899;0.13925774599931898;0.86956521739130421;0.76284584980237158;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=3;0;0;0.15019762845849804;0.02766798418972332;0.31620553359683784;0.23715415019762845;0.49407114624505927;0.50197628458498023;0.92885375494071132;0.99604743083003922;1;1; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=10 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.06584362139917696;0.01234567901234568;0.24279835390946511;0.12757201646090524;0.46502057613168757;0.49324520929459226;0.67901234567901192;0.84773662551440199;1;1; -Curve2=0; -Curve3=1;0;0;0.90534979423868323;1; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.15 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 deleted file mode 100644 index a04141050..000000000 --- a/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=30 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;1;1; -Curve2=3;0;0;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.11522633744855965;0.01234567901234568;0.49382716049382719;0.49382716049382719;0.76131687242798285;0.95473251028806605;1;1; -Curve2=0; -Curve3=1;0;0;1;1; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=true -Strength=0.15 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 deleted file mode 100644 index 64f284261..000000000 --- a/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 +++ /dev/null @@ -1,169 +0,0 @@ -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=20 -HighlightComprThreshold=0 -ShadowCompr=50 -CurveMode=WeightedStd -CurveMode2=SatAndValueBlending -Curve=3;0;0;1;1; -Curve2=3;0;0;1;1; - -[HLRecovery] -Enabled=true -Method=Blend - -[Channel Mixer] -Red=100;0;0; -Green=0;100;0; -Blue=0;0;100; - -[Black & White] -Enabled=false -Method=Desaturation -Auto=false -ComplementaryColors=true -Setting=NormalContrast -Filter=None -MixerRed=33 -MixerOrange=33 -MixerYellow=33 -MixerGreen=33 -MixerCyan=33 -MixerBlue=33 -MixerMagenta=33 -MixerPurple=33 -GammaRed=0 -GammaGreen=0 -GammaBlue=0 -LuminanceCurve=0; -BeforeCurveMode=Standard -AfterCurveMode=Standard -BeforeCurve=0; -AfterCurve=0; - -[Luminance Curve] -Brightness=0 -Contrast=0 -Chromaticity=0 -AvoidColorShift=false -RedAndSkinTonesProtection=0 -LCredsk=true -LCurve=0; -aCurve=0; -bCurve=0; -ccCurve=0; -chCurve=0; -lhCurve=0; -hhCurve=0; -LcCurve=0; -ClCurve=0; - -[Vibrance] -Enabled=false -Pastels=0 -Saturated=0 -PSThreshold=0;75; -ProtectSkins=false -AvoidColorShift=false -PastSatTog=true -SkinTonesCurve=0; - -[Color appearance] -Enabled=true -Degree=100 -AutoDegree=true -Surround=Average -AdaptLum=16 -Badpixsl=0 -Model=RawT -Algorithm=QM -J-Light=0 -Q-Bright=0 -C-Chroma=0 -S-Chroma=0 -M-Chroma=0 -J-Contrast=0 -Q-Contrast=0 -H-Hue=0 -RSTProtection=0 -AdaptScene=2000 -AutoAdapscen=true -SurrSource=false -Gamut=true -Datacie=false -Tonecie=true -CurveMode=Lightness -CurveMode2=Lightness -CurveMode3=Chroma -Curve=3;0;0;0.10699588477366252;0.049382716049382713;0.49382716049382719;0.49382716049382719;0.76131687242798285;0.95473251028806605;1;1; -Curve2=0; -Curve3=1;0;0;1;1; - -[Directional Pyramid Denoising] -Enabled=true -Enhance=false -Luma=0 -Ldetail=0 -Chroma=15 -Method=Lab -Redchro=0 -Bluechro=0 -Gamma=1.7 - -[EPD] -Enabled=false -Strength=0.15 -EdgeStopping=1.4 -Scale=0.25 -ReweightingIterates=0 - -[Shadows & Highlights] -Enabled=false -HighQuality=false -Highlights=0 -HighlightTonalWidth=80 -Shadows=0 -ShadowTonalWidth=80 -LocalContrast=0 -Radius=40 - -[Gradient] -Enabled=false -Degree=0 -Feather=25 -Strength=0.6 -CenterX=0 -CenterY=0 - -[PCVignette] -Enabled=false -Strength=0.6 -Feather=50 -Roundness=50 - -[HSV Equalizer] -HCurve=0; -SCurve=0; -VCurve=0; - -[Film Simulation] -Enabled=false - -[Wavelet] -Enabled=false - -[RGB Curves] -LumaMode=false -rCurve=0; -gCurve=0; -bCurve=0; - -[ColorToning] -Enabled=false - diff --git a/rtdata/profiles/Standard Film Curve - ISO High.pp3 b/rtdata/profiles/Standard Film Curve - ISO High.pp3 index bedc931ee..4dd3a9b1d 100644 --- a/rtdata/profiles/Standard Film Curve - ISO High.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO High.pp3 @@ -1,24 +1,13 @@ +[Exposure] +Auto=false +HistogramMatching=false +CurveMode=FilmLike +Curve=1;0;0;0.11;0.089999999999999997;0.32000000000000001;0.42999999999999999;0.66000000000000003;0.87;1;1; + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=90 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=false -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=1;0;0;0.11;0.09;0.32;0.43;0.66;0.87;1;1; -Curve2=0; - [Directional Pyramid Denoising] Enabled=true Enhance=false @@ -38,8 +27,8 @@ Redchro=0 Bluechro=0 Gamma=1.7 Passes=1 -LCurve=0 -CCCurve=0 +LCurve=0; +CCCurve=0; [LensProfile] LcMode=lfauto @@ -47,21 +36,18 @@ UseDistortion=true UseVignette=true UseCA=false -[RAW] -CA=true - -[RAW Bayer] -Method=lmmse -CcSteps=2 -LMMSEIterations=2 - -[RAW X-Trans] -Method=1-pass (medium) -CcSteps=2 - [Color Management] ToneCurve=false ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true + +[RAW Bayer] +Method=lmmse + +[RAW X-Trans] +Method=1-pass (medium) diff --git a/rtdata/profiles/Standard Film Curve - ISO Low.pp3 b/rtdata/profiles/Standard Film Curve - ISO Low.pp3 index d403119b9..c23b5b8a4 100644 --- a/rtdata/profiles/Standard Film Curve - ISO Low.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO Low.pp3 @@ -1,36 +1,25 @@ +[Exposure] +Auto=false +HistogramMatching=false +CurveMode=FilmLike +Curve=1;0;0;0.11;0.089999999999999997;0.32000000000000001;0.42999999999999999;0.66000000000000003;0.87;1;1; + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=90 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=false -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=1;0;0;0.11;0.09;0.32;0.43;0.66;0.87;1;1; -Curve2=0; - [LensProfile] LcMode=lfauto UseDistortion=true UseVignette=true UseCA=false -[RAW] -CA=true - [Color Management] ToneCurve=false ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true diff --git a/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 b/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 index 6e00d6705..4aff630f5 100644 --- a/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 @@ -1,24 +1,13 @@ +[Exposure] +Auto=false +HistogramMatching=false +CurveMode=FilmLike +Curve=1;0;0;0.11;0.089999999999999997;0.32000000000000001;0.42999999999999999;0.66000000000000003;0.87;1;1; + [HLRecovery] Enabled=true Method=Blend -[Exposure] -Auto=false -Clip=0.02 -Compensation=0 -Brightness=0 -Contrast=0 -Saturation=0 -Black=0 -HighlightCompr=90 -HighlightComprThreshold=33 -ShadowCompr=50 -HistogramMatching=false -CurveMode=FilmLike -CurveMode2=WeightedStd -Curve=1;0;0;0.11;0.09;0.32;0.43;0.66;0.87;1;1; -Curve2=0; - [Directional Pyramid Denoising] Enabled=true Enhance=false @@ -38,8 +27,8 @@ Redchro=0 Bluechro=0 Gamma=1.7 Passes=1 -LCurve=0 -CCCurve=0 +LCurve=0; +CCCurve=0; [LensProfile] LcMode=lfauto @@ -47,12 +36,12 @@ UseDistortion=true UseVignette=true UseCA=false -[RAW] -CA=true - [Color Management] ToneCurve=false ApplyLookTable=true ApplyBaselineExposureOffset=true ApplyHueSatMap=true DCPIlluminant=0 + +[RAW] +CA=true diff --git a/rtdata/themes/RawTherapee-GTK3-20_.css b/rtdata/themes/RawTherapee-GTK3-20_.css index 84ea1c3a3..20478367f 100644 --- a/rtdata/themes/RawTherapee-GTK3-20_.css +++ b/rtdata/themes/RawTherapee-GTK3-20_.css @@ -1037,4 +1037,8 @@ progressbar.vertical trough, progressbar.vertical progress { min-width: 10px; } -/* */ +/* Add padding to grid cells */ + +.grid-spacing > * { + margin: 2px; +} diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index aa753727d..33017626a 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-2018 TooWaBoo - Version 2.82 + Version 3.00 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -96,7 +96,7 @@ } #ToolPanelNotebook { - min-width: 24em; + min-width: 25em; } #HistoryPanel { min-width: 17.5em; @@ -113,8 +113,8 @@ window > box { dialog { background-color: @bg-grey; border-radius: 0; - -GtkDialog-button-spacing: 6; - -GtkDialog-content-area-spacing: 4; + -GtkDialog-button-spacing: 0; + -GtkDialog-content-area-spacing: 0; -GtkDialog-content-area-border: 0; -GtkDialog-action-area-border: 0; } @@ -164,8 +164,9 @@ undershoot { } label { - padding: 0; - margin: 0; + padding: 0.083333333333333333em 0; + margin: 0.19em; + min-height: 1.333333333333333333em; } /*** Frames ************************************************************************************/ @@ -180,11 +181,6 @@ frame { border-radius: 0; } -#BatchQueueButtonsMainContainer frame, -#MyExpander frame, -dialog frame { - margin: 0.166666666666666666em 0.5em; -} /* affects selection list*/ entry > window > frame { margin: 0; @@ -194,24 +190,36 @@ entry > window > frame { margin: -5px 0 0; } -frame > border { - padding: 0; - border-radius: 0; - border: none; - background-color: transparent; +#RightNotebook > stack > scrolledwindow frame, +#BatchQueueButtonsMainContainer frame, +#MyExpander frame, +dialog frame { margin: 0; - min-height: 0; - min-width: 0; + padding: 0.19em 0.75em; } - +#RightNotebook > stack > scrolledwindow frame > border, #BatchQueueButtonsMainContainer > frame > border, #MyExpander frame > border, dialog frame > border { - padding: 0.5em; + padding: 0 0.333333333333333333em 0.333333333333333333em; border-radius: 0; border: 0.083333333333333333em solid @border-color; background-color: transparent; - margin: 0 -0.5em; + margin: 0 -0.583333333333333333em; +} +frame > label { + margin: 0; + padding: 0.416666666666666666em 0; + color: @headline-frame; +} +frame > checkbutton label{ + color: @headline-frame; +} +#RightNotebook > stack > scrolledwindow frame > label:not(.dummy), +#BatchQueueButtonsMainContainer frame > label:not(.dummy), +#ToolPanelNotebook frame > label:not(.dummy), +dialog frame > label:not(.dummy) { + padding: 0.25em 0.5em; } #PrefNotebook box > frame > border { @@ -222,12 +230,6 @@ dialog frame > border { border: 0.083333333333333333em solid @bg-dark-grey; } -#BatchQueueButtonsMainContainer frame > label, -#ToolPanelNotebook frame > label, -dialog frame > label { - margin: 0; - padding: 0.166666666666666666em 0.5em; -} #BatchQueueButtonsMainContainer frame > border { margin-bottom: 0.833333333333333333em; } @@ -235,14 +237,6 @@ dialog frame > label { padding-left: 0.916666666666666666em; } -frame > label { - margin: 0; - padding: 0.416666666666666666em 0 0.333333333333333333em 0.083333333333333333em; - color: @headline-frame; -} -frame > checkbutton label{ - color: @headline-frame; -} /*** end ***************************************************************************************/ /*** Lists & Views *****************************************************************************/ @@ -272,7 +266,7 @@ textview:selected, treeview:selected { #RightNotebook > stack > :nth-child(1) checkbutton + scrolledwindow treeview { border-bottom: 0.083333333333333333em solid @bg-dark-grey; } - +/**/ #PlacesPaned > box:nth-child(3) treeview { padding: 0.25em 0.333333333333333333em 0.25em 0.333333333333333333em; @@ -309,27 +303,6 @@ textview:selected, treeview:selected { border-top: 0.083333333333333333em solid @view-grid-border; } -#Snapshots button, -#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button { - margin: 0; - padding: 0; - background-color: transparent; - background-image: none; - border: 0.083333333333333333em solid @bg-dark-grey; - border-radius: 0; - box-shadow: none; - min-height: 2em; -} - -#Snapshots button:hover, -#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button:hover { -background-color: @bg-list-hover; -} -#Snapshots button:active, -#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button:active { -background-color: shade(@bg-list-hover, 1.15); -} - fontchooser scrolledwindow, #PlacesPaned scrolledwindow, #HistoryPanel scrolledwindow, @@ -352,19 +325,29 @@ fontchooser scrolledwindow, padding-bottom: 0.25em; background-color: @bg-dark-grey; } -#Navigator box label { - padding: 0.166666666666666666em 0; -} -#Navigator > label:nth-child(2) { - margin-top: 0.5em; +#Navigator label { + padding: 0; } /*** end ***************************************************************************************/ /*** Load - Save dialog ************************************************************************/ +filechooser { +margin-bottom: 0.25em; +} -filechooser box > box box > button { +filechooser box > box box > button { margin-top: 0.5em; +margin-right: 0; +} + +filechooser image { + opacity: 0.80; +} +filechooser *:selected image, +filechooser *:checked image, +filechooser *:active image { + opacity: 1; } filechooser list { @@ -406,7 +389,7 @@ filechooser placessidebar list row { min-height: calc(1.416666666666666666em + 8px); } filechooser placessidebar list row label{ - margin: 0 0 0 0.58333333333333333em; + margin: 0 0 0 0.583333333333333333em; } filechooser list row:hover { background-color: @bg-list-hover; @@ -482,7 +465,7 @@ separator, background-color: transparent; } grid separator.horizontal, box separator.horizontal { - margin: 0.166666666666666666em 0; + margin: 0.25em 0.19em; padding: 0; } grid separator.vertical, box separator.vertical { @@ -554,24 +537,26 @@ menu separator { padding: 0; } -#EditorTopPanel separator, -#IopsPanel separator, -#FileBrowser separator { - background-color: shade(@bg-light-grey,.75); - margin-top: 0.166666666666666666em; - margin-bottom: 0.166666666666666666em; +.scrollableToolbar separator.vertical { + background-color: shade(@bg-light-grey, .72); + margin: 0.19em; } -#MyExpander separator { +#MyExpander separator.horizontal { background-color: @view-grid-border; - margin: 0.333333333333333333em 0; + margin: 0.25em 0.19em; } #MyFileChooserButton separator { background-color: transparent; } #PlacesPaned .view.separator { - color: @border-color; + color: @view-grid-border; +} + +#MetaPanelNotebook separator { + background-color: @border-color; + margin: 0.19em 0; } /*** end****************************************************************************************/ @@ -709,8 +694,8 @@ scrollbar:not(.overlay-indicator):hover { /*** Scale**************************************************************************************/ scale { padding: 0; - min-height: 1.833333333333333333em; - margin: 0; + min-height: 1.833333333333333333em; + margin: 0 -0.333333333333333333em; } scale slider { @@ -758,6 +743,7 @@ scale.fine-tune trough highlight { padding: 0.5em 0.5em 0 0; border-radius: 0.5em; } + scale:disabled slider, scale:disabled trough highlight { background-color: shade(@bg-grey,.83); @@ -832,6 +818,7 @@ progressbar.vertical trough.empty { progressbar trough.empty progress { border-color: transparent; background-image: none; + box-shadow: none; } /*** end ***************************************************************************************/ @@ -932,15 +919,30 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { min-height: 5em; } -#ToolPanelNotebook > header tabs { - margin-bottom: 0.333333333333333333em; +#ToolPanelNotebook { + background-color: @bg-dark-grey; } -#ToolPanelNotebook > header tab > box > image{ +#ToolPanelNotebook > header { + border-bottom: 0.083333333333333333em solid @view-grid-border; + margin-left: 0.083333333333333333em; + margin-right: 0.083333333333333333em; + padding: 0 0.19em; +} +#ToolPanelNotebook > header tabs { + margin: 0 0 0.25em; +} +#ToolPanelNotebook > header tab { + padding: 0; +} +#ToolPanelNotebook > header tab image{ min-height: 2em; min-width: 2em; - padding-top: 0.25em; - padding-bottom: 0.333333333333333333em; - margin: 0; + margin: 0.19em 0.25em 0.333333333333333333em; + padding: 0; +} +#ToolPanelNotebook > stack { + background-color: @bg-dark-grey; + padding: 0.5em 0; } #RightNotebook > header { @@ -964,10 +966,6 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #PrefNotebook > header { margin: -0.666666666666666666em -0.666666666666666666em 0.333333333333333333em; } -#PrefNotebook > header tab label { - padding-top: 0.25em; - padding-bottom: 0.25em; -} #PrefNotebook > stack { margin: 0 -0.666666666666666666em; } @@ -984,10 +982,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { background-color: @bg-dark-grey; padding: 0.75em 0; } - -/* All tool panels have a frame except for Meta which unlike the rest is a notebook itself. - * So we use CSS to make it look like a frame. */ - +/* Meta panel notebook */ #MetaPanelNotebook > header { background-color: @bg-grey; padding: 0.333333333333333333em; @@ -997,8 +992,9 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { background-color: @bg-dark-grey; padding-left: 0.333333333333333333em; } -#MetaPanelNotebook > header tab label{ - margin: 0.083333333333333333em; +#MetaPanelNotebook > stack { + background-color: @bg-dark-grey; + padding: 0 0 0.5em 0; } #MetaPanelNotebook > stack > box { @@ -1007,7 +1003,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { border-radius: 0; border-top-style: none; padding: 0 0.333333333333333333em 0.25em; - margin: 0 0.5em -0.5em; + margin:0 0.5em -0.5em; } #MetaPanelNotebook > stack > box:nth-child(1) > scrolledwindow { margin: 0 0 0.333333333333333333em; @@ -1015,68 +1011,30 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { } #MetaPanelNotebook > stack > box:nth-child(2) > scrolledwindow > viewport.frame { - padding: 0 0 0 1.166666666666666666em; + padding: 0 0 0 1.083333333333333333em; } -#MetaPanelNotebook separator { - background-color: @border-color; - margin: 0.166666666666666666em 0; -} -#MetaPanelNotebook entry, #MetaPanelNotebook button, #MetaPanelNotebook combobox button { - margin-top: 0; - margin-bottom: 0; - min-height: 1.666666666666666666em; - min-width: 0; -} #MetaPanelNotebook entry { padding: 0 0.333333333333333333em; background-color: @bg-dark-grey; - margin: 0; border-radius: 0; + margin-left: 0; + margin-right: 0; } -#MetaPanelNotebook > stack > box:nth-child(1) > :nth-child(1) { +#MetaPanelNotebook .view { border: 0.083333333333333333em solid @bg-dark-grey; + padding: 0.083333333333333333em 0.25em; } -#MetaPanelNotebook > stack > box:nth-child(2) > scrolledwindow scrolledwindow { - background-color: @bg-dark-grey; - padding: 0; - margin: 0; -} -#MetaPanelNotebook > stack > box:nth-child(2) .view { - border: 0.083333333333333333em solid @bg-dark-grey; - padding: 0.166666666666666666em; - margin: 0; -} -#MetaPanelNotebook textview.view { - background-color: @bg-dark-grey; - padding: 0.083333333333333333em 0.333333333333333333em; - margin: 0; -} + #MetaPanelNotebook text { background-color: transparent; +} + +#MetaPanelNotebook stack label { + margin-top: 0; + margin-bottom: 0; padding: 0; - margin: 0; -} - -#MetaPanelNotebook combobox button { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-left: none; -} -#MetaPanelNotebook combobox + button, -#MetaPanelNotebook combobox + button + button { - margin-left: 0.166666666666666666em; - min-width: 1.666666666666666666em; -} -#MetaPanelNotebook > stack > box > grid > button { - margin-top: 0.083333333333333333em; - margin-bottom: 0.083333333333333333em; - min-height: 2.5em; -} - -#MetaPanelNotebook label { - padding: 0.083333333333333333em 0; } /*** end ***************************************************************************************/ @@ -1098,77 +1056,18 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { } #ToolBarPanelFileBrowser { - margin: 0.416666666666666666em -1px; + margin: 0 0 0.416666666666666666em 0; + min-height: 0; + min-width: 0; + padding: 0; +} +#FileBrowserQueryToolbar { + margin: 0 0 0.416666666666666666em 0; min-height: 0; min-width: 0; padding: 0; } -#ToolBarPanelFileBrowser > box > button, -#ToolBarPanelFileBrowser > button { - margin: 0 0.083333333333333333em; -} -/* Filter */ -#ToolBarPanelFileBrowser .smallbuttonbox { - min-height: 1.333333333333333333em; - padding: 0; - margin: 0; -} -#ToolBarPanelFileBrowser .smallbuttonbox:nth-child(2) { - margin: 0.083333333333333333em 0 -0.166666666666666666em; -} -#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton image { - margin: -0.166666666666666666em; - min-width: 1.333333333333333333em; - min-height: 1.333333333333333333em; -} -#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton { - min-height: 0; - min-width: 1.333333333333333333em; - padding: 0; - margin: 0 0.25em; - border: none; - border-radius: 0; - background-color: transparent; - background-image: none; - box-shadow: none; -} -#FileBrowser #ToolBarPanelFileBrowser box:nth-child(7) > box.smallbuttonbox > button.smallbutton:checked, -#EditorLeftPaned #ToolBarPanelFileBrowser box:nth-child(5) > box.smallbuttonbox > button.smallbutton:checked { - background-image: image(rgba(30,30,30,.3)); - background-color: @bg-button-active; -} -/**/ - -#FileBrowserQueryToolbar entry + button.flat, -#FileBrowserIconToolbar entry + button.flat { - min-height: 1.666666666666666666em; - min-width: 1.666666666666666666em; - margin: 0; - border-radius: 0 0.2em 0.2em 0; - box-shadow: inset 0 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); - border: 0.083333333333333333em solid @bg-entry-border; - background-color: @bg-scale-entry; - padding: 0; -} -#FileBrowserQueryToolbar entry + button.flat:not(:hover):not(:active), -#FileBrowserIconToolbar entry + button.flat:not(:hover):not(:active) { - border-left: none; - padding-left: 0.083333333333333333em; -} -#FileBrowserQueryToolbar entry, -#FileBrowserIconToolbar entry { - min-height: 1.666666666666666666em; - min-width: 0; - margin: 0; - padding: 0 0.333333333333333333em; - border-right: none; - border-radius: 0.2em 0 0 0.2em; -} -#FileBrowserQueryToolbar label, -#FileBrowserIconToolbar label { - margin: 0 0.333333333333333333em 0 0.5em; -} /*** end ***************************************************************************************/ /*** Image Editor ******************************************************************************/ @@ -1191,74 +1090,38 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { border-left: 0.083333333333333333em solid @bg-dark-grey; } +/* !!! Must be same height as "Small Lock Button" */ #BeforeAfterContainer label { - min-height: 2.666666666666666666em; padding: 0 0.5em; -} -/* Small Lock Button */ -#BeforeAfterContainer button { min-height: 2em; min-width: 2em; - margin: 0.25em 0.25em 0.25em 0; - padding: 0; - border-radius: 0.2em; - border: 0.083333333333333333em solid @bg-button-border; - background-color: transparent; - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); - background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); + margin: 0.25em 0; + border: 0.083333333333333333em solid transparent; } -#BeforeAfterContainer button image{ - margin: 0 0 0 0.083333333333333333em; -} -#BeforeAfterContainer button:checked image{ - margin: 0.083333333333333333em -0.166666666666666666em 0.083333333333333333em 0.25em; -} -/**/ #EditorToolbarTop { - margin: 0 -2px 0; + margin: 0 -1px 0 -1px; padding: 0; min-height: 0; } -#EditorTopPanel button { - margin: 0 0.083333333333333333em; - min-height: 2.5em; - min-width: 2.5em; -} -/* Removes margin from the last button. Otherwise the filmstrip will cut of the right border. */ -#EditorTopPanel :last-child > button:last-child { - margin-right: 0; +#IopsPanel { + margin: 0; + padding: 0; + min-height: 0; } -#EditorTopPanel button.narrowbutton { - min-width: 0.833333333333333333em; - padding: 0 0.166666666666666666em; -} - -/*Button editor bottom*/ #EditorZoomPanel label { min-width: 4em; margin: 0; } -#IopsPanel button.Left image { - padding: 0 2px 0 3px; -} -#EditorZoomPanel button { - margin-left: 0.083333333333333333em; - margin-right: 0.083333333333333333em; -} /*** end ***************************************************************************************/ /*** Toolbox ***********************************************************************************/ -#ToolPanelNotebook stack { - background-color: @bg-dark-grey; - padding: 0 0 0.5em 0; -} - #MyExpander image { min-width: 1.333333333333333333em; - min-height: 1.333333333333333333em + min-height: 0; + margin: -1px 0.19em; } /*Curve spinbutton background */ @@ -1285,8 +1148,9 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { margin: 0.083333333333333333em 0 0.166666666666666666em 0; } -#ToolPanelNotebook scrolledwindow viewport.frame { +#ToolPanelNotebook > stack > scrolledwindow > viewport.frame { padding: 0 0.5em; + margin-top: -0.5em; } #MyExpander { @@ -1298,7 +1162,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { border: none; border-radius: 0; margin: 0; - padding: 0.5em; + padding: 0.5em 0.333333333333333333em; } /* Sub-tool (MyExpander) */ @@ -1306,8 +1170,8 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { background-color: transparent; border: 0.083333333333333333em solid @border-color; border-radius: 0; - margin: 0; - padding: 0.5em; + margin: 0 0.19em; + padding: 0.333333333333333333em; } #MyExpanderTitle > box { @@ -1318,7 +1182,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #MyExpanderTitle label { color: @headline-big; padding: 0; - margin: 0.083333333333333333em 0.25em 0 0.5em; + margin: 0.083333333333333333em 0.25em 0 0.166666666666666666em; } #MyExpanderTitle:hover label { @@ -1327,7 +1191,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { /*** end ***************************************************************************************/ /*** Context & popups menus *****************************************************************************/ -.popup > decoration { +.csd.popup > decoration { background-image: none; border-radius: 0; border: none; @@ -1360,7 +1224,7 @@ menuitem { menu arrow { min-width: 1.333333333333333333em; - margin: 0 -0.166666666666666666em; + margin: 0 -0.19em; padding: 0; margin: 0 -0.25em 0 0; } @@ -1372,55 +1236,56 @@ menuitem:hover > * { color: @text-hl-color; } -menu image { +menu image:not(.dummy), +#MyExpander menu image:not(.dummy) { min-height: 2em; - min-width: 1.333333333333333333em; + min-width: 1.5em; padding: 0; - margin: 0 0.25em 0 -1.166666666666666666em; + margin: 0 0 0 -1.333333333333333333em; } /*** Selection popup list (used in filechooser) ***/ -entry > window > frame { +entry > window > frame:not(.dummy) { background-color: @bg-dark-grey; + padding: 0; } -entry > window > frame > border { +entry > window > frame > border:not(.dummy) { background-color: @bg-dark-grey; padding: 0.083333333333333333em; - border: 0.083333333333333333em solid @accent-color; -} -entry > window > frame > border { margin: 0.083333333333333333em; + border: 0.083333333333333333em solid @accent-color; } /* end */ /*** end ***************************************************************************************/ /*** Popover *** Context menu filechooser ******************************************************/ - -popover.background { +popover { + box-shadow: 0 1px 6px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px @bg-dark-grey; +} +popover { background-color: @bg-dark-grey; border: 0.083333333333333333em solid @accent-color; border-radius: 0; padding: 0; margin: 0; - box-shadow: 0 1px 6px 1px rgba(0, 0, 0, 0.5), 0 0 0 1px @bg-dark-grey; } -popover.background > box { +popover > box { padding: 0; margin: -9px; } -popover.background modelbutton { +popover modelbutton { min-height: 2em; padding: 0 0.416666666666666666em; margin: 0; border-radius: 0; } -popover.background label { +popover label { margin-right: 0.5em; } -popover.background modelbutton:hover label, -popover.background modelbutton:hover { +popover modelbutton:hover label, +popover modelbutton:hover { background-color: @accent-color; color: @text-hl-color; } @@ -1428,13 +1293,12 @@ popover.background modelbutton:hover { /*** Switch ***********************************************************************************/ switch { - min-height: 2.5em; + min-height: 2.333333333333333333em; min-width: 11em; - margin: 0; + margin: 0 0.19em; padding: 0; border-radius: 0.2em; background-image: none; - box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); border: 0.083333333333333333em solid @bg-entry-border; background-color: @bg-scale-entry; margin-bottom: 0.5em; @@ -1475,45 +1339,17 @@ switch:disabled:not(:checked) { /** end ****************************************************************************************/ /*** Buttons ***********************************************************************************/ -button { - min-height: 2.5em; - min-width: 2.5em; - margin: 0; - padding: 0; /* x */ +button, +#BeforeAfterContainer button { + min-height: 1.666666666666666666em; + min-width: 1.666666666666666666em;/*x*/ + margin: 0.19em; border-radius: 0.2em; border: 0.083333333333333333em solid @bg-button-border; background-color: transparent; box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); } -button.flat { - padding: 0;/* x */ -} -button.text-button label { - margin: 0 0.5em;/* x */ -} - -button image + label { - margin-left: 0.25em; -} - -#PrefNotebook > stack > :nth-child(5) combobox { - /* margin: 0.166666666666666666em 0; */ - margin: 2px 0; -} -#PrefNotebook > stack > :nth-child(2) #MyFileChooserButton { - /* margin: 0.25em 0.333333333333333333em; */ - margin: 3px 5px; -} - -filechooser button image, -#MyFileChooserButton image { - min-width: 1.333333333333333333em; - min-height: 1.333333333333333333em; - opacity: .85; -} - -#MainNotebook > header > grid > button, button.flat { border: 0.083333333333333333em solid transparent; box-shadow: none; @@ -1521,205 +1357,143 @@ button.flat { background-color: transparent; } -/* Resetbutton */ -#MyExpander button:last-child.flat, -#MyExpander scale + button.flat, -dialog scale + button.flat, -#MainNotebook > stack > :nth-child(2) > box:nth-child(1) scale + button.flat, -entry + button.flat { - min-height: 1.166666666666666666em; - min-width: 1.5em; - margin: 0.083333333333333333em 0 0.083333333333333333em 0.166666666666666666em; - padding: 0 0 0 0.166666666666666666em; -} -dialog entry + button:last-child.flat { - min-height: 1.666666666666666666em; -} - -#MyExpander scale + button:last-child.flat, -#MyExpander spinbutton + button:last-child.flat { - margin: 0 0 0 0.166666666666666666em; -} -#MyExpander image + button:last-child.flat { - margin: 0 0 0 0.25em; -} -/**/ - -/* Buttons Curve drawingarea*/ -#MyExpander grid > grid > grid > button.flat + button.flat, -#MyExpander grid > grid > grid > button.flat:first-child { - min-height: 2.5em; - min-width: 2.5em; - margin: 0.166666666666666666em 0.166666666666666666em 0 0; - padding: 0; -} -/**/ - -#BeforeAfterContainer button:hover, -#ToolBarPanelFileBrowser entry + button:hover, -#FileBrowser entry + button:hover, button.flat:hover, -button:hover { +button:hover, +#BeforeAfterContainer button:hover, +#FileBrowserQueryToolbar entry + button.flat:hover, +#FileBrowserIconToolbar entry + button.flat:hover { border-color: @bg-button-border; box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-hover; } +.curve-mainbox .curve-buttonbox button.flat:hover, +#ToolPanelNotebook > stack > box > box button:hover, +#MainNotebook > header tab #CloseButton:hover, +#MainNotebook > header > grid > button:hover { + background-color: alpha(@bg-grey, 0.6); + border-color: shade(@bg-dark-grey, 0.6); + box-shadow: inset 0 0.1em rgba(242, 242, 242, 0.12); +} -#BeforeAfterContainer button:checked, -#ToolBarPanelFileBrowser entry + button:active, -#FileBrowser entry + button:active, button.flat:active, button.flat:checked, button:active, -button:checked { +button:checked, +#BeforeAfterContainer button:checked, +#FileBrowserQueryToolbar entry + button.flat:active, +#FileBrowserIconToolbar entry + button.flat:active { border-color: @bg-button-border; - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.08); + box-shadow: inset 0 0.1em rgba(242, 242, 242, 0.08); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-active; } - -/* Add space between connected buttons */ -button.Right, -button.MiddleH { - margin-left: 0.166666666666666666em; - border: 0.083333333333333333em solid @bg-button-border; -} -/**/ - -/* Applies special styles in main notebook */ -#ProfilePanel { - margin-bottom: -2px; - padding-bottom: 0.416666666666666666em; -} -#ProfilePanel > label { - margin-bottom: 0.083333333333333333em; -} -#ProfilePanel combobox { - margin-left: 0.166666666666666666em; - margin-right: 0.166666666666666666em; -} -#ProfilePanel button.Left { - margin-left: -2px; +.curve-mainbox .curve-buttonbox button.flat:active, +.curve-mainbox .curve-buttonbox button.flat:checked, +#ToolPanelNotebook > stack > box > box button:active, +#MainNotebook > header tab #CloseButton:active, +#MainNotebook > header > grid > button:active { + background-color: alpha(@bg-light-grey, 0.8); + border-color: shade(@bg-dark-grey, 0.6); + box-shadow: inset 0 0.1em rgba(242, 242, 242, 0.15); } -#PlacesPaned combobox { - margin-bottom: -8px; - padding-bottom: 0.416666666666666666em; +/* Combobox */ +button.combo { + padding: 0 0 0 0.25em; } -/**/ - -/* Button base format for Toolbox and dialogs */ -#ToolPanelNotebook > stack > box > box > combobox button, -dialog button, -#MyExpander button, -#BatchQueueButtonsMainContainer button { - min-height: 1.666666666666666666em; - min-width: 0; - padding: 0 0.416666666666666666em; - margin: 0.083333333333333333em 0; -} -#MyExpander #MyFileChooserButton + button.image-button{ - min-width: 1.666666666666666666em; - padding: 0; -} - -combobox button.combo, -#ToolPanelNotebook > stack > box > box > combobox button.combo, -dialog combobox button.combo, -#MyExpander combobox button.combo, -#BatchQueueButtonsMainContainer combobox button.combo { - padding: 0 0.166666666666666666em 0 0.25em; -} - -#ToolPanelNotebook > stack > box > box > combobox { - margin-right: 0.25em; -} - -combobox entry + button { - padding: 0; -} -combobox entry + button arrow{ - margin: 0 -0.166666666666666666em 0 -0.25em; -} - -/* 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 .image-combo:not(:first-child), -#MyExpander button:not(.flat) + combobox, -#MyExpander combobox + button:not(.flat), -#MyExpander combobox + combobox, -#MyExpander button + label, -#MyExpander combobox + label { - margin-left: 0.166666666666666666em; -} - -#MyExpander label + * > button:not(.flat).Left, -#MyExpander label + combobox:not(:first-child):not(:only-child), -#MyExpander label + button:not(.flat):not(spinbutton) { - margin-left: 0.333333333333333333em; -} - -buttonbox:not(.dialog-action-area) button{ - margin: 0.083333333333333333em 0 0.333333333333333333em 0.166666666666666666em; -} -#PrefNotebook buttonbox:not(.dialog-action-area) { - margin-right: -5px; -} - -/* Arrow toggle combo button */ -#IopsPanel .image-combo button.Right, -#MyExpander .image-combo button.Right { - border-left: none; +combobox entry.combo + button.combo { + min-width: 1em; margin-left: 0; - padding-left: 0; - padding-right: 0; + padding: 0; border-top-left-radius: 0; border-bottom-left-radius: 0; + border-left: none; +} +#WB-Size-Helper button.combo { + min-width: 0; + margin: 0; +} +#WB-Size-Helper { + min-width: 3.5em; + margin: 0.19em; +} + +combobox arrow { + margin-right: 0.083333333333333333em; +} + +combobox entry.combo + button.combo arrow { + margin-right: 0; +} + +#PlacesPaned button.combo { + margin: 0; +} +#PlacesPaned combobox { + margin-bottom: calc(0.416666666666666666em - 8px); +} + +#ProfilePanel combobox { + margin-right: -2px; +} + +/* Misc */ +button label { + margin: 0 0.416666666666666666em; +} +button image:not(.dummy), +#MyExpander button image:not(.dummy) { + margin: 0; +} +#MyFileChooserButton label { + margin: 0 0 0 0.416666666666666666em; +} +#MyFileChooserButton image:not(.dummy):last-child { + margin: 0 0.416666666666666666em 0 0; min-width: 1.333333333333333333em; + opacity: 0.85; } -#IopsPanel .image-combo button.Left, -#MyExpander .image-combo button.Left { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - min-width: 2.5em; +#MetaPanelNotebook button + button:last-child { + margin-right: 0; +} +#MetaPanelNotebook scrolledwindow + grid > button:first-child, +#MetaPanelNotebook scrolledwindow + grid + grid > button:first-child { + margin-left: 0; +} +#MetaPanelNotebook scrolledwindow + grid > button:last-child, +#MetaPanelNotebook scrolledwindow + grid + grid > button:last-child { + margin-right: 0; } -/**/ -/**/ -#MyExpander button.text-button label { - margin: 0;/* x */ +#ProfilePanel > grid { + margin-bottom: calc(0.416666666666666666em -2px); } -/* Graduated filter big button */ -#MyExpander button.independent:not(.image-button):not(.text-button):first-child:only-child { - min-height: 2.5em; - min-width: 2.5em; - padding: 0; - margin: 0.25em 0; -} -/**/ -/* Pipette */ -#MyExpander button.independent.image-button { - min-height: 2.5em; -} -#MyExpander button.independent.image-button + label + combobox button { - margin: 0.5em 0; -} -#MyExpander button.independent.image-button + label { - margin-left: 2em ; -} -/**/ +/* Reset button */ +scale + button.flat, +spinbutton + button.flat, +scale + image + image + button.flat { + min-height: 1.333333333333333333em; + margin-top:0.095em; + margin-bottom: 0.095em; +} + +/* Color chooser & buttons */ button.color { - min-height: 1.166666666666666666em; - min-width: 2.75em; - padding: 0.25em; + min-width: 3.25em; + box-shadow: none; + background-image: none; + background-color: transparent; } -button.color colorswatch, + +button.color colorswatch { + min-height: 0; + min-width: 0; + margin: 1px; + border-radius: 0.2em; +} + colorchooser colorswatch { border: 1px solid @bg-button-border; } @@ -1727,14 +1501,23 @@ colorchooser colorswatch#add-color-button:first-child { border-radius: 5.5px 0 0 5.5px; } +/* Font chooser button */ +button.font label{ + min-height: 0; + min-width: 0; + margin: 0 0.19em; +} + /* Save, Cancel, OK ... buttons */ -.dialog-action-area button { - min-height: 2.5em; - margin-top: 0.333333333333333333em; +dialog .dialog-action-area button { + min-height: 2.166666666666666666em; + margin: 0.5em 0 0 0.333333333333333333em; + padding: 0; } messagedialog .dialog-action-area button { - margin: 0 0.666666666666666666em 0.666666666666666666em 0.666666666666666666em; - min-height: 2.166666666666666666em;; + min-height: 1.833333333333333333em; + margin: -12px 0.5em 0.5em; + padding: 0; } messagedialog .dialog-action-area button:not(:only-child):nth-child(1) { margin-right: 0.25em; @@ -1742,30 +1525,208 @@ messagedialog .dialog-action-area button:not(:only-child):nth-child(1) { messagedialog .dialog-action-area button:not(:only-child):nth-child(2) { margin-left: 0.25em; } + +/* Big tool buttons */ +#ToolBarPanelFileBrowser button, +#EditorTopPanel button, +#IopsPanel button, +#ProfilePanel button, +#MainNotebook > header > grid > button, +#MyExpander button.independent.toggle:not(.image-button):not(.text-button):first-child:only-child, /* Graduated filter big button */ +.curve-mainbox .curve-buttonbox button.flat, +#BatchQueueButtonsMainContainer + grid + box button, +#RightNotebook > stack > scrolledwindow:last-child button.image-button, /* Fast Export */ +#MetaPanelNotebook scrolledwindow + grid > button, +#MetaPanelNotebook scrolledwindow + grid + grid > button { + min-height: 2.5em; + min-width: 2.5em; + margin: 0 0.19em; +} +#ToolBarPanelFileBrowser > button:first-child, +#EditorTopPanel > button:first-child, +#IopsPanel > button:nth-child(6), +#ProfilePanel > grid > button:first-child { + margin-left: 0; +} +#ToolBarPanelFileBrowser > button:last-child, +#ToolBarPanelFileBrowser > box:last-child > button:last-child, +#EditorTopPanel > button:last-child, +#EditorTopPanel > box:last-child > button:last-child, +#IopsPanel > button:last-child, +#ProfilePanel > grid > button:last-child, +#BatchQueueButtonsMainContainer + grid + box button { + margin-right: 0; +} +#MyExpander button.independent.toggle:not(.image-button):not(.text-button):first-child:only-child, /* Graduated filter button */ +#MetaPanelNotebook scrolledwindow + grid > button, +#MetaPanelNotebook scrolledwindow + grid + grid > button { + margin: 0.19em; +} + +#EditorTopPanel button.narrowbutton { + min-width: 0.833333333333333333em; + padding: 0 0.166666666666666666em; +} + +/* Image close button */ +#MainNotebook > header tab #CloseButton { + padding: 0; + margin: 0.333333333333333333em 0 0.416666666666666666em 0.19em; + min-width: 1.5em; + min-height: 0; +} +#MainNotebook > header tab #CloseButton image{ + min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em; +} + +/* Filter buttons*/ +#ToolBarPanelFileBrowser .smallbuttonbox { + min-height: 1.333333333333333333em; + padding: 0; + margin: 0; +} +#ToolBarPanelFileBrowser .smallbuttonbox:nth-child(2) { + margin: 0.083333333333333333em 0 -0.166666666666666666em; +} +#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton image { + margin: -0.19em; + min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em; +} +#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton { + min-height: 0; + min-width: 1.333333333333333333em; + padding: 0; + margin: 0 0.25em; + border: none; + border-radius: 0; + background-color: transparent; + background-image: none; + box-shadow: none; +} +#FileBrowser #ToolBarPanelFileBrowser box:nth-child(7) > box.smallbuttonbox > button.smallbutton:checked, +#EditorLeftPaned #ToolBarPanelFileBrowser box:nth-child(5) > box.smallbuttonbox > button.smallbutton:checked { + background-image: image(rgba(30,30,30,.3)); + background-color: @bg-button-active; +} + +/* Arrow toggle combo button */ +#IopsPanel .image-combo button.Right, +#MyExpander .image-combo button.Right { + border-left: none; + margin-left: 0; + padding: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + min-width: 1.333333333333333333em; +} +#IopsPanel .image-combo button.Right image, +#MyExpander .image-combo button.Right image { + margin: 0 -0.083333333333333333em; +} +#IopsPanel .image-combo button.Left, +#MyExpander .image-combo button.Left { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + min-width: 2.5em; + margin-right: 0; +} +#MyExpander .image-combo button.Left { + min-width: 2.75em; +} +#MyExpander .image-combo button.Left label { + margin-right: 0; +} + +/* Search & Query buttons */ +#FileBrowserQueryToolbar entry + button.flat, +#FileBrowserIconToolbar entry + button.flat { + min-height: 1.666666666666666666em;/*x*/ + min-width: 1.666666666666666666em;/*x*/ + margin: 0; + border-radius: 0 0.2em 0.2em 0; + box-shadow: inset 0 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.09); + border: 0.083333333333333333em solid @bg-entry-border; + background-color: @bg-scale-entry; + padding: 0; +} +#FileBrowserQueryToolbar entry + button.flat:not(:hover):not(:active), +#FileBrowserIconToolbar entry + button.flat:not(:hover):not(:active) { + border-left: none; + padding-left: 0.083333333333333333em; +} +#FileBrowserIconToolbar box > entry + button.flat { + margin-top: 0.416666666666666666em; + margin-bottom: 0.416666666666666666em; + min-height: 0; +} + +/* Small Lock Button */ +#BeforeAfterContainer button { + min-height: 2em; + min-width: 2em; + margin: 0.25em 0.25em 0.25em 0; + padding: 0; + border-radius: 0.2em; + border: 0.083333333333333333em solid @bg-button-border; + background-color: transparent; + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); +} +#BeforeAfterContainer button image{ + margin: 0 0 0 0.083333333333333333em; +} +#BeforeAfterContainer button:checked image{ + margin: 0.083333333333333333em -0.166666666666666666em 0.083333333333333333em 0.25em; +} + +/* Snapshot & Places buttons */ +#Snapshots button, +#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button { + margin: 0; + padding: 0; + background-color: transparent; + background-image: none; + border: 0.083333333333333333em solid @bg-dark-grey; + border-radius: 0; + box-shadow: none; + min-height: 1.666666666666666666em;/*x*/ +} + +#Snapshots button:hover, +#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button:hover { +background-color: @bg-list-hover; +} +#Snapshots button:active, +#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button:active { +background-color: shade(@bg-list-hover, 1.15); +} /**/ + /* View & Filechooser Buttons */ -dialog .view button, -window .view button { +.view button { background-color: @bg-dark-grey; background-image: none; box-shadow: none; min-height: 2em; min-width: 1.333333333333333333em; - padding: 0 0.166666666666666666em 0 0.333333333333333333em; + padding: 0 0.19em; margin: 0; } +#pathbarbox button { + min-width: 2em; + margin: 0; + padding: 0; + } window treeview > header image { min-width: 1.333333333333333333em; } -dialog .view button.text-button label, -window .view button.text-button label { - margin: 0; -} window .view button { border: none; - border-bottom: 0.083333333333333333em solid @border-color; + border-bottom: 0.083333333333333333em solid @view-grid-border; } dialog .view button { border: 0.083333333333333333em solid @border-color; @@ -1781,40 +1742,34 @@ dialog .view button { color: @headline-hl; } -dialog .view header button:not(:first-child):not(:only-child), -window .view header button:not(:first-child):not(:only-child), +.view header button:not(:first-child):not(:only-child), .path-bar button:not(:first-child):not(:only-child) { border-left: none; } -dialog .view header button, -window .view header button, +.view header button, .path-bar button { border-radius: 0; } -#pathbarbox button:last-child { - min-height: 2em; - min-width: 2em; - margin: 0; - padding: 0; - } .path-bar button:first-child { border-top-left-radius: 0.2em; border-bottom-left-radius: 0.2em; - min-width: 2em; margin: 0; padding: 0; } .path-bar button:last-child { border-top-right-radius: 0.2em; border-bottom-right-radius: 0.2em; - min-width: 2em; margin: 0; padding: 0; } -.path-bar button label { - margin: 0; - padding: 0 0.333333333333333333em; +#pathbarbox button:not(:first-child):not(:last-child) label { + margin: 0 0.5em; +} + +#pathbarbox button:not(:first-child):not(:last-child) image { + margin: 0 0 0 0.5em; + min-width: 1.333333333333333333em; } /**/ @@ -1825,8 +1780,6 @@ popover button.text-button { border: 0.083333333333333333em solid @border-color; box-shadow: none; background-image: none; - margin: 0.083333333333333333em 0; - min-height: 1.666666666666666666em; padding: 0 0.666666666666666666em; } popover button.text-button label { @@ -1849,86 +1802,14 @@ popover button.text-button:active { } /**/ -/* Titlebar & Notebook buttons */ -#MainNotebook > header.top > grid > button { - margin: 0 0 0 0.416666666666666666em; -} -#MainNotebook > header.left > grid > button { - margin: 0.416666666666666666em 0 0; -} - -headerbar button.titlebutton image { - padding: 0; - margin: 0; -} -headerbar button.titlebutton { - margin: 0 0 0 0.333333333333333333em; - background-image: none; - border: 0.083333333333333333em solid transparent; - background-color: transparent; - box-shadow: none; - min-width: 1.5em; - min-height: 1.5em; - padding: 0; -} -messagedialog headerbar button.titlebutton { - min-width: 1.25em; - min-height: 1.25em; - margin: 0; -} - -#MainNotebook tab #CloseButton { - padding: 0; - margin: 0.333333333333333333em 0 0.416666666666666666em 0.25em; - min-width: 1.5em; - min-height: 0; -} -#MainNotebook tab #CloseButton image{ - min-width: 1.333333333333333333em; - min-height: 1.333333333333333333em; -} -#MainNotebook > header > grid > button:hover, -#MainNotebook tab #CloseButton:hover, -headerbar button.titlebutton:hover{ - border-color: rgba(0,0,0,.8); - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.11); - background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); - background-color: rgba(128, 128, 128,.20); -} -#MainNotebook > header > grid > button:active, -headerbar button.titlebutton:active{ - border-color: rgba(0,0,0,.8); - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.15); - background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); - background-color: rgba(128, 128, 128,.40); -} -#MainNotebook tab #CloseButton:hover, -headerbar button.titlebutton.close:hover{ - border-color: rgba(0,0,0,.8); - background-image: linear-gradient(to bottom, rgb(180,0,0), rgb(160,0,0) 40%, rgb(130,0,0)); - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.32); -} -#MainNotebook tab #CloseButton:active, -headerbar button.titlebutton.close:active{ - border-color: rgba(0,0,0,.8); - background-image: linear-gradient(to bottom, rgb(215,0,0), rgb(185,0,0) 40%, rgb(150,0,0)); - box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.4); -} -/**/ - /*** end ***************************************************************************************/ -/*** Ckeckbox & Radio **************************************************************************/ -checkbox, +/*** Checkbox & Radio **************************************************************************/ checkbutton, radiobutton { - padding: 0; - margin: 0; - min-height: 2em; -} -#PrefNotebook checkbox, -#PrefNotebook checkbutton { - min-height: 1.666666666666666666em; + padding: 0.083333333333333333em 0; + margin: 0.19em; + min-height: 1.666666666666666666em;/*x*/ } check, @@ -1944,11 +1825,6 @@ radio { background-repeat: no-repeat; color: shade(@text-color, 0.95); } -radiobutton label, -checkbutton label { - margin: 0 0.5em; - padding: 0; -} check { border-radius: 0.166666666666666666em; } @@ -1961,56 +1837,65 @@ radio:disabled { border-color: @fg-disabled; } +radiobutton label, +checkbutton label { + margin: 0 0.583333333333333333em 0 0.416666666666666666em; + padding: 0; +} + frame > checkbutton check{ margin-left: 0.5em; } -#PartialPaste checkbutton/* :not(#PartialPasteHeader) */ { - min-height: 1.166666666666666666em; - margin-top: calc(0.416666666666666666em - 4px); - margin-bottom: calc(0.416666666666666666em - 4px) +#PartialPaste checkbutton { + padding: 0; + margin: 0.19em 0 0 0.583333333333333333em; } #PartialPaste checkbutton:not(#PartialPasteHeader) { - margin-left: 1.166666666666666666em; -} -#PartialPasteHeader { - margin-left: 0.5em; - padding-top: 0.333333333333333333em; - padding-top: calc(0.666666666666666666em - 5px) -} - -#MyExpander button + checkbutton:last-child { - margin-left: 0.333333333333333333em; + margin: 0 0 0 1.166666666666666666em; } /*** end ***************************************************************************************/ /*** Entry & Spinbutton ************************************************************************/ #MyExpander entry, -entry { - margin: 0.083333333333333333em 0; +entry, +spinbutton { + margin: 0.19em; padding: 0 0.333333333333333333em; - min-height: 1.666666666666666666em; + min-height: 1.666666666666666666em;/*x*/ min-width: 0; border-radius: 0.2em; - box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset -0.1em -0.1em rgba(230, 230, 230, 0.09); border: 0.083333333333333333em solid @bg-entry-border; background-color: @bg-scale-entry; } - -spinbutton { - margin: 0.083333333333333333em 0; - padding: 0; - min-height: 1.666666666666666666em; +#FileBrowserQueryToolbar entry, +#FileBrowserIconToolbar entry { + min-height: 1.666666666666666666em;/*x*/ min-width: 0; - border-radius: 0.2em; - background-color: @bg-scale-entry; - border: 0.083333333333333333em solid @bg-entry-border; - box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + margin: 0; + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, 0.1), inset 0 -0.1em rgba(230, 230, 230, 0.09); +} + +#FileBrowserIconToolbar box > entry { + margin-top: 0.416666666666666666em; + margin-bottom: 0.416666666666666666em; + margin-left: 0.19em; + min-height: 0; +} +#FileBrowserQueryToolbar box + box > label + entry { + margin-left: 0.19em; +} +spinbutton { + padding: 0; } #MyExpander spinbutton { - margin: 0.166666666666666666em 0; + margin: 0.19em; padding: 0; min-height: 1.333333333333333333em; min-width: 0; @@ -2019,32 +1904,36 @@ spinbutton { background-color: @bg-tb-spinbutton; border: 0.083333333333333333em solid @bg-button-border; color: @text-tbEntry; - box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, .12), 0 0.083333333333333333em rgba(255, 255, 255, 0.12); + box-shadow: inset 0.1em 0.1em rgba(0, 0, 0, .1), inset -0.1em -0.1em rgba(250, 250, 250, .08); } +/* Needed for Reset & and Auto button height*/ #MyExpander button + label + spinbutton { - margin: 0.25em 0; /* Needed for Reset & and Auto button height*/ + margin-top: 0.333333333333333333em; + margin-bottom: 0.333333333333333333em; } #MyExpander checkbutton + label + spinbutton { - margin: 0.333333333333333333em 0; /* Needed for Reset & and Auto checkbox button height*/ + margin-top: 0.416666666666666666em; + margin-bottom: 0.416666666666666666em; } +/**/ -#MyExpander image + spinbutton { - margin-left: 0.25em; -} - -#BatchQueueButtonsMainContainer spinbutton button, #MyExpander spinbutton button, spinbutton button { padding: 0; margin: 0; - min-height: 0; - min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em; + min-width: 1.666666666666666666em; background-image: none; background-color: transparent; border: none; border-radius: 0; box-shadow: none; } +#MyExpander spinbutton button { + margin: -1px 0; + min-width: 1.333333333333333333em; +} + #MyExpander spinbutton entry, spinbutton entry { padding: 0 0.333333333333333333em; @@ -2059,7 +1948,6 @@ spinbutton entry { padding: 0 0.333333333333333333em 0 0.833333333333333333em; } -#BatchQueueButtonsMainContainer spinbutton button:hover, #MyExpander spinbutton button:hover, spinbutton button:hover { background-color: rgba(0,0,0,0.3); @@ -2067,7 +1955,6 @@ spinbutton button:hover { border: none; box-shadow: none; } -#BatchQueueButtonsMainContainer spinbutton button:active, #MyExpander spinbutton button:active, spinbutton button:active { background-color: rgba(0,0,0,0.5); @@ -2111,8 +1998,51 @@ entry:focus > selection { /*** end ***************************************************************************************/ +/* Curves **************************************************************************************/ +.curve-mainbox { + margin: 0.19em; + border: 0.083333333333333333em solid @border-color; +} +.curve-mainbox .curve-curvebox { + margin: 0; + padding: 0.416666666666666666em; + background-color: @bg-dark-grey; +} +.curve-mainbox .curve-spinbuttonbox { + margin: 0; + padding: 0.25em; + border-top: 0.083333333333333333em solid @border-color; + background-color: @bg-dark-grey; +} +.curve-mainbox .curve-sliderbox { + margin: 0; + padding: 0.25em; + background-color: @bg-grey; + border-top: 0.083333333333333333em solid @border-color; +} +.curve-mainbox .curve-buttonbox { + padding: 0.25em; + background-color: @bg-dark-grey; +} +.curve-mainbox.left .curve-buttonbox { + border-right: 0.083333333333333333em solid @border-color; +} +.curve-mainbox.right .curve-buttonbox { + border-left: 0.083333333333333333em solid @border-color; +} +.curve-mainbox.top .curve-buttonbox { + border-bottom: 0.083333333333333333em solid @border-color; +} +.curve-mainbox.bottom .curve-buttonbox { + border-top: 0.083333333333333333em solid @border-color; +} +.curve-mainbox .curve-buttonbox button.flat { + margin: 0.095em; +} +/*** end ***************************************************************************************/ + /*** Window Layout *****************************************************************************/ -:not(.popup):not(tooltip) > decoration { +.csd:not(.popup):not(tooltip) > decoration { background-color: @winHeaderbar; background-image: none; border-radius: 0.416666666666666666em 0.416666666666666666em 0 0; @@ -2127,14 +2057,10 @@ headerbar { background-image: linear-gradient(shade(@winHeaderbar,1.14), shade(@winHeaderbar,.86)); border-bottom: 0.083333333333333333em solid @bg-dark-grey; border-radius: 0.416666666666666666em 0.416666666666666666em 0 0; - min-height: 2.333333333333333333em; + min-height: 2em; padding: 0.083333333333333333em 0.416666666666666666em 0; margin: 0; } -messagedialog headerbar { - min-height: 2em; - -} headerbar .title{ color: @winTitle; } @@ -2146,7 +2072,7 @@ headerbar .title{ /**/ /* Window in background */ -:not(.popup):not(tooltip) > decoration:backdrop { +.csd:not(.popup):not(tooltip) > decoration:backdrop { box-shadow: 0 0.25em 0.75em 0.083333333333333333em rgba(0, 0, 0, 0.3), 0 0 0 0.083333333333333333em @bg-dark-grey; } headerbar:backdrop { @@ -2156,11 +2082,47 @@ headerbar:backdrop { headerbar .title:backdrop { color: alpha(@winTitle,.60); } +/* Titlebar buttons*/ + +headerbar button.titlebutton image { + padding: 0; + margin: 0; +} +headerbar button.titlebutton { + margin: 0 0 0 0.333333333333333333em; + background-image: none; + border: 0.083333333333333333em solid transparent; + background-color: transparent; + box-shadow: none; + min-width: 1.5em; + min-height: 1.5em; + padding: 0; +} +messagedialog headerbar button.titlebutton { + min-width: 1.25em; + min-height: 1.25em; + margin: 0; +} +headerbar button.titlebutton:hover{ + border-color: rgba(0,0,0,.8); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.11); + background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); + background-color: rgba(128, 128, 128,.20); +} +headerbar button.titlebutton:active{ + border-color: rgba(0,0,0,.8); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.15); + background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); + background-color: rgba(128, 128, 128,.40); +} +headerbar button.titlebutton.close:hover{ + border-color: rgba(0,0,0,.8); + background-image: linear-gradient(to bottom, rgb(180,0,0), rgb(160,0,0) 40%, rgb(130,0,0)); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.32); +} +headerbar button.titlebutton.close:active{ + border-color: rgba(0,0,0,.8); + background-image: linear-gradient(to bottom, rgb(215,0,0), rgb(185,0,0) 40%, rgb(150,0,0)); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.4); +} /*** end ***************************************************************************************/ - - -/* .view:not(check):not(radio), image:not(check):not(radio), spinbutton button, cellview { - -gtk-icon-transform: scale(calc(( 96 / 96 ) * ( 8 / 9 ))); -} */ -/* * {-gtk-dpi: 144;} */ - diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index 22ad77e63..2fa589110 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -1252,7 +1252,7 @@ float* RawImageSource::CA_correct_RT( vfloat factors = oldvals / newvals; factors = vself(vmaskf_le(newvals, onev), onev, factors); factors = vself(vmaskf_le(oldvals, onev), onev, factors); - STVFU((*nonGreen)[i/2][j/2], LIMV(factors, zd5v, twov)); + STVFU((*nonGreen)[i/2][j/2], vclampf(factors, zd5v, twov)); } #endif for (; j < W - 2 * cb; j += 2) { diff --git a/rtengine/CMakeLists.txt b/rtengine/CMakeLists.txt index 759316e33..4ffad24a1 100644 --- a/rtengine/CMakeLists.txt +++ b/rtengine/CMakeLists.txt @@ -128,6 +128,9 @@ set(RTENGINESOURCEFILES vng4_demosaic_RT.cc ipsoftlight.cc guidedfilter.cc + ipdehaze.cc + iplabregions.cc + lj92.c ) if(LENSFUN_HAS_LOAD_DIRECTORY) @@ -161,7 +164,7 @@ add_dependencies(rtengine UpdateInfo) # It may be nice to store library version too if(BUILD_SHARED_LIBS) - install (TARGETS rtengine DESTINATION ${LIBDIR}) + install(TARGETS rtengine DESTINATION ${LIBDIR}) endif() set_target_properties(rtengine PROPERTIES COMPILE_FLAGS "${RTENGINE_CXX_FLAGS}") diff --git a/rtengine/EdgePreservingDecomposition.cc b/rtengine/EdgePreservingDecomposition.cc index 4c56cbb5d..f71e0043e 100644 --- a/rtengine/EdgePreservingDecomposition.cc +++ b/rtengine/EdgePreservingDecomposition.cc @@ -731,7 +731,7 @@ float *EdgePreservingDecomposition::CreateBlur(float *Source, float Scale, float gxv = (LVFU(rg[x + 1]) - LVFU(rg[x])) + (LVFU(rg[x + w + 1]) - LVFU(rg[x + w])); gyv = (LVFU(rg[x + w]) - LVFU(rg[x])) + (LVFU(rg[x + w + 1]) - LVFU(rg[x + 1])); //Apply power to the magnitude of the gradient to get the edge stopping function. - _mm_storeu_ps( &a[x + w * y], Scalev * pow_F((zd5v * _mm_sqrt_ps(gxv * gxv + gyv * gyv + sqrepsv)), EdgeStoppingv) ); + _mm_storeu_ps( &a[x + w * y], Scalev * pow_F((zd5v * vsqrtf(gxv * gxv + gyv * gyv + sqrepsv)), EdgeStoppingv) ); } for(; x < w1; x++) { diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 58e27e118..1a3b80036 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -1748,7 +1748,7 @@ BENCHFUN } - for (int i = 0; i < denoiseNestedLevels * numthreads; ++i) { + for (size_t i = 0; i < blox_array_size; ++i) { if (LbloxArray[i]) { fftwf_free(LbloxArray[i]); } @@ -3340,7 +3340,7 @@ void ImProcFunctions::RGB_denoise_info(Imagefloat * src, Imagefloat * provicalc, aNv = LVFU(acalc[i >> 1][j >> 1]); bNv = LVFU(bcalc[i >> 1][j >> 1]); _mm_storeu_ps(&noisevarhue[i1 >> 1][j1 >> 1], xatan2f(bNv, aNv)); - _mm_storeu_ps(&noisevarchrom[i1 >> 1][j1 >> 1], _mm_max_ps(c100v, _mm_sqrt_ps(SQRV(aNv) + SQRV(bNv)))); + _mm_storeu_ps(&noisevarchrom[i1 >> 1][j1 >> 1], vmaxf(vsqrtf(SQRV(aNv) + SQRV(bNv)),c100v)); } for (; j < tileright; j += 2) { diff --git a/rtengine/LUT.h b/rtengine/LUT.h index d2f758689..de668cca8 100644 --- a/rtengine/LUT.h +++ b/rtengine/LUT.h @@ -320,7 +320,7 @@ public: // Clamp and convert to integer values. Extract out of SSE register because all // lookup operations use regular addresses. - vfloat clampedIndexes = vmaxf(ZEROV, vminf(maxsv, indexv)); + vfloat clampedIndexes = vclampf(indexv, ZEROV, maxsv); // this automagically uses ZEROV in case indexv is NaN vint indexes = _mm_cvttps_epi32(clampedIndexes); int indexArray[4]; _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); @@ -352,7 +352,7 @@ public: // Clamp and convert to integer values. Extract out of SSE register because all // lookup operations use regular addresses. - vfloat clampedIndexes = vmaxf(ZEROV, vminf(maxsv, indexv)); + vfloat clampedIndexes = vclampf(indexv, ZEROV, maxsv); // this automagically uses ZEROV in case indexv is NaN vint indexes = _mm_cvttps_epi32(clampedIndexes); int indexArray[4]; _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); @@ -372,7 +372,7 @@ public: vfloat lower = _mm_castsi128_ps(_mm_unpacklo_epi64(temp0, temp1)); vfloat upper = _mm_castsi128_ps(_mm_unpackhi_epi64(temp0, temp1)); - vfloat diff = vmaxf(ZEROV, vminf(sizev, indexv)) - _mm_cvtepi32_ps(indexes); + vfloat diff = vclampf(indexv, ZEROV, sizev) - _mm_cvtepi32_ps(indexes); // this automagically uses ZEROV in case indexv is NaN return vintpf(diff, upper, lower); } @@ -383,7 +383,7 @@ public: // Clamp and convert to integer values. Extract out of SSE register because all // lookup operations use regular addresses. - vfloat clampedIndexes = vmaxf(ZEROV, vminf(maxsv, indexv)); + vfloat clampedIndexes = vclampf(indexv, ZEROV, maxsv); // this automagically uses ZEROV in case indexv is NaN vint indexes = _mm_cvttps_epi32(clampedIndexes); int indexArray[4]; _mm_storeu_si128(reinterpret_cast<__m128i*>(&indexArray[0]), indexes); @@ -420,7 +420,8 @@ public: template::value>::type> vfloat operator[](vint idxv) const { - vfloat tempv = vmaxf(ZEROV, vminf(sizev, _mm_cvtepi32_ps(idxv))); // convert to float because SSE2 has no min/max for 32bit integers + // convert to float because SSE2 has no min/max for 32bit integers + vfloat tempv = vclampf(_mm_cvtepi32_ps(idxv), ZEROV, sizev); // this automagically uses ZEROV in case idxv is NaN (which will never happen because it is a vector of int) idxv = _mm_cvttps_epi32(tempv); // access the LUT 4 times. Trust the compiler. It generates good code here, better than hand written SSE code return _mm_setr_ps(data[_mm_cvtsi128_si32(idxv)], diff --git a/rtengine/PF_correct_RT.cc b/rtengine/PF_correct_RT.cc index dbb42db0d..57e4c2225 100644 --- a/rtengine/PF_correct_RT.cc +++ b/rtengine/PF_correct_RT.cc @@ -396,26 +396,26 @@ void ImProcFunctions::PF_correct_RTcam(CieImage * ncie, double radius, int thres } } } // end of ab channel averaging + } #ifdef _OPENMP - #pragma omp parallel for + #pragma omp parallel for #endif - for(int i = 0; i < height; i++) { - int j = 0; + for(int i = 0; i < height; i++) { + int j = 0; #ifdef __SSE2__ - for (; j < width - 3; j += 4) { - const vfloat interav = LVFU(tmaa[i][j]); - const vfloat interbv = LVFU(tmbb[i][j]); - STVFU(ncie->h_p[i][j], xatan2f(interbv, interav) / F2V(RT_PI_F_180)); - STVFU(ncie->C_p[i][j], vsqrtf(SQRV(interbv) + SQRV(interav))); - } + for (; j < width - 3; j += 4) { + const vfloat interav = LVFU(tmaa[i][j]); + const vfloat interbv = LVFU(tmbb[i][j]); + STVFU(ncie->h_p[i][j], xatan2f(interbv, interav) / F2V(RT_PI_F_180)); + STVFU(ncie->C_p[i][j], vsqrtf(SQRV(interbv) + SQRV(interav))); + } #endif - for (; j < width; j++) { - const float intera = tmaa[i][j]; - const float interb = tmbb[i][j]; - ncie->h_p[i][j] = xatan2f(interb, intera) / RT_PI_F_180; - ncie->C_p[i][j] = sqrt(SQR(interb) + SQR(intera)); - } + for (; j < width; j++) { + const float intera = tmaa[i][j]; + const float interb = tmbb[i][j]; + ncie->h_p[i][j] = xatan2f(interb, intera) / RT_PI_F_180; + ncie->C_p[i][j] = sqrt(SQR(interb) + SQR(intera)); } } } diff --git a/rtengine/boxblur.h b/rtengine/boxblur.h index 71452ceae..d686ad43e 100644 --- a/rtengine/boxblur.h +++ b/rtengine/boxblur.h @@ -19,6 +19,7 @@ #ifndef _BOXBLUR_H_ #define _BOXBLUR_H_ +#include #include #include #include diff --git a/rtengine/camconst.json b/rtengine/camconst.json index eb4174577..55acf8307 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -1131,6 +1131,10 @@ Camera constants: }, // Canon Powershot + { // Quality C, CHDK DNGs, raw frame correction + "make_model": "Canon PowerShot A3100 IS", + "raw_crop": [ 24, 12, 4032, 3024 ] // full size 4036X3026 + }, { // Quality C, CHDK DNGs, raw frame corrections, experimental infrared support commented out "make_model": "Canon PowerShot A480", @@ -1205,6 +1209,11 @@ Camera constants: "ranges": { "white": 4050 } }, + { // Quality C + "make_model": "Canon PowerShot SX50 HS", + "ranges": { "white": 4050 } + }, + { // Quality B "make_model": "Canon PowerShot SX60 HS", "dcraw_matrix": [ 13161,-5451,-1344,-1989,10654,1531,-47,1271,4955 ], // DNG_V8.7 D65 @@ -1213,6 +1222,11 @@ Camera constants: "ranges": { "white": 4050 } // nominal 4080-4093 }, + { // Quality C + "make_model": "Canon PowerShot SX150 IS", + "raw_crop": [ 26, 10, 4364, 3254 ] // cut 2pix left and right + }, + { // Quality C "make_model": "Canon PowerShot SX220 HS", "raw_crop": [ 92, 16, 4072, 3042 ] // Cut 2pix at lower border because of too high values in blue channel @@ -1343,6 +1357,7 @@ Camera constants: "make_model": "LG mobile LG-H815", "dcraw_matrix": [ 5859,547,-1250,-6484,15547,547,-2422,5625,3906 ], // DNG D65 //"dcraw_matrix": [ 11563,-2891,-3203,-5313,15625,625,-781,2813,5625 ], // DNG A + "raw_crop": [ 0, 0, 5312, 2986 ], // cropped last two rows because last row was garbage "ranges": { "white": 1000 } }, { // Quality C @@ -1589,6 +1604,13 @@ Camera constants: "pdaf_pattern" : [0, 12], "pdaf_offset" : 29 }, + + { // Quality C, only colour matrix and PDAF lines info + "make_model" : "Nikon Z 6", + "dcraw_matrix" : [8210, -2534, -683, -5355, 13338, 2212, -1143, 1929, 6464], // Adobe DNG Converter 11.1 Beta ColorMatrix2 + "pdaf_pattern" : [0, 12], + "pdaf_offset" : 32 + }, { // Quality B, 16Mp and 64Mp raw frames "make_model": "OLYMPUS E-M5MarkII", @@ -1677,6 +1699,13 @@ Camera constants: "global_green_equilibration" : true }, + { // Quality X + "make_model": [ "Panasonic DC-LX100M2" ], + "dcraw_matrix": [ 11577, -4230, -1106, -3967, 12211, 1957, -758, 1762, 5610 ], // Adobe DNG Converter 11.0 ColorMatrix2 + "raw_crop": [ 0, 0, 0, 0 ], + "ranges": { "black": 15 } + }, + { // Quality C, proper ISO 100-125-160 samples missing, pixelshift files have no black offset etc. #4574 "make_model": [ "Panasonic DC-G9" ], "dcraw_matrix": [ 7685, -2375, -634, -3687, 11700, 2249, -748, 1546, 5111 ], // Adobe DNG Converter 10.3 ColorMatrix2 diff --git a/rtengine/ciecam02.cc b/rtengine/ciecam02.cc index f9475eb4e..86b67e000 100644 --- a/rtengine/ciecam02.cc +++ b/rtengine/ciecam02.cc @@ -191,26 +191,26 @@ float Ciecam02::calculate_fl_from_la_ciecam02float ( float la ) return (0.2f * k * la5) + (0.1f * (1.0f - k) * (1.0f - k) * std::cbrt (la5)); } -float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb, int gamu ) +float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb ) { float r, g, b; float rc, gc, bc; float rp, gp, bp; float rpa, gpa, bpa; - gamu = 1; - xyz_to_cat02float ( r, g, b, x, y, z, gamu ); +// gamu = 1; + xyz_to_cat02float ( r, g, b, x, y, z); rc = r * (((y * d) / r) + (1.0f - d)); gc = g * (((y * d) / g) + (1.0f - d)); bc = b * (((y * d) / b) + (1.0f - d)); - cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc, gamu ); + cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc); - if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk - rp = MAXR (rp, 0.0f); - gp = MAXR (gp, 0.0f); - bp = MAXR (bp, 0.0f); - } +// if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk + rp = MAXR (rp, 0.0f); + gp = MAXR (gp, 0.0f); + bp = MAXR (bp, 0.0f); +// } rpa = nonlinear_adaptationfloat ( rp, fl ); gpa = nonlinear_adaptationfloat ( gp, fl ); @@ -219,22 +219,22 @@ float Ciecam02::achromatic_response_to_whitefloat ( float x, float y, float z, f return ((2.0f * rpa) + gpa + ((1.0f / 20.0f) * bpa) - 0.305f) * nbb; } -void Ciecam02::xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z, int gamu ) +void Ciecam02::xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z) { - gamu = 1; - - if (gamu == 0) { - r = ( 0.7328f * x) + (0.4296f * y) - (0.1624f * z); - g = (-0.7036f * x) + (1.6975f * y) + (0.0061f * z); - b = ( 0.0030f * x) + (0.0136f * y) + (0.9834f * z); - } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk - //r = ( 0.7328 * x) + (0.4296 * y) - (0.1624 * z); - //g = (-0.7036 * x) + (1.6975 * y) + (0.0061 * z); - //b = ( 0.0000 * x) + (0.0000 * y) + (1.0000 * z); - r = ( 1.007245f * x) + (0.011136f * y) - (0.018381f * z); //Changjun Li - g = (-0.318061f * x) + (1.314589f * y) + (0.003471f * z); - b = ( 0.0000f * x) + (0.0000f * y) + (1.0000f * z); - } +// gamu = 1; +// +// if (gamu == 0) { +// r = ( 0.7328f * x) + (0.4296f * y) - (0.1624f * z); +// g = (-0.7036f * x) + (1.6975f * y) + (0.0061f * z); +// b = ( 0.0030f * x) + (0.0136f * y) + (0.9834f * z); +// } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk + //r = ( 0.7328 * x) + (0.4296 * y) - (0.1624 * z); + //g = (-0.7036 * x) + (1.6975 * y) + (0.0061 * z); + //b = ( 0.0000 * x) + (0.0000 * y) + (1.0000 * z); + r = ( 1.007245f * x) + (0.011136f * y) - (0.018381f * z); //Changjun Li + g = (-0.318061f * x) + (1.314589f * y) + (0.003471f * z); + b = ( 0.0000f * x) + (0.0000f * y) + (1.0000f * z); +// } } #ifdef __SSE2__ void Ciecam02::xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vfloat y, vfloat z ) @@ -246,22 +246,22 @@ void Ciecam02::xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vf } #endif -void Ciecam02::cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b, int gamu ) +void Ciecam02::cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b) { - gamu = 1; - - if (gamu == 0) { - x = ( 1.096124f * r) - (0.278869f * g) + (0.182745f * b); - y = ( 0.454369f * r) + (0.473533f * g) + (0.072098f * b); - z = (-0.009628f * r) - (0.005698f * g) + (1.015326f * b); - } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk - //x = ( 1.0978566 * r) - (0.277843 * g) + (0.179987 * b); - //y = ( 0.455053 * r) + (0.473938 * g) + (0.0710096* b); - //z = ( 0.000000 * r) - (0.000000 * g) + (1.000000 * b); - x = ( 0.99015849f * r) - (0.00838772f * g) + (0.018229217f * b); //Changjun Li - y = ( 0.239565979f * r) + (0.758664642f * g) + (0.001770137f * b); - z = ( 0.000000f * r) - (0.000000f * g) + (1.000000f * b); - } +// gamu = 1; +// +// if (gamu == 0) { +// x = ( 1.096124f * r) - (0.278869f * g) + (0.182745f * b); +// y = ( 0.454369f * r) + (0.473533f * g) + (0.072098f * b); +// z = (-0.009628f * r) - (0.005698f * g) + (1.015326f * b); +// } else if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk + //x = ( 1.0978566 * r) - (0.277843 * g) + (0.179987 * b); + //y = ( 0.455053 * r) + (0.473938 * g) + (0.0710096* b); + //z = ( 0.000000 * r) - (0.000000 * g) + (1.000000 * b); + x = ( 0.99015849f * r) - (0.00838772f * g) + (0.018229217f * b); //Changjun Li + y = ( 0.239565979f * r) + (0.758664642f * g) + (0.001770137f * b); + z = ( 0.000000f * r) - (0.000000f * g) + (1.000000f * b); +// } } #ifdef __SSE2__ void Ciecam02::cat02_to_xyzfloat ( vfloat &x, vfloat &y, vfloat &z, vfloat r, vfloat g, vfloat b ) @@ -288,19 +288,19 @@ void Ciecam02::hpe_to_xyzfloat ( vfloat &x, vfloat &y, vfloat &z, vfloat r, vflo } #endif -void Ciecam02::cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b, int gamu ) +void Ciecam02::cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b) { - gamu = 1; - - if (gamu == 0) { - rh = ( 0.7409792f * r) + (0.2180250f * g) + (0.0410058f * b); - gh = ( 0.2853532f * r) + (0.6242014f * g) + (0.0904454f * b); - bh = (-0.0096280f * r) - (0.0056980f * g) + (1.0153260f * b); - } else if (gamu == 1) { //Changjun Li - rh = ( 0.550930835f * r) + (0.519435987f * g) - ( 0.070356303f * b); - gh = ( 0.055954056f * r) + (0.89973132f * g) + (0.044315524f * b); - bh = (0.0f * r) - (0.0f * g) + (1.0f * b); - } +// gamu = 1; +// +// if (gamu == 0) { +// rh = ( 0.7409792f * r) + (0.2180250f * g) + (0.0410058f * b); +// gh = ( 0.2853532f * r) + (0.6242014f * g) + (0.0904454f * b); +// bh = (-0.0096280f * r) - (0.0056980f * g) + (1.0153260f * b); +// } else if (gamu == 1) { //Changjun Li + rh = ( 0.550930835f * r) + (0.519435987f * g) - ( 0.070356303f * b); + gh = ( 0.055954056f * r) + (0.89973132f * g) + (0.044315524f * b); + bh = (0.0f * r) - (0.0f * g) + (1.0f * b); +// } } #ifdef __SSE2__ @@ -407,7 +407,7 @@ void Ciecam02::calculate_abfloat ( vfloat &aa, vfloat &bb, vfloat h, vfloat e, v #endif -void Ciecam02::initcam1float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, +void Ciecam02::initcam1float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, float &cz, float &aw, float &wh, float &pfl, float &fl, float &c) { n = yb / yw; @@ -421,7 +421,7 @@ void Ciecam02::initcam1float (float gamu, float yb, float pilotd, float f, float fl = calculate_fl_from_la_ciecam02float ( la ); nbb = ncb = 0.725f * pow_F ( 1.0f / n, 0.2f ); cz = 1.48f + sqrt ( n ); - aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb, gamu ); + aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb); wh = ( 4.0f / c ) * ( aw + 4.0f ) * pow_F ( fl, 0.25f ); pfl = pow_F ( fl, 0.25f ); #ifdef _DEBUG @@ -433,7 +433,7 @@ void Ciecam02::initcam1float (float gamu, float yb, float pilotd, float f, float #endif } -void Ciecam02::initcam2float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, +void Ciecam02::initcam2float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, float &cz, float &aw, float &fl) { n = yb / yw; @@ -448,7 +448,7 @@ void Ciecam02::initcam2float (float gamu, float yb, float pilotd, float f, float fl = calculate_fl_from_la_ciecam02float ( la ); nbb = ncb = 0.725f * pow_F ( 1.0f / n, 0.2f ); cz = 1.48f + sqrt ( n ); - aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb, gamu ); + aw = achromatic_response_to_whitefloat ( xw, yw, zw, d, fl, nbb); #ifdef _DEBUG if (settings->verbose) { @@ -460,7 +460,7 @@ void Ciecam02::initcam2float (float gamu, float yb, float pilotd, float f, float void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q, float &M, float &s, float aw, float fl, float wh, float x, float y, float z, float xw, float yw, float zw, - float c, float nc, int gamu, float pow1, float nbb, float ncb, float pfl, float cz, float d) + float c, float nc, float pow1, float nbb, float ncb, float pfl, float cz, float d) { float r, g, b; @@ -471,20 +471,20 @@ void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q float a, ca, cb; float e, t; float myh; - gamu = 1; - xyz_to_cat02float ( r, g, b, x, y, z, gamu ); - xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, gamu ); +// gamu = 1; + xyz_to_cat02float ( r, g, b, x, y, z); + xyz_to_cat02float ( rw, gw, bw, xw, yw, zw); rc = r * (((yw * d) / rw) + (1.f - d)); gc = g * (((yw * d) / gw) + (1.f - d)); bc = b * (((yw * d) / bw) + (1.f - d)); - cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc, gamu ); + cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc); - if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk - rp = MAXR (rp, 0.0f); - gp = MAXR (gp, 0.0f); - bp = MAXR (bp, 0.0f); - } +// if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk + rp = MAXR (rp, 0.0f); + gp = MAXR (gp, 0.0f); + bp = MAXR (bp, 0.0f); +// } rpa = nonlinear_adaptationfloat ( rp, fl ); gpa = nonlinear_adaptationfloat ( gp, fl ); @@ -501,9 +501,9 @@ void Ciecam02::xyz2jchqms_ciecam02float ( float &J, float &C, float &h, float &Q a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb; - if (gamu == 1) { - a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk - } +// if (gamu == 1) { + a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk +// } J = pow_F ( a / aw, c * cz * 0.5f); @@ -542,9 +542,9 @@ void Ciecam02::xyz2jchqms_ciecam02float ( vfloat &J, vfloat &C, vfloat &h, vfloa cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc); //gamut correction M.H.Brill S.Susstrunk - rp = _mm_max_ps (rp, ZEROV); - gp = _mm_max_ps (gp, ZEROV); - bp = _mm_max_ps (bp, ZEROV); + rp = vmaxf (rp, ZEROV); + gp = vmaxf (gp, ZEROV); + bp = vmaxf (bp, ZEROV); rpa = nonlinear_adaptationfloat ( rp, fl ); gpa = nonlinear_adaptationfloat ( gp, fl ); bpa = nonlinear_adaptationfloat ( bp, fl ); @@ -559,20 +559,20 @@ void Ciecam02::xyz2jchqms_ciecam02float ( vfloat &J, vfloat &C, vfloat &h, vfloa myh = vself (vmaskf_lt (myh, ZEROV), temp, myh); a = ((rpa + rpa) + gpa + (F2V (0.05f) * bpa) - F2V (0.305f)) * nbb; - a = _mm_max_ps (a, ZEROV); //gamut correction M.H.Brill S.Susstrunk + a = vmaxf (a, ZEROV); //gamut correction M.H.Brill S.Susstrunk J = pow_F ( a / aw, c * cz * F2V (0.5f)); e = ((F2V (961.53846f)) * nc * ncb) * (xcosf ( myh + F2V (2.0f) ) + F2V (3.8f)); - t = (e * _mm_sqrt_ps ( (ca * ca) + (cb * cb) )) / (rpa + gpa + (F2V (1.05f) * bpa)); + t = (e * vsqrtf ( (ca * ca) + (cb * cb) )) / (rpa + gpa + (F2V (1.05f) * bpa)); C = pow_F ( t, F2V (0.9f) ) * J * pow1; Q = wh * J; J *= J * F2V (100.0f); M = C * pfl; - Q = _mm_max_ps (Q, F2V (0.0001f)); // avoid division by zero - s = F2V (100.0f) * _mm_sqrt_ps ( M / Q ); + Q = vmaxf (Q, F2V (0.0001f)); // avoid division by zero + s = F2V (100.0f) * vsqrtf ( M / Q ); h = (myh * F2V (180.f)) / F2V (rtengine::RT_PI); } #endif @@ -590,20 +590,20 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f float a, ca, cb; float e, t; float myh; - int gamu = 1; - xyz_to_cat02float ( r, g, b, x, y, z, gamu ); - xyz_to_cat02float ( rw, gw, bw, xw, yw, zw, gamu ); +// int gamu = 1; + xyz_to_cat02float ( r, g, b, x, y, z); + xyz_to_cat02float ( rw, gw, bw, xw, yw, zw); rc = r * (((yw * d) / rw) + (1.f - d)); gc = g * (((yw * d) / gw) + (1.f - d)); bc = b * (((yw * d) / bw) + (1.f - d)); - cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc, gamu ); + cat02_to_hpefloat ( rp, gp, bp, rc, gc, bc); - if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk - rp = MAXR (rp, 0.0f); - gp = MAXR (gp, 0.0f); - bp = MAXR (bp, 0.0f); - } +// if (gamu == 1) { //gamut correction M.H.Brill S.Susstrunk + rp = MAXR (rp, 0.0f); + gp = MAXR (gp, 0.0f); + bp = MAXR (bp, 0.0f); +// } #ifdef __SSE2__ vfloat pv = _mm_setr_ps(rp, gp, bp, 1.f); @@ -629,9 +629,9 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f a = ((2.0f * rpa) + gpa + (0.05f * bpa) - 0.305f) * nbb; - if (gamu == 1) { - a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk - } +// if (gamu == 1) { + a = MAXR (a, 0.0f); //gamut correction M.H.Brill S.Susstrunk +// } J = pow_F ( a / aw, c * cz * 0.5f); @@ -646,7 +646,7 @@ void Ciecam02::xyz2jch_ciecam02float ( float &J, float &C, float &h, float aw, f void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, float C, float h, float xw, float yw, float zw, - float c, float nc, int gamu, float pow1, float nbb, float ncb, float fl, float cz, float d, float aw) + float c, float nc, float pow1, float nbb, float ncb, float fl, float cz, float d, float aw) { float r, g, b; float rc, gc, bc; @@ -655,8 +655,8 @@ void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, fl float rw, gw, bw; float a, ca, cb; float e, t; - gamu = 1; - xyz_to_cat02float(rw, gw, bw, xw, yw, zw, gamu); +// gamu = 1; + xyz_to_cat02float(rw, gw, bw, xw, yw, zw); e = ((961.53846f) * nc * ncb) * (xcosf(h * rtengine::RT_PI_F_180 + 2.0f) + 3.8f); #ifdef __SSE2__ @@ -686,13 +686,13 @@ void Ciecam02::jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, fl bp = inverse_nonlinear_adaptationfloat(bpa, fl); #endif hpe_to_xyzfloat(x, y, z, rp, gp, bp); - xyz_to_cat02float(rc, gc, bc, x, y, z, gamu); + xyz_to_cat02float(rc, gc, bc, x, y, z); r = rc / (((yw * d) / rw) + (1.0f - d)); g = gc / (((yw * d) / gw) + (1.0f - d)); b = bc / (((yw * d) / bw) + (1.0f - d)); - cat02_to_xyzfloat(x, y, z, r, g, b, gamu); + cat02_to_xyzfloat(x, y, z, r, g, b); } #ifdef __SSE2__ @@ -710,7 +710,7 @@ void Ciecam02::jch2xyz_ciecam02float ( vfloat &x, vfloat &y, vfloat &z, vfloat J xyz_to_cat02float ( rw, gw, bw, xw, yw, zw); e = ((F2V (961.53846f)) * nc * ncb) * (xcosf ( ((h * F2V (rtengine::RT_PI)) / F2V (180.0f)) + F2V (2.0f) ) + F2V (3.8f)); a = pow_F ( J / F2V (100.0f), reccmcz ) * aw; - t = pow_F ( F2V (10.f) * C / (_mm_sqrt_ps ( J ) * pow1), F2V (1.1111111f) ); + t = pow_F ( F2V (10.f) * C / (vsqrtf ( J ) * pow1), F2V (1.1111111f) ); calculate_abfloat ( ca, cb, h, e, t, nbb, a ); Aab_to_rgbfloat ( rpa, gpa, bpa, a, ca, cb, nbb ); @@ -780,7 +780,7 @@ vfloat Ciecam02::inverse_nonlinear_adaptationfloat ( vfloat c, vfloat fl ) c -= F2V (0.1f); fl = vmulsignf (fl, c); c = vabsf (c); - c = _mm_min_ps ( c, F2V (399.99f)); + c = vminf ( c, F2V (399.99f)); return (F2V (100.0f) / fl) * pow_F ( (F2V (27.13f) * c) / (F2V (400.0f) - c), F2V (2.38095238f) ); } #endif diff --git a/rtengine/ciecam02.h b/rtengine/ciecam02.h index d55b1a405..68763b965 100644 --- a/rtengine/ciecam02.h +++ b/rtengine/ciecam02.h @@ -30,9 +30,9 @@ class Ciecam02 private: static float d_factorfloat ( float f, float la ); static float calculate_fl_from_la_ciecam02float ( float la ); - static float achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb, int gamu ); - static void xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z, int gamu ); - static void cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b, int gamu ); + static float achromatic_response_to_whitefloat ( float x, float y, float z, float d, float fl, float nbb); + static void xyz_to_cat02float ( float &r, float &g, float &b, float x, float y, float z); + static void cat02_to_hpefloat ( float &rh, float &gh, float &bh, float r, float g, float b); #ifdef __SSE2__ static void xyz_to_cat02float ( vfloat &r, vfloat &g, vfloat &b, vfloat x, vfloat y, vfloat z ); @@ -46,7 +46,7 @@ private: static void calculate_abfloat ( float &aa, float &bb, float h, float e, float t, float nbb, float a ); static void Aab_to_rgbfloat ( float &r, float &g, float &b, float A, float aa, float bb, float nbb ); static void hpe_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b ); - static void cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b, int gamu ); + static void cat02_to_xyzfloat ( float &x, float &y, float &z, float r, float g, float b); #ifdef __SSE2__ static vfloat inverse_nonlinear_adaptationfloat ( vfloat c, vfloat fl ); static void calculate_abfloat ( vfloat &aa, vfloat &bb, vfloat h, vfloat e, vfloat t, vfloat nbb, vfloat a ); @@ -66,7 +66,7 @@ public: static void jch2xyz_ciecam02float ( float &x, float &y, float &z, float J, float C, float h, float xw, float yw, float zw, - float c, float nc, int gamu, float n, float nbb, float ncb, float fl, float cz, float d, float aw ); + float c, float nc, float n, float nbb, float ncb, float fl, float cz, float d, float aw ); #ifdef __SSE2__ static void jch2xyz_ciecam02float ( vfloat &x, vfloat &y, vfloat &z, vfloat J, vfloat C, vfloat h, @@ -76,10 +76,10 @@ public: /** * Forward transform from XYZ to CIECAM02 JCh. */ - static void initcam1float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, + static void initcam1float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, float &cz, float &aw, float &wh, float &pfl, float &fl, float &c); - static void initcam2float (float gamu, float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, + static void initcam2float (float yb, float pilotd, float f, float la, float xw, float yw, float zw, float &n, float &d, float &nbb, float &ncb, float &cz, float &aw, float &fl); static void xyz2jch_ciecam02float ( float &J, float &C, float &h, @@ -92,7 +92,7 @@ public: float &Q, float &M, float &s, float aw, float fl, float wh, float x, float y, float z, float xw, float yw, float zw, - float c, float nc, int gamu, float n, float nbb, float ncb, float pfl, float cz, float d ); + float c, float nc, float n, float nbb, float ncb, float pfl, float cz, float d ); #ifdef __SSE2__ static void xyz2jchqms_ciecam02float ( vfloat &J, vfloat &C, vfloat &h, diff --git a/rtengine/clutstore.cc b/rtengine/clutstore.cc index 87ce25d97..1a425d21b 100644 --- a/rtengine/clutstore.cc +++ b/rtengine/clutstore.cc @@ -226,7 +226,7 @@ void rtengine::HaldCLUT::getRGB( #else const vfloat v_in = _mm_set_ps(0.0f, *b, *g, *r); const vfloat v_tmp = v_in * F2V(flevel_minus_one); - const vfloat v_rgb = v_tmp - _mm_cvtepi32_ps(_mm_cvttps_epi32(_mm_min_ps(F2V(flevel_minus_two), v_tmp))); + const vfloat v_rgb = v_tmp - _mm_cvtepi32_ps(_mm_cvttps_epi32(vminf(v_tmp, F2V(flevel_minus_two)))); size_t index = color * 4; diff --git a/rtengine/color.cc b/rtengine/color.cc index 599aceaa1..4ace03bc0 100644 --- a/rtengine/color.cc +++ b/rtengine/color.cc @@ -547,8 +547,8 @@ void Color::rgb2hsl(float r, float g, float b, float &h, float &s, float &l) #ifdef __SSE2__ void Color::rgb2hsl(vfloat r, vfloat g, vfloat b, vfloat &h, vfloat &s, vfloat &l) { - vfloat maxv = _mm_max_ps(r, _mm_max_ps(g, b)); - vfloat minv = _mm_min_ps(r, _mm_min_ps(g, b)); + vfloat maxv = vmaxf(r, vmaxf(g, b)); + vfloat minv = vminf(r, vminf(g, b)); vfloat C = maxv - minv; vfloat tempv = maxv + minv; l = (tempv) * F2V(7.6295109e-6f); @@ -1931,6 +1931,24 @@ void Color::Lab2Lch(float a, float b, float &c, float &h) h = xatan2f(b, a); } +#ifdef __SSE2__ +void Color::Lab2Lch(float *a, float *b, float *c, float *h, int w) +{ + int i = 0; + vfloat c327d68v = F2V(327.68f); + for (; i < w - 3; i += 4) { + vfloat av = LVFU(a[i]); + vfloat bv = LVFU(b[i]); + STVFU(c[i], vsqrtf(SQRV(av) + SQRV(bv)) / c327d68v); + STVFU(h[i], xatan2f(bv, av)); + } + for (; i < w; ++i) { + c[i] = sqrtf(SQR(a[i]) + SQR(b[i])) / 327.68f; + h[i] = xatan2f(b[i], a[i]); + } +} +#endif + void Color::Lch2Lab(float c, float h, float &a, float &b) { float2 sincosval = xsincosf(h); @@ -2861,7 +2879,7 @@ void Color::LabGamutMunsell(float *labL, float *laba, float *labb, const int N, av = LVFU(laba[k]); bv = LVFU(labb[k]); _mm_storeu_ps(&HHBuffer[k], xatan2f(bv, av)); - _mm_storeu_ps(&CCBuffer[k], _mm_sqrt_ps(SQRV(av) + SQRV(bv)) / c327d68v); + _mm_storeu_ps(&CCBuffer[k], vsqrtf(SQRV(av) + SQRV(bv)) / c327d68v); } for(; k < N; k++) { diff --git a/rtengine/color.h b/rtengine/color.h index 1e6eef578..9f8863343 100644 --- a/rtengine/color.h +++ b/rtengine/color.h @@ -205,6 +205,10 @@ public: return r * 0.2126729 + g * 0.7151521 + b * 0.0721750; } + static float rgbLuminance(float r, float g, float b, const double workingspace[3][3]) + { + return r * workingspace[1][0] + g * workingspace[1][1] + b * workingspace[1][2]; + } /** * @brief Convert red/green/blue to L*a*b @@ -647,7 +651,9 @@ public: * @param h 'h' channel return value, in [-PI ; +PI] (return value) */ static void Lab2Lch(float a, float b, float &c, float &h); - +#ifdef __SSE2__ + static void Lab2Lch(float *a, float *b, float *c, float *h, int w); +#endif /** * @brief Convert 'c' and 'h' channels of the Lch color space to the 'a' and 'b' channels of the L*a*b color space (channel 'L' is identical [0 ; 32768]) diff --git a/rtengine/cplx_wavelet_dec.cc b/rtengine/cplx_wavelet_dec.cc index eafadaa54..a43a7b8b6 100644 --- a/rtengine/cplx_wavelet_dec.cc +++ b/rtengine/cplx_wavelet_dec.cc @@ -39,5 +39,5 @@ wavelet_decomposition::~wavelet_decomposition() } } -}; +} diff --git a/rtengine/cplx_wavelet_dec.h b/rtengine/cplx_wavelet_dec.h index 45e829322..ccecef819 100644 --- a/rtengine/cplx_wavelet_dec.h +++ b/rtengine/cplx_wavelet_dec.h @@ -266,6 +266,6 @@ void wavelet_decomposition::reconstruct(E * dst, const float blend) coeff0 = nullptr; } -}; +} #endif diff --git a/rtengine/cplx_wavelet_filter_coeffs.h b/rtengine/cplx_wavelet_filter_coeffs.h index ff22c9812..bd333d4b9 100644 --- a/rtengine/cplx_wavelet_filter_coeffs.h +++ b/rtengine/cplx_wavelet_filter_coeffs.h @@ -50,5 +50,5 @@ const float Daub4_anal16[2][16] ALIGNED16 = {//Daub 14 }; // if necessary ?? we can add D20 !! -}; +} diff --git a/rtengine/cplx_wavelet_level.h b/rtengine/cplx_wavelet_level.h index 9996ec2af..cab0d8e3e 100644 --- a/rtengine/cplx_wavelet_level.h +++ b/rtengine/cplx_wavelet_level.h @@ -758,6 +758,6 @@ template template void wavelet_level::reconstruct_lev } } #endif -}; +} #endif diff --git a/rtengine/curves.cc b/rtengine/curves.cc index aab74a7de..ecd38d4aa 100644 --- a/rtengine/curves.cc +++ b/rtengine/curves.cc @@ -45,6 +45,42 @@ using namespace std; namespace rtengine { +bool sanitizeCurve(std::vector& curve) +{ + // A curve is valid under one of the following conditions: + // 1) Curve has exactly one entry which is D(F)CT_Linear + // 2) Number of curve entries is > 3 and odd + // 3) curve[0] == DCT_Parametric and curve size is >= 8 and curve[1] .. curve[3] are ordered ascending and are distinct + if (curve.empty()) { + curve.push_back (DCT_Linear); + return true; + } else if(curve.size() == 1 && curve[0] != DCT_Linear) { + curve[0] = DCT_Linear; + return true; + } else if((curve.size() % 2 == 0 || curve.size() < 5) && curve[0] != DCT_Parametric) { + curve.clear(); + curve.push_back (DCT_Linear); + return true; + } else if(curve[0] == DCT_Parametric) { + if (curve.size() < 8) { + curve.clear(); + curve.push_back (DCT_Linear); + return true; + } else { + // curve[1] to curve[3] must be ordered ascending and distinct + for (int i = 1; i < 3; i++) { + if (curve[i] >= curve[i + 1]) { + curve[1] = 0.25f; + curve[2] = 0.5f; + curve[3] = 0.75f; + break; + } + } + } + } + return false; +} + Curve::Curve () : N(0), ppn(0), x(nullptr), y(nullptr), mc(0.0), mfc(0.0), msc(0.0), mhc(0.0), hashSize(1000 /* has to be initialized to the maximum value */), ypp(nullptr), x1(0.0), y1(0.0), x2(0.0), y2(0.0), x3(0.0), y3(0.0), firstPointIncluded(false), increment(0.0), nbr_points(0) {} void Curve::AddPolygons () @@ -989,7 +1025,7 @@ void ColorAppearance::Set(const Curve &pCurve) } // -RetinextransmissionCurve::RetinextransmissionCurve() {}; +RetinextransmissionCurve::RetinextransmissionCurve() {} void RetinextransmissionCurve::Reset() { @@ -1022,7 +1058,7 @@ void RetinextransmissionCurve::Set(const std::vector &curvePoints) } -RetinexgaintransmissionCurve::RetinexgaintransmissionCurve() {}; +RetinexgaintransmissionCurve::RetinexgaintransmissionCurve() {} void RetinexgaintransmissionCurve::Reset() { @@ -1132,7 +1168,7 @@ void OpacityCurve::Set(const std::vector &curvePoints, bool &opautili) } -WavCurve::WavCurve() : sum(0.f) {}; +WavCurve::WavCurve() : sum(0.f) {} void WavCurve::Reset() { @@ -1175,7 +1211,7 @@ void WavCurve::Set(const std::vector &curvePoints) } -WavOpacityCurveRG::WavOpacityCurveRG() {}; +WavOpacityCurveRG::WavOpacityCurveRG() {} void WavOpacityCurveRG::Reset() { @@ -1208,7 +1244,7 @@ void WavOpacityCurveRG::Set(const std::vector &curvePoints) } -WavOpacityCurveBY::WavOpacityCurveBY() {}; +WavOpacityCurveBY::WavOpacityCurveBY() {} void WavOpacityCurveBY::Reset() { @@ -1240,7 +1276,7 @@ void WavOpacityCurveBY::Set(const std::vector &curvePoints) } } -WavOpacityCurveW::WavOpacityCurveW() {}; +WavOpacityCurveW::WavOpacityCurveW() {} void WavOpacityCurveW::Reset() { @@ -1272,7 +1308,7 @@ void WavOpacityCurveW::Set(const std::vector &curvePoints) } } -WavOpacityCurveWL::WavOpacityCurveWL() {}; +WavOpacityCurveWL::WavOpacityCurveWL() {} void WavOpacityCurveWL::Reset() { @@ -1305,7 +1341,7 @@ void WavOpacityCurveWL::Set(const std::vector &curvePoints) } -NoiseCurve::NoiseCurve() : sum(0.f) {}; +NoiseCurve::NoiseCurve() : sum(0.f) {} void NoiseCurve::Reset() { @@ -2004,7 +2040,7 @@ void PerceptualToneCurve::BatchApply(const size_t start, const size_t end, float Ciecam02::jch2xyz_ciecam02float( x, y, z, J, C, h, xw, yw, zw, - c, nc, 1, pow1, nbb, ncb, fl, cz, d, aw ); + c, nc, pow1, nbb, ncb, fl, cz, d, aw ); if (!isfinite(x) || !isfinite(y) || !isfinite(z)) { // can happen for colours on the rim of being outside gamut, that worked without chroma scaling but not with. Then we return only the curve's result. @@ -2087,7 +2123,7 @@ void PerceptualToneCurve::BatchApply(const size_t start, const size_t end, float } float PerceptualToneCurve::cf_range[2]; float PerceptualToneCurve::cf[1000]; -float PerceptualToneCurve::f, PerceptualToneCurve::c, PerceptualToneCurve::nc, PerceptualToneCurve::yb, PerceptualToneCurve::la, PerceptualToneCurve::xw, PerceptualToneCurve::yw, PerceptualToneCurve::zw, PerceptualToneCurve::gamut; +float PerceptualToneCurve::f, PerceptualToneCurve::c, PerceptualToneCurve::nc, PerceptualToneCurve::yb, PerceptualToneCurve::la, PerceptualToneCurve::xw, PerceptualToneCurve::yw, PerceptualToneCurve::zw; float PerceptualToneCurve::n, PerceptualToneCurve::d, PerceptualToneCurve::nbb, PerceptualToneCurve::ncb, PerceptualToneCurve::cz, PerceptualToneCurve::aw, PerceptualToneCurve::wh, PerceptualToneCurve::pfl, PerceptualToneCurve::fl, PerceptualToneCurve::pow1; void PerceptualToneCurve::init() @@ -2103,7 +2139,7 @@ void PerceptualToneCurve::init() c = 0.69f; nc = 1.00f; - Ciecam02::initcam1float(gamut, yb, 1.f, f, la, xw, yw, zw, n, d, nbb, ncb, + Ciecam02::initcam1float(yb, 1.f, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c); pow1 = pow_F( 1.64f - pow_F( 0.29f, n ), 0.73f ); diff --git a/rtengine/curves.h b/rtengine/curves.h index a9f4b4ace..fe93bcde5 100644 --- a/rtengine/curves.h +++ b/rtengine/curves.h @@ -19,9 +19,12 @@ #ifndef __CURVES_H__ #define __CURVES_H__ -#include #include #include +#include + +#include + #include "rt_math.h" #include "../rtgui/mycurve.h" #include "../rtgui/myflatcurve.h" @@ -42,6 +45,7 @@ using namespace std; namespace rtengine { + class ToneCurve; class ColorAppearance; @@ -55,6 +59,8 @@ void setUnlessOOG(T &r, T &g, T &b, const T &rr, const T &gg, const T &bb) } } +bool sanitizeCurve(std::vector& curve); + namespace curves { inline void setLutVal(const LUTf &lut, float &val) @@ -449,11 +455,11 @@ protected: public: DiagonalCurve (const std::vector& points, int ppn = CURVES_MIN_POLY_POINTS); - virtual ~DiagonalCurve (); + ~DiagonalCurve () override; - double getVal (double t) const; - void getVal (const std::vector& t, std::vector& res) const; - bool isIdentity () const + double getVal (double t) const override; + void getVal (const std::vector& t, std::vector& res) const override; + bool isIdentity () const override { return kind == DCT_Empty; }; @@ -474,12 +480,12 @@ private: public: FlatCurve (const std::vector& points, bool isPeriodic = true, int ppn = CURVES_MIN_POLY_POINTS); - virtual ~FlatCurve (); + ~FlatCurve () override; - double getVal (double t) const; - void getVal (const std::vector& t, std::vector& res) const; + double getVal (double t) const override; + void getVal (const std::vector& t, std::vector& res) const override; bool setIdentityValue (double iVal); - bool isIdentity () const + bool isIdentity () const override { return kind == FCT_Empty; }; @@ -914,7 +920,7 @@ private: static float cf_range[2]; static float cf[1000]; // for ciecam02 - static float f, c, nc, yb, la, xw, yw, zw, gamut; + static float f, c, nc, yb, la, xw, yw, zw; static float n, d, nbb, ncb, cz, aw, wh, pfl, fl, pow1; static void cubic_spline(const float x[], const float y[], const int len, const float out_x[], float out_y[], const int out_len); @@ -1078,11 +1084,12 @@ inline float WeightedStdToneCurve::Triangle(float a, float a1, float b) const #ifdef __SSE2__ inline vfloat WeightedStdToneCurve::Triangle(vfloat a, vfloat a1, vfloat b) const { + vmask eqmask = vmaskf_eq(b, a); vfloat a2 = a1 - a; vmask cmask = vmaskf_lt(b, a); vfloat b3 = vself(cmask, b, F2V(65535.f) - b); vfloat a3 = vself(cmask, a, F2V(65535.f) - a); - return b + a2 * b3 / a3; + return vself(eqmask, a1, b + a2 * b3 / a3); } #endif @@ -1151,9 +1158,9 @@ inline void WeightedStdToneCurve::BatchApply(const size_t start, const size_t en float tmpb[4] ALIGNED16; for (; i + 3 < end; i += 4) { - vfloat r_val = LIMV(LVF(r[i]), ZEROV, c65535v); - vfloat g_val = LIMV(LVF(g[i]), ZEROV, c65535v); - vfloat b_val = LIMV(LVF(b[i]), ZEROV, c65535v); + vfloat r_val = vclampf(LVF(r[i]), ZEROV, c65535v); + vfloat g_val = vclampf(LVF(g[i]), ZEROV, c65535v); + vfloat b_val = vclampf(LVF(b[i]), ZEROV, c65535v); vfloat r1 = lutToneCurve[r_val]; vfloat g1 = Triangle(r_val, r1, g_val); vfloat b1 = Triangle(r_val, r1, b_val); @@ -1166,9 +1173,9 @@ inline void WeightedStdToneCurve::BatchApply(const size_t start, const size_t en vfloat r3 = Triangle(b_val, b3, r_val); vfloat g3 = Triangle(b_val, b3, g_val); - STVF(tmpr[0], LIMV(r1 * zd5v + r2 * zd25v + r3 * zd25v, ZEROV, c65535v)); - STVF(tmpg[0], LIMV(g1 * zd25v + g2 * zd5v + g3 * zd25v, ZEROV, c65535v)); - STVF(tmpb[0], LIMV(b1 * zd25v + b2 * zd25v + b3 * zd5v, ZEROV, c65535v)); + STVF(tmpr[0], vclampf(r1 * zd5v + r2 * zd25v + r3 * zd25v, ZEROV, c65535v)); + STVF(tmpg[0], vclampf(g1 * zd25v + g2 * zd5v + g3 * zd25v, ZEROV, c65535v)); + STVF(tmpb[0], vclampf(b1 * zd25v + b2 * zd25v + b3 * zd5v, ZEROV, c65535v)); for (int j = 0; j < 4; ++j) { setUnlessOOG(r[i+j], g[i+j], b[i+j], tmpr[j], tmpg[j], tmpb[j]); } diff --git a/rtengine/dcp.cc b/rtengine/dcp.cc index c18ee8915..c60e80587 100644 --- a/rtengine/dcp.cc +++ b/rtengine/dcp.cc @@ -419,7 +419,7 @@ std::map getAliases(const Glib::ustring& profile_dir) buffer[read] = 0; cJSON_Minify(buffer.get()); - const std::unique_ptr root(cJSON_Parse(buffer.get())); + const std::unique_ptr root(cJSON_Parse(buffer.get()), cJSON_Delete); if (!root || !root->child) { if (settings->verbose) { std::cout << "Could not parse 'camera_model_aliases.json' file." << std::endl; diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index 035dab2b2..660d65385 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -1,13 +1,8 @@ #ifdef __GNUC__ #pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Warray-bounds" #pragma GCC diagnostic ignored "-Wsign-compare" -#pragma GCC diagnostic ignored "-Wparentheses" #if (__GNUC__ >= 6) #pragma GCC diagnostic ignored "-Wmisleading-indentation" -#if (__GNUC__ >= 7) -#pragma GCC diagnostic ignored "-Wdangling-else" -#endif #endif #endif @@ -23,6 +18,10 @@ /*RT*/#define LOCALTIME /*RT*/#define DJGPP /*RT*/#include "jpeg.h" +/*RT*/#include "lj92.h" +/*RT*/#ifdef _OPENMP +/*RT*/#include +/*RT*/#endif #include #include @@ -30,6 +29,10 @@ //#define BENCHMARK #include "StopWatch.h" +#include +#include + + /* dcraw.c -- Dave Coffin's raw photo decoder Copyright 1997-2018 by Dave Coffin, dcoffin a cybercom o net @@ -1037,10 +1040,11 @@ void CLASS canon_sraw_load_raw() for (row=0; row < height; row++, ip+=width) { if (row & (jh.sraw >> 1)) for (col=0; col < width; col+=2) - for (c=1; c < 3; c++) + for (c=1; c < 3; c++) { if (row == height-1) ip[col][c] = ip[col-width][c]; else ip[col][c] = (ip[col-width][c] + ip[col+width][c] + 1) >> 1; + } for (col=1; col < width; col+=2) for (c=1; c < 3; c++) if (col == width-1) @@ -1124,6 +1128,61 @@ void CLASS ljpeg_idct (struct jhead *jh) FORC(64) jh->idct[c] = CLIP(((float *)work[2])[c]+0.5); } +void CLASS lossless_dnglj92_load_raw() +{ + BENCHFUN + + tiff_bps = 16; + + int save = ifp->pos; + uint16_t *lincurve = !strncmp(make,"Blackmagic",10) ? curve : nullptr; + tile_width = tile_length < INT_MAX ? tile_width : raw_width; + size_t tileCount = raw_width / tile_width; + + size_t dataOffset[tileCount]; + if(tile_length < INT_MAX) { + for (size_t t = 0; t < tileCount; ++t) { + dataOffset[t] = get4(); + } + } else { + dataOffset[0] = ifp->pos; + } + const int data_length = ifp->size; + const std::unique_ptr data(new uint8_t[data_length]); + fseek(ifp, 0, SEEK_SET); + // read whole file + fread(data.get(), 1, data_length, ifp); + lj92 lj; + int newwidth, newheight, newbps; + lj92_open(&lj, &data[dataOffset[0]], data_length, &newwidth, &newheight, &newbps); + lj92_close(lj); + if (newwidth * newheight * tileCount != raw_width * raw_height) { + // not a lj92 file + fseek(ifp, save, SEEK_SET); + lossless_dng_load_raw(); + return; + } + +#ifdef _OPENMP + #pragma omp parallel for num_threads(std::min(tileCount, omp_get_max_threads())) +#endif + for (size_t t = 0; t < tileCount; ++t) { + size_t tcol = t * tile_width; + lj92 lj; + int newwidth, newheight, newbps; + lj92_open(&lj, &data[dataOffset[t]], data_length, &newwidth, &newheight, &newbps); + + const std::unique_ptr target(new uint16_t[newwidth * newheight]); + lj92_decode(lj, target.get(), tile_width, 0, lincurve, 0x1000); + for (int y = 0; y < height; ++y) { + for(int x = 0; x < tile_width; ++x) { + RAW(y, x + tcol) = target[y * tile_width + x]; + } + } + lj92_close(lj); + } +} + void CLASS lossless_dng_load_raw() { unsigned save, trow=0, tcol=0, jwide, jrow, jcol, row, col, i, j; @@ -1170,23 +1229,46 @@ void CLASS lossless_dng_load_raw() } } +static uint32_t DNG_HalfToFloat(uint16_t halfValue); + void CLASS packed_dng_load_raw() { ushort *pixel, *rp; int row, col; + int isfloat = (tiff_nifds == 1 && tiff_ifd[0].sample_format == 3 && (tiff_bps == 16 || tiff_bps == 32)); + if (isfloat) { + float_raw_image = new float[raw_width * raw_height]; + } pixel = (ushort *) calloc (raw_width, tiff_samples*sizeof *pixel); merror (pixel, "packed_dng_load_raw()"); for (row=0; row < raw_height; row++) { - if (tiff_bps == 16) + if (tiff_bps == 16) { read_shorts (pixel, raw_width * tiff_samples); - else { + if (isfloat) { + uint32_t *dst = reinterpret_cast(&float_raw_image[row*raw_width]); + for (col = 0; col < raw_width; col++) { + uint32_t f = DNG_HalfToFloat(pixel[col]); + dst[col] = f; + } + } + } else if (isfloat) { + if (fread(&float_raw_image[row*raw_width], sizeof(float), raw_width, ifp) != raw_width) { + derror(); + } + if ((order == 0x4949) == (ntohs(0x1234) == 0x1234)) { + char *d = reinterpret_cast(float_raw_image); + rtengine::swab(d, d, sizeof(float)*raw_width); + } + } else { getbits(-1); for (col=0; col < raw_width * tiff_samples; col++) pixel[col] = getbits(tiff_bps); } - for (rp=pixel, col=0; col < raw_width; col++) - adobe_copy_pixel (row, col, &rp); + if (!isfloat) { + for (rp=pixel, col=0; col < raw_width; col++) + adobe_copy_pixel (row, col, &rp); + } } free (pixel); } @@ -1244,10 +1326,10 @@ void CLASS nikon_load_raw() if (ver0 == 0x46) tree = 2; if (tiff_bps == 14) tree += 3; read_shorts (vpred[0], 4); - max = 1 << tiff_bps & 0x7fff; + max = 1 << (tiff_bps - (ver0 == 0x44 && ver1 == 0x40 ? 2 : 0)) & 0x7fff; if ((csize = get2()) > 1) step = max / (csize-1); - if (ver0 == 0x44 && ver1 == 0x20 && step > 0) { + if (ver0 == 0x44 && (ver1 == 0x20 || ver1 == 0x40) && step > 0) { for (int i=0; i < csize; i++) curve[i*step] = get2(); for (int i=0; i < max; i++) @@ -2503,6 +2585,7 @@ void CLASS packed_load_raw() bwide = raw_width * tiff_bps / 8; bwide += bwide & load_flags >> 9; + bwide += row_padding; rbits = bwide * 8 - raw_width * tiff_bps; if (load_flags & 1) bwide = bwide * 16 / 15; bite = 8 + (load_flags & 56); @@ -5981,7 +6064,7 @@ int CLASS parse_tiff_ifd (int base) char software[64], *cbuf, *cp; uchar cfa_pat[16], cfa_pc[] = { 0,1,2,3 }, tab[256]; double cc[2][4][4]; - double cm[2][4][3] = {NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN,NAN}; + double cm[2][4][3] = {{{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN}},{{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN},{NAN,NAN,NAN}}}; double cam_xyz[4][3], num; double ab[]={ 1,1,1,1 }, asn[] = { 0,0,0,0 }, xyz[] = { 1,1,1 }; unsigned sony_curve[] = { 0,0,0,0,0,4095 }; @@ -6113,6 +6196,7 @@ int CLASS parse_tiff_ifd (int base) break; case 305: case 11: /* Software */ fgets (software, 64, ifp); + RT_software = software; if (!strncmp(software,"Adobe",5) || !strncmp(software,"dcraw",5) || !strncmp(software,"UFRaw",5) || @@ -6381,6 +6465,7 @@ guess_cfa_pc: case 61450: cblack[4] = cblack[5] = MIN(sqrt(len),64); case 50714: /* BlackLevel */ + RT_blacklevel_from_constant = ThreeValBool::F; if(cblack[4] * cblack[5] == 0) { int dblack[] = { 0,0,0,0 }; black = getreal(type); @@ -6401,9 +6486,11 @@ guess_cfa_pc: for (num=i=0; i < (len & 0xffff); i++) num += getreal(type); black += num/len + 0.5; + RT_blacklevel_from_constant = ThreeValBool::F; break; case 50717: /* WhiteLevel */ maximum = getint(type); + RT_whitelevel_from_constant = ThreeValBool::F; break; case 50718: /* DefaultScale */ pixel_aspect = getreal(type); @@ -6432,6 +6519,14 @@ guess_cfa_pc: xyz[2] = 1 - xyz[0] - xyz[1]; FORC3 xyz[c] /= d65_white[c]; break; + case 50730: /* BaselineExposure */ + if (dng_version) { + double be = getreal(type); + if (!std::isnan(be)) { + RT_baseline_exposure = be; + } + } + break; case 50740: /* DNGPrivateData */ if (dng_version) break; parse_minolta (j = get4()+base); @@ -6541,8 +6636,6 @@ guess_cfa_pc: if (!use_cm) FORCC pre_mul[c] /= cc[cm_D65][c][c]; - RT_from_adobe_dng_converter = !strncmp(software, "Adobe DNG Converter", 19); - return 0; } @@ -6700,8 +6793,13 @@ void CLASS apply_tiff() load_raw = &CLASS packed_load_raw; } else if ((raw_width * 2 * tiff_bps / 16 + 8) * raw_height == tiff_ifd[raw].bytes) { // 14 bit uncompressed from Nikon Z7, still wrong - // each line has 8 padding byte. To inform 'packed_load_raw' about his padding, we have to set load_flags = padding << 9 - load_flags = 8 << 9; + // each line has 8 padding byte. + row_padding = 8; + load_raw = &CLASS packed_load_raw; + } else if ((raw_width * 2 * tiff_bps / 16 + 12) * raw_height == tiff_ifd[raw].bytes) { + // 14 bit uncompressed from Nikon Z6, still wrong + // each line has 12 padding byte. + row_padding = 12; load_raw = &CLASS packed_load_raw; } else load_raw = &CLASS nikon_load_raw; break; @@ -8600,11 +8698,31 @@ void CLASS adobe_coeff (const char *make, const char *model) int i, j; sprintf (name, "%s %s", make, model); + + + // -- RT -------------------------------------------------------------------- + const bool is_pentax_dng = dng_version && !strncmp(RT_software.c_str(), "PENTAX", 6); + // indicate that DCRAW wants these from constants (rather than having loaded these from RAW file + // note: this is simplified so far, in some cases dcraw calls this when it has say the black level + // from file, but then we will not provide any black level in the tables. This case is mainly just + // to avoid loading table values if we have loaded a DNG conversion of a raw file (which already + // have constants stored in the file). + if (RT_whitelevel_from_constant == ThreeValBool::X || is_pentax_dng) { + RT_whitelevel_from_constant = ThreeValBool::T; + } + if (RT_blacklevel_from_constant == ThreeValBool::X || is_pentax_dng) { + RT_blacklevel_from_constant = ThreeValBool::T; + } + if (RT_matrix_from_constant == ThreeValBool::X) { + RT_matrix_from_constant = ThreeValBool::T; + } + // -- RT -------------------------------------------------------------------- + for (i=0; i < sizeof table / sizeof *table; i++) if (!strncmp (name, table[i].prefix, strlen(table[i].prefix))) { - if (table[i].black) black = (ushort) table[i].black; - if (table[i].maximum) maximum = (ushort) table[i].maximum; - if (table[i].trans[0]) { + if (RT_blacklevel_from_constant == ThreeValBool::T && table[i].black) black = (ushort) table[i].black; + if (RT_whitelevel_from_constant == ThreeValBool::T && table[i].maximum) maximum = (ushort) table[i].maximum; + if (RT_matrix_from_constant == ThreeValBool::T && table[i].trans[0]) { for (raw_color = j=0; j < 12; j++) ((double *)cam_xyz)[j] = table[i].trans[j] / 10000.0; cam_xyz_coeff (rgb_cam, cam_xyz); @@ -9076,7 +9194,7 @@ void CLASS identify() parse_fuji (get4()); if (thumb_offset > 120) { fseek (ifp, 120, SEEK_SET); - is_raw += (i = get4()) && 1; + is_raw += (i = get4()) != 0 ? 1 : 0; if (is_raw == 2 && shot_select) parse_fuji (i); } @@ -9280,7 +9398,7 @@ void CLASS identify() switch (tiff_compress) { case 0: case 1: load_raw = &CLASS packed_dng_load_raw; break; - case 7: load_raw = &CLASS lossless_dng_load_raw; break; + case 7: load_raw = (!strncmp(make,"Blackmagic",10) || !strncmp(make,"Canon",5)) ? &CLASS lossless_dnglj92_load_raw : &CLASS lossless_dng_load_raw; break; case 8: load_raw = &CLASS deflate_dng_load_raw; break; case 34892: load_raw = &CLASS lossy_dng_load_raw; break; default: load_raw = 0; @@ -10042,14 +10160,16 @@ bw: colors = 1; dng_skip: if ((use_camera_matrix & (use_camera_wb || dng_version)) && cmatrix[0][0] > 0.125 - && !RT_from_adobe_dng_converter /* RT -- do not use the embedded - * matrices for DNGs coming from the - * Adobe DNG Converter, to ensure - * consistency of WB values between - * DNG-converted and original raw - * files. See #4129 */) { + && strncmp(RT_software.c_str(), "Adobe DNG Converter", 19) != 0 + /* RT -- do not use the embedded + * matrices for DNGs coming from the + * Adobe DNG Converter, to ensure + * consistency of WB values between + * DNG-converted and original raw + * files. See #4129 */) { memcpy (rgb_cam, cmatrix, sizeof cmatrix); - raw_color = 0; +// raw_color = 0; + RT_matrix_from_constant = ThreeValBool::F; } if(!strncmp(make, "Panasonic", 9) && !strncmp(model, "DMC-LX100",9)) adobe_coeff (make, model); @@ -10083,7 +10203,14 @@ dng_skip: if (raw_width < width ) raw_width = width; } if (!tiff_bps) tiff_bps = 12; - if (!maximum) maximum = ((uint64_t)1 << tiff_bps) - 1; // use uint64_t to avoid overflow if tiff_bps == 32 + if (!maximum) { + if (tiff_nifds == 1 && tiff_ifd[0].sample_format == 3) { + // float DNG, default white level is 1.0 + maximum = 1; + } else { + maximum = ((uint64_t)1 << tiff_bps) - 1; // use uint64_t to avoid overflow if tiff_bps == 32 + } + } if (!load_raw || height < 22 || width < 22 || tiff_samples > 6 || colors > 4) is_raw = 0; @@ -10166,8 +10293,8 @@ notraw: /* RT: DNG Float */ -#include -#include +// #include +// #include static void decodeFPDeltaRow(Bytef * src, Bytef * dst, size_t tileWidth, size_t realTileWidth, int bytesps, int factor) { // DecodeDeltaBytes @@ -10199,9 +10326,10 @@ static void decodeFPDeltaRow(Bytef * src, Bytef * dst, size_t tileWidth, size_t } -#ifndef __F16C__ +#if 1 //ndef __F16C__ // From DNG SDK dng_utils.h -static inline uint32_t DNG_HalfToFloat(uint16_t halfValue) { +static //inline +uint32_t DNG_HalfToFloat(uint16_t halfValue) { int32_t sign = (halfValue >> 15) & 0x00000001; int32_t exponent = (halfValue >> 10) & 0x0000001f; int32_t mantissa = halfValue & 0x000003ff; diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h index 9c6ac4aec..96d778815 100644 --- a/rtengine/dcraw.h +++ b/rtengine/dcraw.h @@ -47,7 +47,9 @@ public: ,order(0x4949) ,ifname(nullptr) ,meta_data(nullptr) - ,shot_select(0),multi_out(0) + ,shot_select(0) + ,multi_out(0) + ,row_padding(0) ,float_raw_image(nullptr) ,image(nullptr) ,bright(1.) @@ -55,10 +57,10 @@ public: ,verbose(0) ,use_auto_wb(0),use_camera_wb(0),use_camera_matrix(1) ,output_color(1),output_bps(8),output_tiff(0),med_passes(0),no_auto_bright(0) - ,RT_whitelevel_from_constant(0) - ,RT_blacklevel_from_constant(0) - ,RT_matrix_from_constant(0) - ,RT_from_adobe_dng_converter(false) + ,RT_whitelevel_from_constant(ThreeValBool::X) + ,RT_blacklevel_from_constant(ThreeValBool::X) + ,RT_matrix_from_constant(ThreeValBool::X) + ,RT_baseline_exposure(0) ,getbithuff(this,ifp,zero_after_ff) ,nikbithuff(ifp) { @@ -88,7 +90,7 @@ protected: unsigned tiff_nifds, tiff_samples, tiff_bps, tiff_compress; unsigned black, cblack[4102], maximum, mix_green, raw_color, zero_is_bad; unsigned zero_after_ff, is_raw, dng_version, is_foveon, data_error; - unsigned tile_width, tile_length, gpsdata[32], load_flags; + unsigned tile_width, tile_length, gpsdata[32], load_flags, row_padding; bool xtransCompressed = false; struct fuji_compressed_params { @@ -150,10 +152,12 @@ protected: int output_color, output_bps, output_tiff, med_passes; int no_auto_bright; unsigned greybox[4] ; - int RT_whitelevel_from_constant; - int RT_blacklevel_from_constant; - int RT_matrix_from_constant; - bool RT_from_adobe_dng_converter; + enum class ThreeValBool { X = -1, F, T }; + ThreeValBool RT_whitelevel_from_constant; + ThreeValBool RT_blacklevel_from_constant; + ThreeValBool RT_matrix_from_constant; + std::string RT_software; + double RT_baseline_exposure; float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4]; @@ -257,7 +261,7 @@ getbithuff_t getbithuff; class nikbithuff_t { public: - nikbithuff_t(IMFILE *&i):bitbuf(0),errors(0),vbits(0),ifp(i){} + explicit nikbithuff_t(IMFILE *&i):bitbuf(0),errors(0),vbits(0),ifp(i){} void operator()() {bitbuf = vbits = 0;}; unsigned operator()(int nbits, ushort *huff); unsigned errorCount() { return errors; } @@ -290,6 +294,7 @@ void ljpeg_idct (struct jhead *jh); void canon_sraw_load_raw(); void adobe_copy_pixel (unsigned row, unsigned col, ushort **rp); void lossless_dng_load_raw(); +void lossless_dnglj92_load_raw(); void packed_dng_load_raw(); void deflate_dng_load_raw(); void init_fuji_compr(struct fuji_compressed_params* info); @@ -338,7 +343,7 @@ void parse_qt (int end); // ph1_bithuff(int nbits, ushort *huff); class ph1_bithuff_t { public: - ph1_bithuff_t(DCraw *p, IMFILE *i, short &o):parent(p),order(o),ifp(i),bitbuf(0),vbits(0){} + ph1_bithuff_t(DCraw *p, IMFILE *i, short &o):order(o),ifp(i),bitbuf(0),vbits(0){} unsigned operator()(int nbits, ushort *huff); unsigned operator()(int nbits); unsigned operator()(); @@ -371,7 +376,6 @@ private: } } - DCraw *parent; short ℴ IMFILE* const ifp; UINT64 bitbuf; @@ -423,6 +427,7 @@ void kodak_thumb_load_raw(); // sony_decrypt(unsigned *data, int len, int start, int key); class sony_decrypt_t{ public: + explicit sony_decrypt_t() : p(0) {} void operator()(unsigned *data, int len, int start, int key); private: unsigned pad[128], p; diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 3b1ebfdab..e49e03329 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -692,7 +692,7 @@ void Crop::update(int todo) std::unique_ptr fattalCrop; - if ((todo & M_HDR) && params.fattal.enabled) { + if ((todo & M_HDR) && (params.fattal.enabled || params.dehaze.enabled)) { Imagefloat *f = origCrop; int fw = skips(parent->fw, skip); int fh = skips(parent->fh, skip); @@ -741,6 +741,7 @@ void Crop::update(int todo) } if (need_fattal) { + parent->ipf.dehaze(f); parent->ipf.ToneMapFattal02(f); } @@ -807,59 +808,34 @@ void Crop::update(int todo) } - if (todo & (M_AUTOEXP | M_RGBCURVE)) { + if (todo & M_RGBCURVE) { + Imagefloat *workingCrop = baseCrop; + if (params.icm.workingTRC == "Custom") { //exec TRC IN free - Glib::ustring profile; - profile = params.icm.workingProfile; + const Glib::ustring 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") { - + const int cw = baseCrop->getWidth(); + const int ch = baseCrop->getHeight(); + workingCrop = new Imagefloat(cw, ch); //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; - + parent->ipf.workingtrc(baseCrop, workingCrop, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, parent->getCustomTransformIn(), true, false, true); //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; + parent->ipf.workingtrc(workingCrop, workingCrop, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, parent->getCustomTransformOut(), false, true, true); } } - } - - if (todo & M_RGBCURVE) { double rrm, ggm, bbm; DCPProfile::ApplyState as; DCPProfile *dcpProf = parent->imgsrc->getDCP(params.icm, as); LUTu histToneCurve; - parent->ipf.rgbProc (baseCrop, laboCrop, this, parent->hltonecurve, parent->shtonecurve, parent->tonecurve, + parent->ipf.rgbProc (workingCrop, 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); + if (workingCrop != baseCrop) { + delete workingCrop; + } } /*xref=000;yref=000; @@ -893,9 +869,10 @@ void Crop::update(int todo) bool cclutili = parent->cclutili; 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.labColorCorrectionRegions(labnCrop); if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { parent->ipf.EPDToneMap(labnCrop, 5, skip); @@ -1011,6 +988,8 @@ void Crop::update(int todo) parent->ipf.ip_wavelet(labnCrop, labnCrop, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, parent->wavclCurve, skip); } + parent->ipf.softLight(labnCrop); + // } // } @@ -1096,10 +1075,6 @@ void Crop::update(int todo) void Crop::freeAll() { - if (settings->verbose) { - printf("freeallcrop starts %d\n", (int)cropAllocated); - } - if (cropAllocated) { if (origCrop) { delete origCrop; @@ -1159,10 +1134,6 @@ bool check_need_larger_crop_for_lcp_distortion(int fw, int fh, int x, int y, int bool Crop::setCropSizes(int rcx, int rcy, int rcw, int rch, int skip, bool internal) { - if (settings->verbose) { - printf("setcropsizes before lock\n"); - } - if (!internal) { cropMutex.lock(); } @@ -1254,10 +1225,6 @@ bool Crop::setCropSizes(int rcx, int rcy, int rcw, int rch, int skip, bool inter 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); - } - EditType editType = ET_PIPETTE; if (const auto editProvider = PipetteBuffer::getDataProvider()) { @@ -1322,10 +1289,6 @@ bool Crop::setCropSizes(int rcx, int rcy, int rcw, int rch, int skip, bool inter cropx = bx1; cropy = by1; - if (settings->verbose) { - printf("setsizes ends\n"); - } - if (!internal) { cropMutex.unlock(); } diff --git a/rtengine/dcrop.h b/rtengine/dcrop.h index efd4a399a..04274ca0c 100644 --- a/rtengine/dcrop.h +++ b/rtengine/dcrop.h @@ -71,12 +71,12 @@ protected: public: Crop (ImProcCoordinator* parent, EditDataProvider *editDataProvider, bool isDetailWindow); - virtual ~Crop (); + ~Crop () override; void setEditSubscriber(EditSubscriber* newSubscriber); bool hasListener(); void update (int todo); - void setWindow (int cropX, int cropY, int cropW, int cropH, int skip) + void setWindow (int cropX, int cropY, int cropW, int cropH, int skip) override { setCropSizes (cropX, cropY, cropW, cropH, skip, false); } @@ -84,12 +84,12 @@ public: /** @brief Synchronously look out if a full update is necessary * First try, only make fullUpdate if this returns false */ - bool tryUpdate (); + bool tryUpdate () override; /** @brief Asynchronously reprocess the detailed crop */ - void fullUpdate (); // called via thread + void fullUpdate () override; // called via thread - void setListener (DetailedCropListener* il); - void destroy (); + void setListener (DetailedCropListener* il) override; + void destroy () override; int get_skip(); int getLeftBorder(); int getUpperBorder(); diff --git a/rtengine/demosaic_algos.cc b/rtengine/demosaic_algos.cc index 10ef0dd0e..aa763f01f 100644 --- a/rtengine/demosaic_algos.cc +++ b/rtengine/demosaic_algos.cc @@ -1399,7 +1399,7 @@ void RawImageSource::lmmse_interpolate_omp(int winw, int winh, array2D &r // Adapted to RawTherapee by Jacques Desmis 3/2013 // SSE version by Ingo Weyrich 5/2013 #ifdef __SSE2__ -#define CLIPV(a) LIMV(a,zerov,c65535v) +#define CLIPV(a) vclampf(a,zerov,c65535v) void RawImageSource::igv_interpolate(int winw, int winh) { static const float eps = 1e-5f, epssq = 1e-5f; //mod epssq -10f =>-5f Jacques 3/2013 to prevent artifact (divide by zero) @@ -1425,8 +1425,6 @@ void RawImageSource::igv_interpolate(int winw, int winh) chr[2] = hdif; chr[3] = vdif; - border_interpolate2(winw, winh, 7, rawData, red, green, blue); - if (plistener) { plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::IGV))); plistener->setProgress (0.0); @@ -1513,10 +1511,10 @@ void RawImageSource::igv_interpolate(int winw, int winh) //N,E,W,S Hamilton Adams Interpolation // (48.f * 65535.f) = 3145680.f tempv = c40v * LVFU(rgb[0][indx1]); - nvv = LIMV(((c23v * LVFU(rgb[1][(indx - v1) >> 1]) + c23v * LVFU(rgb[1][(indx - v3) >> 1]) + LVFU(rgb[1][(indx - v5) >> 1]) + LVFU(rgb[1][(indx + v1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 - v1)]) - c8v * LVFU(rgb[0][(indx1 - v2)]))) / c3145680v, zerov, onev); - evv = LIMV(((c23v * LVFU(rgb[1][(indx + h1) >> 1]) + c23v * LVFU(rgb[1][(indx + h3) >> 1]) + LVFU(rgb[1][(indx + h5) >> 1]) + LVFU(rgb[1][(indx - h1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 + h1)]) - c8v * LVFU(rgb[0][(indx1 + h2)]))) / c3145680v, zerov, onev); - wvv = LIMV(((c23v * LVFU(rgb[1][(indx - h1) >> 1]) + c23v * LVFU(rgb[1][(indx - h3) >> 1]) + LVFU(rgb[1][(indx - h5) >> 1]) + LVFU(rgb[1][(indx + h1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 - h1)]) - c8v * LVFU(rgb[0][(indx1 - h2)]))) / c3145680v, zerov, onev); - svv = LIMV(((c23v * LVFU(rgb[1][(indx + v1) >> 1]) + c23v * LVFU(rgb[1][(indx + v3) >> 1]) + LVFU(rgb[1][(indx + v5) >> 1]) + LVFU(rgb[1][(indx - v1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 + v1)]) - c8v * LVFU(rgb[0][(indx1 + v2)]))) / c3145680v, zerov, onev); + nvv = vclampf(((c23v * LVFU(rgb[1][(indx - v1) >> 1]) + c23v * LVFU(rgb[1][(indx - v3) >> 1]) + LVFU(rgb[1][(indx - v5) >> 1]) + LVFU(rgb[1][(indx + v1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 - v1)]) - c8v * LVFU(rgb[0][(indx1 - v2)]))) / c3145680v, zerov, onev); + evv = vclampf(((c23v * LVFU(rgb[1][(indx + h1) >> 1]) + c23v * LVFU(rgb[1][(indx + h3) >> 1]) + LVFU(rgb[1][(indx + h5) >> 1]) + LVFU(rgb[1][(indx - h1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 + h1)]) - c8v * LVFU(rgb[0][(indx1 + h2)]))) / c3145680v, zerov, onev); + wvv = vclampf(((c23v * LVFU(rgb[1][(indx - h1) >> 1]) + c23v * LVFU(rgb[1][(indx - h3) >> 1]) + LVFU(rgb[1][(indx - h5) >> 1]) + LVFU(rgb[1][(indx + h1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 - h1)]) - c8v * LVFU(rgb[0][(indx1 - h2)]))) / c3145680v, zerov, onev); + svv = vclampf(((c23v * LVFU(rgb[1][(indx + v1) >> 1]) + c23v * LVFU(rgb[1][(indx + v3) >> 1]) + LVFU(rgb[1][(indx + v5) >> 1]) + LVFU(rgb[1][(indx - v1) >> 1]) + tempv - c32v * LVFU(rgb[0][(indx1 + v1)]) - c8v * LVFU(rgb[0][(indx1 + v2)]))) / c3145680v, zerov, onev); //Horizontal and vertical color differences tempv = LVFU( rgb[0][indx1] ) / c65535v; _mm_storeu_ps( &vdif[indx1], (sgv * nvv + ngv * svv) / (ngv + sgv) - tempv ); @@ -1561,9 +1559,9 @@ void RawImageSource::igv_interpolate(int winw, int winh) for (col = 7 + (FC(row, 1) & 1), indx1 = (row * width + col) >> 1, d = FC(row, col) / 2; col < width - 14; col += 8, indx1 += 4) { //H&V integrated gaussian vector over variance on color differences //Mod Jacques 3/2013 - ngv = LIMV(epssqv + c78v * SQRV(LVFU(vdif[indx1])) + c69v * (SQRV(LVFU(vdif[indx1 - v1])) + SQRV(LVFU(vdif[indx1 + v1]))) + c51v * (SQRV(LVFU(vdif[indx1 - v2])) + SQRV(LVFU(vdif[indx1 + v2]))) + c21v * (SQRV(LVFU(vdif[indx1 - v3])) + SQRV(LVFU(vdif[indx1 + v3]))) - c6v * SQRV(LVFU(vdif[indx1 - v1]) + LVFU(vdif[indx1]) + LVFU(vdif[indx1 + v1])) + ngv = vclampf(epssqv + c78v * SQRV(LVFU(vdif[indx1])) + c69v * (SQRV(LVFU(vdif[indx1 - v1])) + SQRV(LVFU(vdif[indx1 + v1]))) + c51v * (SQRV(LVFU(vdif[indx1 - v2])) + SQRV(LVFU(vdif[indx1 + v2]))) + c21v * (SQRV(LVFU(vdif[indx1 - v3])) + SQRV(LVFU(vdif[indx1 + v3]))) - c6v * SQRV(LVFU(vdif[indx1 - v1]) + LVFU(vdif[indx1]) + LVFU(vdif[indx1 + v1])) - c10v * (SQRV(LVFU(vdif[indx1 - v2]) + LVFU(vdif[indx1 - v1]) + LVFU(vdif[indx1])) + SQRV(LVFU(vdif[indx1]) + LVFU(vdif[indx1 + v1]) + LVFU(vdif[indx1 + v2]))) - c7v * (SQRV(LVFU(vdif[indx1 - v3]) + LVFU(vdif[indx1 - v2]) + LVFU(vdif[indx1 - v1])) + SQRV(LVFU(vdif[indx1 + v1]) + LVFU(vdif[indx1 + v2]) + LVFU(vdif[indx1 + v3]))), zerov, onev); - egv = LIMV(epssqv + c78v * SQRV(LVFU(hdif[indx1])) + c69v * (SQRV(LVFU(hdif[indx1 - h1])) + SQRV(LVFU(hdif[indx1 + h1]))) + c51v * (SQRV(LVFU(hdif[indx1 - h2])) + SQRV(LVFU(hdif[indx1 + h2]))) + c21v * (SQRV(LVFU(hdif[indx1 - h3])) + SQRV(LVFU(hdif[indx1 + h3]))) - c6v * SQRV(LVFU(hdif[indx1 - h1]) + LVFU(hdif[indx1]) + LVFU(hdif[indx1 + h1])) + egv = vclampf(epssqv + c78v * SQRV(LVFU(hdif[indx1])) + c69v * (SQRV(LVFU(hdif[indx1 - h1])) + SQRV(LVFU(hdif[indx1 + h1]))) + c51v * (SQRV(LVFU(hdif[indx1 - h2])) + SQRV(LVFU(hdif[indx1 + h2]))) + c21v * (SQRV(LVFU(hdif[indx1 - h3])) + SQRV(LVFU(hdif[indx1 + h3]))) - c6v * SQRV(LVFU(hdif[indx1 - h1]) + LVFU(hdif[indx1]) + LVFU(hdif[indx1 + h1])) - c10v * (SQRV(LVFU(hdif[indx1 - h2]) + LVFU(hdif[indx1 - h1]) + LVFU(hdif[indx1])) + SQRV(LVFU(hdif[indx1]) + LVFU(hdif[indx1 + h1]) + LVFU(hdif[indx1 + h2]))) - c7v * (SQRV(LVFU(hdif[indx1 - h3]) + LVFU(hdif[indx1 - h2]) + LVFU(hdif[indx1 - h1])) + SQRV(LVFU(hdif[indx1 + h1]) + LVFU(hdif[indx1 + h2]) + LVFU(hdif[indx1 + h3]))), zerov, onev); //Limit chrominance using H/V neighbourhood nvv = median(d725v * LVFU(vdif[indx1]) + d1375v * LVFU(vdif[indx1 - v1]) + d1375v * LVFU(vdif[indx1 + v1]), LVFU(vdif[indx1 - v1]), LVFU(vdif[indx1 + v1])); @@ -1781,6 +1779,7 @@ void RawImageSource::igv_interpolate(int winw, int winh) } } }// End of parallelization + border_interpolate2(winw, winh, 8, rawData, red, green, blue); if (plistener) { plistener->setProgress (1.0); @@ -1815,8 +1814,6 @@ void RawImageSource::igv_interpolate(int winw, int winh) vdif = (float (*)) calloc(width * height / 2, sizeof * vdif); hdif = (float (*)) calloc(width * height / 2, sizeof * hdif); - border_interpolate2(winw, winh, 7, rawData, red, green, blue); - if (plistener) { plistener->setProgressStr (Glib::ustring::compose(M("TP_RAW_DMETHOD_PROGRESSBAR"), RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::IGV))); plistener->setProgress (0.0); @@ -2045,6 +2042,8 @@ void RawImageSource::igv_interpolate(int winw, int winh) blue [row][col] = CLIP(rgb[1][indx] - 65535.f * chr[1][indx]); } }// End of parallelization + border_interpolate2(winw, winh, 8, rawData, red, green, blue); + if (plistener) { plistener->setProgress (1.0); @@ -2114,7 +2113,7 @@ void RawImageSource::nodemosaic(bool bw) */ #ifdef __SSE2__ -#define CLIPV(a) LIMV(a,ZEROV,c65535v) +#define CLIPV(a) vclampf(a,ZEROV,c65535v) #endif void RawImageSource::refinement(int PassCount) { @@ -3083,6 +3082,7 @@ BENCHFUN free(buffer0); } + border_interpolate2(W, H, 1, rawData, red, green, blue); if(plistener) { plistener->setProgress (1.0); } diff --git a/rtengine/diagonalcurves.cc b/rtengine/diagonalcurves.cc index f478ba719..b4c88fd68 100644 --- a/rtengine/diagonalcurves.cc +++ b/rtengine/diagonalcurves.cc @@ -48,7 +48,7 @@ DiagonalCurve::DiagonalCurve (const std::vector& p, int poly_pn) bool identity = true; kind = (DiagonalCurveType)p[0]; - if (kind == DCT_Linear || kind == DCT_Spline || kind == DCT_NURBS) { + if (kind == DCT_Linear || kind == DCT_Spline || kind == DCT_NURBS || kind == DCT_CatumullRom) { N = (p.size() - 1) / 2; x = new double[N]; y = new double[N]; @@ -86,11 +86,12 @@ DiagonalCurve::DiagonalCurve (const std::vector& p, int poly_pn) if (!identity) { if (kind == DCT_Spline && N > 2) { - //spline_cubic_set (); - catmull_rom_set(); + spline_cubic_set (); } else if (kind == DCT_NURBS && N > 2) { NURBS_set (); fillHash(); + } else if (kind == DCT_CatumullRom && N > 2) { + catmull_rom_set(); } else { kind = DCT_Linear; } @@ -325,6 +326,9 @@ inline void catmull_rom_spline(int n_points, if (p1_y == p2_y && (p1_y == 0 || p1_y == 1)) { for (i = 1; i < n_points-1; ++i) { t = p1_x + space * i; + if (t >= p2_x) { + break; + } res_x.push_back(t); res_y.push_back(p1_y); } @@ -459,7 +463,7 @@ double DiagonalCurve::getVal (double t) const } case DCT_Linear : - // case DCT_Spline : + case DCT_Spline : { // values under and over the first and last point if (t > x[N - 1]) { @@ -484,21 +488,21 @@ double DiagonalCurve::getVal (double t) const double h = x[k_hi] - x[k_lo]; // linear - // if (kind == DCT_Linear) { + if (kind == DCT_Linear) { return y[k_lo] + (t - x[k_lo]) * ( y[k_hi] - y[k_lo] ) / h; - // } - // // spline curve - // else { // if (kind==Spline) { - // double a = (x[k_hi] - t) / h; - // double b = (t - x[k_lo]) / h; - // double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666; - // return CLIPD(r); - // } + } + // spline curve + else { // if (kind==Spline) { + double a = (x[k_hi] - t) / h; + double b = (t - x[k_lo]) / h; + double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666; + return CLIPD(r); + } break; } - case DCT_Spline: { + case DCT_CatumullRom: { auto it = std::lower_bound(poly_x.begin(), poly_x.end(), t); if (it == poly_x.end()) { return poly_y.back(); diff --git a/rtengine/dirpyr_equalizer.cc b/rtengine/dirpyr_equalizer.cc index 69c01be8c..5e33fd3b3 100644 --- a/rtengine/dirpyr_equalizer.cc +++ b/rtengine/dirpyr_equalizer.cc @@ -44,10 +44,6 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt { int lastlevel = maxlevel; - if(settings->verbose) { - printf("Dirpyr scaleprev=%i\n", scaleprev); - } - float atten123 = (float) settings->level123_cbdl; if(atten123 > 50.f) { @@ -105,10 +101,6 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt } - if(settings->verbose) { - printf("CbDL mult0=%f 1=%f 2=%f 3=%f 4=%f 5=%f\n", multi[0], multi[1], multi[2], multi[3], multi[4], multi[5]); - } - multi_array2D dirpyrlo (srcwidth, srcheight); level = 0; @@ -191,7 +183,7 @@ void ImProcFunctions :: dirpyr_equalizer(float ** src, float ** dst, int srcwidt int j; for(j = 0; j < srcwidth - 3; j += 4) { - _mm_storeu_ps(&tmpChr[i][j], _mm_sqrt_ps(SQRV(LVFU(l_b[i][j])) + SQRV(LVFU(l_a[i][j]))) / div); + _mm_storeu_ps(&tmpChr[i][j], vsqrtf(SQRV(LVFU(l_b[i][j])) + SQRV(LVFU(l_a[i][j]))) / div); } for(; j < srcwidth; j++) { diff --git a/rtengine/eahd_demosaic.cc b/rtengine/eahd_demosaic.cc index aef016386..816f4bf55 100644 --- a/rtengine/eahd_demosaic.cc +++ b/rtengine/eahd_demosaic.cc @@ -163,7 +163,7 @@ inline void RawImageSource::interpolate_row_rb (float* ar, float* ab, float* pg, n++; } - nonGreen2[j] = cg[j] + nonGreen / n; + nonGreen2[j] = cg[j] + nonGreen / std::max(n, 1); // linear R-G interp. horizontally float val1; @@ -206,7 +206,7 @@ inline void RawImageSource::interpolate_row_rb (float* ar, float* ab, float* pg, n++; } - nonGreen2[j] = cg[j] + nonGreen / n; + nonGreen2[j] = cg[j] + nonGreen / std::max(n, 1); } } diff --git a/rtengine/fast_demo.cc b/rtengine/fast_demo.cc index cab38b1f2..e88661485 100644 --- a/rtengine/fast_demo.cc +++ b/rtengine/fast_demo.cc @@ -364,7 +364,7 @@ void RawImageSource::fast_demosaic() for (int j = left + 1, cc = 1; j < right - 1; j += 4, cc += 4) { //interpolate B/R colors at R/B sites _mm_storeu_ps(&bluetile[rr * TS + cc], LVFU(greentile[rr * TS + cc]) - zd25v * ((LVFU(greentile[(rr - 1)*TS + (cc - 1)]) + LVFU(greentile[(rr - 1)*TS + (cc + 1)]) + LVFU(greentile[(rr + 1)*TS + cc + 1]) + LVFU(greentile[(rr + 1)*TS + cc - 1])) - - _mm_min_ps(clip_ptv, LVFU(rawData[i - 1][j - 1]) + LVFU(rawData[i - 1][j + 1]) + LVFU(rawData[i + 1][j + 1]) + LVFU(rawData[i + 1][j - 1])))); + vminf(LVFU(rawData[i - 1][j - 1]) + LVFU(rawData[i - 1][j + 1]) + LVFU(rawData[i + 1][j + 1]) + LVFU(rawData[i + 1][j - 1]), clip_ptv))); } #else @@ -381,7 +381,7 @@ void RawImageSource::fast_demosaic() for (int j = left + 1, cc = 1; j < right - 1; j += 4, cc += 4) { //interpolate B/R colors at R/B sites _mm_storeu_ps(&redtile[rr * TS + cc], LVFU(greentile[rr * TS + cc]) - zd25v * ((LVFU(greentile[(rr - 1)*TS + cc - 1]) + LVFU(greentile[(rr - 1)*TS + cc + 1]) + LVFU(greentile[(rr + 1)*TS + cc + 1]) + LVFU(greentile[(rr + 1)*TS + cc - 1])) - - _mm_min_ps(clip_ptv, LVFU(rawData[i - 1][j - 1]) + LVFU(rawData[i - 1][j + 1]) + LVFU(rawData[i + 1][j + 1]) + LVFU(rawData[i + 1][j - 1])))); + vminf(LVFU(rawData[i - 1][j - 1]) + LVFU(rawData[i - 1][j + 1]) + LVFU(rawData[i + 1][j + 1]) + LVFU(rawData[i + 1][j - 1]), clip_ptv))); } #else diff --git a/rtengine/gamutwarning.cc b/rtengine/gamutwarning.cc index 84b4b3c08..c76e2a285 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("RTv4_ACES-AP0"); + cmsHPROFILE aces = ICCStore::getInstance()->workingSpace("ACESp0"); 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); @@ -81,6 +81,10 @@ void GamutWarning::markLine(Image8 *image, int y, float *srcbuf, float *buf1, fl float delta_max = lab2ref ? 0.0001f : 4.9999f; cmsDoTransform(lab2softproof, srcbuf, buf2, width); + // since we are checking for out-of-gamut, we do want to clamp here! + for (int i = 0; i < width * 3; ++i) { + buf2[i] = LIM01(buf2[i]); + } cmsDoTransform(softproof2ref, buf2, buf1, width); float *proofdata = buf1; diff --git a/rtengine/gauss.cc b/rtengine/gauss.cc index ab080a3c4..b7de67851 100644 --- a/rtengine/gauss.cc +++ b/rtengine/gauss.cc @@ -1143,7 +1143,7 @@ template void gaussianBlurImpl(T** src, T** dst, const int W, const int { static constexpr auto GAUSS_SKIP = 0.25; static constexpr auto GAUSS_3X3_LIMIT = 0.6; - static constexpr auto GAUSS_DOUBLE = 70.0; + static constexpr auto GAUSS_DOUBLE = 25.0; if(buffer) { // special variant for very large sigma, currently only used by retinex algorithm diff --git a/rtengine/guidedfilter.cc b/rtengine/guidedfilter.cc index f6b702a73..790245b20 100644 --- a/rtengine/guidedfilter.cc +++ b/rtengine/guidedfilter.cc @@ -52,11 +52,39 @@ namespace rtengine { #endif +namespace { + +int calculate_subsampling(int w, int h, int r) +{ + if (r == 1) { + return 1; + } + + if (max(w, h) <= 600) { + return 1; + } + + for (int s = 5; s > 0; --s) { + if (r % s == 0) { + return s; + } + } + + return LIM(r / 2, 2, 4); +} + +} // namespace + + void guidedFilter(const array2D &guide, const array2D &src, array2D &dst, int r, float epsilon, bool multithread, int subsampling) { const int W = src.width(); const int H = src.height(); + if (subsampling <= 0) { + subsampling = calculate_subsampling(W, H, r); + } + enum Op { MUL, DIVEPSILON, ADD, SUB, ADDMUL, SUBMUL }; const auto apply = @@ -107,11 +135,14 @@ void guidedFilter(const array2D &guide, const array2D &src, array2 const array2D &p = src; array2D &q = dst; + AlignedBuffer blur_buf(I.width() * I.height()); const auto f_mean = - [](array2D &d, array2D &s, int rad) -> void + [&](array2D &d, array2D &s, int rad) -> void { rad = LIM(rad, 0, (min(s.width(), s.height()) - 1) / 2 - 1); - boxblur(s, d, rad, rad, s.width(), s.height()); + float **src = s; + float **dst = d; + boxblur(src, dst, blur_buf.data, rad, rad, s.width(), s.height()); }; const auto f_subsample = @@ -184,7 +215,7 @@ void guidedFilter(const array2D &guide, const array2D &src, array2 f_upsample(meanA, meana); DEBUG_DUMP(meanA); - array2D &meanB = q; + array2D meanB(W, H); f_upsample(meanB, meanb); DEBUG_DUMP(meanB); diff --git a/rtengine/guidedfilter.h b/rtengine/guidedfilter.h index 3f987f80e..6691af251 100644 --- a/rtengine/guidedfilter.h +++ b/rtengine/guidedfilter.h @@ -24,6 +24,6 @@ namespace rtengine { -void guidedFilter(const array2D &guide, const array2D &src, array2D &dst, int r, float epsilon, bool multithread, int subsampling=4); +void guidedFilter(const array2D &guide, const array2D &src, array2D &dst, int r, float epsilon, bool multithread, int subsampling=0); } // namespace rtengine diff --git a/rtengine/helpersse2.h b/rtengine/helpersse2.h index 46af3aa89..74780cf48 100644 --- a/rtengine/helpersse2.h +++ b/rtengine/helpersse2.h @@ -157,10 +157,14 @@ static INLINE vfloat vsqrtf(vfloat x) } static INLINE vfloat vmaxf(vfloat x, vfloat y) { + // _mm_max_ps(x, y) returns y if x is NaN + // don't change the order of the parameters return _mm_max_ps(x, y); } static INLINE vfloat vminf(vfloat x, vfloat y) { + // _mm_min_ps(x, y) returns y if x is NaN + // don't change the order of the parameters return _mm_min_ps(x, y); } diff --git a/rtengine/histmatching.cc b/rtengine/histmatching.cc index b2fe436fd..1b6dd133f 100644 --- a/rtengine/histmatching.cc +++ b/rtengine/histmatching.cc @@ -97,55 +97,6 @@ int findMatch(int val, const std::vector &cdf, int j) } -class CubicSplineCurve: public DiagonalCurve { -public: - CubicSplineCurve(const std::vector &points): - DiagonalCurve({DCT_Linear}) - { - N = points.size() / 2; - x = new double[N]; - y = new double[N]; - - for (int i = 0; i < N; ++i) { - x[i] = points[2*i]; - y[i] = points[2*i+1]; - } - kind = DCT_Spline; - spline_cubic_set(); - } - - double getVal(double t) const - { - // values under and over the first and last point - if (t > x[N - 1]) { - return y[N - 1]; - } else if (t < x[0]) { - return y[0]; - } - - // do a binary search for the right interval: - unsigned int k_lo = 0, k_hi = N - 1; - - while (k_hi > 1 + k_lo) { - unsigned int k = (k_hi + k_lo) / 2; - - if (x[k] > t) { - k_hi = k; - } else { - k_lo = k; - } - } - - double h = x[k_hi] - x[k_lo]; - - double a = (x[k_hi] - t) / h; - double b = (t - x[k_lo]) / h; - double r = a * y[k_lo] + b * y[k_hi] + ((a * a * a - a) * ypp[k_lo] + (b * b * b - b) * ypp[k_hi]) * (h * h) * 0.1666666666666666666666666666666; - return LIM01(r); - } -}; - - void mappingToCurve(const std::vector &mapping, std::vector &curve) { curve.clear(); @@ -216,14 +167,54 @@ void mappingToCurve(const std::vector &mapping, std::vector &curve) curve.push_back(1.0); curve.push_back(1.0); + + // we assume we are matching an S-shaped curve, so try to avoid + // concavities in the upper part of the S + const auto getpos = + [](float x, float xa, float ya, float xb, float yb) + { + // line equation: + // (x - xa) / (xb - xa) = (y - ya) / (yb - ya) + return (x - xa) / (xb - xa) * (yb - ya) + ya; + }; + idx = -1; + for (size_t i = curve.size()-1; i > 0; i -= 2) { + if (curve[i] <= 0.f) { + idx = i+1; + break; + } + } + if (idx >= 0 && size_t(idx) < curve.size()) { + // idx is the position of the first point in the upper part of the S + // for each 3 consecutive points (xa, ya), (x, y), (xb, yb) we check + // that y is above the point at x of the line between the other two + // if this is not the case, we remove (x, y) from the curve + while (size_t(idx+5) < curve.size()) { + float xa = curve[idx]; + float ya = curve[idx+1]; + float x = curve[idx+2]; + float y = curve[idx+3]; + float xb = curve[idx+4]; + float yb = curve[idx+5]; + float yy = getpos(x, xa, ya, xb, yb); + if (yy > y) { + // we have to remove (x, y) from the curve + curve.erase(curve.begin()+(idx+2), curve.begin()+(idx+4)); + } else { + // move on to the next point + idx += 2; + } + } + } if (curve.size() < 4) { curve = { DCT_Linear }; // not enough points, fall back to linear } else { - CubicSplineCurve c(curve); + curve.insert(curve.begin(), DCT_Spline); + DiagonalCurve c(curve); double gap = 0.05; double x = 0.0; - curve = { DCT_Spline }; + curve = { DCT_CatumullRom }; while (x < 1.0) { curve.push_back(x); curve.push_back(c.getVal(x)); diff --git a/rtengine/iccstore.cc b/rtengine/iccstore.cc index 4d490c0a0..33972075c 100644 --- a/rtengine/iccstore.cc +++ b/rtengine/iccstore.cc @@ -38,6 +38,8 @@ #include "../rtgui/threadutils.h" #include "lcms2_plugin.h" +#include "color.h" + #include "cJSON.h" #define inkc_constant 0x696E6B43 namespace rtengine @@ -208,8 +210,85 @@ const char* wpnames[] = {"sRGB", "Adobe RGB", "ProPhoto", "WideGamut", "BruceRGB // high g=1.3 s=3.35 for high dynamic images //low g=2.6 s=6.9 for low contrast images +//----------------------------------------------------------------------------- +// helper functions to fix V2 profiles TRCs, used in +// rtengine::ProfileContent::toProfile() +// see https://github.com/Beep6581/RawTherapee/issues/5026 +// ----------------------------------------------------------------------------- +bool is_RTv2_profile(cmsHPROFILE profile) +{ + if (int(cmsGetProfileVersion(profile)) != 2) { + return false; + } + const cmsMLU *mlu = static_cast(cmsReadTag(profile, cmsSigDeviceMfgDescTag)); + if (!mlu) { + return false; + } + cmsUInt32Number sz = cmsMLUgetASCII(mlu, "en", "US", nullptr, 0); + if (!sz) { + return false; + } + std::vector buf(sz); + cmsMLUgetASCII(mlu, "en", "US", &buf[0], sz); + buf.back() = 0; // sanity + return strcmp(&buf[0], "RawTherapee") == 0; } + +bool get_RT_gamma_slope(cmsHPROFILE profile, double &gammatag, double &slopetag) +{ + const cmsMLU *modelDescMLU = static_cast(cmsReadTag(profile, cmsSigDeviceModelDescTag)); + if (modelDescMLU) { + cmsUInt32Number count = cmsMLUgetWide(modelDescMLU, "en", "US", nullptr, 0); + if (count) { + std::vector vbuf(count); + wchar_t *buffer = &vbuf[0]; + count = cmsMLUgetWide(modelDescMLU, "en", "US", buffer, count); + 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 + if (!modelDesc.empty()) { + 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()); + return true; + } + } + } + return false; +} + + +Glib::ustring get_profile_description(cmsHPROFILE profile) +{ + const cmsMLU *mlu = static_cast(cmsReadTag(profile, cmsSigProfileDescriptionTag)); + if (!mlu) { + return ""; + } + cmsUInt32Number sz = cmsMLUgetASCII(mlu, "en", "US", nullptr, 0); + if (!sz) { + return ""; + } + std::vector buf(sz); + cmsMLUgetASCII(mlu, "en", "US", &buf[0], sz); + buf.back() = 0; // sanity + return std::string(&buf[0]); +} + +} // namespace + + rtengine::ProfileContent::ProfileContent() = default; rtengine::ProfileContent::ProfileContent(const Glib::ustring& fileName) @@ -255,11 +334,52 @@ rtengine::ProfileContent::ProfileContent(cmsHPROFILE hProfile) cmsHPROFILE rtengine::ProfileContent::toProfile() const { + cmsHPROFILE profile = nullptr; + if (!data.empty()) { + profile = cmsOpenProfileFromMem(data.c_str(), data.size()); + // if this is a V2 profile generated by RawTherapee, we rebuild the + // TRC. See https://github.com/Beep6581/RawTherapee/issues/5026 and + // the references in there + if (profile && is_RTv2_profile(profile)) { + double gammatag, slopetag; + if (get_RT_gamma_slope(profile, gammatag, slopetag)) { + constexpr double eps = 0.000000001; // not divide by zero + double pwr = 1.0 / gammatag; + double ts = slopetag; + double slope = slopetag == 0 ? eps : slopetag; - return - !data.empty() - ? cmsOpenProfileFromMem(data.c_str(), data.size()) - : nullptr; + GammaValues g_b; //gamma parameters + Color::calcGamma(pwr, ts, 0, 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; + if (slopetag == 0.) { + //printf("gammatag=%f\n", gammatag); + GammaTRC = cmsBuildGamma(NULL, gammatag); + } else { + GammaTRC = cmsBuildParametricToneCurve(nullptr, 5, gammaParams); //5 = smoother than 4 + } + cmsWriteTag(profile, cmsSigRedTRCTag, GammaTRC); + cmsWriteTag(profile, cmsSigGreenTRCTag, GammaTRC); + cmsWriteTag(profile, cmsSigBlueTRCTag, GammaTRC); + cmsFreeToneCurve(GammaTRC); + + if (settings->verbose) { + std::cout << "ICCStore: rebuilt TRC for RTv2 profile " << get_profile_description(profile) << ": gamma=" << gammatag << ", slope=" << slopetag << std::endl; + } + } else if (settings->verbose) { + std::cout << "ICCStore: no gamma/slope info found for RTv2 profile " << get_profile_description(profile) << std::endl; + } + } + } + return profile; } const std::string& rtengine::ProfileContent::getData() const @@ -623,7 +743,7 @@ private: struct PMatrix { double matrix[3][3]; PMatrix(): matrix{} {} - PMatrix(const CMatrix &m) + explicit PMatrix(const CMatrix &m) { set(m); } @@ -1058,8 +1178,8 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof) uint32_t size; } tags[tag_count]; - const uint32_t gamma = 0x239; - int gamma_size = 14; + constexpr uint32_t gamma = 0x239; + constexpr int gamma_size = 14; int data_size = (gamma_size + 3) & ~3; for (uint32_t i = 0; i < tag_count; i++) { @@ -1096,13 +1216,13 @@ cmsHPROFILE rtengine::ICCStore::makeStdGammaProfile(cmsHPROFILE iprof) tags[i].sig == 0x6B545243) { // kTRC if (gamma_offset == 0) { gamma_offset = offset; - uint32_t pcurve[] = { htonl(0x63757276), htonl(0), htonl(gamma_size == 12 ? 0U : 1U) }; + uint32_t pcurve[] = { htonl(0x63757276), htonl(0), htonl(/*gamma_size == 12 ? 0U : */1U) }; memcpy(&nd[offset], pcurve, 12); - if (gamma_size == 14) { - uint16_t gm = htons(gamma); - memcpy(&nd[offset + 12], &gm, 2); - } + //if (gamma_size == 14) { + uint16_t gm = htons(gamma); + memcpy(&nd[offset + 12], &gm, 2); + //} offset += (gamma_size + 3) & ~3; } diff --git a/rtengine/iimage.h b/rtengine/iimage.h index af2969581..3549d4dae 100644 --- a/rtengine/iimage.h +++ b/rtengine/iimage.h @@ -82,22 +82,18 @@ public: // Read the raw dump of the data void readData (FILE *fh) {} // Write a raw dump of the data - void writeData (FILE *fh) {} + void writeData (FILE *fh) const {} virtual void normalizeInt (int srcMinVal, int srcMaxVal) {}; virtual void normalizeFloat (float srcMinVal, float srcMaxVal) {}; - virtual void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, int compression) {} + virtual void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, int compression) const {} virtual void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, std::vector &red, std::vector &green, std::vector &blue, - int tran) {} - virtual void getAutoWBMultipliers (double &rm, double &gm, double &bm) + int tran) const {} + virtual void getAutoWBMultipliers (double &rm, double &gm, double &bm) const { rm = gm = bm = 1.0; } - virtual const char* getType () const - { - return "unknown"; - } }; @@ -232,7 +228,7 @@ public: } // Send back the row stride. WARNING: unit = byte, not element! - int getRowStride () + int getRowStride () const { return rowstride; } @@ -261,7 +257,7 @@ public: /* If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed * Can be safely used to reallocate an existing image */ - void allocate (int W, int H) + void allocate (int W, int H) override { if (W == width && H == height) { @@ -316,7 +312,7 @@ public: } /** Copy the data to another PlanarWhateverData */ - void copyData(PlanarWhateverData *dest) + void copyData(PlanarWhateverData *dest) const { assert (dest != NULL); // Make sure that the size is the same, reallocate if necessary @@ -331,7 +327,7 @@ public: } } - void rotate (int deg) + void rotate (int deg) override { if (deg == 90) { @@ -389,7 +385,7 @@ public: } template - void resizeImgTo (int nw, int nh, TypeInterpolation interp, PlanarWhateverData *imgPtr) + void resizeImgTo (int nw, int nh, TypeInterpolation interp, PlanarWhateverData *imgPtr) const { //printf("resizeImgTo: resizing %s image data (%d x %d) to %s (%d x %d)\n", getType(), width, height, imgPtr->getType(), imgPtr->width, imgPtr->height); if (width == nw && height == nh) { @@ -450,7 +446,7 @@ public: } } - void hflip () + void hflip () override { int width2 = width / 2; @@ -474,7 +470,7 @@ public: #endif } - void vflip () + void vflip () override { int height2 = height / 2; @@ -499,17 +495,7 @@ public: #endif } - void calcHist(unsigned int *hist16) - { - for (int row = 0; row < height; row++) - for (int col = 0; col < width; col++) { - unsigned short idx; - convertTo(v(row, col), idx); - hist16[idx]++; - } - } - - void transformPixel (int x, int y, int tran, int& tx, int& ty) + void transformPixel (int x, int y, int tran, int& tx, int& ty) const { if (!tran) { @@ -552,7 +538,7 @@ public: } } - void getPipetteData (T &value, int posX, int posY, int squareSize, int tran) + void getPipetteData (T &value, int posX, int posY, int squareSize, int tran) const { int x; int y; @@ -573,14 +559,14 @@ public: value = n ? T(accumulator / float(n)) : T(0); } - void readData (FILE *f) + void readData (FILE *f) { for (int i = 0; i < height; i++) { fread (v(i), sizeof(T), width, f); } } - void writeData (FILE *f) + void writeData (FILE *f) const { for (int i = 0; i < height; i++) { fwrite (v(i), sizeof(T), width, f); @@ -622,12 +608,12 @@ public: } // Send back the row stride. WARNING: unit = byte, not element! - int getRowStride () + int getRowStride () const { return rowstride; } // Send back the plane stride. WARNING: unit = byte, not element! - int getPlaneStride () + int getPlaneStride () const { return planestride; } @@ -662,7 +648,7 @@ public: /* If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed * Can be safely used to reallocate an existing image */ - void allocate (int W, int H) + void allocate (int W, int H) override { if (W == width && H == height) { @@ -732,7 +718,7 @@ public: } /** Copy the data to another PlanarRGBData */ - void copyData(PlanarRGBData *dest) + void copyData(PlanarRGBData *dest) const { assert (dest != nullptr); // Make sure that the size is the same, reallocate if necessary @@ -750,7 +736,7 @@ public: } } - void rotate (int deg) + void rotate (int deg) override { if (deg == 90) { @@ -820,7 +806,7 @@ public: } template - void resizeImgTo (int nw, int nh, TypeInterpolation interp, IC *imgPtr) + void resizeImgTo (int nw, int nh, TypeInterpolation interp, IC *imgPtr) const { //printf("resizeImgTo: resizing %s image data (%d x %d) to %s (%d x %d)\n", getType(), width, height, imgPtr->getType(), imgPtr->width, imgPtr->height); if (width == nw && height == nh) { @@ -869,15 +855,15 @@ public: // This case should never occur! for (int i = 0; i < nh; i++) { for (int j = 0; j < nw; j++) { - r(i, j) = 0; - g(i, j) = 0; - b(i, j) = 0; + imgPtr->r(i, j) = 0; + imgPtr->g(i, j) = 0; + imgPtr->b(i, j) = 0; } } } } - void hflip () + void hflip () override { int width2 = width / 2; @@ -909,7 +895,7 @@ public: #endif } - void vflip () + void vflip () override { int height2 = height / 2; @@ -942,7 +928,7 @@ public: #endif } - void calcGrayscaleHist(unsigned int *hist16) + void calcGrayscaleHist(unsigned int *hist16) const { for (int row = 0; row < height; row++) for (int col = 0; col < width; col++) { @@ -956,7 +942,7 @@ public: } } - void computeAutoHistogram (LUTu & histogram, int& histcompr) + void computeAutoHistogram (LUTu & histogram, int& histcompr) const { histcompr = 3; @@ -975,7 +961,7 @@ public: } } - void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) + void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override { histogram.clear(); avg_r = avg_g = avg_b = 0.; @@ -1007,7 +993,7 @@ public: } } - void getAutoWBMultipliers (double &rm, double &gm, double &bm) + void getAutoWBMultipliers (double &rm, double &gm, double &bm) const override { double avg_r = 0.; @@ -1038,7 +1024,7 @@ public: bm = avg_b / double(n); } - void transformPixel (int x, int y, int tran, int& tx, int& ty) + void transformPixel (int x, int y, int tran, int& tx, int& ty) const { if (!tran) { @@ -1081,9 +1067,9 @@ public: } } - virtual void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, + void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, std::vector &red, std::vector &green, std::vector &blue, - int tran) + int tran) const override { int x; int y; @@ -1120,7 +1106,7 @@ public: } } - void getPipetteData (T &valueR, T &valueG, T &valueB, int posX, int posY, int squareSize, int tran) + void getPipetteData (T &valueR, T &valueG, T &valueB, int posX, int posY, int squareSize, int tran) const { int x; int y; @@ -1147,22 +1133,28 @@ public: valueB = n ? T(accumulatorB / float(n)) : T(0); } - void readData (FILE *f) + void readData (FILE *f) { for (int i = 0; i < height; i++) { - fread (r(i), sizeof(T), width, f); + if (fread(r(i), sizeof(T), width, f) < static_cast(width)) { + break; + } } for (int i = 0; i < height; i++) { - fread (g(i), sizeof(T), width, f); + if (fread(g(i), sizeof(T), width, f) < static_cast(width)) { + break; + } } for (int i = 0; i < height; i++) { - fread (b(i), sizeof(T), width, f); + if (fread(b(i), sizeof(T), width, f) < static_cast(width)) { + break; + } } } - void writeData (FILE *f) + void writeData (FILE *f) const { for (int i = 0; i < height; i++) { fwrite (r(i), sizeof(T), width, f); @@ -1305,7 +1297,7 @@ public: * If any of the required allocation fails, "width" and "height" are set to -1, and all remaining buffer are freed * Can be safely used to reallocate an existing image or to free up it's memory with "allocate (0,0);" */ - void allocate (int W, int H) + void allocate (int W, int H) override { if (W == width && H == height) { @@ -1345,7 +1337,7 @@ public: } /** Copy the data to another ChunkyRGBData */ - void copyData(ChunkyRGBData *dest) + void copyData(ChunkyRGBData *dest) const { assert (dest != nullptr); // Make sure that the size is the same, reallocate if necessary @@ -1359,7 +1351,7 @@ public: memcpy (dest->data, data, 3 * width * height * sizeof(T)); } - void rotate (int deg) + void rotate (int deg) override { if (deg == 90) { @@ -1421,7 +1413,7 @@ public: } template - void resizeImgTo (int nw, int nh, TypeInterpolation interp, IC *imgPtr) + void resizeImgTo (int nw, int nh, TypeInterpolation interp, IC *imgPtr) const { //printf("resizeImgTo: resizing %s image data (%d x %d) to %s (%d x %d)\n", getType(), width, height, imgPtr->getType(), imgPtr->width, imgPtr->height); if (width == nw && height == nh) { @@ -1485,15 +1477,15 @@ public: // This case should never occur! for (int i = 0; i < nh; i++) { for (int j = 0; j < nw; j++) { - r(i, j) = 0; - g(i, j) = 0; - b(i, j) = 0; + imgPtr->r(i, j) = 0; + imgPtr->g(i, j) = 0; + imgPtr->b(i, j) = 0; } } } } - void hflip () + void hflip () override { int width2 = width / 2; @@ -1529,7 +1521,7 @@ public: } } - void vflip () + void vflip () override { AlignedBuffer lBuffer(3 * width); @@ -1545,7 +1537,7 @@ public: } } - void calcGrayscaleHist(unsigned int *hist16) + void calcGrayscaleHist(unsigned int *hist16) const { for (int row = 0; row < height; row++) for (int col = 0; col < width; col++) { @@ -1559,7 +1551,7 @@ public: } } - void computeAutoHistogram (LUTu & histogram, int& histcompr) + void computeAutoHistogram (LUTu & histogram, int& histcompr) const { histcompr = 3; @@ -1578,7 +1570,7 @@ public: } } - void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) + void computeHistogramAutoWB (double &avg_r, double &avg_g, double &avg_b, int &n, LUTu &histogram, const int compression) const override { histogram.clear(); avg_r = avg_g = avg_b = 0.; @@ -1610,7 +1602,7 @@ public: } } - void getAutoWBMultipliers (double &rm, double &gm, double &bm) + void getAutoWBMultipliers (double &rm, double &gm, double &bm) const override { double avg_r = 0.; @@ -1641,7 +1633,7 @@ public: bm = avg_b / double(n); } - void transformPixel (int x, int y, int tran, int& tx, int& ty) + void transformPixel (int x, int y, int tran, int& tx, int& ty) const { if (!tran) { @@ -1684,9 +1676,9 @@ public: } } - virtual void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, + void getSpotWBData (double &reds, double &greens, double &blues, int &rn, int &gn, int &bn, std::vector &red, std::vector &green, std::vector &blue, - int tran) + int tran) const override { int x; int y; @@ -1723,14 +1715,16 @@ public: } } - void readData (FILE *f) + void readData (FILE *f) { for (int i = 0; i < height; i++) { - fread (r(i), sizeof(T), 3 * width, f); + if (fread(r(i), sizeof(T), 3 * width, f) < 3 * static_cast(width)) { + break; + } } } - void writeData (FILE *f) + void writeData (FILE *f) const { for (int i = 0; i < height; i++) { fwrite (r(i), sizeof(T), 3 * width, f); @@ -1751,31 +1745,31 @@ public: /** @brief Returns a mutex that can is useful in many situations. No image operations shuold be performed without locking this mutex. * @return The mutex */ virtual MyMutex& getMutex () = 0; - virtual cmsHPROFILE getProfile () = 0; + virtual cmsHPROFILE getProfile () const = 0; /** @brief Returns the bits per pixel of the image. * @return The bits per pixel of the image */ - virtual int getBitsPerPixel () = 0; + virtual int getBitsPerPixel () const = 0; /** @brief Saves the image to file. It autodetects the format (jpg, tif, png are supported). * @param fname is the name of the file @return the error code, 0 if none */ - virtual int saveToFile (Glib::ustring fname) = 0; + virtual int saveToFile (const Glib::ustring &fname) const = 0; /** @brief Saves the image to file in a png format. * @param fname is the name of the file * @param compression is the amount of compression (0-6), -1 corresponds to the default * @param bps can be 8 or 16 depending on the bits per pixels the output file will have @return the error code, 0 if none */ - virtual int saveAsPNG (Glib::ustring fname, int bps = -1) = 0; + virtual int saveAsPNG (const Glib::ustring &fname, int bps = -1) const = 0; /** @brief Saves the image to file in a jpg format. * @param fname is the name of the file * @param quality is the quality of the jpeg (0...100), set it to -1 to use default @return the error code, 0 if none */ - virtual int saveAsJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3 ) = 0; + virtual int saveAsJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3 ) const = 0; /** @brief Saves the image to file in a tif format. * @param fname is the name of the file * @param bps can be 8 or 16 depending on the bits per pixels the output file will have * @param isFloat is true for saving float images. Will be ignored by file format not supporting float data @return the error code, 0 if none */ - virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false) = 0; + virtual int saveAsTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const = 0; /** @brief Sets the progress listener if you want to follow the progress of the image saving operations (optional). * @param pl is the pointer to the class implementing the ProgressListener interface */ virtual void setSaveProgressListener (ProgressListener* pl) = 0; @@ -1788,14 +1782,14 @@ public: class IImagefloat : public IImage, public PlanarRGBData { public: - virtual ~IImagefloat() {} + ~IImagefloat() override {} }; /** @brief This class represents an image having a classical 8 bits/pixel representation */ class IImage8 : public IImage, public ChunkyRGBData { public: - virtual ~IImage8() {} + ~IImage8() override {} }; /** @brief This class represents an image having a 16 bits/pixel planar representation. @@ -1803,7 +1797,7 @@ public: class IImage16 : public IImage, public PlanarRGBData { public: - virtual ~IImage16() {} + ~IImage16() override {} }; } diff --git a/rtengine/image16.cc b/rtengine/image16.cc index c014d1c06..c0e97557a 100644 --- a/rtengine/image16.cc +++ b/rtengine/image16.cc @@ -60,7 +60,7 @@ Image16::~Image16() { } -void Image16::getScanline(int row, unsigned char* buffer, int bps, bool isFloat) +void Image16::getScanline(int row, unsigned char* buffer, int bps, bool isFloat) const { if (data == nullptr) { @@ -124,7 +124,7 @@ void Image16::setScanline(int row, unsigned char* buffer, int bps, unsigned int */ } -Image16* Image16::copy() +Image16* Image16::copy() const { Image16* cp = new Image16(width, height); @@ -132,7 +132,7 @@ Image16* Image16::copy() return cp; } -void Image16::getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp) +void Image16::getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const { // compute channel multipliers @@ -295,8 +295,7 @@ void Image16::getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewP #undef GCLIP } -Image8* -Image16::to8() +Image8* Image16::to8() const { Image8* img8 = new Image8(width, height); @@ -311,21 +310,6 @@ Image16::to8() return img8; } -Imagefloat* -Image16::tofloat() -{ - Imagefloat* imgfloat = new Imagefloat(width, height); - - for (int h = 0; h < height; ++h) { - for (int w = 0; w < width; ++w) { - imgfloat->r(h, w) = r(h, w); - imgfloat->g(h, w) = g(h, w); - imgfloat->b(h, w) = b(h, w); - } - } - - return imgfloat; -} // Parallelized transformation; create transform with cmsFLAGS_NOCACHE! void Image16::ExecCMSTransform(cmsHTRANSFORM hTransform) { diff --git a/rtengine/image16.h b/rtengine/image16.h index 1c5504bd9..9762af990 100644 --- a/rtengine/image16.h +++ b/rtengine/image16.h @@ -38,64 +38,72 @@ public: Image16(); Image16(int width, int height); - ~Image16(); + ~Image16() override; - Image16* copy(); + Image16* copy() const; - Image8* to8(); - Imagefloat* tofloat(); + Image8* to8() const; - virtual void getStdImage(ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp); + void getStdImage(const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const override; - virtual const char* getType() const + const char* getType() const override { return sImage16; } - virtual int getBPS() + int getBPS() const override { return 8 * sizeof(unsigned short); } - virtual void getScanline(int row, unsigned char* buffer, int bps, bool isFloat = false); - virtual void setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples); + + void getScanline(int row, unsigned char* buffer, int bps, bool isFloat = false) const override; + void setScanline(int row, unsigned char* buffer, int bps, unsigned int numSamples) override; // functions inherited from IImage16: - virtual MyMutex& getMutex() + MyMutex& getMutex() override { return mutex(); } - virtual cmsHPROFILE getProfile() + + cmsHPROFILE getProfile() const override { return getEmbeddedProfile(); } - virtual int getBitsPerPixel() + + int getBitsPerPixel() const override { return 8 * sizeof(unsigned short); } - virtual int saveToFile(Glib::ustring fname) + + int saveToFile(const Glib::ustring &fname) const override { return save(fname); } - virtual int saveAsPNG(Glib::ustring fname, int bps = -1) + + int saveAsPNG(const Glib::ustring &fname, int bps = -1) const override { return savePNG(fname, bps); } - virtual int saveAsJPEG(Glib::ustring fname, int quality = 100, int subSamp = 3) + + int saveAsJPEG(const Glib::ustring &fname, int quality = 100, int subSamp = 3) const override { return saveJPEG(fname, quality, subSamp); } - virtual int saveAsTIFF(Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false) + + int saveAsTIFF(const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const override { return saveTIFF(fname, bps, isFloat, uncompressed); } - virtual void setSaveProgressListener(ProgressListener* pl) + + void setSaveProgressListener(ProgressListener* pl) override { setProgressListener(pl); } - virtual void free() + + void free() override { delete this; } - void ExecCMSTransform(cmsHTRANSFORM hTransform); + void ExecCMSTransform(cmsHTRANSFORM hTransform); /* void ExecCMSTransform(cmsHTRANSFORM hTransform, const LabImage &labImage, int cx, int cy); */ }; diff --git a/rtengine/image8.cc b/rtengine/image8.cc index ab7393100..edced2fe5 100644 --- a/rtengine/image8.cc +++ b/rtengine/image8.cc @@ -37,7 +37,7 @@ Image8::~Image8 () { } -void Image8::getScanline (int row, unsigned char* buffer, int bps, bool isFloat) +void Image8::getScanline (int row, unsigned char* buffer, int bps, bool isFloat) const { if (data == nullptr) { @@ -89,7 +89,7 @@ void Image8::setScanline (int row, unsigned char* buffer, int bps, unsigned int } } -Image8* Image8::copy () +Image8* Image8::copy () const { Image8* cp = new Image8 (width, height); @@ -97,7 +97,7 @@ Image8* Image8::copy () return cp; } -void Image8::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp) +void Image8::getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const { // compute channel multipliers float rm = 1.f, gm = 1.f, bm = 1.f; diff --git a/rtengine/image8.h b/rtengine/image8.h index 59d13c298..8928cf85b 100644 --- a/rtengine/image8.h +++ b/rtengine/image8.h @@ -36,57 +36,67 @@ public: Image8 (); Image8 (int width, int height); - ~Image8 (); + ~Image8 () override; - Image8* copy (); + Image8* copy () const; - virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp); + void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const override; - virtual const char* getType () const + const char* getType () const override { return sImage8; } - virtual int getBPS () + + int getBPS () const override { return 8 * sizeof(unsigned char); } - virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false); - virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples); + + void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) const override; + void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples) override; // functions inherited from IImage*: - virtual MyMutex& getMutex () + MyMutex& getMutex () override { return mutex (); } - virtual cmsHPROFILE getProfile () + + cmsHPROFILE getProfile () const override { return getEmbeddedProfile (); } - virtual int getBitsPerPixel () + + int getBitsPerPixel () const override { return 8 * sizeof(unsigned char); } - virtual int saveToFile (Glib::ustring fname) + + int saveToFile (const Glib::ustring &fname) const override { return save (fname); } - virtual int saveAsPNG (Glib::ustring fname, int bps = -1) + + int saveAsPNG (const Glib::ustring &fname, int bps = -1) const override { return savePNG (fname, bps); } - virtual int saveAsJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3) + + int saveAsJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3) const override { return saveJPEG (fname, quality, subSamp); } - virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false) + + int saveAsTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const override { return saveTIFF (fname, bps, isFloat, uncompressed); } - virtual void setSaveProgressListener (ProgressListener* pl) + + void setSaveProgressListener (ProgressListener* pl) override { setProgressListener (pl); } - virtual void free () + + void free () override { delete this; } diff --git a/rtengine/imagedata.cc b/rtengine/imagedata.cc index 572bd7e42..892a9efed 100644 --- a/rtengine/imagedata.cc +++ b/rtengine/imagedata.cc @@ -156,6 +156,13 @@ FrameData::FrameData (rtexif::TagDirectory* frameRootDir_, rtexif::TagDirectory* model = "Unknown"; } + if (model == "Unknown") { + tag = newFrameRootDir->findTag("UniqueCameraModel"); + if (tag) { + model = tag->valueToString(); + } + } + tag = newFrameRootDir->findTagUpward("Orientation"); if (tag) { orientation = tag->valueToString (); @@ -809,11 +816,6 @@ unsigned int FramesData::getFrameCount () const return dcrawFrameCount ? dcrawFrameCount : frames.size(); } -FrameData *FramesData::getFrameData (unsigned int frame) const -{ - return frames.empty() || frame >= frames.size() ? nullptr : frames.at(frame); -} - bool FramesData::getPixelShift () const { // So far only Pentax and Sony provide multi-frame Pixel Shift files. @@ -1118,9 +1120,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptrgetRoot(), roots.at(0)); - - frames.push_back(fd); + frames.push_back(std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); } for (auto currRoot : roots) { rtexif::Tag* t = currRoot->getTag(0x83BB); @@ -1142,8 +1142,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptrgetRoot(), roots.at(0)); - frames.push_back(fd); + frames.push_back(std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); } rewind (exifManager.f); // Not sure this is necessary iptc = iptc_data_new_from_jpeg_file (exifManager.f); @@ -1161,9 +1160,7 @@ FramesData::FramesData (const Glib::ustring& fname, std::unique_ptrgetRoot(), roots.at(0)); - - frames.push_back(fd); + frames.push_back(std::unique_ptr(new FrameData(currFrame, currFrame->getRoot(), roots.at(0)))); } for (auto currRoot : roots) { rtexif::Tag* t = currRoot->getTag(0x83BB); diff --git a/rtengine/imagedata.h b/rtengine/imagedata.h index 0427ee519..7aa4812d0 100644 --- a/rtengine/imagedata.h +++ b/rtengine/imagedata.h @@ -20,6 +20,7 @@ #define __IMAGEDATA_H__ #include +#include #include "rawimage.h" #include #include @@ -89,7 +90,7 @@ public: class FramesData : public FramesMetaData { private: // frame's root IFD, can be a file root IFD or a SUB-IFD - std::vector frames; + std::vector> frames; // root IFD in the file std::vector roots; IptcData* iptc; @@ -97,36 +98,35 @@ private: public: FramesData (const Glib::ustring& fname, std::unique_ptr rml = nullptr, bool firstFrameOnly = false); - ~FramesData (); + ~FramesData () override; void setDCRawFrameCount (unsigned int frameCount); - unsigned int getRootCount () const; - unsigned int getFrameCount () const; - FrameData *getFrameData (unsigned int frame) const; - bool getPixelShift () const; - bool getHDR (unsigned int frame = 0) const; - std::string getImageType (unsigned int frame) const; - IIOSampleFormat getSampleFormat (unsigned int frame = 0) const; - rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const; - rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const; - rtexif::TagDirectory* getBestExifData (ImageSource *imgSource, procparams::RAWParams *rawParams) const; - procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const; - bool hasExif (unsigned int frame = 0) const; - bool hasIPTC (unsigned int frame = 0) const; - tm getDateTime (unsigned int frame = 0) const; - time_t getDateTimeAsTS (unsigned int frame = 0) const; - int getISOSpeed (unsigned int frame = 0) const; - double getFNumber (unsigned int frame = 0) const; - double getFocalLen (unsigned int frame = 0) const; - double getFocalLen35mm (unsigned int frame = 0) const; - float getFocusDist (unsigned int frame = 0) const; - double getShutterSpeed (unsigned int frame = 0) const; - double getExpComp (unsigned int frame = 0) const; - std::string getMake (unsigned int frame = 0) const; - std::string getModel (unsigned int frame = 0) const; - std::string getLens (unsigned int frame = 0) const; + unsigned int getRootCount () const override; + unsigned int getFrameCount () const override; + bool getPixelShift () const override; + bool getHDR (unsigned int frame = 0) const override; + std::string getImageType (unsigned int frame) const override; + IIOSampleFormat getSampleFormat (unsigned int frame = 0) const override; + rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const override; + rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const override; + rtexif::TagDirectory* getBestExifData (ImageSource *imgSource, procparams::RAWParams *rawParams) const override; + procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const override; + bool hasExif (unsigned int frame = 0) const override; + bool hasIPTC (unsigned int frame = 0) const override; + tm getDateTime (unsigned int frame = 0) const override; + time_t getDateTimeAsTS (unsigned int frame = 0) const override; + int getISOSpeed (unsigned int frame = 0) const override; + double getFNumber (unsigned int frame = 0) const override; + double getFocalLen (unsigned int frame = 0) const override; + double getFocalLen35mm (unsigned int frame = 0) const override; + float getFocusDist (unsigned int frame = 0) const override; + double getShutterSpeed (unsigned int frame = 0) const override; + double getExpComp (unsigned int frame = 0) const override; + std::string getMake (unsigned int frame = 0) const override; + std::string getModel (unsigned int frame = 0) const override; + std::string getLens (unsigned int frame = 0) const override; std::string getSerialNumber (unsigned int frame = 0) const; - std::string getOrientation (unsigned int frame = 0) const; + std::string getOrientation (unsigned int frame = 0) const override; }; diff --git a/rtengine/imagefloat.cc b/rtengine/imagefloat.cc index 2cf73204d..940806419 100644 --- a/rtengine/imagefloat.cc +++ b/rtengine/imagefloat.cc @@ -110,7 +110,7 @@ void Imagefloat::setScanline (int row, unsigned char* buffer, int bps, unsigned namespace rtengine { extern void filmlike_clip(float *r, float *g, float *b); } -void Imagefloat::getScanline (int row, unsigned char* buffer, int bps, bool isFloat) +void Imagefloat::getScanline (int row, unsigned char* buffer, int bps, bool isFloat) const { if (data == nullptr) { @@ -159,7 +159,7 @@ void Imagefloat::getScanline (int row, unsigned char* buffer, int bps, bool isFl } } -Imagefloat* Imagefloat::copy () +Imagefloat* Imagefloat::copy () const { Imagefloat* cp = new Imagefloat (width, height); @@ -168,7 +168,7 @@ Imagefloat* Imagefloat::copy () } // This is called by the StdImageSource class. We assume that fp images from StdImageSource don't have to deal with gamma -void Imagefloat::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp) +void Imagefloat::getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const { // compute channel multipliers @@ -330,7 +330,7 @@ void Imagefloat::getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, Prev } Image8* -Imagefloat::to8() +Imagefloat::to8() const { Image8* img8 = new Image8(width, height); #ifdef _OPENMP @@ -349,7 +349,7 @@ Imagefloat::to8() } Image16* -Imagefloat::to16() +Imagefloat::to16() const { Image16* img16 = new Image16(width, height); #ifdef _OPENMP @@ -474,52 +474,6 @@ 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) { @@ -533,7 +487,7 @@ void Imagefloat::ExecCMSTransform(cmsHTRANSFORM hTransform) AlignedBuffer pBuf(width * 3); #ifdef _OPENMP - #pragma omp for schedule(static) + #pragma omp for schedule(dynamic, 16) #endif for (int y = 0; y < height; y++) diff --git a/rtengine/imagefloat.h b/rtengine/imagefloat.h index 65c291775..e1e5086b8 100644 --- a/rtengine/imagefloat.h +++ b/rtengine/imagefloat.h @@ -42,65 +42,67 @@ public: Imagefloat (); Imagefloat (int width, int height); - ~Imagefloat (); + ~Imagefloat () override; - Imagefloat* copy (); + Imagefloat* copy () const; - Image8* to8(); - Image16* to16(); + Image8* to8() const; + Image16* to16() const; - virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp); + void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const override; - virtual const char* getType () const + const char* getType () const override { return sImagefloat; } - virtual int getBPS () + + int getBPS () const override { return 8 * sizeof(float); } - virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false); - virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples); + + void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) const override; + void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples) override; // functions inherited from IImagefloat: - virtual MyMutex& getMutex () + MyMutex& getMutex () override { return mutex (); } - virtual cmsHPROFILE getProfile () + cmsHPROFILE getProfile () const override { return getEmbeddedProfile (); } - virtual int getBitsPerPixel () + int getBitsPerPixel () const override { return 8 * sizeof(float); } - virtual int saveToFile (Glib::ustring fname) + int saveToFile (const Glib::ustring &fname) const override { return save (fname); } - virtual int saveAsPNG (Glib::ustring fname, int bps = -1) + int saveAsPNG (const Glib::ustring &fname, int bps = -1) const override { return savePNG (fname, bps); } - virtual int saveAsJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3) + int saveAsJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3) const override { return saveJPEG (fname, quality, subSamp); } - virtual int saveAsTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false) + int saveAsTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const override { return saveTIFF (fname, bps, isFloat, uncompressed); } - virtual void setSaveProgressListener (ProgressListener* pl) + void setSaveProgressListener (ProgressListener* pl) override { setProgressListener (pl); } - virtual void free () + void free () override { delete this; } - inline uint16_t DNG_FloatToHalf(float f) + inline uint16_t DNG_FloatToHalf(float f) const { union { float f; @@ -216,12 +218,10 @@ public: return (uint32_t) ((sign << 31) | (exponent << 23) | mantissa); } - virtual void normalizeFloat(float srcMinVal, float srcMaxVal); + void normalizeFloat(float srcMinVal, float srcMaxVal) override; 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/imageio.cc b/rtengine/imageio.cc index 802365d74..76a6417ff 100644 --- a/rtengine/imageio.cc +++ b/rtengine/imageio.cc @@ -201,7 +201,7 @@ void png_read_data(png_struct_def *png_ptr, unsigned char *data, size_t length) void png_write_data(png_struct_def *png_ptr, unsigned char *data, size_t length); void png_flush(png_struct_def *png_ptr); -int ImageIO::getPNGSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement) +int ImageIO::getPNGSampleFormat (const Glib::ustring &fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement) { FILE *file = g_fopen (fname.c_str (), "rb"); @@ -273,7 +273,7 @@ int ImageIO::getPNGSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, } } -int ImageIO::loadPNG (Glib::ustring fname) +int ImageIO::loadPNG (const Glib::ustring &fname) { FILE *file = g_fopen (fname.c_str (), "rb"); @@ -447,7 +447,7 @@ void my_error_exit (j_common_ptr cinfo) (*cinfo->err->output_message) (cinfo); /* Return control to the setjmp point */ -#if defined( WIN32 ) && defined( __x86_64__ ) +#if defined( WIN32 ) && defined( __x86_64__ ) && !defined(__clang__) __builtin_longjmp(myerr->setjmp_buffer, 1); #else longjmp(myerr->setjmp_buffer, 1); @@ -471,7 +471,7 @@ int ImageIO::loadJPEGFromMemory (const char* buffer, int bufsize) jerr.pub.error_exit = my_error_exit; /* Establish the setjmp return context for my_error_exit to use. */ -#if defined( WIN32 ) && defined( __x86_64__ ) +#if defined( WIN32 ) && defined( __x86_64__ ) && !defined(__clang__) if (__builtin_setjmp(jerr.setjmp_buffer)) { #else @@ -543,7 +543,7 @@ int ImageIO::loadJPEGFromMemory (const char* buffer, int bufsize) return IMIO_SUCCESS; } -int ImageIO::loadJPEG (Glib::ustring fname) +int ImageIO::loadJPEG (const Glib::ustring &fname) { FILE *file = g_fopen(fname.c_str (), "rb"); @@ -629,7 +629,7 @@ int ImageIO::loadJPEG (Glib::ustring fname) } } -int ImageIO::getTIFFSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement) +int ImageIO::getTIFFSampleFormat (const Glib::ustring &fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement) { #ifdef WIN32 wchar_t *wfilename = (wchar_t*)g_utf8_to_utf16 (fname.c_str(), -1, NULL, NULL, NULL); @@ -731,7 +731,7 @@ int ImageIO::getTIFFSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, return IMIO_VARIANTNOTSUPPORTED; } -int ImageIO::loadTIFF (Glib::ustring fname) +int ImageIO::loadTIFF (const Glib::ustring &fname) { static MyMutex thumbMutex; @@ -972,7 +972,7 @@ void PNGwriteRawProfile(png_struct *ping, png_info *ping_info, const char *profi } // namespace -int ImageIO::savePNG (Glib::ustring fname, volatile int bps) +int ImageIO::savePNG (const Glib::ustring &fname, int bps) const { if (getWidth() < 1 || getHeight() < 1) { return IMIO_HEADERERROR; @@ -1111,7 +1111,7 @@ int ImageIO::savePNG (Glib::ustring fname, volatile int bps) // Quality 0..100, subsampling: 1=low quality, 2=medium, 3=high -int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) +int ImageIO::saveJPEG (const Glib::ustring &fname, int quality, int subSamp) const { if (getWidth() < 1 || getHeight() < 1) { return IMIO_HEADERERROR; @@ -1134,7 +1134,7 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) jerr.pub.error_exit = my_error_exit; /* Establish the setjmp return context for my_error_exit to use. */ -#if defined( WIN32 ) && defined( __x86_64__ ) +#if defined( WIN32 ) && defined( __x86_64__ ) && !defined(__clang__) if (__builtin_setjmp(jerr.setjmp_buffer)) { #else @@ -1252,7 +1252,7 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) unsigned char *row = new unsigned char [rowlen]; /* To avoid memory leaks we establish a new setjmp return context for my_error_exit to use. */ -#if defined( WIN32 ) && defined( __x86_64__ ) +#if defined( WIN32 ) && defined( __x86_64__ ) && !defined(__clang__) if (__builtin_setjmp(jerr.setjmp_buffer)) { #else @@ -1301,7 +1301,7 @@ int ImageIO::saveJPEG (Glib::ustring fname, int quality, int subSamp) return IMIO_SUCCESS; } -int ImageIO::saveTIFF (Glib::ustring fname, int bps, float isFloat, bool uncompressed) +int ImageIO::saveTIFF (const Glib::ustring &fname, int bps, bool isFloat, bool uncompressed) const { if (getWidth() < 1 || getHeight() < 1) { return IMIO_HEADERERROR; @@ -1595,7 +1595,7 @@ void png_flush(png_structp png_ptr) } } -int ImageIO::load (Glib::ustring fname) +int ImageIO::load (const Glib::ustring &fname) { if (hasPngExtension(fname)) { @@ -1609,7 +1609,7 @@ int ImageIO::load (Glib::ustring fname) } } -int ImageIO::save (Glib::ustring fname) +int ImageIO::save (const Glib::ustring &fname) const { if (hasPngExtension(fname)) { return savePNG (fname); @@ -1621,3 +1621,57 @@ int ImageIO::save (Glib::ustring fname) return IMIO_FILETYPENOTSUPPORTED; } } + +void ImageIO::setProgressListener (ProgressListener* l) +{ + pl = l; +} + +void ImageIO::setSampleFormat(IIOSampleFormat sFormat) +{ + sampleFormat = sFormat; +} + +IIOSampleFormat ImageIO::getSampleFormat() const +{ + return sampleFormat; +} + +void ImageIO::setSampleArrangement(IIOSampleArrangement sArrangement) +{ + sampleArrangement = sArrangement; +} + +IIOSampleArrangement ImageIO::getSampleArrangement() const +{ + return sampleArrangement; +} + +cmsHPROFILE ImageIO::getEmbeddedProfile () const +{ + return embProfile; +} + +void ImageIO::getEmbeddedProfileData (int& length, unsigned char*& pdata) const +{ + length = loadedProfileLength; + pdata = (unsigned char*)loadedProfileData; +} + +MyMutex& ImageIO::mutex () +{ + return imutex; +} + +void ImageIO::deleteLoadedProfileData( ) +{ + if(loadedProfileData) { + if(loadedProfileDataJpg) { + free(loadedProfileData); + } else { + delete[] loadedProfileData; + } + } + + loadedProfileData = nullptr; +} diff --git a/rtengine/imageio.h b/rtengine/imageio.h index cbf245291..60bf6bc43 100644 --- a/rtengine/imageio.h +++ b/rtengine/imageio.h @@ -28,11 +28,11 @@ #define IMIO_FILETYPENOTSUPPORTED 6 #define IMIO_CANNOTWRITEFILE 7 +#include +#include #include "rtengine.h" #include "imageformat.h" -#include #include "procparams.h" -#include #include "../rtexif/rtexif.h" #include "imagedimensions.h" #include "iimage.h" @@ -63,18 +63,8 @@ protected: IIOSampleArrangement sampleArrangement; private: - void deleteLoadedProfileData( ) - { - if(loadedProfileData) { - if(loadedProfileDataJpg) { - free(loadedProfileData); - } else { - delete[] loadedProfileData; - } - } + void deleteLoadedProfileData( ); - loadedProfileData = nullptr; - } public: static Glib::ustring errorMsg[6]; @@ -82,81 +72,44 @@ public: loadedProfileLength(0), iptc(nullptr), exifRoot (nullptr), sampleFormat(IIOSF_UNKNOWN), sampleArrangement(IIOSA_UNKNOWN) {} - virtual ~ImageIO (); + ~ImageIO () override; - void setProgressListener (ProgressListener* l) - { - pl = l; - } + void setProgressListener (ProgressListener* l); + void setSampleFormat(IIOSampleFormat sFormat); + IIOSampleFormat getSampleFormat() const; + void setSampleArrangement(IIOSampleArrangement sArrangement); + IIOSampleArrangement getSampleArrangement() const; - void setSampleFormat(IIOSampleFormat sFormat) - { - sampleFormat = sFormat; - } - IIOSampleFormat getSampleFormat() - { - return sampleFormat; - } - void setSampleArrangement(IIOSampleArrangement sArrangement) - { - sampleArrangement = sArrangement; - } - IIOSampleArrangement getSampleArrangement() - { - return sampleArrangement; - } + virtual void getStdImage (const ColorTemp &ctemp, int tran, Imagefloat* image, PreviewProps pp) const = 0; + virtual int getBPS () const = 0; + virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) const = 0; + virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples = 3) = 0; + virtual const char* getType () const = 0; - virtual void getStdImage (ColorTemp ctemp, int tran, Imagefloat* image, PreviewProps pp, bool first, procparams::ToneCurveParams hrp) - { - printf("getStdImage NULL!\n"); - } + int load (const Glib::ustring &fname); + int save (const Glib::ustring &fname) const; - virtual int getBPS () = 0; - virtual void getScanline (int row, unsigned char* buffer, int bps, bool isFloat = false) {} - virtual void setScanline (int row, unsigned char* buffer, int bps, unsigned int numSamples = 3) {} - - virtual bool readImage (Glib::ustring &fname, FILE *fh) - { - return false; - }; - virtual bool writeImage (Glib::ustring &fname, FILE *fh) - { - return false; - }; - - int load (Glib::ustring fname); - int save (Glib::ustring fname); - - int loadPNG (Glib::ustring fname); - int loadJPEG (Glib::ustring fname); - int loadTIFF (Glib::ustring fname); - static int getPNGSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement); - static int getTIFFSampleFormat (Glib::ustring fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement); + int loadPNG (const Glib::ustring &fname); + int loadJPEG (const Glib::ustring &fname); + int loadTIFF (const Glib::ustring &fname); + static int getPNGSampleFormat (const Glib::ustring &fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement); + static int getTIFFSampleFormat (const Glib::ustring &fname, IIOSampleFormat &sFormat, IIOSampleArrangement &sArrangement); int loadJPEGFromMemory (const char* buffer, int bufsize); int loadPPMFromMemory(const char* buffer, int width, int height, bool swap, int bps); - int savePNG (Glib::ustring fname, volatile int bps = -1); - int saveJPEG (Glib::ustring fname, int quality = 100, int subSamp = 3); - int saveTIFF (Glib::ustring fname, int bps = -1, float isFloat = false, bool uncompressed = false); + int savePNG (const Glib::ustring &fname, int bps = -1) const; + int saveJPEG (const Glib::ustring &fname, int quality = 100, int subSamp = 3) const; + int saveTIFF (const Glib::ustring &fname, int bps = -1, bool isFloat = false, bool uncompressed = false) const; - cmsHPROFILE getEmbeddedProfile () - { - return embProfile; - } - void getEmbeddedProfileData (int& length, unsigned char*& pdata) - { - length = loadedProfileLength; - pdata = (unsigned char*)loadedProfileData; - } + cmsHPROFILE getEmbeddedProfile () const; + void getEmbeddedProfileData (int& length, unsigned char*& pdata) const; void setMetadata (const rtexif::TagDirectory* eroot); void setMetadata (const rtexif::TagDirectory* eroot, const rtengine::procparams::ExifPairs& exif, const rtengine::procparams::IPTCPairs& iptcc); - void setOutputProfile (const char* pdata, int plen); - MyMutex& mutex () - { - return imutex; - } + void setOutputProfile (const char* pdata, int plen); + + MyMutex& mutex (); }; } diff --git a/rtengine/imagesource.h b/rtengine/imagesource.h index a7c867e08..6c39d8d42 100644 --- a/rtengine/imagesource.h +++ b/rtengine/imagesource.h @@ -65,7 +65,7 @@ public: ImageSource () : references (1), redAWBMul(-1.), greenAWBMul(-1.), blueAWBMul(-1.), embProfile(nullptr), idata(nullptr), dirpyrdenoiseExpComp(INFINITY) {} - virtual ~ImageSource () {} + ~ImageSource () override {} virtual int load (const Glib::ustring &fname) = 0; virtual void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse, bool prepareDenoise = true) {}; virtual void demosaic (const RAWParams &raw, bool autoContrast, double &contrastThreshold) {}; @@ -74,9 +74,8 @@ public: virtual void retinexPrepareBuffers (const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) {}; virtual void flushRawData () {}; virtual void flushRGB () {}; - virtual void HLRecovery_Global (ToneCurveParams hrp) {}; + virtual void HLRecovery_Global (const ToneCurveParams &hrp) {}; virtual void HLRecovery_inpaint (float** red, float** green, float** blue) {}; - virtual void MSR (LabImage* lab, LUTf & mapcurve, bool &mapcontlutili, int width, int height, int skip, RetinexParams deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax) {}; virtual bool isRGBSourceModified () const = 0; // tracks whether cached rgb output of demosaic has been modified @@ -110,7 +109,6 @@ public: return 0; } - virtual FrameData* getImageData (unsigned int frameNum) = 0; virtual ImageMatrices* getImageMatrices () = 0; virtual bool isRAW () const = 0; virtual DCPProfile* getDCP (const ColorManagementParams &cmp, DCPProfile::ApplyState &as) @@ -120,11 +118,11 @@ public: virtual void setProgressListener (ProgressListener* pl) {} - void increaseRef () + void increaseRef () override { references++; } - void decreaseRef () + void decreaseRef () override { references--; @@ -152,19 +150,19 @@ public: return dirpyrdenoiseExpComp; } // functions inherited from the InitialImage interface - virtual Glib::ustring getFileName () + Glib::ustring getFileName () override { return fileName; } - virtual cmsHPROFILE getEmbeddedProfile () + cmsHPROFILE getEmbeddedProfile () override { return embProfile; } - virtual const FramesMetaData* getMetaData () + const FramesMetaData* getMetaData () override { return idata; } - virtual ImageSource* getImageSource () + ImageSource* getImageSource () override { return this; } diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 4a0072bea..24107ea1f 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -28,7 +28,6 @@ #include #include #include "color.h" - #ifdef _OPENMP #include #endif @@ -95,7 +94,7 @@ ImProcCoordinator::ImProcCoordinator() pW(-1), pH(-1), plistener(nullptr), imageListener(nullptr), aeListener(nullptr), acListener(nullptr), abwListener(nullptr), awbListener(nullptr), flatFieldAutoClipListener(nullptr), bayerAutoContrastListener(nullptr), xtransAutoContrastListener(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) + butili(false), ccutili(false), cclutili(false), clcutili(false), opautili(false), wavcontlutili(false), colourToningSatLimit(0.f), colourToningSatLimitOpacity(0.f), highQualityComputed(false), customTransformIn(nullptr), customTransformOut(nullptr) {} void ImProcCoordinator::assign(ImageSource* imgsrc) @@ -129,6 +128,17 @@ ImProcCoordinator::~ImProcCoordinator() } imgsrc->decreaseRef(); + + if(customTransformIn) { + cmsDeleteTransform(customTransformIn); + customTransformIn = nullptr; + } + + if(customTransformOut) { + cmsDeleteTransform(customTransformOut); + customTransformOut = nullptr; + } + updaterThreadStart.unlock(); } @@ -173,13 +183,13 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) 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)) { + if (rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE) && rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::MONO)) { rp.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); } //bayerrp.all_enhance = false; - if (rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE) && rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE)) { + if (rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE) && rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::MONO)) { rp.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); } @@ -419,12 +429,13 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) readyphase++; - if ((todo & M_HDR) && params.fattal.enabled) { + if ((todo & M_HDR) && (params.fattal.enabled || params.dehaze.enabled)) { if (fattal_11_dcrop_cache) { delete fattal_11_dcrop_cache; fattal_11_dcrop_cache = nullptr; } + ipf.dehaze(orig_prev); ipf.ToneMapFattal02(orig_prev); if (oprevi != orig_prev) { @@ -505,41 +516,28 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) if (todo & (M_AUTOEXP | M_RGBCURVE)) { if (params.icm.workingTRC == "Custom") { //exec TRC IN free - Glib::ustring profile; - profile = params.icm.workingProfile; + if (oprevi == orig_prev) { + oprevi = new Imagefloat(pW, pH); + orig_prev->copyData(oprevi); + } + + const Glib::ustring 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(); + const int cw = oprevi->getWidth(); + const 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); - } + if(customTransformIn) { + cmsDeleteTransform(customTransformIn); + customTransformIn = nullptr; } - - delete readyImg0; + ipf.workingtrc(oprevi, oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, customTransformIn, true, false, true); //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); - } + if(customTransformOut) { + cmsDeleteTransform(customTransformOut); + customTransformOut = nullptr; } - - delete readyImg; - + ipf.workingtrc(oprevi, oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, customTransformOut, false, true, true); } } } @@ -611,7 +609,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) if (actListener && params.colorToning.enabled) { if (params.blackwhite.enabled && params.colorToning.autosat) { - actListener->autoColorTonChanged(satTH, satPR); //hide sliders only if autosat + actListener->autoColorTonChanged(0, satTH, satPR); //hide sliders only if autosat indi = 0; } else { if (params.colorToning.autosat) { @@ -652,11 +650,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) } if (params.colorToning.enabled && params.colorToning.autosat && actListener) { - if (settings->verbose) { - printf("ImProcCoordinator / Auto CT: indi=%d satH=%d satPR=%d\n", indi, (int)colourToningSatLimit, (int) colourToningSatLimitOpacity); - } - - actListener->autoColorTonChanged((int) colourToningSatLimit, (int)colourToningSatLimitOpacity); //change sliders autosat + actListener->autoColorTonChanged(indi, (int) colourToningSatLimit, (int)colourToningSatLimitOpacity); //change sliders autosat } // correct GUI black and white with value @@ -712,11 +706,12 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) nprevl->CopyFrom(oprevl); 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.labColorCorrectionRegions(nprevl); if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { ipf.EPDToneMap(nprevl, 5, scale); @@ -792,7 +787,8 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) } - + ipf.softLight(nprevl); + if (params.colorappearance.enabled) { //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 @@ -950,6 +946,11 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) hListener->histogramChanged(histRed, histGreen, histBlue, histLuma, histToneCurve, histLCurve, histCCurve, /*histCLurve, histLLCurve,*/ histLCAM, histCCAM, histRedRaw, histGreenRaw, histBlueRaw, histChroma, histLRETI); } } + if (orig_prev != oprevi) { + delete oprevi; + oprevi = nullptr; + } + } @@ -957,10 +958,6 @@ void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) void ImProcCoordinator::freeAll() { - if (settings->verbose) { - printf("freeall starts %d\n", (int)allocated); - } - if (allocated) { if (orig_prev != oprevi) { delete oprevi; @@ -1002,10 +999,6 @@ void ImProcCoordinator::freeAll() void ImProcCoordinator::setScale(int prevscale) { - if (settings->verbose) { - printf("setscale before lock\n"); - } - tr = getCoarseBitMask(params.coarse); int nW, nH; @@ -1019,10 +1012,6 @@ void ImProcCoordinator::setScale(int 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); - } - if (nW != pW || nH != pH) { freeAll(); @@ -1046,19 +1035,10 @@ void ImProcCoordinator::setScale(int prevscale) fullw = fw; fullh = fh; - if (settings->verbose) { - printf("setscale ends\n"); - } - if (!sizeListeners.empty()) for (size_t i = 0; i < sizeListeners.size(); i++) { sizeListeners[i]->sizeChanged(fullw, fullh, fw, fh); } - - if (settings->verbose) { - printf("setscale ends2\n"); - } - } @@ -1452,7 +1432,8 @@ void ImProcCoordinator::process() || params.raw != nextParams.raw || params.retinex != nextParams.retinex || params.wavelet != nextParams.wavelet - || params.dirpyrequalizer != nextParams.dirpyrequalizer; + || params.dirpyrequalizer != nextParams.dirpyrequalizer + || params.dehaze != nextParams.dehaze; params = nextParams; int change = changeSinceLast; diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index 356ef6636..fb3012f62 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -215,89 +215,90 @@ protected: float colourToningSatLimit; float colourToningSatLimitOpacity; bool highQualityComputed; - + cmsHTRANSFORM customTransformIn; + cmsHTRANSFORM customTransformOut; public: ImProcCoordinator (); - ~ImProcCoordinator (); + ~ImProcCoordinator () override; void assign (ImageSource* imgsrc); - void getParams (procparams::ProcParams* dst) + void getParams (procparams::ProcParams* dst) override { *dst = params; } - void startProcessing (int changeCode); - ProcParams* beginUpdateParams (); - void endUpdateParams (ProcEvent change); // must be called after beginUpdateParams, triggers update - void endUpdateParams (int changeFlags); - void stopProcessing (); + void startProcessing (int changeCode) override; + ProcParams* beginUpdateParams () override; + void endUpdateParams (ProcEvent change) override; // must be called after beginUpdateParams, triggers update + void endUpdateParams (int changeFlags) override; + void stopProcessing () override; - void setPreviewScale (int scale) + void setPreviewScale (int scale) override { setScale (scale); } - int getPreviewScale () + int getPreviewScale () override { return scale; } //void fullUpdatePreviewImage (); - int getFullWidth () + int getFullWidth () override { return fullw; } - int getFullHeight () + int getFullHeight () override { return fullh; } - int getPreviewWidth () + int getPreviewWidth () override { return pW; } - int getPreviewHeight () + int getPreviewHeight () override { return pH; } - DetailedCrop* createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow); + DetailedCrop* createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow) override; - bool getAutoWB (double& temp, double& green, double equal, double tempBias); - void getCamWB (double& temp, double& green); - void getSpotWB (int x, int y, int rectSize, double& temp, double& green); - void getAutoCrop (double ratio, int &x, int &y, int &w, int &h); - bool getHighQualComputed(); - void setHighQualComputed(); - void setMonitorProfile (const Glib::ustring& profile, RenderingIntent intent); - void getMonitorProfile (Glib::ustring& profile, RenderingIntent& intent) const; - void setSoftProofing (bool softProof, bool gamutCheck); - void getSoftProofing (bool &softProof, bool &gamutCheck); - void setSharpMask (bool sharpMask); - bool updateTryLock () + bool getAutoWB (double& temp, double& green, double equal, double tempBias) override; + void getCamWB (double& temp, double& green) override; + void getSpotWB (int x, int y, int rectSize, double& temp, double& green) override; + void getAutoCrop (double ratio, int &x, int &y, int &w, int &h) override; + bool getHighQualComputed() override; + void setHighQualComputed() override; + void setMonitorProfile (const Glib::ustring& profile, RenderingIntent intent) override; + void getMonitorProfile (Glib::ustring& profile, RenderingIntent& intent) const override; + void setSoftProofing (bool softProof, bool gamutCheck) override; + void getSoftProofing (bool &softProof, bool &gamutCheck) override; + void setSharpMask (bool sharpMask) override; + bool updateTryLock () override { return updaterThreadStart.trylock(); } - void updateUnLock () + void updateUnLock () override { updaterThreadStart.unlock(); } - void setProgressListener (ProgressListener* pl) + void setProgressListener (ProgressListener* pl) override { plistener = pl; } - void setPreviewImageListener (PreviewImageListener* il) + void setPreviewImageListener (PreviewImageListener* il) override { imageListener = il; } - void setSizeListener (SizeListener* il) + void setSizeListener (SizeListener* il) override { sizeListeners.push_back (il); } - void delSizeListener (SizeListener* il) + void delSizeListener (SizeListener* il) override { std::vector::iterator it = std::find (sizeListeners.begin(), sizeListeners.end(), il); @@ -305,74 +306,84 @@ public: sizeListeners.erase (it); } } - void setAutoExpListener (AutoExpListener* ael) + void setAutoExpListener (AutoExpListener* ael) override { aeListener = ael; } - void setHistogramListener (HistogramListener *h) + void setHistogramListener (HistogramListener *h) override { hListener = h; } - void setAutoCamListener (AutoCamListener* acl) + void setAutoCamListener (AutoCamListener* acl) override { acListener = acl; } - void setAutoBWListener (AutoBWListener* abw) + void setAutoBWListener (AutoBWListener* abw) override { abwListener = abw; } - void setAutoWBListener (AutoWBListener* awb) + void setAutoWBListener (AutoWBListener* awb) override { awbListener = awb; } - void setAutoColorTonListener (AutoColorTonListener* bwct) + void setAutoColorTonListener (AutoColorTonListener* bwct) override { actListener = bwct; } - void setAutoChromaListener (AutoChromaListener* adn) + void setAutoChromaListener (AutoChromaListener* adn) override { adnListener = adn; } - void setRetinexListener (RetinexListener* adh) + void setRetinexListener (RetinexListener* adh) override { dehaListener = adh; } - void setWaveletListener (WaveletListener* awa) + void setWaveletListener (WaveletListener* awa) override { awavListener = awa; } - void setFrameCountListener (FrameCountListener* fcl) + void setFrameCountListener (FrameCountListener* fcl) override { frameCountListener = fcl; } - void setFlatFieldAutoClipListener (FlatFieldAutoClipListener* ffacl) + void setFlatFieldAutoClipListener (FlatFieldAutoClipListener* ffacl) override { flatFieldAutoClipListener = ffacl; } - void setBayerAutoContrastListener (AutoContrastListener* acl) + void setBayerAutoContrastListener (AutoContrastListener* acl) override { bayerAutoContrastListener = acl; } - void setXtransAutoContrastListener (AutoContrastListener* acl) + void setXtransAutoContrastListener (AutoContrastListener* acl) override { xtransAutoContrastListener = acl; } - void setImageTypeListener (ImageTypeListener* itl) + void setImageTypeListener (ImageTypeListener* itl) override { imageTypeListener = itl; } - void saveInputICCReference (const Glib::ustring& fname, bool apply_wb); + void saveInputICCReference (const Glib::ustring& fname, bool apply_wb) override; - InitialImage* getInitialImage () + InitialImage* getInitialImage () override { return imgsrc; } + cmsHTRANSFORM& getCustomTransformIn () + { + return customTransformIn; + } + + cmsHTRANSFORM& getCustomTransformOut () + { + return customTransformOut; + } + struct DenoiseInfoStore { DenoiseInfoStore () : chM (0), max_r{}, max_b{}, ch_M{}, valid (false) {} float chM; diff --git a/rtengine/improcfun.cc b/rtengine/improcfun.cc index 7d9d080e2..bf35bee70 100644 --- a/rtengine/improcfun.cc +++ b/rtengine/improcfun.cc @@ -910,12 +910,12 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw float cz, wh, pfl; - Ciecam02::initcam1float (gamu, yb, pilot, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c); + Ciecam02::initcam1float (yb, pilot, f, la, xw, yw, zw, n, d, nbb, ncb, cz, aw, wh, pfl, fl, c); //printf ("wh=%f \n", wh); const float pow1 = pow_F ( 1.64f - pow_F ( 0.29f, n ), 0.73f ); float nj, nbbj, ncbj, czj, awj, flj; - Ciecam02::initcam2float (gamu, yb2, pilotout, f2, la2, xw2, yw2, zw2, nj, dj, nbbj, ncbj, czj, awj, flj); + Ciecam02::initcam2float (yb2, pilotout, f2, la2, xw2, yw2, zw2, nj, dj, nbbj, ncbj, czj, awj, flj); #ifdef __SSE2__ const float reccmcz = 1.f / (c2 * czj); #endif @@ -1030,7 +1030,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw Q, M, s, aw, fl, wh, x, y, z, xw1, yw1, zw1, - c, nc, gamu, pow1, nbb, ncb, pfl, cz, d); + c, nc, pow1, nbb, ncb, pfl, cz, d); Jbuffer[k] = J; Cbuffer[k] = C; hbuffer[k] = h; @@ -1068,7 +1068,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw Q, M, s, aw, fl, wh, x, y, z, xw1, yw1, zw1, - c, nc, gamu, pow1, nbb, ncb, pfl, cz, d); + c, nc, pow1, nbb, ncb, pfl, cz, d); #endif float Jpro, Cpro, hpro, Qpro, Mpro, spro; Jpro = J; @@ -1483,7 +1483,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw Ciecam02::jch2xyz_ciecam02float ( xx, yy, zz, J, C, h, xw2, yw2, zw2, - c2, nc2, gamu, pow1n, nbbj, ncbj, flj, czj, dj, awj); + c2, nc2, pow1n, nbbj, ncbj, flj, czj, dj, awj); float x, y, z; x = xx * 655.35f; y = yy * 655.35f; @@ -1638,7 +1638,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw if (params->defringe.enabled) if (execsharp) { lab->deleteLab(); - ImProcFunctions::defringecam (ncie);//defringe adapted to CIECAM + defringecam (ncie);//defringe adapted to CIECAM lab->reallocLab(); } @@ -1649,7 +1649,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw const bool hotbad = params->dirpyrequalizer.skinprotect != 0.0; lab->deleteLab(); - ImProcFunctions::badpixcam (ncie, artifact / scale, 5, 2, chrom, hotbad); //enabled remove artifacts for cbDL + badpixcam (ncie, artifact / scale, 5, 2, chrom, hotbad); //enabled remove artifacts for cbDL lab->reallocLab(); } @@ -1657,7 +1657,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw if (params->colorappearance.badpixsl > 0 && execsharp) { int mode = params->colorappearance.badpixsl; lab->deleteLab(); - ImProcFunctions::badpixcam (ncie, 3.0, 10, mode, 0, true);//for bad pixels CIECAM + badpixcam (ncie, 3.0, 10, mode, 0, true);//for bad pixels CIECAM lab->reallocLab(); } @@ -1666,17 +1666,17 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw buffers[0] = lab->L; buffers[1] = lab->a; buffers[2] = lab->b; - ImProcFunctions::impulsedenoisecam (ncie, buffers); //impulse adapted to CIECAM + impulsedenoisecam (ncie, buffers); //impulse adapted to CIECAM } if (params->sharpenMicro.enabled)if (execsharp) { - ImProcFunctions::MLmicrocontrastcam (ncie); + MLmicrocontrastcam (ncie); } if (params->sharpening.enabled) if (execsharp) { float **buffer = lab->L; // We can use the L-buffer from lab as buffer to save some memory - ImProcFunctions::sharpeningcam (ncie, buffer, showSharpMask); // sharpening adapted to CIECAM + sharpeningcam (ncie, buffer, showSharpMask); // sharpening adapted to CIECAM } //if(params->dirpyrequalizer.enabled) if(execsharp) { @@ -1732,7 +1732,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw if (epdEnabled && params->colorappearance.tonecie && algepd) { lab->deleteLab(); - ImProcFunctions::EPDToneMapCIE (ncie, a_w, c_, width, height, minQ, maxQ, Iterates, scale ); + EPDToneMapCIE (ncie, a_w, c_, width, height, minQ, maxQ, Iterates, scale ); lab->reallocLab(); } @@ -1816,7 +1816,7 @@ void ImProcFunctions::ciecam_02float (CieImage* ncie, float adap, int pW, int pw Ciecam02::jch2xyz_ciecam02float ( xx, yy, zz, ncie->J_p[i][j], ncie_C_p, ncie->h_p[i][j], xw2, yw2, zw2, - c2, nc2, gamu, pow1n, nbbj, ncbj, flj, czj, dj, awj); + c2, nc2, pow1n, nbbj, ncbj, flj, czj, dj, awj); float x = (float)xx * 655.35f; float y = (float)yy * 655.35f; float z = (float)zz * 655.35f; @@ -2450,20 +2450,6 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer btemp[ti * TS + tj] = b; } } - } else { - for (int i = istart, ti = 0; i < tH; i++, ti++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - // clip out of gamut colors, without distorting colour too bad - float r = std::max(rtemp[ti * TS + tj], 0.f); - float g = std::max(gtemp[ti * TS + tj], 0.f); - float b = std::max(btemp[ti * TS + tj], 0.f); - - if (OOG(max(r, g, b)) && !OOG(min(r, g, b))) { - filmlike_clip(&r, &g, &b); - } - setUnlessOOG(rtemp[ti * TS + tj], gtemp[ti * TS + tj], btemp[ti * TS + tj], r, g, b); - } - } } if (histToneCurveThr) { @@ -3186,7 +3172,7 @@ void ImProcFunctions::rgbProc (Imagefloat* working, LabImage* lab, PipetteBuffer } } - softLight(rtemp, gtemp, btemp, istart, jstart, tW, tH, TS); + //softLight(rtemp, gtemp, btemp, istart, jstart, tW, tH, TS); if (!blackwhite) { if (editImgFloat || editWhatever) { @@ -4151,6 +4137,42 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW } } + //------------------------------------------------------------------------- + // support for pipettes for the new LabRegions color toning mode this is a + // hack to fill the pipette buffers also when + // !params->labCurve.enabled. It is ugly, but it's the smallest code + // change that I could find + //------------------------------------------------------------------------- + class TempParams { + const ProcParams **p_; + const ProcParams *old_; + ProcParams tmp_; + + public: + explicit TempParams(const ProcParams **p): p_(p) + { + old_ = *p; + tmp_.labCurve.enabled = true; + *p_ = &tmp_; + } + + ~TempParams() + { + *p_ = old_; + } + }; + std::unique_ptr tempparams; + bool pipette_for_colortoning_labregions = + editPipette && + params->colorToning.enabled && params->colorToning.method == "LabRegions"; + if (!params->labCurve.enabled && pipette_for_colortoning_labregions) { + utili = autili = butili = ccutili = cclutili = clcutili = false; + tempparams.reset(new TempParams(¶ms)); + curve.makeIdentity(); + } + //------------------------------------------------------------------------- + + if (!params->labCurve.enabled) { if (editPipette && (editID == EUID_Lab_LCurve || editID == EUID_Lab_aCurve || editID == EUID_Lab_bCurve || editID == EUID_Lab_LHCurve || editID == EUID_Lab_CHCurve || editID == EUID_Lab_HHCurve || editID == EUID_Lab_CLCurve || editID == EUID_Lab_CCurve || editID == EUID_Lab_LCCurve)) { // fill pipette buffer with zeros to avoid crashes @@ -4371,7 +4393,7 @@ void ImProcFunctions::chromiLuminanceCurve (PipetteBuffer *pipetteBuffer, int pW av = LVFU (lold->a[i][k]); bv = LVFU (lold->b[i][k]); STVF (HHBuffer[k], xatan2f (bv, av)); - STVF (CCBuffer[k], _mm_sqrt_ps (SQRV (av) + SQRV (bv)) / c327d68v); + STVF (CCBuffer[k], vsqrtf (SQRV (av) + SQRV (bv)) / c327d68v); } for (; k < W; k++) { @@ -5228,6 +5250,10 @@ void ImProcFunctions::EPDToneMap (LabImage *lab, unsigned int Iterates, int skip minL = 0.0f; //Disable the shift if there are no negative numbers. I wish there were just no negative numbers to begin with. } + if (maxL == 0.f) { // avoid division by zero + maxL = 1.f; + } + #pragma omp parallel for for (size_t i = 0; i < N; ++i) diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index a97ecef40..3e583958b 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -339,16 +339,18 @@ public: 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 dehaze(Imagefloat *rgb); 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); + void softLight(LabImage *lab); + void labColorCorrectionRegions(LabImage *lab); 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); + void workingtrc(const Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, const Glib::ustring &profile, double gampos, double slpos, cmsHTRANSFORM &transform, bool normalizeIn = true, bool normalizeOut = true, bool keepTransForm = false) const; 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); diff --git a/rtengine/ipdehaze.cc b/rtengine/ipdehaze.cc new file mode 100644 index 000000000..97c1883c9 --- /dev/null +++ b/rtengine/ipdehaze.cc @@ -0,0 +1,331 @@ +/* -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2018 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ + +/* + * Haze removal using the algorithm described in the paper: + * + * Single Image Haze Removal Using Dark Channel Prior + * by He, Sun and Tang + * + * using a guided filter for the "soft matting" of the transmission map + * + */ + +#include "improcfun.h" +#include "guidedfilter.h" +#include "rt_math.h" +#include "rt_algo.h" +#include +#include + +extern Options options; + +namespace rtengine { + +namespace { + +#if 0 +# define DEBUG_DUMP(arr) \ + do { \ + Imagefloat im(arr.width(), arr.height()); \ + const char *out = "/tmp/" #arr ".tif"; \ + for (int y = 0; y < im.getHeight(); ++y) { \ + for (int x = 0; x < im.getWidth(); ++x) { \ + im.r(y, x) = im.g(y, x) = im.b(y, x) = arr[y][x] * 65535.f; \ + } \ + } \ + im.saveTIFF(out, 16); \ + } while (false) +#else +# define DEBUG_DUMP(arr) +#endif + + +int get_dark_channel(const array2D &R, const array2D &G, const array2D &B, array2D &dst, int patchsize, float *ambient, bool clip, bool multithread) +{ + const int W = R.width(); + const int H = R.height(); + + int npatches = 0; + +#ifdef _OPENMP + #pragma omp parallel for if (multithread) +#endif + for (int y = 0; y < H; y += patchsize) { + int pH = min(y+patchsize, H); + for (int x = 0; x < W; x += patchsize, ++npatches) { + float val = RT_INFINITY_F; + int pW = min(x+patchsize, W); + for (int yy = y; yy < pH; ++yy) { + float yval = RT_INFINITY_F; + for (int xx = x; xx < pW; ++xx) { + float r = R[yy][xx]; + float g = G[yy][xx]; + float b = B[yy][xx]; + if (ambient) { + r /= ambient[0]; + g /= ambient[1]; + b /= ambient[2]; + } + yval = min(yval, r, g, b); + } + val = min(val, yval); + } + if (clip) { + val = LIM01(val); + } + for (int yy = y; yy < pH; ++yy) { + std::fill(dst[yy]+x, dst[yy]+pW, val); + } + } + } + + return npatches; +} + + +float estimate_ambient_light(const array2D &R, const array2D &G, const array2D &B, const array2D &dark, int patchsize, int npatches, float ambient[3]) +{ + const int W = R.width(); + const int H = R.height(); + + const auto get_percentile = + [](std::priority_queue &q, float prcnt) -> float + { + size_t n = LIM(q.size() * prcnt, 1, q.size()); + while (q.size() > n) { + q.pop(); + } + return q.top(); + }; + + float darklim = RT_INFINITY_F; + { + std::priority_queue p; + for (int y = 0; y < H; y += patchsize) { + for (int x = 0; x < W; x += patchsize) { + if (!OOG(dark[y][x], 1.f)) { + p.push(dark[y][x]); + } + } + } + darklim = get_percentile(p, 0.95); + } + + std::vector> patches; + patches.reserve(npatches); + + for (int y = 0; y < H; y += patchsize) { + for (int x = 0; x < W; x += patchsize) { + if (dark[y][x] >= darklim && !OOG(dark[y][x], 1.f)) { + patches.push_back(std::make_pair(x, y)); + } + } + } + + if (options.rtSettings.verbose) { + std::cout << "dehaze: computing ambient light from " << patches.size() + << " patches" << std::endl; + } + + float bright_lim = RT_INFINITY_F; + { + std::priority_queue l; + + for (auto &p : patches) { + const int pW = min(p.first+patchsize, W); + const int pH = min(p.second+patchsize, H); + + for (int y = p.second; y < pH; ++y) { + for (int x = p.first; x < pW; ++x) { + l.push(R[y][x] + G[y][x] + B[y][x]); + } + } + } + + bright_lim = get_percentile(l, 0.95); + } + + double rr = 0, gg = 0, bb = 0; + int n = 0; + for (auto &p : patches) { + const int pW = min(p.first+patchsize, W); + const int pH = min(p.second+patchsize, H); + + for (int y = p.second; y < pH; ++y) { + for (int x = p.first; x < pW; ++x) { + float r = R[y][x]; + float g = G[y][x]; + float b = B[y][x]; + if (r + g + b >= bright_lim) { + rr += r; + gg += g; + bb += b; + ++n; + } + } + } + } + n = std::max(n, 1); + ambient[0] = rr / n; + ambient[1] = gg / n; + ambient[2] = bb / n; + + // taken from darktable + return darklim > 0 ? -1.125f * std::log(darklim) : std::log(std::numeric_limits::max()) / 2; +} + + +void extract_channels(Imagefloat *img, array2D &r, array2D &g, array2D &b, int radius, float epsilon, bool multithread) +{ + const int W = img->getWidth(); + const int H = img->getHeight(); + + array2D imgR(W, H, img->r.ptrs, ARRAY2D_BYREFERENCE); + guidedFilter(imgR, imgR, r, radius, epsilon, multithread); + + array2D imgG(W, H, img->g.ptrs, ARRAY2D_BYREFERENCE); + guidedFilter(imgG, imgG, g, radius, epsilon, multithread); + + array2D imgB(W, H, img->b.ptrs, ARRAY2D_BYREFERENCE); + guidedFilter(imgB, imgB, b, radius, epsilon, multithread); +} + +} // namespace + + +void ImProcFunctions::dehaze(Imagefloat *img) +{ + if (!params->dehaze.enabled) { + return; + } + + img->normalizeFloatTo1(); + + const int W = img->getWidth(); + const int H = img->getHeight(); + float strength = LIM01(float(params->dehaze.strength) / 100.f * 0.9f); + + if (options.rtSettings.verbose) { + std::cout << "dehaze: strength = " << strength << std::endl; + } + + array2D dark(W, H); + + int patchsize = max(int(5 / scale), 2); + int npatches = 0; + float ambient[3]; + array2D &t_tilde = dark; + float max_t = 0.f; + + { + array2D R(W, H); + array2D G(W, H); + array2D B(W, H); + extract_channels(img, R, G, B, patchsize, 1e-1, multiThread); + + patchsize = max(max(W, H) / 600, 2); + npatches = get_dark_channel(R, G, B, dark, patchsize, nullptr, false, multiThread); + DEBUG_DUMP(dark); + + max_t = estimate_ambient_light(R, G, B, dark, patchsize, npatches, ambient); + + if (options.rtSettings.verbose) { + std::cout << "dehaze: ambient light is " + << ambient[0] << ", " << ambient[1] << ", " << ambient[2] + << std::endl; + } + + get_dark_channel(R, G, B, dark, patchsize, ambient, true, multiThread); + } + + if (min(ambient[0], ambient[1], ambient[2]) < 0.01f) { + if (options.rtSettings.verbose) { + std::cout << "dehaze: no haze detected" << std::endl; + } + img->normalizeFloatTo65535(); + return; // probably no haze at all + } + + DEBUG_DUMP(t_tilde); + +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < H; ++y) { + for (int x = 0; x < W; ++x) { + dark[y][x] = 1.f - strength * dark[y][x]; + } + } + + const int radius = patchsize * 4; + const float epsilon = 1e-5; + array2D &t = t_tilde; + + { + array2D guideB(W, H, img->b.ptrs, ARRAY2D_BYREFERENCE); + guidedFilter(guideB, t_tilde, t, radius, epsilon, multiThread); + } + + DEBUG_DUMP(t); + + if (options.rtSettings.verbose) { + std::cout << "dehaze: max distance is " << max_t << std::endl; + } + + float depth = -float(params->dehaze.depth) / 100.f; + const float t0 = max(1e-3f, std::exp(depth * max_t)); + const float teps = 1e-3f; +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < H; ++y) { + for (int x = 0; x < W; ++x) { + // ensure that the transmission is such that to avoid clipping... + float rgb[3] = { img->r(y, x), img->g(y, x), img->b(y, x) }; + // ... t >= tl to avoid negative values + float tl = 1.f - min(rgb[0]/ambient[0], rgb[1]/ambient[1], rgb[2]/ambient[2]); + // ... t >= tu to avoid values > 1 + float tu = t0 - teps; + for (int c = 0; c < 3; ++c) { + if (ambient[c] < 1) { + tu = max(tu, (rgb[c] - ambient[c])/(1.f - ambient[c])); + } + } + float mt = max(t[y][x], t0, tl + teps, tu + teps); + if (params->dehaze.showDepthMap) { + img->r(y, x) = img->g(y, x) = img->b(y, x) = 1.f - mt; + } else { + float r = (rgb[0] - ambient[0]) / mt + ambient[0]; + float g = (rgb[1] - ambient[1]) / mt + ambient[1]; + float b = (rgb[2] - ambient[2]) / mt + ambient[2]; + + img->r(y, x) = r; + img->g(y, x) = g; + img->b(y, x) = b; + } + } + } + + img->normalizeFloatTo65535(); +} + + +} // namespace rtengine diff --git a/rtengine/iplab2rgb.cc b/rtengine/iplab2rgb.cc index c4707f16f..9ab8e1d01 100644 --- a/rtengine/iplab2rgb.cc +++ b/rtengine/iplab2rgb.cc @@ -303,79 +303,7 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i } Imagefloat* image = new Imagefloat(cw, ch); - - cmsHPROFILE oprof = nullptr; - - 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]); - } + cmsHPROFILE oprof = ICCStore::getInstance()->getProfile(icm.outputProfile); if (oprof) { cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; @@ -429,64 +357,60 @@ Imagefloat* ImProcFunctions::lab2rgbOut(LabImage* lab, int cx, int cy, int cw, i } -Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int mul, Glib::ustring profile, double gampos, double slpos) +void ImProcFunctions::workingtrc(const Imagefloat* src, Imagefloat* dst, int cw, int ch, int mul, const Glib::ustring &profile, double gampos, double slpos, cmsHTRANSFORM &transform, bool normalizeIn, bool normalizeOut, bool keepTransForm) const { - TMatrix wprof; - - wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); + const TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); double dx = Color::D50x; double dz = Color::D50z; { dx = dz = 1.0; } - double toxyz[3][3] = { + const float toxyz[3][3] = { { - (wprof[0][0] / dx), //I have suppressed / Color::D50x - (wprof[0][1] / dx), - (wprof[0][2] / dx) + static_cast(wprof[0][0] / (dx * (normalizeIn ? 65535.0 : 1.0))), //I have suppressed / Color::D50x + static_cast(wprof[0][1] / (dx * (normalizeIn ? 65535.0 : 1.0))), + static_cast(wprof[0][2] / (dx * (normalizeIn ? 65535.0 : 1.0))) }, { - (wprof[1][0]), - (wprof[1][1]), - (wprof[1][2]) + static_cast(wprof[1][0] / (normalizeIn ? 65535.0 : 1.0)), + static_cast(wprof[1][1] / (normalizeIn ? 65535.0 : 1.0)), + static_cast(wprof[1][2] / (normalizeIn ? 65535.0 : 1.0)) }, { - (wprof[2][0] / dz), //I have suppressed / Color::D50z - (wprof[2][1] / dz), - (wprof[2][2] / dz) + static_cast(wprof[2][0] / (dz * (normalizeIn ? 65535.0 : 1.0))), //I have suppressed / Color::D50z + static_cast(wprof[2][1] / (dz * (normalizeIn ? 65535.0 : 1.0))), + static_cast(wprof[2][2] / (dz * (normalizeIn ? 65535.0 : 1.0))) } }; - Imagefloat* image = new Imagefloat(cw, ch); + cmsHTRANSFORM hTransform = nullptr; + if (transform) { + hTransform = transform; + } else { - double pwr; - double ts; - ts = slpos; + double pwr = 1.0 / gampos; + double ts = slpos; + int five = mul; - int five = mul; - pwr = 1.0 / gampos; + if (gampos < 1.0) { + pwr = gampos; + gampos = 1. / gampos; + five = -mul; + } - if (gampos < 1.0) { - pwr = gampos; - gampos = 1. / gampos; - five = -mul; - } + // int select_temp = 1; //5003K + constexpr double eps = 0.000000001; // not divide by zero - // 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 - 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; - }; - ColorTemp temp = ColorTemp::D50; + float p[6]; //primaries - cmsHPROFILE oprofdef; - float p[6]; //primaries - - if (true) { //primaries for 10 working profiles ==> output profiles if (profile == "WideGamut") { p[0] = 0.7350; //Widegamut primaries @@ -578,18 +502,10 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int } GammaValues g_a; //gamma parameters - int mode = 0; + constexpr 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; @@ -601,63 +517,69 @@ Imagefloat* ImProcFunctions::workingtrc(Imagefloat* working, int cw, int ch, int // printf("ga0=%f ga1=%f ga2=%f ga3=%f ga4=%f\n", ga0, ga1, ga2, ga3, ga4); // 7 parameters for smoother curves + cmsCIExyY xyD; cmsWhitePointFromTemp(&xyD, (double)temp); if (profile == "ACESp0") { xyD = {0.32168, 0.33767, 1.0};//refine white point to avoid differences } - - GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, gammaParams);//5 = more smoother than 4 - oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + + cmsToneCurve* GammaTRC[3]; + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(NULL, five, gammaParams);//5 = more smoother than 4 + + const cmsCIExyYTRIPLE Primaries = { + {p[0], p[1], 1.0}, // red + {p[2], p[3], 1.0}, // green + {p[4], p[5], 1.0} // blue + }; + const cmsHPROFILE oprofdef = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); cmsFreeToneCurve(GammaTRC[0]); + + if (oprofdef) { + constexpr cmsUInt32Number flags = cmsFLAGS_NOOPTIMIZE | cmsFLAGS_NOCACHE; + const cmsHPROFILE iprof = ICCStore::getInstance()->getXYZProfile(); + lcmsMutex->lock(); + hTransform = cmsCreateTransform(iprof, TYPE_RGB_FLT, oprofdef, TYPE_RGB_FLT, params->icm.outputIntent, flags); + lcmsMutex->unlock(); + } } + if (hTransform) { +#ifdef _OPENMP + #pragma omp parallel if (multiThread) +#endif + { + AlignedBuffer pBuf(cw * 3); + const float normalize = normalizeOut ? 65535.f : 1.f; - if (oprofdef) { - #pragma omp parallel for if (multiThread) +#ifdef _OPENMP + #pragma omp for schedule(dynamic, 16) nowait +#endif - 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_); + for (int i = 0; i < ch; ++i) { + float *p = pBuf.data; + for (int j = 0; j < cw; ++j) { + const float r = src->r(i, j); + const float g = src->g(i, j); + const float b = src->b(i, j); + *(p++) = toxyz[0][0] * r + toxyz[0][1] * g + toxyz[0][2] * b; + *(p++) = toxyz[1][0] * r + toxyz[1][1] * g + toxyz[1][2] * b; + *(p++) = toxyz[2][0] * r + toxyz[2][1] * g + toxyz[2][2] * b; + } + p = pBuf.data; + cmsDoTransform(hTransform, p, p, cw); + for (int j = 0; j < cw; ++j) { + dst->r(i, j) = *(p++) * normalize; + dst->g(i, j) = *(p++) * normalize; + dst->b(i, j) = *(p++) * normalize; + } } } - - 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(); - + if (!keepTransForm) { + cmsDeleteTransform(hTransform); + hTransform = nullptr; + } + transform = hTransform; } - - - return image; - } diff --git a/rtengine/iplabregions.cc b/rtengine/iplabregions.cc new file mode 100644 index 000000000..28e7ddad3 --- /dev/null +++ b/rtengine/iplabregions.cc @@ -0,0 +1,343 @@ +/* -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright 2018 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ + +#ifdef _OPENMP +#include +#endif + +#include "improcfun.h" +#include "guidedfilter.h" +//#define BENCHMARK +#include "StopWatch.h" +#include "sleef.c" + +namespace { + +#ifdef __SSE2__ +void fastlin2log(float *x, float factor, float base, int w) +{ + float baseLog = 1.f / xlogf(base); + vfloat baseLogv = F2V(baseLog); + factor = factor * (base - 1.f); + vfloat factorv = F2V(factor); + vfloat onev = F2V(1.f); + int i = 0; + for (; i < w - 3; i += 4) { + STVFU(x[i], xlogf(LVFU(x[i]) * factorv + onev) * baseLogv); + } + for (; i < w; ++i) { + x[i] = xlogf(x[i] * factor + 1.f) * baseLog; + } +} +#endif + +} + +namespace rtengine { + +void ImProcFunctions::labColorCorrectionRegions(LabImage *lab) +{ + if (!params->colorToning.enabled || params->colorToning.method != "LabRegions") { + return; + } +BENCHFUN + int n = params->colorToning.labregions.size(); + int show_mask_idx = params->colorToning.labregionsShowMask; + if (show_mask_idx >= n) { + show_mask_idx = -1; + } + std::vector> hmask(n); + std::vector> cmask(n); + std::vector> lmask(n); + + const int begin_idx = max(show_mask_idx, 0); + const int end_idx = (show_mask_idx < 0 ? n : show_mask_idx+1); + + for (int i = begin_idx; i < end_idx; ++i) { + auto &r = params->colorToning.labregions[i]; + if (!r.hueMask.empty() && r.hueMask[0] != FCT_Linear) { + hmask[i].reset(new FlatCurve(r.hueMask, true)); + } + if (!r.chromaticityMask.empty() && r.chromaticityMask[0] != FCT_Linear) { + cmask[i].reset(new FlatCurve(r.chromaticityMask, false)); + } + if (!r.lightnessMask.empty() && r.lightnessMask[0] != FCT_Linear) { + lmask[i].reset(new FlatCurve(r.lightnessMask, false)); + } + } + + std::vector> abmask(n); + std::vector> Lmask(n); + for (int i = begin_idx; i < end_idx; ++i) { + abmask[i](lab->W, lab->H); + Lmask[i](lab->W, lab->H); + } + + array2D guide(lab->W, lab->H); + + // magic constant c_factor: normally chromaticity is in [0; 42000] (see color.h), but here we use the constant to match how the chromaticity pipette works (see improcfun.cc lines 4705-4706 and color.cc line 1930 + constexpr float c_factor = 327.68f / 48000.f; + +#ifdef _OPENMP + #pragma omp parallel if (multiThread) +#endif + { +#ifdef __SSE2__ + float cBuffer[lab->W]; + float hBuffer[lab->W]; +#endif +#ifdef _OPENMP + #pragma omp for schedule(dynamic, 16) +#endif + for (int y = 0; y < lab->H; ++y) { +#ifdef __SSE2__ + // vectorized precalculation + Color::Lab2Lch(lab->a[y], lab->b[y], cBuffer, hBuffer, lab->W); + fastlin2log(cBuffer, c_factor, 10.f, lab->W); +#endif + for (int x = 0; x < lab->W; ++x) { + const float l = lab->L[y][x] / 32768.f; + guide[y][x] = LIM01(l); +#ifdef __SSE2__ + // use precalculated values + const float c = cBuffer[x]; + float h = hBuffer[x]; +#else + float c, h; + Color::Lab2Lch(lab->a[y][x], lab->b[y][x], c, h); + c = xlin2log(c * c_factor, 10.f); +#endif + h = Color::huelab_to_huehsv2(h); + h += 1.f/6.f; // offset the hue because we start from purple instead of red + if (h > 1.f) { + h -= 1.f; + } + h = xlin2log(h, 3.f); + + for (int i = begin_idx; i < end_idx; ++i) { + auto &hm = hmask[i]; + auto &cm = cmask[i]; + auto &lm = lmask[i]; + float blend = LIM01((hm ? hm->getVal(h) : 1.f) * (cm ? cm->getVal(c) : 1.f) * (lm ? lm->getVal(l) : 1.f)); + Lmask[i][y][x] = abmask[i][y][x] = blend; + } + } + } + } + + for (int i = begin_idx; i < end_idx; ++i) { + float blur = params->colorToning.labregions[i].maskBlur; + blur = blur < 0.f ? -1.f/blur : 1.f + blur; + int r1 = max(int(4 / scale * blur + 0.5), 1); + int r2 = max(int(25 / scale * blur + 0.5), 1); + rtengine::guidedFilter(guide, abmask[i], abmask[i], r1, 0.001, multiThread); + rtengine::guidedFilter(guide, Lmask[i], Lmask[i], r2, 0.0001, multiThread); + } + + if (show_mask_idx >= 0) { +#ifdef _OPENMP + #pragma omp parallel for if (multiThread) +#endif + for (int y = 0; y < lab->H; ++y) { + for (int x = 0; x < lab->W; ++x) { + auto blend = abmask[show_mask_idx][y][x]; + lab->a[y][x] = 0.f; + lab->b[y][x] = blend * 42000.f; + lab->L[y][x] = LIM(lab->L[y][x] + 32768.f * blend, 0.f, 32768.f); + } + } + + return; + } + + const auto abcoord = + [](float x) -> float + { + return /*12000.f **/ SGN(x) * xlog2lin(std::abs(x), 4.f); + }; + + float abca[n]; + float abcb[n]; + float rs[n]; + float slope[n]; + float offset[n]; + float power[n]; + int channel[n]; + for (int i = 0; i < n; ++i) { + auto &r = params->colorToning.labregions[i]; + abca[i] = abcoord(r.a); + abcb[i] = abcoord(r.b); + rs[i] = 1.f + r.saturation / (SGN(r.saturation) > 0 ? 50.f : 100.f); + slope[i] = r.slope; + offset[i] = r.offset; + power[i] = r.power; + channel[i] = r.channel; + } + + TMatrix ws = ICCStore::getInstance()->workingSpaceMatrix(params->icm.workingProfile); + TMatrix iws = ICCStore::getInstance()->workingSpaceInverseMatrix(params->icm.workingProfile); + + const auto CDL = + [=](float &l, float &a, float &b, float slope, float offset, float power, float saturation) -> void + { + if (slope != 1.f || offset != 0.f || power != 1.f || saturation != 1.f) { + float rgb[3]; + float x, y, z; + Color::Lab2XYZ(l, a, b, x, y, z); + Color::xyz2rgb(x, y, z, rgb[0], rgb[1], rgb[2], iws); + for (int i = 0; i < 3; ++i) { + rgb[i] = (pow_F(max((rgb[i] / 65535.f) * slope + offset, 0.f), power)) * 65535.f; + } + if (saturation != 1.f) { + float Y = Color::rgbLuminance(rgb[0], rgb[1], rgb[2], ws); + for (int i = 0; i < 3; ++i) { + rgb[i] = max(Y + saturation * (rgb[i] - Y), 0.f); + } + } + Color::rgbxyz(rgb[0], rgb[1], rgb[2], x, y, z, ws); + Color::XYZ2Lab(x, y, z, l, a, b); + } + }; + + const auto chan = + [=](float prev_l, float prev_a, float prev_b, float &l, float &a, float &b, int channel) -> void + { + if (channel >= 0) { + float prev_rgb[3]; + float rgb[3]; + float x, y, z; + Color::Lab2XYZ(l, a, b, x, y, z); + Color::xyz2rgb(x, y, z, rgb[0], rgb[1], rgb[2], iws); + Color::Lab2XYZ(prev_l, prev_a, prev_b, x, y, z); + Color::xyz2rgb(x, y, z, prev_rgb[0], prev_rgb[1], prev_rgb[2], iws); + prev_rgb[channel] = rgb[channel]; + Color::rgbxyz(prev_rgb[0], prev_rgb[1], prev_rgb[2], x, y, z, ws); + Color::XYZ2Lab(x, y, z, l, a, b); + } + }; + +#ifdef __SSE2__ + const auto CDL_v = + [=](vfloat &l, vfloat &a, vfloat &b, float slope, float offset, float power, float saturation) -> void + { + if (slope != 1.f || offset != 0.f || power != 1.f || saturation != 1.f) { + float ll[4]; + float aa[4]; + float bb[4]; + STVFU(ll[0], l); + STVFU(aa[0], a); + STVFU(bb[0], b); + for (int i = 0; i < 4; ++i) { + CDL(ll[i], aa[i], bb[i], slope, offset, power, saturation); + } + l = LVFU(ll[0]); + a = LVFU(aa[0]); + b = LVFU(bb[0]); + } + }; + + const auto chan_v = + [=](vfloat prev_l, vfloat prev_a, vfloat prev_b, vfloat &l, vfloat &a, vfloat &b, int channel) -> void + { + if (channel >= 0) { + float ll[4]; + float aa[4]; + float bb[4]; + STVFU(ll[0], l); + STVFU(aa[0], a); + STVFU(bb[0], b); + float prev_ll[4]; + float prev_aa[4]; + float prev_bb[4]; + STVFU(prev_ll[0], prev_l); + STVFU(prev_aa[0], prev_a); + STVFU(prev_bb[0], prev_b); + for (int i = 0; i < 4; ++i) { + chan(prev_ll[i], prev_aa[i], prev_bb[i], ll[i], aa[i], bb[i], channel); + } + l = LVFU(ll[0]); + a = LVFU(aa[0]); + b = LVFU(bb[0]); + } + }; +#endif + +#ifdef _OPENMP + #pragma omp parallel if (multiThread) +#endif + { +#ifdef __SSE2__ + vfloat c42000v = F2V(42000.f); + vfloat cm42000v = F2V(-42000.f); +#endif +#ifdef _OPENMP + #pragma omp for +#endif + for (int y = 0; y < lab->H; ++y) { + int x = 0; +#ifdef __SSE2__ + for (; x < lab->W - 3; x += 4) { + vfloat lv = LVFU(lab->L[y][x]); + vfloat av = LVFU(lab->a[y][x]); + vfloat bv = LVFU(lab->b[y][x]); + + for (int i = 0; i < n; ++i) { + vfloat blendv = LVFU(abmask[i][y][x]); + vfloat l_newv = lv; + vfloat a_newv = vclampf(av + lv * F2V(abca[i]), cm42000v, c42000v); + vfloat b_newv = vclampf(bv + lv * F2V(abcb[i]), cm42000v, c42000v); + CDL_v(l_newv, a_newv, b_newv, slope[i], offset[i], power[i], rs[i]); + l_newv = vmaxf(l_newv, ZEROV); + chan_v(lv, av, bv, l_newv, a_newv, b_newv, channel[i]); + lv = vintpf(LVFU(Lmask[i][y][x]), l_newv, lv); + av = vintpf(blendv, a_newv, av); + bv = vintpf(blendv, b_newv, bv); + } + STVFU(lab->L[y][x], lv); + STVFU(lab->a[y][x], av); + STVFU(lab->b[y][x], bv); + } +#endif + for (; x < lab->W; ++x) { + float l = lab->L[y][x]; + float a = lab->a[y][x]; + float b = lab->b[y][x]; + + for (int i = 0; i < n; ++i) { + float blend = abmask[i][y][x]; + float l_new = l; + float a_new = LIM(a + l * abca[i], -42000.f, 42000.f); + float b_new = LIM(b + l * abcb[i], -42000.f, 42000.f); + CDL(l_new, a_new, b_new, slope[i], offset[i], power[i], rs[i]); + l_new = max(l_new, 0.f); + chan(l, a, b, l_new, a_new, b_new, channel[i]); + l = intp(Lmask[i][y][x], l_new, l); + a = intp(blend, a_new, a); + b = intp(blend, b_new, b); + } + lab->L[y][x] = l; + lab->a[y][x] = a; + lab->b[y][x] = b; + } + } + } +} + +} // namespace rtengine diff --git a/rtengine/ipresize.cc b/rtengine/ipresize.cc index b3275b2e4..2d12417e1 100644 --- a/rtengine/ipresize.cc +++ b/rtengine/ipresize.cc @@ -232,6 +232,7 @@ void ImProcFunctions::Lanczos (const LabImage* src, LabImage* dst, float scale) float* const lb = aligned_buffer_lb.data; // weights for interpolation in y direction float w[support] ALIGNED64; + memset(w, 0, sizeof(w)); // Phase 2: do actual interpolation #ifdef _OPENMP diff --git a/rtengine/ipretinex.cc b/rtengine/ipretinex.cc index e79ee52a3..fa961fbbb 100644 --- a/rtengine/ipretinex.cc +++ b/rtengine/ipretinex.cc @@ -504,11 +504,11 @@ void RawImageSource::MSR(float** luminance, float** originalLuminance, float **e if(useHslLin) { for (; j < W_L - 3; j += 4) { - _mm_storeu_ps(&luminance[i][j], LVFU(luminance[i][j]) + pondv * (LIMV(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv) )); + _mm_storeu_ps(&luminance[i][j], LVFU(luminance[i][j]) + pondv * (vclampf(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv) )); } } else { for (; j < W_L - 3; j += 4) { - _mm_storeu_ps(&luminance[i][j], LVFU(luminance[i][j]) + pondv * xlogf(LIMV(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv) )); + _mm_storeu_ps(&luminance[i][j], LVFU(luminance[i][j]) + pondv * xlogf(vclampf(LVFU(src[i][j]) / LVFU(out[i][j]), limMinv, limMaxv) )); } } diff --git a/rtengine/ipshadowshighlights.cc b/rtengine/ipshadowshighlights.cc index ff56c84ac..450aac221 100644 --- a/rtengine/ipshadowshighlights.cc +++ b/rtengine/ipshadowshighlights.cc @@ -160,7 +160,7 @@ void ImProcFunctions::shadowsHighlights(LabImage *lab) float orig = 1.f - blend; if (l >= 0.f && l < 32768.f) { if (lab_mode) { - lab->L[y][x] = f[l] * blend + l * orig; + lab->L[y][x] = intp(blend, f[l], l); if (!hl && l > 1.f) { // when pushing shadows, scale also the chromaticity float s = max(lab->L[y][x] / l * 0.5f, 1.f) * blend; @@ -173,7 +173,10 @@ void ImProcFunctions::shadowsHighlights(LabImage *lab) float rgb[3]; lab2rgb(l, lab->a[y][x], lab->b[y][x], rgb[0], rgb[1], rgb[2]); for (int i = 0; i < 3; ++i) { - rgb[i] = f[rgb[i]] * blend + rgb[i] * orig; + float c = rgb[i]; + if (!OOG(c)) { + rgb[i] = intp(blend, f[c], c); + } } rgb2lab(rgb[0], rgb[1], rgb[2], lab->L[y][x], lab->a[y][x], lab->b[y][x]); } diff --git a/rtengine/ipsharpen.cc b/rtengine/ipsharpen.cc index 321dd635f..8437fae47 100644 --- a/rtengine/ipsharpen.cc +++ b/rtengine/ipsharpen.cc @@ -159,7 +159,7 @@ extern const Settings* settings; void ImProcFunctions::deconvsharpening (float** luminance, float** tmp, int W, int H, const SharpeningParams &sharpenParam) { - if (sharpenParam.deconvamount < 1) { + if (sharpenParam.deconvamount == 0 && sharpenParam.blurradius < 0.25f) { return; } BENCHFUN @@ -177,11 +177,31 @@ BENCHFUN // calculate contrast based blend factors to reduce sharpening in regions with low contrast JaggedArray blend(W, H); float contrast = sharpenParam.contrast / 100.f; - buildBlendMask(luminance, blend, W, H, contrast, sharpenParam.deconvamount / 100.f); + buildBlendMask(luminance, blend, W, H, contrast, 1.f); + JaggedArray* blurbuffer = nullptr; + if (sharpenParam.blurradius >= 0.25f) { + blurbuffer = new JaggedArray(W, H); + JaggedArray &blur = *blurbuffer; +#ifdef _OPENMP + #pragma omp parallel +#endif + { + gaussianBlur(tmpI, blur, W, H, sharpenParam.blurradius); +#ifdef _OPENMP + #pragma omp for +#endif + for (int i = 0; i < H; ++i) { + for (int j = 0; j < W; ++j) { + blur[i][j] = intp(blend[i][j], luminance[i][j], std::max(blur[i][j], 0.0f)); + } + } + } + } const float damping = sharpenParam.deconvdamping / 5.0; const bool needdamp = sharpenParam.deconvdamping > 0; const double sigma = sharpenParam.deconvradius / scale; + const float amount = sharpenParam.deconvamount / 100.f; #ifdef _OPENMP #pragma omp parallel @@ -205,10 +225,23 @@ BENCHFUN for (int i = 0; i < H; ++i) { for (int j = 0; j < W; ++j) { - luminance[i][j] = intp(blend[i][j], max(tmpI[i][j], 0.0f), luminance[i][j]); + luminance[i][j] = intp(blend[i][j] * amount, max(tmpI[i][j], 0.0f), luminance[i][j]); + } + } + + if (sharpenParam.blurradius >= 0.25f) { + JaggedArray &blur = *blurbuffer; +#ifdef _OPENMP + #pragma omp for +#endif + for (int i = 0; i < H; ++i) { + for (int j = 0; j < W; ++j) { + luminance[i][j] = intp(blend[i][j], luminance[i][j], max(blur[i][j], 0.0f)); + } } } } // end parallel + delete blurbuffer; } void ImProcFunctions::sharpening (LabImage* lab, const SharpeningParams &sharpenParam, bool showMask) @@ -224,7 +257,7 @@ void ImProcFunctions::sharpening (LabImage* lab, const SharpeningParams &sharpen // calculate contrast based blend factors to reduce sharpening in regions with low contrast JaggedArray blend(W, H); float contrast = sharpenParam.contrast / 100.f; - buildBlendMask(lab->L, blend, W, H, contrast, sharpenParam.method == "rld" ? sharpenParam.deconvamount / 100.f : 1.f); + buildBlendMask(lab->L, blend, W, H, contrast, 1.f); #ifdef _OPENMP #pragma omp parallel for #endif @@ -261,6 +294,26 @@ BENCHFUN float contrast = sharpenParam.contrast / 100.f; buildBlendMask(lab->L, blend, W, H, contrast); + JaggedArray blur(W, H); + + if (sharpenParam.blurradius >= 0.25f) { +#ifdef _OPENMP + #pragma omp parallel +#endif + { + gaussianBlur(lab->L, blur, W, H, sharpenParam.blurradius); +#ifdef _OPENMP + #pragma omp for +#endif + for (int i = 0; i < H; ++i) { + for (int j = 0; j < W; ++j) { + blur[i][j] = intp(blend[i][j], lab->L[i][j], std::max(blur[i][j], 0.0f)); + } + } + } + } + + #ifdef _OPENMP #pragma omp parallel #endif @@ -322,6 +375,18 @@ BENCHFUN delete [] b3; } + + if (sharpenParam.blurradius >= 0.25f) { +#ifdef _OPENMP + #pragma omp parallel for +#endif + for (int i = 0; i < H; ++i) { + for (int j = 0; j < W; ++j) { + lab->L[i][j] = intp(blend[i][j], lab->L[i][j], max(blur[i][j], 0.0f)); + } + } + } + } // To the extent possible under law, Manuel Llorens diff --git a/rtengine/ipsoftlight.cc b/rtengine/ipsoftlight.cc index 35bf9577a..74fb543aa 100644 --- a/rtengine/ipsoftlight.cc +++ b/rtengine/ipsoftlight.cc @@ -26,48 +26,49 @@ namespace rtengine { -void ImProcFunctions::softLight(float *red, float *green, float *blue, int istart, int jstart, int tW, int tH, int TS) +namespace { + +inline float sl(float blend, float x) +{ + if (!OOG(x)) { + const float orig = 1.f - blend; + float v = Color::gamma_srgb(x) / MAXVALF; + // Pegtop's formula from + // https://en.wikipedia.org/wiki/Blend_modes#Soft_Light + float v2 = v * v; + float v22 = v2 * 2.f; + v = v2 + v22 - v22 * v; + x = blend * Color::igamma_srgb(v * MAXVALF) + orig * x; + } + return x; +} + +} // namespace + + +void ImProcFunctions::softLight(LabImage *lab) { if (!params->softlight.enabled || !params->softlight.strength) { return; } + Imagefloat working(lab->W, lab->H); + lab2rgb(*lab, working, params->icm.workingProfile); + const float blend = params->softlight.strength / 100.f; - const float orig = 1.f - blend; - - const auto apply = - [=](float x) -> float - { - if (!OOG(x)) { - float v = Color::gamma_srgb(x) / MAXVALF; - // Pegtop's formula from - // https://en.wikipedia.org/wiki/Blend_modes#Soft_Light - float v2 = v * v; - float v22 = v2 * 2.f; - v = v2 + v22 - v22 * v; - x = blend * Color::igamma_srgb(v * MAXVALF) + orig * x; - } - return x; - }; #ifdef _OPENMP - #pragma omp parallel if (multiThread) + #pragma omp parallel for #endif - { - int ti = 0; -#ifdef _OPENMP - #pragma omp for -#endif - for (int i = istart; i < tH; i++) { - for (int j = jstart, tj = 0; j < tW; j++, tj++) { - const int idx = ti * TS + tj; - red[idx] = apply(red[idx]); - green[idx] = apply(green[idx]); - blue[idx] = apply(blue[idx]); - } - ++ti; + for (int y = 0; y < working.getHeight(); ++y) { + for (int x = 0; x < working.getWidth(); ++x) { + working.r(y, x) = sl(blend, working.r(y, x)); + working.g(y, x) = sl(blend, working.g(y, x)); + working.b(y, x) = sl(blend, working.b(y, x)); } } + + rgb2lab(working, *lab, params->icm.workingProfile); } } // namespace rtengine diff --git a/rtengine/ipvibrance.cc b/rtengine/ipvibrance.cc index f7a938c33..86c942731 100644 --- a/rtengine/ipvibrance.cc +++ b/rtengine/ipvibrance.cc @@ -170,12 +170,6 @@ void ImProcFunctions::vibrance (LabImage* lab) {static_cast(wiprof[2][0]), static_cast(wiprof[2][1]), static_cast(wiprof[2][2])} }; - - if (settings->verbose) { - printf ("vibrance: p0=%1.2f p1=%1.2f p2=%1.2f s0=%1.2f s1=%1.2f s2=%1.2f\n", p0, p1, p2, s0, s1, s2); - printf (" pastel=%f satur=%f limit= %1.2f chromamean=%0.5f\n", 1.0f + chromaPastel, 1.0f + chromaSatur, limitpastelsatur, chromamean); - } - #pragma omp parallel if (multiThread) { diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index e4a61caa0..860823b3a 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -736,7 +736,7 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const av = LVFU(lab->a[i][j]); bv = LVFU(lab->b[i][j]); huev = xatan2f(bv, av); - chrov = _mm_sqrt_ps(SQRV(av) + SQRV(bv)) / c327d68v; + chrov = vsqrtf(SQRV(av) + SQRV(bv)) / c327d68v; _mm_storeu_ps(&varhue[i1][j1], huev); _mm_storeu_ps(&varchro[i1][j1], chrov); @@ -1104,7 +1104,7 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const bv = LVFU(labco->b[i1][col]); STVF(atan2Buffer[col], xatan2f(bv, av)); - cv = _mm_sqrt_ps(SQRV(av) + SQRV(bv)); + cv = vsqrtf(SQRV(av) + SQRV(bv)); yv = av / cv; xv = bv / cv; xyMask = vmaskf_eq(zerov, cv); @@ -1992,7 +1992,7 @@ void ImProcFunctions::WaveletAandBAllAB(wavelet_decomposition &WaveletCoeffs_a, __m128 av = LVFU(WavCoeffs_a0[i * W_L + k]); __m128 bv = LVFU(WavCoeffs_b0[i * W_L + k]); __m128 huev = xatan2f(bv, av); - __m128 chrv = _mm_sqrt_ps(SQRV(av) + SQRV(bv)); + __m128 chrv = vsqrtf(SQRV(av) + SQRV(bv)); STVF(huebuffer[k], huev); STVF(chrbuffer[k], chrv); } @@ -2773,8 +2773,8 @@ void ImProcFunctions::ContAllL (float *koeLi[12], float *maxkoeLi, bool lipschit } } else if(cp.EDmet == 1) { //threshold adjuster float MaxPCompare = MaxP[level] * SQR(cp.edg_max / 100.f); //100 instead of b_r...case if b_r < 100 - float MaxNCompare = MaxN[level] * SQR(cp.edg_max / 100.f); //always rduce a little edge for near max values - float edgeSdCompare = (mean[level] + 1.5f * sigma[level]) * SQR(cp.edg_sd / t_r); // 1.5 standard deviation #80% range between mean 50% and 80% + float MaxNCompare = MaxN[level] * SQR(cp.edg_max / 100.f); //always reduce a little edge for near max values + float edgeSdCompare = (mean[level] + 1.5f * sigma[level]) * SQR(cp.edg_sd / t_r); // 1.5 standard deviation #80% range between mean 50% and 80% float edgeMeanCompare = mean[level] * SQR(cp.edg_mean / t_l); float edgeLowCompare = (5.f + SQR(cp.edg_low)); float edgeMeanFactor = cbrt(cp.edg_mean / t_l); @@ -2818,7 +2818,7 @@ void ImProcFunctions::ContAllL (float *koeLi[12], float *maxkoeLi, bool lipschit edge = edgePrecalc; } - //algorithm that take into account local contrast + //algorithm that takes into account local contrast // I use a thresholdadjuster with // Bottom left ==> minimal low value for local contrast (not 0, but 5...we can change) // 0 10*10 35*35 100*100 substantially correspond to the true distribution of low value, mean, standard-deviation and max (ed 5, 50, 400, 4000 @@ -2866,7 +2866,7 @@ void ImProcFunctions::ContAllL (float *koeLi[12], float *maxkoeLi, bool lipschit if(edge < 1.f) { edge = 1.f; } - }//mofify effect if sd change + }//modify effect if sd change if (fabs(WavCoeffs_L[dir][k]) < edgeMeanCompare) { edge *= edgeMeanFactor; diff --git a/rtengine/klt/trackFeatures.cc b/rtengine/klt/trackFeatures.cc index 474d0f5f5..a99225543 100644 --- a/rtengine/klt/trackFeatures.cc +++ b/rtengine/klt/trackFeatures.cc @@ -23,14 +23,14 @@ typedef float *_FloatWindow; /********************************************************************* * _interpolate - * - * Given a point (x,y) in an image, computes the bilinear interpolated - * gray-level value of the point in the image. + * + * Given a point (x,y) in an image, computes the bilinear interpolated + * gray-level value of the point in the image. */ static float _interpolate( - float x, - float y, + float x, + float y, _KLT_FloatImage img) { int xt = (int) x; /* coordinates of top-left corner */ @@ -61,7 +61,7 @@ static float _interpolate( * _computeIntensityDifference * * Given two images and the window center in both images, - * aligns the images wrt the window and computes the difference + * aligns the images wrt the window and computes the difference * between the two overlaid images. */ @@ -91,7 +91,7 @@ static void _computeIntensityDifference( * _computeGradientSum * * Given two gradients and the window center in both images, - * aligns the gradients wrt the window and computes the sum of the two + * aligns the gradients wrt the window and computes the sum of the two * overlaid gradients. */ @@ -126,7 +126,7 @@ static void _computeGradientSum( * _computeIntensityDifferenceLightingInsensitive * * Given two images and the window center in both images, - * aligns the images wrt the window and computes the difference + * aligns the images wrt the window and computes the difference * between the two overlaid images; normalizes for overall gain and bias. */ @@ -141,7 +141,7 @@ static void _computeIntensityDifferenceLightingInsensitive( int hw = width/2, hh = height/2; float g1, g2, sum1_squared = 0, sum2_squared = 0; int i, j; - + float sum1 = 0, sum2 = 0; float mean1, mean2,alpha,belta; /* Compute values */ @@ -165,7 +165,7 @@ static void _computeIntensityDifferenceLightingInsensitive( g1 = _interpolate(x1+i, y1+j, img1); g2 = _interpolate(x2+i, y2+j, img2); *imgdiff++ = g1- g2*alpha-belta; - } + } } @@ -173,7 +173,7 @@ static void _computeIntensityDifferenceLightingInsensitive( * _computeGradientSumLightingInsensitive * * Given two gradients and the window center in both images, - * aligns the gradients wrt the window and computes the sum of the two + * aligns the gradients wrt the window and computes the sum of the two * overlaid gradients; normalizes for overall gain and bias. */ @@ -184,7 +184,7 @@ static void _computeGradientSumLightingInsensitive( _KLT_FloatImage grady2, _KLT_FloatImage img1, /* images */ _KLT_FloatImage img2, - + float x1, float y1, /* center of window in 1st img */ float x2, float y2, /* center of window in 2nd img */ int width, int height, /* size of window */ @@ -194,7 +194,7 @@ static void _computeGradientSumLightingInsensitive( int hw = width/2, hh = height/2; float g1, g2, sum1_squared = 0, sum2_squared = 0; int i, j; - + float mean1, mean2, alpha; for (j = -hh ; j <= hh ; j++) for (i = -hw ; i <= hw ; i++) { @@ -205,7 +205,7 @@ static void _computeGradientSumLightingInsensitive( mean1 = sum1_squared/(width*height); mean2 = sum2_squared/(width*height); alpha = (float) sqrt(mean1/mean2); - + /* Compute values */ for (j = -hh ; j <= hh ; j++) for (i = -hw ; i <= hw ; i++) { @@ -215,7 +215,7 @@ static void _computeGradientSumLightingInsensitive( g1 = _interpolate(x1+i, y1+j, grady1); g2 = _interpolate(x2+i, y2+j, grady2); *grady++ = g1+ g2*alpha; - } + } } /********************************************************************* @@ -229,8 +229,8 @@ static void _compute2by2GradientMatrix( int width, /* size of window */ int height, float *gxx, /* return values */ - float *gxy, - float *gyy) + float *gxy, + float *gyy) { float gx, gy; @@ -246,8 +246,8 @@ static void _compute2by2GradientMatrix( *gyy += gy*gy; } } - - + + /********************************************************************* * _compute2by1ErrorVector * @@ -267,7 +267,7 @@ static void _compute2by1ErrorVector( int i; /* Compute values */ - *ex = 0; *ey = 0; + *ex = 0; *ey = 0; for (i = 0 ; i < width * height ; i++) { diff = *imgdiff++; *ex += diff * (*gradx++); @@ -297,7 +297,7 @@ static int _solveEquation( { float det = gxx*gyy - gxy*gxy; - + if (det < small) return KLT_SMALL_DET; *dx = (gyy*ex - gxy*ey)/det; @@ -309,7 +309,7 @@ static int _solveEquation( /********************************************************************* * _allocateFloatWindow */ - + static _FloatWindow _allocateFloatWindow( int width, int height) @@ -347,7 +347,7 @@ static void _printFloatWindow( } } */ - + /********************************************************************* * _sumAbsFloatWindow @@ -385,10 +385,10 @@ static int _trackFeature( float y1, float *x2, /* starting location of search in second image */ float *y2, - _KLT_FloatImage img1, + _KLT_FloatImage img1, _KLT_FloatImage gradx1, _KLT_FloatImage grady1, - _KLT_FloatImage img2, + _KLT_FloatImage img2, _KLT_FloatImage gradx2, _KLT_FloatImage grady2, int width, /* size of window */ @@ -410,7 +410,7 @@ static int _trackFeature( int nr = img1->nrows; float one_plus_eps = 1.001f; /* To prevent rounding errors */ - + /* Allocate memory for windows */ imgdiff = _allocateFloatWindow(width, height); gradx = _allocateFloatWindow(width, height); @@ -430,24 +430,24 @@ static int _trackFeature( /* Compute gradient and difference windows */ if (lighting_insensitive) { - _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); - _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2, + _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2, img1, img2, x1, y1, *x2, *y2, width, height, gradx, grady); } else { - _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); - _computeGradientSum(gradx1, grady1, gradx2, grady2, + _computeGradientSum(gradx1, grady1, gradx2, grady2, x1, y1, *x2, *y2, width, height, gradx, grady); } - + /* Use these windows to construct matrices */ - _compute2by2GradientMatrix(gradx, grady, width, height, + _compute2by2GradientMatrix(gradx, grady, width, height, &gxx, &gxy, &gyy); _compute2by1ErrorVector(imgdiff, gradx, grady, width, height, step_factor, &ex, &ey); - + /* Using matrices, solve equation for new displacement */ status = _solveEquation(gxx, gxy, gyy, ex, ey, small, &dx, &dy); if (status == KLT_SMALL_DET) break; @@ -459,19 +459,19 @@ static int _trackFeature( } while ((fabs(dx)>=th || fabs(dy)>=th) && iteration < max_iterations); /* Check whether window is out of bounds */ - if (*x2-hw < 0.0f || nc-(*x2+hw) < one_plus_eps || + if (*x2-hw < 0.0f || nc-(*x2+hw) < one_plus_eps || *y2-hh < 0.0f || nr-(*y2+hh) < one_plus_eps) status = KLT_OOB; /* Check whether residue is too large */ if (status == KLT_TRACKED) { if (lighting_insensitive) - _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); else - _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); - if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue) + if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue) status = KLT_LARGE_RESIDUE; } @@ -505,25 +505,25 @@ static KLT_BOOL _outOfBounds( -/********************************************************************** +/********************************************************************** * CONSISTENCY CHECK OF FEATURES BY AFFINE MAPPING (BEGIN) -* -* Created by: Thorsten Thormaehlen (University of Hannover) June 2004 +* +* Created by: Thorsten Thormaehlen (University of Hannover) June 2004 * thormae@tnt.uni-hannover.de -* +* * Permission is granted to any individual or institution to use, copy, modify, -* and distribute this part of the software, provided that this complete authorship -* and permission notice is maintained, intact, in all copies. +* and distribute this part of the software, provided that this complete authorship +* and permission notice is maintained, intact, in all copies. * * This software is provided "as is" without express or implied warranty. * * * The following static functions are helpers for the affine mapping. -* They all start with "_am". +* They all start with "_am". * There are also small changes in other files for the * affine mapping these are all marked by "for affine mapping" -* -* Thanks to Kevin Koeser (koeser@mip.informatik.uni-kiel.de) for fixing a bug +* +* Thanks to Kevin Koeser (koeser@mip.informatik.uni-kiel.de) for fixing a bug */ #define SWAP_ME(X,Y) {temp=(X);(X)=(Y);(Y)=temp;} @@ -613,7 +613,7 @@ static int _am_gauss_jordan_elimination(float **a, int n, float **b, int m) /********************************************************************* * _am_getGradientWinAffine * - * aligns the gradients with the affine transformed window + * aligns the gradients with the affine transformed window */ static void _am_getGradientWinAffine( @@ -628,7 +628,7 @@ static void _am_getGradientWinAffine( int hw = width/2, hh = height/2; int i, j; float mi, mj; - + /* Compute values */ for (j = -hh ; j <= hh ; j++) for (i = -hw ; i <= hw ; i++) { @@ -637,19 +637,19 @@ static void _am_getGradientWinAffine( *out_gradx++ = _interpolate(x+mi, y+mj, in_gradx); *out_grady++ = _interpolate(x+mi, y+mj, in_grady); } - + } ///********************************************************************* // * _computeAffineMappedImage // * used only for DEBUG output -// * +// * //*/ // //static void _am_computeAffineMappedImage( // _KLT_FloatImage img, /* images */ // float x, float y, /* center of window */ -// float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */ +// float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */ // int width, int height, /* size of window */ // _FloatWindow imgdiff) /* output */ //{ @@ -679,14 +679,14 @@ static void _am_getSubFloatImage( int hw = window->ncols/2, hh = window->nrows/2; int x0 = (int) x; int y0 = (int) y; - float * windata = window->data; + float * windata = window->data; int offset; int i, j; assert(x0 - hw >= 0); assert(y0 - hh >= 0); assert(x0 + hw <= img->ncols); - assert(y0 + hh <= img->nrows); + assert(y0 + hh <= img->nrows); /* copy values */ for (j = -hh ; j <= hh ; j++) @@ -700,10 +700,10 @@ static void _am_getSubFloatImage( * _am_computeIntensityDifferenceAffine * * Given two images and the window center in both images, - * aligns the images with the window and computes the difference + * aligns the images with the window and computes the difference * between the two overlaid images using the affine mapping. * A = [ Axx Axy] - * [ Ayx Ayy] + * [ Ayx Ayy] */ static void _am_computeIntensityDifferenceAffine( @@ -711,7 +711,7 @@ static void _am_computeIntensityDifferenceAffine( _KLT_FloatImage img2, float x1, float y1, /* center of window in 1st img */ float x2, float y2, /* center of window in 2nd img */ - float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */ + float Axx, float Ayx , float Axy, float Ayy, /* affine mapping */ int width, int height, /* size of window */ _FloatWindow imgdiff) /* output */ { @@ -746,15 +746,15 @@ static void _am_compute6by6GradientMatrix( int hw = width/2, hh = height/2; int i, j; float gx, gy, gxx, gxy, gyy, x, y, xx, xy, yy; - - - /* Set values to zero */ + + + /* Set values to zero */ for (j = 0 ; j < 6 ; j++) { for (i = j ; i < 6 ; i++) { T[j][i] = 0.0; } } - + for (j = -hh ; j <= hh ; j++) { for (i = -hw ; i <= hw ; i++) { gx = *gradx++; @@ -762,41 +762,41 @@ static void _am_compute6by6GradientMatrix( gxx = gx * gx; gxy = gx * gy; gyy = gy * gy; - x = (float) i; - y = (float) j; + x = (float) i; + y = (float) j; xx = x * x; xy = x * y; yy = y * y; - - T[0][0] += xx * gxx; + + T[0][0] += xx * gxx; T[0][1] += xx * gxy; T[0][2] += xy * gxx; T[0][3] += xy * gxy; T[0][4] += x * gxx; T[0][5] += x * gxy; - + T[1][1] += xx * gyy; T[1][2] += xy * gxy; T[1][3] += xy * gyy; T[1][4] += x * gxy; T[1][5] += x * gyy; - + T[2][2] += yy * gxx; T[2][3] += yy * gxy; T[2][4] += y * gxx; T[2][5] += y * gxy; - + T[3][3] += yy * gyy; T[3][4] += y * gxy; - T[3][5] += y * gyy; + T[3][5] += y * gyy; - T[4][4] += gxx; + T[4][4] += gxx; T[4][5] += gxy; - - T[5][5] += gyy; + + T[5][5] += gyy; } } - + for (j = 0 ; j < 5 ; j++) { for (i = j+1 ; i < 6 ; i++) { T[i][j] = T[j][i]; @@ -824,9 +824,9 @@ static void _am_compute6by1ErrorVector( int i, j; float diff, diffgradx, diffgrady; - /* Set values to zero */ - for(i = 0; i < 6; i++) e[i][0] = 0.0; - + /* Set values to zero */ + for(i = 0; i < 6; i++) e[i][0] = 0.0; + /* Compute values */ for (j = -hh ; j <= hh ; j++) { for (i = -hw ; i <= hw ; i++) { @@ -835,15 +835,15 @@ static void _am_compute6by1ErrorVector( diffgrady = diff * (*grady++); e[0][0] += diffgradx * i; e[1][0] += diffgrady * i; - e[2][0] += diffgradx * j; - e[3][0] += diffgrady * j; + e[2][0] += diffgradx * j; + e[3][0] += diffgrady * j; e[4][0] += diffgradx; - e[5][0] += diffgrady; + e[5][0] += diffgrady; } } - + for(i = 0; i < 6; i++) e[i][0] *= 0.5; - + } @@ -862,37 +862,37 @@ static void _am_compute4by4GradientMatrix( int hw = width/2, hh = height/2; int i, j; float gx, gy, x, y; - - - /* Set values to zero */ + + + /* Set values to zero */ for (j = 0 ; j < 4 ; j++) { for (i = 0 ; i < 4 ; i++) { T[j][i] = 0.0; } } - + for (j = -hh ; j <= hh ; j++) { for (i = -hw ; i <= hw ; i++) { gx = *gradx++; gy = *grady++; - x = (float) i; - y = (float) j; + x = (float) i; + y = (float) j; T[0][0] += (x*gx+y*gy) * (x*gx+y*gy); T[0][1] += (x*gx+y*gy)*(x*gy-y*gx); T[0][2] += (x*gx+y*gy)*gx; T[0][3] += (x*gx+y*gy)*gy; - + T[1][1] += (x*gy-y*gx) * (x*gy-y*gx); T[1][2] += (x*gy-y*gx)*gx; T[1][3] += (x*gy-y*gx)*gy; - + T[2][2] += gx*gx; T[2][3] += gx*gy; - + T[3][3] += gy*gy; } } - + for (j = 0 ; j < 3 ; j++) { for (i = j+1 ; i < 4 ; i++) { T[i][j] = T[j][i]; @@ -918,9 +918,9 @@ static void _am_compute4by1ErrorVector( int i, j; float diff, diffgradx, diffgrady; - /* Set values to zero */ - for(i = 0; i < 4; i++) e[i][0] = 0.0; - + /* Set values to zero */ + for(i = 0; i < 4; i++) e[i][0] = 0.0; + /* Compute values */ for (j = -hh ; j <= hh ; j++) { for (i = -hw ; i <= hw ; i++) { @@ -933,9 +933,9 @@ static void _am_compute4by1ErrorVector( e[3][0] += diffgrady; } } - + for(i = 0; i < 4; i++) e[i][0] *= 0.5; - + } @@ -950,7 +950,7 @@ static void _am_compute4by1ErrorVector( * KLT_TRACKED otherwise. */ -/* if you enalbe the DEBUG_AFFINE_MAPPING make sure you have created a directory "./debug" */ +/* if you enable the DEBUG_AFFINE_MAPPING make sure you have created a directory "./debug" */ /* #define DEBUG_AFFINE_MAPPING */ #ifdef DEBUG_AFFINE_MAPPING @@ -963,10 +963,10 @@ static int _am_trackFeatureAffine( float y1, float *x2, /* starting location of search in second image */ float *y2, - _KLT_FloatImage img1, + _KLT_FloatImage img1, _KLT_FloatImage gradx1, _KLT_FloatImage grady1, - _KLT_FloatImage img2, + _KLT_FloatImage img2, _KLT_FloatImage gradx2, _KLT_FloatImage grady2, int width, /* size of window */ @@ -980,7 +980,7 @@ static int _am_trackFeatureAffine( int lighting_insensitive, /* whether to normalize for gain and bias */ int affine_map, /* whether to evaluates the consistency of features with affine mapping */ float mdd, /* difference between the displacements */ - float *Axx, float *Ayx, + float *Axx, float *Ayx, float *Axy, float *Ayy) /* used affine mapping */ { @@ -996,7 +996,7 @@ static int _am_trackFeatureAffine( int nc2 = img2->ncols; int nr2 = img2->nrows; float **a; - float **T; + float **T; float one_plus_eps = 1.001f; /* To prevent rounding errors */ float old_x2 = *x2; float old_y2 = *y2; @@ -1007,7 +1007,7 @@ static int _am_trackFeatureAffine( _KLT_FloatImage aff_diff_win = _KLTCreateFloatImage(width,height); printf("starting location x2=%f y2=%f\n", *x2, *y2); #endif - + /* Allocate memory for windows */ imgdiff = _allocateFloatWindow(width, height); gradx = _allocateFloatWindow(width, height); @@ -1019,7 +1019,7 @@ static int _am_trackFeatureAffine( do { if(!affine_map) { /* pure translation tracker */ - + /* If out of bounds, exit loop */ if ( x1-hw < 0.0f || nc1-( x1+hw) < one_plus_eps || *x2-hw < 0.0f || nc2-(*x2+hw) < one_plus_eps || @@ -1028,47 +1028,47 @@ static int _am_trackFeatureAffine( status = KLT_OOB; break; } - + /* Compute gradient and difference windows */ if (lighting_insensitive) { - _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifferenceLightingInsensitive(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); - _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2, + _computeGradientSumLightingInsensitive(gradx1, grady1, gradx2, grady2, img1, img2, x1, y1, *x2, *y2, width, height, gradx, grady); } else { - _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); - _computeGradientSum(gradx1, grady1, gradx2, grady2, + _computeGradientSum(gradx1, grady1, gradx2, grady2, x1, y1, *x2, *y2, width, height, gradx, grady); } - -#ifdef DEBUG_AFFINE_MAPPING + +#ifdef DEBUG_AFFINE_MAPPING aff_diff_win->data = imgdiff; sprintf(fname, "./debug/kltimg_trans_diff_win%03d.%03d.pgm", glob_index, counter); printf("%s\n", fname); _KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0); printf("iter = %d translation tracker res: %f\n", iteration, _sumAbsFloatWindow(imgdiff, width, height)/(width*height)); #endif - + /* Use these windows to construct matrices */ - _compute2by2GradientMatrix(gradx, grady, width, height, + _compute2by2GradientMatrix(gradx, grady, width, height, &gxx, &gxy, &gyy); _compute2by1ErrorVector(imgdiff, gradx, grady, width, height, step_factor, &ex, &ey); - + /* Using matrices, solve equation for new displacement */ status = _solveEquation(gxx, gxy, gyy, ex, ey, small, &dx, &dy); convergence = (fabs(dx) < th && fabs(dy) < th); - + *x2 += dx; *y2 += dy; - + }else{ /* affine tracker */ - + float ul_x = *Axx * (-hw) + *Axy * hh + *x2; /* upper left corner */ - float ul_y = *Ayx * (-hw) + *Ayy * hh + *y2; + float ul_y = *Ayx * (-hw) + *Ayy * hh + *y2; float ll_x = *Axx * (-hw) + *Axy * (-hh) + *x2; /* lower left corner */ float ll_y = *Ayx * (-hw) + *Ayy * (-hh) + *y2; float ur_x = *Axx * hw + *Axy * hh + *x2; /* upper right corner */ @@ -1098,25 +1098,25 @@ static int _am_trackFeatureAffine( sprintf(fname, "./debug/kltimg_aff_diff_win%03d.%03d_1.pgm", glob_index, counter); printf("%s\n", fname); _KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0); - + _am_computeAffineMappedImage(img2, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy, width, height, imgdiff); aff_diff_win->data = imgdiff; sprintf(fname, "./debug/kltimg_aff_diff_win%03d.%03d_2.pgm", glob_index, counter); printf("%s\n", fname); _KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0); #endif - + _am_computeIntensityDifferenceAffine(img1, img2, x1, y1, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy, width, height, imgdiff); -#ifdef DEBUG_AFFINE_MAPPING +#ifdef DEBUG_AFFINE_MAPPING aff_diff_win->data = imgdiff; sprintf(fname, "./debug/kltimg_aff_diff_win%03d.%03d_3.pgm", glob_index,counter); printf("%s\n", fname); _KLTWriteAbsFloatImageToPGM(aff_diff_win, fname,256.0); - + printf("iter = %d affine tracker res: %f\n", iteration, _sumAbsFloatWindow(imgdiff, width, height)/(width*height)); -#endif - +#endif + _am_getGradientWinAffine(gradx2, grady2, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy, width, height, gradx, grady); @@ -1124,24 +1124,24 @@ static int _am_trackFeatureAffine( case 1: _am_compute4by1ErrorVector(imgdiff, gradx, grady, width, height, a); _am_compute4by4GradientMatrix(gradx, grady, width, height, T); - + status = _am_gauss_jordan_elimination(T,4,a,1); - + *Axx += a[0][0]; *Ayx += a[1][0]; *Ayy = *Axx; *Axy = -(*Ayx); - + dx = a[2][0]; dy = a[3][0]; - + break; case 2: _am_compute6by1ErrorVector(imgdiff, gradx, grady, width, height, a); _am_compute6by6GradientMatrix(gradx, grady, width, height, T); - + status = _am_gauss_jordan_elimination(T,6,a,1); - + *Axx += a[0][0]; *Ayx += a[1][0]; *Axy += a[2][0]; @@ -1149,30 +1149,30 @@ static int _am_trackFeatureAffine( dx = a[4][0]; dy = a[5][0]; - + break; } - + *x2 += dx; *y2 += dy; - + /* old upper left corner - new upper left corner */ - ul_x -= *Axx * (-hw) + *Axy * hh + *x2; - ul_y -= *Ayx * (-hw) + *Ayy * hh + *y2; + ul_x -= *Axx * (-hw) + *Axy * hh + *x2; + ul_y -= *Ayx * (-hw) + *Ayy * hh + *y2; /* old lower left corner - new lower left corner */ - ll_x -= *Axx * (-hw) + *Axy * (-hh) + *x2; + ll_x -= *Axx * (-hw) + *Axy * (-hh) + *x2; ll_y -= *Ayx * (-hw) + *Ayy * (-hh) + *y2; /* old upper right corner - new upper right corner */ - ur_x -= *Axx * hw + *Axy * hh + *x2; + ur_x -= *Axx * hw + *Axy * hh + *x2; ur_y -= *Ayx * hw + *Ayy * hh + *y2; /* old lower right corner - new lower right corner */ - lr_x -= *Axx * hw + *Axy * (-hh) + *x2; + lr_x -= *Axx * hw + *Axy * (-hh) + *x2; lr_y -= *Ayx * hw + *Ayy * (-hh) + *y2; -#ifdef DEBUG_AFFINE_MAPPING +#ifdef DEBUG_AFFINE_MAPPING printf ("iter = %d, ul_x=%f ul_y=%f ll_x=%f ll_y=%f ur_x=%f ur_y=%f lr_x=%f lr_y=%f \n", iteration, ul_x, ul_y, ll_x, ll_y, ur_x, ur_y, lr_x, lr_y); -#endif +#endif convergence = (fabs(dx) < th && fabs(dy) < th && fabs(ul_x) < th_aff && fabs(ul_y) < th_aff && @@ -1180,19 +1180,19 @@ static int _am_trackFeatureAffine( fabs(ur_x) < th_aff && fabs(ur_y) < th_aff && fabs(lr_x) < th_aff && fabs(lr_y) < th_aff); } - + if (status == KLT_SMALL_DET) break; iteration++; -#ifdef DEBUG_AFFINE_MAPPING +#ifdef DEBUG_AFFINE_MAPPING printf ("iter = %d, x1=%f, y1=%f, x2=%f, y2=%f, Axx=%f, Ayx=%f , Axy=%f, Ayy=%f \n",iteration, x1, y1, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy); -#endif - } while ( !convergence && iteration < max_iterations); +#endif + } while ( !convergence && iteration < max_iterations); /*} while ( (fabs(dx)>=th || fabs(dy)>=th || (affine_map && iteration < 8) ) && iteration < max_iterations); */ _am_free_matrix(T); _am_free_matrix(a); /* Check whether window is out of bounds */ - if (*x2-hw < 0.0f || nc2-(*x2+hw) < one_plus_eps || + if (*x2-hw < 0.0f || nc2-(*x2+hw) < one_plus_eps || *y2-hh < 0.0f || nr2-(*y2+hh) < one_plus_eps) status = KLT_OOB; @@ -1203,7 +1203,7 @@ static int _am_trackFeatureAffine( /* Check whether residue is too large */ if (status == KLT_TRACKED) { if(!affine_map){ - _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, + _computeIntensityDifference(img1, img2, x1, y1, *x2, *y2, width, height, imgdiff); }else{ _am_computeIntensityDifferenceAffine(img1, img2, x1, y1, *x2, *y2, *Axx, *Ayx , *Axy, *Ayy, @@ -1211,8 +1211,8 @@ static int _am_trackFeatureAffine( } #ifdef DEBUG_AFFINE_MAPPING printf("iter = %d final_res = %f\n", iteration, _sumAbsFloatWindow(imgdiff, width, height)/(width*height)); -#endif - if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue) +#endif + if (_sumAbsFloatWindow(imgdiff, width, height)/(width*height) > max_residue) status = KLT_LARGE_RESIDUE; } @@ -1222,8 +1222,8 @@ static int _am_trackFeatureAffine( #ifdef DEBUG_AFFINE_MAPPING printf("iter = %d status=%d\n", iteration, status); _KLTFreeFloatImage( aff_diff_win ); -#endif - +#endif + /* Return appropriate value */ return status; } @@ -1313,7 +1313,7 @@ void KLTTrackFeatures( pyramid1_gradx = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels); pyramid1_grady = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels); for (i = 0 ; i < tc->nPyramidLevels ; i++) - _KLTComputeGradients(pyramid1->img[i], tc->grad_sigma, + _KLTComputeGradients(pyramid1->img[i], tc->grad_sigma, pyramid1_gradx->img[i], pyramid1_grady->img[i]); } @@ -1327,7 +1327,7 @@ void KLTTrackFeatures( pyramid2_gradx = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels); pyramid2_grady = _KLTCreatePyramid(ncols, nrows, (int) subsampling, tc->nPyramidLevels); for (i = 0 ; i < tc->nPyramidLevels ; i++) - _KLTComputeGradients(pyramid2->img[i], tc->grad_sigma, + _KLTComputeGradients(pyramid2->img[i], tc->grad_sigma, pyramid2_gradx->img[i], pyramid2_grady->img[i]); @@ -1372,11 +1372,11 @@ void KLTTrackFeatures( xloc *= subsampling; yloc *= subsampling; xlocout *= subsampling; ylocout *= subsampling; - val = _trackFeature(xloc, yloc, + val = _trackFeature(xloc, yloc, &xlocout, &ylocout, - pyramid1->img[r], - pyramid1_gradx->img[r], pyramid1_grady->img[r], - pyramid2->img[r], + pyramid1->img[r], + pyramid1_gradx->img[r], pyramid1_grady->img[r], + pyramid2->img[r], pyramid2_gradx->img[r], pyramid2_grady->img[r], tc->window_width, tc->window_height, tc->step_factor, @@ -1449,7 +1449,7 @@ void KLTTrackFeatures( if (tc->affineConsistencyCheck >= 0 && val == KLT_TRACKED) { /*for affine mapping*/ int border = 2; /* add border for interpolation */ -#ifdef DEBUG_AFFINE_MAPPING +#ifdef DEBUG_AFFINE_MAPPING glob_index = indx; #endif @@ -1467,10 +1467,10 @@ void KLTTrackFeatures( /* affine tracking */ val = _am_trackFeatureAffine(featurelist->feature[indx]->aff_x, featurelist->feature[indx]->aff_y, &xlocout, &ylocout, - featurelist->feature[indx]->aff_img, - featurelist->feature[indx]->aff_img_gradx, + featurelist->feature[indx]->aff_img, + featurelist->feature[indx]->aff_img_gradx, featurelist->feature[indx]->aff_img_grady, - pyramid2->img[0], + pyramid2->img[0], pyramid2_gradx->img[0], pyramid2_grady->img[0], tc->affine_window_width, tc->affine_window_height, tc->step_factor, @@ -1478,14 +1478,14 @@ void KLTTrackFeatures( tc->min_determinant, tc->min_displacement, tc->affine_min_displacement, - tc->affine_max_residue, + tc->affine_max_residue, tc->lighting_insensitive, tc->affineConsistencyCheck, tc->affine_max_displacement_differ, &featurelist->feature[indx]->aff_Axx, &featurelist->feature[indx]->aff_Ayx, &featurelist->feature[indx]->aff_Axy, - &featurelist->feature[indx]->aff_Ayy + &featurelist->feature[indx]->aff_Ayy ); featurelist->feature[indx]->val = val; if(val != KLT_TRACKED){ @@ -1538,5 +1538,3 @@ void KLTTrackFeatures( } } - - diff --git a/rtengine/labimage.cc b/rtengine/labimage.cc index bcadda0ed..f4e13049a 100644 --- a/rtengine/labimage.cc +++ b/rtengine/labimage.cc @@ -101,6 +101,6 @@ void LabImage::deleteLab() void LabImage::reallocLab() { allocLab(W, H); -}; +} } diff --git a/rtengine/lcp.cc b/rtengine/lcp.cc index a1484cdf6..34ad7a545 100644 --- a/rtengine/lcp.cc +++ b/rtengine/lcp.cc @@ -760,12 +760,13 @@ void XMLCALL rtengine::LCPProfile::XmlStartHandler(void* pLCPProfile, const char ++src; } - strcpy(pProf->lastTag, src); - + strncpy(pProf->lastTag, src, sizeof(pProf->lastTag) - 1); + pProf->lastTag[sizeof(pProf->lastTag) - 1] = 0; const std::string src_str = src; if (src_str == "VignetteModelPiecewiseParam") { - strcpy(pProf->inInvalidTag, src); + strncpy(pProf->inInvalidTag, src, sizeof(pProf->inInvalidTag) - 1); + pProf->inInvalidTag[sizeof(pProf->inInvalidTag) - 1] = 0; } if (src_str == "CameraProfiles") { @@ -931,7 +932,12 @@ std::shared_ptr rtengine::LCPStore::getProfile(const Glib: std::shared_ptr res; if (!cache.get(filename, res)) { - res.reset(new LCPProfile(filename)); + try { + res.reset(new LCPProfile(filename)); + } catch (...) { + return nullptr; + } + cache.set(filename, res); } diff --git a/rtengine/lcp.h b/rtengine/lcp.h index b50fd335e..2d9707907 100644 --- a/rtengine/lcp.h +++ b/rtengine/lcp.h @@ -131,8 +131,8 @@ private: bool inPerspect; bool inAlternateLensID; bool inAlternateLensNames; - char lastTag[256]; - char inInvalidTag[256]; + char lastTag[257]; + char inInvalidTag[257]; LCPPersModel* pCurPersModel; LCPModelCommon* pCurCommon; @@ -153,7 +153,7 @@ public: Glib::ustring getDefaultCommonDirectory() const; private: - LCPStore(unsigned int _cache_size = 32); + explicit LCPStore(unsigned int _cache_size = 32); // Maps file name to profile as cache mutable Cache> cache; @@ -190,11 +190,11 @@ public: ); - void correctDistortion(double &x, double &y, int cx, int cy, double scale) const; // MUST be the first stage - bool isCACorrectionAvailable() const; - void correctCA(double& x, double& y, int cx, int cy, int channel) const; - void processVignetteLine(int width, int y, float* line) const; - void processVignetteLine3Channels(int width, int y, float* line) const; + void correctDistortion(double &x, double &y, int cx, int cy, double scale) const override; // MUST be the first stage + bool isCACorrectionAvailable() const override; + void correctCA(double& x, double& y, int cx, int cy, int channel) const override; + void processVignetteLine(int width, int y, float* line) const override; + void processVignetteLine3Channels(int width, int y, float* line) const override; private: bool enableCA; // is the mapper capable if CA correction? diff --git a/rtengine/lj92.c b/rtengine/lj92.c new file mode 100644 index 000000000..d72075a62 --- /dev/null +++ b/rtengine/lj92.c @@ -0,0 +1,698 @@ +/* +lj92.c +(c) Andrew Baldwin 2014 + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include +#include +#include +#include + +#include "lj92.h" + +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; + +//#define SLOW_HUFF +//#define DEBUG + +typedef struct _ljp { + u8* data; + u8* dataend; + int datalen; + int scanstart; + int ix; + int x; // Width + int y; // Height + int bits; // Bit depth + int writelen; // Write rows this long + int skiplen; // Skip this many values after each row + u16* linearize; // Linearization table + int linlen; + int sssshist[16]; + + // Huffman table - only one supported, and probably needed +#ifdef SLOW_HUFF + int* maxcode; + int* mincode; + int* valptr; + u8* huffval; + int* huffsize; + int* huffcode; +#else + u16* hufflut; + int huffbits; +#endif + // Parse state + int cnt; + u32 b; + u16* image; + u16* rowcache; + u16* outrow[2]; +} ljp; + +static int find(ljp* self) { + int ix = self->ix; + u8* data = self->data; + while (data[ix] != 0xFF && ix<(self->datalen-1)) { + ix += 1; + } + ix += 2; + if (ix>=self->datalen) return -1; + self->ix = ix; + return data[ix-1]; +} + +#define BEH(ptr) ((((int)(*&ptr))<<8)|(*(&ptr+1))) + +static int parseHuff(ljp* self) { + int ret = LJ92_ERROR_CORRUPT; + u8* huffhead = &self->data[self->ix]; // xstruct.unpack('>HB16B',self.data[self.ix:self.ix+19]) + u8* bits = &huffhead[2]; + bits[0] = 0; // Because table starts from 1 + unsigned int hufflen = BEH(huffhead[0]); + if ((self->ix + hufflen) >= self->datalen) return ret; +#ifdef SLOW_HUFF + u8* huffval = calloc(hufflen - 19,sizeof(u8)); + if (huffval == NULL) return LJ92_ERROR_NO_MEMORY; + self->huffval = huffval; + for (int hix=0;hix<(hufflen-19);hix++) { + huffval[hix] = self->data[self->ix+19+hix]; +#ifdef DEBUG + printf("huffval[%d]=%d\n",hix,huffval[hix]); +#endif + } + self->ix += hufflen; + // Generate huffman table + int k = 0; + int i = 1; + int j = 1; + int huffsize_needed = 1; + // First calculate how long huffsize needs to be + while (i<=16) { + while (j<=bits[i]) { + huffsize_needed++; + k = k+1; + j = j+1; + } + i = i+1; + j = 1; + } + // Now allocate and do it + int* huffsize = calloc(huffsize_needed,sizeof(int)); + if (huffsize == NULL) return LJ92_ERROR_NO_MEMORY; + self->huffsize = huffsize; + k = 0; + i = 1; + j = 1; + // First calculate how long huffsize needs to be + int hsix = 0; + while (i<=16) { + while (j<=bits[i]) { + huffsize[hsix++] = i; + k = k+1; + j = j+1; + } + i = i+1; + j = 1; + } + huffsize[hsix++] = 0; + + // Calculate the size of huffcode array + int huffcode_needed = 0; + k = 0; + int code = 0; + int si = huffsize[0]; + while (1) { + while (huffsize[k] == si) { + huffcode_needed++; + code = code+1; + k = k+1; + } + if (huffsize[k] == 0) + break; + while (huffsize[k] != si) { + code = code << 1; + si = si + 1; + } + } + // Now fill it + int* huffcode = calloc(huffcode_needed,sizeof(int)); + if (huffcode == NULL) return LJ92_ERROR_NO_MEMORY; + self->huffcode = huffcode; + int hcix = 0; + k = 0; + code = 0; + si = huffsize[0]; + while (1) { + while (huffsize[k] == si) { + huffcode[hcix++] = code; + code = code+1; + k = k+1; + } + if (huffsize[k] == 0) + break; + while (huffsize[k] != si) { + code = code << 1; + si = si + 1; + } + } + + i = 0; + j = 0; + + int* maxcode = calloc(17,sizeof(int)); + if (maxcode == NULL) return LJ92_ERROR_NO_MEMORY; + self->maxcode = maxcode; + int* mincode = calloc(17,sizeof(int)); + if (mincode == NULL) return LJ92_ERROR_NO_MEMORY; + self->mincode = mincode; + int* valptr = calloc(17,sizeof(int)); + if (valptr == NULL) return LJ92_ERROR_NO_MEMORY; + self->valptr = valptr; + + while (1) { + while (1) { + i++; + if (i>16) + break; + if (bits[i]!=0) + break; + maxcode[i] = -1; + } + if (i>16) + break; + valptr[i] = j; + mincode[i] = huffcode[j]; + j = j+bits[i]-1; + maxcode[i] = huffcode[j]; + j++; + } + free(huffsize); + self->huffsize = NULL; + free(huffcode); + self->huffcode = NULL; + ret = LJ92_ERROR_NONE; +#else + /* Calculate huffman direct lut */ + // How many bits in the table - find highest entry + u8* huffvals = &self->data[self->ix+19]; + int maxbits = 16; + while (maxbits>0) { + if (bits[maxbits]) break; + maxbits--; + } + self->huffbits = maxbits; + /* Now fill the lut */ + u16* hufflut = (u16*)malloc((1<hufflut = hufflut; + int i = 0; + int hv = 0; + int rv = 0; + int vl = 0; // i + int hcode; + int bitsused = 1; +#ifdef DEBUG + printf("%04x:%x:%d:%x\n",i,huffvals[hv],bitsused,1<<(maxbits-bitsused)); +#endif + while (i<1<maxbits) { + break; // Done. Should never get here! + } + if (vl >= bits[bitsused]) { + bitsused++; + vl = 0; + continue; + } + if (rv == 1 << (maxbits-bitsused)) { + rv = 0; + vl++; + hv++; +#ifdef DEBUG + printf("%04x:%x:%d:%x\n",i,huffvals[hv],bitsused,1<<(maxbits-bitsused)); +#endif + continue; + } + hcode = huffvals[hv]; + hufflut[i] = hcode<<8 | bitsused; + //printf("%d %d %d\n",i,bitsused,hcode); + i++; + rv++; + } + ret = LJ92_ERROR_NONE; +#endif + return ret; +} + +static int parseSof3(ljp* self) { + if (self->ix+6 >= self->datalen) return LJ92_ERROR_CORRUPT; + self->y = BEH(self->data[self->ix+3]); + self->x = BEH(self->data[self->ix+5]); + self->bits = self->data[self->ix+2]; + self->ix += BEH(self->data[self->ix]); + return LJ92_ERROR_NONE; +} + +static int parseBlock(ljp* self,int marker) { + self->ix += BEH(self->data[self->ix]); + if (self->ix >= self->datalen) return LJ92_ERROR_CORRUPT; + return LJ92_ERROR_NONE; +} + +#ifdef SLOW_HUFF +static int nextbit(ljp* self) { + u32 b = self->b; + if (self->cnt == 0) { + u8* data = &self->data[self->ix]; + u32 next = *data++; + b = next; + if (next == 0xff) { + data++; + self->ix++; + } + self->ix++; + self->cnt = 8; + } + int bit = b >> 7; + self->cnt--; + self->b = (b << 1)&0xFF; + return bit; +} + +static int decode(ljp* self) { + int i = 1; + int code = nextbit(self); + while (code > self->maxcode[i]) { + i++; + code = (code << 1) + nextbit(self); + } + int j = self->valptr[i]; + j = j + code - self->mincode[i]; + int value = self->huffval[j]; + return value; +} + +static int receive(ljp* self,int ssss) { + int i = 0; + int v = 0; + while (i != ssss) { + i++; + v = (v<<1) + nextbit(self); + } + return v; +} + +static int extend(ljp* self,int v,int t) { + int vt = 1<<(t-1); + if (v < vt) { + vt = (-1 << t) + 1; + v = v + vt; + } + return v; +} +#endif + +inline static int nextdiff(ljp* self, int Px) { +#ifdef SLOW_HUFF + int t = decode(self); + int diff = receive(self,t); + diff = extend(self,diff,t); + //printf("%d %d %d %x\n",Px+diff,Px,diff,t);//,index,usedbits); +#else + u32 b = self->b; + int cnt = self->cnt; + int huffbits = self->huffbits; + int ix = self->ix; + int next; + while (cnt < huffbits) { + next = *(u16*)&self->data[ix]; + int one = next&0xFF; + int two = next>>8; + b = (b<<16)|(one<<8)|two; + cnt += 16; + ix += 2; + if (one==0xFF) { + //printf("%x %x %x %x %d\n",one,two,b,b>>8,cnt); + b >>= 8; + cnt -= 8; + } else if (two==0xFF) ix++; + } + int index = b >> (cnt - huffbits); + u16 ssssused = self->hufflut[index]; + int usedbits = ssssused&0xFF; + int t = ssssused>>8; + self->sssshist[t]++; + cnt -= usedbits; + int keepbitsmask = (1 << cnt)-1; + b &= keepbitsmask; + while (cnt < t) { + next = *(u16*)&self->data[ix]; + int one = next&0xFF; + int two = next>>8; + b = (b<<16)|(one<<8)|two; + cnt += 16; + ix += 2; + if (one==0xFF) { + b >>= 8; + cnt -= 8; + } else if (two==0xFF) ix++; + } + cnt -= t; + int diff = b >> cnt; + int vt = 1<<(t-1); + if (diff < vt) { + vt = (-1 << t) + 1; + diff += vt; + } + keepbitsmask = (1 << cnt)-1; + self->b = b & keepbitsmask; + self->cnt = cnt; + self->ix = ix; + //printf("%d %d\n",t,diff); + //printf("%d %d %d %x %x %d\n",Px+diff,Px,diff,t,index,usedbits); +#ifdef DEBUG +#endif +#endif + return diff; +} + +static int parsePred6(ljp* self) { + int ret = LJ92_ERROR_CORRUPT; + self->ix = self->scanstart; + //int compcount = self->data[self->ix+2]; + self->ix += BEH(self->data[self->ix]); + self->cnt = 0; + self->b = 0; + int write = self->writelen; + // Now need to decode huffman coded values + int c = 0; + int pixels = self->y * self->x; + u16* out = self->image; + u16* temprow; + u16* thisrow = self->outrow[0]; + u16* lastrow = self->outrow[1]; + + // First pixel predicted from base value + int diff; + int Px; + int col = 0; + int row = 0; + int left = 0; + int linear; + + // First pixel + diff = nextdiff(self,0); + Px = 1 << (self->bits-1); + left = Px + diff; + if (self->linearize) + linear = self->linearize[left]; + else + linear = left; + thisrow[col++] = left; + out[c++] = linear; + if (self->ix >= self->datalen) return ret; + --write; + int rowcount = self->x-1; + while (rowcount--) { + diff = nextdiff(self,0); + Px = left; + left = Px + diff; + if (self->linearize) + linear = self->linearize[left]; + else + linear = left; + thisrow[col++] = left; + out[c++] = linear; + //printf("%d %d %d %d %x\n",col-1,diff,left,thisrow[col-1],&thisrow[col-1]); + if (self->ix >= self->datalen) return ret; + if (--write==0) { + out += self->skiplen; + write = self->writelen; + } + } + temprow = lastrow; + lastrow = thisrow; + thisrow = temprow; + row++; + //printf("%x %x\n",thisrow,lastrow); + while (clinearize) { + if (left>self->linlen) return LJ92_ERROR_CORRUPT; + linear = self->linearize[left]; + } else + linear = left; + thisrow[col++] = left; + //printf("%d %d %d %d\n",col,diff,left,lastrow[col]); + out[c++] = linear; + if (self->ix >= self->datalen) break; + rowcount = self->x-1; + if (--write==0) { + out += self->skiplen; + write = self->writelen; + } + while (rowcount--) { + diff = nextdiff(self,0); + Px = lastrow[col] + ((left - lastrow[col-1])>>1); + left = Px + diff; + //printf("%d %d %d %d %d %x\n",col,diff,left,lastrow[col],lastrow[col-1],&lastrow[col]); + if (self->linearize) { + if (left>self->linlen) return LJ92_ERROR_CORRUPT; + linear = self->linearize[left]; + } else + linear = left; + thisrow[col++] = left; + out[c++] = linear; + if (--write==0) { + out += self->skiplen; + write = self->writelen; + } + } + temprow = lastrow; + lastrow = thisrow; + thisrow = temprow; + if (self->ix >= self->datalen) break; + } + if (c >= pixels) ret = LJ92_ERROR_NONE; + return ret; +} + +static int parseScan(ljp* self) { + int ret = LJ92_ERROR_CORRUPT; + memset(self->sssshist,0,sizeof(self->sssshist)); + self->ix = self->scanstart; + int compcount = self->data[self->ix+2]; + int pred = self->data[self->ix+3+2*compcount]; + if (pred<0 || pred>7) return ret; + if (pred==6) return parsePred6(self); // Fast path + self->ix += BEH(self->data[self->ix]); + self->cnt = 0; + self->b = 0; + int write = self->writelen; + // Now need to decode huffman coded values + int c = 0; + int pixels = self->y * self->x; + u16* out = self->image; + u16* thisrow = self->outrow[0]; + u16* lastrow = self->outrow[1]; + + // First pixel predicted from base value + int diff; + int Px = 0; + int col = 0; + int row = 0; + int left = 0; + while (cbits-1); + } else if (row==0) { + Px = left; + } else if (col==0) { + Px = lastrow[col]; // Use value above for first pixel in row + } else { + switch (pred) { + case 0: + Px = 0; break; // No prediction... should not be used + case 1: + Px = left; break; + case 2: + Px = lastrow[col]; break; + case 3: + Px = lastrow[col-1];break; + case 4: + Px = left + lastrow[col] - lastrow[col-1];break; + case 5: + Px = left + ((lastrow[col] - lastrow[col-1])>>1);break; + /* case 6 has a shortcut above + case 6: + Px = lastrow[col] + ((left - lastrow[col-1])>>1);break; + */ + case 7: + Px = (left + lastrow[col])>>1;break; + } + } + diff = nextdiff(self,Px); + left = Px + diff; + //printf("%d %d %d\n",c,diff,left); + int linear; + if (self->linearize) { + if (left>self->linlen) return LJ92_ERROR_CORRUPT; + linear = self->linearize[left]; + } else + linear = left; + thisrow[col] = left; + out[c++] = linear; + if (++col==self->x) { + col = 0; + row++; + u16* temprow = lastrow; + lastrow = thisrow; + thisrow = temprow; + } + if (--write==0) { + out += self->skiplen; + write = self->writelen; + } + if (self->ix >= self->datalen+2) break; + } + if (c >= pixels) ret = LJ92_ERROR_NONE; + /*for (int h=0;h<17;h++) { + printf("ssss:%d=%d (%f)\n",h,self->sssshist[h],(float)self->sssshist[h]/(float)(pixels)); + }*/ + return ret; +} + +static int parseImage(ljp* self) { + int ret = LJ92_ERROR_NONE; + while (1) { + int nextMarker = find(self); + if (nextMarker == 0xc4) + ret = parseHuff(self); + else if (nextMarker == 0xc3) + ret = parseSof3(self); + else if (nextMarker == 0xfe)// Comment + ret = parseBlock(self,nextMarker); + else if (nextMarker == 0xd9) // End of image + break; + else if (nextMarker == 0xda) { + self->scanstart = self->ix; + ret = LJ92_ERROR_NONE; + break; + } else if (nextMarker == -1) { + ret = LJ92_ERROR_CORRUPT; + break; + } else + ret = parseBlock(self,nextMarker); + if (ret != LJ92_ERROR_NONE) break; + } + return ret; +} + +static int findSoI(ljp* self) { + int ret = LJ92_ERROR_CORRUPT; + if (find(self)==0xd8) + ret = parseImage(self); + return ret; +} + +static void free_memory(ljp* self) { +#ifdef SLOW_HUFF + free(self->maxcode); + self->maxcode = NULL; + free(self->mincode); + self->mincode = NULL; + free(self->valptr); + self->valptr = NULL; + free(self->huffval); + self->huffval = NULL; + free(self->huffsize); + self->huffsize = NULL; + free(self->huffcode); + self->huffcode = NULL; +#else + free(self->hufflut); + self->hufflut = NULL; +#endif + free(self->rowcache); + self->rowcache = NULL; +} + +int lj92_open(lj92* lj, + uint8_t* data, int datalen, + int* width,int* height, int* bitdepth) { + ljp* self = (ljp*)calloc(sizeof(ljp),1); + if (self==NULL) return LJ92_ERROR_NO_MEMORY; + + self->data = (u8*)data; + self->dataend = self->data + datalen; + self->datalen = datalen; + + int ret = findSoI(self); + + if (ret == LJ92_ERROR_NONE) { + u16* rowcache = (u16*)calloc(self->x * 2,sizeof(u16)); + if (rowcache == NULL) ret = LJ92_ERROR_NO_MEMORY; + else { + self->rowcache = rowcache; + self->outrow[0] = rowcache; + self->outrow[1] = &rowcache[self->x]; + } + } + + if (ret != LJ92_ERROR_NONE) { // Failed, clean up + *lj = NULL; + free_memory(self); + free(self); + } else { + *width = self->x; + *height = self->y; + *bitdepth = self->bits; + *lj = self; + } + return ret; +} + +int lj92_decode(lj92 lj, + uint16_t* target,int writeLength, int skipLength, + uint16_t* linearize,int linearizeLength) { + int ret = LJ92_ERROR_NONE; + ljp* self = lj; + if (self == NULL) return LJ92_ERROR_BAD_HANDLE; + self->image = target; + self->writelen = writeLength; + self->skiplen = skipLength; + self->linearize = linearize; + self->linlen = linearizeLength; + ret = parseScan(self); + return ret; +} + +void lj92_close(lj92 lj) { + ljp* self = lj; + if (self != NULL) + free_memory(self); + free(self); +} diff --git a/rtengine/lj92.h b/rtengine/lj92.h new file mode 100644 index 000000000..bc8bf7604 --- /dev/null +++ b/rtengine/lj92.h @@ -0,0 +1,68 @@ +/* +lj92.h +(c) Andrew Baldwin 2014 + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef LJ92_H +#define LJ92_H + +#ifdef __cplusplus +extern "C" +{ +#endif +enum LJ92_ERRORS { + LJ92_ERROR_NONE = 0, + LJ92_ERROR_CORRUPT = -1, + LJ92_ERROR_NO_MEMORY = -2, + LJ92_ERROR_BAD_HANDLE = -3, + LJ92_ERROR_TOO_WIDE = -4, +}; + +typedef struct _ljp* lj92; + +/* Parse a lossless JPEG (1992) structure returning + * - a handle that can be used to decode the data + * - width/height/bitdepth of the data + * Returns status code. + * If status == LJ92_ERROR_NONE, handle must be closed with lj92_close + */ +int lj92_open(lj92* lj, // Return handle here + uint8_t* data,int datalen, // The encoded data + int* width,int* height,int* bitdepth); // Width, height and bitdepth + +/* Release a decoder object */ +void lj92_close(lj92 lj); + +/* + * Decode previously opened lossless JPEG (1992) into a 2D tile of memory + * Starting at target, write writeLength 16bit values, then skip 16bit skipLength value before writing again + * If linearize is not NULL, use table at linearize to convert data values from output value to target value + * Data is only correct if LJ92_ERROR_NONE is returned + */ +int lj92_decode(lj92 lj, + uint16_t* target, int writeLength, int skipLength, // The image is written to target as a tile + uint16_t* linearize, int linearizeLength); // If not null, linearize the data using this table + +#endif + +#ifdef __cplusplus +} +#endif diff --git a/rtengine/pdaflinesfilter.cc b/rtengine/pdaflinesfilter.cc index 92fd68b41..0c5b2d786 100644 --- a/rtengine/pdaflinesfilter.cc +++ b/rtengine/pdaflinesfilter.cc @@ -62,7 +62,7 @@ public: ++r[col / TILE_SIZE]; } - float operator()(int row, int col) const + float operator()(int row, int col) const override { int y = row / TILE_SIZE; int x = col / TILE_SIZE; @@ -136,7 +136,7 @@ public: offset_(offset) {} - float operator()(int row) const + float operator()(int row) const override { static constexpr float BORDER[] = { 1.f, 1.f, 0.8f, 0.5f, 0.2f }; static constexpr int BORDER_WIDTH = sizeof(BORDER)/sizeof(float) - 1; @@ -151,12 +151,10 @@ public: if (it > pattern_.begin()) { int b2 = *(it-1); int d2 = key - b2; - float f = BORDER[std::min(std::min(d, d2), BORDER_WIDTH)]; - return f; - } else { - float f = BORDER[std::min(d, BORDER_WIDTH)]; - return f; + d = std::min(d, d2); } + float f = (d <= BORDER_WIDTH) ? BORDER[d] : 0.f; + return f; } return 0.f; } @@ -173,7 +171,8 @@ private: PDAFLinesFilter::PDAFLinesFilter(RawImage *ri): ri_(ri), W_(ri->get_width()), - H_(ri->get_height()) + H_(ri->get_height()), + offset_(0) { gthresh_ = new PDAFGreenEqulibrateThreshold(W_, H_); diff --git a/rtengine/pdaflinesfilter.h b/rtengine/pdaflinesfilter.h index 9837db5b6..b1f7bf650 100644 --- a/rtengine/pdaflinesfilter.h +++ b/rtengine/pdaflinesfilter.h @@ -27,7 +27,7 @@ namespace rtengine { class PDAFLinesFilter { public: - PDAFLinesFilter(RawImage *ri); + explicit PDAFLinesFilter(RawImage *ri); ~PDAFLinesFilter(); int mark(array2D &rawData, PixelsMap &bpMap); diff --git a/rtengine/pixelshift.cc b/rtengine/pixelshift.cc index cdf4f990a..76d1f836c 100644 --- a/rtengine/pixelshift.cc +++ b/rtengine/pixelshift.cc @@ -326,7 +326,7 @@ BENCHFUN if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) { lmmse_interpolate_omp(winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.lmmse_iterations); } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { - dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.dualDemosaicContrast); + dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[0]), red, green, blue, bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, *(rawDataFrames[0]), red, green, blue); } @@ -338,7 +338,7 @@ BENCHFUN if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::LMMSE)) { lmmse_interpolate_omp(winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.lmmse_iterations); } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { - dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.dualDemosaicContrast); + dual_demosaic_RT (true, rawParamsIn, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i], bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, *(rawDataFrames[i + 1]), redTmp[i], greenTmp[i], blueTmp[i]); } @@ -367,7 +367,7 @@ BENCHFUN } else if (bayerParams.pixelShiftDemosaicMethod == bayerParams.getPSDemosaicMethodString(RAWParams::BayerSensor::PSDemosaicMethod::AMAZEVNG4)) { RAWParams rawParamsTmp = rawParamsIn; rawParamsTmp.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::AMAZEVNG4); - dual_demosaic_RT (true, rawParamsTmp, winw, winh, rawData, red, green, blue, bayerParams.dualDemosaicContrast); + dual_demosaic_RT (true, rawParamsTmp, winw, winh, rawData, red, green, blue, bayerParams.dualDemosaicContrast, true); } else { amaze_demosaic_RT(winx, winy, winw, winh, rawData, red, green, blue); } diff --git a/rtengine/processingjob.h b/rtengine/processingjob.h index c7f49192e..026bd4924 100644 --- a/rtengine/processingjob.h +++ b/rtengine/processingjob.h @@ -43,14 +43,14 @@ public: iImage->increaseRef(); } - ~ProcessingJobImpl () + ~ProcessingJobImpl () override { if (initialImage) { initialImage->decreaseRef(); } } - bool fastPipeline() const { return fast; } + bool fastPipeline() const override { return fast; } }; } diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index 526a36765..5c4596745 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -87,13 +87,6 @@ Glib::ustring relativePathIfInside(const Glib::ustring &procparams_fname, bool f return prefix + embedded_fname.substr(dir1.length()); } -void avoidEmptyCurve(std::vector &curve) -{ - if (curve.empty()) { - curve.push_back(FCT_Linear); - } -} - void getFromKeyfile( const Glib::KeyFile& keyfile, const Glib::ustring& group_name, @@ -142,7 +135,7 @@ void getFromKeyfile( ) { value = keyfile.get_double_list(group_name, key); - avoidEmptyCurve(value); + rtengine::sanitizeCurve(value); } template @@ -614,6 +607,74 @@ bool LocalContrastParams::operator!=(const LocalContrastParams &other) const const double ColorToningParams::LABGRID_CORR_MAX = 12000.f; const double ColorToningParams::LABGRID_CORR_SCALE = 3.f; +ColorToningParams::LabCorrectionRegion::LabCorrectionRegion(): + a(0), + b(0), + saturation(0), + slope(1), + offset(0), + power(1), + hueMask{ + FCT_MinMaxCPoints, + 0.166666667, + 1., + 0.35, + 0.35, + 0.8287775246, + 1., + 0.35, + 0.35 + }, + chromaticityMask{ + FCT_MinMaxCPoints, + 0., + 1., + 0.35, + 0.35, + 1., + 1., + 0.35, + 0.35 + }, + lightnessMask{ + FCT_MinMaxCPoints, + 0., + 1., + 0.35, + 0.35, + 1., + 1., + 0.35, + 0.35 + }, + maskBlur(0), + channel(ColorToningParams::LabCorrectionRegion::CHAN_ALL) +{ +} + + +bool ColorToningParams::LabCorrectionRegion::operator==(const LabCorrectionRegion &other) const +{ + return a == other.a + && b == other.b + && saturation == other.saturation + && slope == other.slope + && offset == other.offset + && power == other.power + && hueMask == other.hueMask + && chromaticityMask == other.chromaticityMask + && lightnessMask == other.lightnessMask + && maskBlur == other.maskBlur + && channel == other.channel; +} + + +bool ColorToningParams::LabCorrectionRegion::operator!=(const LabCorrectionRegion &other) const +{ + return !(*this == other); +} + + ColorToningParams::ColorToningParams() : enabled(false), autosat(true), @@ -671,7 +732,7 @@ ColorToningParams::ColorToningParams() : 1.00, 1.00 }, - method("Lab"), + method("LabRegions"), twocolor("Std"), redlow(0.0), greenlow(0.0), @@ -688,7 +749,9 @@ ColorToningParams::ColorToningParams() : labgridALow(0.0), labgridBLow(0.0), labgridAHigh(0.0), - labgridBHigh(0.0) + labgridBHigh(0.0), + labregions{LabCorrectionRegion()}, + labregionsShowMask(-1) { } @@ -724,7 +787,9 @@ bool ColorToningParams::operator ==(const ColorToningParams& other) const && labgridALow == other.labgridALow && labgridBLow == other.labgridBLow && labgridAHigh == other.labgridAHigh - && labgridBHigh == other.labgridBHigh; + && labgridBHigh == other.labgridBHigh + && labregions == other.labregions + && labregionsShowMask == other.labregionsShowMask; } bool ColorToningParams::operator !=(const ColorToningParams& other) const @@ -1014,6 +1079,7 @@ void ColorToningParams::getCurves(ColorGradientCurve& colorCurveLUT, OpacityCurv SharpeningParams::SharpeningParams() : enabled(false), contrast(20.0), + blurradius(0.2), radius(0.5), amount(200), threshold(20, 80, 2000, 1200, false), @@ -1035,6 +1101,7 @@ bool SharpeningParams::operator ==(const SharpeningParams& other) const return enabled == other.enabled && contrast == other.contrast + && blurradius == other.blurradius && radius == other.radius && amount == other.amount && threshold == other.threshold @@ -1475,8 +1542,8 @@ bool EPDParams::operator !=(const EPDParams& other) const FattalToneMappingParams::FattalToneMappingParams() : enabled(false), - threshold(0), - amount(30), + threshold(30), + amount(20), anchor(50) { } @@ -2375,6 +2442,30 @@ bool SoftLightParams::operator !=(const SoftLightParams& other) const return !(*this == other); } + +DehazeParams::DehazeParams() : + enabled(false), + strength(50), + showDepthMap(false), + depth(25) +{ +} + +bool DehazeParams::operator ==(const DehazeParams& other) const +{ + return + enabled == other.enabled + && strength == other.strength + && showDepthMap == other.showDepthMap + && depth == other.depth; +} + +bool DehazeParams::operator !=(const DehazeParams& other) const +{ + return !(*this == other); +} + + RAWParams::BayerSensor::BayerSensor() : method(getMethodString(Method::AMAZE)), border(4), @@ -2668,7 +2759,7 @@ void ProcParams::setDefaults() sharpening = SharpeningParams(); prsharpening = SharpeningParams(); - prsharpening.contrast = 0.0; + prsharpening.contrast = 15.0; prsharpening.method = "rld"; prsharpening.deconvamount = 100; prsharpening.deconvradius = 0.45; @@ -2733,6 +2824,8 @@ void ProcParams::setDefaults() softlight = SoftLightParams(); + dehaze = DehazeParams(); + raw = RAWParams(); metadata = MetaDataParams(); @@ -2777,7 +2870,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.fromHistMatching, "Exposure", "CurveFromHistogramMatching", toneCurve.fromHistMatching, keyFile); saveToKeyfile(!pedited || pedited->toneCurve.clampOOG, "Exposure", "ClampOOG", toneCurve.clampOOG, keyFile); // Highlight recovery @@ -2931,6 +3024,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->sharpening.contrast, "Sharpening", "Contrast", sharpening.contrast, keyFile); saveToKeyfile(!pedited || pedited->sharpening.method, "Sharpening", "Method", sharpening.method, keyFile); saveToKeyfile(!pedited || pedited->sharpening.radius, "Sharpening", "Radius", sharpening.radius, keyFile); + saveToKeyfile(!pedited || pedited->sharpening.blurradius, "Sharpening", "BlurRadius", sharpening.blurradius, keyFile); saveToKeyfile(!pedited || pedited->sharpening.amount, "Sharpening", "Amount", sharpening.amount, keyFile); saveToKeyfile(!pedited || pedited->sharpening.threshold, "Sharpening", "Threshold", sharpening.threshold.toVector(), keyFile); saveToKeyfile(!pedited || pedited->sharpening.edgesonly, "Sharpening", "OnlyEdges", sharpening.edgesonly, keyFile); @@ -3043,6 +3137,12 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->defringe.threshold, "Defringing", "Threshold", defringe.threshold, keyFile); saveToKeyfile(!pedited || pedited->defringe.huecurve, "Defringing", "HueCurve", defringe.huecurve, keyFile); +// Dehaze + saveToKeyfile(!pedited || pedited->dehaze.enabled, "Dehaze", "Enabled", dehaze.enabled, keyFile); + saveToKeyfile(!pedited || pedited->dehaze.strength, "Dehaze", "Strength", dehaze.strength, keyFile); + saveToKeyfile(!pedited || pedited->dehaze.showDepthMap, "Dehaze", "ShowDepthMap", dehaze.showDepthMap, keyFile); + saveToKeyfile(!pedited || pedited->dehaze.depth, "Dehaze", "Depth", dehaze.depth, keyFile); + // Directional pyramid denoising saveToKeyfile(!pedited || pedited->dirpyrDenoise.enabled, "Directional Pyramid Denoising", "Enabled", dirpyrDenoise.enabled, keyFile); saveToKeyfile(!pedited || pedited->dirpyrDenoise.enhance, "Directional Pyramid Denoising", "Enhance", dirpyrDenoise.enhance, keyFile); @@ -3383,6 +3483,24 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo saveToKeyfile(!pedited || pedited->colorToning.labgridBLow, "ColorToning", "LabGridBLow", colorToning.labgridBLow, keyFile); saveToKeyfile(!pedited || pedited->colorToning.labgridAHigh, "ColorToning", "LabGridAHigh", colorToning.labgridAHigh, keyFile); saveToKeyfile(!pedited || pedited->colorToning.labgridBHigh, "ColorToning", "LabGridBHigh", colorToning.labgridBHigh, keyFile); + if (!pedited || pedited->colorToning.labregions) { + for (size_t j = 0; j < colorToning.labregions.size(); ++j) { + std::string n = std::to_string(j+1); + auto &l = colorToning.labregions[j]; + putToKeyfile("ColorToning", Glib::ustring("LabRegionA_") + n, l.a, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionB_") + n, l.b, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionSaturation_") + n, l.saturation, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionSlope_") + n, l.slope, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionOffset_") + n, l.offset, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionPower_") + n, l.power, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionHueMask_") + n, l.hueMask, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionChromaticityMask_") + n, l.chromaticityMask, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionLightnessMask_") + n, l.lightnessMask, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionMaskBlur_") + n, l.maskBlur, keyFile); + putToKeyfile("ColorToning", Glib::ustring("LabRegionChannel_") + n, l.channel, keyFile); + } + } + saveToKeyfile(!pedited || pedited->colorToning.labregionsShowMask, "ColorToning", "LabRegionsShowMask", colorToning.labregionsShowMask, keyFile); // Raw saveToKeyfile(!pedited || pedited->raw.darkFrame, "RAW", "DarkFrame", relativePathIfInside(fname, fnameAbsolute, raw.dark_frame), keyFile); @@ -3568,7 +3686,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) pedited->toneCurve.fromHistMatching = true; } } else { - assignFromKeyfile(keyFile, "Exposure", "FromHistogramMatching", pedited, toneCurve.fromHistMatching, pedited->toneCurve.fromHistMatching); + assignFromKeyfile(keyFile, "Exposure", "CurveFromHistogramMatching", pedited, toneCurve.fromHistMatching, pedited->toneCurve.fromHistMatching); } assignFromKeyfile(keyFile, "Exposure", "ClampOOG", pedited, toneCurve.clampOOG, pedited->toneCurve.clampOOG); } @@ -3793,6 +3911,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } } assignFromKeyfile(keyFile, "Sharpening", "Radius", pedited, sharpening.radius, pedited->sharpening.radius); + assignFromKeyfile(keyFile, "Sharpening", "BlurRadius", pedited, sharpening.blurradius, pedited->sharpening.blurradius); assignFromKeyfile(keyFile, "Sharpening", "Amount", pedited, sharpening.amount, pedited->sharpening.amount); if (keyFile.has_key("Sharpening", "Threshold")) { @@ -4214,7 +4333,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) if (ppVersion >= 339) { assignFromKeyfile(keyFile, "Resize", "AllowUpscaling", pedited, resize.allowUpscaling, pedited->resize.allowUpscaling); } else { - resize.allowUpscaling = true; + resize.allowUpscaling = false; if (pedited) { pedited->resize.allowUpscaling = true; } @@ -4626,6 +4745,13 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) assignFromKeyfile(keyFile, "SoftLight", "Strength", pedited, softlight.strength, pedited->softlight.strength); } + if (keyFile.has_group("Dehaze")) { + assignFromKeyfile(keyFile, "Dehaze", "Enabled", pedited, dehaze.enabled, pedited->dehaze.enabled); + assignFromKeyfile(keyFile, "Dehaze", "Strength", pedited, dehaze.strength, pedited->dehaze.strength); + assignFromKeyfile(keyFile, "Dehaze", "ShowDepthMap", pedited, dehaze.showDepthMap, pedited->dehaze.showDepthMap); + assignFromKeyfile(keyFile, "Dehaze", "Depth", pedited, dehaze.depth, pedited->dehaze.depth); + } + 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); @@ -4740,6 +4866,65 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) colorToning.labgridBLow *= scale; colorToning.labgridBHigh *= scale; } + std::vector lg; + bool found = false; + bool done = false; + for (int i = 1; !done; ++i) { + ColorToningParams::LabCorrectionRegion cur; + done = true; + std::string n = std::to_string(i); + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionA_") + n, pedited, cur.a, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionB_") + n, pedited, cur.b, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionSaturation_") + n, pedited, cur.saturation, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionSlope_") + n, pedited, cur.slope, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionOffset_") + n, pedited, cur.offset, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionPower_") + n, pedited, cur.power, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionHueMask_") + n, pedited, cur.hueMask, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionChromaticityMask_") + n, pedited, cur.chromaticityMask, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionLightnessMask_") + n, pedited, cur.lightnessMask, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionMaskBlur_") + n, pedited, cur.maskBlur, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (assignFromKeyfile(keyFile, "ColorToning", Glib::ustring("LabRegionChannel_") + n, pedited, cur.channel, pedited->colorToning.labregions)) { + found = true; + done = false; + } + if (!done) { + lg.emplace_back(cur); + } + } + if (found) { + colorToning.labregions = std::move(lg); + } + assignFromKeyfile(keyFile, "ColorToning", "LabRegionsShowMask", pedited, colorToning.labregionsShowMask, pedited->colorToning.labregionsShowMask); } if (keyFile.has_group("RAW")) { @@ -4928,8 +5113,6 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited) } 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); @@ -5041,7 +5224,8 @@ bool ProcParams::operator ==(const ProcParams& other) const && colorToning == other.colorToning && metadata == other.metadata && exif == other.exif - && iptc == other.iptc; + && iptc == other.iptc + && dehaze == other.dehaze; } bool ProcParams::operator !=(const ProcParams& other) const diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 22868a844..d1b70b9c2 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -26,8 +26,6 @@ #include #include -#include "coord.h" -#include "LUT.h" #include "noncopyable.h" class ParamsEdited; @@ -455,6 +453,27 @@ struct ColorToningParams { static const double LABGRID_CORR_MAX; static const double LABGRID_CORR_SCALE; + struct LabCorrectionRegion { + enum { CHAN_ALL = -1, CHAN_R, CHAN_G, CHAN_B }; + double a; + double b; + double saturation; + double slope; + double offset; + double power; + std::vector hueMask; + std::vector chromaticityMask; + std::vector lightnessMask; + double maskBlur; + int channel; + + LabCorrectionRegion(); + bool operator==(const LabCorrectionRegion &other) const; + bool operator!=(const LabCorrectionRegion &other) const; + }; + std::vector labregions; + int labregionsShowMask; + ColorToningParams(); bool operator ==(const ColorToningParams& other) const; @@ -474,6 +493,7 @@ struct ColorToningParams { struct SharpeningParams { bool enabled; double contrast; + double blurradius; double radius; int amount; Threshold threshold; @@ -1227,6 +1247,19 @@ struct SoftLightParams { }; +struct DehazeParams { + bool enabled; + int strength; + bool showDepthMap; + int depth; + + DehazeParams(); + + bool operator==(const DehazeParams &other) const; + bool operator!=(const DehazeParams &other) const; +}; + + /** * Parameters for RAW demosaicing, common to all sensor type */ @@ -1440,6 +1473,7 @@ public: HSVEqualizerParams hsvequalizer; ///< hsv wavelet parameters FilmSimulationParams filmSimulation; ///< film simulation parameters SoftLightParams softlight; ///< softlight parameters + DehazeParams dehaze; ///< dehaze parameters int rank; ///< Custom image quality ranking int colorlabel; ///< Custom color label bool inTrash; ///< Marks deleted image diff --git a/rtengine/rawimage.cc b/rtengine/rawimage.cc index 6ef110a03..ced3fbb23 100644 --- a/rtengine/rawimage.cc +++ b/rtengine/rawimage.cc @@ -30,9 +30,9 @@ RawImage::RawImage( const Glib::ustring &name ) , allocation(nullptr) { memset(maximum_c4, 0, sizeof(maximum_c4)); - RT_matrix_from_constant = 0; - RT_blacklevel_from_constant = 0; - RT_whitelevel_from_constant = 0; + RT_matrix_from_constant = ThreeValBool::X; + RT_blacklevel_from_constant = ThreeValBool::X; + RT_whitelevel_from_constant = ThreeValBool::X; } RawImage::~RawImage() @@ -479,13 +479,13 @@ int RawImage::loadRaw (bool loadData, unsigned int imageNum, bool closeFile, Pro iwidth = width; if (filters || colors == 1) { - raw_image = (ushort *) calloc ((raw_height + 7) * raw_width, 2); + raw_image = (ushort *) calloc ((static_cast(raw_height) + 7u) * static_cast(raw_width), 2); merror (raw_image, "main()"); } // dcraw needs this global variable to hold pixel data - image = (dcrawImage_t)calloc (height * width * sizeof * image + meta_length, 1); - meta_data = (char *) (image + height * width); + image = (dcrawImage_t)calloc (static_cast(height) * static_cast(width) * sizeof * image + meta_length, 1); + meta_data = (char *) (image + static_cast(height) * static_cast(width)); if(!image) { return 200; @@ -503,6 +503,10 @@ int RawImage::loadRaw (bool loadData, unsigned int imageNum, bool closeFile, Pro fseek (ifp, data_offset, SEEK_SET); (this->*load_raw)(); + if (!float_raw_image) { // apply baseline exposure only for float DNGs + RT_baseline_exposure = 0; + } + if (plistener) { plistener->setProgress(0.9 * progressRange); } @@ -599,14 +603,14 @@ int RawImage::loadRaw (bool loadData, unsigned int imageNum, bool closeFile, Pro if (cc) { for (int i = 0; i < 4; i++) { - if (RT_blacklevel_from_constant) { + if (RT_blacklevel_from_constant == ThreeValBool::T) { int blackFromCc = cc->get_BlackLevel(i, iso_speed); // if black level from camconst > 0xffff it is an absolute value. black_c4[i] = blackFromCc > 0xffff ? (blackFromCc & 0xffff) : blackFromCc + cblack[i]; } // load 4 channel white level here, will be used if available - if (RT_whitelevel_from_constant) { + if (RT_whitelevel_from_constant == ThreeValBool::T) { maximum_c4[i] = cc->get_WhiteLevel(i, iso_speed, aperture); if(tiff_bps > 0 && maximum_c4[i] > 0 && !isFoveon()) { @@ -673,7 +677,7 @@ int RawImage::loadRaw (bool loadData, unsigned int imageNum, bool closeFile, Pro return 0; } -float** RawImage::compress_image(int frameNum, bool freeImage) +float** RawImage::compress_image(unsigned int frameNum, bool freeImage) { if( !image ) { return nullptr; @@ -682,7 +686,7 @@ float** RawImage::compress_image(int frameNum, bool freeImage) if (isBayer() || isXtrans()) { if (!allocation) { // shift the beginning of all frames but the first by 32 floats to avoid cache miss conflicts on CPUs which have <= 4-way associative L1-Cache - allocation = new float[height * width + frameNum * 32]; + allocation = new float[static_cast(height) * static_cast(width) + frameNum * 32u]; data = new float*[height]; for (int i = 0; i < height; i++) { @@ -1049,16 +1053,31 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is *black_level = -1; *white_level = -1; + + const bool is_pentax_dng = dng_version && !strncmp(RT_software.c_str(), "PENTAX", 6); + + if (RT_blacklevel_from_constant == ThreeValBool::F && !is_pentax_dng) { + *black_level = black; + } + if (RT_whitelevel_from_constant == ThreeValBool::F && !is_pentax_dng) { + *white_level = maximum; + } memset(trans, 0, sizeof(*trans) * 12); - // indicate that DCRAW wants these from constants (rather than having loaded these from RAW file - // note: this is simplified so far, in some cases dcraw calls this when it has say the black level - // from file, but then we will not provide any black level in the tables. This case is mainly just - // to avoid loading table values if we have loaded a DNG conversion of a raw file (which already - // have constants stored in the file). - RT_whitelevel_from_constant = 1; - RT_blacklevel_from_constant = 1; - RT_matrix_from_constant = 1; + // // indicate that DCRAW wants these from constants (rather than having loaded these from RAW file + // // note: this is simplified so far, in some cases dcraw calls this when it has say the black level + // // from file, but then we will not provide any black level in the tables. This case is mainly just + // // to avoid loading table values if we have loaded a DNG conversion of a raw file (which already + // // have constants stored in the file). + // if (RT_whitelevel_from_constant == ThreeValBool::X || is_pentax_dng) { + // RT_whitelevel_from_constant = ThreeValBool::T; + // } + // if (RT_blacklevel_from_constant == ThreeValBool::X || is_pentax_dng) { + // RT_blacklevel_from_constant = ThreeValBool::T; + // } + // if (RT_matrix_from_constant == ThreeValBool::X) { + // RT_matrix_from_constant = ThreeValBool::T; + // } { // test if we have any information in the camera constants store, if so we take that. @@ -1066,10 +1085,14 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is rtengine::CameraConst *cc = ccs->get(make, model); if (cc) { - *black_level = cc->get_BlackLevel(0, iso_speed); - *white_level = cc->get_WhiteLevel(0, iso_speed, aperture); + if (RT_blacklevel_from_constant == ThreeValBool::T) { + *black_level = cc->get_BlackLevel(0, iso_speed); + } + if (RT_whitelevel_from_constant == ThreeValBool::T) { + *white_level = cc->get_WhiteLevel(0, iso_speed, aperture); + } - if (cc->has_dcrawMatrix()) { + if (RT_matrix_from_constant == ThreeValBool::T && cc->has_dcrawMatrix()) { const short *mx = cc->get_dcrawMatrix(); for (int j = 0; j < 12; j++) { @@ -1086,8 +1109,12 @@ DCraw::dcraw_coeff_overrides(const char make[], const char model[], const int is for (size_t i = 0; i < sizeof table / sizeof(table[0]); i++) { if (strcasecmp(name, table[i].prefix) == 0) { - *black_level = table[i].black_level; - *white_level = table[i].white_level; + if (RT_blacklevel_from_constant == ThreeValBool::T) { + *black_level = table[i].black_level; + } + if (RT_whitelevel_from_constant == ThreeValBool::T) { + *white_level = table[i].white_level; + } for (int j = 0; j < 12; j++) { trans[j] = table[i].trans[j]; diff --git a/rtengine/rawimage.h b/rtengine/rawimage.h index 7595ad196..0dabfef0d 100644 --- a/rtengine/rawimage.h +++ b/rtengine/rawimage.h @@ -121,10 +121,12 @@ public: { return image; } - float** compress_image(int frameNum, bool freeImage = true); // revert to compressed pixels format and release image data + float** compress_image(unsigned int frameNum, bool freeImage = true); // revert to compressed pixels format and release image data float** data; // holds pixel values, data[i][j] corresponds to the ith row and jth column unsigned prefilters; // original filters saved ( used for 4 color processing ) unsigned int getFrameCount() const { return is_raw; } + + double getBaselineExposure() const { return RT_baseline_exposure; } protected: Glib::ustring filename; // complete filename int rotate_deg; // 0,90,180,270 degree of rotation: info taken by dcraw from exif diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 502da8073..b59e8ecab 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -473,7 +473,7 @@ RawImageSource::~RawImageSource () delete riFrames[i]; } - for(size_t i = 0; i < numFrames - 1; ++i) { + for(size_t i = 0; i + 1 < numFrames; ++i) { delete rawDataBuffer[i]; } @@ -716,6 +716,11 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima gm /= area; bm /= area; bool doHr = (hrp.hrenabled && hrp.method != "Color"); + const float expcomp = std::pow(2, ri->getBaselineExposure()); + rm *= expcomp; + gm *= expcomp; + bm *= expcomp; + #ifdef _OPENMP #pragma omp parallel if(!d1x) // omp disabled for D1x to avoid race conditions (see Issue 1088 http://code.google.com/p/rawtherapee/issues/detail?id=1088) { @@ -894,6 +899,10 @@ void RawImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima DCPProfile *RawImageSource::getDCP(const ColorManagementParams &cmp, DCPProfile::ApplyState &as) { + if (cmp.inputProfile == "(camera)" || cmp.inputProfile == "(none)") { + return nullptr; + } + DCPProfile *dcpProf = nullptr; cmsHPROFILE dummy; findInputProfile(cmp.inputProfile, nullptr, (static_cast(getMetaData()))->getCamera(), &dcpProf, dummy); @@ -2821,7 +2830,7 @@ void RawImageSource::flushRGB() } } -void RawImageSource::HLRecovery_Global(ToneCurveParams hrp) +void RawImageSource::HLRecovery_Global(const ToneCurveParams &hrp) { if (hrp.hrenabled && hrp.method == "Color") { if(!rgbSourceModified) { @@ -3101,8 +3110,8 @@ void RawImageSource::processFlatField(const RAWParams &raw, RawImage *riFlatFile vfloat rowBlackv = blackv[row & 1]; for (; col < W - 3; col += 4) { - vfloat linecorrv = SQRV(vmaxf(epsv, LVFU(cfablur[row * W + col]) - rowBlackv)) / - (vmaxf(epsv, LVFU(cfablur1[row * W + col]) - rowBlackv) * vmaxf(epsv, LVFU(cfablur2[row * W + col]) - rowBlackv)); + vfloat linecorrv = SQRV(vmaxf(LVFU(cfablur[row * W + col]) - rowBlackv, epsv)) / + (vmaxf(LVFU(cfablur1[row * W + col]) - rowBlackv, epsv) * vmaxf(LVFU(cfablur2[row * W + col]) - rowBlackv, epsv)); vfloat valv = LVFU(rawData[row][col]); valv -= rowBlackv; STVFU(rawData[row][col], valv * linecorrv + rowBlackv); @@ -3232,10 +3241,10 @@ void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, Raw } } -void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, const int boxH, const int boxW) +void RawImageSource::cfaboxblur(RawImage *riFlatFile, float* cfablur, int boxH, int boxW) { - if(boxW == 0 && boxH == 0) { // nothing to blur + if (boxW < 0 || boxH < 0 || (boxW == 0 && boxH == 0)) { // nothing to blur or negative values memcpy(cfablur, riFlatFile->data[0], W * H * sizeof(float)); return; } @@ -4387,17 +4396,11 @@ bool RawImageSource::findInputProfile(Glib::ustring inProfile, cmsHPROFILE embed // very effective to reduce (or remove) the magenta, but with levels of grey ! void RawImageSource::HLRecovery_blend(float* rin, float* gin, float* bin, int width, float maxval, float* hlmax) { - const int ColorCount = 3; + constexpr int ColorCount = 3; // Transform matrixes rgb>lab and back - static const float trans[2][ColorCount][ColorCount] = { - { { 1, 1, 1 }, { 1.7320508, -1.7320508, 0 }, { -1, -1, 2 } }, - { { 1, 1, 1 }, { 1, -1, 1 }, { 1, 1, -1 } } - }; - static const float itrans[2][ColorCount][ColorCount] = { - { { 1, 0.8660254, -0.5 }, { 1, -0.8660254, -0.5 }, { 1, 0, 1 } }, - { { 1, 1, 1 }, { 1, -1, 1 }, { 1, 1, -1 } } - }; + constexpr float trans[ColorCount][ColorCount] = { { 1, 1, 1 }, { 1.7320508, -1.7320508, 0 }, { -1, -1, 2 } }; + constexpr float itrans[ColorCount][ColorCount] = { { 1, 0.8660254, -0.5 }, { 1, -0.8660254, -0.5 }, { 1, 0, 1 } }; #define FOREACHCOLOR for (int c=0; c < ColorCount; c++) @@ -4454,7 +4457,7 @@ void RawImageSource::HLRecovery_blend(float* rin, float* gin, float* bin, int wi for (int j = 0; j < ColorCount; j++) { - lab[i][c] += trans[ColorCount - 3][c][j] * cam[i][j]; + lab[i][c] += trans[c][j] * cam[i][j]; } } @@ -4478,7 +4481,7 @@ void RawImageSource::HLRecovery_blend(float* rin, float* gin, float* bin, int wi for (int j = 0; j < ColorCount; j++) { - cam[0][c] += itrans[ColorCount - 3][c][j] * lab[0][j]; + cam[0][c] += itrans[c][j] * lab[0][j]; } } FOREACHCOLOR rgb[c] = cam[0][c] / ColorCount; @@ -4830,20 +4833,27 @@ void RawImageSource::getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LU } // end of critical region } // end of parallel region + const auto getidx = + [&](int c, int i) -> int + { + float f = mult[c] * std::max(0.f, i - cblacksom[c]); + return f > 0.f ? (f < 1.f ? 1 : std::min(int(f), 255)) : 0; + }; + for(int i = 0; i < histoSize; i++) { - int idx = std::min(255.f, mult[0] * std::max(0.f, i - cblacksom[0])); + int idx = getidx(0, i); histRedRaw[idx] += hist[0][i]; if (ri->get_colors() > 1) { - idx = std::min(255.f, mult[1] * std::max(0.f, i - cblacksom[1])); + idx = getidx(1, i); histGreenRaw[idx] += hist[1][i]; if (fourColours) { - idx = std::min(255.f, mult[3] * std::max(0.f, i - cblacksom[3])); + idx = getidx(3, i); histGreenRaw[idx] += hist[3][i]; } - idx = std::min(255.f, mult[2] * std::max(0.f, i - cblacksom[2])); + idx = getidx(2, i); histBlueRaw[idx] += hist[2][i]; } } diff --git a/rtengine/rawimagesource.h b/rtengine/rawimagesource.h index f78a4121b..470fd138b 100644 --- a/rtengine/rawimagesource.h +++ b/rtengine/rawimagesource.h @@ -111,22 +111,22 @@ protected: public: RawImageSource (); - ~RawImageSource (); + ~RawImageSource () override; - int load(const Glib::ustring &fname) { return load(fname, false); } + int load(const Glib::ustring &fname) override { return load(fname, false); } int load(const Glib::ustring &fname, bool firstFrameOnly); - void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse, bool prepareDenoise = true); - void demosaic (const RAWParams &raw, bool autoContrast, double &contrastThreshold); - void retinex (const ColorManagementParams& cmp, const RetinexParams &deh, const ToneCurveParams& Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI); - void retinexPrepareCurves (const RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI); - void retinexPrepareBuffers (const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI); - void flushRawData (); - void flushRGB (); - void HLRecovery_Global (ToneCurveParams hrp); + void preprocess (const RAWParams &raw, const LensProfParams &lensProf, const CoarseTransformParams& coarse, bool prepareDenoise = true) override; + void demosaic (const RAWParams &raw, bool autoContrast, double &contrastThreshold) override; + void retinex (const ColorManagementParams& cmp, const RetinexParams &deh, const ToneCurveParams& Tc, LUTf & cdcurve, LUTf & mapcurve, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, multi_array2D &conversionBuffer, bool dehacontlutili, bool mapcontlutili, bool useHsl, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax, LUTu &histLRETI) override; + void retinexPrepareCurves (const RetinexParams &retinexParams, LUTf &cdcurve, LUTf &mapcurve, RetinextransmissionCurve &retinextransmissionCurve, RetinexgaintransmissionCurve &retinexgaintransmissionCurve, bool &retinexcontlutili, bool &mapcontlutili, bool &useHsl, LUTu & lhist16RETI, LUTu & histLRETI) override; + void retinexPrepareBuffers (const ColorManagementParams& cmp, const RetinexParams &retinexParams, multi_array2D &conversionBuffer, LUTu &lhist16RETI) override; + void flushRawData () override; + void flushRGB () override; + void HLRecovery_Global (const ToneCurveParams &hrp) override; void refinement_lassus (int PassCount); void refinement(int PassCount); - void setBorder(unsigned int rawBorder) {border = rawBorder;} - bool isRGBSourceModified() const + void setBorder(unsigned int rawBorder) override {border = rawBorder;} + bool isRGBSourceModified() const override { return rgbSourceModified; // tracks whether cached rgb output of demosaic has been modified } @@ -136,61 +136,57 @@ public: void cfaboxblur (RawImage *riFlatFile, float* cfablur, int boxH, int boxW); void scaleColors (int winx, int winy, int winw, int winh, const RAWParams &raw, array2D &rawData); // raw for cblack - void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw); - eSensorType getSensorType () const + void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw) override; + eSensorType getSensorType () const override { return ri != nullptr ? ri->getSensorType() : ST_NONE; } - bool isMono () const + bool isMono () const override { return ri->get_colors() == 1; } - ColorTemp getWB () const + ColorTemp getWB () const override { return camera_wb; } - void getAutoWBMultipliers (double &rm, double &gm, double &bm); - ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal); - bool isWBProviderReady () + void getAutoWBMultipliers (double &rm, double &gm, double &bm) override; + ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal) override; + bool isWBProviderReady () override { return rawData; } - double getDefGain () const + double getDefGain () const override { return defGain; } - void getFullSize (int& w, int& h, int tr = TR_NONE); - void getSize (const PreviewProps &pp, int& w, int& h); - int getRotateDegree() const + void getFullSize (int& w, int& h, int tr = TR_NONE) override; + void getSize (const PreviewProps &pp, int& w, int& h) override; + int getRotateDegree() const override { return ri->get_rotateDegree(); } - FrameData* getImageData (unsigned int frameNum) - { - return idata->getFrameData (frameNum); - } - ImageMatrices* getImageMatrices () + ImageMatrices* getImageMatrices () override { return &imatrices; } - bool isRAW() const + bool isRAW() const override { return true; } - void setProgressListener (ProgressListener* pl) + void setProgressListener (ProgressListener* pl) override { plistener = pl; } - void getAutoExpHistogram (LUTu & histogram, int& histcompr); - void getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw); - void getAutoMatchedToneCurve(const ColorManagementParams &cp, std::vector &outCurve); - DCPProfile *getDCP(const ColorManagementParams &cmp, DCPProfile::ApplyState &as); + void getAutoExpHistogram (LUTu & histogram, int& histcompr) override; + void getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LUTu & histBlueRaw) override; + void getAutoMatchedToneCurve(const ColorManagementParams &cp, std::vector &outCurve) override; + DCPProfile *getDCP(const ColorManagementParams &cmp, DCPProfile::ApplyState &as) override; - void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb); + void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb) override; static bool findInputProfile(Glib::ustring inProfile, cmsHPROFILE embedded, std::string camName, DCPProfile **dcpProf, cmsHPROFILE& in); static void colorSpaceConversion (Imagefloat* im, const ColorManagementParams& cmp, const ColorTemp &wb, double pre_mul[3], cmsHPROFILE embedded, cmsHPROFILE camprofile, double cam[3][3], const std::string &camName) { @@ -201,18 +197,18 @@ public: void boxblur2(float** src, float** dst, float** temp, int H, int W, int box ); void boxblur_resamp(float **src, float **dst, float** temp, int H, int W, int box, int samp ); void MSR(float** luminance, float **originalLuminance, float **exLuminance, LUTf & mapcurve, bool &mapcontlutili, int width, int height, const RetinexParams &deh, const RetinextransmissionCurve & dehatransmissionCurve, const RetinexgaintransmissionCurve & dehagaintransmissionCurve, float &minCD, float &maxCD, float &mini, float &maxi, float &Tmean, float &Tsigma, float &Tmin, float &Tmax); - void HLRecovery_inpaint (float** red, float** green, float** blue); + void HLRecovery_inpaint (float** red, float** green, float** blue) override; static void HLRecovery_Luminance (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval); static void HLRecovery_CIELab (float* rin, float* gin, float* bin, float* rout, float* gout, float* bout, int width, float maxval, double cam[3][3], double icam[3][3]); static void HLRecovery_blend (float* rin, float* gin, float* bin, int width, float maxval, float* hlmax); static void init (); static void cleanup (); - void setCurrentFrame(unsigned int frameNum) { + void setCurrentFrame(unsigned int frameNum) override { currFrame = std::min(numFrames - 1, frameNum); ri = riFrames[currFrame]; } - int getFrameCount() {return numFrames;} - int getFlatFieldAutoClipValue() {return flatFieldAutoClipValue;} + int getFrameCount() override {return numFrames;} + int getFlatFieldAutoClipValue() override {return flatFieldAutoClipValue;} class GreenEqulibrateThreshold { public: @@ -269,7 +265,7 @@ protected: void nodemosaic(bool bw); void eahd_demosaic(); void hphd_demosaic(); - void vng4_demosaic(const array2D &rawData, array2D &red, array2D &green, array2D &blue, bool keepGreens = false); + void vng4_demosaic(const array2D &rawData, array2D &red, array2D &green, array2D &blue); void ppg_demosaic(); void jdl_interpolate_omp(); void igv_interpolate(int winw, int winh); @@ -303,7 +299,7 @@ protected: void pixelshift(int winx, int winy, int winw, int winh, const RAWParams &rawParams, unsigned int frame, const std::string &make, const std::string &model, float rawWpCorrection); void hflip (Imagefloat* im); void vflip (Imagefloat* im); - void getRawValues(int x, int y, int rotate, int &R, int &G, int &B); + void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) override; }; } diff --git a/rtengine/rawmetadatalocation.h b/rtengine/rawmetadatalocation.h index 40ac6cc3e..de6c6a0d7 100644 --- a/rtengine/rawmetadatalocation.h +++ b/rtengine/rawmetadatalocation.h @@ -30,7 +30,7 @@ public: int ciffLength; RawMetaDataLocation () : exifBase(-1), ciffBase(-1), ciffLength(-1) {} - RawMetaDataLocation (int exifBase) : exifBase(exifBase), ciffBase(-1), ciffLength(-1) {} + explicit RawMetaDataLocation (int exifBase) : exifBase(exifBase), ciffBase(-1), ciffLength(-1) {} RawMetaDataLocation (int ciffBase, int ciffLength) : exifBase(-1), ciffBase(ciffBase), ciffLength(ciffLength) {} RawMetaDataLocation (int exifBase, int ciffBase, int ciffLength) : exifBase(exifBase), ciffBase(ciffBase), ciffLength(ciffLength) {} }; diff --git a/rtengine/rt_algo.cc b/rtengine/rt_algo.cc index ae385508a..1011ae7b7 100644 --- a/rtengine/rt_algo.cc +++ b/rtengine/rt_algo.cc @@ -20,10 +20,9 @@ #include #include #include +#include #include #include -#include -#include #ifdef _OPENMP #include #endif @@ -33,7 +32,6 @@ #include "rt_algo.h" #include "rt_math.h" #include "sleef.c" -#include "jaggedarray.h" namespace { float calcBlendFactor(float val, float threshold) { @@ -53,6 +51,113 @@ vfloat calcBlendFactor(vfloat valv, vfloat thresholdv) { return onev / (onev + xexpf(c16v - c16v * valv / thresholdv)); } #endif + +float tileAverage(float **data, size_t tileY, size_t tileX, size_t tilesize) { + + float avg = 0.f; +#ifdef __SSE2__ + vfloat avgv = ZEROV; +#endif + for (std::size_t y = tileY; y < tileY + tilesize; ++y) { + std::size_t x = tileX; +#ifdef __SSE2__ + for (; x < tileX + tilesize - 3; x += 4) { + avgv += LVFU(data[y][x]); + } +#endif + for (; x < tileX + tilesize; ++x) { + avg += data[y][x]; + } + } +#ifdef __SSE2__ + avg += vhadd(avgv); +#endif + return avg / rtengine::SQR(tilesize); +} + +float tileVariance(float **data, size_t tileY, size_t tileX, size_t tilesize, float avg) { + + float var = 0.f; +#ifdef __SSE2__ + vfloat varv = ZEROV; + const vfloat avgv = F2V(avg); +#endif + for (std::size_t y = tileY; y < tileY + tilesize; ++y) { + std::size_t x = tileX; +#ifdef __SSE2__ + for (; x < tileX + tilesize - 3; x += 4) { + varv += SQRV(LVFU(data[y][x]) - avgv); + } +#endif + for (; x < tileX + tilesize; ++x) { + var += rtengine::SQR(data[y][x] - avg); + } + } +#ifdef __SSE2__ + var += vhadd(varv); +#endif + return var / (rtengine::SQR(tilesize) * avg); +} + +float calcContrastThreshold(float** luminance, int tileY, int tileX, int tilesize) { + + constexpr float scale = 0.0625f / 327.68f; + std::vector> blend(tilesize - 4, std::vector(tilesize - 4)); + +#ifdef __SSE2__ + const vfloat scalev = F2V(scale); +#endif + + for(int j = tileY + 2; j < tileY + tilesize - 2; ++j) { + int i = tileX + 2; +#ifdef __SSE2__ + for(; i < tileX + tilesize - 5; i += 4) { + vfloat contrastv = vsqrtf(SQRV(LVFU(luminance[j][i+1]) - LVFU(luminance[j][i-1])) + SQRV(LVFU(luminance[j+1][i]) - LVFU(luminance[j-1][i])) + + SQRV(LVFU(luminance[j][i+2]) - LVFU(luminance[j][i-2])) + SQRV(LVFU(luminance[j+2][i]) - LVFU(luminance[j-2][i]))) * scalev; + STVFU(blend[j - tileY - 2][i - tileX - 2], contrastv); + } +#endif + for(; i < tileX + tilesize - 2; ++i) { + + float contrast = sqrtf(rtengine::SQR(luminance[j][i+1] - luminance[j][i-1]) + rtengine::SQR(luminance[j+1][i] - luminance[j-1][i]) + + rtengine::SQR(luminance[j][i+2] - luminance[j][i-2]) + rtengine::SQR(luminance[j+2][i] - luminance[j-2][i])) * scale; + + blend[j - tileY - 2][i - tileX - 2] = contrast; + } + } + + const float limit = rtengine::SQR(tilesize - 4) / 100.f; + + int c; + for (c = 1; c < 100; ++c) { + const float contrastThreshold = c / 100.f; + float sum = 0.f; +#ifdef __SSE2__ + const vfloat contrastThresholdv = F2V(contrastThreshold); + vfloat sumv = ZEROV; +#endif + + for(int j = 0; j < tilesize - 4; ++j) { + int i = 0; +#ifdef __SSE2__ + for(; i < tilesize - 7; i += 4) { + sumv += calcBlendFactor(LVFU(blend[j][i]), contrastThresholdv); + } +#endif + for(; i < tilesize - 4; ++i) { + sum += calcBlendFactor(blend[j][i], contrastThreshold); + } + } +#ifdef __SSE2__ + sum += vhadd(sumv); +#endif + if (sum <= limit) { + break; + } + } + + return c / 100.f; +} } namespace rtengine @@ -172,6 +277,7 @@ void findMinMaxPercentile(const float* data, size_t size, float minPrct, float& // go back to original range minOut /= scale; minOut += minVal; + minOut = rtengine::LIM(minOut, minVal, maxVal); // find (maxPrct*size) smallest value const float threshmax = maxPrct * size; @@ -190,11 +296,111 @@ void findMinMaxPercentile(const float* data, size_t size, float minPrct, float& // go back to original range maxOut /= scale; maxOut += minVal; + maxOut = rtengine::LIM(maxOut, minVal, maxVal); } void buildBlendMask(float** luminance, float **blend, int W, int H, float &contrastThreshold, float amount, bool autoContrast) { - if(contrastThreshold == 0.f && !autoContrast) { + if (autoContrast) { + constexpr float minLuminance = 2000.f; + constexpr float maxLuminance = 20000.f; + constexpr float minTileVariance = 0.5f; + for (int pass = 0; pass < 2; ++pass) { + const int tilesize = 80 / (pass + 1); + const int skip = pass == 0 ? tilesize : tilesize / 4; + const int numTilesW = W / skip - 3 * pass; + const int numTilesH = H / skip - 3 * pass; + std::vector> variances(numTilesH, std::vector(numTilesW)); + +#ifdef _OPENMP + #pragma omp parallel for schedule(dynamic) +#endif + for (int i = 0; i < numTilesH; ++i) { + const int tileY = i * skip; + for (int j = 0; j < numTilesW; ++j) { + const int tileX = j * skip; + const float avg = tileAverage(luminance, tileY, tileX, tilesize); + if (avg < minLuminance || avg > maxLuminance) { + // too dark or too bright => skip the tile + variances[i][j] = RT_INFINITY_F; + continue; + } else { + variances[i][j] = tileVariance(luminance, tileY, tileX, tilesize, avg); + // exclude tiles with a variance less than minTileVariance + variances[i][j] = variances[i][j] < minTileVariance ? RT_INFINITY_F : variances[i][j]; + } + } + } + + float minvar = RT_INFINITY_F; + int minI = 0, minJ = 0; + for (int i = 0; i < numTilesH; ++i) { + for (int j = 0; j < numTilesW; ++j) { + if (variances[i][j] < minvar) { + minvar = variances[i][j]; + minI = i; + minJ = j; + } + } + } + + if (minvar <= 1.f || pass == 1) { + const int minY = skip * minI; + const int minX = skip * minJ; + if (pass == 0) { + // a variance <= 1 means we already found a flat region and can skip second pass + contrastThreshold = calcContrastThreshold(luminance, minY, minX, tilesize); + break; + } else { + // in second pass we allow a variance of 4 + // we additionally scan the tiles +-skip pixels around the best tile from pass 2 + // Means we scan (2 * skip + 1)^2 tiles in this step to get a better hit rate + // fortunately the scan is quite fast, so we use only one core and don't parallelize + const int topLeftYStart = std::max(minY - skip, 0); + const int topLeftXStart = std::max(minX - skip, 0); + const int topLeftYEnd = std::min(minY + skip, H - tilesize); + const int topLeftXEnd = std::min(minX + skip, W - tilesize); + const int numTilesH = topLeftYEnd - topLeftYStart + 1; + const int numTilesW = topLeftXEnd - topLeftXStart + 1; + + std::vector> variances(numTilesH, std::vector(numTilesW)); + for (int i = 0; i < numTilesH; ++i) { + const int tileY = topLeftYStart + i; + for (int j = 0; j < numTilesW; ++j) { + const int tileX = topLeftXStart + j; + const float avg = tileAverage(luminance, tileY, tileX, tilesize); + + if (avg < minLuminance || avg > maxLuminance) { + // too dark or too bright => skip the tile + variances[i][j] = RT_INFINITY_F; + continue; + } else { + variances[i][j] = tileVariance(luminance, tileY, tileX, tilesize, avg); + // exclude tiles with a variance less than minTileVariance + variances[i][j] = variances[i][j] < minTileVariance ? RT_INFINITY_F : variances[i][j]; + } + } + } + + float minvar = RT_INFINITY_F; + int minI = 0, minJ = 0; + for (int i = 0; i < numTilesH; ++i) { + for (int j = 0; j < numTilesW; ++j) { + if (variances[i][j] < minvar) { + minvar = variances[i][j]; + minI = i; + minJ = j; + } + } + } + + contrastThreshold = minvar <= 4.f ? calcContrastThreshold(luminance, topLeftYStart + minI, topLeftXStart + minJ, tilesize) : 0.f; + } + } + } + } + + if(contrastThreshold == 0.f) { for(int j = 0; j < H; ++j) { for(int i = 0; i < W; ++i) { blend[j][i] = amount; @@ -202,216 +408,66 @@ void buildBlendMask(float** luminance, float **blend, int W, int H, float &contr } } else { constexpr float scale = 0.0625f / 327.68f; - if (autoContrast) { - for (int pass = 0; pass < 2; ++pass) { - const int tilesize = 80 / (pass + 1); - const int numTilesW = W / tilesize; - const int numTilesH = H / tilesize; - std::vector>> variances(numTilesH, std::vector>(numTilesW)); - - #pragma omp parallel for - for (int i = 0; i < numTilesH; ++i) { - int tileY = i * tilesize; - for (int j = 0; j < numTilesW; ++j) { - int tileX = j * tilesize; -#ifdef __SSE2__ - vfloat avgv = ZEROV; - for (int y = tileY; y < tileY + tilesize; ++y) { - for (int x = tileX; x < tileX + tilesize; x += 4) { - avgv += LVFU(luminance[y][x]); - } - } - float avg = vhadd(avgv); -#else - float avg = 0.; - for (int y = tileY; y < tileY + tilesize; ++y) { - for (int x = tileX; x < tileX + tilesize; ++x) { - avg += luminance[y][x]; - } - } -#endif - avg /= SQR(tilesize); -#ifdef __SSE2__ - vfloat varv = ZEROV; - avgv = F2V(avg); - for (int y = tileY; y < tileY + tilesize; ++y) { - for (int x = tileX; x < tileX + tilesize; x +=4) { - varv += SQRV(LVFU(luminance[y][x]) - avgv); - } - } - float var = vhadd(varv); -#else - float var = 0.0; - for (int y = tileY; y < tileY + tilesize; ++y) { - for (int x = tileX; x < tileX + tilesize; ++x) { - var += SQR(luminance[y][x] - avg); - } - } - #endif - var /= (SQR(tilesize) * avg); - variances[i][j].first = var; - variances[i][j].second = avg; - } - } - - float minvar = RT_INFINITY_F; - int minI = 0, minJ = 0; - for (int i = 0; i < numTilesH; ++i) { - for (int j = 0; j < numTilesW; ++j) { - if (variances[i][j].first < minvar && variances[i][j].second > 2000.f && variances[i][j].second < 20000.f) { - minvar = variances[i][j].first; - minI = i; - minJ = j; - } - } - } - - const int minY = tilesize * minI; - const int minX = tilesize * minJ; - -// std::cout << pass << ": minvar : " << minvar << std::endl; - if (minvar <= 1.f || pass == 1) { - // a variance <= 1 means we already found a flat region and can skip second pass - // in second pass we allow a variance of 2 - JaggedArray Lum(tilesize, tilesize); - JaggedArray Blend(tilesize, tilesize); - for (int i = 0; i < tilesize; ++i) { - for (int j = 0; j < tilesize; ++j) { - Lum[i][j] = luminance[i + minY][j + minX]; - } - } - contrastThreshold = (pass == 0 || minvar <= 2.f) ? calcContrastThreshold(Lum, Blend, tilesize, tilesize) / 100.f : 0.f; - break; - } - } - } - - if(contrastThreshold == 0.f) { - for(int j = 0; j < H; ++j) { - for(int i = 0; i < W; ++i) { - blend[j][i] = amount; - } - } - } else { #ifdef _OPENMP - #pragma omp parallel + #pragma omp parallel +#endif + { +#ifdef __SSE2__ + const vfloat contrastThresholdv = F2V(contrastThreshold); + const vfloat scalev = F2V(scale); + const vfloat amountv = F2V(amount); +#endif +#ifdef _OPENMP + #pragma omp for schedule(dynamic,16) +#endif + + for(int j = 2; j < H - 2; ++j) { + int i = 2; +#ifdef __SSE2__ + for(; i < W - 5; i += 4) { + vfloat contrastv = vsqrtf(SQRV(LVFU(luminance[j][i+1]) - LVFU(luminance[j][i-1])) + SQRV(LVFU(luminance[j+1][i]) - LVFU(luminance[j-1][i])) + + SQRV(LVFU(luminance[j][i+2]) - LVFU(luminance[j][i-2])) + SQRV(LVFU(luminance[j+2][i]) - LVFU(luminance[j-2][i]))) * scalev; + + STVFU(blend[j][i], amountv * calcBlendFactor(contrastv, contrastThresholdv)); + } +#endif + for(; i < W - 2; ++i) { + + float contrast = sqrtf(rtengine::SQR(luminance[j][i+1] - luminance[j][i-1]) + rtengine::SQR(luminance[j+1][i] - luminance[j-1][i]) + + rtengine::SQR(luminance[j][i+2] - luminance[j][i-2]) + rtengine::SQR(luminance[j+2][i] - luminance[j-2][i])) * scale; + + blend[j][i] = amount * calcBlendFactor(contrast, contrastThreshold); + } + } + +#ifdef _OPENMP + #pragma omp single #endif { -#ifdef __SSE2__ - const vfloat contrastThresholdv = F2V(contrastThreshold); - const vfloat scalev = F2V(scale); - const vfloat amountv = F2V(amount); -#endif -#ifdef _OPENMP - #pragma omp for schedule(dynamic,16) -#endif - - for(int j = 2; j < H - 2; ++j) { - int i = 2; -#ifdef __SSE2__ - for(; i < W - 5; i += 4) { - vfloat contrastv = vsqrtf(SQRV(LVFU(luminance[j][i+1]) - LVFU(luminance[j][i-1])) + SQRV(LVFU(luminance[j+1][i]) - LVFU(luminance[j-1][i])) + - SQRV(LVFU(luminance[j][i+2]) - LVFU(luminance[j][i-2])) + SQRV(LVFU(luminance[j+2][i]) - LVFU(luminance[j-2][i]))) * scalev; - - STVFU(blend[j][i], amountv * calcBlendFactor(contrastv, contrastThresholdv)); - } -#endif - for(; i < W - 2; ++i) { - - float contrast = sqrtf(rtengine::SQR(luminance[j][i+1] - luminance[j][i-1]) + rtengine::SQR(luminance[j+1][i] - luminance[j-1][i]) + - rtengine::SQR(luminance[j][i+2] - luminance[j][i-2]) + rtengine::SQR(luminance[j+2][i] - luminance[j-2][i])) * scale; - - blend[j][i] = amount * calcBlendFactor(contrast, contrastThreshold); + // upper border + for(int j = 0; j < 2; ++j) { + for(int i = 2; i < W - 2; ++i) { + blend[j][i] = blend[2][i]; } } - -#ifdef _OPENMP - #pragma omp single -#endif - { - // upper border - for(int j = 0; j < 2; ++j) { - for(int i = 2; i < W - 2; ++i) { - blend[j][i] = blend[2][i]; - } - } - // lower border - for(int j = H - 2; j < H; ++j) { - for(int i = 2; i < W - 2; ++i) { - blend[j][i] = blend[H-3][i]; - } - } - for(int j = 0; j < H; ++j) { - // left border - blend[j][0] = blend[j][1] = blend[j][2]; - // right border - blend[j][W - 2] = blend[j][W - 1] = blend[j][W - 3]; + // lower border + for(int j = H - 2; j < H; ++j) { + for(int i = 2; i < W - 2; ++i) { + blend[j][i] = blend[H-3][i]; } } - - // blur blend mask to smooth transitions - gaussianBlur(blend, blend, W, H, 2.0); + for(int j = 0; j < H; ++j) { + // left border + blend[j][0] = blend[j][1] = blend[j][2]; + // right border + blend[j][W - 2] = blend[j][W - 1] = blend[j][W - 3]; + } } + + // blur blend mask to smooth transitions + gaussianBlur(blend, blend, W, H, 2.0); } } } -int calcContrastThreshold(float** luminance, float **blend, int W, int H) { - - constexpr float scale = 0.0625f / 327.68f; - -#ifdef __SSE2__ - const vfloat scalev = F2V(scale); -#endif - - for(int j = 2; j < H - 2; ++j) { - int i = 2; -#ifdef __SSE2__ - for(; i < W - 5; i += 4) { - vfloat contrastv = vsqrtf(SQRV(LVFU(luminance[j][i+1]) - LVFU(luminance[j][i-1])) + SQRV(LVFU(luminance[j+1][i]) - LVFU(luminance[j-1][i])) + - SQRV(LVFU(luminance[j][i+2]) - LVFU(luminance[j][i-2])) + SQRV(LVFU(luminance[j+2][i]) - LVFU(luminance[j-2][i]))) * scalev; - STVFU(blend[j -2 ][i - 2], contrastv); - } -#endif - for(; i < W - 2; ++i) { - - float contrast = sqrtf(rtengine::SQR(luminance[j][i+1] - luminance[j][i-1]) + rtengine::SQR(luminance[j+1][i] - luminance[j-1][i]) + - rtengine::SQR(luminance[j][i+2] - luminance[j][i-2]) + rtengine::SQR(luminance[j+2][i] - luminance[j-2][i])) * scale; - - blend[j -2][i- 2] = contrast; - } - } - - const float limit = (W - 4) * (H - 4) / 100.f; - - int c; - for (c = 1; c < 100; ++c) { - const float contrastThreshold = c / 100.f; - float sum = 0.f; -#ifdef __SSE2__ - const vfloat contrastThresholdv = F2V(contrastThreshold); - vfloat sumv = ZEROV; -#endif - - for(int j = 0; j < H - 4; ++j) { - int i = 0; -#ifdef __SSE2__ - for(; i < W - 7; i += 4) { - sumv += calcBlendFactor(LVFU(blend[j][i]), contrastThresholdv); - } -#endif - for(; i < W - 4; ++i) { - sum += calcBlendFactor(blend[j][i], contrastThreshold); - } - } -#ifdef __SSE2__ - sum += vhadd(sumv); -#endif - if (sum <= limit) { - break; - } - } - - return c; -} } diff --git a/rtengine/rt_algo.h b/rtengine/rt_algo.h index 0207e6f57..a8e2e3e23 100644 --- a/rtengine/rt_algo.h +++ b/rtengine/rt_algo.h @@ -25,5 +25,4 @@ namespace rtengine { void findMinMaxPercentile(const float* data, size_t size, float minPrct, float& minOut, float maxPrct, float& maxOut, bool multiThread = true); void buildBlendMask(float** luminance, float **blend, int W, int H, float &contrastThreshold, float amount = 1.f, bool autoContrast = false); -int calcContrastThreshold(float** luminance, float **blend, int W, int H); } diff --git a/rtengine/rt_math.h b/rtengine/rt_math.h index 8d55b492e..9342f5430 100644 --- a/rtengine/rt_math.h +++ b/rtengine/rt_math.h @@ -220,5 +220,21 @@ std::array dotProduct(const std::array, 3> &a, const std: return res; } + +template +T lin2log(T x, T base) +{ + constexpr T one(1); + return std::log(x * (base - one) + one) / std::log(base); +} + + +template +T log2lin(T x, T base) +{ + constexpr T one(1); + return (std::pow(base, x) - one) / (base - one); +} + } diff --git a/rtengine/rtengine.h b/rtengine/rtengine.h index b47620ee9..bc8c12fec 100644 --- a/rtengine/rtengine.h +++ b/rtengine/rtengine.h @@ -347,7 +347,7 @@ class AutoColorTonListener { public: virtual ~AutoColorTonListener() = default; - virtual void autoColorTonChanged(int satthres, int satprot) = 0; + virtual void autoColorTonChanged(int bwct, int satthres, int satprot) = 0; }; class AutoBWListener diff --git a/rtengine/rtlensfun.cc b/rtengine/rtlensfun.cc index 792a86b61..4856909f7 100644 --- a/rtengine/rtlensfun.cc +++ b/rtengine/rtlensfun.cc @@ -33,7 +33,7 @@ extern const Settings *settings; LFModifier::~LFModifier() { if (data_) { - MyMutex::MyLock lock(*lfModifierMutex); + MyMutex::MyLock lock(lfModifierMutex); data_->Destroy(); } } @@ -113,14 +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); + 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); + MyMutex::MyLock lock(lfModifierMutex); data_->ApplyColorModification(line, 0, y, width, 1, LF_CR_3(RED, GREEN, BLUE), 0); } @@ -160,7 +160,6 @@ LFModifier::LFModifier(lfModifier *m, bool swap_xy, int flags): swap_xy_(swap_xy), flags_(flags) { - lfModifierMutex = new MyMutex; } @@ -378,14 +377,13 @@ bool LFDatabase::LoadDirectory(const char *dirname) LFDatabase::LFDatabase(): data_(nullptr) { - lfDBMutex = new MyMutex; } LFDatabase::~LFDatabase() { if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + MyMutex::MyLock lock(lfDBMutex); data_->Destroy(); } } @@ -401,7 +399,7 @@ std::vector LFDatabase::getCameras() const { std::vector ret; if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + MyMutex::MyLock lock(lfDBMutex); auto cams = data_->GetCameras(); while (*cams) { ret.emplace_back(); @@ -417,7 +415,7 @@ std::vector LFDatabase::getLenses() const { std::vector ret; if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + MyMutex::MyLock lock(lfDBMutex); auto lenses = data_->GetLenses(); while (*lenses) { ret.emplace_back(); @@ -433,7 +431,7 @@ LFCamera LFDatabase::findCamera(const Glib::ustring &make, const Glib::ustring & { LFCamera ret; if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + MyMutex::MyLock lock(lfDBMutex); auto found = data_->FindCamerasExt(make.c_str(), model.c_str()); if (found) { ret.data_ = found[0]; @@ -448,7 +446,7 @@ LFLens LFDatabase::findLens(const LFCamera &camera, const Glib::ustring &name) c { LFLens ret; if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + 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 @@ -486,7 +484,7 @@ std::unique_ptr LFDatabase::getModifier(const LFCamera &camera, cons { std::unique_ptr ret; if (data_) { - MyMutex::MyLock lock(*lfDBMutex); + 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; @@ -503,7 +501,6 @@ std::unique_ptr LFDatabase::getModifier(const LFCamera &camera, cons std::unique_ptr LFDatabase::findModifier(const LensProfParams &lensProf, const FramesMetaData *idata, int width, int height, const CoarseTransformParams &coarse, int rawRotationDeg) { - const LFDatabase *db = getInstance(); Glib::ustring make, model, lens; float focallen = idata->getFocalLen(); if (lensProf.lfAutoMatch()) { @@ -518,6 +515,11 @@ std::unique_ptr LFDatabase::findModifier(const LensProfParams &lensP model = lensProf.lfCameraModel; lens = lensProf.lfLens; } + if (make.empty() || model.empty() || lens.empty()) { + return nullptr; + } + + const LFDatabase *db = getInstance(); LFCamera c = db->findCamera(make, model); LFLens l = db->findLens(lensProf.lfAutoMatch() ? c : LFCamera(), lens); if (focallen <= 0 && l.data_ && l.data_->MinFocal == l.data_->MaxFocal) { diff --git a/rtengine/rtlensfun.h b/rtengine/rtlensfun.h index f75f25d4f..c196a4765 100644 --- a/rtengine/rtlensfun.h +++ b/rtengine/rtlensfun.h @@ -38,7 +38,7 @@ class LFModifier final : public NonCopyable { public: - ~LFModifier(); + ~LFModifier() override; explicit operator bool() const; @@ -57,7 +57,7 @@ private: lfModifier *data_; bool swap_xy_; int flags_; - MyMutex *lfModifierMutex; + mutable MyMutex lfModifierMutex; }; class LFCamera final @@ -122,7 +122,7 @@ private: LFDatabase(); bool LoadDirectory(const char *dirname); - MyMutex *lfDBMutex; + mutable MyMutex lfDBMutex; static LFDatabase instance_; lfDatabase *data_; }; diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc index 79dee36bf..1623ecfbf 100644 --- a/rtengine/rtthumbnail.cc +++ b/rtengine/rtthumbnail.cc @@ -62,15 +62,15 @@ bool checkRawImageThumb (const rtengine::RawImage& raw_image) void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], bool multiThread) { DCraw::dcrawImage_t image = ri->get_image(); + const int height = ri->get_iheight(); + const int width = ri->get_iwidth(); + const int top_margin = ri->get_topmargin(); + const int left_margin = ri->get_leftmargin(); + const int raw_width = ri->get_rawwidth(); + const bool isFloat = ri->isFloat(); + const float * const float_raw_image = ri->get_FloatRawImage(); 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 @@ -110,14 +110,6 @@ 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) #endif @@ -157,6 +149,20 @@ void scale_colors (rtengine::RawImage *ri, float scale_mul[4], float cblack[4], image[row * width + col][ccol] = rtengine::CLIP (val); } } + } else if (isFloat) { +#ifdef _OPENMP + #pragma omp parallel for if(multiThread) +#endif + for (int row = 0; row < height; ++row) { + for (int col = 0; col < width; ++col) { + for (int i = 0; i < ri->get_colors(); ++i) { + float val = float_raw_image[(row + top_margin) * raw_width + col + left_margin + i]; + val -= cblack[i]; + val *= scale_mul[i]; + image[row * width + col][i] = val; + } + } + } } else { const int size = ri->get_iheight() * ri->get_iwidth(); @@ -279,6 +285,11 @@ Thumbnail* Thumbnail::loadFromImage (const Glib::ustring& fname, int &w, int &h, printf ("loadFromImage: Unsupported image type \"%s\"!\n", img->getType()); } + ProcParams paramsForAutoExp; // Dummy for constructor + ImProcFunctions ipf (¶msForAutoExp, false); + ipf.getAutoExp (tpp->aeHistogram, tpp->aeHistCompression, 0.02, tpp->aeExposureCompensation, tpp->aeLightness, tpp->aeContrast, tpp->aeBlack, tpp->aeHighlightCompression, tpp->aeHighlightCompressionThreshold); + tpp->aeValid = true; + if (n > 0) { ColorTemp cTemp; @@ -416,7 +427,9 @@ Thumbnail* Thumbnail::loadQuickFromRaw (const Glib::ustring& fname, RawMetaDataL // did we succeed? if ( err ) { - printf ("Could not extract thumb from %s\n", fname.data()); + if (options.rtSettings.verbose) { + std::cout << "Could not extract thumb from " << fname.c_str() << std::endl; + } delete tpp; delete img; delete ri; @@ -567,6 +580,7 @@ Thumbnail* Thumbnail::loadFromRaw (const Glib::ustring& fname, RawMetaDataLocati tpp->camwbBlue = tpp->blueMultiplier / pre_mul[2]; //ri->get_pre_mul(2); //tpp->defGain = 1.0 / min(ri->get_pre_mul(0), ri->get_pre_mul(1), ri->get_pre_mul(2)); tpp->defGain = max (scale_mul[0], scale_mul[1], scale_mul[2], scale_mul[3]) / min (scale_mul[0], scale_mul[1], scale_mul[2], scale_mul[3]); + tpp->defGain *= std::pow(2, ri->getBaselineExposure()); tpp->gammaCorrected = true; @@ -923,6 +937,11 @@ Thumbnail* Thumbnail::loadFromRaw (const Glib::ustring& fname, RawMetaDataLocati } } } + ProcParams paramsForAutoExp; // Dummy for constructor + ImProcFunctions ipf (¶msForAutoExp, false); + ipf.getAutoExp (tpp->aeHistogram, tpp->aeHistCompression, 0.02, tpp->aeExposureCompensation, tpp->aeLightness, tpp->aeContrast, tpp->aeBlack, tpp->aeHighlightCompression, tpp->aeHighlightCompressionThreshold); + tpp->aeValid = true; + if (ri->get_colors() == 1) { pixSum[0] = pixSum[1] = pixSum[2] = 1.; n[0] = n[1] = n[2] = 1; @@ -993,6 +1012,13 @@ Thumbnail::Thumbnail () : wbEqual (-1.0), wbTempBias (0.0), aeHistCompression (3), + aeValid(false), + aeExposureCompensation(0.0), + aeLightness(0), + aeContrast(0), + aeBlack(0), + aeHighlightCompression(0), + aeHighlightCompressionThreshold(0), embProfileLength (0), embProfileData (nullptr), embProfile (nullptr), @@ -1200,9 +1226,8 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT ipf.firstAnalysis (baseImg, params, hist16); - if (params.fattal.enabled) { - ipf.ToneMapFattal02(baseImg); - } + ipf.dehaze(baseImg); + ipf.ToneMapFattal02(baseImg); // perform transform if (ipf.needsTransform()) { @@ -1224,8 +1249,17 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT int hlcompr = params.toneCurve.hlcompr; int hlcomprthresh = params.toneCurve.hlcomprthresh; - if (params.toneCurve.autoexp && aeHistogram) { - ipf.getAutoExp (aeHistogram, aeHistCompression, params.toneCurve.clip, expcomp, bright, contr, black, hlcompr, hlcomprthresh); + if (params.toneCurve.autoexp) { + if (aeValid) { + expcomp = aeExposureCompensation; + bright = aeLightness; + contr = aeContrast; + black = aeBlack; + hlcompr = aeHighlightCompression; + hlcomprthresh = aeHighlightCompressionThreshold; + } else if (aeHistogram) { + ipf.getAutoExp (aeHistogram, aeHistCompression, 0.02, expcomp, bright, contr, black, hlcompr, hlcomprthresh); + } } LUTf curve1 (65536); @@ -1363,11 +1397,14 @@ IImage8* Thumbnail::processImage (const procparams::ProcParams& params, eSensorT ipf.chromiLuminanceCurve (nullptr, 1, labView, labView, curve1, curve2, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, dummy, dummy); ipf.vibrance (labView); + ipf.labColorCorrectionRegions(labView); if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || !params.colorappearance.enabled) { ipf.EPDToneMap (labView, 5, 6); } + ipf.softLight(labView); + if (params.colorappearance.enabled) { CurveFactory::curveLightBrightColor ( params.colorappearance.curve, @@ -1904,46 +1941,53 @@ bool Thumbnail::readImage (const Glib::ustring& fname) Glib::ustring fullFName = fname + ".rtti"; - if (!Glib::file_test (fullFName, Glib::FILE_TEST_EXISTS)) { + if (!Glib::file_test(fullFName, Glib::FILE_TEST_EXISTS)) { return false; } - FILE* f = g_fopen (fullFName.c_str (), "rb"); + FILE* f = g_fopen(fullFName.c_str (), "rb"); if (!f) { return false; } char imgType[31]; // 30 -> arbitrary size, but should be enough for all image type's name - fgets (imgType, 30, f); - imgType[strlen (imgType) - 1] = '\0'; // imgType has a \n trailing character, so we overwrite it by the \0 char + fgets(imgType, 30, f); + imgType[strlen(imgType) - 1] = '\0'; // imgType has a \n trailing character, so we overwrite it by the \0 char guint32 width, height; - fread (&width, 1, sizeof (guint32), f); - fread (&height, 1, sizeof (guint32), f); + + if (fread(&width, 1, sizeof(guint32), f) < sizeof(guint32)) { + width = 0; + } + + if (fread(&height, 1, sizeof(guint32), f) < sizeof(guint32)) { + height = 0; + } bool success = false; - if (!strcmp (imgType, sImage8)) { - Image8 *image = new Image8 (width, height); - image->readData (f); - thumbImg = image; - success = true; - } else if (!strcmp (imgType, sImage16)) { - Image16 *image = new Image16 (width, height); - image->readData (f); - thumbImg = image; - success = true; - } else if (!strcmp (imgType, sImagefloat)) { - Imagefloat *image = new Imagefloat (width, height); - image->readData (f); - thumbImg = image; - success = true; - } else { - printf ("readImage: Unsupported image type \"%s\"!\n", imgType); + if (std::min(width , height) > 0) { + if (!strcmp(imgType, sImage8)) { + Image8 *image = new Image8(width, height); + image->readData(f); + thumbImg = image; + success = true; + } else if (!strcmp(imgType, sImage16)) { + Image16 *image = new Image16(width, height); + image->readData(f); + thumbImg = image; + success = true; + } else if (!strcmp(imgType, sImagefloat)) { + Imagefloat *image = new Imagefloat(width, height); + image->readData(f); + thumbImg = image; + success = true; + } else { + printf ("readImage: Unsupported image type \"%s\"!\n", imgType); + } } - - fclose (f); + fclose(f); return success; } @@ -1990,6 +2034,38 @@ bool Thumbnail::readData (const Glib::ustring& fname) aeHistCompression = keyFile.get_integer ("LiveThumbData", "AEHistCompression"); } + aeValid = true; + if (keyFile.has_key ("LiveThumbData", "AEExposureCompensation")) { + aeExposureCompensation = keyFile.get_double ("LiveThumbData", "AEExposureCompensation"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "AELightness")) { + aeLightness = keyFile.get_integer ("LiveThumbData", "AELightness"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "AEContrast")) { + aeContrast = keyFile.get_integer ("LiveThumbData", "AEContrast"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "AEBlack")) { + aeBlack = keyFile.get_integer ("LiveThumbData", "AEBlack"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "AEHighlightCompression")) { + aeHighlightCompression = keyFile.get_integer ("LiveThumbData", "AEHighlightCompression"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "AEHighlightCompressionThreshold")) { + aeHighlightCompressionThreshold = keyFile.get_integer ("LiveThumbData", "AEHighlightCompressionThreshold"); + } else { + aeValid = false; + } + if (keyFile.has_key ("LiveThumbData", "RedMultiplier")) { redMultiplier = keyFile.get_double ("LiveThumbData", "RedMultiplier"); } @@ -2063,7 +2139,12 @@ bool Thumbnail::writeData (const Glib::ustring& fname) keyFile.set_double ("LiveThumbData", "RedAWBMul", redAWBMul); keyFile.set_double ("LiveThumbData", "GreenAWBMul", greenAWBMul); keyFile.set_double ("LiveThumbData", "BlueAWBMul", blueAWBMul); - keyFile.set_integer ("LiveThumbData", "AEHistCompression", aeHistCompression); + keyFile.set_double ("LiveThumbData", "AEExposureCompensation", aeExposureCompensation); + keyFile.set_integer ("LiveThumbData", "AELightness", aeLightness); + keyFile.set_integer ("LiveThumbData", "AEContrast", aeContrast); + keyFile.set_integer ("LiveThumbData", "AEBlack", aeBlack); + keyFile.set_integer ("LiveThumbData", "AEHighlightCompression", aeHighlightCompression); + keyFile.set_integer ("LiveThumbData", "AEHighlightCompressionThreshold", aeHighlightCompressionThreshold); keyFile.set_double ("LiveThumbData", "RedMultiplier", redMultiplier); keyFile.set_double ("LiveThumbData", "GreenMultiplier", greenMultiplier); keyFile.set_double ("LiveThumbData", "BlueMultiplier", blueMultiplier); @@ -2124,7 +2205,7 @@ bool Thumbnail::readEmbProfile (const Glib::ustring& fname) if (!fseek (f, 0, SEEK_SET)) { embProfileData = new unsigned char[embProfileLength]; - fread (embProfileData, 1, embProfileLength, f); + embProfileLength = fread (embProfileData, 1, embProfileLength, f); embProfile = cmsOpenProfileFromMem (embProfileData, embProfileLength); } } @@ -2156,14 +2237,19 @@ bool Thumbnail::writeEmbProfile (const Glib::ustring& fname) bool Thumbnail::readAEHistogram (const Glib::ustring& fname) { - FILE* f = g_fopen (fname.c_str (), "rb"); + FILE* f = g_fopen(fname.c_str(), "rb"); if (!f) { - aeHistogram (0); + aeHistogram.reset(); } else { - aeHistogram (65536 >> aeHistCompression); - fread (&aeHistogram[0], 1, (65536 >> aeHistCompression)*sizeof (aeHistogram[0]), f); + aeHistogram(65536 >> aeHistCompression); + const size_t histoBytes = (65536 >> aeHistCompression) * sizeof(aeHistogram[0]); + const size_t bytesRead = fread(&aeHistogram[0], 1, histoBytes, f); fclose (f); + if (bytesRead != histoBytes) { + aeHistogram.reset(); + return false; + } return true; } diff --git a/rtengine/rtthumbnail.h b/rtengine/rtthumbnail.h index 558d136ee..c01aa81ee 100644 --- a/rtengine/rtthumbnail.h +++ b/rtengine/rtthumbnail.h @@ -50,6 +50,13 @@ class Thumbnail double autoWBTemp, autoWBGreen, wbEqual, wbTempBias; // autoWBTemp and autoWBGreen are updated each time autoWB is requested and if wbEqual has been modified LUTu aeHistogram; int aeHistCompression; + bool aeValid; + double aeExposureCompensation; + int aeLightness; + int aeContrast; + int aeBlack; + int aeHighlightCompression; + int aeHighlightCompressionThreshold; int embProfileLength; unsigned char* embProfileData; cmsHPROFILE embProfile; @@ -100,6 +107,7 @@ public: bool readAEHistogram (const Glib::ustring& fname); bool writeAEHistogram (const Glib::ustring& fname); + bool isAeValid() { return aeValid; }; unsigned char* getImage8Data(); // accessor to the 8bit image if it is one, which should be the case for the "Inspector" mode. // Hombre: ... let's hope that proper template can make this cleaner @@ -148,7 +156,7 @@ public: } return imgPtr; - }; + } }; } diff --git a/rtengine/simpleprocess.cc b/rtengine/simpleprocess.cc index 06e2b13bf..87c33e8f8 100644 --- a/rtengine/simpleprocess.cc +++ b/rtengine/simpleprocess.cc @@ -856,9 +856,8 @@ private: ipf.firstAnalysis (baseImg, params, hist16); - if (params.fattal.enabled) { - ipf.ToneMapFattal02(baseImg); - } + ipf.dehaze(baseImg); + ipf.ToneMapFattal02(baseImg); // perform transform (excepted resizing) if (ipf.needsTransform()) { @@ -894,41 +893,16 @@ private: //gamma TRC working if (params.icm.workingTRC == "Custom") { //exec TRC IN free - Glib::ustring profile; - profile = params.icm.workingProfile; + const Glib::ustring 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(); + const int cw = baseImg->getWidth(); + const int ch = baseImg->getHeight(); + cmsHTRANSFORM dummy = nullptr; // 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; - + ipf.workingtrc(baseImg, baseImg, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310, dummy, true, false, false); //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; + ipf.workingtrc(baseImg, baseImg, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope, dummy, false, true, false); } } @@ -1082,6 +1056,7 @@ private: ipf.vibrance (labView); + ipf.labColorCorrectionRegions(labView); if ((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) { ipf.impulsedenoise (labView); @@ -1135,6 +1110,8 @@ private: wavCLVCurve.Reset(); + ipf.softLight(labView); + //Colorappearance and tone-mapping associated int f_w = 1, f_h = 1; @@ -1256,10 +1233,9 @@ private: } } - Imagefloat* readyImg = nullptr; cmsHPROFILE jprof = nullptr; - bool customGamma = false; - bool useLCMS = false; + constexpr bool customGamma = false; + constexpr bool useLCMS = false; bool bwonly = params.blackwhite.enabled && !params.colorToning.enabled && !autili && !butili ; ///////////// Custom output gamma has been removed, the user now has to create @@ -1268,7 +1244,7 @@ private: // 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); + Imagefloat* readyImg = ipf.lab2rgbOut (labView, cx, cy, cw, ch, params.icm); if (settings->verbose) { printf ("Output profile_: \"%s\"\n", params.icm.outputProfile.c_str()); diff --git a/rtengine/sleef.c b/rtengine/sleef.c index 901d04f7d..cc92be108 100644 --- a/rtengine/sleef.c +++ b/rtengine/sleef.c @@ -23,6 +23,7 @@ #define L2U .69314718055966295651160180568695068359375 #define L2L .28235290563031577122588448175013436025525412068e-12 #define R_LN2 1.442695040888963407359924681001892137426645954152985934135449406931 +#define pow_F(a,b) (xexpf(b*xlogf(a))) __inline int64_t doubleToRawLongBits(double d) { union { @@ -1263,6 +1264,16 @@ __inline float xdivf( float d, int n){ return uflint.floatval; } +__inline float xlin2log(float x, float base) +{ + constexpr float one(1); + return xlogf(x * (base - one) + one) / xlogf(base); +} +__inline float xlog2lin(float x, float base) +{ + constexpr float one(1); + return (pow_F(base, x) - one) / (base - one); +} #endif diff --git a/rtengine/sleefsseavx.c b/rtengine/sleefsseavx.c index c68f11ae0..83d937bd1 100644 --- a/rtengine/sleefsseavx.c +++ b/rtengine/sleefsseavx.c @@ -1368,8 +1368,9 @@ static INLINE vfloat xcbrtf(vfloat d) { return y; } -static INLINE vfloat LIMV( vfloat a, vfloat b, vfloat c ) { -return vmaxf( b, vminf(a,c)); +static INLINE vfloat vclampf(vfloat value, vfloat low, vfloat high) { + // clamps value in [low;high], returns low if value is NaN + return vmaxf(vminf(high, value), low); } static INLINE vfloat SQRV(vfloat a){ diff --git a/rtengine/stdimagesource.cc b/rtengine/stdimagesource.cc index c75995b25..37d438863 100644 --- a/rtengine/stdimagesource.cc +++ b/rtengine/stdimagesource.cc @@ -194,7 +194,7 @@ void StdImageSource::getImage (const ColorTemp &ctemp, int tran, Imagefloat* ima // the code will use OpenMP as of now. - img->getStdImage(ctemp, tran, image, pp, true, hrp); + img->getStdImage(ctemp, tran, image, pp); // Hombre: we could have rotated the image here too, with just few line of code, but: // 1. it would require other modifications in the engine, so "do not touch that little plonker!" diff --git a/rtengine/stdimagesource.h b/rtengine/stdimagesource.h index 1dbb65001..500641f72 100644 --- a/rtengine/stdimagesource.h +++ b/rtengine/stdimagesource.h @@ -40,70 +40,66 @@ protected: public: StdImageSource (); - ~StdImageSource (); + ~StdImageSource () override; - int load (const Glib::ustring &fname); - void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw); - ColorTemp getWB () const + int load (const Glib::ustring &fname) override; + void getImage (const ColorTemp &ctemp, int tran, Imagefloat* image, const PreviewProps &pp, const ToneCurveParams &hrp, const RAWParams &raw) override; + ColorTemp getWB () const override { return wb; } - void getAutoWBMultipliers (double &rm, double &gm, double &bm); - ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal); + void getAutoWBMultipliers (double &rm, double &gm, double &bm) override; + ColorTemp getSpotWB (std::vector &red, std::vector &green, std::vector &blue, int tran, double equal) override; - eSensorType getSensorType() const {return ST_NONE;} - bool isMono() const {return false;} + eSensorType getSensorType() const override {return ST_NONE;} + bool isMono() const override {return false;} - bool isWBProviderReady () + bool isWBProviderReady () override { return true; }; - void getAutoExpHistogram (LUTu &histogram, int& histcompr); + void getAutoExpHistogram (LUTu &histogram, int& histcompr) override; - double getDefGain () const + double getDefGain () const override { return 0.0; } - void getFullSize (int& w, int& h, int tr = TR_NONE); - void getSize (const PreviewProps &pp, int& w, int& h); + void getFullSize (int& w, int& h, int tr = TR_NONE) override; + void getSize (const PreviewProps &pp, int& w, int& h) override; - FrameData* getImageData (unsigned int frameNum) - { - return idata->getFrameData (frameNum); - } ImageIO* getImageIO () { return img; } - ImageMatrices* getImageMatrices () + ImageMatrices* getImageMatrices () override { return (ImageMatrices*)nullptr; } - bool isRAW() const + bool isRAW() const override { return false; } - void setProgressListener (ProgressListener* pl) + void setProgressListener (ProgressListener* pl) override { plistener = pl; } - void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb);// RAWParams raw will not be used for non-raw files (see imagesource.h) + void convertColorSpace(Imagefloat* image, const ColorManagementParams &cmp, const ColorTemp &wb) override;// RAWParams raw will not be used for non-raw files (see imagesource.h) static void colorSpaceConversion (Imagefloat* im, const ColorManagementParams &cmp, cmsHPROFILE embedded, IIOSampleFormat sampleFormat); - bool isRGBSourceModified() const + bool isRGBSourceModified() const override { return rgbSourceModified; } - void setCurrentFrame(unsigned int frameNum) {} - int getFrameCount() {return 1;} - int getFlatFieldAutoClipValue() {return 0;} + void setCurrentFrame(unsigned int frameNum) override {} + int getFrameCount() override {return 1;} + int getFlatFieldAutoClipValue() override {return 0;} - void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) { R = G = B = 0;} + void getRawValues(int x, int y, int rotate, int &R, int &G, int &B) override { R = G = B = 0;} }; diff --git a/rtengine/tmo_fattal02.cc b/rtengine/tmo_fattal02.cc index dc7826501..124cdbfb1 100644 --- a/rtengine/tmo_fattal02.cc +++ b/rtengine/tmo_fattal02.cc @@ -952,7 +952,7 @@ inline void rescale_nearest (const Array2Df &src, Array2Df &dst, bool multithrea inline float luminance (float r, float g, float b, TMatrix ws) { - return r * ws[1][0] + g * ws[1][1] + b * ws[1][2]; + return Color::rgbLuminance(r, g, b, ws); } @@ -1014,6 +1014,10 @@ inline int find_fast_dim (int dim) void ImProcFunctions::ToneMapFattal02 (Imagefloat *rgb) { + if (!params->fattal.enabled) { + return; + } + BENCHFUN const int detail_level = 3; diff --git a/rtengine/vng4_demosaic_RT.cc b/rtengine/vng4_demosaic_RT.cc index 8ed05dd09..1c7f27dea 100644 --- a/rtengine/vng4_demosaic_RT.cc +++ b/rtengine/vng4_demosaic_RT.cc @@ -22,16 +22,45 @@ #include "rtengine.h" #include "rawimagesource.h" -#include "rawimagesource_i.h" #include "../rtgui/multilangmgr.h" //#define BENCHMARK #include "StopWatch.h" +namespace { + +using namespace rtengine; + +inline void vng4interpolate_row_redblue (const RawImage *ri, const array2D &rawData, float* ar, float* ab, const float * const pg, const float * const cg, const float * const ng, int i, int width) +{ + if (ri->ISBLUE(i, 0) || ri->ISBLUE(i, 1)) { + std::swap(ar, ab); + } + + // RGRGR or GRGRGR line + for (int j = 3; j < width - 3; ++j) { + if (!ri->ISGREEN(i, j)) { + // keep original value + ar[j] = rawData[i][j]; + // cross interpolation of red/blue + float rb = (rawData[i - 1][j - 1] - pg[j - 1] + rawData[i + 1][j - 1] - ng[j - 1]); + rb += (rawData[i - 1][j + 1] - pg[j + 1] + rawData[i + 1][j + 1] - ng[j + 1]); + ab[j] = cg[j] + rb * 0.25f; + } else { + // linear R/B-G interpolation horizontally + ar[j] = cg[j] + (rawData[i][j - 1] - cg[j - 1] + rawData[i][j + 1] - cg[j + 1]) / 2; + // linear B/R-G interpolation vertically + ab[j] = cg[j] + (rawData[i - 1][j] - pg[j] + rawData[i + 1][j] - ng[j]) / 2; + } + } +} +} + namespace rtengine + { #define fc(row,col) (prefilters >> ((((row) << 1 & 14) + ((col) & 1)) << 1) & 3) -typedef unsigned short ushort; -void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &red, array2D &green, array2D &blue, bool keepGreens) + +void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &red, array2D &green, array2D &blue) { BENCHFUN const signed short int *cp, terms[] = { @@ -71,91 +100,130 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2Dprefilters; const int width = W, height = H; constexpr unsigned int colors = 4; - float (*image)[4]; - image = (float (*)[4]) calloc (height * width, sizeof * image); + float (*image)[4] = (float (*)[4]) calloc (height * width, sizeof * image); -#ifdef _OPENMP - #pragma omp parallel for -#endif + int lcode[16][16][32]; + float mul[16][16][8]; + float csum[16][16][3]; - for (int ii = 0; ii < H; ii++) - for (int jj = 0; jj < W; jj++) { - image[ii * W + jj][fc(ii, jj)] = rawData[ii][jj]; + // first linear interpolation + for (int row = 0; row < 16; row++) + for (int col = 0; col < 16; col++) { + int * ip = lcode[row][col]; + int mulcount = 0; + float sum[4] = {}; + + for (int y = -1; y <= 1; y++) + for (int x = -1; x <= 1; x++) { + int shift = (y == 0) + (x == 0); + + if (shift == 2) { + continue; + } + + int color = fc(row + y, col + x); + *ip++ = (width * y + x) * 4 + color; + + mul[row][col][mulcount] = (1 << shift); + *ip++ = color; + sum[color] += (1 << shift); + mulcount++; + } + + int colcount = 0; + + for (unsigned int c = 0; c < colors; c++) + if (c != fc(row, col)) { + *ip++ = c; + csum[row][col][colcount] = 1.f / sum[c]; + colcount ++; + } } - { - int lcode[16][16][32]; - float mul[16][16][8]; - float csum[16][16][4]; - -// first linear interpolation - for (int row = 0; row < 16; row++) - for (int col = 0; col < 16; col++) { - int * ip = lcode[row][col]; - int mulcount = 0; - float sum[4]; - memset (sum, 0, sizeof sum); - - for (int y = -1; y <= 1; y++) - for (int x = -1; x <= 1; x++) { - int shift = (y == 0) + (x == 0); - - if (shift == 2) { - continue; - } - - int color = fc(row + y, col + x); - *ip++ = (width * y + x) * 4 + color; - - mul[row][col][mulcount] = (1 << shift); - *ip++ = color; - sum[color] += (1 << shift); - mulcount++; - } - - int colcount = 0; - - for (unsigned int c = 0; c < colors; c++) - if (c != fc(row, col)) { - *ip++ = c; - csum[row][col][colcount] = sum[c]; - colcount ++; - } - } - #ifdef _OPENMP - #pragma omp parallel for + #pragma omp parallel +#endif + { + int firstRow = -1; + int lastRow = -1; +#ifdef _OPENMP + // note, static scheduling is important in this implementation + #pragma omp for schedule(static) #endif - for (int row = 1; row < height - 1; row++) { + for (int ii = 0; ii < H; ii++) { + if (firstRow == -1) { + firstRow = ii; + } + lastRow = ii; + for (int jj = 0; jj < W; jj++) { + image[ii * W + jj][fc(ii, jj)] = rawData[ii][jj]; + } + if (ii - 1 > firstRow) { + int row = ii - 1; + for (int col = 1; col < width - 1; col++) { + float * pix = image[row * width + col]; + int * ip = lcode[row & 15][col & 15]; + float sum[4] = {}; + + for (int i = 0; i < 8; i++, ip += 2) { + sum[ip[1]] += pix[ip[0]] * mul[row & 15][col & 15][i]; + } + + for (unsigned int i = 0; i < colors - 1; i++, ip++) { + pix[ip[0]] = sum[ip[0]] * csum[row & 15][col & 15][i]; + } + } + } + } + + // now all rows are processed except the first and last row of each chunk + // let's process them now but skip row 0 and row H - 1 + if (firstRow > 0 && firstRow < H - 1) { + const int row = firstRow; for (int col = 1; col < width - 1; col++) { float * pix = image[row * width + col]; int * ip = lcode[row & 15][col & 15]; - float sum[4]; - memset (sum, 0, sizeof sum); + float sum[4] = {}; for (int i = 0; i < 8; i++, ip += 2) { sum[ip[1]] += pix[ip[0]] * mul[row & 15][col & 15][i]; } for (unsigned int i = 0; i < colors - 1; i++, ip++) { - pix[ip[0]] = sum[ip[0]] / csum[row & 15][col & 15][i]; + pix[ip[0]] = sum[ip[0]] * csum[row & 15][col & 15][i]; + } + } + } + + if (lastRow > 0 && lastRow < H - 1) { + const int row = lastRow; + for (int col = 1; col < width - 1; col++) { + float * pix = image[row * width + col]; + int * ip = lcode[row & 15][col & 15]; + float sum[4] = {}; + + for (int i = 0; i < 8; i++, ip += 2) { + sum[ip[1]] += pix[ip[0]] * mul[row & 15][col & 15][i]; + } + + for (unsigned int i = 0; i < colors - 1; i++, ip++) { + pix[ip[0]] = sum[ip[0]] * csum[row & 15][col & 15][i]; } } } } - const int prow = 7, pcol = 1; - int *code[8][2]; - int t, g; - int * ip = (int *) calloc ((prow + 1) * (pcol + 1), 1280); + constexpr int prow = 7, pcol = 1; + int32_t *code[8][2]; + int32_t * ip = (int32_t *) calloc ((prow + 1) * (pcol + 1), 1280); for (int row = 0; row <= prow; row++) /* Precalculate for VNG */ for (int col = 0; col <= pcol; col++) { code[row][col] = ip; - - for (cp = terms, t = 0; t < 64; t++) { + cp = terms; + for (int t = 0; t < 64; t++) { int y1 = *cp++; int x1 = *cp++; int y2 = *cp++; @@ -176,9 +244,13 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D(ip++) = 1 << weight; +#else + *ip++ = 1 << weight; +#endif + for (int g = 0; g < 8; g++) if (grads & (1 << g)) { *ip++ = g; } @@ -188,7 +260,8 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D &rawData, array2DsetProgress (progress); } @@ -211,92 +284,79 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D float conversions + const float diff = std::fabs(pix[ip[0]] - pix[ip[1]]) * reinterpret_cast(ip)[2]; +#else + const float diff = std::fabs(pix[ip[0]] - pix[ip[1]]) * ip[2]; +#endif + gval[ip[3]] += diff; + ip += 5; + if (UNLIKELY(ip[-1] != -1)) { + gval[ip[-1]] += diff; + ip++; } - - ip++; - { - float gmin, gmax; - gmin = gmax = gval[0]; /* Choose a threshold */ - - for (g = 1; g < 8; g++) { - if (gmin > gval[g]) { - gmin = gval[g]; - } - - if (gmax < gval[g]) { - gmax = gval[g]; - } - } - - thold = gmin + (gmax / 2); - } - memset (sum, 0, sizeof sum); - float t1, t2; - t1 = t2 = pix[color]; - - if(color & 1) { - int num = 0; - - for (g = 0; g < 8; g++, ip += 2) { /* Average the neighbors */ - if (gval[g] <= thold) { - if(ip[1]) { - sum[0] += (t1 + pix[ip[1]]) * 0.5f; - } - - sum[1] += pix[ip[0] + (color ^ 2)]; - num++; - } - } - - t1 += (sum[1] - sum[0]) / num; - } else { - int num = 0; - - for (g = 0; g < 8; g++, ip += 2) { /* Average the neighbors */ - if (gval[g] <= thold) { - sum[1] += pix[ip[0] + 1]; - sum[2] += pix[ip[0] + 3]; - - if(ip[1]) { - sum[0] += (t1 + pix[ip[1]]) * 0.5f; - } - - num++; - } - } - - t1 += (sum[1] - sum[0]) / num; - t2 += (sum[2] - sum[0]) / num; - } - - green[row][col] = 0.5f * (t1 + t2); } + ip++; + + const float thold = rtengine::min(gval[0], gval[1], gval[2], gval[3], gval[4], gval[5], gval[6], gval[7]) + + rtengine::max(gval[0], gval[1], gval[2], gval[3], gval[4], gval[5], gval[6], gval[7]) * 0.5f; + + float sum0 = 0.f; + float sum1 = 0.f; + const float greenval = pix[color]; + int num = 0; + + if(color & 1) { + color ^= 2; + for (int g = 0; g < 8; g++, ip += 2) { /* Average the neighbors */ + if (gval[g] <= thold) { + if(ip[1]) { + sum0 += greenval + pix[ip[1]]; + } + + sum1 += pix[ip[0] + color]; + num++; + } + } + sum0 *= 0.5f; + } else { + for (int g = 0; g < 8; g++, ip += 2) { /* Average the neighbors */ + if (gval[g] <= thold) { + if(ip[1]) { + sum0 += greenval + pix[ip[1]]; + } + + sum1 += pix[ip[0] + 1] + pix[ip[0] + 3]; + num++; + } + } + } + green[row][col] = greenval + (sum1 - sum0) / (2 * num); + } + if (row - 1 > firstRow) { + vng4interpolate_row_redblue(ri, rawData, red[row - 1], blue[row - 1], green[row - 2], green[row - 1], green[row], row - 1, W); } if(plistenerActive) { @@ -311,32 +371,24 @@ void RawImageSource::vng4_demosaic (const array2D &rawData, array2D 2 && firstRow < H - 3) { + vng4interpolate_row_redblue(ri, rawData, red[firstRow], blue[firstRow], green[firstRow - 1], green[firstRow], green[firstRow + 1], firstRow, W); + } - if(plistenerActive) { - plistener->setProgress (0.98); - } - - // Interpolate R and B + if (lastRow > 2 && lastRow < H - 3) { + vng4interpolate_row_redblue(ri, rawData, red[lastRow], blue[lastRow], green[lastRow - 1], green[lastRow], green[lastRow + 1], lastRow, W); + } #ifdef _OPENMP - #pragma omp parallel for + #pragma omp single #endif - - for (int i = 0; i < H; i++) { - if (i == 0) - // rm, gm, bm must be recovered - //interpolate_row_rb_mul_pp (red, blue, NULL, green[i], green[i+1], i, rm, gm, bm, 0, W, 1); { - interpolate_row_rb_mul_pp (rawData, red[i], blue[i], nullptr, green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1); - } else if (i == H - 1) { - interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], nullptr, i, 1.0, 1.0, 1.0, 0, W, 1); - } else { - interpolate_row_rb_mul_pp (rawData, red[i], blue[i], green[i - 1], green[i], green[i + 1], i, 1.0, 1.0, 1.0, 0, W, 1); + // let the first thread, which is out of work, do the border interpolation + border_interpolate2(W, H, 3, rawData, red, green, blue); } } - border_interpolate2(W, H, 3, rawData, red, green, blue); + + free (code[0][0]); + free (image); if(plistenerActive) { plistener->setProgress (1.0); diff --git a/rtexif/canonattribs.cc b/rtexif/canonattribs.cc index 2e2eea676..940206e31 100644 --- a/rtexif/canonattribs.cc +++ b/rtexif/canonattribs.cc @@ -32,7 +32,7 @@ namespace rtexif class CAOnOffInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int n = t->toInt(); @@ -51,7 +51,7 @@ class CAIntSerNumInterpreter : public Interpreter { public: CAIntSerNumInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { return ""; } @@ -63,7 +63,7 @@ class CAApertureInterpreter : public Interpreter { public: CAApertureInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = pow (2.0, t->toDouble() / 64.0); @@ -92,7 +92,7 @@ CAMacroModeInterpreter caMacroModeInterpreter; class CASelfTimerInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int sec = t->toInt (0, SHORT); @@ -385,7 +385,7 @@ CAExposureModeInterpreter caExposureModeInterpreter; class CAFlashBitsInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream s; unsigned bits = t->toInt (0, SHORT); @@ -533,7 +533,7 @@ CARAWQualityInterpreter caRAWQualityInterpreter; class CAFocalInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { Tag *unitTag = t->getParent()->getRoot()->findTag ("FocalUnits"); double v = unitTag ? unitTag->toDouble() : 1.; @@ -567,6 +567,7 @@ public: {6, "Sigma 18-125mm f/3.5-5.6 DC IF ASP"}, {6, "Tokina AF 193-2 19-35mm f/3.5-4.5"}, {6, "Sigma 28-80mm f/3.5-5.6 II Macro"}, + {6, "Sigma 28-300mm f/3.5-6.3 DG Macro"}, {7, "Canon EF 100-300mm f/5.6L"}, {8, "Canon EF 100-300mm f/5.6 or Sigma or Tokina Lens"}, {8, "Sigma 70-300mm f/4-5.6 [APO] DG Macro"}, @@ -656,7 +657,9 @@ public: {82, "Canon TS-E 135mm f/4L Macro"}, {94, "Canon TS-E 17mm f/4L"}, {95, "Canon TS-E 24mm f/3.5L II"}, - {103, "Samyang AF 14mm f/2.8 EF"}, + {103, "Samyang AF 14mm f/2.8 EF or Rokinon Lens"}, + {103, "Rokinon SP 14mm f/2.4"}, + {103, "Rokinon AF 14mm f/2.8 EF"}, {124, "Canon MP-E 65mm f/2.8 1-5x Macro Photo"}, {125, "Canon TS-E 24mm f/3.5L"}, {126, "Canon TS-E 45mm f/2.8"}, @@ -733,7 +736,7 @@ public: {160, "Tokina AT-X 107 AF DX 10-17mm f/3.5-4.5 Fisheye"}, {160, "Tokina AT-X 116 AF Pro DX 11-16mm f/2.8"}, {160, "Tokina AT-X 11-20 F2.8 PRO DX Aspherical 11-20mm f/2.8"}, - {161, "Canon EF 28-70mm f/2.8L USM or Sigma or Tamron Lens"}, + {161, "Canon EF 28-70mm f/2.8L USM or Other Lens"}, {161, "Sigma 24-70mm f/2.8 EX"}, {161, "Sigma 28-70mm f/2.8 EX"}, {161, "Sigma 24-60mm f/2.8 EX DG"}, @@ -741,6 +744,7 @@ public: {161, "Tamron 90mm f/2.8"}, {161, "Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF"}, {161, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro"}, + {161, "Tokina AT-X 24-70mm f/2.8 PRO FX (IF)"}, {162, "Canon EF 200mm f/2.8L USM"}, {163, "Canon EF 300mm f/4L"}, {164, "Canon EF 400mm f/5.6L"}, @@ -757,6 +761,7 @@ public: {169, "Sigma 85mm f/1.4 EX DG HSM"}, {169, "Sigma 30mm f/1.4 EX DC HSM"}, {169, "Sigma 35mm f/1.4 DG HSM"}, + {169, "Sigma 35mm f/1.5 FF High-Speed Prime | 017"}, {170, "Canon EF 200mm f/2.8L II USM"}, {171, "Canon EF 300mm f/4L USM"}, {172, "Canon EF 400mm f/5.6L USM or Sigma Lens"}, @@ -780,6 +785,9 @@ public: {180, "Zeiss Milvus 50mm f/1.4"}, {180, "Zeiss Milvus 85mm f/1.4"}, {180, "Zeiss Otus 28mm f/1.4 ZE"}, + {180, "Sigma 24mm f/1.5 FF High-Speed Prime | 017"}, + {180, "Sigma 50mm f/1.5 FF High-Speed Prime | 017"}, + {180, "Sigma 85mm f/1.5 FF High-Speed Prime | 017"}, {181, "Canon EF 100-400mm f/4.5-5.6L IS USM + 1.4x or Sigma Lens"}, {181, "Sigma 150-600mm f/5-6.3 DG OS HSM | S + 1.4x"}, {182, "Canon EF 100-400mm f/4.5-5.6L IS USM + 2x or Sigma Lens"}, @@ -791,6 +799,7 @@ public: {183, "Sigma 150-600mm f/5-6.3 DG OS HSM | C"}, {183, "Sigma 150-600mm f/5-6.3 DG OS HSM | S"}, {183, "Sigma 100-400mm f/5-6.3 DG OS HSM"}, + {183, "Sigma 180mm f/3.5 APO Macro EX DG IF HSM"}, {184, "Canon EF 400mm f/2.8L USM + 2x"}, {185, "Canon EF 600mm f/4L IS USM"}, {186, "Canon EF 70-200mm f/4L USM"}, @@ -798,7 +807,8 @@ public: {188, "Canon EF 70-200mm f/4L USM + 2x"}, {189, "Canon EF 70-200mm f/4L USM + 2.8x"}, {190, "Canon EF 100mm f/2.8 Macro USM"}, - {191, "Canon EF 400mm f/4 DO IS"}, + {191, "Canon EF 400mm f/4 DO IS or Sigma Lens"}, + {191, "Sigma 500mm f/4 DG OS HSM"}, {193, "Canon EF 35-80mm f/4-5.6 USM"}, {194, "Canon EF 80-200mm f/4.5-5.6 USM"}, {195, "Canon EF 35-105mm f/4.5-5.6 USM"}, @@ -808,6 +818,7 @@ public: {198, "Canon EF 50mm f/1.4 USM or Zeiss Lens"}, {198, "Zeiss Otus 55mm f/1.4 ZE"}, {198, "Zeiss Otus 85mm f/1.4 ZE"}, + {198, "Zeiss Milvus 25mm f/1.4"}, {199, "Canon EF 28-80mm f/3.5-5.6 USM"}, {200, "Canon EF 75-300mm f/4-5.6 USM"}, {201, "Canon EF 28-80mm f/3.5-5.6 USM"}, @@ -841,8 +852,10 @@ public: {236, "Canon EF-S 60mm f/2.8 Macro USM"}, {237, "Canon EF 24-105mm f/4L IS USM"}, {238, "Canon EF 70-300mm f/4-5.6 IS USM"}, - {239, "Canon EF 85mm f/1.2L II USM"}, - {240, "Canon EF-S 17-55mm f/2.8 IS USM"}, + {239, "Canon EF 85mm f/1.2L II USM or Rokinon Lens"}, + {239, "Rokinon SP 85mm f/1.2"}, + {240, "Canon EF-S 17-55mm f/2.8 IS USM or Sigma Lens"}, + {240, "Sigma 17-50mm f/2.8 EX DC OS HSM"}, {241, "Canon EF 50mm f/1.2L USM"}, {242, "Canon EF 70-200mm f/4L IS USM"}, {243, "Canon EF 70-200mm f/4L IS USM + 1.4x"}, @@ -852,16 +865,23 @@ public: {247, "Canon EF 14mm f/2.8L II USM"}, {248, "Canon EF 200mm f/2L IS USM or Sigma Lens"}, {248, "Sigma 24-35mm f/2 DG HSM | A"}, + {248, "Sigma 135mm f/2 FF High-Speed Prime | 017"}, + {248, "Sigma 24-35mm f/2.2 FF Zoom | 017"}, {249, "Canon EF 800mm f/5.6L IS USM"}, {250, "Canon EF 24mm f/1.4L II USM or Sigma Lens"}, {250, "Sigma 20mm f/1.4 DG HSM | A"}, + {250, "Sigma 20mm f/1.5 FF High-Speed Prime | 017"}, {251, "Canon EF 70-200mm f/2.8L IS II USM"}, {252, "Canon EF 70-200mm f/2.8L IS II USM + 1.4x"}, {253, "Canon EF 70-200mm f/2.8L IS II USM + 2x"}, {254, "Canon EF 100mm f/2.8L Macro IS USM"}, {255, "Sigma 24-105mm f/4 DG OS HSM | A or Other Sigma Lens"}, {255, "Sigma 180mm f/2.8 EX DG OS HSM APO Macro"}, - {368, "Sigma 14-24mm f/2.8 DG HSM | A"}, + {368, "Sigma 14-24mm f/2.8 DG HSM | A or other Sigma Lens"}, + {368, "Sigma 20mm f/1.4 DG HSM | A"}, + {368, "Sigma 50mm f/1.4 DG HSM | A"}, + {368, "Sigma 40mm f/1.4 DG HSM | A"}, + {368, "Sigma 60-600mm f/4.5-6.3 DG OS HSM | S"}, {488, "Canon EF-S 15-85mm f/3.5-5.6 IS USM"}, {489, "Canon EF 70-300mm f/4-5.6L IS USM"}, {490, "Canon EF 8-15mm f/4L Fisheye USM"}, @@ -869,6 +889,9 @@ public: {491, "Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025)"}, {491, "Tamron 18-400mm f/3.5-6.3 Di II VC HLD (B028)"}, {491, "Tamron 100-400mm f/4.5-6.3 Di VC USD (A035)"}, + {491, "Tamron 70-210mm f/4 Di VC USD (A034)"}, + {491, "Tamron 70-210mm f/4 Di VC USD (A034) + 1.4x"}, + {491, "Tamron SP 24-70mm f/2.8 Di VC USD G2 (A032)"}, {492, "Canon EF 400mm f/2.8L IS II USM"}, {493, "Canon EF 500mm f/4L IS II USM or EF 24-105mm f4L IS USM"}, {493, "Canon EF 24-105mm f/4L IS USM"}, @@ -887,11 +910,18 @@ public: {508, "Tamron 10-24mm f/3.5-4.5 Di II VC HLD"}, {747, "Canon EF 100-400mm f/4.5-5.6L IS II USM or Tamron Lens"}, {747, "Tamron SP 150-600mm f/5-6.3 Di VC USD G2"}, - {748, "Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x"}, + {748, "Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x or Tamron Lens"}, + {748, "Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 1.4x"}, + {748, "Tamron 70-210mm f/4 Di VC USD (A034) + 2x"}, + {749, "Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 2x"}, {750, "Canon EF 35mm f/1.4L II USM"}, {751, "Canon EF 16-35mm f/2.8L III USM"}, {752, "Canon EF 24-105mm f/4L IS II USM"}, {753, "Canon EF 85mm f/1.4L IS USM"}, + {754, "Canon EF 70-200mm f/4L IS II USM"}, + {757, "Canon EF 400mm f/2.8L IS III USM"}, + {758, "Canon EF 600mm f/4L IS III USM"}, + {1136, "Sigma 24-70mm f/2.8 DG OS HSM | Art 017"}, {4142, "Canon EF-S 18-135mm f/3.5-5.6 IS STM"}, {4143, "Canon EF-M 18-55mm f/3.5-5.6 IS STM or Tamron Lens"}, {4143, "Tamron 18-200mm f/3.5-6.3 Di III VC"}, @@ -909,9 +939,14 @@ public: {4156, "Canon EF 50mm f/1.8 STM"}, {4157, "Canon EF-M 18-150mm 1:3.5-6.3 IS STM"}, {4158, "Canon EF-S 18-55mm f/4-5.6 IS STM"}, + {4159, "Canon EF-M 32mm f/1.4 STM"}, {4160, "Canon EF-S 35mm f/2.8 Macro IS STM"}, {36910, "Canon EF 70-300mm f/4-5.6 IS II USM"}, {36912, "Canon EF-S 18-135mm f/3.5-5.6 IS USM"}, + {61182, "Canon RF 35mm F1.8 Macro IS STM or other Canon RF Lens"}, + {61182, "Canon RF 50mm F1.2 L USM"}, + {61182, "Canon RF 24-105mm F4 L IS USM"}, + {61182, "Canon RF 28-70mm F2 L USM"}, {61491, "Canon CN-E 14mm T3.1 L F"}, {61492, "Canon CN-E 24mm T1.5 L F"}, {61494, "Canon CN-E 85mm T1.3 L F"}, @@ -921,7 +956,7 @@ public: }; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int lensID = t->toInt(); @@ -1073,7 +1108,7 @@ CAFocalTypeInterpreter caFocalTypeInterpreter; class CAFocalPlaneInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int val = t->toInt(); @@ -1091,7 +1126,7 @@ CAFocalPlaneInterpreter caFocalPlaneInterpreter; class CAExposureTimeInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double d = pow (2, - t->toInt() / 32.0); @@ -1103,7 +1138,7 @@ CAExposureTimeInterpreter caExposureTimeInterpreter; class CAEVInterpreter : public Interpreter { - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%.1f", t->toDouble() / 32.0 ); @@ -1115,14 +1150,14 @@ CAEVInterpreter caEVInterpreter; class CABaseISOInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; int a = t->toInt(); sprintf (buffer, "%d", a); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = Interpreter::toInt (t, ofs); @@ -1133,7 +1168,7 @@ public: return 0.; } } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { int a = Interpreter::toInt (t, ofs, astype); @@ -1252,7 +1287,7 @@ CASlowShutterInterpreter caSlowShutterInterpreter; class CAFlashGuideNumberInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int n = t->toInt(); @@ -1313,7 +1348,7 @@ CAControModeInterpreter caControModeInterpreter; class CAFocusDistanceInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%.2f", t->toDouble() / 100 ); @@ -1325,7 +1360,7 @@ CAFocusDistanceInterpreter caFocusDistanceInterpreter; class CAMeasuredEVInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%.1f", t->toDouble() / 8 - 6 ); @@ -1460,7 +1495,7 @@ CAToningEffectInterpreter caToningEffectInterpreter; class CAFileNumberInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { unsigned long val = t->toInt (0, LONG); char buffer[32]; @@ -1477,6 +1512,8 @@ public: CAModelIDInterpreter () { choices[1042] = "EOS M50 / Kiss M"; + choices[2049] = "PowerShot SX740 HS"; + choices[2053] = "PowerShot SX70 HS"; choices[16842752] = "PowerShot A30"; choices[17039360] = "PowerShot S300 / Digital IXUS 300 / IXY Digital 300"; choices[17170432] = "PowerShot A20"; @@ -1799,6 +1836,7 @@ public: choices[2147484680] = "EOS 77D / 9000D"; choices[2147484695] = "EOS Rebel SL2 / 200D / Kiss X9"; choices[2147484706] = "EOS Rebel T100 / 4000D / 3000D"; + choices[2147484708] = "EOR R"; choices[2147484722] = "EOS Rebel T7 / 2000D / 1500D / Kiss X90"; } }; diff --git a/rtexif/kodakattribs.cc b/rtexif/kodakattribs.cc index 1b6e522c5..a9c168a70 100644 --- a/rtexif/kodakattribs.cc +++ b/rtexif/kodakattribs.cc @@ -104,12 +104,11 @@ void parseKodakIfdTextualInfo (Tag *textualInfo, Tag* exif_) a = atoi (val.c_str()); b = atoi (&p1[1]); } - t = new Tag (exif, lookupAttrib (exifAttribs, "ExposureTime")); t->initRational (a, b); exif->replaceTag (t); - float ssv = -log2 ((float)a / (float)b); // convert to APEX value + const float ssv = -log2 ((float)a / std::max((float)b, 0.0001f)); // convert to APEX value, avoid division by zero t = new Tag (exif, lookupAttrib (exifAttribs, "ShutterSpeedValue")); t->initRational (1000000 * ssv, 1000000); exif->replaceTag (t); diff --git a/rtexif/nikonattribs.cc b/rtexif/nikonattribs.cc index fc0fc22db..84ebd22be 100644 --- a/rtexif/nikonattribs.cc +++ b/rtexif/nikonattribs.cc @@ -34,7 +34,7 @@ class NAISOInterpreter : public Interpreter { public: NAISOInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%d", t->toInt (2)); @@ -47,14 +47,14 @@ class NAISOInfoISOInterpreter : public Interpreter { public: NAISOInfoISOInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; int a = t->toInt(); sprintf (buffer, "%d", a); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->getValue()[ofs]; @@ -65,7 +65,7 @@ public: return 0.; } } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { int a = t->getValue()[ofs]; @@ -83,7 +83,7 @@ class NAISOExpansionInterpreter : public Interpreter { public: NAISOExpansionInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt(); @@ -142,7 +142,7 @@ class NALensTypeInterpreter : public Interpreter { public: NALensTypeInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt(); std::ostringstream str; @@ -191,7 +191,7 @@ class NAShootingModeInterpreter : public Interpreter { public: NAShootingModeInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt(); std::ostringstream str; @@ -234,7 +234,7 @@ public: afpchoices[0x9] = "Far Left"; afpchoices[0xa] = "Far Right"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int am = t->toInt (0, BYTE); int afp = t->toInt (1, BYTE); @@ -314,7 +314,7 @@ class NALensDataInterpreter : public Interpreter static const std::map lenses; public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { static const unsigned char xlat[2][256] = { @@ -850,7 +850,9 @@ const std::map NALensDataInterpreter::lenses = { {"49 3C A6 A6 30 30 F2 02", "AF-S Nikkor 600mm f/4D IF-ED + TC-20E"}, {"4A 40 11 11 2C 0C 4D 02", "Samyang 8mm f/3.5 Fish-Eye CS"}, {"4A 48 1E 1E 24 0C 4D 02", "Samyang 12mm f/2.8 ED AS NCS Fish-Eye"}, + {"4A 48 24 24 24 0C 4D 02", "Samyang 10mm f/2.8 ED AS NCS CS"}, {"4A 48 24 24 24 0C 4D 02", "Samyang AE 14mm f/2.8 ED AS IF UMC"}, + {"4A 4C 24 24 1E 6C 4D 06", "Samyang 14mm f/2.4 Premium"}, {"4A 54 29 29 18 0C 4D 02", "Samyang 16mm f/2.0 ED AS UMC CS"}, {"4A 54 62 62 0C 0C 4D 02", "AF Nikkor 85mm f/1.4D IF"}, {"4A 60 36 36 0C 0C 4D 02", "Samyang 24mm f/1.4 ED AS UMC"}, @@ -910,7 +912,7 @@ const std::map NALensDataInterpreter::lenses = { {"74 40 37 62 2C 34 78 06", "AF-S Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED"}, {"75 40 3C 68 2C 3C 79 06", "AF Zoom-Nikkor 28-100mm f/3.5-5.6G"}, {"76 58 50 50 14 14 7A 02", "AF Nikkor 50mm f/1.8D"}, - {"77 44 60 98 34 3C 7B 0E", "Sigma 80-400mm f4.5-5.6 APO DG D OS"}, + {"77 44 60 98 34 3C 7B 0E", "Sigma 80-400mm f/4.5-5.6 APO DG D OS"}, {"77 44 61 98 34 3C 7B 0E", "Sigma 80-400mm f/4.5-5.6 EX OS"}, {"77 48 5C 80 24 24 7B 0E", "AF-S VR Zoom-Nikkor 70-200mm f/2.8G IF-ED"}, {"78 40 37 6E 2C 3C 7C 0E", "AF-S VR Zoom-Nikkor 24-120mm f/3.5-5.6G IF-ED"}, @@ -953,6 +955,7 @@ const std::map NALensDataInterpreter::lenses = { {"8B 4C 2D 44 14 14 4B 06", "Sigma 18-35mm f/1.8 DC HSM"}, {"8C 40 2D 53 2C 3C 8E 06", "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED"}, {"8D 44 5C 8E 34 3C 8F 0E", "AF-S VR Zoom-Nikkor 70-300mm f/4.5-5.6G IF-ED"}, + {"8D 48 6E 8E 24 24 4B 0E", "Sigma 120-300mm f/2.8 DG OS HSM Sports"}, {"8E 3C 2B 5C 24 30 4B 0E", "Sigma 17-70mm f/2.8-4 DC Macro OS HSM | C"}, {"8F 40 2D 72 2C 3C 91 06", "AF-S DX Zoom-Nikkor 18-135mm f/3.5-5.6G IF-ED"}, {"8F 48 2B 50 24 24 4B 0E", "Sigma 17-50mm f/2.8 EX DC OS HSM"}, @@ -963,7 +966,7 @@ const std::map NALensDataInterpreter::lenses = { {"92 48 24 37 24 24 94 06", "AF-S Zoom-Nikkor 14-24mm f/2.8G ED"}, {"93 48 37 5C 24 24 95 06", "AF-S Zoom-Nikkor 24-70mm f/2.8G ED"}, {"94 40 2D 53 2C 3C 96 06", "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED II"}, - {"94 48 7C 7C 24 24 4B 0E", "Sigma 180mm f/2.8 APO Macro EX DG OS"}, + {"94 48 7C 7C 24 24 4B 0E", "Sigma APO Macro 180mm f/2.8 EX DG OS HSM"}, {"95 00 37 37 2C 2C 97 06", "PC-E Nikkor 24mm f/3.5D ED"}, {"95 4C 37 37 2C 2C 97 02", "PC-E Nikkor 24mm f/3.5D ED"}, {"96 38 1F 37 34 3C 4B 06", "Sigma 12-24mm f/4.5-5.6 II DG HSM"}, @@ -975,6 +978,7 @@ const std::map NALensDataInterpreter::lenses = { {"99 40 29 62 2C 3C 9B 0E", "AF-S DX VR Zoom-Nikkor 16-85mm f/3.5-5.6G ED"}, {"99 48 76 76 24 24 4B 0E", "Sigma APO Macro 150mm f/2.8 EX DG OS HSM"}, {"9A 40 2D 53 2C 3C 9C 0E", "AF-S DX VR Zoom-Nikkor 18-55mm f/3.5-5.6G"}, + {"9A 4C 50 50 14 14 9C 06", "Yongnuo YN50mm f/1.8N"}, {"9B 00 4C 4C 24 24 9D 06", "PC-E Micro Nikkor 45mm f/2.8D ED"}, {"9B 54 4C 4C 24 24 9D 02", "PC-E Micro Nikkor 45mm f/2.8D ED"}, {"9B 54 62 62 0C 0C 4B 06", "Sigma 85mm f/1.4 EX DG HSM"}, @@ -997,37 +1001,54 @@ const std::map NALensDataInterpreter::lenses = { {"A1 54 55 55 0C 0C BC 06", "AF-S Nikkor 58mm f/1.4G"}, {"A2 40 2D 53 2C 3C BD 0E", "AF-S DX Nikkor 18-55mm f/3.5-5.6G VR II"}, {"A2 48 5C 80 24 24 A4 0E", "AF-S Nikkor 70-200mm f/2.8G ED VR II"}, + {"A3 38 5C 8E 34 40 CE 0E", "AF-P DX Nikkor 70-300mm f/4.5-6.3G ED"}, + {"A3 38 5C 8E 34 40 CE 8E", "AF-P DX Nikkor 70-300mm f/4.5-6.3G ED VR"}, {"A3 3C 29 44 30 30 A5 0E", "AF-S Nikkor 16-35mm f/4G ED VR"}, {"A3 3C 5C 8E 30 3C 4B 0E", "Sigma 70-300mm f/4-5.6 DG OS"}, {"A4 40 2D 8E 2C 40 BF 0E", "AF-S DX Nikkor 18-300mm f/3.5-6.3G ED VR"}, {"A4 47 2D 50 24 34 4B 0E", "Sigma 18-50mm f/2.8-4.5 DC OS HSM"}, {"A4 48 5C 80 24 24 CF 0E", "AF-S Nikkor 70-200mm f/2.8E FL ED VR"}, + {"A4 48 5C 80 24 24 CF 4E", "AF-S Nikkor 70-200mm f/2.8E FL ED VR"}, {"A4 54 37 37 0C 0C A6 06", "AF-S Nikkor 24mm f/1.4G ED"}, {"A5 40 2D 88 2C 40 4B 0E", "Sigma 18-250mm f/3.5-6.3 DC OS HSM"}, {"A5 40 3C 8E 2C 3C A7 0E", "AF-S Nikkor 28-300mm f/3.5-5.6G ED VR"}, {"A5 4C 44 44 14 14 C0 06", "AF-S Nikkor 35mm f/1.8G ED"}, {"A5 54 6A 6A 0C 0C D0 06", "AF-S Nikkor 105mm f/1.4E ED"}, {"A5 54 6A 6A 0C 0C D0 46", "AF-S Nikkor 105mm f/1.4E ED"}, + {"A6 48 2F 2F 30 30 D1 06", "PC Nikkor 19mm f/4E ED"}, + {"A6 48 2F 2F 30 30 D1 46", "PC Nikkor 19mm f/4E ED"}, {"A6 48 37 5C 24 24 4B 06", "Sigma 24-70mm f/2.8 IF EX DG HSM"}, - {"A6 48 8E 8E 24 24 A8 0E", "AF-S VR Nikkor 300mm f/2.8G IF-ED II"}, + {"A6 48 8E 8E 24 24 A8 0E", "AF-S Nikkor 300mm f/2.8G IF-ED VR II"}, {"A6 48 98 98 24 24 C1 0E", "AF-S Nikkor 400mm f/2.8E FL ED VR"}, {"A7 3C 53 80 30 3C C2 0E", "AF-S DX Nikkor 55-200mm f/4-5.6G ED VR II"}, + {"A7 40 11 26 2C 34 D2 06", "AF-S Fisheye Nikkor 8-15mm f/3.5-4.5E ED"}, + {"A7 40 11 26 2C 34 D2 46", "AF-S Fisheye Nikkor 8-15mm f/3.5-4.5E ED"}, {"A7 49 80 A0 24 24 4B 06", "Sigma APO 200-500mm f/2.8 EX DG"}, {"A7 4B 62 62 2C 2C A9 0E", "AF-S DX Micro Nikkor 85mm f/3.5G ED VR"}, + {"A8 38 18 30 34 3C D3 0E", "AF-P DX Nikkor 10-20mm f/4.5-5.6G VR"}, {"A8 38 18 30 34 3C D3 8E", "AF-P DX Nikkor 10-20mm f/4.5-5.6G VR"}, - {"A8 48 80 98 30 30 AA 0E", "AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED II"}, + {"A8 48 80 98 30 30 AA 0E", "AF-S Zoom-Nikkor 200-400mm f/4G IF-ED VR II"}, {"A8 48 8E 8E 30 30 C3 0E", "AF-S Nikkor 300mm f/4E PF ED VR"}, {"A8 48 8E 8E 30 30 C3 4E", "AF-S Nikkor 300mm f/4E PF ED VR"}, + {"A9 48 7C 98 30 30 D4 0E", "AF-S Nikkor 180-400mm f/4E TC1.4 FL ED VR"}, {"A9 48 7C 98 30 30 D4 4E", "AF-S Nikkor 180-400mm f/4E TC1.4 FL ED VR"}, {"A9 4C 31 31 14 14 C4 06", "AF-S Nikkor 20mm f/1.8G ED"}, {"A9 54 80 80 18 18 AB 0E", "AF-S Nikkor 200mm f/2G ED VR II"}, {"AA 3C 37 6E 30 30 AC 0E", "AF-S Nikkor 24-120mm f/4G ED VR"}, + {"AA 48 37 5C 24 24 C5 0E", "AF-S Nikkor 24-70mm f/2.8E ED VR"}, {"AA 48 37 5C 24 24 C5 4E", "AF-S Nikkor 24-70mm f/2.8E ED VR"}, + {"AA 48 88 A4 3C 3C D5 0E", "AF-S Nikkor 180-400mm f/4E TC1.4 FL ED VR + 1.4x TC"}, {"AA 48 88 A4 3C 3C D5 4E", "AF-S Nikkor 180-400mm f/4E TC1.4 FL ED VR + 1.4x TC"}, {"AB 3C A0 A0 30 30 C6 4E", "AF-S Nikkor 500mm f/4E FL ED VR"}, - {"AC 38 53 8E 34 3C AE 0E", "AF-S DX VR Nikkor 55-300mm f/4.5-5.6G ED"}, + {"AB 44 5C 8E 34 3C D6 0E", "AF-P Nikkor 70-300mm f/4.5-5.6E ED VR"}, + {"AB 44 5C 8E 34 3C D6 CE", "AF-P Nikkor 70-300mm f/4.5-5.6E ED VR"}, + {"AC 38 53 8E 34 3C AE 0E", "AF-S DX Nikkor 55-300mm f/4.5-5.6G ED VR"}, {"AC 3C A6 A6 30 30 C7 4E", "AF-S Nikkor 600mm f/4E FL ED VR"}, + {"AC 54 3C 3C 0C 0C D7 06", "AF-S Nikkor 28mm f/1.4E ED"}, + {"AC 54 3C 3C 0C 0C D7 46", "AF-S Nikkor 28mm f/1.4E ED"}, {"AD 3C 2D 8E 2C 3C AF 0E", "AF-S DX Nikkor 18-300mm f/3.5-5.6G ED VR"}, + {"AD 3C A0 A0 3C 3C D8 0E", "AF-S Nikkor 500mm f/5.6E PF ED VR"}, + {"AD 3C A0 A0 3C 3C D8 4E", "AF-S Nikkor 500mm f/5.6E PF ED VR"}, {"AD 48 28 60 24 30 C8 0E", "AF-S DX Nikkor 16-80mm f/2.8-4E ED VR"}, {"AD 48 28 60 24 30 C8 4E", "AF-S DX Nikkor 16-80mm f/2.8-4E ED VR"}, {"AE 3C 80 A0 3C 3C C9 0E", "AF-S Nikkor 200-500mm f/5.6E ED VR"}, @@ -1039,7 +1060,7 @@ const std::map NALensDataInterpreter::lenses = { {"B1 48 48 48 24 24 B3 06", "AF-S DX Micro Nikkor 40mm f/2.8G"}, {"B2 48 5C 80 30 30 B4 0E", "AF-S Nikkor 70-200mm f/4G ED VR"}, {"B3 4C 62 62 14 14 B5 06", "AF-S Nikkor 85mm f/1.8G"}, - {"B4 40 37 62 2C 34 B6 0E", "AF-S VR Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED"}, + {"B4 40 37 62 2C 34 B6 0E", "AF-S Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED VR"}, {"B5 4C 3C 3C 14 14 B7 06", "AF-S Nikkor 28mm f/1.8G"}, {"B6 3C B0 B0 3C 3C B8 0E", "AF-S VR Nikkor 800mm f/5.6E FL ED"}, {"B6 3C B0 B0 3C 3C B8 4E", "AF-S VR Nikkor 800mm f/5.6E FL ED"}, @@ -1048,8 +1069,12 @@ const std::map NALensDataInterpreter::lenses = { {"B8 40 2D 44 2C 34 BA 06", "AF-S Nikkor 18-35mm f/3.5-4.5G ED"}, {"BF 3C 1B 1B 30 30 01 04", "Irix 11mm f/4 Firefly"}, {"BF 4E 26 26 1E 1E 01 04", "Irix 15mm f/2.4 Firefly"}, + {"C1 48 24 37 24 24 4B 46", "Sigma 14-24mm f/2.8 DG HSM | A"}, + {"C2 4C 24 24 14 14 4B 06", "Sigma 14mm f/1.8 DG HSM | A"}, {"C3 34 68 98 38 40 4B 4E", "Sigma 100-400mm f/5-6.3 DG OS HSM | C"}, {"C8 54 62 62 0C 0C 4B 46", "Sigma 85mm f/1.4 DG HSM | A"}, + {"C9 48 37 5C 24 24 4B 4E", "Sigma 24-70mm f/2.8 DG OS HSM | A"}, + {"CA 48 27 3E 24 24 DF 4E", "Tamron SP 15-30mm f/2.8 Di VC USD G2 (A041)"}, {"CC 4C 50 68 14 14 4B 06", "Sigma 50-100mm f/1.8 DC HSM | A"}, {"CD 3D 2D 70 2E 3C 4B 0E", "Sigma 18-125mm f/3.8-5.6 DC OS HSM"}, {"CE 34 76 A0 38 40 4B 0E", "Sigma 150-500mm f/5-6.3 DG OS APO HSM"}, @@ -1058,7 +1083,10 @@ const std::map NALensDataInterpreter::lenses = { {"DC 48 19 19 24 24 4B 06", "Sigma 10mm f/2.8 EX DC HSM Fisheye"}, {"DE 54 50 50 0C 0C 4B 06", "Sigma 50mm f/1.4 EX DG HSM"}, {"E0 3C 5C 8E 30 3C 4B 06", "Sigma 70-300mm f/4-5.6 APO DG Macro HSM"}, + {"E0 40 2D 98 2C 41 DF 4E", "Tamron AF 18-400mm f/3.5-6.3 Di II VC HLD (B028)"}, + {"E1 40 19 36 2C 35 DF 4E", "Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023)"}, {"E1 58 37 37 14 14 1C 02", "Sigma 24mm f/1.8 EX DG Aspherical Macro"}, + {"E2 47 5C 80 24 24 DF 4E", "Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025)"}, {"E3 40 76 A6 38 40 DF 4E", "Tamron SP 150-600mm f/5-6.3 Di VC USD G2"}, {"E3 54 50 50 24 24 35 02", "Sigma Macro 50mm f/2.8 EX DG"}, {"E4 54 64 64 24 24 DF 0E", "Tamron SP 90mm f/2.8 Di VC USD Macro 1:1 (F017)"}, diff --git a/rtexif/olympusattribs.cc b/rtexif/olympusattribs.cc index 8084637c9..e590a71de 100644 --- a/rtexif/olympusattribs.cc +++ b/rtexif/olympusattribs.cc @@ -33,7 +33,7 @@ class OLOnOffInterpreter : public Interpreter { public: OLOnOffInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { if (t->toInt() == 0) { return "Off"; @@ -48,7 +48,7 @@ class OLYesNoInterpreter : public Interpreter { public: OLYesNoInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { if (t->toInt() == 0) { return "No"; @@ -63,7 +63,7 @@ class OLApertureInterpreter : public Interpreter { public: OLApertureInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; str.precision (2); @@ -194,7 +194,7 @@ public: lenses["03 02 00"] = "Leica D Summilux 25mm f/1.4 Asph."; lenses["05 01 10"] = "Tamron 14-150mm f/3.5-5.8 Di III"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream lid; lid.setf (std::ios_base::hex, std::ios_base::basefield); @@ -465,7 +465,7 @@ class OLNoiseFilterInterpreter : public Interpreter { public: OLNoiseFilterInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0); int b = t->toInt (2); @@ -490,7 +490,7 @@ class OLFlashModeInterpreter : public Interpreter { public: OLFlashModeInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; int a = t->toInt (); @@ -509,7 +509,7 @@ class OLNoiseReductionInterpreter : public Interpreter { public: OLNoiseReductionInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; int a = t->toInt (); diff --git a/rtexif/pentaxattribs.cc b/rtexif/pentaxattribs.cc index 4d9a31b6f..4120f6b46 100644 --- a/rtexif/pentaxattribs.cc +++ b/rtexif/pentaxattribs.cc @@ -415,7 +415,7 @@ class PAFNumberInterpreter: public Interpreter { public: PAFNumberInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = t->toDouble() / 10; @@ -610,7 +610,7 @@ public: choices[256 * 255 + 0] = "Video (Auto Aperture)"; choices[256 * 255 + 4] = "Video (4)"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int c = 256 * t->toInt (0, BYTE) + t->toInt (1, BYTE); std::map::iterator r = choices.find (c); @@ -669,7 +669,7 @@ public: choices3[224] = "HDR Auto"; choices3[255] = "Video"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt (0, BYTE)); std::map::iterator r1 = choices1.find (t->toInt (1, BYTE)); @@ -937,6 +937,7 @@ public: choices.insert (p_t (256 * 8 + 61, "HD PENTAX-D FA 28-105mm f/3.5-5.6 ED DC WR")); choices.insert (p_t (256 * 8 + 62, "HD PENTAX-D FA 24-70mm f/2.8 ED SDM WR")); choices.insert (p_t (256 * 8 + 63, "HD PENTAX-D FA 15-30mm f/2.8 ED SDM WR")); + choices.insert (p_t (256 * 8 + 64, "HD PENTAX-D FA* 50mm f/1.4 SDM AW")); choices.insert (p_t (256 * 8 + 197, "HD PENTAX-DA 55-300mm f/4.5-6.3 ED PLM WR RE")); choices.insert (p_t (256 * 8 + 198, "smc PENTAX-DA L 18-50mm f/4-5.6 DC WR RE")); choices.insert (p_t (256 * 8 + 199, "HD PENTAX-DA 18-50mm f/4-5.6 DC WR RE")); @@ -992,7 +993,7 @@ public: choices.insert (p_t (256 * 22 + 4, "04 Toy Lens Wide 6.3mm f/7.1")); choices.insert (p_t (256 * 22 + 5, "05 Toy Lens Telephoto 18mm f/8")); } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { double *liArray = nullptr; double maxApertureAtFocal = 0.; @@ -1060,7 +1061,7 @@ class PASRResultInterpreter: public Interpreter { public: PASRResultInterpreter() { } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; int b = t->toInt (0, BYTE); @@ -1145,7 +1146,7 @@ public: choices[ 2 << 8 | 4 ] = "Auto"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int idx = 0; @@ -1172,7 +1173,7 @@ public: choices[2] = "Standard"; choices[3] = "Fast"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt (0, BYTE)); std::ostringstream s; @@ -1210,7 +1211,7 @@ public: choices[2] = "Medium"; choices[3] = "High"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt (0, BYTE)); std::ostringstream s; @@ -1242,7 +1243,7 @@ public: choices2[8] = "2 EV"; choices2[12] = "3 EV"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt (0, BYTE)); std::map::iterator r1 = choices1.find (t->toInt (1, BYTE)); @@ -1289,7 +1290,7 @@ class PALensModelQInterpreter: public Interpreter { public: PALensModelQInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[31]; buffer[0] = 0; // @@ -1307,7 +1308,7 @@ class PALensInfoQInterpreter: public Interpreter { public: PALensInfoQInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[21]; buffer[0] = 0; @@ -1325,7 +1326,7 @@ class PAFlashExposureCompInterpreter: public Interpreter { public: PAFlashExposureCompInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a; @@ -1339,7 +1340,7 @@ public: sprintf (buffer, "%d", a ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a; @@ -1358,7 +1359,7 @@ class PAFocalLengthInterpreter: public Interpreter { public: PAFocalLengthInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { double a = double (t->toInt (0, LONG)); @@ -1370,7 +1371,7 @@ public: return "n/a"; } } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { double a = double (t->toInt (0, LONG)); @@ -1387,7 +1388,7 @@ class PALensDataFocalLengthInterpreter: public Interpreter { public: PALensDataFocalLengthInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); float b = float (10 * int (a >> 2)) * pow (4.f, float (int (a & 0x03) - 2)); @@ -1400,7 +1401,7 @@ public: return "n/a"; } } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (ofs, BYTE); float b = float (10 * int (a >> 2)) * pow (4.f, float (int (a & 0x03) - 2)); @@ -1418,7 +1419,7 @@ class PAISOfInterpreter: public Interpreter { public: PAISOfInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); char buffer[32]; @@ -1426,7 +1427,7 @@ public: sprintf (buffer, "%.1f", v ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE); return 100.*exp (double (a - 32) * log (2.) / 8.); @@ -1438,7 +1439,7 @@ class PAMaxApertureInterpreter: public Interpreter { public: PAMaxApertureInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); a &= 0x7F; @@ -1457,7 +1458,7 @@ public: return "n/a"; } } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE); a &= 0x7F; @@ -1475,7 +1476,7 @@ class PAAEXvInterpreter: public Interpreter { public: PAAEXvInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); char buffer[32]; @@ -1483,7 +1484,7 @@ public: sprintf (buffer, "%.1f", v ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE); return double (a - 64) / 8.; @@ -1495,7 +1496,7 @@ class PAAEBXvInterpreter: public Interpreter { public: PAAEBXvInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, SBYTE); char buffer[32]; @@ -1503,7 +1504,7 @@ public: sprintf (buffer, "%.1f", v ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, SBYTE); return double (a) / 8.; @@ -1515,7 +1516,7 @@ class PAApertureInterpreter: public Interpreter { public: PAApertureInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); char buffer[32]; @@ -1523,7 +1524,7 @@ public: sprintf (buffer, "%.1f", v ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE); return exp ((double (a) - 68.) * log (2.) / 16.); @@ -1535,7 +1536,7 @@ class PAExposureTimeInterpreter: public Interpreter { public: PAExposureTimeInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt (0, BYTE); char buffer[32]; @@ -1543,7 +1544,7 @@ public: sprintf (buffer, "%.6f", v ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE); return 24.*exp (- (double (a) - 32.) * log (2.) / 8.); @@ -1555,7 +1556,7 @@ class PANominalMinApertureInterpreter: public Interpreter { public: PANominalMinApertureInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; int a = t->toInt (0, BYTE); @@ -1563,7 +1564,7 @@ public: sprintf (buffer, "%.1f", double (int (pow (2.0, double (mina + 10) / 4.0) + 0.2))); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = t->toInt (0, BYTE) & 0x0F; return double (int (pow (2.0, double (a + 10) / 4.0) + 0.2)); @@ -1575,7 +1576,7 @@ class PANominalMaxApertureInterpreter: public Interpreter { public: PANominalMaxApertureInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; int a = t->toInt (0, BYTE); @@ -1583,7 +1584,7 @@ public: sprintf (buffer, "%.1f", double (int (pow (2.0, double (maxa) / 4.0) + 0.2)) ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { int a = ( t->toInt (0, BYTE) & 0xF0) >> 4; return double (int (pow (2.0, double (a) / 4.0) + 0.2)); @@ -1693,7 +1694,7 @@ class PAExternalFlashGNInterpreter: public Interpreter { public: PAExternalFlashGNInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; int b = t->toInt (0, BYTE) & 0x1F; @@ -1707,7 +1708,7 @@ class PAEVStepsInterpreter: public Interpreter { public: PAEVStepsInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; @@ -1726,7 +1727,7 @@ class PAEDialinInterpreter: public Interpreter { public: PAEDialinInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; @@ -1745,7 +1746,7 @@ class PAApertureRingUseInterpreter: public Interpreter { public: PAApertureRingUseInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; @@ -1775,7 +1776,7 @@ public: choices[9] = "Slow-sync, Red-eye reduction"; choices[10] = "Trailing-curtain Sync"; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt (0, BYTE) >> 4); @@ -1794,7 +1795,7 @@ class PAMeteringMode2Interpreter: public Interpreter { public: PAMeteringMode2Interpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; int v = (t->toInt (0, BYTE) & 0xF); @@ -1858,7 +1859,7 @@ class PAProgramLineInterpreter: public Interpreter { public: PAProgramLineInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::ostringstream str; int c = t->toInt (0, BYTE); @@ -1898,7 +1899,7 @@ class PAAFModeInterpreter: public Interpreter { public: PAAFModeInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { switch (t->toInt (0, BYTE) & 0x3) { case 0: @@ -1924,7 +1925,7 @@ class PAAFPointSelectedInterpreter: public Interpreter { public: PAAFPointSelectedInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int c = t->toInt (0, SHORT); @@ -1948,7 +1949,7 @@ class PADriveMode2Interpreter: public Interpreter { public: PADriveMode2Interpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int c = t->toInt (0, BYTE); diff --git a/rtexif/rtexif.cc b/rtexif/rtexif.cc index c35ba7e0b..39d85ace9 100644 --- a/rtexif/rtexif.cc +++ b/rtexif/rtexif.cc @@ -362,23 +362,25 @@ Glib::ustring TagDirectory::getDumpKey (int tagID, const Glib::ustring &tagName) return key; } -void TagDirectory::addTag (Tag* tag) +void TagDirectory::addTag (Tag* &tag) { // look up if it already exists: if (getTag (tag->getID())) { delete tag; + tag = nullptr; } else { tags.push_back (tag); } } -void TagDirectory::addTagFront (Tag* tag) +void TagDirectory::addTagFront (Tag* &tag) { // look up if it already exists: if (getTag (tag->getID())) { delete tag; + tag = nullptr; } else { tags.insert (tags.begin(), tag); } @@ -720,7 +722,7 @@ int TagDirectory::write (int start, unsigned char* buffer) return maxPos; } -void TagDirectory::applyChange (std::string name, Glib::ustring value) +void TagDirectory::applyChange (const std::string &name, const Glib::ustring &value) { std::string::size_type dp = name.find_first_of ('.'); @@ -842,14 +844,15 @@ TagDirectoryTable::TagDirectoryTable (TagDirectory* p, FILE* f, int memsize, int : TagDirectory (p, ta, border), zeroOffset (offs), valuesSize (memsize), defaultType ( type ) { values = new unsigned char[valuesSize]; - fread (values, 1, valuesSize, f); + if (fread (values, 1, valuesSize, f) == static_cast(valuesSize)) { - // Security ; will avoid to read above the buffer limit if the RT's tagDirectoryTable is longer that what's in the file - int count = valuesSize / getTypeSize (type); + // Security ; will avoid to read above the buffer limit if the RT's tagDirectoryTable is longer that what's in the file + int count = valuesSize / getTypeSize (type); - for (const TagAttrib* tattr = ta; tattr->ignore != -1 && tattr->ID < count; ++tattr) { - Tag* newTag = new Tag (this, tattr, (values + zeroOffset + tattr->ID * getTypeSize (type)), tattr->type == AUTO ? type : tattr->type); - tags.push_back (newTag); // Here we can insert more tag in the same offset because of bitfield meaning + for (const TagAttrib* tattr = ta; tattr->ignore != -1 && tattr->ID < count; ++tattr) { + Tag* newTag = new Tag (this, tattr, (values + zeroOffset + tattr->ID * getTypeSize (type)), tattr->type == AUTO ? type : tattr->type); + tags.push_back (newTag); // Here we can insert more tag in the same offset because of bitfield meaning + } } } TagDirectory* TagDirectoryTable::clone (TagDirectory* parent) @@ -976,16 +979,19 @@ Tag::Tag (TagDirectory* p, FILE* f, int base) if (tag == 0x002e) { // location of the embedded preview image in raw files of Panasonic cameras ExifManager eManager(f, nullptr, true); - eManager.parseJPEG(ftell(f)); // try to parse the exif data from the preview image + const auto fpos = ftell(f); + if (fpos >= 0) { + eManager.parseJPEG(fpos); // try to parse the exif data from the preview image - if (eManager.roots.size()) { - const TagDirectory* const previewdir = eManager.roots.at(0); - if (previewdir->getTag ("Exif")) { - if (previewdir->getTag ("Make")) { - if (previewdir->getTag ("Make")->valueToString() == "Panasonic") { // "make" is not yet available here, so get it from the preview tags to assure we're doing the right thing - Tag* t = new Tag (parent->getRoot(), lookupAttrib (ifdAttribs, "Exif")); // replace raw exif with preview exif assuming there are the same - t->initSubDir (previewdir->getTag ("Exif")->getDirectory()); - parent->getRoot()->addTag (t); + if (eManager.roots.size()) { + const TagDirectory* const previewdir = eManager.roots.at(0); + if (previewdir->getTag ("Exif")) { + if (previewdir->getTag ("Make")) { + if (previewdir->getTag ("Make")->valueToString() == "Panasonic") { // "make" is not yet available here, so get it from the preview tags to assure we're doing the right thing + Tag* t = new Tag (parent->getRoot(), lookupAttrib (ifdAttribs, "Exif")); // replace raw exif with preview exif assuming there are the same + t->initSubDir (previewdir->getTag ("Exif")->getDirectory()); + parent->getRoot()->addTag (t); + } } } } @@ -1201,8 +1207,8 @@ Tag::Tag (TagDirectory* p, FILE* f, int base) } else { // read value value = new unsigned char [valuesize + 1]; - fread (value, 1, valuesize, f); - value[valuesize] = '\0'; + auto readSize = fread (value, 1, valuesize, f); + value[readSize] = '\0'; } // seek back to the saved position @@ -1212,32 +1218,33 @@ Tag::Tag (TagDirectory* p, FILE* f, int base) defsubdirs: // read value value = new unsigned char [valuesize]; - fread (value, 1, valuesize, f); - - // count the number of valid subdirs - int sdcount = count; - - if (sdcount > 0) { - if (parent->getAttribTable() == olympusAttribs) { - sdcount = 1; - } - - // allocate space - directory = new TagDirectory*[sdcount + 1]; - - // load directories - for (size_t j = 0, i = 0; j < count; j++, i++) { - int newpos = base + toInt (j * 4, LONG); - fseek (f, newpos, SEEK_SET); - directory[i] = new TagDirectory (parent, f, base, attrib->subdirAttribs, order); - } - - // set the terminating NULL - directory[sdcount] = nullptr; - } else { + if (fread (value, 1, valuesize, f) != static_cast(valuesize)) { type = INVALID; - } + } else { + // count the number of valid subdirs + int sdcount = count; + if (sdcount > 0) { + if (parent->getAttribTable() == olympusAttribs) { + sdcount = 1; + } + + // allocate space + directory = new TagDirectory*[sdcount + 1]; + + // load directories + for (size_t j = 0, i = 0; j < count; j++, i++) { + int newpos = base + toInt (j * 4, LONG); + fseek (f, newpos, SEEK_SET); + directory[i] = new TagDirectory (parent, f, base, attrib->subdirAttribs, order); + } + + // set the terminating NULL + directory[sdcount] = nullptr; + } else { + type = INVALID; + } + } // seek back to the saved position fseek (f, save, SEEK_SET); return; @@ -2101,10 +2108,12 @@ void ExifManager::parseCIFF () TagDirectory* root = new TagDirectory (nullptr, ifdAttribs, INTEL); Tag* exif = new Tag (root, lookupAttrib (ifdAttribs, "Exif")); exif->initSubDir (); - Tag* mn = new Tag (exif->getDirectory(), lookupAttrib (exifAttribs, "MakerNote")); - mn->initMakerNote (IFD, canonAttribs); root->addTag (exif); - exif->getDirectory()->addTag (mn); + if (exif) { + Tag* mn = new Tag (exif->getDirectory(), lookupAttrib (exifAttribs, "MakerNote")); + mn->initMakerNote (IFD, canonAttribs); + exif->getDirectory()->addTag (mn); + } parseCIFF (rml->ciffLength, root); root->sort (); } @@ -2140,10 +2149,14 @@ void ExifManager::parseCIFF (int length, TagDirectory* root) char buffer[1024]; Tag* t; - fseek (f, rml->ciffBase + length - 4, SEEK_SET); + if (fseek(f, rml->ciffBase + length - 4, SEEK_SET)) { + return; + } int dirStart = get4 (f, INTEL) + rml->ciffBase; - fseek (f, dirStart, SEEK_SET); + if (fseek(f, dirStart, SEEK_SET)) { + return; + } int numOfTags = get2 (f, INTEL); @@ -2194,11 +2207,13 @@ void ExifManager::parseCIFF (int length, TagDirectory* root) t = new Tag (root, lookupAttrib (ifdAttribs, "Make")); t->initString (buffer); root->addTag (t); - fseek (f, strlen (buffer) - 63, SEEK_CUR); - fread (buffer, 64, 1, f); - t = new Tag (root, lookupAttrib (ifdAttribs, "Model")); - t->initString (buffer); - root->addTag (t); + if (!fseek (f, strlen (buffer) - 63, SEEK_CUR)) { + if (fread (buffer, 64, 1, f) == 1) { + t = new Tag (root, lookupAttrib (ifdAttribs, "Model")); + t->initString (buffer); + root->addTag (t); + } + } } if (type == 0x1818) { @@ -2474,7 +2489,7 @@ parse_leafdata (TagDirectory* root, ByteOrder order) char *val = (char *)&value[pos]; if (strncmp (&hdr[8], "CameraObj_ISO_speed", 19) == 0) { - iso_speed = 25 * (1 << (atoi (val) - 1)); + iso_speed = 25 * (1 << std::max((atoi (val) - 1), 0)); found_count++; } else if (strncmp (&hdr[8], "ImgProf_rotation_angle", 22) == 0) { rotation_angle = atoi (val); @@ -2503,7 +2518,7 @@ parse_leafdata (TagDirectory* root, ByteOrder order) root->addTagFront (exif); } - if (!exif->getDirectory()->getTag ("ISOSpeedRatings")) { + if (exif && !exif->getDirectory()->getTag ("ISOSpeedRatings")) { Tag *t = new Tag (exif->getDirectory(), exif->getDirectory()->getAttrib ("ISOSpeedRatings")); t->initInt (iso_speed, LONG); exif->getDirectory()->addTagFront (t); @@ -2829,7 +2844,7 @@ void ExifManager::parse (bool isRaw, bool skipIgnored) exif->initSubDir (exifdir); root->addTagFront (exif); - if (!exif->getDirectory()->getTag ("ISOSpeedRatings") && exif->getDirectory()->getTag ("ExposureIndex")) { + if (exif && !exif->getDirectory()->getTag ("ISOSpeedRatings") && exif->getDirectory()->getTag ("ExposureIndex")) { Tag* niso = new Tag (exif->getDirectory(), exif->getDirectory()->getAttrib ("ISOSpeedRatings")); niso->initInt (exif->getDirectory()->getTag ("ExposureIndex")->toInt(), SHORT); exif->getDirectory()->addTagFront (niso); diff --git a/rtexif/rtexif.h b/rtexif/rtexif.h index 1beba92ec..2b68a6754 100644 --- a/rtexif/rtexif.h +++ b/rtexif/rtexif.h @@ -155,11 +155,11 @@ public: virtual Tag* findTagUpward (const char* name) const; bool getXMPTagValue (const char* name, char* value) const; - void keepTag (int ID); - virtual void addTag (Tag* a); - virtual void addTagFront (Tag* a); - virtual void replaceTag (Tag* a); - inline Tag* getTagByIndex (int ix) + void keepTag (int ID); + void addTag (Tag* &a); + void addTagFront (Tag* &a); + void replaceTag (Tag* a); + inline Tag* getTagByIndex (int ix) { return tags[ix]; } @@ -171,7 +171,7 @@ public: virtual int calculateSize (); virtual int write (int start, unsigned char* buffer); virtual TagDirectory* clone (TagDirectory* parent); - virtual void applyChange (std::string field, Glib::ustring value); + void applyChange (const std::string &field, const Glib::ustring &value); virtual void printAll (unsigned int level = 0) const; // reentrant debug function, keep level=0 on first call ! virtual bool CPBDump (const Glib::ustring &commFName, const Glib::ustring &imageFName, const Glib::ustring &profileFName, const Glib::ustring &defaultPParams, @@ -191,10 +191,10 @@ public: TagDirectoryTable(); TagDirectoryTable (TagDirectory* p, unsigned char *v, int memsize, int offs, TagType type, const TagAttrib* ta, ByteOrder border); TagDirectoryTable (TagDirectory* p, FILE* f, int memsize, int offset, TagType type, const TagAttrib* ta, ByteOrder border); - virtual ~TagDirectoryTable(); - virtual int calculateSize (); - virtual int write (int start, unsigned char* buffer); - virtual TagDirectory* clone (TagDirectory* parent); + ~TagDirectoryTable() override; + int calculateSize () override; + int write (int start, unsigned char* buffer) override; + TagDirectory* clone (TagDirectory* parent) override; }; // a class representing a single tag @@ -488,7 +488,7 @@ protected: std::map choices; public: ChoiceInterpreter () {}; - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::map::iterator r = choices.find (t->toInt()); diff --git a/rtexif/sonyminoltaattribs.cc b/rtexif/sonyminoltaattribs.cc index 834d436f9..04cb6a548 100644 --- a/rtexif/sonyminoltaattribs.cc +++ b/rtexif/sonyminoltaattribs.cc @@ -818,6 +818,7 @@ public: {2672, "Minolta AF 24-105mm f/3.5-4.5 (D)"}, {3046, "Metabones Canon EF Speed Booster"}, {4567, "Tokina 70-210mm f/4-5.6"}, + {4570, "Tamron AF 35-135mm f/3.5-4.5"}, {4571, "Vivitar 70-210mm f/4.5-5.6"}, {4574, "2x Teleconverter or Tamron or Tokina Lens"}, {4574, "Tamron SP AF 90mm f/2.5"}, @@ -851,6 +852,7 @@ public: {6553, "Sony FE 12-24mm f/4 G"}, {6553, "Sony FE 90mm f/2.8 Macro G OSS"}, {6553, "Sony E 18-50mm f/4-5.6"}, + {6553, "Sony FE 24mm f/1.4 GM"}, {6553, "Sony FE 24-105mm f/4 G OSS"}, {6553, "Sony E PZ 18-200mm f/3.5-6.3 OSS"}, {6553, "Sony FE 55mm f/1.8 ZA"}, @@ -874,20 +876,26 @@ public: {6553, "Sony FE 100-400mm f/4.5-5.6 GM OSS"}, {6553, "Sony FE 70-200mm f/2.8 GM OSS"}, {6553, "Sony FE 16-35mm f/2.8 GM"}, + {6553, "Sony FE 400mm f/2.8 GM OSS"}, {6553, "Sony E 18-135mm f/3.5-5.6 OSS"}, {6553, "Sony FE 70-200mm f/2.8 GM OSS + 1.4X Teleconverter"}, {6553, "Sony FE 70-200mm f/2.8 GM OSS + 2X Teleconverter"}, {6553, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 1.4X Teleconverter"}, {6553, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 2X Teleconverter"}, + {6553, "Sony FE 400mm f/2.8 GM OSS + 1.4X Teleconverter"}, + {6553, "Sony FE 400mm f/2.8 GM OSS + 2X Teleconverter"}, {6553, "Samyang AF 50mm f/1.4 FE"}, {6553, "Samyang AF 14mm f/2.8 FE"}, + {6553, "Samyang AF 24mm f/2.8"}, {6553, "Samyang AF 35mm f/2.8 FE"}, {6553, "Samyang AF 35mm f/1.4"}, {6553, "Sigma 19mm f/2.8 [EX] DN"}, {6553, "Sigma 30mm f/2.8 [EX] DN"}, {6553, "Sigma 60mm f/2.8 DN"}, {6553, "Sigma 30mm f/1.4 DC DN | C"}, + {6553, "Sigma 85mm f/1.4 DG HSM | A"}, {6553, "Sigma 16mm f/1.4 DC DN | C"}, + {6553, "Sigma 70mm f/2.8 DG MACRO | A"}, {6553, "Tamron 18-200mm f/3.5-6.3 Di III VC"}, {6553, "Tamron 28-75mm f/2.8 Di III RXD"}, {6553, "Tokina Firin 20mm f/2 FE MF"}, @@ -897,6 +905,7 @@ public: {6553, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"}, {6553, "Voigtlander NOKTON 40mm f/1.2 Aspherical"}, {6553, "Voigtlander NOKTON classic 35mm f/1.4"}, + {6553, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"}, {6553, "Zeiss Touit 12mm f/2.8"}, {6553, "Zeiss Touit 32mm f/1.8"}, {6553, "Zeiss Touit 50mm f/2.8 Macro"}, @@ -904,6 +913,7 @@ public: {6553, "Zeiss Batis 85mm f/1.8"}, {6553, "Zeiss Batis 18mm f/2.8"}, {6553, "Zeiss Batis 135mm f/2.8"}, + {6553, "Zeiss Batis 40mm f/2 CF"}, {6553, "Zeiss Loxia 50mm f/2"}, {6553, "Zeiss Loxia 35mm f/2"}, {6553, "Zeiss Loxia 21mm f/2.8"}, @@ -1029,6 +1039,7 @@ public: {26721, "Minolta AF 24-105mm f/3.5-4.5 (D)"}, {30464, "Metabones Canon EF Speed Booster"}, {45671, "Tokina 70-210mm f/4-5.6"}, + {45701, "Tamron AF 35-135mm f/3.5-4.5"}, {45711, "Vivitar 70-210mm f/4.5-5.6"}, {45741, "2x Teleconverter or Tamron or Tokina Lens"}, {45741, "Tamron SP AF 90mm f/2.5"}, @@ -1062,6 +1073,7 @@ public: {65535, "Sony FE 12-24mm f/4 G"}, {65535, "Sony FE 90mm f/2.8 Macro G OSS"}, {65535, "Sony E 18-50mm f/4-5.6"}, + {65535, "Sony FE 24mm f/1.4 GM"}, {65535, "Sony FE 24-105mm f/4 G OSS"}, {65535, "Sony E PZ 18-200mm f/3.5-6.3 OSS"}, {65535, "Sony FE 55mm f/1.8 ZA"}, @@ -1085,20 +1097,26 @@ public: {65535, "Sony FE 100-400mm f/4.5-5.6 GM OSS"}, {65535, "Sony FE 70-200mm f/2.8 GM OSS"}, {65535, "Sony FE 16-35mm f/2.8 GM"}, + {65535, "Sony FE 400mm f/2.8 GM OSS"}, {65535, "Sony E 18-135mm f/3.5-5.6 OSS"}, {65535, "Sony FE 70-200mm f/2.8 GM OSS + 1.4X Teleconverter"}, {65535, "Sony FE 70-200mm f/2.8 GM OSS + 2X Teleconverter"}, {65535, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 1.4X Teleconverter"}, {65535, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 2X Teleconverter"}, + {65535, "Sony FE 400mm f/2.8 GM OSS + 1.4X Teleconverter"}, + {65535, "Sony FE 400mm f/2.8 GM OSS + 2X Teleconverter"}, {65535, "Samyang AF 50mm f/1.4 FE"}, {65535, "Samyang AF 14mm f/2.8 FE"}, + {65535, "Samyang AF 24mm f/2.8"}, {65535, "Samyang AF 35mm f/2.8 FE"}, {65535, "Samyang AF 35mm f/1.4"}, {65535, "Sigma 19mm f/2.8 [EX] DN"}, {65535, "Sigma 30mm f/2.8 [EX] DN"}, {65535, "Sigma 60mm f/2.8 DN"}, {65535, "Sigma 30mm f/1.4 DC DN | C"}, + {65535, "Sigma 85mm f/1.4 DG HSM | A"}, {65535, "Sigma 16mm f/1.4 DC DN | C"}, + {65535, "Sigma 70mm f/2.8 DG MACRO | A"}, {65535, "Tamron 18-200mm f/3.5-6.3 Di III VC"}, {65535, "Tamron 28-75mm f/2.8 Di III RXD"}, {65535, "Tokina Firin 20mm f/2 FE MF"}, @@ -1108,6 +1126,7 @@ public: {65535, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical"}, {65535, "Voigtlander NOKTON 40mm f/1.2 Aspherical"}, {65535, "Voigtlander NOKTON classic 35mm f/1.4"}, + {65535, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical"}, {65535, "Zeiss Touit 12mm f/2.8"}, {65535, "Zeiss Touit 32mm f/1.8"}, {65535, "Zeiss Touit 50mm f/2.8 Macro"}, @@ -1115,6 +1134,7 @@ public: {65535, "Zeiss Batis 85mm f/1.8"}, {65535, "Zeiss Batis 18mm f/2.8"}, {65535, "Zeiss Batis 135mm f/2.8"}, + {65535, "Zeiss Batis 40mm f/2 CF"}, {65535, "Zeiss Loxia 50mm f/2"}, {65535, "Zeiss Loxia 35mm f/2"}, {65535, "Zeiss Loxia 21mm f/2.8"}, @@ -1130,7 +1150,7 @@ public: }; } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int lensID = t->toInt(); Tag *lensInfoTag = t->getParent()->getRoot()->findTag ("LensInfo"); @@ -1190,7 +1210,8 @@ public: choices.insert (p_t (32791, "Sony E 16-70mm f/4 ZA OSS")); choices.insert (p_t (32792, "Sony E 10-18mm f/4 OSS")); choices.insert (p_t (32793, "Sony E PZ 16-50mm f/3.5-5.6 OSS")); - choices.insert (p_t (32794, "Sony FE 35mm f/2.8 ZA")); + choices.insert (p_t (32794, "Sony FE 35mm f/2.8 ZA or Samyang AF 24mm f/2.8 FE")); + choices.insert (p_t (32794, "Samyang AF 24mm f/2.8 FE")); choices.insert (p_t (32795, "Sony FE 24-70mm f/4 ZA OSS")); choices.insert (p_t (32796, "Sony FE 85mm f/1.8")); choices.insert (p_t (32797, "Sony E 18-200mm f/3.5-6.3 OSS LE")); @@ -1200,6 +1221,7 @@ public: choices.insert (p_t (32801, "Sony FE 12-24mm f/4 G")); choices.insert (p_t (32802, "Sony FE 90mm f/2.8 Macro G OSS")); choices.insert (p_t (32803, "Sony E 18-50mm f/4-5.6")); + choices.insert (p_t (32804, "Sony FE 24mm f/1.4 GM")); choices.insert (p_t (32805, "Sony FE 24-105mm f/4 G OSS")); choices.insert (p_t (32807, "Sony E PZ 18-200mm f/3.5-6.3 OSS")); choices.insert (p_t (32808, "Sony FE 55mm f/1.8 ZA")); @@ -1223,12 +1245,15 @@ public: choices.insert (p_t (32829, "Sony FE 100-400mm f/4.5-5.6 GM OSS")); choices.insert (p_t (32830, "Sony FE 70-200mm f/2.8 GM OSS")); choices.insert (p_t (32831, "Sony FE 16-35mm f/2.8 GM")); + choices.insert (p_t (32848, "Sony FE 400mm f/2.8 GM OSS")); choices.insert (p_t (32849, "Sony E 18-135mm f/3.5-5.6 OSS")); choices.insert (p_t (33072, "Sony FE 70-200mm f/2.8 GM OSS + 1.4X Teleconverter")); choices.insert (p_t (33073, "Sony FE 70-200mm f/2.8 GM OSS + 2X Teleconverter")); choices.insert (p_t (33076, "Sony FE 100mm f/2.8 STF GM OSS (macro mode)")); choices.insert (p_t (33077, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 1.4X Teleconverter")); choices.insert (p_t (33078, "Sony FE 100-400mm f/4.5-5.6 GM OSS + 2X Teleconverter")); + choices.insert (p_t (33079, "Sony FE 400mm f/2.8 GM OSS + 1.4X Teleconverter")); + choices.insert (p_t (33080, "Sony FE 400mm f/2.8 GM OSS + 2X Teleconverter")); choices.insert (p_t (49201, "Zeiss Touit 12mm f/2.8")); choices.insert (p_t (49202, "Zeiss Touit 32mm f/1.8")); choices.insert (p_t (49203, "Zeiss Touit 50mm f/2.8 Macro")); @@ -1236,6 +1261,7 @@ public: choices.insert (p_t (49217, "Zeiss Batis 85mm f/1.8")); choices.insert (p_t (49218, "Zeiss Batis 18mm f/2.8")); choices.insert (p_t (49219, "Zeiss Batis 135mm f/2.8")); + choices.insert (p_t (49220, "Zeiss Batis 40mm f/2 CF")); choices.insert (p_t (49232, "Zeiss Loxia 50mm f/2")); choices.insert (p_t (49233, "Zeiss Loxia 35mm f/2")); choices.insert (p_t (49234, "Zeiss Loxia 21mm f/2.8")); @@ -1255,20 +1281,23 @@ public: choices.insert (p_t (50492, "Sigma 24-105mm f/4 DG OS HSM | A + MC-11")); choices.insert (p_t (50493, "Sigma 17-70mm f/2.8-4 DC MACRO OS HSM | C + MC-11")); choices.insert (p_t (50495, "Sigma 50-100mm f/1.8 DC HSM | A + MC-11")); + choices.insert (p_t (50499, "Sigma 85mm f/1.4 DG HSM | A")); choices.insert (p_t (50501, "Sigma 100-400mm f/5-6.3 DG OS HSM | C + MC-11")); choices.insert (p_t (50503, "Sigma 16mm f/1.4 DC DN | C")); + choices.insert (p_t (50513, "Sigma 70mm f/2.8 DG MACRO | A")); choices.insert (p_t (50992, "Voigtlander SUPER WIDE-HELIAR 15mm f/4.5 III")); choices.insert (p_t (50993, "Voigtlander HELIAR-HYPER WIDE 10mm f/5.6")); choices.insert (p_t (50994, "Voigtlander ULTRA WIDE-HELIAR 12mm f/5.6 III")); choices.insert (p_t (50995, "Voigtlander MACRO APO-LANTHAR 65mm f/2 Aspherical")); choices.insert (p_t (50996, "Voigtlander NOKTON 40mm f/1.2 Aspherical")); choices.insert (p_t (50997, "Voigtlander NOKTON classic 35mm f/1.4")); + choices.insert (p_t (50999, "Voigtlander COLOR-SKOPAR 21mm f/3.5 Aspherical")); choices.insert (p_t (51505, "Samyang AF 14mm f/2.8 FE or Samyang AF 35mm f/2.8 FE")); choices.insert (p_t (51505, "Samyang AF 35mm f/2.8 FE")); choices.insert (p_t (51507, "Samyang AF 35mm f/1.4")); } - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int lensID = t->toInt(); Tag *lensInfoTag = t->getParent()->getRoot()->findTag ("LensInfo"); @@ -2062,7 +2091,7 @@ class SAExposureTimeInterpreter : public Interpreter { public: SAExposureTimeInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { double a = t->toDouble(); @@ -2074,7 +2103,7 @@ public: return "n/a"; } } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT TagType astype = t->getType(); @@ -2093,7 +2122,7 @@ public: return 0.; } } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT int a = 0; @@ -2122,7 +2151,7 @@ class SAFNumberInterpreter : public Interpreter { public: SAFNumberInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { double a = double (t->toDouble()); @@ -2134,7 +2163,7 @@ public: return "n/a"; } } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT TagType astype = t->getType(); @@ -2153,7 +2182,7 @@ public: return 0.; } } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT int a = 0; @@ -2182,7 +2211,7 @@ class SAISOSettingInterpreter : public Interpreter { public: SAISOSettingInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->toInt(); @@ -2194,7 +2223,7 @@ public: return "Auto"; } } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { // Get the value; Depending on the camera model, this parameter can be a BYTE or a SHORT int a = 0; @@ -2223,14 +2252,14 @@ class SAExposureCompSetInterpreter : public Interpreter { public: SAExposureCompSetInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { double a = t->toDouble(); char buffer[32]; sprintf (buffer, "%.2f", a ); return buffer; } - virtual double toDouble (const Tag* t, int ofs) + double toDouble (const Tag* t, int ofs) override { // Get the value int a = t->getValue()[ofs]; @@ -2244,13 +2273,13 @@ class SAAFMicroAdjValueInterpreter : public Interpreter { public: SAAFMicroAdjValueInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%d", t->getValue()[0] - 20); return buffer; } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { return t->getValue()[0] - 20; } @@ -2261,7 +2290,7 @@ class SAAFMicroAdjModeInterpreter : public Interpreter { public: SAAFMicroAdjModeInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int a = t->getValue()[0] & 0x80; @@ -2271,7 +2300,7 @@ public: return "Off"; } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { return (t->getValue()[0] & 0x80) == 0x80 ? 1 : 0; } @@ -2283,13 +2312,13 @@ class SAAFMicroAdjRegisteredLensesInterpreter : public Interpreter { public: SAAFMicroAdjRegisteredLensesInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%d", t->getValue()[0] & 0x7f); return buffer; } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { return t->getValue()[0] & 0x7f; } @@ -2300,7 +2329,7 @@ class SAFocusStatusInterpreter : public Interpreter { public: SAFocusStatusInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { std::string retval; int a = t->toInt(); @@ -2339,13 +2368,13 @@ class SAColorTemperatureSettingInterpreter : public Interpreter { public: SAColorTemperatureSettingInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; sprintf (buffer, "%d", t->toInt()); return buffer; } - virtual int toInt (const Tag* t, int ofs, TagType astype) + int toInt (const Tag* t, int ofs, TagType astype) override { int a = 0; diff --git a/rtexif/stdattribs.cc b/rtexif/stdattribs.cc index fc1383839..76ba1f633 100644 --- a/rtexif/stdattribs.cc +++ b/rtexif/stdattribs.cc @@ -327,7 +327,7 @@ class FNumberInterpreter : public Interpreter { public: FNumberInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = t->toDouble(); @@ -346,7 +346,7 @@ class ApertureInterpreter : public Interpreter { public: ApertureInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = pow (2.0, t->toDouble() / 2.0); @@ -365,7 +365,7 @@ class ExposureBiasInterpreter : public Interpreter { public: ExposureBiasInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = t->toDouble(); @@ -384,7 +384,7 @@ class ShutterSpeedInterpreter : public Interpreter { public: ShutterSpeedInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double d = pow (2.0, -t->toDouble()); @@ -404,7 +404,7 @@ class ExposureTimeInterpreter : public Interpreter { public: ExposureTimeInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double d = t->toDouble(); @@ -424,7 +424,7 @@ class FocalLengthInterpreter : public Interpreter { public: FocalLengthInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char buffer[32]; double v = t->toDouble(); @@ -443,7 +443,7 @@ class UserCommentInterpreter : public Interpreter { public: UserCommentInterpreter () {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int count = t->getCount(); @@ -563,7 +563,7 @@ public: delete [] buffer; return retVal; } - virtual void fromString (Tag* t, const std::string& value) + void fromString (Tag* t, const std::string& value) override { Glib::ustring tmpStr(value); t->userCommentFromString (tmpStr); @@ -575,7 +575,7 @@ class CFAInterpreter : public Interpreter { public: CFAInterpreter() {} - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { char colors[] = "RGB"; char buffer[1024]; @@ -632,7 +632,7 @@ UTF8BinInterpreter utf8BinInterpreter; class RawImageSegmentationInterpreter : public Interpreter { public: - virtual std::string toString (Tag* t) + std::string toString (Tag* t) override { int segmentNumber = t->toInt(0, SHORT); int segmentWidth = t->toInt(2, SHORT); diff --git a/rtgui/CMakeLists.txt b/rtgui/CMakeLists.txt index 8150fbce3..6ea768a03 100644 --- a/rtgui/CMakeLists.txt +++ b/rtgui/CMakeLists.txt @@ -156,6 +156,7 @@ set(NONCLISOURCEFILES metadatapanel.cc labgrid.cc softlight.cc + dehaze.cc ) include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}") @@ -169,7 +170,7 @@ endif() if(WIN32) set(EXTRA_SRC_CLI myicon.rc) - set(EXTRA_SRC_NONCLI myicon.rc windirmonitor.cc) + set(EXTRA_SRC_NONCLI myicon.rc) set(EXTRA_LIB_RTGUI winmm) include_directories(${EXTRA_INCDIR} ${GIOMM_INCLUDE_DIRS} diff --git a/rtgui/addsetids.h b/rtgui/addsetids.h index 8cf39aa29..1d9c621eb 100644 --- a/rtgui/addsetids.h +++ b/rtgui/addsetids.h @@ -142,6 +142,7 @@ enum { ADDSET_BAYER_DUALDEMOZCONTRAST, ADDSET_XTRANS_FALSE_COLOR_SUPPRESSION, ADDSET_SOFTLIGHT_STRENGTH, + ADDSET_DEHAZE_STRENGTH, ADDSET_PARAM_NUM // THIS IS USED AS A DELIMITER!! }; diff --git a/rtgui/adjuster.h b/rtgui/adjuster.h index bd7f426ef..169bd7d12 100644 --- a/rtgui/adjuster.h +++ b/rtgui/adjuster.h @@ -87,7 +87,7 @@ public: int delay; Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep, double vdefault, Gtk::Image *imgIcon1 = nullptr, Gtk::Image *imgIcon2 = nullptr, double2double_fun slider2value = nullptr, double2double_fun value2slider = nullptr); - virtual ~Adjuster (); + ~Adjuster () override; // Add an "Automatic" checkbox next to the reset button. void addAutoButton(Glib::ustring tooltip = ""); diff --git a/rtgui/batchqueue.cc b/rtgui/batchqueue.cc index 2841c6811..b0feeabb0 100644 --- a/rtgui/batchqueue.cc +++ b/rtgui/batchqueue.cc @@ -39,6 +39,25 @@ using namespace std; using namespace rtengine; +namespace +{ + +struct NLParams { + BatchQueueListener* listener; + int qsize; + bool queueRunning; + bool queueError; + Glib::ustring queueErrorMessage; +}; + +bool bqnotifylistenerUI(NLParams* params) +{ + params->listener->queueSizeChanged (params->qsize, params->queueRunning, params->queueError, params->queueErrorMessage); + return false; +} + +} + BatchQueue::BatchQueue (FileCatalog* aFileCatalog) : processing(nullptr), fileCatalog(aFileCatalog), sequence(0), listener(nullptr) { @@ -208,7 +227,7 @@ void BatchQueue::addEntries (const std::vector& entries, bool saveBatchQueue (); redraw (); - notifyListener (false); + notifyListener (); } bool BatchQueue::saveBatchQueue () @@ -366,7 +385,7 @@ bool BatchQueue::loadBatchQueue () } redraw (); - notifyListener (false); + notifyListener (); return !fd.empty (); } @@ -437,7 +456,7 @@ void BatchQueue::cancelItems (const std::vector& items) saveBatchQueue (); redraw (); - notifyListener (false); + notifyListener (); } void BatchQueue::headItems (const std::vector& items) @@ -574,6 +593,8 @@ void BatchQueue::startProcessing () // start batch processing rtengine::startBatchProcessing (next->job, this); queue_draw (); + + notifyListener(); } } } @@ -585,13 +606,14 @@ void BatchQueue::setProgress(double p) } // No need to acquire the GUI, setProgressUI will do it - idle_register.add( - [this]() -> bool + const auto func = + [](BatchQueue* bq) -> bool { - redraw(); + bq->redraw(); return false; - } - ); + }; + + idle_register.add(func, this, false); } void BatchQueue::setProgressStr(const Glib::ustring& str) @@ -616,15 +638,12 @@ void BatchQueue::error(const Glib::ustring& descr) } if (listener) { - BatchQueueListener* const listener_copy = listener; - - idle_register.add( - [listener_copy, descr]() -> bool - { - listener_copy->queueSizeChanged(0, false, true, descr); - return false; - } - ); + NLParams* params = new NLParams; + params->listener = listener; + params->queueRunning = false; + params->queueError = true; + params->queueErrorMessage = descr; + idle_register.add(bqnotifylistenerUI, params, true); } } @@ -687,7 +706,6 @@ rtengine::ProcessingJob* BatchQueue::imageReady(rtengine::IImagefloat* img) Glib::ustring processedParams = processing->savedParamsFile; // delete from the queue - bool queueEmptied = false; bool remove_button_set = false; { @@ -699,9 +717,7 @@ rtengine::ProcessingJob* BatchQueue::imageReady(rtengine::IImagefloat* img) fd.erase (fd.begin()); // return next job - if (fd.empty()) { - queueEmptied = true; - } else if (listener && listener->canStartNext ()) { + if (!fd.empty() && listener && listener->canStartNext ()) { BatchQueueEntry* next = static_cast(fd[0]); // tag it as selected and set sequence next->processing = true; @@ -759,7 +775,7 @@ rtengine::ProcessingJob* BatchQueue::imageReady(rtengine::IImagefloat* img) } redraw (); - notifyListener (queueEmptied); + notifyListener (); return processing ? processing->job : nullptr; } @@ -954,25 +970,19 @@ void BatchQueue::buttonPressed (LWButton* button, int actionCode, void* actionDa } } -void BatchQueue::notifyListener (bool queueEmptied) +void BatchQueue::notifyListener () { - + const bool queueRunning = processing; if (listener) { - BatchQueueListener* const listener_copy = listener; - const std::size_t queue_size = - [](MyRWMutex& mutex, const std::vector& fd) -> std::size_t - { - MYREADERLOCK(l, mutex); - return fd.size(); - }(entryRW, fd); - - idle_register.add( - [listener_copy, queue_size, queueEmptied]() -> bool - { - listener_copy->queueSizeChanged(queue_size, queueEmptied, false, {}); - return false; - } - ); + NLParams* params = new NLParams; + params->listener = listener; + { + MYREADERLOCK(l, entryRW); + params->qsize = fd.size(); + } + params->queueRunning = queueRunning; + params->queueError = false; + idle_register.add(bqnotifylistenerUI, params, true); } } diff --git a/rtgui/batchqueue.h b/rtgui/batchqueue.h index 41c30da3f..c05ca54fe 100644 --- a/rtgui/batchqueue.h +++ b/rtgui/batchqueue.h @@ -31,7 +31,7 @@ class BatchQueueListener public: virtual ~BatchQueueListener() = default; - virtual void queueSizeChanged(int qsize, bool queueEmptied, bool queueError, const Glib::ustring& queueErrorMessage) = 0; + virtual void queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage) = 0; virtual bool canStartNext() = 0; }; @@ -44,7 +44,7 @@ class BatchQueue final : { public: explicit BatchQueue (FileCatalog* aFileCatalog); - ~BatchQueue (); + ~BatchQueue () override; void addEntries (const std::vector& entries, bool head = false, bool save = true); void cancelItems (const std::vector& items); @@ -62,17 +62,17 @@ public: return (!fd.empty()); } - void setProgress(double p); - void setProgressStr(const Glib::ustring& str); - void setProgressState(bool inProcessing); - void error(const Glib::ustring& descr); - rtengine::ProcessingJob* imageReady(rtengine::IImagefloat* img); + void setProgress(double p) override; + void setProgressStr(const Glib::ustring& str) override; + void setProgressState(bool inProcessing) override; + void error(const Glib::ustring& descr) override; + rtengine::ProcessingJob* imageReady(rtengine::IImagefloat* img) override; - void rightClicked (ThumbBrowserEntryBase* entry); - void doubleClicked (ThumbBrowserEntryBase* entry); - bool keyPressed (GdkEventKey* event); - void buttonPressed (LWButton* button, int actionCode, void* actionData); - void redrawNeeded (LWButton* button); + void rightClicked (ThumbBrowserEntryBase* entry) override; + void doubleClicked (ThumbBrowserEntryBase* entry) override; + bool keyPressed (GdkEventKey* event) override; + void buttonPressed (LWButton* button, int actionCode, void* actionData) override; + void redrawNeeded (LWButton* button) override; void setBatchQueueListener (BatchQueueListener* l) { @@ -86,14 +86,14 @@ public: static int calcMaxThumbnailHeight(); protected: - int getMaxThumbnailHeight() const; - void saveThumbnailHeight (int height); - int getThumbnailHeight (); + int getMaxThumbnailHeight() const override; + void saveThumbnailHeight (int height) override; + int getThumbnailHeight () override; Glib::ustring autoCompleteFileName (const Glib::ustring& fileName, const Glib::ustring& format); Glib::ustring getTempFilenameForParams( const Glib::ustring &filename ); bool saveBatchQueue (); - void notifyListener (bool queueEmptied); + void notifyListener (); BatchQueueEntry* processing; // holds the currently processed image FileCatalog* fileCatalog; diff --git a/rtgui/batchqueueentry.h b/rtgui/batchqueueentry.h index caf1b8eff..2b75922b7 100644 --- a/rtgui/batchqueueentry.h +++ b/rtgui/batchqueueentry.h @@ -56,21 +56,21 @@ public: bool fast_pipeline; BatchQueueEntry (rtengine::ProcessingJob* job, const rtengine::procparams::ProcParams& pparams, Glib::ustring fname, int prevw, int prevh, Thumbnail* thm = nullptr); - ~BatchQueueEntry (); + ~BatchQueueEntry () override; - void refreshThumbnailImage (); - void calcThumbnailSize (); + void refreshThumbnailImage () override; + void calcThumbnailSize () override; - void drawProgressBar (Glib::RefPtr win, const Gdk::RGBA& foregr, const Gdk::RGBA& backgr, int x, int w, int y, int h); + void drawProgressBar (Glib::RefPtr win, const Gdk::RGBA& foregr, const Gdk::RGBA& backgr, int x, int w, int y, int h) override; void removeButtonSet (); - virtual std::vector > getIconsOnImageArea (); - virtual void getIconSize (int& w, int& h); - virtual Glib::ustring getToolTip (int x, int y); + std::vector > getIconsOnImageArea () override; + void getIconSize (int& w, int& h) override; + Glib::ustring getToolTip (int x, int y) override; // bqentryupdatelistener interface - void updateImage (guint8* img, int w, int h, int origw, int origh, guint8* newOPreview); + void updateImage (guint8* img, int w, int h, int origw, int origh, guint8* newOPreview) override; void _updateImage (guint8* img, int w, int h); // inside gtk thread }; diff --git a/rtgui/batchqueuepanel.cc b/rtgui/batchqueuepanel.cc index d718de677..4c21feebf 100644 --- a/rtgui/batchqueuepanel.cc +++ b/rtgui/batchqueuepanel.cc @@ -57,6 +57,8 @@ BatchQueuePanel::BatchQueuePanel (FileCatalog* aFileCatalog) : parent(nullptr) qAutoStart->set_tooltip_text (M("BATCHQUEUE_AUTOSTARTHINT")); qAutoStart->set_active (options.procQueueEnabled); + queueShouldRun = false; + batchQueueButtonBox->pack_start (*qStartStop, Gtk::PACK_SHRINK, 4); batchQueueButtonBox->pack_start (*qAutoStart, Gtk::PACK_SHRINK, 4); Gtk::Frame *bbox = Gtk::manage(new Gtk::Frame(M("MAIN_FRAME_BATCHQUEUE"))); @@ -246,20 +248,13 @@ void BatchQueuePanel::updateTab (int qsize, int forceOrientation) } } -void BatchQueuePanel::queueSizeChanged(int qsize, bool queueEmptied, bool queueError, const Glib::ustring& queueErrorMessage) +void BatchQueuePanel::queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage) { - updateTab (qsize); + setGuiFromBatchState(queueRunning, qsize); - if (qsize == 0 || (qsize == 1 && !fdir->get_sensitive())) { - qStartStop->set_sensitive(false); - } else { - qStartStop->set_sensitive(true); - } - - if (queueEmptied || queueError) { - stopBatchProc (); - fdir->set_sensitive (true); - fformat->set_sensitive (true); + if (!queueRunning && qsize == 0 && queueShouldRun) { + // There was work, but it is all done now. + queueShouldRun = false; SoundManager::playSoundAsync(options.sndBatchQueueDone); } @@ -272,8 +267,7 @@ void BatchQueuePanel::queueSizeChanged(int qsize, bool queueEmptied, bool queueE void BatchQueuePanel::startOrStopBatchProc() { - bool state = qStartStop->get_state(); - if (state) { + if (qStartStop->get_state()) { startBatchProc(); } else { stopBatchProc(); @@ -282,34 +276,42 @@ void BatchQueuePanel::startOrStopBatchProc() void BatchQueuePanel::startBatchProc () { - // Update switch when queue started programmatically - qStartStopConn.block (true); - qStartStop->set_active(true); - qStartStopConn.block (false); - if (batchQueue->hasJobs()) { - fdir->set_sensitive (false); - fformat->set_sensitive (false); - if (batchQueue->getEntries().size() == 1) { - qStartStop->set_sensitive(false); - } + // Update the *desired* state of the queue, then launch it. The switch + // state is not updated here; it is changed by the queueSizeChanged() + // callback in response to the *reported* state. + queueShouldRun = true; + saveOptions(); batchQueue->startProcessing (); - } else { - stopBatchProc (); } - - updateTab (batchQueue->getEntries().size()); } void BatchQueuePanel::stopBatchProc () { - // Update switch when queue started programmatically - qStartStopConn.block (true); - qStartStop->set_active(false); - qStartStopConn.block (false); + // There is nothing much to do here except set the desired state, which the + // background queue thread must check. It will notify queueSizeChanged() + // when it stops. + queueShouldRun = false; +} - updateTab (batchQueue->getEntries().size()); +void BatchQueuePanel::setGuiFromBatchState(bool queueRunning, int qsize) +{ + // Change the GUI state in response to the reported queue state + if (qsize == 0 || (qsize == 1 && queueRunning)) { + qStartStop->set_sensitive(false); + } else { + qStartStop->set_sensitive(true); + } + + qStartStopConn.block(true); + qStartStop->set_active(queueRunning); + qStartStopConn.block(false); + + fdir->set_sensitive (!queueRunning); + fformat->set_sensitive (!queueRunning); + + updateTab(qsize); } void BatchQueuePanel::addBatchQueueJobs(const std::vector& entries, bool head) @@ -317,22 +319,11 @@ void BatchQueuePanel::addBatchQueueJobs(const std::vector& ent batchQueue->addEntries(entries, head); if (!qStartStop->get_active() && qAutoStart->get_active()) { + // Auto-start as if the user had pressed the qStartStop switch startBatchProc (); } } -bool BatchQueuePanel::canStartNext () -{ - GThreadLock lock; - if (qStartStop->get_active()) { - return true; - } else { - fdir->set_sensitive (true); - fformat->set_sensitive (true); - return false; - } -} - void BatchQueuePanel::saveOptions () { @@ -341,6 +332,33 @@ void BatchQueuePanel::saveOptions () options.procQueueEnabled = qAutoStart->get_active(); } +bool BatchQueuePanel::handleShortcutKey (GdkEventKey* event) +{ + bool ctrl = event->state & GDK_CONTROL_MASK; + + if (ctrl) { + switch(event->keyval) { + case GDK_KEY_s: + if (qStartStop->get_active()) { + stopBatchProc(); + } else { + startBatchProc(); + } + + return true; + } + } + + return batchQueue->keyPressed (event); +} + +bool BatchQueuePanel::canStartNext () +{ + // This function is called from the background BatchQueue thread. It + // cannot call UI functions; we keep the desired state in an atomic. + return queueShouldRun; +} + void BatchQueuePanel::pathFolderButtonPressed () { @@ -370,23 +388,3 @@ void BatchQueuePanel::formatChanged(const Glib::ustring& format) { options.saveFormatBatch = saveFormatPanel->getFormat(); } - -bool BatchQueuePanel::handleShortcutKey (GdkEventKey* event) -{ - bool ctrl = event->state & GDK_CONTROL_MASK; - - if (ctrl) { - switch(event->keyval) { - case GDK_KEY_s: - if (qStartStop->get_active()) { - stopBatchProc(); - } else { - startBatchProc(); - } - - return true; - } - } - - return batchQueue->keyPressed (event); -} diff --git a/rtgui/batchqueuepanel.h b/rtgui/batchqueuepanel.h index 3f1da85ce..a1ee7326f 100644 --- a/rtgui/batchqueuepanel.h +++ b/rtgui/batchqueuepanel.h @@ -19,6 +19,8 @@ #ifndef _BATCHQUEUEPANEL_ #define _BATCHQUEUEPANEL_ +#include + #include #include "batchqueue.h" #include "saveformatpanel.h" @@ -51,31 +53,35 @@ class BatchQueuePanel : public Gtk::VBox, Gtk::HBox* bottomBox; Gtk::HBox* topBox; + std::atomic queueShouldRun; + IdleRegister idle_register; public: explicit BatchQueuePanel (FileCatalog* aFileCatalog); - ~BatchQueuePanel(); + ~BatchQueuePanel() override; void init (RTWindow* parent); void addBatchQueueJobs(const std::vector& entries , bool head = false); + void saveOptions (); + + bool handleShortcutKey (GdkEventKey* event); // batchqueuelistener interface - void queueSizeChanged(int qsize, bool queueEmptied, bool queueError, const Glib::ustring& queueErrorMessage); - bool canStartNext(); + void queueSizeChanged(int qsize, bool queueRunning, bool queueError, const Glib::ustring& queueErrorMessage) override; + bool canStartNext() override; +private: void startBatchProc (); void stopBatchProc (); void startOrStopBatchProc(); + void setGuiFromBatchState(bool queueRunning, int qsize); - void saveOptions (); void pathFolderChanged (); void pathFolderButtonPressed (); void formatChanged(const Glib::ustring& format) override; void updateTab (int qsize, int forceOrientation = 0); // forceOrientation=0: base on options / 1: horizontal / 2: vertical - - bool handleShortcutKey (GdkEventKey* event); }; #endif diff --git a/rtgui/batchtoolpanelcoord.cc b/rtgui/batchtoolpanelcoord.cc index 0b17d9bd3..db06ea59e 100644 --- a/rtgui/batchtoolpanelcoord.cc +++ b/rtgui/batchtoolpanelcoord.cc @@ -107,7 +107,7 @@ void BatchToolPanelCoordinator::initSession () // compare all the ProcParams and describe which parameters has different (i.e. inconsistent) values in pparamsEdited pparamsEdited.initFrom (initialPP); - crop->setDimensions (100000, 100000); + //crop->setDimensions (100000, 100000); /* if (!selected.empty()) { pparams = selected[0]->getProcParams (); @@ -127,6 +127,10 @@ void BatchToolPanelCoordinator::initSession () coarse->initBatchBehavior (); + int w,h; + selected[0]->getOriginalSize(w,h); + crop->setDimensions (w, h); + if (selected.size() == 1) { for (size_t i = 0; i < toolPanels.size(); i++) { @@ -202,6 +206,7 @@ void BatchToolPanelCoordinator::initSession () colortoning->setAdjusterBehavior (options.baBehav[ADDSET_COLORTONING_SPLIT], options.baBehav[ADDSET_COLORTONING_SATTHRESHOLD], options.baBehav[ADDSET_COLORTONING_SATOPACITY], options.baBehav[ADDSET_COLORTONING_STRENGTH], options.baBehav[ADDSET_COLORTONING_BALANCE]); filmSimulation->setAdjusterBehavior(options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]); softlight->setAdjusterBehavior(options.baBehav[ADDSET_SOFTLIGHT_STRENGTH]); + dehaze->setAdjusterBehavior(options.baBehav[ADDSET_DEHAZE_STRENGTH]); retinex->setAdjusterBehavior (options.baBehav[ADDSET_RETI_STR], options.baBehav[ADDSET_RETI_NEIGH], options.baBehav[ADDSET_RETI_LIMD], options.baBehav[ADDSET_RETI_OFFS], options.baBehav[ADDSET_RETI_VART], options.baBehav[ADDSET_RETI_GAM], options.baBehav[ADDSET_RETI_SLO]); chmixer->setAdjusterBehavior (options.baBehav[ADDSET_CHMIXER] ); @@ -292,6 +297,7 @@ void BatchToolPanelCoordinator::initSession () if (options.baBehav[ADDSET_COLORTONING_STRENGTH]) { pparams.colorToning.strength = 0; } if (options.baBehav[ADDSET_FILMSIMULATION_STRENGTH]) { pparams.filmSimulation.strength = 0; } if (options.baBehav[ADDSET_SOFTLIGHT_STRENGTH]) { pparams.softlight.strength = 0; } + if (options.baBehav[ADDSET_DEHAZE_STRENGTH]) { pparams.dehaze.strength = 0; } if (options.baBehav[ADDSET_ROTATE_DEGREE]) { pparams.rotate.degree = 0; } if (options.baBehav[ADDSET_RESIZE_SCALE]) { pparams.resize.scale = 0; } if (options.baBehav[ADDSET_DIST_AMOUNT]) { pparams.distortion.amount = 0; } @@ -701,11 +707,11 @@ void BatchToolPanelCoordinator::spotWBselected (int x, int y, Thumbnail* thm) double otemp = initialPP[i].wb.temperature; double ogreen = initialPP[i].wb.green; - if (options.baBehav[12]) { + if (options.baBehav[ADDSET_ROTATE_DEGREE]) { temp = temp - otemp; } - if (options.baBehav[13]) { + if (options.baBehav[ADDSET_DIST_AMOUNT]) { green = green - ogreen; } diff --git a/rtgui/batchtoolpanelcoord.h b/rtgui/batchtoolpanelcoord.h index 204750047..f5889f967 100644 --- a/rtgui/batchtoolpanelcoord.h +++ b/rtgui/batchtoolpanelcoord.h @@ -67,7 +67,7 @@ public: // wbprovider interface void getAutoWB (double& temp, double& green, double equal, double tempBias) override; - void getCamWB (double& temp, double& green); + void getCamWB (double& temp, double& green) override; // thumbnaillistener interface void procParamsChanged (Thumbnail* thm, int whoChangedIt) override; diff --git a/rtgui/bayerpreprocess.cc b/rtgui/bayerpreprocess.cc index 7c9545b89..0720612fe 100644 --- a/rtgui/bayerpreprocess.cc +++ b/rtgui/bayerpreprocess.cc @@ -24,14 +24,14 @@ using namespace rtengine; using namespace rtengine::procparams; -BayerPreProcess::BayerPreProcess () : FoldableToolPanel(this, "bayerpreprocess", M("TP_PREPROCESS_LABEL"), true) +BayerPreProcess::BayerPreProcess() : FoldableToolPanel(this, "bayerpreprocess", M("TP_PREPROCESS_LABEL"), true) { auto m = ProcEventMapper::getInstance(); EvLineDenoiseDirection = m->newEvent(DARKFRAME, "HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION"); EvPDAFLinesFilter = m->newEvent(DARKFRAME, "HISTORY_MSG_PREPROCESS_PDAFLINESFILTER"); - lineDenoise = Gtk::manage(new Adjuster (M("TP_PREPROCESS_LINEDENOISE"), 0, 1000, 1, 0)); - lineDenoise->setAdjusterListener (this); + lineDenoise = Gtk::manage(new Adjuster(M("TP_PREPROCESS_LINEDENOISE"), 0, 1000, 1, 0)); + lineDenoise->setAdjusterListener(this); if (lineDenoise->delay < options.adjusterMaxDelay) { lineDenoise->delay = options.adjusterMaxDelay; @@ -39,8 +39,8 @@ BayerPreProcess::BayerPreProcess () : FoldableToolPanel(this, "bayerpreprocess", lineDenoise->show(); - greenEqThreshold = Gtk::manage(new Adjuster (M("TP_PREPROCESS_GREENEQUIL"), 0, 100, 1, 0)); - greenEqThreshold->setAdjusterListener (this); + greenEqThreshold = Gtk::manage(new Adjuster(M("TP_PREPROCESS_GREENEQUIL"), 0, 100, 1, 0)); + greenEqThreshold->setAdjusterListener(this); if (greenEqThreshold->delay < options.adjusterMaxDelay) { greenEqThreshold->delay = options.adjusterMaxDelay; @@ -57,18 +57,17 @@ BayerPreProcess::BayerPreProcess () : FoldableToolPanel(this, "bayerpreprocess", lineDenoiseDirection->append(M("TP_PREPROCESS_LINEDENOISE_DIRECTION_PDAF_LINES")); lineDenoiseDirection->show(); lineDenoiseDirection->signal_changed().connect(sigc::mem_fun(*this, &BayerPreProcess::lineDenoiseDirectionChanged)); - + hb->pack_start(*lineDenoiseDirection); - pack_start( *lineDenoise, Gtk::PACK_SHRINK, 4); + pack_start(*lineDenoise, Gtk::PACK_SHRINK, 4); pack_start(*hb, Gtk::PACK_SHRINK, 4); - pack_start( *Gtk::manage (new Gtk::HSeparator())); + pack_start(*Gtk::manage(new Gtk::HSeparator())); - pack_start( *greenEqThreshold, Gtk::PACK_SHRINK, 4); + pack_start(*greenEqThreshold, Gtk::PACK_SHRINK, 4); pdafLinesFilter = Gtk::manage(new Gtk::CheckButton((M("TP_PREPROCESS_PDAFLINESFILTER")))); - pdafLinesFilter->set_tooltip_markup(M("TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP")); pdafLinesFilter->show(); pdafLinesFilter->signal_toggled().connect(sigc::mem_fun(*this, &BayerPreProcess::pdafLinesFilterChanged), true); @@ -78,58 +77,64 @@ BayerPreProcess::BayerPreProcess () : FoldableToolPanel(this, "bayerpreprocess", void BayerPreProcess::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) { - disableListener (); + disableListener(); + + if (pedited) { + lineDenoise->setEditedState(pedited->raw.bayersensor.linenoise ? Edited : UnEdited); + greenEqThreshold->setEditedState(pedited->raw.bayersensor.greenEq ? Edited : UnEdited); - if(pedited ) { - lineDenoise->setEditedState( pedited->raw.bayersensor.linenoise ? Edited : UnEdited ); - greenEqThreshold->setEditedState( pedited->raw.bayersensor.greenEq ? Edited : UnEdited ); if (!pedited->raw.bayersensor.linenoiseDirection) { lineDenoiseDirection->set_active(3); } + pdafLinesFilter->set_inconsistent(!pedited->raw.bayersensor.pdafLinesFilter); } - lineDenoise->setValue (pp->raw.bayersensor.linenoise); - int d = int(pp->raw.bayersensor.linenoiseDirection)-1; + lineDenoise->setValue(pp->raw.bayersensor.linenoise); + int d = int(pp->raw.bayersensor.linenoiseDirection) - 1; + if (d == 4) { --d; } + lineDenoiseDirection->set_active(d); - greenEqThreshold->setValue (pp->raw.bayersensor.greenthresh); + greenEqThreshold->setValue(pp->raw.bayersensor.greenthresh); pdafLinesFilter->set_active(pp->raw.bayersensor.pdafLinesFilter); - enableListener (); + enableListener(); } -void BayerPreProcess::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) +void BayerPreProcess::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) { pp->raw.bayersensor.linenoise = lineDenoise->getIntValue(); int d = lineDenoiseDirection->get_active_row_number() + 1; + if (d == 4) { ++d; } + pp->raw.bayersensor.linenoiseDirection = RAWParams::BayerSensor::LineNoiseDirection(d); pp->raw.bayersensor.greenthresh = greenEqThreshold->getIntValue(); pp->raw.bayersensor.pdafLinesFilter = pdafLinesFilter->get_active(); if (pedited) { - pedited->raw.bayersensor.linenoise = lineDenoise->getEditedState (); - pedited->raw.bayersensor.greenEq = greenEqThreshold->getEditedState (); + pedited->raw.bayersensor.linenoise = lineDenoise->getEditedState(); + pedited->raw.bayersensor.greenEq = greenEqThreshold->getEditedState(); pedited->raw.bayersensor.linenoise = lineDenoiseDirection->get_active_row_number() != 3; pedited->raw.bayersensor.pdafLinesFilter = !pdafLinesFilter->get_inconsistent(); } } -void BayerPreProcess::adjusterChanged (Adjuster* a, double newval) +void BayerPreProcess::adjusterChanged(Adjuster* a, double newval) { if (listener) { Glib::ustring value = a->getTextValue(); if (a == greenEqThreshold) { - listener->panelChanged (EvPreProcessGEquilThresh, value ); + listener->panelChanged(EvPreProcessGEquilThresh, value); } else if (a == lineDenoise) { - listener->panelChanged (EvPreProcessLineDenoise, value ); + listener->panelChanged(EvPreProcessLineDenoise, value); } } } @@ -140,9 +145,10 @@ void BayerPreProcess::adjusterAutoToggled(Adjuster* a, bool newval) void BayerPreProcess::setBatchMode(bool batchMode) { - ToolPanel::setBatchMode (batchMode); - lineDenoise->showEditedCB (); - greenEqThreshold->showEditedCB (); + ToolPanel::setBatchMode(batchMode); + lineDenoise->showEditedCB(); + greenEqThreshold->showEditedCB(); + if (batchMode) { lineDenoiseDirection->append(M("GENERAL_UNCHANGED")); } @@ -150,26 +156,26 @@ void BayerPreProcess::setBatchMode(bool batchMode) void BayerPreProcess::setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited) { - lineDenoise->setDefault( defParams->raw.bayersensor.linenoise); - greenEqThreshold->setDefault (defParams->raw.bayersensor.greenthresh); + lineDenoise->setDefault(defParams->raw.bayersensor.linenoise); + greenEqThreshold->setDefault(defParams->raw.bayersensor.greenthresh); if (pedited) { - lineDenoise->setDefaultEditedState( pedited->raw.bayersensor.linenoise ? Edited : UnEdited); + lineDenoise->setDefaultEditedState(pedited->raw.bayersensor.linenoise ? Edited : UnEdited); greenEqThreshold->setDefaultEditedState(pedited->raw.bayersensor.greenEq ? Edited : UnEdited); } else { - lineDenoise->setDefaultEditedState( Irrelevant ); - greenEqThreshold->setDefaultEditedState(Irrelevant ); + lineDenoise->setDefaultEditedState(Irrelevant); + greenEqThreshold->setDefaultEditedState(Irrelevant); } } -void BayerPreProcess::setAdjusterBehavior (bool linedenoiseadd, bool greenequiladd) +void BayerPreProcess::setAdjusterBehavior(bool linedenoiseadd, bool greenequiladd) { lineDenoise->setAddMode(linedenoiseadd); greenEqThreshold->setAddMode(greenequiladd); } -void BayerPreProcess::trimValues (rtengine::procparams::ProcParams* pp) +void BayerPreProcess::trimValues(rtengine::procparams::ProcParams* pp) { lineDenoise->trimValue(pp->raw.bayersensor.linenoise); diff --git a/rtgui/bayerpreprocess.h b/rtgui/bayerpreprocess.h index 18bf35026..e06a46d31 100644 --- a/rtgui/bayerpreprocess.h +++ b/rtgui/bayerpreprocess.h @@ -41,17 +41,17 @@ public: BayerPreProcess (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void hotDeadPixelChanged(); void setAdjusterBehavior (bool linedenoiseadd, bool greenequiladd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void lineDenoiseDirectionChanged(); void pdafLinesFilterChanged(); }; diff --git a/rtgui/bayerprocess.h b/rtgui/bayerprocess.h index b0974e7a4..df0c39d00 100644 --- a/rtgui/bayerprocess.h +++ b/rtgui/bayerprocess.h @@ -70,24 +70,24 @@ protected: public: BayerProcess (); - ~BayerProcess (); + ~BayerProcess () override; - void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void setAdjusterBehavior(bool falsecoloradd, bool iteradd, bool dualdemozecontrastadd, bool pssigmaadd, bool pssmoothadd, bool pseperisoadd); - void trimValues(rtengine::procparams::ProcParams* pp); - void setBatchMode(bool batchMode); - void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void trimValues(rtengine::procparams::ProcParams* pp) override; + void setBatchMode(bool batchMode) override; + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void methodChanged(); void imageNumberChanged(); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); - void checkBoxToggled(CheckBox* c, CheckValue newval); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; + void checkBoxToggled(CheckBox* c, CheckValue newval) override; void pixelShiftMotionMethodChanged(); void pixelShiftDemosaicMethodChanged(); - void autoContrastChanged (double autoContrast); - void FrameCountChanged(int n, int frameNum); + void autoContrastChanged (double autoContrast) override; + void FrameCountChanged(int n, int frameNum) override; }; #endif diff --git a/rtgui/bayerrawexposure.h b/rtgui/bayerrawexposure.h index a368eea3f..08d415838 100644 --- a/rtgui/bayerrawexposure.h +++ b/rtgui/bayerrawexposure.h @@ -38,15 +38,15 @@ public: BayerRAWExposure (); - 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 adjusterAutoToggled (Adjuster* a, bool newval); - void checkBoxToggled (CheckBox* c, CheckValue newval); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; + void checkBoxToggled (CheckBox* c, CheckValue newval) override; void setAdjusterBehavior (bool pexblackadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/blackwhite.h b/rtgui/blackwhite.h index 43e4b5384..45f1e5b7b 100644 --- a/rtgui/blackwhite.h +++ b/rtgui/blackwhite.h @@ -39,32 +39,32 @@ class BlackWhite final : public: BlackWhite (); - ~BlackWhite (); + ~BlackWhite () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void autoOpenCurve (); - void setEditProvider (EditDataProvider *provider); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void autoOpenCurve () override; + void setEditProvider (EditDataProvider *provider) override; void autoch_toggled (); void neutral_pressed (); void updateRGBLabel (); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool bwadd, bool bwgadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void enabledcc_toggled (); - void enabledChanged (); + void enabledChanged () override; void methodChanged (); void filterChanged (); void settingChanged (); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); - void BWChanged (double redbw, double greenbw, double bluebw); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; + void BWChanged (double redbw, double greenbw, double bluebw) override; bool BWComputed_ (); - void curveChanged (CurveEditor* ce); + void curveChanged (CurveEditor* ce) override; void curveMode1Changed (); bool curveMode1Changed_ (); void curveMode1Changed2 (); diff --git a/rtgui/cacheimagedata.h b/rtgui/cacheimagedata.h index d204f1ff9..f146f2ce0 100644 --- a/rtgui/cacheimagedata.h +++ b/rtgui/cacheimagedata.h @@ -87,30 +87,30 @@ public: // FramesMetaData interface //------------------------------------------------------------------------- - unsigned int getRootCount () const { return -1; } - unsigned int getFrameCount () const { return frameCount; } - bool hasExif (unsigned int frame = 0) const { return false; } - rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const { return nullptr; } - rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const { return nullptr; } - rtexif::TagDirectory* getBestExifData (rtengine::ImageSource *imgSource, rtengine::procparams::RAWParams *rawParams) const { return nullptr; } - bool hasIPTC (unsigned int frame = 0) const { return false; } - rtengine::procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const { return rtengine::procparams::IPTCPairs(); } - tm getDateTime (unsigned int frame = 0) const { return tm{}; } - time_t getDateTimeAsTS(unsigned int frame = 0) const { return time_t(-1); } - int getISOSpeed (unsigned int frame = 0) const { return iso; } - double getFNumber (unsigned int frame = 0) const { return fnumber; } - double getFocalLen (unsigned int frame = 0) const { return focalLen; } - double getFocalLen35mm (unsigned int frame = 0) const { return focalLen35mm; } - float getFocusDist (unsigned int frame = 0) const { return focusDist; } - double getShutterSpeed (unsigned int frame = 0) const { return shutter; } - double getExpComp (unsigned int frame = 0) const { return atof(expcomp.c_str()); } - std::string getMake (unsigned int frame = 0) const { return camMake; } - std::string getModel (unsigned int frame = 0) const { return camModel; } - std::string getLens (unsigned int frame = 0) const { return lens; } - std::string getOrientation (unsigned int frame = 0) const { return ""; } // TODO - bool getPixelShift () const { return isPixelShift; } - bool getHDR (unsigned int frame = 0) const { return isHDR; } - std::string getImageType (unsigned int frame) const { return isPixelShift ? "PS" : isHDR ? "HDR" : "STD"; } - rtengine::IIOSampleFormat getSampleFormat (unsigned int frame = 0) const { return sampleFormat; } + unsigned int getRootCount () const override { return -1; } + unsigned int getFrameCount () const override { return frameCount; } + bool hasExif (unsigned int frame = 0) const override { return false; } + rtexif::TagDirectory* getRootExifData (unsigned int root = 0) const override { return nullptr; } + rtexif::TagDirectory* getFrameExifData (unsigned int frame = 0) const override { return nullptr; } + rtexif::TagDirectory* getBestExifData (rtengine::ImageSource *imgSource, rtengine::procparams::RAWParams *rawParams) const override { return nullptr; } + bool hasIPTC (unsigned int frame = 0) const override { return false; } + rtengine::procparams::IPTCPairs getIPTCData (unsigned int frame = 0) const override { return rtengine::procparams::IPTCPairs(); } + tm getDateTime (unsigned int frame = 0) const override { return tm{}; } + time_t getDateTimeAsTS(unsigned int frame = 0) const override { return time_t(-1); } + int getISOSpeed (unsigned int frame = 0) const override { return iso; } + double getFNumber (unsigned int frame = 0) const override { return fnumber; } + double getFocalLen (unsigned int frame = 0) const override { return focalLen; } + double getFocalLen35mm (unsigned int frame = 0) const override { return focalLen35mm; } + float getFocusDist (unsigned int frame = 0) const override { return focusDist; } + double getShutterSpeed (unsigned int frame = 0) const override { return shutter; } + double getExpComp (unsigned int frame = 0) const override { return atof(expcomp.c_str()); } + std::string getMake (unsigned int frame = 0) const override { return camMake; } + std::string getModel (unsigned int frame = 0) const override { return camModel; } + std::string getLens (unsigned int frame = 0) const override { return lens; } + std::string getOrientation (unsigned int frame = 0) const override { return ""; } // TODO + bool getPixelShift () const override { return isPixelShift; } + bool getHDR (unsigned int frame = 0) const override { return isHDR; } + std::string getImageType (unsigned int frame) const override { return isPixelShift ? "PS" : isHDR ? "HDR" : "STD"; } + rtengine::IIOSampleFormat getSampleFormat (unsigned int frame = 0) const override { return sampleFormat; } }; #endif diff --git a/rtgui/cachemanager.cc b/rtgui/cachemanager.cc index 5b18d5d33..d86f6c41f 100644 --- a/rtgui/cachemanager.cc +++ b/rtgui/cachemanager.cc @@ -57,7 +57,9 @@ void CacheManager::init () auto error = g_mkdir_with_parents (baseDir.c_str(), cacheDirMode); for (const auto& cacheDir : cacheDirs) { - error |= g_mkdir_with_parents (Glib::build_filename (baseDir, cacheDir).c_str(), cacheDirMode); + if (strncmp(cacheDir, "aehistograms", 12)) { // don't create aehistograms folder. + error |= g_mkdir_with_parents (Glib::build_filename (baseDir, cacheDir).c_str(), cacheDirMode); + } } if (error != 0 && options.rtSettings.verbose) { @@ -172,7 +174,7 @@ void CacheManager::deleteEntry (const Glib::ustring& fname) void CacheManager::clearFromCache (const Glib::ustring& fname, bool purge) const { - deleteFiles (fname, getMD5 (fname), purge, purge); + deleteFiles (fname, getMD5 (fname), true, purge); } void CacheManager::renameEntry (const std::string& oldfilename, const std::string& oldmd5, const std::string& newfilename) @@ -183,9 +185,6 @@ void CacheManager::renameEntry (const std::string& oldfilename, const std::strin auto error = g_rename (getCacheFileName ("profiles", oldfilename, paramFileExtension, oldmd5).c_str (), getCacheFileName ("profiles", newfilename, paramFileExtension, newmd5).c_str ()); error |= g_rename (getCacheFileName ("images", oldfilename, ".rtti", oldmd5).c_str (), getCacheFileName ("images", newfilename, ".rtti", newmd5).c_str ()); - error |= g_rename (getCacheFileName ("images", oldfilename, ".cust16", oldmd5).c_str (), getCacheFileName ("images", newfilename, ".cust16", newmd5).c_str ()); - error |= g_rename (getCacheFileName ("images", oldfilename, ".cust", oldmd5).c_str (), getCacheFileName ("images", newfilename, ".cust", newmd5).c_str ()); - error |= g_rename (getCacheFileName ("images", oldfilename, ".jpg", oldmd5).c_str (), getCacheFileName ("images", newfilename, ".jpg", newmd5).c_str ()); error |= g_rename (getCacheFileName ("aehistograms", oldfilename, "", oldmd5).c_str (), getCacheFileName ("aehistograms", newfilename, "", newmd5).c_str ()); error |= g_rename (getCacheFileName ("embprofiles", oldfilename, ".icc", oldmd5).c_str (), getCacheFileName ("embprofiles", newfilename, ".icc", newmd5).c_str ()); error |= g_rename (getCacheFileName ("data", oldfilename, ".txt", oldmd5).c_str (), getCacheFileName ("data", newfilename, ".txt", newmd5).c_str ()); @@ -238,6 +237,7 @@ void CacheManager::clearImages () const { MyMutex::MyLock lock (mutex); + deleteDir ("data"); deleteDir ("images"); deleteDir ("aehistograms"); deleteDir ("embprofiles"); @@ -275,9 +275,6 @@ void CacheManager::deleteFiles (const Glib::ustring& fname, const std::string& m } auto error = g_remove (getCacheFileName ("images", fname, ".rtti", md5).c_str ()); - error |= g_remove (getCacheFileName ("images", fname, ".cust16", md5).c_str ()); - error |= g_remove (getCacheFileName ("images", fname, ".cust", md5).c_str ()); - error |= g_remove (getCacheFileName ("images", fname, ".jpg", md5).c_str ()); error |= g_remove (getCacheFileName ("aehistograms", fname, "", md5).c_str ()); error |= g_remove (getCacheFileName ("embprofiles", fname, ".icc", md5).c_str ()); @@ -342,6 +339,25 @@ Glib::ustring CacheManager::getCacheFileName (const Glib::ustring& subDir, void CacheManager::applyCacheSizeLimitation () const { + // first count files without fetching file name and timestamp. + std::size_t numFiles = 0; + try { + + const auto dirName = Glib::build_filename (baseDir, "data"); + const auto dir = Gio::File::create_for_path (dirName); + + auto enumerator = dir->enumerate_children (""); + + while (numFiles <= options.maxCacheEntries && enumerator->next_file ()) { + ++numFiles; + } + + } catch (Glib::Exception&) {} + + if (numFiles <= options.maxCacheEntries) { + return; + } + using FNameMTime = std::pair; std::vector files; diff --git a/rtgui/cacorrection.h b/rtgui/cacorrection.h index 2de510968..198037060 100644 --- a/rtgui/cacorrection.h +++ b/rtgui/cacorrection.h @@ -34,15 +34,15 @@ public: CACorrection (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void setAdjusterBehavior (bool badd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/chmixer.h b/rtgui/chmixer.h index 0ec28da3d..7e372cbc2 100644 --- a/rtgui/chmixer.h +++ b/rtgui/chmixer.h @@ -36,16 +36,16 @@ public: ChMixer (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void setAdjusterBehavior (bool rgbadd); - void trimValues (rtengine::procparams::ProcParams* pp); - void enabledChanged(); + void trimValues (rtengine::procparams::ProcParams* pp) override; + void enabledChanged() override; }; #endif diff --git a/rtgui/coarsepanel.h b/rtgui/coarsepanel.h index 7ac1bccc5..bd4668eea 100644 --- a/rtgui/coarsepanel.h +++ b/rtgui/coarsepanel.h @@ -37,8 +37,8 @@ public: CoarsePanel (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void initBatchBehavior (); void rotateLeft (); diff --git a/rtgui/colorappearance.cc b/rtgui/colorappearance.cc index 489b793da..bbf5ed5d7 100644 --- a/rtgui/colorappearance.cc +++ b/rtgui/colorappearance.cc @@ -230,8 +230,7 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" } degree->throwOnButtonRelease(); - degree->addAutoButton (M ("TP_COLORAPP_DEGREE_AUTO_TOOLTIP")); - degree->set_tooltip_markup (M ("TP_COLORAPP_DEGREE_TOOLTIP")); + degree->addAutoButton (M ("TP_COLORAPP_CAT02ADAPTATION_TOOLTIP")); p1VBox->pack_start (*degree); // surrsource = Gtk::manage (new Gtk::CheckButton (M ("TP_COLORAPP_SURSOURCE"))); @@ -284,27 +283,25 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" p1VBox->pack_start (*greensc); -// adapscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ADAPTSCENE"), 0.01, 16384., 0.001, 2000.)); // EV -7 ==> EV 17 - adapscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ADAPTSCENE"), MINLA0, MAXLA0, 0.01, 1997.4, NULL, NULL, &wbSlider2la, &wbla2Slider)); +// adapscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ABSOLUTELUMINANCE"), 0.01, 16384., 0.001, 2000.)); // EV -7 ==> EV 17 + adapscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ABSOLUTELUMINANCE"), MINLA0, MAXLA0, 0.01, 1997.4, NULL, NULL, &wbSlider2la, &wbla2Slider)); if (adapscen->delay < options.adjusterMaxDelay) { adapscen->delay = options.adjusterMaxDelay; } adapscen->throwOnButtonRelease(); - adapscen->addAutoButton (M ("TP_COLORAPP_ADAP_AUTO_TOOLTIP")); - adapscen->set_tooltip_markup (M ("TP_COLORAPP_ADAPTSCENE_TOOLTIP")); + adapscen->addAutoButton(); p1VBox->pack_start (*adapscen); - ybscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_YBSCENE"), 1, 90, 1, 18)); + ybscen = Gtk::manage (new Adjuster (M ("TP_COLORAPP_MEANLUMINANCE"), 1, 90, 1, 18)); if (ybscen->delay < options.adjusterMaxDelay) { ybscen->delay = options.adjusterMaxDelay; } ybscen->throwOnButtonRelease(); - ybscen->addAutoButton (M ("TP_COLORAPP_ADAP_AUTO_TOOLTIP")); - ybscen->set_tooltip_markup (M ("TP_COLORAPP_YBSCENE_TOOLTIP")); + ybscen->addAutoButton(); p1VBox->pack_start (*ybscen); p1Frame->add (*p1VBox); @@ -579,15 +576,15 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" 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)); +// adaplum = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ABSOLUTELUMINANCE"), 0.1, 16384., 0.1, 16.)); + adaplum = Gtk::manage (new Adjuster (M ("TP_COLORAPP_ABSOLUTELUMINANCE"), MINLA0, MAXLA0, 0.01, 16, NULL, NULL, &wbSlider2la, &wbla2Slider)); if (adaplum->delay < options.adjusterMaxDelay) { adaplum->delay = options.adjusterMaxDelay; } adaplum->throwOnButtonRelease(); - adaplum->set_tooltip_markup (M ("TP_COLORAPP_ADAPTVIEWING_TOOLTIP")); + adaplum->set_tooltip_markup (M ("TP_COLORAPP_VIEWING_ABSOLUTELUMINANCE_TOOLTIP")); p3VBox->pack_start (*adaplum); // Gtk::Image* iblueredL = Gtk::manage (new RTImage ("circle-blue-small.png")); @@ -600,8 +597,7 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" } degreeout->throwOnButtonRelease(); - degreeout->addAutoButton (M ("TP_COLORAPP_DEGREE_AUTO_TOOLTIP")); - degreeout->set_tooltip_markup (M ("TP_COLORAPP_DEGREE_TOOLTIP")); + degreeout->addAutoButton (M ("TP_COLORAPP_CAT02ADAPTATION_TOOLTIP")); p3VBox->pack_start (*degreeout); /* Gtk::Image* itempL1 = Gtk::manage (new RTImage ("circle-blue-small.png")); @@ -611,7 +607,7 @@ ColorAppearance::ColorAppearance () : FoldableToolPanel (this, "colorappearance" */ 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)); - ybout = Gtk::manage (new Adjuster (M ("TP_COLORAPP_YB"), 5, 90, 1, 18)); + ybout = Gtk::manage (new Adjuster (M ("TP_COLORAPP_MEANLUMINANCE"), 5, 90, 1, 18)); tempout->set_tooltip_markup (M ("TP_COLORAPP_TEMP_TOOLTIP")); tempout->show(); diff --git a/rtgui/colorappearance.h b/rtgui/colorappearance.h index 98947b5a5..3f95d9f74 100644 --- a/rtgui/colorappearance.h +++ b/rtgui/colorappearance.h @@ -38,16 +38,16 @@ class ColorAppearance final : { public: ColorAppearance (); - ~ColorAppearance (); + ~ColorAppearance () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; // void adjusterAdapToggled (Adjuster* a, bool newval); - void enabledChanged (); + void enabledChanged () override; void surroundChanged (); void surrsrcChanged (); void wbmodelChanged (); @@ -58,11 +58,14 @@ public: void datacie_toggled (); void tonecie_toggled (); // void sharpcie_toggled (); - void autoCamChanged (double ccam, double ccamout); - void adapCamChanged (double cadap); - void ybCamChanged (int yb); + void autoCamChanged (double ccam, double ccamout) override; + bool autoCamComputed_ (); + void adapCamChanged (double cadap) override; + bool adapCamComputed_ (); + void ybCamChanged (int yb) override; + bool ybCamComputed_ (); - void curveChanged (CurveEditor* ce); + void curveChanged (CurveEditor* ce) override; void curveMode1Changed (); bool curveMode1Changed_ (); void curveMode2Changed (); @@ -73,10 +76,10 @@ public: void expandCurve (bool isExpanded); bool isCurveExpanded (); - void autoOpenCurve (); + void autoOpenCurve () override; void setAdjusterBehavior (bool degreeadd, bool adapscenadd, bool adaplumadd, bool badpixsladd, bool jlightadd, bool chromaadd, bool contrastadd, bool rstprotectionadd, bool qbrightadd, bool qcontrastadd, bool schromaadd, bool mchromaadd, bool colorhadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void updateCurveBackgroundHistogram( const LUTu& histToneCurve, const LUTu& histLCurve, @@ -89,7 +92,7 @@ public: const LUTu& histLuma, const LUTu& histLRETI ); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller *caller); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller *caller) override; void updateToolState (std::vector &tpOpen); void writeOptions (std::vector &tpOpen); @@ -157,6 +160,8 @@ private: DiagonalCurveEditor* shape; DiagonalCurveEditor* shape2; DiagonalCurveEditor* shape3; + double nextCcam, nextCcamout, nextCadap; + int nextYbscn; bool lastAutoDegree; bool lastAutoAdapscen; bool lastAutoDegreeout; diff --git a/rtgui/colortoning.cc b/rtgui/colortoning.cc index f1e11a945..edff26ba5 100644 --- a/rtgui/colortoning.cc +++ b/rtgui/colortoning.cc @@ -11,8 +11,27 @@ using namespace rtengine; using namespace rtengine::procparams; +namespace { + +constexpr int ID_LABREGION_HUE = 5; + +inline bool hasMask(const std::vector &dflt, const std::vector &mask) +{ + return !(mask.empty() || mask[0] == FCT_Linear || mask == dflt); +} + + +inline float round_ab(float v) +{ + return int(v * 1000) / 1000.f; +} + +} // namespace + + ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLORTONING_LABEL"), false, true) { + nextbw = 0; CurveListener::setMulti(true); //---------------method @@ -24,6 +43,7 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR method->append (M("TP_COLORTONING_SPLITCOCO")); method->append (M("TP_COLORTONING_SPLITLR")); method->append(M("TP_COLORTONING_LABGRID")); + method->append(M("TP_COLORTONING_LABREGIONS")); method->set_active (0); method->set_tooltip_text (M("TP_COLORTONING_METHOD_TOOLTIP")); @@ -319,20 +339,156 @@ ColorToning::ColorToning () : FoldableToolPanel(this, "colortoning", M("TP_COLOR // LAB grid auto m = ProcEventMapper::getInstance(); EvColorToningLabGridValue = m->newEvent(RGBCURVE, "HISTORY_MSG_COLORTONING_LABGRID_VALUE"); - labgridBox = Gtk::manage(new Gtk::HBox()); - labgrid = Gtk::manage(new LabGrid(EvColorToningLabGridValue)); - labgridBox->pack_start(*labgrid, true, true); - labgridReset = Gtk::manage(new Gtk::Button ()); - 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")); - labgridReset->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); - labgridReset->set_can_focus(false); - labgridReset->set_size_request(-1, 20); - labgridReset->signal_button_release_event().connect(sigc::mem_fun(*this, &ColorToning::resetPressed)); - labgridBox->pack_start(*labgridReset, false, false); - pack_start(*labgridBox, Gtk::PACK_EXPAND_WIDGET, 4); + labgrid = Gtk::manage(new LabGrid(EvColorToningLabGridValue, M("TP_COLORTONING_LABGRID_VALUES"))); + pack_start(*labgrid, Gtk::PACK_EXPAND_WIDGET, 4); + //------------------------------------------------------------------------ + + //------------------------------------------------------------------------ + // LAB regions + + const auto add_button = + [&](Gtk::Button *btn, Gtk::Box *box) -> void + { + setExpandAlignProperties(btn, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_START); + btn->set_relief(Gtk::RELIEF_NONE); + btn->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); + btn->set_can_focus(false); + btn->set_size_request(-1, 20); + box->pack_start(*btn, false, false); + }; + + EvLabRegionList = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_LIST"); + EvLabRegionAB = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_AB"); + EvLabRegionSaturation = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_SATURATION"); + EvLabRegionLightness = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESS"); + EvLabRegionSlope = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_SLOPE"); + EvLabRegionOffset = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_OFFSET"); + EvLabRegionPower = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_POWER"); + EvLabRegionHueMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_HUEMASK"); + EvLabRegionChromaticityMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_CHROMATICITYMASK"); + EvLabRegionLightnessMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_LIGHTNESSMASK"); + EvLabRegionMaskBlur = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_MASKBLUR"); + EvLabRegionShowMask = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_SHOWMASK"); + EvLabRegionChannel = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_COLORTONING_LABREGION_CHANNEL"); + labRegionBox = Gtk::manage(new Gtk::VBox()); + + labRegionList = Gtk::manage(new Gtk::ListViewText(3)); + labRegionList->set_size_request(-1, 150); + labRegionList->set_can_focus(false); + labRegionList->set_column_title(0, "#"); + labRegionList->set_column_title(1, M("TP_COLORTONING_LABREGION_LIST_TITLE")); + labRegionList->set_column_title(2, M("TP_COLORTONING_LABREGION_MASK")); + labRegionList->set_activate_on_single_click(true); + labRegionSelectionConn = labRegionList->get_selection()->signal_changed().connect(sigc::mem_fun(this, &ColorToning::onLabRegionSelectionChanged)); + Gtk::HBox *hb = Gtk::manage(new Gtk::HBox()); + hb->pack_start(*labRegionList, Gtk::PACK_EXPAND_WIDGET); + Gtk::VBox *vb = Gtk::manage(new Gtk::VBox()); + labRegionAdd = Gtk::manage(new Gtk::Button()); + labRegionAdd->add(*Gtk::manage(new RTImage("add-small.png"))); + labRegionAdd->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionAddPressed)); + add_button(labRegionAdd, vb); + labRegionRemove = Gtk::manage(new Gtk::Button()); + labRegionRemove->add(*Gtk::manage(new RTImage("remove-small.png"))); + labRegionRemove->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionRemovePressed)); + add_button(labRegionRemove, vb); + labRegionUp = Gtk::manage(new Gtk::Button()); + labRegionUp->add(*Gtk::manage(new RTImage("arrow-up-small.png"))); + labRegionUp->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionUpPressed)); + add_button(labRegionUp, vb); + labRegionDown = Gtk::manage(new Gtk::Button()); + labRegionDown->add(*Gtk::manage(new RTImage("arrow-down-small.png"))); + labRegionDown->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionDownPressed)); + add_button(labRegionDown, vb); + labRegionCopy = Gtk::manage(new Gtk::Button()); + labRegionCopy->add(*Gtk::manage(new RTImage("arrow-right-small.png"))); + labRegionCopy->signal_clicked().connect(sigc::mem_fun(*this, &ColorToning::labRegionCopyPressed)); + add_button(labRegionCopy, vb); + hb->pack_start(*vb, Gtk::PACK_SHRINK); + labRegionBox->pack_start(*hb, true, true); + + labRegionAB = Gtk::manage(new LabGrid(EvLabRegionAB, M("TP_COLORTONING_LABREGION_ABVALUES"), false)); + labRegionBox->pack_start(*labRegionAB); + + labRegionSaturation = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_SATURATION"), -100, 100, 1, 0)); + labRegionSaturation->setAdjusterListener(this); + labRegionBox->pack_start(*labRegionSaturation); + + labRegionSlope = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_SLOPE"), 0.1, 4.0, 0.001, 1)); + labRegionSlope->setLogScale(4, 0.1); + labRegionSlope->setAdjusterListener(this); + labRegionBox->pack_start(*labRegionSlope); + labRegionOffset = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_OFFSET"), -0.1, 0.1, 0.001, 0)); + labRegionOffset->setAdjusterListener(this); + labRegionBox->pack_start(*labRegionOffset); + labRegionPower = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_POWER"), 0.1, 4.0, 0.001, 1)); + labRegionPower->setAdjusterListener(this); + labRegionPower->setLogScale(4, 0.1); + labRegionBox->pack_start(*labRegionPower); + + hb = Gtk::manage(new Gtk::HBox()); + labRegionChannel = Gtk::manage(new MyComboBoxText()); + labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_ALL")); + labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_R")); + labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_G")); + labRegionChannel->append(M("TP_COLORTONING_LABREGION_CHANNEL_B")); + labRegionChannel->set_active(0); + labRegionChannel->signal_changed().connect(sigc::mem_fun(*this, &ColorToning::labRegionChannelChanged)); + + hb->pack_start(*Gtk::manage(new Gtk::Label(M("TP_COLORTONING_LABREGION_CHANNEL") + ": ")), Gtk::PACK_SHRINK); + hb->pack_start(*labRegionChannel); + labRegionBox->pack_start(*hb); + + labRegionBox->pack_start(*Gtk::manage(new Gtk::HSeparator())); + + CurveEditorGroup *labRegionEditorG = Gtk::manage(new CurveEditorGroup(options.lastColorToningCurvesDir, M("TP_COLORTONING_LABREGION_MASK"))); + labRegionEditorG->setCurveListener(this); + + labRegionHueMask = static_cast(labRegionEditorG->addCurve(CT_Flat, M("TP_COLORTONING_LABREGION_HUEMASK"), nullptr, false, true)); + labRegionHueMask->setIdentityValue(0.); + labRegionHueMask->setResetCurve(FlatCurveType(default_params.labregions[0].hueMask[0]), default_params.labregions[0].hueMask); + labRegionHueMask->setCurveColorProvider(this, ID_LABREGION_HUE); + labRegionHueMask->setBottomBarColorProvider(this, ID_LABREGION_HUE); + labRegionHueMask->setEditID(EUID_Lab_HHCurve, BT_SINGLEPLANE_FLOAT); + + labRegionChromaticityMask = static_cast(labRegionEditorG->addCurve(CT_Flat, M("TP_COLORTONING_LABREGION_CHROMATICITYMASK"), nullptr, false, false)); + labRegionChromaticityMask->setIdentityValue(0.); + labRegionChromaticityMask->setResetCurve(FlatCurveType(default_params.labregions[0].chromaticityMask[0]), default_params.labregions[0].chromaticityMask); + labRegionChromaticityMask->setBottomBarColorProvider(this, ID_LABREGION_HUE+1); + labRegionChromaticityMask->setEditID(EUID_Lab_CCurve, BT_SINGLEPLANE_FLOAT); + + labRegionLightnessMask = static_cast(labRegionEditorG->addCurve(CT_Flat, M("TP_COLORTONING_LABREGION_LIGHTNESSMASK"), nullptr, false, false)); + labRegionLightnessMask->setIdentityValue(0.); + labRegionLightnessMask->setResetCurve(FlatCurveType(default_params.labregions[0].lightnessMask[0]), default_params.labregions[0].lightnessMask); + labRegionLightnessMask->setBottomBarBgGradient(milestones); + labRegionLightnessMask->setEditID(EUID_Lab_LCurve, BT_SINGLEPLANE_FLOAT); + + labRegionData = default_params.labregions; + labRegionSelected = 0; + { + auto n = labRegionList->append("1"); + labRegionList->set_text(n, 1, "a=0 b=0 s=0 l=0"); + } + + labRegionEditorG->curveListComplete(); + labRegionEditorG->show(); + labRegionBox->pack_start(*labRegionEditorG, Gtk::PACK_SHRINK, 2); + + labRegionMaskBlur = Gtk::manage(new Adjuster(M("TP_COLORTONING_LABREGION_MASKBLUR"), -10, 100, 0.1, 0)); + labRegionMaskBlur->setLogScale(10, 0); + labRegionMaskBlur->setAdjusterListener(this); + labRegionBox->pack_start(*labRegionMaskBlur); + + labRegionShowMask = Gtk::manage(new Gtk::CheckButton(M("TP_COLORTONING_LABREGION_SHOWMASK"))); + labRegionShowMask->signal_toggled().connect(sigc::mem_fun(*this, &ColorToning::labRegionShowMaskChanged)); + labRegionBox->pack_start(*labRegionShowMask, Gtk::PACK_SHRINK, 4); + + pack_start(*labRegionBox, Gtk::PACK_EXPAND_WIDGET, 4); + + labRegionSaturation->delay = options.adjusterMaxDelay; + labRegionSlope->delay = options.adjusterMaxDelay; + labRegionOffset->delay = options.adjusterMaxDelay; + labRegionPower->delay = options.adjusterMaxDelay; + labRegionMaskBlur->delay = options.adjusterMaxDelay; //------------------------------------------------------------------------ show_all(); @@ -357,6 +513,7 @@ void ColorToning::setListener(ToolPanelListener *tpl) { ToolPanel::setListener(tpl); labgrid->setListener(tpl); + labRegionAB->setListener(tpl); } /* @@ -408,6 +565,20 @@ void ColorToning::read (const ProcParams* pp, const ParamsEdited* pedited) clshape->setCurve (pp->colorToning.clcurve); cl2shape->setCurve (pp->colorToning.cl2curve); + labRegionData = pp->colorToning.labregions; + if (labRegionData.empty()) { + labRegionData.emplace_back(rtengine::ColorToningParams::LabCorrectionRegion()); + } + if (pp->colorToning.labregionsShowMask >= 0) { + labRegionSelected = pp->colorToning.labregionsShowMask; + labRegionShowMask->set_active(true); + } else { + labRegionSelected = 0; + labRegionShowMask->set_active(false); + } + labRegionPopulateList(); + labRegionShow(labRegionSelected); + if (pedited) { redlow->setEditedState (pedited->colorToning.redlow ? Edited : UnEdited); greenlow->setEditedState (pedited->colorToning.greenlow ? Edited : UnEdited); @@ -432,6 +603,9 @@ void ColorToning::read (const ProcParams* pp, const ParamsEdited* pedited) lumamode->set_inconsistent (!pedited->colorToning.lumamode); labgrid->setEdited(pedited->colorToning.labgridALow || pedited->colorToning.labgridBLow || pedited->colorToning.labgridAHigh || pedited->colorToning.labgridBHigh); + + labRegionAB->setEdited(pedited->colorToning.labregions); + labRegionShowMask->set_inconsistent(!pedited->colorToning.labregionsShowMask); } redlow->setValue (pp->colorToning.redlow); @@ -463,10 +637,10 @@ void ColorToning::read (const ProcParams* pp, const ParamsEdited* pedited) lastLumamode = pp->colorToning.lumamode; - labgrid->setParams(pp->colorToning.labgridALow, pp->colorToning.labgridBLow, pp->colorToning.labgridAHigh, pp->colorToning.labgridBHigh, false); + labgrid->setParams(pp->colorToning.labgridALow / ColorToningParams::LABGRID_CORR_MAX, pp->colorToning.labgridBLow / ColorToningParams::LABGRID_CORR_MAX, pp->colorToning.labgridAHigh / ColorToningParams::LABGRID_CORR_MAX, pp->colorToning.labgridBHigh / ColorToningParams::LABGRID_CORR_MAX, false); if (pedited && !pedited->colorToning.method) { - method->set_active (5); + method->set_active (7); } else if (pp->colorToning.method == "Lab") { method->set_active (0); } else if (pp->colorToning.method == "RGBSliders") { @@ -479,6 +653,8 @@ void ColorToning::read (const ProcParams* pp, const ParamsEdited* pedited) method->set_active (4); } else if (pp->colorToning.method == "LabGrid") { method->set_active(5); + } else if (pp->colorToning.method == "LabRegions") { + method->set_active(6); } methodChanged(); @@ -532,6 +708,19 @@ void ColorToning::write (ProcParams* pp, ParamsEdited* pedited) pp->colorToning.strength = strength->getIntValue(); labgrid->getParams(pp->colorToning.labgridALow, pp->colorToning.labgridBLow, pp->colorToning.labgridAHigh, pp->colorToning.labgridBHigh); + pp->colorToning.labgridALow *= ColorToningParams::LABGRID_CORR_MAX; + pp->colorToning.labgridAHigh *= ColorToningParams::LABGRID_CORR_MAX; + pp->colorToning.labgridBLow *= ColorToningParams::LABGRID_CORR_MAX; + pp->colorToning.labgridBHigh *= ColorToningParams::LABGRID_CORR_MAX; + + labRegionGet(labRegionSelected); + labRegionShow(labRegionSelected, true); + pp->colorToning.labregions = labRegionData; + if (labRegionShowMask->get_active()) { + pp->colorToning.labregionsShowMask = labRegionSelected; + } else { + pp->colorToning.labregionsShowMask = -1; + } if (pedited) { pedited->colorToning.redlow = redlow->getEditedState (); @@ -559,6 +748,9 @@ void ColorToning::write (ProcParams* pp, ParamsEdited* pedited) pedited->colorToning.shadowsColSat = shadowsColSat->getEditedState (); pedited->colorToning.labgridALow = pedited->colorToning.labgridBLow = pedited->colorToning.labgridAHigh = pedited->colorToning.labgridBHigh = labgrid->getEdited(); + + pedited->colorToning.labregions = labRegionAB->getEdited(); + pedited->colorToning.labregionsShowMask = !labRegionShowMask->get_inconsistent(); } if (method->get_active_row_number() == 0) { @@ -573,6 +765,8 @@ void ColorToning::write (ProcParams* pp, ParamsEdited* pedited) pp->colorToning.method = "Splitlr"; } else if (method->get_active_row_number() == 5) { pp->colorToning.method = "LabGrid"; + } else if (method->get_active_row_number() == 6) { + pp->colorToning.method = "LabRegions"; } if (twocolor->get_active_row_number() == 0) { @@ -629,7 +823,8 @@ void ColorToning::setDefaults (const ProcParams* defParams, const ParamsEdited* hlColSat->setDefault (defParams->colorToning.hlColSat); shadowsColSat->setDefault (defParams->colorToning.shadowsColSat); strength->setDefault (defParams->colorToning.strength); - labgrid->setDefault(defParams->colorToning.labgridALow, defParams->colorToning.labgridBLow, defParams->colorToning.labgridAHigh, defParams->colorToning.labgridBHigh); + labgrid->setDefault(defParams->colorToning.labgridALow / ColorToningParams::LABGRID_CORR_MAX, defParams->colorToning.labgridBLow / ColorToningParams::LABGRID_CORR_MAX, defParams->colorToning.labgridAHigh / ColorToningParams::LABGRID_CORR_MAX, defParams->colorToning.labgridBHigh / ColorToningParams::LABGRID_CORR_MAX); + if (pedited) { redlow->setDefaultEditedState (pedited->colorToning.redlow ? Edited : UnEdited); @@ -648,6 +843,8 @@ void ColorToning::setDefaults (const ProcParams* defParams, const ParamsEdited* shadowsColSat->setDefaultEditedState (pedited->colorToning.shadowsColSat ? Edited : UnEdited); strength->setDefaultEditedState (pedited->colorToning.strength ? Edited : UnEdited); labgrid->setEdited((pedited->colorToning.labgridALow || pedited->colorToning.labgridBLow || pedited->colorToning.labgridAHigh || pedited->colorToning.labgridBHigh) ? Edited : UnEdited); + + labRegionAB->setEdited(pedited->colorToning.labregions ? Edited : UnEdited); } else { redlow->setDefaultEditedState (Irrelevant); greenlow->setDefaultEditedState (Irrelevant); @@ -665,6 +862,7 @@ void ColorToning::setDefaults (const ProcParams* defParams, const ParamsEdited* shadowsColSat->setDefaultEditedState (Irrelevant); strength->setDefaultEditedState (Irrelevant); labgrid->setEdited(Edited); + labRegionAB->setEdited(Edited); } } @@ -687,26 +885,23 @@ void ColorToning::setAdjusterBehavior (bool splitAdd, bool satThresholdAdd, bool } -void ColorToning::autoColorTonChanged(int satthres, int satprot) +void ColorToning::autoColorTonChanged(int bwct, int satthres, int satprot) { - struct Data { - ColorToning *self; - int satthres; - int satprot; - }; + nextbw = bwct; + nextsatth = satthres; + nextsatpr = satprot; const auto func = - [](Data* data) -> bool + [](ColorToning* self) -> bool { - ColorToning* const self = data->self; self->disableListener(); - self->satProtectionThreshold->setValue(data->satthres); - self->saturatedOpacity->setValue(data->satprot); + self->saturatedOpacity->setValue(self->nextsatpr); + self->satProtectionThreshold->setValue(self->nextsatth); self->enableListener(); return false; }; - idle_register.add(func, new Data{this, satthres, satprot}, true); + idle_register.add(func, this, false); } void ColorToning::adjusterChanged (ThresholdAdjuster* a, double newBottom, double newTop) @@ -798,7 +993,8 @@ void ColorToning::methodChanged () { if (!batchMode) { - labgridBox->hide(); + labgrid->hide(); + labRegionBox->hide(); if (method->get_active_row_number() == 0) { // Lab colorSep->show(); @@ -947,7 +1143,7 @@ void ColorToning::methodChanged () chanMixerBox->hide(); neutrHBox->hide(); lumamode->show(); - } else if (method->get_active_row_number() == 5) { // Lab Grid + } else if (method->get_active_row_number() == 5 || method->get_active_row_number() == 6) { // Lab Grid or Lab Regions colorSep->hide(); colorCurveEditorG->hide(); twocolor->hide(); @@ -966,7 +1162,11 @@ void ColorToning::methodChanged () neutrHBox->hide(); lumamode->hide(); - labgridBox->show(); + if (method->get_active_row_number() == 5) { + labgrid->show(); + } else { + labRegionBox->show(); + } } } @@ -1023,6 +1223,17 @@ void ColorToning::colorForValue (double valX, double valY, enum ColorCaller::Ele } } else if (callerId == 4) { // color curve vertical and horizontal crosshair Color::hsv2rgb01(float(valY), 1.0f, 0.5f, R, G, B); + } else if (callerId == ID_LABREGION_HUE) { + // TODO + float x = valX - 1.f/6.f; + if (x < 0.f) { + x += 1.f; + } + x = log2lin(x, 3.f); + // float x = valX; + Color::hsv2rgb01(x, 0.5f, 0.5f, R, G, B); + } else if (callerId == ID_LABREGION_HUE+1) { + Color::hsv2rgb01(float(valY), float(valX), 0.5f, R, G, B); } caller->ccRed = double(R); @@ -1042,6 +1253,12 @@ void ColorToning::curveChanged (CurveEditor* ce) listener->panelChanged (EvColorToningCLCurve, M("HISTORY_CUSTOMCURVE")); } else if (ce == cl2shape) { listener->panelChanged (EvColorToningLLCurve, M("HISTORY_CUSTOMCURVE")); + } else if (ce == labRegionHueMask) { + listener->panelChanged(EvLabRegionHueMask, M("HISTORY_CUSTOMCURVE")); + } else if (ce == labRegionChromaticityMask) { + listener->panelChanged(EvLabRegionChromaticityMask, M("HISTORY_CUSTOMCURVE")); + } else if (ce == labRegionLightnessMask) { + listener->panelChanged(EvLabRegionLightnessMask, M("HISTORY_CUSTOMCURVE")); } } } @@ -1143,6 +1360,16 @@ void ColorToning::adjusterChanged(Adjuster* a, double newval) listener->panelChanged (EvColorToningSatProtection, a->getTextValue()); } else if (a == strength) { listener->panelChanged (EvColorToningStrength, a->getTextValue()); + } else if (a == labRegionSaturation) { + listener->panelChanged(EvLabRegionSaturation, a->getTextValue()); + } else if (a == labRegionSlope) { + listener->panelChanged(EvLabRegionSlope, a->getTextValue()); + } else if (a == labRegionOffset) { + listener->panelChanged(EvLabRegionOffset, a->getTextValue()); + } else if (a == labRegionPower) { + listener->panelChanged(EvLabRegionPower, a->getTextValue()); + } else if (a == labRegionMaskBlur) { + listener->panelChanged(EvLabRegionMaskBlur, a->getTextValue()); } } @@ -1175,8 +1402,233 @@ void ColorToning::setBatchMode (bool batchMode) } -bool ColorToning::resetPressed(GdkEventButton* event) + +void ColorToning::onLabRegionSelectionChanged() { - labgrid->reset(event->state & GDK_CONTROL_MASK); - return false; + auto s = labRegionList->get_selected(); + if (!s.empty()) { + // update the selected values + labRegionGet(labRegionSelected); + labRegionSelected = s[0]; + labRegionShow(labRegionSelected); + if (labRegionShowMask->get_active()) { + labRegionShowMaskChanged(); + } + } +} + + +void ColorToning::labRegionGet(int idx) +{ + if (idx < 0 || size_t(idx) >= labRegionData.size()) { + return; + } + + auto &r = labRegionData[idx]; + double la, lb; + labRegionAB->getParams(la, lb, r.a, r.b); + r.saturation = labRegionSaturation->getValue(); + r.slope = labRegionSlope->getValue(); + r.offset = labRegionOffset->getValue(); + r.power = labRegionPower->getValue(); + r.hueMask = labRegionHueMask->getCurve(); + r.chromaticityMask = labRegionChromaticityMask->getCurve(); + r.lightnessMask = labRegionLightnessMask->getCurve(); + r.maskBlur = labRegionMaskBlur->getValue(); + r.channel = labRegionChannel->get_active_row_number() - 1; +} + + +void ColorToning::labRegionAddPressed() +{ + labRegionSelected = labRegionData.size(); + labRegionData.push_back(rtengine::ColorToningParams::LabCorrectionRegion()); + labRegionPopulateList(); + labRegionShow(labRegionSelected); + + if (listener) { + listener->panelChanged(EvLabRegionList, M("HISTORY_CHANGED")); + } +} + + +void ColorToning::labRegionRemovePressed() +{ + if (labRegionList->size() > 1) { + labRegionData.erase(labRegionData.begin() + labRegionSelected); + labRegionSelected = LIM(labRegionSelected-1, 0, int(labRegionData.size()-1)); + labRegionPopulateList(); + labRegionShow(labRegionSelected); + + if (listener) { + listener->panelChanged(EvLabRegionList, M("HISTORY_CHANGED")); + } + } +} + + +void ColorToning::labRegionUpPressed() +{ + if (labRegionSelected > 0) { + auto r = labRegionData[labRegionSelected]; + labRegionData.erase(labRegionData.begin() + labRegionSelected); + --labRegionSelected; + labRegionData.insert(labRegionData.begin() + labRegionSelected, r); + labRegionPopulateList(); + + if (listener) { + listener->panelChanged(EvLabRegionList, M("HISTORY_CHANGED")); + } + } +} + + +void ColorToning::labRegionDownPressed() +{ + if (labRegionSelected < int(labRegionData.size()-1)) { + auto r = labRegionData[labRegionSelected]; + labRegionData.erase(labRegionData.begin() + labRegionSelected); + ++labRegionSelected; + labRegionData.insert(labRegionData.begin() + labRegionSelected, r); + labRegionPopulateList(); + + if (listener) { + listener->panelChanged(EvLabRegionList, M("HISTORY_CHANGED")); + } + } +} + + +void ColorToning::labRegionCopyPressed() +{ + if (labRegionSelected < int(labRegionData.size())) { + auto r = labRegionData[labRegionSelected]; + labRegionData.push_back(r); + labRegionSelected = labRegionData.size()-1; + labRegionPopulateList(); + + if (listener) { + listener->panelChanged(EvLabRegionList, M("HISTORY_CHANGED")); + } + } +} + + +void ColorToning::labRegionShowMaskChanged() +{ + if (listener) { + listener->panelChanged(EvLabRegionShowMask, labRegionShowMask->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + } +} + + +void ColorToning::labRegionPopulateList() +{ + ConnectionBlocker b(labRegionSelectionConn); + labRegionList->clear_items(); + rtengine::ColorToningParams::LabCorrectionRegion dflt; + + for (size_t i = 0; i < labRegionData.size(); ++i) { + auto &r = labRegionData[i]; + auto j = labRegionList->append(std::to_string(i+1)); + labRegionList->set_text(j, 1, Glib::ustring::compose("a=%1 b=%2 S=%3\ns=%4 o=%5 p=%6", round_ab(r.a), round_ab(r.b), r.saturation, r.slope, r.offset, r.power)); + const char *ch = ""; + switch (r.channel) { + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_R: + ch = "\n[Red]"; break; + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_G: + ch = "\n[Green]"; break; + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_B: + ch = "\n[Blue]"; break; + default: + ch = ""; + } + labRegionList->set_text( + j, 2, Glib::ustring::compose( + "%1%2%3%4%5", + hasMask(dflt.hueMask, r.hueMask) ? "H" : "", + hasMask(dflt.chromaticityMask, r.chromaticityMask) ? "C" : "", + hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : "", + r.maskBlur ? Glib::ustring::compose(" b=%1", r.maskBlur) : "", + ch)); + } +} + + +void ColorToning::labRegionShow(int idx, bool list_only) +{ + const bool disable = listener; + if (disable) { + disableListener(); + } + rtengine::ColorToningParams::LabCorrectionRegion dflt; + auto &r = labRegionData[idx]; + if (!list_only) { + labRegionAB->setParams(0, 0, r.a, r.b, false); + labRegionSaturation->setValue(r.saturation); + labRegionSlope->setValue(r.slope); + labRegionOffset->setValue(r.offset); + labRegionPower->setValue(r.power); + labRegionHueMask->setCurve(r.hueMask); + labRegionChromaticityMask->setCurve(r.chromaticityMask); + labRegionLightnessMask->setCurve(r.lightnessMask); + labRegionMaskBlur->setValue(r.maskBlur); + labRegionChannel->set_active(r.channel+1); + } + labRegionList->set_text(idx, 1, Glib::ustring::compose("a=%1 b=%2 S=%3\ns=%4 o=%5 p=%6", round_ab(r.a), round_ab(r.b), r.saturation, r.slope, r.offset, r.power)); + const char *ch = ""; + switch (r.channel) { + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_R: + ch = "\n[Red]"; break; + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_G: + ch = "\n[Green]"; break; + case rtengine::ColorToningParams::LabCorrectionRegion::CHAN_B: + ch = "\n[Blue]"; break; + default: + ch = ""; + } + labRegionList->set_text( + idx, 2, Glib::ustring::compose( + "%1%2%3%4%5", + hasMask(dflt.hueMask, r.hueMask) ? "H" : "", + hasMask(dflt.chromaticityMask, r.chromaticityMask) ? "C" : "", + hasMask(dflt.lightnessMask, r.lightnessMask) ? "L" : "", + r.maskBlur ? Glib::ustring::compose(" b=%1", r.maskBlur) : "", ch)); + Gtk::TreePath pth; + pth.push_back(idx); + labRegionList->get_selection()->select(pth); + if (disable) { + enableListener(); + } +} + + +void ColorToning::labRegionChannelChanged() +{ + if (listener) { + listener->panelChanged(EvLabRegionChannel, labRegionChannel->get_active_text()); + } +} + + +void ColorToning::setEditProvider(EditDataProvider *provider) +{ + labRegionHueMask->setEditProvider(provider); + labRegionChromaticityMask->setEditProvider(provider); + labRegionLightnessMask->setEditProvider(provider); +} + + +float ColorToning::blendPipetteValues(CurveEditor *ce, float chan1, float chan2, float chan3) +{ + if (ce == labRegionChromaticityMask && chan1 > 0.f) { + return lin2log(chan1, 10.f); + } else if (ce == labRegionHueMask && chan1 > 0.f) { + float x = chan1 + 1.f/6.f; + if (x > 1.f) { + x -= 1.f; + } + return lin2log(x, 3.f); + } + return CurveListener::blendPipetteValues(ce, chan1, chan2, chan3); } diff --git a/rtgui/colortoning.h b/rtgui/colortoning.h index 5ee5d5ec9..29a71b03b 100644 --- a/rtgui/colortoning.h +++ b/rtgui/colortoning.h @@ -25,40 +25,54 @@ class ColorToning final : { public: ColorToning (); - ~ColorToning(); - 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 trimValues (rtengine::procparams::ProcParams* pp); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + ~ColorToning() override; + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void trimValues (rtengine::procparams::ProcParams* pp) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool splitAdd, bool satThresholdAdd, bool satOpacityAdd, bool strprotectAdd, bool balanceAdd); void neutral_pressed (); //void neutralCurves_pressed (); - void autoColorTonChanged (int satthres, int satprot); + void autoColorTonChanged (int bwct, int satthres, int satprot) override; + bool CTComp_ (); - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; - void enabledChanged (); - void curveChanged (CurveEditor* ce); + void enabledChanged () override; + void curveChanged (CurveEditor* ce) override; void autosatChanged (); - void autoOpenCurve (); + void autoOpenCurve () override; void methodChanged (); void twocolorChanged (bool changedbymethod); void twoColorChangedByGui (); void lumamodeChanged (); - void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; - void setListener(ToolPanelListener *tpl); + void setListener(ToolPanelListener *tpl) override; + + void setEditProvider(EditDataProvider *provider) override; + float blendPipetteValues(CurveEditor *ce, float chan1, float chan2, float chan3) override; private: - bool resetPressed(GdkEventButton* event); + void onLabRegionSelectionChanged(); + void labRegionAddPressed(); + void labRegionRemovePressed(); + void labRegionUpPressed(); + void labRegionDownPressed(); + void labRegionCopyPressed(); + void labRegionShowMaskChanged(); + void labRegionChannelChanged(); + void labRegionPopulateList(); + void labRegionShow(int idx, bool list_only=false); + void labRegionGet(int idx); //Gtk::HSeparator* satLimiterSep; Gtk::HSeparator* colorSep; @@ -98,6 +112,9 @@ private: Gtk::Button* neutral; Gtk::HBox* neutrHBox; + int nextbw; + int nextsatth; + int nextsatpr; Glib::ustring nextbalcolor; Glib::ustring balcolor; sigc::connection neutralconn, twocconn; //, neutralcurvesconn; @@ -109,9 +126,43 @@ private: sigc::connection lumamodeConn; rtengine::ProcEvent EvColorToningLabGridValue; - Gtk::Button *labgridReset; LabGrid *labgrid; - Gtk::HBox *labgridBox; + + rtengine::ProcEvent EvLabRegionList; + rtengine::ProcEvent EvLabRegionAB; + rtengine::ProcEvent EvLabRegionSaturation; + rtengine::ProcEvent EvLabRegionLightness; + rtengine::ProcEvent EvLabRegionSlope; + rtengine::ProcEvent EvLabRegionOffset; + rtengine::ProcEvent EvLabRegionPower; + rtengine::ProcEvent EvLabRegionHueMask; + rtengine::ProcEvent EvLabRegionChromaticityMask; + rtengine::ProcEvent EvLabRegionLightnessMask; + rtengine::ProcEvent EvLabRegionMaskBlur; + rtengine::ProcEvent EvLabRegionShowMask; + rtengine::ProcEvent EvLabRegionChannel; + + Gtk::VBox *labRegionBox; + Gtk::ListViewText *labRegionList; + Gtk::Button *labRegionAdd; + Gtk::Button *labRegionRemove; + Gtk::Button *labRegionUp; + Gtk::Button *labRegionDown; + Gtk::Button *labRegionCopy; + LabGrid *labRegionAB; + Adjuster *labRegionSaturation; + Adjuster *labRegionSlope; + Adjuster *labRegionOffset; + Adjuster *labRegionPower; + MyComboBoxText *labRegionChannel; + FlatCurveEditor *labRegionHueMask; + FlatCurveEditor *labRegionChromaticityMask; + FlatCurveEditor *labRegionLightnessMask; + Adjuster *labRegionMaskBlur; + Gtk::CheckButton *labRegionShowMask; + std::vector labRegionData; + int labRegionSelected; + sigc::connection labRegionSelectionConn; IdleRegister idle_register; }; diff --git a/rtgui/coordinateadjuster.cc b/rtgui/coordinateadjuster.cc index 209ef0902..2525a07e5 100644 --- a/rtgui/coordinateadjuster.cc +++ b/rtgui/coordinateadjuster.cc @@ -127,7 +127,6 @@ void CoordinateAdjuster::createWidgets(const std::vector &axis) Gtk::Grid *box = Gtk::manage (new Gtk::Grid()); box->set_orientation(Gtk::ORIENTATION_HORIZONTAL); - box->set_column_spacing(3); setExpandAlignProperties(currAdjuster->label, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); setExpandAlignProperties(currAdjuster->spinButton, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); diff --git a/rtgui/coordinateadjuster.h b/rtgui/coordinateadjuster.h index 08f2fb479..33ea92bb2 100644 --- a/rtgui/coordinateadjuster.h +++ b/rtgui/coordinateadjuster.h @@ -136,7 +136,7 @@ public: /// For more complex adjuster CoordinateAdjuster(CoordinateProvider *provider, CurveEditorSubGroup *parent, const std::vector &axis); - virtual ~CoordinateAdjuster(); + ~CoordinateAdjuster() override; // Update the Axis list, e.g. on Curve change, but MUST have the same axis count void setAxis(const std::vector &axis); diff --git a/rtgui/crop.cc b/rtgui/crop.cc index edf76b6b1..52318fb79 100644 --- a/rtgui/crop.cc +++ b/rtgui/crop.cc @@ -50,12 +50,29 @@ bool notifyListenerUI(Crop* self) return false; } + +inline void get_custom_ratio(int w, int h, double &rw, double &rh) +{ + if (w < h) { + double r = double(h) / double(w); + int rr = r * 100 + 0.5; + rw = 1.0; + rh = rr / 100.0; + } else { + double r = double(w) / double(h); + int rr = r * 100 + 0.5; + rw = rr / 100.0; + rh = 1.0; + } } +} // namespace + Crop::Crop(): FoldableToolPanel(this, "crop", M("TP_CROP_LABEL"), false, true), crop_ratios{ {M("GENERAL_ASIMAGE"), 0.0}, + {M("GENERAL_CURRENT"), -1.0}, {"3:2", 3.0 / 2.0}, // L1.5, P0.666... {"4:3", 4.0 / 3.0}, // L1.333..., P0.75 {"16:9", 16.0 / 9.0}, // L1.777..., P0.5625 @@ -97,89 +114,141 @@ Crop::Crop(): maxw = 3000; maxh = 2000; - Gtk::HBox* hb1 = Gtk::manage (new Gtk::HBox ()); + methodgrid = Gtk::manage(new Gtk::Grid()); + methodgrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(methodgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - hb1->pack_start (*Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("TP_CROP_X") + ": "))); + Gtk::Label* xlab = Gtk::manage (new Gtk::Label (M("TP_CROP_X") + ":")); + setExpandAlignProperties(xlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + x = Gtk::manage (new MySpinButton ()); - x->set_size_request (60, -1); - hb1->pack_start (*x); + setExpandAlignProperties(x, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); + x->set_width_chars(6); - hb1->pack_start (*Gtk::manage (new Gtk::Label (Glib::ustring(" ") + M("TP_CROP_Y") + ": "))); + Gtk::Label* ylab = Gtk::manage (new Gtk::Label (M("TP_CROP_Y") + ":")); + setExpandAlignProperties(ylab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + y = Gtk::manage (new MySpinButton ()); - y->set_size_request (60, -1); - hb1->pack_start (*y); - - pack_start (*hb1, Gtk::PACK_SHRINK, 2); - - Gtk::HBox* hb2 = Gtk::manage (new Gtk::HBox ()); - - hb2->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_W") + ": "))); + setExpandAlignProperties(y, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); + y->set_width_chars(6); + + Gtk::Label* wlab = Gtk::manage (new Gtk::Label (M("TP_CROP_W") + ":")); + setExpandAlignProperties(wlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + w = Gtk::manage (new MySpinButton ()); - w->set_size_request (60, -1); - hb2->pack_start (*w); + setExpandAlignProperties(w, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); + w->set_width_chars(6); - hb2->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_H") + ": "))); + Gtk::Label* hlab = Gtk::manage (new Gtk::Label (M("TP_CROP_H") + ":")); + setExpandAlignProperties(hlab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + h = Gtk::manage (new MySpinButton ()); - h->set_size_request (60, -1); - hb2->pack_start (*h); - - pack_start (*hb2, Gtk::PACK_SHRINK, 4); + setExpandAlignProperties(h, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); + h->set_width_chars(6); selectCrop = Gtk::manage (new Gtk::Button (M("TP_CROP_SELECTCROP"))); + setExpandAlignProperties(selectCrop, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); selectCrop->get_style_context()->add_class("independent"); selectCrop->set_image (*Gtk::manage (new RTImage ("crop-small.png"))); - pack_start (*selectCrop, Gtk::PACK_SHRINK, 2); + resetCrop = Gtk::manage (new Gtk::Button (M("TP_CROP_RESETCROP"))); + setExpandAlignProperties(resetCrop, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + resetCrop->get_style_context()->add_class("independent"); + resetCrop->set_image (*Gtk::manage (new RTImage ("undo-small.png"))); + + methodgrid->attach (*xlab, 0, 0, 1, 1); + methodgrid->attach (*x, 1, 0, 1, 1); + methodgrid->attach (*ylab, 2, 0, 1, 1); + methodgrid->attach (*y, 3, 0, 1, 1); + methodgrid->attach (*wlab, 0, 1, 1, 1); + methodgrid->attach (*w, 1, 1, 1, 1); + methodgrid->attach (*hlab, 2, 1, 1, 1); + methodgrid->attach (*h, 3, 1, 1, 1); + methodgrid->attach (*selectCrop, 0, 2, 2, 1); + methodgrid->attach (*resetCrop, 2, 2, 2, 1); + pack_start (*methodgrid, Gtk::PACK_EXPAND_WIDGET, 0 ); + + Gtk::HSeparator* methodseparator = Gtk::manage (new Gtk::HSeparator()); + methodseparator->get_style_context()->add_class("grid-row-separator"); + pack_start (*methodseparator, Gtk::PACK_SHRINK, 0); - Gtk::HBox* hb3 = Gtk::manage (new Gtk::HBox ()); + Gtk::Grid* settingsgrid = Gtk::manage(new Gtk::Grid()); + settingsgrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(settingsgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); fixr = Gtk::manage (new Gtk::CheckButton (M("TP_CROP_FIXRATIO"))); + setExpandAlignProperties(fixr, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); fixr->set_active (1); - - hb3->pack_start (*fixr, Gtk::PACK_SHRINK, 4); + + Gtk::Grid* ratiogrid = Gtk::manage(new Gtk::Grid()); + ratiogrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(ratiogrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); ratio = Gtk::manage (new MyComboBoxText ()); - hb3->pack_start (*ratio, Gtk::PACK_EXPAND_WIDGET, 4); + setExpandAlignProperties(ratio, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); orientation = Gtk::manage (new MyComboBoxText ()); - hb3->pack_start (*orientation); + setExpandAlignProperties(orientation, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - pack_start (*hb3, Gtk::PACK_SHRINK, 4); - - Gtk::HBox* hb31 = Gtk::manage (new Gtk::HBox ()); - - hb31->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_GUIDETYPE"))), Gtk::PACK_SHRINK, 4); + customRatioLabel = Gtk::manage(new Gtk::Label("")); + customRatioLabel->hide(); + setExpandAlignProperties(customRatioLabel, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + + ratiogrid->set_column_homogeneous (true); + ratiogrid->attach (*ratio, 0, 0, 1, 1); + ratiogrid->attach (*customRatioLabel, 1, 0, 1, 1); + ratiogrid->attach (*orientation, 1, 0, 1, 1); + + Gtk::Label* guidelab = Gtk::manage (new Gtk::Label (M("TP_CROP_GUIDETYPE"))); + setExpandAlignProperties(guidelab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + guide = Gtk::manage (new MyComboBoxText ()); - hb31->pack_start (*guide); + setExpandAlignProperties(guide, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - pack_start (*hb31, Gtk::PACK_SHRINK, 4); + settingsgrid->attach (*fixr, 0, 0, 1, 1); + settingsgrid->attach (*ratiogrid, 1, 0, 1, 1); + settingsgrid->attach (*guidelab, 0, 1, 1, 1); + settingsgrid->attach (*guide, 1, 1, 1, 1); + pack_start (*settingsgrid, Gtk::PACK_SHRINK, 0 ); - // ppibox START - ppibox = Gtk::manage (new Gtk::VBox()); - ppibox->pack_start (*Gtk::manage (new Gtk::HSeparator()), Gtk::PACK_SHRINK, 2); - Gtk::HBox* hb4 = Gtk::manage (new Gtk::HBox ()); - hb4->pack_start (*Gtk::manage (new Gtk::Label (M("TP_CROP_PPI")))); + // ppigrid START + ppigrid = Gtk::manage(new Gtk::Grid()); + ppigrid->get_style_context()->add_class("grid-spacing"); + ppigrid->set_column_homogeneous (true); + setExpandAlignProperties(ppigrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + Gtk::HSeparator* ppiseparator = Gtk::manage (new Gtk::HSeparator()); + ppiseparator->get_style_context()->add_class("grid-row-separator"); + + Gtk::Grid* ppisubgrid = Gtk::manage(new Gtk::Grid()); + ppisubgrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(ppisubgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + Gtk::Label* ppilab = Gtk::manage (new Gtk::Label (M("TP_CROP_PPI"))); + setExpandAlignProperties(ppilab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + ppi = Gtk::manage (new MySpinButton ()); - ppi->set_size_request (60, -1); - hb4->pack_start (*ppi); - - sizebox = Gtk::manage (new Gtk::VBox()); + setExpandAlignProperties(ppi, true, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); + ppi->set_width_chars(6); + + ppisubgrid->attach (*ppilab, 0, 0, 1, 1); + ppisubgrid->attach (*ppi, 1, 0, 1, 1); sizecm = Gtk::manage (new Gtk::Label (M("GENERAL_NA") + " cm x " + M("GENERAL_NA") + " cm")); + setExpandAlignProperties(sizecm, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + sizein = Gtk::manage (new Gtk::Label (M("GENERAL_NA") + " in x " + M("GENERAL_NA") + " in")); - - sizebox->pack_start (*sizecm, Gtk::PACK_SHRINK, 4); - sizebox->pack_start (*Gtk::manage (new Gtk::HSeparator()), Gtk::PACK_SHRINK, 6); - sizebox->pack_start (*sizein, Gtk::PACK_SHRINK, 4); - sizebox->pack_start (*Gtk::manage (new Gtk::HSeparator()), Gtk::PACK_SHRINK, 6); - sizebox->pack_start (*hb4, Gtk::PACK_SHRINK, 2); - - ppibox->pack_start (*sizebox, Gtk::PACK_SHRINK, 1); - pack_start (*ppibox, Gtk::PACK_SHRINK, 0); + setExpandAlignProperties(sizein, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + + ppigrid->attach (*ppiseparator, 0, 0, 2, 1); + ppigrid->attach (*sizecm, 1, 1, 1, 1); + ppigrid->attach (*sizein, 1, 2, 1, 1); + ppigrid->attach (*ppisubgrid, 0, 1, 1, 2); + pack_start (*ppigrid, Gtk::PACK_SHRINK, 0 ); ppi->set_value (300); - // ppibox END + // ppigrid END // Populate the combobox for (const auto& crop_ratio : crop_ratios) { @@ -239,10 +308,25 @@ Crop::Crop(): oconn = orientation->signal_changed().connect( sigc::mem_fun(*this, &Crop::ratioChanged) ); gconn = guide->signal_changed().connect( sigc::mem_fun(*this, &Crop::notifyListener) ); selectCrop->signal_pressed().connect( sigc::mem_fun(*this, &Crop::selectPressed) ); + resetCrop->signal_pressed().connect( sigc::mem_fun(*this, &Crop::doresetCrop) ); ppi->signal_value_changed().connect( sigc::mem_fun(*this, &Crop::refreshSize) ); nx = ny = nw = nh = 0; lastRotationDeg = 0; + +//GTK318 +#if GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION < 20 + methodgrid->set_row_spacing(4); + methodgrid->set_column_spacing(4); + settingsgrid->set_row_spacing(4); + settingsgrid->set_column_spacing(4); + ppigrid->set_row_spacing(4); + ppigrid->set_column_spacing(4); + ppisubgrid->set_row_spacing(4); + ppisubgrid->set_column_spacing(4); +#endif +//GTK318 + show_all (); } @@ -292,13 +376,6 @@ void Crop::read (const ProcParams* pp, const ParamsEdited* pedited) setDimensions (pp->crop.x + pp->crop.w, pp->crop.y + pp->crop.h); } - if (pp->crop.ratio == "As Image") { - ratio->set_active(0); - } else { - ratio->set_active_text (pp->crop.ratio); - } - fixr->set_active (pp->crop.fixratio); - const bool flip_orientation = pp->crop.fixratio && crop_ratios[ratio->get_active_row_number()].value > 0 && crop_ratios[ratio->get_active_row_number()].value < 1.0; if (pp->crop.orientation == "Landscape") { @@ -339,6 +416,20 @@ void Crop::read (const ProcParams* pp, const ParamsEdited* pedited) nw = pp->crop.w; nh = pp->crop.h; + customRatioLabel->hide(); + orientation->show(); + if (pp->crop.ratio == "As Image") { + ratio->set_active(0); + } else if (pp->crop.ratio == "Current") { + ratio->set_active(1); + updateCurrentRatio(); + customRatioLabel->show(); + orientation->hide(); + } else { + ratio->set_active_text (pp->crop.ratio); + } + fixr->set_active (pp->crop.fixratio); + lastRotationDeg = pp->coarse.rotate; wDirty = false; @@ -391,7 +482,13 @@ void Crop::write (ProcParams* pp, ParamsEdited* pedited) pp->crop.w = nw; pp->crop.h = nh; pp->crop.fixratio = fixr->get_active (); - pp->crop.ratio = ratio->get_active_text (); + if (ratio->get_active_row_number() == 0) { + pp->crop.ratio = "As Image"; + } else if (ratio->get_active_row_number() == 1) { + pp->crop.ratio = "Current"; + } else { + pp->crop.ratio = ratio->get_active_text (); + } // for historical reasons we store orientation different if ratio is written as 2:3 instead of 3:2, but in GUI 'landscape' is always long side horizontal regardless of the ratio is written short or long side first. const bool flip_orientation = fixr->get_active() && crop_ratios[ratio->get_active_row_number()].value > 0 && crop_ratios[ratio->get_active_row_number()].value < 1.0; @@ -480,6 +577,23 @@ void Crop::selectPressed () } } +void Crop::doresetCrop () +{ + xDirty = true; + yDirty = true; + wDirty = true; + hDirty = true; + + int X = 0; + int Y = 0; + int W = maxw; + int H = maxh; + cropResized (X, Y, W, H); + idle_register.add(notifyListenerUI, this, false); + + refreshSpins(); +} + void Crop::notifyListener () { @@ -625,6 +739,15 @@ void Crop::ratioFixedChanged () // change to orientation or ration void Crop::ratioChanged () { + if (ratio->get_active_row_number() == 1) { + orientation->hide(); + updateCurrentRatio(); + customRatioLabel->show(); + } else { + orientation->show(); + customRatioLabel->hide(); + } + if (!fixr->get_active ()) { fixr->set_active(true); // will adjust ratio anyway } else { @@ -636,18 +759,51 @@ void Crop::ratioChanged () void Crop::adjustCropToRatio() { if (fixr->get_active() && !fixr->get_inconsistent()) { + int W1 = nw, W2 = nw; + int H1 = nh, H2 = nh; + int X1 = nx, X2 = nx; + int Y1 = ny, Y2 = ny; -// int W = w->get_value (); -// int H = h->get_value (); - int W = nw; - int H = nh; - int X = nx; - int Y = ny; + float r = getRatio(); - if (W >= H) { - cropWidth2Resized (X, Y, W, H); + H1 = round(W1 / r); + Y1 = ny + (nh - H1)/2.0; + if (Y1 < 0) { + Y1 = 0; + } + if (H1 > maxh) { + H1 = maxh; + W1 = round(H1 * r); + X1 = nx + (nw - W1)/2.0; + } + if (Y1+H1 > maxh) { + Y1 = maxh - H1; + } + + W2 = round(H2 * r); + X2 = nx + (nw - W2)/2.0; + if (X2 < 0) { + X2 = 0; + } + if (W2 > maxw) { + W2 = maxw; + H2 = round(W2 / r); + Y2 = ny + (nh - H2)/2.0; + } + if (X2+W2 > maxw) { + X2 = maxw - W2; + } + + if (W1 * H1 >= W2 * H2) { + nx = X1; + ny = Y1; + nw = W1; + nh = H1; } else { - cropHeight2Resized (X, Y, W, H); + nx = X2; + ny = Y2; + nw = W2; + nh = H2; } } @@ -771,6 +927,10 @@ bool Crop::refreshSpins (bool notify) wconn.block (false); hconn.block (false); + if (ratio->get_active_row_number() == 1 && !fixr->get_active()) { + updateCurrentRatio(); + } + refreshSize (); if (notify) { @@ -1292,5 +1452,16 @@ void Crop::setBatchMode (bool batchMode) ratio->append (M("GENERAL_UNCHANGED")); orientation->append (M("GENERAL_UNCHANGED")); guide->append (M("GENERAL_UNCHANGED")); - removeIfThere (this, ppibox); + removeIfThere (this, ppigrid); + removeIfThere (methodgrid, selectCrop); + removeIfThere (methodgrid, resetCrop); +} + + +void Crop::updateCurrentRatio() +{ + double rw, rh; + get_custom_ratio(w->get_value(), h->get_value(), rw, rh); + customRatioLabel->set_text(Glib::ustring::compose("%1:%2", rw, rh)); + crop_ratios[1].value = double(w->get_value())/double(h->get_value()); } diff --git a/rtgui/crop.h b/rtgui/crop.h index d3b5c7b6b..ed0661598 100644 --- a/rtgui/crop.h +++ b/rtgui/crop.h @@ -41,42 +41,43 @@ class Crop final : { public: Crop(); - ~Crop(); + ~Crop() override; - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void ratioChanged (); void ratioFixedChanged (); // The toggle button void refreshSize (); void selectPressed (); + void doresetCrop (); void setDimensions (int mw, int mh); - void enabledChanged (); + void enabledChanged () override; void positionChanged (); void widthChanged (); void heightChanged (); bool refreshSpins (bool notify = false); void notifyListener (); - void sizeChanged (int w, int h, int ow, int oh); + void sizeChanged (int w, int h, int ow, int oh) override; void trim (rtengine::procparams::ProcParams* pp, int ow, int oh); void readOptions (); void writeOptions (); - void cropMoved (int &x, int &y, int &w, int &h); - void cropWidth1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropWidth2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropHeight1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropHeight2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropTopLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropTopRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropBottomLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropBottomRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f); - void cropInit (int &x, int &y, int &w, int &h); - void cropResized (int &x, int &y, int& x2, int& y2); - void cropManipReady (); - bool inImageArea (int x, int y); - double getRatio () const; + void cropMoved (int &x, int &y, int &w, int &h) override; + void cropWidth1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropWidth2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropHeight1Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropHeight2Resized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropTopLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropTopRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropBottomLeftResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropBottomRightResized (int &x, int &y, int &w, int &h, float custom_ratio=0.f) override; + void cropInit (int &x, int &y, int &w, int &h) override; + void cropResized (int &x, int &y, int& x2, int& y2) override; + void cropManipReady () override; + bool inImageArea (int x, int y) override; + double getRatio () const override; void setCropPanelListener (CropPanelListener* cl) { @@ -94,15 +95,18 @@ private: double value; }; - const std::vector crop_ratios; + std::vector crop_ratios; void adjustCropToRatio(); + void updateCurrentRatio(); Gtk::CheckButton* fixr; MyComboBoxText* ratio; MyComboBoxText* orientation; MyComboBoxText* guide; + Gtk::Button* selectCrop; + Gtk::Button* resetCrop; CropPanelListener* clistener; int opt; MySpinButton* x; @@ -112,8 +116,10 @@ private: MySpinButton* ppi; Gtk::Label* sizecm; Gtk::Label* sizein; - Gtk::VBox* ppibox; - Gtk::VBox* sizebox; + Gtk::Grid* ppigrid; + Gtk::Grid* methodgrid; + Gtk::Label *customRatioLabel; + int maxw, maxh; double nx, ny; int nw, nh; diff --git a/rtgui/crophandler.h b/rtgui/crophandler.h index 14dd5062d..2690ca002 100644 --- a/rtgui/crophandler.h +++ b/rtgui/crophandler.h @@ -51,7 +51,7 @@ class CropHandler final : { public: CropHandler (); - ~CropHandler (); + ~CropHandler () override; void setDisplayHandler (CropDisplayHandler* l) { @@ -96,11 +96,11 @@ public: int cw, int ch, int skip - ); - void getWindow(int& cwx, int& cwy, int& cww, int& cwh, int& cskip); + ) override; + void getWindow(int& cwx, int& cwy, int& cww, int& cwh, int& cskip) override; // SizeListener interface - void sizeChanged (int w, int h, int ow, int oh); + void sizeChanged (int w, int h, int ow, int oh) override; void update (); diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 374b755ae..50d8f9543 100644 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -44,7 +44,7 @@ CropWindow::CropWindow (ImageArea* parent, bool isLowUpdatePriority_, bool isDet crop_custom_ratio(0.f) { initZoomSteps(); - + Glib::RefPtr context = parent->get_pango_context () ; Pango::FontDescription fontd = context->get_font_description (); fontd.set_weight (Pango::WEIGHT_BOLD); @@ -275,6 +275,10 @@ void CropWindow::scroll (int state, GdkScrollDirection direction, int x, int y, } else { delta = deltaY; } + if (delta == 0.0 && direction == GDK_SCROLL_SMOOTH) { + // sometimes this case happens. To avoid zooming into the wrong direction in this case, we just do nothing + return; + } bool isUp = direction == GDK_SCROLL_UP || (direction == GDK_SCROLL_SMOOTH && delta < 0.0); if ((state & GDK_CONTROL_MASK) && onArea(ColorPicker, x, y)) { // resizing a color picker @@ -351,7 +355,7 @@ void CropWindow::buttonPress (int button, int type, int bstate, int x, int y) if ((bstate & GDK_SHIFT_MASK) && cropHandler.cropParams.w > 0 && cropHandler.cropParams.h > 0) { crop_custom_ratio = float(cropHandler.cropParams.w) / float(cropHandler.cropParams.h); } - + if (iarea->getToolMode () == TMColorPicker) { if (hoveredPicker) { if ((bstate & GDK_CONTROL_MASK) && !(bstate & GDK_SHIFT_MASK)) { @@ -1385,7 +1389,7 @@ void CropWindow::expose (Cairo::RefPtr cr) } } bool useBgColor = (state == SNormal || state == SDragPicker || state == SDeletePicker || state == SEditDrag1); - + if (cropHandler.cropPixbuf) { imgW = cropHandler.cropPixbuf->get_width (); imgH = cropHandler.cropPixbuf->get_height (); @@ -1653,7 +1657,7 @@ void CropWindow::expose (Cairo::RefPtr cr) const int shThreshold = options.shadowThreshold; const float ShawdowFac = 64.f / (options.shadowThreshold + 1); const float HighlightFac = 64.f / (256 - options.highlightThreshold); - const bool showclippedAny = (!showR && !showG && !showB && !showL); // will show clipping if any (all) of RGB chanels is (shadow) clipped + const bool showclippedAny = (!showR && !showG && !showB && !showL); // will show clipping if any (all) of RGB channels is (shadow) clipped #ifdef _OPENMP #pragma omp parallel for schedule(dynamic,16) @@ -1960,7 +1964,7 @@ void CropWindow::zoomIn (bool toCursor, int cursorX, int cursorY) int x1 = cropHandler.cropParams.x + cropHandler.cropParams.w / 2; int y1 = cropHandler.cropParams.y + cropHandler.cropParams.h / 2; double cropd = sqrt(cropHandler.cropParams.h * cropHandler.cropParams.h + cropHandler.cropParams.w * cropHandler.cropParams.w) * zoomSteps[cropZoom].zoom; - double imd = sqrt(imgW * imgW + imgH + imgH); + double imd = sqrt(imgW * imgW + imgH * imgH); double d; // the more we can see of the crop, the more gravity towards crop center diff --git a/rtgui/cropwindow.h b/rtgui/cropwindow.h index 71729e66e..395b1b621 100644 --- a/rtgui/cropwindow.h +++ b/rtgui/cropwindow.h @@ -134,7 +134,7 @@ class CropWindow : public LWButtonListener, public CropDisplayHandler, public Ed public: CropHandler cropHandler; CropWindow (ImageArea* parent, bool isLowUpdatePriority_, bool isDetailWindow); - ~CropWindow (); + ~CropWindow () override; void setDecorated (bool decorated) { @@ -150,19 +150,19 @@ public: } void deleteColorPickers (); - void screenCoordToCropBuffer (int phyx, int phyy, int& cropx, int& cropy); - void screenCoordToImage (int phyx, int phyy, int& imgx, int& imgy); + void screenCoordToCropBuffer (int phyx, int phyy, int& cropx, int& cropy) override; + void screenCoordToImage (int phyx, int phyy, int& imgx, int& imgy) override; void screenCoordToCropCanvas (int phyx, int phyy, int& prevx, int& prevy); - void imageCoordToCropCanvas (int imgx, int imgy, int& phyx, int& phyy); - void imageCoordToScreen (int imgx, int imgy, int& phyx, int& phyy); - void imageCoordToCropBuffer (int imgx, int imgy, int& phyx, int& phyy); - void imageCoordToCropImage (int imgx, int imgy, int& phyx, int& phyy); - int scaleValueToImage (int value); - float scaleValueToImage (float value); - double scaleValueToImage (double value); - int scaleValueToCanvas (int value); - float scaleValueToCanvas (float value); - double scaleValueToCanvas (double value); + void imageCoordToCropCanvas (int imgx, int imgy, int& phyx, int& phyy) override; + void imageCoordToScreen (int imgx, int imgy, int& phyx, int& phyy) override; + void imageCoordToCropBuffer (int imgx, int imgy, int& phyx, int& phyy) override; + void imageCoordToCropImage (int imgx, int imgy, int& phyx, int& phyy) override; + int scaleValueToImage (int value) override; + float scaleValueToImage (float value) override; + double scaleValueToImage (double value) override; + int scaleValueToCanvas (int value) override; + float scaleValueToCanvas (float value) override; + double scaleValueToCanvas (double value) override; double getZoomFitVal (); void setPosition (int x, int y); void getPosition (int& x, int& y); @@ -197,8 +197,8 @@ public: void setEditSubscriber (EditSubscriber* newSubscriber); // interface lwbuttonlistener - void buttonPressed (LWButton* button, int actionCode, void* actionData); - void redrawNeeded (LWButton* button); + void buttonPressed (LWButton* button, int actionCode, void* actionData) override; + void redrawNeeded (LWButton* button) override; // crop handling void getCropRectangle (int& x, int& y, int& w, int& h); @@ -220,10 +220,10 @@ public: void delCropWindowListener (CropWindowListener* l); // crophandlerlistener interface - void cropImageUpdated (); - void cropWindowChanged (); - void initialImageArrived (); - void setDisplayPosition (int x, int y); + void cropImageUpdated () override; + void cropWindowChanged () override; + void initialImageArrived () override; + void setDisplayPosition (int x, int y) override; void remoteMove (int deltaX, int deltaY); void remoteMoveReady (); diff --git a/rtgui/curveeditor.cc b/rtgui/curveeditor.cc index 995dafa4e..3d1223bdf 100644 --- a/rtgui/curveeditor.cc +++ b/rtgui/curveeditor.cc @@ -25,6 +25,47 @@ #include +namespace { + +class CurveTypePopUpButton: public PopUpToggleButton { +public: + CurveTypePopUpButton(const Glib::ustring &label=""): + PopUpToggleButton(label) {} + + void setPosIndexMap(const std::vector &pmap) + { + posidxmap_ = pmap; + } + +protected: + int posToIndex(int pos) const override + { + if (pos < 0 || size_t(pos) >= posidxmap_.size()) { + return pos; + } + return posidxmap_[pos]; + } + + int indexToPos(int index) const override + { + if (index < 0 || size_t(index) >= posidxmap_.size()) { + return index; + } + for (int i = 0, n = int(posidxmap_.size()); i < n; ++i) { + if (posidxmap_[i] == index) { + return i; + } + } + return -1; + } + +private: + std::vector posidxmap_; +}; + +} // namespace + + bool CurveEditor::reset() { return subGroup->curveReset(this); @@ -33,12 +74,14 @@ bool CurveEditor::reset() DiagonalCurveEditor::DiagonalCurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup) : CurveEditor::CurveEditor(text, static_cast(ceGroup), ceSubGroup) { - // Order set in the same order than "enum DiagonalCurveType". Shouldn't change, for compatibility reason 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-catmullrom-small.png", M("CURVEEDITOR_CATMULLROM")); // 4 CatmullRom curveType->addEntry("curve-parametric-small.png", M("CURVEEDITOR_PARAMETRIC")); // 2 Parametric curveType->addEntry("curve-nurbs-small.png", M("CURVEEDITOR_NURBS")); // 3 NURBS + static_cast(curveType)->setPosIndexMap({ 0, 1, 4, 2, 3 }); curveType->setSelected(DCT_Linear); + curveType->show(); rangeLabels[0] = M("CURVEEDITOR_SHADOWS"); @@ -65,6 +108,9 @@ std::vector DiagonalCurveEditor::getCurve () case (DCT_NURBS): return curve = NURBSCurveEd; + case (DCT_CatumullRom): + return curve = catmullRomCurveEd; + default: // returning Linear or Unchanged curve.push_back((double)(selected)); @@ -96,6 +142,13 @@ void DiagonalCurveEditor::setResetCurve(DiagonalCurveType cType, const std::vect break; + case (DCT_CatumullRom): + if (resetCurve.size() && DiagonalCurveType(resetCurve.at(0)) == cType) { + catmullRomResetCurve = resetCurve; + } + + break; + default: break; } @@ -209,9 +262,9 @@ CurveEditor::CurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEd subGroup = ceSubGroup; if (group && text.size()) { - curveType = new PopUpToggleButton(text + ":"); + curveType = new CurveTypePopUpButton(text + ":"); } else { - curveType = new PopUpToggleButton(); + curveType = new CurveTypePopUpButton(); } curveType->set_tooltip_text(M("CURVEEDITOR_TYPE")); diff --git a/rtgui/curveeditor.h b/rtgui/curveeditor.h index afd4a1211..4cf49a377 100644 --- a/rtgui/curveeditor.h +++ b/rtgui/curveeditor.h @@ -88,7 +88,7 @@ protected: public: CurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup); - virtual ~CurveEditor (); + ~CurveEditor () override; void typeSelectionChanged (int n); void curveTypeToggled(); bool isUnChanged (); @@ -127,12 +127,12 @@ public: sigc::signal signal_curvepoint_click(); sigc::signal signal_curvepoint_release(); - void switchOffEditMode (); - bool mouseOver(const int modifierKey); - bool button1Pressed(const int modifierKey); - bool button1Released(); - bool drag1(const int modifierKey); - CursorShape getCursor(const int objectID); + void switchOffEditMode () override; + bool mouseOver(const int modifierKey) override; + bool button1Pressed(const int modifierKey) override; + bool button1Released() override; + bool drag1(const int modifierKey) override; + CursorShape getCursor(const int objectID) override; }; @@ -156,12 +156,14 @@ protected: std::vector paramResetCurve; std::vector NURBSCurveEd; std::vector NURBSResetCurve; + std::vector catmullRomCurveEd; + std::vector catmullRomResetCurve; Glib::ustring rangeLabels[4]; double rangeMilestones[3]; public: DiagonalCurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup); - std::vector getCurve (); + std::vector getCurve () override; void setRangeLabels(Glib::ustring r1, Glib::ustring r2, Glib::ustring r3, Glib::ustring r4); void getRangeLabels(Glib::ustring &r1, Glib::ustring &r2, Glib::ustring &r3, Glib::ustring &r4); void setRangeDefaultMilestones(double m1, double m2, double m3); @@ -191,15 +193,15 @@ protected: public: FlatCurveEditor (Glib::ustring text, CurveEditorGroup* ceGroup, CurveEditorSubGroup* ceSubGroup, bool isPeriodic = true); - virtual void setIdentityValue (const double iValue = 0.5) + void setIdentityValue (const double iValue = 0.5) override { identityValue = iValue; } - virtual double getIdentityValue () + double getIdentityValue () override { return identityValue; }; - std::vector getCurve (); + std::vector getCurve () override; // set the reset curve for a given curve type. This is optional; all curve type have a default reset curve void setResetCurve(FlatCurveType cType, const std::vector &resetCurve); diff --git a/rtgui/curveeditorgroup.h b/rtgui/curveeditorgroup.h index ffd522fae..80a1a95a4 100644 --- a/rtgui/curveeditorgroup.h +++ b/rtgui/curveeditorgroup.h @@ -71,7 +71,7 @@ public: */ CurveEditorGroup(Glib::ustring& curveDir, Glib::ustring groupLabel = ""); - ~CurveEditorGroup(); + ~CurveEditorGroup() override; void newLine(); void curveListComplete(); void setBatchMode (bool batchMode); @@ -97,8 +97,8 @@ protected: void hideCurrentCurve (); void updateGUI (CurveEditor* ce); void curveResetPressed (); - void curveChanged (); - float blendPipetteValues(CurveEditor* ce, float chan1, float chan2, float chan3); + void curveChanged () override; + float blendPipetteValues(CurveEditor* ce, float chan1, float chan2, float chan3) override; void setUnChanged (bool uc, CurveEditor* ce); }; diff --git a/rtgui/darkframe.h b/rtgui/darkframe.h index 0660c953d..c385a2153 100644 --- a/rtgui/darkframe.h +++ b/rtgui/darkframe.h @@ -55,8 +55,8 @@ public: DarkFrame (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void darkFrameChanged (); void darkFrameReset (); diff --git a/rtgui/defringe.h b/rtgui/defringe.h index 81b870675..1aa6cc303 100644 --- a/rtgui/defringe.h +++ b/rtgui/defringe.h @@ -41,18 +41,18 @@ protected: public: Defringe (); - ~Defringe (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void autoOpenCurve (); - void curveChanged (); + ~Defringe () override; + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void autoOpenCurve () override; + void curveChanged () override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; }; diff --git a/rtgui/dehaze.cc b/rtgui/dehaze.cc new file mode 100644 index 000000000..0f0892ac6 --- /dev/null +++ b/rtgui/dehaze.cc @@ -0,0 +1,151 @@ +/** -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2018 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ +#include "dehaze.h" +#include "eventmapper.h" +#include +#include + +using namespace rtengine; +using namespace rtengine::procparams; + +Dehaze::Dehaze(): FoldableToolPanel(this, "dehaze", M("TP_DEHAZE_LABEL"), false, true) +{ + auto m = ProcEventMapper::getInstance(); + EvDehazeEnabled = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_ENABLED"); + EvDehazeStrength = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_STRENGTH"); + EvDehazeShowDepthMap = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_SHOW_DEPTH_MAP"); + EvDehazeDepth = m->newEvent(HDR, "HISTORY_MSG_DEHAZE_DEPTH"); + + strength = Gtk::manage(new Adjuster(M("TP_DEHAZE_STRENGTH"), 0., 100., 1., 50.)); + strength->setAdjusterListener(this); + strength->show(); + + depth = Gtk::manage(new Adjuster(M("TP_DEHAZE_DEPTH"), 0., 100., 1., 25.)); + depth->setAdjusterListener(this); + depth->show(); + + showDepthMap = Gtk::manage(new Gtk::CheckButton(M("TP_DEHAZE_SHOW_DEPTH_MAP"))); + showDepthMap->signal_toggled().connect(sigc::mem_fun(*this, &Dehaze::showDepthMapChanged)); + showDepthMap->show(); + + pack_start(*strength); + pack_start(*depth); + pack_start(*showDepthMap); +} + + +void Dehaze::read(const ProcParams *pp, const ParamsEdited *pedited) +{ + disableListener(); + + if (pedited) { + strength->setEditedState(pedited->dehaze.strength ? Edited : UnEdited); + depth->setEditedState(pedited->dehaze.depth ? Edited : UnEdited); + set_inconsistent(multiImage && !pedited->dehaze.enabled); + showDepthMap->set_inconsistent(!pedited->dehaze.showDepthMap); + } + + setEnabled(pp->dehaze.enabled); + strength->setValue(pp->dehaze.strength); + depth->setValue(pp->dehaze.depth); + showDepthMap->set_active(pp->dehaze.showDepthMap); + + enableListener(); +} + + +void Dehaze::write(ProcParams *pp, ParamsEdited *pedited) +{ + pp->dehaze.strength = strength->getValue(); + pp->dehaze.depth = depth->getValue(); + pp->dehaze.enabled = getEnabled(); + pp->dehaze.showDepthMap = showDepthMap->get_active(); + + if (pedited) { + pedited->dehaze.strength = strength->getEditedState(); + pedited->dehaze.depth = depth->getEditedState(); + pedited->dehaze.enabled = !get_inconsistent(); + pedited->dehaze.showDepthMap = !showDepthMap->get_inconsistent(); + } +} + +void Dehaze::setDefaults(const ProcParams *defParams, const ParamsEdited *pedited) +{ + strength->setDefault(defParams->dehaze.strength); + depth->setDefault(defParams->dehaze.depth); + + if (pedited) { + strength->setDefaultEditedState(pedited->dehaze.strength ? Edited : UnEdited); + depth->setDefaultEditedState(pedited->dehaze.depth ? Edited : UnEdited); + } else { + strength->setDefaultEditedState(Irrelevant); + depth->setDefaultEditedState(Irrelevant); + } +} + + +void Dehaze::adjusterChanged(Adjuster* a, double newval) +{ + if (listener && getEnabled()) { + if (a == strength) { + listener->panelChanged(EvDehazeStrength, a->getTextValue()); + } else if (a == depth) { + listener->panelChanged(EvDehazeDepth, a->getTextValue()); + } + } +} + + +void Dehaze::enabledChanged () +{ + if (listener) { + if (get_inconsistent()) { + listener->panelChanged(EvDehazeEnabled, M("GENERAL_UNCHANGED")); + } else if (getEnabled()) { + listener->panelChanged(EvDehazeEnabled, M("GENERAL_ENABLED")); + } else { + listener->panelChanged(EvDehazeEnabled, M("GENERAL_DISABLED")); + } + } +} + + +void Dehaze::showDepthMapChanged() +{ + if (listener) { + listener->panelChanged(EvDehazeShowDepthMap, showDepthMap->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + } +} + + +void Dehaze::setBatchMode(bool batchMode) +{ + ToolPanel::setBatchMode(batchMode); + + strength->showEditedCB(); + depth->showEditedCB(); +} + + +void Dehaze::setAdjusterBehavior(bool strengthAdd) +{ + strength->setAddMode(strengthAdd); +} + diff --git a/rtgui/dehaze.h b/rtgui/dehaze.h new file mode 100644 index 000000000..322e0bf0c --- /dev/null +++ b/rtgui/dehaze.h @@ -0,0 +1,53 @@ +/** -*- C++ -*- + * + * This file is part of RawTherapee. + * + * Copyright (c) 2018 Alberto Griggio + * + * RawTherapee is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * RawTherapee is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with RawTherapee. If not, see . + */ +#pragma once + +#include +#include "adjuster.h" +#include "toolpanel.h" + +class Dehaze: public ToolParamBlock, public AdjusterListener, public FoldableToolPanel +{ +private: + Adjuster *strength; + Adjuster *depth; + Gtk::CheckButton *showDepthMap; + + rtengine::ProcEvent EvDehazeEnabled; + rtengine::ProcEvent EvDehazeStrength; + rtengine::ProcEvent EvDehazeDepth; + rtengine::ProcEvent EvDehazeShowDepthMap; + +public: + + Dehaze(); + + void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr) override; + void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr) override; + void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr) override; + void setBatchMode(bool batchMode) override; + + void adjusterChanged(Adjuster *a, double newval) override; + void enabledChanged() override; + void showDepthMapChanged(); + void setAdjusterBehavior(bool strengthAdd); + void adjusterAutoToggled(Adjuster* a, bool newval) override {} +}; + diff --git a/rtgui/diagonalcurveeditorsubgroup.cc b/rtgui/diagonalcurveeditorsubgroup.cc index a022c8650..e8b92062a 100644 --- a/rtgui/diagonalcurveeditorsubgroup.cc +++ b/rtgui/diagonalcurveeditorsubgroup.cc @@ -32,6 +32,8 @@ #include "diagonalcurveeditorsubgroup.h" #include "rtimage.h" +#include "../rtengine/curves.h" + DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, Glib::ustring& curveDir) : CurveEditorSubGroup(curveDir) { @@ -50,20 +52,34 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, // custom curve customCurveGrid = new Gtk::Grid (); customCurveGrid->set_orientation(Gtk::ORIENTATION_VERTICAL); - customCurveGrid->set_row_spacing(2); - customCurveGrid->set_column_spacing(2); + customCurveGrid->get_style_context()->add_class("curve-mainbox"); customCurve = Gtk::manage (new MyDiagonalCurve ()); customCurve->setType (DCT_Spline); + + Gtk::Grid* customCurveBox= Gtk::manage (new Gtk::Grid ()); + customCurveBox->get_style_context()->add_class("curve-curvebox"); + customCurveBox->add(*customCurve); Gtk::Grid* custombbox = Gtk::manage (new Gtk::Grid ()); // curvebboxpos 0=above, 1=right, 2=below, 3=left + custombbox->get_style_context()->add_class("curve-buttonbox"); - if (options.curvebboxpos == 0 || options.curvebboxpos == 2) { + if (options.curvebboxpos == 0) { custombbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); setExpandAlignProperties(custombbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - } else { + customCurveGrid->get_style_context()->add_class("top"); + } else if (options.curvebboxpos == 2) { + custombbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); + setExpandAlignProperties(custombbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + customCurveGrid->get_style_context()->add_class("bottom"); + } else if (options.curvebboxpos == 1) { custombbox->set_orientation(Gtk::ORIENTATION_VERTICAL); setExpandAlignProperties(custombbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + customCurveGrid->get_style_context()->add_class("right"); + } else if (options.curvebboxpos == 3){ + custombbox->set_orientation(Gtk::ORIENTATION_VERTICAL); + setExpandAlignProperties(custombbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + customCurveGrid->get_style_context()->add_class("left"); } editPointCustom = Gtk::manage (new Gtk::ToggleButton ()); @@ -88,22 +104,23 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, custombbox->attach_next_to(*saveCustom, sideEnd, 1, 1); customCoordAdjuster = Gtk::manage (new CoordinateAdjuster(customCurve, this)); + customCoordAdjuster->get_style_context()->add_class("curve-spinbuttonbox"); // Button box position: 0=above, 1=right, 2=below, 3=left - customCurveGrid->add(*customCurve); + customCurveGrid->add(*customCurveBox); customCurve->set_hexpand(true); if (options.curvebboxpos == 0) { - customCurveGrid->attach_next_to(*custombbox, *customCurve, Gtk::POS_TOP, 1, 1); - customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurve, Gtk::POS_BOTTOM, 1, 1); + customCurveGrid->attach_next_to(*custombbox, *customCurveBox, Gtk::POS_TOP, 1, 1); + customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurveBox, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 1) { - customCurveGrid->attach_next_to(*custombbox, *customCurve, Gtk::POS_RIGHT, 1, 1); - customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurve, Gtk::POS_BOTTOM, 2, 1); + customCurveGrid->attach_next_to(*custombbox, *customCurveBox, Gtk::POS_RIGHT, 1, 1); + customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurveBox, Gtk::POS_BOTTOM, 2, 1); } else if (options.curvebboxpos == 2) { - customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurve, Gtk::POS_BOTTOM, 1, 1); + customCurveGrid->attach_next_to(*customCoordAdjuster, *customCurveBox, Gtk::POS_BOTTOM, 1, 1); customCurveGrid->attach_next_to(*custombbox, *customCoordAdjuster, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 3) { - customCurveGrid->attach_next_to(*custombbox, *customCurve, Gtk::POS_LEFT, 1, 1); + customCurveGrid->attach_next_to(*custombbox, *customCurveBox, Gtk::POS_LEFT, 1, 1); customCurveGrid->attach_next_to(*customCoordAdjuster, *custombbox, Gtk::POS_BOTTOM, 2, 1); } @@ -126,21 +143,35 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, // NURBS curve NURBSCurveGrid = new Gtk::Grid (); - NURBSCurveGrid->set_row_spacing(4); - NURBSCurveGrid->set_column_spacing(4); NURBSCurveGrid->set_orientation(Gtk::ORIENTATION_VERTICAL); + NURBSCurveGrid->get_style_context()->add_class("curve-mainbox"); NURBSCurve = Gtk::manage (new MyDiagonalCurve ()); NURBSCurve->setType (DCT_NURBS); + + Gtk::Grid* NURBSCurveBox= Gtk::manage (new Gtk::Grid ()); + NURBSCurveBox->get_style_context()->add_class("curve-curvebox"); + NURBSCurveBox->add(*NURBSCurve); Gtk::Grid* NURBSbbox = Gtk::manage (new Gtk::Grid ()); + NURBSbbox->get_style_context()->add_class("curve-buttonbox"); - if (options.curvebboxpos == 0 || options.curvebboxpos == 2) { + if (options.curvebboxpos == 0) { NURBSbbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); setExpandAlignProperties(NURBSbbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - } else { + NURBSCurveGrid->get_style_context()->add_class("top"); + } else if (options.curvebboxpos == 2) { + NURBSbbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); + setExpandAlignProperties(NURBSbbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + NURBSCurveGrid->get_style_context()->add_class("bottom"); + } else if (options.curvebboxpos == 1) { NURBSbbox->set_orientation(Gtk::ORIENTATION_VERTICAL); setExpandAlignProperties(NURBSbbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + NURBSCurveGrid->get_style_context()->add_class("right"); + } else if (options.curvebboxpos == 3){ + NURBSbbox->set_orientation(Gtk::ORIENTATION_VERTICAL); + setExpandAlignProperties(NURBSbbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + NURBSCurveGrid->get_style_context()->add_class("left"); } editPointNURBS = Gtk::manage (new Gtk::ToggleButton ()); @@ -165,22 +196,23 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, NURBSbbox->attach_next_to(*saveNURBS, sideEnd, 1, 1); NURBSCoordAdjuster = Gtk::manage (new CoordinateAdjuster(NURBSCurve, this)); + NURBSCoordAdjuster->get_style_context()->add_class("curve-spinbuttonbox"); // Button box position: 0=above, 1=right, 2=below, 3=left - NURBSCurveGrid->add(*NURBSCurve); + NURBSCurveGrid->add(*NURBSCurveBox); NURBSCurve->set_hexpand(true); if (options.curvebboxpos == 0) { - NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurve, Gtk::POS_TOP, 1, 1); - NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurve, Gtk::POS_BOTTOM, 1, 1); + NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurveBox, Gtk::POS_TOP, 1, 1); + NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurveBox, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 1) { - NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurve, Gtk::POS_RIGHT, 1, 1); - NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurve, Gtk::POS_BOTTOM, 2, 1); + NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurveBox, Gtk::POS_RIGHT, 1, 1); + NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurveBox, Gtk::POS_BOTTOM, 2, 1); } else if (options.curvebboxpos == 2) { - NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurve, Gtk::POS_BOTTOM, 1, 1); + NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSCurveBox, Gtk::POS_BOTTOM, 1, 1); NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCoordAdjuster, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 3) { - NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurve, Gtk::POS_LEFT, 1, 1); + NURBSCurveGrid->attach_next_to(*NURBSbbox, *NURBSCurveBox, Gtk::POS_LEFT, 1, 1); NURBSCurveGrid->attach_next_to(*NURBSCoordAdjuster, *NURBSbbox, Gtk::POS_BOTTOM, 2, 1); } @@ -203,25 +235,40 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, // parametric curve paramCurveGrid = new Gtk::Grid (); - paramCurveGrid->set_row_spacing(4); - paramCurveGrid->set_column_spacing(4); paramCurveGrid->set_orientation(Gtk::ORIENTATION_VERTICAL); + paramCurveGrid->get_style_context()->add_class("curve-mainbox"); paramCurve = Gtk::manage (new MyDiagonalCurve ()); paramCurve->setType (DCT_Parametric); + + Gtk::Grid* paramCurveBox= Gtk::manage (new Gtk::Grid ()); + paramCurveBox->get_style_context()->add_class("curve-curvebox"); + paramCurveBox->add(*paramCurve); Gtk::Grid* parambbox = Gtk::manage (new Gtk::Grid ()); + parambbox->get_style_context()->add_class("curve-buttonbox"); - if (options.curvebboxpos == 0 || options.curvebboxpos == 2) { + if (options.curvebboxpos == 0) { parambbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); setExpandAlignProperties(parambbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - } else { + paramCurveGrid->get_style_context()->add_class("top"); + } else if (options.curvebboxpos == 2) { + parambbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); + setExpandAlignProperties(parambbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + paramCurveGrid->get_style_context()->add_class("bottom"); + } else if (options.curvebboxpos == 1) { parambbox->set_orientation(Gtk::ORIENTATION_VERTICAL); setExpandAlignProperties(parambbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + paramCurveGrid->get_style_context()->add_class("right"); + } else if (options.curvebboxpos == 3){ + parambbox->set_orientation(Gtk::ORIENTATION_VERTICAL); + setExpandAlignProperties(parambbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + paramCurveGrid->get_style_context()->add_class("left"); } shcSelector = Gtk::manage (new SHCSelector ()); - shcSelector->set_name("CurveSHCSelector"); // To handle the 4px gap between the SHCSelector and the curve through CSS + shcSelector->set_name("CurveSHCSelector"); + paramCurveBox->attach_next_to(*shcSelector, *paramCurve, Gtk::POS_BOTTOM, 1, 1); editParam = Gtk::manage (new Gtk::ToggleButton()); initButton(*editParam, Glib::ustring("crosshair-node-curve.png"), Gtk::ALIGN_START, false, "EDIT_PIPETTE_TOOLTIP"); @@ -270,8 +317,7 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, // paramCurveSliderBox needed to set vspacing(4) between curve+shc and sliders without vspacing between each slider Gtk::Grid* paramCurveSliderBox = Gtk::manage (new Gtk::Grid()); paramCurveSliderBox->set_orientation(Gtk::ORIENTATION_VERTICAL); - paramCurveSliderBox->set_column_spacing(2); - paramCurveSliderBox->set_row_spacing(2); + paramCurveSliderBox->get_style_context()->add_class("curve-sliderbox"); paramCurveSliderBox->attach_next_to(*evhighlights, Gtk::POS_TOP, 1, 1); paramCurveSliderBox->attach_next_to(*evlights, Gtk::POS_TOP, 1, 1); @@ -281,24 +327,20 @@ DiagonalCurveEditorSubGroup::DiagonalCurveEditorSubGroup (CurveEditorGroup* prt, paramCurveGrid->show_all (); // Button box position: 0=above, 1=right, 2=below, 3=left - paramCurveGrid->add(*paramCurve); + paramCurveGrid->add(*paramCurveBox); paramCurve->set_hexpand(true); if (options.curvebboxpos == 0) { - paramCurveGrid->attach_next_to(*parambbox, *paramCurve, Gtk::POS_TOP, 1, 1); - paramCurveGrid->attach_next_to(*shcSelector, *paramCurve, Gtk::POS_BOTTOM, 1, 1); - paramCurveGrid->attach_next_to(*paramCurveSliderBox, *shcSelector, Gtk::POS_BOTTOM, 1, 1); + paramCurveGrid->attach_next_to(*parambbox, *paramCurveBox, Gtk::POS_TOP, 1, 1); + paramCurveGrid->attach_next_to(*paramCurveSliderBox, *paramCurveBox, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 1) { - paramCurveGrid->attach_next_to(*shcSelector, *paramCurve, Gtk::POS_BOTTOM, 1, 1); - paramCurveGrid->attach_next_to(*parambbox, *paramCurve, Gtk::POS_RIGHT, 1, 2); - paramCurveGrid->attach_next_to(*paramCurveSliderBox, *shcSelector, Gtk::POS_BOTTOM, 2, 1); + paramCurveGrid->attach_next_to(*parambbox, *paramCurveBox, Gtk::POS_RIGHT, 1, 1); + paramCurveGrid->attach_next_to(*paramCurveSliderBox, *paramCurveBox, Gtk::POS_BOTTOM, 2, 1); } else if (options.curvebboxpos == 2) { - paramCurveGrid->attach_next_to(*shcSelector, *paramCurve, Gtk::POS_BOTTOM, 1, 1); - paramCurveGrid->attach_next_to(*parambbox, *shcSelector, Gtk::POS_BOTTOM, 1, 1); + paramCurveGrid->attach_next_to(*parambbox, *paramCurveBox, Gtk::POS_BOTTOM, 1, 1); paramCurveGrid->attach_next_to(*paramCurveSliderBox, *parambbox, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 3) { - paramCurveGrid->attach_next_to(*shcSelector, *paramCurve, Gtk::POS_BOTTOM, 1, 1); - paramCurveGrid->attach_next_to(*parambbox, *paramCurve, Gtk::POS_LEFT, 1, 2); + paramCurveGrid->attach_next_to(*parambbox, *paramCurveBox, Gtk::POS_LEFT, 1, 1); paramCurveGrid->attach_next_to(*paramCurveSliderBox, *parambbox, Gtk::POS_BOTTOM, 2, 1); } @@ -351,6 +393,7 @@ DiagonalCurveEditor* DiagonalCurveEditorSubGroup::addCurve(Glib::ustring curveLa storeCurveValues(newCE, getCurveFromGUI(DCT_Spline)); storeCurveValues(newCE, getCurveFromGUI(DCT_Parametric)); storeCurveValues(newCE, getCurveFromGUI(DCT_NURBS)); + storeCurveValues(newCE, getCurveFromGUI(DCT_CatumullRom)); return newCE; } @@ -395,6 +438,7 @@ void DiagonalCurveEditorSubGroup::pipetteMouseOver(EditDataProvider *provider, i switch((DiagonalCurveType)(curveEditor->curveType->getSelected())) { case (DCT_Spline): + case (DCT_CatumullRom): customCurve->pipetteMouseOver(curveEditor, provider, modifierKey); customCurve->setDirty(true); break; @@ -469,6 +513,7 @@ bool DiagonalCurveEditorSubGroup::pipetteButton1Pressed(EditDataProvider *provid switch((DiagonalCurveType)(curveEditor->curveType->getSelected())) { case (DCT_Spline): + case (DCT_CatumullRom): isDragging = customCurve->pipetteButton1Pressed(provider, modifierKey); break; @@ -497,6 +542,7 @@ void DiagonalCurveEditorSubGroup::pipetteButton1Released(EditDataProvider *provi switch((DiagonalCurveType)(curveEditor->curveType->getSelected())) { case (DCT_Spline): + case (DCT_CatumullRom): customCurve->pipetteButton1Released(provider); break; @@ -520,6 +566,7 @@ void DiagonalCurveEditorSubGroup::pipetteDrag(EditDataProvider *provider, int mo switch((DiagonalCurveType)(curveEditor->curveType->getSelected())) { case (DCT_Spline): + case (DCT_CatumullRom): customCurve->pipetteDrag(provider, modifierKey); break; @@ -573,6 +620,7 @@ void DiagonalCurveEditorSubGroup::refresh(CurveEditor *curveToRefresh) if (curveToRefresh != nullptr && curveToRefresh == static_cast(parent->displayedCurve)) { switch((DiagonalCurveType)(curveToRefresh->curveType->getSelected())) { case (DCT_Spline): + case (DCT_CatumullRom): customCurve->refresh(); break; @@ -661,9 +709,10 @@ void DiagonalCurveEditorSubGroup::switchGUI() } } - switch((DiagonalCurveType)(dCurve->curveType->getSelected())) { + switch(auto tp = (DiagonalCurveType)(dCurve->curveType->getSelected())) { case (DCT_Spline): - customCurve->setPoints (dCurve->customCurveEd); + case (DCT_CatumullRom): + customCurve->setPoints(tp == DCT_Spline ? dCurve->customCurveEd : dCurve->catmullRomCurveEd); customCurve->setColorProvider(dCurve->getCurveColorProvider(), dCurve->getCurveCallerId()); customCurve->setColoredBar(leftBar, bottomBar); customCurve->queue_resize_no_redraw(); @@ -734,6 +783,7 @@ void DiagonalCurveEditorSubGroup::savePressed () switch (parent->displayedCurve->selected) { case DCT_Spline: // custom + case DCT_CatumullRom: p = customCurve->getPoints (); break; @@ -755,6 +805,8 @@ void DiagonalCurveEditorSubGroup::savePressed () f << "Linear" << std::endl; } else if (p[ix] == (double)(DCT_Spline)) { f << "Spline" << std::endl; + } else if (p[ix] == (double)(DCT_CatumullRom)) { + f << "CatmullRom" << std::endl; } else if (p[ix] == (double)(DCT_NURBS)) { f << "NURBS" << std::endl; } else if (p[ix] == (double)(DCT_Parametric)) { @@ -796,6 +848,8 @@ void DiagonalCurveEditorSubGroup::loadPressed () p.push_back ((double)(DCT_Linear)); } else if (s == "Spline") { p.push_back ((double)(DCT_Spline)); + } else if (s == "CatmullRom") { + p.push_back ((double)(DCT_CatumullRom)); } else if (s == "NURBS") { p.push_back ((double)(DCT_NURBS)); } else if (s == "Parametric") { @@ -814,7 +868,9 @@ void DiagonalCurveEditorSubGroup::loadPressed () } } - if (p[0] == (double)(DCT_Spline)) { + rtengine::sanitizeCurve(p); + + if (p[0] == (double)(DCT_Spline) || p[0] == (double)(DCT_CatumullRom)) { customCurve->setPoints (p); customCurve->queue_draw (); customCurve->notifyListener (); @@ -859,6 +915,12 @@ void DiagonalCurveEditorSubGroup::copyPressed () clipboard.setDiagonalCurveData (curve, DCT_NURBS); break; + case DCT_CatumullRom: + curve = customCurve->getPoints (); + curve[0] = DCT_CatumullRom; + clipboard.setDiagonalCurveData (curve, DCT_CatumullRom); + break; + default: // (DCT_Linear, DCT_Unchanged) // ... do nothing break; @@ -879,6 +941,7 @@ void DiagonalCurveEditorSubGroup::pastePressed () switch (type) { case DCT_Spline: // custom + case DCT_CatumullRom: customCurve->setPoints (curve); customCurve->queue_draw (); customCurve->notifyListener (); @@ -1016,6 +1079,10 @@ void DiagonalCurveEditorSubGroup::storeDisplayedCurve() storeCurveValues(parent->displayedCurve, getCurveFromGUI(DCT_NURBS)); break; + case (DCT_CatumullRom): + storeCurveValues(parent->displayedCurve, getCurveFromGUI(DCT_CatumullRom)); + break; + default: break; } @@ -1053,6 +1120,10 @@ void DiagonalCurveEditorSubGroup::storeCurveValues (CurveEditor* ce, const std:: (static_cast(ce))->NURBSCurveEd = p; break; + case (DCT_CatumullRom): + (static_cast(ce))->catmullRomCurveEd = p; + break; + default: break; } @@ -1082,6 +1153,14 @@ const std::vector DiagonalCurveEditorSubGroup::getCurveFromGUI (int type case (DCT_NURBS): return NURBSCurve->getPoints (); + case (DCT_CatumullRom): { + auto ret = customCurve->getPoints(); + if (!ret.empty()) { + ret[0] = DCT_CatumullRom; + } + return ret; + } + default: { // linear and other solutions std::vector lcurve (1); @@ -1118,6 +1197,10 @@ bool DiagonalCurveEditorSubGroup::curveReset(CurveEditor *ce) customCurve->reset (dce->customResetCurve, dce->getIdentityValue()); return true; + case (DCT_CatumullRom) : + customCurve->reset (dce->catmullRomResetCurve, dce->getIdentityValue()); + return true; + case (DCT_Parametric) : { DiagonalCurveEditor* dCurve = static_cast(parent->displayedCurve); double mileStone[3]; diff --git a/rtgui/diagonalcurveeditorsubgroup.h b/rtgui/diagonalcurveeditorsubgroup.h index c9dafeadd..39cc86973 100644 --- a/rtgui/diagonalcurveeditorsubgroup.h +++ b/rtgui/diagonalcurveeditorsubgroup.h @@ -75,37 +75,37 @@ protected: public: DiagonalCurveEditorSubGroup(CurveEditorGroup* prt, Glib::ustring& curveDir); - virtual ~DiagonalCurveEditorSubGroup(); + ~DiagonalCurveEditorSubGroup() override; DiagonalCurveEditor* addCurve(Glib::ustring curveLabel = ""); - virtual void updateBackgroundHistogram (CurveEditor* ce); - void switchGUI(); - void refresh(CurveEditor *curveToRefresh); - void editModeSwitchedOff (); - void pipetteMouseOver(EditDataProvider *provider, int modifierKey); - bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); - void pipetteButton1Released(EditDataProvider *provider); - void pipetteDrag(EditDataProvider *provider, int modifierKey); - void showCoordinateAdjuster(CoordinateProvider *provider); - void stopNumericalAdjustment(); + void updateBackgroundHistogram (CurveEditor* ce) override; + void switchGUI() override; + void refresh(CurveEditor *curveToRefresh) override; + void editModeSwitchedOff () override; + void pipetteMouseOver(EditDataProvider *provider, int modifierKey) override; + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override; + void pipetteButton1Released(EditDataProvider *provider) override; + void pipetteDrag(EditDataProvider *provider, int modifierKey) override; + void showCoordinateAdjuster(CoordinateProvider *provider) override; + void stopNumericalAdjustment() override; - bool curveReset (CurveEditor *ce); + bool curveReset (CurveEditor *ce) override; protected: - void storeCurveValues (CurveEditor* ce, const std::vector& p); - void storeDisplayedCurve (); - void restoreDisplayedHistogram (); + void storeCurveValues (CurveEditor* ce, const std::vector& p) override; + void storeDisplayedCurve () override; + void restoreDisplayedHistogram () override; void savePressed (); void loadPressed (); void copyPressed (); void pastePressed (); void editPointToggled(Gtk::ToggleButton *button); void editToggled (Gtk::ToggleButton *button); - void removeEditor (); - const std::vector getCurveFromGUI (int type); - void shcChanged (); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void removeEditor () override; + const std::vector getCurveFromGUI (int type) override; + void shcChanged () override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; bool adjusterEntered (GdkEventCrossing* ev, int ac); bool adjusterLeft (GdkEventCrossing* ev, int ac); void setSubGroupRangeLabels(Glib::ustring r1, Glib::ustring r2, Glib::ustring r3, Glib::ustring r4); diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc index 47a8eb71a..e1acbad3e 100644 --- a/rtgui/dirbrowser.cc +++ b/rtgui/dirbrowser.cc @@ -64,7 +64,7 @@ std::vector listSubDirs (const Glib::RefPtr& dir, bool } catch (const Glib::Exception& exception) { if (options.rtSettings.verbose) { - std::cerr << exception.what () << std::endl; + std::cerr << exception.what().c_str() << std::endl; } } @@ -220,7 +220,7 @@ void DirBrowser::updateDirTree (const Gtk::TreeModel::iterator& iter) void DirBrowser::updateVolumes () { - int nvolumes = GetLogicalDrives (); + unsigned int nvolumes = GetLogicalDrives (); if (nvolumes != volumes) { GThreadLock lock; @@ -246,17 +246,6 @@ int updateVolumesUI (void* br) return 1; } -void DirBrowser::winDirChanged () -{ - const auto func = - [](DirBrowser* self) -> bool - { - self->updateDirTreeRoot(); - return false; - }; - - idle_register.add(func, this, false); -} #endif void DirBrowser::fillRoot () @@ -334,14 +323,9 @@ void DirBrowser::row_expanded (const Gtk::TreeModel::iterator& iter, const Gtk:: expandSuccess = true; } -#ifdef WIN32 - Glib::RefPtr monitor = Glib::RefPtr(new WinDirMonitor (iter->get_value (dtColumns.dirname), this)); - iter->set_value (dtColumns.monitor, monitor); -#else Glib::RefPtr monitor = dir->monitor_directory (); iter->set_value (dtColumns.monitor, monitor); monitor->signal_changed().connect (sigc::bind(sigc::mem_fun(*this, &DirBrowser::file_changed), iter, dir->get_parse_name())); -#endif } void DirBrowser::updateDir (const Gtk::TreeModel::iterator& iter) diff --git a/rtgui/dirbrowser.h b/rtgui/dirbrowser.h index e8eefdd36..15b6dd201 100644 --- a/rtgui/dirbrowser.h +++ b/rtgui/dirbrowser.h @@ -21,16 +21,13 @@ #include #include -#ifdef WIN32 -#include "windirmonitor.h" -#endif #include "guiutils.h" +#ifdef WIN32 +#include "windows.h" +#endif class DirBrowser : public Gtk::VBox -#ifdef WIN32 - , public WinDirChangeListener -#endif { public: typedef sigc::signal DirSelectionSignal; @@ -45,11 +42,7 @@ private: Gtk::TreeModelColumn > icon1; Gtk::TreeModelColumn > icon2; Gtk::TreeModelColumn dirname; -#ifdef WIN32 - Gtk::TreeModelColumn > monitor; -#else Gtk::TreeModelColumn > monitor; -#endif DirTreeColumns() { @@ -84,12 +77,11 @@ private: bool expandSuccess; #ifdef WIN32 - int volumes; + unsigned int volumes; public: void updateVolumes (); void updateDirTree (const Gtk::TreeModel::iterator& iter); void updateDirTreeRoot (); - void winDirChanged (); private: void addRoot (char letter); #endif @@ -101,7 +93,7 @@ private: public: DirBrowser (); - ~DirBrowser(); + ~DirBrowser() override; void fillDirTree (); void on_sort_column_changed() const; diff --git a/rtgui/dirpyrdenoise.cc b/rtgui/dirpyrdenoise.cc index 72360b1de..2e77bbaa9 100644 --- a/rtgui/dirpyrdenoise.cc +++ b/rtgui/dirpyrdenoise.cc @@ -30,6 +30,11 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP { std::vector milestones; CurveListener::setMulti(true); + nextnresid = 0.; + nexthighresid = 0.; + nextchroma = 15.; + nextred = 0.; + nextblue = 0.; std::vector defaultCurve; @@ -266,11 +271,8 @@ DirPyrDenoise::DirPyrDenoise () : FoldableToolPanel(this, "dirpyrdenoise", M("TP pack_start (*medianFrame); - -// pack_start (*perform); medianConn = median->signal_toggled().connect( sigc::mem_fun(*this, &DirPyrDenoise::medianChanged) ); ctboxrgb->hide(); - } DirPyrDenoise::~DirPyrDenoise () @@ -283,95 +285,110 @@ DirPyrDenoise::~DirPyrDenoise () void DirPyrDenoise::chromaChanged (double autchroma, double autred, double autblue) { - struct Data { - DirPyrDenoise* self; - double autchroma; - double autred; - double autblue; - }; + nextchroma = autchroma; + nextred = autred; + nextblue = autblue; const auto func = - [](Data* data) -> bool + [](DirPyrDenoise* self) -> bool { - DirPyrDenoise* const self = data->self; self->disableListener(); - self->chroma->setValue(data->autchroma); - self->redchro->setValue(data->autred); - self->bluechro->setValue(data->autblue); + self->chroma->setValue(self->nextchroma); + self->redchro->setValue(self->nextred); + self->bluechro->setValue(self->nextblue); self->enableListener(); + self->updateNoiseLabel(); return false; }; - idle_register.add(func, new Data{this, autchroma, autred, autblue}, true); + idle_register.add(func, this, false); } void DirPyrDenoise::noiseTilePrev (int tileX, int tileY, int prevX, int prevY, int sizeT, int sizeP) { - if (!batchMode) { - struct Data { - DirPyrDenoise* self; - int tileX; - int tileY; - int prevX; - int prevY; - int sizeT; - int sizeP; + nexttileX = tileX; + nexttileY = tileY; + nextprevX = prevX; + nextprevY = prevY; + nextsizeT = sizeT; + nextsizeP = sizeP; + + const auto func = + [](DirPyrDenoise* self) -> bool + { + self->disableListener(); + self->enableListener(); + self->updateTileLabel(); + self->updatePrevLabel(); + return false; }; - const auto func = - [](Data* data) -> bool - { - DirPyrDenoise* self = data->self; - self->TileLabels->set_text( - Glib::ustring::compose(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO"), - Glib::ustring::format(std::fixed, std::setprecision(0), data->sizeT), - Glib::ustring::format(std::fixed, std::setprecision(0), data->tileX), - Glib::ustring::format(std::fixed, std::setprecision(0), data->tileY)) - ); - self->PrevLabels->set_text( - Glib::ustring::compose(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO"), - Glib::ustring::format(std::fixed, std::setprecision(0), data->sizeP), - Glib::ustring::format(std::fixed, std::setprecision(0), data->prevX), - Glib::ustring::format(std::fixed, std::setprecision(0), data->prevY)) - ); - return false; - }; + idle_register.add(func, this, false); +} - idle_register.add(func, new Data{this, tileX, tileY, prevX, prevY, sizeT, sizeP}, true); +void DirPyrDenoise::updateTileLabel () +{ + if (!batchMode) { + float sT; + float nX, nY; + sT = nextsizeT; + nX = nexttileX; + nY = nexttileY; + TileLabels->set_text( + Glib::ustring::compose(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_TILEINFO"), + Glib::ustring::format(std::fixed, std::setprecision(0), sT), + Glib::ustring::format(std::fixed, std::setprecision(0), nX), + Glib::ustring::format(std::fixed, std::setprecision(0), nY)) + ); + } +} +void DirPyrDenoise::updatePrevLabel () +{ + if (!batchMode) { + float sP; + float pX, pY; + sP = nextsizeP; + pX = nextprevX; + pY = nextprevY; + PrevLabels->set_text( + Glib::ustring::compose(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_INFO"), + Glib::ustring::format(std::fixed, std::setprecision(0), sP), + Glib::ustring::format(std::fixed, std::setprecision(0), pX), + Glib::ustring::format(std::fixed, std::setprecision(0), pY)) + ); } } void DirPyrDenoise::noiseChanged (double nresid, double highresid) { - if (!batchMode) { - struct Data { - DirPyrDenoise* self; - double nresid; - double highresid; + const auto func = + [](DirPyrDenoise* self) -> bool + { + self->disableListener(); + self->enableListener(); + self->updateNoiseLabel(); + return false; }; - const auto func = - [](Data* data) -> bool - { - DirPyrDenoise* const self = data->self; - self->updateNoiseLabel(data->nresid, data->highresid); - return false; - }; - - idle_register.add(func, new Data{this, nresid, highresid}, true); - } + idle_register.add(func, this, false); } -void DirPyrDenoise::updateNoiseLabel (float nois, float high) +void DirPyrDenoise::updateNoiseLabel() { - if(nois == 0.f && high == 0.f) { - NoiseLabels->set_text(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY")); - } else { - NoiseLabels->set_text( - Glib::ustring::compose(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO"), - Glib::ustring::format(std::fixed, std::setprecision(0), nois), - Glib::ustring::format(std::fixed, std::setprecision(0), high)) - ); + if (!batchMode) { + float nois, high; + nois = nextnresid; + high = nexthighresid; + + if(nois == 0.f && high == 0.f) { + NoiseLabels->set_text(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO_EMPTY")); + } else { + NoiseLabels->set_text( + Glib::ustring::compose(M("TP_DIRPYRDENOISE_CHROMINANCE_PREVIEW_NOISEINFO"), + Glib::ustring::format(std::fixed, std::setprecision(0), nois), + Glib::ustring::format(std::fixed, std::setprecision(0), high)) + ); + } } } diff --git a/rtgui/dirpyrdenoise.h b/rtgui/dirpyrdenoise.h index 767fb4a7a..2ee1863ab 100644 --- a/rtgui/dirpyrdenoise.h +++ b/rtgui/dirpyrdenoise.h @@ -38,25 +38,45 @@ class DirPyrDenoise final : { public: DirPyrDenoise (); - ~DirPyrDenoise (); + ~DirPyrDenoise () override; + + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void curveChanged (CurveEditor* ce) override; + void setEditProvider (EditDataProvider *provider) override; + void autoOpenCurve () override; + + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; + void medianChanged (); + void chromaChanged (double autchroma, double autred, double autblue) override; + bool chromaComputed_ (); + void noiseChanged (double nresid, double highresid) override; + bool noiseComputed_ (); + void noiseTilePrev (int tileX, int tileY, int prevX, int prevY, int sizeT, int sizeP) override; + bool TilePrevComputed_ (); + +// void perform_toggled (); + void updateNoiseLabel (); + void LmethodChanged (); + void CmethodChanged (); + void C2methodChanged (); + void updateTileLabel (); + void updatePrevLabel (); + + void dmethodChanged (); + void medmethodChanged (); + void methodmedChanged (); + void rgbmethodChanged (); + void smethodChanged (); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void curveChanged (CurveEditor* ce); - void setEditProvider (EditDataProvider *provider); - void autoOpenCurve (); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); - void chromaChanged (double autchroma, double autred, double autblue); - void noiseChanged (double nresid, double highresid); - void noiseTilePrev (int tileX, int tileY, int prevX, int prevY, int sizeT, int sizeP); - void updateNoiseLabel (float nois = 0.f, float high = 0.f); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); void setAdjusterBehavior (bool lumaadd, bool lumdetadd, bool chromaadd, bool chromaredadd, bool chromablueadd, bool gammaadd, bool passesadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; + Glib::ustring getSettingString (); private: CurveEditorGroup* NoiscurveEditorG; @@ -70,12 +90,17 @@ private: Adjuster* passes; FlatCurveEditor* lshape; FlatCurveEditor* ccshape; + sigc::connection medianConn; Gtk::CheckButton* median; bool lastmedian; Gtk::Label* NoiseLabels; Gtk::Label* TileLabels; Gtk::Label* PrevLabels; + +// Gtk::CheckButton* perform; +// bool lastperform; +// sigc::connection perfconn; MyComboBoxText* dmethod; sigc::connection dmethodconn; MyComboBoxText* Lmethod; @@ -95,21 +120,22 @@ private: MyComboBoxText* rgbmethod; sigc::connection rgbmethodconn; Gtk::HBox* ctboxrgb; + double nextchroma; + double nextred; + double nextblue; + double nextnresid; + double nexthighresid; Gtk::HBox* ctboxL; Gtk::HBox* ctboxC; Gtk::HBox* ctboxC2; + int nexttileX; + int nexttileY; + int nextprevX; + int nextprevY; + int nextsizeT; + int nextsizeP; + IdleRegister idle_register; - - void LmethodChanged (); - void CmethodChanged (); - void C2methodChanged (); - void dmethodChanged (); - void medmethodChanged (); - void methodmedChanged (); - void rgbmethodChanged (); - void smethodChanged (); - void medianChanged (); - }; #endif diff --git a/rtgui/dirpyrequalizer.h b/rtgui/dirpyrequalizer.h index 3b5549e55..d7903116b 100644 --- a/rtgui/dirpyrequalizer.h +++ b/rtgui/dirpyrequalizer.h @@ -55,28 +55,28 @@ protected: public: DirPyrEqualizer (); - virtual ~DirPyrEqualizer (); + ~DirPyrEqualizer () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool skinadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void cbdlMethodChanged(); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged(); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged() override; void gamutlabToggled (); void lumaneutralPressed (); void lumacontrastPlusPressed (); void lumacontrastMinusPressed (); - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; }; #endif diff --git a/rtgui/distortion.h b/rtgui/distortion.h index b1134e426..ce1e81046 100644 --- a/rtgui/distortion.h +++ b/rtgui/distortion.h @@ -37,15 +37,15 @@ public: Distortion (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool vadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void idPressed (); void setLensGeomListener (LensGeomListener* l) { diff --git a/rtgui/dynamicprofilepanel.cc b/rtgui/dynamicprofilepanel.cc index d7e8f356a..d83c70669 100644 --- a/rtgui/dynamicprofilepanel.cc +++ b/rtgui/dynamicprofilepanel.cc @@ -41,7 +41,17 @@ DynamicProfilePanel::EditDialog::EditDialog (const Glib::ustring &title, Gtk::Wi add_optional (M ("EXIFFILTER_CAMERA"), has_camera_, camera_); add_optional (M ("EXIFFILTER_LENS"), has_lens_, lens_); - add_optional (M ("EXIFFILTER_IMAGETYPE"), has_imagetype_, imagetype_); + + imagetype_ = Gtk::manage (new MyComboBoxText()); + imagetype_->append(Glib::ustring("(") + M("DYNPROFILEEDITOR_IMGTYPE_ANY") + ")"); + imagetype_->append(M("DYNPROFILEEDITOR_IMGTYPE_STD")); + imagetype_->append(M("DYNPROFILEEDITOR_IMGTYPE_HDR")); + imagetype_->append(M("DYNPROFILEEDITOR_IMGTYPE_PS")); + imagetype_->set_active(0); + hb = Gtk::manage (new Gtk::HBox()); + hb->pack_start (*Gtk::manage (new Gtk::Label (M ("EXIFFILTER_IMAGETYPE"))), false, false, 4); + hb->pack_start (*imagetype_, true, true, 2); + get_content_area()->pack_start (*hb, Gtk::PACK_SHRINK, 4); add_range (M ("EXIFFILTER_ISO"), iso_min_, iso_max_); add_range (M ("EXIFFILTER_APERTURE"), fnumber_min_, fnumber_max_); @@ -82,8 +92,17 @@ void DynamicProfilePanel::EditDialog::set_rule ( has_lens_->set_active (rule.lens.enabled); lens_->set_text (rule.lens.value); - has_imagetype_->set_active (rule.imagetype.enabled); - imagetype_->set_text (rule.imagetype.value); + if (!rule.imagetype.enabled) { + imagetype_->set_active(0); + } else if (rule.imagetype.value == "STD") { + imagetype_->set_active(1); + } else if (rule.imagetype.value == "HDR") { + imagetype_->set_active(2); + } else if (rule.imagetype.value == "PS") { + imagetype_->set_active(3); + } else { + imagetype_->set_active(0); + } profilepath_->updateProfileList(); @@ -116,8 +135,20 @@ DynamicProfileRule DynamicProfilePanel::EditDialog::get_rule() ret.lens.enabled = has_lens_->get_active(); ret.lens.value = lens_->get_text(); - ret.imagetype.enabled = has_imagetype_->get_active(); - ret.imagetype.value = imagetype_->get_text(); + ret.imagetype.enabled = imagetype_->get_active_row_number() > 0; + switch (imagetype_->get_active_row_number()) { + case 1: + ret.imagetype.value = "STD"; + break; + case 2: + ret.imagetype.value = "HDR"; + break; + case 3: + ret.imagetype.value = "PS"; + break; + default: + ret.imagetype.value = ""; + } ret.profilepath = profilepath_->getFullPathFromActiveRow(); @@ -478,7 +509,14 @@ void DynamicProfilePanel::render_lens ( void DynamicProfilePanel::render_imagetype ( Gtk::CellRenderer *cell, const Gtk::TreeModel::iterator &iter) { - RENDER_OPTIONAL_ (imagetype); + auto row = *iter; + Gtk::CellRendererText *ct = static_cast(cell); + DynamicProfileRule::Optional o = row[columns_.imagetype]; + if (o.enabled) { + ct->property_text() = M(std::string("DYNPROFILEEDITOR_IMGTYPE_") + o.value); + } else { \ + ct->property_text() = ""; + } } #undef RENDER_OPTIONAL_ diff --git a/rtgui/dynamicprofilepanel.h b/rtgui/dynamicprofilepanel.h index 3b5bec4df..e271edc5a 100644 --- a/rtgui/dynamicprofilepanel.h +++ b/rtgui/dynamicprofilepanel.h @@ -112,8 +112,7 @@ private: Gtk::CheckButton *has_lens_; Gtk::Entry *lens_; - Gtk::CheckButton *has_imagetype_; - Gtk::Entry *imagetype_; + MyComboBoxText *imagetype_; ProfileStoreComboBox *profilepath_; }; diff --git a/rtgui/edit.h b/rtgui/edit.h index 611d95e1c..1540dc5ac 100644 --- a/rtgui/edit.h +++ b/rtgui/edit.h @@ -348,9 +348,9 @@ public: Circle (rtengine::Coord& center, int radius, bool filled = false, bool radiusInImageSpace = false); Circle (int centerX, int centerY, int radius, bool filled = false, bool radiusInImageSpace = false); - void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; }; class Line : public Geometry @@ -363,9 +363,9 @@ public: Line (rtengine::Coord& begin, rtengine::Coord& end); Line (int beginX, int beginY, int endX, int endY); - void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; }; class Polyline : public Geometry @@ -376,9 +376,9 @@ public: Polyline (); - void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; }; class Rectangle : public Geometry @@ -394,9 +394,9 @@ public: void setXYXY(int left, int top, int right, int bottom); void setXYWH(rtengine::Coord topLeft, rtengine::Coord widthHeight); void setXYXY(rtengine::Coord topLeft, rtengine::Coord bottomRight); - void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; }; class OPIcon : public Geometry // OP stands for "On Preview" @@ -431,9 +431,9 @@ public: const Cairo::RefPtr getActiveImg(); const Cairo::RefPtr getDraggedImg(); const Cairo::RefPtr getInsensitiveImg(); - void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); - void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem); + void drawOuterGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawInnerGeometry (Cairo::RefPtr &cr, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; + void drawToMOChannel (Cairo::RefPtr &cr, unsigned short id, ObjectMOBuffer *objectBuffer, EditCoordSystem &coordSystem) override; }; class OPAdjuster : public Geometry // OP stands for "On Preview" diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index d86612c9f..84890bf87 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -1631,6 +1631,10 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) iareapanel->imageArea->previewModePanel->toggleB(); return true; + case GDK_KEY_p: //preview mode Sharpening Contrast mask + iareapanel->imageArea->indClippedPanel->toggleSharpMask(); + return true; + case GDK_KEY_v: //preview mode Luminosity iareapanel->imageArea->previewModePanel->toggleL(); return true; diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h index 29ca70554..de5360646 100644 --- a/rtgui/editorpanel.h +++ b/rtgui/editorpanel.h @@ -56,11 +56,11 @@ class EditorPanel final : { public: explicit EditorPanel (FilePanel* filePanel = nullptr); - ~EditorPanel (); + ~EditorPanel () override; void open (Thumbnail* tmb, rtengine::InitialImage* isrc); void setAspect (); - void on_realize (); + void on_realize () override; void leftPaneButtonReleased (GdkEventButton *event); void rightPaneButtonReleased (GdkEventButton *event); @@ -83,10 +83,10 @@ public: return realized; } // ProgressListener interface - void setProgress(double p); - void setProgressStr(const Glib::ustring& str); - void setProgressState(bool inProcessing); - void error(const Glib::ustring& descr); + void setProgress(double p) override; + void setProgressStr(const Glib::ustring& str) override; + void setProgressState(bool inProcessing) override; + void error(const Glib::ustring& descr) override; void error(const Glib::ustring& title, const Glib::ustring& descr); void displayError(const Glib::ustring& title, const Glib::ustring& descr); // this is called by error in the gtk thread @@ -98,14 +98,14 @@ public: const rtengine::ProcEvent& ev, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr - ); - void clearParamChanges(); + ) override; + void clearParamChanges() override; // thumbnaillistener interface - void procParamsChanged (Thumbnail* thm, int whoChangedIt); + void procParamsChanged (Thumbnail* thm, int whoChangedIt) override; // HistoryBeforeLineListener - void historyBeforeLineChanged (const rtengine::procparams::ProcParams& params); + void historyBeforeLineChanged (const rtengine::procparams::ProcParams& params) override; // HistogramListener void histogramChanged( @@ -123,7 +123,7 @@ public: const LUTu& histBlueRaw, const LUTu& histChroma, const LUTu& histLRETI - ); + ) override; // event handlers void info_toggled (); diff --git a/rtgui/editwindow.h b/rtgui/editwindow.h index 8cf93dbf8..736e46bd4 100644 --- a/rtgui/editwindow.h +++ b/rtgui/editwindow.h @@ -55,12 +55,12 @@ public: void toFront(); bool keyPressed (GdkEventKey* event); - bool on_configure_event(GdkEventConfigure* event); - bool on_delete_event(GdkEventAny* event); + bool on_configure_event(GdkEventConfigure* event) override; + bool on_delete_event(GdkEventAny* event) override; //bool on_window_state_event(GdkEventWindowState* event); void on_mainNB_switch_page(Gtk::Widget* page, guint page_num); void set_title_decorated(Glib::ustring fname); - void on_realize (); + void on_realize () override; }; #endif diff --git a/rtgui/epd.cc b/rtgui/epd.cc index 681248994..675a5b9b9 100644 --- a/rtgui/epd.cc +++ b/rtgui/epd.cc @@ -26,8 +26,6 @@ using namespace rtengine::procparams; EdgePreservingDecompositionUI::EdgePreservingDecompositionUI () : FoldableToolPanel(this, "epd", M("TP_EPD_LABEL"), true, true) { - setEnabledTooltipMarkup(M("TP_EPD_TOOLTIP")); - strength = Gtk::manage(new Adjuster (M("TP_EPD_STRENGTH"), -1.0, 2.0, 0.01, 0.5)); gamma = Gtk::manage(new Adjuster (M("TP_EPD_GAMMA"), 0.8, 1.5, 0.01, 1.)); edgeStopping = Gtk::manage(new Adjuster (M("TP_EPD_EDGESTOPPING"), 0.1, 4.0, 0.01, 0.5)); diff --git a/rtgui/epd.h b/rtgui/epd.h index c40133c3a..f2073a976 100644 --- a/rtgui/epd.h +++ b/rtgui/epd.h @@ -36,14 +36,14 @@ public: EdgePreservingDecompositionUI(); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior (bool stAdd, bool gAdd, bool esAdd, bool scAdd, bool rAdd); }; diff --git a/rtgui/exifpanel.cc b/rtgui/exifpanel.cc index fa362a351..20416c549 100644 --- a/rtgui/exifpanel.cc +++ b/rtgui/exifpanel.cc @@ -261,7 +261,7 @@ void ExifPanel::addDirectory (const TagDirectory* dir, Gtk::TreeModel::Children Tag* t2 = (const_cast (dir))->getTagByIndex (j); const TagAttrib* currAttrib = t2->getAttrib(); - if (currAttrib && ((options.lastShowAllExif) || (!options.lastShowAllExif && currAttrib->action != AC_SYSTEM))) { + if (currAttrib && (options.lastShowAllExif || currAttrib->action != AC_SYSTEM)) { addSeparator(); hasContent = true; break; diff --git a/rtgui/exifpanel.h b/rtgui/exifpanel.h index 5121eff4f..cd27cb780 100644 --- a/rtgui/exifpanel.h +++ b/rtgui/exifpanel.h @@ -97,11 +97,11 @@ private: public: ExifPanel (); - virtual ~ExifPanel(); + ~ExifPanel() override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void setImageData (const rtengine::FramesMetaData* id); diff --git a/rtgui/fattaltonemap.cc b/rtgui/fattaltonemap.cc index 4bba72f2a..3a6a15a4d 100644 --- a/rtgui/fattaltonemap.cc +++ b/rtgui/fattaltonemap.cc @@ -31,7 +31,8 @@ FattalToneMapping::FattalToneMapping(): FoldableToolPanel(this, "fattal", M("TP_ EvTMFattalAnchor = m->newEvent(HDR, "HISTORY_MSG_TM_FATTAL_ANCHOR"); 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)); + threshold = Gtk::manage(new Adjuster (M("TP_TM_FATTAL_THRESHOLD"), -100., 300., 1., 0.0)); + threshold->setLogScale(10, 0); 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)); diff --git a/rtgui/fattaltonemap.h b/rtgui/fattaltonemap.h index fb6f1acd6..76e850c4e 100644 --- a/rtgui/fattaltonemap.h +++ b/rtgui/fattaltonemap.h @@ -36,14 +36,14 @@ public: FattalToneMapping(); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior(bool amountAdd, bool thresholdAdd, bool anchorAdd); }; diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index f2ce2cb79..d6362036a 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -127,9 +127,7 @@ void findOriginalEntries (const std::vector& entries) FileBrowser::FileBrowser () : menuLabel(nullptr), -#ifdef WIN32 miOpenDefaultViewer(nullptr), -#endif selectDF(nullptr), thisIsDF(nullptr), autoDF(nullptr), diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h index 5debe9a6c..f15c7c5e8 100644 --- a/rtgui/filebrowser.h +++ b/rtgui/filebrowser.h @@ -136,7 +136,7 @@ protected: public: FileBrowser (); - ~FileBrowser (); + ~FileBrowser () override; void addEntry (FileBrowserEntry* entry); // can be called from any thread void addEntry_ (FileBrowserEntry* entry); // this must be executed inside the gtk thread @@ -164,17 +164,17 @@ public: return numFiltered; } - void buttonPressed (LWButton* button, int actionCode, void* actionData); - void redrawNeeded (LWButton* button); - bool checkFilter (ThumbBrowserEntryBase* entry); - void rightClicked (ThumbBrowserEntryBase* entry); - void doubleClicked (ThumbBrowserEntryBase* entry); - bool keyPressed (GdkEventKey* event); + void buttonPressed (LWButton* button, int actionCode, void* actionData) override; + void redrawNeeded (LWButton* button) override; + bool checkFilter (ThumbBrowserEntryBase* entry) override; + void rightClicked (ThumbBrowserEntryBase* entry) override; + void doubleClicked (ThumbBrowserEntryBase* entry) override; + bool keyPressed (GdkEventKey* event) override; - void saveThumbnailHeight (int height); - int getThumbnailHeight (); + void saveThumbnailHeight (int height) override; + int getThumbnailHeight () override; - bool isInTabMode() + bool isInTabMode() override { return tbl ? tbl->isInTabMode() : false; } @@ -191,18 +191,18 @@ public: void openDefaultViewer (int destination); #endif - void thumbRearrangementNeeded (); + void thumbRearrangementNeeded () override; void _thumbRearrangementNeeded (); - void selectionChanged (); + void selectionChanged () override; void setExportPanel (ExportPanel* expanel); // exportpanel interface - void exportRequested(); + void exportRequested() override; - void storeCurrentValue(); - void updateProfileList(); - void restoreValue(); + void storeCurrentValue() override; + void updateProfileList() override; + void restoreValue() override; type_trash_changed trash_changed(); }; diff --git a/rtgui/filebrowserentry.h b/rtgui/filebrowserentry.h index 5d5bd7e8e..b1fa8c54b 100644 --- a/rtgui/filebrowserentry.h +++ b/rtgui/filebrowserentry.h @@ -67,7 +67,7 @@ class FileBrowserEntry : public ThumbBrowserEntryBase, bool onArea (CursorArea a, int x, int y); void updateCursor (int x, int y); void drawStraightenGuide (Cairo::RefPtr c); - void customBackBufferUpdate (Cairo::RefPtr c); + void customBackBufferUpdate (Cairo::RefPtr c) override; public: @@ -78,8 +78,8 @@ public: static Glib::RefPtr ps; FileBrowserEntry (Thumbnail* thm, const Glib::ustring& fname); - ~FileBrowserEntry (); - void draw (Cairo::RefPtr cc); + ~FileBrowserEntry () override; + void draw (Cairo::RefPtr cc) override; void setImageAreaToolListener (ImageAreaToolListener* l) { @@ -88,23 +88,23 @@ public: FileThumbnailButtonSet* getThumbButtonSet (); - void refreshThumbnailImage (); - void refreshQuickThumbnailImage (); - void calcThumbnailSize (); + void refreshThumbnailImage () override; + void refreshQuickThumbnailImage () override; + void calcThumbnailSize () override; - virtual std::vector > getIconsOnImageArea (); - virtual std::vector > getSpecificityIconsOnImageArea (); - virtual void getIconSize (int& w, int& h); + std::vector > getIconsOnImageArea () override; + std::vector > getSpecificityIconsOnImageArea () override; + void getIconSize (int& w, int& h) override; // thumbnaillistener interface - void procParamsChanged (Thumbnail* thm, int whoChangedIt); + void procParamsChanged (Thumbnail* thm, int whoChangedIt) override; // thumbimageupdatelistener interface - void updateImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cropParams); + void updateImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cropParams) override; void _updateImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cropParams); // inside gtk thread - virtual bool motionNotify (int x, int y); - virtual bool pressNotify (int button, int type, int bstate, int x, int y); - virtual bool releaseNotify (int button, int type, int bstate, int x, int y); + bool motionNotify (int x, int y) override; + bool pressNotify (int button, int type, int bstate, int x, int y) override; + bool releaseNotify (int button, int type, int bstate, int x, int y) override; }; #endif diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index 799e68350..66f76bb61 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -459,9 +459,6 @@ FileCatalog::FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel) : } selectedDirectory = ""; -#ifdef WIN32 - wdMonitor = NULL; -#endif } FileCatalog::~FileCatalog() @@ -540,21 +537,10 @@ void FileCatalog::closeDir () exportPanel->set_sensitive (false); } -#ifndef WIN32 - if (dirMonitor) { dirMonitor->cancel (); } -#else - - if (wdMonitor) { - delete wdMonitor; - wdMonitor = NULL; - } - -#endif - // ignore old requests ++selectedDirectoryId; @@ -671,12 +657,8 @@ void FileCatalog::dirSelected (const Glib::ustring& dirname, const Glib::ustring filepanel->loadingThumbs(M("PROGRESSBAR_LOADINGTHUMBS"), 0); } -#ifdef WIN32 - wdMonitor = new WinDirMonitor (selectedDirectory, this); -#else dirMonitor = dir->monitor_directory (); dirMonitor->signal_changed().connect (sigc::bind(sigc::mem_fun(*this, &FileCatalog::on_dir_changed), false)); -#endif } catch (Glib::Exception& ex) { std::cout << ex.what(); } @@ -1622,26 +1604,6 @@ BrowserFilter FileCatalog::getFilter () anyRankFilterActive || anyCLabelFilterActive || anyEditedFilterActive; } - if( options.rtSettings.verbose ) { - printf ("\n**************** FileCatalog::getFilter *** AFTER STEP 1 \n"); - - for (int i = 0; i <= 5; i++) { - printf ("filter.showRanked[%i] = %i\n", i, filter.showRanked[i]); - } - - for (int i = 0; i <= 5; i++) { - printf ("filter.showCLabeled[%i] = %i\n", i, filter.showCLabeled[i]); - } - - for (int i = 0; i < 2; i++) { - printf ("filter.showEdited[%i] = %i\n", i, filter.showEdited[i]); - } - - for (int i = 0; i < 2; i++) { - printf ("filter.showRecentlySaved[%i] = %i\n", i, filter.showRecentlySaved[i]); - } - } - filter.multiselect = false; /* @@ -1671,28 +1633,6 @@ BrowserFilter FileCatalog::getFilter () filter.showEdited[i] = anyEditedFilterActive ? bEdited[i]->get_active() : true; filter.showRecentlySaved[i] = anyRecentlySavedFilterActive ? bRecentlySaved[i]->get_active() : true; } - - if( options.rtSettings.verbose ) { - printf ("\n**************** FileCatalog::getFilter *** AFTER STEP 2 \n"); - - for (int i = 0; i <= 5; i++) { - printf ("filter.showRanked[%i] = %i\n", i, filter.showRanked[i]); - } - - for (int i = 0; i <= 5; i++) { - printf ("filter.showCLabeled[%i] = %i\n", i, filter.showCLabeled[i]); - } - - for (int i = 0; i < 2; i++) { - printf ("filter.showEdited[%i] = %i\n", i, filter.showEdited[i]); - } - - for (int i = 0; i < 2; i++) { - printf ("filter.showRecentlySaved[%i] = %i\n", i, filter.showRecentlySaved[i]); - } - - printf ("filter.multiselect = %i\n", filter.multiselect); - } } @@ -1789,22 +1729,6 @@ void FileCatalog::reparseDirectory () fileNameList = nfileNameList; } -#ifdef WIN32 - -void FileCatalog::winDirChanged () -{ - const auto func = - [](FileCatalog* self) -> bool - { - self->reparseDirectory(); - return false; - }; - - idle_register.add(func, this, false); -} - -#else - void FileCatalog::on_dir_changed (const Glib::RefPtr& file, const Glib::RefPtr& other_file, Gio::FileMonitorEvent event_type, bool internal) { @@ -1819,8 +1743,6 @@ void FileCatalog::on_dir_changed (const Glib::RefPtr& file, const Gli } } -#endif - void FileCatalog::checkAndAddFile (Glib::RefPtr file) { @@ -2599,7 +2521,7 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) void FileCatalog::showToolBar() { - if (!options.FileBrowserToolbarSingleRow) { + if (hbToolBar1STB) { hbToolBar1STB->show(); } @@ -2608,7 +2530,7 @@ void FileCatalog::showToolBar() void FileCatalog::hideToolBar() { - if (!options.FileBrowserToolbarSingleRow) { + if (hbToolBar1STB) { hbToolBar1STB->hide(); } diff --git a/rtgui/filecatalog.h b/rtgui/filecatalog.h index 0af52fd28..7e613a2b4 100644 --- a/rtgui/filecatalog.h +++ b/rtgui/filecatalog.h @@ -19,9 +19,6 @@ #ifndef _FILECATALOG_ #define _FILECATALOG_ -#ifdef WIN32 -#include "windirmonitor.h" -#endif #include "filebrowser.h" #include "exiffiltersettings.h" #include @@ -48,9 +45,6 @@ class FileCatalog : public Gtk::VBox, public FilterPanelListener, public FileBrowserListener, public ExportPanelListener -#ifdef WIN32 - , public WinDirChangeListener -#endif { public: typedef sigc::slot DirSelectionSlot; @@ -142,11 +136,7 @@ private: std::set editedFiles; guint modifierKey; // any modifiers held when rank button was pressed -#ifndef _WIN32 Glib::RefPtr dirMonitor; -#else - WinDirMonitor* wdMonitor; -#endif IdleRegister idle_register; @@ -164,14 +154,14 @@ public: ToolBar* toolBar; FileCatalog (CoarsePanel* cp, ToolBar* tb, FilePanel* filepanel); - ~FileCatalog(); + ~FileCatalog() override; void dirSelected (const Glib::ustring& dirname, const Glib::ustring& openfile); void closeDir (); void refreshEditedState (const std::set& efiles); // previewloaderlistener interface - void previewReady (int dir_id, FileBrowserEntry* fdn); - void previewsFinished (int dir_id); + void previewReady (int dir_id, FileBrowserEntry* fdn) override; + void previewsFinished (int dir_id) override; void previewsFinishedUI (); void _refreshProgressBar (); @@ -195,10 +185,10 @@ public: } // filterpanel interface - void exifFilterChanged (); + void exifFilterChanged () override; // exportpanel interface - void exportRequested(); + void exportRequested() override; Glib::ustring lastSelectedDir () { @@ -212,15 +202,15 @@ public: void refreshThumbImages (); void refreshHeight (); - void filterApplied(); - void openRequested(const std::vector& tbe); - void deleteRequested(const std::vector& tbe, bool inclBatchProcessed); - void copyMoveRequested(const std::vector& tbe, bool moveRequested); - void developRequested(const std::vector& tbe, bool fastmode); - void renameRequested(const std::vector& tbe); - void selectionChanged(const std::vector& tbe); - void clearFromCacheRequested(const std::vector& tbe, bool leavenotrace); - bool isInTabMode() const; + void filterApplied() override; + void openRequested(const std::vector& tbe) override; + void deleteRequested(const std::vector& tbe, bool inclBatchProcessed) override; + void copyMoveRequested(const std::vector& tbe, bool moveRequested) override; + void developRequested(const std::vector& tbe, bool fastmode) override; + void renameRequested(const std::vector& tbe) override; + void selectionChanged(const std::vector& tbe) override; + void clearFromCacheRequested(const std::vector& tbe, bool leavenotrace) override; + bool isInTabMode() const override; void emptyTrash (); bool trashIsEmpty (); @@ -247,7 +237,7 @@ public: void filterChanged (); void runFilterDialog (); - void on_realize(); + void on_realize() override; void reparseDirectory (); void _openImage (std::vector tmb); @@ -288,11 +278,7 @@ public: void showToolBar(); void hideToolBar(); -#ifndef _WIN32 void on_dir_changed (const Glib::RefPtr& file, const Glib::RefPtr& other_file, Gio::FileMonitorEvent event_type, bool internal); -#else - void winDirChanged (); -#endif }; diff --git a/rtgui/filepanel.cc b/rtgui/filepanel.cc index c842dad66..3df10d9df 100644 --- a/rtgui/filepanel.cc +++ b/rtgui/filepanel.cc @@ -303,7 +303,7 @@ bool FilePanel::imageLoaded( Thumbnail* thm, ProgressConnector") + M("MAIN_MSG_CANNOTLOAD") + " \"" + thm->getFileName() + "\" .\n" + M("MAIN_MSG_TOOMANYOPENEDITORS") + ""; - Gtk::MessageDialog msgd (msg_, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + Gtk::MessageDialog msgd (*parent, msg_, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); msgd.run (); goto MAXGDIHANDLESREACHED; } @@ -324,7 +324,7 @@ bool FilePanel::imageLoaded( Thumbnail* thm, ProgressConnector") + M("MAIN_MSG_CANNOTLOAD") + " \"" + thm->getFileName() + "\" .\n"; - Gtk::MessageDialog msgd (msg_, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + Gtk::MessageDialog msgd (*parent, msg_, true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); msgd.run (); } #ifdef WIN32 @@ -386,16 +386,6 @@ void FilePanel::optionsChanged () bool FilePanel::handleShortcutKey (GdkEventKey* event) { - bool ctrl = event->state & GDK_CONTROL_MASK; - - if (!ctrl) { - switch(event->keyval) { - } - } else { - switch (event->keyval) { - } - } - if(tpc->getToolBar() && tpc->getToolBar()->handleShortcutKey(event)) { return true; } diff --git a/rtgui/filepanel.h b/rtgui/filepanel.h index 8be0229bc..df61cb60d 100644 --- a/rtgui/filepanel.h +++ b/rtgui/filepanel.h @@ -40,7 +40,7 @@ class FilePanel final : { public: FilePanel (); - ~FilePanel (); + ~FilePanel () override; Gtk::Paned* placespaned; Gtk::HPaned* dirpaned; @@ -58,7 +58,7 @@ public: parent = p; } void init (); // don't call it directly, the constructor calls it as idle source - void on_realize (); + void on_realize () override; void setAspect(); void open (const Glib::ustring& d); // open a file or a directory void refreshEditedState (const std::set& efiles) @@ -71,8 +71,8 @@ public: void saveOptions (); // interface fileselectionlistener - bool fileSelected(Thumbnail* thm); - bool addBatchQueueJobs(const std::vector& entries); + bool fileSelected(Thumbnail* thm) override; + bool addBatchQueueJobs(const std::vector& entries) override; void optionsChanged (); bool imageLoaded( Thumbnail* thm, ProgressConnector * ); diff --git a/rtgui/filmsimulation.h b/rtgui/filmsimulation.h index 72ef019c5..5f66b579e 100644 --- a/rtgui/filmsimulation.h +++ b/rtgui/filmsimulation.h @@ -11,7 +11,7 @@ class ClutComboBox : public MyComboBox { public: - ClutComboBox(const Glib::ustring &path); + explicit ClutComboBox(const Glib::ustring &path); //int fillFromDir (const Glib::ustring& path); int foundClutsCount() const; Glib::ustring getSelectedClut(); @@ -34,7 +34,7 @@ private: Glib::RefPtr m_model; ClutColumns m_columns; int count; - ClutModel(const Glib::ustring &path); + explicit ClutModel(const Glib::ustring &path); int parseDir (const Glib::ustring& path); }; @@ -53,17 +53,17 @@ class FilmSimulation : public ToolParamBlock, public AdjusterListener, public Fo public: FilmSimulation(); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void setBatchMode(bool batchMode); - void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void setBatchMode(bool batchMode) override; + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void setAdjusterBehavior(bool strength); - void trimValues(rtengine::procparams::ProcParams* pp); + void trimValues(rtengine::procparams::ProcParams* pp) override; private: void onClutSelected(); - void enabledChanged(); + void enabledChanged() override; void updateDisable( bool value ); diff --git a/rtgui/flatcurveeditorsubgroup.cc b/rtgui/flatcurveeditorsubgroup.cc index 2cc96a184..376bb55c2 100644 --- a/rtgui/flatcurveeditorsubgroup.cc +++ b/rtgui/flatcurveeditorsubgroup.cc @@ -33,6 +33,8 @@ #include "flatcurveeditorsubgroup.h" #include "rtimage.h" +#include "../rtengine/curves.h" + FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::ustring& curveDir) : CurveEditorSubGroup(curveDir) { @@ -45,21 +47,35 @@ FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::u // ControlPoints curve CPointsCurveGrid = new Gtk::Grid (); - CPointsCurveGrid->set_row_spacing(2); - CPointsCurveGrid->set_column_spacing(2); CPointsCurveGrid->set_orientation(Gtk::ORIENTATION_VERTICAL); + CPointsCurveGrid->get_style_context()->add_class("curve-mainbox"); CPointsCurve = Gtk::manage (new MyFlatCurve ()); CPointsCurve->setType (FCT_MinMaxCPoints); + + Gtk::Grid* CPointsCurveBox = Gtk::manage (new Gtk::Grid ()); + CPointsCurveBox->get_style_context()->add_class("curve-curvebox"); + CPointsCurveBox->add(*CPointsCurve); Gtk::Grid* CPointsbbox = Gtk::manage (new Gtk::Grid ()); // curvebboxpos 0=above, 1=right, 2=below, 3=left + CPointsbbox->get_style_context()->add_class("curve-buttonbox"); - if (options.curvebboxpos == 0 || options.curvebboxpos == 2) { + if (options.curvebboxpos == 0) { CPointsbbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); setExpandAlignProperties(CPointsbbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - } else { + CPointsCurveGrid->get_style_context()->add_class("top"); + } else if (options.curvebboxpos == 2) { + CPointsbbox->set_orientation(Gtk::ORIENTATION_HORIZONTAL); + setExpandAlignProperties(CPointsbbox, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + CPointsCurveGrid->get_style_context()->add_class("bottom"); + } else if (options.curvebboxpos == 1) { CPointsbbox->set_orientation(Gtk::ORIENTATION_VERTICAL); setExpandAlignProperties(CPointsbbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + CPointsCurveGrid->get_style_context()->add_class("right"); + } else if (options.curvebboxpos == 3){ + CPointsbbox->set_orientation(Gtk::ORIENTATION_VERTICAL); + setExpandAlignProperties(CPointsbbox, false, true, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); + CPointsCurveGrid->get_style_context()->add_class("left"); } editCPoints = Gtk::manage (new Gtk::ToggleButton()); @@ -90,23 +106,24 @@ FlatCurveEditorSubGroup::FlatCurveEditorSubGroup (CurveEditorGroup* prt, Glib::u axis.at(2).setValues(M("CURVEEDITOR_AXIS_LEFT_TAN"), 5, 0.01, 0.1, 0., 1.); axis.at(3).setValues(M("CURVEEDITOR_AXIS_RIGHT_TAN"), 5, 0.01, 0.1, 0., 1.); CPointsCoordAdjuster = Gtk::manage (new CoordinateAdjuster(CPointsCurve, this, axis)); + CPointsCoordAdjuster->get_style_context()->add_class("curve-spinbuttonbox"); } // Button box position: 0=above, 1=right, 2=below, 3=left - CPointsCurveGrid->add(*CPointsCurve); + CPointsCurveGrid->add(*CPointsCurveBox); CPointsCurve->set_hexpand(true); if (options.curvebboxpos == 0) { - CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurve, Gtk::POS_TOP, 1, 1); - CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurve, Gtk::POS_BOTTOM, 1, 1); + CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurveBox, Gtk::POS_TOP, 1, 1); + CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurveBox, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 1) { - CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurve, Gtk::POS_RIGHT, 1, 1); - CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurve, Gtk::POS_BOTTOM, 2, 1); + CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurveBox, Gtk::POS_RIGHT, 1, 1); + CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurveBox, Gtk::POS_BOTTOM, 2, 1); } else if (options.curvebboxpos == 2) { - CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurve, Gtk::POS_BOTTOM, 1, 1); + CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsCurveBox, Gtk::POS_BOTTOM, 1, 1); CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCoordAdjuster, Gtk::POS_BOTTOM, 1, 1); } else if (options.curvebboxpos == 3) { - CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurve, Gtk::POS_LEFT, 1, 1); + CPointsCurveGrid->attach_next_to(*CPointsbbox, *CPointsCurveBox, Gtk::POS_LEFT, 1, 1); CPointsCurveGrid->attach_next_to(*CPointsCoordAdjuster, *CPointsbbox, Gtk::POS_BOTTOM, 2, 1); } @@ -418,6 +435,8 @@ void FlatCurveEditorSubGroup::loadPressed () } } + rtengine::sanitizeCurve(p); + if (p[0] == (double)(FCT_MinMaxCPoints)) { CPointsCurve->setPoints (p); CPointsCurve->queue_draw (); diff --git a/rtgui/flatcurveeditorsubgroup.h b/rtgui/flatcurveeditorsubgroup.h index 0dc040cfe..ab2abedfb 100644 --- a/rtgui/flatcurveeditorsubgroup.h +++ b/rtgui/flatcurveeditorsubgroup.h @@ -46,32 +46,32 @@ protected: public: FlatCurveEditorSubGroup(CurveEditorGroup* prt, Glib::ustring& curveDir); - virtual ~FlatCurveEditorSubGroup(); + ~FlatCurveEditorSubGroup() override; FlatCurveEditor* addCurve(Glib::ustring curveLabel = "", bool periodic = true); //virtual void updateBackgroundHistogram (CurveEditor* ce); - void switchGUI(); - void refresh(CurveEditor *curveToRefresh); - void editModeSwitchedOff(); - void pipetteMouseOver(EditDataProvider *provider, int modifierKey); - bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); - void pipetteButton1Released(EditDataProvider *provider); - void pipetteDrag(EditDataProvider *provider, int modifierKey); - void showCoordinateAdjuster(CoordinateProvider *provider); - void stopNumericalAdjustment(); + void switchGUI() override; + void refresh(CurveEditor *curveToRefresh) override; + void editModeSwitchedOff() override; + void pipetteMouseOver(EditDataProvider *provider, int modifierKey) override; + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override; + void pipetteButton1Released(EditDataProvider *provider) override; + void pipetteDrag(EditDataProvider *provider, int modifierKey) override; + void showCoordinateAdjuster(CoordinateProvider *provider) override; + void stopNumericalAdjustment() override; - bool curveReset (CurveEditor *ce); + bool curveReset (CurveEditor *ce) override; protected: - void storeCurveValues (CurveEditor* ce, const std::vector& p); - void storeDisplayedCurve (); - void restoreDisplayedHistogram (); + void storeCurveValues (CurveEditor* ce, const std::vector& p) override; + void storeDisplayedCurve () override; + void restoreDisplayedHistogram () override; void savePressed (); void loadPressed (); void copyPressed (); void pastePressed (); - void removeEditor (); - const std::vector getCurveFromGUI (int type); + void removeEditor () override; + const std::vector getCurveFromGUI (int type) override; void editPointToggled(Gtk::ToggleButton *button); void editToggled (Gtk::ToggleButton *button); }; diff --git a/rtgui/flatfield.h b/rtgui/flatfield.h index 599589b68..46e2f6ddd 100644 --- a/rtgui/flatfield.h +++ b/rtgui/flatfield.h @@ -62,17 +62,17 @@ protected: public: FlatField (); - ~FlatField (); + ~FlatField () override; - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void setAdjusterBehavior (bool clipctrladd); - void trimValues (rtengine::procparams::ProcParams* pp); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void trimValues (rtengine::procparams::ProcParams* pp) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void flatFieldFileChanged (); void flatFieldFile_Reset (); void flatFieldAutoSelectChanged (); @@ -82,7 +82,7 @@ public: { ffp = p; }; - void flatFieldAutoClipValueChanged(int n = 0); + void flatFieldAutoClipValueChanged(int n = 0) override; }; #endif diff --git a/rtgui/gradient.h b/rtgui/gradient.h index c34364cb5..8812d6670 100644 --- a/rtgui/gradient.h +++ b/rtgui/gradient.h @@ -35,29 +35,29 @@ protected: public: Gradient (); - ~Gradient (); + ~Gradient () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior (bool degreeadd, bool featheradd, bool strengthadd, bool centeradd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void updateGeometry (const int centerX, const int centerY, const double feather, const double degree, const int fullWidth=-1, const int fullHeight=-1); - void setEditProvider (EditDataProvider* provider); + void setEditProvider (EditDataProvider* provider) override; // EditSubscriber interface - CursorShape getCursor(const int objectID); - bool mouseOver(const int modifierKey); - bool button1Pressed(const int modifierKey); - bool button1Released(); - bool drag1(const int modifierKey); - void switchOffEditMode (); + CursorShape getCursor(const int objectID) override; + bool mouseOver(const int modifierKey) override; + bool button1Pressed(const int modifierKey) override; + bool button1Released() override; + bool drag1(const int modifierKey) override; + void switchOffEditMode () override; }; #endif diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h index 43f94e4db..309965520 100644 --- a/rtgui/guiutils.h +++ b/rtgui/guiutils.h @@ -199,7 +199,7 @@ private: public: explicit ExpanderBox( Gtk::Container *p); - ~ExpanderBox( ) + ~ExpanderBox( ) override { delete pC; } @@ -335,9 +335,9 @@ public: class MyScrolledWindow : public Gtk::ScrolledWindow { - bool on_scroll_event (GdkEventScroll* event); - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; + bool on_scroll_event (GdkEventScroll* event) override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; public: MyScrolledWindow(); @@ -349,7 +349,7 @@ public: class MyScrolledToolbar : public Gtk::ScrolledWindow { - bool on_scroll_event (GdkEventScroll* event); + bool on_scroll_event (GdkEventScroll* event) override; void get_preferred_height (int &minimumHeight, int &naturalHeight); public: @@ -363,9 +363,9 @@ class MyComboBox : public Gtk::ComboBox { int naturalWidth, minimumWidth; - bool on_scroll_event (GdkEventScroll* event); - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + bool on_scroll_event (GdkEventScroll* event) override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; public: MyComboBox (); @@ -381,9 +381,9 @@ class MyComboBoxText : public Gtk::ComboBoxText int naturalWidth, minimumWidth; sigc::connection myConnection; - bool on_scroll_event (GdkEventScroll* event); - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + bool on_scroll_event (GdkEventScroll* event) override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; public: explicit MyComboBoxText (bool has_entry = false); @@ -400,8 +400,8 @@ class MySpinButton : public Gtk::SpinButton { protected: - bool on_scroll_event (GdkEventScroll* event); - bool on_key_press_event (GdkEventKey* event); + bool on_scroll_event (GdkEventScroll* event) override; + bool on_key_press_event (GdkEventKey* event) override; public: MySpinButton (); @@ -414,8 +414,8 @@ public: class MyHScale : public Gtk::HScale { - bool on_scroll_event (GdkEventScroll* event); - bool on_key_press_event (GdkEventKey* event); + bool on_scroll_event (GdkEventScroll* event) override; + bool on_key_press_event (GdkEventKey* event) override; }; /** @@ -438,9 +438,9 @@ private: sigc::signal selection_changed_; protected: - bool on_scroll_event (GdkEventScroll* event); - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + bool on_scroll_event (GdkEventScroll* event) override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; void set_none(); @@ -534,8 +534,8 @@ class MyProgressBar : public Gtk::ProgressBar private: int w; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; public: explicit MyProgressBar(int width); diff --git a/rtgui/histogrampanel.h b/rtgui/histogrampanel.h index 9a8f58938..f34b07c39 100644 --- a/rtgui/histogrampanel.h +++ b/rtgui/histogrampanel.h @@ -81,7 +81,7 @@ protected: public: HistogramRGBArea(); - ~HistogramRGBArea(); + ~HistogramRGBArea() override; void updateBackBuffer (int r, int g, int b, const Glib::ustring &profile = "", const Glib::ustring &profileW = ""); bool getShow (); @@ -93,17 +93,17 @@ public: void update (int val, int rh, int gh, int bh); void updateOptions (bool r, bool g, bool b, bool l, bool c, bool raw, bool show); - void on_realize(); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - bool on_button_press_event (GdkEventButton* event); + void on_realize() override; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_button_press_event (GdkEventButton* event) override; void factorChanged (double newFactor); private: - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; - void get_preferred_width_for_height_vfunc (int h, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int h, int &minimum_width, int &natural_width) const override; }; @@ -141,7 +141,7 @@ protected: public: explicit HistogramArea(DrawModeListener *fml = nullptr); - ~HistogramArea(); + ~HistogramArea() override; void updateBackBuffer (); void update( @@ -155,21 +155,21 @@ public: const LUTu& histBlueRaw ); void updateOptions (bool r, bool g, bool b, bool l, bool c, bool raw, int mode); - void on_realize(); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - bool on_button_press_event (GdkEventButton* event); - bool on_button_release_event (GdkEventButton* event); - bool on_motion_notify_event (GdkEventMotion* event); + void on_realize() override; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event (GdkEventButton* event) override; + bool on_motion_notify_event (GdkEventMotion* event) override; type_signal_factor_changed signal_factor_changed(); private: void drawCurve(Cairo::RefPtr &cr, LUTu & data, double scale, int hsize, int vsize); void drawMarks(Cairo::RefPtr &cr, LUTu & data, double scale, int hsize, int & ui, int & oi); - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; }; class HistogramPanel : public Gtk::Grid, public PointerMotionListener, public DrawModeListener @@ -216,7 +216,7 @@ protected: public: HistogramPanel (); - ~HistogramPanel (); + ~HistogramPanel () override; void histogramChanged( const LUTu& histRed, @@ -231,7 +231,7 @@ public: histogramArea->update(histRed, histGreen, histBlue, histLuma, histChroma, histRedRaw, histGreenRaw, histBlueRaw); } // pointermotionlistener interface - void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool isRaw = false); + void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool isRaw = false) override; // TODO should be protected void setHistRGBInvalid (); @@ -249,7 +249,7 @@ public: void resized (Gtk::Allocation& req); // drawModeListener interface - void toggleButtonMode (); + void toggleButtonMode () override; }; #endif diff --git a/rtgui/history.h b/rtgui/history.h index 4b9499502..196b29b67 100644 --- a/rtgui/history.h +++ b/rtgui/history.h @@ -111,8 +111,8 @@ public: const rtengine::ProcEvent& ev, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr - ); - void clearParamChanges (); + ) override; + void clearParamChanges () override; void historySelectionChanged (); void bookmarkSelectionChanged (); diff --git a/rtgui/hsvequalizer.h b/rtgui/hsvequalizer.h index 2d80bb626..8d34b486b 100644 --- a/rtgui/hsvequalizer.h +++ b/rtgui/hsvequalizer.h @@ -42,19 +42,19 @@ protected: public: HSVEqualizer (); - virtual ~HSVEqualizer (); + ~HSVEqualizer () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void curveChanged (CurveEditor* ce); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void curveChanged (CurveEditor* ce) override; //void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL); - void setBatchMode (bool batchMode); - void setEditProvider (EditDataProvider *provider); - void autoOpenCurve (); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void setBatchMode (bool batchMode) override; + void setEditProvider (EditDataProvider *provider) override; + void autoOpenCurve () override; + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; //void adjusterChanged (Adjuster* a, double newval); - void enabledChanged(); + void enabledChanged() override; }; #endif diff --git a/rtgui/iccprofilecreator.cc b/rtgui/iccprofilecreator.cc index 8d6e09553..584412120 100644 --- a/rtgui/iccprofilecreator.cc +++ b/rtgui/iccprofilecreator.cc @@ -1,1037 +1,1499 @@ -/* - * 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.0800, 0.0700, 0.0001, 0.060/*, gamutl5, gamuts5*/)); - setExpandAlignProperties(aPrimariesBlueY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - - primariesGrid->attach(*aPrimariesRedX, 0, 0, 1, 1); - 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::adjusterAutoToggled(Adjuster* a, bool newval) -{ -} - -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]); -} +/* + * 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.0800, 0.0700, 0.0001, 0.060/*, gamutl5, gamuts5*/)); + setExpandAlignProperties(aPrimariesBlueY, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + primariesGrid->attach(*aPrimariesRedX, 0, 0, 1, 1); + 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.00001, 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); +// } + + 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::adjusterAutoToggled(Adjuster* a, bool newval) +{ +} + +void ICCProfileCreator::primariesChanged() +{ + if (primaries->get_active_row_number() > 0) { + double 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, double *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; + cmsHPROFILE profile_v2_except = nullptr; + + Glib::ustring sNewProfile; + Glib::ustring sPrimariesPreset; + Glib::ustring sGammaPreset; + + storeValues(); + + // -------------------------------------------- Compute the default file name + // -----------------setmedia white point for monitor profile sRGB or AdobeRGB in case of profile used for monitor--------------------- + //instead of calculations made by LCMS..small differences + bool isD65 = (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB"); + bool isD60 = (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0"); + bool isD50 = (primariesPreset == "ProPhoto" || primariesPreset == "Widegamut" || primariesPreset == "BestRGB" || primariesPreset == "BetaRGB"); + // v2except = (profileVersion == "v2" && (primariesPreset == "sRGB" || primariesPreset == "Adobe" || primariesPreset == "Rec2020" || primariesPreset == "BruceRGB" || primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") && illuminant == "DEF"); + // v2except = (profileVersion == "v2" && (isD65 || isD60 || isD50) && illuminant == "DEF"); + v2except = (profileVersion == "v2");// && (isD65 || isD60 || isD50)); + + //necessary for V2 profile + + if (!v2except) { + std::string is_RTv4 = ""; + + //used partially for v4, and in case of if we want to back to old manner for v2 + 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)) { + is_RTv4 = options.rtSettings.prophoto.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.prophoto = "RTv2_Large"; + }; + + 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)) { + is_RTv4 = options.rtSettings.widegamut.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.widegamut = "RTv2_Wide"; + }; + + sNewProfile = options.rtSettings.widegamut; + + sPrimariesPreset = "Wide"; + } else if (primariesPreset == "BestRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.best)) { + is_RTv4 = options.rtSettings.best.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.best = "RTv2_Best"; + }; + + sNewProfile = options.rtSettings.best; + + sPrimariesPreset = "Best"; + } else if (primariesPreset == "BetaRGB" && rtengine::ICCStore::getInstance()->outputProfileExist(options.rtSettings.beta)) { + sNewProfile = options.rtSettings.beta; + is_RTv4 = options.rtSettings.beta.substr(0, 4); + + if (is_RTv4 == "RTv4") { + options.rtSettings.widegamut = "RTv2_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; + } + } else { + //new model for v2 profile different from D50 by entering directly XYZ values and media white point + sNewProfile = "RTv2_Beta";//for copy generate others v2 profile. To change date of new profile, I used "ICC profile inspector" and "save as" + + if (primariesPreset == "ACES-AP0") { + sPrimariesPreset = "ACES-AP0"; + } else if (primariesPreset == "ACES-AP1") { + sPrimariesPreset = "ACES-AP1"; + } else if (primariesPreset == "Adobe") { + sPrimariesPreset = "Medium"; + } else if (primariesPreset == "Rec2020") { + sPrimariesPreset = "Rec2020"; + } else if (primariesPreset == "BruceRGB") { + sPrimariesPreset = "Bruce"; + } else if (primariesPreset == "sRGB") { + sPrimariesPreset = "sRGB"; + } else if (primariesPreset == "ProPhoto") { + sPrimariesPreset = "Large"; + } else if (primariesPreset == "Widegamut") { + sPrimariesPreset = "Wide"; + } else if (primariesPreset == "BestRGB") { + sPrimariesPreset = "Best"; + } else if (primariesPreset == "BetaRGB") { + sPrimariesPreset = "Beta"; + } else if (primariesPreset == "custom") { + sPrimariesPreset = "Custom"; + } + } + + //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()); + } + + if (!v2except) { + newProfile = rtengine::ICCStore::getInstance()->getProfile(sNewProfile); //get output profile + } else { + profile_v2_except = 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; + presetGamma = 1.3; + presetSlope = 3.35; + + } 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; + presetGamma = 2.6; + presetSlope = 6.9; + + } 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.947867; + ga[2] = 0.052133; + ga[3] = 0.077381; + ga[4] = 0.039286; + //g3 = 0.00340 + //g4 = 0.0550 + //g5 = 0.449842 + presetGamma = 2.4; + presetSlope = 12.92310; + + } else if (gammaPreset == "BT709_g2.2_s4.5") { + sGammaPreset = "BT709_g=2.2_s=4.5"; + ga[0] = 2.22; //BT709 2.22 4.5 - my preferred as D.Coffin + ga[1] = 0.909995; + ga[2] = 0.090005; + ga[3] = 0.222222; + ga[4] = 0.081071; + //g3=0.018016 + //g4=0.098907 + //g5=0.517448 + presetGamma = 2.22; + presetSlope = 4.5; + + } 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.; + presetGamma = 1.0; + presetSlope = 0.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.; + presetGamma = 2.19921875; + presetSlope = 0.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.; + presetGamma = 1.80078125; + presetSlope = 0.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; + presetGamma = 3.0; + presetSlope = 9.03926; + + } 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(6), std::fixed, std::setprecision(6), 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; + } + + 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(6), std::fixed, std::setprecision(6), 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(6), std::fixed, std::setprecision(6), 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 + double 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 (v2except) { + cmsSetDeviceClass(profile_v2_except, cmsSigDisplayClass); + cmsSetPCS(profile_v2_except, cmsSigXYZData); + cmsSetHeaderRenderingIntent(profile_v2_except, 0); + } + + + 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); + + if (illuminant == "D65") { + xyD = {0.312700492, 0.329000939, 1.0}; + } + + if (illuminant == "D60") { + xyD = {0.32168, 0.33767, 1.0}; + } + + if (illuminant == "D50") { + xyD = {0.3457, 0.3585, 1.0};//white D50 near LCMS values but not perfect...it's a compromise!! + } + + if (illuminant == "stdA") { + xyD = {0.447573, 0.407440, 1.0}; + } + + } else { + if (v2except) { + + cmsCIEXYZ XYZ; + double Wx = 1.0; + double Wy = 1.0; + double Wz = 1.0; + + if (illuminant == "DEF") { + { + Wx = 0.95045471; + Wz = 1.08905029; + XYZ = {Wx, 1.0, Wz};//white D65 + } + + if (primariesPreset == "ACES-AP1" || primariesPreset == "ACES-AP0") { + Wx = 0.952646075; + Wz = 1.008825184; + XYZ = {Wx, 1.0, Wz};//white D60 + } + + if (isD50) { + Wx = 0.964295676; + Wz = 0.825104603; + XYZ = {Wx, 1.0, Wz};//white D50 room (prophoto) near LCMS values but not perfect...it's a compromise!! + } + } else { + if (illuminant == "D65") { + Wx = 0.95045471; + Wz = 1.08905029; + } else if (illuminant == "D50") { + Wx = 0.964295676; + Wz = 0.825104603; + } else if (illuminant == "D55") { + Wx = 0.956565934; + Wz = 0.920253249; + } else if (illuminant == "D60") { + Wx = 0.952646075; + Wz = 1.008825184; + } else if (illuminant == "D41") { + Wx = 0.991488263; + Wz = 0.631604625; + } else if (illuminant == "D80") { + Wx = 0.950095542; + Wz = 1.284213976; + } else if (illuminant == "stdA") { + Wx = 1.098500393; + Wz = 0.355848714; + } + + XYZ = {Wx, 1.0, Wz}; + + } + + cmsCIExyY blackpoint; + + { + blackpoint = {0., 0., 0.}; + } + + cmsWriteTag(profile_v2_except, cmsSigMediaBlackPointTag, &blackpoint); + cmsWriteTag(profile_v2_except, cmsSigMediaWhitePointTag, &XYZ); + cmsCIEXYZ rt; + cmsCIEXYZ bt; + cmsCIEXYZ gt; + + //calculate XYZ matrix for each primaries and each temp (D50, D65...) + + // reduce coordinate of primaries + //printf("p0=%f p1=%f p2=%f p3=%f p4=%f p5=%f \n", p[0], p[1], p[2], p[3],p[4], p[5]); + double Xr = p[0] / p[1]; + double Yr = 1.0; + double Zr = (1.0 - p[0] - p[1]) / p[1]; + double Xg = p[2] / p[3]; + double Yg = 1.0; + double Zg = (1.0 - p[2] - p[3]) / p[3]; + double Xb = p[4] / p[5]; + double Yb = 1.0; + double Zb = (1.0 - p[4] - p[5]) / p[5]; + + using Triple = std::array; + + using Matrix = std::array; + + Matrix input_prim; + Matrix inv_input_prim = {}; + + input_prim[0][0] = Xr; + input_prim[0][1] = Yr; + input_prim[0][2] = Zr; + input_prim[1][0] = Xg; + input_prim[1][1] = Yg; + input_prim[1][2] = Zg; + input_prim[2][0] = Xb; + input_prim[2][1] = Yb; + input_prim[2][2] = Zb; + + //printf("in=%f in01=%f in22=%f\n", input_prim[0][0], input_prim[0][1], input_prim[2][2]); + if (!rtengine::invertMatrix(input_prim, inv_input_prim)) { + std::cout << "Matrix is not invertible, skipping" << std::endl; + } + + //printf("inv=%f inv01=%f inv22=%f\n", inv_input_prim[0][0], inv_input_prim[0][1], inv_input_prim[2][2]); + + //white point D50 used by LCMS + double Wdx = 0.96420; + double Wdy = 1.0; + double Wdz = 0.82490; + + double Sr = Wx * inv_input_prim [0][0] + Wy * inv_input_prim [1][0] + Wz * inv_input_prim [2][0]; + double Sg = Wx * inv_input_prim [0][1] + Wy * inv_input_prim [1][1] + Wz * inv_input_prim [2][1]; + double Sb = Wx * inv_input_prim [0][2] + Wy * inv_input_prim [1][2] + Wz * inv_input_prim [2][2]; + //printf("sr=%f sg=%f sb=%f\n", Sr, Sg, Sb); + + //XYZ matrix for primaries and temp + Matrix mat_xyz = {}; + mat_xyz[0][0] = Sr * Xr; + mat_xyz[0][1] = Sr * Yr; + mat_xyz[0][2] = Sr * Zr; + mat_xyz[1][0] = Sg * Xg; + mat_xyz[1][1] = Sg * Yg; + mat_xyz[1][2] = Sg * Zg; + mat_xyz[2][0] = Sb * Xb; + mat_xyz[2][1] = Sb * Yb; + mat_xyz[2][2] = Sb * Zb; + //printf("mat0=%f mat22=%f\n", mat_xyz[0][0], mat_xyz[2][2]); + + //chromatic adaptation Bradford + Matrix MaBradford = {}; + MaBradford[0][0] = 0.8951; + MaBradford[0][1] = -0.7502; + MaBradford[0][2] = 0.0389; + MaBradford[1][0] = 0.2664; + MaBradford[1][1] = 1.7135; + MaBradford[1][2] = -0.0685; + MaBradford[2][0] = -0.1614; + MaBradford[2][1] = 0.0367; + MaBradford[2][2] = 1.0296; + + Matrix Ma_oneBradford = {}; + Ma_oneBradford[0][0] = 0.9869929; + Ma_oneBradford[0][1] = 0.4323053; + Ma_oneBradford[0][2] = -0.0085287; + Ma_oneBradford[1][0] = -0.1470543; + Ma_oneBradford[1][1] = 0.5183603; + Ma_oneBradford[1][2] = 0.0400428; + Ma_oneBradford[2][0] = 0.1599627; + Ma_oneBradford[2][1] = 0.0492912; + Ma_oneBradford[2][2] = 0.9684867; + + //R G B source + double Rs = Wx * MaBradford[0][0] + Wy * MaBradford[1][0] + Wz * MaBradford[2][0]; + double Gs = Wx * MaBradford[0][1] + Wy * MaBradford[1][1] + Wz * MaBradford[2][1]; + double Bs = Wx * MaBradford[0][2] + Wy * MaBradford[1][2] + Wz * MaBradford[2][2]; + + // R G B destination + double Rd = Wdx * MaBradford[0][0] + Wdy * MaBradford[1][0] + Wdz * MaBradford[2][0]; + double Gd = Wdx * MaBradford[0][1] + Wdy * MaBradford[1][1] + Wdz * MaBradford[2][1]; + double Bd = Wdx * MaBradford[0][2] + Wdy * MaBradford[1][2] + Wdz * MaBradford[2][2]; + + //cone destination + Matrix cone_dest_sourc = {}; + cone_dest_sourc [0][0] = Rd / Rs; + cone_dest_sourc [0][1] = 0.; + cone_dest_sourc [0][2] = 0.; + cone_dest_sourc [1][0] = 0.; + cone_dest_sourc [1][1] = Gd / Gs; + cone_dest_sourc [1][2] = 0.; + cone_dest_sourc [2][0] = 0.; + cone_dest_sourc [2][1] = 0.; + cone_dest_sourc [2][2] = Bd / Bs; + + Matrix cone_ma_one = {}; + + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + cone_ma_one[i][j] = 0; + + for (int k = 0; k < 3; ++k) { + cone_ma_one[i][j] += cone_dest_sourc [i][k] * Ma_oneBradford[k][j]; + } + } + } + + //generate adaptation bradford matrix + Matrix adapt_chroma = {}; + + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + adapt_chroma [i][j] = 0; + + for (int k = 0; k < 3; ++k) { + adapt_chroma[i][j] += MaBradford[i][k] * cone_ma_one[k][j]; + } + } + } + + //real matrix XYZ for primaries, temp, Bradford + Matrix mat_xyz_brad = {}; + + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + mat_xyz_brad[i][j] = 0; + + for (int k = 0; k < 3; ++k) { + mat_xyz_brad[i][j] += mat_xyz[i][k] * adapt_chroma[k][j]; + } + } + } + + +// printf("adc=%1.10f ad2=%1.10f ad22=%1.10f\n", mat_xyz_brad[0][0], mat_xyz_brad[1][0], mat_xyz_brad[2][2]); + //end generate XYZ matrix + + //write tags + rt = {mat_xyz_brad[0][0], mat_xyz_brad[0][1], mat_xyz_brad[0][2]}; + cmsWriteTag(profile_v2_except, cmsSigRedColorantTag, &rt); + gt = {mat_xyz_brad[1][0], mat_xyz_brad[1][1], mat_xyz_brad[1][2]}; + cmsWriteTag(profile_v2_except, cmsSigGreenColorantTag, >); + bt = {mat_xyz_brad[2][0], mat_xyz_brad[2][1], mat_xyz_brad[2][2]}; + cmsWriteTag(profile_v2_except, cmsSigBlueColorantTag, &bt); + + + } else { + cmsWhitePointFromTemp(&xyD, (double)temp); + } + } + + + if (isD65 && illuminant == "DEF") { + xyD = {0.312700492, 0.329000939, 1.0}; + } + + if (isD60 && illuminant == "DEF") { + xyD = {0.32168, 0.33767, 1.0}; + } + + if (isD50 && illuminant == "DEF") { + xyD = {0.3457, 0.3585, 1.0}; + } + + // Calculate output profile's rTRC gTRC bTRC + + + cmsToneCurve* GammaTRC[3]; + + if (gammaPreset == "standard_g2.2") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 2.19921875);//spec Adobe + } else if (gammaPreset == "standard_g1.8") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.80078125); + } else if (gammaPreset == "linear_g1.0") { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, 1.0); + } else if(gammaPreset == "Custom" && slope == 0.0) { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildGamma(NULL, gamma); + } else { + GammaTRC[0] = GammaTRC[1] = GammaTRC[2] = cmsBuildParametricToneCurve(nullptr, 5, ga); + } + + + + if (profileVersion == "v4") { + newProfile = cmsCreateRGBProfile(&xyD, &Primaries, GammaTRC); + } else if (profileVersion == "v2") { + if (v2except) { + cmsSetProfileVersion(profile_v2_except, 2.2); + } else { + cmsSetProfileVersion(newProfile, 2.2); + } + } + + if (!v2except) { + cmsWriteTag(newProfile, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(newProfile, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(newProfile, cmsSigBlueTRCTag, GammaTRC[2]); + } else { + cmsWriteTag(profile_v2_except, cmsSigRedTRCTag, GammaTRC[0]); + cmsWriteTag(profile_v2_except, cmsSigGreenTRCTag, GammaTRC[1]); + cmsWriteTag(profile_v2_except, cmsSigBlueTRCTag, GammaTRC[2]); + } + + // --------------- set dmnd tag ------------------ + + cmsMLU *dmnd; + dmnd = cmsMLUalloc(nullptr, 1); + cmsMLUsetASCII(dmnd, "en", "US", "RawTherapee"); + + if (!v2except) { + cmsWriteTag(newProfile, cmsSigDeviceMfgDescTag, dmnd); + } else { + cmsWriteTag(profile_v2_except, 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 (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, dmdd)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + + } + } + } else if (cmsMLUsetWide(dmdd, "en", "US", wGammaSlopeParam.str().c_str())) { + if (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigDeviceModelDescTag, dmdd)) { + printf("Error: Can't write cmsSigDeviceModelDescTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, 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 (!v2except) { + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } + } + + } else if (cmsMLUsetWide(descMLU, "en", "US", wDescription.str().c_str())) { + if (!v2except) { + + if (!cmsWriteTag(newProfile, cmsSigProfileDescriptionTag, descMLU)) { + printf("Error: Can't write cmsSigProfileDescriptionTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, 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 (!v2except) { + + if (!cmsWriteTag(newProfile, cmsSigCopyrightTag, copyMLU)) { + printf("Error: Can't write cmsSigCopyrightTag!\n"); + } + } else { + if (!cmsWriteTag(profile_v2_except, 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); + */ + if (!v2except) { + cmsSaveProfileToFile(newProfile, absoluteFName.c_str()); + } else { + cmsSaveProfileToFile(profile_v2_except, absoluteFName.c_str()); + + } + + cmsFreeToneCurve(GammaTRC[0]); +} diff --git a/rtgui/iccprofilecreator.h b/rtgui/iccprofilecreator.h index 4ec73ff5c..23e5b86c8 100644 --- a/rtgui/iccprofilecreator.h +++ b/rtgui/iccprofilecreator.h @@ -1,107 +1,107 @@ -/* - * 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); - void adjusterAutoToggled(Adjuster* a, bool 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); -}; +/* + * 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; + bool v2except; + 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) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + static std::vector getGamma(); + Glib::ustring getPrimariesPresetName(const Glib::ustring &preset); + void getPrimaries(const Glib::ustring &preset, double *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.h b/rtgui/icmpanel.h index bd4aa493e..b1106b6e1 100644 --- a/rtgui/icmpanel.h +++ b/rtgui/icmpanel.h @@ -121,12 +121,12 @@ private: public: 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 adjusterAutoToggled(Adjuster* a, bool newval); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode(bool batchMode) override; + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void wpChanged(); void wtrcinChanged(); diff --git a/rtgui/ilabel.h b/rtgui/ilabel.h index 26b29061f..1f5340fa2 100644 --- a/rtgui/ilabel.h +++ b/rtgui/ilabel.h @@ -28,9 +28,9 @@ class ILabel : public Gtk::DrawingArea public: explicit ILabel (const Glib::ustring &lab); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - void on_realize(); - void on_style_updated (); + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + void on_realize() override; + void on_style_updated () override; }; #endif diff --git a/rtgui/imagearea.h b/rtgui/imagearea.h index de9ba1f71..f95045532 100644 --- a/rtgui/imagearea.h +++ b/rtgui/imagearea.h @@ -59,11 +59,11 @@ protected: ImageAreaToolListener* listener; CropWindow* getCropWindow (int x, int y); - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; int fullImageWidth, fullImageHeight; public: @@ -75,7 +75,7 @@ public: ImageArea* iLinkedImageArea; // used to set a reference to the Before image area, which is set when before/after view is enabled explicit ImageArea (ImageAreaPanel* p); - ~ImageArea (); + ~ImageArea () override; rtengine::StagedImageProcessor* getImProcCoordinator() const; void setImProcCoordinator(rtengine::StagedImageProcessor* ipc_); @@ -97,15 +97,15 @@ public: void infoEnabled (bool e); // widget base events - void on_realize (); - bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr); - bool on_motion_notify_event (GdkEventMotion* event); - bool on_button_press_event (GdkEventButton* event); - bool on_button_release_event (GdkEventButton* event); - bool on_scroll_event (GdkEventScroll* event); - bool on_leave_notify_event (GdkEventCrossing* event); + void on_realize () override; + bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_motion_notify_event (GdkEventMotion* event) override; + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event (GdkEventButton* event) override; + bool on_scroll_event (GdkEventScroll* event) override; + bool on_leave_notify_event (GdkEventCrossing* event) override; void on_resized (Gtk::Allocation& req); - void on_style_updated (); + void on_style_updated () override; void syncBeforeAfterViews (); void setCropGUIListener (CropGUIListener* l); @@ -140,18 +140,18 @@ public: void setZoom (double zoom); // EditDataProvider interface - void subscribe(EditSubscriber *subscriber); - void unsubscribe(); - void getImageSize (int &w, int&h); + void subscribe(EditSubscriber *subscriber) override; + void unsubscribe() override; + void getImageSize (int &w, int&h) override; // CropWindowListener interface - void cropPositionChanged (CropWindow* cw); - void cropWindowSizeChanged (CropWindow* cw); - void cropZoomChanged (CropWindow* cw); - void initialImageArrived (); + void cropPositionChanged (CropWindow* cw) override; + void cropWindowSizeChanged (CropWindow* cw) override; + void cropZoomChanged (CropWindow* cw) override; + void initialImageArrived () override; // LockablePickerToolListener interface - void switchPickerVisibility (bool isVisible); + void switchPickerVisibility (bool isVisible) override; CropWindow* getMainCropWindow () { diff --git a/rtgui/imageareapanel.h b/rtgui/imageareapanel.h index a0c5c8df2..13fd6650b 100644 --- a/rtgui/imageareapanel.h +++ b/rtgui/imageareapanel.h @@ -35,7 +35,7 @@ public: ImageArea* imageArea; ImageAreaPanel (); - ~ImageAreaPanel (); + ~ImageAreaPanel () override; void zoomChanged (); diff --git a/rtgui/impulsedenoise.h b/rtgui/impulsedenoise.h index 14b51eb7a..79484dc65 100644 --- a/rtgui/impulsedenoise.h +++ b/rtgui/impulsedenoise.h @@ -34,17 +34,17 @@ public: ImpulseDenoise (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior (bool threshadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/indclippedpanel.h b/rtgui/indclippedpanel.h index 95e870e95..c026d4611 100644 --- a/rtgui/indclippedpanel.h +++ b/rtgui/indclippedpanel.h @@ -35,7 +35,7 @@ protected: public: explicit IndicateClippedPanel(ImageArea* ia); - ~IndicateClippedPanel(); + ~IndicateClippedPanel() override; void buttonToggled(Gtk::ToggleButton* tb); void toggleClipped(bool highlights); // inverts a toggle programmatically diff --git a/rtgui/inspector.h b/rtgui/inspector.h index ac8f52ee2..d5ed327b8 100644 --- a/rtgui/inspector.h +++ b/rtgui/inspector.h @@ -51,14 +51,14 @@ private: sigc::connection delayconn; Glib::ustring next_image_path; - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; void deleteBuffers(); bool doSwitchImage(); public: Inspector(); - ~Inspector(); + ~Inspector() override; /** @brief Mouse movement to a new position * @param pos Location of the mouse, in percentage (i.e. [0;1] range) relative to the full size image ; -1,-1 == out of the image @@ -92,11 +92,11 @@ public: return active; }; - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; }; diff --git a/rtgui/iptcpanel.h b/rtgui/iptcpanel.h index b216cf638..5574fe884 100644 --- a/rtgui/iptcpanel.h +++ b/rtgui/iptcpanel.h @@ -71,9 +71,9 @@ private: public: IPTCPanel (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void setImageData (const rtengine::FramesMetaData* id); diff --git a/rtgui/labcurve.h b/rtgui/labcurve.h index d15f7d144..eb582035a 100644 --- a/rtgui/labcurve.h +++ b/rtgui/labcurve.h @@ -62,20 +62,20 @@ protected: public: LCurve (); - ~LCurve (); + ~LCurve () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void autoOpenCurve (); - void setEditProvider (EditDataProvider *provider); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void autoOpenCurve () override; + void setEditProvider (EditDataProvider *provider) override; void setAdjusterBehavior (bool bradd, bool contradd, bool satadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; - void curveChanged (CurveEditor* ce); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void curveChanged (CurveEditor* ce) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void avoidcolorshift_toggled (); void lcredsk_toggled(); @@ -92,9 +92,9 @@ public: const LUTu& histLRETI ); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; - void enabledChanged(); + void enabledChanged() override; }; #endif diff --git a/rtgui/labgrid.cc b/rtgui/labgrid.cc index a52ba9163..f680c7322 100644 --- a/rtgui/labgrid.cc +++ b/rtgui/labgrid.cc @@ -41,29 +41,40 @@ using rtengine::Color; -bool LabGrid::notifyListener() +//----------------------------------------------------------------------------- +// LabGridArea +//----------------------------------------------------------------------------- + +bool LabGridArea::notifyListener() { if (listener) { - listener->panelChanged(evt, Glib::ustring::compose(M("TP_COLORTONING_LABGRID_VALUES"), int(low_a), int(low_b), int(high_a), int(high_b))); + const auto round = + [](float v) -> float + { + return int(v * 1000) / 1000.f; + }; + listener->panelChanged(evt, Glib::ustring::compose(evtMsg, round(high_a), round(high_b), round(low_a), round(low_b))); } return false; } -LabGrid::LabGrid(rtengine::ProcEvent evt): +LabGridArea::LabGridArea(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low): Gtk::DrawingArea(), - evt(evt), litPoint(NONE), + evt(evt), evtMsg(msg), + litPoint(NONE), low_a(0.f), high_a(0.f), low_b(0.f), high_b(0.f), defaultLow_a(0.f), defaultHigh_a(0.f), defaultLow_b(0.f), defaultHigh_b(0.f), listener(nullptr), edited(false), - isDragged(false) + isDragged(false), + low_enabled(enable_low) { set_can_focus(true); add_events(Gdk::EXPOSURE_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK); } -void LabGrid::getParams(double &la, double &lb, double &ha, double &hb) const +void LabGridArea::getParams(double &la, double &lb, double &ha, double &hb) const { la = low_a; ha = high_a; @@ -72,10 +83,10 @@ void LabGrid::getParams(double &la, double &lb, double &ha, double &hb) const } -void LabGrid::setParams(double la, double lb, double ha, double hb, bool notify) +void LabGridArea::setParams(double la, double lb, double ha, double hb, bool notify) { - const double lo = -rtengine::ColorToningParams::LABGRID_CORR_MAX; - const double hi = rtengine::ColorToningParams::LABGRID_CORR_MAX; + const double lo = -1.0; + const double hi = 1.0; low_a = rtengine::LIM(la, lo, hi); low_b = rtengine::LIM(lb, lo, hi); high_a = rtengine::LIM(ha, lo, hi); @@ -86,7 +97,7 @@ void LabGrid::setParams(double la, double lb, double ha, double hb, bool notify) } } -void LabGrid::setDefault (double la, double lb, double ha, double hb) +void LabGridArea::setDefault (double la, double lb, double ha, double hb) { defaultLow_a = la; defaultLow_b = lb; @@ -95,7 +106,7 @@ void LabGrid::setDefault (double la, double lb, double ha, double hb) } -void LabGrid::reset(bool toInitial) +void LabGridArea::reset(bool toInitial) { if (toInitial) { setParams(defaultLow_a, defaultLow_b, defaultHigh_a, defaultHigh_b, true); @@ -105,32 +116,32 @@ void LabGrid::reset(bool toInitial) } -void LabGrid::setEdited(bool yes) +void LabGridArea::setEdited(bool yes) { edited = yes; } -bool LabGrid::getEdited() const +bool LabGridArea::getEdited() const { return edited; } -void LabGrid::setListener(ToolPanelListener *l) +void LabGridArea::setListener(ToolPanelListener *l) { listener = l; } -void LabGrid::on_style_updated () +void LabGridArea::on_style_updated () { setDirty(true); queue_draw (); } -bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) +bool LabGridArea::on_draw(const ::Cairo::RefPtr &crf) { Gtk::Allocation allocation = get_allocation(); allocation.set_x(0); @@ -170,7 +181,7 @@ bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) cr->translate(0, height); cr->scale(1., -1.); const int cells = 8; - float step = rtengine::ColorToningParams::LABGRID_CORR_MAX / float(cells/2); + float step = 12000.f / float(cells/2); for (int j = 0; j < cells; j++) { for (int i = 0; i < cells; i++) { float R, G, B; @@ -190,10 +201,10 @@ bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) // drawing the connection line cr->set_antialias(Cairo::ANTIALIAS_DEFAULT); float loa, hia, lob, hib; - loa = .5f * (width + width * low_a / rtengine::ColorToningParams::LABGRID_CORR_MAX); - hia = .5f * (width + width * high_a / rtengine::ColorToningParams::LABGRID_CORR_MAX); - lob = .5f * (height + height * low_b / rtengine::ColorToningParams::LABGRID_CORR_MAX); - hib = .5f * (height + height * high_b / rtengine::ColorToningParams::LABGRID_CORR_MAX); + loa = .5f * (width + width * low_a); + hia = .5f * (width + width * high_a); + lob = .5f * (height + height * low_b); + hib = .5f * (height + height * high_b); cr->set_line_width(2.); cr->set_source_rgb(0.6, 0.6, 0.6); cr->move_to(loa, lob); @@ -201,13 +212,15 @@ bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) cr->stroke(); // drawing points - cr->set_source_rgb(0.1, 0.1, 0.1); - if (litPoint == LOW) { - cr->arc(loa, lob, 5, 0, 2. * rtengine::RT_PI); - } else { - cr->arc(loa, lob, 3, 0, 2. * rtengine::RT_PI); + if (low_enabled) { + cr->set_source_rgb(0.1, 0.1, 0.1); + if (litPoint == LOW) { + cr->arc(loa, lob, 5, 0, 2. * rtengine::RT_PI); + } else { + cr->arc(loa, lob, 3, 0, 2. * rtengine::RT_PI); + } + cr->fill(); } - cr->fill(); cr->set_source_rgb(0.9, 0.9, 0.9); if (litPoint == HIGH) { @@ -223,7 +236,7 @@ bool LabGrid::on_draw(const ::Cairo::RefPtr &crf) } -bool LabGrid::on_button_press_event(GdkEventButton *event) +bool LabGridArea::on_button_press_event(GdkEventButton *event) { if (event->button == 1) { if (event->type == GDK_2BUTTON_PRESS) { @@ -250,7 +263,7 @@ bool LabGrid::on_button_press_event(GdkEventButton *event) } -bool LabGrid::on_button_release_event(GdkEventButton *event) +bool LabGridArea::on_button_release_event(GdkEventButton *event) { if (event->button == 1) { isDragged = false; @@ -260,7 +273,7 @@ bool LabGrid::on_button_release_event(GdkEventButton *event) } -bool LabGrid::on_motion_notify_event(GdkEventMotion *event) +bool LabGridArea::on_motion_notify_event(GdkEventMotion *event) { if (isDragged && delayconn.connected()) { delayconn.disconnect(); @@ -275,30 +288,30 @@ bool LabGrid::on_motion_notify_event(GdkEventMotion *event) const float mb = (2.0 * mouse_y - height) / (float)height; if (isDragged) { if (litPoint == LOW) { - low_a = ma * rtengine::ColorToningParams::LABGRID_CORR_MAX; - low_b = mb * rtengine::ColorToningParams::LABGRID_CORR_MAX; + low_a = ma; + low_b = mb; } else if (litPoint == HIGH) { - high_a = ma * rtengine::ColorToningParams::LABGRID_CORR_MAX; - high_b = mb * rtengine::ColorToningParams::LABGRID_CORR_MAX; + high_a = ma; + high_b = mb; } edited = true; grab_focus(); if (options.adjusterMinDelay == 0) { notifyListener(); } else { - delayconn = Glib::signal_timeout().connect(sigc::mem_fun(*this, &LabGrid::notifyListener), options.adjusterMinDelay); + delayconn = Glib::signal_timeout().connect(sigc::mem_fun(*this, &LabGridArea::notifyListener), options.adjusterMinDelay); } queue_draw(); } else { litPoint = NONE; - float la = low_a / rtengine::ColorToningParams::LABGRID_CORR_MAX; - float lb = low_b / rtengine::ColorToningParams::LABGRID_CORR_MAX; - float ha = high_a / rtengine::ColorToningParams::LABGRID_CORR_MAX; - float hb = high_b / rtengine::ColorToningParams::LABGRID_CORR_MAX; + float la = low_a; + float lb = low_b; + float ha = high_a; + float hb = high_b; const float thrs = 0.05f; const float distlo = (la - ma) * (la - ma) + (lb - mb) * (lb - mb); const float disthi = (ha - ma) * (ha - ma) + (hb - mb) * (hb - mb); - if (distlo < thrs * thrs && distlo < disthi) { + if (low_enabled && distlo < thrs * thrs && distlo < disthi) { litPoint = LOW; } else if (disthi < thrs * thrs && disthi <= distlo) { litPoint = HIGH; @@ -311,20 +324,66 @@ bool LabGrid::on_motion_notify_event(GdkEventMotion *event) } -Gtk::SizeRequestMode LabGrid::get_request_mode_vfunc() const +Gtk::SizeRequestMode LabGridArea::get_request_mode_vfunc() const { return Gtk::SIZE_REQUEST_HEIGHT_FOR_WIDTH; } -void LabGrid::get_preferred_width_vfunc(int &minimum_width, int &natural_width) const +void LabGridArea::get_preferred_width_vfunc(int &minimum_width, int &natural_width) const { minimum_width = 50; natural_width = 150; // same as GRAPH_SIZE from mycurve.h } -void LabGrid::get_preferred_height_for_width_vfunc(int width, int &minimum_height, int &natural_height) const +void LabGridArea::get_preferred_height_for_width_vfunc(int width, int &minimum_height, int &natural_height) const { minimum_height = natural_height = width; } + + +bool LabGridArea::lowEnabled() const +{ + return low_enabled; +} + + +void LabGridArea::setLowEnabled(bool yes) +{ + if (low_enabled != yes) { + low_enabled = yes; + queue_draw(); + } +} + + +//----------------------------------------------------------------------------- +// LabGrid +//----------------------------------------------------------------------------- + +LabGrid::LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low): + grid(evt, msg, enable_low) +{ + Gtk::Button *reset = Gtk::manage(new Gtk::Button()); + reset->set_tooltip_markup(M("ADJUSTER_RESET_TO_DEFAULT")); + reset->add(*Gtk::manage(new RTImage("undo-small.png", "redo-small.png"))); + reset->signal_button_release_event().connect(sigc::mem_fun(*this, &LabGrid::resetPressed)); + + setExpandAlignProperties(reset, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_START); + reset->set_relief(Gtk::RELIEF_NONE); + reset->get_style_context()->add_class(GTK_STYLE_CLASS_FLAT); + reset->set_can_focus(false); + reset->set_size_request(-1, 20); + + pack_start(grid, true, true); + pack_start(*reset, false, false); + show_all_children(); +} + + +bool LabGrid::resetPressed(GdkEventButton *event) +{ + grid.reset(event->state & GDK_CONTROL_MASK); + return false; +} diff --git a/rtgui/labgrid.h b/rtgui/labgrid.h index 348ab2398..00266c91b 100644 --- a/rtgui/labgrid.h +++ b/rtgui/labgrid.h @@ -43,9 +43,11 @@ #include "toolpanel.h" -class LabGrid: public Gtk::DrawingArea, public BackBuffer { +class LabGridArea: public Gtk::DrawingArea, public BackBuffer { private: rtengine::ProcEvent evt; + Glib::ustring evtMsg; + enum State { NONE, HIGH, LOW }; State litPoint; float low_a; @@ -64,11 +66,13 @@ private: sigc::connection delayconn; static const int inset = 2; + bool low_enabled; + bool notifyListener(); void getLitPoint(); public: - LabGrid(rtengine::ProcEvent evt); + LabGridArea(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low=true); void getParams(double &la, double &lb, double &ha, double &hb) const; void setParams(double la, double lb, double ha, double hb, bool notify); @@ -78,13 +82,37 @@ public: void reset(bool toInitial); void setListener(ToolPanelListener *l); - bool on_draw(const ::Cairo::RefPtr &crf); - void on_style_updated (); - bool on_button_press_event(GdkEventButton *event); - bool on_button_release_event(GdkEventButton *event); - bool on_motion_notify_event(GdkEventMotion *event); - Gtk::SizeRequestMode get_request_mode_vfunc() const; - void get_preferred_width_vfunc(int &minimum_width, int &natural_width) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; + bool lowEnabled() const; + void setLowEnabled(bool yes); + + bool on_draw(const ::Cairo::RefPtr &crf) override; + void on_style_updated () override; + bool on_button_press_event(GdkEventButton *event) override; + bool on_button_release_event(GdkEventButton *event) override; + bool on_motion_notify_event(GdkEventMotion *event) override; + Gtk::SizeRequestMode get_request_mode_vfunc() const override; + void get_preferred_width_vfunc(int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; +}; + + +class LabGrid: public Gtk::HBox { +private: + LabGridArea grid; + + bool resetPressed(GdkEventButton *event); + +public: + LabGrid(rtengine::ProcEvent evt, const Glib::ustring &msg, bool enable_low=true); + + void getParams(double &la, double &lb, double &ha, double &hb) const { return grid.getParams(la, lb, ha, hb); } + void setParams(double la, double lb, double ha, double hb, bool notify) { grid.setParams(la, lb, ha, hb, notify); } + void setDefault (double la, double lb, double ha, double hb) { grid.setDefault(la, lb, ha, hb); } + void setEdited(bool yes) { grid.setEdited(yes); } + bool getEdited() const { return grid.getEdited(); } + void reset(bool toInitial) { grid.reset(toInitial); } + void setListener(ToolPanelListener *l) { grid.setListener(l); } + bool lowEnabled() const { return grid.lowEnabled(); } + void setLowEnabled(bool yes) { grid.setLowEnabled(yes); } }; diff --git a/rtgui/lensgeom.h b/rtgui/lensgeom.h index 29b0c7f20..20bb4b7eb 100644 --- a/rtgui/lensgeom.h +++ b/rtgui/lensgeom.h @@ -37,16 +37,16 @@ protected: public: LensGeometry (); - ~LensGeometry (); + ~LensGeometry () override; Gtk::Box* getPackBox () { return packBox; } - 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 read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void fillPressed (); void autoCropPressed (); diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index a725ae9f8..d421632a9 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -29,275 +29,286 @@ using namespace rtengine; using namespace rtengine::procparams; -LensProfilePanel::LFDbHelper *LensProfilePanel::lf(nullptr); - -LensProfilePanel::LensProfilePanel () : +LensProfilePanel::LensProfilePanel() : FoldableToolPanel(this, "lensprof", M("TP_LENSPROFILE_LABEL")), lcModeChanged(false), lcpFileChanged(false), useDistChanged(false), useVignChanged(false), useCAChanged(false), - isRaw(true), - metadata(nullptr), useLensfunChanged(false), lensfunAutoChanged(false), lensfunCameraChanged(false), - lensfunLensChanged(false) + lensfunLensChanged(false), + allowFocusDep(true), + isRaw(true), + metadata(nullptr), + modesGrid(Gtk::manage(new Gtk::Grid())), + distGrid(Gtk::manage((new Gtk::Grid()))), + corrUnchangedRB(Gtk::manage((new Gtk::RadioButton(M("GENERAL_UNCHANGED"))))), + corrOffRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))))), + corrLensfunAutoRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"))))), + corrLensfunManualRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_MANUAL"))))), + corrLcpFileRB(Gtk::manage((new Gtk::RadioButton(corrGroup, M("TP_LENSPROFILE_CORRECTION_LCPFILE"))))), + corrLcpFileChooser(Gtk::manage((new MyFileChooserButton(M("TP_LENSPROFILE_LABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)))), + lensfunCamerasLbl(Gtk::manage((new Gtk::Label(M("EXIFFILTER_CAMERA"))))), + lensfunCameras(Gtk::manage((new MyComboBox()))), + lensfunLensesLbl(Gtk::manage((new Gtk::Label(M("EXIFFILTER_LENS"))))), + lensfunLenses(Gtk::manage((new MyComboBox()))), + warning(Gtk::manage(new RTImage("warning.png"))), + ckbUseDist(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_GEOMETRIC"))))), + ckbUseVign(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_VIGNETTING"))))), + ckbUseCA(Gtk::manage((new Gtk::CheckButton(M("TP_LENSPROFILE_USE_CA"))))) { if (!lf) { lf = new LFDbHelper(); } - corrUnchanged = Gtk::manage(new Gtk::RadioButton(M("GENERAL_UNCHANGED"))); - pack_start(*corrUnchanged); + // Main containers: - corrGroup = corrUnchanged->get_group(); + Gtk::Frame *nodesFrame = Gtk::manage(new Gtk::Frame(M("TP_LENSPROFILE_MODE_HEADER"))); - corrOff = Gtk::manage(new Gtk::RadioButton(corrGroup, M("GENERAL_NONE"))); - pack_start(*corrOff); - - corrLensfunAuto = Gtk::manage(new Gtk::RadioButton(corrGroup, M("LENSPROFILE_CORRECTION_AUTOMATCH"))); - pack_start(*corrLensfunAuto); - - corrLensfunManual = Gtk::manage(new Gtk::RadioButton(corrGroup, M("LENSPROFILE_CORRECTION_MANUAL"))); - pack_start(*corrLensfunManual); + modesGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(modesGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + Gtk::Frame *distFrame = Gtk::manage(new Gtk::Frame(M("TP_LENSPROFILE_USE_HEADER"))); + + distGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(distGrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + // Mode choice widgets: + + setExpandAlignProperties(corrLcpFileChooser, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + // Manually-selected profile widgets: + + setExpandAlignProperties(lensfunCamerasLbl, false, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); - lensfunCameras = Gtk::manage(new MyComboBox()); lensfunCameras->set_model(lf->lensfunCameraModel); lensfunCameras->pack_start(lf->lensfunModelCam.model); - Gtk::CellRendererText* cellRenderer = dynamic_cast(lensfunCameras->get_first_cell()); - cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; - cellRenderer->property_ellipsize_set() = true; lensfunCameras->setPreferredWidth(50, 120); + setExpandAlignProperties(lensfunCameras, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + Gtk::CellRendererText* const camerasCellRenderer = static_cast(lensfunCameras->get_first_cell()); + camerasCellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; + camerasCellRenderer->property_ellipsize_set() = true; + + setExpandAlignProperties(lensfunLensesLbl, false, false, Gtk::ALIGN_END, Gtk::ALIGN_CENTER); - lensfunLenses = Gtk::manage(new MyComboBox()); lensfunLenses->set_model(lf->lensfunLensModel); lensfunLenses->pack_start(lf->lensfunModelLens.prettylens); - cellRenderer = dynamic_cast(lensfunLenses->get_first_cell()); - cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; - cellRenderer->property_ellipsize_set() = true; lensfunLenses->setPreferredWidth(50, 120); - - Gtk::HBox *hb = Gtk::manage(new Gtk::HBox()); - hb->pack_start(*Gtk::manage(new Gtk::Label(M("EXIFFILTER_CAMERA"))), Gtk::PACK_SHRINK, 4); - hb->pack_start(*lensfunCameras); - pack_start(*hb); + setExpandAlignProperties(lensfunLenses, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - hb = Gtk::manage(new Gtk::HBox()); - hb->pack_start(*Gtk::manage(new Gtk::Label(M("EXIFFILTER_LENS"))), Gtk::PACK_SHRINK, 4); - hb->pack_start(*lensfunLenses); - warning = Gtk::manage(new Gtk::Image()); - warning->set_from_icon_name("dialog-warning", Gtk::ICON_SIZE_LARGE_TOOLBAR); - warning->set_tooltip_text(M("LENSPROFILE_LENS_WARNING")); + Gtk::CellRendererText* const lensesCellRenderer = static_cast(lensfunLenses->get_first_cell()); + lensesCellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; + lensesCellRenderer->property_ellipsize_set() = true; + + warning->set_tooltip_text(M("TP_LENSPROFILE_LENS_WARNING")); warning->hide(); - hb->pack_start(*warning, Gtk::PACK_SHRINK, 4); - pack_start(*hb); - corrLcpFile = Gtk::manage(new Gtk::RadioButton(corrGroup)); - hbLCPFile = Gtk::manage(new Gtk::HBox()); - hbLCPFile->pack_start(*corrLcpFile, Gtk::PACK_SHRINK); + // LCP file filter config: - lLCPFileHead = Gtk::manage(new Gtk::Label(M("LENSPROFILE_CORRECTION_LCPFILE"))); - hbLCPFile->pack_start(*lLCPFileHead, Gtk::PACK_SHRINK, 4); - - fcbLCPFile = Gtk::manage(new MyFileChooserButton(M("TP_LENSPROFILE_LABEL"), Gtk::FILE_CHOOSER_ACTION_OPEN)); - - Glib::RefPtr filterLCP = Gtk::FileFilter::create(); + const Glib::RefPtr filterLCP = Gtk::FileFilter::create(); filterLCP->set_name(M("FILECHOOSER_FILTER_LCP")); filterLCP->add_pattern("*.lcp"); filterLCP->add_pattern("*.LCP"); - fcbLCPFile->add_filter(filterLCP); + corrLcpFileChooser->add_filter(filterLCP); - Glib::ustring defDir = LCPStore::getInstance()->getDefaultCommonDirectory(); + const Glib::ustring defDir = LCPStore::getInstance()->getDefaultCommonDirectory(); if (!defDir.empty()) { #ifdef WIN32 - fcbLCPFile->set_show_hidden(true); // ProgramData is hidden on Windows + corrLcpFileChooser->set_show_hidden(true); // ProgramData is hidden on Windows #endif - fcbLCPFile->set_current_folder(defDir); + corrLcpFileChooser->set_current_folder(defDir); } else if (!options.lastLensProfileDir.empty()) { - fcbLCPFile->set_current_folder(options.lastLensProfileDir); + corrLcpFileChooser->set_current_folder(options.lastLensProfileDir); } - bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); - hbLCPFile->pack_start(*fcbLCPFile); + bindCurrentFolder(*corrLcpFileChooser, options.lastLensProfileDir); - pack_start(*hbLCPFile, Gtk::PACK_SHRINK, 4); + // Choice of properties to correct, applicable to all modes: - ckbUseDist = Gtk::manage (new Gtk::CheckButton (M("TP_LENSPROFILE_USEDIST"))); - pack_start (*ckbUseDist, Gtk::PACK_SHRINK, 4); - ckbUseVign = Gtk::manage (new Gtk::CheckButton (M("TP_LENSPROFILE_USEVIGN"))); - pack_start (*ckbUseVign, Gtk::PACK_SHRINK, 4); - ckbUseCA = Gtk::manage (new Gtk::CheckButton (M("TP_LENSPROFILE_USECA"))); - pack_start (*ckbUseCA, Gtk::PACK_SHRINK, 4); + // Populate modes grid: - conLCPFile = fcbLCPFile->signal_file_set().connect( sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); //, true); - conUseDist = ckbUseDist->signal_toggled().connect( sigc::mem_fun(*this, &LensProfilePanel::onUseDistChanged) ); - ckbUseVign->signal_toggled().connect( sigc::mem_fun(*this, &LensProfilePanel::onUseVignChanged) ); - ckbUseCA->signal_toggled().connect( sigc::mem_fun(*this, &LensProfilePanel::onUseCAChanged) ); + modesGrid->attach(*corrOffRB, 0, 0, 3, 1); + modesGrid->attach(*corrLensfunAutoRB, 0, 1, 3, 1); + modesGrid->attach(*corrLensfunManualRB, 0, 2, 3, 1); + + modesGrid->attach(*lensfunCamerasLbl, 0, 3, 1, 1); + modesGrid->attach(*lensfunCameras, 1, 3, 1, 1); + modesGrid->attach(*lensfunLensesLbl, 0, 4, 1, 1); + modesGrid->attach(*lensfunLenses, 1, 4, 1, 1); + modesGrid->attach(*warning, 2, 3, 1, 2); + + modesGrid->attach(*corrLcpFileRB, 0, 5, 1, 1); + modesGrid->attach(*corrLcpFileChooser, 1, 5, 1, 1); + + // Populate distortions grid: + + distGrid->attach(*ckbUseDist, 0, 0, 1, 1); + distGrid->attach(*ckbUseVign, 0, 1, 1, 1); + distGrid->attach(*ckbUseCA, 0, 2, 1, 1); + + // Attach grids: + nodesFrame->add(*modesGrid); + distFrame->add(*distGrid); + + pack_start(*nodesFrame, Gtk::PACK_EXPAND_WIDGET); + pack_start(*distFrame, Gtk::PACK_EXPAND_WIDGET); + + // Signals: + + conLCPFile = corrLcpFileChooser->signal_file_set().connect(sigc::mem_fun(*this, &LensProfilePanel::onLCPFileChanged)); + conUseDist = ckbUseDist->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseDistChanged)); + ckbUseVign->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseVignChanged)); + ckbUseCA->signal_toggled().connect(sigc::mem_fun(*this, &LensProfilePanel::onUseCAChanged)); lensfunCameras->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunCameraChanged)); lensfunLenses->signal_changed().connect(sigc::mem_fun(*this, &LensProfilePanel::onLensfunLensChanged)); - corrOff->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrOff)); - corrLensfunAuto->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunAuto)); - corrLensfunManual->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunManual)); - corrLcpFile->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFile)); - - corrUnchanged->hide(); - - allowFocusDep = true; + corrOffRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrOffRB)); + corrLensfunAutoRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunAutoRB)); + corrLensfunManualRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLensfunManualRB)); + corrLcpFileRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrLcpFileRB)); } void LensProfilePanel::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) { - disableListener (); + disableListener(); conUseDist.block(true); - if (!batchMode) { - corrUnchanged->hide(); - } + // corrLensfunAutoRB->set_sensitive(true); - corrLensfunAuto->set_sensitive(true); + switch (pp->lensProf.lcMode) { + case procparams::LensProfParams::LcMode::LCP: { + corrLcpFileRB->set_active(true); + setManualParamsVisibility(false); + break; + } - switch(pp->lensProf.lcMode) { - case procparams::LensProfParams::LcMode::LCP : - corrLcpFile->set_active(true); + case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH: { + corrLensfunAutoRB->set_active(true); + if (batchMode) { + setManualParamsVisibility(false); + } break; - case procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH : - corrLensfunAuto->set_active(true); + } + + case procparams::LensProfParams::LcMode::LENSFUNMANUAL: { + corrLensfunManualRB->set_active(true); break; - case procparams::LensProfParams::LcMode::LENSFUNMANUAL : - corrLensfunManual->set_active(true); + } + + case procparams::LensProfParams::LcMode::NONE: { + corrOffRB->set_active(true); + setManualParamsVisibility(false); break; - case procparams::LensProfParams::LcMode::NONE : - corrOff->set_active(true); + } } if (pp->lensProf.lcpFile.empty()) { - Glib::ustring lastFolder = fcbLCPFile->get_current_folder(); - fcbLCPFile->set_current_folder(lastFolder); - fcbLCPFile->unselect_all(); - bindCurrentFolder(*fcbLCPFile, options.lastLensProfileDir); + const Glib::ustring lastFolder = corrLcpFileChooser->get_current_folder(); + corrLcpFileChooser->set_current_folder(lastFolder); + corrLcpFileChooser->unselect_all(); + bindCurrentFolder(*corrLcpFileChooser, options.lastLensProfileDir); updateDisabled(false); - } else if (LCPStore::getInstance()->isValidLCPFileName(pp->lensProf.lcpFile)) { - fcbLCPFile->set_filename (pp->lensProf.lcpFile); - if(corrLcpFile->get_active()) { + } + else if (LCPStore::getInstance()->isValidLCPFileName(pp->lensProf.lcpFile)) { + corrLcpFileChooser->set_filename(pp->lensProf.lcpFile); + + if (corrLcpFileRB->get_active()) { updateDisabled(true); } - } else { - fcbLCPFile->unselect_filename(fcbLCPFile->get_filename()); + } + else { + corrLcpFileChooser->unselect_filename(corrLcpFileChooser->get_filename()); updateDisabled(false); } - const LFDatabase *db = LFDatabase::getInstance(); + const LFDatabase* const db = LFDatabase::getInstance(); LFCamera c; - - if (!setLensfunCamera(pp->lensProf.lfCameraMake, pp->lensProf.lfCameraModel) && !pp->lensProf.lfManual()) { + + if (pp->lensProf.lfAutoMatch()) { if (metadata) { c = db->findCamera(metadata->getMake(), metadata->getModel()); setLensfunCamera(c.getMake(), c.getModel()); } + } else if (pp->lensProf.lfManual()) { + setLensfunCamera(pp->lensProf.lfCameraMake, pp->lensProf.lfCameraModel); } - if (!setLensfunLens(pp->lensProf.lfLens) && !pp->lensProf.lfManual()) { + + if (pp->lensProf.lfAutoMatch()) { if (metadata) { - LFLens l = db->findLens(c, metadata->getLens()); + const LFLens l = db->findLens(c, metadata->getLens()); setLensfunLens(l.getLens()); } + } else if (pp->lensProf.lfManual()) { + setLensfunLens(pp->lensProf.lfLens); } + + + /* + if (!batchMode && !checkLensfunCanCorrect(true)) { + if (corrLensfunAutoRB->get_active()) { + corrOffRB->set_active(true); + } + + corrLensfunAutoRB->set_sensitive(false); + } + + if (!batchMode && corrLensfunManualRB->get_active() && !checkLensfunCanCorrect(false)) { + corrOffRB->set_active(true); + } + */ + ckbUseDist->set_active(pp->lensProf.useDist); + ckbUseVign->set_active(pp->lensProf.useVign); + ckbUseCA->set_active(pp->lensProf.useCA); + + if (pedited) { + corrUnchangedRB->set_active(!pedited->lensProf.lcMode); + ckbUseDist->set_inconsistent(!pedited->lensProf.useDist); + ckbUseVign->set_inconsistent(!pedited->lensProf.useVign); + ckbUseCA->set_inconsistent(!pedited->lensProf.useCA); + + if (!pedited->lensProf.lfCameraMake || !pedited->lensProf.lfCameraModel) { + setLensfunCamera("", ""); + } + if (!pedited->lensProf.lfLens) { + setLensfunLens(""); + } + + ckbUseDist->set_sensitive(true); + ckbUseVign->set_sensitive(true); + ckbUseCA->set_sensitive(true); + } + lcModeChanged = lcpFileChanged = useDistChanged = useVignChanged = useCAChanged = false; useLensfunChanged = lensfunAutoChanged = lensfunCameraChanged = lensfunLensChanged = false; - - if (!batchMode && !checkLensfunCanCorrect(true)) { - if (corrLensfunAuto->get_active()) { - corrOff->set_active(true); - } - corrLensfunAuto->set_sensitive(false); - } - - if (corrLensfunManual->get_active() && !checkLensfunCanCorrect(false)) { - corrOff->set_active(true); - } - - updateLensfunWarning(); - - ckbUseDist->set_active (pp->lensProf.useDist); - ckbUseVign->set_active (pp->lensProf.useVign && isRaw); - ckbUseCA->set_active(pp->lensProf.useCA && isRaw && ckbUseCA->get_sensitive()); - enableListener (); + updateLensfunWarning(); + enableListener(); conUseDist.block(false); } - -void LensProfilePanel::updateLensfunWarning() +void LensProfilePanel::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) { - warning->hide(); - if (corrLensfunManual->get_active() || corrLensfunAuto->get_active()) { - const LFDatabase *db = LFDatabase::getInstance(); - - auto itc = lensfunCameras->get_active(); - if (!itc) { - return; - } - LFCamera c = db->findCamera((*itc)[lf->lensfunModelCam.make], (*itc)[lf->lensfunModelCam.model]); - auto itl = lensfunLenses->get_active(); - if (!itl) { - return; - } - LFLens l = db->findLens(LFCamera(), (*itl)[lf->lensfunModelLens.lens]); - float lenscrop = l.getCropFactor(); - float camcrop = c.getCropFactor(); - if (lenscrop <= 0 || camcrop <= 0 || lenscrop / camcrop >= 1.01f) { - warning->show(); - } - ckbUseVign->set_sensitive(l.hasVignettingCorrection()); - ckbUseDist->set_sensitive(l.hasDistortionCorrection()); - ckbUseCA->set_sensitive(l.hasCACorrection()); - if (!isRaw || !l.hasVignettingCorrection()) { - ckbUseVign->set_active(false); - } - if (!l.hasDistortionCorrection()) { - ckbUseDist->set_active(false); - } - if (!l.hasCACorrection()) { - ckbUseCA->set_active(false); - } - } -} - -void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta) -{ - if (!raw || pMeta->getFocusDist() <= 0) { - disableListener(); - - // CA is very focus layer dependent, otherwise it might even worsen things - allowFocusDep = false; - ckbUseCA->set_active(false); - ckbUseCA->set_sensitive(false); - - enableListener(); - } - - isRaw = raw; - metadata = pMeta; -} - -void LensProfilePanel::write( rtengine::procparams::ProcParams* pp, ParamsEdited* pedited) -{ - if (corrLcpFile->get_active()) { + if (corrLcpFileRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LCP; - } else if(corrLensfunManual->get_active()) { + } + else if (corrLensfunManualRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNMANUAL; - } else if(corrLensfunAuto->get_active()) { + } + else if (corrLensfunAutoRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::LENSFUNAUTOMATCH; - } else if(corrOff->get_active()) { + } + else if (corrOffRB->get_active()) { pp->lensProf.lcMode = procparams::LensProfParams::LcMode::NONE; } - if (LCPStore::getInstance()->isValidLCPFileName(fcbLCPFile->get_filename())) { - pp->lensProf.lcpFile = fcbLCPFile->get_filename(); + if (LCPStore::getInstance()->isValidLCPFileName(corrLcpFileChooser->get_filename())) { + pp->lensProf.lcpFile = corrLcpFileChooser->get_filename(); } else { pp->lensProf.lcpFile = ""; } @@ -306,16 +317,19 @@ void LensProfilePanel::write( rtengine::procparams::ProcParams* pp, ParamsEdited pp->lensProf.useVign = ckbUseVign->get_active(); pp->lensProf.useCA = ckbUseCA->get_active(); - auto itc = lensfunCameras->get_active(); - if (itc) { + const auto itc = lensfunCameras->get_active(); + + if (itc && !corrLensfunAutoRB->get_active()) { pp->lensProf.lfCameraMake = (*itc)[lf->lensfunModelCam.make]; pp->lensProf.lfCameraModel = (*itc)[lf->lensfunModelCam.model]; } else { pp->lensProf.lfCameraMake = ""; pp->lensProf.lfCameraModel = ""; } - auto itl = lensfunLenses->get_active(); - if (itl) { + + const auto itl = lensfunLenses->get_active(); + + if (itl && !corrLensfunAutoRB->get_active()) { pp->lensProf.lfLens = (*itl)[lf->lensfunModelLens.lens]; } else { pp->lensProf.lfLens = ""; @@ -335,141 +349,102 @@ void LensProfilePanel::write( rtengine::procparams::ProcParams* pp, ParamsEdited } } +void LensProfilePanel::setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta) +{ + if ((!raw || pMeta->getFocusDist() <= 0) && !batchMode) { + disableListener(); + + // CA is very focus layer dependent, otherwise it might even worsen things + allowFocusDep = false; + ckbUseCA->set_active(false); + ckbUseCA->set_sensitive(false); + + enableListener(); + } + + isRaw = raw; + metadata = pMeta; +} + void LensProfilePanel::onLCPFileChanged() { lcpFileChanged = true; - bool valid = LCPStore::getInstance()->isValidLCPFileName(fcbLCPFile->get_filename()); + const bool valid = LCPStore::getInstance()->isValidLCPFileName(corrLcpFileChooser->get_filename()); updateDisabled(valid); if (listener) { if (valid) { disableListener(); - corrLcpFile->set_active(true); + corrLcpFileRB->set_active(true); enableListener(); } - listener->panelChanged (EvLCPFile, Glib::path_get_basename(fcbLCPFile->get_filename())); + + listener->panelChanged(EvLCPFile, Glib::path_get_basename(corrLcpFileChooser->get_filename())); } } void LensProfilePanel::onUseDistChanged() { useDistChanged = true; + if (ckbUseDist->get_inconsistent()) { + ckbUseDist->set_inconsistent(false); + ckbUseDist->set_active(false); + } if (listener) { - listener->panelChanged (EvLCPUseDist, ckbUseDist->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + listener->panelChanged(EvLCPUseDist, ckbUseDist->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } + void LensProfilePanel::onUseVignChanged() { useVignChanged = true; + if (ckbUseVign->get_inconsistent()) { + ckbUseVign->set_inconsistent(false); + ckbUseVign->set_active(false); + } if (listener) { - listener->panelChanged (EvLCPUseVign, ckbUseVign->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + listener->panelChanged(EvLCPUseVign, ckbUseVign->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } + void LensProfilePanel::onUseCAChanged() { useCAChanged = true; + if (ckbUseCA->get_inconsistent()) { + ckbUseCA->set_inconsistent(false); + ckbUseCA->set_active(false); + } if (listener) { - listener->panelChanged (EvLCPUseCA, ckbUseCA->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); + listener->panelChanged(EvLCPUseCA, ckbUseCA->get_active() ? M("GENERAL_ENABLED") : M("GENERAL_DISABLED")); } } -void LensProfilePanel::updateDisabled(bool enable) -{ - ckbUseDist->set_sensitive(enable); - ckbUseVign->set_sensitive(enable && isRaw); - ckbUseCA->set_sensitive(enable && allowFocusDep); -} - void LensProfilePanel::setBatchMode(bool yes) { FoldableToolPanel::setBatchMode(yes); - if (yes) { - corrUnchanged->show(); - corrUnchanged->set_active(true); - } else { - corrUnchanged->hide(); - } + + corrUnchangedRB->set_group(corrGroup); + modesGrid->attach_next_to(*corrUnchangedRB, Gtk::POS_TOP, 3, 1); + corrUnchangedRB->signal_toggled().connect(sigc::bind(sigc::mem_fun(*this, &LensProfilePanel::onCorrModeChanged), corrUnchangedRB)); + corrUnchangedRB->set_active(true); } - -bool LensProfilePanel::setLensfunCamera(const Glib::ustring &make, const Glib::ustring &model) -{ - if (!make.empty() && !model.empty()) { - auto it = lensfunCameras->get_active(); - if (it && (*it)[lf->lensfunModelCam.make] == make && (*it)[lf->lensfunModelCam.model] == model) { - return true; - } - - // search for the active row - for (auto row : lf->lensfunCameraModel->children()) { - if (row[lf->lensfunModelCam.make] == make) { - auto &c = row.children(); - for (auto it = c.begin(), end = c.end(); it != end; ++it) { - auto &childrow = *it; - if (childrow[lf->lensfunModelCam.model] == model) { - lensfunCameras->set_active(it); - return true; - } - } - break; - } - } - } - lensfunCameras->set_active(-1); - return false; -} - - -bool LensProfilePanel::setLensfunLens(const Glib::ustring &lens) -{ - if (!lens.empty()) { - auto it = lensfunLenses->get_active(); - if (it && (*it)[lf->lensfunModelLens.lens] == lens) { - return true; - } - - bool first_maker_found = false; - for (auto row : lf->lensfunLensModel->children()) { - if (lens.find(row[lf->lensfunModelLens.lens]) == 0) { - auto &c = row.children(); - for (auto it = c.begin(), end = c.end(); it != end; ++it) { - auto &childrow = *it; - if (childrow[lf->lensfunModelLens.lens] == lens) { - lensfunLenses->set_active(it); - return true; - } - } - // we do not break immediately here, because there might be multiple makers - // sharing the same prefix (e.g. "Leica" and "Leica Camera AG"). - // therefore, we break below when the lens doesn't match any of them - first_maker_found = true; - } else if (first_maker_found) { - break; - } - } - } - lensfunLenses->set_active(-1); - return false; -} - - - void LensProfilePanel::onLensfunCameraChanged() { - auto iter = lensfunCameras->get_active(); + const auto iter = lensfunCameras->get_active(); if (iter) { lensfunCameraChanged = true; if (listener) { disableListener(); - corrLensfunManual->set_active(true); + corrLensfunManualRB->set_active(true); enableListener(); - - Glib::ustring name = (*iter)[lf->lensfunModelCam.model]; + + const Glib::ustring name = (*iter)[lf->lensfunModelCam.model]; listener->panelChanged(EvLensCorrLensfunCamera, name); } } @@ -477,20 +452,19 @@ void LensProfilePanel::onLensfunCameraChanged() updateLensfunWarning(); } - void LensProfilePanel::onLensfunLensChanged() { - auto iter = lensfunLenses->get_active(); + const auto iter = lensfunLenses->get_active(); if (iter) { lensfunLensChanged = true; if (listener) { disableListener(); - corrLensfunManual->set_active(true); + corrLensfunManualRB->set_active(true); enableListener(); - - Glib::ustring name = (*iter)[lf->lensfunModelLens.prettylens]; + + const Glib::ustring name = (*iter)[lf->lensfunModelLens.prettylens]; listener->panelChanged(EvLensCorrLensfunLens, name); } } @@ -498,70 +472,80 @@ void LensProfilePanel::onLensfunLensChanged() updateLensfunWarning(); } - -void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) +void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton* rbChanged) { if (rbChanged->get_active()) { // because the method gets called for the enabled AND the disabled RadioButton, we do the processing only for the enabled one Glib::ustring mode; - if (rbChanged == corrOff) { + if (rbChanged == corrOffRB) { + lcModeChanged = true; useLensfunChanged = true; lensfunAutoChanged = true; - lcpFileChanged = true; + lcpFileChanged = false; ckbUseDist->set_sensitive(false); ckbUseVign->set_sensitive(false); ckbUseCA->set_sensitive(false); mode = M("GENERAL_NONE"); - } else if (rbChanged == corrLensfunAuto) { + + } else if (rbChanged == corrLensfunAutoRB) { + lcModeChanged = true; useLensfunChanged = true; lensfunAutoChanged = true; - lcpFileChanged = true; - useDistChanged = true; - useVignChanged = true; + lensfunCameraChanged = true; + lensfunLensChanged = true; + lcpFileChanged = false; ckbUseDist->set_sensitive(true); ckbUseVign->set_sensitive(true); - ckbUseCA->set_sensitive(false); + ckbUseCA->set_sensitive(true); - if (metadata) { - bool b = disableListener(); - const LFDatabase *db = LFDatabase::getInstance(); - LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel()); - LFLens l = db->findLens(c, metadata->getLens()); + + const bool disabled = disableListener(); + if (batchMode) { + setLensfunCamera("", ""); + setLensfunLens(""); + } else if (metadata) { + const LFDatabase* const db = LFDatabase::getInstance(); + const LFCamera c = db->findCamera(metadata->getMake(), metadata->getModel()); + const LFLens l = db->findLens(c, metadata->getLens()); setLensfunCamera(c.getMake(), c.getModel()); setLensfunLens(l.getLens()); - if (b) { - enableListener(); - } } - - mode = M("LENSPROFILE_CORRECTION_AUTOMATCH"); - } else if (rbChanged == corrLensfunManual) { + if (disabled) { + enableListener(); + } + + mode = M("TP_LENSPROFILE_CORRECTION_AUTOMATCH"); + + } else if (rbChanged == corrLensfunManualRB) { + lcModeChanged = true; useLensfunChanged = true; lensfunAutoChanged = true; - lcpFileChanged = true; - useDistChanged = true; - useVignChanged = true; + lensfunCameraChanged = true; + lensfunLensChanged = true; + lcpFileChanged = false; ckbUseDist->set_sensitive(true); ckbUseVign->set_sensitive(true); ckbUseCA->set_sensitive(false); - mode = M("LENSPROFILE_CORRECTION_MANUAL"); - } else if (rbChanged == corrLcpFile) { + mode = M("TP_LENSPROFILE_CORRECTION_MANUAL"); + + } else if (rbChanged == corrLcpFileRB) { + lcModeChanged = true; useLensfunChanged = true; lensfunAutoChanged = true; lcpFileChanged = true; - useDistChanged = true; - useVignChanged = true; updateDisabled(true); - mode = M("LENSPROFILE_CORRECTION_LCPFILE"); - } else if (rbChanged == corrUnchanged) { + mode = M("TP_LENSPROFILE_CORRECTION_LCPFILE"); + + } else if (rbChanged == corrUnchangedRB) { + lcModeChanged = false; useLensfunChanged = false; lensfunAutoChanged = false; lcpFileChanged = false; @@ -575,28 +559,20 @@ void LensProfilePanel::onCorrModeChanged(const Gtk::RadioButton *rbChanged) mode = M("GENERAL_UNCHANGED"); } - lcModeChanged = true; updateLensfunWarning(); + if (rbChanged == corrLensfunManualRB || (!batchMode && rbChanged == corrLensfunAutoRB)) { + setManualParamsVisibility(true); + } else { + setManualParamsVisibility(false); + } + if (listener) { listener->panelChanged(EvLensCorrMode, mode); } } } - -bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) -{ - if (!metadata) { - return false; - } - rtengine::procparams::ProcParams lpp; - write(&lpp); - std::unique_ptr mod(LFDatabase::findModifier(lpp.lensProf, metadata, 100, 100, lpp.coarse, -1)); - return mod.get() != nullptr; -} - - //----------------------------------------------------------------------------- // LFDbHelper //----------------------------------------------------------------------------- @@ -606,22 +582,22 @@ LensProfilePanel::LFDbHelper::LFDbHelper() #ifdef _OPENMP #pragma omp parallel sections if (!options.rtSettings.verbose) #endif -{ + { #ifdef _OPENMP #pragma omp section #endif -{ - lensfunCameraModel = Gtk::TreeStore::create(lensfunModelCam); - fillLensfunCameras(); -} + { + lensfunCameraModel = Gtk::TreeStore::create(lensfunModelCam); + fillLensfunCameras(); + } #ifdef _OPENMP #pragma omp section #endif -{ - lensfunLensModel = Gtk::TreeStore::create(lensfunModelLens); - fillLensfunLenses(); -} -} + { + lensfunLensModel = Gtk::TreeStore::create(lensfunModelLens); + fillLensfunLenses(); + } + } } void LensProfilePanel::LFDbHelper::fillLensfunCameras() @@ -629,20 +605,24 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() if (options.rtSettings.verbose) { std::cout << "LENSFUN, scanning cameras:" << std::endl; } + std::map> camnames; - auto camlist = LFDatabase::getInstance()->getCameras(); - for (auto &c : camlist) { + const auto camlist = LFDatabase::getInstance()->getCameras(); + + for (const auto& c : camlist) { camnames[c.getMake()].insert(c.getModel()); if (options.rtSettings.verbose) { std::cout << " found: " << c.getDisplayString().c_str() << std::endl; - } + } } - for (auto &p : camnames) { + + for (const auto& p : camnames) { Gtk::TreeModel::Row row = *(lensfunCameraModel->append()); row[lensfunModelCam.make] = p.first; row[lensfunModelCam.model] = p.first; - for (auto &c : p.second) { + + for (const auto& c : p.second) { Gtk::TreeModel::Row child = *(lensfunCameraModel->append(row.children())); child[lensfunModelCam.make] = p.first; child[lensfunModelCam.model] = c; @@ -650,35 +630,195 @@ void LensProfilePanel::LFDbHelper::fillLensfunCameras() } } - void LensProfilePanel::LFDbHelper::fillLensfunLenses() { if (options.rtSettings.verbose) { std::cout << "LENSFUN, scanning lenses:" << std::endl; } + std::map> lenses; - auto lenslist = LFDatabase::getInstance()->getLenses(); - for (auto &l : lenslist) { - auto name = l.getLens(); - auto make = l.getMake(); + const auto lenslist = LFDatabase::getInstance()->getLenses(); + + for (const auto& l : lenslist) { + const auto& name = l.getLens(); + const auto& make = l.getMake(); lenses[make].insert(name); if (options.rtSettings.verbose) { std::cout << " found: " << l.getDisplayString().c_str() << std::endl; } } - for (auto &p : lenses) { + + for (const auto& p : lenses) { Gtk::TreeModel::Row row = *(lensfunLensModel->append()); row[lensfunModelLens.lens] = p.first; row[lensfunModelLens.prettylens] = p.first; + for (auto &c : p.second) { Gtk::TreeModel::Row child = *(lensfunLensModel->append(row.children())); child[lensfunModelLens.lens] = c; - if (c.find(p.first, p.first.size()+1) == p.first.size()+1) { - child[lensfunModelLens.prettylens] = c.substr(p.first.size()+1); + + if (c.find(p.first, p.first.size() + 1) == p.first.size() + 1) { + child[lensfunModelLens.prettylens] = c.substr(p.first.size() + 1); } else { child[lensfunModelLens.prettylens] = c; } } } } + +void LensProfilePanel::updateDisabled(bool enable) +{ + if (!batchMode) { + ckbUseDist->set_sensitive(enable); + ckbUseVign->set_sensitive(enable && isRaw); + ckbUseCA->set_sensitive(enable && allowFocusDep); + } +} + +bool LensProfilePanel::setLensfunCamera(const Glib::ustring& make, const Glib::ustring& model) +{ + if (!make.empty() && !model.empty()) { + const auto camera_it = lensfunCameras->get_active(); + + if (camera_it && (*camera_it)[lf->lensfunModelCam.make] == make && (*camera_it)[lf->lensfunModelCam.model] == model) { + return true; + } + + // search for the active row + for (const auto& row : lf->lensfunCameraModel->children()) { + if (row[lf->lensfunModelCam.make] == make) { + const auto& c = row.children(); + + for (auto model_it = c.begin(), end = c.end(); model_it != end; ++model_it) { + const auto& childrow = *model_it; + + if (childrow[lf->lensfunModelCam.model] == model) { + lensfunCameras->set_active(model_it); + return true; + } + } + + break; + } + } + } + + lensfunCameras->set_active(-1); + return false; +} + +bool LensProfilePanel::setLensfunLens(const Glib::ustring& lens) +{ + if (!lens.empty()) { + const auto lens_it = lensfunLenses->get_active(); + + if (lens_it && (*lens_it)[lf->lensfunModelLens.lens] == lens) { + return true; + } + + bool first_maker_found = false; + + for (const auto& row : lf->lensfunLensModel->children()) { + if (lens.find(row[lf->lensfunModelLens.lens]) == 0) { + const auto& c = row.children(); + + for (auto model_it = c.begin(), end = c.end(); model_it != end; ++model_it) { + const auto& childrow = *model_it; + + if (childrow[lf->lensfunModelLens.lens] == lens) { + lensfunLenses->set_active(model_it); + return true; + } + } + + // we do not break immediately here, because there might be multiple makers + // sharing the same prefix (e.g. "Leica" and "Leica Camera AG"). + // therefore, we break below when the lens doesn't match any of them + first_maker_found = true; + } else if (first_maker_found) { + break; + } + } + } + + lensfunLenses->set_active(-1); + return false; +} + +bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) +{ + if (!metadata) { + return false; + } + + rtengine::procparams::ProcParams lpp; + write(&lpp); + const std::unique_ptr mod(LFDatabase::findModifier(lpp.lensProf, metadata, 100, 100, lpp.coarse, -1)); + return static_cast(mod); +} + +void LensProfilePanel::setManualParamsVisibility(bool setVisible) +{ + if (setVisible) { + lensfunCamerasLbl->show(); + lensfunCameras->show(); + lensfunLensesLbl->show(); + lensfunLenses->show(); + updateLensfunWarning(); + } else { + lensfunCamerasLbl->hide(); + lensfunCameras->hide(); + lensfunLensesLbl->hide(); + lensfunLenses->hide(); + warning->hide(); + } +} + +void LensProfilePanel::updateLensfunWarning() +{ + warning->hide(); + + if (corrLensfunManualRB->get_active() || corrLensfunAutoRB->get_active()) { + const LFDatabase* const db = LFDatabase::getInstance(); + + const auto itc = lensfunCameras->get_active(); + + if (!itc) { + return; + } + + const LFCamera c = db->findCamera((*itc)[lf->lensfunModelCam.make], (*itc)[lf->lensfunModelCam.model]); + const auto itl = lensfunLenses->get_active(); + + if (!itl) { + return; + } + + const LFLens l = db->findLens(LFCamera(), (*itl)[lf->lensfunModelLens.lens]); + const float lenscrop = l.getCropFactor(); + const float camcrop = c.getCropFactor(); + + if (lenscrop <= 0 || camcrop <= 0 || lenscrop / camcrop >= 1.01f) { + warning->show(); + } + + ckbUseVign->set_sensitive(l.hasVignettingCorrection()); + ckbUseDist->set_sensitive(l.hasDistortionCorrection()); + ckbUseCA->set_sensitive(l.hasCACorrection()); + + if (!isRaw || !l.hasVignettingCorrection()) { + ckbUseVign->set_active(false); + } + + if (!l.hasDistortionCorrection()) { + ckbUseDist->set_active(false); + } + + if (!l.hasCACorrection()) { + ckbUseCA->set_active(false); + } + } +} + +LensProfilePanel::LFDbHelper* LensProfilePanel::lf(nullptr); diff --git a/rtgui/lensprofile.h b/rtgui/lensprofile.h index 8c814e6fc..76c15aa9a 100644 --- a/rtgui/lensprofile.h +++ b/rtgui/lensprofile.h @@ -16,96 +16,120 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ -#ifndef _LENSPROFILE_H_ -#define _LENSPROFILE_H_ +#pragma once #include -#include "toolpanel.h" + #include "guiutils.h" #include "lensgeom.h" +#include "toolpanel.h" -class LensProfilePanel : public ToolParamBlock, public FoldableToolPanel +class LensProfilePanel final : + public ToolParamBlock, + public FoldableToolPanel { +public: + LensProfilePanel(); -protected: + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setRawMeta(bool raw, const rtengine::FramesMetaData* pMeta); - MyFileChooserButton *fcbLCPFile; - Gtk::CheckButton *ckbUseDist, *ckbUseVign, *ckbUseCA; - Gtk::HBox *hbLCPFile; - Gtk::Label *lLCPFileHead; - bool lcModeChanged, lcpFileChanged, useDistChanged, useVignChanged, useCAChanged; - sigc::connection conLCPFile, conUseDist, conUseVign, conUseCA; - void updateDisabled(bool enable); - bool allowFocusDep; - bool isRaw; - const rtengine::FramesMetaData* metadata; + void onLCPFileChanged(); + void onUseDistChanged(); + void onUseVignChanged(); + void onUseCAChanged(); - Gtk::RadioButton::Group corrGroup; - Gtk::RadioButton *corrOff; - Gtk::RadioButton *corrLensfunAuto; - Gtk::RadioButton *corrLensfunManual; - Gtk::RadioButton *corrLcpFile; - Gtk::RadioButton *corrUnchanged; - MyComboBox *lensfunCameras; - MyComboBox *lensfunLenses; - Gtk::Image *warning; + void setBatchMode(bool yes) override; - class LFDbHelper { + void onLensfunCameraChanged(); + void onLensfunLensChanged(); + void onCorrModeChanged(const Gtk::RadioButton* rbChanged); + +private: + class LFDbHelper final + { public: - class LFModelCam: public Gtk::TreeModel::ColumnRecord { + class LFModelCam final : + public Gtk::TreeModel::ColumnRecord + { public: - LFModelCam() { add(make); add(model); } + LFModelCam() + { + add(make); + add(model); + } Gtk::TreeModelColumn make; Gtk::TreeModelColumn model; }; - class LFModelLens: public Gtk::TreeModel::ColumnRecord { + class LFModelLens final : + public Gtk::TreeModel::ColumnRecord + { public: - LFModelLens() { add(lens); add(prettylens); } + LFModelLens() + { + add(lens); + add(prettylens); + } Gtk::TreeModelColumn lens; Gtk::TreeModelColumn prettylens; }; LFModelCam lensfunModelCam; LFModelLens lensfunModelLens; - + Glib::RefPtr lensfunCameraModel; Glib::RefPtr lensfunLensModel; LFDbHelper(); + void fillLensfunCameras(); void fillLensfunLenses(); }; - static LFDbHelper *lf; + void updateDisabled(bool enable); + + bool setLensfunCamera(const Glib::ustring& make, const Glib::ustring& model); + bool setLensfunLens(const Glib::ustring& lens); + bool checkLensfunCanCorrect(bool automatch); + void setManualParamsVisibility(bool setVisible); + void updateLensfunWarning(); + + bool lcModeChanged; + bool lcpFileChanged; + bool useDistChanged; + bool useVignChanged; + bool useCAChanged; bool useLensfunChanged; bool lensfunAutoChanged; bool lensfunCameraChanged; bool lensfunLensChanged; + sigc::connection conLCPFile; + sigc::connection conUseDist; + sigc::connection conUseVign; + sigc::connection conUseCA; + bool allowFocusDep; + bool isRaw; + const rtengine::FramesMetaData* metadata; - bool setLensfunCamera(const Glib::ustring &make, const Glib::ustring &model); - bool setLensfunLens(const Glib::ustring &lens); - bool checkLensfunCanCorrect(bool automatch); - void updateLensfunWarning(); - -public: + Gtk::Grid* const modesGrid; + Gtk::Grid* const distGrid; + Gtk::RadioButton* const corrUnchangedRB; + Gtk::RadioButton::Group corrGroup; + Gtk::RadioButton* const corrOffRB; + Gtk::RadioButton* const corrLensfunAutoRB; + Gtk::RadioButton* const corrLensfunManualRB; + Gtk::RadioButton* const corrLcpFileRB; + MyFileChooserButton* const corrLcpFileChooser; + Gtk::Label* const lensfunCamerasLbl; + MyComboBox* const lensfunCameras; + Gtk::Label* const lensfunLensesLbl; + MyComboBox* const lensfunLenses; + Gtk::Image* const warning; + Gtk::CheckButton* const ckbUseDist; + Gtk::CheckButton* const ckbUseVign; + Gtk::CheckButton* const ckbUseCA; - LensProfilePanel (); - - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setRawMeta (bool raw, const rtengine::FramesMetaData* pMeta); - - void onLCPFileChanged (); - void onUseDistChanged(); - void onUseVignChanged(); - void onUseCAChanged(); - - void setBatchMode(bool yes); - - void onLensfunCameraChanged(); - void onLensfunLensChanged(); - void onCorrModeChanged(const Gtk::RadioButton *rbChanged); + static LFDbHelper* lf; }; - -#endif diff --git a/rtgui/localcontrast.h b/rtgui/localcontrast.h index 89341c976..efe7a18f0 100644 --- a/rtgui/localcontrast.h +++ b/rtgui/localcontrast.h @@ -41,14 +41,14 @@ public: LocalContrast(); - void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr); - void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr); - void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr); - void setBatchMode(bool batchMode); + void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr) override; + void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr) override; + void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr) override; + void setBatchMode(bool batchMode) override; - void adjusterChanged(Adjuster *a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged(); + void adjusterChanged(Adjuster *a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged() override; void setAdjusterBehavior(bool radiusAdd, bool amountAdd, bool darknessAdd, bool lightnessAdd); }; diff --git a/rtgui/main-cli.cc b/rtgui/main-cli.cc index 26ee4fa81..be225378e 100644 --- a/rtgui/main-cli.cc +++ b/rtgui/main-cli.cc @@ -203,7 +203,9 @@ int main (int argc, char **argv) // Move the old path to the new one if the new does not exist if (Glib::file_test (Glib::build_filename (options.rtdir, "cache"), Glib::FILE_TEST_IS_DIR) && !Glib::file_test (options.cacheBaseDir, Glib::FILE_TEST_IS_DIR)) { - g_rename (Glib::build_filename (options.rtdir, "cache").c_str (), options.cacheBaseDir.c_str ()); + if (g_rename (Glib::build_filename (options.rtdir, "cache").c_str (), options.cacheBaseDir.c_str ()) == -1) { + std::cout << "g_rename " << Glib::build_filename (options.rtdir, "cache").c_str () << " => " << options.cacheBaseDir.c_str () << " failed." << std::endl; + } } #endif @@ -410,8 +412,6 @@ int processLineParams ( int argc, char **argv ) return -3; } - std::cout << "Output is " << bits << "-bit " << (isFloat ? "floating-point" : "integer") << "." << std::endl; - break; case 't': @@ -622,6 +622,18 @@ int processLineParams ( int argc, char **argv ) } } + if (bits == -1) { + if (outputType == "jpg") { + bits = 8; + } else if (outputType == "png") { + bits = 8; + } else if (outputType == "tif") { + bits = 16; + } else { + bits = 8; + } + } + if ( !argv1.empty() ) { return 1; } @@ -662,6 +674,7 @@ int processLineParams ( int argc, char **argv ) rtengine::procparams::ProcParams currentParams; Glib::ustring inputFile = inputFiles[iFile]; + std::cout << "Output is " << bits << "-bit " << (isFloat ? "floating-point" : "integer") << "." << std::endl; std::cout << "Processing: " << inputFile << std::endl; rtengine::InitialImage* ii = nullptr; diff --git a/rtgui/main.cc b/rtgui/main.cc index 8dc6b615c..b75fc0ec8 100644 --- a/rtgui/main.cc +++ b/rtgui/main.cc @@ -358,7 +358,7 @@ public: { } - ~RTApplication() + ~RTApplication() override { if (rtWindow) { delete rtWindow; @@ -536,7 +536,7 @@ int main (int argc, char **argv) bool Console = true; for (int i = 1; i < argc; i++) - if (!strcmp (argv[i], "-w")) { + if (!strcmp (argv[i], "-w") || !strcmp (argv[i], "-R") || !strcmp (argv[i], "-gimp")) { Console = false; break; } diff --git a/rtgui/metadatapanel.h b/rtgui/metadatapanel.h index a2c1f43ac..d34a04585 100644 --- a/rtgui/metadatapanel.h +++ b/rtgui/metadatapanel.h @@ -36,14 +36,14 @@ private: public: MetaDataPanel(); - ~MetaDataPanel(); + ~MetaDataPanel() override; - void setBatchMode(bool batchMode); - void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void setBatchMode(bool batchMode) override; + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void setImageData(const rtengine::FramesMetaData* id); - void setListener(ToolPanelListener *tpl); + void setListener(ToolPanelListener *tpl) override; }; diff --git a/rtgui/multilangmgr.cc b/rtgui/multilangmgr.cc index 8d2985436..a439c0602 100644 --- a/rtgui/multilangmgr.cc +++ b/rtgui/multilangmgr.cc @@ -209,27 +209,6 @@ Glib::ustring MultiLangMgr::getOSUserLanguage () { Glib::ustring langName ("default"); -#if defined (WIN32) - - const LCID localeID = GetUserDefaultLCID (); - TCHAR localeName[18]; - - const int langLen = GetLocaleInfo (localeID, LOCALE_SISO639LANGNAME, localeName, 9); - if (langLen <= 0) { - return langName; - } - - localeName[langLen - 1] = '-'; - - const int countryLen = GetLocaleInfo (localeID, LOCALE_SISO3166CTRYNAME, &localeName[langLen], 9); - if (countryLen <= 0) { - return langName; - } - - langName = localeToLang (localeName); - -#elif defined (__linux__) || defined (__APPLE__) - // Query the current locale and force decimal point to dot. const char *locale = getenv("LANG"); if (locale || (locale = setlocale (LC_CTYPE, ""))) { @@ -238,7 +217,5 @@ Glib::ustring MultiLangMgr::getOSUserLanguage () setlocale (LC_NUMERIC, "C"); -#endif - return langName; } diff --git a/rtgui/mycurve.h b/rtgui/mycurve.h index 8521b5748..f555ab7ef 100644 --- a/rtgui/mycurve.h +++ b/rtgui/mycurve.h @@ -109,7 +109,7 @@ protected: public: MyCurve (); - ~MyCurve (); + ~MyCurve () override; void setCurveListener (CurveListener* cl) { @@ -126,10 +126,10 @@ public: { curveIsDirty = true; } - void on_style_updated (); + void on_style_updated () override; virtual std::vector getPoints () = 0; virtual void setPoints (const std::vector& p) = 0; - virtual bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) = 0; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override = 0; virtual bool handleEvents (GdkEvent* event) = 0; virtual void reset (const std::vector &resetCurve, double identityValue = 0.5) = 0; @@ -138,11 +138,11 @@ public: virtual void pipetteButton1Released(EditDataProvider *provider) = 0; virtual void pipetteDrag(EditDataProvider *provider, int modifierKey) = 0; - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; }; class MyCurveIdleHelper diff --git a/rtgui/mydiagonalcurve.cc b/rtgui/mydiagonalcurve.cc index d07ce5943..8a2e08d1a 100644 --- a/rtgui/mydiagonalcurve.cc +++ b/rtgui/mydiagonalcurve.cc @@ -545,7 +545,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event) double minDistanceY = double(MIN_DISTANCE) / double(graphH - 1); switch (event->type) { - case Gdk::BUTTON_PRESS: + case GDK_BUTTON_PRESS: snapToElmt = -100; if (curve.type != DCT_Parametric) { @@ -694,7 +694,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event) break; - case Gdk::BUTTON_RELEASE: + case GDK_BUTTON_RELEASE: snapToElmt = -100; if (curve.type != DCT_Parametric && edited_point == -1) { @@ -755,7 +755,7 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event) break; - case Gdk::LEAVE_NOTIFY: + case GDK_LEAVE_NOTIFY: // Pointer can LEAVE even when dragging the point, so we don't modify the cursor in this case // The cursor will have to LEAVE another time after the drag... @@ -772,10 +772,10 @@ bool MyDiagonalCurve::handleEvents (GdkEvent* event) retval = true; break; - case Gdk::MOTION_NOTIFY: + case GDK_MOTION_NOTIFY: snapToElmt = -100; - if (curve.type == DCT_Linear || curve.type == DCT_Spline || curve.type == DCT_NURBS) { + if (curve.type == DCT_Linear || curve.type == DCT_Spline || curve.type == DCT_NURBS || curve.type == DCT_CatumullRom) { snapToMinDistY = snapToMinDistX = 10.; snapToValY = snapToValX = 0.; @@ -1026,7 +1026,7 @@ void MyDiagonalCurve::pipetteMouseOver (CurveEditor *ce, EditDataProvider *provi double minDistanceX = double(MIN_DISTANCE) / double(graphW - 1); - if (curve.type == DCT_Linear || curve.type == DCT_Spline || curve.type == DCT_NURBS) { + if (curve.type == DCT_Linear || curve.type == DCT_Spline || curve.type == DCT_NURBS || curve.type == DCT_CatumullRom) { // get the pointer position getCursorPositionFromCurve(pipetteVal); @@ -1415,6 +1415,8 @@ std::vector MyDiagonalCurve::getPoints () result.push_back (double(DCT_Spline)); } else if (curve.type == DCT_NURBS) { result.push_back (double(DCT_NURBS)); + } else if (curve.type == DCT_CatumullRom) { + result.push_back (double(DCT_CatumullRom)); } // then we push all the points coordinate @@ -1552,6 +1554,7 @@ void MyDiagonalCurve::reset(const std::vector &resetCurve, double identi switch (curve.type) { case DCT_Spline : case DCT_NURBS : + case DCT_CatumullRom: curve.x.resize(2); curve.y.resize(2); curve.x.at(0) = 0.; diff --git a/rtgui/mydiagonalcurve.h b/rtgui/mydiagonalcurve.h index abb8d3dc6..5b0f6f01e 100644 --- a/rtgui/mydiagonalcurve.h +++ b/rtgui/mydiagonalcurve.h @@ -34,6 +34,7 @@ enum DiagonalCurveType { DCT_Spline, // 1 DCT_Parametric, // 2 DCT_NURBS, // 3 + DCT_CatumullRom, // 4 // Insert new curve type above this line DCT_Unchanged // Must remain the last of the enum }; @@ -72,7 +73,7 @@ protected: void interpolate (); void findClosestPoint(); CursorShape motionNotify(CursorShape type, double minDistanceX, double minDistanceY, int num); - std::vector get_vector (int veclen); + std::vector get_vector (int veclen) override; void get_LUT (LUTf &lut); // Get the cursor position and unclamped position from the curve given an X value ; BEWARE: can be time consuming, use with care void getCursorPositionFromCurve(float x); @@ -82,23 +83,23 @@ protected: public: MyDiagonalCurve (); - ~MyDiagonalCurve (); - std::vector getPoints (); - void setPoints (const std::vector& p); + ~MyDiagonalCurve () override; + std::vector getPoints () override; + void setPoints (const std::vector& p) override; void setType (DiagonalCurveType t); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - bool handleEvents (GdkEvent* event); + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool handleEvents (GdkEvent* event) override; void setActiveParam (int ac); - void reset (const std::vector &resetCurve, double identityValue = 0.5); + void reset (const std::vector &resetCurve, double identityValue = 0.5) override; void updateBackgroundHistogram (LUTu & hist); - void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey); - bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); - void pipetteButton1Released(EditDataProvider *provider); - void pipetteDrag(EditDataProvider *provider, int modifierKey); + void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey) override; + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override; + void pipetteButton1Released(EditDataProvider *provider) override; + void pipetteDrag(EditDataProvider *provider, int modifierKey) override; - virtual void setPos(double pos, int chanIdx); - virtual void stopNumericalAdjustment(); + void setPos(double pos, int chanIdx) override; + void stopNumericalAdjustment() override; }; #endif diff --git a/rtgui/myflatcurve.cc b/rtgui/myflatcurve.cc index 70fc0c7d7..9b64ee516 100644 --- a/rtgui/myflatcurve.cc +++ b/rtgui/myflatcurve.cc @@ -613,7 +613,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event) switch (event->type) { - case Gdk::BUTTON_PRESS: + case GDK_BUTTON_PRESS: if (edited_point == -1) { //curve.type!=FCT_Parametric) { if (event->button.button == 1) { buttonPressed = true; @@ -816,7 +816,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event) break; - case Gdk::BUTTON_RELEASE: + case GDK_BUTTON_RELEASE: if (edited_point == -1) { //curve.type!=FCT_Parametric) { if (buttonPressed && event->button.button == 1) { buttonPressed = false; @@ -908,7 +908,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event) break; - case Gdk::MOTION_NOTIFY: + case GDK_MOTION_NOTIFY: if (curve.type == FCT_Linear || curve.type == FCT_MinMaxCPoints) { int previous_lit_point = lit_point; @@ -1178,7 +1178,7 @@ bool MyFlatCurve::handleEvents (GdkEvent* event) retval = true; break; - case Gdk::LEAVE_NOTIFY: + case GDK_LEAVE_NOTIFY: // Pointer can LEAVE even when dragging the point, so we don't modify the cursor in this case // The cursor will have to LEAVE another time after the drag... diff --git a/rtgui/myflatcurve.h b/rtgui/myflatcurve.h index 65a1e2230..c0223bfcf 100644 --- a/rtgui/myflatcurve.h +++ b/rtgui/myflatcurve.h @@ -112,31 +112,31 @@ protected: void getMouseOverArea (); bool getHandles(int n); CursorShape motionNotify(CursorShape type, double minDistanceX, double minDistanceY, int num); - std::vector get_vector (int veclen); + std::vector get_vector (int veclen) override; void get_LUT (LUTf &lut); public: MyFlatCurve (); //~MyFlatCurve (); - std::vector getPoints (); + std::vector getPoints () override; void setPeriodicity (bool isPeriodic) { periodic = isPeriodic; }; - void setPoints (const std::vector& p); + void setPoints (const std::vector& p) override; void setType (FlatCurveType t); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - bool handleEvents (GdkEvent* event); - void reset (const std::vector &resetCurve, double identityValue = 0.5); + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool handleEvents (GdkEvent* event) override; + void reset (const std::vector &resetCurve, double identityValue = 0.5) override; //void updateBackgroundHistogram (unsigned int* hist); - void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey); - bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey); - void pipetteButton1Released(EditDataProvider *provider); - void pipetteDrag(EditDataProvider *provider, int modifierKey); + void pipetteMouseOver (CurveEditor *ce, EditDataProvider *provider, int modifierKey) override; + bool pipetteButton1Pressed(EditDataProvider *provider, int modifierKey) override; + void pipetteButton1Released(EditDataProvider *provider) override; + void pipetteDrag(EditDataProvider *provider, int modifierKey) override; - void setPos(double pos, int chanIdx); - virtual void stopNumericalAdjustment(); + void setPos(double pos, int chanIdx) override; + void stopNumericalAdjustment() override; }; #endif diff --git a/rtgui/navigator.h b/rtgui/navigator.h index e7689b7c2..1b898f895 100644 --- a/rtgui/navigator.h +++ b/rtgui/navigator.h @@ -55,12 +55,12 @@ public: // pointermotionlistener interface // void pointerMoved (bool validPos, int x, int y, int r, int g, int b); - void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool raw = false); + void pointerMoved (bool validPos, const Glib::ustring &profile, const Glib::ustring &profileW, int x, int y, int r, int g, int b, bool raw = false) override; void setInvalid (int fullWidth = -1, int fullHeight = -1); - void getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB, bool isRaw = false); - void getHSVText (float h, float s, float v, Glib::ustring &sH, Glib::ustring &sS, Glib::ustring &sV); - void getLABText (float l, float a, float b, Glib::ustring &sL, Glib::ustring &sA, Glib::ustring &sB); + void getRGBText (int r, int g, int b, Glib::ustring &sR, Glib::ustring &sG, Glib::ustring &sB, bool isRaw = false) override; + void getHSVText (float h, float s, float v, Glib::ustring &sH, Glib::ustring &sS, Glib::ustring &sV) override; + void getLABText (float l, float a, float b, Glib::ustring &sL, Glib::ustring &sA, Glib::ustring &sB) override; }; diff --git a/rtgui/options.cc b/rtgui/options.cc index c690a42e3..b7975ddfe 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -399,6 +399,7 @@ void Options::setDefaults() autoSaveTpOpen = true; //crvOpen.clear (); parseExtensions.clear(); + favorites.clear(); parseExtensionsEnabled.clear(); parsedExtensions.clear(); renameUseTemplates = false; @@ -551,16 +552,16 @@ void Options::setDefaults() rtSettings.monitorIntent = rtengine::RI_RELATIVE; rtSettings.monitorBPC = true; rtSettings.autoMonitorProfile = false; - 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.adobe = "RTv2_Medium"; // put the name of yours profiles (here windows) + rtSettings.prophoto = "RTv2_Large"; // these names appear in the menu "output profile" + rtSettings.widegamut = "RTv2_Wide"; + rtSettings.srgb = "RTv2_sRGB"; + rtSettings.bruce = "RTv2_Bruce"; + rtSettings.beta = "RTv2_Beta"; + rtSettings.best = "RTv2_Best"; + rtSettings.rec2020 = "RTv2_Rec2020"; + rtSettings.ACESp0 = "RTv2_ACES-AP0"; + rtSettings.ACESp1 = "RTv2_ACES-AP1"; rtSettings.verbose = false; rtSettings.gamutICC = true; rtSettings.gamutLch = true; @@ -942,11 +943,17 @@ void Options::readFromFile(Glib::ustring fname) } if (keyFile.has_key("File Browser", "ParseExtensions")) { - parseExtensions = keyFile.get_string_list("File Browser", "ParseExtensions"); + auto l = keyFile.get_string_list("File Browser", "ParseExtensions"); + if (!l.empty()) { + parseExtensions = l; + } } if (keyFile.has_key("File Browser", "ParseExtensionsEnabled")) { - parseExtensionsEnabled = keyFile.get_integer_list("File Browser", "ParseExtensionsEnabled"); + auto l = keyFile.get_integer_list("File Browser", "ParseExtensionsEnabled"); + if (!l.empty()) { + parseExtensionsEnabled = l; + } } if (keyFile.has_key("File Browser", "ThumbnailArrangement")) { @@ -1069,6 +1076,10 @@ void Options::readFromFile(Glib::ustring fname) } if (keyFile.has_group("GUI")) { + if (keyFile.has_key("GUI", "Favorites")) { + favorites = keyFile.get_string_list("GUI", "Favorites"); + } + if (keyFile.has_key("GUI", "WindowWidth")) { windowWidth = keyFile.get_integer("GUI", "WindowWidth"); } @@ -1277,27 +1288,27 @@ void Options::readFromFile(Glib::ustring fname) if (keyFile.has_key("GUI", "HistogramPosition")) { histogramPosition = keyFile.get_integer("GUI", "HistogramPosition"); } - + if (keyFile.has_key("GUI", "HistogramRed")) { histogramRed = keyFile.get_boolean("GUI", "HistogramRed"); } - + if (keyFile.has_key("GUI", "HistogramGreen")) { histogramGreen = keyFile.get_boolean("GUI", "HistogramGreen"); } - + if (keyFile.has_key("GUI", "HistogramBlue")) { histogramBlue = keyFile.get_boolean("GUI", "HistogramBlue"); } - + if (keyFile.has_key("GUI", "HistogramLuma")) { histogramLuma = keyFile.get_boolean("GUI", "HistogramLuma"); } - + if (keyFile.has_key("GUI", "HistogramChroma")) { histogramChroma = keyFile.get_boolean("GUI", "HistogramChroma"); } - + if (keyFile.has_key("GUI", "HistogramRAW")) { histogramRAW = keyFile.get_boolean("GUI", "HistogramRAW"); } @@ -1305,11 +1316,11 @@ void Options::readFromFile(Glib::ustring fname) if (keyFile.has_key("GUI", "HistogramBar")) { histogramBar = keyFile.get_boolean("GUI", "HistogramBar"); } - + if (keyFile.has_key ("GUI", "HistogramHeight")) { histogramHeight = keyFile.get_integer ("GUI", "HistogramHeight"); } - + if (keyFile.has_key ("GUI", "HistogramDrawMode")) { histogramDrawMode = keyFile.get_integer ("GUI", "HistogramDrawMode"); } @@ -1442,66 +1453,74 @@ void Options::readFromFile(Glib::ustring fname) 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 (rtSettings.adobe == "RT_Medium_gsRGB" || rtSettings.adobe == "RTv4_Medium") { + rtSettings.adobe = "RTv2_Medium"; } } 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 (rtSettings.prophoto == "RT_Large_gBT709" || rtSettings.prophoto == "RTv4_Large") { + rtSettings.prophoto = "RTv2_Large"; } } if (keyFile.has_key("Color Management", "WideGamut")) { rtSettings.widegamut = keyFile.get_string("Color Management", "WideGamut"); - if (rtSettings.widegamut == "WideGamutRGB") { - rtSettings.widegamut = "RTv4_Wide"; + if (rtSettings.widegamut == "WideGamutRGB" || rtSettings.widegamut == "RTv4_Wide") { + rtSettings.widegamut = "RTv2_Wide"; } } 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 (rtSettings.srgb == "RT_sRGB" || rtSettings.srgb == "RTv4_sRGB") { + rtSettings.srgb = "RTv2_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 (rtSettings.beta == "BetaRGB" || rtSettings.beta == "RTv4_Beta") { + rtSettings.beta = "RTv2_Beta"; } } if (keyFile.has_key("Color Management", "Best")) { rtSettings.best = keyFile.get_string("Color Management", "Best"); - if (rtSettings.best == "BestRGB") { - rtSettings.best = "RTv4_Best"; + if (rtSettings.best == "BestRGB" || rtSettings.best == "RTv4_Best") { + rtSettings.best = "RTv2_Best"; } } if (keyFile.has_key("Color Management", "Rec2020")) { rtSettings.rec2020 = keyFile.get_string("Color Management", "Rec2020"); - if (rtSettings.rec2020 == "Rec2020") { - rtSettings.rec2020 = "RTv4_Rec2020"; + if (rtSettings.rec2020 == "Rec2020" || rtSettings.rec2020 == "RTv4_Rec2020") { + rtSettings.rec2020 = "RTv2_Rec2020"; } } if (keyFile.has_key("Color Management", "Bruce")) { rtSettings.bruce = keyFile.get_string("Color Management", "Bruce"); - if (rtSettings.bruce == "Bruce") { - rtSettings.bruce = "RTv4_Bruce"; + if (rtSettings.bruce == "Bruce" || rtSettings.bruce == "RTv4_Bruce") { + rtSettings.bruce = "RTv2_Bruce"; } } if (keyFile.has_key("Color Management", "ACES-AP0")) { rtSettings.ACESp0 = keyFile.get_string("Color Management", "ACES-AP0"); + if (rtSettings.ACESp0 == "RTv4_ACES-AP0") { + rtSettings.ACESp0 = "RTv2_ACES-AP0"; + } + } if (keyFile.has_key("Color Management", "ACES-AP1")) { rtSettings.ACESp1 = keyFile.get_string("Color Management", "ACES-AP1"); + if (rtSettings.ACESp1 == "RTv4_ACES-AP1") { + rtSettings.ACESp1 = "RTv2_ACES-AP1"; + } + } if (keyFile.has_key("Color Management", "GamutLch")) { @@ -1579,6 +1598,7 @@ void Options::readFromFile(Glib::ustring fname) if (keyFile.has_group("Batch Processing")) { if (keyFile.has_key("Batch Processing", "AdjusterBehavior")) { baBehav = keyFile.get_integer_list("Batch Processing", "AdjusterBehavior"); + baBehav.resize(ADDSET_PARAM_NUM); } } @@ -1959,6 +1979,8 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_string("Profiles", "CustomProfileBuilderPath", CPBPath); keyFile.set_integer("Profiles", "CustomProfileBuilderKeys", CPBKeys); + Glib::ArrayHandle ahfavorites = favorites; + keyFile.set_string_list("GUI", "Favorites", ahfavorites); keyFile.set_integer("GUI", "WindowWidth", windowWidth); keyFile.set_integer("GUI", "WindowHeight", windowHeight); keyFile.set_integer("GUI", "WindowX", windowX); diff --git a/rtgui/options.h b/rtgui/options.h index 3afeb94d9..5001306ff 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -108,8 +108,8 @@ public: class Error: public std::exception { public: - Error (const Glib::ustring &msg): msg_ (msg) {} - const char *what() const throw() + explicit Error (const Glib::ustring &msg): msg_ (msg) {} + const char *what() const throw() override { return msg_.c_str(); } @@ -375,6 +375,7 @@ public: int fastexport_resize_height; bool fastexport_use_fast_pipeline; + std::vector favorites; // Dialog settings Glib::ustring lastIccDir; Glib::ustring lastDarkframeDir; diff --git a/rtgui/paramsedited.cc b/rtgui/paramsedited.cc index 570d6ab2b..7f44c7738 100644 --- a/rtgui/paramsedited.cc +++ b/rtgui/paramsedited.cc @@ -141,10 +141,13 @@ void ParamsEdited::set(bool v) colorToning.labgridBLow = v; colorToning.labgridAHigh = v; colorToning.labgridBHigh = v; + colorToning.labregions = v; + colorToning.labregionsShowMask = v; sharpening.enabled = v; sharpening.contrast = v; sharpening.radius = v; + sharpening.blurradius = v; sharpening.amount = v; sharpening.threshold = v; sharpening.edgesonly = v; @@ -568,6 +571,10 @@ void ParamsEdited::set(bool v) filmSimulation.strength = v; softlight.enabled = v; softlight.strength = v; + dehaze.enabled = v; + dehaze.strength = v; + dehaze.showDepthMap = v; + dehaze.depth = v; metadata.mode = v; exif = v; @@ -699,6 +706,8 @@ void ParamsEdited::initFrom(const std::vector& colorToning.labgridBLow = colorToning.labgridBLow && p.colorToning.labgridBLow == other.colorToning.labgridBLow; colorToning.labgridAHigh = colorToning.labgridAHigh && p.colorToning.labgridAHigh == other.colorToning.labgridAHigh; colorToning.labgridBHigh = colorToning.labgridBHigh && p.colorToning.labgridBHigh == other.colorToning.labgridBHigh; + colorToning.labregions = colorToning.labregions && p.colorToning.labregions == other.colorToning.labregions; + colorToning.labregionsShowMask = colorToning.labregionsShowMask && p.colorToning.labregionsShowMask == other.colorToning.labregionsShowMask; sharpenEdge.enabled = sharpenEdge.enabled && p.sharpenEdge.enabled == other.sharpenEdge.enabled; sharpenEdge.passes = sharpenEdge.passes && p.sharpenEdge.passes == other.sharpenEdge.passes; sharpenEdge.amount = sharpenEdge.amount && p.sharpenEdge.amount == other.sharpenEdge.amount; @@ -711,6 +720,7 @@ void ParamsEdited::initFrom(const std::vector& sharpening.enabled = sharpening.enabled && p.sharpening.enabled == other.sharpening.enabled; sharpening.contrast = sharpening.contrast && p.sharpening.contrast == other.sharpening.contrast; sharpening.radius = sharpening.radius && p.sharpening.radius == other.sharpening.radius; + sharpening.blurradius = sharpening.blurradius && p.sharpening.blurradius == other.sharpening.blurradius; sharpening.amount = sharpening.amount && p.sharpening.amount == other.sharpening.amount; sharpening.threshold = sharpening.threshold && p.sharpening.threshold == other.sharpening.threshold; sharpening.edgesonly = sharpening.edgesonly && p.sharpening.edgesonly == other.sharpening.edgesonly; @@ -1123,6 +1133,10 @@ void ParamsEdited::initFrom(const std::vector& filmSimulation.strength = filmSimulation.strength && p.filmSimulation.strength == other.filmSimulation.strength; softlight.enabled = softlight.enabled && p.softlight.enabled == other.softlight.enabled; softlight.strength = softlight.strength && p.softlight.strength == other.softlight.strength; + dehaze.enabled = dehaze.enabled && p.dehaze.enabled == other.dehaze.enabled; + dehaze.strength = dehaze.strength && p.dehaze.strength == other.dehaze.strength; + dehaze.showDepthMap = dehaze.showDepthMap && p.dehaze.showDepthMap == other.dehaze.showDepthMap; + dehaze.depth = dehaze.depth && p.dehaze.depth == other.dehaze.depth; metadata.mode = metadata.mode && p.metadata.mode == other.metadata.mode; // How the hell can we handle that??? @@ -1571,6 +1585,14 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.colorToning.labgridBHigh = mods.colorToning.labgridBHigh; } + if (colorToning.labregions) { + toEdit.colorToning.labregions = mods.colorToning.labregions; + } + + if (colorToning.labregionsShowMask) { + toEdit.colorToning.labregionsShowMask = mods.colorToning.labregionsShowMask; + } + if (sharpenEdge.enabled) { toEdit.sharpenEdge.enabled = mods.sharpenEdge.enabled; } @@ -1619,6 +1641,10 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng toEdit.sharpening.radius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.radius + mods.sharpening.radius : mods.sharpening.radius; } + if (sharpening.blurradius) { + toEdit.sharpening.blurradius = dontforceSet && options.baBehav[ADDSET_SHARP_RADIUS] ? toEdit.sharpening.blurradius + mods.sharpening.blurradius : mods.sharpening.blurradius; + } + if (sharpening.amount) { toEdit.sharpening.amount = dontforceSet && options.baBehav[ADDSET_SHARP_AMOUNT] ? toEdit.sharpening.amount + mods.sharpening.amount : mods.sharpening.amount; } @@ -3124,7 +3150,23 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng if (softlight.strength) { toEdit.softlight.strength = dontforceSet && options.baBehav[ADDSET_SOFTLIGHT_STRENGTH] ? toEdit.softlight.strength + mods.softlight.strength : mods.softlight.strength; } + + if (dehaze.enabled) { + toEdit.dehaze.enabled = mods.dehaze.enabled; + } + + if (dehaze.strength) { + toEdit.dehaze.strength = dontforceSet && options.baBehav[ADDSET_DEHAZE_STRENGTH] ? toEdit.dehaze.strength + mods.dehaze.strength : mods.dehaze.strength; + } + if (dehaze.depth) { + toEdit.dehaze.depth = mods.dehaze.depth; + } + + if (dehaze.showDepthMap) { + toEdit.dehaze.showDepthMap = mods.dehaze.showDepthMap; + } + if (metadata.mode) { toEdit.metadata.mode = mods.metadata.mode; } diff --git a/rtgui/paramsedited.h b/rtgui/paramsedited.h index aa9c01bd9..3e77fcf56 100644 --- a/rtgui/paramsedited.h +++ b/rtgui/paramsedited.h @@ -178,6 +178,8 @@ public: bool labgridBLow; bool labgridAHigh; bool labgridBHigh; + bool labregions; + bool labregionsShowMask; }; class SharpenEdgeParamsEdited @@ -207,6 +209,7 @@ class SharpeningParamsEdited public: bool enabled; bool contrast; + bool blurradius; bool radius; bool amount; bool threshold; @@ -724,6 +727,16 @@ public: bool strength; }; +class DehazeParamsEdited +{ +public: + bool enabled; + bool strength; + bool showDepthMap; + bool depth; +}; + + class RAWParamsEdited { @@ -867,6 +880,7 @@ public: HSVEqualizerParamsEdited hsvequalizer; FilmSimulationParamsEdited filmSimulation; SoftLightParamsEdited softlight; + DehazeParamsEdited dehaze; MetaDataParamsEdited metadata; bool exif; bool iptc; diff --git a/rtgui/partialpastedlg.cc b/rtgui/partialpastedlg.cc index 91e542e85..e0e6a7219 100644 --- a/rtgui/partialpastedlg.cc +++ b/rtgui/partialpastedlg.cc @@ -65,6 +65,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren dirpyrden = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYRDENOISE"))); defringe = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DEFRINGE"))); dirpyreq = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DIRPYREQUALIZER"))); + dehaze = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_DEHAZE")) ); // Advanced Settings: retinex = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RETINEX"))); @@ -168,6 +169,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren vboxes[1]->pack_start (*dirpyrden, Gtk::PACK_SHRINK, 2); vboxes[1]->pack_start (*defringe, Gtk::PACK_SHRINK, 2); vboxes[1]->pack_start (*dirpyreq, Gtk::PACK_SHRINK, 2); + vboxes[1]->pack_start (*dehaze, Gtk::PACK_SHRINK, 2); //COLOR vboxes[2]->pack_start (*color, Gtk::PACK_SHRINK, 2); @@ -327,6 +329,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren dirpyrdenConn = dirpyrden->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); defringeConn = defringe->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); dirpyreqConn = dirpyreq->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); + dehazeConn = dehaze->signal_toggled().connect (sigc::bind (sigc::mem_fun(*detail, &Gtk::CheckButton::set_inconsistent), true)); // Advanced Settings: retinexConn = retinex->signal_toggled().connect (sigc::bind (sigc::mem_fun(*advanced, &Gtk::CheckButton::set_inconsistent), true)); @@ -534,6 +537,7 @@ void PartialPasteDlg::detailToggled () ConnectionBlocker dirpyrdenBlocker(dirpyrdenConn); ConnectionBlocker defringeBlocker(defringeConn); ConnectionBlocker dirpyreqBlocker(dirpyreqConn); + ConnectionBlocker dehazeBlocker(dehazeConn); detail->set_inconsistent (false); @@ -545,6 +549,7 @@ void PartialPasteDlg::detailToggled () dirpyrden->set_active (detail->get_active ()); defringe->set_active (detail->get_active ()); dirpyreq->set_active (detail->get_active ()); + dehaze->set_active (detail->get_active ()); } void PartialPasteDlg::advancedToggled () @@ -762,6 +767,10 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param filterPE.softlight = falsePE.softlight; } + if (!dehaze->get_active ()) { + filterPE.dehaze = falsePE.dehaze; + } + if (!rgbcurves->get_active ()) { filterPE.rgbCurves = falsePE.rgbCurves; } diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h index 5195d0756..f551ac134 100644 --- a/rtgui/partialpastedlg.h +++ b/rtgui/partialpastedlg.h @@ -63,6 +63,7 @@ public: Gtk::CheckButton* dirpyrden; Gtk::CheckButton* defringe; Gtk::CheckButton* dirpyreq; + Gtk::CheckButton* dehaze; // options in wavelet Gtk::CheckButton* wavelet; @@ -131,7 +132,7 @@ public: sigc::connection everythingConn, basicConn, detailConn, colorConn, lensConn, compositionConn, metaConn, rawConn, advancedConn; sigc::connection wbConn, exposureConn, localcontrastConn, shConn, pcvignetteConn, gradientConn, labcurveConn, colorappearanceConn; - sigc::connection sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, dirpyrdenConn, defringeConn, epdConn, fattalConn, dirpyreqConn, waveletConn, retinexConn; + sigc::connection sharpenConn, gradsharpenConn, microcontrastConn, impdenConn, dirpyrdenConn, defringeConn, epdConn, fattalConn, dirpyreqConn, waveletConn, retinexConn, dehazeConn; sigc::connection vibranceConn, chmixerConn, hsveqConn, rgbcurvesConn, chmixerbwConn, colortoningConn, filmSimulationConn, softlightConn; sigc::connection distortionConn, cacorrConn, vignettingConn, lcpConn; sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, prsharpeningConn, perspectiveConn, commonTransConn; diff --git a/rtgui/pcvignette.h b/rtgui/pcvignette.h index 91e876947..98d42a477 100644 --- a/rtgui/pcvignette.h +++ b/rtgui/pcvignette.h @@ -20,16 +20,16 @@ public: PCVignette (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior (bool strengthadd, bool featheradd, bool roundnessadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/perspective.h b/rtgui/perspective.h index a97d5d347..8038120fa 100644 --- a/rtgui/perspective.h +++ b/rtgui/perspective.h @@ -34,15 +34,15 @@ public: PerspCorrection (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void setAdjusterBehavior (bool badd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/popupbutton.h b/rtgui/popupbutton.h index 245d29aee..be08cd1ba 100644 --- a/rtgui/popupbutton.h +++ b/rtgui/popupbutton.h @@ -34,7 +34,7 @@ public: void set_sensitive (bool isSensitive=true); protected: - bool on_button_release_event (GdkEventButton* event); + bool on_button_release_event (GdkEventButton* event) override; private: bool nextOnClicked; diff --git a/rtgui/popupcommon.cc b/rtgui/popupcommon.cc index b7d08721e..c5a5a03e3 100644 --- a/rtgui/popupcommon.cc +++ b/rtgui/popupcommon.cc @@ -103,17 +103,18 @@ bool PopUpCommon::addEntry (const Glib::ustring& fileName, const Glib::ustring& void PopUpCommon::entrySelected (int i) { // Emit a signal if the selected item has changed - if (setSelected (i)) - messageChanged (selected); + if (setSelected (posToIndex(i))) + messageChanged (posToIndex(selected)); // Emit a signal in all case (i.e. propagate the signal_activate event) - messageItemSelected (selected); + messageItemSelected (posToIndex(selected)); } void PopUpCommon::setItemSensitivity (int index, bool isSensitive) { const auto items = menu->get_children (); - if (size_t(index) < items.size ()) { - items[size_t(index)]->set_sensitive (isSensitive); + size_t pos = indexToPos(index); + if (pos < items.size ()) { + items[pos]->set_sensitive (isSensitive); } } @@ -123,6 +124,8 @@ void PopUpCommon::setItemSensitivity (int index, bool isSensitive) { */ bool PopUpCommon::setSelected (int entryNum) { + entryNum = indexToPos(entryNum); + if (entryNum < 0 || entryNum > ((int)images.size() - 1) || (int)entryNum == selected) { return false; } else { diff --git a/rtgui/popupcommon.h b/rtgui/popupcommon.h index f4bdb581f..f939dbe96 100644 --- a/rtgui/popupcommon.h +++ b/rtgui/popupcommon.h @@ -75,6 +75,9 @@ private: void showMenu(GdkEventButton* event); protected: + virtual int posToIndex(int p) const { return p; } + virtual int indexToPos(int i) const { return i; } + void entrySelected (int i); }; @@ -96,7 +99,7 @@ inline int PopUpCommon::getEntryCount () const inline int PopUpCommon::getSelected () const { - return selected; + return posToIndex(selected); } #endif diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index 1f59a91cd..4151eacd4 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -255,6 +255,10 @@ Gtk::Widget* Preferences::getBatchProcPanel () appendBehavList (mi, M ("TP_DIRPYRDENOISE_MAIN_GAMMA"), ADDSET_DIRPYRDN_GAMMA, true); appendBehavList (mi, M ("TP_DIRPYRDENOISE_MEDIAN_PASSES"), ADDSET_DIRPYRDN_PASSES, true); + mi = behModel->append (); + mi->set_value ( behavColumns.label, M ("TP_DEHAZE_LABEL") ); + appendBehavList ( mi, M ( "TP_DEHAZE_STRENGTH" ), ADDSET_DEHAZE_STRENGTH, true ); + mi = behModel->append (); mi->set_value (behavColumns.label, M ("TP_WBALANCE_LABEL")); appendBehavList (mi, M ("TP_WBALANCE_TEMPERATURE"), ADDSET_WB_TEMPERATURE, true); @@ -264,17 +268,17 @@ Gtk::Widget* Preferences::getBatchProcPanel () mi = behModel->append (); mi->set_value (behavColumns.label, M ("TP_COLORAPP_LABEL")); - appendBehavList (mi, M ("TP_COLORAPP_ADAPTSCENE"), ADDSET_CAT_ADAPTSCENE, true); + appendBehavList (mi, M("TP_COLORAPP_LABEL_SCENE") + " - " + M("TP_COLORAPP_ABSOLUTELUMINANCE"), ADDSET_CAT_ADAPTSCENE, true); + appendBehavList (mi, M("TP_COLORAPP_LABEL_VIEWING") + " - " + M("TP_COLORAPP_ABSOLUTELUMINANCE"), ADDSET_CAT_ADAPTVIEWING, true); appendBehavList (mi, M ("TP_COLORAPP_LIGHT"), ADDSET_CAT_LIGHT, true); appendBehavList (mi, M ("TP_COLORAPP_BRIGHT"), ADDSET_CAT_BRIGHT, true); appendBehavList (mi, M ("TP_COLORAPP_CHROMA"), ADDSET_CAT_CHROMA, true); + appendBehavList (mi, M ("TP_COLORAPP_CHROMA_S"), ADDSET_CAT_CHROMA_S, true); + appendBehavList (mi, M ("TP_COLORAPP_CHROMA_M"), ADDSET_CAT_CHROMA_M, true); appendBehavList (mi, M ("TP_COLORAPP_RSTPRO"), ADDSET_CAT_RSTPRO, true); appendBehavList (mi, M ("TP_COLORAPP_CONTRAST"), ADDSET_CAT_CONTRAST, true); appendBehavList (mi, M ("TP_COLORAPP_CONTRAST_Q"), ADDSET_CAT_CONTRAST_Q, true); - appendBehavList (mi, M ("TP_COLORAPP_CHROMA_S"), ADDSET_CAT_CHROMA_S, true); - appendBehavList (mi, M ("TP_COLORAPP_CHROMA_M"), ADDSET_CAT_CHROMA_M, true); appendBehavList (mi, M ("TP_COLORAPP_HUE"), ADDSET_CAT_HUE, true); - appendBehavList (mi, M ("TP_COLORAPP_ADAPTVIEWING"), ADDSET_CAT_ADAPTVIEWING, true); appendBehavList (mi, M ("TP_COLORAPP_BADPIXSL"), ADDSET_CAT_BADPIX, true); mi = behModel->append (); @@ -595,22 +599,25 @@ Gtk::Widget* Preferences::getImageProcessingPanel () vbImageProcessing->pack_start (*cdf, Gtk::PACK_SHRINK, 4 ); // Crop - Gtk::Frame *cropframe = Gtk::manage(new Gtk::Frame(M("PREFERENCES_CROP"))); - Gtk::VBox *cropvb = Gtk::manage(new Gtk::VBox()); - Gtk::HBox *crophb = Gtk::manage(new Gtk::HBox()); - cropGuides = Gtk::manage(new Gtk::ComboBoxText()); - cropGuides->append(M("PREFERENCES_CROP_GUIDES_NONE")); - cropGuides->append(M("PREFERENCES_CROP_GUIDES_FRAME")); - cropGuides->append(M("PREFERENCES_CROP_GUIDES_FULL")); - crophb->pack_start(*Gtk::manage(new Gtk::Label(M("PREFERENCES_CROP_GUIDES") + ": ")), Gtk::PACK_SHRINK, 4); - crophb->pack_start(*cropGuides); - cropvb->pack_start(*crophb); - cropAutoFit = Gtk::manage(new Gtk::CheckButton(M("PREFERENCES_CROP_AUTO_FIT"))); - cropvb->pack_start(*cropAutoFit); - cropframe->add(*cropvb); - vbImageProcessing->pack_start(*cropframe, Gtk::PACK_SHRINK, 4); + Gtk::Frame *cropFrame = Gtk::manage(new Gtk::Frame(M("PREFERENCES_CROP"))); + Gtk::Grid *cropGrid = Gtk::manage(new Gtk::Grid()); + Gtk::Label *cropGuidesLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_CROP_GUIDES") + ": ")); + cropGuidesCombo = Gtk::manage(new Gtk::ComboBoxText()); + cropGuidesCombo->append(M("PREFERENCES_CROP_GUIDES_NONE")); + cropGuidesCombo->append(M("PREFERENCES_CROP_GUIDES_FRAME")); + cropGuidesCombo->append(M("PREFERENCES_CROP_GUIDES_FULL")); + cropAutoFitCB = Gtk::manage(new Gtk::CheckButton()); + Gtk::Label *cropAutoFitLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_CROP_AUTO_FIT"))); + cropAutoFitLbl->set_line_wrap(true); + cropAutoFitCB->add(*cropAutoFitLbl); + cropGrid->attach(*cropGuidesLbl, 0, 0, 1, 1); + cropGrid->attach(*cropGuidesCombo, 1, 0, 1, 1); + cropGrid->attach(*cropAutoFitCB, 0, 1, 2, 1); + cropFrame->add(*cropGrid); + vbImageProcessing->pack_start(*cropFrame, Gtk::PACK_SHRINK, 4); swImageProcessing->add(*vbImageProcessing); + return swImageProcessing; } @@ -765,8 +772,13 @@ Gtk::Widget* Preferences::getColorManPanel () const std::vector profiles = rtengine::ICCStore::getInstance ()->getProfiles (rtengine::ICCStore::ProfileType::MONITOR); for (const auto profile : profiles) { - if (profile.find ("file:") != 0) { - monProfile->append (profile); + if (profile.find("file:") != 0) { + std::string fileis_RTv4 = profile.substr(0, 4); + + if (fileis_RTv4 != "RTv4") { + // printf("pro=%s \n", profile.c_str()); + monProfile->append(profile); + } } } @@ -980,78 +992,77 @@ Gtk::Widget* Preferences::getGeneralPanel () flang->add (*langGrid); vbGeneral->attach_next_to (*flang, *fworklflow, Gtk::POS_BOTTOM, 2, 1); - // --------------------------------------------- + // Appearance --------------------------------------------- - Gtk::Frame* ftheme = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_THEME")) ); - setExpandAlignProperties (ftheme, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_START); - Gtk::Grid* themeGrid = Gtk::manage ( new Gtk::Grid() ); - themeGrid->set_column_spacing (4); - themeGrid->set_row_spacing (4); - setExpandAlignProperties (themeGrid, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_FILL); + Gtk::Frame* appearanceFrame = Gtk::manage(new Gtk::Frame(M("PREFERENCES_APPEARANCE"))); - Gtk::Label* themelab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_SELECTTHEME") + ":") ); - setExpandAlignProperties (themelab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - theme = Gtk::manage ( new Gtk::ComboBoxText () ); - setExpandAlignProperties (theme, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); + Gtk::Grid* appearanceGrid = Gtk::manage(new Gtk::Grid()); + appearanceGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(appearanceGrid, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - theme->set_active (0); - parseThemeDir (Glib::build_filename (argv0, "themes")); + Gtk::Label* themeLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_APPEARANCE_THEME") + ":")); + setExpandAlignProperties(themeLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + Gtk::Label* themeRestartLbl = Gtk::manage ( new Gtk::Label (Glib::ustring (" (") + M ("PREFERENCES_APPLNEXTSTARTUP") + ")") ); + setExpandAlignProperties(themeRestartLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + themeCBT = Gtk::manage(new Gtk::ComboBoxText()); + themeCBT->set_active(0); + parseThemeDir(Glib::build_filename(argv0, "themes")); for (size_t i = 0; i < themeFNames.size(); i++) { - theme->append (themeFNames.at (i).shortFName); + themeCBT->append(themeFNames.at(i).shortFName); } - themeGrid->attach_next_to (*themelab, Gtk::POS_LEFT, 1, 1); - themeGrid->attach_next_to (*theme, *themelab, Gtk::POS_RIGHT, 1, 1); - - Gtk::Label* fontlab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_SELECTFONT")) ); - setExpandAlignProperties (fontlab, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - fontButton = Gtk::manage ( new Gtk::FontButton ()); - setExpandAlignProperties (fontButton, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - fontButton->set_use_size (true); + Gtk::Label* mainFontLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_APPEARANCE_MAINFONT"))); + setExpandAlignProperties(mainFontLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + mainFontFB = Gtk::manage(new Gtk::FontButton()); + mainFontFB->set_use_size(true); if (options.fontFamily == "default") { - fontButton->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); + mainFontFB->set_font_name(Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize)); } else { - fontButton->set_font_name (Glib::ustring::compose ("%1 %2", options.fontFamily, options.fontSize)); + mainFontFB->set_font_name(Glib::ustring::compose("%1 %2", options.fontFamily, options.fontSize)); } - themeGrid->attach_next_to (*fontlab, *theme, Gtk::POS_RIGHT, 1, 1); - themeGrid->attach_next_to (*fontButton, *fontlab, Gtk::POS_RIGHT, 1, 1); - - Gtk::Label* cpfontlab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_SELECTFONT_COLPICKER") + ":") ); - setExpandAlignProperties (cpfontlab, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - colorPickerFontButton = Gtk::manage ( new Gtk::FontButton ()); - setExpandAlignProperties (fontButton, false, false, Gtk::ALIGN_FILL, Gtk::ALIGN_BASELINE); - colorPickerFontButton->set_use_size (true); + Gtk::Label* colorPickerFontLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_APPEARANCE_COLORPICKERFONT") + ":")); + setExpandAlignProperties(colorPickerFontLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + colorPickerFontFB = Gtk::manage(new Gtk::FontButton()); + colorPickerFontFB->set_use_size(true); if (options.fontFamily == "default") { - colorPickerFontButton->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); + colorPickerFontFB->set_font_name(Glib::ustring::compose("%1 %2", initialFontFamily, initialFontSize)); } else { - colorPickerFontButton->set_font_name (Glib::ustring::compose ("%1 %2", options.CPFontFamily, options.CPFontSize)); + colorPickerFontFB->set_font_name(Glib::ustring::compose("%1 %2", options.CPFontFamily, options.CPFontSize)); } - themeGrid->attach_next_to (*cpfontlab, *fontButton, Gtk::POS_RIGHT, 1, 1); - themeGrid->attach_next_to (*colorPickerFontButton, *cpfontlab, Gtk::POS_RIGHT, 1, 1); + Gtk::Label* cropMaskColorLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_APPEARANCE_CROPMASKCOLOR") + ":")); + setExpandAlignProperties(cropMaskColorLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - Gtk::Label* cutOverlayLabel = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_CUTOVERLAYBRUSH") + ":") ); - setExpandAlignProperties (cutOverlayLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - butCropCol = Gtk::manage ( new Gtk::ColorButton() ); - setExpandAlignProperties (butCropCol, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - butCropCol->set_use_alpha (true); - themeGrid->attach_next_to (*cutOverlayLabel, *themelab, Gtk::POS_BOTTOM, 1, 1); - themeGrid->attach_next_to (*butCropCol, *cutOverlayLabel, Gtk::POS_RIGHT, 1, 1); + cropMaskColorCB = Gtk::manage(new Gtk::ColorButton()); + cropMaskColorCB->set_use_alpha(true); - Gtk::Label* navGuideLabel = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_NAVGUIDEBRUSH") + ":") ); - setExpandAlignProperties (navGuideLabel, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); - butNavGuideCol = Gtk::manage ( new Gtk::ColorButton() ); - setExpandAlignProperties (butNavGuideCol, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - butNavGuideCol->set_use_alpha (true); - themeGrid->attach_next_to (*navGuideLabel, *butCropCol, Gtk::POS_RIGHT, 2, 1); - themeGrid->attach_next_to (*butNavGuideCol, *navGuideLabel, Gtk::POS_RIGHT, 1, 1); + Gtk::Label* navGuideColorLbl = Gtk::manage(new Gtk::Label(M("PREFERENCES_APPEARANCE_NAVGUIDECOLOR") + ":")); + setExpandAlignProperties(navGuideColorLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - ftheme->add (*themeGrid); - vbGeneral->attach_next_to (*ftheme, *flang, Gtk::POS_BOTTOM, 2, 1); + navGuideColorCB = Gtk::manage(new Gtk::ColorButton()); + navGuideColorCB->set_use_alpha(true); + + Gtk::VSeparator *vSep = Gtk::manage(new Gtk::VSeparator()); + + appearanceGrid->attach(*themeLbl, 0, 0, 1, 1); + appearanceGrid->attach(*themeCBT, 1, 0, 1, 1); + appearanceGrid->attach(*themeRestartLbl, 2, 0, 2, 1); + appearanceGrid->attach(*vSep, 2, 1, 1, 3); + appearanceGrid->attach(*mainFontLbl, 0, 1, 1, 1); + appearanceGrid->attach(*mainFontFB, 1, 1, 1, 1); + appearanceGrid->attach(*cropMaskColorLbl, 3, 1, 1, 1); + appearanceGrid->attach(*cropMaskColorCB, 4, 1, 1, 1); + appearanceGrid->attach(*colorPickerFontLbl, 0, 2, 1, 1); + appearanceGrid->attach(*colorPickerFontFB, 1, 2, 1, 1); + appearanceGrid->attach(*navGuideColorLbl, 3, 2, 1, 1); + appearanceGrid->attach(*navGuideColorCB, 4, 2, 1, 1); + + appearanceFrame->add(*appearanceGrid); + vbGeneral->attach_next_to(*appearanceFrame, *flang, Gtk::POS_BOTTOM, 2, 1); // --------------------------------------------- @@ -1084,7 +1095,7 @@ Gtk::Widget* Preferences::getGeneralPanel () clipGrid->attach_next_to (*shThresh, *shl, Gtk::POS_RIGHT, 1, 1); fclip->add (*clipGrid); - vbGeneral->attach_next_to (*fclip, *ftheme, Gtk::POS_BOTTOM, 1, 1); + vbGeneral->attach_next_to (*fclip, *appearanceFrame, Gtk::POS_BOTTOM, 1, 1); // --------------------------------------------- @@ -1178,9 +1189,9 @@ Gtk::Widget* Preferences::getGeneralPanel () 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) ); + tconn = themeCBT->signal_changed().connect ( sigc::mem_fun (*this, &Preferences::themeChanged) ); + fconn = mainFontFB->signal_font_set().connect ( sigc::mem_fun (*this, &Preferences::fontChanged) ); + cpfconn = colorPickerFontFB->signal_font_set().connect ( sigc::mem_fun (*this, &Preferences::cpFontChanged) ); swGeneral->add(*vbGeneral); return swGeneral; @@ -1202,7 +1213,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 ("folder-open.png"))); + sdselect->set_image (*Gtk::manage (new RTImage ("folder-open-small.png"))); Gtk::RadioButton::Group opts = sdcurrent->get_group(); sdlast->set_group (opts); @@ -1271,20 +1282,26 @@ Gtk::Widget* Preferences::getFileBrowserPanel () Gtk::Frame* frmnu = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_MENUOPTIONS")) ); + + Gtk::Grid* menuGrid = Gtk::manage(new Gtk::Grid()); + menuGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(menuGrid, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + ckbmenuGroupRank = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_MENUGROUPRANK")) ); + setExpandAlignProperties(ckbmenuGroupRank, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); ckbmenuGroupLabel = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_MENUGROUPLABEL")) ); ckbmenuGroupFileOperations = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_MENUGROUPFILEOPERATIONS")) ); + setExpandAlignProperties(ckbmenuGroupFileOperations, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); ckbmenuGroupProfileOperations = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_MENUGROUPPROFILEOPERATIONS")) ); ckbmenuGroupExtProg = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_MENUGROUPEXTPROGS")) ); - Gtk::VBox* vbmnu = Gtk::manage ( new Gtk::VBox () ); + + menuGrid->attach (*ckbmenuGroupRank, 0, 0, 1, 1); + menuGrid->attach (*ckbmenuGroupLabel, 1, 0, 1, 1); + menuGrid->attach (*ckbmenuGroupFileOperations, 0, 1, 1, 1); + menuGrid->attach (*ckbmenuGroupProfileOperations, 1, 1, 1, 1); + menuGrid->attach (*ckbmenuGroupExtProg, 0, 2, 2, 1); - vbmnu->pack_start (*ckbmenuGroupRank, Gtk::PACK_SHRINK, 0); - vbmnu->pack_start (*ckbmenuGroupLabel, Gtk::PACK_SHRINK, 0); - vbmnu->pack_start (*ckbmenuGroupFileOperations, Gtk::PACK_SHRINK, 0); - vbmnu->pack_start (*ckbmenuGroupProfileOperations, Gtk::PACK_SHRINK, 0); - vbmnu->pack_start (*ckbmenuGroupExtProg, Gtk::PACK_SHRINK, 0); - - frmnu->add (*vbmnu); + frmnu->add (*menuGrid); Gtk::Frame* fre = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_PARSEDEXT")) ); @@ -1330,40 +1347,67 @@ Gtk::Widget* Preferences::getFileBrowserPanel () fre->add (*vbre); - Gtk::Frame* frc = Gtk::manage ( new Gtk::Frame (M ("PREFERENCES_CACHEOPTS")) ); - Gtk::VBox* vbc = Gtk::manage ( new Gtk::VBox () ); + // Cache + + Gtk::Frame* frc = Gtk::manage (new Gtk::Frame(M("PREFERENCES_CACHEOPTS"))); + Gtk::VBox* vbc = Gtk::manage (new Gtk::VBox()); frc->add (*vbc); - Gtk::HBox* hb3 = Gtk::manage ( new Gtk::HBox () ); - Gtk::Label* chlab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_CACHETHUMBHEIGHT") + ":") ); - maxThumbSize = Gtk::manage ( new Gtk::SpinButton () ); - hb3->pack_start (*chlab, Gtk::PACK_SHRINK, 4); - hb3->pack_start (*maxThumbSize, Gtk::PACK_SHRINK, 4); + Gtk::Grid* cacheGrid = Gtk::manage(new Gtk::Grid()); + cacheGrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(cacheGrid, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); - maxThumbSize->set_digits (0); - maxThumbSize->set_increments (1, 10); - maxThumbSize->set_range (40, 800); - vbc->pack_start (*hb3, Gtk::PACK_SHRINK, 4); + Gtk::Label* maxThumbHeightLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHETHUMBHEIGHT") + ":")); + setExpandAlignProperties(maxThumbHeightLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + maxThumbHeightSB = Gtk::manage (new Gtk::SpinButton()); + maxThumbHeightSB->set_digits (0); + maxThumbHeightSB->set_increments (1, 10); + maxThumbHeightSB->set_range (40, 800); - Gtk::HBox* hb4 = Gtk::manage ( new Gtk::HBox () ); - Gtk::Label* celab = Gtk::manage ( new Gtk::Label (M ("PREFERENCES_CACHEMAXENTRIES") + ":") ); - maxCacheEntries = Gtk::manage ( new Gtk::SpinButton () ); - hb4->pack_start (*celab, Gtk::PACK_SHRINK, 4); - hb4->pack_start (*maxCacheEntries, Gtk::PACK_SHRINK, 4); + Gtk::Label* maxCacheEntriesLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHEMAXENTRIES") + ":")); + setExpandAlignProperties(maxCacheEntriesLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + maxCacheEntriesSB = Gtk::manage (new Gtk::SpinButton()); + maxCacheEntriesSB->set_digits (0); + maxCacheEntriesSB->set_increments (1, 10); + maxCacheEntriesSB->set_range (10, 100000); - maxCacheEntries->set_digits (0); - maxCacheEntries->set_increments (1, 10); - maxCacheEntries->set_range (10, 100000); - vbc->pack_start (*hb4, Gtk::PACK_SHRINK, 4); + // Separation is needed so that a button is not accidentally clicked when one wanted + // to click a spinbox. Ideally, the separation wouldn't require attaching a widget, but how? + Gtk::HSeparator *cacheSeparator = Gtk::manage (new Gtk::HSeparator()); + cacheSeparator->get_style_context()->add_class("grid-row-separator"); - Gtk::HBox* hb5 = Gtk::manage ( new Gtk::HBox () ); - clearThumbnails = Gtk::manage ( new Gtk::Button (M ("PREFERENCES_CACHECLEARTHUMBS")) ); - clearProfiles = Gtk::manage ( new Gtk::Button (M ("PREFERENCES_CACHECLEARPROFILES")) ); - clearAll = Gtk::manage ( new Gtk::Button (M ("PREFERENCES_CACHECLEARALL")) ); - hb5->pack_start (*clearThumbnails, Gtk::PACK_SHRINK, 4); - hb5->pack_start (*clearProfiles, Gtk::PACK_SHRINK, 4); - hb5->pack_start (*clearAll, Gtk::PACK_SHRINK, 4); - vbc->pack_start (*hb5, Gtk::PACK_SHRINK, 4); + Gtk::Label* clearThumbsLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHECLEAR_ALLBUTPROFILES"))); + setExpandAlignProperties(clearThumbsLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + Gtk::Button* clearThumbsBtn = Gtk::manage (new Gtk::Button(M("PREFERENCES_CACHECLEAR"))); + + Gtk::Label* clearProfilesLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHECLEAR_ONLYPROFILES"))); + setExpandAlignProperties(clearProfilesLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + Gtk::Button* clearProfilesBtn = Gtk::manage (new Gtk::Button(M("PREFERENCES_CACHECLEAR"))); + + Gtk::Label* clearAllLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHECLEAR_ALL"))); + setExpandAlignProperties(clearAllLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + Gtk::Button* clearAllBtn = Gtk::manage (new Gtk::Button(M("PREFERENCES_CACHECLEAR"))); + + cacheGrid->attach (*maxThumbHeightLbl, 0, 0, 1, 1); + cacheGrid->attach (*maxThumbHeightSB, 1, 0, 1, 1); + cacheGrid->attach (*maxCacheEntriesLbl, 0, 1, 1, 1); + cacheGrid->attach (*maxCacheEntriesSB, 1, 1, 1, 1); + cacheGrid->attach (*cacheSeparator, 0, 2, 2, 1); + cacheGrid->attach (*clearThumbsLbl, 0, 3, 1, 1); + cacheGrid->attach (*clearThumbsBtn, 1, 3, 1, 1); + if (moptions.saveParamsCache) { + cacheGrid->attach (*clearProfilesLbl, 0, 4, 1, 1); + cacheGrid->attach (*clearProfilesBtn, 1, 4, 1, 1); + cacheGrid->attach (*clearAllLbl, 0, 5, 1, 1); + cacheGrid->attach (*clearAllBtn, 1, 5, 1, 1); + } + + vbc->pack_start (*cacheGrid, Gtk::PACK_SHRINK, 4); + + Gtk::Label* clearSafetyLbl = Gtk::manage (new Gtk::Label(M("PREFERENCES_CACHECLEAR_SAFETY"))); + setExpandAlignProperties(clearSafetyLbl, false, false, Gtk::ALIGN_START, Gtk::ALIGN_START); + clearSafetyLbl->set_line_wrap(true); + vbc->pack_start(*clearSafetyLbl, Gtk::PACK_SHRINK, 4); Gtk::HBox* hb6 = Gtk::manage ( new Gtk::HBox () ); Gtk::VBox* vb6 = Gtk::manage ( new Gtk::VBox () ); @@ -1382,9 +1426,11 @@ Gtk::Widget* Preferences::getFileBrowserPanel () moveExtUp->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::moveExtUpPressed) ); moveExtDown->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::moveExtDownPressed) ); extension->signal_activate().connect ( sigc::mem_fun (*this, &Preferences::addExtPressed) ); - clearThumbnails->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::clearThumbImagesPressed) ); - clearProfiles->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::clearProfilesPressed) ); - clearAll->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::clearAllPressed) ); + clearThumbsBtn->signal_clicked().connect ( sigc::mem_fun (*this, &Preferences::clearThumbImagesPressed) ); + if (moptions.saveParamsCache) { + clearProfilesBtn->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::clearProfilesPressed)); + clearAllBtn->signal_clicked().connect(sigc::mem_fun(*this, &Preferences::clearAllPressed)); + } swFileBrowser->add(*vbFileBrowser); return swFileBrowser; @@ -1563,28 +1609,28 @@ void Preferences::storePreferences () moptions.shadowThreshold = (int)shThresh->get_value (); moptions.language = languages->get_active_text (); moptions.languageAutoDetect = ckbLangAutoDetect->get_active (); - moptions.theme = themeFNames.at (theme->get_active_row_number ()).longFName; + moptions.theme = themeFNames.at (themeCBT->get_active_row_number ()).longFName; - Gdk::RGBA cropCol = butCropCol->get_rgba(); + Gdk::RGBA cropCol = cropMaskColorCB->get_rgba(); moptions.cutOverlayBrush[0] = cropCol.get_red(); moptions.cutOverlayBrush[1] = cropCol.get_green(); moptions.cutOverlayBrush[2] = cropCol.get_blue(); - moptions.cutOverlayBrush[3] = butCropCol->get_alpha() / 65535.0; + moptions.cutOverlayBrush[3] = cropMaskColorCB->get_alpha() / 65535.0; - Gdk::RGBA NavGuideCol = butNavGuideCol->get_rgba(); + Gdk::RGBA NavGuideCol = navGuideColorCB->get_rgba(); moptions.navGuideBrush[0] = NavGuideCol.get_red(); moptions.navGuideBrush[1] = NavGuideCol.get_green(); moptions.navGuideBrush[2] = NavGuideCol.get_blue(); - moptions.navGuideBrush[3] = butNavGuideCol->get_alpha() / 65535.0; + moptions.navGuideBrush[3] = navGuideColorCB->get_alpha() / 65535.0; - Pango::FontDescription fd (fontButton->get_font_name()); + Pango::FontDescription fd (mainFontFB->get_font_name()); if (newFont) { moptions.fontFamily = fd.get_family(); moptions.fontSize = fd.get_size() / Pango::SCALE; } - Pango::FontDescription cpfd (colorPickerFontButton->get_font_name()); + Pango::FontDescription cpfd (colorPickerFontFB->get_font_name()); if (newCPFont) { moptions.CPFontFamily = cpfd.get_family(); @@ -1697,8 +1743,8 @@ void Preferences::storePreferences () } moptions.maxRecentFolders = (int)maxRecentFolders->get_value(); - moptions.maxThumbnailHeight = (int)maxThumbSize->get_value (); - moptions.maxCacheEntries = (int)maxCacheEntries->get_value (); + moptions.maxThumbnailHeight = (int)maxThumbHeightSB->get_value (); + moptions.maxCacheEntries = (int)maxCacheEntriesSB->get_value (); moptions.overlayedFileNames = overlayedFileNames->get_active (); moptions.filmStripOverlayedFileNames = filmStripOverlayedFileNames->get_active(); moptions.sameThumbSize = sameThumbSize->get_active(); @@ -1749,8 +1795,8 @@ void Preferences::storePreferences () moptions.sndLngEditProcDoneSecs = spbSndLngEditProcDoneSecs->get_value (); #endif - moptions.cropGuides = Options::CropGuidesMode(cropGuides->get_active_row_number()); - moptions.cropAutoFit = cropAutoFit->get_active(); + moptions.cropGuides = Options::CropGuidesMode(cropGuidesCombo->get_active_row_number()); + moptions.cropAutoFit = cropAutoFitCB->get_active(); } void Preferences::fillPreferences () @@ -1825,28 +1871,28 @@ void Preferences::fillPreferences () languages->set_active_text (moptions.language); ckbLangAutoDetect->set_active (moptions.languageAutoDetect); int themeNbr = getThemeRowNumber (moptions.theme); - theme->set_active (themeNbr == -1 ? 0 : themeNbr); + themeCBT->set_active (themeNbr == -1 ? 0 : themeNbr); Gdk::RGBA cropCol; cropCol.set_rgba (moptions.cutOverlayBrush[0], moptions.cutOverlayBrush[1], moptions.cutOverlayBrush[2]); - butCropCol->set_rgba (cropCol); - butCropCol->set_alpha ( (unsigned short) (moptions.cutOverlayBrush[3] * 65535.0)); + cropMaskColorCB->set_rgba (cropCol); + cropMaskColorCB->set_alpha ( (unsigned short) (moptions.cutOverlayBrush[3] * 65535.0)); Gdk::RGBA NavGuideCol; NavGuideCol.set_rgba (moptions.navGuideBrush[0], moptions.navGuideBrush[1], moptions.navGuideBrush[2]); - butNavGuideCol->set_rgba (NavGuideCol); - butNavGuideCol->set_alpha ( (unsigned short) (moptions.navGuideBrush[3] * 65535.0)); + navGuideColorCB->set_rgba (NavGuideCol); + navGuideColorCB->set_alpha ( (unsigned short) (moptions.navGuideBrush[3] * 65535.0)); if (options.fontFamily == "default") { - fontButton->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); + mainFontFB->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); } else { - fontButton->set_font_name (Glib::ustring::compose ("%1 %2", options.fontFamily, options.fontSize)); + mainFontFB->set_font_name (Glib::ustring::compose ("%1 %2", options.fontFamily, options.fontSize)); } if (options.CPFontFamily == "default") { - colorPickerFontButton->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); + colorPickerFontFB->set_font_name (Glib::ustring::compose ("%1 %2", initialFontFamily, initialFontSize)); } else { - colorPickerFontButton->set_font_name (Glib::ustring::compose ("%1 %2", options.CPFontFamily, options.CPFontSize)); + colorPickerFontFB->set_font_name (Glib::ustring::compose ("%1 %2", options.CPFontFamily, options.CPFontSize)); } showDateTime->set_active (moptions.fbShowDateTime); @@ -1913,9 +1959,9 @@ void Preferences::fillPreferences () row[extensionColumns.ext] = moptions.parseExtensions[i]; } - maxThumbSize->set_value (moptions.maxThumbnailHeight); maxRecentFolders->set_value (moptions.maxRecentFolders); - maxCacheEntries->set_value (moptions.maxCacheEntries); + maxThumbHeightSB->set_value (moptions.maxThumbnailHeight); + maxCacheEntriesSB->set_value (moptions.maxCacheEntries); overlayedFileNames->set_active (moptions.overlayedFileNames); filmStripOverlayedFileNames->set_active (moptions.filmStripOverlayedFileNames); sameThumbSize->set_active (moptions.sameThumbSize); @@ -1966,8 +2012,8 @@ void Preferences::fillPreferences () } } - cropGuides->set_active(moptions.cropGuides); - cropAutoFit->set_active(moptions.cropAutoFit); + cropGuidesCombo->set_active(moptions.cropGuides); + cropAutoFitCB->set_active(moptions.cropAutoFit); addc.block (false); setc.block (false); @@ -2052,14 +2098,14 @@ void Preferences::okPressed () void Preferences::cancelPressed () { // set the initial theme back - if (themeFNames.at (theme->get_active_row_number ()).longFName != options.theme) { + if (themeFNames.at (themeCBT->get_active_row_number ()).longFName != options.theme) { rtengine::setPaths(); RTImage::updateImages(); switchThemeTo (options.theme); } // set the initial font back - Pango::FontDescription fd (fontButton->get_font_name()); + Pango::FontDescription fd (mainFontFB->get_font_name()); if (fd.get_family() != options.fontFamily && (fd.get_size() / Pango::SCALE) != options.fontSize) { if (options.fontFamily == "default") { @@ -2110,7 +2156,7 @@ void Preferences::aboutPressed () void Preferences::themeChanged () { - moptions.theme = themeFNames.at (theme->get_active_row_number ()).longFName; + moptions.theme = themeFNames.at (themeCBT->get_active_row_number ()).longFName; rtengine::setPaths(); RTImage::updateImages(); switchThemeTo (moptions.theme); @@ -2266,7 +2312,7 @@ void Preferences::fontChanged () { newFont = true; - Pango::FontDescription fd (fontButton->get_font_name()); + Pango::FontDescription fd (mainFontFB->get_font_name()); switchFontTo (fd.get_family(), fd.get_size() / Pango::SCALE); } diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 949f50376..3b78c0472 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -140,18 +140,15 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener Gtk::CheckButton* ctiffserialize; Gtk::ComboBoxText* curveBBoxPosC; - Gtk::ComboBoxText* theme; - Gtk::FontButton* fontButton; - Gtk::FontButton* colorPickerFontButton; - Gtk::ColorButton* butCropCol; - Gtk::ColorButton* butNavGuideCol; + Gtk::ComboBoxText* themeCBT; + Gtk::FontButton* mainFontFB; + Gtk::FontButton* colorPickerFontFB; + Gtk::ColorButton* cropMaskColorCB; + Gtk::ColorButton* navGuideColorCB; - Gtk::SpinButton* maxThumbSize; - Gtk::SpinButton* maxCacheEntries; Gtk::SpinButton* maxRecentFolders; - Gtk::Button* clearThumbnails; - Gtk::Button* clearProfiles; - Gtk::Button* clearAll; + Gtk::SpinButton* maxThumbHeightSB; + Gtk::SpinButton* maxCacheEntriesSB; Gtk::Entry* extension; Gtk::TreeView* extensions; Gtk::Button* addExt; @@ -203,8 +200,8 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener DynamicProfilePanel *dynProfilePanel; - Gtk::ComboBoxText *cropGuides; - Gtk::CheckButton *cropAutoFit; + Gtk::ComboBoxText *cropGuidesCombo; + Gtk::CheckButton *cropAutoFitCB; Glib::ustring storedValueRaw; Glib::ustring storedValueImg; @@ -261,7 +258,7 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener public: explicit Preferences (RTWindow *rtwindow); - ~Preferences (); + ~Preferences () override; void savePressed (); void loadPressed (); @@ -291,9 +288,9 @@ public: void behAddAllPressed (); void behSetAllPressed (); - virtual void storeCurrentValue(); - virtual void updateProfileList(); - virtual void restoreValue(); + void storeCurrentValue() override; + void updateProfileList() override; + void restoreValue() override; // void selectICCProfileDir (); // void selectMonitorProfile (); diff --git a/rtgui/preprocess.h b/rtgui/preprocess.h index 64ed110fb..58cc2c2de 100644 --- a/rtgui/preprocess.h +++ b/rtgui/preprocess.h @@ -40,15 +40,15 @@ public: PreProcess (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; //void setBatchMode (bool batchMode); //void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited=NULL); void hotPixelChanged(); void deadPixelChanged(); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; //void adjusterChanged (Adjuster* a, double newval); diff --git a/rtgui/previewhandler.h b/rtgui/previewhandler.h index 7fae4121e..81a68e05c 100644 --- a/rtgui/previewhandler.h +++ b/rtgui/previewhandler.h @@ -64,7 +64,7 @@ protected: public: PreviewHandler (); - virtual ~PreviewHandler (); + ~PreviewHandler () override; void addPreviewImageListener (PreviewListener* l) { @@ -72,9 +72,9 @@ public: } // previewimagelistener - void setImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cp); - void delImage(rtengine::IImage8* img); - void imageReady(const rtengine::procparams::CropParams& cp); + void setImage(rtengine::IImage8* img, double scale, const rtengine::procparams::CropParams& cp) override; + void delImage(rtengine::IImage8* img) override; + void imageReady(const rtengine::procparams::CropParams& cp) override; // this function is called when a new preview image arrives from rtengine void previewImageChanged (); diff --git a/rtgui/previewloader.cc b/rtgui/previewloader.cc index 0c0ecf9f6..f4cfe2b1b 100644 --- a/rtgui/previewloader.cc +++ b/rtgui/previewloader.cc @@ -168,6 +168,10 @@ PreviewLoader::PreviewLoader(): { } +PreviewLoader::~PreviewLoader() { + delete impl_; +} + PreviewLoader* PreviewLoader::getInstance() { static PreviewLoader instance_; diff --git a/rtgui/previewloader.h b/rtgui/previewloader.h index 77091bcd3..311d9d5ce 100644 --- a/rtgui/previewloader.h +++ b/rtgui/previewloader.h @@ -82,6 +82,7 @@ public: private: PreviewLoader(); + ~PreviewLoader(); class Impl; Impl* impl_; diff --git a/rtgui/previewmodepanel.h b/rtgui/previewmodepanel.h index 1d7b99625..4924b77af 100644 --- a/rtgui/previewmodepanel.h +++ b/rtgui/previewmodepanel.h @@ -47,7 +47,7 @@ protected: public: explicit PreviewModePanel (ImageArea* ia); - ~PreviewModePanel(); + ~PreviewModePanel() override; void toggleR (); void toggleG (); diff --git a/rtgui/previewwindow.h b/rtgui/previewwindow.h index ba9d8f633..c89c89d4e 100644 --- a/rtgui/previewwindow.h +++ b/rtgui/previewwindow.h @@ -50,26 +50,26 @@ public: void setPreviewHandler (PreviewHandler* ph); void setImageArea (ImageArea* ia); - void on_realize (); + void on_realize () override; void on_resized (Gtk::Allocation& req); - bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr); - bool on_motion_notify_event (GdkEventMotion* event); - bool on_button_press_event (GdkEventButton* event); - bool on_button_release_event(GdkEventButton* event); - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + bool on_draw (const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_motion_notify_event (GdkEventMotion* event) override; + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event(GdkEventButton* event) override; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; // PreviewListener interface - void previewImageChanged (); + void previewImageChanged () override; // CropWindowListener interface - void cropPositionChanged(CropWindow* w); - void cropWindowSizeChanged(CropWindow* w); - void cropZoomChanged(CropWindow* w); - void initialImageArrived(); + void cropPositionChanged(CropWindow* w) override; + void cropWindowSizeChanged(CropWindow* w) override; + void cropZoomChanged(CropWindow* w) override; + void initialImageArrived() override; }; #endif diff --git a/rtgui/profilepanel.cc b/rtgui/profilepanel.cc index 64f10ca0e..a3a0f72b7 100644 --- a/rtgui/profilepanel.cc +++ b/rtgui/profilepanel.cc @@ -167,6 +167,7 @@ Gtk::TreeIter ProfilePanel::getLastSavedRow() Gtk::TreeIter ProfilePanel::addCustomRow() { if(customPSE) { + profiles->deleteRow(customPSE); delete customPSE; customPSE = nullptr; } @@ -179,6 +180,7 @@ Gtk::TreeIter ProfilePanel::addCustomRow() Gtk::TreeIter ProfilePanel::addLastSavedRow() { if(lastSavedPSE) { + profiles->deleteRow(lastSavedPSE); delete lastSavedPSE; lastSavedPSE = nullptr; } @@ -307,8 +309,6 @@ void ProfilePanel::save_clicked (GdkEventButton* event) do { if (dialog.run() == Gtk::RESPONSE_OK) { - dialog.hide(); - std::string fname = dialog.get_filename(); Glib::ustring ext = getExtension (fname); diff --git a/rtgui/profilepanel.h b/rtgui/profilepanel.h index 509800aaa..b0fb42ab7 100644 --- a/rtgui/profilepanel.h +++ b/rtgui/profilepanel.h @@ -72,7 +72,7 @@ protected: public: explicit ProfilePanel (); - virtual ~ProfilePanel (); + ~ProfilePanel () override; void setProfileChangeListener (ProfileChangeListener* ppl) { @@ -81,9 +81,9 @@ public: static void init (Gtk::Window* parentWindow); static void cleanup (); - void storeCurrentValue(); - void updateProfileList (); - void restoreValue(); + void storeCurrentValue() override; + void updateProfileList () override; + void restoreValue() override; void initProfile (const Glib::ustring& profileFullPath, rtengine::procparams::ProcParams* lastSaved); void setInitialFileName (const Glib::ustring& filename); @@ -94,8 +94,8 @@ public: const rtengine::ProcEvent& ev, const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr - ); - void clearParamChanges(); + ) override; + void clearParamChanges() override; // gui callbacks void save_clicked (GdkEventButton* event); diff --git a/rtgui/profilestorecombobox.cc b/rtgui/profilestorecombobox.cc index 186309aa3..e7d64f28b 100644 --- a/rtgui/profilestorecombobox.cc +++ b/rtgui/profilestorecombobox.cc @@ -337,7 +337,7 @@ Gtk::TreeIter ProfileStoreComboBox::getRowFromLabel (Glib::ustring name) const ProfileStoreEntry *pse = currRow[methodColumns.profileStoreEntry]; if (pse->label == name) { - return currRow; + return std::move(currRow); } } } @@ -356,3 +356,11 @@ Gtk::TreeIter ProfileStoreComboBox::addRow (const ProfileStoreEntry *profileStor return newEntry; } +/** @brief Delete a row from the first level of the tree */ +void ProfileStoreComboBox::deleteRow (const ProfileStoreEntry *profileStoreEntry) +{ + Gtk::TreeIter entry = findRowFromEntry(profileStoreEntry); + if (entry) { + refTreeModel->erase(entry); + } +} diff --git a/rtgui/profilestorecombobox.h b/rtgui/profilestorecombobox.h index 111e767c2..9c31ad60a 100644 --- a/rtgui/profilestorecombobox.h +++ b/rtgui/profilestorecombobox.h @@ -90,6 +90,7 @@ public: bool setInternalEntry (); Gtk::TreeIter getRowFromLabel (Glib::ustring name); Gtk::TreeIter addRow (const ProfileStoreEntry *profileStoreEntry); + void deleteRow (const ProfileStoreEntry *profileStoreEntry); }; #endif diff --git a/rtgui/progressconnector.h b/rtgui/progressconnector.h index 12a2bf82f..394ad3909 100644 --- a/rtgui/progressconnector.h +++ b/rtgui/progressconnector.h @@ -36,12 +36,12 @@ public: } // ProgressListener interface - void setProgress(double p) + void setProgress(double p) override { GThreadLock lock; pl->setProgress(p); } - void setProgressStr(const Glib::ustring& str) + void setProgressStr(const Glib::ustring& str) override { GThreadLock lock; Glib::ustring progrstr; @@ -49,13 +49,13 @@ public: pl->setProgressStr(progrstr); } - void setProgressState(bool inProcessing) + void setProgressState(bool inProcessing) override { GThreadLock lock; pl->setProgressState(inProcessing); } - void error(const Glib::ustring& descr) + void error(const Glib::ustring& descr) override { GThreadLock lock; pl->error(descr); diff --git a/rtgui/prsharpening.cc b/rtgui/prsharpening.cc index fd2c85227..c7c2ddf9f 100644 --- a/rtgui/prsharpening.cc +++ b/rtgui/prsharpening.cc @@ -37,7 +37,7 @@ PrSharpening::PrSharpening () : FoldableToolPanel(this, "prsharpening", M("TP_PR Gtk::HBox* hb = Gtk::manage (new Gtk::HBox ()); hb->show (); - contrast = Gtk::manage(new Adjuster (M("TP_SHARPENING_CONTRAST"), 0, 200, 1, 0)); + contrast = Gtk::manage(new Adjuster (M("TP_SHARPENING_CONTRAST"), 0, 200, 1, 15)); contrast->setAdjusterListener (this); pack_start(*contrast); contrast->show(); diff --git a/rtgui/prsharpening.h b/rtgui/prsharpening.h index 8b2c02e25..0bceca856 100644 --- a/rtgui/prsharpening.h +++ b/rtgui/prsharpening.h @@ -57,28 +57,28 @@ protected: public: PrSharpening (); - virtual ~PrSharpening (); + ~PrSharpening () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void edgesonly_toggled (); void halocontrol_toggled (); void method_changed (); - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; void setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/rawcacorrection.cc b/rtgui/rawcacorrection.cc index b208f5509..2daeb102f 100644 --- a/rtgui/rawcacorrection.cc +++ b/rtgui/rawcacorrection.cc @@ -41,6 +41,7 @@ RAWCACorr::RAWCACorr () : FoldableToolPanel(this, "rawcacorrection", M("TP_CHROM caAutoiterations = Gtk::manage(new Adjuster (M("TP_RAWCACORR_AUTOIT"), 1, 5, 1, 2)); caAutoiterations->setAdjusterListener (this); + caAutoiterations->set_tooltip_markup(M("TP_RAWCACORR_AUTOIT_TOOLTIP")); if (caAutoiterations->delay < options.adjusterMaxDelay) { caAutoiterations->delay = options.adjusterMaxDelay; diff --git a/rtgui/rawcacorrection.h b/rtgui/rawcacorrection.h index 3bb511885..13db1d1e3 100644 --- a/rtgui/rawcacorrection.h +++ b/rtgui/rawcacorrection.h @@ -42,16 +42,16 @@ public: RAWCACorr (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void setAdjusterBehavior (bool caadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); - void checkBoxToggled (CheckBox* c, CheckValue newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; + void checkBoxToggled (CheckBox* c, CheckValue newval) override; }; #endif diff --git a/rtgui/rawexposure.h b/rtgui/rawexposure.h index 6153ae98b..a04d0e3db 100644 --- a/rtgui/rawexposure.h +++ b/rtgui/rawexposure.h @@ -37,14 +37,14 @@ public: RAWExposure (); - 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 adjusterAutoToggled (Adjuster* a, bool newval); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool pexposadd, bool pexpreseradd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/resize.h b/rtgui/resize.h index e403e5d6f..3c599808d 100644 --- a/rtgui/resize.h +++ b/rtgui/resize.h @@ -33,20 +33,20 @@ class Resize final : { public: Resize (); - ~Resize (); + ~Resize () override; Gtk::Box* getPackBox () { return packBox; } - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void entryWChanged (); void entryHChanged (); void appliesToChanged (); @@ -54,12 +54,12 @@ public: void specChanged (); void update (bool isCropped, int cw, int ch, int ow = 0, int oh = 0); void setGUIFromCrop (bool isCropped, int cw, int ch); - void sizeChanged (int w, int h, int ow, int oh); + void sizeChanged (int w, int h, int ow, int oh) override; void setDimensions (); - void enabledChanged (); + void enabledChanged () override; void setAdjusterBehavior (bool scaleadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; private: void fitBoxScale (); diff --git a/rtgui/retinex.cc b/rtgui/retinex.cc index 0e2bddbda..c74f977c8 100644 --- a/rtgui/retinex.cc +++ b/rtgui/retinex.cc @@ -11,7 +11,6 @@ using namespace rtengine::procparams; Retinex::Retinex () : FoldableToolPanel (this, "retinex", M ("TP_RETINEX_LABEL"), false, true), lastmedianmap (false) { CurveListener::setMulti (true); - std::vector defaultCurve; std::vector milestones; nextmin = 0.; nextmax = 0.; diff --git a/rtgui/retinex.h b/rtgui/retinex.h index e0d0d7695..b9ed3c927 100644 --- a/rtgui/retinex.h +++ b/rtgui/retinex.h @@ -96,25 +96,25 @@ protected: public: Retinex (); - ~Retinex (); + ~Retinex () override; - 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 trimValues (rtengine::procparams::ProcParams* pp); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); - void autoOpenCurve (); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void trimValues (rtengine::procparams::ProcParams* pp) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; + void autoOpenCurve () override; void medianmapChanged (); - void minmaxChanged (double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax); + void minmaxChanged (double cdma, double cdmin, double mini, double maxi, double Tmean, double Tsigma, double Tmin, double Tmax) override; bool minmaxComputed_ (); void updateLabel (); void updateTrans (); void neutral_pressed (); - void enabledChanged (); - void curveChanged (CurveEditor* ce); + void enabledChanged () override; + void curveChanged (CurveEditor* ce) override; void retinexMethodChanged(); void mapMethodChanged(); void viewMethodChanged(); @@ -137,7 +137,7 @@ public: const LUTu& histLRETI ); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; private: void foldAllButMe (GdkEventButton* event, MyExpander *expander); diff --git a/rtgui/rgbcurves.h b/rtgui/rgbcurves.h index 2bb24a10f..a7846f9ab 100644 --- a/rtgui/rgbcurves.h +++ b/rtgui/rgbcurves.h @@ -42,15 +42,15 @@ protected: public: RGBCurves (); - ~RGBCurves (); + ~RGBCurves () override; - 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 setEditProvider (EditDataProvider *provider); - void autoOpenCurve (); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setEditProvider (EditDataProvider *provider) override; + void autoOpenCurve () override; - void curveChanged (CurveEditor* ce); + void curveChanged (CurveEditor* ce) override; void updateCurveBackgroundHistogram( const LUTu& histToneCurve, const LUTu& histLCurve, @@ -64,7 +64,7 @@ public: const LUTu& histLRETI ); void lumamodeChanged (); - void enabledChanged(); + void enabledChanged() override; }; #endif diff --git a/rtgui/rotate.h b/rtgui/rotate.h index 5361cd80e..c23807361 100644 --- a/rtgui/rotate.h +++ b/rtgui/rotate.h @@ -36,17 +36,17 @@ public: Rotate (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void straighten (double deg); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool rotadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void selectStraightPressed (); void setLensGeomListener (LensGeomListener* l) { diff --git a/rtgui/rtwindow.h b/rtgui/rtwindow.h index 61b961b64..5b58ab0eb 100644 --- a/rtgui/rtwindow.h +++ b/rtgui/rtwindow.h @@ -68,7 +68,7 @@ private: public: RTWindow (); - ~RTWindow(); + ~RTWindow() override; #if defined(__APPLE__) bool osxFileOpenEvent (Glib::ustring path); @@ -81,20 +81,20 @@ public: void addBatchQueueJobs (const std::vector& entries); bool keyPressed (GdkEventKey* event); - bool on_configure_event (GdkEventConfigure* event); - bool on_delete_event (GdkEventAny* event); - bool on_window_state_event (GdkEventWindowState* event); + bool on_configure_event (GdkEventConfigure* event) override; + bool on_delete_event (GdkEventAny* event) override; + bool on_window_state_event (GdkEventWindowState* event) override; void on_mainNB_switch_page (Gtk::Widget* widget, guint page_num); void showICCProfileCreator (); void showPreferences (); - void on_realize (); + void on_realize () override; void toggle_fullscreen (); - void setProgress(double p); - void setProgressStr(const Glib::ustring& str); - void setProgressState(bool inProcessing); - void error(const Glib::ustring& descr); + void setProgress(double p) override; + void setProgressStr(const Glib::ustring& str) override; + void setProgressState(bool inProcessing) override; + void error(const Glib::ustring& descr) override; rtengine::ProgressListener* getProgressListener () { diff --git a/rtgui/saveformatpanel.h b/rtgui/saveformatpanel.h index e6560d73d..48fa97e13 100644 --- a/rtgui/saveformatpanel.h +++ b/rtgui/saveformatpanel.h @@ -49,7 +49,7 @@ protected: public: SaveFormatPanel (); - ~SaveFormatPanel (); + ~SaveFormatPanel () override; void setListener (FormatChangeListener* l) { listener = l; @@ -59,8 +59,8 @@ public: SaveFormat getFormat (); void formatChanged (); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; }; #endif diff --git a/rtgui/shadowshighlights.h b/rtgui/shadowshighlights.h index 4b6daa9dc..e04e2000a 100644 --- a/rtgui/shadowshighlights.h +++ b/rtgui/shadowshighlights.h @@ -40,17 +40,17 @@ public: ShadowsHighlights (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void setAdjusterBehavior (bool hadd, bool sadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; void colorspaceChanged(); }; diff --git a/rtgui/sharpenedge.h b/rtgui/sharpenedge.h index 82f796cb5..8bf5647ed 100644 --- a/rtgui/sharpenedge.h +++ b/rtgui/sharpenedge.h @@ -44,16 +44,16 @@ public: SharpenEdge (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void trimValues (rtengine::procparams::ProcParams* pp); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void trimValues (rtengine::procparams::ProcParams* pp) override; void setAdjusterBehavior (bool amountadd, bool passadd); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; - void enabledChanged (); + void enabledChanged () override; void chanthree_toggled (); }; diff --git a/rtgui/sharpening.cc b/rtgui/sharpening.cc index 3614594ea..8a7b8e591 100644 --- a/rtgui/sharpening.cc +++ b/rtgui/sharpening.cc @@ -27,6 +27,7 @@ Sharpening::Sharpening () : FoldableToolPanel(this, "sharpening", M("TP_SHARPENI { auto m = ProcEventMapper::getInstance(); EvSharpenContrast = m->newEvent(SHARPENING, "HISTORY_MSG_SHARPENING_CONTRAST"); + EvSharpenBlur = m->newEvent(SHARPENING, "HISTORY_MSG_SHARPENING_BLUR"); Gtk::HBox* hb = Gtk::manage (new Gtk::HBox ()); hb->show (); @@ -34,6 +35,10 @@ Sharpening::Sharpening () : FoldableToolPanel(this, "sharpening", M("TP_SHARPENI contrast->setAdjusterListener (this); pack_start(*contrast); contrast->show(); + blur = Gtk::manage(new Adjuster (M("TP_SHARPENING_BLUR"), 0.2, 2.0, 0.05, 0.2)); + blur->setAdjusterListener (this); + pack_start(*blur); + blur->show(); Gtk::Label* ml = Gtk::manage (new Gtk::Label (M("TP_SHARPENING_METHOD") + ":")); ml->show (); @@ -152,7 +157,8 @@ void Sharpening::read (const ProcParams* pp, const ParamsEdited* pedited) disableListener (); if (pedited) { - contrast->setEditedState (pedited->sharpening.contrast ? Edited : UnEdited); + contrast->setEditedState (pedited->sharpening.contrast ? Edited : UnEdited); + blur->setEditedState (pedited->sharpening.blurradius ? Edited : UnEdited); amount->setEditedState (pedited->sharpening.amount ? Edited : UnEdited); radius->setEditedState (pedited->sharpening.radius ? Edited : UnEdited); threshold->setEditedState (pedited->sharpening.threshold ? Edited : UnEdited); @@ -182,6 +188,7 @@ void Sharpening::read (const ProcParams* pp, const ParamsEdited* pedited) lastHaloControl = pp->sharpening.halocontrol; contrast->setValue (pp->sharpening.contrast); + blur->setValue (pp->sharpening.blurradius); amount->setValue (pp->sharpening.amount); radius->setValue (pp->sharpening.radius); threshold->setValue(pp->sharpening.threshold); @@ -224,6 +231,7 @@ void Sharpening::write (ProcParams* pp, ParamsEdited* pedited) { pp->sharpening.contrast = contrast->getValue (); + pp->sharpening.blurradius = blur->getValue (); pp->sharpening.amount = (int)amount->getValue(); pp->sharpening.enabled = getEnabled (); pp->sharpening.radius = radius->getValue (); @@ -246,6 +254,7 @@ void Sharpening::write (ProcParams* pp, ParamsEdited* pedited) if (pedited) { pedited->sharpening.contrast = contrast->getEditedState (); + pedited->sharpening.blurradius = blur->getEditedState (); pedited->sharpening.amount = amount->getEditedState (); pedited->sharpening.radius = radius->getEditedState (); pedited->sharpening.threshold = threshold->getEditedState (); @@ -266,6 +275,7 @@ void Sharpening::write (ProcParams* pp, ParamsEdited* pedited) void Sharpening::setDefaults (const ProcParams* defParams, const ParamsEdited* pedited) { contrast->setDefault (defParams->sharpening.contrast); + blur->setDefault (defParams->sharpening.blurradius); amount->setDefault (defParams->sharpening.amount); radius->setDefault (defParams->sharpening.radius); threshold->setDefault (defParams->sharpening.threshold); @@ -279,6 +289,7 @@ void Sharpening::setDefaults (const ProcParams* defParams, const ParamsEdited* p if (pedited) { contrast->setDefaultEditedState (pedited->sharpening.contrast ? Edited : UnEdited); + blur->setDefaultEditedState (pedited->sharpening.blurradius ? Edited : UnEdited); amount->setDefaultEditedState (pedited->sharpening.amount ? Edited : UnEdited); radius->setDefaultEditedState (pedited->sharpening.radius ? Edited : UnEdited); threshold->setDefaultEditedState (pedited->sharpening.threshold ? Edited : UnEdited); @@ -291,6 +302,7 @@ void Sharpening::setDefaults (const ProcParams* defParams, const ParamsEdited* p ddamping->setDefaultEditedState (pedited->sharpening.deconvdamping ? Edited : UnEdited); } else { contrast->setDefaultEditedState (Irrelevant); + blur->setDefaultEditedState (Irrelevant); amount->setDefaultEditedState (Irrelevant); radius->setDefaultEditedState (Irrelevant); threshold->setDefaultEditedState (Irrelevant); @@ -310,7 +322,7 @@ void Sharpening::adjusterChanged(Adjuster* a, double newval) Glib::ustring costr; - if (a == radius || a == dradius) { + if (a == radius || a == dradius || a == blur) { costr = Glib::ustring::format (std::setw(3), std::fixed, std::setprecision(2), a->getValue()); } else if (a == eradius) { costr = Glib::ustring::format (std::setw(2), std::fixed, std::setprecision(1), a->getValue()); @@ -324,6 +336,8 @@ void Sharpening::adjusterChanged(Adjuster* a, double newval) listener->panelChanged (EvShrAmount, costr); } else if (a == radius) { listener->panelChanged (EvShrRadius, costr); + } else if (a == blur) { + listener->panelChanged (EvSharpenBlur, costr); } else if (a == eradius) { listener->panelChanged (EvShrEdgeRadius, costr); } else if (a == etolerance) { @@ -487,6 +501,7 @@ void Sharpening::setBatchMode (bool batchMode) pack_start (*rld); contrast->showEditedCB (); + blur->showEditedCB (); radius->showEditedCB (); amount->showEditedCB (); threshold->showEditedCB (); @@ -518,6 +533,7 @@ void Sharpening::setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amo void Sharpening::trimValues (rtengine::procparams::ProcParams* pp) { contrast->trimValue(pp->sharpening.contrast); + blur->trimValue(pp->sharpening.blurradius); radius->trimValue(pp->sharpening.radius); dradius->trimValue(pp->sharpening.deconvradius); amount->trimValue(pp->sharpening.amount); diff --git a/rtgui/sharpening.h b/rtgui/sharpening.h index ed22357fa..75ea083c9 100644 --- a/rtgui/sharpening.h +++ b/rtgui/sharpening.h @@ -29,6 +29,7 @@ class Sharpening : public ToolParamBlock, public ThresholdAdjusterListener, publ protected: Adjuster* contrast; + Adjuster* blur; MyComboBoxText* method; Adjuster* dradius; Adjuster* damount; @@ -55,31 +56,32 @@ protected: sigc::connection hcConn; rtengine::ProcEvent EvSharpenContrast; + rtengine::ProcEvent EvSharpenBlur; public: Sharpening (); - virtual ~Sharpening (); + ~Sharpening () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged (); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged () override; void edgesonly_toggled (); void halocontrol_toggled (); void method_changed (); - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; void setAdjusterBehavior (bool contrastadd, bool radiusadd, bool amountadd, bool dampingadd, bool iteradd, bool edgetoladd, bool haloctrladd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/sharpenmicro.h b/rtgui/sharpenmicro.h index 19c962841..6dfccea85 100644 --- a/rtgui/sharpenmicro.h +++ b/rtgui/sharpenmicro.h @@ -47,16 +47,16 @@ public: SharpenMicro (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void trimValues (rtengine::procparams::ProcParams* pp); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void trimValues (rtengine::procparams::ProcParams* pp) override; void setAdjusterBehavior (bool amountadd, bool contrastadd, bool uniformityadd); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; - void enabledChanged (); + void enabledChanged () override; void matrix_toggled (); diff --git a/rtgui/shcselector.h b/rtgui/shcselector.h index 5e02342d5..ac6c8afed 100644 --- a/rtgui/shcselector.h +++ b/rtgui/shcselector.h @@ -51,16 +51,16 @@ protected: SHCListener* cl; - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; - void on_realize(); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - bool on_button_press_event (GdkEventButton* event); - bool on_button_release_event (GdkEventButton* event); - bool on_motion_notify_event (GdkEventMotion* event); + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; + void on_realize() override; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event (GdkEventButton* event) override; + bool on_motion_notify_event (GdkEventMotion* event) override; void updateBackBuffer(); public: diff --git a/rtgui/softlight.cc b/rtgui/softlight.cc index 0ee4c64b9..072c45e98 100644 --- a/rtgui/softlight.cc +++ b/rtgui/softlight.cc @@ -28,8 +28,8 @@ using namespace rtengine::procparams; SoftLight::SoftLight(): FoldableToolPanel(this, "softlight", M("TP_SOFTLIGHT_LABEL"), false, true) { auto m = ProcEventMapper::getInstance(); - EvSoftLightEnabled = m->newEvent(RGBCURVE, "HISTORY_MSG_SOFTLIGHT_ENABLED"); - EvSoftLightStrength = m->newEvent(RGBCURVE, "HISTORY_MSG_SOFTLIGHT_STRENGTH"); + EvSoftLightEnabled = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_SOFTLIGHT_ENABLED"); + EvSoftLightStrength = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_SOFTLIGHT_STRENGTH"); strength = Gtk::manage(new Adjuster(M("TP_SOFTLIGHT_STRENGTH"), 0., 100., 1., 30.)); strength->setAdjusterListener(this); diff --git a/rtgui/softlight.h b/rtgui/softlight.h index ad537894e..a036592e4 100644 --- a/rtgui/softlight.h +++ b/rtgui/softlight.h @@ -35,14 +35,14 @@ public: SoftLight(); - void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr); - void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr); - void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr); - void setBatchMode(bool batchMode); + void read(const rtengine::procparams::ProcParams *pp, const ParamsEdited *pedited=nullptr) override; + void write(rtengine::procparams::ProcParams *pp, ParamsEdited *pedited=nullptr) override; + void setDefaults(const rtengine::procparams::ProcParams *defParams, const ParamsEdited *pedited=nullptr) override; + void setBatchMode(bool batchMode) override; - void adjusterChanged(Adjuster *a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void enabledChanged(); + void adjusterChanged(Adjuster *a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void enabledChanged() override; void setAdjusterBehavior(bool strengthAdd); }; diff --git a/rtgui/splash.h b/rtgui/splash.h index 4769700f6..b35021c65 100644 --- a/rtgui/splash.h +++ b/rtgui/splash.h @@ -30,12 +30,12 @@ private: public: SplashImage (); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; }; //class Splash : public Gtk::Window { diff --git a/rtgui/thresholdadjuster.h b/rtgui/thresholdadjuster.h index fea4e9094..54026a183 100644 --- a/rtgui/thresholdadjuster.h +++ b/rtgui/thresholdadjuster.h @@ -91,7 +91,7 @@ public: double defTopLeft, double defBottomRight, double defTopRight, unsigned int precision, bool startAtOne, bool editedCheckBox = false); - virtual ~ThresholdAdjuster (); + ~ThresholdAdjuster () override; void setAdjusterListener (ThresholdAdjusterListener* alistener) { adjusterListener = alistener; diff --git a/rtgui/thresholdselector.h b/rtgui/thresholdselector.h index 32b423e64..0b0f46d5f 100644 --- a/rtgui/thresholdselector.h +++ b/rtgui/thresholdselector.h @@ -111,17 +111,17 @@ protected: void updateTooltip(); void updateBackBuffer(); - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; - void on_realize (); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); - bool on_button_press_event (GdkEventButton* event); - bool on_button_release_event (GdkEventButton* event); - bool on_motion_notify_event (GdkEventMotion* event); - bool on_leave_notify_event (GdkEventCrossing* event); + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int& minimum_height, int& natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; + void on_realize () override; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event (GdkEventButton* event) override; + bool on_motion_notify_event (GdkEventMotion* event) override; + bool on_leave_notify_event (GdkEventCrossing* event) override; public: diff --git a/rtgui/thumbbrowserbase.cc b/rtgui/thumbbrowserbase.cc index 1518428b7..6c15411a1 100644 --- a/rtgui/thumbbrowserbase.cc +++ b/rtgui/thumbbrowserbase.cc @@ -76,6 +76,10 @@ void ThumbBrowserBase::scroll (int direction, double deltaX, double deltaY) } else { delta = deltaY; } + if (direction == GDK_SCROLL_SMOOTH && delta == 0.0) { + // sometimes this case happens. To avoid scrolling the wrong direction in this case, we just do nothing + return; + } double coef = direction == GDK_SCROLL_DOWN || (direction == GDK_SCROLL_SMOOTH && delta > 0.0) ? +1.0 : -1.0; // GUI already acquired when here @@ -166,33 +170,37 @@ void ThumbBrowserBase::selectSingle (ThumbBrowserEntryBase* clicked) void ThumbBrowserBase::selectRange (ThumbBrowserEntryBase* clicked, bool additional) { - if (selected.empty ()) { - addToSelection (clicked, selected); + if (selected.empty()) { + addToSelection(clicked, selected); return; } if (!additional || !lastClicked) { // Extend the current range w.r.t to first selected entry. - ThumbIterator front = std::find (fd.begin (), fd.end (), selected.front ()); - ThumbIterator current = std::find (fd.begin (), fd.end (), clicked); + ThumbIterator front = std::find(fd.begin(), fd.end(), selected.front()); + ThumbIterator current = std::find(fd.begin(), fd.end(), clicked); - if (front > current) - std::swap (front, current); + if (front > current) { + std::swap(front, current); + } - clearSelection (selected); + clearSelection(selected); - for (; front <= current; ++front) - addToSelection (*front, selected); + for (; front <= current && front != fd.end(); ++front) { + addToSelection(*front, selected); + } } else { // Add an additional range w.r.t. the last clicked entry. - ThumbIterator last = std::find (fd.begin (), fd.end (), lastClicked); - ThumbIterator current = std::find (fd.begin (), fd.end (), clicked); + ThumbIterator last = std::find(fd.begin(), fd.end(), lastClicked); + ThumbIterator current = std::find (fd.begin(), fd.end(), clicked); - if (last > current) - std::swap (last, current); + if (last > current) { + std::swap(last, current); + } - for (; last <= current; ++last) - addToSelection (*last, selected); + for (; last <= current && last != fd.end(); ++last) { + addToSelection(*last, selected); + } } } @@ -337,7 +345,7 @@ void ThumbBrowserBase::selectNext (int distance, bool enlarge) std::swap(front, back); } - for (; front <= back; ++front) { + for (; front <= back && front != fd.end(); ++front) { if (!(*front)->filtered) { (*front)->selected = true; redrawNeeded (*front); @@ -1001,9 +1009,6 @@ void ThumbBrowserBase::zoomChanged (bool zoomIn) } redraw (); -#ifdef WIN32 - gdk_window_process_updates (get_window()->gobj(), true); -#endif } void ThumbBrowserBase::refreshThumbImages () diff --git a/rtgui/thumbbrowserbase.h b/rtgui/thumbbrowserbase.h index 02bea3646..dbc9374a0 100644 --- a/rtgui/thumbbrowserbase.h +++ b/rtgui/thumbbrowserbase.h @@ -49,21 +49,21 @@ class ThumbBrowserBase : public Gtk::Grid public: Internal (); void setParent (ThumbBrowserBase* p); - void on_realize(); - void on_style_updated(); - bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr); + void on_realize() override; + void on_style_updated() override; + bool on_draw(const ::Cairo::RefPtr< Cairo::Context> &cr) override; - Gtk::SizeRequestMode get_request_mode_vfunc () const; - void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const; - void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const; - void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const; - void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const; + Gtk::SizeRequestMode get_request_mode_vfunc () const override; + void get_preferred_height_vfunc (int &minimum_height, int &natural_height) const override; + void get_preferred_width_vfunc (int &minimum_width, int &natural_width) const override; + void get_preferred_height_for_width_vfunc (int width, int &minimum_height, int &natural_height) const override; + void get_preferred_width_for_height_vfunc (int height, int &minimum_width, int &natural_width) const override; - bool on_button_press_event (GdkEventButton* event); - bool on_button_release_event (GdkEventButton* event); - bool on_motion_notify_event (GdkEventMotion* event); - bool on_scroll_event (GdkEventScroll* event); - bool on_key_press_event (GdkEventKey* event); + bool on_button_press_event (GdkEventButton* event) override; + bool on_button_release_event (GdkEventButton* event) override; + bool on_motion_notify_event (GdkEventMotion* event) override; + bool on_scroll_event (GdkEventScroll* event) override; + bool on_key_press_event (GdkEventKey* event) override; bool on_query_tooltip (int x, int y, bool keyboard_tooltip, const Glib::RefPtr& tooltip); void setPosition (int x, int y); @@ -199,7 +199,7 @@ public: { return fd; } - void on_style_updated (); + void on_style_updated () override; void redraw (); // arrange files and draw area void refreshThumbImages (); // refresh thumbnail sizes, re-generate thumbnail images, arrange and draw void refreshQuickThumbImages (); // refresh thumbnail sizes, re-generate thumbnail images, arrange and draw diff --git a/rtgui/thumbimageupdater.cc b/rtgui/thumbimageupdater.cc index 992b38812..f7caf5f5e 100644 --- a/rtgui/thumbimageupdater.cc +++ b/rtgui/thumbimageupdater.cc @@ -183,6 +183,10 @@ ThumbImageUpdater::ThumbImageUpdater(): { } +ThumbImageUpdater::~ThumbImageUpdater() { + delete impl_; +} + void ThumbImageUpdater::add(ThumbBrowserEntryBase* tbe, bool* priority, bool upgrade, ThumbImageUpdateListener* l) { // nobody listening? diff --git a/rtgui/thumbimageupdater.h b/rtgui/thumbimageupdater.h index 820ddca8f..a3be44d7c 100644 --- a/rtgui/thumbimageupdater.h +++ b/rtgui/thumbimageupdater.h @@ -89,6 +89,7 @@ public: private: ThumbImageUpdater(); + ~ThumbImageUpdater(); class Impl; Impl* impl_; diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index c2d23eab2..7fb547aa6 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -32,6 +32,7 @@ #include "batchqueue.h" #include "extprog.h" #include "profilestorecombobox.h" +#include "procparamchangers.h" using namespace rtengine::procparams; @@ -448,7 +449,10 @@ void Thumbnail::setProcParams (const ProcParams& pp, ParamsEdited* pe, int whoCh || pparams.icm != pp.icm || pparams.hsvequalizer != pp.hsvequalizer || pparams.filmSimulation != pp.filmSimulation - || pparams.softlight != pp.softlight; + || pparams.softlight != pp.softlight + || pparams.dehaze != pp.dehaze + || whoChangedIt == FILEBROWSER + || whoChangedIt == BATCHEDITOR; { MyMutex::MyLock lock(mutex); @@ -617,6 +621,11 @@ void Thumbnail::getFinalSize (const rtengine::procparams::ProcParams& pparams, i } } +void Thumbnail::getOriginalSize (int& w, int& h) +{ + w = tw; + h = th; +} rtengine::IImage8* Thumbnail::processThumbImage (const rtengine::procparams::ProcParams& pparams, int h, double& scale) { @@ -854,8 +863,10 @@ void Thumbnail::_loadThumbnail(bool firstTrial) } if ( cfs.thumbImgType == CacheImageData::FULL_THUMBNAIL ) { - // load aehistogram - tpp->readAEHistogram (getCacheFileName ("aehistograms", "")); + if(!tpp->isAeValid()) { + // load aehistogram + tpp->readAEHistogram (getCacheFileName ("aehistograms", "")); + } // load embedded profile tpp->readEmbProfile (getCacheFileName ("embprofiles", ".icc")); @@ -897,19 +908,15 @@ void Thumbnail::_saveThumbnail () return; } - if (g_remove (getCacheFileName ("images", ".rtti").c_str ()) != 0) { - // No file deleted, so we try to deleted obsolete files, if any - g_remove (getCacheFileName ("images", ".cust").c_str ()); - g_remove (getCacheFileName ("images", ".cust16").c_str ()); - g_remove (getCacheFileName ("images", ".jpg").c_str ()); - } + g_remove (getCacheFileName ("images", ".rtti").c_str ()); // save thumbnail image tpp->writeImage (getCacheFileName ("images", "")); - // save aehistogram - tpp->writeAEHistogram (getCacheFileName ("aehistograms", "")); - + if(!tpp->isAeValid()) { + // save aehistogram + tpp->writeAEHistogram (getCacheFileName ("aehistograms", "")); + } // save embedded profile tpp->writeEmbProfile (getCacheFileName ("embprofiles", ".icc")); diff --git a/rtgui/thumbnail.h b/rtgui/thumbnail.h index ae627c22f..28762e505 100644 --- a/rtgui/thumbnail.h +++ b/rtgui/thumbnail.h @@ -114,6 +114,7 @@ public: rtengine::IImage8* upgradeThumbImage (const rtengine::procparams::ProcParams& pparams, int h, double& scale); void getThumbnailSize (int &w, int &h, const rtengine::procparams::ProcParams *pparams = nullptr); void getFinalSize (const rtengine::procparams::ProcParams& pparams, int& w, int& h); + void getOriginalSize (int& w, int& h); const Glib::ustring& getExifString () const; const Glib::ustring& getDateTimeString () const; diff --git a/rtgui/tonecurve.cc b/rtgui/tonecurve.cc index d4c9e8ab6..5769386ef 100644 --- a/rtgui/tonecurve.cc +++ b/rtgui/tonecurve.cc @@ -48,7 +48,7 @@ ToneCurve::ToneCurve () : FoldableToolPanel(this, "tonecurve", M("TP_EXPOSURE_LA //----------- Auto Levels ---------------------------------- abox = Gtk::manage (new Gtk::HBox ()); - abox->set_spacing (10); + abox->set_spacing (4); autolevels = Gtk::manage (new Gtk::ToggleButton (M("TP_EXPOSURE_AUTOLEVELS"))); autolevels->set_tooltip_markup (M("TP_EXPOSURE_AUTOLEVELS_TIP")); diff --git a/rtgui/tonecurve.h b/rtgui/tonecurve.h index 53ec2fa9f..d95049d1c 100644 --- a/rtgui/tonecurve.h +++ b/rtgui/tonecurve.h @@ -88,21 +88,21 @@ protected: public: ToneCurve (); - ~ToneCurve (); + ~ToneCurve () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void setAdjusterBehavior (bool expadd, bool hlcompadd, bool hlcompthreshadd, bool bradd, bool blackadd, bool shcompadd, bool contradd, bool satadd); - void trimValues (rtengine::procparams::ProcParams* pp); - void autoOpenCurve (); - void setEditProvider (EditDataProvider *provider); + void trimValues (rtengine::procparams::ProcParams* pp) override; + void autoOpenCurve () override; + void setEditProvider (EditDataProvider *provider) override; - virtual float blendPipetteValues (CurveEditor *ce, float chan1, float chan2, float chan3); + float blendPipetteValues (CurveEditor *ce, float chan1, float chan2, float chan3) override; - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void neutral_pressed (); void autolevels_toggled (); void clip_changed (); @@ -110,7 +110,7 @@ public: void waitForAutoExp (); bool autoExpComputed_ (); void enableAll (); - void curveChanged (CurveEditor* ce); + void curveChanged (CurveEditor* ce) override; void curveMode1Changed (); bool curveMode1Changed_ (); void curveMode2Changed (); @@ -133,8 +133,8 @@ public: void histmatchingToggled(); bool histmatchingComputed(); - void autoExpChanged(double expcomp, int bright, int contr, int black, int hlcompr, int hlcomprthresh, bool hlrecons); - void autoMatchedToneCurveChanged(rtengine::procparams::ToneCurveParams::TcMode curveMode, const std::vector& curve); + void autoExpChanged(double expcomp, int bright, int contr, int black, int hlcompr, int hlcomprthresh, bool hlrecons) override; + void autoMatchedToneCurveChanged(rtengine::procparams::ToneCurveParams::TcMode curveMode, const std::vector& curve) override; void setRaw (bool raw); diff --git a/rtgui/toolpanel.h b/rtgui/toolpanel.h index 9f2d031c0..fbe87f5f0 100644 --- a/rtgui/toolpanel.h +++ b/rtgui/toolpanel.h @@ -131,6 +131,9 @@ public: this->batchMode = batchMode; } + virtual Glib::ustring getToolName () { + return toolName; + } }; class FoldableToolPanel : public ToolPanel @@ -148,11 +151,11 @@ public: FoldableToolPanel(Gtk::Box* content, Glib::ustring toolName, Glib::ustring UILabel, bool need11 = false, bool useEnabled = false); - MyExpander* getExpander() + MyExpander* getExpander() override { return exp; } - void setExpanded (bool expanded) + void setExpanded (bool expanded) override { if (exp) { exp->set_expanded( expanded ); @@ -170,7 +173,7 @@ public: exp->show(); } } - bool getExpanded () + bool getExpanded () override { if (exp) { return exp->get_expanded(); @@ -178,11 +181,11 @@ public: return false; } - void setParent (Gtk::Box* parent) + void setParent (Gtk::Box* parent) override { parentContainer = parent; } - Gtk::Box* getParent () + Gtk::Box* getParent () override { return parentContainer; } diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 1c9b17a5a..00a220c89 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -28,9 +28,10 @@ using namespace rtengine::procparams; -ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChanged (false), editDataProvider (nullptr) +ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), favoritePanelSW(nullptr), hasChanged (false), editDataProvider (nullptr) { + favoritePanel = Gtk::manage (new ToolVBox ()); exposurePanel = Gtk::manage (new ToolVBox ()); detailsPanel = Gtk::manage (new ToolVBox ()); colorPanel = Gtk::manage (new ToolVBox ()); @@ -77,6 +78,7 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan hsvequalizer = Gtk::manage (new HSVEqualizer ()); filmSimulation = Gtk::manage (new FilmSimulation ()); softlight = Gtk::manage(new SoftLight()); + dehaze = Gtk::manage(new Dehaze()); sensorbayer = Gtk::manage (new SensorBayer ()); sensorxtrans = Gtk::manage (new SensorXTrans ()); bayerprocess = Gtk::manage (new BayerProcess ()); @@ -99,57 +101,67 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan // Valeurs par dfaut: // Best -> low ISO // Medium -> High ISO + favorites.resize(options.favorites.size(), nullptr); - addPanel (colorPanel, whitebalance); - addPanel (exposurePanel, toneCurve); - addPanel (colorPanel, vibrance); - addPanel (colorPanel, chmixer); - addPanel (colorPanel, blackwhite); - addPanel (exposurePanel, shadowshighlights); - addPanel (detailsPanel, sharpening); - addPanel (detailsPanel, localContrast); - addPanel (detailsPanel, sharpenEdge); - addPanel (detailsPanel, sharpenMicro); - addPanel (colorPanel, hsvequalizer); - addPanel (colorPanel, filmSimulation); - addPanel (colorPanel, softlight); - addPanel (colorPanel, rgbcurves); - addPanel (colorPanel, colortoning); - addPanel (exposurePanel, epd); - addPanel (exposurePanel, fattal); - addPanel (advancedPanel, retinex); - addPanel (exposurePanel, pcvignette); - addPanel (exposurePanel, gradient); - addPanel (exposurePanel, lcurve); - addPanel (advancedPanel, colorappearance); - addPanel (detailsPanel, impulsedenoise); - addPanel (detailsPanel, dirpyrdenoise); - addPanel (detailsPanel, defringe); - addPanel (detailsPanel, dirpyrequalizer); - addPanel (advancedPanel, wavelet); - addPanel (transformPanel, crop); - addPanel (transformPanel, resize); + addfavoritePanel (colorPanel, whitebalance); + addfavoritePanel (exposurePanel, toneCurve); + addfavoritePanel (colorPanel, vibrance); + addfavoritePanel (colorPanel, chmixer); + addfavoritePanel (colorPanel, blackwhite); + addfavoritePanel (exposurePanel, shadowshighlights); + addfavoritePanel (detailsPanel, sharpening); + addfavoritePanel (detailsPanel, localContrast); + addfavoritePanel (detailsPanel, sharpenEdge); + addfavoritePanel (detailsPanel, sharpenMicro); + addfavoritePanel (colorPanel, hsvequalizer); + addfavoritePanel (colorPanel, filmSimulation); + addfavoritePanel (colorPanel, softlight); + addfavoritePanel (colorPanel, rgbcurves); + addfavoritePanel (colorPanel, colortoning); + addfavoritePanel (exposurePanel, epd); + addfavoritePanel (exposurePanel, fattal); + addfavoritePanel (advancedPanel, retinex); + addfavoritePanel (exposurePanel, pcvignette); + addfavoritePanel (exposurePanel, gradient); + addfavoritePanel (exposurePanel, lcurve); + addfavoritePanel (advancedPanel, colorappearance); + addfavoritePanel (detailsPanel, impulsedenoise); + addfavoritePanel (detailsPanel, dirpyrdenoise); + addfavoritePanel (detailsPanel, defringe); + addfavoritePanel (detailsPanel, dirpyrequalizer); + addfavoritePanel (detailsPanel, dehaze); + addfavoritePanel (advancedPanel, wavelet); + addfavoritePanel (transformPanel, crop); + addfavoritePanel (transformPanel, resize); addPanel (resize->getPackBox(), prsharpening, 2); - addPanel (transformPanel, lensgeom); - addPanel (lensgeom->getPackBox(), rotate, 2); - addPanel (lensgeom->getPackBox(), perspective, 2); - addPanel (lensgeom->getPackBox(), lensProf, 2); - addPanel (lensgeom->getPackBox(), distortion, 2); - addPanel (lensgeom->getPackBox(), cacorrection, 2); - addPanel (lensgeom->getPackBox(), vignetting, 2); - addPanel (colorPanel, icm); - addPanel (rawPanel, sensorbayer); - addPanel (sensorbayer->getPackBox(), bayerprocess, 2); - addPanel (sensorbayer->getPackBox(), bayerrawexposure, 2); - addPanel (sensorbayer->getPackBox(), bayerpreprocess, 2); - addPanel (sensorbayer->getPackBox(), rawcacorrection, 2); - addPanel (rawPanel, sensorxtrans); - addPanel (sensorxtrans->getPackBox(), xtransprocess, 2); - addPanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); - addPanel (rawPanel, rawexposure); - addPanel (rawPanel, preprocess); - addPanel (rawPanel, darkframe); - addPanel (rawPanel, flatfield); + addfavoritePanel (transformPanel, lensgeom); + addfavoritePanel (lensgeom->getPackBox(), rotate, 2); + addfavoritePanel (lensgeom->getPackBox(), perspective, 2); + addfavoritePanel (lensgeom->getPackBox(), lensProf, 2); + addfavoritePanel (lensgeom->getPackBox(), distortion, 2); + addfavoritePanel (lensgeom->getPackBox(), cacorrection, 2); + addfavoritePanel (lensgeom->getPackBox(), vignetting, 2); + addfavoritePanel (colorPanel, icm); + addfavoritePanel (rawPanel, sensorbayer); + addfavoritePanel (sensorbayer->getPackBox(), bayerprocess, 2); + addfavoritePanel (sensorbayer->getPackBox(), bayerrawexposure, 2); + addfavoritePanel (sensorbayer->getPackBox(), bayerpreprocess, 2); + addfavoritePanel (sensorbayer->getPackBox(), rawcacorrection, 2); + addfavoritePanel (rawPanel, sensorxtrans); + addfavoritePanel (sensorxtrans->getPackBox(), xtransprocess, 2); + addfavoritePanel (sensorxtrans->getPackBox(), xtransrawexposure, 2); + addfavoritePanel (rawPanel, rawexposure); + addfavoritePanel (rawPanel, preprocess); + addfavoritePanel (rawPanel, darkframe); + addfavoritePanel (rawPanel, flatfield); + + int favoriteCount = 0; + for(auto it = favorites.begin(); it != favorites.end(); ++it) { + if (*it) { + addPanel(favoritePanel, *it); + ++favoriteCount; + } + } toolPanels.push_back (coarse); toolPanels.push_back(metadata); @@ -157,17 +169,16 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toolPanelNotebook = new Gtk::Notebook (); toolPanelNotebook->set_name ("ToolPanelNotebook"); - exposurePanelSW = Gtk::manage (new MyScrolledWindow ()); detailsPanelSW = Gtk::manage (new MyScrolledWindow ()); colorPanelSW = Gtk::manage (new MyScrolledWindow ()); transformPanelSW = Gtk::manage (new MyScrolledWindow ()); rawPanelSW = Gtk::manage (new MyScrolledWindow ()); - advancedPanelSW = Gtk::manage (new MyScrolledWindow ()); + advancedPanelSW = Gtk::manage (new MyScrolledWindow ()); updateVScrollbars (options.hideTPVScrollbar); // load panel endings - for (int i = 0; i < 6; i++) { + for (int i = 0; i < 7; i++) { vbPanelEnd[i] = Gtk::manage (new Gtk::VBox ()); imgPanelEnd[i] = Gtk::manage (new RTImage ("ornament1.png")); imgPanelEnd[i]->show (); @@ -175,30 +186,38 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan vbPanelEnd[i]->show_all(); } + if(favoriteCount > 0) { + favoritePanelSW = Gtk::manage(new MyScrolledWindow()); + favoritePanelSW->add(*favoritePanel); + favoritePanel->pack_start(*Gtk::manage(new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); + favoritePanel->pack_start(*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + } + exposurePanelSW->add (*exposurePanel); exposurePanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - exposurePanel->pack_start (*vbPanelEnd[0], Gtk::PACK_SHRINK, 4); + exposurePanel->pack_start (*vbPanelEnd[1], Gtk::PACK_SHRINK, 4); detailsPanelSW->add (*detailsPanel); detailsPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - detailsPanel->pack_start (*vbPanelEnd[1], Gtk::PACK_SHRINK, 4); + detailsPanel->pack_start (*vbPanelEnd[2], Gtk::PACK_SHRINK, 4); colorPanelSW->add (*colorPanel); colorPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - colorPanel->pack_start (*vbPanelEnd[2], Gtk::PACK_SHRINK, 4); + colorPanel->pack_start (*vbPanelEnd[3], Gtk::PACK_SHRINK, 4); advancedPanelSW->add (*advancedPanel); advancedPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - advancedPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); + advancedPanel->pack_start (*vbPanelEnd[6], Gtk::PACK_SHRINK, 0); transformPanelSW->add (*transformPanel); transformPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - transformPanel->pack_start (*vbPanelEnd[3], Gtk::PACK_SHRINK, 4); + transformPanel->pack_start (*vbPanelEnd[4], Gtk::PACK_SHRINK, 4); rawPanelSW->add (*rawPanel); rawPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); - rawPanel->pack_start (*vbPanelEnd[4], Gtk::PACK_SHRINK, 0); + rawPanel->pack_start (*vbPanelEnd[5], Gtk::PACK_SHRINK, 0); + toiF = Gtk::manage (new TextOrIcon ("star.png", M ("MAIN_TAB_FAVORITES"), M ("MAIN_TAB_FAVORITES_TOOLTIP"))); toiE = Gtk::manage (new TextOrIcon ("exposure.png", M ("MAIN_TAB_EXPOSURE"), M ("MAIN_TAB_EXPOSURE_TOOLTIP"))); toiD = Gtk::manage (new TextOrIcon ("detail.png", M ("MAIN_TAB_DETAIL"), M ("MAIN_TAB_DETAIL_TOOLTIP"))); toiC = Gtk::manage (new TextOrIcon ("color-circles.png", M ("MAIN_TAB_COLOR"), M ("MAIN_TAB_COLOR_TOOLTIP"))); @@ -207,6 +226,9 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan toiR = Gtk::manage (new TextOrIcon ("bayer.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"))); toiM = Gtk::manage (new TextOrIcon ("metadata.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"))); + if (favoritePanelSW) { + toolPanelNotebook->append_page (*favoritePanelSW, *toiF); + } toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); toolPanelNotebook->append_page (*colorPanelSW, *toiC); @@ -249,6 +271,18 @@ void ToolPanelCoordinator::addPanel (Gtk::Box* where, FoldableToolPanel* panel, toolPanels.push_back (panel); } +void ToolPanelCoordinator::addfavoritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level) +{ + auto name = panel->getToolName(); + auto it = std::find(options.favorites.begin(), options.favorites.end(), name); + if (it != options.favorites.end()) { + int index = std::distance(options.favorites.begin(), it); + favorites[index] = panel; + } else { + addPanel(where, panel, level); + } +} + ToolPanelCoordinator::~ToolPanelCoordinator () { idle_register.destroy(); @@ -854,6 +888,12 @@ bool ToolPanelCoordinator::handleShortcutKey (GdkEventKey* event) if (alt) { switch (event->keyval) { + case GDK_KEY_u: + if (favoritePanelSW) { + toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*favoritePanelSW)); + } + return true; + case GDK_KEY_e: toolPanelNotebook->set_current_page (toolPanelNotebook->page_num (*exposurePanelSW)); return true; @@ -891,6 +931,9 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide) { GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected Gtk::PolicyType policy = hide ? Gtk::POLICY_NEVER : Gtk::POLICY_AUTOMATIC; + if (favoritePanelSW) { + favoritePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); + } exposurePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); detailsPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); colorPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, policy); diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index b5a23f690..1ac74871a 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -80,6 +80,7 @@ #include "fattaltonemap.h" #include "localcontrast.h" #include "softlight.h" +#include "dehaze.h" #include "guiutils.h" class ImageEditorCoordinator; @@ -135,6 +136,7 @@ protected: DirPyrEqualizer* dirpyrequalizer; HSVEqualizer* hsvequalizer; SoftLight *softlight; + Dehaze *dehaze; FilmSimulation *filmSimulation; SensorBayer * sensorbayer; SensorXTrans * sensorxtrans; @@ -156,6 +158,8 @@ protected: rtengine::StagedImageProcessor* ipc; std::vector toolPanels; + std::vector favorites; + ToolVBox* favoritePanel; ToolVBox* exposurePanel; ToolVBox* detailsPanel; ToolVBox* colorPanel; @@ -164,6 +168,7 @@ protected: ToolVBox* advancedPanel; ToolBar* toolBar; + TextOrIcon* toiF; TextOrIcon* toiE; TextOrIcon* toiD; TextOrIcon* toiC; @@ -172,9 +177,10 @@ protected: TextOrIcon* toiM; TextOrIcon* toiW; - Gtk::Image* imgPanelEnd[6]; - Gtk::VBox* vbPanelEnd[6]; + Gtk::Image* imgPanelEnd[7]; + Gtk::VBox* vbPanelEnd[7]; + Gtk::ScrolledWindow* favoritePanelSW; Gtk::ScrolledWindow* exposurePanelSW; Gtk::ScrolledWindow* detailsPanelSW; Gtk::ScrolledWindow* colorPanelSW; @@ -189,6 +195,7 @@ protected: void addPanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); void foldThemAll (GdkEventButton* event); void updateVScrollbars (bool hide); + void addfavoritePanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); private: EditDataProvider *editDataProvider; @@ -198,7 +205,7 @@ public: Gtk::Notebook* toolPanelNotebook; ToolPanelCoordinator (bool batch = false); - virtual ~ToolPanelCoordinator (); + ~ToolPanelCoordinator () override; bool getChangedState () { @@ -225,9 +232,9 @@ public: } // toolpanellistener interface - void panelChanged(const rtengine::ProcEvent& event, const Glib::ustring& descr); + void panelChanged(const rtengine::ProcEvent& event, const Glib::ustring& descr) override; - void imageTypeChanged (bool isRaw, bool isBayer, bool isXtrans, bool isMono = false); + void imageTypeChanged (bool isRaw, bool isBayer, bool isXtrans, bool isMono = false) override; // void autoContrastChanged (double autoContrast); // profilechangelistener interface @@ -237,8 +244,8 @@ public: const Glib::ustring& descr, const ParamsEdited* paramsEdited = nullptr, bool fromLastSave = false - ); - void setDefaults(const rtengine::procparams::ProcParams* defparams); + ) override; + void setDefaults(const rtengine::procparams::ProcParams* defparams) override; // DirSelectionListener interface void dirSelected (const Glib::ustring& dirname, const Glib::ustring& openfile); @@ -261,13 +268,13 @@ public: // wbprovider interface - void getAutoWB (double& temp, double& green, double equal, double tempBias) + void getAutoWB (double& temp, double& green, double equal, double tempBias) override { if (ipc) { ipc->getAutoWB (temp, green, equal, tempBias); } } - void getCamWB (double& temp, double& green) + void getCamWB (double& temp, double& green) override { if (ipc) { ipc->getCamWB (temp, green); @@ -275,41 +282,41 @@ public: } //DFProvider interface - rtengine::RawImage* getDF(); + rtengine::RawImage* getDF() override; //FFProvider interface - rtengine::RawImage* getFF(); - Glib::ustring GetCurrentImageFilePath(); + rtengine::RawImage* getFF() override; + Glib::ustring GetCurrentImageFilePath() override; // rotatelistener interface - void straightenRequested (); - void autoCropRequested (); - double autoDistorRequested (); + void straightenRequested () override; + void autoCropRequested () override; + double autoDistorRequested () override; // spotwblistener interface - void spotWBRequested (int size); + void spotWBRequested (int size) override; // croppanellistener interface - void cropSelectRequested (); + void cropSelectRequested () override; // icmpanellistener interface - void saveInputICCReference(const Glib::ustring& fname, bool apply_wb); + void saveInputICCReference(const Glib::ustring& fname, bool apply_wb) override; // imageareatoollistener interface - void spotWBselected(int x, int y, Thumbnail* thm = nullptr); - void sharpMaskSelected(bool sharpMask); - int getSpotWBRectSize() const; - void cropSelectionReady(); - void rotateSelectionReady(double rotate_deg, Thumbnail* thm = nullptr); - ToolBar* getToolBar() const; - CropGUIListener* startCropEditing(Thumbnail* thm = nullptr); + void spotWBselected(int x, int y, Thumbnail* thm = nullptr) override; + void sharpMaskSelected(bool sharpMask) override; + int getSpotWBRectSize() const override; + void cropSelectionReady() override; + void rotateSelectionReady(double rotate_deg, Thumbnail* thm = nullptr) override; + ToolBar* getToolBar() const override; + CropGUIListener* startCropEditing(Thumbnail* thm = nullptr) override; void updateTPVScrollbar (bool hide); bool handleShortcutKey (GdkEventKey* event); // ToolBarListener interface - void toolSelected (ToolMode tool); - void editModeSwitchedOff (); + void toolSelected (ToolMode tool) override; + void editModeSwitchedOff () override; void setEditProvider (EditDataProvider *provider); diff --git a/rtgui/vibrance.h b/rtgui/vibrance.h index 62faf0c85..ed3e10059 100644 --- a/rtgui/vibrance.h +++ b/rtgui/vibrance.h @@ -52,30 +52,30 @@ protected: public: Vibrance (); - ~Vibrance (); + ~Vibrance () override; - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); - void trimValues (rtengine::procparams::ProcParams* pp); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void trimValues (rtengine::procparams::ProcParams* pp) override; void setAdjusterBehavior (bool pastelsadd, bool saturatedadd); - void adjusterChanged (Adjuster* a, double newval); - void adjusterAutoToggled (Adjuster* a, bool newval); - void curveChanged (); - void autoOpenCurve (); + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; + void curveChanged () override; + void autoOpenCurve () override; - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; - void enabledChanged (); + void enabledChanged () override; void protectskins_toggled (); void avoidcolorshift_toggled (); void pastsattog_toggled (); - std::vector getCurvePoints(ThresholdSelector* tAdjuster) const; + std::vector getCurvePoints(ThresholdSelector* tAdjuster) const override; }; diff --git a/rtgui/vignetting.h b/rtgui/vignetting.h index 975bf7344..5432b6178 100644 --- a/rtgui/vignetting.h +++ b/rtgui/vignetting.h @@ -37,15 +37,15 @@ public: Vignetting (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; void setAdjusterBehavior (bool amountadd, bool radiusadd, bool strengthadd, bool centeradd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/rtgui/wavelet.h b/rtgui/wavelet.h index 4146fa17d..163395d52 100644 --- a/rtgui/wavelet.h +++ b/rtgui/wavelet.h @@ -40,32 +40,32 @@ class Wavelet : { public: Wavelet (); - ~Wavelet (); + ~Wavelet () override; bool wavComputed_ (); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); - void autoOpenCurve (); - void curveChanged (CurveEditor* ce); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; + void autoOpenCurve () override; + void curveChanged (CurveEditor* ce) override; + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; void setAdjusterBehavior (bool multiplieradd, bool thresholdadd, bool threshold2add, bool thresadd, bool chroadd, bool chromaadd, bool contrastadd, bool skinadd, bool reschroadd, bool tmrsadd, bool resconadd, bool resconHadd, bool thradd, bool thrHadd, bool skyadd, bool edgradadd, bool edgvaladd, bool strengthadd, bool gammaadd, bool edgedetectadd, bool edgedetectthradd, bool edgedetectthr2add); - void setBatchMode (bool batchMode); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setEditProvider (EditDataProvider *provider); + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setEditProvider (EditDataProvider *provider) override; void updateToolState (std::vector &tpOpen); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void writeOptions (std::vector &tpOpen); - void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop); - void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight); - void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop); - void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight); - void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR); + void adjusterChanged(ThresholdAdjuster* a, double newBottom, double newTop) override; + void adjusterChanged(ThresholdAdjuster* a, double newBottomLeft, double newTopLeft, double newBottomRight, double newTopRight) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottom, int newTop) override; + void adjusterChanged(ThresholdAdjuster* a, int newBottomLeft, int newTopLeft, int newBottomRight, int newTopRight) override; + void adjusterChanged2(ThresholdAdjuster* a, int newBottomL, int newTopL, int newBottomR, int newTopR) override; private: void foldAllButMe (GdkEventButton* event, MyExpander *expander); - virtual void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller); + void colorForValue (double valX, double valY, enum ColorCaller::ElemType elemType, int callerId, ColorCaller* caller) override; void BAmethodChanged (); void NPmethodChanged (); void BackmethodChanged (); @@ -84,7 +84,7 @@ private: void contrastMinusPressed (); void contrastPlusPressed (); void daubcoeffmethodChanged (); - void enabledChanged (); + void enabledChanged () override; void linkedgToggled (); void lipstToggled (); void medianToggled (); @@ -93,7 +93,8 @@ private: void neutral_pressed (); void neutralchPressed (); void tmrToggled (); - void wavChanged (double nlevel); + void updatewavLabel (); + void wavChanged (double nlevel) override; void HSmethodUpdateUI(); void CHmethodUpdateUI(); @@ -251,6 +252,7 @@ private: sigc::connection neutralchPressedConn; bool lastmedian, lastmedianlev, lastlinkedg, lastavoid, lastlipst, lasttmr, lastcbenab; + int nextnlevel; IdleRegister idle_register; }; diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index fcd983618..dbb65867f 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -150,16 +150,18 @@ static double wbTemp2Slider(double temp) WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WBALANCE_LABEL"), false, true), wbp(nullptr), wblistener(nullptr) { - Gtk::HBox* hbox = Gtk::manage (new Gtk::HBox ()); - hbox->set_spacing(4); - hbox->show (); - Gtk::Label* lab = Gtk::manage (new Gtk::Label (M("TP_WBALANCE_METHOD"))); - lab->show (); + Gtk::Grid* methodgrid = Gtk::manage(new Gtk::Grid()); + methodgrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(methodgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); + + Gtk::Label* lab = Gtk::manage (new Gtk::Label (M("TP_WBALANCE_METHOD") + ":")); + setExpandAlignProperties(lab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); // Create the Tree model refTreeModel = Gtk::TreeStore::create(methodColumns); // Create the Combobox method = Gtk::manage (new MyComboBox ()); + setExpandAlignProperties(method, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); // Assign the model to the Combobox method->set_model(refTreeModel); @@ -244,31 +246,30 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB cellRenderer->property_ellipsize() = Pango::ELLIPSIZE_MIDDLE; method->set_active (0); // Camera - method->show (); - hbox->pack_start (*lab, Gtk::PACK_SHRINK, 0); - hbox->pack_start (*method); - pack_start (*hbox, Gtk::PACK_SHRINK, 0); + methodgrid->attach (*lab, 0, 0, 1, 1); + methodgrid->attach (*method, 1, 0, 1, 1); + pack_start (*methodgrid, Gtk::PACK_SHRINK, 0 ); opt = 0; - Gtk::HBox* spotbox = Gtk::manage (new Gtk::HBox ()); - spotbox->set_spacing(4); - spotbox->show (); + Gtk::Grid* spotgrid = Gtk::manage(new Gtk::Grid()); + spotgrid->get_style_context()->add_class("grid-spacing"); + setExpandAlignProperties(spotgrid, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); - spotbutton = Gtk::manage (new Gtk::Button ()); + spotbutton = Gtk::manage (new Gtk::Button (M("TP_WBALANCE_PICKER"))); + setExpandAlignProperties(spotbutton, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); spotbutton->get_style_context()->add_class("independent"); spotbutton->set_tooltip_text(M("TP_WBALANCE_SPOTWB")); - Gtk::Image* spotimg = Gtk::manage (new RTImage ("color-picker.png")); - spotimg->show (); - spotbutton->set_image (*spotimg); - spotbutton->show (); - - spotbox->pack_start (*spotbutton); + spotbutton->set_image (*Gtk::manage (new RTImage ("color-picker-small.png"))); Gtk::Label* slab = Gtk::manage (new Gtk::Label (M("TP_WBALANCE_SIZE"))); - slab->show (); + setExpandAlignProperties(slab, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); + + Gtk::Grid* wbsizehelper = Gtk::manage(new Gtk::Grid()); + wbsizehelper->set_name("WB-Size-Helper"); + setExpandAlignProperties(wbsizehelper, false, false, Gtk::ALIGN_START, Gtk::ALIGN_CENTER); spotsize = Gtk::manage (new MyComboBoxText ()); - spotsize->show (); + setExpandAlignProperties(spotsize, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); spotsize->append ("2"); if (options.whiteBalanceSpotSize == 2) { @@ -299,10 +300,16 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB spotsize->set_active(4); } - spotbox->pack_end (*spotsize, Gtk::PACK_EXPAND_WIDGET, 0); - spotbox->pack_end (*slab, Gtk::PACK_SHRINK, 0); + wbsizehelper->attach (*spotsize, 0, 0, 1, 1); - pack_start (*spotbox, Gtk::PACK_SHRINK, 0); + spotgrid->attach (*spotbutton, 0, 0, 1, 1); + spotgrid->attach (*slab, 1, 0, 1, 1); + spotgrid->attach (*wbsizehelper, 2, 0, 1, 1); + pack_start (*spotgrid, Gtk::PACK_SHRINK, 0 ); + + Gtk::HSeparator *separator = Gtk::manage (new Gtk::HSeparator()); + separator->get_style_context()->add_class("grid-row-separator"); + pack_start (*separator, Gtk::PACK_SHRINK, 0); Gtk::Image* itempL = Gtk::manage (new RTImage ("circle-blue-small.png")); Gtk::Image* itempR = Gtk::manage (new RTImage ("circle-yellow-small.png")); @@ -315,7 +322,6 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB temp = Gtk::manage (new Adjuster (M("TP_WBALANCE_TEMPERATURE"), MINTEMP, MAXTEMP, 5, CENTERTEMP, itempL, itempR, &wbSlider2Temp, &wbTemp2Slider)); green = Gtk::manage (new Adjuster (M("TP_WBALANCE_GREEN"), MINGREEN, MAXGREEN, 0.001, 1.0, igreenL, igreenR)); - green->setLogScale(10, 1, true); equal = Gtk::manage (new Adjuster (M("TP_WBALANCE_EQBLUERED"), MINEQUAL, MAXEQUAL, 0.001, 1.0, iblueredL, iblueredR)); tempBias = Gtk::manage (new Adjuster(M("TP_WBALANCE_TEMPBIAS"), -0.5, 0.5, 0.01, 0.0, itempbiasL, itempbiasR)); cache_customTemp (0); @@ -694,7 +700,6 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) set_inconsistent(multiImage && !pedited->wb.enabled); } - green->setLogScale(10, green->getValue(), true); methconn.block (false); enableListener (); @@ -802,7 +807,6 @@ void WhiteBalance::setWB (int vtemp, double vgreen) listener->panelChanged (EvWBTemp, Glib::ustring::compose("%1, %2", (int)temp->getValue(), Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), green->getValue()))); } - green->setLogScale(10, vgreen, true); } void WhiteBalance::setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd, bool tempbiasadd) @@ -918,17 +922,13 @@ void WhiteBalance::WBChanged(double temperature, double greenVal) const auto func = [](Data* data) -> bool { - WhiteBalance* const self = static_cast(data->self); - const double temperature = data->temperature; - const double green_val = data->green_val; - - self->disableListener(); - self->setEnabled(true); - self->temp->setValue(temperature); - self->green->setValue(green_val); - self->temp->setDefault(temperature); - self->green->setDefault(green_val); - self->enableListener(); + data->self->disableListener(); + data->self->setEnabled(true); + data->self->temp->setValue(data->temperature); + data->self->green->setValue(data->green_val); + data->self->temp->setDefault(data->temperature); + data->self->green->setDefault(data->green_val); + data->self->enableListener(); return false; }; diff --git a/rtgui/whitebalance.h b/rtgui/whitebalance.h index 08ec05047..2db46b7af 100644 --- a/rtgui/whitebalance.h +++ b/rtgui/whitebalance.h @@ -94,20 +94,20 @@ protected: public: WhiteBalance (); - ~WhiteBalance (); + ~WhiteBalance () override; static void init (); static void cleanup (); - void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); - void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); - void setBatchMode (bool batchMode); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; void optChanged (); void spotPressed (); void spotSizeChanged (); - void adjusterChanged(Adjuster* a, double newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void adjusterChanged(Adjuster* a, double newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; int getSize (); void setWBProvider (WBProvider* p) { @@ -118,11 +118,11 @@ public: wblistener = l; } void setWB (int temp, double green); - void WBChanged (double temp, double green); + void WBChanged (double temp, double green) override; void setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd, bool tempbiasadd); - void trimValues (rtengine::procparams::ProcParams* pp); - void enabledChanged(); + void trimValues (rtengine::procparams::ProcParams* pp) override; + void enabledChanged() override; }; #endif diff --git a/rtgui/windirmonitor.cc b/rtgui/windirmonitor.cc deleted file mode 100644 index 1888d9405..000000000 --- a/rtgui/windirmonitor.cc +++ /dev/null @@ -1,109 +0,0 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2004-2010 Gabor Horvath - * - * RawTherapee is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * RawTherapee is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RawTherapee. If not, see . - */ -#include "windirmonitor.h" -#include "options.h" - -static void CALLBACK current_directory_monitor_callback (DWORD error, DWORD nBytes, LPOVERLAPPED lpOverlapped) -{ - DWORD dwOffset = 0; - FILE_NOTIFY_INFORMATION* pInfo = NULL; - - WinDirMonitor::MonitorData* monData = (WinDirMonitor::MonitorData*)lpOverlapped; - - if (!nBytes) { - delete monData; - return; - } - - bool notify = false; - - // Analysis of the modifications. Let only parsed file extensions emit a notify, not PP3 changes - do { - // Get a pointer to the first change record... - pInfo = (FILE_NOTIFY_INFORMATION*) &monData->file_notify_buffer[dwOffset]; - - char fnameC[(MAX_PATH + 1) * 2] = {0}; - int strLen = WideCharToMultiByte(CP_UTF8, 0, pInfo->FileName, pInfo->FileNameLength / sizeof(WCHAR), fnameC, sizeof(fnameC), 0, 0); - fnameC[strLen] = 0; - Glib::ustring fname = fnameC; - - if (options.has_retained_extention(fname)) { - notify = true; - } - - // More than one change may happen at the same time. Load the next change and continue... - dwOffset += pInfo->NextEntryOffset; - } while (!notify && pInfo->NextEntryOffset != 0); - - // ReadDirectoryChangesW sometimes emits multiple events per change (one for each change type) - // To make sure it's not flooding update, this gets filtered. - DWORD curTick = GetTickCount(); - - if (notify && monData->listener && (curTick - monData->lastTimeUpdateTick) > 500) { - monData->lastTimeUpdateTick = curTick; - monData->listener->winDirChanged (); - } - - ReadDirectoryChangesW (monData->hDirectory, - monData->file_notify_buffer, - monData->buffer_allocated_bytes, - FALSE, - FILE_NOTIFY_CHANGE_FILE_NAME | - FILE_NOTIFY_CHANGE_DIR_NAME | - FILE_NOTIFY_CHANGE_LAST_WRITE, - &monData->buffer_filled_bytes, - &monData->overlapped, - current_directory_monitor_callback); -} - -WinDirMonitor::WinDirMonitor (Glib::ustring dirName, WinDirChangeListener* listener) : monData(NULL) -{ - wchar_t* wdirname = (wchar_t*)g_utf8_to_utf16 (dirName.c_str(), -1, NULL, NULL, NULL); - HANDLE hDirectory = CreateFileW (wdirname, FILE_LIST_DIRECTORY, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, NULL); - g_free (wdirname); - - if (hDirectory != INVALID_HANDLE_VALUE) { - - monData = new MonitorData (); - monData->listener = listener; - monData->buffer_allocated_bytes = 32768; - monData->file_notify_buffer = new char [monData->buffer_allocated_bytes]; - monData->hDirectory = hDirectory; - monData->lastTimeUpdateTick = GetTickCount(); - - ReadDirectoryChangesW (monData->hDirectory, - monData->file_notify_buffer, - monData->buffer_allocated_bytes, - FALSE, - FILE_NOTIFY_CHANGE_FILE_NAME | - FILE_NOTIFY_CHANGE_DIR_NAME | - FILE_NOTIFY_CHANGE_LAST_WRITE, - &monData->buffer_filled_bytes, - &monData->overlapped, - current_directory_monitor_callback); - } -} - -WinDirMonitor::~WinDirMonitor () -{ - - if (monData && monData->hDirectory != INVALID_HANDLE_VALUE) { - CloseHandle (monData->hDirectory); - } -} diff --git a/rtgui/windirmonitor.h b/rtgui/windirmonitor.h deleted file mode 100644 index 8e18b7914..000000000 --- a/rtgui/windirmonitor.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of RawTherapee. - * - * Copyright (c) 2004-2010 Gabor Horvath - * - * RawTherapee is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * RawTherapee is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with RawTherapee. If not, see . - */ -#ifndef _WINDIRMONITOR_ -#define _WINDIRMONITOR_ - -#include -#include - -class WinDirChangeListener -{ -public: - virtual ~WinDirChangeListener() = default; - - virtual void winDirChanged() = 0; -}; - -class WinDirMonitor : public Glib::Object -{ - -public: - struct MonitorData { - OVERLAPPED overlapped; - DWORD buffer_allocated_bytes; - char *file_notify_buffer; - DWORD buffer_filled_bytes; - HANDLE hDirectory; - WinDirChangeListener* listener; - int bigyo; - DWORD lastTimeUpdateTick; // for filtering multiple updates events - }; - -private: - MonitorData* monData; - -public: - WinDirMonitor (Glib::ustring dirName, WinDirChangeListener* listener); - ~WinDirMonitor (); -}; - -#endif - diff --git a/rtgui/xtransprocess.h b/rtgui/xtransprocess.h index 7a706b1ac..cd60337dc 100644 --- a/rtgui/xtransprocess.h +++ b/rtgui/xtransprocess.h @@ -46,19 +46,19 @@ protected: public: XTransProcess (); - ~XTransProcess (); + ~XTransProcess () override; - void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); - void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); + void read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; void setAdjusterBehavior(bool falsecoloradd, bool dualDemosaicContrastAdd); - void setBatchMode(bool batchMode); - void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr); + void setBatchMode(bool batchMode) override; + void setDefaults(const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; void methodChanged(); - void autoContrastChanged (double autoContrast); - void adjusterChanged(Adjuster* a, double newval); - void checkBoxToggled(CheckBox* c, CheckValue newval); - void adjusterAutoToggled(Adjuster* a, bool newval); + void autoContrastChanged (double autoContrast) override; + void adjusterChanged(Adjuster* a, double newval) override; + void checkBoxToggled(CheckBox* c, CheckValue newval) override; + void adjusterAutoToggled(Adjuster* a, bool newval) override; }; #endif diff --git a/rtgui/xtransrawexposure.h b/rtgui/xtransrawexposure.h index fc95d5743..75bdbd0e2 100644 --- a/rtgui/xtransrawexposure.h +++ b/rtgui/xtransrawexposure.h @@ -38,14 +38,14 @@ public: XTransRAWExposure (); - 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 adjusterAutoToggled (Adjuster* a, bool newval); + void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override; + void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override; + void setBatchMode (bool batchMode) override; + void setDefaults (const rtengine::procparams::ProcParams* defParams, const ParamsEdited* pedited = nullptr) override; + void adjusterChanged (Adjuster* a, double newval) override; + void adjusterAutoToggled (Adjuster* a, bool newval) override; void setAdjusterBehavior (bool pexblackadd); - void trimValues (rtengine::procparams::ProcParams* pp); + void trimValues (rtengine::procparams::ProcParams* pp) override; }; #endif diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index e5c9d0bd3..1413b5d76 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -152,12 +152,18 @@ done ditto {"${GTK_PREFIX}","${RESOURCES}"}/share/icons/Adwaita/index.theme "${GTK_PREFIX}/bin/gtk-update-icon-cache-3.0" "${RESOURCES}/share/icons/Adwaita" +# Copy libjpeg-turbo into the app bundle +cp /opt/local/lib/libjpeg.62.dylib "${RESOURCES}/../Frameworks" + +# Copy libtiff into the app bundle +cp /opt/local/lib/libtiff.5.dylib "${RESOURCES}/../Frameworks" + # Copy the Lensfun database into the app bundle mkdir -p "${RESOURCES}/share/lensfun" cp /opt/local/share/lensfun/version_2/* "${RESOURCES}/share/lensfun" # Copy liblensfun to Frameworks -cp /opt/local/lib/liblensfun.1.dylib "${RESOURCES}/../Frameworks" +cp /opt/local/lib/liblensfun.2.dylib "${RESOURCES}/../Frameworks" # Copy libiomp5 to Frameworks cp /opt/local/lib/libomp/libiomp5.dylib "${RESOURCES}/../Frameworks" @@ -228,7 +234,7 @@ function CreateDmg { fi msg "Creating disk image:" - hdiutil create -format UDBZ -srcdir "${srcDir}" -volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" "${dmg_name}.dmg" + hdiutil create -format UDBZ -fs HFS+ -srcdir "${srcDir}" -volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" "${dmg_name}.dmg" # Sign disk image codesign --deep --force -v -s "${CODESIGNID}" "${dmg_name}.dmg" diff --git a/win.cmake b/win.cmake index 3b330ebe0..9c292b2df 100644 --- a/win.cmake +++ b/win.cmake @@ -24,7 +24,7 @@ set(PROC_TARGET_NUMBER 0 CACHE STRING "Target Processor") # If you want to force the target processor name when PROC_TARGET_NUMBER = 0 or 2, # uncomment the next line and replace labelWithoutQuotes by its value -#set (PROC_LABEL labelWithoutQuotes CACHE STRING "Target Processor label") +#set(PROC_LABEL labelWithoutQuotes CACHE STRING "Target Processor label") # Important: MinGW-w64 user may need to specify the -m32 or -m64 flag in CMAKE_CXX_FLAGS, # CMAKE_C_FLAGS and CMAKE_EXE_LINKER_FLAGS to select between 32/64bit build