Merge with 'Beep6581/dev'
This commit is contained in:
commit
2cd6ba96ca
8
.github/workflows/appimage.yml
vendored
8
.github/workflows/appimage.yml
vendored
@ -76,6 +76,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Include Lensfun
|
- name: Include Lensfun
|
||||||
run: |
|
run: |
|
||||||
|
echo "Patching lensfun-update-data script."
|
||||||
|
sudo sed -i 's/HTTPError\(, ValueError\)/URLError\1/' $(which lensfun-update-data)
|
||||||
echo "Updating Lensfun database."
|
echo "Updating Lensfun database."
|
||||||
lensfun-update-data
|
lensfun-update-data
|
||||||
echo "Creating Lensfun directory in the build directory."
|
echo "Creating Lensfun directory in the build directory."
|
||||||
@ -87,7 +89,7 @@ jobs:
|
|||||||
id: appimage-tools-cache
|
id: appimage-tools-cache
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
key: appimage-tools
|
key: appimage-tools-1
|
||||||
path: |
|
path: |
|
||||||
./build/linuxdeploy-x86_64.AppImage
|
./build/linuxdeploy-x86_64.AppImage
|
||||||
./build/linuxdeploy-plugin-gtk.sh
|
./build/linuxdeploy-plugin-gtk.sh
|
||||||
@ -99,7 +101,9 @@ jobs:
|
|||||||
echo "Downloading linuxdeploy."
|
echo "Downloading linuxdeploy."
|
||||||
curl --location 'https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage' > linuxdeploy-x86_64.AppImage
|
curl --location 'https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage' > linuxdeploy-x86_64.AppImage
|
||||||
echo "Downloading GTK plugin for linuxdeploy."
|
echo "Downloading GTK plugin for linuxdeploy."
|
||||||
curl --location 'https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh' > linuxdeploy-plugin-gtk.sh
|
curl --location 'https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh' \
|
||||||
|
| sed 's/^\(export GTK_THEME\)/#\1/' \
|
||||||
|
> linuxdeploy-plugin-gtk.sh
|
||||||
echo "Setting execute bit on all AppImage tools."
|
echo "Setting execute bit on all AppImage tools."
|
||||||
chmod u+x linuxdeploy-*
|
chmod u+x linuxdeploy-*
|
||||||
|
|
||||||
|
6
.github/workflows/main.yml
vendored
6
.github/workflows/main.yml
vendored
@ -14,7 +14,7 @@ on:
|
|||||||
- created
|
- created
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: macos-latest
|
runs-on: macos-10.15
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
@ -52,8 +52,8 @@ jobs:
|
|||||||
-DPROC_LABEL="generic processor" \
|
-DPROC_LABEL="generic processor" \
|
||||||
-DWITH_LTO="OFF" \
|
-DWITH_LTO="OFF" \
|
||||||
-DLENSFUNDBDIR="/Applications/RawTherapee.app/Contents/Resources/share/lensfun" \
|
-DLENSFUNDBDIR="/Applications/RawTherapee.app/Contents/Resources/share/lensfun" \
|
||||||
-DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang \
|
-DCMAKE_C_COMPILER=clang \
|
||||||
-DCMAKE_CXX_COMPILER=/usr/local/opt/llvm/bin/clang++ \
|
-DCMAKE_CXX_COMPILER=clang++ \
|
||||||
-DCMAKE_C_FLAGS="-arch x86_64 -Wno-pass-failed -Wno-deprecated-register -Wno-unused-command-line-argument" \
|
-DCMAKE_C_FLAGS="-arch x86_64 -Wno-pass-failed -Wno-deprecated-register -Wno-unused-command-line-argument" \
|
||||||
-DCMAKE_CXX_FLAGS="-arch x86_64 -Wno-pass-failed -Wno-deprecated-register -Wno-unused-command-line-argument" \
|
-DCMAKE_CXX_FLAGS="-arch x86_64 -Wno-pass-failed -Wno-deprecated-register -Wno-unused-command-line-argument" \
|
||||||
-DOpenMP_C_FLAGS="${C_FLAGS}" \
|
-DOpenMP_C_FLAGS="${C_FLAGS}" \
|
||||||
|
4
.github/workflows/windows.yml
vendored
4
.github/workflows/windows.yml
vendored
@ -82,6 +82,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Include Lensfun
|
- name: Include Lensfun
|
||||||
run: |
|
run: |
|
||||||
|
echo "Patching lensfun-update-data script."
|
||||||
|
sed -i 's/HTTPError\(, ValueError\)/URLError\1/' $(which lensfun-update-data)
|
||||||
echo "Updating Lensfun database."
|
echo "Updating Lensfun database."
|
||||||
lensfun-update-data
|
lensfun-update-data
|
||||||
echo "Creating Lensfun directory in the build directory."
|
echo "Creating Lensfun directory in the build directory."
|
||||||
@ -115,7 +117,7 @@ jobs:
|
|||||||
"libdeflate.dll" \
|
"libdeflate.dll" \
|
||||||
"libepoxy-0.dll" \
|
"libepoxy-0.dll" \
|
||||||
"libexpat-1.dll" \
|
"libexpat-1.dll" \
|
||||||
"libffi-7.dll" \
|
libffi-*.dll \
|
||||||
"libfftw3f-3.dll" \
|
"libfftw3f-3.dll" \
|
||||||
"libfontconfig-1.dll" \
|
"libfontconfig-1.dll" \
|
||||||
"libfreetype-6.dll" \
|
"libfreetype-6.dll" \
|
||||||
|
@ -63,6 +63,7 @@ Other contributors (profiles, ideas, mockups, testing, forum activity, translati
|
|||||||
Lebarhon
|
Lebarhon
|
||||||
Karl Loncarek
|
Karl Loncarek
|
||||||
Patrick Lopatto
|
Patrick Lopatto
|
||||||
|
Francisco Lorés
|
||||||
Jie Luo
|
Jie Luo
|
||||||
Paul Matthijsse
|
Paul Matthijsse
|
||||||
Wim ter Meer
|
Wim ter Meer
|
||||||
|
@ -80,6 +80,24 @@ set(CACHE_NAME_SUFFIX
|
|||||||
# being bundled. However, file access can be restricted for some folder.
|
# being bundled. However, file access can be restricted for some folder.
|
||||||
option(OSX_DEV_BUILD "Generate macOS development builds" OFF)
|
option(OSX_DEV_BUILD "Generate macOS development builds" OFF)
|
||||||
|
|
||||||
|
# On macOS, optionally generate the final zip artifact file without version in the name for nightly upload purposes.
|
||||||
|
option(OSX_NIGHTLY "Generate a generically-named zip" OFF)
|
||||||
|
|
||||||
|
# Generate a universal macOS build
|
||||||
|
option(OSX_UNIVERSAL "Generate a universal app" OFF)
|
||||||
|
|
||||||
|
# On macOS: merge the app via a specific url to generate a universal bundle with both x86_64 and arm64
|
||||||
|
if(OSX_UNIVERSAL)
|
||||||
|
if(NOT "${OSX_UNIVERSAL_URL}")
|
||||||
|
if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
|
||||||
|
set(OSX_UNIVERSAL_URL "https://kd6kxr.keybase.pub/RawTherapee_macOS_x86_64_latest.zip" CACHE STRING "URL of x86_64 app for lipo")
|
||||||
|
else()
|
||||||
|
set(OSX_UNIVERSAL_URL "https://kd6kxr.keybase.pub/RawTherapee_macOS_arm64_latest.zip" CACHE STRING "URL of arm64 app for lipo")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
# By default we don't use a specific processor target, so PROC_TARGET_NUMBER is
|
# By default we don't use a specific processor target, so PROC_TARGET_NUMBER is
|
||||||
# set to 0. Specify other values to optimize for specific processor architecture
|
# set to 0. Specify other values to optimize for specific processor architecture
|
||||||
# as listed in ProcessorTargets.cmake:
|
# as listed in ProcessorTargets.cmake:
|
||||||
@ -721,7 +739,7 @@ add_custom_target(
|
|||||||
# End generating AboutThisBuild.txt
|
# End generating AboutThisBuild.txt
|
||||||
|
|
||||||
install(FILES AUTHORS.txt DESTINATION "${CREDITSDIR}")
|
install(FILES AUTHORS.txt DESTINATION "${CREDITSDIR}")
|
||||||
install(FILES LICENSE.txt DESTINATION "${LICENCEDIR}")
|
install(FILES LICENSE DESTINATION "${LICENCEDIR}")
|
||||||
install(FILES "${CMAKE_BINARY_DIR}/AboutThisBuild.txt"
|
install(FILES "${CMAKE_BINARY_DIR}/AboutThisBuild.txt"
|
||||||
DESTINATION "${CREDITSDIR}")
|
DESTINATION "${CREDITSDIR}")
|
||||||
install(
|
install(
|
||||||
|
@ -1,20 +1,3 @@
|
|||||||
RawTherapee - A powerful, cross-platform raw image processing program.
|
|
||||||
Copyright (C) 2004-2012 Gabor Horvath <hgabor@rawtherapee.com>
|
|
||||||
Copyright (C) 2010-2021 RawTherapee development team.
|
|
||||||
|
|
||||||
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 this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 29 June 2007
|
||||||
|
|
@ -38,5 +38,8 @@ set(PROC_TARGET_8_FLAGS "-march=athlon64" CACHE STRING "Processor-8 flags")
|
|||||||
set(PROC_TARGET_9_LABEL phenomX4 CACHE STRING "Processor-9 label - use it to provide a phenomX4 optimized build, if you have this processor")
|
set(PROC_TARGET_9_LABEL phenomX4 CACHE STRING "Processor-9 label - use it to provide a phenomX4 optimized build, if you have this processor")
|
||||||
set(PROC_TARGET_9_FLAGS "-march=amdfam10" CACHE STRING "Processor-9 flags")
|
set(PROC_TARGET_9_FLAGS "-march=amdfam10" CACHE STRING "Processor-9 flags")
|
||||||
|
|
||||||
|
set(PROC_TARGET_10_LABEL sandybridge-ivybridge CACHE STRING "Processor set-10 label")
|
||||||
|
set(PROC_TARGET_10_FLAGS "-march=sandybridge -mtune=ivybridge" CACHE STRING "Processors set-10 flags")
|
||||||
|
|
||||||
#set(PROC_TARGET__LABEL procLabel CACHE STRING "Processor- label")
|
#set(PROC_TARGET__LABEL procLabel CACHE STRING "Processor- label")
|
||||||
#set(PROC_TARGET__FLAGS "procFlags" CACHE STRING "Processor- flags")
|
#set(PROC_TARGET__FLAGS "procFlags" CACHE STRING "Processor- flags")
|
||||||
|
@ -106,9 +106,9 @@ if(WIN32)
|
|||||||
elseif(BIT_DEPTH EQUAL 8)
|
elseif(BIT_DEPTH EQUAL 8)
|
||||||
set(BUILD_BIT_DEPTH 64)
|
set(BUILD_BIT_DEPTH 64)
|
||||||
# Restricting the 64 bits builds to 64 bits systems only
|
# Restricting the 64 bits builds to 64 bits systems only
|
||||||
set(ARCHITECTURE_ALLOWED "x64 ia64")
|
set(ARCHITECTURE_ALLOWED "x64 ia64 arm64")
|
||||||
# installing in 64 bits mode for all 64 bits processors, even for itanium architecture
|
# installing in 64 bits mode for all 64 bits processors, even for itanium architecture
|
||||||
set(INSTALL_MODE "x64 ia64")
|
set(INSTALL_MODE "x64 ia64 arm64")
|
||||||
endif()
|
endif()
|
||||||
# set part of the output archive name
|
# set part of the output archive name
|
||||||
set(SYSTEM_NAME "WinVista")
|
set(SYSTEM_NAME "WinVista")
|
||||||
|
BIN
rtdata/dcpprofiles/Canon EOS 5D Mark II.dcp
Normal file
BIN
rtdata/dcpprofiles/Canon EOS 5D Mark II.dcp
Normal file
Binary file not shown.
BIN
rtdata/dcpprofiles/Canon EOS-1D X Mark III.dcp
Normal file
BIN
rtdata/dcpprofiles/Canon EOS-1D X Mark III.dcp
Normal file
Binary file not shown.
BIN
rtdata/dcpprofiles/Canon EOS-1Ds Mark II.dcp
Normal file
BIN
rtdata/dcpprofiles/Canon EOS-1Ds Mark II.dcp
Normal file
Binary file not shown.
BIN
rtdata/dcpprofiles/FUJIFILM X-T4.dcp
Normal file
BIN
rtdata/dcpprofiles/FUJIFILM X-T4.dcp
Normal file
Binary file not shown.
BIN
rtdata/dcpprofiles/SONY ILCE-7M4.dcp
Normal file
BIN
rtdata/dcpprofiles/SONY ILCE-7M4.dcp
Normal file
Binary file not shown.
BIN
rtdata/dcpprofiles/samsung SM-G930V.dcp
Normal file
BIN
rtdata/dcpprofiles/samsung SM-G930V.dcp
Normal file
Binary file not shown.
@ -162,7 +162,6 @@ HISTOGRAM_TOOLTIP_BAR;Mostra/amaga la barra indicadora RGB\nClic botó dret a la
|
|||||||
HISTOGRAM_TOOLTIP_G;Mostra/amaga l'histograma VERD
|
HISTOGRAM_TOOLTIP_G;Mostra/amaga l'histograma VERD
|
||||||
HISTOGRAM_TOOLTIP_L;Mostra/amaga l'histograma de luminància CIELAB
|
HISTOGRAM_TOOLTIP_L;Mostra/amaga l'histograma de luminància CIELAB
|
||||||
HISTOGRAM_TOOLTIP_R;Mostra/amaga l'histograma VERMELL
|
HISTOGRAM_TOOLTIP_R;Mostra/amaga l'histograma VERMELL
|
||||||
HISTOGRAM_TOOLTIP_RAW;Mostra/Amaga l'histograma RAW
|
|
||||||
HISTORY_CHANGED;Canviat
|
HISTORY_CHANGED;Canviat
|
||||||
HISTORY_CUSTOMCURVE;Corba particular
|
HISTORY_CUSTOMCURVE;Corba particular
|
||||||
HISTORY_FROMCLIPBOARD;Del portapapers
|
HISTORY_FROMCLIPBOARD;Del portapapers
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -291,7 +291,6 @@ HISTOGRAM_TOOLTIP_G;Skrýt/Zobrazit histogram zelené.
|
|||||||
HISTOGRAM_TOOLTIP_L;Skrýt/Zobrazit CIELab histogram jasu.
|
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_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_R;Skrýt/Zobrazit histogram červené.
|
||||||
HISTOGRAM_TOOLTIP_RAW;Skrýt/Zobrazit raw histogram.
|
|
||||||
HISTORY_CHANGED;Změněno
|
HISTORY_CHANGED;Změněno
|
||||||
HISTORY_CUSTOMCURVE;Vlastní křivka
|
HISTORY_CUSTOMCURVE;Vlastní křivka
|
||||||
HISTORY_FROMCLIPBOARD;Ze schránky
|
HISTORY_FROMCLIPBOARD;Ze schránky
|
||||||
|
4177
rtdata/languages/Dansk
Normal file
4177
rtdata/languages/Dansk
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -362,7 +362,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh
|
|||||||
!HISTOGRAM_TOOLTIP_L;Show/Hide CIELab luminance histogram.
|
!HISTOGRAM_TOOLTIP_L;Show/Hide CIELab luminance histogram.
|
||||||
!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
|
!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
|
||||||
!HISTOGRAM_TOOLTIP_R;Show/Hide red histogram.
|
!HISTOGRAM_TOOLTIP_R;Show/Hide red histogram.
|
||||||
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
|
|
||||||
!HISTORY_CHANGED;Changed
|
!HISTORY_CHANGED;Changed
|
||||||
!HISTORY_CUSTOMCURVE;Custom curve
|
!HISTORY_CUSTOMCURVE;Custom curve
|
||||||
!HISTORY_FROMCLIPBOARD;From clipboard
|
!HISTORY_FROMCLIPBOARD;From clipboard
|
||||||
|
@ -248,7 +248,6 @@
|
|||||||
!HISTOGRAM_TOOLTIP_L;Show/Hide CIELab luminance histogram.
|
!HISTOGRAM_TOOLTIP_L;Show/Hide CIELab luminance histogram.
|
||||||
!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
|
!HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
|
||||||
!HISTOGRAM_TOOLTIP_R;Show/Hide red histogram.
|
!HISTOGRAM_TOOLTIP_R;Show/Hide red histogram.
|
||||||
!HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
|
|
||||||
!HISTORY_CHANGED;Changed
|
!HISTORY_CHANGED;Changed
|
||||||
!HISTORY_CUSTOMCURVE;Custom curve
|
!HISTORY_CUSTOMCURVE;Custom curve
|
||||||
!HISTORY_FROMCLIPBOARD;From clipboard
|
!HISTORY_FROMCLIPBOARD;From clipboard
|
||||||
|
4120
rtdata/languages/Espanol (Castellano)
Normal file
4120
rtdata/languages/Espanol (Castellano)
Normal file
File diff suppressed because it is too large
Load Diff
@ -297,7 +297,6 @@ HISTOGRAM_TOOLTIP_G;Mostrar/Ocultar Histograma Verde
|
|||||||
HISTOGRAM_TOOLTIP_L;Mostrar/Ocultar Histograma de Luminancia CIELAB
|
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_MODE;Alterne entre la escala lineal, log-linear y log-log del histograma.
|
||||||
HISTOGRAM_TOOLTIP_R;Mostrar/Ocultar Histograma Rojo
|
HISTOGRAM_TOOLTIP_R;Mostrar/Ocultar Histograma Rojo
|
||||||
HISTOGRAM_TOOLTIP_RAW;Mostrar/ocultar Histograma Raw
|
|
||||||
HISTORY_CHANGED;Cambiado
|
HISTORY_CHANGED;Cambiado
|
||||||
HISTORY_CUSTOMCURVE;Curva a medida
|
HISTORY_CUSTOMCURVE;Curva a medida
|
||||||
HISTORY_FROMCLIPBOARD;Desde el portapapeles
|
HISTORY_FROMCLIPBOARD;Desde el portapapeles
|
@ -236,7 +236,6 @@ HISTOGRAM_TOOLTIP_G;Montrer/cacher l'histogramme VERT
|
|||||||
HISTOGRAM_TOOLTIP_L;Montrer/cacher l'histogramme Luminance CIELAB
|
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_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_R;Montrer/cacher l'histogramme ROUGE
|
||||||
HISTOGRAM_TOOLTIP_RAW;Montrer/Cacher l'histogramme des données RAW
|
|
||||||
HISTORY_CHANGED;Changé
|
HISTORY_CHANGED;Changé
|
||||||
HISTORY_CUSTOMCURVE;Courbe personnelle
|
HISTORY_CUSTOMCURVE;Courbe personnelle
|
||||||
HISTORY_FROMCLIPBOARD;Du presse-papier
|
HISTORY_FROMCLIPBOARD;Du presse-papier
|
||||||
@ -1404,7 +1403,7 @@ TP_COLORAPP_HUE;Teinte (h)
|
|||||||
TP_COLORAPP_HUE_TOOLTIP;Teinte (h) - angle entre 0° et 360°
|
TP_COLORAPP_HUE_TOOLTIP;Teinte (h) - angle entre 0° et 360°
|
||||||
TP_COLORAPP_LABEL;Apparence de la Couleur (CIECAM02)
|
TP_COLORAPP_LABEL;Apparence de la Couleur (CIECAM02)
|
||||||
TP_COLORAPP_LABEL_CAM02;Édition de l'image avec CIE-CAM 2002
|
TP_COLORAPP_LABEL_CAM02;Édition de l'image avec CIE-CAM 2002
|
||||||
TP_COLORAPP_LABEL_SCENE;Conditions de la scène
|
TP_COLORAPP_LABEL_SCENE;Conditions de visionnage
|
||||||
TP_COLORAPP_LABEL_VIEWING;Conditions de visionnage
|
TP_COLORAPP_LABEL_VIEWING;Conditions de visionnage
|
||||||
TP_COLORAPP_LIGHT;Luminosité (J)
|
TP_COLORAPP_LIGHT;Luminosité (J)
|
||||||
TP_COLORAPP_LIGHT_TOOLTIP;Luminosité dans CIECAM02 est différent de celui de Lab et RVB
|
TP_COLORAPP_LIGHT_TOOLTIP;Luminosité dans CIECAM02 est différent de celui de Lab et RVB
|
||||||
@ -1434,6 +1433,7 @@ 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_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_VIEWING_ABSOLUTELUMINANCE_TOOLTIP;Luminance absolue de l'environnement de visionnage\n(souvent 16cd/m²)
|
||||||
TP_COLORAPP_YBOUT_TOOLTIP;Yb est la luminance relative de l'arrière plan, exprimée e % de gris. Un gris à 18% correspond à une luminance exprimée en CIE L de 50%.\nCette donnée prend en compte la luminance moyenne de l'image.
|
TP_COLORAPP_YBOUT_TOOLTIP;Yb est la luminance relative de l'arrière plan, exprimée e % de gris. Un gris à 18% correspond à une luminance exprimée en CIE L de 50%.\nCette donnée prend en compte la luminance moyenne de l'image.
|
||||||
|
TP_COLORAPP_YBSCEN_TOOLTIP;Yb est la luminance relative du fond, exprimée en % de gris. 18 % de gris correspondent à une luminance de fond de 50 % exprimée en CIE L.\nLes données sont basées sur la luminance moyenne de l'image
|
||||||
TP_COLORAPP_WBCAM;BB [RT+CAT02] + [sortie]
|
TP_COLORAPP_WBCAM;BB [RT+CAT02] + [sortie]
|
||||||
TP_COLORAPP_WBRT;BB [RT] + [sortie]
|
TP_COLORAPP_WBRT;BB [RT] + [sortie]
|
||||||
TP_COLORTONING_AB;o C/L
|
TP_COLORTONING_AB;o C/L
|
||||||
@ -1807,6 +1807,15 @@ TP_LOCALLAB_BUTTON_DEL;Effacer
|
|||||||
TP_LOCALLAB_BUTTON_DUPL;Dupliquer
|
TP_LOCALLAB_BUTTON_DUPL;Dupliquer
|
||||||
TP_LOCALLAB_BUTTON_REN;Renommer
|
TP_LOCALLAB_BUTTON_REN;Renommer
|
||||||
TP_LOCALLAB_BUTTON_VIS;Montrer/Cacher
|
TP_LOCALLAB_BUTTON_VIS;Montrer/Cacher
|
||||||
|
TP_LOCALLAB_BWFORCE;Utilise Black Ev & White Ev
|
||||||
|
TP_LOCALLAB_CAM16_FRA;Cam16 Adjustements Image
|
||||||
|
TP_LOCALLAB_CAM16PQREMAP;HDR PQ (Pic Luminance)
|
||||||
|
TP_LOCALLAB_CAM16PQREMAP_TOOLTIP;PQ (Perceptual Quantizer) adapté au CAM16. Vous permet de modifier la fonction PQ interne (généralement 10 000 cd/m2 - 100 cd/m2 par défaut - désactivée pour 100 cd/m2).\nPeut être utilisé pour s'adapter à différents appareils et images.
|
||||||
|
TP_LOCALLAB_CAMMODE;CAM modèle
|
||||||
|
TP_LOCALLAB_CAMMODE_ALL;CAM 16 + Jz Cz Hz
|
||||||
|
TP_LOCALLAB_CAMMODE_CAM16;CAM 16
|
||||||
|
TP_LOCALLAB_CAMMODE_ZCAM;ZCAM only
|
||||||
|
TP_LOCALLAB_CAMMODE_JZ;Jz Cz Hz
|
||||||
TP_LOCALLAB_CBDL;Contr. par niveaux détail
|
TP_LOCALLAB_CBDL;Contr. par niveaux détail
|
||||||
TP_LOCALLAB_CBDLCLARI_TOOLTIP;Ajuste les tons moyens et les réhausse.
|
TP_LOCALLAB_CBDLCLARI_TOOLTIP;Ajuste les tons moyens et les réhausse.
|
||||||
TP_LOCALLAB_CBDL_ADJ_TOOLTIP;Agit comme un outil ondelettes.\nLe premier niveau (0) agit sur des détails de 2x2.\nLe dernier niveau (5) agit sur des détails de 64x64.
|
TP_LOCALLAB_CBDL_ADJ_TOOLTIP;Agit comme un outil ondelettes.\nLe premier niveau (0) agit sur des détails de 2x2.\nLe dernier niveau (5) agit sur des détails de 64x64.
|
||||||
@ -1824,10 +1833,29 @@ TP_LOCALLAB_CHROMALEV;Niveaux de Chroma
|
|||||||
TP_LOCALLAB_CHROMASKCOL;Chroma
|
TP_LOCALLAB_CHROMASKCOL;Chroma
|
||||||
TP_LOCALLAB_CHROMASK_TOOLTIP;Vous pouvez utiliser ce curseur pour désaturer l'arrière plan (inverse masque - courbe proche de 0).\nEgalement pour atténier ou accroître l'action du masque sur la chroma
|
TP_LOCALLAB_CHROMASK_TOOLTIP;Vous pouvez utiliser ce curseur pour désaturer l'arrière plan (inverse masque - courbe proche de 0).\nEgalement pour atténier ou accroître l'action du masque sur la chroma
|
||||||
TP_LOCALLAB_CHRRT;Chroma
|
TP_LOCALLAB_CHRRT;Chroma
|
||||||
|
TP_LOCALLAB_CIE_TOOLNAME;Apparance de couleurs (Cam16 & JzCzHz)
|
||||||
|
TP_LOCALLAB_CIE;Apparance de couleurs(Cam16 & JzCzHz)
|
||||||
|
TP_LOCALLAB_CIEC;Utilise les paramètres de CIECAM
|
||||||
|
TP_LOCALLAB_CIECAMLOG_TOOLTIP;Ce module est basé sur le modèle d'apparence des couleurs CIECAM qui a été conçu pour mieux simuler la façon dont la vision humaine perçoit les couleurs dans différentes conditions d'éclairage. le moment de la prise de vue.\nLe deuxième processus Ciecam "Réglages d'image" est simplifié et n'utilise que 3 variables (contraste local, contraste J, saturation s).\nLe troisième processus Ciecam "Conditions de visualisation" adapte la sortie aux conditions de visualisation souhaitées ( moniteur, téléviseur, projecteur, imprimante, etc.) afin que l'aspect chromatique et le contraste soient préservés dans l'environnement d'affichage.
|
||||||
|
TP_LOCALLAB_CIEMODE;Change position outils
|
||||||
|
TP_LOCALLAB_CIEMODE_COM;Défaut
|
||||||
|
TP_LOCALLAB_CIEMODE_DR;Dynamic Range
|
||||||
|
TP_LOCALLAB_CIEMODE_TM;Tone-Mapping
|
||||||
|
TP_LOCALLAB_CIEMODE_WAV;Ondelettes
|
||||||
|
TP_LOCALLAB_CIEMODE_LOG;Log Encoding
|
||||||
|
!TP_LOCALLAB_CIEMODE_TOOLTIP;In Default mode, Ciecam is added at the end of the process. "Mask and modifications" and "Recovery based on luminance mask" are available for"Cam16 and JzCzHz" at your disposal .\nYou can also integrate Ciecam into other tools if you wish (TM, Wavelet, Dynamic Range, Log Encoding). The results for these tools will be different to those without Ciecam. In this mode, you can also use "Mask and modifications" and "Recovery based on luminance mask"
|
||||||
|
TP_LOCALLAB_CIEMODE_TOOLTIP;En Mode par défaut, Ciecam est ajouté en fin de processus. "Masque et modifications" et "Recovery based on luminance mask" sont disponibles pour "Cam16 et JzCzHz" à votre disposition.\nVous pouvez également intégrer Ciecam dans d'autres outils si vous le souhaitez (TM, Wavelet, Dynamic Range, Log Encoding). Les résultats pour ces outils seront différents de ceux sans Ciecam. Dans ce mode, vous pouvez également utiliser "Masque et modifications" et "Récupération basée sur le masque de luminance"
|
||||||
|
TP_LOCALLAB_CIETOOLEXP;Courbes
|
||||||
|
TP_LOCALLAB_CIECOLORFRA;Couleur
|
||||||
|
TP_LOCALLAB_CIECONTFRA;Contraste
|
||||||
|
TP_LOCALLAB_CIELIGHTFRA;Eclaicir
|
||||||
|
TP_LOCALLAB_CIELIGHTCONTFRA;Eclaircir & Contraste
|
||||||
TP_LOCALLAB_CIRCRADIUS;Taille Spot
|
TP_LOCALLAB_CIRCRADIUS;Taille Spot
|
||||||
TP_LOCALLAB_CIRCRAD_TOOLTIP;Contient les références du RT-spot, utile pour la détection de forme (couleur, luma, chroma, Sobel).\nLes faibles valeurs peuvent être utiles pour les feuillages.\nLes valeurs élevées peuvent être utile pour la peau
|
TP_LOCALLAB_CIRCRAD_TOOLTIP;Contient les références du RT-spot, utile pour la détection de forme (couleur, luma, chroma, Sobel).\nLes faibles valeurs peuvent être utiles pour les feuillages.\nLes valeurs élevées peuvent être utile pour la peau
|
||||||
TP_LOCALLAB_CLARICRES;Fusion Chroma
|
TP_LOCALLAB_CLARICRES;Fusion Chroma
|
||||||
TP_LOCALLAB_CLARIFRA;Clarté & Masque netteté/Fusion & adoucir
|
TP_LOCALLAB_CLARIFRA;Clarté & Masque netteté/Fusion & adoucir
|
||||||
|
TP_LOCALLAB_CLARIJZ_TOOLTIP;En dessous ou égal à 4, 'Masque netteté' est actif.\nAu dessus du niveau ondelettes 5 'Clarté' est actif.
|
||||||
|
TP_LOCALLAB_CLARISOFTJZ_TOOLTIP;Le curseur « Rayon adoucir » (algorithme de filtre guidé) réduit les halos et les irrégularités pour les ondelettes de clarté, de masque net et de contraste local Jz.
|
||||||
TP_LOCALLAB_CLARILRES;Fusion Luma
|
TP_LOCALLAB_CLARILRES;Fusion Luma
|
||||||
TP_LOCALLAB_CLARISOFT;Rayon adoucir
|
TP_LOCALLAB_CLARISOFT;Rayon adoucir
|
||||||
TP_LOCALLAB_CLARISOFT_TOOLTIP;Actif pour Clarté et Masque de netteté si différent de zéro.\n\nActif pour toutes les pyramides ondelettes.\nInactif si rayon = 0
|
TP_LOCALLAB_CLARISOFT_TOOLTIP;Actif pour Clarté et Masque de netteté si différent de zéro.\n\nActif pour toutes les pyramides ondelettes.\nInactif si rayon = 0
|
||||||
@ -2010,6 +2038,84 @@ TP_LOCALLAB_INVERS_TOOLTIP;Si sélectionné (inverse) moins de possibilités.\n\
|
|||||||
TP_LOCALLAB_INVBL_TOOLTIP;Alternative\nPremier Spot:\n image entière - delimiteurs en dehors de la prévisualisation\n RT-spot forme sélection : rectangle. Transition 100\n\nDeuxième spot : Spot Exclusion
|
TP_LOCALLAB_INVBL_TOOLTIP;Alternative\nPremier Spot:\n image entière - delimiteurs en dehors de la prévisualisation\n RT-spot forme sélection : rectangle. Transition 100\n\nDeuxième spot : Spot Exclusion
|
||||||
TP_LOCALLAB_INVMASK;Algorithme inverse
|
TP_LOCALLAB_INVMASK;Algorithme inverse
|
||||||
TP_LOCALLAB_ISOGR;Plus gros (ISO)
|
TP_LOCALLAB_ISOGR;Plus gros (ISO)
|
||||||
|
TP_LOCALLAB_JAB;Utilise Black Ev & White Ev
|
||||||
|
TP_LOCALLAB_JABADAP_TOOLTIP;Perceptual Uniform adaptation.\nAjuste automatiquement la relation entre Jz et la saturation en tenant compte de la "luminance absolue".
|
||||||
|
TP_LOCALLAB_JZ100;Jz référence 100cd/m2
|
||||||
|
TP_LOCALLAB_JZCLARILRES;Fusion luma Jz
|
||||||
|
TP_LOCALLAB_JZCLARICRES;Fusion chroma Cz
|
||||||
|
TP_LOCALLAB_JZFORCE;Force max Jz à 1
|
||||||
|
TP_LOCALLAB_JZFORCE_TOOLTIP;Vous permet de forcer la valeur Jz maximale à 1 pour une meilleure réponse du curseur et de la courbe
|
||||||
|
TP_LOCALLAB_JZFRA;Jz Cz Hz Ajustements Image
|
||||||
|
TP_LOCALLAB_JZMODECAM_TOOLTIP;Jz (uniquement en mode 'Avancé'). Opérationnel uniquement si le périphérique de sortie (moniteur) est HDR (luminance crête supérieure à 100 cd/m2 - idéalement entre 4000 et 10000 cd/m2. Luminance du point noir inférieure à 0,005 cd/m2). Cela suppose a) que l'ICC-PCS pour l'écran utilise Jzazbz (ou XYZ), b) fonctionne en précision réelle, c) que le moniteur soit calibré (si possible avec un gamut DCI-P3 ou Rec-2020), d) que le gamma habituel (sRGB ou BT709) est remplacé par une fonction Perceptual Quantiser (PQ).
|
||||||
|
TP_LOCALLAB_JZPQFRA;Jz remappage
|
||||||
|
TP_LOCALLAB_JZPQFRA_TOOLTIP;Permet d'adapter l'algorithme Jz à un environnement SDR ou aux caractéristiques (performances) d'un environnement HDR comme suit :\n a) pour des valeurs de luminance comprises entre 0 et 100 cd/m2, le système se comporte comme s'il était dans un environnement SDR .\n b) pour des valeurs de luminance comprises entre 100 et 10000 cd/m2, vous pouvez adapter l'algorithme aux caractéristiques HDR de l'image et du moniteur.\n\nSi "PQ - Peak luminance" est réglé sur 10000, "Jz remappping" se comporte de la même manière que l'algorithme original de Jzazbz.
|
||||||
|
TP_LOCALLAB_JZPQREMAP;PQ - Pic luminance
|
||||||
|
TP_LOCALLAB_JZPQREMAP_TOOLTIP;PQ (Perceptual Quantizer) - vous permet de modifier la fonction PQ interne (généralement 10000 cd/m2 - par défaut 120 cd/m2).\nPeut être utilisé pour s'adapter à différentes images, processus et appareils.
|
||||||
|
TP_LOCALLAB_JZ100_TOOLTIP;Ajuste automatiquement le niveau de référence Jz 100 cd/m2 (signal d'image).\nModifie le niveau de saturation et l'action de "l'adaptation PU" (adaptation uniforme perceptuelle).
|
||||||
|
TP_LOCALLAB_JZADAP;PU adaptation
|
||||||
|
TP_LOCALLAB_JZFRA;Jz Cz Hz Adjustments Images
|
||||||
|
TP_LOCALLAB_JZLIGHT;Brightness
|
||||||
|
TP_LOCALLAB_JZCONT;Contraste
|
||||||
|
TP_LOCALLAB_JZCH;Chroma
|
||||||
|
TP_LOCALLAB_JZCHROM;Chroma
|
||||||
|
TP_LOCALLAB_JZHFRA;Courbes Hz
|
||||||
|
TP_LOCALLAB_JZHJZFRA;Courbe Jz(Hz)
|
||||||
|
TP_LOCALLAB_JZHUECIE;Rotation de teinte
|
||||||
|
TP_LOCALLAB_JZLOGWB_TOOLTIP;Si Auto est activé, il calculera et ajustera les niveaux Ev et la 'luminance moyenne Yb%' pour la zone du spot. Les valeurs résultantes seront utilisées par toutes les opérations Jz, y compris "Log Encoding Jz".\nCalcule également la luminance absolue au moment de la prise de vue.
|
||||||
|
TP_LOCALLAB_JZLOGWBS_TOOLTIP;Les réglages Black Ev et White Ev peuvent être différents selon que l'encodage Log ou Sigmoid est utilisé.\nPour Sigmoid, un changement (augmentation dans la plupart des cas) de White Ev peut être nécessaire pour obtenir un meilleur rendu des hautes lumières, du contraste et de la saturation.
|
||||||
|
TP_LOCALLAB_JZSAT;Saturation
|
||||||
|
TP_LOCALLAB_JZSHFRA;Ombres/Lumières Jz
|
||||||
|
TP_LOCALLAB_JZSOFTCIE;Rayon adoucir (GuidedFilter)
|
||||||
|
TP_LOCALLAB_JZTARGET_EV;Luminance moyenne (Yb%)
|
||||||
|
TP_LOCALLAB_JZSTRSOFTCIE;GuidedFilter Force
|
||||||
|
TP_LOCALLAB_JZQTOJ;Luminance relative
|
||||||
|
TP_LOCALLAB_JZQTOJ_TOOLTIP;Vous permet d'utiliser "Luminance relative" au lieu de "Luminance absolue" - Brightness devient Lightness.\nLes changements affectent : le curseur Luminosité, le curseur Contraste et la courbe Jz(Jz).
|
||||||
|
TP_LOCALLAB_JZTHRHCIE;Seuik Chroma pour Jz(Hz)
|
||||||
|
TP_LOCALLAB_JZWAVEXP;Ondelettes Jz
|
||||||
|
TP_LOCALLAB_JZLOG;Log encoding Jz
|
||||||
|
TP_LOCALLAB_LOG;Log Encoding
|
||||||
|
TP_LOCALLAB_LOG1FRA;CAM16 Adjustment Images
|
||||||
|
TP_LOCALLAB_LOG2FRA;Conditions de visionnage
|
||||||
|
TP_LOCALLAB_LOGAUTO;Automatique
|
||||||
|
TP_LOCALLAB_LOGAUTOGRAY_TOOLTIP;Calcule automatiquement la « luminance moyenne » pour les conditions de la scène lorsque le bouton « Automatique » dans les niveaux d'exposition relatifs est enfoncé.
|
||||||
|
TP_LOCALLAB_LOGAUTOGRAYJZ_TOOLTIP;Calcule automatiquement la « luminance moyenne » pour les conditions de la scène.
|
||||||
|
TP_LOCALLAB_LOGAUTO_TOOLTIP;Appuyez sur ce bouton pour calculer la plage dynamique et la « Luminance moyenne » pour les conditions de la scène si la « Luminance moyenne automatique (Yb %) » est cochée).\nCalcule également la luminance absolue au moment de la prise de vue.\nAppuyez à nouveau sur le bouton pour ajuster les valeurs calculées automatiquement.
|
||||||
|
TP_LOCALLAB_LOGBASE_TOOLTIP;Default = 2.\nValues less than 2 reduce the action of the algorithm making the shadows darker and the highlights brighter.\nWith values greater than 2, the shadows are grayer and the highlights become more washed out.
|
||||||
|
TP_LOCALLAB_LOGBLACKWHEV_TOOLTIP;Valeurs estimées du dynamic range entre Black Ev et White Ev
|
||||||
|
TP_LOCALLAB_LOGCATAD_TOOLTIP;L'adaptation chromatique permet d'interpréter une couleur en fonction de son environnement spatio-temporel.\nUtile lorsque la balance des blancs s'écarte sensiblement de la référence D50.\nAdapte les couleurs à l'illuminant du périphérique de sortie.
|
||||||
|
TP_LOCALLAB_LOGCOLORFL;Colorfulness (M)
|
||||||
|
TP_LOCALLAB_LOGCIE;Log encoding au lieu de Sigmoid
|
||||||
|
TP_LOCALLAB_LOGCIE_TOOLTIP;Vous permet d'utiliser Black Ev, White Ev, Scene Mean luminance (Yb%) et Viewing Mean luminance (Yb%) pour le mappage des tons à l'aide de l'encodage Log Q.
|
||||||
|
TP_LOCALLAB_LOGCONQL;Contraste (Q)
|
||||||
|
TP_LOCALLAB_LOGCONTL;Contraste (J)
|
||||||
|
TP_LOCALLAB_LOGCOLORF_TOOLTIP;Quantité de teinte perçue par rapport au gris.\nIndicateur qu'un stimulus apparaît plus ou moins coloré.
|
||||||
|
TP_LOCALLAB_LOGCONTL_TOOLTIP;Le contraste (J) dans CIECAM16 prend en compte l'augmentation de la coloration perçue avec la luminance
|
||||||
|
TP_LOCALLAB_LOGCONTQ_TOOLTIP;Le contraste (Q) dans CIECAM16 prend en compte l'augmentation de la coloration perçue avec la luminosité (brightness).
|
||||||
|
TP_LOCALLAB_LOGCONTHRES;Contrast seuil (J & Q)
|
||||||
|
TP_LOCALLAB_LOGCONTTHRES_TOOLTIP;Ajuste la plage de contraste des tons moyens (J et Q).\nLes valeurs positives réduisent progressivement l'effet des curseurs Contraste (J et Q). Les valeurs négatives augmentent progressivement l'effet des curseurs Contraste.
|
||||||
|
TP_LOCALLAB_LOGCONTL_TOOLTIP;Contrast (J) in CIECAM16 takes into account the increase in perceived coloration with luminance.
|
||||||
|
TP_LOCALLAB_LOGCONTQ_TOOLTIP;Contrast (Q) in CIECAM16 takes into account the increase in perceived coloration with brightness.
|
||||||
|
TP_LOCALLAB_LOGCONTTHRES_TOOLTIP;Adjusts the mid-tone contrast range (J & Q).\nPositive values progressively reduce the effect of the Contrast sliders (J & Q). Negative values progressively increase the effect of the Contrast sliders.
|
||||||
|
TP_LOCALLAB_LOGDETAIL_TOOLTIP;Agit principalement sur les hautes frequences.
|
||||||
|
TP_LOCALLAB_LOGENCOD_TOOLTIP;Tone Mapping with Logarithmic encoding (ACES).\nUtile pour les images sous-exposées ou les images avec une plage dynamique élevée.\n\nProcessus en deux étapes : 1) Calcul de la plage dynamique 2) Réglage manuel
|
||||||
|
TP_LOCALLAB_LOGEXP;Tous les outils
|
||||||
|
TP_LOCALLAB_LOGFRA;Scene Conditions
|
||||||
|
TP_LOCALLAB_LOGFRAME_TOOLTIP;Vous permet de calculer et d'ajuster les niveaux Ev et la 'luminance moyenne Yb%' (point gris source) pour la zone du spot. Les valeurs résultantes seront utilisées par toutes les opérations Lab et la plupart des opérations RVB du pipeline.\nCalcule également la luminance absolue au moment de la prise de vue.
|
||||||
|
TP_LOCALLAB_LOGIMAGE_TOOLTIP;Prend en compte les variables Ciecam correspondantes : c'est-à-dire le contraste (J) et la saturation (s), ainsi que le contraste (Q), la luminosité (Q), la luminosité (J) et la couleur (M) (en mode avancé)
|
||||||
|
TP_LOCALLAB_LOGLIGHTL;Lightness (J)
|
||||||
|
TP_LOCALLAB_LOGLIGHTL_TOOLTIP;Proche de lightness (L*a*b*). Prend en compte l'augmentation de la coloration perçue
|
||||||
|
TP_LOCALLAB_LOGLIGHTQ;Brightness (Q)
|
||||||
|
TP_LOCALLAB_LOGLIGHTQ_TOOLTIP;Quantité de lumière perçue émanant d'un stimulus.\nIndicateur qu'un stimulus semble être plus ou moins brillant, clair.
|
||||||
|
TP_LOCALLAB_LOGLIN;Logarithm mode
|
||||||
|
TP_LOCALLAB_LOGPFRA;Niveaux Exposition relatifs
|
||||||
|
TP_LOCALLAB_LOGREPART;Force Globale
|
||||||
|
TP_LOCALLAB_LOGREPART_TOOLTIP;Vous permet d'ajuster la force relative de l'image encodée en journal par rapport à l'image d'origine.\nN'affecte pas le composant Ciecam.
|
||||||
|
TP_LOCALLAB_LOGSATURL_TOOLTIP;La saturation(s) dans CIECAM16 correspond à la couleur d'un stimulus par rapport à sa propre luminosité.\nAgit principalement sur les tons moyens et sur les hautes lumières.
|
||||||
|
TP_LOCALLAB_LOGSCENE_TOOLTIP;Correspond aux conditions de prise de vue.
|
||||||
|
TP_LOCALLAB_LOGSURSOUR_TOOLTIP;Modifie les tonalités et les couleurs pour prendre en compte les conditions de la scène.\n\n<b>Moyen</b> : conditions d'éclairage moyennes (standard). L'image ne changera pas.\n\n<b>Dim</b> : conditions de luminosité. L'image deviendra légèrement plus lumineuse.\n\n<b>Sombre</b> : conditions sombres. L'image deviendra plus lumineuse.
|
||||||
|
TP_LOCALLAB_LOGVIEWING_TOOLTIP;Correspond au support sur lequel sera visualisée l'image finale (moniteur, TV, projecteur, imprimante...), ainsi qu'aux conditions environnantes.
|
||||||
|
TP_LOCALLAB_JZLOGYBOUT_TOOLTIP;Yb est la luminance relative du fond, exprimée en pourcentage de gris. 18 % de gris correspond à une luminance d'arrière-plan de 50 % lorsqu'elle est exprimée en CIE L.\nLes données sont basées sur la luminance moyenne de l'image.\nLorsqu'elle est utilisée avec Log Encoding, la luminance moyenne est utilisée pour déterminer la quantité de gain nécessaire à appliquer au signal avant le codage logarithmique. Des valeurs inférieures de luminance moyenne se traduiront par un gain accru.
|
||||||
|
TP_LOCALLAB_LOG_TOOLNAME;Log Encoding
|
||||||
TP_LOCALLAB_LABBLURM;Masque Flouter
|
TP_LOCALLAB_LABBLURM;Masque Flouter
|
||||||
TP_LOCALLAB_LABEL;Ajustements Locaux
|
TP_LOCALLAB_LABEL;Ajustements Locaux
|
||||||
TP_LOCALLAB_LABGRID;Grille correction couleurs
|
TP_LOCALLAB_LABGRID;Grille correction couleurs
|
||||||
@ -2045,7 +2151,7 @@ TP_LOCALLAB_LOC_CONTRASTPYR2;Pyramide 2:
|
|||||||
TP_LOCALLAB_LOC_CONTRASTPYR2LAB; Contr. par niveaux/TM/Cont.Dir.
|
TP_LOCALLAB_LOC_CONTRASTPYR2LAB; Contr. par niveaux/TM/Cont.Dir.
|
||||||
TP_LOCALLAB_LOC_CONTRASTPYRLAB; Filtre Gradué/Netteté bords/Flou
|
TP_LOCALLAB_LOC_CONTRASTPYRLAB; Filtre Gradué/Netteté bords/Flou
|
||||||
TP_LOCALLAB_LOC_RESIDPYR;Image Residuelle
|
TP_LOCALLAB_LOC_RESIDPYR;Image Residuelle
|
||||||
TP_LOCALLAB_LOG;Codage log
|
TP_LOCALLAB_LOG;Codage logbwforce
|
||||||
TP_LOCALLAB_LOG1FRA;Ajustements Image
|
TP_LOCALLAB_LOG1FRA;Ajustements Image
|
||||||
TP_LOCALLAB_LOG2FRA;Conditions de visionnage
|
TP_LOCALLAB_LOG2FRA;Conditions de visionnage
|
||||||
TP_LOCALLAB_LOGAUTO;Automatique
|
TP_LOCALLAB_LOGAUTO;Automatique
|
||||||
@ -2280,6 +2386,7 @@ TP_LOCALLAB_REWEI;Repondération iterations
|
|||||||
TP_LOCALLAB_RGB;RGB Courbe de tonalité
|
TP_LOCALLAB_RGB;RGB Courbe de tonalité
|
||||||
TP_LOCALLAB_ROW_NVIS;Pas visible
|
TP_LOCALLAB_ROW_NVIS;Pas visible
|
||||||
TP_LOCALLAB_ROW_VIS;Visible
|
TP_LOCALLAB_ROW_VIS;Visible
|
||||||
|
TP_LOCALLAB_RSTPROTECT_TOOLTIP;La protection des rouges et des tons chair affecte les curseurs Saturation, Chroma et Colorfulness.
|
||||||
TP_LOCALLAB_SATUR;Saturation
|
TP_LOCALLAB_SATUR;Saturation
|
||||||
TP_LOCALLAB_SAVREST;Sauve - Récupère Image Courante
|
TP_LOCALLAB_SAVREST;Sauve - Récupère Image Courante
|
||||||
TP_LOCALLAB_SCALEGR;Echelle
|
TP_LOCALLAB_SCALEGR;Echelle
|
||||||
@ -2354,6 +2461,13 @@ TP_LOCALLAB_SHRESFRA;Ombres/Lumières
|
|||||||
TP_LOCALLAB_SHTRC_TOOLTIP;Modifie les tons de l'image en agissant sur la TRC (Tone Response Curve).\nGamma agit principalement sur les tons lumineux.\nSlope (pente) agit principalement sur les tons sombres.
|
TP_LOCALLAB_SHTRC_TOOLTIP;Modifie les tons de l'image en agissant sur la TRC (Tone Response Curve).\nGamma agit principalement sur les tons lumineux.\nSlope (pente) agit principalement sur les tons sombres.
|
||||||
TP_LOCALLAB_SH_TOOLNAME;Ombres/lumières & Egaliseur tonal - 5
|
TP_LOCALLAB_SH_TOOLNAME;Ombres/lumières & Egaliseur tonal - 5
|
||||||
TP_LOCALLAB_SIGMAWAV;Atténuation Réponse
|
TP_LOCALLAB_SIGMAWAV;Atténuation Réponse
|
||||||
|
TP_LOCALLAB_SIGFRA;Sigmoid Q & Log encoding Q
|
||||||
|
TP_LOCALLAB_SIGJZFRA;Sigmoid Jz
|
||||||
|
TP_LOCALLAB_SIGMOIDLAMBDA;Contraste
|
||||||
|
TP_LOCALLAB_SIGMOIDTH;Seuil (Gray point)
|
||||||
|
TP_LOCALLAB_SIGMOIDBL;Mélange
|
||||||
|
TP_LOCALLAB_SIGMOIDQJ;Utilise Black Ev & White Ev
|
||||||
|
TP_LOCALLAB_SIGMOID_TOOLTIP;Permet de simuler une apparence de Tone-mapping en utilisant à la fois la fonction 'Ciecam' (ou 'Jz') et 'Sigmoïde'.\nTrois curseurs : a) Le contraste agit sur la forme de la courbe sigmoïde et par conséquent sur la force ; b) Seuil (Point gris) distribue l'action en fonction de la luminance ; c)Blend agit sur l'aspect final de l'image, le contraste et la luminance.
|
||||||
TP_LOCALLAB_SIM;Simple
|
TP_LOCALLAB_SIM;Simple
|
||||||
TP_LOCALLAB_SLOMASKCOL;Pente (slope)
|
TP_LOCALLAB_SLOMASKCOL;Pente (slope)
|
||||||
TP_LOCALLAB_SLOMASK_TOOLTIP;Gamma et Pente (Slope) autorise une transformation du masque en douceur et sans artefacts en modifiant progressivement "L" pour éviter les discontinuité.
|
TP_LOCALLAB_SLOMASK_TOOLTIP;Gamma et Pente (Slope) autorise une transformation du masque en douceur et sans artefacts en modifiant progressivement "L" pour éviter les discontinuité.
|
||||||
@ -2449,7 +2563,7 @@ TP_LOCALLAB_WAT_BLURLC_TOOLTIP;Par défaut les 3 dimensions de L*a*b* luminance
|
|||||||
TP_LOCALLAB_WAT_THRESHOLDWAV_TOOLTIP;Etendue des niveaux d’ondelettes utilisée dans l’ensemble du module “wavelets”
|
TP_LOCALLAB_WAT_THRESHOLDWAV_TOOLTIP;Etendue des niveaux d’ondelettes utilisée dans l’ensemble du module “wavelets”
|
||||||
TP_LOCALLAB_WAT_EXPRESID_TOOLTIP;Image résiduelle, a le même comportement que l'image principale
|
TP_LOCALLAB_WAT_EXPRESID_TOOLTIP;Image résiduelle, a le même comportement que l'image principale
|
||||||
TP_LOCALLAB_WAT_CLARIL_TOOLTIP;"Fusion luma" est utilisée pour selectionner l'intensité de l'effet désiré sur la luminance.
|
TP_LOCALLAB_WAT_CLARIL_TOOLTIP;"Fusion luma" est utilisée pour selectionner l'intensité de l'effet désiré sur la luminance.
|
||||||
TP_LOCALLAB_WAT_CLARIC_TOOLTIP;"Fusion chroma" est utilisée pour selectionner l'intensité de l'effet désiré sur la luminance.
|
TP_LOCALLAB_WAT_CLARIC_TOOLTIP;"Fusion chroma" est utilisée pour selectionner l'intensité de l'effet désiré sur la chrominance.
|
||||||
TP_LOCALLAB_WAT_ORIGLC_TOOLTIP;"Fusion seulement avec image originale", empêche les actions "Wavelet Pyramid" d'interférer avec "Claté" and "Masque netteté"
|
TP_LOCALLAB_WAT_ORIGLC_TOOLTIP;"Fusion seulement avec image originale", empêche les actions "Wavelet Pyramid" d'interférer avec "Claté" and "Masque netteté"
|
||||||
TP_LOCALLAB_WAT_STRWAV_TOOLTIP;Permet au contraste local de varier en fonction d'un gradient et d'un angle. La variation du signal de la luminance signal est prise en compte et non pas la luminance.
|
TP_LOCALLAB_WAT_STRWAV_TOOLTIP;Permet au contraste local de varier en fonction d'un gradient et d'un angle. La variation du signal de la luminance signal est prise en compte et non pas la luminance.
|
||||||
TP_LOCALLAB_WAT_CONTOFFSET_TOOLTIP;Décalage modifie la balance entre faible contraste et contraste élévé.\nLes hautes valeurs amplifient les changements de contraste pour les détails à contraste élévé, alors que les faibles valeurs vont amplifier les détails à contraste faible .\nEn selectionant des valeurs faibles vous pouvez ainsi sélectionner les zones de contrastes qui seront accentuées.
|
TP_LOCALLAB_WAT_CONTOFFSET_TOOLTIP;Décalage modifie la balance entre faible contraste et contraste élévé.\nLes hautes valeurs amplifient les changements de contraste pour les détails à contraste élévé, alors que les faibles valeurs vont amplifier les détails à contraste faible .\nEn selectionant des valeurs faibles vous pouvez ainsi sélectionner les zones de contrastes qui seront accentuées.
|
||||||
@ -2505,6 +2619,30 @@ TP_PCVIGNETTE_STRENGTH_TOOLTIP;Force du filtre en EV (maximum dans les coins)
|
|||||||
TP_PERSPECTIVE_HORIZONTAL;Horizontale
|
TP_PERSPECTIVE_HORIZONTAL;Horizontale
|
||||||
TP_PERSPECTIVE_LABEL;Perspective
|
TP_PERSPECTIVE_LABEL;Perspective
|
||||||
TP_PERSPECTIVE_VERTICAL;Verticale
|
TP_PERSPECTIVE_VERTICAL;Verticale
|
||||||
|
TP_PERSPECTIVE_CONTROL_LINE_APPLY_INVALID_TOOLTIP;Au moins deux lignes de contrôle horizontales ou deux verticales requises.
|
||||||
|
TP_PERSPECTIVE_CAMERA_CROP_FACTOR;Facteur de réduction (crop)
|
||||||
|
TP_PERSPECTIVE_CAMERA_FOCAL_LENGTH;Longueur focale
|
||||||
|
TP_PERSPECTIVE_CAMERA_FRAME;Correction
|
||||||
|
TP_PERSPECTIVE_CAMERA_PITCH;Vertical
|
||||||
|
TP_PERSPECTIVE_CAMERA_ROLL;Rotation
|
||||||
|
TP_PERSPECTIVE_CAMERA_SHIFT_HORIZONTAL;Décalage Horizontal
|
||||||
|
TP_PERSPECTIVE_CAMERA_SHIFT_VERTICAL;Décalage Vertical
|
||||||
|
TP_PERSPECTIVE_CAMERA_YAW;Horizontal
|
||||||
|
TP_PERSPECTIVE_CONTROL_LINES;Lignes de contrôle
|
||||||
|
TP_PERSPECTIVE_CONTROL_LINES_TOOLTIP;<b>Ctrl</b>+<b>faire glisser</b> : dessiner une nouvelle ligne\n<b>Clic droit</b> : supprimer la ligne
|
||||||
|
TP_PERSPECTIVE_HORIZONTAL;Horizontal
|
||||||
|
TP_PERSPECTIVE_LABEL;Perspective
|
||||||
|
TP_PERSPECTIVE_METHOD;Méthode
|
||||||
|
TP_PERSPECTIVE_METHOD_CAMERA_BASED;Basé sur Camera
|
||||||
|
TP_PERSPECTIVE_METHOD_SIMPLE;Simple
|
||||||
|
TP_PERSPECTIVE_POST_CORRECTION_ADJUSTMENT_FRAME;Ajustement post-correction
|
||||||
|
TP_PERSPECTIVE_PROJECTION_PITCH;Vertical
|
||||||
|
TP_PERSPECTIVE_PROJECTION_ROTATE;Rotation
|
||||||
|
TP_PERSPECTIVE_PROJECTION_SHIFT_HORIZONTAL;Décalage Horizontal
|
||||||
|
TP_PERSPECTIVE_PROJECTION_SHIFT_VERTICAL;Décalage Vertical
|
||||||
|
TP_PERSPECTIVE_PROJECTION_YAW;Horizontal
|
||||||
|
TP_PERSPECTIVE_RECOVERY_FRAME;Récupération
|
||||||
|
TP_PERSPECTIVE_VERTICAL;Vertical
|
||||||
TP_PFCURVE_CURVEEDITOR_CH;Teinte
|
TP_PFCURVE_CURVEEDITOR_CH;Teinte
|
||||||
TP_PFCURVE_CURVEEDITOR_CH_TOOLTIP;Contrôle la force du défrangeage en fonction de la couleur. En haut = action maxi, en bas = pas d'action sur la couleur.
|
TP_PFCURVE_CURVEEDITOR_CH_TOOLTIP;Contrôle la force du défrangeage en fonction de la couleur. En haut = action maxi, en bas = pas d'action sur la couleur.
|
||||||
TP_PREPROCESS_DEADPIXFILT;Filtrer les pixels morts
|
TP_PREPROCESS_DEADPIXFILT;Filtrer les pixels morts
|
||||||
@ -3019,8 +3157,11 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
|
|||||||
!GENERAL_HELP;Help
|
!GENERAL_HELP;Help
|
||||||
!HISTORY_MSG_494;Capture Sharpening
|
!HISTORY_MSG_494;Capture Sharpening
|
||||||
!HISTORY_MSG_DEHAZE_LUMINANCE;Dehaze - Luminance only
|
!HISTORY_MSG_DEHAZE_LUMINANCE;Dehaze - Luminance only
|
||||||
!HISTORY_MSG_FILMNEGATIVE_ENABLED;Film Negative
|
HISTORY_MSG_FILMNEGATIVE_ENABLED;Film Negatif
|
||||||
!HISTORY_MSG_FILMNEGATIVE_VALUES;Film negative values
|
HISTORY_MSG_FILMNEGATIVE_VALUES;Film negatif valeurs
|
||||||
|
HISTORY_MSG_FILMNEGATIVE_BALANCE;FN - Réference Sortie
|
||||||
|
HISTORY_MSG_FILMNEGATIVE_COLORSPACE;Film negativf Espace couleur
|
||||||
|
HISTORY_MSG_FILMNEGATIVE_REF_SPOT;FN - Référence entrée
|
||||||
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
|
!HISTORY_MSG_PDSHARPEN_AUTO_CONTRAST;CS - Auto threshold
|
||||||
!HISTORY_MSG_PDSHARPEN_AUTO_RADIUS;CS - Auto radius
|
!HISTORY_MSG_PDSHARPEN_AUTO_RADIUS;CS - Auto radius
|
||||||
!HISTORY_MSG_PDSHARPEN_CHECKITER;CS - Auto limit iterations
|
!HISTORY_MSG_PDSHARPEN_CHECKITER;CS - Auto limit iterations
|
||||||
@ -3030,7 +3171,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
|
|||||||
!HISTORY_MSG_PDSHARPEN_RADIUS_BOOST;CS - Corner radius boost
|
!HISTORY_MSG_PDSHARPEN_RADIUS_BOOST;CS - Corner radius boost
|
||||||
!HISTORY_MSG_TRANS_METHOD;Geometry - Method
|
!HISTORY_MSG_TRANS_METHOD;Geometry - Method
|
||||||
!MAIN_FRAME_PLACES_DEL;Remove
|
!MAIN_FRAME_PLACES_DEL;Remove
|
||||||
!PARTIALPASTE_FILMNEGATIVE;Film Negative
|
!PARTIALPASTE_FILMNEGATIVE;Film Negatif
|
||||||
!PROGRESSBAR_DECODING;Decoding...
|
!PROGRESSBAR_DECODING;Decoding...
|
||||||
!PROGRESSBAR_GREENEQUIL;Green equilibration...
|
!PROGRESSBAR_GREENEQUIL;Green equilibration...
|
||||||
!PROGRESSBAR_HLREC;Highlight reconstruction...
|
!PROGRESSBAR_HLREC;Highlight reconstruction...
|
||||||
@ -3040,12 +3181,23 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: <b>-</b>
|
|||||||
!QUEUE_LOCATION_TITLE;Output Location
|
!QUEUE_LOCATION_TITLE;Output Location
|
||||||
!TP_CROP_PPI;PPI
|
!TP_CROP_PPI;PPI
|
||||||
!TP_DEHAZE_LUMINANCE;Luminance only
|
!TP_DEHAZE_LUMINANCE;Luminance only
|
||||||
!TP_FILMNEGATIVE_BLUE;Blue ratio
|
TP_FILMNEGATIVE_BLUE;Ratio bleu
|
||||||
!TP_FILMNEGATIVE_GREEN;Reference exponent (contrast)
|
TP_FILMNEGATIVE_BLUEBALANCE;Froid/Chaud
|
||||||
!TP_FILMNEGATIVE_GUESS_TOOLTIP;Automatically set the red and blue ratios by picking two patches which had a neutral hue (no color) in the original scene. The patches should differ in brightness. Set the white balance afterwards.
|
TP_FILMNEGATIVE_COLORSPACE;Inversion espace couleur:
|
||||||
!TP_FILMNEGATIVE_LABEL;Film Negative
|
TP_FILMNEGATIVE_COLORSPACE_INPUT;Espace couleur -entrée
|
||||||
!TP_FILMNEGATIVE_PICK;Pick neutral spots
|
TP_FILMNEGATIVE_COLORSPACE_TOOLTIP;Sélectionnez l'espace colorimétrique utilisé pour effectuer l'inversion négative :\n<b>Espace colorimétrique d'entrée</b> : effectuez l'inversion avant l'application du profil d'entrée, comme dans les versions précédentes de RT.\n<b>Espace colorimétrique de travail< /b> : effectue l'inversion après le profil d'entrée, en utilisant le profil de travail actuellement sélectionné.
|
||||||
!TP_FILMNEGATIVE_RED;Red ratio
|
TP_FILMNEGATIVE_COLORSPACE_WORKING;Espace couleur de travail
|
||||||
|
TP_FILMNEGATIVE_REF_LABEL;Entrée RGB: %1
|
||||||
|
TP_FILMNEGATIVE_REF_PICK;Choisissez le point de la balance des blancs
|
||||||
|
TP_FILMNEGATIVE_REF_TOOLTIP;Choisissez un patch gris pour équilibrer les blancs de la sortie, image positive.
|
||||||
|
TP_FILMNEGATIVE_GREEN;Exposant de référence
|
||||||
|
TP_FILMNEGATIVE_GREENBALANCE;Magenta/Vert
|
||||||
|
!TP_FILMNEGATIVE_GUESS_TOOLTIP;Automatically set the red and blue ratios by picking two patches which had a neutral hue (no color) in the original scene. The patches should differ in brightness.
|
||||||
|
TP_FILMNEGATIVE_LABEL;Film Negatif
|
||||||
|
TP_FILMNEGATIVE_OUT_LEVEL;Niveau de sortie
|
||||||
|
TP_FILMNEGATIVE_PICK;Choix des endroits neutres
|
||||||
|
TP_FILMNEGATIVE_RED;Ratio Rouge
|
||||||
|
TP_FILMNEGATIVE_GUESS_TOOLTIP;Définissez automatiquement les ratios rouge et bleu en choisissant deux patchs qui avaient une teinte neutre (pas de couleur) dans la scène d'origine. Les patchs doivent différer en luminosité.
|
||||||
!TP_LENSGEOM_LIN;Linear
|
!TP_LENSGEOM_LIN;Linear
|
||||||
!TP_LENSGEOM_LOG;Logarithmic
|
!TP_LENSGEOM_LOG;Logarithmic
|
||||||
!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically selected
|
!TP_LENSPROFILE_CORRECTION_AUTOMATCH;Automatically selected
|
||||||
|
@ -191,7 +191,6 @@ HISTOGRAM_TOOLTIP_CHRO;Mostra/Nascondi l'istogramma di cromaticità.
|
|||||||
HISTOGRAM_TOOLTIP_G;Mostra/Nascondi l'istogramma del Verde.
|
HISTOGRAM_TOOLTIP_G;Mostra/Nascondi l'istogramma del Verde.
|
||||||
HISTOGRAM_TOOLTIP_L;Mostra/Nascondi l'istogramma di Luminanza CIELAB.
|
HISTOGRAM_TOOLTIP_L;Mostra/Nascondi l'istogramma di Luminanza CIELAB.
|
||||||
HISTOGRAM_TOOLTIP_R;Mostra/Nascondi l'istogramma del Rosso.
|
HISTOGRAM_TOOLTIP_R;Mostra/Nascondi l'istogramma del Rosso.
|
||||||
HISTOGRAM_TOOLTIP_RAW;Mostra/Nascondi l'istogramma del raw.
|
|
||||||
HISTORY_CHANGED;Modificato
|
HISTORY_CHANGED;Modificato
|
||||||
HISTORY_CUSTOMCURVE;Curva personalizzata
|
HISTORY_CUSTOMCURVE;Curva personalizzata
|
||||||
HISTORY_FROMCLIPBOARD;Dagli appunti
|
HISTORY_FROMCLIPBOARD;Dagli appunti
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -156,7 +156,6 @@ HISTOGRAM_TOOLTIP_BAR;RGB jelzősáv megjelenítése/elrejtése.\nKattints jobb
|
|||||||
HISTOGRAM_TOOLTIP_G;Zöld csatorna hisztogrammja (mutat/elrejt)
|
HISTOGRAM_TOOLTIP_G;Zöld csatorna hisztogrammja (mutat/elrejt)
|
||||||
HISTOGRAM_TOOLTIP_L;CIELAB Luminancia hisztogramm (mutat/elrejt)
|
HISTOGRAM_TOOLTIP_L;CIELAB Luminancia hisztogramm (mutat/elrejt)
|
||||||
HISTOGRAM_TOOLTIP_R;Piros csatorna hisztogrammja (mutat/elrejt)
|
HISTOGRAM_TOOLTIP_R;Piros csatorna hisztogrammja (mutat/elrejt)
|
||||||
HISTOGRAM_TOOLTIP_RAW;Raw hisztogram megjelenítése/elrejtése
|
|
||||||
HISTORY_CHANGED;Változott
|
HISTORY_CHANGED;Változott
|
||||||
HISTORY_CUSTOMCURVE;Saját görbe
|
HISTORY_CUSTOMCURVE;Saját görbe
|
||||||
HISTORY_FROMCLIPBOARD;Vágólapról
|
HISTORY_FROMCLIPBOARD;Vágólapról
|
||||||
|
@ -235,7 +235,6 @@ HISTOGRAM_TOOLTIP_CHRO;Toon/Verberg Chromaticiteit histogram
|
|||||||
HISTOGRAM_TOOLTIP_G;Toon/verberg groen histogram
|
HISTOGRAM_TOOLTIP_G;Toon/verberg groen histogram
|
||||||
HISTOGRAM_TOOLTIP_L;Toon/verberg CIELAB-luminantiehistogram
|
HISTOGRAM_TOOLTIP_L;Toon/verberg CIELAB-luminantiehistogram
|
||||||
HISTOGRAM_TOOLTIP_R;Toon/verberg rood histogram
|
HISTOGRAM_TOOLTIP_R;Toon/verberg rood histogram
|
||||||
HISTOGRAM_TOOLTIP_RAW;Toon/verberg RAW-histogram
|
|
||||||
HISTORY_CHANGED;Veranderd
|
HISTORY_CHANGED;Veranderd
|
||||||
HISTORY_CUSTOMCURVE;Handmatig
|
HISTORY_CUSTOMCURVE;Handmatig
|
||||||
HISTORY_FROMCLIPBOARD;Van klembord
|
HISTORY_FROMCLIPBOARD;Van klembord
|
||||||
|
@ -238,7 +238,6 @@ HISTOGRAM_TOOLTIP_CHRO;Pokaż/Ukryj histogram chromatyczności.
|
|||||||
HISTOGRAM_TOOLTIP_G;Pokaż/Ukryj histogram zieleni.
|
HISTOGRAM_TOOLTIP_G;Pokaż/Ukryj histogram zieleni.
|
||||||
HISTOGRAM_TOOLTIP_L;Pokaż/Ukryj histogram luminancji CIELab.
|
HISTOGRAM_TOOLTIP_L;Pokaż/Ukryj histogram luminancji CIELab.
|
||||||
HISTOGRAM_TOOLTIP_R;Pokaż/Ukryj histogram czerwieni.
|
HISTOGRAM_TOOLTIP_R;Pokaż/Ukryj histogram czerwieni.
|
||||||
HISTOGRAM_TOOLTIP_RAW;Pokaż/Ukryj histogram raw.
|
|
||||||
HISTORY_CHANGED;Zmieniono
|
HISTORY_CHANGED;Zmieniono
|
||||||
HISTORY_CUSTOMCURVE;Krzywa własna
|
HISTORY_CUSTOMCURVE;Krzywa własna
|
||||||
HISTORY_FROMCLIPBOARD;Ze schowka
|
HISTORY_FROMCLIPBOARD;Ze schowka
|
||||||
|
@ -237,7 +237,6 @@ HISTOGRAM_TOOLTIP_G;Mostrar histograma verde.
|
|||||||
HISTOGRAM_TOOLTIP_L;Mostrar histograma de luminância CIELab.
|
HISTOGRAM_TOOLTIP_L;Mostrar histograma de luminância CIELab.
|
||||||
HISTOGRAM_TOOLTIP_MODE;Alternar entre redimensionar linear, log-linear e log-log do histograma.
|
HISTOGRAM_TOOLTIP_MODE;Alternar entre redimensionar linear, log-linear e log-log do histograma.
|
||||||
HISTOGRAM_TOOLTIP_R;Mostrar histograma vermelho.
|
HISTOGRAM_TOOLTIP_R;Mostrar histograma vermelho.
|
||||||
HISTOGRAM_TOOLTIP_RAW;Mostrar histograma raw.
|
|
||||||
HISTORY_CHANGED;Alterado
|
HISTORY_CHANGED;Alterado
|
||||||
HISTORY_CUSTOMCURVE;Curva personalizada
|
HISTORY_CUSTOMCURVE;Curva personalizada
|
||||||
HISTORY_FROMCLIPBOARD;Da área de transferência
|
HISTORY_FROMCLIPBOARD;Da área de transferência
|
||||||
|
@ -244,7 +244,6 @@ HISTOGRAM_TOOLTIP_G;Mostrar/Ocultar histograma verde.
|
|||||||
HISTOGRAM_TOOLTIP_L;Mostrar/Ocultar histograma de luminância CIELab.
|
HISTOGRAM_TOOLTIP_L;Mostrar/Ocultar histograma de luminância CIELab.
|
||||||
HISTOGRAM_TOOLTIP_MODE;Alternar entre o modo de escala linear, log-linear e log-log para o histograma.
|
HISTOGRAM_TOOLTIP_MODE;Alternar entre o modo de escala linear, log-linear e log-log para o histograma.
|
||||||
HISTOGRAM_TOOLTIP_R;Mostrar/Ocultar histograma vermelho.
|
HISTOGRAM_TOOLTIP_R;Mostrar/Ocultar histograma vermelho.
|
||||||
HISTOGRAM_TOOLTIP_RAW;Mostrar/Ocultar histograma raw.
|
|
||||||
HISTORY_CHANGED;Alterado
|
HISTORY_CHANGED;Alterado
|
||||||
HISTORY_CUSTOMCURVE;Curva personalizada
|
HISTORY_CUSTOMCURVE;Curva personalizada
|
||||||
HISTORY_FROMCLIPBOARD;Da área de transferência
|
HISTORY_FROMCLIPBOARD;Da área de transferência
|
||||||
|
@ -225,7 +225,6 @@ HISTOGRAM_TOOLTIP_CHRO;Показать/скрыть хроматическую
|
|||||||
HISTOGRAM_TOOLTIP_G;Показать/скрыть зелёный канал гистограммы
|
HISTOGRAM_TOOLTIP_G;Показать/скрыть зелёный канал гистограммы
|
||||||
HISTOGRAM_TOOLTIP_L;Показать/скрыть CIELAB гистограмму
|
HISTOGRAM_TOOLTIP_L;Показать/скрыть CIELAB гистограмму
|
||||||
HISTOGRAM_TOOLTIP_R;Показать/скрыть красный канал гистограммы
|
HISTOGRAM_TOOLTIP_R;Показать/скрыть красный канал гистограммы
|
||||||
HISTOGRAM_TOOLTIP_RAW;Показать/скрыть Raw гистограмму
|
|
||||||
HISTORY_CHANGED;Изменено
|
HISTORY_CHANGED;Изменено
|
||||||
HISTORY_CUSTOMCURVE;Пользовательская кривая
|
HISTORY_CUSTOMCURVE;Пользовательская кривая
|
||||||
HISTORY_FROMCLIPBOARD;Из буфера обмена
|
HISTORY_FROMCLIPBOARD;Из буфера обмена
|
||||||
|
@ -171,7 +171,6 @@ HISTOGRAM_TOOLTIP_CHRO;Прикажи/сакриј хистограм хроми
|
|||||||
HISTOGRAM_TOOLTIP_G;Приказује зелени хистограм
|
HISTOGRAM_TOOLTIP_G;Приказује зелени хистограм
|
||||||
HISTOGRAM_TOOLTIP_L;Приказује ЦиеЛаб хитограм
|
HISTOGRAM_TOOLTIP_L;Приказује ЦиеЛаб хитограм
|
||||||
HISTOGRAM_TOOLTIP_R;Приказује црвени хистограм
|
HISTOGRAM_TOOLTIP_R;Приказује црвени хистограм
|
||||||
HISTOGRAM_TOOLTIP_RAW;Приказује/скрива RAW хистограм
|
|
||||||
HISTORY_CHANGED;Измењено
|
HISTORY_CHANGED;Измењено
|
||||||
HISTORY_CUSTOMCURVE;Произвољна крива
|
HISTORY_CUSTOMCURVE;Произвољна крива
|
||||||
HISTORY_FROMCLIPBOARD;Из оставе
|
HISTORY_FROMCLIPBOARD;Из оставе
|
||||||
|
@ -247,7 +247,6 @@ HISTOGRAM_TOOLTIP_G;Prikaži/Skrij histogram za zeleno.
|
|||||||
HISTOGRAM_TOOLTIP_L;Prikaži/Skrij histogram CIELab svetlosti.
|
HISTOGRAM_TOOLTIP_L;Prikaži/Skrij histogram CIELab svetlosti.
|
||||||
HISTOGRAM_TOOLTIP_MODE;Preklopi med linearno, log-linearno in log-log merilom histograma.
|
HISTOGRAM_TOOLTIP_MODE;Preklopi med linearno, log-linearno in log-log merilom histograma.
|
||||||
HISTOGRAM_TOOLTIP_R;Prikaži/Skrij histogram za rdečo.
|
HISTOGRAM_TOOLTIP_R;Prikaži/Skrij histogram za rdečo.
|
||||||
HISTOGRAM_TOOLTIP_RAW;Prikaži/Skrij surovi histogram.
|
|
||||||
HISTORY_CHANGED;Spremenjeno
|
HISTORY_CHANGED;Spremenjeno
|
||||||
HISTORY_CUSTOMCURVE;Prilagojena krivulja
|
HISTORY_CUSTOMCURVE;Prilagojena krivulja
|
||||||
HISTORY_FROMCLIPBOARD;Iz odložišča
|
HISTORY_FROMCLIPBOARD;Iz odložišča
|
||||||
|
@ -204,7 +204,6 @@ HISTOGRAM_TOOLTIP_CHRO;Visa/Dölj kromananshistogrammet
|
|||||||
HISTOGRAM_TOOLTIP_G;Visa/dölj grönt histogram
|
HISTOGRAM_TOOLTIP_G;Visa/dölj grönt histogram
|
||||||
HISTOGRAM_TOOLTIP_L;Visa/dölj CIELAB histogram för luminans
|
HISTOGRAM_TOOLTIP_L;Visa/dölj CIELAB histogram för luminans
|
||||||
HISTOGRAM_TOOLTIP_R;Visa/dölj rött histogram
|
HISTOGRAM_TOOLTIP_R;Visa/dölj rött histogram
|
||||||
HISTOGRAM_TOOLTIP_RAW;Visa/dölj råbildens histogram
|
|
||||||
HISTORY_CHANGED;Ändrad
|
HISTORY_CHANGED;Ändrad
|
||||||
HISTORY_CUSTOMCURVE;Egen kurva
|
HISTORY_CUSTOMCURVE;Egen kurva
|
||||||
HISTORY_FROMCLIPBOARD;Från klippbordet
|
HISTORY_FROMCLIPBOARD;Från klippbordet
|
||||||
|
@ -251,7 +251,6 @@ HISTOGRAM_TOOLTIP_G;Show/Hide green histogram.
|
|||||||
HISTOGRAM_TOOLTIP_L;Show/Hide CIELab luminance histogram.
|
HISTOGRAM_TOOLTIP_L;Show/Hide CIELab luminance histogram.
|
||||||
HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
|
HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram.
|
||||||
HISTOGRAM_TOOLTIP_R;Show/Hide red histogram.
|
HISTOGRAM_TOOLTIP_R;Show/Hide red histogram.
|
||||||
HISTOGRAM_TOOLTIP_RAW;Show/Hide raw histogram.
|
|
||||||
HISTOGRAM_TOOLTIP_SHOW_OPTIONS;Toggle visibility of the scope option buttons.
|
HISTOGRAM_TOOLTIP_SHOW_OPTIONS;Toggle visibility of the scope option buttons.
|
||||||
HISTOGRAM_TOOLTIP_TRACE_BRIGHTNESS;Adjust scope brightness.
|
HISTOGRAM_TOOLTIP_TRACE_BRIGHTNESS;Adjust scope brightness.
|
||||||
HISTOGRAM_TOOLTIP_TYPE_HISTOGRAM;Histogram
|
HISTOGRAM_TOOLTIP_TYPE_HISTOGRAM;Histogram
|
||||||
@ -265,7 +264,6 @@ HISTORY_CUSTOMCURVE;Custom curve
|
|||||||
HISTORY_FROMCLIPBOARD;From clipboard
|
HISTORY_FROMCLIPBOARD;From clipboard
|
||||||
HISTORY_LABEL;History
|
HISTORY_LABEL;History
|
||||||
HISTORY_MSG_1;Photo loaded
|
HISTORY_MSG_1;Photo loaded
|
||||||
HISTORY_MSG_2;PP3 loaded
|
|
||||||
HISTORY_MSG_3;PP3 changed
|
HISTORY_MSG_3;PP3 changed
|
||||||
HISTORY_MSG_4;History browsing
|
HISTORY_MSG_4;History browsing
|
||||||
HISTORY_MSG_5;Exposure - Lightness
|
HISTORY_MSG_5;Exposure - Lightness
|
||||||
@ -279,9 +277,6 @@ HISTORY_MSG_12;Exposure - Auto levels
|
|||||||
HISTORY_MSG_13;Exposure - Clip
|
HISTORY_MSG_13;Exposure - Clip
|
||||||
HISTORY_MSG_14;L*a*b* - Lightness
|
HISTORY_MSG_14;L*a*b* - Lightness
|
||||||
HISTORY_MSG_15;L*a*b* - Contrast
|
HISTORY_MSG_15;L*a*b* - Contrast
|
||||||
HISTORY_MSG_16;-
|
|
||||||
HISTORY_MSG_17;-
|
|
||||||
HISTORY_MSG_18;-
|
|
||||||
HISTORY_MSG_19;L*a*b* - L* curve
|
HISTORY_MSG_19;L*a*b* - L* curve
|
||||||
HISTORY_MSG_20;Sharpening
|
HISTORY_MSG_20;Sharpening
|
||||||
HISTORY_MSG_21;USM - Radius
|
HISTORY_MSG_21;USM - Radius
|
||||||
@ -307,10 +302,6 @@ HISTORY_MSG_40;WB - Tint
|
|||||||
HISTORY_MSG_41;Exposure - Tone curve 1 mode
|
HISTORY_MSG_41;Exposure - Tone curve 1 mode
|
||||||
HISTORY_MSG_42;Exposure - Tone curve 2
|
HISTORY_MSG_42;Exposure - Tone curve 2
|
||||||
HISTORY_MSG_43;Exposure - Tone curve 2 mode
|
HISTORY_MSG_43;Exposure - Tone curve 2 mode
|
||||||
HISTORY_MSG_44;Lum. denoising radius
|
|
||||||
HISTORY_MSG_45;Lum. denoising edge tolerance
|
|
||||||
HISTORY_MSG_46;Color denoising
|
|
||||||
HISTORY_MSG_47;Blend ICC highlights with matrix
|
|
||||||
HISTORY_MSG_48;DCP - Tone curve
|
HISTORY_MSG_48;DCP - Tone curve
|
||||||
HISTORY_MSG_49;DCP illuminant
|
HISTORY_MSG_49;DCP illuminant
|
||||||
HISTORY_MSG_50;Shadows/Highlights
|
HISTORY_MSG_50;Shadows/Highlights
|
||||||
@ -318,7 +309,6 @@ HISTORY_MSG_51;S/H - Highlights
|
|||||||
HISTORY_MSG_52;S/H - Shadows
|
HISTORY_MSG_52;S/H - Shadows
|
||||||
HISTORY_MSG_53;S/H - Highlights tonal width
|
HISTORY_MSG_53;S/H - Highlights tonal width
|
||||||
HISTORY_MSG_54;S/H - Shadows tonal width
|
HISTORY_MSG_54;S/H - Shadows tonal width
|
||||||
HISTORY_MSG_55;S/H - Local contrast
|
|
||||||
HISTORY_MSG_56;S/H - Radius
|
HISTORY_MSG_56;S/H - Radius
|
||||||
HISTORY_MSG_57;Coarse rotation
|
HISTORY_MSG_57;Coarse rotation
|
||||||
HISTORY_MSG_58;Horizontal flipping
|
HISTORY_MSG_58;Horizontal flipping
|
||||||
@ -330,7 +320,6 @@ HISTORY_MSG_63;Snapshot selected
|
|||||||
HISTORY_MSG_64;Crop
|
HISTORY_MSG_64;Crop
|
||||||
HISTORY_MSG_65;CA correction
|
HISTORY_MSG_65;CA correction
|
||||||
HISTORY_MSG_66;Exposure - Highlight reconstruction
|
HISTORY_MSG_66;Exposure - Highlight reconstruction
|
||||||
HISTORY_MSG_67;Exposure - HLR amount
|
|
||||||
HISTORY_MSG_68;Exposure - HLR method
|
HISTORY_MSG_68;Exposure - HLR method
|
||||||
HISTORY_MSG_69;Working color space
|
HISTORY_MSG_69;Working color space
|
||||||
HISTORY_MSG_70;Output color space
|
HISTORY_MSG_70;Output color space
|
||||||
@ -341,12 +330,10 @@ HISTORY_MSG_74;Resize - Scale
|
|||||||
HISTORY_MSG_75;Resize - Method
|
HISTORY_MSG_75;Resize - Method
|
||||||
HISTORY_MSG_76;Exif metadata
|
HISTORY_MSG_76;Exif metadata
|
||||||
HISTORY_MSG_77;IPTC metadata
|
HISTORY_MSG_77;IPTC metadata
|
||||||
HISTORY_MSG_78;-
|
|
||||||
HISTORY_MSG_79;Resize - Width
|
HISTORY_MSG_79;Resize - Width
|
||||||
HISTORY_MSG_80;Resize - Height
|
HISTORY_MSG_80;Resize - Height
|
||||||
HISTORY_MSG_81;Resize
|
HISTORY_MSG_81;Resize
|
||||||
HISTORY_MSG_82;Profile changed
|
HISTORY_MSG_82;Profile changed
|
||||||
HISTORY_MSG_83;S/H - Sharp mask
|
|
||||||
HISTORY_MSG_84;Perspective correction
|
HISTORY_MSG_84;Perspective correction
|
||||||
HISTORY_MSG_85;Lens Correction - LCP file
|
HISTORY_MSG_85;Lens Correction - LCP file
|
||||||
HISTORY_MSG_86;RGB Curves - Luminosity mode
|
HISTORY_MSG_86;RGB Curves - Luminosity mode
|
||||||
@ -393,12 +380,6 @@ HISTORY_MSG_127;Flat-Field - Auto-selection
|
|||||||
HISTORY_MSG_128;Flat-Field - Blur radius
|
HISTORY_MSG_128;Flat-Field - Blur radius
|
||||||
HISTORY_MSG_129;Flat-Field - Blur type
|
HISTORY_MSG_129;Flat-Field - Blur type
|
||||||
HISTORY_MSG_130;Auto distortion correction
|
HISTORY_MSG_130;Auto distortion correction
|
||||||
HISTORY_MSG_131;NR - Luma
|
|
||||||
HISTORY_MSG_132;NR - Chroma
|
|
||||||
HISTORY_MSG_133;Output gamma
|
|
||||||
HISTORY_MSG_134;Free gamma
|
|
||||||
HISTORY_MSG_135;Free gamma
|
|
||||||
HISTORY_MSG_136;Free gamma slope
|
|
||||||
HISTORY_MSG_137;Black level - Green 1
|
HISTORY_MSG_137;Black level - Green 1
|
||||||
HISTORY_MSG_138;Black level - Red
|
HISTORY_MSG_138;Black level - Red
|
||||||
HISTORY_MSG_139;Black level - Blue
|
HISTORY_MSG_139;Black level - Blue
|
||||||
@ -511,7 +492,6 @@ HISTORY_MSG_246;L*a*b* - CL curve
|
|||||||
HISTORY_MSG_247;L*a*b* - LH curve
|
HISTORY_MSG_247;L*a*b* - LH curve
|
||||||
HISTORY_MSG_248;L*a*b* - HH curve
|
HISTORY_MSG_248;L*a*b* - HH curve
|
||||||
HISTORY_MSG_249;CbDL - Threshold
|
HISTORY_MSG_249;CbDL - Threshold
|
||||||
HISTORY_MSG_250;NR - Enhanced
|
|
||||||
HISTORY_MSG_251;B&W - Algorithm
|
HISTORY_MSG_251;B&W - Algorithm
|
||||||
HISTORY_MSG_252;CbDL - Skin tar/prot
|
HISTORY_MSG_252;CbDL - Skin tar/prot
|
||||||
HISTORY_MSG_253;CbDL - Reduce artifacts
|
HISTORY_MSG_253;CbDL - Reduce artifacts
|
||||||
@ -535,8 +515,6 @@ HISTORY_MSG_270;CT - High - Green
|
|||||||
HISTORY_MSG_271;CT - High - Blue
|
HISTORY_MSG_271;CT - High - Blue
|
||||||
HISTORY_MSG_272;CT - Balance
|
HISTORY_MSG_272;CT - Balance
|
||||||
HISTORY_MSG_273;CT - Color Balance SMH
|
HISTORY_MSG_273;CT - Color Balance SMH
|
||||||
HISTORY_MSG_274;CT - Sat. Shadows
|
|
||||||
HISTORY_MSG_275;CT - Sat. Highlights
|
|
||||||
HISTORY_MSG_276;CT - Opacity
|
HISTORY_MSG_276;CT - Opacity
|
||||||
HISTORY_MSG_277;--unused--
|
HISTORY_MSG_277;--unused--
|
||||||
HISTORY_MSG_278;CT - Preserve luminance
|
HISTORY_MSG_278;CT - Preserve luminance
|
||||||
@ -561,7 +539,6 @@ HISTORY_MSG_296;NR - Luminance curve
|
|||||||
HISTORY_MSG_297;NR - Mode
|
HISTORY_MSG_297;NR - Mode
|
||||||
HISTORY_MSG_298;Dead pixel filter
|
HISTORY_MSG_298;Dead pixel filter
|
||||||
HISTORY_MSG_299;NR - Chrominance curve
|
HISTORY_MSG_299;NR - Chrominance curve
|
||||||
HISTORY_MSG_300;-
|
|
||||||
HISTORY_MSG_301;NR - Luma control
|
HISTORY_MSG_301;NR - Luma control
|
||||||
HISTORY_MSG_302;NR - Chroma method
|
HISTORY_MSG_302;NR - Chroma method
|
||||||
HISTORY_MSG_303;NR - Chroma method
|
HISTORY_MSG_303;NR - Chroma method
|
||||||
@ -670,7 +647,6 @@ HISTORY_MSG_405;W - Denoise - Level 4
|
|||||||
HISTORY_MSG_406;W - ES - Neighboring pixels
|
HISTORY_MSG_406;W - ES - Neighboring pixels
|
||||||
HISTORY_MSG_407;Retinex - Method
|
HISTORY_MSG_407;Retinex - Method
|
||||||
HISTORY_MSG_408;Retinex - Radius
|
HISTORY_MSG_408;Retinex - Radius
|
||||||
HISTORY_MSG_409;Retinex - Contrast
|
|
||||||
HISTORY_MSG_410;Retinex - Offset
|
HISTORY_MSG_410;Retinex - Offset
|
||||||
HISTORY_MSG_411;Retinex - Strength
|
HISTORY_MSG_411;Retinex - Strength
|
||||||
HISTORY_MSG_412;Retinex - Gaussian gradient
|
HISTORY_MSG_412;Retinex - Gaussian gradient
|
||||||
@ -686,7 +662,7 @@ HISTORY_MSG_421;Retinex - Gamma
|
|||||||
HISTORY_MSG_422;Retinex - Gamma
|
HISTORY_MSG_422;Retinex - Gamma
|
||||||
HISTORY_MSG_423;Retinex - Gamma slope
|
HISTORY_MSG_423;Retinex - Gamma slope
|
||||||
HISTORY_MSG_424;Retinex - HL threshold
|
HISTORY_MSG_424;Retinex - HL threshold
|
||||||
HISTORY_MSG_425;Retinex - Log base
|
HISTORY_MSG_425;--unused--
|
||||||
HISTORY_MSG_426;Retinex - Hue equalizer
|
HISTORY_MSG_426;Retinex - Hue equalizer
|
||||||
HISTORY_MSG_427;Output rendering intent
|
HISTORY_MSG_427;Output rendering intent
|
||||||
HISTORY_MSG_428;Monitor rendering intent
|
HISTORY_MSG_428;Monitor rendering intent
|
||||||
@ -707,34 +683,33 @@ HISTORY_MSG_442;Retinex - Scale
|
|||||||
HISTORY_MSG_443;Output black point compensation
|
HISTORY_MSG_443;Output black point compensation
|
||||||
HISTORY_MSG_444;WB - Temp bias
|
HISTORY_MSG_444;WB - Temp bias
|
||||||
HISTORY_MSG_445;Raw Sub-Image
|
HISTORY_MSG_445;Raw Sub-Image
|
||||||
HISTORY_MSG_446;EvPixelShiftMotion
|
HISTORY_MSG_446;--unused--
|
||||||
HISTORY_MSG_447;EvPixelShiftMotionCorrection
|
HISTORY_MSG_447;--unused--
|
||||||
HISTORY_MSG_448;EvPixelShiftStddevFactorGreen
|
HISTORY_MSG_448;--unused--
|
||||||
HISTORY_MSG_449;PS ISO adaption
|
HISTORY_MSG_449;PS ISO adaption
|
||||||
HISTORY_MSG_450;EvPixelShiftNreadIso
|
HISTORY_MSG_450;--unused--
|
||||||
HISTORY_MSG_451;EvPixelShiftPrnu
|
HISTORY_MSG_451;--unused--
|
||||||
HISTORY_MSG_452;PS Show motion
|
HISTORY_MSG_452;PS Show motion
|
||||||
HISTORY_MSG_453;PS Show mask only
|
HISTORY_MSG_453;PS Show mask only
|
||||||
HISTORY_MSG_454;EvPixelShiftAutomatic
|
HISTORY_MSG_454;--unused--
|
||||||
HISTORY_MSG_455;EvPixelShiftNonGreenHorizontal
|
HISTORY_MSG_455;--unused--
|
||||||
HISTORY_MSG_456;EvPixelShiftNonGreenVertical
|
HISTORY_MSG_456;--unused--
|
||||||
HISTORY_MSG_457;PS Check red/blue
|
HISTORY_MSG_457;PS Check red/blue
|
||||||
HISTORY_MSG_458;EvPixelShiftStddevFactorRed
|
HISTORY_MSG_458;--unused--
|
||||||
HISTORY_MSG_459;EvPixelShiftStddevFactorBlue
|
HISTORY_MSG_459;--unused--
|
||||||
HISTORY_MSG_460;EvPixelShiftGreenAmaze
|
HISTORY_MSG_460;--unused--
|
||||||
HISTORY_MSG_461;EvPixelShiftNonGreenAmaze
|
HISTORY_MSG_461;--unused--
|
||||||
HISTORY_MSG_462;PS Check green
|
HISTORY_MSG_462;PS Check green
|
||||||
HISTORY_MSG_463;EvPixelShiftRedBlueWeight
|
HISTORY_MSG_463;--unused--
|
||||||
HISTORY_MSG_464;PS Blur motion mask
|
HISTORY_MSG_464;PS Blur motion mask
|
||||||
HISTORY_MSG_465;PS Blur radius
|
HISTORY_MSG_465;PS Blur radius
|
||||||
HISTORY_MSG_466;EvPixelShiftSum
|
HISTORY_MSG_466;--unused--
|
||||||
HISTORY_MSG_467;EvPixelShiftExp0
|
HISTORY_MSG_467;--unused--
|
||||||
HISTORY_MSG_468;PS Fill holes
|
HISTORY_MSG_468;PS Fill holes
|
||||||
HISTORY_MSG_469;PS Median
|
HISTORY_MSG_469;PS Median
|
||||||
HISTORY_MSG_470;EvPixelShiftMedian3
|
HISTORY_MSG_470;--unused--
|
||||||
HISTORY_MSG_471;PS Motion correction
|
HISTORY_MSG_471;PS Motion correction
|
||||||
HISTORY_MSG_472;PS Smooth transitions
|
HISTORY_MSG_472;PS Smooth transitions
|
||||||
HISTORY_MSG_473;PS Use lmmse
|
|
||||||
HISTORY_MSG_474;PS Equalize
|
HISTORY_MSG_474;PS Equalize
|
||||||
HISTORY_MSG_475;PS Equalize channel
|
HISTORY_MSG_475;PS Equalize channel
|
||||||
HISTORY_MSG_476;CAM02/16 - Temp out
|
HISTORY_MSG_476;CAM02/16 - Temp out
|
||||||
@ -840,7 +815,7 @@ HISTORY_MSG_576;Local - cbdl mult
|
|||||||
HISTORY_MSG_577;Local - cbdl chroma
|
HISTORY_MSG_577;Local - cbdl chroma
|
||||||
HISTORY_MSG_578;Local - cbdl threshold
|
HISTORY_MSG_578;Local - cbdl threshold
|
||||||
HISTORY_MSG_579;Local - cbdl scope
|
HISTORY_MSG_579;Local - cbdl scope
|
||||||
HISTORY_MSG_580;Local - Denoise
|
HISTORY_MSG_580;--unused--
|
||||||
HISTORY_MSG_581;Local - deNoise lum f 1
|
HISTORY_MSG_581;Local - deNoise lum f 1
|
||||||
HISTORY_MSG_582;Local - deNoise lum c
|
HISTORY_MSG_582;Local - deNoise lum c
|
||||||
HISTORY_MSG_583;Local - deNoise lum detail
|
HISTORY_MSG_583;Local - deNoise lum detail
|
||||||
@ -923,7 +898,7 @@ HISTORY_MSG_660;Local - cbdl clarity
|
|||||||
HISTORY_MSG_661;Local - cbdl contrast residual
|
HISTORY_MSG_661;Local - cbdl contrast residual
|
||||||
HISTORY_MSG_662;Local - deNoise lum f 0
|
HISTORY_MSG_662;Local - deNoise lum f 0
|
||||||
HISTORY_MSG_663;Local - deNoise lum f 2
|
HISTORY_MSG_663;Local - deNoise lum f 2
|
||||||
HISTORY_MSG_664;Local - cbdl Blur
|
HISTORY_MSG_664;--unused--
|
||||||
HISTORY_MSG_665;Local - cbdl mask Blend
|
HISTORY_MSG_665;Local - cbdl mask Blend
|
||||||
HISTORY_MSG_666;Local - cbdl mask radius
|
HISTORY_MSG_666;Local - cbdl mask radius
|
||||||
HISTORY_MSG_667;Local - cbdl mask chroma
|
HISTORY_MSG_667;Local - cbdl mask chroma
|
||||||
@ -1171,7 +1146,7 @@ HISTORY_MSG_920;Local - Wavelet sigma LC
|
|||||||
HISTORY_MSG_921;Local - Wavelet Graduated sigma LC2
|
HISTORY_MSG_921;Local - Wavelet Graduated sigma LC2
|
||||||
HISTORY_MSG_922;Local - changes In Black and White
|
HISTORY_MSG_922;Local - changes In Black and White
|
||||||
HISTORY_MSG_923;Local - Tool complexity mode
|
HISTORY_MSG_923;Local - Tool complexity mode
|
||||||
HISTORY_MSG_924;Local - Tool complexity mode
|
HISTORY_MSG_924;--unused--
|
||||||
HISTORY_MSG_925;Local - Scope color tools
|
HISTORY_MSG_925;Local - Scope color tools
|
||||||
HISTORY_MSG_926;Local - Show mask type
|
HISTORY_MSG_926;Local - Show mask type
|
||||||
HISTORY_MSG_927;Local - Shadow
|
HISTORY_MSG_927;Local - Shadow
|
||||||
@ -1348,7 +1323,6 @@ HISTORY_MSG_1095;Local - Jz highligths thr
|
|||||||
HISTORY_MSG_1096;Local - Jz shadows
|
HISTORY_MSG_1096;Local - Jz shadows
|
||||||
HISTORY_MSG_1097;Local - Jz shadows thr
|
HISTORY_MSG_1097;Local - Jz shadows thr
|
||||||
HISTORY_MSG_1098;Local - Jz radius SH
|
HISTORY_MSG_1098;Local - Jz radius SH
|
||||||
//HISTORY_MSG_1099;Local - Hz(Hz) Curve
|
|
||||||
HISTORY_MSG_1099;Local - Cz(Hz) Curve
|
HISTORY_MSG_1099;Local - Cz(Hz) Curve
|
||||||
HISTORY_MSG_1100;Local - Jz reference 100
|
HISTORY_MSG_1100;Local - Jz reference 100
|
||||||
HISTORY_MSG_1101;Local - Jz PQ remap
|
HISTORY_MSG_1101;Local - Jz PQ remap
|
||||||
@ -1519,7 +1493,6 @@ HISTORY_MSG_WAVCHROMFI;Chroma fine
|
|||||||
HISTORY_MSG_WAVCHR;Blur levels - blur chroma
|
HISTORY_MSG_WAVCHR;Blur levels - blur chroma
|
||||||
HISTORY_MSG_WAVCLARI;Clarity
|
HISTORY_MSG_WAVCLARI;Clarity
|
||||||
HISTORY_MSG_WAVDENLH;Level 5
|
HISTORY_MSG_WAVDENLH;Level 5
|
||||||
HISTORY_MSG_WAVDENMET;Local equalizer
|
|
||||||
HISTORY_MSG_WAVDENOISE;Local contrast
|
HISTORY_MSG_WAVDENOISE;Local contrast
|
||||||
HISTORY_MSG_WAVDENOISEH;High levels Local contrast
|
HISTORY_MSG_WAVDENOISEH;High levels Local contrast
|
||||||
HISTORY_MSG_WAVDETEND;Details soft
|
HISTORY_MSG_WAVDETEND;Details soft
|
||||||
@ -1780,7 +1753,6 @@ PARTIALPASTE_LENSPROFILE;Profiled lens correction
|
|||||||
PARTIALPASTE_LOCALCONTRAST;Local contrast
|
PARTIALPASTE_LOCALCONTRAST;Local contrast
|
||||||
PARTIALPASTE_LOCALLAB;Local Adjustments
|
PARTIALPASTE_LOCALLAB;Local Adjustments
|
||||||
PARTIALPASTE_LOCALLABGROUP;Local Adjustments Settings
|
PARTIALPASTE_LOCALLABGROUP;Local Adjustments Settings
|
||||||
PARTIALPASTE_LOCGROUP;Local
|
|
||||||
PARTIALPASTE_METADATA;Metadata mode
|
PARTIALPASTE_METADATA;Metadata mode
|
||||||
PARTIALPASTE_METAGROUP;Metadata settings
|
PARTIALPASTE_METAGROUP;Metadata settings
|
||||||
PARTIALPASTE_PCVIGNETTE;Vignette filter
|
PARTIALPASTE_PCVIGNETTE;Vignette filter
|
||||||
@ -2535,13 +2507,11 @@ 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_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;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_APPLYLOOKTABLE_TOOLTIP;Employ the embedded DCP look table. The setting is only available if the selected DCP has one.
|
||||||
TP_ICM_BLUFRAME;Blue Primaries
|
|
||||||
TP_ICM_BPC;Black Point Compensation
|
TP_ICM_BPC;Black Point Compensation
|
||||||
TP_ICM_DCPILLUMINANT;Illuminant
|
TP_ICM_DCPILLUMINANT;Illuminant
|
||||||
TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolated
|
TP_ICM_DCPILLUMINANT_INTERPOLATED;Interpolated
|
||||||
TP_ICM_DCPILLUMINANT_TOOLTIP;Select which embedded DCP illuminant to employ. Default is "interpolated" which is a mix between the two based on white balance. The setting is only available if a dual-illuminant DCP with interpolation support is selected.
|
TP_ICM_DCPILLUMINANT_TOOLTIP;Select which embedded DCP illuminant to employ. Default is "interpolated" which is a mix between the two based on white balance. The setting is only available if a dual-illuminant DCP with interpolation support is selected.
|
||||||
TP_ICM_FBW;Black-and-White
|
TP_ICM_FBW;Black-and-White
|
||||||
TP_ICM_GREFRAME;Green Primaries
|
|
||||||
TP_ICM_ILLUMPRIM_TOOLTIP;Choose the illuminant closest to the shooting conditions.\nChanges can only be made when the ‘Destination primaries’ selection is set to ‘Custom (sliders)’.
|
TP_ICM_ILLUMPRIM_TOOLTIP;Choose the illuminant closest to the shooting conditions.\nChanges can only be made when the ‘Destination primaries’ selection is set to ‘Custom (sliders)’.
|
||||||
TP_ICM_INPUTCAMERA;Camera standard
|
TP_ICM_INPUTCAMERA;Camera standard
|
||||||
TP_ICM_INPUTCAMERAICC;Auto-matched camera profile
|
TP_ICM_INPUTCAMERAICC;Auto-matched camera profile
|
||||||
@ -2679,7 +2649,6 @@ TP_LOCALCONTRAST_RADIUS;Radius
|
|||||||
TP_LOCALLAB_ACTIV;Luminance only
|
TP_LOCALLAB_ACTIV;Luminance only
|
||||||
TP_LOCALLAB_ACTIVSPOT;Enable Spot
|
TP_LOCALLAB_ACTIVSPOT;Enable Spot
|
||||||
TP_LOCALLAB_ADJ;Equalizer Color
|
TP_LOCALLAB_ADJ;Equalizer Color
|
||||||
TP_LOCALLAB_ALL;All rubrics
|
|
||||||
TP_LOCALLAB_AMOUNT;Amount
|
TP_LOCALLAB_AMOUNT;Amount
|
||||||
TP_LOCALLAB_ARTIF;Shape detection
|
TP_LOCALLAB_ARTIF;Shape detection
|
||||||
TP_LOCALLAB_ARTIF_TOOLTIP;ΔE scope threshold increases the range of deltaE scope. High values are for very wide gamut images.\nIncreasing deltaE decay can improve shape detection, but can also reduce the scope.
|
TP_LOCALLAB_ARTIF_TOOLTIP;ΔE scope threshold increases the range of deltaE scope. High values are for very wide gamut images.\nIncreasing deltaE decay can improve shape detection, but can also reduce the scope.
|
||||||
@ -2712,18 +2681,15 @@ TP_LOCALLAB_BLMED;Median
|
|||||||
TP_LOCALLAB_BLMETHOD_TOOLTIP;Normal: direct blur and noise with all settings.\nInverse: blur and noise with all settings. Warning, some settings may give curious results.
|
TP_LOCALLAB_BLMETHOD_TOOLTIP;Normal: direct blur and noise with all settings.\nInverse: blur and noise with all settings. Warning, some settings may give curious results.
|
||||||
TP_LOCALLAB_BLNOI_EXP;Blur & Noise
|
TP_LOCALLAB_BLNOI_EXP;Blur & Noise
|
||||||
TP_LOCALLAB_BLNORM;Normal
|
TP_LOCALLAB_BLNORM;Normal
|
||||||
TP_LOCALLAB_BLSYM;Symmetric
|
|
||||||
TP_LOCALLAB_BLUFR;Blur/Grain & Denoise
|
TP_LOCALLAB_BLUFR;Blur/Grain & Denoise
|
||||||
TP_LOCALLAB_BLUMETHOD_TOOLTIP;To blur the background and isolate the foreground:\n-blur the background by completely covering the image with an an RT-spot (high values for scope and transition and ‘Normal’ or ‘Inverse’ in checkbox).\n-Isolate the foreground by using one or more ‘Excluding’ RT-spot(s) and increase the scope.\n\nThis module (including the ‘median’ and ‘Guided filter’) can be used in addition to the main-menu noise reduction
|
TP_LOCALLAB_BLUMETHOD_TOOLTIP;To blur the background and isolate the foreground:\n-blur the background by completely covering the image with an an RT-spot (high values for scope and transition and ‘Normal’ or ‘Inverse’ in checkbox).\n-Isolate the foreground by using one or more ‘Excluding’ RT-spot(s) and increase the scope.\n\nThis module (including the ‘median’ and ‘Guided filter’) can be used in addition to the main-menu noise reduction
|
||||||
TP_LOCALLAB_BLUR;Gaussian Blur - Noise - Grain
|
TP_LOCALLAB_BLUR;Gaussian Blur - Noise - Grain
|
||||||
TP_LOCALLAB_BLURCBDL;Blur levels 0-1-2-3-4
|
|
||||||
TP_LOCALLAB_BLURCOL;Radius
|
TP_LOCALLAB_BLURCOL;Radius
|
||||||
TP_LOCALLAB_BLURCOLDE_TOOLTIP;The image used to calculate dE is blurred slightly to avoid taking isolated pixels into account.
|
TP_LOCALLAB_BLURCOLDE_TOOLTIP;The image used to calculate dE is blurred slightly to avoid taking isolated pixels into account.
|
||||||
TP_LOCALLAB_BLURDE;Blur shape detection
|
TP_LOCALLAB_BLURDE;Blur shape detection
|
||||||
TP_LOCALLAB_BLURLC;Luminance only
|
TP_LOCALLAB_BLURLC;Luminance only
|
||||||
TP_LOCALLAB_BLURLEVELFRA;Blur levels
|
TP_LOCALLAB_BLURLEVELFRA;Blur levels
|
||||||
TP_LOCALLAB_BLURMASK_TOOLTIP;Uses a large-radius blur to create a mask that allows you to vary the contrast of the image and/or darken/lighten parts of it.
|
TP_LOCALLAB_BLURMASK_TOOLTIP;Uses a large-radius blur to create a mask that allows you to vary the contrast of the image and/or darken/lighten parts of it.
|
||||||
TP_LOCALLAB_BLURRESIDFRA;Blur Residual
|
|
||||||
TP_LOCALLAB_BLURRMASK_TOOLTIP;Allows you to vary the "radius" of the Gaussian blur (0 to 1000)
|
TP_LOCALLAB_BLURRMASK_TOOLTIP;Allows you to vary the "radius" of the Gaussian blur (0 to 1000)
|
||||||
TP_LOCALLAB_BLUR_TOOLNAME;Blur/Grain & Denoise
|
TP_LOCALLAB_BLUR_TOOLNAME;Blur/Grain & Denoise
|
||||||
TP_LOCALLAB_BLWH;All changes forced in Black-and-White
|
TP_LOCALLAB_BLWH;All changes forced in Black-and-White
|
||||||
@ -2800,16 +2766,10 @@ TP_LOCALLAB_COLOR_TOOLNAME;Color & Light
|
|||||||
TP_LOCALLAB_COL_NAME;Name
|
TP_LOCALLAB_COL_NAME;Name
|
||||||
TP_LOCALLAB_COL_VIS;Status
|
TP_LOCALLAB_COL_VIS;Status
|
||||||
TP_LOCALLAB_COMPFRA;Directional contrast
|
TP_LOCALLAB_COMPFRA;Directional contrast
|
||||||
TP_LOCALLAB_COMPFRAME_TOOLTIP;Allows you to create special effects. You can reduce artifacts with 'Clarity and Sharp mask - Blend and Soften Images’.\nUses a lot of resources.
|
|
||||||
TP_LOCALLAB_COMPLEX_METHOD;Software Complexity
|
|
||||||
TP_LOCALLAB_COMPLEX_TOOLTIP; Allow user to select Local adjustments complexity.
|
|
||||||
TP_LOCALLAB_COMPREFRA;Wavelet level tone mapping
|
TP_LOCALLAB_COMPREFRA;Wavelet level tone mapping
|
||||||
TP_LOCALLAB_COMPRESS_TOOLTIP;If necessary, use the module 'Clarity and Sharp mask and Blend and Soften Images' by adjusting 'Soft radius' to reduce artifacts.
|
|
||||||
TP_LOCALLAB_CONTCOL;Contrast threshold
|
TP_LOCALLAB_CONTCOL;Contrast threshold
|
||||||
TP_LOCALLAB_CONTFRA;Contrast by level
|
TP_LOCALLAB_CONTFRA;Contrast by level
|
||||||
TP_LOCALLAB_CONTL;Contrast (J)
|
|
||||||
TP_LOCALLAB_CONTRAST;Contrast
|
TP_LOCALLAB_CONTRAST;Contrast
|
||||||
TP_LOCALLAB_CONTRASTCURVMASK1_TOOLTIP;Allows you to freely modify the contrast of the mask (gamma and slope), instead of using a continuous and progressive curve. However it can create artifacts that have to be dealt with using the ‘Smooth radius’ or ‘Laplacian threshold sliders’.
|
|
||||||
TP_LOCALLAB_CONTRASTCURVMASK_TOOLTIP;Allows you to freely change the contrast of the mask.\n Has a similar function to the Gamma and Slope sliders.\n It allows you to target certain parts of the image (usually the lightest parts of the mask by using the curve to exclude the darker parts).May create artifacts.
|
TP_LOCALLAB_CONTRASTCURVMASK_TOOLTIP;Allows you to freely change the contrast of the mask.\n Has a similar function to the Gamma and Slope sliders.\n It allows you to target certain parts of the image (usually the lightest parts of the mask by using the curve to exclude the darker parts).May create artifacts.
|
||||||
TP_LOCALLAB_CONTRESID;Contrast
|
TP_LOCALLAB_CONTRESID;Contrast
|
||||||
TP_LOCALLAB_CONTTHMASK_TOOLTIP;Allows you to determine which parts of the image will be impacted based on the texture.
|
TP_LOCALLAB_CONTTHMASK_TOOLTIP;Allows you to determine which parts of the image will be impacted based on the texture.
|
||||||
@ -2825,10 +2785,6 @@ TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP;To activate the curves, set the ‘Curve type
|
|||||||
TP_LOCALLAB_CURVEEDITOR_TONES_LABEL;Tone curve
|
TP_LOCALLAB_CURVEEDITOR_TONES_LABEL;Tone curve
|
||||||
TP_LOCALLAB_CURVEEDITOR_TONES_TOOLTIP;L=f(L), can be used with L(H) in Color and Light
|
TP_LOCALLAB_CURVEEDITOR_TONES_TOOLTIP;L=f(L), can be used with L(H) in Color and Light
|
||||||
TP_LOCALLAB_CURVEMETHOD_TOOLTIP;'Normal', the curve L=f(L) uses the same algorithm as the lightness slider.
|
TP_LOCALLAB_CURVEMETHOD_TOOLTIP;'Normal', the curve L=f(L) uses the same algorithm as the lightness slider.
|
||||||
TP_LOCALLAB_CURVENCONTRAST;Super+Contrast threshold (experimental)
|
|
||||||
TP_LOCALLAB_CURVENH;Super
|
|
||||||
TP_LOCALLAB_CURVENHSU;Combined HueChroma (experimental)
|
|
||||||
TP_LOCALLAB_CURVENSOB2;Combined HueChroma + Contrast threshold (experimental)
|
|
||||||
TP_LOCALLAB_CURVNONE;Disable curves
|
TP_LOCALLAB_CURVNONE;Disable curves
|
||||||
TP_LOCALLAB_CURVES_CIE;Tone curve
|
TP_LOCALLAB_CURVES_CIE;Tone curve
|
||||||
TP_LOCALLAB_DARKRETI;Darkness
|
TP_LOCALLAB_DARKRETI;Darkness
|
||||||
@ -2850,7 +2806,6 @@ TP_LOCALLAB_DENOILUMDETAIL_TOOLTIP;Allows you to recover luminance detail by pro
|
|||||||
TP_LOCALLAB_DENOIMASK;Denoise chroma mask
|
TP_LOCALLAB_DENOIMASK;Denoise chroma mask
|
||||||
TP_LOCALLAB_DENOIMASK_TOOLTIP;For all tools, allows you to control the chromatic noise level of the mask.\nUseful for better control of chrominance and to avoid artifacts when using the LC(h) curve.
|
TP_LOCALLAB_DENOIMASK_TOOLTIP;For all tools, allows you to control the chromatic noise level of the mask.\nUseful for better control of chrominance and to avoid artifacts when using the LC(h) curve.
|
||||||
TP_LOCALLAB_DENOIQUA_TOOLTIP;Conservative mode preserves low frequency detail. Aggressive mode removes low frequency detail.\nConservative and Aggressive modes use wavelets and DCT and can be used in conjunction with ‘Non-local Means – Luminance’.
|
TP_LOCALLAB_DENOIQUA_TOOLTIP;Conservative mode preserves low frequency detail. Aggressive mode removes low frequency detail.\nConservative and Aggressive modes use wavelets and DCT and can be used in conjunction with ‘Non-local Means – Luminance’.
|
||||||
TP_LOCALLAB_DENOIS;Denoise
|
|
||||||
TP_LOCALLAB_DENOITHR_TOOLTIP;Adjusts edge detection to help reduce noise in uniform, low-contrast areas.
|
TP_LOCALLAB_DENOITHR_TOOLTIP;Adjusts edge detection to help reduce noise in uniform, low-contrast areas.
|
||||||
TP_LOCALLAB_DENOI_EXP;Denoise
|
TP_LOCALLAB_DENOI_EXP;Denoise
|
||||||
TP_LOCALLAB_DENOI_TOOLTIP;This module can be used for noise reduction either on its own (at the end of the processing pipeline) or in addition to the Noise Reduction module in the Detail tab (which works at the beginning of the pipeline).\n Scope allows you to differentiate the action based on color (deltaE).\nMinimum RT-spot size: 128x128
|
TP_LOCALLAB_DENOI_TOOLTIP;This module can be used for noise reduction either on its own (at the end of the processing pipeline) or in addition to the Noise Reduction module in the Detail tab (which works at the beginning of the pipeline).\n Scope allows you to differentiate the action based on color (deltaE).\nMinimum RT-spot size: 128x128
|
||||||
@ -2910,23 +2865,19 @@ TP_LOCALLAB_EXPOSURE_TOOLTIP;Modify exposure in L*a*b space using Laplacian PDE
|
|||||||
TP_LOCALLAB_EXPRETITOOLS;Advanced Retinex Tools
|
TP_LOCALLAB_EXPRETITOOLS;Advanced Retinex Tools
|
||||||
TP_LOCALLAB_EXPSHARP_TOOLTIP;RT-Spot minimum 39*39.\nUse low transition values and high ‘Transition decay’ and ‘Scope’ values to simulate smaller RT-Spots.
|
TP_LOCALLAB_EXPSHARP_TOOLTIP;RT-Spot minimum 39*39.\nUse low transition values and high ‘Transition decay’ and ‘Scope’ values to simulate smaller RT-Spots.
|
||||||
TP_LOCALLAB_EXPTOOL;Exposure Tools
|
TP_LOCALLAB_EXPTOOL;Exposure Tools
|
||||||
TP_LOCALLAB_EXPTRC;Tone Response Curve - TRC
|
|
||||||
TP_LOCALLAB_EXP_TOOLNAME;Dynamic Range & Exposure
|
TP_LOCALLAB_EXP_TOOLNAME;Dynamic Range & Exposure
|
||||||
TP_LOCALLAB_FATAMOUNT;Amount
|
TP_LOCALLAB_FATAMOUNT;Amount
|
||||||
TP_LOCALLAB_FATANCHOR;Anchor
|
TP_LOCALLAB_FATANCHOR;Anchor
|
||||||
TP_LOCALLAB_FATANCHORA;Offset
|
|
||||||
TP_LOCALLAB_FATDETAIL;Detail
|
TP_LOCALLAB_FATDETAIL;Detail
|
||||||
TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
|
TP_LOCALLAB_FATFRA;Dynamic Range Compression ƒ
|
||||||
TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal – uses the Fattal Tone-mapping algorithm.
|
TP_LOCALLAB_FATFRAME_TOOLTIP;PDE Fattal – uses the Fattal Tone-mapping algorithm.
|
||||||
TP_LOCALLAB_FATLEVEL;Sigma
|
TP_LOCALLAB_FATLEVEL;Sigma
|
||||||
TP_LOCALLAB_FATRES;Amount Residual Image
|
|
||||||
TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
|
TP_LOCALLAB_FATSHFRA;Dynamic Range Compression Mask ƒ
|
||||||
TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn’t been activated.
|
TP_LOCALLAB_FEATH_TOOLTIP;Gradient width as a percentage of the Spot diagonal\nUsed by all graduated filters in all tools.\nNo action if a graduated filter hasn’t been activated.
|
||||||
TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
|
TP_LOCALLAB_FEATVALUE;Feather gradient (Grad. Filters)
|
||||||
TP_LOCALLAB_FFTCOL_MASK;FFTW ƒ
|
TP_LOCALLAB_FFTCOL_MASK;FFTW ƒ
|
||||||
TP_LOCALLAB_FFTMASK_TOOLTIP;Use a Fourier transform for better quality (increased processing time and memory requirements)
|
TP_LOCALLAB_FFTMASK_TOOLTIP;Use a Fourier transform for better quality (increased processing time and memory requirements)
|
||||||
TP_LOCALLAB_FFTW;ƒ - Use Fast Fourier Transform
|
TP_LOCALLAB_FFTW;ƒ - Use Fast Fourier Transform
|
||||||
TP_LOCALLAB_FFTW2;ƒ - Use Fast Fourier Transform (TIF, JPG,..)
|
|
||||||
TP_LOCALLAB_FFTWBLUR;ƒ - Always Use Fast Fourier Transform
|
TP_LOCALLAB_FFTWBLUR;ƒ - Always Use Fast Fourier Transform
|
||||||
TP_LOCALLAB_FULLIMAGE;Black-Ev and White-Ev for whole image
|
TP_LOCALLAB_FULLIMAGE;Black-Ev and White-Ev for whole image
|
||||||
TP_LOCALLAB_FULLIMAGELOG_TOOLTIP;Calculates the Ev levels for the whole image.
|
TP_LOCALLAB_FULLIMAGELOG_TOOLTIP;Calculates the Ev levels for the whole image.
|
||||||
@ -2952,7 +2903,6 @@ TP_LOCALLAB_GRADSTRHUE;Hue gradient strength
|
|||||||
TP_LOCALLAB_GRADSTRHUE2;Hue gradient strength
|
TP_LOCALLAB_GRADSTRHUE2;Hue gradient strength
|
||||||
TP_LOCALLAB_GRADSTRHUE_TOOLTIP;Adjusts hue gradient strength
|
TP_LOCALLAB_GRADSTRHUE_TOOLTIP;Adjusts hue gradient strength
|
||||||
TP_LOCALLAB_GRADSTRLUM;Luma gradient strength
|
TP_LOCALLAB_GRADSTRLUM;Luma gradient strength
|
||||||
TP_LOCALLAB_GRADSTR_TOOLTIP;Filter strength in stops
|
|
||||||
TP_LOCALLAB_GRAINFRA;Film Grain 1:1
|
TP_LOCALLAB_GRAINFRA;Film Grain 1:1
|
||||||
TP_LOCALLAB_GRAINFRA2;Coarseness
|
TP_LOCALLAB_GRAINFRA2;Coarseness
|
||||||
TP_LOCALLAB_GRAIN_TOOLTIP;Adds film-like grain to the image
|
TP_LOCALLAB_GRAIN_TOOLTIP;Adds film-like grain to the image
|
||||||
@ -2970,7 +2920,6 @@ TP_LOCALLAB_GUIDSTRBL_TOOLTIP;Intensity of the guided filter
|
|||||||
TP_LOCALLAB_HHMASK_TOOLTIP;Fine hue adjustments for example for the skin.
|
TP_LOCALLAB_HHMASK_TOOLTIP;Fine hue adjustments for example for the skin.
|
||||||
TP_LOCALLAB_HIGHMASKCOL;Highlights
|
TP_LOCALLAB_HIGHMASKCOL;Highlights
|
||||||
TP_LOCALLAB_HLH;H
|
TP_LOCALLAB_HLH;H
|
||||||
TP_LOCALLAB_HLHZ;Hz
|
|
||||||
TP_LOCALLAB_HUECIE;Hue
|
TP_LOCALLAB_HUECIE;Hue
|
||||||
TP_LOCALLAB_IND;Independent (mouse)
|
TP_LOCALLAB_IND;Independent (mouse)
|
||||||
TP_LOCALLAB_INDSL;Independent (mouse + sliders)
|
TP_LOCALLAB_INDSL;Independent (mouse + sliders)
|
||||||
@ -3055,6 +3004,7 @@ TP_LOCALLAB_LOG1FRA;CAM16 Image Adjustments
|
|||||||
TP_LOCALLAB_LOG2FRA;Viewing Conditions
|
TP_LOCALLAB_LOG2FRA;Viewing Conditions
|
||||||
TP_LOCALLAB_LOGAUTO;Automatic
|
TP_LOCALLAB_LOGAUTO;Automatic
|
||||||
TP_LOCALLAB_LOGAUTOGRAY_TOOLTIP;Automatically calculates the 'Mean luminance' for the scene conditions when the ‘Automatic’ button in Relative Exposure Levels is pressed.
|
TP_LOCALLAB_LOGAUTOGRAY_TOOLTIP;Automatically calculates the 'Mean luminance' for the scene conditions when the ‘Automatic’ button in Relative Exposure Levels is pressed.
|
||||||
|
TP_LOCALLAB_LOGAUTOGRAYJZ_TOOLTIP;Automatically calculates the 'Mean luminance' for the scene conditions.
|
||||||
TP_LOCALLAB_LOGAUTO_TOOLTIP;Pressing this button will calculate the dynamic range and 'Mean luminance' for the scene conditions if the "Auto mean luminance (Yb%)” is checked).\nAlso calculates the absolute luminance at the time of shooting.\nPress the button again to adjust the automatically calculated values.
|
TP_LOCALLAB_LOGAUTO_TOOLTIP;Pressing this button will calculate the dynamic range and 'Mean luminance' for the scene conditions if the "Auto mean luminance (Yb%)” is checked).\nAlso calculates the absolute luminance at the time of shooting.\nPress the button again to adjust the automatically calculated values.
|
||||||
TP_LOCALLAB_LOGBASE_TOOLTIP;Default = 2.\nValues less than 2 reduce the action of the algorithm making the shadows darker and the highlights brighter.\nWith values greater than 2, the shadows are grayer and the highlights become more washed out.
|
TP_LOCALLAB_LOGBASE_TOOLTIP;Default = 2.\nValues less than 2 reduce the action of the algorithm making the shadows darker and the highlights brighter.\nWith values greater than 2, the shadows are grayer and the highlights become more washed out.
|
||||||
TP_LOCALLAB_LOGBLACKWHEV_TOOLTIP;Estimated values of dynamic range i.e. Black Ev and White Ev
|
TP_LOCALLAB_LOGBLACKWHEV_TOOLTIP;Estimated values of dynamic range i.e. Black Ev and White Ev
|
||||||
@ -3085,9 +3035,7 @@ TP_LOCALLAB_LOGREPART;Overall strength
|
|||||||
TP_LOCALLAB_LOGREPART_TOOLTIP;Allows you to adjust the relative strength of the log-encoded image with respect to the original image.\nDoes not affect the Ciecam component.
|
TP_LOCALLAB_LOGREPART_TOOLTIP;Allows you to adjust the relative strength of the log-encoded image with respect to the original image.\nDoes not affect the Ciecam component.
|
||||||
TP_LOCALLAB_LOGSATURL_TOOLTIP;Saturation (s) in CIECAM16 corresponds to the color of a stimulus in relation to its own brightness.\nActs mainly on medium tones and on the highlights.
|
TP_LOCALLAB_LOGSATURL_TOOLTIP;Saturation (s) in CIECAM16 corresponds to the color of a stimulus in relation to its own brightness.\nActs mainly on medium tones and on the highlights.
|
||||||
TP_LOCALLAB_LOGSCENE_TOOLTIP;Corresponds to the shooting conditions.
|
TP_LOCALLAB_LOGSCENE_TOOLTIP;Corresponds to the shooting conditions.
|
||||||
TP_LOCALLAB_LOGSRCGREY_TOOLTIP;Estimated gray point value of the image.
|
|
||||||
TP_LOCALLAB_LOGSURSOUR_TOOLTIP;Changes tones and colors to take into account the Scene conditions.\n\n<b>Average</b>: Average light conditions (standard). The image will not change.\n\n<b>Dim</b>: Dim conditions. The image will become slightly brighter.\n\n<b>Dark</b>: Dark conditions. The image will become more bright.
|
TP_LOCALLAB_LOGSURSOUR_TOOLTIP;Changes tones and colors to take into account the Scene conditions.\n\n<b>Average</b>: Average light conditions (standard). The image will not change.\n\n<b>Dim</b>: Dim conditions. The image will become slightly brighter.\n\n<b>Dark</b>: Dark conditions. The image will become more bright.
|
||||||
TP_LOCALLAB_LOGTARGGREY_TOOLTIP;You can adjust this value to suit.
|
|
||||||
TP_LOCALLAB_LOGVIEWING_TOOLTIP;Corresponds to the medium on which the final image will be viewed (monitor, TV, projector, printer, etc.), as well as the surrounding conditions..
|
TP_LOCALLAB_LOGVIEWING_TOOLTIP;Corresponds to the medium on which the final image will be viewed (monitor, TV, projector, printer, etc.), as well as the surrounding conditions..
|
||||||
TP_LOCALLAB_LOG_TOOLNAME;Log Encoding
|
TP_LOCALLAB_LOG_TOOLNAME;Log Encoding
|
||||||
TP_LOCALLAB_LUM;LL - CC
|
TP_LOCALLAB_LUM;LL - CC
|
||||||
@ -3096,7 +3044,6 @@ TP_LOCALLAB_LUMASK;Background color/luma mask
|
|||||||
TP_LOCALLAB_LUMASK_TOOLTIP;Adjusts the shade of gray or color of the mask background in Show Mask (Mask and modifications)
|
TP_LOCALLAB_LUMASK_TOOLTIP;Adjusts the shade of gray or color of the mask background in Show Mask (Mask and modifications)
|
||||||
TP_LOCALLAB_LUMAWHITESEST;Lightest
|
TP_LOCALLAB_LUMAWHITESEST;Lightest
|
||||||
TP_LOCALLAB_LUMFRA;L*a*b* standard
|
TP_LOCALLAB_LUMFRA;L*a*b* standard
|
||||||
TP_LOCALLAB_LUMONLY;Luminance only
|
|
||||||
TP_LOCALLAB_MASFRAME;Mask and Merge
|
TP_LOCALLAB_MASFRAME;Mask and Merge
|
||||||
TP_LOCALLAB_MASFRAME_TOOLTIP;For all masks.\nTakes into account the deltaE image to avoid modifying the selection area when the following Mask Tools are used: Gamma, Slope, Chroma, Contrast curve, Local contrast (by wavelet level), Blur Mask and Structure Mask (if enabled ).\nDisabled when Inverse mode is used.
|
TP_LOCALLAB_MASFRAME_TOOLTIP;For all masks.\nTakes into account the deltaE image to avoid modifying the selection area when the following Mask Tools are used: Gamma, Slope, Chroma, Contrast curve, Local contrast (by wavelet level), Blur Mask and Structure Mask (if enabled ).\nDisabled when Inverse mode is used.
|
||||||
TP_LOCALLAB_MASK;Curves
|
TP_LOCALLAB_MASK;Curves
|
||||||
@ -3155,7 +3102,6 @@ TP_LOCALLAB_MASKUSABLE;Mask enabled (Mask & modifications)
|
|||||||
TP_LOCALLAB_MASKUNUSABLE;Mask disabled (Mask & modifications)
|
TP_LOCALLAB_MASKUNUSABLE;Mask disabled (Mask & modifications)
|
||||||
TP_LOCALLAB_MASKRECOTHRES;Recovery threshold
|
TP_LOCALLAB_MASKRECOTHRES;Recovery threshold
|
||||||
TP_LOCALLAB_MASK_TOOLTIP;You can enable multiple masks for a tool by activating another tool and using only the mask (set the tool sliders to 0 ).\n\nYou can also duplicate the RT-spot and place it close to the first spot. The small variations in the spot references allow you to make fine adjustments.
|
TP_LOCALLAB_MASK_TOOLTIP;You can enable multiple masks for a tool by activating another tool and using only the mask (set the tool sliders to 0 ).\n\nYou can also duplicate the RT-spot and place it close to the first spot. The small variations in the spot references allow you to make fine adjustments.
|
||||||
TP_LOCALLAB_MED;Medium
|
|
||||||
TP_LOCALLAB_MEDIAN;Median Low
|
TP_LOCALLAB_MEDIAN;Median Low
|
||||||
TP_LOCALLAB_MEDIANITER_TOOLTIP;The number of successive iterations carried out by the median filter.
|
TP_LOCALLAB_MEDIANITER_TOOLTIP;The number of successive iterations carried out by the median filter.
|
||||||
TP_LOCALLAB_MEDIAN_TOOLTIP;You can choose a median value in the range 3x3 to 9x9 pixels. Higher values increase noise reduction and blur.
|
TP_LOCALLAB_MEDIAN_TOOLTIP;You can choose a median value in the range 3x3 to 9x9 pixels. Higher values increase noise reduction and blur.
|
||||||
@ -3169,16 +3115,8 @@ TP_LOCALLAB_MERFOU;Multiply
|
|||||||
TP_LOCALLAB_MERGE1COLFRA;Merge with Original/Previous/Background
|
TP_LOCALLAB_MERGE1COLFRA;Merge with Original/Previous/Background
|
||||||
TP_LOCALLAB_MERGECOLFRA;Mask: LCh & Structure
|
TP_LOCALLAB_MERGECOLFRA;Mask: LCh & Structure
|
||||||
TP_LOCALLAB_MERGECOLFRMASK_TOOLTIP;Allows you to create masks based on the 3 LCh curves and/or a structure-detection algorithm
|
TP_LOCALLAB_MERGECOLFRMASK_TOOLTIP;Allows you to create masks based on the 3 LCh curves and/or a structure-detection algorithm
|
||||||
TP_LOCALLAB_MERGEFIV;Previous Spot(Mask 7) + Mask LCh
|
|
||||||
TP_LOCALLAB_MERGEFOU;Previous Spot(Mask 7)
|
|
||||||
TP_LOCALLAB_MERGEMER_TOOLTIP;Takes ΔE into account when merging files (equivalent of scope in this case)
|
TP_LOCALLAB_MERGEMER_TOOLTIP;Takes ΔE into account when merging files (equivalent of scope in this case)
|
||||||
TP_LOCALLAB_MERGENONE;None
|
|
||||||
TP_LOCALLAB_MERGEONE;Short Curves 'L' Mask
|
|
||||||
TP_LOCALLAB_MERGEOPA_TOOLTIP;Opacity = % of current spot to be merged with original or previous Spot.\nContrast threshold : adjusts result as a function of contrast in original image.
|
TP_LOCALLAB_MERGEOPA_TOOLTIP;Opacity = % of current spot to be merged with original or previous Spot.\nContrast threshold : adjusts result as a function of contrast in original image.
|
||||||
TP_LOCALLAB_MERGETHR;Original + Mask LCh
|
|
||||||
TP_LOCALLAB_MERGETWO;Original
|
|
||||||
TP_LOCALLAB_MERGETYPE;Merge image and mask
|
|
||||||
TP_LOCALLAB_MERGETYPE_TOOLTIP;None, use all mask in LCh mode.\nShort curves 'L' mask, use a short circuit for mask 2, 3, 4, 6, 7.\nOriginal mask 8, blend current image with original
|
|
||||||
TP_LOCALLAB_MERHEI;Overlay
|
TP_LOCALLAB_MERHEI;Overlay
|
||||||
TP_LOCALLAB_MERHUE;Hue
|
TP_LOCALLAB_MERHUE;Hue
|
||||||
TP_LOCALLAB_MERLUCOL;Luminance
|
TP_LOCALLAB_MERLUCOL;Luminance
|
||||||
@ -3224,7 +3162,6 @@ TP_LOCALLAB_NOISECHROCOARSE;Coarse chroma (Wav)
|
|||||||
TP_LOCALLAB_NOISECHROC_TOOLTIP;If superior to zero, high quality algorithm is enabled.\nCoarse is for slider >=0.02
|
TP_LOCALLAB_NOISECHROC_TOOLTIP;If superior to zero, high quality algorithm is enabled.\nCoarse is for slider >=0.02
|
||||||
TP_LOCALLAB_NOISECHRODETAIL;Chroma detail recovery
|
TP_LOCALLAB_NOISECHRODETAIL;Chroma detail recovery
|
||||||
TP_LOCALLAB_NOISECHROFINE;Fine chroma (Wav)
|
TP_LOCALLAB_NOISECHROFINE;Fine chroma (Wav)
|
||||||
TP_LOCALLAB_NOISEDETAIL_TOOLTIP;Disabled if slider = 100
|
|
||||||
TP_LOCALLAB_NOISEGAM;Gamma
|
TP_LOCALLAB_NOISEGAM;Gamma
|
||||||
TP_LOCALLAB_NOISEGAM_TOOLTIP;If gamma = 1 Luminance "Lab" is used. If gamma = 3.0 Luminance "linear" is used.\nLower values preserve details and texture, higher values increase denoise.
|
TP_LOCALLAB_NOISEGAM_TOOLTIP;If gamma = 1 Luminance "Lab" is used. If gamma = 3.0 Luminance "linear" is used.\nLower values preserve details and texture, higher values increase denoise.
|
||||||
TP_LOCALLAB_NOISELEQUAL;Equalizer white-black
|
TP_LOCALLAB_NOISELEQUAL;Equalizer white-black
|
||||||
@ -3264,7 +3201,6 @@ TP_LOCALLAB_RECT;Rectangle
|
|||||||
TP_LOCALLAB_RECOTHRES02_TOOLTIP;If the “Recovery threshold” value is greater than 1, the mask in Mask and Modifications takes into account any previous modifications made to the image but not those made with the current tool (e.g. Color and Light, Wavelet, Cam16, etc.)\nIf the value of the “Recovery threshold” is less than 1, the mask in Mask and Modifications does not take into account any previous modifications to the image.\n\nIn both cases, the “Recovery threshold” acts on the masked image as modified by the current tool (Color and Light, Wavelet, Cam16, etc.).
|
TP_LOCALLAB_RECOTHRES02_TOOLTIP;If the “Recovery threshold” value is greater than 1, the mask in Mask and Modifications takes into account any previous modifications made to the image but not those made with the current tool (e.g. Color and Light, Wavelet, Cam16, etc.)\nIf the value of the “Recovery threshold” is less than 1, the mask in Mask and Modifications does not take into account any previous modifications to the image.\n\nIn both cases, the “Recovery threshold” acts on the masked image as modified by the current tool (Color and Light, Wavelet, Cam16, etc.).
|
||||||
TP_LOCALLAB_RECURS;Recursive references
|
TP_LOCALLAB_RECURS;Recursive references
|
||||||
TP_LOCALLAB_RECURS_TOOLTIP;Forces the algorithm to recalculate the references after each tool is applied.\nAlso useful for working with masks.
|
TP_LOCALLAB_RECURS_TOOLTIP;Forces the algorithm to recalculate the references after each tool is applied.\nAlso useful for working with masks.
|
||||||
TP_LOCALLAB_REFLABEL;Ref. (0..1) Chroma=%1 Luma=%2 Hue=%3
|
|
||||||
TP_LOCALLAB_REN_DIALOG_LAB;Enter the new Control Spot name
|
TP_LOCALLAB_REN_DIALOG_LAB;Enter the new Control Spot name
|
||||||
TP_LOCALLAB_REN_DIALOG_NAME;Renaming Control Spot
|
TP_LOCALLAB_REN_DIALOG_NAME;Renaming Control Spot
|
||||||
TP_LOCALLAB_REPARW_TOOLTIP;Allows you to adjust the relative strength of the local contrast and wavelet image with respect to the original image.
|
TP_LOCALLAB_REPARW_TOOLTIP;Allows you to adjust the relative strength of the local contrast and wavelet image with respect to the original image.
|
||||||
@ -3288,7 +3224,6 @@ TP_LOCALLAB_RETIFRA;Retinex
|
|||||||
TP_LOCALLAB_RETIFRAME_TOOLTIP;Retinex can be useful for processing images: \nthat are blurred, foggy or hazy (in addition to Dehaze).\nthat contain large differences in luminance.\nIt can also be used for special effects (tone mapping).
|
TP_LOCALLAB_RETIFRAME_TOOLTIP;Retinex can be useful for processing images: \nthat are blurred, foggy or hazy (in addition to Dehaze).\nthat contain large differences in luminance.\nIt can also be used for special effects (tone mapping).
|
||||||
TP_LOCALLAB_RETIM;Original Retinex
|
TP_LOCALLAB_RETIM;Original Retinex
|
||||||
TP_LOCALLAB_RETITOOLFRA;Retinex Tools
|
TP_LOCALLAB_RETITOOLFRA;Retinex Tools
|
||||||
TP_LOCALLAB_RETI_FFTW_TOOLTIP;FFT improve quality and allow big radius, but increases the treatment time.\nThe treatment time depends on the surface to be treated\nThe treatment time depends on the value of scale (be careful of high values).\nTo be used preferably for large radius.\n\nDimensions can be reduced by a few pixels to optimize FFTW.\nThis optimization can reduce the treatment time by a factor of 1.5 to 10.\nOptimization not used in Preview
|
|
||||||
TP_LOCALLAB_RETI_LIGHTDARK_TOOLTIP;Has no effect when the value of "Lightness = 1" or "Darkness =2".\nFor other values, the last step of a "Multiple scale Retinex" algorithm (similar to "local contrast") is applied. These 2 cursors, associated with "Strength" allow you to make adjustments upstream of local contrast
|
TP_LOCALLAB_RETI_LIGHTDARK_TOOLTIP;Has no effect when the value of "Lightness = 1" or "Darkness =2".\nFor other values, the last step of a "Multiple scale Retinex" algorithm (similar to "local contrast") is applied. These 2 cursors, associated with "Strength" allow you to make adjustments upstream of local contrast
|
||||||
TP_LOCALLAB_RETI_LIMDOFFS_TOOLTIP;Adjusts the internal parameters to optimize the response.\nPreferable to keep the "Restored data" values close to Min=0 and Max=32768 (log mode), but other values are possible.
|
TP_LOCALLAB_RETI_LIMDOFFS_TOOLTIP;Adjusts the internal parameters to optimize the response.\nPreferable to keep the "Restored data" values close to Min=0 and Max=32768 (log mode), but other values are possible.
|
||||||
TP_LOCALLAB_RETI_LOGLIN_TOOLTIP;Logarithm mode introduces more contrast but will also generate more halos.
|
TP_LOCALLAB_RETI_LOGLIN_TOOLTIP;Logarithm mode introduces more contrast but will also generate more halos.
|
||||||
@ -3303,7 +3238,6 @@ TP_LOCALLAB_ROW_VIS;Visible
|
|||||||
TP_LOCALLAB_RSTPROTECT_TOOLTIP;Red and skin-tone protection affects the Saturation, Chroma and Colorfulness sliders.
|
TP_LOCALLAB_RSTPROTECT_TOOLTIP;Red and skin-tone protection affects the Saturation, Chroma and Colorfulness sliders.
|
||||||
TP_LOCALLAB_SATUR;Saturation
|
TP_LOCALLAB_SATUR;Saturation
|
||||||
TP_LOCALLAB_SATURV;Saturation (s)
|
TP_LOCALLAB_SATURV;Saturation (s)
|
||||||
TP_LOCALLAB_SAVREST;Save - Restore Current Image
|
|
||||||
TP_LOCALLAB_SCALEGR;Scale
|
TP_LOCALLAB_SCALEGR;Scale
|
||||||
TP_LOCALLAB_SCALERETI;Scale
|
TP_LOCALLAB_SCALERETI;Scale
|
||||||
TP_LOCALLAB_SCALTM;Scale
|
TP_LOCALLAB_SCALTM;Scale
|
||||||
@ -3377,7 +3311,6 @@ TP_LOCALLAB_SIGMOIDTH;Threshold (Gray point)
|
|||||||
TP_LOCALLAB_SIGMOIDBL;Blend
|
TP_LOCALLAB_SIGMOIDBL;Blend
|
||||||
TP_LOCALLAB_SIGMOIDQJ;Uses Black Ev & White Ev
|
TP_LOCALLAB_SIGMOIDQJ;Uses Black Ev & White Ev
|
||||||
TP_LOCALLAB_SIGMOID_TOOLTIP;Allows you to simulate a Tone-mapping appearance using both the'Ciecam' (or 'Jz') and 'Sigmoid' function.\nThree sliders: a) Contrast acts on the shape of the sigmoid curve and consequently on the strength; b) Threshold (Gray point) distributes the action according to the luminance; c)Blend acts on the final aspect of the image, contrast and luminance.
|
TP_LOCALLAB_SIGMOID_TOOLTIP;Allows you to simulate a Tone-mapping appearance using both the'Ciecam' (or 'Jz') and 'Sigmoid' function.\nThree sliders: a) Contrast acts on the shape of the sigmoid curve and consequently on the strength; b) Threshold (Gray point) distributes the action according to the luminance; c)Blend acts on the final aspect of the image, contrast and luminance.
|
||||||
TP_LOCALLAB_SIM;Simple
|
|
||||||
TP_LOCALLAB_SLOMASKCOL;Slope
|
TP_LOCALLAB_SLOMASKCOL;Slope
|
||||||
TP_LOCALLAB_SLOMASK_TOOLTIP;Adjusting Gamma and Slope can provide a soft and artifact-free transformation of the mask by progressively modifying ‘L’ to avoid any discontinuities.
|
TP_LOCALLAB_SLOMASK_TOOLTIP;Adjusting Gamma and Slope can provide a soft and artifact-free transformation of the mask by progressively modifying ‘L’ to avoid any discontinuities.
|
||||||
TP_LOCALLAB_SLOSH;Slope
|
TP_LOCALLAB_SLOSH;Slope
|
||||||
@ -3387,7 +3320,6 @@ TP_LOCALLAB_SOFTMETHOD_TOOLTIP;Apply a Soft-light blend (identical to the global
|
|||||||
TP_LOCALLAB_SOFTRADIUSCOL;Soft radius
|
TP_LOCALLAB_SOFTRADIUSCOL;Soft radius
|
||||||
TP_LOCALLAB_SOFTRADIUSCOL_TOOLTIP;Applies a guided filter to the output image to reduce possible artifacts.
|
TP_LOCALLAB_SOFTRADIUSCOL_TOOLTIP;Applies a guided filter to the output image to reduce possible artifacts.
|
||||||
TP_LOCALLAB_SOFTRETI;Reduce ΔE artifacts
|
TP_LOCALLAB_SOFTRETI;Reduce ΔE artifacts
|
||||||
TP_LOCALLAB_SOFTRETI_TOOLTIP;Take into account deltaE to improve Transmission map
|
|
||||||
TP_LOCALLAB_SOFT_TOOLNAME;Soft Light & Original Retinex
|
TP_LOCALLAB_SOFT_TOOLNAME;Soft Light & Original Retinex
|
||||||
TP_LOCALLAB_SOURCE_ABS;Absolute luminance
|
TP_LOCALLAB_SOURCE_ABS;Absolute luminance
|
||||||
TP_LOCALLAB_SOURCE_GRAY;Mean luminance (Yb%)
|
TP_LOCALLAB_SOURCE_GRAY;Mean luminance (Yb%)
|
||||||
@ -3404,7 +3336,6 @@ TP_LOCALLAB_STRENGR;Strength
|
|||||||
TP_LOCALLAB_STRENGRID_TOOLTIP;You can adjust the desired effect with "strength", but you can also use the "scope" function which allows you to delimit the action (e.g. to isolate a particular color).
|
TP_LOCALLAB_STRENGRID_TOOLTIP;You can adjust the desired effect with "strength", but you can also use the "scope" function which allows you to delimit the action (e.g. to isolate a particular color).
|
||||||
TP_LOCALLAB_STRENGTH;Noise
|
TP_LOCALLAB_STRENGTH;Noise
|
||||||
TP_LOCALLAB_STRGRID;Strength
|
TP_LOCALLAB_STRGRID;Strength
|
||||||
TP_LOCALLAB_STRRETI_TOOLTIP;if Strength Retinex < 0.2 only Dehaze is enabled.\nif Strength Retinex >= 0.1 Dehaze is in luminance mode.
|
|
||||||
TP_LOCALLAB_STRUC;Structure
|
TP_LOCALLAB_STRUC;Structure
|
||||||
TP_LOCALLAB_STRUCCOL;Spot structure
|
TP_LOCALLAB_STRUCCOL;Spot structure
|
||||||
TP_LOCALLAB_STRUCCOL1;Spot structure
|
TP_LOCALLAB_STRUCCOL1;Spot structure
|
||||||
@ -3422,7 +3353,6 @@ TP_LOCALLAB_THRESDELTAE;ΔE scope threshold
|
|||||||
TP_LOCALLAB_THRESRETI;Threshold
|
TP_LOCALLAB_THRESRETI;Threshold
|
||||||
TP_LOCALLAB_THRESWAV;Balance threshold
|
TP_LOCALLAB_THRESWAV;Balance threshold
|
||||||
TP_LOCALLAB_TLABEL;TM Min=%1 Max=%2 Mean=%3 Sig=%4
|
TP_LOCALLAB_TLABEL;TM Min=%1 Max=%2 Mean=%3 Sig=%4
|
||||||
TP_LOCALLAB_TLABEL2;TM Effective Tm=%1 TM=%2
|
|
||||||
TP_LOCALLAB_TLABEL_TOOLTIP;Transmission map result.\nMin and Max are used by Variance.\nTm=Min TM=Max of Transmission Map.\nYou can normalize the results with the threshold slider.
|
TP_LOCALLAB_TLABEL_TOOLTIP;Transmission map result.\nMin and Max are used by Variance.\nTm=Min TM=Max of Transmission Map.\nYou can normalize the results with the threshold slider.
|
||||||
TP_LOCALLAB_TM;Tone Mapping
|
TP_LOCALLAB_TM;Tone Mapping
|
||||||
TP_LOCALLAB_TM_MASK;Use transmission map
|
TP_LOCALLAB_TM_MASK;Use transmission map
|
||||||
@ -3453,7 +3383,6 @@ TP_LOCALLAB_VIBRANCE;Vibrance & Warm/Cool
|
|||||||
TP_LOCALLAB_VIBRA_TOOLTIP;Adjusts vibrance (essentially the same as the global adjustment).\nCarries out the equivalent of a white-balance adjustment using a CIECAM algorithm.
|
TP_LOCALLAB_VIBRA_TOOLTIP;Adjusts vibrance (essentially the same as the global adjustment).\nCarries out the equivalent of a white-balance adjustment using a CIECAM algorithm.
|
||||||
TP_LOCALLAB_VIB_TOOLNAME;Vibrance & Warm/Cool
|
TP_LOCALLAB_VIB_TOOLNAME;Vibrance & Warm/Cool
|
||||||
TP_LOCALLAB_VIS_TOOLTIP;<b>Click</b> to show/hide selected Control Spot.\n<b>Ctrl</b>+<b>click</b> to show/hide all Control Spot.
|
TP_LOCALLAB_VIS_TOOLTIP;<b>Click</b> to show/hide selected Control Spot.\n<b>Ctrl</b>+<b>click</b> to show/hide all Control Spot.
|
||||||
TP_LOCALLAB_WAMASKCOL;Mask Wavelet level
|
|
||||||
TP_LOCALLAB_WARM;Warm/Cool & Color artifacts
|
TP_LOCALLAB_WARM;Warm/Cool & Color artifacts
|
||||||
TP_LOCALLAB_WARM_TOOLTIP;This slider uses the CIECAM algorithm and acts as a White Balance control to make the color temperature of the selected area warmer or cooler.\nIt can also reduce color artifacts in some cases.
|
TP_LOCALLAB_WARM_TOOLTIP;This slider uses the CIECAM algorithm and acts as a White Balance control to make the color temperature of the selected area warmer or cooler.\nIt can also reduce color artifacts in some cases.
|
||||||
TP_LOCALLAB_WASDEN_TOOLTIP;Luminance noise reduction: the left-hand side of the curve including the dark-gray/light-gray boundary corresponds to the first 3 levels 0, 1, 2 (fine detail). The right hand side of the curve corresponds to the coarser details (level 3, 4, 5, 6).
|
TP_LOCALLAB_WASDEN_TOOLTIP;Luminance noise reduction: the left-hand side of the curve including the dark-gray/light-gray boundary corresponds to the first 3 levels 0, 1, 2 (fine detail). The right hand side of the curve corresponds to the coarser details (level 3, 4, 5, 6).
|
||||||
@ -3498,14 +3427,10 @@ TP_LOCALLAB_WAVEDG;Local contrast
|
|||||||
TP_LOCALLAB_WAVEEDG_TOOLTIP;Improves sharpness by targeting the action of local contrast on the edges. It has the same functions as the corresponding module in Wavelet Levels and uses the same settings.
|
TP_LOCALLAB_WAVEEDG_TOOLTIP;Improves sharpness by targeting the action of local contrast on the edges. It has the same functions as the corresponding module in Wavelet Levels and uses the same settings.
|
||||||
TP_LOCALLAB_WAVEMASK_LEVEL_TOOLTIP;Range of wavelet levels used in ‘Local contrast’ (by wavelet level).
|
TP_LOCALLAB_WAVEMASK_LEVEL_TOOLTIP;Range of wavelet levels used in ‘Local contrast’ (by wavelet level).
|
||||||
TP_LOCALLAB_WAVGRAD_TOOLTIP;Allows the local contrast to be varied according to a chosen gradient and angle. The variation of the luminance signal is taken into account and not the luminance.
|
TP_LOCALLAB_WAVGRAD_TOOLTIP;Allows the local contrast to be varied according to a chosen gradient and angle. The variation of the luminance signal is taken into account and not the luminance.
|
||||||
TP_LOCALLAB_WAVHIGH;Wavelet high
|
|
||||||
TP_LOCALLAB_WAVHUE_TOOLTIP;Allows you to reduce or increase the denoise based on hue.
|
TP_LOCALLAB_WAVHUE_TOOLTIP;Allows you to reduce or increase the denoise based on hue.
|
||||||
TP_LOCALLAB_WAVLEV;Blur by level
|
TP_LOCALLAB_WAVLEV;Blur by level
|
||||||
TP_LOCALLAB_WAVLOW;Wavelet low
|
|
||||||
TP_LOCALLAB_WAVMASK;Local contrast
|
TP_LOCALLAB_WAVMASK;Local contrast
|
||||||
TP_LOCALLAB_WAVMASK_TOOLTIP;Uses wavelets to modify the local contrast of the mask and reinforce or reduce the structure (skin, buildings...)
|
TP_LOCALLAB_WAVMASK_TOOLTIP;Uses wavelets to modify the local contrast of the mask and reinforce or reduce the structure (skin, buildings...)
|
||||||
//TP_LOCALLAB_WAVMED;Ψ Wavelet normal
|
|
||||||
TP_LOCALLAB_WAVMED;Wavelet normal
|
|
||||||
TP_LOCALLAB_WEDIANHI;Median Hi
|
TP_LOCALLAB_WEDIANHI;Median Hi
|
||||||
TP_LOCALLAB_WHITE_EV;White Ev
|
TP_LOCALLAB_WHITE_EV;White Ev
|
||||||
TP_LOCALLAB_ZCAMFRA;ZCAM Image Adjustments
|
TP_LOCALLAB_ZCAMFRA;ZCAM Image Adjustments
|
||||||
@ -3913,7 +3838,6 @@ TP_WAVELET_CONTEDIT;'After' contrast curve
|
|||||||
TP_WAVELET_CONTFRAME;Contrast - Compression
|
TP_WAVELET_CONTFRAME;Contrast - Compression
|
||||||
TP_WAVELET_CONTR;Gamut
|
TP_WAVELET_CONTR;Gamut
|
||||||
TP_WAVELET_CONTRA;Contrast
|
TP_WAVELET_CONTRA;Contrast
|
||||||
TP_WAVELET_CONTRASTEDIT;Finer - Coarser levels
|
|
||||||
TP_WAVELET_CONTRAST_MINUS;Contrast -
|
TP_WAVELET_CONTRAST_MINUS;Contrast -
|
||||||
TP_WAVELET_CONTRAST_PLUS;Contrast +
|
TP_WAVELET_CONTRAST_PLUS;Contrast +
|
||||||
TP_WAVELET_CONTRA_TOOLTIP;Changes the residual image contrast.
|
TP_WAVELET_CONTRA_TOOLTIP;Changes the residual image contrast.
|
||||||
@ -3936,14 +3860,7 @@ TP_WAVELET_DAUB14;D14 - high
|
|||||||
TP_WAVELET_DAUBLOCAL;Wavelet Edge performance
|
TP_WAVELET_DAUBLOCAL;Wavelet Edge performance
|
||||||
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 first levels. However the quality is not strictly related to this coefficient and can vary depending on image and use.
|
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 first levels. However the quality is not strictly related to this coefficient and can vary depending on image and use.
|
||||||
TP_WAVELET_DEN5THR;Guided threshold
|
TP_WAVELET_DEN5THR;Guided threshold
|
||||||
TP_WAVELET_DEN12LOW;1 2 Low
|
|
||||||
TP_WAVELET_DEN12PLUS;1 2 High
|
|
||||||
TP_WAVELET_DEN14LOW;1 4 Low
|
|
||||||
TP_WAVELET_DEN14PLUS;1 4 High
|
|
||||||
TP_WAVELET_DENCONTRAST;Local contrast Equalizer
|
|
||||||
TP_WAVELET_DENCURV;Curve
|
TP_WAVELET_DENCURV;Curve
|
||||||
TP_WAVELET_DENEQUAL;1 2 3 4 Equal
|
|
||||||
TP_WAVELET_DENH;Threshold
|
|
||||||
TP_WAVELET_DENL;Correction structure
|
TP_WAVELET_DENL;Correction structure
|
||||||
TP_WAVELET_DENLH;Guided threshold levels 1-4
|
TP_WAVELET_DENLH;Guided threshold levels 1-4
|
||||||
TP_WAVELET_DENLOCAL_TOOLTIP;Use a curve in order to guide the denoising according to the local contrast.\nThe areas are denoised, the structures are maintained
|
TP_WAVELET_DENLOCAL_TOOLTIP;Use a curve in order to guide the denoising according to the local contrast.\nThe areas are denoised, the structures are maintained
|
||||||
@ -3986,7 +3903,6 @@ TP_WAVELET_EDTYPE;Local contrast method
|
|||||||
TP_WAVELET_EDVAL;Strength
|
TP_WAVELET_EDVAL;Strength
|
||||||
TP_WAVELET_FINAL;Final Touchup
|
TP_WAVELET_FINAL;Final Touchup
|
||||||
TP_WAVELET_FINCFRAME;Final local contrast
|
TP_WAVELET_FINCFRAME;Final local contrast
|
||||||
TP_WAVELET_FINCOAR_TOOLTIP;The left (positive) part of the curve acts on the finer levels (increase).\nThe 2 points on the abscissa represent the respective action limits of finer and coarser levels 5 and 6 (default).\nThe right (negative) part of the curve acts on the coarser levels (increase).\nAvoid moving the left part of the curve with negative values. Avoid moving the right part of the curve with positives values
|
|
||||||
TP_WAVELET_FINEST;Finest
|
TP_WAVELET_FINEST;Finest
|
||||||
TP_WAVELET_FINTHR_TOOLTIP;Uses local contrast to reduce or increase the action of the guided filter
|
TP_WAVELET_FINTHR_TOOLTIP;Uses local contrast to reduce or increase the action of the guided filter
|
||||||
TP_WAVELET_GUIDFRAME;Final smoothing (guided filter)
|
TP_WAVELET_GUIDFRAME;Final smoothing (guided filter)
|
||||||
@ -4055,7 +3971,6 @@ TP_WAVELET_PASTEL;Pastel chroma
|
|||||||
TP_WAVELET_PROC;Process
|
TP_WAVELET_PROC;Process
|
||||||
TP_WAVELET_PROTAB;Protection
|
TP_WAVELET_PROTAB;Protection
|
||||||
TP_WAVELET_QUAAGRES;Aggressive
|
TP_WAVELET_QUAAGRES;Aggressive
|
||||||
TP_WAVELET_QUANONE;Off
|
|
||||||
TP_WAVELET_QUACONSER;Conservative
|
TP_WAVELET_QUACONSER;Conservative
|
||||||
TP_WAVELET_RADIUS;Radius shadows - highlight
|
TP_WAVELET_RADIUS;Radius shadows - highlight
|
||||||
TP_WAVELET_RANGEAB;Range a and b %
|
TP_WAVELET_RANGEAB;Range a and b %
|
||||||
@ -4094,7 +4009,6 @@ TP_WAVELET_THRESHOLD;Finer levels
|
|||||||
TP_WAVELET_THRESHOLD2;Coarser levels
|
TP_WAVELET_THRESHOLD2;Coarser levels
|
||||||
TP_WAVELET_THRESHOLD2_TOOLTIP;Only levels from the chosen value to the selected number of ‘wavelet levels’ will be affected by the Shadow luminance range.
|
TP_WAVELET_THRESHOLD2_TOOLTIP;Only levels from the chosen value to the selected number of ‘wavelet levels’ will be affected by the Shadow luminance range.
|
||||||
TP_WAVELET_THRESHOLD_TOOLTIP;Only levels below and including the chosen value will be affected by the Highlight luminance range.
|
TP_WAVELET_THRESHOLD_TOOLTIP;Only levels below and including the chosen value will be affected by the Highlight luminance range.
|
||||||
TP_WAVELET_THRESWAV;Balance threshold
|
|
||||||
TP_WAVELET_THRH;Highlights threshold
|
TP_WAVELET_THRH;Highlights threshold
|
||||||
TP_WAVELET_TILESBIG;Tiles
|
TP_WAVELET_TILESBIG;Tiles
|
||||||
TP_WAVELET_TILESFULL;Full image
|
TP_WAVELET_TILESFULL;Full image
|
||||||
@ -4110,7 +4024,6 @@ TP_WAVELET_TON;Toning
|
|||||||
TP_WAVELET_TONFRAME;Excluded colors
|
TP_WAVELET_TONFRAME;Excluded colors
|
||||||
TP_WAVELET_USH;None
|
TP_WAVELET_USH;None
|
||||||
TP_WAVELET_USHARP;Clarity method
|
TP_WAVELET_USHARP;Clarity method
|
||||||
TP_WAVELET_USHARP_TOOLTIP;Origin : the source file is the file before Wavelet.\nWavelet : the source file is the file including wavelet threatment
|
|
||||||
TP_WAVELET_USH_TOOLTIP;If you select Sharp-mask, you can choose any level (in Settings) from 1 to 4 for processing.\nIf you select Clarity, you can choose any level (in Settings) between 5 and Extra.
|
TP_WAVELET_USH_TOOLTIP;If you select Sharp-mask, you can choose any level (in Settings) from 1 to 4 for processing.\nIf you select Clarity, you can choose any level (in Settings) between 5 and Extra.
|
||||||
TP_WAVELET_WAVLOWTHR;Low contrast threshold
|
TP_WAVELET_WAVLOWTHR;Low contrast threshold
|
||||||
TP_WAVELET_WAVOFFSET;Offset
|
TP_WAVELET_WAVOFFSET;Offset
|
||||||
@ -4175,7 +4088,3 @@ ZOOMPANEL_ZOOMFITCROPSCREEN;Fit crop to screen\nShortcut: <b>f</b>
|
|||||||
ZOOMPANEL_ZOOMFITSCREEN;Fit whole image to screen\nShortcut: <b>Alt</b>-<b>f</b>
|
ZOOMPANEL_ZOOMFITSCREEN;Fit whole image to screen\nShortcut: <b>Alt</b>-<b>f</b>
|
||||||
ZOOMPANEL_ZOOMIN;Zoom In\nShortcut: <b>+</b>
|
ZOOMPANEL_ZOOMIN;Zoom In\nShortcut: <b>+</b>
|
||||||
ZOOMPANEL_ZOOMOUT;Zoom Out\nShortcut: <b>-</b>
|
ZOOMPANEL_ZOOMOUT;Zoom Out\nShortcut: <b>-</b>
|
||||||
//TP_LOCALLAB_CIECAMLOG_TOOLTIP;This module is based on the CIECAM color appearance model which was designed to better simulate how human vision perceives colors under different lighting conditions.\nOnly the third Ciecam process (Viewing conditions - Target) is taken into account, as well as part of the second (contrast J, saturation s) , as well as some data from the first process (Scene conditions - Source) which is used for the Log encoding.\nIt also adapts the output to the intended viewing conditions (monitor, TV, projector, printer, etc.) so that the chromatic and contrast appearance is preserved across the display environment.
|
|
||||||
//TP_WAVELET_DENH;Low levels (1234)- Finest details
|
|
||||||
//TP_WAVELET_DENL;High levels - Coarsest details
|
|
||||||
//TP_WAVELET_DENLH;Guided threshold for detail levels 1-4
|
|
||||||
|
@ -1208,12 +1208,17 @@ Camera constants:
|
|||||||
"ranges" : { "white" : 16367 } // Typically 16383 without LENR, with LENR safest value is 15800 for ISO 25600
|
"ranges" : { "white" : 16367 } // Typically 16383 without LENR, with LENR safest value is 15800 for ISO 25600
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // Quality C
|
||||||
|
"make_model": "Canon EOS R3",
|
||||||
|
"dcraw_matrix" : [9423,-2839,-1195,-4532,12377,2415,-483,1374,5276]
|
||||||
|
},
|
||||||
|
|
||||||
{ // Quality C
|
{ // Quality C
|
||||||
"make_model": "Canon EOS R5",
|
"make_model": "Canon EOS R5",
|
||||||
"dcraw_matrix" : [9766, -2953, -1254, -4276, 12116, 2433, -437, 1336, 5131],
|
"dcraw_matrix" : [9766, -2953, -1254, -4276, 12116, 2433, -437, 1336, 5131],
|
||||||
"raw_crop" : [ 128, 96, 8224, 5490 ],
|
"raw_crop" : [ 128, 96, 8224, 5490 ],
|
||||||
"masked_areas" : [ 94, 20, 5578, 122 ],
|
"masked_areas" : [ 94, 20, 5578, 122 ],
|
||||||
"ranges" : { "white" : 16382 }
|
"ranges" : { "white" : 16382 }
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // Quality C
|
{ // Quality C
|
||||||
@ -1224,6 +1229,16 @@ Camera constants:
|
|||||||
"ranges" : { "white" : 16382 }
|
"ranges" : { "white" : 16382 }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // Quality C
|
||||||
|
"make_model": "Canon EOS R7",
|
||||||
|
"dcraw_matrix" : [10424, -3138, -1300, -4221, 11938, 2584, -547, 1658, 6183]
|
||||||
|
},
|
||||||
|
|
||||||
|
{ // Quality C
|
||||||
|
"make_model": "Canon EOS R10",
|
||||||
|
"dcraw_matrix" : [9269, -2012, -1107, -3990, 11762, 2527, -569, 2093, 4913]
|
||||||
|
},
|
||||||
|
|
||||||
{ // Quality C, CHDK DNGs, raw frame correction
|
{ // Quality C, CHDK DNGs, raw frame correction
|
||||||
"make_model": "Canon PowerShot A3100 IS",
|
"make_model": "Canon PowerShot A3100 IS",
|
||||||
"raw_crop": [ 24, 12, 4032, 3024 ] // full size 4036X3026
|
"raw_crop": [ 24, 12, 4032, 3024 ] // full size 4036X3026
|
||||||
@ -1702,7 +1717,7 @@ Camera constants:
|
|||||||
{ // Quality A, samples provided by dimonoid (#5842)
|
{ // Quality A, samples provided by dimonoid (#5842)
|
||||||
"make_model": "NIKON COOLPIX P1000",
|
"make_model": "NIKON COOLPIX P1000",
|
||||||
"dcraw_matrix": [ 14294, -6116, -1333, -1628, 10219, 1637, -14, 1158, 5022 ], // ColorMatrix2 from Adobe DNG Converter 11.4
|
"dcraw_matrix": [ 14294, -6116, -1333, -1628, 10219, 1637, -14, 1158, 5022 ], // ColorMatrix2 from Adobe DNG Converter 11.4
|
||||||
"ranges": {
|
"ranges": {
|
||||||
"black": 200,
|
"black": 200,
|
||||||
"white": [ 4000, 4050, 3950 ] // Typical values without LENR: 4009, 4093, 3963
|
"white": [ 4000, 4050, 3950 ] // Typical values without LENR: 4009, 4093, 3963
|
||||||
} // No significant influence of ISO
|
} // No significant influence of ISO
|
||||||
|
@ -738,7 +738,7 @@ void Ciecam02::jzczhzxyz (double &x, double &y, double &z, double jz, double az,
|
|||||||
Lp = Iz + 0.138605043271539 * az + 0.0580473161561189 * bz;
|
Lp = Iz + 0.138605043271539 * az + 0.0580473161561189 * bz;
|
||||||
Mp = Iz - 0.138605043271539 * az - 0.0580473161561189 * bz;
|
Mp = Iz - 0.138605043271539 * az - 0.0580473161561189 * bz;
|
||||||
Sp = Iz - 0.0960192420263189 * az - 0.811891896056039 * bz;
|
Sp = Iz - 0.0960192420263189 * az - 0.811891896056039 * bz;
|
||||||
//I change optionnaly 10000 for pl function of la(absolute luminance) default 10000
|
//I change optionally 10000 for pl function of la(absolute luminance) default 10000
|
||||||
|
|
||||||
tmp = pow(Lp, Jzazbz_pi);
|
tmp = pow(Lp, Jzazbz_pi);
|
||||||
if(std::isnan(tmp)) {//to avoid crash
|
if(std::isnan(tmp)) {//to avoid crash
|
||||||
|
@ -3544,14 +3544,14 @@ double ColorTemp::daylight_spect(double wavelength, double m1, double m2)
|
|||||||
53.30, 56.10, 58.90, 60.40, 61.90
|
53.30, 56.10, 58.90, 60.40, 61.90
|
||||||
};
|
};
|
||||||
//s1
|
//s1
|
||||||
static const double s1[97] = {41.60, 39.80, 38.00, 40.70, 43.40, 40.95, 38.50, 36.75, 35.00, 39.20, 43.40, 44.85, 46.30, 45.10, 43.90, 40.50, 37.10, 36.90, 36.70, 36.30, 35.90, 34.25, 32.60, 30.25, 27.90, 26.10, 24.30, 22.20, 20.10, 18.15, 16.20, 14.70,
|
static const double s1[97] = {41.60, 39.80, 38.00, 40.20, 42.40, 40.45, 38.50, 36.75, 35.00, 39.20, 43.40, 44.85, 46.30, 45.10, 43.90, 40.50, 37.10, 36.90, 36.70, 36.30, 35.90, 34.25, 32.60, 30.25, 27.90, 26.10, 24.30, 22.20, 20.10, 18.15, 16.20, 14.70,
|
||||||
13.20, 10.90, 8.60, 7.35, 6.10, 5.15, 4.20, 3.05, 1.90, 0.95, 0.00, -0.80, -1.60, -2.55, -3.50, -3.50, -3.50, -4.65, -5.80, -6.50, -7.20, -7.90, -8.60, -9.05, -9.50, -10.20, -10.90, -10.80, -10.70, -11.35, -12.00, -13.00, -14.00,
|
13.20, 10.90, 8.60, 7.35, 6.10, 5.15, 4.20, 3.05, 1.90, 0.95, 0.00, -0.80, -1.60, -2.55, -3.50, -3.50, -3.50, -4.65, -5.80, -6.50, -7.20, -7.90, -8.60, -9.05, -9.50, -10.20, -10.90, -10.80, -10.70, -11.35, -12.00, -13.00, -14.00,
|
||||||
-13.80, -13.60, -12.80, -12.00, -12.65, -13.30, -13.10, -12.90, -11.75, -10.60, -11.10, -11.60, -11.90, -12.20, -11.20, -10.20, -9.00, -7.80, -9.50, -11.20, -10.80, -10.50, -10.60, -10.15, -9.70, -9.00, -8.30,
|
-13.80, -13.60, -12.80, -12.00, -12.65, -13.30, -13.10, -12.90, -11.75, -10.60, -11.10, -11.60, -11.90, -12.20, -11.20, -10.20, -9.00, -7.80, -9.50, -11.20, -10.80, -10.40, -10.50, -10.60, -10.15, -9.70, -9.00, -8.30,
|
||||||
-8.80, -9.30, -9.55, -9.80
|
-8.80, -9.30, -9.55, -9.80
|
||||||
};
|
};
|
||||||
//s2
|
//s2
|
||||||
static const double s2[97] = {6.70, 6.00, 5.30, 5.70, 6.10, 4.55, 3.00, 2.10, 1.20, 0.05, -1.10, -0.80, -0.50, -0.60, -0.70, -0.95, -1.20, -1.90, -2.60, -2.75, -2.90, -2.85, -2.80, -2.70, -2.60, -2.60, -2.60, -2.20, -1.80, -1.65, -1.50, -1.40, -1.30,
|
static const double s2[97] = {6.70, 6.00, 5.30, 5.70, 6.10, 4.55, 3.00, 2.10, 1.20, 0.05, -1.10, -0.80, -0.50, -0.60, -0.70, -0.95, -1.20, -1.90, -2.60, -2.75, -2.90, -2.85, -2.80, -2.70, -2.60, -2.60, -2.60, -2.20, -1.80, -1.65, -1.50, -1.40, -1.30,
|
||||||
-1.25, -1.20, -1.10, -1.00, -0.75, -0.50, -0.40, -0.30, -0.15, 0.00, 0.10, 0.20, 0.35, 0.50, 1.30, 2.10, 2.65, 3.65, 4.10, 4.40, 4.70, 4.90, 5.10, 5.90, 6.70, 7.00, 7.30, 7.95, 8.60, 9.20, 9.80, 10.00, 10.20, 9.25, 8.30, 8.95,
|
-1.25, -1.20, -1.10, -1.00, -0.75, -0.50, -0.40, -0.30, -0.15, 0.00, 0.10, 0.20, 0.35, 0.50, 1.30, 2.10, 2.65, 3.20, 3.65, 4.10, 4.40, 4.70, 4.90, 5.10, 5.90, 6.70, 7.00, 7.30, 7.95, 8.60, 9.20, 9.80, 10.00, 10.20, 9.25, 8.30, 8.95,
|
||||||
9.60, 9.05, 8.50, 7.75, 7.00, 7.30, 7.60, 7.80, 8.00, 7.35, 6.70, 5.95, 5.20, 6.30, 7.40, 7.10, 6.80, 6.90, 7.00, 6.70, 6.40, 5.95, 5.50, 5.80, 6.10, 6.30, 6.50
|
9.60, 9.05, 8.50, 7.75, 7.00, 7.30, 7.60, 7.80, 8.00, 7.35, 6.70, 5.95, 5.20, 6.30, 7.40, 7.10, 6.80, 6.90, 7.00, 6.70, 6.40, 5.95, 5.50, 5.80, 6.10, 6.30, 6.50
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6091,13 +6091,26 @@ get2_256:
|
|||||||
offsetChannelBlackLevel2 = save1 + (0x157 << 1);
|
offsetChannelBlackLevel2 = save1 + (0x157 << 1);
|
||||||
offsetWhiteLevels = save1 + (0x32a << 1);
|
offsetWhiteLevels = save1 + (0x32a << 1);
|
||||||
break;
|
break;
|
||||||
|
case 3973: // R3; ColorDataSubVer: 34
|
||||||
|
case 3778: // R7, R10; ColorDataSubVer: 48
|
||||||
|
// imCanon.ColorDataVer = 11;
|
||||||
|
imCanon.ColorDataSubVer = get2();
|
||||||
|
|
||||||
|
fseek(ifp, save1 + ((0x0069+0x0064) << 1), SEEK_SET);
|
||||||
|
FORC4 cam_mul[c ^ (c >> 1)] = (float)get2();
|
||||||
|
|
||||||
|
offsetChannelBlackLevel2 = save1 + ((0x0069+0x0102) << 1);
|
||||||
|
offsetChannelBlackLevel = save1 + ((0x0069+0x0213) << 1);
|
||||||
|
offsetWhiteLevels = save1 + ((0x0069+0x0217) << 1);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offsetChannelBlackLevel)
|
if (offsetChannelBlackLevel)
|
||||||
{
|
{
|
||||||
fseek(ifp, offsetChannelBlackLevel, SEEK_SET);
|
fseek(ifp, offsetChannelBlackLevel, SEEK_SET);
|
||||||
FORC4
|
FORC4
|
||||||
bls += (cblack/*imCanon.ChannelBlackLevel*/[c ^ (c >> 1)] = get2());
|
bls += (RT_canon_levels_data.cblack/*imCanon.ChannelBlackLevel*/[c ^ (c >> 1)] = get2());
|
||||||
|
RT_canon_levels_data.black_ok = true;
|
||||||
imCanon.AverageBlackLevel = bls / 4;
|
imCanon.AverageBlackLevel = bls / 4;
|
||||||
// RT_blacklevel_from_constant = ThreeValBool::F;
|
// RT_blacklevel_from_constant = ThreeValBool::F;
|
||||||
}
|
}
|
||||||
@ -6109,7 +6122,8 @@ get2_256:
|
|||||||
imCanon.SpecularWhiteLevel = get2();
|
imCanon.SpecularWhiteLevel = get2();
|
||||||
// FORC4
|
// FORC4
|
||||||
// imgdata.color.linear_max[c] = imCanon.SpecularWhiteLevel;
|
// imgdata.color.linear_max[c] = imCanon.SpecularWhiteLevel;
|
||||||
maximum = imCanon.SpecularWhiteLevel;
|
RT_canon_levels_data.white = imCanon.SpecularWhiteLevel;
|
||||||
|
RT_canon_levels_data.white_ok = true;
|
||||||
// RT_whitelevel_from_constant = ThreeValBool::F;
|
// RT_whitelevel_from_constant = ThreeValBool::F;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6117,7 +6131,8 @@ get2_256:
|
|||||||
{
|
{
|
||||||
fseek(ifp, offsetChannelBlackLevel2, SEEK_SET);
|
fseek(ifp, offsetChannelBlackLevel2, SEEK_SET);
|
||||||
FORC4
|
FORC4
|
||||||
bls += (cblack/*imCanon.ChannelBlackLevel*/[c ^ (c >> 1)] = get2());
|
bls += (RT_canon_levels_data.cblack/*imCanon.ChannelBlackLevel*/[c ^ (c >> 1)] = get2());
|
||||||
|
RT_canon_levels_data.black_ok = true;
|
||||||
imCanon.AverageBlackLevel = bls / 4;
|
imCanon.AverageBlackLevel = bls / 4;
|
||||||
// RT_blacklevel_from_constant = ThreeValBool::F;
|
// RT_blacklevel_from_constant = ThreeValBool::F;
|
||||||
}
|
}
|
||||||
@ -9852,7 +9867,8 @@ void CLASS identify()
|
|||||||
filters = 0;
|
filters = 0;
|
||||||
tiff_samples = colors = 3;
|
tiff_samples = colors = 3;
|
||||||
load_raw = &CLASS canon_sraw_load_raw;
|
load_raw = &CLASS canon_sraw_load_raw;
|
||||||
FORC4 cblack[c] = 0; // ALB
|
//FORC4 cblack[c] = 0; // ALB
|
||||||
|
RT_canon_levels_data.black_ok = RT_canon_levels_data.white_ok = false;
|
||||||
} else if (!strcmp(model,"PowerShot 600")) {
|
} else if (!strcmp(model,"PowerShot 600")) {
|
||||||
height = 613;
|
height = 613;
|
||||||
width = 854;
|
width = 854;
|
||||||
@ -10518,6 +10534,14 @@ bw: colors = 1;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
dng_skip:
|
dng_skip:
|
||||||
|
if (!dng_version && is_raw) {
|
||||||
|
if (RT_canon_levels_data.black_ok) {
|
||||||
|
FORC4 cblack[c] = RT_canon_levels_data.cblack[c];
|
||||||
|
}
|
||||||
|
if (RT_canon_levels_data.white_ok) {
|
||||||
|
maximum = RT_canon_levels_data.white;
|
||||||
|
}
|
||||||
|
}
|
||||||
if ((use_camera_matrix & (use_camera_wb || dng_version))
|
if ((use_camera_matrix & (use_camera_wb || dng_version))
|
||||||
&& cmatrix[0][0] > 0.125
|
&& cmatrix[0][0] > 0.125
|
||||||
&& strncmp(RT_software.c_str(), "Adobe DNG Converter", 19) != 0
|
&& strncmp(RT_software.c_str(), "Adobe DNG Converter", 19) != 0
|
||||||
|
@ -193,8 +193,17 @@ public:
|
|||||||
int crx_track_selected;
|
int crx_track_selected;
|
||||||
short CR3_CTMDtag;
|
short CR3_CTMDtag;
|
||||||
};
|
};
|
||||||
|
struct CanonLevelsData {
|
||||||
|
unsigned cblack[4];
|
||||||
|
unsigned white;
|
||||||
|
bool black_ok;
|
||||||
|
bool white_ok;
|
||||||
|
CanonLevelsData(): cblack{0}, white{0}, black_ok(false), white_ok(false) {}
|
||||||
|
};
|
||||||
protected:
|
protected:
|
||||||
CanonCR3Data RT_canon_CR3_data;
|
CanonCR3Data RT_canon_CR3_data;
|
||||||
|
|
||||||
|
CanonLevelsData RT_canon_levels_data;
|
||||||
|
|
||||||
float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4];
|
float cam_mul[4], pre_mul[4], cmatrix[3][4], rgb_cam[3][4];
|
||||||
|
|
||||||
|
@ -17,28 +17,82 @@
|
|||||||
* along with RawTherapee. If not, see <https://www.gnu.org/licenses/>.
|
* along with RawTherapee. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sstream>
|
#include <cmath>
|
||||||
#include <iostream>
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
#include <iostream>
|
||||||
|
#include <list>
|
||||||
|
#include <map>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
#include <giomm.h>
|
#include <giomm.h>
|
||||||
#include <glibmm/ustring.h>
|
#include <glibmm/ustring.h>
|
||||||
|
|
||||||
#include "dfmanager.h"
|
#include "dfmanager.h"
|
||||||
#include "../rtgui/options.h"
|
|
||||||
#include "rawimage.h"
|
|
||||||
#include "imagedata.h"
|
#include "imagedata.h"
|
||||||
|
#include "jaggedarray.h"
|
||||||
|
#include "noncopyable.h"
|
||||||
|
#include "pixelsmap.h"
|
||||||
|
#include "rawimage.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
namespace rtengine
|
#include "../rtgui/options.h"
|
||||||
|
|
||||||
|
namespace
|
||||||
{
|
{
|
||||||
|
|
||||||
// *********************** class dfInfo **************************************
|
std::string toUppercase(const std::string& string)
|
||||||
|
{
|
||||||
|
return Glib::ustring(string).uppercase();
|
||||||
|
}
|
||||||
|
|
||||||
|
class dfInfo final
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Glib::ustring pathname; // filename of dark frame
|
||||||
|
std::list<Glib::ustring> pathNames; // other similar dark frames, used for average
|
||||||
|
std::string maker; // manufacturer
|
||||||
|
std::string model; // model
|
||||||
|
int iso; // ISO (gain)
|
||||||
|
double shutter; // shutter or exposure time in sec
|
||||||
|
time_t timestamp; // seconds since 1 Jan 1970
|
||||||
|
|
||||||
|
|
||||||
|
dfInfo(const Glib::ustring &name, const std::string &mak, const std::string &mod, int iso, double shut, time_t t)
|
||||||
|
: pathname(name), maker(mak), model(mod), iso(iso), shutter(shut), timestamp(t), ri(nullptr) {}
|
||||||
|
|
||||||
|
dfInfo(const dfInfo &o)
|
||||||
|
: pathname(o.pathname), maker(o.maker), model(o.model), iso(o.iso), shutter(o.shutter), timestamp(o.timestamp), ri(nullptr) {}
|
||||||
|
~dfInfo();
|
||||||
|
|
||||||
|
dfInfo &operator =(const dfInfo &o);
|
||||||
|
|
||||||
|
// Calculate virtual distance between two shots; different model return infinite
|
||||||
|
double distance(const std::string &mak, const std::string &mod, int iso, double shutter) const;
|
||||||
|
|
||||||
|
static std::string key(const std::string &mak, const std::string &mod, int iso, double shut);
|
||||||
|
std::string key() const
|
||||||
|
{
|
||||||
|
return key(maker, model, iso, shutter);
|
||||||
|
}
|
||||||
|
|
||||||
|
const rtengine::RawImage* getRawImage();
|
||||||
|
const std::vector<rtengine::badPix>& getHotPixels();
|
||||||
|
|
||||||
|
private:
|
||||||
|
rtengine::RawImage* ri; // Dark Frame raw data
|
||||||
|
std::vector<rtengine::badPix> badPixels; // Extracted hot pixels
|
||||||
|
|
||||||
|
void updateBadPixelList(const rtengine::RawImage* df);
|
||||||
|
void updateRawImage();
|
||||||
|
};
|
||||||
|
|
||||||
dfInfo::~dfInfo()
|
dfInfo::~dfInfo()
|
||||||
{
|
{
|
||||||
delete ri;
|
delete ri;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline dfInfo& dfInfo::operator =(const dfInfo &o)
|
inline dfInfo& dfInfo::operator = (const dfInfo &o)
|
||||||
{
|
{
|
||||||
if (this != &o) {
|
if (this != &o) {
|
||||||
pathname = o.pathname;
|
pathname = o.pathname;
|
||||||
@ -48,7 +102,7 @@ inline dfInfo& dfInfo::operator =(const dfInfo &o)
|
|||||||
shutter = o.shutter;
|
shutter = o.shutter;
|
||||||
timestamp = o.timestamp;
|
timestamp = o.timestamp;
|
||||||
|
|
||||||
if( ri ) {
|
if (ri) {
|
||||||
delete ri;
|
delete ri;
|
||||||
ri = nullptr;
|
ri = nullptr;
|
||||||
}
|
}
|
||||||
@ -57,38 +111,13 @@ inline dfInfo& dfInfo::operator =(const dfInfo &o)
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool dfInfo::operator <(const dfInfo &e2) const
|
std::string dfInfo::key(const std::string &mak, const std::string &mod, int iso, double shut)
|
||||||
{
|
|
||||||
if( this->maker.compare( e2.maker) >= 0 ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( this->model.compare( e2.model) >= 0 ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( this->iso >= e2.iso ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( this->shutter >= e2.shutter ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( this->timestamp >= e2.timestamp ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string dfInfo::key(const std::string &mak, const std::string &mod, int iso, double shut )
|
|
||||||
{
|
{
|
||||||
std::ostringstream s;
|
std::ostringstream s;
|
||||||
s << mak << " " << mod << " ";
|
s << mak << " " << mod << " ";
|
||||||
s.width(5);
|
s.width(5);
|
||||||
s << iso << "ISO ";
|
s << iso << "ISO ";
|
||||||
s.precision( 2 );
|
s.precision(2);
|
||||||
s.width(4);
|
s.width(4);
|
||||||
s << shut << "s";
|
s << shut << "s";
|
||||||
return s.str();
|
return s.str();
|
||||||
@ -96,115 +125,106 @@ std::string dfInfo::key(const std::string &mak, const std::string &mod, int iso,
|
|||||||
|
|
||||||
double dfInfo::distance(const std::string &mak, const std::string &mod, int iso, double shutter) const
|
double dfInfo::distance(const std::string &mak, const std::string &mod, int iso, double shutter) const
|
||||||
{
|
{
|
||||||
if( this->maker.compare( mak) != 0 ) {
|
if (this->maker.compare(mak) != 0) {
|
||||||
return INFINITY;
|
return INFINITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( this->model.compare( mod) != 0 ) {
|
if (this->model.compare(mod) != 0) {
|
||||||
return INFINITY;
|
return INFINITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
double dISO = (log(this->iso / 100.) - log(iso / 100.)) / log(2);
|
const double dISO = (log(this->iso / 100.) - log(iso / 100.)) / log(2);
|
||||||
double dShutter = (log(this->shutter) - log(shutter)) / log(2);
|
const double dShutter = (log(this->shutter) - log(shutter)) / log(2);
|
||||||
return sqrt( dISO * dISO + dShutter * dShutter);
|
return std::sqrt(dISO * dISO + dShutter * dShutter);
|
||||||
}
|
}
|
||||||
|
|
||||||
RawImage* dfInfo::getRawImage()
|
const rtengine::RawImage* dfInfo::getRawImage()
|
||||||
{
|
{
|
||||||
if(ri) {
|
if (ri) {
|
||||||
return ri;
|
return ri;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateRawImage();
|
updateRawImage();
|
||||||
updateBadPixelList( ri );
|
updateBadPixelList(ri);
|
||||||
|
|
||||||
return ri;
|
return ri;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<badPix>& dfInfo::getHotPixels()
|
const std::vector<rtengine::badPix>& dfInfo::getHotPixels()
|
||||||
{
|
{
|
||||||
if( !ri ) {
|
if (!ri) {
|
||||||
updateRawImage();
|
updateRawImage();
|
||||||
updateBadPixelList( ri );
|
updateBadPixelList(ri);
|
||||||
}
|
}
|
||||||
|
|
||||||
return badPixels;
|
return badPixels;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* updateRawImage() load into ri the actual pixel data from pathname if there is a single shot
|
/* updateRawImage() load into ri the actual pixel data from pathname if there is a single shot
|
||||||
* otherwise load each file from the pathNames list and extract a template from the media;
|
* otherwise load each file from the pathNames list and extract a template from the media;
|
||||||
* the first file is used also for reading all information other than pixels
|
* the first file is used also for reading all information other than pixels
|
||||||
*/
|
*/
|
||||||
void dfInfo::updateRawImage()
|
void dfInfo::updateRawImage()
|
||||||
{
|
{
|
||||||
typedef unsigned int acc_t;
|
|
||||||
|
|
||||||
if( !pathNames.empty() ) {
|
if (!pathNames.empty()) {
|
||||||
std::list<Glib::ustring>::iterator iName = pathNames.begin();
|
std::list<Glib::ustring>::const_iterator iName = pathNames.begin();
|
||||||
ri = new RawImage(*iName); // First file used also for extra pixels information (width,height, shutter, filters etc.. )
|
ri = new rtengine::RawImage(*iName); // First file used also for extra pixels information (width,height, shutter, filters etc.. )
|
||||||
|
|
||||||
if( ri->loadRaw(true)) {
|
if (ri->loadRaw(true)) {
|
||||||
delete ri;
|
delete ri;
|
||||||
ri = nullptr;
|
ri = nullptr;
|
||||||
} else {
|
} else {
|
||||||
int H = ri->get_height();
|
const int H = ri->get_height();
|
||||||
int W = ri->get_width();
|
const int W = ri->get_width();
|
||||||
ri->compress_image(0);
|
ri->compress_image(0);
|
||||||
int rSize = W * ((ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS) ? 1 : 3);
|
const int rSize = W * ((ri->getSensorType() == rtengine::ST_BAYER || ri->getSensorType() == rtengine::ST_FUJI_XTRANS) ? 1 : 3);
|
||||||
acc_t **acc = new acc_t*[H];
|
rtengine::JaggedArray<float> acc(W, H);
|
||||||
|
|
||||||
for( int row = 0; row < H; row++) {
|
|
||||||
acc[row] = new acc_t[rSize ];
|
|
||||||
}
|
|
||||||
|
|
||||||
// copy first image into accumulators
|
// copy first image into accumulators
|
||||||
for (int row = 0; row < H; row++)
|
for (int row = 0; row < H; row++) {
|
||||||
for (int col = 0; col < rSize; col++) {
|
for (int col = 0; col < rSize; col++) {
|
||||||
acc[row][col] = ri->data[row][col];
|
acc[row][col] = ri->data[row][col];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int nFiles = 1; // First file data already loaded
|
int nFiles = 1; // First file data already loaded
|
||||||
|
|
||||||
for( ++iName; iName != pathNames.end(); ++iName) {
|
for (++iName; iName != pathNames.end(); ++iName) {
|
||||||
RawImage* temp = new RawImage(*iName);
|
rtengine::RawImage temp(*iName);
|
||||||
|
|
||||||
if( !temp->loadRaw(true)) {
|
if (!temp.loadRaw(true)) {
|
||||||
temp->compress_image(0); //\ TODO would be better working on original, because is temporary
|
temp.compress_image(0); //\ TODO would be better working on original, because is temporary
|
||||||
nFiles++;
|
nFiles++;
|
||||||
|
|
||||||
if( ri->getSensorType() == ST_BAYER || ri->getSensorType() == ST_FUJI_XTRANS ) {
|
if (ri->getSensorType() == rtengine::ST_BAYER || ri->getSensorType() == rtengine::ST_FUJI_XTRANS) {
|
||||||
for( int row = 0; row < H; row++) {
|
for (int row = 0; row < H; row++) {
|
||||||
for( int col = 0; col < W; col++) {
|
for (int col = 0; col < W; col++) {
|
||||||
acc[row][col] += temp->data[row][col];
|
acc[row][col] += temp.data[row][col];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for( int row = 0; row < H; row++) {
|
for (int row = 0; row < H; row++) {
|
||||||
for( int col = 0; col < W; col++) {
|
for (int col = 0; col < W; col++) {
|
||||||
acc[row][3 * col + 0] += temp->data[row][3 * col + 0];
|
acc[row][3 * col + 0] += temp.data[row][3 * col + 0];
|
||||||
acc[row][3 * col + 1] += temp->data[row][3 * col + 1];
|
acc[row][3 * col + 1] += temp.data[row][3 * col + 1];
|
||||||
acc[row][3 * col + 2] += temp->data[row][3 * col + 2];
|
acc[row][3 * col + 2] += temp.data[row][3 * col + 2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete temp;
|
|
||||||
}
|
}
|
||||||
|
const float factor = 1.f / nFiles;
|
||||||
for (int row = 0; row < H; row++) {
|
for (int row = 0; row < H; row++) {
|
||||||
for (int col = 0; col < rSize; col++) {
|
for (int col = 0; col < rSize; col++) {
|
||||||
ri->data[row][col] = acc[row][col] / nFiles;
|
ri->data[row][col] = acc[row][col] * factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete [] acc[row];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
delete [] acc;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ri = new RawImage(pathname);
|
ri = new rtengine::RawImage(pathname);
|
||||||
|
|
||||||
if( ri->loadRaw(true)) {
|
if (ri->loadRaw(true)) {
|
||||||
delete ri;
|
delete ri;
|
||||||
ri = nullptr;
|
ri = nullptr;
|
||||||
} else {
|
} else {
|
||||||
@ -213,35 +233,36 @@ void dfInfo::updateRawImage()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dfInfo::updateBadPixelList( RawImage *df )
|
void dfInfo::updateBadPixelList(const rtengine::RawImage *df)
|
||||||
{
|
{
|
||||||
if(!df) {
|
if (!df) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const float threshold = 10.f / 8.f;
|
constexpr float threshold = 10.f / 8.f;
|
||||||
|
|
||||||
if( df->getSensorType() == ST_BAYER || df->getSensorType() == ST_FUJI_XTRANS ) {
|
if (df->getSensorType() == rtengine::ST_BAYER || df->getSensorType() == rtengine::ST_FUJI_XTRANS) {
|
||||||
std::vector<badPix> badPixelsTemp;
|
std::vector<rtengine::badPix> badPixelsTemp;
|
||||||
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp parallel
|
#pragma omp parallel
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
std::vector<badPix> badPixelsThread;
|
std::vector<rtengine::badPix> badPixelsThread;
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp for nowait
|
#pragma omp for nowait
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for( int row = 2; row < df->get_height() - 2; row++)
|
for (int row = 2; row < df->get_height() - 2; ++row) {
|
||||||
for( int col = 2; col < df->get_width() - 2; col++) {
|
for (int col = 2; col < df->get_width() - 2; ++col) {
|
||||||
float m = (df->data[row - 2][col - 2] + df->data[row - 2][col] + df->data[row - 2][col + 2] +
|
const float m = df->data[row - 2][col - 2] + df->data[row - 2][col] + df->data[row - 2][col + 2] +
|
||||||
df->data[row][col - 2] + df->data[row][col + 2] +
|
df->data[row][col - 2] + df->data[row][col + 2] +
|
||||||
df->data[row + 2][col - 2] + df->data[row + 2][col] + df->data[row + 2][col + 2]);
|
df->data[row + 2][col - 2] + df->data[row + 2][col] + df->data[row + 2][col + 2];
|
||||||
|
|
||||||
if( df->data[row][col] > m * threshold ) {
|
if (df->data[row][col] > m * threshold) {
|
||||||
badPixelsThread.emplace_back(col, row);
|
badPixelsThread.emplace_back(col, row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp critical
|
#pragma omp critical
|
||||||
@ -250,48 +271,78 @@ void dfInfo::updateBadPixelList( RawImage *df )
|
|||||||
}
|
}
|
||||||
badPixels.insert(badPixels.end(), badPixelsTemp.begin(), badPixelsTemp.end());
|
badPixels.insert(badPixels.end(), badPixelsTemp.begin(), badPixelsTemp.end());
|
||||||
} else {
|
} else {
|
||||||
for( int row = 1; row < df->get_height() - 1; row++)
|
for (int row = 1; row < df->get_height() - 1; ++row) {
|
||||||
for( int col = 1; col < df->get_width() - 1; col++) {
|
for (int col = 1; col < df->get_width() - 1; ++col) {
|
||||||
float m[3];
|
float m[3];
|
||||||
|
|
||||||
for( int c = 0; c < 3; c++) {
|
for (int c = 0; c < 3; c++) {
|
||||||
m[c] = (df->data[row - 1][3 * (col - 1) + c] + df->data[row - 1][3 * col + c] + df->data[row - 1][3 * (col + 1) + c] +
|
m[c] = df->data[row - 1][3 * (col - 1) + c] + df->data[row - 1][3 * col + c] + df->data[row - 1][3 * (col + 1) + c] +
|
||||||
df->data[row] [3 * (col - 1) + c] + df->data[row] [3 * col + c] +
|
df->data[row] [3 * (col - 1) + c] + df->data[row] [3 * col + c] +
|
||||||
df->data[row + 1][3 * (col - 1) + c] + df->data[row + 1][3 * col + c] + df->data[row + 1][3 * (col + 1) + c]);
|
df->data[row + 1][3 * (col - 1) + c] + df->data[row + 1][3 * col + c] + df->data[row + 1][3 * (col + 1) + c];
|
||||||
}
|
}
|
||||||
|
|
||||||
if( df->data[row][3 * col] > m[0]*threshold || df->data[row][3 * col + 1] > m[1]*threshold || df->data[row][3 * col + 2] > m[2]*threshold) {
|
if (df->data[row][3 * col] > m[0]*threshold || df->data[row][3 * col + 1] > m[1]*threshold || df->data[row][3 * col + 2] > m[2]*threshold) {
|
||||||
badPixels.emplace_back(col, row);
|
badPixels.emplace_back(col, row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( settings->verbose ) {
|
if (rtengine::settings->verbose) {
|
||||||
std::cout << "Extracted " << badPixels.size() << " pixels from darkframe:" << df->get_filename().c_str() << std::endl;
|
std::cout << "Extracted " << badPixels.size() << " pixels from darkframe:" << df->get_filename().c_str() << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************* class DFManager *********************************
|
}
|
||||||
|
|
||||||
void DFManager::init(const Glib::ustring& pathname)
|
class rtengine::DFManager::Implementation final :
|
||||||
|
public NonCopyable
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void init(const Glib::ustring& pathname);
|
||||||
|
Glib::ustring getPathname() const
|
||||||
|
{
|
||||||
|
return currentPath;
|
||||||
|
};
|
||||||
|
void getStat(int& totFiles, int& totTemplates) const;
|
||||||
|
const RawImage* searchDarkFrame(const std::string& mak, const std::string& mod, int iso, double shut, time_t t);
|
||||||
|
const RawImage* searchDarkFrame(const Glib::ustring& filename);
|
||||||
|
const std::vector<badPix>* getHotPixels(const std::string& mak, const std::string& mod, int iso, double shut, time_t t);
|
||||||
|
const std::vector<badPix>* getHotPixels(const Glib::ustring& filename);
|
||||||
|
const std::vector<badPix>* getBadPixels(const std::string& mak, const std::string& mod, const std::string& serial) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
typedef std::multimap<std::string, dfInfo> dfList_t;
|
||||||
|
typedef std::map<std::string, std::vector<badPix> > bpList_t;
|
||||||
|
dfList_t dfList;
|
||||||
|
bpList_t bpList;
|
||||||
|
bool initialized;
|
||||||
|
Glib::ustring currentPath;
|
||||||
|
dfInfo* addFileInfo(const Glib::ustring &filename, bool pool = true);
|
||||||
|
dfInfo* find(const std::string &mak, const std::string &mod, int isospeed, double shut, time_t t);
|
||||||
|
int scanBadPixelsFile(const Glib::ustring &filename);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void rtengine::DFManager::Implementation::init(const Glib::ustring& pathname)
|
||||||
{
|
{
|
||||||
if (pathname.empty()) {
|
if (pathname.empty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
std::vector<Glib::ustring> names;
|
std::vector<Glib::ustring> names;
|
||||||
|
|
||||||
auto dir = Gio::File::create_for_path (pathname);
|
const auto dir = Gio::File::create_for_path(pathname);
|
||||||
if (!dir || !dir->query_exists()) {
|
if (!dir || !dir->query_exists()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
auto enumerator = dir->enumerate_children ("standard::name");
|
const auto enumerator = dir->enumerate_children("standard::name");
|
||||||
|
|
||||||
while (auto file = enumerator->next_file ()) {
|
while (const auto file = enumerator->next_file()) {
|
||||||
names.emplace_back (Glib::build_filename (pathname, file->get_name ()));
|
names.emplace_back(Glib::build_filename(pathname, file->get_name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Glib::Exception&) {}
|
} catch (Glib::Exception&) {}
|
||||||
@ -299,40 +350,40 @@ void DFManager::init(const Glib::ustring& pathname)
|
|||||||
dfList.clear();
|
dfList.clear();
|
||||||
bpList.clear();
|
bpList.clear();
|
||||||
|
|
||||||
for (size_t i = 0; i < names.size(); i++) {
|
for (const auto &name : names) {
|
||||||
size_t lastdot = names[i].find_last_of ('.');
|
const auto lastdot = name.find_last_of('.');
|
||||||
|
|
||||||
if (lastdot != Glib::ustring::npos && names[i].substr(lastdot) == ".badpixels" ) {
|
if (lastdot != Glib::ustring::npos && name.substr(lastdot) == ".badpixels") {
|
||||||
int n = scanBadPixelsFile( names[i] );
|
const int n = scanBadPixelsFile(name);
|
||||||
|
|
||||||
if( n > 0 && settings->verbose) {
|
if (n > 0 && settings->verbose) {
|
||||||
printf("Loaded %s: %d pixels\n", names[i].c_str(), n);
|
printf("Loaded %s: %d pixels\n", name.c_str(), n);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
addFileInfo(names[i]);
|
addFileInfo(name);
|
||||||
} catch( std::exception& e ) {}
|
} catch(std::exception& e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Where multiple shots exist for same group, move filename to list
|
// Where multiple shots exist for same group, move filename to list
|
||||||
for( dfList_t::iterator iter = dfList.begin(); iter != dfList.end(); ++iter ) {
|
for (auto &df : dfList) {
|
||||||
dfInfo &i = iter->second;
|
dfInfo &i = df.second;
|
||||||
|
|
||||||
if( !i.pathNames.empty() && !i.pathname.empty() ) {
|
if (!i.pathNames.empty() && !i.pathname.empty()) {
|
||||||
i.pathNames.push_back( i.pathname );
|
i.pathNames.push_back(i.pathname);
|
||||||
i.pathname.clear();
|
i.pathname.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
if( settings->verbose ) {
|
if (settings->verbose) {
|
||||||
if( !i.pathname.empty() ) {
|
if (!i.pathname.empty()) {
|
||||||
printf( "%s: %s\n", i.key().c_str(), i.pathname.c_str());
|
printf("%s: %s\n", i.key().c_str(), i.pathname.c_str());
|
||||||
} else {
|
} else {
|
||||||
printf( "%s: MEAN of \n ", i.key().c_str());
|
printf("%s: MEAN of \n ", i.key().c_str());
|
||||||
|
|
||||||
for(std::list<Glib::ustring>::iterator path = i.pathNames.begin(); path != i.pathNames.end(); ++path) {
|
for (std::list<Glib::ustring>::iterator path = i.pathNames.begin(); path != i.pathNames.end(); ++path) {
|
||||||
printf("%s, ", path->c_str());
|
printf("%s, ", path->c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -345,9 +396,140 @@ void DFManager::init(const Glib::ustring& pathname)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dfInfo* DFManager::addFileInfo (const Glib::ustring& filename, bool pool)
|
void rtengine::DFManager::Implementation::getStat(int& totFiles, int& totTemplates) const
|
||||||
{
|
{
|
||||||
auto ext = getFileExtension(filename);
|
totFiles = 0;
|
||||||
|
totTemplates = 0;
|
||||||
|
|
||||||
|
for (const auto &df : dfList) {
|
||||||
|
const dfInfo &i = df.second;
|
||||||
|
|
||||||
|
if (i.pathname.empty()) {
|
||||||
|
totTemplates++;
|
||||||
|
totFiles += i.pathNames.size();
|
||||||
|
} else {
|
||||||
|
totFiles++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The search for the best match is twofold:
|
||||||
|
* if perfect matches for iso and shutter are found, then the list is scanned for lesser distance in time
|
||||||
|
* otherwise if no match is found, the whole list is searched for lesser distance in iso and shutter
|
||||||
|
*/
|
||||||
|
const rtengine::RawImage* rtengine::DFManager::Implementation::searchDarkFrame(const std::string& mak, const std::string& mod, int iso, double shut, time_t t)
|
||||||
|
{
|
||||||
|
dfInfo* df = find(toUppercase(mak), toUppercase(mod), iso, shut, t);
|
||||||
|
|
||||||
|
if (df) {
|
||||||
|
return df->getRawImage();
|
||||||
|
} else {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const rtengine::RawImage* rtengine::DFManager::Implementation::searchDarkFrame(const Glib::ustring& filename)
|
||||||
|
{
|
||||||
|
for (auto& df : dfList) {
|
||||||
|
if (df.second.pathname.compare(filename) == 0) {
|
||||||
|
return df.second.getRawImage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dfInfo *df = addFileInfo(filename, false);
|
||||||
|
|
||||||
|
if (df) {
|
||||||
|
return df->getRawImage();
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<rtengine::badPix>* rtengine::DFManager::Implementation::getHotPixels(const Glib::ustring& filename)
|
||||||
|
{
|
||||||
|
for (auto& df : dfList) {
|
||||||
|
if (df.second.pathname.compare(filename) == 0) {
|
||||||
|
return &df.second.getHotPixels();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<rtengine::badPix>* rtengine::DFManager::Implementation::getHotPixels(const std::string& mak, const std::string& mod, int iso, double shut, time_t t)
|
||||||
|
{
|
||||||
|
dfInfo* df = find(toUppercase(mak), toUppercase(mod), iso, shut, t);
|
||||||
|
|
||||||
|
if (df) {
|
||||||
|
if (settings->verbose) {
|
||||||
|
if (!df->pathname.empty()) {
|
||||||
|
printf("Searched hotpixels from %s\n", df->pathname.c_str());
|
||||||
|
} else {
|
||||||
|
if (!df->pathNames.empty()) {
|
||||||
|
printf("Searched hotpixels from template (first %s)\n", df->pathNames.begin()->c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return &df->getHotPixels();
|
||||||
|
} else {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<rtengine::badPix>* rtengine::DFManager::Implementation::getBadPixels(const std::string& mak, const std::string& mod, const std::string& serial) const
|
||||||
|
{
|
||||||
|
bpList_t::const_iterator iter;
|
||||||
|
bool found = false;
|
||||||
|
|
||||||
|
if (!serial.empty()) {
|
||||||
|
// search with serial number first
|
||||||
|
std::ostringstream s;
|
||||||
|
s << mak << " " << mod << " " << serial;
|
||||||
|
iter = bpList.find(s.str());
|
||||||
|
|
||||||
|
if (iter != bpList.end()) {
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings->verbose) {
|
||||||
|
if (found) {
|
||||||
|
printf("%s.badpixels found\n", s.str().c_str());
|
||||||
|
} else {
|
||||||
|
printf("%s.badpixels not found\n", s.str().c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found) {
|
||||||
|
// search without serial number
|
||||||
|
std::ostringstream s;
|
||||||
|
s << mak << " " << mod;
|
||||||
|
iter = bpList.find(s.str());
|
||||||
|
|
||||||
|
if (iter != bpList.end()) {
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings->verbose) {
|
||||||
|
if (found) {
|
||||||
|
printf("%s.badpixels found\n", s.str().c_str());
|
||||||
|
} else {
|
||||||
|
printf("%s.badpixels not found\n", s.str().c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found) {
|
||||||
|
return nullptr;
|
||||||
|
} else {
|
||||||
|
return &(iter->second);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dfInfo* rtengine::DFManager::Implementation::addFileInfo(const Glib::ustring& filename, bool pool)
|
||||||
|
{
|
||||||
|
const auto ext = getFileExtension(filename);
|
||||||
|
|
||||||
if (ext.empty() || !options.is_extention_enabled(ext)) {
|
if (ext.empty() || !options.is_extention_enabled(ext)) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -376,37 +558,34 @@ dfInfo* DFManager::addFileInfo (const Glib::ustring& filename, bool pool)
|
|||||||
}
|
}
|
||||||
|
|
||||||
RawImage ri(filename);
|
RawImage ri(filename);
|
||||||
int res = ri.loadRaw(false); // Read information about shot
|
|
||||||
|
|
||||||
if (res != 0) {
|
if (ri.loadRaw(false) != 0) { // Read information about shot
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
dfList_t::iterator iter;
|
if (!pool) {
|
||||||
|
const dfInfo n(filename, "", "", 0, 0, 0);
|
||||||
if(!pool) {
|
auto iter = dfList.emplace("", n);
|
||||||
dfInfo n(filename, "", "", 0, 0, 0);
|
|
||||||
iter = dfList.emplace("", n);
|
|
||||||
return &(iter->second);
|
return &(iter->second);
|
||||||
}
|
}
|
||||||
|
|
||||||
FramesData idata(filename, std::unique_ptr<RawMetaDataLocation>(new RawMetaDataLocation(ri.get_exifBase(), ri.get_ciffBase(), ri.get_ciffLen())), true);
|
FramesData idata(filename, std::unique_ptr<RawMetaDataLocation>(new RawMetaDataLocation(ri.get_exifBase(), ri.get_ciffBase(), ri.get_ciffLen())), true);
|
||||||
/* Files are added in the map, divided by same maker/model,ISO and shutter*/
|
/* Files are added in the map, divided by same maker/model,ISO and shutter*/
|
||||||
std::string key(dfInfo::key(((Glib::ustring)idata.getMake()).uppercase(), ((Glib::ustring)idata.getModel()).uppercase(), idata.getISOSpeed(), idata.getShutterSpeed()));
|
std::string key(dfInfo::key(toUppercase(idata.getMake()), toUppercase(idata.getModel()), idata.getISOSpeed(), idata.getShutterSpeed()));
|
||||||
iter = dfList.find(key);
|
auto iter = dfList.find(key);
|
||||||
|
|
||||||
if(iter == dfList.end()) {
|
if (iter == dfList.end()) {
|
||||||
dfInfo n(filename, ((Glib::ustring)idata.getMake()).uppercase(), ((Glib::ustring)idata.getModel()).uppercase(), idata.getISOSpeed(), idata.getShutterSpeed(), idata.getDateTimeAsTS());
|
dfInfo n(filename, toUppercase(idata.getMake()), toUppercase(idata.getModel()), idata.getISOSpeed(), idata.getShutterSpeed(), idata.getDateTimeAsTS());
|
||||||
iter = dfList.emplace(key, n);
|
iter = dfList.emplace(key, n);
|
||||||
} else {
|
} else {
|
||||||
while(iter != dfList.end() && iter->second.key() == key && ABS(iter->second.timestamp - idata.getDateTimeAsTS()) > 60 * 60 * 6) { // 6 hour difference
|
while(iter != dfList.end() && iter->second.key() == key && ABS(iter->second.timestamp - idata.getDateTimeAsTS()) > 60 * 60 * 6) { // 6 hour difference
|
||||||
++iter;
|
++iter;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(iter != dfList.end()) {
|
if (iter != dfList.end()) {
|
||||||
iter->second.pathNames.push_back(filename);
|
iter->second.pathNames.push_back(filename);
|
||||||
} else {
|
} else {
|
||||||
dfInfo n(filename, ((Glib::ustring)idata.getMake()).uppercase(), ((Glib::ustring)idata.getModel()).uppercase(), idata.getISOSpeed(), idata.getShutterSpeed(), idata.getDateTimeAsTS());
|
dfInfo n(filename, toUppercase(idata.getMake()), toUppercase(idata.getModel()), idata.getISOSpeed(), idata.getShutterSpeed(), idata.getDateTimeAsTS());
|
||||||
iter = dfList.emplace(key, n);
|
iter = dfList.emplace(key, n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -418,44 +597,23 @@ dfInfo* DFManager::addFileInfo (const Glib::ustring& filename, bool pool)
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DFManager::getStat( int &totFiles, int &totTemplates)
|
dfInfo* rtengine::DFManager::Implementation::find(const std::string& mak, const std::string& mod, int isospeed, double shut, time_t t)
|
||||||
{
|
{
|
||||||
totFiles = 0;
|
if (dfList.empty()) {
|
||||||
totTemplates = 0;
|
|
||||||
|
|
||||||
for( dfList_t::iterator iter = dfList.begin(); iter != dfList.end(); ++iter ) {
|
|
||||||
dfInfo &i = iter->second;
|
|
||||||
|
|
||||||
if( i.pathname.empty() ) {
|
|
||||||
totTemplates++;
|
|
||||||
totFiles += i.pathNames.size();
|
|
||||||
} else {
|
|
||||||
totFiles++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The search for the best match is twofold:
|
|
||||||
* if perfect matches for iso and shutter are found, then the list is scanned for lesser distance in time
|
|
||||||
* otherwise if no match is found, the whole list is searched for lesser distance in iso and shutter
|
|
||||||
*/
|
|
||||||
dfInfo* DFManager::find( const std::string &mak, const std::string &mod, int isospeed, double shut, time_t t )
|
|
||||||
{
|
|
||||||
if( dfList.empty() ) {
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string key( dfInfo::key(mak, mod, isospeed, shut) );
|
const std::string key(dfInfo::key(mak, mod, isospeed, shut));
|
||||||
dfList_t::iterator iter = dfList.find( key );
|
dfList_t::iterator iter = dfList.find(key);
|
||||||
|
|
||||||
if( iter != dfList.end() ) {
|
if (iter != dfList.end()) {
|
||||||
dfList_t::iterator bestMatch = iter;
|
dfList_t::iterator bestMatch = iter;
|
||||||
time_t bestDeltaTime = ABS(iter->second.timestamp - t);
|
time_t bestDeltaTime = ABS(iter->second.timestamp - t);
|
||||||
|
|
||||||
for(++iter; iter != dfList.end() && !key.compare( iter->second.key() ); ++iter ) {
|
for (++iter; iter != dfList.end() && !key.compare(iter->second.key()); ++iter) {
|
||||||
time_t d = ABS(iter->second.timestamp - t );
|
const time_t d = ABS(iter->second.timestamp - t);
|
||||||
|
|
||||||
if( d < bestDeltaTime ) {
|
if (d < bestDeltaTime) {
|
||||||
bestMatch = iter;
|
bestMatch = iter;
|
||||||
bestDeltaTime = d;
|
bestDeltaTime = d;
|
||||||
}
|
}
|
||||||
@ -465,12 +623,12 @@ dfInfo* DFManager::find( const std::string &mak, const std::string &mod, int iso
|
|||||||
} else {
|
} else {
|
||||||
iter = dfList.begin();
|
iter = dfList.begin();
|
||||||
dfList_t::iterator bestMatch = iter;
|
dfList_t::iterator bestMatch = iter;
|
||||||
double bestD = iter->second.distance( mak, mod, isospeed, shut );
|
double bestD = iter->second.distance(mak, mod, isospeed, shut);
|
||||||
|
|
||||||
for( ++iter; iter != dfList.end(); ++iter ) {
|
for (++iter; iter != dfList.end(); ++iter) {
|
||||||
double d = iter->second.distance( mak, mod, isospeed, shut );
|
const double d = iter->second.distance(mak, mod, isospeed, shut);
|
||||||
|
|
||||||
if( d < bestD ) {
|
if (d < bestD) {
|
||||||
bestD = d;
|
bestD = d;
|
||||||
bestMatch = iter;
|
bestMatch = iter;
|
||||||
}
|
}
|
||||||
@ -480,170 +638,107 @@ dfInfo* DFManager::find( const std::string &mak, const std::string &mod, int iso
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RawImage* DFManager::searchDarkFrame( const std::string &mak, const std::string &mod, int iso, double shut, time_t t )
|
int rtengine::DFManager::Implementation::scanBadPixelsFile(const Glib::ustring& filename)
|
||||||
{
|
|
||||||
dfInfo *df = find( ((Glib::ustring)mak).uppercase(), ((Glib::ustring)mod).uppercase(), iso, shut, t );
|
|
||||||
|
|
||||||
if( df ) {
|
|
||||||
return df->getRawImage();
|
|
||||||
} else {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RawImage* DFManager::searchDarkFrame( const Glib::ustring filename )
|
|
||||||
{
|
|
||||||
for ( dfList_t::iterator iter = dfList.begin(); iter != dfList.end(); ++iter ) {
|
|
||||||
if( iter->second.pathname.compare( filename ) == 0 ) {
|
|
||||||
return iter->second.getRawImage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dfInfo *df = addFileInfo( filename, false );
|
|
||||||
|
|
||||||
if(df) {
|
|
||||||
return df->getRawImage();
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
std::vector<badPix> *DFManager::getHotPixels ( const Glib::ustring filename )
|
|
||||||
{
|
|
||||||
for ( dfList_t::iterator iter = dfList.begin(); iter != dfList.end(); ++iter ) {
|
|
||||||
if( iter->second.pathname.compare( filename ) == 0 ) {
|
|
||||||
return &iter->second.getHotPixels();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
std::vector<badPix> *DFManager::getHotPixels ( const std::string &mak, const std::string &mod, int iso, double shut, time_t t )
|
|
||||||
{
|
|
||||||
dfInfo *df = find( ((Glib::ustring)mak).uppercase(), ((Glib::ustring)mod).uppercase(), iso, shut, t );
|
|
||||||
|
|
||||||
if( df ) {
|
|
||||||
if( settings->verbose ) {
|
|
||||||
if( !df->pathname.empty() ) {
|
|
||||||
printf( "Searched hotpixels from %s\n", df->pathname.c_str());
|
|
||||||
} else {
|
|
||||||
if( !df->pathNames.empty() ) {
|
|
||||||
printf( "Searched hotpixels from template (first %s)\n", df->pathNames.begin()->c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return &df->getHotPixels();
|
|
||||||
} else {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int DFManager::scanBadPixelsFile( Glib::ustring filename )
|
|
||||||
{
|
{
|
||||||
FILE *file = ::fopen( filename.c_str(), "r" );
|
FILE *file = ::fopen( filename.c_str(), "r" );
|
||||||
|
|
||||||
if( !file ) {
|
if (!file) {
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t lastdot = filename.find_last_of ('.');
|
const auto lastdot = filename.find_last_of('.');
|
||||||
size_t dirpos1 = filename.find_last_of ('/');
|
auto dirpos1 = filename.find_last_of('/');
|
||||||
size_t dirpos2 = filename.find_last_of ('\\');
|
auto dirpos2 = filename.find_last_of('\\');
|
||||||
|
|
||||||
if( dirpos1 == Glib::ustring::npos && dirpos2 == Glib::ustring::npos ) {
|
if (dirpos1 == Glib::ustring::npos && dirpos2 == Glib::ustring::npos) {
|
||||||
dirpos1 = 0;
|
dirpos1 = 0;
|
||||||
} else if( dirpos1 != Glib::ustring::npos && dirpos2 != Glib::ustring::npos ) {
|
} else if (dirpos1 != Glib::ustring::npos && dirpos2 != Glib::ustring::npos) {
|
||||||
dirpos1 = (dirpos1 > dirpos2 ? dirpos1 : dirpos2);
|
dirpos1 = (dirpos1 > dirpos2 ? dirpos1 : dirpos2);
|
||||||
} else if( dirpos1 == Glib::ustring::npos ) {
|
} else if (dirpos1 == Glib::ustring::npos) {
|
||||||
dirpos1 = dirpos2;
|
dirpos1 = dirpos2;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string makmodel(filename, dirpos1 + 1, lastdot - (dirpos1 + 1) );
|
const std::string makmodel(filename, dirpos1 + 1, lastdot - (dirpos1 + 1));
|
||||||
std::vector<badPix> bp;
|
std::vector<badPix> bp;
|
||||||
char line[256];
|
char line[256];
|
||||||
|
|
||||||
if(fgets(line, sizeof(line), file )) {
|
if (fgets(line, sizeof(line), file)) {
|
||||||
int x, y;
|
int x, y;
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
int numparms = sscanf(line, "%d %d", &x, &y);
|
int numparms = sscanf(line, "%d %d", &x, &y);
|
||||||
|
|
||||||
if( numparms == 1 ) { // only one number in first line means, that this is the offset.
|
if (numparms == 1) { // only one number in first line means, that this is the offset.
|
||||||
offset = x;
|
offset = x;
|
||||||
} else if(numparms == 2) {
|
} else if (numparms == 2) {
|
||||||
bp.emplace_back(x + offset, y + offset);
|
bp.emplace_back(x + offset, y + offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
while( fgets(line, sizeof(line), file ) ) {
|
while(fgets(line, sizeof(line), file)) {
|
||||||
if( sscanf(line, "%d %d", &x, &y) == 2 ) {
|
if (sscanf(line, "%d %d", &x, &y) == 2) {
|
||||||
bp.emplace_back(x + offset, y + offset);
|
bp.emplace_back(x + offset, y + offset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int numPixels = bp.size();
|
const int numPixels = bp.size();
|
||||||
|
|
||||||
if( numPixels > 0 ) {
|
if (numPixels > 0) {
|
||||||
bpList[ makmodel ] = bp;
|
bpList[makmodel] = bp;
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(file);
|
fclose(file);
|
||||||
return numPixels;
|
return numPixels;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<badPix> *DFManager::getBadPixels ( const std::string &mak, const std::string &mod, const std::string &serial)
|
rtengine::DFManager& rtengine::DFManager::getInstance()
|
||||||
{
|
{
|
||||||
bpList_t::iterator iter;
|
static DFManager instance;
|
||||||
bool found = false;
|
return instance;
|
||||||
|
|
||||||
if( !serial.empty() ) {
|
|
||||||
// search with serial number first
|
|
||||||
std::ostringstream s;
|
|
||||||
s << mak << " " << mod << " " << serial;
|
|
||||||
iter = bpList.find( s.str() );
|
|
||||||
|
|
||||||
if( iter != bpList.end() ) {
|
|
||||||
found = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( settings->verbose ) {
|
|
||||||
if(found) {
|
|
||||||
printf("%s.badpixels found\n", s.str().c_str());
|
|
||||||
} else {
|
|
||||||
printf("%s.badpixels not found\n", s.str().c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!found) {
|
|
||||||
// search without serial number
|
|
||||||
std::ostringstream s;
|
|
||||||
s << mak << " " << mod;
|
|
||||||
iter = bpList.find( s.str() );
|
|
||||||
|
|
||||||
if( iter != bpList.end() ) {
|
|
||||||
found = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( settings->verbose ) {
|
|
||||||
if(found) {
|
|
||||||
printf("%s.badpixels found\n", s.str().c_str());
|
|
||||||
} else {
|
|
||||||
printf("%s.badpixels not found\n", s.str().c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!found) {
|
|
||||||
return nullptr;
|
|
||||||
} else {
|
|
||||||
return &(iter->second);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Global variable
|
void rtengine::DFManager::init(const Glib::ustring& pathname)
|
||||||
DFManager dfm;
|
{
|
||||||
|
implementation->init(pathname);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Glib::ustring rtengine::DFManager::getPathname() const
|
||||||
|
{
|
||||||
|
return implementation->getPathname();
|
||||||
|
}
|
||||||
|
|
||||||
|
void rtengine::DFManager::getStat(int& totFiles, int& totTemplates) const
|
||||||
|
{
|
||||||
|
implementation->getStat(totFiles, totTemplates);
|
||||||
|
}
|
||||||
|
|
||||||
|
const rtengine::RawImage* rtengine::DFManager::searchDarkFrame(const std::string& mak, const std::string& mod, int iso, double shut, time_t t)
|
||||||
|
{
|
||||||
|
return implementation->searchDarkFrame(mak, mod, iso, shut, t);
|
||||||
|
}
|
||||||
|
|
||||||
|
const rtengine::RawImage* rtengine::DFManager::searchDarkFrame(const Glib::ustring& filename)
|
||||||
|
{
|
||||||
|
return implementation->searchDarkFrame(filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<rtengine::badPix>* rtengine::DFManager::getHotPixels(const std::string& mak, const std::string& mod, int iso, double shut, time_t t)
|
||||||
|
{
|
||||||
|
return implementation->getHotPixels(mak, mod, iso, shut, t);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<rtengine::badPix>* rtengine::DFManager::getHotPixels(const Glib::ustring& filename)
|
||||||
|
{
|
||||||
|
return implementation->getHotPixels(filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::vector<rtengine::badPix>* rtengine::DFManager::getBadPixels(const std::string& mak, const std::string& mod, const std::string& serial) const
|
||||||
|
{
|
||||||
|
return implementation->getBadPixels(mak, mod, serial);
|
||||||
|
}
|
||||||
|
|
||||||
|
rtengine::DFManager::DFManager() :
|
||||||
|
implementation(new Implementation)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
rtengine::DFManager::~DFManager() = default;
|
||||||
|
@ -18,89 +18,40 @@
|
|||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <cmath>
|
#include <memory>
|
||||||
#include <list>
|
|
||||||
#include <map>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#include <glibmm/ustring.h>
|
#include <glibmm/ustring.h>
|
||||||
|
|
||||||
#include "pixelsmap.h"
|
|
||||||
|
|
||||||
namespace rtengine
|
namespace rtengine
|
||||||
{
|
{
|
||||||
|
|
||||||
|
struct badPix;
|
||||||
|
|
||||||
class RawImage;
|
class RawImage;
|
||||||
class dfInfo final
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
Glib::ustring pathname; // filename of dark frame
|
|
||||||
std::list<Glib::ustring> pathNames; // other similar dark frames, used for average
|
|
||||||
std::string maker; ///< manufacturer
|
|
||||||
std::string model; ///< model
|
|
||||||
int iso; ///< ISO (gain)
|
|
||||||
double shutter; ///< shutter or exposure time in sec
|
|
||||||
time_t timestamp; ///< seconds since 1 Jan 1970
|
|
||||||
|
|
||||||
|
|
||||||
dfInfo(const Glib::ustring &name, const std::string &mak, const std::string &mod, int iso, double shut, time_t t)
|
|
||||||
: pathname(name), maker(mak), model(mod), iso(iso), shutter(shut), timestamp(t), ri(nullptr) {}
|
|
||||||
|
|
||||||
dfInfo( const dfInfo &o)
|
|
||||||
: pathname(o.pathname), maker(o.maker), model(o.model), iso(o.iso), shutter(o.shutter), timestamp(o.timestamp), ri(nullptr) {}
|
|
||||||
~dfInfo();
|
|
||||||
|
|
||||||
dfInfo &operator =(const dfInfo &o);
|
|
||||||
bool operator <(const dfInfo &e2) const;
|
|
||||||
|
|
||||||
// Calculate virtual distance between two shots; different model return infinite
|
|
||||||
double distance(const std::string &mak, const std::string &mod, int iso, double shutter) const;
|
|
||||||
|
|
||||||
static std::string key(const std::string &mak, const std::string &mod, int iso, double shut );
|
|
||||||
std::string key()
|
|
||||||
{
|
|
||||||
return key( maker, model, iso, shutter);
|
|
||||||
}
|
|
||||||
|
|
||||||
RawImage *getRawImage();
|
|
||||||
std::vector<badPix> &getHotPixels();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
RawImage *ri; ///< Dark Frame raw data
|
|
||||||
std::vector<badPix> badPixels; ///< Extracted hot pixels
|
|
||||||
|
|
||||||
void updateBadPixelList( RawImage *df );
|
|
||||||
void updateRawImage();
|
|
||||||
};
|
|
||||||
|
|
||||||
class DFManager final
|
class DFManager final
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void init(const Glib::ustring &pathname);
|
static DFManager& getInstance();
|
||||||
Glib::ustring getPathname()
|
|
||||||
{
|
|
||||||
return currentPath;
|
|
||||||
};
|
|
||||||
void getStat( int &totFiles, int &totTemplate);
|
|
||||||
RawImage *searchDarkFrame( const std::string &mak, const std::string &mod, int iso, double shut, time_t t );
|
|
||||||
RawImage *searchDarkFrame( const Glib::ustring filename );
|
|
||||||
std::vector<badPix> *getHotPixels ( const std::string &mak, const std::string &mod, int iso, double shut, time_t t );
|
|
||||||
std::vector<badPix> *getHotPixels ( const Glib::ustring filename );
|
|
||||||
std::vector<badPix> *getBadPixels ( const std::string &mak, const std::string &mod, const std::string &serial);
|
|
||||||
|
|
||||||
protected:
|
void init(const Glib::ustring& pathname);
|
||||||
typedef std::multimap<std::string, dfInfo> dfList_t;
|
Glib::ustring getPathname() const;
|
||||||
typedef std::map<std::string, std::vector<badPix> > bpList_t;
|
void getStat(int& totFiles, int& totTemplates) const;
|
||||||
dfList_t dfList;
|
const RawImage* searchDarkFrame(const std::string& mak, const std::string& mod, int iso, double shut, time_t t);
|
||||||
bpList_t bpList;
|
const RawImage* searchDarkFrame(const Glib::ustring& filename);
|
||||||
bool initialized;
|
const std::vector<badPix>* getHotPixels(const std::string& mak, const std::string& mod, int iso, double shut, time_t t);
|
||||||
Glib::ustring currentPath;
|
const std::vector<badPix>* getHotPixels(const Glib::ustring& filename);
|
||||||
dfInfo *addFileInfo(const Glib::ustring &filename, bool pool = true );
|
const std::vector<badPix>* getBadPixels(const std::string& mak, const std::string& mod, const std::string& serial) const;
|
||||||
dfInfo *find( const std::string &mak, const std::string &mod, int isospeed, double shut, time_t t );
|
|
||||||
int scanBadPixelsFile( Glib::ustring filename );
|
private:
|
||||||
|
DFManager();
|
||||||
|
~DFManager();
|
||||||
|
|
||||||
|
class Implementation;
|
||||||
|
|
||||||
|
const std::unique_ptr<Implementation> implementation;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern DFManager dfm;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -92,7 +92,7 @@ int init (const Settings* s, const Glib::ustring& baseDir, const Glib::ustring&
|
|||||||
#pragma omp section
|
#pragma omp section
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
dfm.init(s->darkFramesPath);
|
DFManager::getInstance().init(s->darkFramesPath);
|
||||||
}
|
}
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
#pragma omp section
|
#pragma omp section
|
||||||
|
@ -617,6 +617,7 @@ struct local_params {
|
|||||||
float laplacexp;
|
float laplacexp;
|
||||||
float balanexp;
|
float balanexp;
|
||||||
float linear;
|
float linear;
|
||||||
|
int fullim;
|
||||||
int expmet;
|
int expmet;
|
||||||
int softmet;
|
int softmet;
|
||||||
int blurmet;
|
int blurmet;
|
||||||
@ -895,7 +896,15 @@ static void calcLocalParams(int sp, int oW, int oH, const LocallabParams& locall
|
|||||||
lp.laplacexp = locallab.spots.at(sp).laplacexp;
|
lp.laplacexp = locallab.spots.at(sp).laplacexp;
|
||||||
lp.balanexp = locallab.spots.at(sp).balanexp;
|
lp.balanexp = locallab.spots.at(sp).balanexp;
|
||||||
lp.linear = locallab.spots.at(sp).linear;
|
lp.linear = locallab.spots.at(sp).linear;
|
||||||
|
if (locallab.spots.at(sp).spotMethod == "norm") {
|
||||||
|
lp.fullim = 0;
|
||||||
|
} else if(locallab.spots.at(sp).spotMethod == "exc"){
|
||||||
|
lp.fullim = 1;
|
||||||
|
} else if (locallab.spots.at(sp).spotMethod == "full"){
|
||||||
|
lp.fullim = 2;
|
||||||
|
}
|
||||||
|
// printf("Lpfullim=%i\n", lp.fullim);
|
||||||
|
|
||||||
lp.fftColorMask = locallab.spots.at(sp).fftColorMask;
|
lp.fftColorMask = locallab.spots.at(sp).fftColorMask;
|
||||||
lp.prevdE = prevDeltaE;
|
lp.prevdE = prevDeltaE;
|
||||||
lp.showmaskcolmet = llColorMask;
|
lp.showmaskcolmet = llColorMask;
|
||||||
@ -3316,7 +3325,7 @@ void ImProcFunctions::ciecamloc_02float(const struct local_params& lp, int sp, L
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//others "Lab" threatment...to adapt
|
//others "Lab" treatment...to adapt
|
||||||
|
|
||||||
if(wavcurvejz || mjjz != 0.f || lp.mCjz != 0.f) {//local contrast wavelet and clarity
|
if(wavcurvejz || mjjz != 0.f || lp.mCjz != 0.f) {//local contrast wavelet and clarity
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
@ -3680,7 +3689,7 @@ void ImProcFunctions::ciecamloc_02float(const struct local_params& lp, int sp, L
|
|||||||
if(mocam == 0 || mocam == 1 || call == 1 || call == 2 || call == 10) {//call=2 vibrance warm-cool - call = 10 take into account "mean luminance Yb for Jz
|
if(mocam == 0 || mocam == 1 || call == 1 || call == 2 || call == 10) {//call=2 vibrance warm-cool - call = 10 take into account "mean luminance Yb for Jz
|
||||||
//begin ciecam
|
//begin ciecam
|
||||||
if (settings->verbose && (mocam == 0 || mocam == 1 || call == 1)) {//display only if choice cam16
|
if (settings->verbose && (mocam == 0 || mocam == 1 || call == 1)) {//display only if choice cam16
|
||||||
//informations on Cam16 scene conditions - allows user to see choices's incidences
|
//information on Cam16 scene conditions - allows user to see choices's incidences
|
||||||
float maxicam = -1000.f;
|
float maxicam = -1000.f;
|
||||||
float maxicamq = -1000.f;
|
float maxicamq = -1000.f;
|
||||||
float maxisat = -1000.f;
|
float maxisat = -1000.f;
|
||||||
@ -8089,7 +8098,8 @@ void ImProcFunctions::InverseColorLight_Local(bool tonequ, bool tonecurv, int sp
|
|||||||
void ImProcFunctions::calc_ref(int sp, LabImage * original, LabImage * transformed, int cx, int cy, int oW, int oH, int sk, double & huerefblur, double & chromarefblur, double & lumarefblur, double & hueref, double & chromaref, double & lumaref, double & sobelref, float & avg, const LocwavCurve & locwavCurveden, bool locwavdenutili)
|
void ImProcFunctions::calc_ref(int sp, LabImage * original, LabImage * transformed, int cx, int cy, int oW, int oH, int sk, double & huerefblur, double & chromarefblur, double & lumarefblur, double & hueref, double & chromaref, double & lumaref, double & sobelref, float & avg, const LocwavCurve & locwavCurveden, bool locwavdenutili)
|
||||||
{
|
{
|
||||||
if (params->locallab.enabled) {
|
if (params->locallab.enabled) {
|
||||||
//always calculate hueref, chromaref, lumaref before others operations use in normal mode for all modules exceprt denoise
|
// always calculate hueref, chromaref, lumaref before others operations
|
||||||
|
// use in normal mode for all modules except denoise
|
||||||
struct local_params lp;
|
struct local_params lp;
|
||||||
calcLocalParams(sp, oW, oH, params->locallab, lp, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, locwavCurveden, locwavdenutili);
|
calcLocalParams(sp, oW, oH, params->locallab, lp, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, locwavCurveden, locwavdenutili);
|
||||||
int begy = lp.yc - lp.lyT;
|
int begy = lp.yc - lp.lyT;
|
||||||
@ -8317,10 +8327,20 @@ const int fftw_size[] = {18144, 18000, 17920, 17836, 17820, 17640, 17600, 17550,
|
|||||||
int N_fftwsize = sizeof(fftw_size) / sizeof(fftw_size[0]);
|
int N_fftwsize = sizeof(fftw_size) / sizeof(fftw_size[0]);
|
||||||
|
|
||||||
|
|
||||||
void optfft(int N_fftwsize, int &bfh, int &bfw, int &bfhr, int &bfwr, struct local_params& lp, int H, int W, int &xstart, int &ystart, int &xend, int ¥d, int cx, int cy)
|
void optfft(int N_fftwsize, int &bfh, int &bfw, int &bfhr, int &bfwr, struct local_params& lp, int H, int W, int &xstart, int &ystart, int &xend, int ¥d, int cx, int cy, int fulima)
|
||||||
{
|
{
|
||||||
int ftsizeH = 1;
|
int ftsizeH = 1;
|
||||||
int ftsizeW = 1;
|
int ftsizeW = 1;
|
||||||
|
int deltaw = 150;
|
||||||
|
int deltah = 150;
|
||||||
|
|
||||||
|
if(W < 4000) {
|
||||||
|
deltaw = 80;
|
||||||
|
}
|
||||||
|
if(H < 4000) {
|
||||||
|
deltah = 80;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
for (int ft = 0; ft < N_fftwsize; ft++) { //find best values
|
for (int ft = 0; ft < N_fftwsize; ft++) { //find best values
|
||||||
if (fftw_size[ft] <= bfh) {
|
if (fftw_size[ft] <= bfh) {
|
||||||
@ -8335,6 +8355,31 @@ void optfft(int N_fftwsize, int &bfh, int &bfw, int &bfhr, int &bfwr, struct loc
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(fulima == 2) {// if full image, the ftsizeH and ftsizeW is a bit larger (about 10 to 200 pixels) than the image dimensions so that it is fully processed (consumes a bit more resources)
|
||||||
|
for (int ftfu = 0; ftfu < N_fftwsize; ftfu++) { //find best values
|
||||||
|
if (fftw_size[ftfu] <= (H + deltah)) {
|
||||||
|
ftsizeH = fftw_size[ftfu];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int ftfu = 0; ftfu < N_fftwsize; ftfu++) { //find best values
|
||||||
|
if (fftw_size[ftfu] <= (W + deltaw)) {
|
||||||
|
ftsizeW = fftw_size[ftfu];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings->verbose) {
|
||||||
|
if(fulima == 2) {
|
||||||
|
printf("Full image: ftsizeWF=%i ftsizeH=%i\n", ftsizeW, ftsizeH);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
printf("ftsizeW=%i ftsizeH=%i\n", ftsizeW, ftsizeH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//optimize with size fftw
|
//optimize with size fftw
|
||||||
bool reduW = false;
|
bool reduW = false;
|
||||||
@ -8373,7 +8418,6 @@ void optfft(int N_fftwsize, int &bfh, int &bfw, int &bfhr, int &bfwr, struct loc
|
|||||||
reduW = true;
|
reduW = true;
|
||||||
exec = false;
|
exec = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//new values optimized
|
//new values optimized
|
||||||
ystart = rtengine::max(static_cast<int>(lp.yc - lp.lyT) - cy, 0);
|
ystart = rtengine::max(static_cast<int>(lp.yc - lp.lyT) - cy, 0);
|
||||||
yend = rtengine::min(static_cast<int>(lp.yc + lp.ly) - cy, H);
|
yend = rtengine::min(static_cast<int>(lp.yc + lp.ly) - cy, H);
|
||||||
@ -8552,7 +8596,7 @@ void ImProcFunctions::transit_shapedetect2(int sp, float meantm, float stdtm, in
|
|||||||
int bfhr = bfh;
|
int bfhr = bfh;
|
||||||
int bfwr = bfw;
|
int bfwr = bfw;
|
||||||
if (lp.blurcolmask >= 0.25f && lp.fftColorMask && call == 2) {
|
if (lp.blurcolmask >= 0.25f && lp.fftColorMask && call == 2) {
|
||||||
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy);
|
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy, lp.fullim);
|
||||||
}
|
}
|
||||||
|
|
||||||
bfh = bfhr;
|
bfh = bfhr;
|
||||||
@ -10495,7 +10539,7 @@ void ImProcFunctions::wavcontrast4(struct local_params& lp, float ** tmp, float
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//gamma and slope residual image - be carefull memory
|
//gamma and slope residual image - be careful memory
|
||||||
bool tonecur = false;
|
bool tonecur = false;
|
||||||
const Glib::ustring profile = params->icm.workingProfile;
|
const Glib::ustring profile = params->icm.workingProfile;
|
||||||
bool isworking = (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1");
|
bool isworking = (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1");
|
||||||
@ -10542,7 +10586,7 @@ void ImProcFunctions::wavcontrast4(struct local_params& lp, float ** tmp, float
|
|||||||
cmsHTRANSFORM dummy = nullptr;
|
cmsHTRANSFORM dummy = nullptr;
|
||||||
int ill =0;
|
int ill =0;
|
||||||
workingtrc(tmpImage, tmpImage, W_Level, H_Level, -5, prof, 2.4, 12.92310, ill, 0, dummy, true, false, false);
|
workingtrc(tmpImage, tmpImage, W_Level, H_Level, -5, prof, 2.4, 12.92310, ill, 0, dummy, true, false, false);
|
||||||
workingtrc(tmpImage, tmpImage, W_Level, H_Level, 1, prof, lp.residgam, lp.residslop, ill, 0, dummy, false, true, true);//be carefull no gamut control
|
workingtrc(tmpImage, tmpImage, W_Level, H_Level, 1, prof, lp.residgam, lp.residslop, ill, 0, dummy, false, true, true);//be careful no gamut control
|
||||||
rgb2lab(*tmpImage, *labresid, params->icm.workingProfile);
|
rgb2lab(*tmpImage, *labresid, params->icm.workingProfile);
|
||||||
delete tmpImage;
|
delete tmpImage;
|
||||||
|
|
||||||
@ -10925,7 +10969,7 @@ void ImProcFunctions::DeNoise(int call, float * slidL, float * slida, float * sl
|
|||||||
float gamma = lp.noisegam;
|
float gamma = lp.noisegam;
|
||||||
rtengine::GammaValues g_a; //gamma parameters
|
rtengine::GammaValues g_a; //gamma parameters
|
||||||
double pwr = 1.0 / (double) lp.noisegam;//default 3.0 - gamma Lab
|
double pwr = 1.0 / (double) lp.noisegam;//default 3.0 - gamma Lab
|
||||||
double ts = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
||||||
|
|
||||||
if(gamma > 1.f) {
|
if(gamma > 1.f) {
|
||||||
@ -11640,7 +11684,7 @@ void ImProcFunctions::DeNoise(int call, float * slidL, float * slida, float * sl
|
|||||||
float gamma = lp.noisegam;
|
float gamma = lp.noisegam;
|
||||||
rtengine::GammaValues g_a; //gamma parameters
|
rtengine::GammaValues g_a; //gamma parameters
|
||||||
double pwr = 1.0 / (double) lp.noisegam;//default 3.0 - gamma Lab
|
double pwr = 1.0 / (double) lp.noisegam;//default 3.0 - gamma Lab
|
||||||
double ts = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
||||||
if(gamma > 1.f) {
|
if(gamma > 1.f) {
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
@ -13660,7 +13704,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
|
|
||||||
if (bfw >= mSP && bfh >= mSP) {
|
if (bfw >= mSP && bfh >= mSP) {
|
||||||
if (lp.blurmet == 0 && (fft || lp.rad > 30.0)) {
|
if (lp.blurmet == 0 && (fft || lp.rad > 30.0)) {
|
||||||
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy);
|
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy, lp.fullim);
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::unique_ptr<LabImage> bufgbi(new LabImage(TW, TH));
|
const std::unique_ptr<LabImage> bufgbi(new LabImage(TW, TH));
|
||||||
@ -14977,7 +15021,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
|
|
||||||
if (bfw >= mSP && bfh > mSP) {
|
if (bfw >= mSP && bfh > mSP) {
|
||||||
if (lp.ftwreti) {
|
if (lp.ftwreti) {
|
||||||
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy);
|
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy, lp.fullim);
|
||||||
}
|
}
|
||||||
|
|
||||||
array2D<float> buflight(bfw, bfh);
|
array2D<float> buflight(bfw, bfh);
|
||||||
@ -15732,7 +15776,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
float gamma1 = params->locallab.spots.at(sp).vibgam;
|
float gamma1 = params->locallab.spots.at(sp).vibgam;
|
||||||
rtengine::GammaValues g_a; //gamma parameters
|
rtengine::GammaValues g_a; //gamma parameters
|
||||||
double pwr1 = 1.0 / (double) gamma1;//default 3.0 - gamma Lab
|
double pwr1 = 1.0 / (double) gamma1;//default 3.0 - gamma Lab
|
||||||
double ts1 = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts1 = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
@ -15757,7 +15801,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
// float gamma = params->locallab.spots.at(sp).vibgam;
|
// float gamma = params->locallab.spots.at(sp).vibgam;
|
||||||
// rtengine::GammaValues g_a; //gamma parameters
|
// rtengine::GammaValues g_a; //gamma parameters
|
||||||
// double pwr = 1.0 / (double) gamma;//default 3.0 - gamma Lab
|
// double pwr = 1.0 / (double) gamma;//default 3.0 - gamma Lab
|
||||||
// double ts = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
// double ts = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
// rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
// rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
||||||
|
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
@ -16141,7 +16185,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
if (bfw >= mSP && bfh >= mSP) {
|
if (bfw >= mSP && bfh >= mSP) {
|
||||||
|
|
||||||
if (lp.softmet == 1) {
|
if (lp.softmet == 1) {
|
||||||
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy);
|
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy, lp.fullim);
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::unique_ptr<LabImage> bufexporig(new LabImage(bfw, bfh));
|
const std::unique_ptr<LabImage> bufexporig(new LabImage(bfw, bfh));
|
||||||
@ -16267,7 +16311,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
|
|
||||||
if (bfw >= mSPwav && bfh >= mSPwav) {//avoid too small spot for wavelet
|
if (bfw >= mSPwav && bfh >= mSPwav) {//avoid too small spot for wavelet
|
||||||
if (lp.ftwlc) {
|
if (lp.ftwlc) {
|
||||||
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy);
|
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy, lp.fullim);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<LabImage> bufmaskblurlc;
|
std::unique_ptr<LabImage> bufmaskblurlc;
|
||||||
@ -16483,7 +16527,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
float gamma = lp.gamlc;
|
float gamma = lp.gamlc;
|
||||||
rtengine::GammaValues g_a; //gamma parameters
|
rtengine::GammaValues g_a; //gamma parameters
|
||||||
double pwr = 1.0 / (double) lp.gamlc;//default 3.0 - gamma Lab
|
double pwr = 1.0 / (double) lp.gamlc;//default 3.0 - gamma Lab
|
||||||
double ts = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
||||||
|
|
||||||
if(gamma != 1.f) {
|
if(gamma != 1.f) {
|
||||||
@ -16782,7 +16826,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
float gamma1 = params->locallab.spots.at(sp).shargam;
|
float gamma1 = params->locallab.spots.at(sp).shargam;
|
||||||
rtengine::GammaValues g_a; //gamma parameters
|
rtengine::GammaValues g_a; //gamma parameters
|
||||||
double pwr1 = 1.0 / (double) gamma1;//default 3.0 - gamma Lab
|
double pwr1 = 1.0 / (double) gamma1;//default 3.0 - gamma Lab
|
||||||
double ts1 = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts1 = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
@ -16808,7 +16852,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
/*
|
/*
|
||||||
float gamma = params->locallab.spots.at(sp).shargam;
|
float gamma = params->locallab.spots.at(sp).shargam;
|
||||||
double pwr = 1.0 / (double) gamma;//default 3.0 - gamma Lab
|
double pwr = 1.0 / (double) gamma;//default 3.0 - gamma Lab
|
||||||
double ts = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
||||||
*/
|
*/
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
@ -16837,7 +16881,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
float gamma1 = params->locallab.spots.at(sp).shargam;
|
float gamma1 = params->locallab.spots.at(sp).shargam;
|
||||||
rtengine::GammaValues g_a; //gamma parameters
|
rtengine::GammaValues g_a; //gamma parameters
|
||||||
double pwr1 = 1.0 / (double) gamma1;//default 3.0 - gamma Lab
|
double pwr1 = 1.0 / (double) gamma1;//default 3.0 - gamma Lab
|
||||||
double ts1 = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts1 = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
@ -16861,7 +16905,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
/*
|
/*
|
||||||
float gamma = params->locallab.spots.at(sp).shargam;
|
float gamma = params->locallab.spots.at(sp).shargam;
|
||||||
double pwr = 1.0 / (double) gamma;//default 3.0 - gamma Lab
|
double pwr = 1.0 / (double) gamma;//default 3.0 - gamma Lab
|
||||||
double ts = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
||||||
*/
|
*/
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
@ -16903,7 +16947,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
float gamma1 = params->locallab.spots.at(sp).shargam;
|
float gamma1 = params->locallab.spots.at(sp).shargam;
|
||||||
rtengine::GammaValues g_a; //gamma parameters
|
rtengine::GammaValues g_a; //gamma parameters
|
||||||
double pwr1 = 1.0 / (double) gamma1;//default 3.0 - gamma Lab
|
double pwr1 = 1.0 / (double) gamma1;//default 3.0 - gamma Lab
|
||||||
double ts1 = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts1 = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
#ifdef _OPENMP
|
#ifdef _OPENMP
|
||||||
@ -16928,7 +16972,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
/*
|
/*
|
||||||
float gamma = params->locallab.spots.at(sp).shargam;
|
float gamma = params->locallab.spots.at(sp).shargam;
|
||||||
double pwr = 1.0 / (double) gamma;//default 3.0 - gamma Lab
|
double pwr = 1.0 / (double) gamma;//default 3.0 - gamma Lab
|
||||||
double ts = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
||||||
*/
|
*/
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
@ -16983,7 +17027,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
if (bfw >= mSP && bfh >= mSP) {
|
if (bfw >= mSP && bfh >= mSP) {
|
||||||
|
|
||||||
if (lp.expmet == 1 || lp.expmet == 0) {
|
if (lp.expmet == 1 || lp.expmet == 0) {
|
||||||
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy);
|
optfft(N_fftwsize, bfh, bfw, bfhr, bfwr, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy, lp.fullim);
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::unique_ptr<LabImage> bufexporig(new LabImage(bfw, bfh));
|
const std::unique_ptr<LabImage> bufexporig(new LabImage(bfw, bfh));
|
||||||
@ -17014,7 +17058,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
float gamma1 = lp.gamex;
|
float gamma1 = lp.gamex;
|
||||||
rtengine::GammaValues g_a; //gamma parameters
|
rtengine::GammaValues g_a; //gamma parameters
|
||||||
double pwr1 = 1.0 / (double) lp.gamex;//default 3.0 - gamma Lab
|
double pwr1 = 1.0 / (double) lp.gamex;//default 3.0 - gamma Lab
|
||||||
double ts1 = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts1 = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
||||||
|
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
@ -17334,7 +17378,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
float gamma = lp.gamex;
|
float gamma = lp.gamex;
|
||||||
rtengine::GammaValues g_a; //gamma parameters
|
rtengine::GammaValues g_a; //gamma parameters
|
||||||
double pwr = 1.0 / (double) lp.gamex;//default 3.0 - gamma Lab
|
double pwr = 1.0 / (double) lp.gamex;//default 3.0 - gamma Lab
|
||||||
double ts = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
||||||
*/
|
*/
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
@ -17513,7 +17557,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
if (bfw >= mSP && bfh >= mSP) {
|
if (bfw >= mSP && bfh >= mSP) {
|
||||||
|
|
||||||
if (lp.blurcolmask >= 0.25f && lp.fftColorMask && call == 2) {
|
if (lp.blurcolmask >= 0.25f && lp.fftColorMask && call == 2) {
|
||||||
optfft(N_fftwsize, bfh, bfw, bfh, bfw, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy);
|
optfft(N_fftwsize, bfh, bfw, bfh, bfw, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy, lp.fullim);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<LabImage> bufcolorig;
|
std::unique_ptr<LabImage> bufcolorig;
|
||||||
@ -17573,7 +17617,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
float gamma1 = lp.gamc;
|
float gamma1 = lp.gamc;
|
||||||
rtengine::GammaValues g_a; //gamma parameters
|
rtengine::GammaValues g_a; //gamma parameters
|
||||||
double pwr1 = 1.0 / (double) lp.gamc;//default 3.0 - gamma Lab
|
double pwr1 = 1.0 / (double) lp.gamc;//default 3.0 - gamma Lab
|
||||||
double ts1 = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts1 = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr1, ts1, g_a); // call to calcGamma with selected gamma and slope
|
||||||
|
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
@ -18601,7 +18645,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
float gamma = lp.gamc;
|
float gamma = lp.gamc;
|
||||||
rtengine::GammaValues g_a; //gamma parameters
|
rtengine::GammaValues g_a; //gamma parameters
|
||||||
double pwr = 1.0 / (double) lp.gamc;//default 3.0 - gamma Lab
|
double pwr = 1.0 / (double) lp.gamc;//default 3.0 - gamma Lab
|
||||||
double ts = 9.03296;//always the same 'slope' in the extrem shadows - slope Lab
|
double ts = 9.03296;//always the same 'slope' in the extreme shadows - slope Lab
|
||||||
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
rtengine::Color::calcGamma(pwr, ts, g_a); // call to calcGamma with selected gamma and slope
|
||||||
*/
|
*/
|
||||||
if(gamma1 != 1.f) {
|
if(gamma1 != 1.f) {
|
||||||
@ -18783,7 +18827,7 @@ void ImProcFunctions::Lab_Local(
|
|||||||
if (bfw >= mSP && bfh >= mSP) {
|
if (bfw >= mSP && bfh >= mSP) {
|
||||||
|
|
||||||
if (lp.blurma >= 0.25f && lp.fftma && call == 2) {
|
if (lp.blurma >= 0.25f && lp.fftma && call == 2) {
|
||||||
optfft(N_fftwsize, bfh, bfw, bfh, bfw, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy);
|
optfft(N_fftwsize, bfh, bfw, bfh, bfw, lp, original->H, original->W, xstart, ystart, xend, yend, cx, cy, lp.fullim);
|
||||||
}
|
}
|
||||||
array2D<float> blechro(bfw, bfh);
|
array2D<float> blechro(bfw, bfh);
|
||||||
array2D<float> ble(bfw, bfh);
|
array2D<float> ble(bfw, bfh);
|
||||||
|
@ -301,17 +301,18 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (params->wavelet.denmethod == "equ") {
|
cp.denmet = 4;
|
||||||
cp.denmet = 0;
|
//if (params->wavelet.denmethod == "equ") {
|
||||||
} else if (params->wavelet.denmethod == "high") {
|
// cp.denmet = 0;
|
||||||
cp.denmet = 1;
|
//} else if (params->wavelet.denmethod == "high") {
|
||||||
} else if (params->wavelet.denmethod == "low") {
|
// cp.denmet = 1;
|
||||||
cp.denmet = 2;
|
//} else if (params->wavelet.denmethod == "low") {
|
||||||
} else if (params->wavelet.denmethod == "12high") {
|
// cp.denmet = 2;
|
||||||
cp.denmet = 3;
|
//} else if (params->wavelet.denmethod == "12high") {
|
||||||
} else if (params->wavelet.denmethod == "12low") {
|
// cp.denmet = 3;
|
||||||
cp.denmet = 4;
|
//} else if (params->wavelet.denmethod == "12low") {
|
||||||
}
|
// cp.denmet = 4;
|
||||||
|
//}
|
||||||
|
|
||||||
if (params->wavelet.mixmethod == "nois") {
|
if (params->wavelet.mixmethod == "nois") {
|
||||||
cp.mixmet = 0;
|
cp.mixmet = 0;
|
||||||
@ -658,7 +659,7 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const
|
|||||||
maxlevelcrop = 10;
|
maxlevelcrop = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
// adap maximum level wavelet to size of crop
|
// adapt maximum level wavelet to size of crop
|
||||||
if (minwin * skip < 1024) {
|
if (minwin * skip < 1024) {
|
||||||
maxlevelcrop = 9; //sampling wavelet 512
|
maxlevelcrop = 9; //sampling wavelet 512
|
||||||
}
|
}
|
||||||
@ -694,7 +695,7 @@ void ImProcFunctions::ip_wavelet(LabImage * lab, LabImage * dst, int kall, const
|
|||||||
|
|
||||||
levwav = rtengine::min(maxlevelcrop, levwav);
|
levwav = rtengine::min(maxlevelcrop, levwav);
|
||||||
|
|
||||||
// I suppress this fonctionality ==> crash for level < 3
|
// I suppress this functionality ==> crash for level < 3
|
||||||
if (levwav < 1) {
|
if (levwav < 1) {
|
||||||
return; // nothing to do
|
return; // nothing to do
|
||||||
}
|
}
|
||||||
|
@ -21,10 +21,14 @@
|
|||||||
namespace rtengine
|
namespace rtengine
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Aligned so the first entry starts on line 30
|
// Aligned so the first entry starts on line 30
|
||||||
enum ProcEventCode {
|
enum ProcEventCode {
|
||||||
EvPhotoLoaded = 0,
|
EvPhotoLoaded = 0,
|
||||||
EvProfileLoaded = 1,
|
obsolete_1 = 1,
|
||||||
EvProfileChanged = 2,
|
EvProfileChanged = 2,
|
||||||
EvHistoryBrowsed = 3,
|
EvHistoryBrowsed = 3,
|
||||||
EvBrightness = 4,
|
EvBrightness = 4,
|
||||||
@ -38,9 +42,9 @@ enum ProcEventCode {
|
|||||||
EvClip = 12,
|
EvClip = 12,
|
||||||
EvLBrightness = 13,
|
EvLBrightness = 13,
|
||||||
EvLContrast = 14,
|
EvLContrast = 14,
|
||||||
EvLBlack = 15,
|
obsolete_15 = 15, // obsolete
|
||||||
EvLHLCompr = 16,
|
obsolete_16 = 16, // obsolete
|
||||||
EvLSHCompr = 17,
|
obsolete_17 = 17, // obsolete
|
||||||
EvLLCurve = 18,
|
EvLLCurve = 18,
|
||||||
EvShrEnabled = 19,
|
EvShrEnabled = 19,
|
||||||
EvShrRadius = 20,
|
EvShrRadius = 20,
|
||||||
@ -77,7 +81,7 @@ enum ProcEventCode {
|
|||||||
EvSHShadows = 51,
|
EvSHShadows = 51,
|
||||||
EvSHHLTonalW = 52,
|
EvSHHLTonalW = 52,
|
||||||
EvSHSHTonalW = 53,
|
EvSHSHTonalW = 53,
|
||||||
EvSHLContrast = 54,
|
obsolete_54 = 54, // obsolete
|
||||||
EvSHRadius = 55,
|
EvSHRadius = 55,
|
||||||
EvCTRotate = 56,
|
EvCTRotate = 56,
|
||||||
EvCTHFlip = 57,
|
EvCTHFlip = 57,
|
||||||
@ -89,7 +93,7 @@ enum ProcEventCode {
|
|||||||
EvCrop = 63,
|
EvCrop = 63,
|
||||||
EvCACorr = 64,
|
EvCACorr = 64,
|
||||||
EvHREnabled = 65,
|
EvHREnabled = 65,
|
||||||
obsolete_66 = 66, //obsolete
|
obsolete_66 = 66, // obsolete
|
||||||
EvHRMethod = 67,
|
EvHRMethod = 67,
|
||||||
EvWProfile = 68,
|
EvWProfile = 68,
|
||||||
EvOProfile = 69,
|
EvOProfile = 69,
|
||||||
@ -100,12 +104,12 @@ enum ProcEventCode {
|
|||||||
EvResizeMethod = 74,
|
EvResizeMethod = 74,
|
||||||
EvExif = 75,
|
EvExif = 75,
|
||||||
EvIPTC = 76,
|
EvIPTC = 76,
|
||||||
EvResizeSpec = 77,
|
obsolete_77 = 77, // obsolete
|
||||||
EvResizeWidth = 78,
|
EvResizeWidth = 78,
|
||||||
EvResizeHeight = 79,
|
EvResizeHeight = 79,
|
||||||
EvResizeEnabled = 80,
|
EvResizeEnabled = 80,
|
||||||
EvProfileChangeNotification = 81,
|
EvProfileChangeNotification = 81,
|
||||||
EvSHHighQuality = 82,
|
obsolete_82 = 82, // obsolete
|
||||||
EvPerspCorr = 83,
|
EvPerspCorr = 83,
|
||||||
EvLCPFile = 84,
|
EvLCPFile = 84,
|
||||||
EvRGBrCurveLumamode = 85,
|
EvRGBrCurveLumamode = 85,
|
||||||
@ -153,12 +157,12 @@ enum ProcEventCode {
|
|||||||
EvFlatFieldBlurRadius = 127,
|
EvFlatFieldBlurRadius = 127,
|
||||||
EvFlatFieldBlurType = 128,
|
EvFlatFieldBlurType = 128,
|
||||||
EvAutoDIST = 129,
|
EvAutoDIST = 129,
|
||||||
EvDPDNLumCurve = 130,
|
obsolete_130 = 130, // obsolete
|
||||||
EvDPDNChromCurve = 131,
|
obsolete_131 = 131, // obsolete
|
||||||
EvGAMMA = 132,
|
obsolete_132 = 132, // obsolete
|
||||||
EvGAMPOS = 133,
|
obsolete_133 = 133, // obsolete
|
||||||
EvGAMFREE = 134,
|
obsolete_134 = 134, // obsolete
|
||||||
EvSLPOS = 135,
|
obsolete_135 = 135, // obsolete
|
||||||
EvPreProcessExpBlackzero = 136,
|
EvPreProcessExpBlackzero = 136,
|
||||||
EvPreProcessExpBlackone = 137,
|
EvPreProcessExpBlackone = 137,
|
||||||
EvPreProcessExpBlacktwo = 138,
|
EvPreProcessExpBlacktwo = 138,
|
||||||
@ -231,7 +235,7 @@ enum ProcEventCode {
|
|||||||
EvCATAutoAdap = 205,
|
EvCATAutoAdap = 205,
|
||||||
EvPFCurve = 206,
|
EvPFCurve = 206,
|
||||||
EvWBequal = 207,
|
EvWBequal = 207,
|
||||||
EvWBequalbo = 208,
|
obsolete_208 = 208,
|
||||||
EvGradientDegree = 209,
|
EvGradientDegree = 209,
|
||||||
EvGradientEnabled = 210,
|
EvGradientEnabled = 210,
|
||||||
EvPCVignetteStrength = 211,
|
EvPCVignetteStrength = 211,
|
||||||
@ -272,7 +276,7 @@ enum ProcEventCode {
|
|||||||
EvLLHCurve = 246,
|
EvLLHCurve = 246,
|
||||||
EvLHHCurve = 247,
|
EvLHHCurve = 247,
|
||||||
EvDirPyrEqualizerThreshold = 248,
|
EvDirPyrEqualizerThreshold = 248,
|
||||||
EvDPDNenhance = 249,
|
obsolete_249 = 249,
|
||||||
EvBWMethodalg = 250,
|
EvBWMethodalg = 250,
|
||||||
EvDirPyrEqualizerSkin = 251,
|
EvDirPyrEqualizerSkin = 251,
|
||||||
EvDirPyrEqlgamutlab = 252,
|
EvDirPyrEqlgamutlab = 252,
|
||||||
@ -296,8 +300,8 @@ enum ProcEventCode {
|
|||||||
EvColorToningbluehigh = 270,
|
EvColorToningbluehigh = 270,
|
||||||
EvColorToningbalance = 271,
|
EvColorToningbalance = 271,
|
||||||
EvColorToningNeutral = 272,
|
EvColorToningNeutral = 272,
|
||||||
EvColorToningsatlow = 273,
|
obsolete_273 = 273,
|
||||||
EvColorToningsathigh = 274,
|
obsolete_274 = 274,
|
||||||
EvColorToningTwocolor = 275,
|
EvColorToningTwocolor = 275,
|
||||||
EvColorToningNeutralcur = 276,
|
EvColorToningNeutralcur = 276,
|
||||||
EvColorToningLumamode = 277,
|
EvColorToningLumamode = 277,
|
||||||
@ -322,7 +326,7 @@ enum ProcEventCode {
|
|||||||
EvDPDNsmet = 296,
|
EvDPDNsmet = 296,
|
||||||
EvPreProcessDeadPixel = 297,
|
EvPreProcessDeadPixel = 297,
|
||||||
EvDPDNCCCurve = 298,
|
EvDPDNCCCurve = 298,
|
||||||
EvDPDNautochroma = 299,
|
obsolete_299 = 299,
|
||||||
EvDPDNLmet = 300,
|
EvDPDNLmet = 300,
|
||||||
EvDPDNCmet = 301,
|
EvDPDNCmet = 301,
|
||||||
EvDPDNC2met = 302,
|
EvDPDNC2met = 302,
|
||||||
@ -431,7 +435,7 @@ enum ProcEventCode {
|
|||||||
EvWavNPmet = 405,
|
EvWavNPmet = 405,
|
||||||
EvretinexMethod = 406,
|
EvretinexMethod = 406,
|
||||||
EvLneigh = 407,
|
EvLneigh = 407,
|
||||||
EvLgain = 408,
|
obsolete_408 = 408,
|
||||||
EvLoffs = 409,
|
EvLoffs = 409,
|
||||||
EvLstr = 410,
|
EvLstr = 410,
|
||||||
EvLscal = 411,
|
EvLscal = 411,
|
||||||
@ -495,7 +499,7 @@ enum ProcEventCode {
|
|||||||
// EvPixelShiftMedian3 = 469,
|
// EvPixelShiftMedian3 = 469,
|
||||||
EvPixelShiftMotionMethod = 470,
|
EvPixelShiftMotionMethod = 470,
|
||||||
EvPixelShiftSmooth = 471,
|
EvPixelShiftSmooth = 471,
|
||||||
EvPixelShiftLmmse = 472,
|
obsolete_472 = 472,
|
||||||
EvPixelShiftEqualBright = 473,
|
EvPixelShiftEqualBright = 473,
|
||||||
EvPixelShiftEqualBrightChannel = 474,
|
EvPixelShiftEqualBrightChannel = 474,
|
||||||
EvCATtempout = 475,
|
EvCATtempout = 475,
|
||||||
@ -626,7 +630,7 @@ enum ProcEventCode {
|
|||||||
Evlocallabstreng = 600,
|
Evlocallabstreng = 600,
|
||||||
Evlocallabsensisf = 601,
|
Evlocallabsensisf = 601,
|
||||||
Evlocallabsharblur = 602,
|
Evlocallabsharblur = 602,
|
||||||
EvLocenalabregion = 603,
|
obsolete_603 = 603,
|
||||||
EvlocallabshowmaskMethod = 604,
|
EvlocallabshowmaskMethod = 604,
|
||||||
EvLocallabSpotSelectedWithMask = 605,
|
EvLocallabSpotSelectedWithMask = 605,
|
||||||
EvlocallabCCmaskshape = 606,
|
EvlocallabCCmaskshape = 606,
|
||||||
@ -870,7 +874,7 @@ enum ProcEventCode {
|
|||||||
EvLocenalog = 844,
|
EvLocenalog = 844,
|
||||||
EvLocallabAuto = 845,
|
EvLocallabAuto = 845,
|
||||||
EvlocallabsourceGray = 846,
|
EvlocallabsourceGray = 846,
|
||||||
EvlocallabsourceGrayAuto = 847,
|
obsolete_847 = 847,
|
||||||
EvlocallabAutogray = 848,
|
EvlocallabAutogray = 848,
|
||||||
EvlocallabblackEv = 849,
|
EvlocallabblackEv = 849,
|
||||||
EvlocallabwhiteEv = 850,
|
EvlocallabwhiteEv = 850,
|
||||||
@ -889,7 +893,7 @@ enum ProcEventCode {
|
|||||||
Evlocallabsigmadc = 863,
|
Evlocallabsigmadc = 863,
|
||||||
Evlocallabdeltad = 864,
|
Evlocallabdeltad = 864,
|
||||||
EvlocallabwavCurvecomp = 865,
|
EvlocallabwavCurvecomp = 865,
|
||||||
Evlocallabfatres = 866,
|
//Evlocallabfatres = 866,
|
||||||
EvLocallabSpotbalanh = 867,
|
EvLocallabSpotbalanh = 867,
|
||||||
EvlocallabwavCurveden = 868,
|
EvlocallabwavCurveden = 868,
|
||||||
EvlocallabHHmasklcshape = 869,
|
EvlocallabHHmasklcshape = 869,
|
||||||
@ -918,7 +922,7 @@ enum ProcEventCode {
|
|||||||
Evlocallabanglog = 892,
|
Evlocallabanglog = 892,
|
||||||
EvLocallabSpotcolorde = 893,
|
EvLocallabSpotcolorde = 893,
|
||||||
// EvlocallabshowmasksharMethod = 894,
|
// EvlocallabshowmasksharMethod = 894,
|
||||||
Evlocallabshowreset = 895,
|
//Evlocallabshowreset = 895,
|
||||||
Evlocallabstrengthw = 896,
|
Evlocallabstrengthw = 896,
|
||||||
Evlocallabradiusw = 897,
|
Evlocallabradiusw = 897,
|
||||||
Evlocallabdetailw = 898,
|
Evlocallabdetailw = 898,
|
||||||
@ -998,7 +1002,7 @@ enum ProcEventCode {
|
|||||||
EvLocallabchromaskL = 972,
|
EvLocallabchromaskL = 972,
|
||||||
EvlocallabLmaskshapeL = 973,
|
EvlocallabLmaskshapeL = 973,
|
||||||
Evlocallablightl = 974,
|
Evlocallablightl = 974,
|
||||||
EvlocallabLshapeL = 975,
|
//EvlocallabLshapeL = 975,
|
||||||
Evlocallabcontq = 976,
|
Evlocallabcontq = 976,
|
||||||
Evlocallabsursour = 977,
|
Evlocallabsursour = 977,
|
||||||
Evlocallablightq = 978,
|
Evlocallablightq = 978,
|
||||||
@ -1121,7 +1125,6 @@ enum ProcEventCode {
|
|||||||
Evlocallabshjzcie = 1095,
|
Evlocallabshjzcie = 1095,
|
||||||
Evlocallabshthjzcie = 1096,
|
Evlocallabshthjzcie = 1096,
|
||||||
Evlocallabradjzcie = 1097,
|
Evlocallabradjzcie = 1097,
|
||||||
// EvlocallabHHshapejz = 1098,
|
|
||||||
EvlocallabCHshapejz = 1098,
|
EvlocallabCHshapejz = 1098,
|
||||||
Evlocallabjz100 = 1099,
|
Evlocallabjz100 = 1099,
|
||||||
Evlocallabpqremap = 1100,
|
Evlocallabpqremap = 1100,
|
||||||
@ -1136,14 +1139,6 @@ enum ProcEventCode {
|
|||||||
Evlocallabshapecz = 1109,
|
Evlocallabshapecz = 1109,
|
||||||
Evlocallabshapeczjz = 1110,
|
Evlocallabshapeczjz = 1110,
|
||||||
Evlocallabforcejz = 1111,
|
Evlocallabforcejz = 1111,
|
||||||
//Evlocallablightlzcam = 1113,
|
|
||||||
//Evlocallablightqzcam = 1114,
|
|
||||||
//Evlocallabcontlzcam = 1115,
|
|
||||||
//Evlocallabcontqzcam = 1116,
|
|
||||||
//Evlocallabcontthreszcam = 1117,
|
|
||||||
//Evlocallabcolorflzcam = 1118,
|
|
||||||
//Evlocallabsaturzcam = 1119,
|
|
||||||
//Evlocallabchromzcam = 1120,
|
|
||||||
Evlocallabpqremapcam16 = 1112,
|
Evlocallabpqremapcam16 = 1112,
|
||||||
EvLocallabEnacieMask = 1113,
|
EvLocallabEnacieMask = 1113,
|
||||||
EvlocallabCCmaskcieshape = 1114,
|
EvlocallabCCmaskcieshape = 1114,
|
||||||
|
@ -2420,41 +2420,41 @@ WaveletParams::WaveletParams() :
|
|||||||
0.35,
|
0.35,
|
||||||
0.35
|
0.35
|
||||||
},
|
},
|
||||||
opacityCurveSH{
|
//opacityCurveSH{
|
||||||
static_cast<double>(FCT_MinMaxCPoints),
|
// static_cast<double>(FCT_MinMaxCPoints),
|
||||||
0.,
|
// 0.,
|
||||||
1.,
|
// 1.,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.15,
|
// 0.15,
|
||||||
0.9,
|
// 0.9,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.4,
|
// 0.4,
|
||||||
0.8,
|
// 0.8,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.4,
|
// 0.4,
|
||||||
0.5,
|
// 0.5,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.5,
|
// 0.5,
|
||||||
0.5,
|
// 0.5,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.5,
|
// 0.5,
|
||||||
0.2,
|
// 0.2,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.8,
|
// 0.8,
|
||||||
0.1,
|
// 0.1,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.35,
|
// 0.35,
|
||||||
1.0,
|
// 1.0,
|
||||||
0.,
|
// 0.,
|
||||||
0.35,
|
// 0.35,
|
||||||
0.35
|
// 0.35
|
||||||
},
|
//},
|
||||||
/*
|
/*
|
||||||
opacityCurveSH{
|
opacityCurveSH{
|
||||||
static_cast<double>(FCT_MinMaxCPoints),
|
static_cast<double>(FCT_MinMaxCPoints),
|
||||||
@ -2592,7 +2592,7 @@ WaveletParams::WaveletParams() :
|
|||||||
Backmethod("grey"),
|
Backmethod("grey"),
|
||||||
Tilesmethod("full"),
|
Tilesmethod("full"),
|
||||||
complexmethod("normal"),
|
complexmethod("normal"),
|
||||||
denmethod("12low"),
|
//denmethod("12low"),
|
||||||
mixmethod("mix"),
|
mixmethod("mix"),
|
||||||
slimethod("sli"),
|
slimethod("sli"),
|
||||||
quamethod("cons"),
|
quamethod("cons"),
|
||||||
@ -2666,7 +2666,7 @@ bool WaveletParams::operator ==(const WaveletParams& other) const
|
|||||||
&& wavdenoiseh == other.wavdenoiseh
|
&& wavdenoiseh == other.wavdenoiseh
|
||||||
&& blcurve == other.blcurve
|
&& blcurve == other.blcurve
|
||||||
&& opacityCurveRG == other.opacityCurveRG
|
&& opacityCurveRG == other.opacityCurveRG
|
||||||
&& opacityCurveSH == other.opacityCurveSH
|
//&& opacityCurveSH == other.opacityCurveSH
|
||||||
&& opacityCurveBY == other.opacityCurveBY
|
&& opacityCurveBY == other.opacityCurveBY
|
||||||
&& opacityCurveW == other.opacityCurveW
|
&& opacityCurveW == other.opacityCurveW
|
||||||
&& opacityCurveWL == other.opacityCurveWL
|
&& opacityCurveWL == other.opacityCurveWL
|
||||||
@ -2742,7 +2742,7 @@ bool WaveletParams::operator ==(const WaveletParams& other) const
|
|||||||
&& Backmethod == other.Backmethod
|
&& Backmethod == other.Backmethod
|
||||||
&& Tilesmethod == other.Tilesmethod
|
&& Tilesmethod == other.Tilesmethod
|
||||||
&& complexmethod == other.complexmethod
|
&& complexmethod == other.complexmethod
|
||||||
&& denmethod == other.denmethod
|
//&& denmethod == other.denmethod
|
||||||
&& mixmethod == other.mixmethod
|
&& mixmethod == other.mixmethod
|
||||||
&& slimethod == other.slimethod
|
&& slimethod == other.slimethod
|
||||||
&& quamethod == other.quamethod
|
&& quamethod == other.quamethod
|
||||||
@ -2829,7 +2829,7 @@ void WaveletParams::getCurves(
|
|||||||
wavdenoiseh.Set(this->wavdenoiseh);
|
wavdenoiseh.Set(this->wavdenoiseh);
|
||||||
tCurve.Set(this->blcurve);
|
tCurve.Set(this->blcurve);
|
||||||
opacityCurveLUTRG.Set(this->opacityCurveRG);
|
opacityCurveLUTRG.Set(this->opacityCurveRG);
|
||||||
opacityCurveLUTSH.Set(this->opacityCurveSH);
|
//opacityCurveLUTSH.Set(this->opacityCurveSH);
|
||||||
opacityCurveLUTBY.Set(this->opacityCurveBY);
|
opacityCurveLUTBY.Set(this->opacityCurveBY);
|
||||||
opacityCurveLUTW.Set(this->opacityCurveW);
|
opacityCurveLUTW.Set(this->opacityCurveW);
|
||||||
opacityCurveLUTWL.Set(this->opacityCurveWL);
|
opacityCurveLUTWL.Set(this->opacityCurveWL);
|
||||||
@ -7235,7 +7235,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->wavelet.thres, "Wavelet", "MaxLev", wavelet.thres, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.thres, "Wavelet", "MaxLev", wavelet.thres, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.Tilesmethod, "Wavelet", "TilesMethod", wavelet.Tilesmethod, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.Tilesmethod, "Wavelet", "TilesMethod", wavelet.Tilesmethod, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.complexmethod, "Wavelet", "complexMethod", wavelet.complexmethod, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.complexmethod, "Wavelet", "complexMethod", wavelet.complexmethod, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.denmethod, "Wavelet", "denMethod", wavelet.denmethod, keyFile);
|
//saveToKeyfile(!pedited || pedited->wavelet.denmethod, "Wavelet", "denMethod", wavelet.denmethod, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.mixmethod, "Wavelet", "mixMethod", wavelet.mixmethod, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.mixmethod, "Wavelet", "mixMethod", wavelet.mixmethod, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.slimethod, "Wavelet", "sliMethod", wavelet.slimethod, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.slimethod, "Wavelet", "sliMethod", wavelet.slimethod, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.quamethod, "Wavelet", "quaMethod", wavelet.quamethod, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.quamethod, "Wavelet", "quaMethod", wavelet.quamethod, keyFile);
|
||||||
@ -7326,7 +7326,7 @@ int ProcParams::save(const Glib::ustring& fname, const Glib::ustring& fname2, bo
|
|||||||
saveToKeyfile(!pedited || pedited->wavelet.pastlev, "Wavelet", "Pastlev", wavelet.pastlev.toVector(), keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.pastlev, "Wavelet", "Pastlev", wavelet.pastlev.toVector(), keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.satlev, "Wavelet", "Satlev", wavelet.satlev.toVector(), keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.satlev, "Wavelet", "Satlev", wavelet.satlev.toVector(), keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.opacityCurveRG, "Wavelet", "OpacityCurveRG", wavelet.opacityCurveRG, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.opacityCurveRG, "Wavelet", "OpacityCurveRG", wavelet.opacityCurveRG, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.opacityCurveSH, "Wavelet", "Levalshc", wavelet.opacityCurveSH, keyFile);
|
//saveToKeyfile(!pedited || pedited->wavelet.opacityCurveSH, "Wavelet", "Levalshc", wavelet.opacityCurveSH, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.opacityCurveBY, "Wavelet", "OpacityCurveBY", wavelet.opacityCurveBY, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.opacityCurveBY, "Wavelet", "OpacityCurveBY", wavelet.opacityCurveBY, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.wavdenoise, "Wavelet", "wavdenoise", wavelet.wavdenoise, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.wavdenoise, "Wavelet", "wavdenoise", wavelet.wavdenoise, keyFile);
|
||||||
saveToKeyfile(!pedited || pedited->wavelet.wavdenoiseh, "Wavelet", "wavdenoiseh", wavelet.wavdenoiseh, keyFile);
|
saveToKeyfile(!pedited || pedited->wavelet.wavdenoiseh, "Wavelet", "wavdenoiseh", wavelet.wavdenoiseh, keyFile);
|
||||||
@ -9595,7 +9595,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "denMethod", pedited, wavelet.denmethod, pedited->wavelet.denmethod);
|
//assignFromKeyfile(keyFile, "Wavelet", "denMethod", pedited, wavelet.denmethod, pedited->wavelet.denmethod);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "mixMethod", pedited, wavelet.mixmethod, pedited->wavelet.mixmethod);
|
assignFromKeyfile(keyFile, "Wavelet", "mixMethod", pedited, wavelet.mixmethod, pedited->wavelet.mixmethod);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "sliMethod", pedited, wavelet.slimethod, pedited->wavelet.slimethod);
|
assignFromKeyfile(keyFile, "Wavelet", "sliMethod", pedited, wavelet.slimethod, pedited->wavelet.slimethod);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "quaMethod", pedited, wavelet.quamethod, pedited->wavelet.quamethod);
|
assignFromKeyfile(keyFile, "Wavelet", "quaMethod", pedited, wavelet.quamethod, pedited->wavelet.quamethod);
|
||||||
@ -9645,7 +9645,7 @@ int ProcParams::load(const Glib::ustring& fname, ParamsEdited* pedited)
|
|||||||
assignFromKeyfile(keyFile, "Wavelet", "ContrastCurve", pedited, wavelet.ccwcurve, pedited->wavelet.ccwcurve);
|
assignFromKeyfile(keyFile, "Wavelet", "ContrastCurve", pedited, wavelet.ccwcurve, pedited->wavelet.ccwcurve);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "blcurve", pedited, wavelet.blcurve, pedited->wavelet.blcurve);
|
assignFromKeyfile(keyFile, "Wavelet", "blcurve", pedited, wavelet.blcurve, pedited->wavelet.blcurve);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "OpacityCurveRG", pedited, wavelet.opacityCurveRG, pedited->wavelet.opacityCurveRG);
|
assignFromKeyfile(keyFile, "Wavelet", "OpacityCurveRG", pedited, wavelet.opacityCurveRG, pedited->wavelet.opacityCurveRG);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "Levalshc", pedited, wavelet.opacityCurveSH, pedited->wavelet.opacityCurveSH);
|
//assignFromKeyfile(keyFile, "Wavelet", "Levalshc", pedited, wavelet.opacityCurveSH, pedited->wavelet.opacityCurveSH);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "OpacityCurveBY", pedited, wavelet.opacityCurveBY, pedited->wavelet.opacityCurveBY);
|
assignFromKeyfile(keyFile, "Wavelet", "OpacityCurveBY", pedited, wavelet.opacityCurveBY, pedited->wavelet.opacityCurveBY);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "wavdenoise", pedited, wavelet.wavdenoise, pedited->wavelet.wavdenoise);
|
assignFromKeyfile(keyFile, "Wavelet", "wavdenoise", pedited, wavelet.wavdenoise, pedited->wavelet.wavdenoise);
|
||||||
assignFromKeyfile(keyFile, "Wavelet", "wavdenoiseh", pedited, wavelet.wavdenoiseh, pedited->wavelet.wavdenoiseh);
|
assignFromKeyfile(keyFile, "Wavelet", "wavdenoiseh", pedited, wavelet.wavdenoiseh, pedited->wavelet.wavdenoiseh);
|
||||||
|
@ -2070,7 +2070,7 @@ struct WaveletParams {
|
|||||||
std::vector<double> blcurve;
|
std::vector<double> blcurve;
|
||||||
std::vector<double> levelshc;
|
std::vector<double> levelshc;
|
||||||
std::vector<double> opacityCurveRG;
|
std::vector<double> opacityCurveRG;
|
||||||
std::vector<double> opacityCurveSH;
|
//std::vector<double> opacityCurveSH;
|
||||||
std::vector<double> opacityCurveBY;
|
std::vector<double> opacityCurveBY;
|
||||||
std::vector<double> opacityCurveW;
|
std::vector<double> opacityCurveW;
|
||||||
std::vector<double> opacityCurveWL;
|
std::vector<double> opacityCurveWL;
|
||||||
@ -2143,7 +2143,7 @@ struct WaveletParams {
|
|||||||
Glib::ustring Backmethod;
|
Glib::ustring Backmethod;
|
||||||
Glib::ustring Tilesmethod;
|
Glib::ustring Tilesmethod;
|
||||||
Glib::ustring complexmethod;
|
Glib::ustring complexmethod;
|
||||||
Glib::ustring denmethod;
|
//Glib::ustring denmethod;
|
||||||
Glib::ustring mixmethod;
|
Glib::ustring mixmethod;
|
||||||
Glib::ustring slimethod;
|
Glib::ustring slimethod;
|
||||||
Glib::ustring quamethod;
|
Glib::ustring quamethod;
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
#include "median.h"
|
#include "median.h"
|
||||||
#include "mytime.h"
|
#include "mytime.h"
|
||||||
#include "pdaflinesfilter.h"
|
#include "pdaflinesfilter.h"
|
||||||
|
#include "pixelsmap.h"
|
||||||
#include "procparams.h"
|
#include "procparams.h"
|
||||||
#include "rawimage.h"
|
#include "rawimage.h"
|
||||||
#include "rawimagesource_i.h"
|
#include "rawimagesource_i.h"
|
||||||
@ -41,6 +42,7 @@
|
|||||||
#include "rt_math.h"
|
#include "rt_math.h"
|
||||||
#include "rtengine.h"
|
#include "rtengine.h"
|
||||||
#include "rtlensfun.h"
|
#include "rtlensfun.h"
|
||||||
|
|
||||||
#include "../rtgui/options.h"
|
#include "../rtgui/options.h"
|
||||||
|
|
||||||
#define BENCHMARK
|
#define BENCHMARK
|
||||||
@ -1307,14 +1309,14 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le
|
|||||||
|
|
||||||
|
|
||||||
Glib::ustring newDF = raw.dark_frame;
|
Glib::ustring newDF = raw.dark_frame;
|
||||||
RawImage *rid = nullptr;
|
const RawImage* rid = nullptr;
|
||||||
|
|
||||||
if (!raw.df_autoselect) {
|
if (!raw.df_autoselect) {
|
||||||
if (!raw.dark_frame.empty()) {
|
if (!raw.dark_frame.empty()) {
|
||||||
rid = dfm.searchDarkFrame(raw.dark_frame);
|
rid = DFManager::getInstance().searchDarkFrame(raw.dark_frame);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
rid = dfm.searchDarkFrame(idata->getMake(), idata->getModel(), idata->getISOSpeed(), idata->getShutterSpeed(), idata->getDateTimeAsTS());
|
rid = DFManager::getInstance().searchDarkFrame(idata->getMake(), idata->getModel(), idata->getISOSpeed(), idata->getShutterSpeed(), idata->getDateTimeAsTS());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rid && settings->verbose) {
|
if (rid && settings->verbose) {
|
||||||
@ -1387,7 +1389,7 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le
|
|||||||
|
|
||||||
|
|
||||||
// Always correct camera badpixels from .badpixels file
|
// Always correct camera badpixels from .badpixels file
|
||||||
std::vector<badPix> *bp = dfm.getBadPixels(ri->get_maker(), ri->get_model(), idata->getSerialNumber());
|
const std::vector<badPix> *bp = DFManager::getInstance().getBadPixels(ri->get_maker(), ri->get_model(), idata->getSerialNumber());
|
||||||
|
|
||||||
if (bp) {
|
if (bp) {
|
||||||
if (!bitmapBads) {
|
if (!bitmapBads) {
|
||||||
@ -1405,9 +1407,9 @@ void RawImageSource::preprocess (const RAWParams &raw, const LensProfParams &le
|
|||||||
bp = nullptr;
|
bp = nullptr;
|
||||||
|
|
||||||
if (raw.df_autoselect) {
|
if (raw.df_autoselect) {
|
||||||
bp = dfm.getHotPixels(idata->getMake(), idata->getModel(), idata->getISOSpeed(), idata->getShutterSpeed(), idata->getDateTimeAsTS());
|
bp = DFManager::getInstance().getHotPixels(idata->getMake(), idata->getModel(), idata->getISOSpeed(), idata->getShutterSpeed(), idata->getDateTimeAsTS());
|
||||||
} else if (!raw.dark_frame.empty()) {
|
} else if (!raw.dark_frame.empty()) {
|
||||||
bp = dfm.getHotPixels(raw.dark_frame);
|
bp = DFManager::getInstance().getHotPixels(raw.dark_frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bp) {
|
if (bp) {
|
||||||
@ -2453,7 +2455,7 @@ void RawImageSource::HLRecovery_Global(const ToneCurveParams &hrp)
|
|||||||
/* Copy original pixel data and
|
/* Copy original pixel data and
|
||||||
* subtract dark frame (if present) from current image and apply flat field correction (if present)
|
* subtract dark frame (if present) from current image and apply flat field correction (if present)
|
||||||
*/
|
*/
|
||||||
void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, RawImage *riDark, RawImage *riFlatFile, array2D<float> &rawData)
|
void RawImageSource::copyOriginalPixels(const RAWParams &raw, RawImage *src, const RawImage *riDark, RawImage *riFlatFile, array2D<float> &rawData)
|
||||||
{
|
{
|
||||||
const auto tmpfilters = ri->get_filters();
|
const auto tmpfilters = ri->get_filters();
|
||||||
ri->set_filters(ri->prefilters); // we need 4 blacks for bayer processing
|
ri->set_filters(ri->prefilters); // we need 4 blacks for bayer processing
|
||||||
|
@ -138,7 +138,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void processFlatField(const procparams::RAWParams &raw, const RawImage *riFlatFile, array2D<float> &rawData, const float black[4]);
|
void processFlatField(const procparams::RAWParams &raw, const RawImage *riFlatFile, array2D<float> &rawData, const float black[4]);
|
||||||
void copyOriginalPixels(const procparams::RAWParams &raw, RawImage *ri, RawImage *riDark, RawImage *riFlatFile, array2D<float> &rawData );
|
void copyOriginalPixels(const procparams::RAWParams &raw, RawImage *ri, const RawImage *riDark, RawImage *riFlatFile, array2D<float> &rawData );
|
||||||
void scaleColors (int winx, int winy, int winw, int winh, const procparams::RAWParams &raw, array2D<float> &rawData); // raw for cblack
|
void scaleColors (int winx, int winy, int winw, int winh, const procparams::RAWParams &raw, array2D<float> &rawData); // raw for cblack
|
||||||
void WBauto(double &tempref, double &greenref, array2D<float> &redloc, array2D<float> &greenloc, array2D<float> &blueloc, int bfw, int bfh, double &avg_rm, double &avg_gm, double &avg_bm, double &tempitc, double &greenitc, float &studgood, bool &twotimes, const procparams::WBParams & wbpar, int begx, int begy, int yEn, int xEn, int cx, int cy, const procparams::ColorManagementParams &cmp, const procparams::RAWParams &raw) override;
|
void WBauto(double &tempref, double &greenref, array2D<float> &redloc, array2D<float> &greenloc, array2D<float> &blueloc, int bfw, int bfh, double &avg_rm, double &avg_gm, double &avg_bm, double &tempitc, double &greenitc, float &studgood, bool &twotimes, const procparams::WBParams & wbpar, int begx, int begy, int yEn, int xEn, int cx, int cy, const procparams::ColorManagementParams &cmp, const procparams::RAWParams &raw) override;
|
||||||
void getAutoWBMultipliersitc(double &tempref, double &greenref, double &tempitc, double &greenitc, float &studgood, int begx, int begy, int yEn, int xEn, int cx, int cy, int bf_h, int bf_w, double &rm, double &gm, double &bm, const procparams::WBParams & wbpar, const procparams::ColorManagementParams &cmp, const procparams::RAWParams &raw) override;
|
void getAutoWBMultipliersitc(double &tempref, double &greenref, double &tempitc, double &greenitc, float &studgood, int begx, int begy, int yEn, int xEn, int cx, int cy, int bf_h, int bf_w, double &rm, double &gm, double &bm, const procparams::WBParams & wbpar, const procparams::ColorManagementParams &cmp, const procparams::RAWParams &raw) override;
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
// Aligned so the first entry starts on line 30.
|
// Aligned so the first entry starts on line 30.
|
||||||
int refreshmap[rtengine::NUMOFEVENTS] = {
|
int refreshmap[rtengine::NUMOFEVENTS] = {
|
||||||
ALL, // EvPhotoLoaded,
|
ALL, // EvPhotoLoaded,
|
||||||
ALL, // EvProfileLoaded,
|
0, // EvProfileLoaded : obsolete,
|
||||||
ALL, // EvProfileChanged,
|
ALL, // EvProfileChanged,
|
||||||
ALL, // EvHistoryBrowsed,
|
ALL, // EvHistoryBrowsed,
|
||||||
AUTOEXP, // EvBrightness,
|
AUTOEXP, // EvBrightness,
|
||||||
@ -42,9 +42,9 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
AUTOEXP, // EvClip,
|
AUTOEXP, // EvClip,
|
||||||
LUMINANCECURVE, // EvLBrightness,
|
LUMINANCECURVE, // EvLBrightness,
|
||||||
LUMINANCECURVE, // EvLContrast,
|
LUMINANCECURVE, // EvLContrast,
|
||||||
LUMINANCECURVE, // EvLBlack,
|
0, // EvLBlack : obsolete,
|
||||||
LUMINANCECURVE, // EvLHLCompr,
|
0, // EvLHLCompr : obsolete,
|
||||||
LUMINANCECURVE, // EvLSHCompr,
|
0, // EvLSHCompr : obsolete,
|
||||||
LUMINANCECURVE, // EvLLCurve,
|
LUMINANCECURVE, // EvLLCurve,
|
||||||
SHARPENING, // EvShrEnabled,
|
SHARPENING, // EvShrEnabled,
|
||||||
SHARPENING, // EvShrRadius,
|
SHARPENING, // EvShrRadius,
|
||||||
@ -81,7 +81,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, // EvSHShadows,
|
LUMINANCECURVE, // EvSHShadows,
|
||||||
LUMINANCECURVE, // EvSHHLTonalW,
|
LUMINANCECURVE, // EvSHHLTonalW,
|
||||||
LUMINANCECURVE, // EvSHSHTonalW,
|
LUMINANCECURVE, // EvSHSHTonalW,
|
||||||
AUTOEXP, // EvSHLContrast,
|
0, // EvSHLContrast : obsolete,
|
||||||
LUMINANCECURVE, // EvSHRadius,
|
LUMINANCECURVE, // EvSHRadius,
|
||||||
ALLNORAW, // EvCTRotate,
|
ALLNORAW, // EvCTRotate,
|
||||||
ALLNORAW, // EvCTHFlip,
|
ALLNORAW, // EvCTHFlip,
|
||||||
@ -93,7 +93,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
CROP, // EvCrop,
|
CROP, // EvCrop,
|
||||||
HDR, // EvCACorr,
|
HDR, // EvCACorr,
|
||||||
ALLNORAW, // EvHREnabled,
|
ALLNORAW, // EvHREnabled,
|
||||||
ALLNORAW, // EvHRAmount,
|
0, // EvHRAmount : obsolete,
|
||||||
ALLNORAW, // EvHRMethod,
|
ALLNORAW, // EvHRMethod,
|
||||||
DEMOSAIC, // EvWProfile,
|
DEMOSAIC, // EvWProfile,
|
||||||
OUTPUTPROFILE, // EvOProfile,
|
OUTPUTPROFILE, // EvOProfile,
|
||||||
@ -104,12 +104,12 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
RESIZE, // EvResizeMethod,
|
RESIZE, // EvResizeMethod,
|
||||||
EXIF, // EvExif,
|
EXIF, // EvExif,
|
||||||
IPTC, // EvIPTC
|
IPTC, // EvIPTC
|
||||||
RESIZE, // EvResizeSpec,
|
0, // EvResizeSpec : obsolete,
|
||||||
RESIZE, // EvResizeWidth
|
RESIZE, // EvResizeWidth
|
||||||
RESIZE, // EvResizeHeight
|
RESIZE, // EvResizeHeight
|
||||||
RESIZE, // EvResizeEnabled
|
RESIZE, // EvResizeEnabled
|
||||||
ALL, // EvProfileChangeNotification
|
ALL, // EvProfileChangeNotification
|
||||||
RETINEX, // EvShrHighQuality
|
0, // EvSHHighQuality : obsolete
|
||||||
HDR, // EvPerspCorr
|
HDR, // EvPerspCorr
|
||||||
DARKFRAME, // EvLCPFile
|
DARKFRAME, // EvLCPFile
|
||||||
AUTOEXP, // EvRGBrCurveLumamode
|
AUTOEXP, // EvRGBrCurveLumamode
|
||||||
@ -157,12 +157,12 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
FLATFIELD, // EvFlatFieldBlurRadius,
|
FLATFIELD, // EvFlatFieldBlurRadius,
|
||||||
FLATFIELD, // EvFlatFieldBlurType,
|
FLATFIELD, // EvFlatFieldBlurType,
|
||||||
HDR, // EvAutoDIST,
|
HDR, // EvAutoDIST,
|
||||||
ALLNORAW, // EvDPDNLumCurve,
|
0, // EvDPDNLumCurve : obsolete
|
||||||
ALLNORAW, // EvDPDNChromCurve,
|
0, // EvDPDNChromCurve : obsolete
|
||||||
GAMMA, // EvGAMMA
|
0, // EvGAMMA : obsolete
|
||||||
GAMMA, // EvGAMPOS
|
0, // EvGAMPOS : obsolete
|
||||||
GAMMA, // EvGAMFREE
|
0, // EvGAMFREE : obsolete
|
||||||
GAMMA, // EvSLPOS
|
0, // EvSLPOS : obsolete
|
||||||
DARKFRAME, // EvPreProcessExpBlackzero
|
DARKFRAME, // EvPreProcessExpBlackzero
|
||||||
DARKFRAME, // EvPreProcessExpBlackone
|
DARKFRAME, // EvPreProcessExpBlackone
|
||||||
DARKFRAME, // EvPreProcessExpBlacktwo
|
DARKFRAME, // EvPreProcessExpBlacktwo
|
||||||
@ -200,7 +200,6 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, // EvLLCCurve
|
LUMINANCECURVE, // EvLLCCurve
|
||||||
LUMINANCECURVE, // EvLLCredsk
|
LUMINANCECURVE, // EvLLCredsk
|
||||||
ALLNORAW, // EvDPDNLdetail
|
ALLNORAW, // EvDPDNLdetail
|
||||||
//ALLNORAW, // EvCATEnabled
|
|
||||||
LUMINANCECURVE, // EvCATEnabled
|
LUMINANCECURVE, // EvCATEnabled
|
||||||
LUMINANCECURVE, // EvCATDegree
|
LUMINANCECURVE, // EvCATDegree
|
||||||
LUMINANCECURVE, // EvCATMethodsur
|
LUMINANCECURVE, // EvCATMethodsur
|
||||||
@ -236,7 +235,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, // EvCATAutoadap
|
LUMINANCECURVE, // EvCATAutoadap
|
||||||
DEFRINGE, // EvPFCurve
|
DEFRINGE, // EvPFCurve
|
||||||
ALLNORAW, // EvWBequal
|
ALLNORAW, // EvWBequal
|
||||||
ALLNORAW, // EvWBequalbo
|
0, // EvWBequalbo : obsolete
|
||||||
HDR, // EvGradientDegree
|
HDR, // EvGradientDegree
|
||||||
HDR, // EvGradientEnabled
|
HDR, // EvGradientEnabled
|
||||||
HDR, // EvPCVignetteStrength
|
HDR, // EvPCVignetteStrength
|
||||||
@ -277,7 +276,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
LUMINANCECURVE, // EvLLHCurve
|
LUMINANCECURVE, // EvLLHCurve
|
||||||
LUMINANCECURVE, // EvLHHCurve
|
LUMINANCECURVE, // EvLHHCurve
|
||||||
ALLNORAW, // EvDirPyrEqualizerThreshold
|
ALLNORAW, // EvDirPyrEqualizerThreshold
|
||||||
ALLNORAW, // EvDPDNenhance
|
0, // EvDPDNenhance : obsolete
|
||||||
AUTOEXP, // EvBWMethodalg
|
AUTOEXP, // EvBWMethodalg
|
||||||
ALLNORAW, // EvDirPyrEqualizerSkin
|
ALLNORAW, // EvDirPyrEqualizerSkin
|
||||||
ALLNORAW, // EvDirPyrEqlgamutlab
|
ALLNORAW, // EvDirPyrEqlgamutlab
|
||||||
@ -301,8 +300,8 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
AUTOEXP, // EvColorToningbluehigh
|
AUTOEXP, // EvColorToningbluehigh
|
||||||
AUTOEXP, // EvColorToningbalance
|
AUTOEXP, // EvColorToningbalance
|
||||||
AUTOEXP, // EvColorToningNeutral
|
AUTOEXP, // EvColorToningNeutral
|
||||||
AUTOEXP, // EvColorToningsatlow
|
0, // EvColorToningsatlow : obsolete
|
||||||
AUTOEXP, // EvColorToningsathigh
|
0, // EvColorToningsathigh : obsolete
|
||||||
AUTOEXP, // EvColorToningTwocolor
|
AUTOEXP, // EvColorToningTwocolor
|
||||||
AUTOEXP, // EvColorToningNeutralcur
|
AUTOEXP, // EvColorToningNeutralcur
|
||||||
AUTOEXP, // EvColorToningLumamode
|
AUTOEXP, // EvColorToningLumamode
|
||||||
@ -327,7 +326,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
ALLNORAW, // EvDPDNsmet
|
ALLNORAW, // EvDPDNsmet
|
||||||
DARKFRAME, // EvPreProcessDeadPixel
|
DARKFRAME, // EvPreProcessDeadPixel
|
||||||
ALLNORAW, // EvDPDNCCCurve
|
ALLNORAW, // EvDPDNCCCurve
|
||||||
ALLNORAW, // EvDPDNautochroma
|
0, // EvDPDNautochroma : obsolete
|
||||||
ALLNORAW, // EvDPDNLmet
|
ALLNORAW, // EvDPDNLmet
|
||||||
ALLNORAW, // EvDPDNCmet
|
ALLNORAW, // EvDPDNCmet
|
||||||
ALLNORAW, // EvDPDNC2met
|
ALLNORAW, // EvDPDNC2met
|
||||||
@ -436,7 +435,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
DIRPYREQUALIZER, // EvWavNPmet
|
DIRPYREQUALIZER, // EvWavNPmet
|
||||||
DEMOSAIC, // EvretinexMethod
|
DEMOSAIC, // EvretinexMethod
|
||||||
RETINEX, // EvLneigh
|
RETINEX, // EvLneigh
|
||||||
RETINEX, // EvLgain
|
0, // EvLgain : obsolete
|
||||||
RETINEX, // EvLoffs
|
RETINEX, // EvLoffs
|
||||||
RETINEX, // EvLstr
|
RETINEX, // EvLstr
|
||||||
RETINEX, // EvLscal
|
RETINEX, // EvLscal
|
||||||
@ -500,7 +499,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
0, // unused
|
0, // unused
|
||||||
DEMOSAIC, // EvPixelShiftMotionMethod
|
DEMOSAIC, // EvPixelShiftMotionMethod
|
||||||
DEMOSAIC, // EvPixelShiftSmooth
|
DEMOSAIC, // EvPixelShiftSmooth
|
||||||
DEMOSAIC, // EvPixelShiftLmmse
|
0, // EvPixelShiftLmmse : obsolete
|
||||||
DEMOSAIC, // EvPixelShiftEqualBright
|
DEMOSAIC, // EvPixelShiftEqualBright
|
||||||
DEMOSAIC, // EvPixelShiftEqualBrightChannel
|
DEMOSAIC, // EvPixelShiftEqualBrightChannel
|
||||||
LUMINANCECURVE, // EvCATtempout
|
LUMINANCECURVE, // EvCATtempout
|
||||||
@ -631,7 +630,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
AUTOEXP, // EvLocallabstreng
|
AUTOEXP, // EvLocallabstreng
|
||||||
AUTOEXP, // EvLocallabsensisf
|
AUTOEXP, // EvLocallabsensisf
|
||||||
AUTOEXP, // Evlocallabsharblur
|
AUTOEXP, // Evlocallabsharblur
|
||||||
AUTOEXP, // EvLocenalabregion
|
0, // EvLocenalabregion : obsolete
|
||||||
AUTOEXP, // EvlocallabshowmaskMethod
|
AUTOEXP, // EvlocallabshowmaskMethod
|
||||||
AUTOEXP, // EvLocallabSpotSelectedWithMask
|
AUTOEXP, // EvLocallabSpotSelectedWithMask
|
||||||
AUTOEXP, // EvlocallabCCmaskshape
|
AUTOEXP, // EvlocallabCCmaskshape
|
||||||
@ -875,7 +874,7 @@ int refreshmap[rtengine::NUMOFEVENTS] = {
|
|||||||
AUTOEXP | M_AUTOEXP, // EvLocenalog
|
AUTOEXP | M_AUTOEXP, // EvLocenalog
|
||||||
HDR, // EvLocallabAuto
|
HDR, // EvLocallabAuto
|
||||||
AUTOEXP, // EvlocallabsourceGray
|
AUTOEXP, // EvlocallabsourceGray
|
||||||
HDR, // EvlocallabsourceGrayAuto
|
0, // EvlocallabsourceGrayAuto : obsolete
|
||||||
HDR, // EvlocallabAutoGray
|
HDR, // EvlocallabAutoGray
|
||||||
AUTOEXP, // EvlocallabblackEv
|
AUTOEXP, // EvlocallabblackEv
|
||||||
AUTOEXP, // EvlocallabwhiteEv
|
AUTOEXP, // EvlocallabwhiteEv
|
||||||
|
@ -1205,7 +1205,6 @@ void BlackWhite::setBatchMode (bool batchMode)
|
|||||||
{
|
{
|
||||||
removeIfThere (autoHBox, autoch, false);
|
removeIfThere (autoHBox, autoch, false);
|
||||||
autoch = Gtk::manage (new Gtk::CheckButton (M("TP_BWMIX_AUTOCH")));
|
autoch = Gtk::manage (new Gtk::CheckButton (M("TP_BWMIX_AUTOCH")));
|
||||||
autoch->set_tooltip_markup (M("TP_BWMIX_AUTOCH_TIP"));
|
|
||||||
autoconn = autoch->signal_toggled().connect( sigc::mem_fun(*this, &BlackWhite::autoch_toggled) );
|
autoconn = autoch->signal_toggled().connect( sigc::mem_fun(*this, &BlackWhite::autoch_toggled) );
|
||||||
autoHBox->pack_start (*autoch);
|
autoHBox->pack_start (*autoch);
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
spotMethod_(Gtk::manage(new MyComboBoxText())),
|
spotMethod_(Gtk::manage(new MyComboBoxText())),
|
||||||
shapeMethod_(Gtk::manage(new MyComboBoxText())),
|
shapeMethod_(Gtk::manage(new MyComboBoxText())),
|
||||||
qualityMethod_(Gtk::manage(new MyComboBoxText())),
|
qualityMethod_(Gtk::manage(new MyComboBoxText())),
|
||||||
complexMethod_(Gtk::manage(new MyComboBoxText())),
|
//complexMethod_(Gtk::manage(new MyComboBoxText())),
|
||||||
wavMethod_(Gtk::manage(new MyComboBoxText())),
|
wavMethod_(Gtk::manage(new MyComboBoxText())),
|
||||||
|
|
||||||
sensiexclu_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIEXCLU"), 0, 100, 1, 12))),
|
sensiexclu_(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SENSIEXCLU"), 0, 100, 1, 12))),
|
||||||
@ -90,7 +90,7 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
laplac_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_LAPLACC")))),
|
laplac_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_LAPLACC")))),
|
||||||
deltae_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_DELTAEC")))),
|
deltae_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_DELTAEC")))),
|
||||||
shortc_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_SHORTC")))),
|
shortc_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_SHORTC")))),
|
||||||
savrest_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_SAVREST")))),
|
//savrest_(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_SAVREST")))),
|
||||||
|
|
||||||
expTransGrad_(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_TRANSIT")))),
|
expTransGrad_(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_TRANSIT")))),
|
||||||
expShapeDetect_(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_ARTIF")))),
|
expShapeDetect_(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_ARTIF")))),
|
||||||
@ -476,11 +476,11 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
}
|
}
|
||||||
|
|
||||||
lumask_->setAdjusterListener(this);
|
lumask_->setAdjusterListener(this);
|
||||||
savrestConn_ = savrest_->signal_toggled().connect(
|
//savrestConn_ = savrest_->signal_toggled().connect(
|
||||||
sigc::mem_fun(*this, &ControlSpotPanel::savrestChanged));
|
// sigc::mem_fun(*this, &ControlSpotPanel::savrestChanged));
|
||||||
|
|
||||||
if (showtooltip) {
|
if (showtooltip) {
|
||||||
savrest_->set_tooltip_text(M("TP_LOCALLAB_SAVREST_TOOLTIP"));
|
//savrest_->set_tooltip_text(M("TP_LOCALLAB_SAVREST_TOOLTIP"));
|
||||||
lumask_->set_tooltip_text(M("TP_LOCALLAB_LUMASK_TOOLTIP"));
|
lumask_->set_tooltip_text(M("TP_LOCALLAB_LUMASK_TOOLTIP"));
|
||||||
laplac_->set_tooltip_text(M("TP_LOCALLAB_LAP_MASK_TOOLTIP"));
|
laplac_->set_tooltip_text(M("TP_LOCALLAB_LAP_MASK_TOOLTIP"));
|
||||||
}
|
}
|
||||||
@ -498,27 +498,27 @@ ControlSpotPanel::ControlSpotPanel():
|
|||||||
Gtk::Separator *separatormet = Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_HORIZONTAL));
|
Gtk::Separator *separatormet = Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_HORIZONTAL));
|
||||||
pack_start(*separatormet, Gtk::PACK_SHRINK, 2);
|
pack_start(*separatormet, Gtk::PACK_SHRINK, 2);
|
||||||
|
|
||||||
Gtk::Box* const ctboxcomplexmethod = Gtk::manage(new Gtk::Box());
|
//Gtk::Box* const ctboxcomplexmethod = Gtk::manage(new Gtk::Box());
|
||||||
|
|
||||||
if (showtooltip) {
|
//if (showtooltip) {
|
||||||
ctboxcomplexmethod->set_tooltip_markup(M("TP_LOCALLAB_COMPLEXMETHOD_TOOLTIP"));
|
// ctboxcomplexmethod->set_tooltip_markup(M("TP_LOCALLAB_COMPLEXMETHOD_TOOLTIP"));
|
||||||
}
|
//}
|
||||||
|
|
||||||
Gtk::Label* const labelcomplexmethod = Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_COMPLEX_METHOD") + ":"));
|
//Gtk::Label* const labelcomplexmethod = Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_COMPLEX_METHOD") + ":"));
|
||||||
ctboxcomplexmethod->pack_start(*labelcomplexmethod, Gtk::PACK_SHRINK, 4);
|
//ctboxcomplexmethod->pack_start(*labelcomplexmethod, Gtk::PACK_SHRINK, 4);
|
||||||
|
|
||||||
if (showtooltip) {
|
//if (showtooltip) {
|
||||||
complexMethod_->set_tooltip_markup(M("TP_LOCALLAB_COMPLEX_TOOLTIP"));
|
// complexMethod_->set_tooltip_markup(M("TP_LOCALLAB_COMPLEX_TOOLTIP"));
|
||||||
}
|
//}
|
||||||
|
|
||||||
complexMethod_->append(M("TP_LOCALLAB_SIM"));
|
//complexMethod_->append(M("TP_LOCALLAB_SIM"));
|
||||||
complexMethod_->append(M("TP_LOCALLAB_MED"));
|
//complexMethod_->append(M("TP_LOCALLAB_MED"));
|
||||||
complexMethod_->append(M("TP_LOCALLAB_ALL"));
|
//complexMethod_->append(M("TP_LOCALLAB_ALL"));
|
||||||
complexMethod_->set_active(1);
|
//complexMethod_->set_active(1);
|
||||||
complexMethodconn_ = complexMethod_->signal_changed().connect(
|
//complexMethodconn_ = complexMethod_->signal_changed().connect(
|
||||||
sigc::mem_fun(
|
// sigc::mem_fun(
|
||||||
*this, &ControlSpotPanel::complexMethodChanged));
|
// *this, &ControlSpotPanel::complexMethodChanged));
|
||||||
ctboxcomplexmethod->pack_start(*complexMethod_);
|
//ctboxcomplexmethod->pack_start(*complexMethod_);
|
||||||
// pack_start(*ctboxcomplexmethod);
|
// pack_start(*ctboxcomplexmethod);
|
||||||
/*
|
/*
|
||||||
Gtk::Box* const ctboxwavmethod = Gtk::manage(new Gtk::Box());
|
Gtk::Box* const ctboxwavmethod = Gtk::manage(new Gtk::Box());
|
||||||
@ -865,8 +865,8 @@ void ControlSpotPanel::load_ControlSpot_param()
|
|||||||
denoichmask_->setValue(row[spots_.denoichmask]);
|
denoichmask_->setValue(row[spots_.denoichmask]);
|
||||||
shortc_->set_active(row[spots_.shortc]);
|
shortc_->set_active(row[spots_.shortc]);
|
||||||
lumask_->setValue((double)row[spots_.lumask]);
|
lumask_->setValue((double)row[spots_.lumask]);
|
||||||
savrest_->set_active(row[spots_.savrest]);
|
//savrest_->set_active(row[spots_.savrest]);
|
||||||
complexMethod_->set_active(row[spots_.complexMethod]);
|
//complexMethod_->set_active(row[spots_.complexMethod]);
|
||||||
wavMethod_->set_active(row[spots_.wavMethod]);
|
wavMethod_->set_active(row[spots_.wavMethod]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1157,37 +1157,37 @@ void ControlSpotPanel::qualityMethodChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::complexMethodChanged()
|
//void ControlSpotPanel::complexMethodChanged()
|
||||||
{
|
//{
|
||||||
// printf("qualityMethodChanged\n");
|
// // printf("qualityMethodChanged\n");
|
||||||
|
//
|
||||||
// Get selected control spot
|
// // Get selected control spot
|
||||||
const auto s = treeview_->get_selection();
|
// const auto s = treeview_->get_selection();
|
||||||
|
//
|
||||||
if (!s->count_selected_rows()) {
|
// if (!s->count_selected_rows()) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
const auto iter = s->get_selected();
|
// const auto iter = s->get_selected();
|
||||||
Gtk::TreeModel::Row row = *iter;
|
// Gtk::TreeModel::Row row = *iter;
|
||||||
|
//
|
||||||
row[spots_.complexMethod] = complexMethod_->get_active_row_number();
|
// row[spots_.complexMethod] = complexMethod_->get_active_row_number();
|
||||||
|
//
|
||||||
if (multiImage && complexMethod_->get_active_text() == M("GENERAL_UNCHANGED")) {
|
// if (multiImage && complexMethod_->get_active_text() == M("GENERAL_UNCHANGED")) {
|
||||||
// excluFrame->show();
|
// // excluFrame->show();
|
||||||
} else if (complexMethod_->get_active_row_number() == 0) { //sim
|
// } else if (complexMethod_->get_active_row_number() == 0) { //sim
|
||||||
// excluFrame->hide();
|
// // excluFrame->hide();
|
||||||
} else if (complexMethod_->get_active_row_number() == 1) { // mod
|
// } else if (complexMethod_->get_active_row_number() == 1) { // mod
|
||||||
// excluFrame->show();
|
// // excluFrame->show();
|
||||||
} else if (complexMethod_->get_active_row_number() == 2) { // all
|
// } else if (complexMethod_->get_active_row_number() == 2) { // all
|
||||||
// excluFrame->show();
|
// // excluFrame->show();
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// Raise event
|
// // Raise event
|
||||||
if (listener) {
|
// if (listener) {
|
||||||
listener->panelChanged(EvLocallabSpotcomplexMethod, complexMethod_->get_active_text());
|
// listener->panelChanged(EvLocallabSpotcomplexMethod, complexMethod_->get_active_text());
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
void ControlSpotPanel::wavMethodChanged()
|
void ControlSpotPanel::wavMethodChanged()
|
||||||
{
|
{
|
||||||
@ -1786,28 +1786,28 @@ void ControlSpotPanel::shortcChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControlSpotPanel::savrestChanged()
|
//void ControlSpotPanel::savrestChanged()
|
||||||
{
|
//{
|
||||||
// Get selected control spot
|
// // Get selected control spot
|
||||||
const auto s = treeview_->get_selection();
|
// const auto s = treeview_->get_selection();
|
||||||
|
//
|
||||||
if (!s->count_selected_rows()) {
|
// if (!s->count_selected_rows()) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
const auto iter = s->get_selected();
|
// const auto iter = s->get_selected();
|
||||||
Gtk::TreeModel::Row row = *iter;
|
// Gtk::TreeModel::Row row = *iter;
|
||||||
row[spots_.savrest] = savrest_->get_active();
|
// row[spots_.savrest] = savrest_->get_active();
|
||||||
|
//
|
||||||
// Raise event
|
// // Raise event
|
||||||
if (listener) {
|
// if (listener) {
|
||||||
if (savrest_->get_active()) {
|
// if (savrest_->get_active()) {
|
||||||
listener->panelChanged(Evlocallabsavrest, M("GENERAL_ENABLED"));
|
// listener->panelChanged(Evlocallabsavrest, M("GENERAL_ENABLED"));
|
||||||
} else {
|
// } else {
|
||||||
listener->panelChanged(Evlocallabsavrest, M("GENERAL_DISABLED"));
|
// listener->panelChanged(Evlocallabsavrest, M("GENERAL_DISABLED"));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
void ControlSpotPanel::previewChanged()
|
void ControlSpotPanel::previewChanged()
|
||||||
{
|
{
|
||||||
@ -1869,8 +1869,8 @@ void ControlSpotPanel::disableParamlistener(bool cond)
|
|||||||
denoichmask_->block(cond);
|
denoichmask_->block(cond);
|
||||||
shortcConn_.block(cond);
|
shortcConn_.block(cond);
|
||||||
lumask_->block(cond);
|
lumask_->block(cond);
|
||||||
savrestConn_.block(cond);
|
//savrestConn_.block(cond);
|
||||||
complexMethodconn_.block(cond);
|
//complexMethodconn_.block(cond);
|
||||||
wavMethodconn_.block(cond);
|
wavMethodconn_.block(cond);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1916,8 +1916,8 @@ void ControlSpotPanel::setParamEditable(bool cond)
|
|||||||
denoichmask_->set_sensitive(cond);
|
denoichmask_->set_sensitive(cond);
|
||||||
shortc_->set_sensitive(cond);
|
shortc_->set_sensitive(cond);
|
||||||
lumask_->set_sensitive(cond);
|
lumask_->set_sensitive(cond);
|
||||||
savrest_->set_sensitive(cond);
|
//savrest_->set_sensitive(cond);
|
||||||
complexMethod_->set_sensitive(cond);
|
//complexMethod_->set_sensitive(cond);
|
||||||
wavMethod_->set_sensitive(cond);
|
wavMethod_->set_sensitive(cond);
|
||||||
preview_->set_sensitive(cond);
|
preview_->set_sensitive(cond);
|
||||||
|
|
||||||
@ -2599,7 +2599,7 @@ ControlSpotPanel::SpotRow* ControlSpotPanel::getSpot(const int index)
|
|||||||
r->laplac = row[spots_.laplac];
|
r->laplac = row[spots_.laplac];
|
||||||
r->deltae = row[spots_.deltae];
|
r->deltae = row[spots_.deltae];
|
||||||
r->shortc = row[spots_.shortc];
|
r->shortc = row[spots_.shortc];
|
||||||
r->savrest = row[spots_.savrest];
|
//r->savrest = row[spots_.savrest];
|
||||||
r->wavMethod = row[spots_.wavMethod];
|
r->wavMethod = row[spots_.wavMethod];
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
@ -2735,7 +2735,7 @@ void ControlSpotPanel::addControlSpot(SpotRow* newSpot)
|
|||||||
row[spots_.denoichmask] = newSpot->denoichmask;
|
row[spots_.denoichmask] = newSpot->denoichmask;
|
||||||
row[spots_.shortc] = newSpot->shortc;
|
row[spots_.shortc] = newSpot->shortc;
|
||||||
row[spots_.lumask] = newSpot->lumask;
|
row[spots_.lumask] = newSpot->lumask;
|
||||||
row[spots_.savrest] = newSpot->savrest;
|
//row[spots_.savrest] = newSpot->savrest;
|
||||||
row[spots_.complexMethod] = newSpot->complexMethod;
|
row[spots_.complexMethod] = newSpot->complexMethod;
|
||||||
row[spots_.wavMethod] = newSpot->wavMethod;
|
row[spots_.wavMethod] = newSpot->wavMethod;
|
||||||
updateParamVisibility();
|
updateParamVisibility();
|
||||||
@ -2855,7 +2855,7 @@ ControlSpotPanel::ControlSpots::ControlSpots()
|
|||||||
add(denoichmask);
|
add(denoichmask);
|
||||||
add(shortc);
|
add(shortc);
|
||||||
add(lumask);
|
add(lumask);
|
||||||
add(savrest);
|
//add(savrest);
|
||||||
add(complexMethod);
|
add(complexMethod);
|
||||||
add(wavMethod);
|
add(wavMethod);
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ public:
|
|||||||
double denoichmask;
|
double denoichmask;
|
||||||
bool shortc;
|
bool shortc;
|
||||||
int lumask;
|
int lumask;
|
||||||
bool savrest;
|
//bool savrest;
|
||||||
int complexMethod; // 0 = Simple, 1 = Moderate, 2 = all
|
int complexMethod; // 0 = Simple, 1 = Moderate, 2 = all
|
||||||
int wavMethod; // 0 = D2, 1 = D4, 2 = D6, 3 = D10, 4 = D14
|
int wavMethod; // 0 = D2, 1 = D4, 2 = D6, 3 = D10, 4 = D14
|
||||||
};
|
};
|
||||||
@ -243,7 +243,7 @@ private:
|
|||||||
void spotMethodChanged();
|
void spotMethodChanged();
|
||||||
void shapeMethodChanged();
|
void shapeMethodChanged();
|
||||||
void qualityMethodChanged();
|
void qualityMethodChanged();
|
||||||
void complexMethodChanged();
|
//void complexMethodChanged();
|
||||||
void wavMethodChanged();
|
void wavMethodChanged();
|
||||||
|
|
||||||
void updateParamVisibility();
|
void updateParamVisibility();
|
||||||
@ -259,7 +259,7 @@ private:
|
|||||||
void laplacChanged();
|
void laplacChanged();
|
||||||
void deltaeChanged();
|
void deltaeChanged();
|
||||||
void shortcChanged();
|
void shortcChanged();
|
||||||
void savrestChanged();
|
//void savrestChanged();
|
||||||
|
|
||||||
void previewChanged();
|
void previewChanged();
|
||||||
|
|
||||||
@ -325,7 +325,7 @@ private:
|
|||||||
Gtk::TreeModelColumn<int> denoichmask;
|
Gtk::TreeModelColumn<int> denoichmask;
|
||||||
Gtk::TreeModelColumn<bool> shortc;
|
Gtk::TreeModelColumn<bool> shortc;
|
||||||
Gtk::TreeModelColumn<int> lumask;
|
Gtk::TreeModelColumn<int> lumask;
|
||||||
Gtk::TreeModelColumn<bool> savrest;
|
//Gtk::TreeModelColumn<bool> savrest;
|
||||||
Gtk::TreeModelColumn<int> complexMethod; // 0 = Simple, 1 = mod, 2 = all
|
Gtk::TreeModelColumn<int> complexMethod; // 0 = Simple, 1 = mod, 2 = all
|
||||||
Gtk::TreeModelColumn<int> wavMethod; // 0 = D2, 1 = D4, 2 = D6, 3 = D10, 4 = D14
|
Gtk::TreeModelColumn<int> wavMethod; // 0 = D2, 1 = D4, 2 = D6, 3 = D10, 4 = D14
|
||||||
};
|
};
|
||||||
@ -377,8 +377,8 @@ private:
|
|||||||
sigc::connection shapeMethodconn_;
|
sigc::connection shapeMethodconn_;
|
||||||
MyComboBoxText* const qualityMethod_;
|
MyComboBoxText* const qualityMethod_;
|
||||||
sigc::connection qualityMethodconn_;
|
sigc::connection qualityMethodconn_;
|
||||||
MyComboBoxText* const complexMethod_;
|
//MyComboBoxText* const complexMethod_;
|
||||||
sigc::connection complexMethodconn_;
|
//sigc::connection complexMethodconn_;
|
||||||
MyComboBoxText* const wavMethod_;
|
MyComboBoxText* const wavMethod_;
|
||||||
sigc::connection wavMethodconn_;
|
sigc::connection wavMethodconn_;
|
||||||
|
|
||||||
@ -425,8 +425,8 @@ private:
|
|||||||
sigc::connection deltaeConn_;
|
sigc::connection deltaeConn_;
|
||||||
Gtk::CheckButton* const shortc_;
|
Gtk::CheckButton* const shortc_;
|
||||||
sigc::connection shortcConn_;
|
sigc::connection shortcConn_;
|
||||||
Gtk::CheckButton* const savrest_;
|
//Gtk::CheckButton* const savrest_;
|
||||||
sigc::connection savrestConn_;
|
//sigc::connection savrestConn_;
|
||||||
|
|
||||||
MyExpander* const expTransGrad_;
|
MyExpander* const expTransGrad_;
|
||||||
MyExpander* const expShapeDetect_;
|
MyExpander* const expShapeDetect_;
|
||||||
|
@ -97,7 +97,7 @@ void DarkFrame::read(const rtengine::procparams::ProcParams* pp, const ParamsEdi
|
|||||||
|
|
||||||
if( pp->raw.df_autoselect && dfp && !multiImage) {
|
if( pp->raw.df_autoselect && dfp && !multiImage) {
|
||||||
// retrieve the auto-selected df filename
|
// retrieve the auto-selected df filename
|
||||||
rtengine::RawImage *img = dfp->getDF();
|
const rtengine::RawImage *img = dfp->getDF();
|
||||||
|
|
||||||
if( img ) {
|
if( img ) {
|
||||||
dfInfo->set_text( Glib::ustring::compose("%1: %2ISO %3s", Glib::path_get_basename(img->get_filename()), img->get_ISOspeed(), img->get_shutter()) );
|
dfInfo->set_text( Glib::ustring::compose("%1: %2ISO %3s", Glib::path_get_basename(img->get_filename()), img->get_ISOspeed(), img->get_shutter()) );
|
||||||
@ -179,7 +179,7 @@ void DarkFrame::dfAutoChanged()
|
|||||||
|
|
||||||
if(dfAuto->get_active() && dfp && !batchMode) {
|
if(dfAuto->get_active() && dfp && !batchMode) {
|
||||||
// retrieve the auto-selected df filename
|
// retrieve the auto-selected df filename
|
||||||
rtengine::RawImage *img = dfp->getDF();
|
const rtengine::RawImage *img = dfp->getDF();
|
||||||
|
|
||||||
if( img ) {
|
if( img ) {
|
||||||
dfInfo->set_text( Glib::ustring::compose("%1: %2ISO %3s", Glib::path_get_basename(img->get_filename()), img->get_ISOspeed(), img->get_shutter()) );
|
dfInfo->set_text( Glib::ustring::compose("%1: %2ISO %3s", Glib::path_get_basename(img->get_filename()), img->get_ISOspeed(), img->get_shutter()) );
|
||||||
|
@ -36,7 +36,7 @@ class DFProvider
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~DFProvider() = default;
|
virtual ~DFProvider() = default;
|
||||||
virtual rtengine::RawImage* getDF() = 0;
|
virtual const rtengine::RawImage* getDF() = 0;
|
||||||
virtual Glib::ustring GetCurrentImageFilePath() = 0;
|
virtual Glib::ustring GetCurrentImageFilePath() = 0;
|
||||||
// add other info here
|
// add other info here
|
||||||
};
|
};
|
||||||
|
@ -875,7 +875,7 @@ void FileBrowser::menuItemActivated (Gtk::MenuItem* m)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reinit cache
|
// Reinit cache
|
||||||
rtengine::dfm.init( options.rtSettings.darkFramesPath );
|
rtengine::DFManager::getInstance().init( options.rtSettings.darkFramesPath );
|
||||||
} else {
|
} else {
|
||||||
// Target directory creation failed, we clear the darkFramesPath setting
|
// Target directory creation failed, we clear the darkFramesPath setting
|
||||||
options.rtSettings.darkFramesPath.clear();
|
options.rtSettings.darkFramesPath.clear();
|
||||||
|
@ -305,7 +305,7 @@ bool FilePanel::imageLoaded( Thumbnail* thm, ProgressConnector<rtengine::Initial
|
|||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
int winGdiHandles = GetGuiResources( GetCurrentProcess(), GR_GDIOBJECTS);
|
int winGdiHandles = GetGuiResources( GetCurrentProcess(), GR_GDIOBJECTS);
|
||||||
if(winGdiHandles > 0 && winGdiHandles <= 6500) //(old settings 8500) 0 means we don't have the rights to access the function, 8500 because the limit is 10000 and we need about 1500 free handles
|
if(winGdiHandles > 0 && winGdiHandles <= 6500) //(old settings 8500) 0 means we don't have the rights to access the function, 8500 because the limit is 10000 and we need about 1500 free handles
|
||||||
//J.Desmis october 2021 I change 8500 to 6500..Why ? because whitout while increasing size GUI system crash in multieditor
|
//J.Desmis october 2021 I change 8500 to 6500..Why ? because without while increasing size GUI system crash in multieditor
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
GThreadLock lock; // Acquiring the GUI... not sure that it's necessary, but it shouldn't harm
|
GThreadLock lock; // Acquiring the GUI... not sure that it's necessary, but it shouldn't harm
|
||||||
|
@ -41,12 +41,12 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha
|
|||||||
EvICMprimariMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICM_OUTPUT_PRIMARIES");
|
EvICMprimariMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICM_OUTPUT_PRIMARIES");
|
||||||
EvICMprofileMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICM_OUTPUT_TYPE");
|
EvICMprofileMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICM_OUTPUT_TYPE");
|
||||||
EvICMtempMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICM_OUTPUT_TEMP");
|
EvICMtempMethod = m->newEvent(GAMMA, "HISTORY_MSG_ICM_OUTPUT_TEMP");
|
||||||
EvICMpredx = m->newEvent(GAMMA, "HISTORY_MSG_ICMPREDX");
|
//EvICMpredx = m->newEvent(GAMMA, "HISTORY_MSG_ICMPREDX");
|
||||||
EvICMpredy = m->newEvent(GAMMA, "HISTORY_MSG_ICMPREDY");
|
//EvICMpredy = m->newEvent(GAMMA, "HISTORY_MSG_ICMPREDY");
|
||||||
EvICMpgrex = m->newEvent(GAMMA, "HISTORY_MSG_ICMPGREX");
|
//EvICMpgrex = m->newEvent(GAMMA, "HISTORY_MSG_ICMPGREX");
|
||||||
EvICMpgrey = m->newEvent(GAMMA, "HISTORY_MSG_ICMPGREY");
|
//EvICMpgrey = m->newEvent(GAMMA, "HISTORY_MSG_ICMPGREY");
|
||||||
EvICMpblux = m->newEvent(GAMMA, "HISTORY_MSG_ICMPBLUX");
|
//EvICMpblux = m->newEvent(GAMMA, "HISTORY_MSG_ICMPBLUX");
|
||||||
EvICMpbluy = m->newEvent(GAMMA, "HISTORY_MSG_ICMPBLUY");
|
//EvICMpbluy = m->newEvent(GAMMA, "HISTORY_MSG_ICMPBLUY");
|
||||||
EvICMgamm = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_ICM_WORKING_GAMMA");
|
EvICMgamm = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_ICM_WORKING_GAMMA");
|
||||||
EvICMslop = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_ICM_WORKING_SLOPE");
|
EvICMslop = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_ICM_WORKING_SLOPE");
|
||||||
EvICMtrcinMethod = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_ICM_WORKING_TRC_METHOD");
|
EvICMtrcinMethod = m->newEvent(LUMINANCECURVE, "HISTORY_MSG_ICM_WORKING_TRC_METHOD");
|
||||||
@ -311,38 +311,30 @@ ICMPanel::ICMPanel() : FoldableToolPanel(this, "icm", M("TP_ICM_LABEL")), iuncha
|
|||||||
redx->set_tooltip_text(M("TP_ICM_PRIMRED_TOOLTIP"));
|
redx->set_tooltip_text(M("TP_ICM_PRIMRED_TOOLTIP"));
|
||||||
grex->set_tooltip_text(M("TP_ICM_PRIMGRE_TOOLTIP"));
|
grex->set_tooltip_text(M("TP_ICM_PRIMGRE_TOOLTIP"));
|
||||||
blux->set_tooltip_text(M("TP_ICM_PRIMBLU_TOOLTIP"));
|
blux->set_tooltip_text(M("TP_ICM_PRIMBLU_TOOLTIP"));
|
||||||
blr = Gtk::manage(new Gtk::Label(M(" ")));
|
|
||||||
blg = Gtk::manage(new Gtk::Label(M(" ")));
|
|
||||||
blb = Gtk::manage(new Gtk::Label(M(" ")));
|
|
||||||
|
|
||||||
redBox = Gtk::manage(new Gtk::Box());
|
|
||||||
redBox->pack_start(*redx);//, Gtk::PACK_SHRINK);
|
|
||||||
redBox->pack_start(*blr, Gtk::PACK_SHRINK);
|
|
||||||
redBox->pack_start(*redy);//, Gtk::PACK_SHRINK);
|
|
||||||
redFrame = Gtk::manage(new Gtk::Frame(M("TP_ICM_REDFRAME")));
|
redFrame = Gtk::manage(new Gtk::Frame(M("TP_ICM_REDFRAME")));
|
||||||
redFrame->set_label_align(0.025, 0.5);
|
redFrame->set_label_align(0.025, 0.5);
|
||||||
Gtk::Box *redVBox = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL));
|
|
||||||
redVBox->pack_start(*redBox, Gtk::PACK_EXPAND_WIDGET);
|
|
||||||
redFrame->set_tooltip_text(M("TP_ICM_WORKING_PRIMFRAME_TOOLTIP"));
|
redFrame->set_tooltip_text(M("TP_ICM_WORKING_PRIMFRAME_TOOLTIP"));
|
||||||
|
|
||||||
greBox = Gtk::manage(new Gtk::Box());
|
Gtk::Box *redVBox = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL));
|
||||||
greBox->pack_start(*grex);//, Gtk::PACK_SHRINK, 2);
|
primCoordGrid = Gtk::manage(new Gtk::Grid());
|
||||||
greBox->pack_start(*blg, Gtk::PACK_SHRINK);
|
primCoordGrid->set_column_homogeneous(true);
|
||||||
greBox->pack_start(*grey);//, Gtk::PACK_SHRINK, 2);
|
primCoordGrid->attach(*redx, 0, 0, 1, 1);
|
||||||
redVBox->pack_start(*greBox, Gtk::PACK_EXPAND_WIDGET);
|
primCoordGrid->attach_next_to(*redy, *redx, Gtk::PositionType::POS_RIGHT, 1, 1);
|
||||||
|
primCoordGrid->attach_next_to(*grex, *redx, Gtk::PositionType::POS_BOTTOM, 1, 1);
|
||||||
|
primCoordGrid->attach_next_to(*grey, *grex, Gtk::PositionType::POS_RIGHT, 1, 1);
|
||||||
|
primCoordGrid->attach_next_to(*blux, *grex, Gtk::PositionType::POS_BOTTOM, 1, 1);
|
||||||
|
primCoordGrid->attach_next_to(*bluy, *blux, Gtk::PositionType::POS_RIGHT, 1, 1);
|
||||||
|
redVBox->pack_start(*primCoordGrid, Gtk::PACK_EXPAND_WIDGET);
|
||||||
|
|
||||||
Gtk::Separator* const separator1 = Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_VERTICAL));
|
Gtk::Separator* const separator1 = Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_VERTICAL));
|
||||||
Gtk::Separator* const separator2 = Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_VERTICAL));
|
Gtk::Separator* const separator2 = Gtk::manage(new Gtk::Separator(Gtk::ORIENTATION_VERTICAL));
|
||||||
|
|
||||||
bluBox = Gtk::manage(new Gtk::Box());
|
|
||||||
bluBox->pack_start(*blux);//, Gtk::PACK_SHRINK);
|
|
||||||
bluBox->pack_start(*blb, Gtk::PACK_SHRINK);
|
|
||||||
bluBox->pack_start(*bluy);//, Gtk::PACK_SHRINK);
|
|
||||||
redVBox->pack_start(*bluBox, Gtk::PACK_EXPAND_WIDGET);
|
|
||||||
preser = Gtk::manage(new Adjuster(M("TP_ICM_WORKING_PRESER"), 0., 100., 0.5, 0.));
|
preser = Gtk::manage(new Adjuster(M("TP_ICM_WORKING_PRESER"), 0., 100., 0.5, 0.));
|
||||||
preser->setAdjusterListener(this);
|
preser->setAdjusterListener(this);
|
||||||
|
|
||||||
preBox = Gtk::manage(new Gtk::Box());
|
preBox = Gtk::manage(new Gtk::Box());
|
||||||
preBox->pack_start(*preser, Gtk::PACK_SHRINK);
|
preBox->pack_start(*preser, Gtk::PACK_EXPAND_WIDGET);
|
||||||
redVBox->pack_start(*separator1, Gtk::PACK_SHRINK);
|
redVBox->pack_start(*separator1, Gtk::PACK_SHRINK);
|
||||||
redVBox->pack_start(*preBox, Gtk::PACK_EXPAND_WIDGET);
|
redVBox->pack_start(*preBox, Gtk::PACK_EXPAND_WIDGET);
|
||||||
redVBox->pack_start(*separator2, Gtk::PACK_SHRINK);
|
redVBox->pack_start(*separator2, Gtk::PACK_SHRINK);
|
||||||
@ -949,9 +941,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
||||||
) {
|
) {
|
||||||
will->set_sensitive(false);
|
will->set_sensitive(false);
|
||||||
redBox->set_sensitive(false);
|
primCoordGrid->set_sensitive(false);
|
||||||
greBox->set_sensitive(false);
|
|
||||||
bluBox->set_sensitive(false);
|
|
||||||
labgridcie->set_sensitive(false);
|
labgridcie->set_sensitive(false);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
@ -959,9 +949,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
if (ColorManagementParams::Primaries(wprim->get_active_row_number()) == ColorManagementParams::Primaries::CUSTOM) {
|
if (ColorManagementParams::Primaries(wprim->get_active_row_number()) == ColorManagementParams::Primaries::CUSTOM) {
|
||||||
will->set_sensitive(true);
|
will->set_sensitive(true);
|
||||||
}
|
}
|
||||||
redBox->set_sensitive(true);
|
primCoordGrid->set_sensitive(true);
|
||||||
greBox->set_sensitive(true);
|
|
||||||
bluBox->set_sensitive(true);
|
|
||||||
labgridcie->set_sensitive(true);
|
labgridcie->set_sensitive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1091,9 +1079,7 @@ void ICMPanel::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
|
|
||||||
case ColorManagementParams::Primaries::CUSTOM_GRID: {
|
case ColorManagementParams::Primaries::CUSTOM_GRID: {
|
||||||
labgridcie->set_sensitive(true);
|
labgridcie->set_sensitive(true);
|
||||||
redBox->set_sensitive(false);
|
primCoordGrid->set_sensitive(false);
|
||||||
greBox->set_sensitive(false);
|
|
||||||
bluBox->set_sensitive(false);
|
|
||||||
will->set_sensitive(false);
|
will->set_sensitive(false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1302,13 +1288,9 @@ void ICMPanel::wtrcinChanged()
|
|||||||
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
||||||
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
||||||
) {
|
) {
|
||||||
redBox->set_sensitive(false);
|
primCoordGrid->set_sensitive(false);
|
||||||
greBox->set_sensitive(false);
|
|
||||||
bluBox->set_sensitive(false);
|
|
||||||
} else {
|
} else {
|
||||||
redBox->set_sensitive(true);
|
primCoordGrid->set_sensitive(true);
|
||||||
greBox->set_sensitive(true);
|
|
||||||
bluBox->set_sensitive(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
riaHBox->set_sensitive(true);
|
riaHBox->set_sensitive(true);
|
||||||
@ -1340,9 +1322,7 @@ void ICMPanel::wtrcinChanged()
|
|||||||
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
||||||
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
||||||
) {
|
) {
|
||||||
redBox->set_sensitive(false);
|
primCoordGrid->set_sensitive(false);
|
||||||
greBox->set_sensitive(false);
|
|
||||||
bluBox->set_sensitive(false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
riaHBox->set_sensitive(true);
|
riaHBox->set_sensitive(true);
|
||||||
@ -1367,13 +1347,9 @@ void ICMPanel::wtrcinChanged()
|
|||||||
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
||||||
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
||||||
) {
|
) {
|
||||||
redBox->set_sensitive(false);
|
primCoordGrid->set_sensitive(false);
|
||||||
greBox->set_sensitive(false);
|
|
||||||
bluBox->set_sensitive(false);
|
|
||||||
} else {
|
} else {
|
||||||
redBox->set_sensitive(true);
|
primCoordGrid->set_sensitive(true);
|
||||||
greBox->set_sensitive(true);
|
|
||||||
bluBox->set_sensitive(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1398,13 +1374,9 @@ void ICMPanel::wtrcinChanged()
|
|||||||
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
||||||
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
||||||
) {
|
) {
|
||||||
redBox->set_sensitive(false);
|
primCoordGrid->set_sensitive(false);
|
||||||
greBox->set_sensitive(false);
|
|
||||||
bluBox->set_sensitive(false);
|
|
||||||
} else {
|
} else {
|
||||||
redBox->set_sensitive(true);
|
primCoordGrid->set_sensitive(true);
|
||||||
greBox->set_sensitive(true);
|
|
||||||
bluBox->set_sensitive(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1429,13 +1401,9 @@ void ICMPanel::wtrcinChanged()
|
|||||||
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
||||||
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
||||||
) {
|
) {
|
||||||
redBox->set_sensitive(false);
|
primCoordGrid->set_sensitive(false);
|
||||||
greBox->set_sensitive(false);
|
|
||||||
bluBox->set_sensitive(false);
|
|
||||||
} else {
|
} else {
|
||||||
redBox->set_sensitive(true);
|
primCoordGrid->set_sensitive(true);
|
||||||
greBox->set_sensitive(true);
|
|
||||||
bluBox->set_sensitive(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1460,13 +1428,9 @@ void ICMPanel::wtrcinChanged()
|
|||||||
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM
|
||||||
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
&& ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM_GRID
|
||||||
) {
|
) {
|
||||||
redBox->set_sensitive(false);
|
primCoordGrid->set_sensitive(false);
|
||||||
greBox->set_sensitive(false);
|
|
||||||
bluBox->set_sensitive(false);
|
|
||||||
} else {
|
} else {
|
||||||
redBox->set_sensitive(true);
|
primCoordGrid->set_sensitive(true);
|
||||||
greBox->set_sensitive(true);
|
|
||||||
bluBox->set_sensitive(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1761,18 +1725,14 @@ void ICMPanel::wprimChanged()
|
|||||||
redFrame->show();
|
redFrame->show();
|
||||||
|
|
||||||
if (ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM) {
|
if (ColorManagementParams::Primaries(wprim->get_active_row_number()) != ColorManagementParams::Primaries::CUSTOM) {
|
||||||
redBox->set_sensitive(false);
|
primCoordGrid->set_sensitive(false);
|
||||||
greBox->set_sensitive(false);
|
|
||||||
bluBox->set_sensitive(false);
|
|
||||||
labgridcie->set_sensitive(false);
|
labgridcie->set_sensitive(false);
|
||||||
will->set_sensitive(false);
|
will->set_sensitive(false);
|
||||||
if (ColorManagementParams::Primaries(wprim->get_active_row_number()) == ColorManagementParams::Primaries::CUSTOM_GRID) {
|
if (ColorManagementParams::Primaries(wprim->get_active_row_number()) == ColorManagementParams::Primaries::CUSTOM_GRID) {
|
||||||
labgridcie->set_sensitive(true);
|
labgridcie->set_sensitive(true);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
redBox->set_sensitive(true);
|
primCoordGrid->set_sensitive(true);
|
||||||
greBox->set_sensitive(true);
|
|
||||||
bluBox->set_sensitive(true);
|
|
||||||
labgridcie->set_sensitive(false);
|
labgridcie->set_sensitive(false);
|
||||||
will->set_sensitive(true);
|
will->set_sensitive(true);
|
||||||
}
|
}
|
||||||
@ -1906,23 +1866,29 @@ void ICMPanel::ipChanged()
|
|||||||
{
|
{
|
||||||
|
|
||||||
Glib::ustring profname;
|
Glib::ustring profname;
|
||||||
|
Glib::ustring localized_profname;
|
||||||
|
|
||||||
if (inone->get_active()) {
|
if (inone->get_active()) {
|
||||||
profname = inone->get_label();
|
profname = "(none)";
|
||||||
|
localized_profname = inone->get_label();
|
||||||
} else if (iembedded->get_active()) {
|
} else if (iembedded->get_active()) {
|
||||||
profname = iembedded->get_label();
|
profname = "(embedded)";
|
||||||
|
localized_profname = iembedded->get_label();
|
||||||
} else if (icamera->get_active()) {
|
} else if (icamera->get_active()) {
|
||||||
profname = icamera->get_label();
|
profname = "(camera)";
|
||||||
|
localized_profname = icamera->get_label();
|
||||||
} else if (icameraICC->get_active()) {
|
} else if (icameraICC->get_active()) {
|
||||||
profname = icameraICC->get_label();
|
profname = "(cameraICC)";
|
||||||
|
localized_profname = icameraICC->get_label();
|
||||||
} else {
|
} else {
|
||||||
profname = ipDialog->get_filename();
|
profname = ipDialog->get_filename();
|
||||||
|
localized_profname = profname;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateDCP(-1, profname);
|
updateDCP(-1, profname);
|
||||||
|
|
||||||
if (listener && profname != oldip) {
|
if (listener && profname != oldip) {
|
||||||
listener->panelChanged(EvIProfile, profname);
|
listener->panelChanged(EvIProfile, localized_profname);
|
||||||
}
|
}
|
||||||
|
|
||||||
oldip = profname;
|
oldip = profname;
|
||||||
|
@ -62,9 +62,9 @@ protected:
|
|||||||
|
|
||||||
Gtk::Label* labmga;
|
Gtk::Label* labmga;
|
||||||
Gtk::Box* gabox;
|
Gtk::Box* gabox;
|
||||||
Gtk::Label* blr;
|
//Gtk::Label* blr;
|
||||||
Gtk::Label* blg;
|
//Gtk::Label* blg;
|
||||||
Gtk::Label* blb;
|
//Gtk::Label* blb;
|
||||||
Gtk::Button* neutral;
|
Gtk::Button* neutral;
|
||||||
|
|
||||||
sigc::connection neutralconn;
|
sigc::connection neutralconn;
|
||||||
@ -86,12 +86,12 @@ private:
|
|||||||
rtengine::ProcEvent EvICMprimariMethod;
|
rtengine::ProcEvent EvICMprimariMethod;
|
||||||
rtengine::ProcEvent EvICMprofileMethod;
|
rtengine::ProcEvent EvICMprofileMethod;
|
||||||
rtengine::ProcEvent EvICMtempMethod;
|
rtengine::ProcEvent EvICMtempMethod;
|
||||||
rtengine::ProcEvent EvICMpredx;
|
//rtengine::ProcEvent EvICMpredx;
|
||||||
rtengine::ProcEvent EvICMpredy;
|
//rtengine::ProcEvent EvICMpredy;
|
||||||
rtengine::ProcEvent EvICMpgrex;
|
//rtengine::ProcEvent EvICMpgrex;
|
||||||
rtengine::ProcEvent EvICMpgrey;
|
//rtengine::ProcEvent EvICMpgrey;
|
||||||
rtengine::ProcEvent EvICMpblux;
|
//rtengine::ProcEvent EvICMpblux;
|
||||||
rtengine::ProcEvent EvICMpbluy;
|
//rtengine::ProcEvent EvICMpbluy;
|
||||||
rtengine::ProcEvent EvICMgamm;
|
rtengine::ProcEvent EvICMgamm;
|
||||||
rtengine::ProcEvent EvICMslop;
|
rtengine::ProcEvent EvICMslop;
|
||||||
rtengine::ProcEvent EvICMtrcinMethod;
|
rtengine::ProcEvent EvICMtrcinMethod;
|
||||||
@ -115,9 +115,7 @@ private:
|
|||||||
Gtk::Box* wprimBox;
|
Gtk::Box* wprimBox;
|
||||||
Gtk::Label* wprimlab;
|
Gtk::Label* wprimlab;
|
||||||
Gtk::Label* cielab;
|
Gtk::Label* cielab;
|
||||||
Gtk::Box* redBox;
|
Gtk::Grid* primCoordGrid;
|
||||||
Gtk::Box* greBox;
|
|
||||||
Gtk::Box* bluBox;
|
|
||||||
Gtk::Box* riaHBox;
|
Gtk::Box* riaHBox;
|
||||||
Gtk::Box* preBox;
|
Gtk::Box* preBox;
|
||||||
Gtk::Box* iVBox;
|
Gtk::Box* iVBox;
|
||||||
|
@ -148,11 +148,11 @@ Locallab::Locallab():
|
|||||||
expsettings(Gtk::manage(new ControlSpotPanel())),
|
expsettings(Gtk::manage(new ControlSpotPanel())),
|
||||||
|
|
||||||
// Tool list widget
|
// Tool list widget
|
||||||
toollist(Gtk::manage(new LocallabToolList())),
|
toollist(Gtk::manage(new LocallabToolList()))
|
||||||
|
|
||||||
// expcie(Gtk::manage(new Locallabcie())),
|
// expcie(Gtk::manage(new Locallabcie())),
|
||||||
// Other widgets
|
// Other widgets
|
||||||
resetshowButton(Gtk::manage(new Gtk::Button(M("TP_LOCALLAB_RESETSHOW"))))
|
//resetshowButton(Gtk::manage(new Gtk::Button(M("TP_LOCALLAB_RESETSHOW"))))
|
||||||
{
|
{
|
||||||
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
set_orientation(Gtk::ORIENTATION_VERTICAL);
|
||||||
|
|
||||||
@ -197,7 +197,7 @@ Locallab::Locallab():
|
|||||||
// panel->pack_start(*separator2, false, false);
|
// panel->pack_start(*separator2, false, false);
|
||||||
|
|
||||||
// Add mask reset button to panel widget
|
// Add mask reset button to panel widget
|
||||||
resetshowButton->signal_pressed().connect(sigc::mem_fun(*this, &Locallab::resetshowPressed));
|
//resetshowButton->signal_pressed().connect(sigc::mem_fun(*this, &Locallab::resetshowPressed));
|
||||||
// panel->pack_start(*resetshowButton);
|
// panel->pack_start(*resetshowButton);
|
||||||
|
|
||||||
// Add panel widget to Locallab GUI
|
// Add panel widget to Locallab GUI
|
||||||
@ -316,7 +316,7 @@ void Locallab::read(const rtengine::procparams::ProcParams* pp, const ParamsEdit
|
|||||||
r->denoichmask = pp->locallab.spots.at(i).denoichmask;
|
r->denoichmask = pp->locallab.spots.at(i).denoichmask;
|
||||||
r->shortc = pp->locallab.spots.at(i).shortc;
|
r->shortc = pp->locallab.spots.at(i).shortc;
|
||||||
r->lumask = pp->locallab.spots.at(i).lumask;
|
r->lumask = pp->locallab.spots.at(i).lumask;
|
||||||
r->savrest = pp->locallab.spots.at(i).savrest;
|
//r->savrest = pp->locallab.spots.at(i).savrest;
|
||||||
|
|
||||||
if (pp->locallab.spots.at(i).complexMethod == "sim") {
|
if (pp->locallab.spots.at(i).complexMethod == "sim") {
|
||||||
r->complexMethod = 0;
|
r->complexMethod = 0;
|
||||||
@ -498,7 +498,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
r->denoichmask = newSpot->denoichmask;
|
r->denoichmask = newSpot->denoichmask;
|
||||||
r->shortc = newSpot->shortc;
|
r->shortc = newSpot->shortc;
|
||||||
r->lumask = newSpot->lumask;
|
r->lumask = newSpot->lumask;
|
||||||
r->savrest = newSpot->savrest;
|
//r->savrest = newSpot->savrest;
|
||||||
|
|
||||||
if (newSpot->complexMethod == "sim") {
|
if (newSpot->complexMethod == "sim") {
|
||||||
r->complexMethod = 0;
|
r->complexMethod = 0;
|
||||||
@ -809,7 +809,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
r->denoichmask = newSpot->denoichmask;
|
r->denoichmask = newSpot->denoichmask;
|
||||||
r->shortc = newSpot->shortc;
|
r->shortc = newSpot->shortc;
|
||||||
r->lumask = newSpot->lumask;
|
r->lumask = newSpot->lumask;
|
||||||
r->savrest = newSpot->savrest;
|
//r->savrest = newSpot->savrest;
|
||||||
|
|
||||||
if (newSpot->complexMethod == "sim") {
|
if (newSpot->complexMethod == "sim") {
|
||||||
r->complexMethod = 0;
|
r->complexMethod = 0;
|
||||||
@ -965,7 +965,7 @@ void Locallab::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedited
|
|||||||
pp->locallab.spots.at(pp->locallab.selspot).denoichmask = r->denoichmask;
|
pp->locallab.spots.at(pp->locallab.selspot).denoichmask = r->denoichmask;
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).shortc = r->shortc;
|
pp->locallab.spots.at(pp->locallab.selspot).shortc = r->shortc;
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).lumask = r->lumask;
|
pp->locallab.spots.at(pp->locallab.selspot).lumask = r->lumask;
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).savrest = r->savrest;
|
//pp->locallab.spots.at(pp->locallab.selspot).savrest = r->savrest;
|
||||||
|
|
||||||
if (r->complexMethod == 0) {
|
if (r->complexMethod == 0) {
|
||||||
pp->locallab.spots.at(pp->locallab.selspot).complexMethod = "sim";
|
pp->locallab.spots.at(pp->locallab.selspot).complexMethod = "sim";
|
||||||
@ -1128,13 +1128,13 @@ Locallab::llMaskVisibility Locallab::getMaskVisibility() const
|
|||||||
return {prevDeltaE, colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask, cieMask};
|
return {prevDeltaE, colorMask, colorMaskinv, expMask, expMaskinv, shMask, shMaskinv, vibMask, softMask, blMask, tmMask, retiMask, sharMask, lcMask, cbMask, logMask, maskMask, cieMask};
|
||||||
}
|
}
|
||||||
|
|
||||||
void Locallab::resetshowPressed()
|
//void Locallab::resetshowPressed()
|
||||||
{
|
//{
|
||||||
// Raise event to reset mask
|
// // Raise event to reset mask
|
||||||
if (listener) {
|
// if (listener) {
|
||||||
listener->panelChanged(Evlocallabshowreset, "");
|
// listener->panelChanged(Evlocallabshowreset, "");
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
void Locallab::setEditProvider(EditDataProvider * provider)
|
void Locallab::setEditProvider(EditDataProvider * provider)
|
||||||
{
|
{
|
||||||
|
@ -127,7 +127,7 @@ private:
|
|||||||
std::vector<locallabRef> maskBackRef;
|
std::vector<locallabRef> maskBackRef;
|
||||||
|
|
||||||
// Other widgets
|
// Other widgets
|
||||||
Gtk::Button* const resetshowButton;
|
//Gtk::Button* const resetshowButton;
|
||||||
|
|
||||||
Glib::ustring spotName;
|
Glib::ustring spotName;
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ public:
|
|||||||
llMaskVisibility getMaskVisibility() const;
|
llMaskVisibility getMaskVisibility() const;
|
||||||
|
|
||||||
// Other widgets event functions
|
// Other widgets event functions
|
||||||
void resetshowPressed();
|
//void resetshowPressed();
|
||||||
|
|
||||||
// EditProvider management function
|
// EditProvider management function
|
||||||
void setEditProvider(EditDataProvider* provider) override;
|
void setEditProvider(EditDataProvider* provider) override;
|
||||||
|
@ -1151,7 +1151,7 @@ private:
|
|||||||
Adjuster* const deltad;
|
Adjuster* const deltad;
|
||||||
CurveEditorGroup* const LocalcurveEditorwavcomp;
|
CurveEditorGroup* const LocalcurveEditorwavcomp;
|
||||||
FlatCurveEditor* const wavshapecomp;
|
FlatCurveEditor* const wavshapecomp;
|
||||||
Adjuster* const fatres;
|
//Adjuster* const fatres;
|
||||||
Gtk::CheckButton* const fftwlc;
|
Gtk::CheckButton* const fftwlc;
|
||||||
MyExpander* const exprecovw;
|
MyExpander* const exprecovw;
|
||||||
Gtk::Label* const maskusablew;
|
Gtk::Label* const maskusablew;
|
||||||
@ -1342,8 +1342,8 @@ private:
|
|||||||
Adjuster* const saturl;
|
Adjuster* const saturl;
|
||||||
Adjuster* const chroml;
|
Adjuster* const chroml;
|
||||||
MyExpander* const expL;
|
MyExpander* const expL;
|
||||||
CurveEditorGroup* const CurveEditorL;
|
//CurveEditorGroup* const CurveEditorL;
|
||||||
DiagonalCurveEditor* const LshapeL;
|
//DiagonalCurveEditor* const LshapeL;
|
||||||
Adjuster* const targabs;
|
Adjuster* const targabs;
|
||||||
MyComboBoxText* const surround;
|
MyComboBoxText* const surround;
|
||||||
Gtk::Box* const surrHBox;
|
Gtk::Box* const surrHBox;
|
||||||
|
@ -2427,7 +2427,7 @@ LocallabContrast::LocallabContrast():
|
|||||||
deltad(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DELTAD"), -3., 3., 0.1, 0.))),//, Gtk::manage(new RTImage("circle-black-small")), Gtk::manage(new RTImage("circle-white-small"))))),
|
deltad(Gtk::manage(new Adjuster(M("TP_LOCALLAB_DELTAD"), -3., 3., 0.1, 0.))),//, Gtk::manage(new RTImage("circle-black-small")), Gtk::manage(new RTImage("circle-white-small"))))),
|
||||||
LocalcurveEditorwavcomp(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_WAVCOMP"))),
|
LocalcurveEditorwavcomp(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_WAVCOMP"))),
|
||||||
wavshapecomp(static_cast<FlatCurveEditor*>(LocalcurveEditorwavcomp->addCurve(CT_Flat, "", nullptr, false, false))),
|
wavshapecomp(static_cast<FlatCurveEditor*>(LocalcurveEditorwavcomp->addCurve(CT_Flat, "", nullptr, false, false))),
|
||||||
fatres(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATRES"), 0., 100., 1., 0.))),
|
//fatres(Gtk::manage(new Adjuster(M("TP_LOCALLAB_FATRES"), 0., 100., 1., 0.))),
|
||||||
fftwlc(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_FFTW")))),
|
fftwlc(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_FFTW")))),
|
||||||
exprecovw(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
exprecovw(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_DENOI2_EXP")))),
|
||||||
maskusablew(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUSABLE")))),
|
maskusablew(Gtk::manage(new Gtk::Label(M("TP_LOCALLAB_MASKUSABLE")))),
|
||||||
@ -2684,7 +2684,7 @@ LocallabContrast::LocallabContrast():
|
|||||||
|
|
||||||
LocalcurveEditorwavcomp->curveListComplete();
|
LocalcurveEditorwavcomp->curveListComplete();
|
||||||
|
|
||||||
fatres->setAdjusterListener(this);
|
//fatres->setAdjusterListener(this);
|
||||||
|
|
||||||
fftwlcConn = fftwlc->signal_toggled().connect(sigc::mem_fun(*this, &LocallabContrast::fftwlcChanged));
|
fftwlcConn = fftwlc->signal_toggled().connect(sigc::mem_fun(*this, &LocallabContrast::fftwlcChanged));
|
||||||
|
|
||||||
@ -2784,7 +2784,7 @@ LocallabContrast::LocallabContrast():
|
|||||||
clariFrame->add(*clariBox);
|
clariFrame->add(*clariBox);
|
||||||
pack_start(*clariFrame);
|
pack_start(*clariFrame);
|
||||||
ToolParamBlock* const blurcontBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const blurcontBox = Gtk::manage(new ToolParamBlock());
|
||||||
Gtk::Frame* const gradwavFrame = Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_GRADWAVFRA")));
|
Gtk::Frame* const gradwavFrame = Gtk::manage(new Gtk::Frame());
|
||||||
gradwavFrame->set_label_align(0.025, 0.5);
|
gradwavFrame->set_label_align(0.025, 0.5);
|
||||||
gradwavFrame->set_label_widget(*wavgradl);
|
gradwavFrame->set_label_widget(*wavgradl);
|
||||||
ToolParamBlock* const gradwavBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const gradwavBox = Gtk::manage(new ToolParamBlock());
|
||||||
@ -2793,7 +2793,7 @@ LocallabContrast::LocallabContrast():
|
|||||||
gradwavBox->pack_start(*angwav);
|
gradwavBox->pack_start(*angwav);
|
||||||
gradwavFrame->add(*gradwavBox);
|
gradwavFrame->add(*gradwavBox);
|
||||||
blurcontBox->pack_start(*gradwavFrame);
|
blurcontBox->pack_start(*gradwavFrame);
|
||||||
Gtk::Frame* const edgFrame = Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_EDGSHARPFRA")));
|
Gtk::Frame* const edgFrame = Gtk::manage(new Gtk::Frame());
|
||||||
edgFrame->set_label_align(0.025, 0.5);
|
edgFrame->set_label_align(0.025, 0.5);
|
||||||
edgFrame->set_label_widget(*wavedg);
|
edgFrame->set_label_widget(*wavedg);
|
||||||
ToolParamBlock* const edgsBox = Gtk::manage(new ToolParamBlock());
|
ToolParamBlock* const edgsBox = Gtk::manage(new ToolParamBlock());
|
||||||
@ -3237,7 +3237,7 @@ void LocallabContrast::read(const rtengine::procparams::ProcParams* pp, const Pa
|
|||||||
sigmadc->setValue(spot.sigmadc);
|
sigmadc->setValue(spot.sigmadc);
|
||||||
deltad->setValue(spot.deltad);
|
deltad->setValue(spot.deltad);
|
||||||
wavshapecomp->setCurve(spot.loccompwavcurve);
|
wavshapecomp->setCurve(spot.loccompwavcurve);
|
||||||
fatres->setValue(spot.fatres);
|
//fatres->setValue(spot.fatres);
|
||||||
enalcMask->set_active(spot.enalcMask);
|
enalcMask->set_active(spot.enalcMask);
|
||||||
CCmasklcshape->setCurve(spot.CCmasklccurve);
|
CCmasklcshape->setCurve(spot.CCmasklccurve);
|
||||||
LLmasklcshape->setCurve(spot.LLmasklccurve);
|
LLmasklcshape->setCurve(spot.LLmasklccurve);
|
||||||
@ -3362,7 +3362,7 @@ void LocallabContrast::write(rtengine::procparams::ProcParams* pp, ParamsEdited*
|
|||||||
spot.sigmadc = sigmadc->getValue();
|
spot.sigmadc = sigmadc->getValue();
|
||||||
spot.deltad = deltad->getValue();
|
spot.deltad = deltad->getValue();
|
||||||
spot.loccompwavcurve = wavshapecomp->getCurve();
|
spot.loccompwavcurve = wavshapecomp->getCurve();
|
||||||
spot.fatres = fatres->getValue();
|
//spot.fatres = fatres->getValue();
|
||||||
spot.fftwlc = fftwlc->get_active();
|
spot.fftwlc = fftwlc->get_active();
|
||||||
spot.enalcMask = enalcMask->get_active();
|
spot.enalcMask = enalcMask->get_active();
|
||||||
spot.CCmasklccurve = CCmasklcshape->getCurve();
|
spot.CCmasklccurve = CCmasklcshape->getCurve();
|
||||||
@ -3434,7 +3434,7 @@ void LocallabContrast::setDefaults(const rtengine::procparams::ProcParams* defPa
|
|||||||
residcomp->setDefault(defSpot.residcomp);
|
residcomp->setDefault(defSpot.residcomp);
|
||||||
sigmadc->setDefault(defSpot.sigmadc);
|
sigmadc->setDefault(defSpot.sigmadc);
|
||||||
deltad->setDefault(defSpot.deltad);
|
deltad->setDefault(defSpot.deltad);
|
||||||
fatres->setDefault(defSpot.fatres);
|
//fatres->setDefault(defSpot.fatres);
|
||||||
blendmasklc->setDefault((double)defSpot.blendmasklc);
|
blendmasklc->setDefault((double)defSpot.blendmasklc);
|
||||||
radmasklc->setDefault(defSpot.radmasklc);
|
radmasklc->setDefault(defSpot.radmasklc);
|
||||||
chromasklc->setDefault(defSpot.chromasklc);
|
chromasklc->setDefault(defSpot.chromasklc);
|
||||||
@ -3759,12 +3759,12 @@ void LocallabContrast::adjusterChanged(Adjuster* a, double newval)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (a == fatres) {
|
//if (a == fatres) {
|
||||||
if (listener) {
|
// if (listener) {
|
||||||
listener->panelChanged(Evlocallabfatres,
|
// listener->panelChanged(Evlocallabfatres,
|
||||||
fatres->getTextValue() + " (" + escapeHtmlChars(getSpotName()) + ")");
|
// fatres->getTextValue() + " (" + escapeHtmlChars(getSpotName()) + ")");
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (a == recothresw) {
|
if (a == recothresw) {
|
||||||
|
|
||||||
@ -3983,7 +3983,7 @@ void LocallabContrast::convertParamToNormal()
|
|||||||
sigmadc->setValue(defSpot.sigmadc);
|
sigmadc->setValue(defSpot.sigmadc);
|
||||||
deltad->setValue(defSpot.deltad);
|
deltad->setValue(defSpot.deltad);
|
||||||
wavshapecomp->setCurve(defSpot.loccompwavcurve);
|
wavshapecomp->setCurve(defSpot.loccompwavcurve);
|
||||||
fatres->setValue(defSpot.fatres);
|
//fatres->setValue(defSpot.fatres);
|
||||||
fftwlc->set_active(defSpot.fftwlc);
|
fftwlc->set_active(defSpot.fftwlc);
|
||||||
decayw->setValue(defSpot.decayw);
|
decayw->setValue(defSpot.decayw);
|
||||||
|
|
||||||
@ -5244,8 +5244,8 @@ LocallabLog::LocallabLog():
|
|||||||
saturl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SATURV"), -100., 100., 0.5, 0.))),
|
saturl(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SATURV"), -100., 100., 0.5, 0.))),
|
||||||
chroml(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROML"), -100., 100., 0.5, 0.))),
|
chroml(Gtk::manage(new Adjuster(M("TP_LOCALLAB_CHROML"), -100., 100., 0.5, 0.))),
|
||||||
expL(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_LOGEXP")))),
|
expL(Gtk::manage(new MyExpander(false, M("TP_LOCALLAB_LOGEXP")))),
|
||||||
CurveEditorL(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_LOGCONTQ"))),
|
//CurveEditorL(new CurveEditorGroup(options.lastlocalCurvesDir, M("TP_LOCALLAB_LOGCONTQ"))),
|
||||||
LshapeL(static_cast<DiagonalCurveEditor*>(CurveEditorL->addCurve(CT_Diagonal, "Q(Q)"))),
|
//LshapeL(static_cast<DiagonalCurveEditor*>(CurveEditorL->addCurve(CT_Diagonal, "Q(Q)"))),
|
||||||
targabs(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOURCE_ABS"), 0.01, 16384.0, 0.01, 16.0))),
|
targabs(Gtk::manage(new Adjuster(M("TP_LOCALLAB_SOURCE_ABS"), 0.01, 16384.0, 0.01, 16.0))),
|
||||||
surround(Gtk::manage (new MyComboBoxText ())),
|
surround(Gtk::manage (new MyComboBoxText ())),
|
||||||
surrHBox(Gtk::manage(new Gtk::Box())),
|
surrHBox(Gtk::manage(new Gtk::Box())),
|
||||||
@ -5325,13 +5325,13 @@ LocallabLog::LocallabLog():
|
|||||||
contq->setAdjusterListener(this);
|
contq->setAdjusterListener(this);
|
||||||
colorfl->setAdjusterListener(this);
|
colorfl->setAdjusterListener(this);
|
||||||
|
|
||||||
CurveEditorL->setCurveListener(this);
|
//CurveEditorL->setCurveListener(this);
|
||||||
|
|
||||||
LshapeL->setResetCurve(DiagonalCurveType(defSpot.LcurveL.at(0)), defSpot.LcurveL);
|
//LshapeL->setResetCurve(DiagonalCurveType(defSpot.LcurveL.at(0)), defSpot.LcurveL);
|
||||||
LshapeL->setBottomBarBgGradient({{0., 0., 0., 0.}, {1., 1., 1., 1.}});
|
//LshapeL->setBottomBarBgGradient({{0., 0., 0., 0.}, {1., 1., 1., 1.}});
|
||||||
LshapeL->setLeftBarBgGradient({{0., 0., 0., 0.}, {1., 1., 1., 1.}});
|
//LshapeL->setLeftBarBgGradient({{0., 0., 0., 0.}, {1., 1., 1., 1.}});
|
||||||
|
|
||||||
CurveEditorL->curveListComplete();
|
//CurveEditorL->curveListComplete();
|
||||||
|
|
||||||
|
|
||||||
targabs->setLogScale(500, 0);
|
targabs->setLogScale(500, 0);
|
||||||
@ -5509,7 +5509,7 @@ LocallabLog::~LocallabLog()
|
|||||||
{
|
{
|
||||||
delete maskCurveEditorL;
|
delete maskCurveEditorL;
|
||||||
delete mask2CurveEditorL;
|
delete mask2CurveEditorL;
|
||||||
delete CurveEditorL;
|
//delete CurveEditorL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5730,7 +5730,7 @@ void LocallabLog::read(const rtengine::procparams::ProcParams* pp, const ParamsE
|
|||||||
contthres->setValue(spot.contthres);
|
contthres->setValue(spot.contthres);
|
||||||
contq->setValue(spot.contq);
|
contq->setValue(spot.contq);
|
||||||
colorfl->setValue(spot.colorfl);
|
colorfl->setValue(spot.colorfl);
|
||||||
LshapeL->setCurve(spot.LcurveL);
|
//LshapeL->setCurve(spot.LcurveL);
|
||||||
targabs->setValue(spot.targabs);
|
targabs->setValue(spot.targabs);
|
||||||
targetGray->setValue(spot.targetGray);
|
targetGray->setValue(spot.targetGray);
|
||||||
detail->setValue(spot.detail);
|
detail->setValue(spot.detail);
|
||||||
@ -5794,7 +5794,7 @@ void LocallabLog::write(rtengine::procparams::ProcParams* pp, ParamsEdited* pedi
|
|||||||
spot.contthres = contthres->getValue();
|
spot.contthres = contthres->getValue();
|
||||||
spot.contq = contq->getValue();
|
spot.contq = contq->getValue();
|
||||||
spot.colorfl = colorfl->getValue();
|
spot.colorfl = colorfl->getValue();
|
||||||
spot.LcurveL = LshapeL->getCurve();
|
//spot.LcurveL = LshapeL->getCurve();
|
||||||
spot.detail = detail->getValue();
|
spot.detail = detail->getValue();
|
||||||
spot.baselog = baselog->getValue();
|
spot.baselog = baselog->getValue();
|
||||||
spot.sensilog = sensilog->getIntValue();
|
spot.sensilog = sensilog->getIntValue();
|
||||||
@ -6057,12 +6057,12 @@ void LocallabLog::curveChanged(CurveEditor* ce)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ce == LshapeL) {
|
//if (ce == LshapeL) {
|
||||||
if (listener) {
|
// if (listener) {
|
||||||
listener->panelChanged(EvlocallabLshapeL,
|
// listener->panelChanged(EvlocallabLshapeL,
|
||||||
M("HISTORY_CUSTOMCURVE") + " (" + escapeHtmlChars(getSpotName()) + ")");
|
// M("HISTORY_CUSTOMCURVE") + " (" + escapeHtmlChars(getSpotName()) + ")");
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -7435,12 +7435,12 @@ Locallabcie::Locallabcie():
|
|||||||
contqcie(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGCONQL"), -100., 100., 0.5, 0.))),
|
contqcie(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGCONQL"), -100., 100., 0.5, 0.))),
|
||||||
contthrescie(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGCONTHRES"), -1., 1., 0.01, 0.))),
|
contthrescie(Gtk::manage(new Adjuster(M("TP_LOCALLAB_LOGCONTHRES"), -1., 1., 0.01, 0.))),
|
||||||
|
|
||||||
logjzFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_LOGJZFRA")))),
|
logjzFrame(Gtk::manage(new Gtk::Frame())),
|
||||||
logjz(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_JZLOG")))),
|
logjz(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_JZLOG")))),
|
||||||
blackEvjz(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLACK_EV"), -16.0, 0.0, 0.1, -5.0))),
|
blackEvjz(Gtk::manage(new Adjuster(M("TP_LOCALLAB_BLACK_EV"), -16.0, 0.0, 0.1, -5.0))),
|
||||||
whiteEvjz(Gtk::manage(new Adjuster(M("TP_LOCALLAB_WHITE_EV"), 0., 32.0, 0.1, 10.0))),
|
whiteEvjz(Gtk::manage(new Adjuster(M("TP_LOCALLAB_WHITE_EV"), 0., 32.0, 0.1, 10.0))),
|
||||||
targetjz(Gtk::manage(new Adjuster(M("TP_LOCALLAB_JZTARGET_EV"), 4., 80.0, 0.1, 18.0))),
|
targetjz(Gtk::manage(new Adjuster(M("TP_LOCALLAB_JZTARGET_EV"), 4., 80.0, 0.1, 18.0))),
|
||||||
bevwevFrame(Gtk::manage(new Gtk::Frame(M("")))),
|
bevwevFrame(Gtk::manage(new Gtk::Frame())),
|
||||||
forcebw(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_BWFORCE")))),
|
forcebw(Gtk::manage(new Gtk::CheckButton(M("TP_LOCALLAB_BWFORCE")))),
|
||||||
|
|
||||||
sigmoidFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SIGFRA")))),
|
sigmoidFrame(Gtk::manage(new Gtk::Frame(M("TP_LOCALLAB_SIGFRA")))),
|
||||||
@ -7713,7 +7713,7 @@ Locallabcie::Locallabcie():
|
|||||||
jz2CurveEditorG->setCurveListener(this);
|
jz2CurveEditorG->setCurveListener(this);
|
||||||
LHshapejz->setIdentityValue(0.);
|
LHshapejz->setIdentityValue(0.);
|
||||||
LHshapejz->setResetCurve(FlatCurveType(defSpot.LHcurvejz.at(0)), defSpot.LHcurvejz);
|
LHshapejz->setResetCurve(FlatCurveType(defSpot.LHcurvejz.at(0)), defSpot.LHcurvejz);
|
||||||
LHshapejz->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP"));
|
// LHshapejz->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP"));
|
||||||
LHshapejz->setCurveColorProvider(this, 3);
|
LHshapejz->setCurveColorProvider(this, 3);
|
||||||
LHshapejz->setBottomBarBgGradient(six_shape);
|
LHshapejz->setBottomBarBgGradient(six_shape);
|
||||||
jz2CurveEditorG->curveListComplete();
|
jz2CurveEditorG->curveListComplete();
|
||||||
@ -7722,13 +7722,13 @@ Locallabcie::Locallabcie():
|
|||||||
|
|
||||||
CHshapejz->setIdentityValue(0.);
|
CHshapejz->setIdentityValue(0.);
|
||||||
CHshapejz->setResetCurve(FlatCurveType(defSpot.CHcurvejz.at(0)), defSpot.CHcurvejz);
|
CHshapejz->setResetCurve(FlatCurveType(defSpot.CHcurvejz.at(0)), defSpot.CHcurvejz);
|
||||||
CHshapejz->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP"));
|
// CHshapejz->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP"));
|
||||||
CHshapejz->setCurveColorProvider(this, 3);
|
CHshapejz->setCurveColorProvider(this, 3);
|
||||||
CHshapejz->setBottomBarBgGradient(six_shape);
|
CHshapejz->setBottomBarBgGradient(six_shape);
|
||||||
|
|
||||||
HHshapejz->setIdentityValue(0.);
|
HHshapejz->setIdentityValue(0.);
|
||||||
HHshapejz->setResetCurve(FlatCurveType(defSpot.HHcurvejz.at(0)), defSpot.HHcurvejz);
|
HHshapejz->setResetCurve(FlatCurveType(defSpot.HHcurvejz.at(0)), defSpot.HHcurvejz);
|
||||||
HHshapejz->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP"));
|
// HHshapejz->setTooltip(M("TP_LOCALLAB_CURVEEDITOR_LL_TOOLTIP"));
|
||||||
HHshapejz->setCurveColorProvider(this, 3);
|
HHshapejz->setCurveColorProvider(this, 3);
|
||||||
HHshapejz->setBottomBarBgGradient(six_shape);
|
HHshapejz->setBottomBarBgGradient(six_shape);
|
||||||
|
|
||||||
@ -8186,14 +8186,14 @@ void Locallabcie::updateAdviceTooltips(const bool showTooltips)
|
|||||||
jz100->set_tooltip_text(M("TP_LOCALLAB_JZ100_TOOLTIP"));
|
jz100->set_tooltip_text(M("TP_LOCALLAB_JZ100_TOOLTIP"));
|
||||||
pqremap->set_tooltip_text(M("TP_LOCALLAB_JZPQREMAP_TOOLTIP"));
|
pqremap->set_tooltip_text(M("TP_LOCALLAB_JZPQREMAP_TOOLTIP"));
|
||||||
pqremapcam16->set_tooltip_text(M("TP_LOCALLAB_CAM16PQREMAP_TOOLTIP"));
|
pqremapcam16->set_tooltip_text(M("TP_LOCALLAB_CAM16PQREMAP_TOOLTIP"));
|
||||||
Autograycie->set_tooltip_text(M("TP_LOCALLAB_AUTOGRAYCIE_TOOLTIP"));
|
Autograycie->set_tooltip_text(M("TP_LOCALLAB_LOGAUTOGRAYJZ_TOOLTIP"));
|
||||||
sigmalcjz->set_tooltip_text(M("TP_LOCALLAB_WAT_SIGMALC_TOOLTIP"));
|
sigmalcjz->set_tooltip_text(M("TP_LOCALLAB_WAT_SIGMALC_TOOLTIP"));
|
||||||
logjzFrame->set_tooltip_text(M("TP_LOCALLAB_JZLOGWB_TOOLTIP"));
|
logjzFrame->set_tooltip_text(M("TP_LOCALLAB_JZLOGWB_TOOLTIP"));
|
||||||
blackEvjz->set_tooltip_text(M("TP_LOCALLAB_JZLOGWBS_TOOLTIP"));
|
blackEvjz->set_tooltip_text(M("TP_LOCALLAB_JZLOGWBS_TOOLTIP"));
|
||||||
whiteEvjz->set_tooltip_text(M("TP_LOCALLAB_JZLOGWBS_TOOLTIP"));
|
whiteEvjz->set_tooltip_text(M("TP_LOCALLAB_JZLOGWBS_TOOLTIP"));
|
||||||
clariFramejz->set_tooltip_markup(M("TP_LOCALLAB_CLARIJZ_TOOLTIP"));
|
clariFramejz->set_tooltip_markup(M("TP_LOCALLAB_CLARIJZ_TOOLTIP"));
|
||||||
clarilresjz->set_tooltip_text(M("TP_LOCALLAB_WAT_CLARILJZ_TOOLTIP"));
|
clarilresjz->set_tooltip_text(M("TP_LOCALLAB_WAT_CLARIL_TOOLTIP"));
|
||||||
claricresjz->set_tooltip_text(M("TP_LOCALLAB_WAT_CLARICJZ_TOOLTIP"));
|
claricresjz->set_tooltip_text(M("TP_LOCALLAB_WAT_CLARIC_TOOLTIP"));
|
||||||
clarisoftjz->set_tooltip_markup(M("TP_LOCALLAB_CLARISOFTJZ_TOOLTIP"));
|
clarisoftjz->set_tooltip_markup(M("TP_LOCALLAB_CLARISOFTJZ_TOOLTIP"));
|
||||||
wavshapejz->setTooltip(M("TP_LOCALLAB_WAT_WAVSHAPE_TOOLTIP"));
|
wavshapejz->setTooltip(M("TP_LOCALLAB_WAT_WAVSHAPE_TOOLTIP"));
|
||||||
LocalcurveEditorwavjz->set_tooltip_markup(M("TP_LOCALLAB_WAT_LEVELLOCCONTRAST_TOOLTIP"));
|
LocalcurveEditorwavjz->set_tooltip_markup(M("TP_LOCALLAB_WAT_LEVELLOCCONTRAST_TOOLTIP"));
|
||||||
|
@ -44,33 +44,34 @@ struct LocaleToLang : private std::map<std::pair<Glib::ustring, Glib::ustring>,
|
|||||||
emplace (key ("ca", "ES"), "Catala");
|
emplace (key ("ca", "ES"), "Catala");
|
||||||
emplace (key ("cs", "CZ"), "Czech");
|
emplace (key ("cs", "CZ"), "Czech");
|
||||||
emplace (key ("da", "DK"), "Dansk");
|
emplace (key ("da", "DK"), "Dansk");
|
||||||
emplace (key ("de", "DE"), "Deutsch");
|
emplace (key ("de", "" ), "Deutsch");
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
emplace (key ("en", "UK"), "English (UK)");
|
emplace (key ("en", "UK"), "English (UK)");
|
||||||
#else
|
#else
|
||||||
emplace (key ("en", "GB"), "English (UK)");
|
emplace (key ("en", "GB"), "English (UK)");
|
||||||
#endif
|
#endif
|
||||||
emplace (key ("en", "US"), "English (US)");
|
emplace (key ("en", "US"), "English (US)");
|
||||||
emplace (key ("es", "ES"), "Espanol");
|
emplace (key ("es", "" ), "Espanol (Latin America)");
|
||||||
|
emplace (key ("es", "ES"), "Espanol (Castellano)");
|
||||||
emplace (key ("eu", "ES"), "Euskara");
|
emplace (key ("eu", "ES"), "Euskara");
|
||||||
emplace (key ("fr", "FR"), "Francais");
|
emplace (key ("fr", "" ), "Francais");
|
||||||
emplace (key ("el", "GR"), "Greek");
|
emplace (key ("el", "GR"), "Greek");
|
||||||
emplace (key ("he", "IL"), "Hebrew");
|
emplace (key ("he", "IL"), "Hebrew");
|
||||||
emplace (key ("it", "IT"), "Italiano");
|
emplace (key ("it", "" ), "Italiano");
|
||||||
emplace (key ("ja", "JP"), "Japanese");
|
emplace (key ("ja", "JP"), "Japanese");
|
||||||
emplace (key ("lv", "LV"), "Latvian");
|
emplace (key ("lv", "" ), "Latvian");
|
||||||
emplace (key ("hu", "HU"), "Magyar");
|
emplace (key ("hu", "" ), "Magyar");
|
||||||
emplace (key ("nl", "NL"), "Nederlands");
|
emplace (key ("nl", "" ), "Nederlands");
|
||||||
emplace (key ("nn", "NO"), "Norsk BM");
|
emplace (key ("nn", "NO"), "Norsk BM");
|
||||||
emplace (key ("nb", "NO"), "Norsk BM");
|
emplace (key ("nb", "NO"), "Norsk BM");
|
||||||
emplace (key ("pl", "PL"), "Polish");
|
emplace (key ("pl", "" ), "Polish");
|
||||||
emplace (key ("pt", "PT"), "Portugues (Brasil)");
|
emplace (key ("pt", "" ), "Portugues (Brasil)");
|
||||||
emplace (key ("ru", "RU"), "Russian");
|
emplace (key ("ru", "" ), "Russian");
|
||||||
emplace (key ("sr", "RS"), "Serbian (Cyrilic Characters)");
|
emplace (key ("sr", "RS"), "Serbian (Cyrilic Characters)");
|
||||||
emplace (key ("sk", "SK"), "Slovak");
|
emplace (key ("sk", "" ), "Slovak");
|
||||||
emplace (key ("fi", "FI"), "Suomi");
|
emplace (key ("fi", "" ), "Suomi");
|
||||||
emplace (key ("sv", "SE"), "Swedish");
|
emplace (key ("sv", "SE"), "Swedish");
|
||||||
emplace (key ("tr", "TR"), "Turkish");
|
emplace (key ("tr", "" ), "Turkish");
|
||||||
emplace (key ("zh", "CN"), "Chinese (Simplified)");
|
emplace (key ("zh", "CN"), "Chinese (Simplified)");
|
||||||
emplace (key ("zh", "SG"), "Chinese (Traditional)");
|
emplace (key ("zh", "SG"), "Chinese (Traditional)");
|
||||||
}
|
}
|
||||||
@ -79,12 +80,15 @@ struct LocaleToLang : private std::map<std::pair<Glib::ustring, Glib::ustring>,
|
|||||||
{
|
{
|
||||||
Glib::ustring major, minor;
|
Glib::ustring major, minor;
|
||||||
|
|
||||||
|
// TODO: Support 3 character language code when needed.
|
||||||
if (locale.length () >= 2) {
|
if (locale.length () >= 2) {
|
||||||
major = locale.substr (0, 2).lowercase ();
|
major = locale.substr (0, 2).lowercase ();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (locale.length () >= 5) {
|
if (locale.length () >= 5) {
|
||||||
minor = locale.substr (3, 2).uppercase ();
|
const Glib::ustring::size_type length =
|
||||||
|
locale.length() > 5 && g_unichar_isalnum(locale[5]) ? 3 : 2;
|
||||||
|
minor = locale.substr (3, length).uppercase ();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Look for matching language and country.
|
// Look for matching language and country.
|
||||||
@ -95,7 +99,7 @@ struct LocaleToLang : private std::map<std::pair<Glib::ustring, Glib::ustring>,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Look for matching language only.
|
// Look for matching language only.
|
||||||
iterator = find (key (major, major.uppercase()));
|
iterator = find (key (major, ""));
|
||||||
|
|
||||||
if (iterator != end ()) {
|
if (iterator != end ()) {
|
||||||
return iterator->second;
|
return iterator->second;
|
||||||
|
@ -773,6 +773,9 @@ void Options::readFromFile(Glib::ustring fname)
|
|||||||
|
|
||||||
if (keyFile.has_key("General", "Language")) {
|
if (keyFile.has_key("General", "Language")) {
|
||||||
language = keyFile.get_string("General", "Language");
|
language = keyFile.get_string("General", "Language");
|
||||||
|
if (!language.compare("Espanol")) {
|
||||||
|
language = "Espanol (Latin America)";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keyFile.has_key("General", "LanguageAutoDetect")) {
|
if (keyFile.has_key("General", "LanguageAutoDetect")) {
|
||||||
|
@ -571,7 +571,7 @@ void ParamsEdited::set(bool v)
|
|||||||
wavelet.Backmethod = v;
|
wavelet.Backmethod = v;
|
||||||
wavelet.Tilesmethod = v;
|
wavelet.Tilesmethod = v;
|
||||||
wavelet.complexmethod = v;
|
wavelet.complexmethod = v;
|
||||||
wavelet.denmethod = v;
|
//wavelet.denmethod = v;
|
||||||
wavelet.mixmethod = v;
|
wavelet.mixmethod = v;
|
||||||
wavelet.slimethod = v;
|
wavelet.slimethod = v;
|
||||||
wavelet.quamethod = v;
|
wavelet.quamethod = v;
|
||||||
@ -632,7 +632,7 @@ void ParamsEdited::set(bool v)
|
|||||||
wavelet.levelsigm = v;
|
wavelet.levelsigm = v;
|
||||||
wavelet.ccwcurve = v;
|
wavelet.ccwcurve = v;
|
||||||
wavelet.blcurve = v;
|
wavelet.blcurve = v;
|
||||||
wavelet.opacityCurveSH = v;
|
//wavelet.opacityCurveSH = v;
|
||||||
wavelet.opacityCurveRG = v;
|
wavelet.opacityCurveRG = v;
|
||||||
wavelet.opacityCurveBY = v;
|
wavelet.opacityCurveBY = v;
|
||||||
wavelet.wavdenoise = v;
|
wavelet.wavdenoise = v;
|
||||||
@ -1982,7 +1982,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
wavelet.Backmethod = wavelet.Backmethod && p.wavelet.Backmethod == other.wavelet.Backmethod;
|
wavelet.Backmethod = wavelet.Backmethod && p.wavelet.Backmethod == other.wavelet.Backmethod;
|
||||||
wavelet.Tilesmethod = wavelet.Tilesmethod && p.wavelet.Tilesmethod == other.wavelet.Tilesmethod;
|
wavelet.Tilesmethod = wavelet.Tilesmethod && p.wavelet.Tilesmethod == other.wavelet.Tilesmethod;
|
||||||
wavelet.complexmethod = wavelet.complexmethod && p.wavelet.complexmethod == other.wavelet.complexmethod;
|
wavelet.complexmethod = wavelet.complexmethod && p.wavelet.complexmethod == other.wavelet.complexmethod;
|
||||||
wavelet.denmethod = wavelet.denmethod && p.wavelet.denmethod == other.wavelet.denmethod;
|
//wavelet.denmethod = wavelet.denmethod && p.wavelet.denmethod == other.wavelet.denmethod;
|
||||||
wavelet.mixmethod = wavelet.mixmethod && p.wavelet.mixmethod == other.wavelet.mixmethod;
|
wavelet.mixmethod = wavelet.mixmethod && p.wavelet.mixmethod == other.wavelet.mixmethod;
|
||||||
wavelet.slimethod = wavelet.slimethod && p.wavelet.slimethod == other.wavelet.slimethod;
|
wavelet.slimethod = wavelet.slimethod && p.wavelet.slimethod == other.wavelet.slimethod;
|
||||||
wavelet.quamethod = wavelet.quamethod && p.wavelet.quamethod == other.wavelet.quamethod;
|
wavelet.quamethod = wavelet.quamethod && p.wavelet.quamethod == other.wavelet.quamethod;
|
||||||
@ -2044,7 +2044,7 @@ void ParamsEdited::initFrom(const std::vector<rtengine::procparams::ProcParams>&
|
|||||||
wavelet.satlev = wavelet.satlev && p.wavelet.satlev == other.wavelet.satlev;
|
wavelet.satlev = wavelet.satlev && p.wavelet.satlev == other.wavelet.satlev;
|
||||||
wavelet.ccwcurve = wavelet.ccwcurve && p.wavelet.ccwcurve == other.wavelet.ccwcurve;
|
wavelet.ccwcurve = wavelet.ccwcurve && p.wavelet.ccwcurve == other.wavelet.ccwcurve;
|
||||||
wavelet.blcurve = wavelet.blcurve && p.wavelet.blcurve == other.wavelet.blcurve;
|
wavelet.blcurve = wavelet.blcurve && p.wavelet.blcurve == other.wavelet.blcurve;
|
||||||
wavelet.opacityCurveSH = wavelet.opacityCurveSH && p.wavelet.opacityCurveSH == other.wavelet.opacityCurveSH;
|
//wavelet.opacityCurveSH = wavelet.opacityCurveSH && p.wavelet.opacityCurveSH == other.wavelet.opacityCurveSH;
|
||||||
wavelet.opacityCurveRG = wavelet.opacityCurveRG && p.wavelet.opacityCurveRG == other.wavelet.opacityCurveRG;
|
wavelet.opacityCurveRG = wavelet.opacityCurveRG && p.wavelet.opacityCurveRG == other.wavelet.opacityCurveRG;
|
||||||
wavelet.opacityCurveBY = wavelet.opacityCurveBY && p.wavelet.opacityCurveBY == other.wavelet.opacityCurveBY;
|
wavelet.opacityCurveBY = wavelet.opacityCurveBY && p.wavelet.opacityCurveBY == other.wavelet.opacityCurveBY;
|
||||||
wavelet.wavdenoise = wavelet.wavdenoise && p.wavelet.wavdenoise == other.wavelet.wavdenoise;
|
wavelet.wavdenoise = wavelet.wavdenoise && p.wavelet.wavdenoise == other.wavelet.wavdenoise;
|
||||||
@ -6864,9 +6864,9 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.wavelet.complexmethod = mods.wavelet.complexmethod;
|
toEdit.wavelet.complexmethod = mods.wavelet.complexmethod;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wavelet.denmethod) {
|
//if (wavelet.denmethod) {
|
||||||
toEdit.wavelet.denmethod = mods.wavelet.denmethod;
|
// toEdit.wavelet.denmethod = mods.wavelet.denmethod;
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (wavelet.mixmethod) {
|
if (wavelet.mixmethod) {
|
||||||
toEdit.wavelet.mixmethod = mods.wavelet.mixmethod;
|
toEdit.wavelet.mixmethod = mods.wavelet.mixmethod;
|
||||||
@ -7000,9 +7000,9 @@ void ParamsEdited::combine(rtengine::procparams::ProcParams& toEdit, const rteng
|
|||||||
toEdit.wavelet.blcurve = mods.wavelet.blcurve;
|
toEdit.wavelet.blcurve = mods.wavelet.blcurve;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wavelet.opacityCurveSH) {
|
//if (wavelet.opacityCurveSH) {
|
||||||
toEdit.wavelet.opacityCurveSH = mods.wavelet.opacityCurveSH;
|
// toEdit.wavelet.opacityCurveSH = mods.wavelet.opacityCurveSH;
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (wavelet.opacityCurveRG) {
|
if (wavelet.opacityCurveRG) {
|
||||||
toEdit.wavelet.opacityCurveRG = mods.wavelet.opacityCurveRG;
|
toEdit.wavelet.opacityCurveRG = mods.wavelet.opacityCurveRG;
|
||||||
|
@ -1281,7 +1281,7 @@ struct WaveletParamsEdited {
|
|||||||
bool Backmethod;
|
bool Backmethod;
|
||||||
bool Tilesmethod;
|
bool Tilesmethod;
|
||||||
bool complexmethod;
|
bool complexmethod;
|
||||||
bool denmethod;
|
//bool denmethod;
|
||||||
bool mixmethod;
|
bool mixmethod;
|
||||||
bool slimethod;
|
bool slimethod;
|
||||||
bool quamethod;
|
bool quamethod;
|
||||||
@ -1335,7 +1335,7 @@ struct WaveletParamsEdited {
|
|||||||
bool levelsigm;
|
bool levelsigm;
|
||||||
bool ccwcurve;
|
bool ccwcurve;
|
||||||
bool blcurve;
|
bool blcurve;
|
||||||
bool opacityCurveSH;
|
//bool opacityCurveSH;
|
||||||
bool opacityCurveBY;
|
bool opacityCurveBY;
|
||||||
bool wavdenoise;
|
bool wavdenoise;
|
||||||
bool wavdenoiseh;
|
bool wavdenoiseh;
|
||||||
|
@ -96,7 +96,7 @@ PerspCorrection::PerspCorrection () : FoldableToolPanel(this, "perspective", M("
|
|||||||
EvPerspProjAngle = mapper->newEvent(TRANSFORM, "HISTORY_MSG_PERSP_PROJ_ANGLE");
|
EvPerspProjAngle = mapper->newEvent(TRANSFORM, "HISTORY_MSG_PERSP_PROJ_ANGLE");
|
||||||
EvPerspProjRotate = mapper->newEvent(TRANSFORM, "HISTORY_MSG_PERSP_PROJ_ROTATE");
|
EvPerspProjRotate = mapper->newEvent(TRANSFORM, "HISTORY_MSG_PERSP_PROJ_ROTATE");
|
||||||
EvPerspProjShift = mapper->newEvent(TRANSFORM, "HISTORY_MSG_PERSP_PROJ_SHIFT");
|
EvPerspProjShift = mapper->newEvent(TRANSFORM, "HISTORY_MSG_PERSP_PROJ_SHIFT");
|
||||||
EvPerspRender = mapper->newEvent(TRANSFORM);
|
EvPerspRender = mapper->newEvent(TRANSFORM, "GENERAL_NA");
|
||||||
// Void events.
|
// Void events.
|
||||||
EvPerspCamAngleVoid = mapper->newEvent(M_VOID, "HISTORY_MSG_PERSP_CAM_ANGLE");
|
EvPerspCamAngleVoid = mapper->newEvent(M_VOID, "HISTORY_MSG_PERSP_CAM_ANGLE");
|
||||||
EvPerspCamFocalLengthVoid = mapper->newEvent(M_VOID, "HISTORY_MSG_PERSP_CAM_FL");
|
EvPerspCamFocalLengthVoid = mapper->newEvent(M_VOID, "HISTORY_MSG_PERSP_CAM_FL");
|
||||||
|
@ -2639,8 +2639,8 @@ void Preferences::darkFrameChanged()
|
|||||||
{
|
{
|
||||||
//Glib::ustring s(darkFrameDir->get_filename());
|
//Glib::ustring s(darkFrameDir->get_filename());
|
||||||
Glib::ustring s(darkFrameDir->get_current_folder());
|
Glib::ustring s(darkFrameDir->get_current_folder());
|
||||||
//if( s.compare( rtengine::dfm.getPathname()) !=0 ){
|
//if( s.compare( rtengine::DFManager::getInstance().getPathname()) !=0 ){
|
||||||
rtengine::dfm.init(s);
|
rtengine::DFManager::getInstance().init(s);
|
||||||
updateDFinfos();
|
updateDFinfos();
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
@ -2658,7 +2658,7 @@ void Preferences::flatFieldChanged()
|
|||||||
void Preferences::updateDFinfos()
|
void Preferences::updateDFinfos()
|
||||||
{
|
{
|
||||||
int t1, t2;
|
int t1, t2;
|
||||||
rtengine::dfm.getStat(t1, t2);
|
rtengine::DFManager::getInstance().getStat(t1, t2);
|
||||||
Glib::ustring s = Glib::ustring::compose("%1: %2 %3, %4 %5", M("PREFERENCES_DARKFRAMEFOUND"), t1, M("PREFERENCES_DARKFRAMESHOTS"), t2, M("PREFERENCES_DARKFRAMETEMPLATES"));
|
Glib::ustring s = Glib::ustring::compose("%1: %2 %3, %4 %5", M("PREFERENCES_DARKFRAMEFOUND"), t1, M("PREFERENCES_DARKFRAMESHOTS"), t2, M("PREFERENCES_DARKFRAMETEMPLATES"));
|
||||||
dfLabel->set_text(s);
|
dfLabel->set_text(s);
|
||||||
}
|
}
|
||||||
|
@ -193,7 +193,7 @@ Splash::Splash (Gtk::Window& parent) : Gtk::Dialog(M("GENERAL_ABOUT"), parent, t
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Tab 4: the license
|
// Tab 4: the license
|
||||||
std::string licenseFileName = Glib::build_filename (licensePath, "LICENSE.txt");
|
std::string licenseFileName = Glib::build_filename (licensePath, "LICENSE");
|
||||||
|
|
||||||
if ( Glib::file_test(licenseFileName, (Glib::FILE_TEST_EXISTS)) ) {
|
if ( Glib::file_test(licenseFileName, (Glib::FILE_TEST_EXISTS)) ) {
|
||||||
FILE *f = g_fopen (licenseFileName.c_str (), "rt");
|
FILE *f = g_fopen (licenseFileName.c_str (), "rt");
|
||||||
|
@ -557,7 +557,7 @@ void ToolPanelCoordinator::panelChanged(const rtengine::ProcEvent& event, const
|
|||||||
maskStruc.blMask, maskStruc.tmMask, maskStruc.retiMask, maskStruc.sharMask,
|
maskStruc.blMask, maskStruc.tmMask, maskStruc.retiMask, maskStruc.sharMask,
|
||||||
maskStruc.lcMask, maskStruc.cbMask, maskStruc.logMask, maskStruc.maskMask, maskStruc.cieMask);
|
maskStruc.lcMask, maskStruc.cbMask, maskStruc.logMask, maskStruc.maskMask, maskStruc.cieMask);
|
||||||
} else if (event == rtengine::EvLocallabSpotCreated || event == rtengine::EvLocallabSpotSelectedWithMask ||
|
} else if (event == rtengine::EvLocallabSpotCreated || event == rtengine::EvLocallabSpotSelectedWithMask ||
|
||||||
event == rtengine::EvLocallabSpotDeleted || event == rtengine::Evlocallabshowreset ||
|
event == rtengine::EvLocallabSpotDeleted /*|| event == rtengine::Evlocallabshowreset*/ ||
|
||||||
event == rtengine::EvlocallabToolRemovedWithRefresh) {
|
event == rtengine::EvlocallabToolRemovedWithRefresh) {
|
||||||
locallab->resetMaskVisibility();
|
locallab->resetMaskVisibility();
|
||||||
ipc->setLocallabMaskVisibility(false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
ipc->setLocallabMaskVisibility(false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||||
@ -944,7 +944,7 @@ void ToolPanelCoordinator::autoCropRequested()
|
|||||||
crop->cropManipReady();
|
crop->cropManipReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
rtengine::RawImage* ToolPanelCoordinator::getDF()
|
const rtengine::RawImage* ToolPanelCoordinator::getDF()
|
||||||
{
|
{
|
||||||
if (!ipc) {
|
if (!ipc) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -959,7 +959,7 @@ rtengine::RawImage* ToolPanelCoordinator::getDF()
|
|||||||
std::string model(imd->getModel());
|
std::string model(imd->getModel());
|
||||||
time_t timestamp = imd->getDateTimeAsTS();
|
time_t timestamp = imd->getDateTimeAsTS();
|
||||||
|
|
||||||
return rtengine::dfm.searchDarkFrame(maker, model, iso, shutter, timestamp);
|
return rtengine::DFManager::getInstance().searchDarkFrame(maker, model, iso, shutter, timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -307,7 +307,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
//DFProvider interface
|
//DFProvider interface
|
||||||
rtengine::RawImage* getDF() override;
|
const rtengine::RawImage* getDF() override;
|
||||||
|
|
||||||
//FFProvider interface
|
//FFProvider interface
|
||||||
rtengine::RawImage* getFF() override;
|
rtengine::RawImage* getFF() override;
|
||||||
|
148
rtgui/wavelet.cc
148
rtgui/wavelet.cc
@ -64,7 +64,7 @@ std::vector<GradientMilestone> makeWholeHueRange()
|
|||||||
Wavelet::Wavelet() :
|
Wavelet::Wavelet() :
|
||||||
FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), true, true),
|
FoldableToolPanel(this, "wavelet", M("TP_WAVELET_LABEL"), true, true),
|
||||||
curveEditorG(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_CONTEDIT"))),
|
curveEditorG(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_CONTEDIT"))),
|
||||||
curveEditorC(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_CONTRASTEDIT"))),
|
//curveEditorC(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_CONTRASTEDIT"))),
|
||||||
CCWcurveEditorG(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_CCURVE"))),
|
CCWcurveEditorG(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_CCURVE"))),
|
||||||
curveEditorbl(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_BLCURVE"))),
|
curveEditorbl(new CurveEditorGroup(options.lastWaveletCurvesDir, M("TP_WAVELET_BLCURVE"))),
|
||||||
curveEditorRES(new CurveEditorGroup(options.lastWaveletCurvesDir)),
|
curveEditorRES(new CurveEditorGroup(options.lastWaveletCurvesDir)),
|
||||||
@ -178,7 +178,7 @@ Wavelet::Wavelet() :
|
|||||||
Dirmethod(Gtk::manage(new MyComboBoxText())),
|
Dirmethod(Gtk::manage(new MyComboBoxText())),
|
||||||
Medgreinf(Gtk::manage(new MyComboBoxText())),
|
Medgreinf(Gtk::manage(new MyComboBoxText())),
|
||||||
ushamethod(Gtk::manage(new MyComboBoxText())),
|
ushamethod(Gtk::manage(new MyComboBoxText())),
|
||||||
denmethod(Gtk::manage(new MyComboBoxText())),
|
//denmethod(Gtk::manage(new MyComboBoxText())),
|
||||||
mixmethod(Gtk::manage(new MyComboBoxText())),
|
mixmethod(Gtk::manage(new MyComboBoxText())),
|
||||||
quamethod(Gtk::manage(new MyComboBoxText())),
|
quamethod(Gtk::manage(new MyComboBoxText())),
|
||||||
slimethod(Gtk::manage(new MyComboBoxText())),
|
slimethod(Gtk::manage(new MyComboBoxText())),
|
||||||
@ -214,7 +214,7 @@ Wavelet::Wavelet() :
|
|||||||
ctboxch(Gtk::manage(new Gtk::Box())),
|
ctboxch(Gtk::manage(new Gtk::Box())),
|
||||||
quaHBox(Gtk::manage(new Gtk::Box())),
|
quaHBox(Gtk::manage(new Gtk::Box())),
|
||||||
sliHBox(Gtk::manage(new Gtk::Box())),
|
sliHBox(Gtk::manage(new Gtk::Box())),
|
||||||
denHBox(Gtk::manage(new Gtk::Box())),
|
//denHBox(Gtk::manage(new Gtk::Box())),
|
||||||
mixHBox(Gtk::manage(new Gtk::Box())),
|
mixHBox(Gtk::manage(new Gtk::Box())),
|
||||||
ctboxBA(Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL)))
|
ctboxBA(Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL)))
|
||||||
|
|
||||||
@ -253,11 +253,11 @@ Wavelet::Wavelet() :
|
|||||||
EvWavLabGridValue = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVLABGRID_VALUE");
|
EvWavLabGridValue = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVLABGRID_VALUE");
|
||||||
EvWavrangeab = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_RANGEAB");
|
EvWavrangeab = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_RANGEAB");
|
||||||
EvWavprotab = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_PROTAB");
|
EvWavprotab = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_PROTAB");
|
||||||
EvWavlevelshc = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_LEVELSHC");
|
//EvWavlevelshc = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_LEVELSHC");
|
||||||
EvWavcomplexmet = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_COMPLEX");
|
EvWavcomplexmet = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_COMPLEX");
|
||||||
EvWavsigm = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVSIGM");
|
EvWavsigm = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVSIGM");
|
||||||
EvWavdenoise = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVDENOISE");
|
EvWavdenoise = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVDENOISE");
|
||||||
EvWavdenmethod = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVDENMET");
|
//EvWavdenmethod = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVDENMET");
|
||||||
EvWavmixmethod = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVMIXMET");
|
EvWavmixmethod = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVMIXMET");
|
||||||
EvWavquamethod = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVQUAMET");
|
EvWavquamethod = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVQUAMET");
|
||||||
EvWavlevden = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVLEVDEN");
|
EvWavlevden = m->newEvent(DIRPYREQUALIZER, "HISTORY_MSG_WAVLEVDEN");
|
||||||
@ -486,16 +486,16 @@ Wavelet::Wavelet() :
|
|||||||
|
|
||||||
const WaveletParams default_params;
|
const WaveletParams default_params;
|
||||||
|
|
||||||
curveEditorC->setCurveListener(this);
|
//curveEditorC->setCurveListener(this);
|
||||||
curveEditorC->set_tooltip_text(M("TP_WAVELET_FINCOAR_TOOLTIP"));
|
//curveEditorC->set_tooltip_text(M("TP_WAVELET_FINCOAR_TOOLTIP"));
|
||||||
|
|
||||||
|
|
||||||
opacityShapeSH = static_cast<FlatCurveEditor*>(curveEditorC->addCurve(CT_Flat, "", nullptr, false, false));
|
//opacityShapeSH = static_cast<FlatCurveEditor*>(curveEditorC->addCurve(CT_Flat, "", nullptr, false, false));
|
||||||
opacityShapeSH->setIdentityValue(0.);
|
//opacityShapeSH->setIdentityValue(0.);
|
||||||
opacityShapeSH->setResetCurve(FlatCurveType(default_params.opacityCurveSH.at(0)), default_params.opacityCurveSH);
|
//opacityShapeSH->setResetCurve(FlatCurveType(default_params.opacityCurveSH.at(0)), default_params.opacityCurveSH);
|
||||||
|
|
||||||
curveEditorC->curveListComplete();
|
//curveEditorC->curveListComplete();
|
||||||
curveEditorC->show();
|
//curveEditorC->show();
|
||||||
|
|
||||||
contrastSHVBox->pack_start(*HSmethod);
|
contrastSHVBox->pack_start(*HSmethod);
|
||||||
contrastSHVBox->pack_start(*hllev);
|
contrastSHVBox->pack_start(*hllev);
|
||||||
@ -684,17 +684,17 @@ Wavelet::Wavelet() :
|
|||||||
sliHBox->pack_start(*slimethod);
|
sliHBox->pack_start(*slimethod);
|
||||||
|
|
||||||
|
|
||||||
denmethod->append(M("TP_WAVELET_DENEQUAL"));
|
//denmethod->append(M("TP_WAVELET_DENEQUAL"));
|
||||||
denmethod->append(M("TP_WAVELET_DEN14PLUS"));
|
//denmethod->append(M("TP_WAVELET_DEN14PLUS"));
|
||||||
denmethod->append(M("TP_WAVELET_DEN14LOW"));
|
//denmethod->append(M("TP_WAVELET_DEN14LOW"));
|
||||||
denmethod->append(M("TP_WAVELET_DEN12PLUS"));
|
//denmethod->append(M("TP_WAVELET_DEN12PLUS"));
|
||||||
denmethod->append(M("TP_WAVELET_DEN12LOW"));
|
//denmethod->append(M("TP_WAVELET_DEN12LOW"));
|
||||||
denmethodconn = denmethod->signal_changed().connect(sigc::mem_fun(*this, &Wavelet::denmethodChanged));
|
//denmethodconn = denmethod->signal_changed().connect(sigc::mem_fun(*this, &Wavelet::denmethodChanged));
|
||||||
denmethod->set_tooltip_text(M("TP_WAVELET_DENEQUAL_TOOLTIP"));
|
//denmethod->set_tooltip_text(M("TP_WAVELET_DENEQUAL_TOOLTIP"));
|
||||||
// Gtk::Box* const denHBox = Gtk::manage(new Gtk::Box());
|
// Gtk::Box* const denHBox = Gtk::manage(new Gtk::Box());
|
||||||
Gtk::Label* const denLabel = Gtk::manage(new Gtk::Label(M("TP_WAVELET_DENCONTRAST") + ":"));
|
//Gtk::Label* const denLabel = Gtk::manage(new Gtk::Label(M("TP_WAVELET_DENCONTRAST") + ":"));
|
||||||
denHBox->pack_start(*denLabel, Gtk::PACK_SHRINK, 4);
|
//denHBox->pack_start(*denLabel, Gtk::PACK_SHRINK, 4);
|
||||||
denHBox->pack_start(*denmethod);
|
//denHBox->pack_start(*denmethod);
|
||||||
|
|
||||||
mixmethod->append(M("TP_WAVELET_MIXNOISE"));
|
mixmethod->append(M("TP_WAVELET_MIXNOISE"));
|
||||||
mixmethod->append(M("TP_WAVELET_MIXMIX"));
|
mixmethod->append(M("TP_WAVELET_MIXMIX"));
|
||||||
@ -757,7 +757,7 @@ Wavelet::Wavelet() :
|
|||||||
noiseBox->pack_start(*thrden);
|
noiseBox->pack_start(*thrden);
|
||||||
noiseBox->pack_start(*quaHBox);
|
noiseBox->pack_start(*quaHBox);
|
||||||
noiseBox->pack_start(*sliHBox);
|
noiseBox->pack_start(*sliHBox);
|
||||||
noiseBox->pack_start(*denHBox);
|
//noiseBox->pack_start(*denHBox);
|
||||||
noiseBox->pack_start(*mixHBox);
|
noiseBox->pack_start(*mixHBox);
|
||||||
noiseBox->pack_start(*levelsigm, Gtk::PACK_SHRINK, 0);
|
noiseBox->pack_start(*levelsigm, Gtk::PACK_SHRINK, 0);
|
||||||
noiseBox->pack_start(*limden);
|
noiseBox->pack_start(*limden);
|
||||||
@ -1330,7 +1330,7 @@ Wavelet::~Wavelet()
|
|||||||
idle_register.destroy();
|
idle_register.destroy();
|
||||||
|
|
||||||
delete opaCurveEditorG;
|
delete opaCurveEditorG;
|
||||||
delete curveEditorC;
|
//delete curveEditorC;
|
||||||
delete opacityCurveEditorG;
|
delete opacityCurveEditorG;
|
||||||
delete CurveEditorwavnoise;
|
delete CurveEditorwavnoise;
|
||||||
delete CurveEditorwavnoiseh;
|
delete CurveEditorwavnoiseh;
|
||||||
@ -1422,7 +1422,7 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
Backmethodconn.block(true);
|
Backmethodconn.block(true);
|
||||||
Tilesmethodconn.block(true);
|
Tilesmethodconn.block(true);
|
||||||
complexmethodconn.block(true);
|
complexmethodconn.block(true);
|
||||||
denmethodconn.block(true);
|
//denmethodconn.block(true);
|
||||||
mixmethodconn.block(true);
|
mixmethodconn.block(true);
|
||||||
slimethodconn.block(true);
|
slimethodconn.block(true);
|
||||||
quamethodconn.block(true);
|
quamethodconn.block(true);
|
||||||
@ -1553,17 +1553,17 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
complexmethod->set_active(1);
|
complexmethod->set_active(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pp->wavelet.denmethod == "equ") {
|
//if (pp->wavelet.denmethod == "equ") {
|
||||||
denmethod->set_active(0);
|
// denmethod->set_active(0);
|
||||||
} else if (pp->wavelet.denmethod == "high") {
|
//} else if (pp->wavelet.denmethod == "high") {
|
||||||
denmethod->set_active(1);
|
// denmethod->set_active(1);
|
||||||
} else if (pp->wavelet.denmethod == "low") {
|
//} else if (pp->wavelet.denmethod == "low") {
|
||||||
denmethod->set_active(2);
|
// denmethod->set_active(2);
|
||||||
} else if (pp->wavelet.denmethod == "12high") {
|
//} else if (pp->wavelet.denmethod == "12high") {
|
||||||
denmethod->set_active(3);
|
// denmethod->set_active(3);
|
||||||
} else if (pp->wavelet.denmethod == "12low") {
|
//} else if (pp->wavelet.denmethod == "12low") {
|
||||||
denmethod->set_active(4);
|
// denmethod->set_active(4);
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (pp->wavelet.mixmethod == "nois") {
|
if (pp->wavelet.mixmethod == "nois") {
|
||||||
mixmethod->set_active(0);
|
mixmethod->set_active(0);
|
||||||
@ -1628,7 +1628,7 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
opacityShapeRG->setCurve(pp->wavelet.opacityCurveRG);
|
opacityShapeRG->setCurve(pp->wavelet.opacityCurveRG);
|
||||||
wavdenoise->setCurve(pp->wavelet.wavdenoise);
|
wavdenoise->setCurve(pp->wavelet.wavdenoise);
|
||||||
wavdenoiseh->setCurve(pp->wavelet.wavdenoiseh);
|
wavdenoiseh->setCurve(pp->wavelet.wavdenoiseh);
|
||||||
opacityShapeSH->setCurve(pp->wavelet.opacityCurveSH);
|
//opacityShapeSH->setCurve(pp->wavelet.opacityCurveSH);
|
||||||
opacityShapeBY->setCurve(pp->wavelet.opacityCurveBY);
|
opacityShapeBY->setCurve(pp->wavelet.opacityCurveBY);
|
||||||
opacityShape->setCurve(pp->wavelet.opacityCurveW);
|
opacityShape->setCurve(pp->wavelet.opacityCurveW);
|
||||||
opacityShapeWL->setCurve(pp->wavelet.opacityCurveWL);
|
opacityShapeWL->setCurve(pp->wavelet.opacityCurveWL);
|
||||||
@ -1804,9 +1804,9 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
complexmethod->set_active_text(M("GENERAL_UNCHANGED"));
|
complexmethod->set_active_text(M("GENERAL_UNCHANGED"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pedited->wavelet.denmethod) {
|
//if (!pedited->wavelet.denmethod) {
|
||||||
denmethod->set_active_text(M("GENERAL_UNCHANGED"));
|
// denmethod->set_active_text(M("GENERAL_UNCHANGED"));
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (!pedited->wavelet.mixmethod) {
|
if (!pedited->wavelet.mixmethod) {
|
||||||
mixmethod->set_active_text(M("GENERAL_UNCHANGED"));
|
mixmethod->set_active_text(M("GENERAL_UNCHANGED"));
|
||||||
@ -1882,7 +1882,7 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
exptoning->set_inconsistent(!pedited->wavelet.exptoning);
|
exptoning->set_inconsistent(!pedited->wavelet.exptoning);
|
||||||
expnoise->set_inconsistent(!pedited->wavelet.expnoise);
|
expnoise->set_inconsistent(!pedited->wavelet.expnoise);
|
||||||
opacityShapeRG->setCurve(pp->wavelet.opacityCurveRG);
|
opacityShapeRG->setCurve(pp->wavelet.opacityCurveRG);
|
||||||
opacityShapeSH->setCurve(pp->wavelet.opacityCurveSH);
|
//opacityShapeSH->setCurve(pp->wavelet.opacityCurveSH);
|
||||||
opacityShapeBY->setCurve(pp->wavelet.opacityCurveBY);
|
opacityShapeBY->setCurve(pp->wavelet.opacityCurveBY);
|
||||||
wavdenoise->setCurve(pp->wavelet.wavdenoise);
|
wavdenoise->setCurve(pp->wavelet.wavdenoise);
|
||||||
wavdenoiseh->setCurve(pp->wavelet.wavdenoiseh);
|
wavdenoiseh->setCurve(pp->wavelet.wavdenoiseh);
|
||||||
@ -2071,7 +2071,7 @@ void Wavelet::read(const ProcParams* pp, const ParamsEdited* pedited)
|
|||||||
Backmethodconn.block(false);
|
Backmethodconn.block(false);
|
||||||
Tilesmethodconn.block(false);
|
Tilesmethodconn.block(false);
|
||||||
complexmethodconn.block(false);
|
complexmethodconn.block(false);
|
||||||
denmethodconn.block(false);
|
//denmethodconn.block(false);
|
||||||
mixmethodconn.block(false);
|
mixmethodconn.block(false);
|
||||||
slimethodconn.block(false);
|
slimethodconn.block(false);
|
||||||
quamethodconn.block(false);
|
quamethodconn.block(false);
|
||||||
@ -2102,7 +2102,7 @@ void Wavelet::setEditProvider(EditDataProvider *provider)
|
|||||||
ccshape->setEditProvider(provider);
|
ccshape->setEditProvider(provider);
|
||||||
blshape->setEditProvider(provider);
|
blshape->setEditProvider(provider);
|
||||||
opacityShapeRG->setEditProvider(provider);
|
opacityShapeRG->setEditProvider(provider);
|
||||||
opacityShapeSH->setEditProvider(provider);
|
//opacityShapeSH->setEditProvider(provider);
|
||||||
opacityShapeBY->setEditProvider(provider);
|
opacityShapeBY->setEditProvider(provider);
|
||||||
wavdenoise->setEditProvider(provider);
|
wavdenoise->setEditProvider(provider);
|
||||||
wavdenoiseh->setEditProvider(provider);
|
wavdenoiseh->setEditProvider(provider);
|
||||||
@ -2186,7 +2186,7 @@ void Wavelet::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pp->wavelet.ccwcurve = ccshape->getCurve();
|
pp->wavelet.ccwcurve = ccshape->getCurve();
|
||||||
pp->wavelet.blcurve = blshape->getCurve();
|
pp->wavelet.blcurve = blshape->getCurve();
|
||||||
pp->wavelet.opacityCurveRG = opacityShapeRG->getCurve();
|
pp->wavelet.opacityCurveRG = opacityShapeRG->getCurve();
|
||||||
pp->wavelet.opacityCurveSH = opacityShapeSH->getCurve();
|
//pp->wavelet.opacityCurveSH = opacityShapeSH->getCurve();
|
||||||
pp->wavelet.opacityCurveBY = opacityShapeBY->getCurve();
|
pp->wavelet.opacityCurveBY = opacityShapeBY->getCurve();
|
||||||
pp->wavelet.wavdenoise = wavdenoise->getCurve();
|
pp->wavelet.wavdenoise = wavdenoise->getCurve();
|
||||||
pp->wavelet.wavdenoiseh = wavdenoiseh->getCurve();
|
pp->wavelet.wavdenoiseh = wavdenoiseh->getCurve();
|
||||||
@ -2274,7 +2274,7 @@ void Wavelet::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pedited->wavelet.Backmethod = Backmethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pedited->wavelet.Backmethod = Backmethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pedited->wavelet.Tilesmethod = Tilesmethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pedited->wavelet.Tilesmethod = Tilesmethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pedited->wavelet.complexmethod = complexmethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pedited->wavelet.complexmethod = complexmethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pedited->wavelet.denmethod = denmethod->get_active_text() != M("GENERAL_UNCHANGED");
|
//pedited->wavelet.denmethod = denmethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pedited->wavelet.mixmethod = mixmethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pedited->wavelet.mixmethod = mixmethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pedited->wavelet.slimethod = slimethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pedited->wavelet.slimethod = slimethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
pedited->wavelet.quamethod = quamethod->get_active_text() != M("GENERAL_UNCHANGED");
|
pedited->wavelet.quamethod = quamethod->get_active_text() != M("GENERAL_UNCHANGED");
|
||||||
@ -2335,7 +2335,7 @@ void Wavelet::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pedited->wavelet.leveldenoise = leveldenoise->getEditedState();
|
pedited->wavelet.leveldenoise = leveldenoise->getEditedState();
|
||||||
pedited->wavelet.levelsigm = levelsigm->getEditedState();
|
pedited->wavelet.levelsigm = levelsigm->getEditedState();
|
||||||
pedited->wavelet.opacityCurveRG = !opacityShapeRG->isUnChanged();
|
pedited->wavelet.opacityCurveRG = !opacityShapeRG->isUnChanged();
|
||||||
pedited->wavelet.opacityCurveSH = !opacityShapeSH->isUnChanged();
|
//pedited->wavelet.opacityCurveSH = !opacityShapeSH->isUnChanged();
|
||||||
pedited->wavelet.opacityCurveBY = !opacityShapeBY->isUnChanged();
|
pedited->wavelet.opacityCurveBY = !opacityShapeBY->isUnChanged();
|
||||||
pedited->wavelet.wavdenoise = !wavdenoise->isUnChanged();
|
pedited->wavelet.wavdenoise = !wavdenoise->isUnChanged();
|
||||||
pedited->wavelet.wavdenoiseh = !wavdenoiseh->isUnChanged();
|
pedited->wavelet.wavdenoiseh = !wavdenoiseh->isUnChanged();
|
||||||
@ -2500,17 +2500,17 @@ void Wavelet::write(ProcParams* pp, ParamsEdited* pedited)
|
|||||||
pp->wavelet.complexmethod = "expert";
|
pp->wavelet.complexmethod = "expert";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (denmethod->get_active_row_number() == 0) {
|
//if (denmethod->get_active_row_number() == 0) {
|
||||||
pp->wavelet.denmethod = "equ";
|
// pp->wavelet.denmethod = "equ";
|
||||||
} else if (denmethod->get_active_row_number() == 1) {
|
//} else if (denmethod->get_active_row_number() == 1) {
|
||||||
pp->wavelet.denmethod = "high";
|
// pp->wavelet.denmethod = "high";
|
||||||
} else if (denmethod->get_active_row_number() == 2) {
|
//} else if (denmethod->get_active_row_number() == 2) {
|
||||||
pp->wavelet.denmethod = "low";
|
// pp->wavelet.denmethod = "low";
|
||||||
} else if (denmethod->get_active_row_number() == 3) {
|
//} else if (denmethod->get_active_row_number() == 3) {
|
||||||
pp->wavelet.denmethod = "12high";
|
// pp->wavelet.denmethod = "12high";
|
||||||
} else if (denmethod->get_active_row_number() == 4) {
|
//} else if (denmethod->get_active_row_number() == 4) {
|
||||||
pp->wavelet.denmethod = "12low";
|
// pp->wavelet.denmethod = "12low";
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (mixmethod->get_active_row_number() == 0) {
|
if (mixmethod->get_active_row_number() == 0) {
|
||||||
pp->wavelet.mixmethod = "nois";
|
pp->wavelet.mixmethod = "nois";
|
||||||
@ -2569,8 +2569,8 @@ void Wavelet::curveChanged(CurveEditor* ce)
|
|||||||
listener->panelChanged(EvWavblshape, M("HISTORY_CUSTOMCURVE"));
|
listener->panelChanged(EvWavblshape, M("HISTORY_CUSTOMCURVE"));
|
||||||
} else if (ce == opacityShapeRG) {
|
} else if (ce == opacityShapeRG) {
|
||||||
listener->panelChanged(EvWavColor, M("HISTORY_CUSTOMCURVE"));
|
listener->panelChanged(EvWavColor, M("HISTORY_CUSTOMCURVE"));
|
||||||
} else if (ce == opacityShapeSH) {
|
//} else if (ce == opacityShapeSH) {
|
||||||
listener->panelChanged(EvWavlevelshc, M("HISTORY_CUSTOMCURVE"));
|
// listener->panelChanged(EvWavlevelshc, M("HISTORY_CUSTOMCURVE"));
|
||||||
} else if (ce == opacityShapeBY) {
|
} else if (ce == opacityShapeBY) {
|
||||||
listener->panelChanged(EvWavOpac, M("HISTORY_CUSTOMCURVE"));
|
listener->panelChanged(EvWavOpac, M("HISTORY_CUSTOMCURVE"));
|
||||||
} else if (ce == wavdenoise) {
|
} else if (ce == wavdenoise) {
|
||||||
@ -2913,13 +2913,13 @@ void Wavelet::HSmethodUpdateUI()
|
|||||||
bllev->hide();
|
bllev->hide();
|
||||||
threshold->hide();
|
threshold->hide();
|
||||||
threshold2->hide();
|
threshold2->hide();
|
||||||
curveEditorC->hide();
|
//curveEditorC->hide();
|
||||||
} else { //with
|
} else { //with
|
||||||
hllev->show();
|
hllev->show();
|
||||||
bllev->show();
|
bllev->show();
|
||||||
threshold->show();
|
threshold->show();
|
||||||
threshold2->show();
|
threshold2->show();
|
||||||
curveEditorC->show();
|
//curveEditorC->show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3252,7 +3252,7 @@ void Wavelet::convertParamToNormal()
|
|||||||
//denoise
|
//denoise
|
||||||
chromfi->setValue(def_params.chromfi);
|
chromfi->setValue(def_params.chromfi);
|
||||||
chromco->setValue(def_params.chromco);
|
chromco->setValue(def_params.chromco);
|
||||||
denmethod->set_active(4);
|
//denmethod->set_active(4);
|
||||||
mixmethod->set_active(2);
|
mixmethod->set_active(2);
|
||||||
slimethod->set_active(0);
|
slimethod->set_active(0);
|
||||||
levelsigm->setValue<double>(def_params.levelsigm);
|
levelsigm->setValue<double>(def_params.levelsigm);
|
||||||
@ -3310,7 +3310,7 @@ void Wavelet::updateGUIToMode(int mode)
|
|||||||
blurFrame->hide();
|
blurFrame->hide();
|
||||||
cbenab->hide();
|
cbenab->hide();
|
||||||
sigmafin->hide();
|
sigmafin->hide();
|
||||||
denHBox->hide();
|
//denHBox->hide();
|
||||||
mixHBox->hide();
|
mixHBox->hide();
|
||||||
sliHBox->hide();
|
sliHBox->hide();
|
||||||
sigm->hide();
|
sigm->hide();
|
||||||
@ -3338,7 +3338,7 @@ void Wavelet::updateGUIToMode(int mode)
|
|||||||
blurFrame->show();
|
blurFrame->show();
|
||||||
cbenab->show();
|
cbenab->show();
|
||||||
sigmafin->show();
|
sigmafin->show();
|
||||||
denHBox->hide();
|
//denHBox->hide();
|
||||||
mixHBox->show();
|
mixHBox->show();
|
||||||
sigm->hide();
|
sigm->hide();
|
||||||
levelsigm->show();
|
levelsigm->show();
|
||||||
@ -3357,7 +3357,7 @@ void Wavelet::updateGUIToMode(int mode)
|
|||||||
CurveEditorwavnoise->show();
|
CurveEditorwavnoise->show();
|
||||||
}
|
}
|
||||||
disableListener();
|
disableListener();
|
||||||
denmethod->set_active(4);
|
//denmethod->set_active(4);
|
||||||
enableListener();
|
enableListener();
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -3380,13 +3380,13 @@ void Wavelet::complexmethodChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Wavelet::denmethodChanged()
|
//void Wavelet::denmethodChanged()
|
||||||
{
|
//{
|
||||||
|
//
|
||||||
if (listener && (multiImage || getEnabled())) {
|
// if (listener && (multiImage || getEnabled())) {
|
||||||
listener->panelChanged(EvWavdenmethod, denmethod->get_active_text());
|
// listener->panelChanged(EvWavdenmethod, denmethod->get_active_text());
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
void Wavelet::mixmethodChanged()
|
void Wavelet::mixmethodChanged()
|
||||||
{
|
{
|
||||||
@ -3511,7 +3511,7 @@ void Wavelet::setBatchMode(bool batchMode)
|
|||||||
Backmethod->append(M("GENERAL_UNCHANGED"));
|
Backmethod->append(M("GENERAL_UNCHANGED"));
|
||||||
Tilesmethod->append(M("GENERAL_UNCHANGED"));
|
Tilesmethod->append(M("GENERAL_UNCHANGED"));
|
||||||
complexmethod->append(M("GENERAL_UNCHANGED"));
|
complexmethod->append(M("GENERAL_UNCHANGED"));
|
||||||
denmethod->append(M("GENERAL_UNCHANGED"));
|
//denmethod->append(M("GENERAL_UNCHANGED"));
|
||||||
mixmethod->append(M("GENERAL_UNCHANGED"));
|
mixmethod->append(M("GENERAL_UNCHANGED"));
|
||||||
slimethod->append(M("GENERAL_UNCHANGED"));
|
slimethod->append(M("GENERAL_UNCHANGED"));
|
||||||
quamethod->append(M("GENERAL_UNCHANGED"));
|
quamethod->append(M("GENERAL_UNCHANGED"));
|
||||||
@ -3528,7 +3528,7 @@ void Wavelet::setBatchMode(bool batchMode)
|
|||||||
Dirmethod->append(M("GENERAL_UNCHANGED"));
|
Dirmethod->append(M("GENERAL_UNCHANGED"));
|
||||||
CCWcurveEditorG->setBatchMode(batchMode);
|
CCWcurveEditorG->setBatchMode(batchMode);
|
||||||
opaCurveEditorG->setBatchMode(batchMode);
|
opaCurveEditorG->setBatchMode(batchMode);
|
||||||
curveEditorC->setBatchMode(batchMode);
|
//curveEditorC->setBatchMode(batchMode);
|
||||||
opacityCurveEditorG->setBatchMode(batchMode);
|
opacityCurveEditorG->setBatchMode(batchMode);
|
||||||
CurveEditorwavnoise->setBatchMode(batchMode);
|
CurveEditorwavnoise->setBatchMode(batchMode);
|
||||||
CurveEditorwavnoiseh->setBatchMode(batchMode);
|
CurveEditorwavnoiseh->setBatchMode(batchMode);
|
||||||
|
@ -139,7 +139,7 @@ private:
|
|||||||
void MedgreinfChanged();
|
void MedgreinfChanged();
|
||||||
void TMmethodChanged();
|
void TMmethodChanged();
|
||||||
void complexmethodChanged();
|
void complexmethodChanged();
|
||||||
void denmethodChanged();
|
//void denmethodChanged();
|
||||||
void mixmethodChanged();
|
void mixmethodChanged();
|
||||||
void quamethodChanged();
|
void quamethodChanged();
|
||||||
void slimethodChanged();
|
void slimethodChanged();
|
||||||
@ -190,8 +190,8 @@ private:
|
|||||||
void enableToggled(MyExpander* expander);
|
void enableToggled(MyExpander* expander);
|
||||||
|
|
||||||
CurveEditorGroup* const curveEditorG;
|
CurveEditorGroup* const curveEditorG;
|
||||||
CurveEditorGroup* const curveEditorC;
|
//CurveEditorGroup* const curveEditorC;
|
||||||
FlatCurveEditor* opacityShapeSH;
|
//FlatCurveEditor* opacityShapeSH;
|
||||||
|
|
||||||
CurveEditorGroup* const CCWcurveEditorG;
|
CurveEditorGroup* const CCWcurveEditorG;
|
||||||
CurveEditorGroup* const curveEditorbl;
|
CurveEditorGroup* const curveEditorbl;
|
||||||
@ -349,8 +349,8 @@ private:
|
|||||||
sigc::connection MedgreinfConn;
|
sigc::connection MedgreinfConn;
|
||||||
MyComboBoxText* const ushamethod;
|
MyComboBoxText* const ushamethod;
|
||||||
sigc::connection ushamethodconn;
|
sigc::connection ushamethodconn;
|
||||||
MyComboBoxText* const denmethod;
|
//MyComboBoxText* const denmethod;
|
||||||
sigc::connection denmethodconn;
|
//sigc::connection denmethodconn;
|
||||||
MyComboBoxText* const mixmethod;
|
MyComboBoxText* const mixmethod;
|
||||||
sigc::connection mixmethodconn;
|
sigc::connection mixmethodconn;
|
||||||
MyComboBoxText* const quamethod;
|
MyComboBoxText* const quamethod;
|
||||||
@ -392,7 +392,7 @@ private:
|
|||||||
Gtk::Box* const ctboxch;
|
Gtk::Box* const ctboxch;
|
||||||
Gtk::Box* const quaHBox;
|
Gtk::Box* const quaHBox;
|
||||||
Gtk::Box* const sliHBox;
|
Gtk::Box* const sliHBox;
|
||||||
Gtk::Box* const denHBox;
|
//Gtk::Box* const denHBox;
|
||||||
Gtk::Box* const mixHBox;
|
Gtk::Box* const mixHBox;
|
||||||
Gtk::Box* const ctboxBA;// = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL));
|
Gtk::Box* const ctboxBA;// = Gtk::manage(new Gtk::Box(Gtk::ORIENTATION_VERTICAL));
|
||||||
|
|
||||||
|
46
tools/findorphans.py
Executable file
46
tools/findorphans.py
Executable file
@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import clang.cindex
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
|
index = clang.cindex.Index.create()
|
||||||
|
procevents = index.parse('rtengine/procevents.h',args=['-x', 'c++'])
|
||||||
|
|
||||||
|
if(1):
|
||||||
|
for chld in procevents.cursor.get_children():
|
||||||
|
if(chld.displayname == 'rtengine'):
|
||||||
|
for c in chld.get_children():
|
||||||
|
if(c.displayname == 'ProcEventCode'):
|
||||||
|
for pec in c.get_children():
|
||||||
|
#print(pec.kind, pec.displayname, pec.enum_value)
|
||||||
|
#print(pec.displayname, file=sys.stderr)
|
||||||
|
grp1 = subprocess.Popen(('grep', '-ro', '--exclude=procevents.h', '--exclude-dir=.git', pec.displayname), stdout=subprocess.PIPE)
|
||||||
|
wcr1 = subprocess.check_output(('wc', '-l'), stdin=grp1.stdout)
|
||||||
|
grp1.wait()
|
||||||
|
grp2 = subprocess.Popen(('grep', '-ro', '--exclude=procevents.h', '--exclude=refreshmap.cc', '--exclude-dir=.git', pec.displayname), stdout=subprocess.PIPE)
|
||||||
|
wcr2 = subprocess.check_output(('wc', '-l'), stdin=grp2.stdout)
|
||||||
|
grp2.wait()
|
||||||
|
print(pec.enum_value, pec.displayname,int(wcr1), int(wcr2))
|
||||||
|
|
||||||
|
with open('rtdata/languages/default', 'r') as deflang:
|
||||||
|
for line in deflang:
|
||||||
|
if(line[0] == '#'):
|
||||||
|
continue
|
||||||
|
if(line[0:2] == '//'):
|
||||||
|
continue
|
||||||
|
if(line[0:2] == '/*'):
|
||||||
|
#our language files support comment blocks?????????????????????????????
|
||||||
|
#or is this commented block bogus?
|
||||||
|
continue
|
||||||
|
if(line[0:2] == '*/'):
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
stringid = line.split(';')[0]
|
||||||
|
if(stringid.startswith('HISTORY_MSG')):
|
||||||
|
continue
|
||||||
|
#print(stringid, file=sys.stderr)
|
||||||
|
grp1 = subprocess.Popen(('grep', '-ro', '--exclude-dir=languages', '--exclude-dir=.git', stringid), stdout=subprocess.PIPE)
|
||||||
|
wcr1 = subprocess.check_output(('wc', '-l'), stdin=grp1.stdout)
|
||||||
|
grp1.wait()
|
||||||
|
print(stringid, int(wcr1))
|
@ -3,10 +3,14 @@
|
|||||||
<dict>
|
<dict>
|
||||||
<key>LSEnvironment</key>
|
<key>LSEnvironment</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>XDG_DATA_DIRS</key>
|
<key>XDG_CONFIG_DIRS</key>
|
||||||
|
<string>/Applications/RawTherapee.app/Contents/Resources/share/gtk-3.0</string>
|
||||||
|
<key>XDG_CONFIG_HOME</key>
|
||||||
<string>/Applications/RawTherapee.app/Contents/Resources/share</string>
|
<string>/Applications/RawTherapee.app/Contents/Resources/share</string>
|
||||||
|
<key>XDG_DATA_DIRS</key>
|
||||||
|
<string>/Applications/RawTherapee.app/Contents/Resources/share/gtk-3.0</string>
|
||||||
<key>GTK_PATH</key>
|
<key>GTK_PATH</key>
|
||||||
<string>/Applications/RawTherapee.app/Contents/Frameworks</string>
|
<string>/Applications/RawTherapee.app/Contents/Resources/share/gtk-3.0</string>
|
||||||
<key>GTK_IM_MODULE_FILE</key>
|
<key>GTK_IM_MODULE_FILE</key>
|
||||||
<string>/Applications/RawTherapee.app/Contents/Resources/etc/gtk-3.0/gtk.immodules</string>
|
<string>/Applications/RawTherapee.app/Contents/Resources/etc/gtk-3.0/gtk.immodules</string>
|
||||||
<key>XDG_DATA_HOME</key>
|
<key>XDG_DATA_HOME</key>
|
||||||
@ -28,8 +32,13 @@
|
|||||||
</dict>
|
</dict>
|
||||||
<key>LSMultipleInstancesProhibited</key>
|
<key>LSMultipleInstancesProhibited</key>
|
||||||
<true />
|
<true />
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersionByArchitecture</key>
|
||||||
<string>@minimum_macos_version@</string>
|
<dict>
|
||||||
|
<key>arm64</key>
|
||||||
|
<string>@minimum_arm64_version@</string>
|
||||||
|
<key>x86_64</key>
|
||||||
|
<string>@minimum_x86_64_version@</string>
|
||||||
|
</dict>
|
||||||
<key>CFBundleAllowMixedLocalizations</key>
|
<key>CFBundleAllowMixedLocalizations</key>
|
||||||
<true />
|
<true />
|
||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
@ -156,9 +165,10 @@
|
|||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>@shortVersion@</string>
|
<string>@shortVersion@</string>
|
||||||
<key>LSExecutableArchitectures</key>
|
<key>LSArchitecturePriority</key>
|
||||||
<array>
|
<array>
|
||||||
<string>@arch@</string>
|
<string>arm64</string>
|
||||||
|
<string>x86_64</string>
|
||||||
</array>
|
</array>
|
||||||
<key>NSHighResolutionCapable</key>
|
<key>NSHighResolutionCapable</key>
|
||||||
<true />
|
<true />
|
||||||
|
@ -24,7 +24,7 @@ function msgError {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function GetDependencies {
|
function GetDependencies {
|
||||||
otool -L "$1" | awk 'NR >= 2 && $1 !~ /^(\/usr\/lib|\/System|@executable_path|@rpath)\// { print $1 }'
|
otool -L "$1" | awk 'NR >= 2 && $1 !~ /^(\/usr\/lib|\/System|@executable_path|@rpath)\// { print $1 }' 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
function CheckLink {
|
function CheckLink {
|
||||||
@ -40,11 +40,11 @@ function ModifyInstallNames {
|
|||||||
{
|
{
|
||||||
# id
|
# id
|
||||||
if [[ ${x:(-6)} == ".dylib" ]] || [[ f${x:(-3)} == ".so" ]]; then
|
if [[ ${x:(-6)} == ".dylib" ]] || [[ f${x:(-3)} == ".so" ]]; then
|
||||||
install_name_tool -id /Applications/"${LIB}"/$(basename ${x}) ${x}
|
install_name_tool -id /Applications/"${LIB}"/$(basename ${x}) ${x} 2>/dev/null
|
||||||
fi
|
fi
|
||||||
GetDependencies "${x}" | while read -r y
|
GetDependencies "${x}" | while read -r y
|
||||||
do
|
do
|
||||||
install_name_tool -change ${y} /Applications/"${LIB}"/$(basename ${y}) ${x}
|
install_name_tool -change ${y} /Applications/"${LIB}"/$(basename ${y}) ${x} 2>/dev/null
|
||||||
done
|
done
|
||||||
} | bash -v
|
} | bash -v
|
||||||
done
|
done
|
||||||
@ -120,6 +120,13 @@ minimum_macos_version=${MINIMUM_SYSTEM_VERSION}
|
|||||||
#Out: /opt
|
#Out: /opt
|
||||||
LOCAL_PREFIX="$(cmake .. -L -N | grep LOCAL_PREFIX)"; LOCAL_PREFIX="${LOCAL_PREFIX#*=}"
|
LOCAL_PREFIX="$(cmake .. -L -N | grep LOCAL_PREFIX)"; LOCAL_PREFIX="${LOCAL_PREFIX#*=}"
|
||||||
|
|
||||||
|
#In: OSX_UNIVERSAL_URL=https:// etc.
|
||||||
|
#Out: https:// etc.
|
||||||
|
UNIVERSAL_URL="$(cmake .. -L -N | grep OSX_UNIVERSAL_URL)"; UNIVERSAL_URL="${UNIVERSAL_URL#*=}"
|
||||||
|
if [[ -n $UNIVERSAL_URL ]]; then
|
||||||
|
echo "Univeral app is ON. The URL is ${UNIVERSAL_URL}"
|
||||||
|
fi
|
||||||
|
|
||||||
#In: pkgcfg_lib_EXPAT_expat:FILEPATH=/opt/local/lib/libexpat.dylib
|
#In: pkgcfg_lib_EXPAT_expat:FILEPATH=/opt/local/lib/libexpat.dylib
|
||||||
#Out: /opt/local/lib/libexpat.dylib
|
#Out: /opt/local/lib/libexpat.dylib
|
||||||
EXPATLIB="$(cmake .. -LA -N | grep pkgcfg_lib_EXPAT_expat)"; pkgcfg_lib_EXPAT_expat="${pkgcfg_lib_EXPAT_expat#*=}"
|
EXPATLIB="$(cmake .. -LA -N | grep pkgcfg_lib_EXPAT_expat)"; pkgcfg_lib_EXPAT_expat="${pkgcfg_lib_EXPAT_expat#*=}"
|
||||||
@ -139,6 +146,13 @@ if [[ -n $FANCY_DMG ]]; then
|
|||||||
echo "Fancy .dmg build is ON."
|
echo "Fancy .dmg build is ON."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# In: OSX_NIGHTLY:BOOL=ON
|
||||||
|
# Out: ON
|
||||||
|
OSX_NIGHTLY="$(cmake .. -L -N | grep OSX_NIGHTLY)"; NIGHTLY="${OSX_NIGHTLY#*=}"
|
||||||
|
if [[ -n $NIGHTLY ]]; then
|
||||||
|
echo "Nightly/generically-named zip is ON."
|
||||||
|
fi
|
||||||
|
|
||||||
APP="${PROJECT_NAME}.app"
|
APP="${PROJECT_NAME}.app"
|
||||||
CONTENTS="${APP}/Contents"
|
CONTENTS="${APP}/Contents"
|
||||||
RESOURCES="${CONTENTS}/Resources"
|
RESOURCES="${CONTENTS}/Resources"
|
||||||
@ -149,7 +163,7 @@ EXECUTABLE="${MACOS}/rawtherapee"
|
|||||||
GDK_PREFIX="${LOCAL_PREFIX}/"
|
GDK_PREFIX="${LOCAL_PREFIX}/"
|
||||||
|
|
||||||
msg "Removing old files:"
|
msg "Removing old files:"
|
||||||
rm -rf "${APP}" *.dmg *.zip
|
rm -rf "${APP}" *.dmg *.zip *.app
|
||||||
|
|
||||||
msg "Creating bundle container:"
|
msg "Creating bundle container:"
|
||||||
install -d "${RESOURCES}"
|
install -d "${RESOURCES}"
|
||||||
@ -188,10 +202,10 @@ ditto ${LOCAL_PREFIX}/lib/liblensfun.2.dylib "${CONTENTS}/Frameworks/liblensfun.
|
|||||||
ditto ${LOCAL_PREFIX}/lib/libomp.dylib "${CONTENTS}/Frameworks"
|
ditto ${LOCAL_PREFIX}/lib/libomp.dylib "${CONTENTS}/Frameworks"
|
||||||
|
|
||||||
msg "Copying dependencies from ${GTK_PREFIX}."
|
msg "Copying dependencies from ${GTK_PREFIX}."
|
||||||
CheckLink "${EXECUTABLE}"
|
CheckLink "${EXECUTABLE}" 2>&1
|
||||||
|
|
||||||
# dylib install names
|
# dylib install names
|
||||||
ModifyInstallNames
|
ModifyInstallNames 2>&1
|
||||||
|
|
||||||
# Copy libjpeg-turbo ("62") into the app bundle
|
# Copy libjpeg-turbo ("62") into the app bundle
|
||||||
ditto ${LOCAL_PREFIX}/lib/libjpeg.62.dylib "${CONTENTS}/Frameworks/libjpeg.62.dylib"
|
ditto ${LOCAL_PREFIX}/lib/libjpeg.62.dylib "${CONTENTS}/Frameworks/libjpeg.62.dylib"
|
||||||
@ -246,20 +260,22 @@ cp -RL "${LOCAL_PREFIX}/share/icons/hicolor" "${RESOURCES}/share/icons/hicolor"
|
|||||||
|
|
||||||
# fix libfreetype install name
|
# fix libfreetype install name
|
||||||
for lib in "${LIB}"/*; do
|
for lib in "${LIB}"/*; do
|
||||||
install_name_tool -change libfreetype.6.dylib "${LIB}"/libfreetype.6.dylib "${lib}"
|
install_name_tool -change libfreetype.6.dylib "${LIB}"/libfreetype.6.dylib "${lib}" 2>/dev/null
|
||||||
done
|
done
|
||||||
|
|
||||||
# Build GTK3 pixbuf loaders & immodules database
|
# Build GTK3 pixbuf loaders & immodules database
|
||||||
msg "Build GTK3 databases:"
|
msg "Build GTK3 databases:"
|
||||||
|
mkdir -p "${RESOURCES}"/share/gtk-3.0
|
||||||
|
mkdir -p "${ETC}"/gtk-3.0
|
||||||
"${LOCAL_PREFIX}"/bin/gdk-pixbuf-query-loaders "${LIB}"/libpixbufloader-*.so > "${ETC}"/gtk-3.0/gdk-pixbuf.loaders
|
"${LOCAL_PREFIX}"/bin/gdk-pixbuf-query-loaders "${LIB}"/libpixbufloader-*.so > "${ETC}"/gtk-3.0/gdk-pixbuf.loaders
|
||||||
"${LOCAL_PREFIX}"/bin/gtk-query-immodules-3.0 "${LIB}"/im-* > "${ETC}"/gtk-3.0/gtk.immodules || "${LOCAL_PREFIX}"/bin/gtk-query-immodules "${LIB}"/im-* > "${ETC}"/gtk-3.0/gtk.immodules
|
"${LOCAL_PREFIX}"/bin/gtk-query-immodules-3.0 "${LIB}"/im-* > "${ETC}"/gtk-3.0/gtk.immodules || "${LOCAL_PREFIX}"/bin/gtk-query-immodules "${LIB}"/im-* > "${ETC}"/gtk-3.0/gtk.immodules
|
||||||
sed -i.bak -e "s|${PWD}/RawTherapee.app/Contents/|/Applications/RawTherapee.app/Contents/|" "${ETC}"/gtk-3.0/gdk-pixbuf.loaders "${ETC}/gtk-3.0/gtk.immodules"
|
sed -i.bak -e "s|${PWD}/RawTherapee.app/Contents/|/Applications/RawTherapee.app/Contents/|" "${ETC}"/gtk-3.0/gdk-pixbuf.loaders "${ETC}/gtk-3.0/gtk.immodules"
|
||||||
sed -i.bak -e "s|${LOCAL_PREFIX}/share/|/Applications/RawTherapee.app/Contents/Resources/share/|" "${ETC}"/gtk-3.0/gtk.immodules
|
sed -i.bak -e "s|${LOCAL_PREFIX}/share/|/Applications/RawTherapee.app/Contents/Resources/share/|" "${ETC}"/gtk-3.0/gtk.immodules
|
||||||
sed -i.bak -e "s|${LOCAL_PREFIX}/|/Applications/RawTherapee.app/Contents/Frameworks/|" "${ETC}"/gtk-3.0/gtk.immodules
|
sed -i.bak -e "s|${LOCAL_PREFIX}/|/Applications/RawTherapee.app/Contents/Frameworks/|" "${ETC}"/gtk-3.0/gtk.immodules
|
||||||
rm "${ETC}"/*.bak
|
rm "${ETC}"/*/*.bak
|
||||||
|
|
||||||
# Install names
|
# Install names
|
||||||
ModifyInstallNames
|
ModifyInstallNames 2>/dev/null
|
||||||
|
|
||||||
# Mime directory
|
# Mime directory
|
||||||
msg "Copying shared files from ${GTK_PREFIX}:"
|
msg "Copying shared files from ${GTK_PREFIX}:"
|
||||||
@ -271,8 +287,8 @@ ditto "${PROJECT_SOURCE_DIR}/rtdata/fonts" "${ETC}/fonts"
|
|||||||
|
|
||||||
# App bundle resources
|
# App bundle resources
|
||||||
ditto "${PROJECT_SOURCE_DATA_DIR}/"{rawtherapee,profile}.icns "${RESOURCES}"
|
ditto "${PROJECT_SOURCE_DATA_DIR}/"{rawtherapee,profile}.icns "${RESOURCES}"
|
||||||
ditto "${PROJECT_SOURCE_DATA_DIR}/PkgInfo" "${CONTENTS}"
|
#ditto "${PROJECT_SOURCE_DATA_DIR}/PkgInfo" "${CONTENTS}"
|
||||||
cmake -DPROJECT_SOURCE_DATA_DIR=${PROJECT_SOURCE_DATA_DIR} -DCONTENTS=${CONTENTS} -Dversion=${PROJECT_FULL_VERSION} -DshortVersion=${PROJECT_VERSION} -Darch=${arch} -P "${PROJECT_SOURCE_DATA_DIR}/info-plist.cmake"
|
|
||||||
update-mime-database -V "${RESOURCES}/share/mime"
|
update-mime-database -V "${RESOURCES}/share/mime"
|
||||||
cp -RL "${LOCAL_PREFIX}/share/locale" "${RESOURCES}/share/locale"
|
cp -RL "${LOCAL_PREFIX}/share/locale" "${RESOURCES}/share/locale"
|
||||||
|
|
||||||
@ -283,20 +299,61 @@ cp -LR {"${LOCAL_PREFIX}","${RESOURCES}"}/share/glib-2.0/schemas
|
|||||||
|
|
||||||
# Append an LC_RPATH
|
# Append an LC_RPATH
|
||||||
msg "Registering @rpath into the main executable."
|
msg "Registering @rpath into the main executable."
|
||||||
install_name_tool -add_rpath /Applications/"${LIB}" "${EXECUTABLE}"
|
install_name_tool -add_rpath /Applications/"${LIB}" "${EXECUTABLE}" 2>/dev/null
|
||||||
|
|
||||||
ModifyInstallNames
|
ModifyInstallNames 2>/dev/null
|
||||||
|
|
||||||
# fix @rpath in Frameworks
|
# fix @rpath in Frameworks
|
||||||
msg "Registering @rpath in Frameworks folder."
|
msg "Registering @rpath in Frameworks folder."
|
||||||
for frameworklibs in "${LIB}"/*{dylib,so,cli}; do
|
for frameworklibs in "${LIB}"/*{dylib,so,cli}; do
|
||||||
install_name_tool -delete_rpath ${LOCAL_PREFIX}/lib "${frameworklibs}"
|
install_name_tool -delete_rpath ${LOCAL_PREFIX}/lib "${frameworklibs}" 2>/dev/null
|
||||||
install_name_tool -add_rpath /Applications/"${LIB}" "${frameworklibs}"
|
install_name_tool -add_rpath /Applications/"${LIB}" "${frameworklibs}" 2>/dev/null
|
||||||
done
|
done
|
||||||
install_name_tool -delete_rpath RawTherapee.app/Contents/Frameworks "${EXECUTABLE}"-cli
|
install_name_tool -delete_rpath RawTherapee.app/Contents/Frameworks "${EXECUTABLE}"-cli 2>/dev/null
|
||||||
install_name_tool -add_rpath /Applications/"${LIB}" "${EXECUTABLE}"-cli
|
install_name_tool -add_rpath /Applications/"${LIB}" "${EXECUTABLE}"-cli 2>/dev/null
|
||||||
ditto "${EXECUTABLE}"-cli "${APP}"/..
|
ditto "${EXECUTABLE}"-cli "${APP}"/..
|
||||||
|
|
||||||
|
# Merge the app with the other archictecture to create the Universal app.
|
||||||
|
if [[ -n $UNIVERSAL_URL ]]; then
|
||||||
|
msg "Getting Universal countercomponent."
|
||||||
|
curl -L ${UNIVERSAL_URL} -o univ.zip
|
||||||
|
msg "Extracting app."
|
||||||
|
unzip univ.zip -d univapp
|
||||||
|
hdiutil attach -mountpoint ./RawTherapeeuniv univapp/*/*dmg
|
||||||
|
if [[ $arch = "arm64" ]]; then
|
||||||
|
cp -R RawTherapee.app RawTherapee-arm64.app
|
||||||
|
minimum_arm64_version=$(f=$(cat RawTherapee-arm64.app/Contents/Resources/AboutThisBuild.txt | grep mmacosx-version); echo "${f#*min=}" | cut -d ' ' -f1)
|
||||||
|
cp -R RawTherapeeuniv/RawTherapee.app RawTherapee-x86_64.app
|
||||||
|
minimum_x86_64_version=$(f=$(cat RawTherapee-x86_64.app/Contents/Resources/AboutThisBuild.txt | grep mmacosx-version); echo "${f#*min=}" | cut -d ' ' -f1)
|
||||||
|
echo "\n\n=====================================\n\n" >> RawTherapee.app/Contents/Resources/AboutThisBuild.txt
|
||||||
|
cat RawTherapee-x86_64.app/Contents/Resources/AboutThisBuild.txt >> RawTherapee.app/Contents/Resources/AboutThisBuild.txt
|
||||||
|
else
|
||||||
|
cp -R RawTherapee.app RawTherapee-x86_64.app
|
||||||
|
minimum_x86_64_version=$(f=$(cat RawTherapee-x86_64.app/Contents/Resources/AboutThisBuild.txt | grep mmacosx-version); echo "${f#*min=}" | cut -d ' ' -f1)
|
||||||
|
cp -R RawTherapeeuniv/RawTherapee.app RawTherapee-arm64.app
|
||||||
|
minimum_arm64_version=$(f=$(cat RawTherapee-arm64.app/Contents/Resources/AboutThisBuild.txt | grep mmacosx-version); echo "${f#*min=}" | cut -d ' ' -f1)
|
||||||
|
echo "\n\n=====================================\n\n" >> RawTherapee.app/Contents/Resources/AboutThisBuild.txt
|
||||||
|
cat RawTherapee-arm64.app/Contents/Resources/AboutThisBuild.txt >> RawTherapee.app/Contents/Resources/AboutThisBuild.txt
|
||||||
|
fi
|
||||||
|
cmake -DPROJECT_SOURCE_DATA_DIR=${PROJECT_SOURCE_DATA_DIR} -DCONTENTS=${CONTENTS} -Dversion=${PROJECT_FULL_VERSION} -DshortVersion=${PROJECT_VERSION} -Dminimum_arm64_version=${minimum_arm64_version} -Dminimum_x86_64_version=${minimum_x86_64_version} -Darch=${arch} -P ${PROJECT_SOURCE_DATA_DIR}/info-plist.cmake
|
||||||
|
hdiutil unmount ./RawTherapeeuniv
|
||||||
|
rm -r univapp
|
||||||
|
# Create the fat main RawTherapee binary and move it into the new bundle
|
||||||
|
lipo -create -output RawTherapee RawTherapee-arm64.app/Contents/MacOS/RawTherapee RawTherapee-x86_64.app/Contents/MacOS/RawTherapee
|
||||||
|
mv RawTherapee RawTherapee.app/Contents/MacOS
|
||||||
|
# Create all the fat dependencies and move them into the bundle
|
||||||
|
for lib in RawTherapee-arm64.app/Contents/Frameworks/* ; do
|
||||||
|
lipo -create -output $(basename $lib) RawTherapee-arm64.app/Contents/Frameworks/$(basename $lib) RawTherapee-x86_64.app/Contents/Frameworks/$(basename $lib)
|
||||||
|
done
|
||||||
|
sudo mv *cli *so *dylib RawTherapee.app/Contents/Frameworks
|
||||||
|
rm -r RawTherapee-arm64.app
|
||||||
|
rm -r RawTherapee-x86_64.app
|
||||||
|
else
|
||||||
|
minimum_arm64_version=$(f=$(cat RawTherapee.app/Contents/Resources/AboutThisBuild.txt | grep mmacosx-version); echo "${f#*min=}" | cut -d ' ' -f1)
|
||||||
|
minimum_x86_64_version=${minimum_arm64_version}
|
||||||
|
cmake -DPROJECT_SOURCE_DATA_DIR=${PROJECT_SOURCE_DATA_DIR} -DCONTENTS=${CONTENTS} -Dversion=${PROJECT_FULL_VERSION} -DshortVersion=${PROJECT_VERSION} -Dminimum_arm64_version=${minimum_arm64_version} -Dminimum_x86_64_version=${minimum_x86_64_version} -Darch=${arch} -P ${PROJECT_SOURCE_DATA_DIR}/info-plist.cmake
|
||||||
|
fi
|
||||||
|
|
||||||
# Codesign the app
|
# Codesign the app
|
||||||
if [[ -n $CODESIGNID ]]; then
|
if [[ -n $CODESIGNID ]]; then
|
||||||
msg "Codesigning Application."
|
msg "Codesigning Application."
|
||||||
@ -339,7 +396,7 @@ function CreateDmg {
|
|||||||
|
|
||||||
msg "Preparing disk image sources at ${srcDir}:"
|
msg "Preparing disk image sources at ${srcDir}:"
|
||||||
cp -R "${APP}" "${srcDir}"
|
cp -R "${APP}" "${srcDir}"
|
||||||
cp "${RESOURCES}"/LICENSE.txt "${srcDir}"
|
cp "${RESOURCES}"/LICENSE "${srcDir}"
|
||||||
ln -s /Applications "${srcDir}"
|
ln -s /Applications "${srcDir}"
|
||||||
|
|
||||||
# Web bookmarks
|
# Web bookmarks
|
||||||
@ -353,6 +410,9 @@ function CreateDmg {
|
|||||||
CreateWebloc 'Report Bug' 'https://github.com/Beep6581/RawTherapee/issues/new'
|
CreateWebloc 'Report Bug' 'https://github.com/Beep6581/RawTherapee/issues/new'
|
||||||
|
|
||||||
# Disk image name
|
# Disk image name
|
||||||
|
if [[ -n $UNIVERSAL_URL ]]; then
|
||||||
|
arch="Universal"
|
||||||
|
fi
|
||||||
dmg_name="${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}"
|
dmg_name="${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}"
|
||||||
lower_build_type="$(tr '[:upper:]' '[:lower:]' <<< "$CMAKE_BUILD_TYPE")"
|
lower_build_type="$(tr '[:upper:]' '[:lower:]' <<< "$CMAKE_BUILD_TYPE")"
|
||||||
if [[ $lower_build_type != release ]]; then
|
if [[ $lower_build_type != release ]]; then
|
||||||
@ -368,6 +428,7 @@ function CreateDmg {
|
|||||||
SetFile -c incC "${srcDir}/.VolumeIcon.icns"
|
SetFile -c incC "${srcDir}/.VolumeIcon.icns"
|
||||||
create-dmg "${dmg_name}.dmg" "${srcDir}" \
|
create-dmg "${dmg_name}.dmg" "${srcDir}" \
|
||||||
--volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" \
|
--volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" \
|
||||||
|
--appname "${PROJECT_NAME}" \
|
||||||
--volicon "${srcDir}/.VolumeIcon.icns" \
|
--volicon "${srcDir}/.VolumeIcon.icns" \
|
||||||
--sandbox-safe \
|
--sandbox-safe \
|
||||||
--no-internet-enable \
|
--no-internet-enable \
|
||||||
@ -389,8 +450,8 @@ function CreateDmg {
|
|||||||
msg "Notarizing the dmg:"
|
msg "Notarizing the dmg:"
|
||||||
zip "${dmg_name}.dmg.zip" "${dmg_name}.dmg"
|
zip "${dmg_name}.dmg.zip" "${dmg_name}.dmg"
|
||||||
echo "Uploading..."
|
echo "Uploading..."
|
||||||
uuid=`xcrun altool --notarize-app --primary-bundle-id "com.rawtherapee" ${NOTARY} --file "${dmg_name}.dmg.zip" 2>&1 | grep 'RequestUUID' | awk '{ print $3 }'`
|
uuid=$(xcrun altool --notarize-app --primary-bundle-id "com.rawtherapee" ${NOTARY} --file "${dmg_name}.dmg.zip" 2>&1 | grep 'RequestUUID' | awk '{ print $3 }')
|
||||||
echo "dmg Result= $uuid" # Display identifier string
|
echo "dmg Result= ${uuid}" # Display identifier string
|
||||||
sleep 15
|
sleep 15
|
||||||
while :
|
while :
|
||||||
do
|
do
|
||||||
@ -416,8 +477,11 @@ function CreateDmg {
|
|||||||
# Zip disk image for redistribution
|
# Zip disk image for redistribution
|
||||||
msg "Zipping disk image for redistribution:"
|
msg "Zipping disk image for redistribution:"
|
||||||
mkdir "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder"
|
mkdir "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder"
|
||||||
ditto {"${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.dmg","rawtherapee-cli","${PROJECT_SOURCE_DATA_DIR}/INSTALL.readme.rtf"} "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder"
|
ditto {"${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.dmg","rawtherapee-cli","${PROJECT_SOURCE_DATA_DIR}/INSTALL.txt"} "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder"
|
||||||
zip -r "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.zip" "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder/"
|
zip -r "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.zip" "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}_folder/"
|
||||||
|
if [[ -n $NIGHTLY ]]; then
|
||||||
|
cp "${PROJECT_NAME}_macOS_${MINIMUM_SYSTEM_VERSION}_${arch}_${PROJECT_FULL_VERSION}.zip" "${PROJECT_NAME}_macOS_${arch}_latest.zip"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
CreateDmg
|
CreateDmg
|
||||||
msg "Finishing build:"
|
msg "Finishing build:"
|
||||||
|
@ -47,7 +47,7 @@ AppUpdatesURL={#MyAppURL}
|
|||||||
DefaultDirName={pf}\{#MyAppName}\{#MyAppVersion}
|
DefaultDirName={pf}\{#MyAppName}\{#MyAppVersion}
|
||||||
DefaultGroupName={#MyAppName}
|
DefaultGroupName={#MyAppName}
|
||||||
AllowNoIcons=yes
|
AllowNoIcons=yes
|
||||||
LicenseFile={#MyBuildBasePath}\LICENSE.txt
|
LicenseFile={#MyBuildBasePath}\LICENSE
|
||||||
OutputDir={#MyBuildBasePath}\..\
|
OutputDir={#MyBuildBasePath}\..\
|
||||||
OutputBaseFilename={#MyAppName}_{#MyAppVersion}_{#MySystemName}_{#MyBitDepth}
|
OutputBaseFilename={#MyAppName}_{#MyAppVersion}_{#MySystemName}_{#MyBitDepth}
|
||||||
SetupIconFile={#MySourceBasePath}\rtdata\images\rawtherapee.ico
|
SetupIconFile={#MySourceBasePath}\rtdata\images\rawtherapee.ico
|
||||||
@ -112,7 +112,7 @@ Source: "{#MyBuildBasePath}\sounds\*"; DestDir: "{app}\sounds\"; Flags: ignoreve
|
|||||||
Source: "{#MyBuildBasePath}\themes\*"; DestDir: "{app}\themes\"; Flags: ignoreversion recursesubdirs createallsubdirs
|
Source: "{#MyBuildBasePath}\themes\*"; DestDir: "{app}\themes\"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||||
Source: "{#MyBuildBasePath}\AboutThisBuild.txt"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "{#MyBuildBasePath}\AboutThisBuild.txt"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "{#MyBuildBasePath}\AUTHORS.txt"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "{#MyBuildBasePath}\AUTHORS.txt"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "{#MyBuildBasePath}\LICENSE.txt"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "{#MyBuildBasePath}\LICENSE"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "{#MyBuildBasePath}\RELEASE_NOTES.txt"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "{#MyBuildBasePath}\RELEASE_NOTES.txt"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "{#MyBuildBasePath}\options"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "{#MyBuildBasePath}\options"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "{#MyBuildBasePath}\*.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "{#MyBuildBasePath}\*.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
|
Loading…
x
Reference in New Issue
Block a user