From 163c3aba0a69ed70e7e980c2fda560b4b87ec9e7 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 10 Sep 2018 19:10:46 +0200 Subject: [PATCH 01/52] Add Single User/Multi User switch to Windows setup. --- tools/win/InnoSetup/WindowsInnoSetup.iss.in | 30 +++++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/tools/win/InnoSetup/WindowsInnoSetup.iss.in b/tools/win/InnoSetup/WindowsInnoSetup.iss.in index 11601a53d..6b9572ace 100644 --- a/tools/win/InnoSetup/WindowsInnoSetup.iss.in +++ b/tools/win/InnoSetup/WindowsInnoSetup.iss.in @@ -24,6 +24,7 @@ #define MyAppPublisher "rawtherapee.com" #define MyAppURL "http://www.rawtherapee.com/" #define MyAppExeName "rawtherapee.exe" +#define MyAppCliExeName "rawtherapee-cli.exe" #define MyBuildBasePath "${CMAKE_INSTALL_PREFIX}" #define MySourceBasePath "${PROJECT_SOURCE_DIR}" #define MyBitDepth "${BUILD_BIT_DEPTH}" @@ -85,6 +86,8 @@ Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl" Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl" [Tasks] +Name: "userinstall"; Description: "Only me (Single User Install)"; GroupDescription: "Install RawTherapee for:"; Flags: exclusive unchecked +Name: "commoninstall"; Description: "Anyone who uses this computer (Multi-User Install)"; GroupDescription: "Install RawTherapee for:"; Flags: exclusive; Check: IsElevatedUser Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked ;Name: "desktopicon\common"; Description: "For all users"; GroupDescription: "Additional icons:"; Flags: exclusive ;Name: "desktopicon\user"; Description: "For the current user only"; GroupDescription: "Additional icons:"; Flags: exclusive unchecked @@ -122,14 +125,31 @@ Source: "{#MyBuildBasePath}\fonts\DroidSansMonoSlashed.ttf"; DestDir: "{fonts}"; Name: "{group}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}" Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}" Name: "{group}\{cm:UninstallProgram,{#MyAppName} {#MyAppVersion}}"; Filename: "{uninstallexe}" -Name: "{commondesktop}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon +Name: "{commondesktop}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon commoninstall +Name: "{userdesktop}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon userinstall Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon [Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent [Registry] -Root: HKCU; Subkey: "SOFTWARE\Classes\Directory\shell\Browse with RawTherapee"; ValueType: string; ValueData: "Browse with RawTherapee"; Flags: uninsdeletekey; Tasks: regBrowseFolder -Root: HKCU; Subkey: "SOFTWARE\Classes\Directory\shell\Browse with RawTherapee\command"; ValueType: string; ValueData: "{app}\{#MyAppExeName} -w ""%1"""; Flags: uninsdeletekey; Tasks: regBrowseFolder -Root: HKCU; Subkey: "SOFTWARE\Classes\*\shell\Open with RawTherapee"; ValueType: string; ValueData: "Open with RawTherapee"; Flags: uninsdeletekey; Tasks: regOpenFile -Root: HKCU; Subkey: "SOFTWARE\Classes\*\shell\Open with RawTherapee\command"; ValueType: string; ValueData: "{app}\{#MyAppExeName} -R ""%1"""; Flags: uninsdeletekey; Tasks: regOpenFile +Root: HKCU; Subkey: "SOFTWARE\Classes\Directory\shell\Browse with RawTherapee"; ValueType: string; ValueData: "Browse with RawTherapee"; Flags: uninsdeletekey; Tasks: regBrowseFolder and userinstall +Root: HKCU; Subkey: "SOFTWARE\Classes\Directory\shell\Browse with RawTherapee\command"; ValueType: string; ValueData: "{app}\{#MyAppExeName} -w ""%1"""; Flags: uninsdeletekey; Tasks: regBrowseFolder and userinstall +Root: HKCU; Subkey: "SOFTWARE\Classes\*\shell\Open with RawTherapee"; ValueType: string; ValueData: "Open with RawTherapee"; Flags: uninsdeletekey; Tasks: regOpenFile and userinstall +Root: HKCU; Subkey: "SOFTWARE\Classes\*\shell\Open with RawTherapee\command"; ValueType: string; ValueData: "{app}\{#MyAppExeName} -R ""%1"""; Flags: uninsdeletekey; Tasks: regOpenFile and userinstall +Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\{#MyAppExeName}"; ValueType: string; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey; Tasks: userinstall +Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\{#MyAppCliExeName}"; ValueType: string; ValueData: "{app}\{#MyAppCliExeName}"; Flags: uninsdeletekey; Tasks: userinstall + +Root: HKLM; Subkey: "SOFTWARE\Classes\Directory\shell\Browse with RawTherapee"; ValueType: string; ValueData: "Browse with RawTherapee"; Flags: uninsdeletekey; Tasks: regBrowseFolder and commoninstall +Root: HKLM; Subkey: "SOFTWARE\Classes\Directory\shell\Browse with RawTherapee\command"; ValueType: string; ValueData: "{app}\{#MyAppExeName} -w ""%1"""; Flags: uninsdeletekey; Tasks: regBrowseFolder and commoninstall +Root: HKLM; Subkey: "SOFTWARE\Classes\*\shell\Open with RawTherapee"; ValueType: string; ValueData: "Open with RawTherapee"; Flags: uninsdeletekey; Tasks: regOpenFile and commoninstall +Root: HKLM; Subkey: "SOFTWARE\Classes\*\shell\Open with RawTherapee\command"; ValueType: string; ValueData: "{app}\{#MyAppExeName} -R ""%1"""; Flags: uninsdeletekey; Tasks: regOpenFile and commoninstall +Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\{#MyAppExeName}"; ValueType: string; ValueData: "{app}\{#MyAppExeName}"; Flags: uninsdeletekey; Tasks: commoninstall +Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\{#MyAppCliExeName}"; ValueType: string; ValueData: "{app}\{#MyAppCliExeName}"; Flags: uninsdeletekey; Tasks: commoninstall + +[Code] +function IsElevatedUser(): Boolean; +begin +Result := IsAdminLoggedOn or IsPowerUserLoggedOn; +end; + \ No newline at end of file From ff8ecc6bafbebaf0626a33c4bb31a6c1567489dc Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Tue, 11 Sep 2018 12:53:57 +0200 Subject: [PATCH 02/52] Add "and" to the task list of the desktopicons to prevent that they are always executed. --- tools/win/InnoSetup/WindowsInnoSetup.iss.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/win/InnoSetup/WindowsInnoSetup.iss.in b/tools/win/InnoSetup/WindowsInnoSetup.iss.in index 6b9572ace..b9b3aa8ec 100644 --- a/tools/win/InnoSetup/WindowsInnoSetup.iss.in +++ b/tools/win/InnoSetup/WindowsInnoSetup.iss.in @@ -125,8 +125,8 @@ Source: "{#MyBuildBasePath}\fonts\DroidSansMonoSlashed.ttf"; DestDir: "{fonts}"; Name: "{group}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}" Name: "{group}\{cm:ProgramOnTheWeb,{#MyAppName}}"; Filename: "{#MyAppURL}" Name: "{group}\{cm:UninstallProgram,{#MyAppName} {#MyAppVersion}}"; Filename: "{uninstallexe}" -Name: "{commondesktop}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon commoninstall -Name: "{userdesktop}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon userinstall +Name: "{commondesktop}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon and commoninstall +Name: "{userdesktop}\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon and userinstall Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName} {#MyAppVersion}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon [Run] From ddfe7e0c181b3a10e3ee68d9e936bbb0403a19d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Tue, 11 Sep 2018 22:02:09 +0200 Subject: [PATCH 03/52] Optimize SaveFormat selection (#4789) --- rtgui/options.h | 22 ++++++- rtgui/saveformatpanel.cc | 129 ++++++++++++++++++++++++++++----------- rtgui/saveformatpanel.h | 1 - 3 files changed, 114 insertions(+), 38 deletions(-) diff --git a/rtgui/options.h b/rtgui/options.h index ee95d5cb3..84e01fbf3 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -55,6 +55,26 @@ struct SaveFormat { saveParams (true) { } + SaveFormat( + const Glib::ustring& _format, + int _png_bits, + int _jpeg_quality, + int _jpeg_sub_samp, + int _tiff_bits, + bool _tiff_float, + bool _tiff_uncompressed, + bool _save_params + ) : + format(_format), + pngBits(_png_bits), + jpegQuality(_jpeg_quality), + jpegSubSamp(_jpeg_sub_samp), + tiffBits(_tiff_bits), + tiffFloat(_tiff_float), + tiffUncompressed(_tiff_uncompressed), + saveParams(_save_params) + { + } Glib::ustring format; int pngBits; @@ -272,7 +292,7 @@ public: int cropPPI; enum CropGuidesMode { CROP_GUIDE_NONE, CROP_GUIDE_FRAME, CROP_GUIDE_FULL }; CropGuidesMode cropGuides; - bool cropAutoFit; + bool cropAutoFit; // Performance options Glib::ustring clutsDir; diff --git a/rtgui/saveformatpanel.cc b/rtgui/saveformatpanel.cc index 755cb9239..f8b50b6bd 100644 --- a/rtgui/saveformatpanel.cc +++ b/rtgui/saveformatpanel.cc @@ -16,10 +16,90 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#include + #include "saveformatpanel.h" #include "multilangmgr.h" #include "guiutils.h" +namespace +{ + +const std::array sf_templates = { + SaveFormat( + "jpg", + 8, + 90, + 2, + 8, + false, + true, + true + ), + SaveFormat( + "tif", + 8, + 90, + 2, + 8, + false, + true, + true + ), + SaveFormat( + "tif", + 8, + 90, + 2, + 16, + false, + true, + true + ), + SaveFormat( + "tif", + 8, + 90, + 2, + 16, + true, + true, + true + ), + SaveFormat( + "tif", + 8, + 90, + 2, + 32, + true, + true, + true + ), + SaveFormat( + "png", + 8, + 90, + 2, + 8, + false, + true, + true + ), + SaveFormat( + "png", + 16, + 90, + 2, + 8, + false, + true, + true + ) +}; + +} + SaveFormatPanel::SaveFormatPanel () : listener (nullptr) { @@ -45,14 +125,6 @@ SaveFormatPanel::SaveFormatPanel () : listener (nullptr) format->append ("PNG (8-bit)"); format->append ("PNG (16-bit)"); - fstr[0] = "jpg"; - fstr[1] = "tif"; - fstr[2] = "tif"; - fstr[3] = "tif"; - fstr[4] = "tif"; - fstr[5] = "png"; - fstr[6] = "png"; - hb1->attach (*flab, 0, 0, 1, 1); hb1->attach (*format, 1, 0, 1, 1); hb1->show_all(); @@ -148,45 +220,31 @@ void SaveFormatPanel::init (SaveFormat &sf) SaveFormat SaveFormatPanel::getFormat () { - SaveFormat sf; - int sel = format->get_active_row_number(); - sf.format = fstr[sel]; + const unsigned int sel = format->get_active_row_number(); - if (sel == 6) { - sf.pngBits = 16; - } else { - sf.pngBits = 8; + if (sel < sf_templates.size()) { + sf = sf_templates[sel]; } - if (sel == 2 || sel == 3) { - sf.tiffBits = 16; - } else if (sel == 4) { - sf.tiffBits = 32; - } else { - sf.tiffBits = 8; - } - - sf.tiffFloat = sel == 4 || sel == 3; - - sf.jpegQuality = (int) jpegQual->getValue (); - sf.jpegSubSamp = jpegSubSamp->get_active_row_number() + 1; + sf.jpegQuality = jpegQual->getValue(); + sf.jpegSubSamp = jpegSubSamp->get_active_row_number() + 1; sf.tiffUncompressed = tiffUncompressed->get_active(); - sf.saveParams = savesPP->get_active (); + sf.saveParams = savesPP->get_active(); + return sf; } void SaveFormatPanel::formatChanged () { + const unsigned int act = format->get_active_row_number(); - int act = format->get_active_row_number(); - - if (act < 0 || act > 6) { + if (act >= sf_templates.size()) { return; } - Glib::ustring fr = fstr[act]; + const Glib::ustring& fr = sf_templates[act].format; if (fr == "jpg") { jpegOpts->show_all(); @@ -206,14 +264,13 @@ void SaveFormatPanel::formatChanged () void SaveFormatPanel::adjusterChanged (Adjuster* a, double newval) { + const unsigned int act = format->get_active_row_number(); - int act = format->get_active_row_number(); - - if (act < 0 || act > 4) { + if (act >= sf_templates.size()) { return; } if (listener) { - listener->formatChanged (fstr[act]); + listener->formatChanged(sf_templates[act].format); } } diff --git a/rtgui/saveformatpanel.h b/rtgui/saveformatpanel.h index 788593d9e..47011be18 100644 --- a/rtgui/saveformatpanel.h +++ b/rtgui/saveformatpanel.h @@ -44,7 +44,6 @@ protected: Gtk::Grid* jpegOpts; Gtk::Label* jpegSubSampLabel; FormatChangeListener* listener; - Glib::ustring fstr[7]; Gtk::CheckButton* savesPP; From f653b01f6183606dc4ca8e453bfe22dda2598b85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Wed, 12 Sep 2018 19:10:40 +0200 Subject: [PATCH 04/52] Use delegating c'tors (#4789) --- rtgui/options.h | 33 +++++++++----- rtgui/saveformatpanel.cc | 98 +++++++--------------------------------- 2 files changed, 38 insertions(+), 93 deletions(-) diff --git a/rtgui/options.h b/rtgui/options.h index 84e01fbf3..d40044e63 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -44,17 +44,6 @@ #define DEFPROFILE_DYNAMIC "Dynamic" struct SaveFormat { - SaveFormat() : - format ("jpg"), - pngBits (8), - jpegQuality (90), - jpegSubSamp (2), - tiffBits (8), - tiffFloat(false), - tiffUncompressed (true), - saveParams (true) - { - } SaveFormat( const Glib::ustring& _format, int _png_bits, @@ -75,6 +64,28 @@ struct SaveFormat { saveParams(_save_params) { } + SaveFormat( + const Glib::ustring& _format, + int _png_bits, + int _tiff_bits, + bool _tiff_float + ) : + SaveFormat( + _format, + _png_bits, + 90, + 2, + _tiff_bits, + _tiff_float, + true, + true + ) + { + } + SaveFormat() : + SaveFormat("jpg", 8, 8, false) + { + } Glib::ustring format; int pngBits; diff --git a/rtgui/saveformatpanel.cc b/rtgui/saveformatpanel.cc index f8b50b6bd..c71588fc5 100644 --- a/rtgui/saveformatpanel.cc +++ b/rtgui/saveformatpanel.cc @@ -17,6 +17,7 @@ * along with RawTherapee. If not, see . */ #include +#include #include "saveformatpanel.h" #include "multilangmgr.h" @@ -25,78 +26,15 @@ namespace { -const std::array sf_templates = { - SaveFormat( - "jpg", - 8, - 90, - 2, - 8, - false, - true, - true - ), - SaveFormat( - "tif", - 8, - 90, - 2, - 8, - false, - true, - true - ), - SaveFormat( - "tif", - 8, - 90, - 2, - 16, - false, - true, - true - ), - SaveFormat( - "tif", - 8, - 90, - 2, - 16, - true, - true, - true - ), - SaveFormat( - "tif", - 8, - 90, - 2, - 32, - true, - true, - true - ), - SaveFormat( - "png", - 8, - 90, - 2, - 8, - false, - true, - true - ), - SaveFormat( - "png", - 16, - 90, - 2, - 8, - false, - true, - true - ) -}; +const std::array, 7> sf_templates = {{ + {"JPEG (8-bit)", SaveFormat("jpg", 8, 8, false)}, + {"TIFF (8-bit)", SaveFormat("tif", 8, 8, false)}, + {"TIFF (16-bit)", SaveFormat("tif", 8, 16, false)}, + {"TIFF (16-bit float)", SaveFormat("tif", 8, 16, true)}, + {"TIFF (32-bit float)", SaveFormat("tif", 8, 32, true)}, + {"PNG (8-bit)", SaveFormat("png", 8, 8, false)}, + {"PNG (16-bit)", SaveFormat("png", 16, 8, false)} +}}; } @@ -117,13 +55,9 @@ SaveFormatPanel::SaveFormatPanel () : listener (nullptr) setExpandAlignProperties(format, true, false, Gtk::ALIGN_FILL, Gtk::ALIGN_CENTER); format->signal_changed ().connect (sigc::mem_fun (*this, &SaveFormatPanel::formatChanged)); - format->append ("JPEG (8-bit)"); - format->append ("TIFF (8-bit)"); - format->append ("TIFF (16-bit)"); - format->append ("TIFF (16-bit float)"); - format->append ("TIFF (32-bit float)"); - format->append ("PNG (8-bit)"); - format->append ("PNG (16-bit)"); + for (const auto& sf_template : sf_templates) { + format->append(sf_template.first); + } hb1->attach (*flab, 0, 0, 1, 1); hb1->attach (*format, 1, 0, 1, 1); @@ -225,7 +159,7 @@ SaveFormat SaveFormatPanel::getFormat () const unsigned int sel = format->get_active_row_number(); if (sel < sf_templates.size()) { - sf = sf_templates[sel]; + sf = sf_templates[sel].second; } sf.jpegQuality = jpegQual->getValue(); @@ -244,7 +178,7 @@ void SaveFormatPanel::formatChanged () return; } - const Glib::ustring& fr = sf_templates[act].format; + const Glib::ustring& fr = sf_templates[act].second.format; if (fr == "jpg") { jpegOpts->show_all(); @@ -271,6 +205,6 @@ void SaveFormatPanel::adjusterChanged (Adjuster* a, double newval) } if (listener) { - listener->formatChanged(sf_templates[act].format); + listener->formatChanged(sf_templates[act].second.format); } } From 37c0b3bfe27da2f51c7313e2032b0b50b9b04b55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Wed, 12 Sep 2018 20:07:48 +0200 Subject: [PATCH 05/52] Automatic matching in `SaveFormatPanel::init()` (#4789) --- rtgui/saveformatpanel.cc | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/rtgui/saveformatpanel.cc b/rtgui/saveformatpanel.cc index c71588fc5..d5654241d 100644 --- a/rtgui/saveformatpanel.cc +++ b/rtgui/saveformatpanel.cc @@ -124,31 +124,29 @@ SaveFormatPanel::~SaveFormatPanel () void SaveFormatPanel::init (SaveFormat &sf) { - - FormatChangeListener* tmp = listener; + FormatChangeListener* const tmp = listener; listener = nullptr; - if (sf.format == "jpg") { - format->set_active (0); - } else if (sf.format == "png" && sf.pngBits == 16) { - format->set_active (6); - } else if (sf.format == "png" && sf.pngBits == 8) { - format->set_active (5); - } else if (sf.format == "tif" && sf.tiffBits == 32) { - format->set_active (4); - } else if (sf.format == "tif" && sf.tiffBits == 16 && sf.tiffFloat) { - format->set_active (3); - } else if (sf.format == "tif" && sf.tiffBits == 16) { - format->set_active (2); - } else if (sf.format == "tif" && sf.tiffBits == 8) { - format->set_active (1); + std::pair index; + + for (std::size_t i = 0; i < sf_templates.size(); ++i) { + const int weight = + 10 * (sf.format == sf_templates[i].second.format) + + (sf.tiffBits == sf_templates[i].second.tiffBits) + + (sf.tiffFloat == sf_templates[i].second.tiffFloat) + + (sf.pngBits == sf_templates[i].second.pngBits); + if (weight > index.first) { + index = {weight, i}; + } } - jpegSubSamp->set_active (sf.jpegSubSamp - 1); + format->set_active(index.second); + + jpegSubSamp->set_active(sf.jpegSubSamp - 1); + jpegQual->setValue(sf.jpegQuality); + savesPP->set_active(sf.saveParams); + tiffUncompressed->set_active(sf.tiffUncompressed); - jpegQual->setValue (sf.jpegQuality); - savesPP->set_active (sf.saveParams); - tiffUncompressed->set_active (sf.tiffUncompressed); listener = tmp; } From 0355a9c9176b74cc76dc75c125e76e11ef3d8fdf Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 17 Sep 2018 08:04:25 +0200 Subject: [PATCH 06/52] Japanese translation correction, fixes #4811 --- rtdata/languages/Japanese | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 038548deb..2615eccb3 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -779,8 +779,8 @@ HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - 振れに対するデモザイクの方式 HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;ラインノイズフィルタの方向 HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAFラインフィルタ HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - コントラストのしきい値 -HISTORY_MSG_RAWCACORR_AUTOIT;Rawの色順応補正 - 繰り返し -HISTORY_MSG_RAWCACORR_COLOURSHIFT;Rawの色順応補正 - 色ずれを回避 +HISTORY_MSG_RAWCACORR_AUTOIT;Rawの色収差補正 - 繰り返し +HISTORY_MSG_RAWCACORR_COLOURSHIFT;Rawの色収差補正 - 色ずれを回避 HISTORY_MSG_RAW_BORDER;Rawの境界 HISTORY_MSG_RESIZE_ALLOWUPSCALING;リサイズ - アップスケーリングを可能にする HISTORY_MSG_SHARPENING_CONTRAST;シャープ化 - コントラストのしきい値 From 65ec17b621b00c66ebb603d53e5bb6223db5b4d3 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 17 Sep 2018 12:30:48 +0200 Subject: [PATCH 07/52] decode Nikon Z7 uncompressed 12-bit NEF, #4801 --- rtengine/dcraw.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index bd9fa4b47..d302eb425 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -6692,6 +6692,14 @@ void CLASS apply_tiff() load_raw = &CLASS unpacked_load_raw; load_flags = 4; order = 0x4d4d; + } else if ((raw_width * raw_height * 2 * tiff_bps) / 16 == tiff_ifd[raw].bytes) { + // 12 bit uncompressed from Nikon Z7 + load_raw = &CLASS packed_load_raw; + } else if ((raw_width * 2 * tiff_bps / 16 + 8) * raw_height == tiff_ifd[raw].bytes) { + // 14 bit uncompressed from Nikon Z7, still wrong + // each line has 8 padding byte. To inform 'packed_load_raw' about his padding, we have to set load_flags = padding << 9 + load_flags = 8 << 9; + load_raw = &CLASS packed_load_raw; } else load_raw = &CLASS nikon_load_raw; break; case 65535: From 7d6fffcbffd3d7353c01a4d21f4b0cd0cfab5496 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 17 Sep 2018 13:10:34 +0200 Subject: [PATCH 08/52] Coverity 191036 Dereference after null check --- rtgui/icmpanel.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/icmpanel.cc b/rtgui/icmpanel.cc index 936b68fd0..01b15d4b8 100644 --- a/rtgui/icmpanel.cc +++ b/rtgui/icmpanel.cc @@ -686,7 +686,7 @@ void ICMPanel::setDefaults(const ProcParams* defParams, const ParamsEdited* pedi void ICMPanel::adjusterChanged(Adjuster* a, double newval) { - if (listener || batchMode) { + if (listener) { Glib::ustring costr2 = Glib::ustring::format(std::setw(3), std::fixed, std::setprecision(2), newval); if (a == wGamma) { From 2590afa2f40560b51634a3bfc2f086f73650a3fb Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 17 Sep 2018 13:18:58 +0200 Subject: [PATCH 09/52] Coverity 191034 Uninitialized scalar variable --- rtengine/dcrop.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index 2d376044e..002747070 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -960,9 +960,7 @@ void Crop::update(int todo) if (params.wavelet.Tilesmethod == "big") { realtile = 22; - } - - if (params.wavelet.Tilesmethod == "lit") { + } else /*if (params.wavelet.Tilesmethod == "lit")*/ { realtile = 12; } From 5d00cb05b41f4d97ed9fce222716cc54ccdccdb6 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 17 Sep 2018 13:26:50 +0200 Subject: [PATCH 10/52] Coverity 185774, 185779 Uninitialized pointer read --- rtengine/FTblockDN.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 0e5cd58a2..ce3b3ac9b 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -1741,7 +1741,7 @@ BENCHFUN } - if (denoiseLuminance) { + if (denoiseLuminance && numtiles >= 1) { for (int i = 0; i < denoiseNestedLevels * numthreads; ++i) { fftwf_free(LbloxArray[i]); fftwf_free(fLbloxArray[i]); From e50b68208daacec90d505be8681beb1c315b7022 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 17 Sep 2018 17:21:02 +0200 Subject: [PATCH 11/52] manual raw ca correction: set usable range to [-4;4] --- rtgui/rawcacorrection.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/rawcacorrection.cc b/rtgui/rawcacorrection.cc index 37f01cfcf..bdcc13442 100644 --- a/rtgui/rawcacorrection.cc +++ b/rtgui/rawcacorrection.cc @@ -46,7 +46,7 @@ RAWCACorr::RAWCACorr () : FoldableToolPanel(this, "rawcacorrection", M("TP_CHROM caAutoiterations->delay = options.adjusterMaxDelay; } - caRed = Gtk::manage(new Adjuster (M("TP_RAWCACORR_CARED"), -8.0, 8.0, 0.1, 0, icaredL, icaredR)); + caRed = Gtk::manage(new Adjuster (M("TP_RAWCACORR_CARED"), -4.0, 4.0, 0.1, 0, icaredL, icaredR)); caRed->setAdjusterListener (this); if (caRed->delay < options.adjusterMaxDelay) { From 6fb92a41655f42a27f76bb03968e1a33f9bd2698 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Mon, 17 Sep 2018 12:49:55 -0700 Subject: [PATCH 12/52] Mac: make Frameworks folder flat codesign command does not accept subfolders in Frameworks, so mv the contents of two subfolders back out to the Frameworks directory. --- tools/osx/macosx_bundle.sh | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index 20a140ce5..591699cbb 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -125,10 +125,15 @@ find -E "${LIB}" -type f -regex '.*\.(a|la|cache)$' | while read -r; do rm "${RE msg "Copying configuration files from ${GTK_PREFIX}:" install -d "${ETC}/gtk-3.0" -cp "${GTK_PREFIX}/etc/gtk-3.0/im-multipress.conf" "${ETC}/gtk-3.0" -"${GTK_PREFIX}/bin/gdk-pixbuf-query-loaders" "${LIB}"/gdk-pixbuf-2.0/*/loaders/*.so > "${ETC}/gtk-3.0/gdk-pixbuf.loaders" -"${GTK_PREFIX}/bin/gtk-query-immodules-3.0" "${LIB}"/gtk-3.0/*/immodules/*.so > "${ETC}/gtk-3.0/gtk.immodules" -#sed -i "" -e "s|${PWD}|/tmp|" "${ETC}/gtk-3.0/gdk-pixbuf.loaders" "${ETC}/gtk-3.0/gtk.immodules" + +# Make Frameworks folder flat +mv "${LIB}"/gdk-pixbuf-2.0/2*/loaders/*.so "${LIB}" +mv "${LIB}"/gtk-3.0/3*/immodules/*.so "${LIB}" +rm -r "${LIB}"/gtk-3.0 +rm -r "${LIB}"/gdk-pixbuf-2.0 + +"${GTK_PREFIX}/bin/gdk-pixbuf-query-loaders" "${LIB}"/libpix*.so > "${ETC}/gtk-3.0/gdk-pixbuf.loaders" +"${GTK_PREFIX}/bin/gtk-query-immodules-3.0" "${LIB}"/{im*.so,libprint*.so} > "${ETC}/gtk-3.0/gtk.immodules" sed -i "" -e "s|${PWD}/RawTherapee.app/Contents/|@executable_path/../|" "${ETC}/gtk-3.0/gdk-pixbuf.loaders" "${ETC}/gtk-3.0/gtk.immodules" ditto {"${GTK_PREFIX}","${RESOURCES}"}/share/glib-2.0/schemas @@ -147,13 +152,6 @@ done ditto {"${GTK_PREFIX}","${RESOURCES}"}/share/icons/Adwaita/index.theme "${GTK_PREFIX}/bin/gtk-update-icon-cache-3.0" "${RESOURCES}/share/icons/Adwaita" -### Pending deletion: -# fontconfig files (X11 backend only) -# if otool -L "${EXECUTABLE}" | grep -sq 'libgtk-x11-2.0'; then -# msg "Installing fontconfig files (Using X11 backend. FONTCONFIG_PATH will be set by executable loader.)" -# cp -RL "${GTK_PREFIX}/etc/fonts" "${ETC}" -# fi - # Copy the Lensfun database into the app bundle mkdir -p "${RESOURCES}/share/lensfun" cp /opt/local/share/lensfun/version_2/* "${RESOURCES}/share/lensfun" From 1a191363ce1728b15f0c8324c82342d23226c20d Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 17 Sep 2018 22:46:57 +0200 Subject: [PATCH 13/52] review ImProcFunctions::CompressDR(), fixes #4815 --- rtengine/improcfun.h | 3 +- rtengine/ipwavelet.cc | 99 ++++++------------------------------------- 2 files changed, 13 insertions(+), 89 deletions(-) diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index c857d3d05..a97ecef40 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -255,9 +255,8 @@ public: void EPDToneMapResid(float * WavCoeffs_L0, unsigned int Iterates, int skip, struct cont_params& cp, int W_L, int H_L, float max0, float min0); - float *CompressDR(float *Source, int W_L, int H_L, float Compression, float DetailBoost, float *Compressed); + void CompressDR(float *Source, int W_L, int H_L, float Compression, float DetailBoost); void ContrastResid(float * WavCoeffs_L0, struct cont_params &cp, int W_L, int H_L, float max0, float min0); - float *ContrastDR(float *Source, int W_L, int H_L, float *Contrast = nullptr); void EPDToneMap(LabImage *lab, unsigned int Iterates = 0, int skip = 1); void EPDToneMapCIE(CieImage *ncie, float a_w, float c_, int Wid, int Hei, float minQ, float maxQ, unsigned int Iterates = 0, int skip = 1); diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index def469b70..35a9d0f16 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -1425,67 +1425,11 @@ void ImProcFunctions::Eval2 (float ** WavCoeffs_L, int level, MaxN[level] = maxLN; } -float *ImProcFunctions::ContrastDR(float *Source, int W_L, int H_L, float *Contrast) -{ - int n = W_L * H_L; - - if(Contrast == nullptr) { - Contrast = new float[n]; - } - - memcpy(Contrast, Source, n * sizeof(float)); -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for (int i = 0; i < W_L * H_L; i++) { //contrast - Contrast[i] = Source[i] ; - } - - return Contrast; -} - -float *ImProcFunctions::CompressDR(float *Source, int W_L, int H_L, float Compression, float DetailBoost, float *Compressed) +void ImProcFunctions::CompressDR(float *Source, int W_L, int H_L, float Compression, float DetailBoost) { - const float eps = 0.000001f; - int n = W_L * H_L; - -#ifdef __SSE2__ -#ifdef _OPENMP - #pragma omp parallel -#endif - { - __m128 epsv = _mm_set1_ps( eps ); -#ifdef _OPENMP - #pragma omp for -#endif - - for(int ii = 0; ii < n - 3; ii += 4) { - _mm_storeu_ps( &Source[ii], xlogf(LVFU(Source[ii]) + epsv)); - } - } - - for(int ii = n - (n % 4); ii < n; ii++) { - Source[ii] = xlogf(Source[ii] + eps); - } - -#else -#ifdef _OPENMP - #pragma omp parallel for -#endif - - for(int ii = 0; ii < n; ii++) { - Source[ii] = xlogf(Source[ii] + eps); - } - -#endif - - float *ucr = ContrastDR(Source, W_L, H_L); - - if(Compressed == nullptr) { - Compressed = ucr; - } + constexpr float eps = 0.000001f; + const int n = W_L * H_L; float temp; @@ -1501,39 +1445,30 @@ float *ImProcFunctions::CompressDR(float *Source, int W_L, int H_L, float Compre float betemp = expf(-(2.f - DetailBoost + 0.694f)) - 1.f; //0.694 = log(2) temp = 1.2f * xlogf( -betemp); temp /= (-2.f * DetailBoost + 5.5f); - } - - else { + } else { temp = (Compression - 1.0f) / 20.f; } + temp += 1.f; + #ifdef __SSE2__ #ifdef _OPENMP #pragma omp parallel #endif { - __m128 cev, uev, sourcev; - __m128 epsv = _mm_set1_ps( eps ); - __m128 DetailBoostv = _mm_set1_ps( DetailBoost ); - __m128 tempv = _mm_set1_ps( temp ); + vfloat epsv = F2V(eps); + vfloat tempv = F2V(temp); #ifdef _OPENMP #pragma omp for #endif for(int i = 0; i < n - 3; i += 4) { - cev = xexpf(LVFU(Source[i]) + LVFU(ucr[i]) * (tempv)) - epsv; - uev = xexpf(LVFU(ucr[i])) - epsv; - sourcev = xexpf(LVFU(Source[i])) - epsv; - _mm_storeu_ps( &Source[i], sourcev); - _mm_storeu_ps( &Compressed[i], cev + DetailBoostv * (sourcev - uev) ); + STVFU(Source[i], xexpf(xlogf(LVFU(Source[i]) + epsv) * tempv) - epsv); } } for(int i = n - (n % 4); i < n; i++) { - float ce = xexpf(Source[i] + ucr[i] * (temp)) - eps; - float ue = xexpf(ucr[i]) - eps; - Source[i] = xexpf(Source[i]) - eps; - Compressed[i] = ce + DetailBoost * (Source[i] - ue); + Source[i] = xexpf(xlogf(Source[i] + eps) * temp) - eps; } #else @@ -1542,21 +1477,11 @@ float *ImProcFunctions::CompressDR(float *Source, int W_L, int H_L, float Compre #endif for(int i = 0; i < n; i++) { - float ce = xexpf(Source[i] + ucr[i] * (temp)) - eps; - float ue = xexpf(ucr[i]) - eps; - Source[i] = xexpf(Source[i]) - eps; - Compressed[i] = ce + DetailBoost * (Source[i] - ue); + Source[i] = xexpf(xlogf(Source[i] + eps) * temp) - eps; } #endif - if(Compressed != ucr) { - delete[] ucr; - } - - return Compressed; - - } void ImProcFunctions::ContrastResid(float * WavCoeffs_L0, struct cont_params &cp, int W_L, int H_L, float max0, float min0) @@ -1589,7 +1514,7 @@ void ImProcFunctions::ContrastResid(float * WavCoeffs_L0, struct cont_params &cp } - CompressDR(WavCoeffs_L0, W_L, H_L, Compression, DetailBoost, WavCoeffs_L0); + CompressDR(WavCoeffs_L0, W_L, H_L, Compression, DetailBoost); #ifdef _OPENMP From 2bea84cfa80b22ce06715961697d01873af911e5 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 17 Sep 2018 23:46:36 +0200 Subject: [PATCH 14/52] ImProcFunctions::CompressDR(): eliminate eps, #4815 --- rtengine/ipwavelet.cc | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index 35a9d0f16..e4a61caa0 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -1427,48 +1427,46 @@ void ImProcFunctions::Eval2 (float ** WavCoeffs_L, int level, void ImProcFunctions::CompressDR(float *Source, int W_L, int H_L, float Compression, float DetailBoost) { - - constexpr float eps = 0.000001f; const int n = W_L * H_L; - float temp; + float exponent; if(DetailBoost > 0.f && DetailBoost < 0.05f ) { float betemp = expf(-(2.f - DetailBoost + 0.694f)) - 1.f; //0.694 = log(2) - temp = 1.2f * xlogf( -betemp); - temp /= 20.f; + exponent = 1.2f * xlogf( -betemp); + exponent /= 20.f; } else if(DetailBoost >= 0.05f && DetailBoost < 0.25f ) { float betemp = expf(-(2.f - DetailBoost + 0.694f)) - 1.f; //0.694 = log(2) - temp = 1.2f * xlogf( -betemp); - temp /= (-75.f * DetailBoost + 23.75f); + exponent = 1.2f * xlogf( -betemp); + exponent /= (-75.f * DetailBoost + 23.75f); } else if(DetailBoost >= 0.25f) { float betemp = expf(-(2.f - DetailBoost + 0.694f)) - 1.f; //0.694 = log(2) - temp = 1.2f * xlogf( -betemp); - temp /= (-2.f * DetailBoost + 5.5f); + exponent = 1.2f * xlogf( -betemp); + exponent /= (-2.f * DetailBoost + 5.5f); } else { - temp = (Compression - 1.0f) / 20.f; + exponent = (Compression - 1.0f) / 20.f; } - temp += 1.f; + exponent += 1.f; + // now calculate Source = pow(Source, exponent) #ifdef __SSE2__ #ifdef _OPENMP #pragma omp parallel #endif { - vfloat epsv = F2V(eps); - vfloat tempv = F2V(temp); + vfloat exponentv = F2V(exponent); #ifdef _OPENMP #pragma omp for #endif for(int i = 0; i < n - 3; i += 4) { - STVFU(Source[i], xexpf(xlogf(LVFU(Source[i]) + epsv) * tempv) - epsv); + STVFU(Source[i], xexpf(xlogf(LVFU(Source[i])) * exponentv)); } } for(int i = n - (n % 4); i < n; i++) { - Source[i] = xexpf(xlogf(Source[i] + eps) * temp) - eps; + Source[i] = xexpf(xlogf(Source[i]) * exponent); } #else @@ -1477,7 +1475,7 @@ void ImProcFunctions::CompressDR(float *Source, int W_L, int H_L, float Compress #endif for(int i = 0; i < n; i++) { - Source[i] = xexpf(xlogf(Source[i] + eps) * temp) - eps; + Source[i] = xexpf(xlogf(Source[i]) * exponent); } #endif From efaae15f111814b50f1cedd1fd2a653db3eed8e2 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Mon, 17 Sep 2018 15:51:59 -0700 Subject: [PATCH 15/52] Mac: set a cached variable with codesign ID --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index ea95d818c..bca387153 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -252,6 +252,12 @@ if(DEFINED LENSFUNDBDIR AND NOT IS_ABSOLUTE "${LENSFUNDBDIR}") set(LENSFUNDBDIR "${DATADIR}/${LENSFUNDBDIR}") endif() +if(APPLE) + if("${CODESIGNID}") + set(CODESIGNID "${CODESIGNID}" CAHCE STRING "Codesigning Identity") + endif() +endif() + # Enforce absolute paths for non-bundle builds: if(NOT BUILD_BUNDLE) foreach(path BINDIR DATADIR LIBDIR DOCDIR CREDITSDIR LICENCEDIR) From d6e4ba296e9018835b8150cc0bb2a80bd0720bc8 Mon Sep 17 00:00:00 2001 From: Benitoite Date: Mon, 17 Sep 2018 15:58:19 -0700 Subject: [PATCH 16/52] Mac: codesign app and dmg Gets the cached CODESIGNID value via cmake and signs the app and dmg with it. --- tools/osx/macosx_bundle.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index 591699cbb..e5c9d0bd3 100644 --- a/tools/osx/macosx_bundle.sh +++ b/tools/osx/macosx_bundle.sh @@ -199,8 +199,11 @@ s|@arch@|${arch}|" \ "${CONTENTS}/Info.plist" plutil -convert binary1 "${CONTENTS}/Info.plist" - - +# Sign the app +CODESIGNID="$(cmake .. -LA -N | grep "CODESIGNID" | cut -d "=" -f2)" +codesign --deep --force -v -s "${CODESIGNID}" "${APP}" +spctl -a -vvvv "${APP}" + function CreateDmg { local srcDir="$(mktemp -dt $$)" @@ -227,6 +230,9 @@ function CreateDmg { msg "Creating disk image:" hdiutil create -format UDBZ -srcdir "${srcDir}" -volname "${PROJECT_NAME}_${PROJECT_FULL_VERSION}" "${dmg_name}.dmg" + # Sign disk image + codesign --deep --force -v -s "${CODESIGNID}" "${dmg_name}.dmg" + # Zip disk image for redistribution zip "${dmg_name}.zip" "${dmg_name}.dmg" AboutThisBuild.txt rm "${dmg_name}.dmg" From cdc187f9aa88135f7c57dfad71374da85d93f6ac Mon Sep 17 00:00:00 2001 From: Benitoite Date: Mon, 17 Sep 2018 16:39:48 -0700 Subject: [PATCH 17/52] Mac: fix typo I made --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bca387153..f2739c4da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -254,7 +254,7 @@ endif() if(APPLE) if("${CODESIGNID}") - set(CODESIGNID "${CODESIGNID}" CAHCE STRING "Codesigning Identity") + set(CODESIGNID "${CODESIGNID}" CACHE STRING "Codesigning Identity") endif() endif() From 78989731f514fb8fabc4ea72993ba669efd888d9 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 18 Sep 2018 11:37:15 +0200 Subject: [PATCH 18/52] Always use icons for tab headers, #4772 --- rtgui/editorpanel.cc | 5 ---- rtgui/editorpanel.h | 1 - rtgui/filepanel.cc | 5 ---- rtgui/filepanel.h | 1 - rtgui/guiutils.cc | 56 +++-------------------------------------- rtgui/guiutils.h | 17 +------------ rtgui/options.cc | 6 ----- rtgui/options.h | 1 - rtgui/preferences.cc | 10 -------- rtgui/preferences.h | 1 - rtgui/rtwindow.cc | 13 ---------- rtgui/rtwindow.h | 1 - rtgui/toolpanelcoord.cc | 39 ++++++---------------------- rtgui/toolpanelcoord.h | 2 -- 14 files changed, 12 insertions(+), 146 deletions(-) diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index e7fd11a26..8fd76d212 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -2315,11 +2315,6 @@ void EditorPanel::updateTPVScrollbar (bool hide) tpc->updateTPVScrollbar (hide); } -void EditorPanel::updateTabsUsesIcons (bool useIcons) -{ - tpc->updateTabsUsesIcons (useIcons); -} - void EditorPanel::updateHistogramPosition (int oldPosition, int newPosition) { diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h index 054ad0a6b..3ac0d92b6 100644 --- a/rtgui/editorpanel.h +++ b/rtgui/editorpanel.h @@ -133,7 +133,6 @@ public: } void updateProfiles (const Glib::ustring &printerProfile, rtengine::RenderingIntent printerIntent, bool printerBPC); void updateTPVScrollbar (bool hide); - void updateTabsUsesIcons (bool useIcons); void updateHistogramPosition (int oldPosition, int newPosition); void defaultMonitorProfileChanged (const Glib::ustring &profile_name, bool auto_monitor_profile); diff --git a/rtgui/filepanel.cc b/rtgui/filepanel.cc index 260a6f448..3cb5afa4c 100644 --- a/rtgui/filepanel.cc +++ b/rtgui/filepanel.cc @@ -425,8 +425,3 @@ void FilePanel::updateTPVScrollbar (bool hide) { tpc->updateTPVScrollbar (hide); } - -void FilePanel::updateTabsUsesIcons (bool useIcons) -{ - tpc->updateTabsUsesIcons (useIcons); -} diff --git a/rtgui/filepanel.h b/rtgui/filepanel.h index b8389d1c9..3ecf7a33b 100644 --- a/rtgui/filepanel.h +++ b/rtgui/filepanel.h @@ -80,7 +80,6 @@ public: bool handleShortcutKey (GdkEventKey* event); void updateTPVScrollbar (bool hide); - void updateTabsUsesIcons (bool useIcons); private: void on_NB_switch_page(Gtk::Widget* page, guint page_num); diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc index 1e4f4eac8..980b94765 100644 --- a/rtgui/guiutils.cc +++ b/rtgui/guiutils.cc @@ -1434,63 +1434,15 @@ void MyFileChooserButton::get_preferred_width_for_height_vfunc (int height, int -TextOrIcon::TextOrIcon (Glib::ustring fname, Glib::ustring labelTx, Glib::ustring tooltipTx, TOITypes type) +TextOrIcon::TextOrIcon (const Glib::ustring &fname, const Glib::ustring &labelTx, const Glib::ustring &tooltipTx) { - imgIcon = nullptr; - label = nullptr; - filename = fname; - labelText = labelTx; - tooltipText = tooltipTx; + pack_start(*Gtk::manage(new RTImage(fname)), Gtk::PACK_SHRINK, 0); + set_tooltip_markup("" + labelTx + "\n" + tooltipTx); set_name("TextOrIcon"); - - switchTo(type); -} - -TextOrIcon::~TextOrIcon () -{ - if (imgIcon) { - delete imgIcon; - } - - if (label) { - delete label; - } -} - -void TextOrIcon::switchTo(TOITypes type) -{ - switch (type) { - case (TOI_ICON): - if (!imgIcon) { - removeIfThere(this, label, false); - delete label; - label = nullptr; - imgIcon = new RTImage (filename); - pack_start(*imgIcon, Gtk::PACK_SHRINK, 0); - set_tooltip_markup ("" + labelText + "\n" + tooltipText); - } - - // do nothing if imgIcon exist, which mean that it is currently being displayed - break; - - case(TOI_TEXT): - default: - if (!label) { - removeIfThere(this, imgIcon, false); - delete imgIcon; - imgIcon = nullptr; - label = new Gtk::Label (labelText, Gtk::ALIGN_CENTER); - pack_start(*label, Gtk::PACK_EXPAND_WIDGET, 0); - set_tooltip_markup (tooltipText); - } - - // do nothing if label exist, which mean that it is currently being displayed - break; - } - show_all(); + } MyImageMenuItem::MyImageMenuItem(Glib::ustring label, Glib::ustring imageFileName) diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h index fb627a78a..8816eca4f 100644 --- a/rtgui/guiutils.h +++ b/rtgui/guiutils.h @@ -450,11 +450,6 @@ typedef enum RTOrientation { RTO_Top2Bottom } eRTOrientation; -enum TOITypes { - TOI_TEXT, - TOI_ICON -}; - typedef enum RTNav { NAV_NONE, NAV_NEXT, @@ -467,18 +462,8 @@ typedef enum RTNav { class TextOrIcon : public Gtk::HBox { -protected: - Gtk::Image* imgIcon; - Gtk::Label* label; - Glib::ustring filename; - Glib::ustring labelText; - Glib::ustring tooltipText; - public: - TextOrIcon (Glib::ustring filename, Glib::ustring labelTx, Glib::ustring tooltipTx, TOITypes type); - ~TextOrIcon (); - - void switchTo(TOITypes type); + TextOrIcon (const Glib::ustring &filename, const Glib::ustring &labelTx, const Glib::ustring &tooltipTx); }; class MyImageMenuItem : public Gtk::MenuItem diff --git a/rtgui/options.cc b/rtgui/options.cc index a032626b4..005831a6d 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -440,7 +440,6 @@ void Options::setDefaults() FileBrowserToolbarSingleRow = false; hideTPVScrollbar = false; - UseIconNoText = true; whiteBalanceSpotSize = 8; showFilmStripToolBar = false; menuGroupRank = true; @@ -1339,10 +1338,6 @@ void Options::readFromFile(Glib::ustring fname) #endif - if (keyFile.has_key("GUI", "UseIconNoText")) { - UseIconNoText = keyFile.get_boolean("GUI", "UseIconNoText"); - } - if (keyFile.has_key("GUI", "HistogramWorking")) { rtSettings.HistogramWorking = keyFile.get_boolean("GUI", "HistogramWorking"); } @@ -2035,7 +2030,6 @@ void Options::saveToFile(Glib::ustring fname) keyFile.set_boolean ("GUI", "ShowFilmStripToolBar", showFilmStripToolBar); keyFile.set_boolean ("GUI", "FileBrowserToolbarSingleRow", FileBrowserToolbarSingleRow); keyFile.set_boolean ("GUI", "HideTPVScrollbar", hideTPVScrollbar); - keyFile.set_boolean ("GUI", "UseIconNoText", UseIconNoText); keyFile.set_boolean ("GUI", "HistogramWorking", rtSettings.HistogramWorking); keyFile.set_integer ("GUI", "CurveBBoxPosition", curvebboxpos); diff --git a/rtgui/options.h b/rtgui/options.h index 6c473949b..132d55990 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -263,7 +263,6 @@ public: int histogramDrawMode; bool FileBrowserToolbarSingleRow; bool hideTPVScrollbar; - bool UseIconNoText; int whiteBalanceSpotSize; int curvebboxpos; // 0=above, 1=right, 2=below, 3=left diff --git a/rtgui/preferences.cc b/rtgui/preferences.cc index dd7e4a681..a7b45c902 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -934,11 +934,8 @@ Gtk::Widget* Preferences::getGeneralPanel () ckbHideTPVScrollbar->set_active(false); ckbHideTPVScrollbar->set_sensitive(false); #endif - ckbUseIconNoText = Gtk::manage ( new Gtk::CheckButton (M ("PREFERENCES_TP_USEICONORTEXT")) ); - setExpandAlignProperties (ckbUseIconNoText, false, false, Gtk::ALIGN_START, Gtk::ALIGN_BASELINE); workflowGrid->attach_next_to (*hb4label, *ckbFileBrowserToolbarSingleRow, Gtk::POS_BOTTOM, 1, 1); workflowGrid->attach_next_to (*ckbHideTPVScrollbar, *hb4label, Gtk::POS_RIGHT, 1, 1); - workflowGrid->attach_next_to (*ckbUseIconNoText, *ckbHideTPVScrollbar, Gtk::POS_RIGHT, 1, 1); ckbAutoSaveTpOpen = Gtk::manage (new Gtk::CheckButton (M ("PREFERENCES_AUTOSAVE_TP_OPEN"))); workflowGrid->attach_next_to (*ckbAutoSaveTpOpen, *hb4label, Gtk::POS_BOTTOM, 1, 1); btnSaveTpOpenNow = Gtk::manage (new Gtk::Button (M ("PREFERENCES_SAVE_TP_OPEN_NOW"))); @@ -1743,7 +1740,6 @@ void Preferences::storePreferences () moptions.showFilmStripToolBar = ckbShowFilmStripToolBar->get_active(); moptions.hideTPVScrollbar = ckbHideTPVScrollbar->get_active(); moptions.overwriteOutputFile = chOverwriteOutputFile->get_active (); - moptions.UseIconNoText = ckbUseIconNoText->get_active(); moptions.autoSaveTpOpen = ckbAutoSaveTpOpen->get_active(); @@ -1948,7 +1944,6 @@ void Preferences::fillPreferences () ckbFileBrowserToolbarSingleRow->set_active (moptions.FileBrowserToolbarSingleRow); ckbShowFilmStripToolBar->set_active (moptions.showFilmStripToolBar); ckbHideTPVScrollbar->set_active (moptions.hideTPVScrollbar); - ckbUseIconNoText->set_active (moptions.UseIconNoText); ckbAutoSaveTpOpen->set_active (moptions.autoSaveTpOpen); @@ -2332,11 +2327,6 @@ void Preferences::workflowUpdate () parent->updateTPVScrollbar (moptions.hideTPVScrollbar); } - if (moptions.UseIconNoText != options.UseIconNoText) { - // Update the tool's tab titles - parent->updateTabsUsesIcons (moptions.UseIconNoText); - } - if (moptions.FileBrowserToolbarSingleRow != options.FileBrowserToolbarSingleRow) { // Update the position of the Query toolbar parent->updateFBQueryTB (moptions.FileBrowserToolbarSingleRow); diff --git a/rtgui/preferences.h b/rtgui/preferences.h index 06521ab65..949f50376 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -197,7 +197,6 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener Gtk::CheckButton* ckbFileBrowserToolbarSingleRow; Gtk::CheckButton* ckbShowFilmStripToolBar; Gtk::CheckButton* ckbHideTPVScrollbar; - Gtk::CheckButton* ckbUseIconNoText; Gtk::CheckButton* ckbAutoSaveTpOpen; Gtk::Button* btnSaveTpOpenNow; diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index 8541504f8..a4fee1070 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -901,19 +901,6 @@ void RTWindow::updateTPVScrollbar (bool hide) } } -void RTWindow::updateTabsUsesIcons (bool useIcons) -{ - fpanel->updateTabsUsesIcons (useIcons); - - if (epanel) { - epanel->updateTabsUsesIcons (useIcons); - } - - for (auto panel : epanels) { - panel.second->updateTabsUsesIcons (useIcons); - } -} - void RTWindow::updateFBQueryTB (bool singleRow) { fpanel->fileCatalog->updateFBQueryTB (singleRow); diff --git a/rtgui/rtwindow.h b/rtgui/rtwindow.h index 7bb818c7c..d5c13d515 100644 --- a/rtgui/rtwindow.h +++ b/rtgui/rtwindow.h @@ -110,7 +110,6 @@ public: void updateProfiles (const Glib::ustring &printerProfile, rtengine::RenderingIntent printerIntent, bool printerBPC); void updateTPVScrollbar (bool hide); void updateHistogramPosition (int oldPosition, int newPosition); - void updateTabsUsesIcons (bool useIcons); void updateFBQueryTB (bool singleRow); void updateFBToolBarVisibility (bool showFilmStripToolBar); bool getIsFullscreen() diff --git a/rtgui/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 5d35a9ad5..deecb7682 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -199,17 +199,13 @@ ToolPanelCoordinator::ToolPanelCoordinator (bool batch) : ipc (nullptr), hasChan rawPanel->pack_start (*Gtk::manage (new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); rawPanel->pack_start (*vbPanelEnd[4], Gtk::PACK_SHRINK, 0); - - - TOITypes type = options.UseIconNoText ? TOI_ICON : TOI_TEXT; - - toiE = Gtk::manage (new TextOrIcon ("exposure.png", M ("MAIN_TAB_EXPOSURE"), M ("MAIN_TAB_EXPOSURE_TOOLTIP"), type)); - toiD = Gtk::manage (new TextOrIcon ("detail.png", M ("MAIN_TAB_DETAIL"), M ("MAIN_TAB_DETAIL_TOOLTIP"), type)); - toiC = Gtk::manage (new TextOrIcon ("color-circles.png", M ("MAIN_TAB_COLOR"), M ("MAIN_TAB_COLOR_TOOLTIP"), type)); - toiW = Gtk::manage (new TextOrIcon ("atom.png", M ("MAIN_TAB_ADVANCED"), M ("MAIN_TAB_ADVANCED_TOOLTIP"), type)); - toiT = Gtk::manage (new TextOrIcon ("transform.png", M ("MAIN_TAB_TRANSFORM"), M ("MAIN_TAB_TRANSFORM_TOOLTIP"), type)); - toiR = Gtk::manage (new TextOrIcon ("bayer.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"), type)); - toiM = Gtk::manage (new TextOrIcon ("metadata.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"), type)); + toiE = Gtk::manage (new TextOrIcon ("exposure.png", M ("MAIN_TAB_EXPOSURE"), M ("MAIN_TAB_EXPOSURE_TOOLTIP"))); + toiD = Gtk::manage (new TextOrIcon ("detail.png", M ("MAIN_TAB_DETAIL"), M ("MAIN_TAB_DETAIL_TOOLTIP"))); + toiC = Gtk::manage (new TextOrIcon ("color-circles.png", M ("MAIN_TAB_COLOR"), M ("MAIN_TAB_COLOR_TOOLTIP"))); + toiW = Gtk::manage (new TextOrIcon ("atom.png", M ("MAIN_TAB_ADVANCED"), M ("MAIN_TAB_ADVANCED_TOOLTIP"))); + toiT = Gtk::manage (new TextOrIcon ("transform.png", M ("MAIN_TAB_TRANSFORM"), M ("MAIN_TAB_TRANSFORM_TOOLTIP"))); + toiR = Gtk::manage (new TextOrIcon ("bayer.png", M ("MAIN_TAB_RAW"), M ("MAIN_TAB_RAW_TOOLTIP"))); + toiM = Gtk::manage (new TextOrIcon ("metadata.png", M ("MAIN_TAB_METADATA"), M ("MAIN_TAB_METADATA_TOOLTIP"))); toolPanelNotebook->append_page (*exposurePanelSW, *toiE); toolPanelNotebook->append_page (*detailsPanelSW, *toiD); @@ -888,32 +884,11 @@ void ToolPanelCoordinator::updateVScrollbars (bool hide) } } -void ToolPanelCoordinator::updateTabsHeader (bool useIcons) -{ - GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected - TOITypes type = useIcons ? TOI_ICON : TOI_TEXT; - - toiE->switchTo (type); - toiD->switchTo (type); - toiC->switchTo (type); - toiT->switchTo (type); - toiR->switchTo (type); - - if (toiM) { - toiM->switchTo (type); - } -} - void ToolPanelCoordinator::updateTPVScrollbar (bool hide) { updateVScrollbars (hide); } -void ToolPanelCoordinator::updateTabsUsesIcons (bool useIcons) -{ - updateTabsHeader (useIcons); -} - void ToolPanelCoordinator::toolSelected (ToolMode tool) { GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected diff --git a/rtgui/toolpanelcoord.h b/rtgui/toolpanelcoord.h index 3b70b392d..1c46ee54e 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -190,7 +190,6 @@ protected: void addPanel (Gtk::Box* where, FoldableToolPanel* panel, int level = 1); void foldThemAll (GdkEventButton* event); void updateVScrollbars (bool hide); - void updateTabsHeader (bool useIcons); private: @@ -296,7 +295,6 @@ public: } void updateTPVScrollbar (bool hide); - void updateTabsUsesIcons (bool useIcons); bool handleShortcutKey (GdkEventKey* event); // ToolBarListener interface From 6f22f111b3ff5af93aba2e69baebe587fa51dd33 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 18 Sep 2018 13:05:12 +0200 Subject: [PATCH 19/52] Removed obsolete language key --- rtdata/languages/Catala | 1 - rtdata/languages/Chinese (Simplified) | 1 - rtdata/languages/Chinese (Traditional) | 1 - rtdata/languages/Czech | 1 - rtdata/languages/Dansk | 1 - rtdata/languages/Deutsch | 1 - rtdata/languages/English (UK) | 1 - rtdata/languages/English (US) | 1 - rtdata/languages/Espanol | 1 - rtdata/languages/Euskara | 1 - rtdata/languages/Francais | 1 - rtdata/languages/Greek | 1 - rtdata/languages/Hebrew | 1 - rtdata/languages/Italiano | 1 - rtdata/languages/Japanese | 1 - rtdata/languages/Latvian | 1 - rtdata/languages/Magyar | 1 - rtdata/languages/Nederlands | 1 - rtdata/languages/Norsk BM | 1 - rtdata/languages/Polish | 1 - rtdata/languages/Polish (Latin Characters) | 1 - rtdata/languages/Portugues (Brasil) | 1 - rtdata/languages/Russian | 1 - rtdata/languages/Serbian (Cyrilic Characters) | 1 - rtdata/languages/Serbian (Latin Characters) | 1 - rtdata/languages/Slovak | 1 - rtdata/languages/Suomi | 1 - rtdata/languages/Swedish | 1 - rtdata/languages/Turkish | 1 - rtdata/languages/default | 1 - 30 files changed, 30 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index a8d381a8e..f0288ac52 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -587,7 +587,6 @@ PREFERENCES_TAB_GENERAL;General PREFERENCES_TAB_IMPROC;Processament de la imatge PREFERENCES_TAB_SOUND;Sons PREFERENCES_TP_LABEL;Panell d'eines: -PREFERENCES_TP_USEICONORTEXT;Usa les icones tab en comptes de text PREFERENCES_TP_VSCROLLBAR;Amaga la barra d'eines vertical PREFERENCES_WORKFLOW;Flux de treball PROFILEPANEL_COPYPPASTE;Paràmetres a copiar diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index 78667ee02..c3ae44124 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -661,7 +661,6 @@ PREFERENCES_TAB_IMPROC;图片处理 PREFERENCES_TAB_SOUND;音效 PREFERENCES_THEME;主题 PREFERENCES_TP_LABEL;工具栏 -PREFERENCES_TP_USEICONORTEXT;标签使用图标而不是文本 PREFERENCES_TP_VSCROLLBAR;隐藏垂直滚动栏 PREFERENCES_TUNNELMETADATA;无损复制 Exif/IPTC/XMP 到输出文件 PREFERENCES_USEBUNDLEDPROFILES;启用内置预设 diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index 6e7698f9a..d60d772e0 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1339,7 +1339,6 @@ TP_WBALANCE_TEMPERATURE;色溫 !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 671fde250..0d05c24d5 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -1168,7 +1168,6 @@ PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Obrázek k zobrazení PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutrální vykreslení raw PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Vložený JPEG náhled pokud je v plné velikosti, jinak neutrální raw PREFERENCES_TP_LABEL;Panel nástrojů: -PREFERENCES_TP_USEICONORTEXT;V záhlaví karty zobrazit ikonu namísto textu PREFERENCES_TP_VSCROLLBAR;Skrýt svislou posuvnou lištu PREFERENCES_TUNNELMETADATA;Zkopírovat nezměněná Exif/IPTC/XMP metadata do výstupního souboru PREFERENCES_USEBUNDLEDPROFILES;Použít přiložené profily diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index 9e1d79191..df5a815fa 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -1336,7 +1336,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index d9488295e..0e3634683 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -1277,7 +1277,6 @@ PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Bildanzeige PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutrales RAW-Bild PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Eingebundenes JPEG wenn in Originalgröße, sonst neutrales RAW-Bild PREFERENCES_TP_LABEL;Werkzeugbereich: -PREFERENCES_TP_USEICONORTEXT;Symbole statt Text in Karteireitern PREFERENCES_TP_VSCROLLBAR;Keine vertikale Scrollbar PREFERENCES_TUNNELMETADATA;Exif/XMP unverändert in die Ausgabedatei übernehmen. PREFERENCES_USEBUNDLEDPROFILES;Standardprofile verwenden diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 9fdef1914..11f5571e2 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -1273,7 +1273,6 @@ TP_WBALANCE_EQBLUERED_TOOLTIP;Allows to deviate from the normal behaviour of "wh !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index 944457486..a3c535277 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -1207,7 +1207,6 @@ !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 8560fd93c..3919c34be 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -842,7 +842,6 @@ PREFERENCES_TAB_GENERAL;General PREFERENCES_TAB_IMPROC;Procesamiento de imágenes PREFERENCES_TAB_SOUND;Sonidos PREFERENCES_TP_LABEL;Panel de herramientas: -PREFERENCES_TP_USEICONORTEXT;Usar iconos de pestaña en lugar de texto PREFERENCES_TP_VSCROLLBAR;Ocultar barra de desplazamiento vertical del panel de herramientas PREFERENCES_USEBUNDLEDPROFILES;Usar perfiles empaquetados PREFERENCES_VIEW;Balance de blancos en el dispositivo de salida (monitor, TV, proyector...) diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index e3559ff98..32d063a57 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1337,7 +1337,6 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index a20f9251d..e07c41922 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -1167,7 +1167,6 @@ PREFERENCES_TAB_IMPROC;Traitement de l'image PREFERENCES_TAB_SOUND;Sons PREFERENCES_THEME;Thème PREFERENCES_TP_LABEL;Panneau des outils: -PREFERENCES_TP_USEICONORTEXT;Utiliser des icônes au lieu de textes PREFERENCES_TP_VSCROLLBAR;Cacher la barre de défilement verticale PREFERENCES_TUNNELMETADATA;Copier les données Exif/IPTC/XMP tel quel dans le fichier de sortie PREFERENCES_USEBUNDLEDPROFILES;Utiliser les profils fournis diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 9c7c024f9..4a406444b 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -1336,7 +1336,6 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 85bc43c05..2f67763f2 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1337,7 +1337,6 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 9ee5e607a..8e012742d 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -747,7 +747,6 @@ PREFERENCES_TAB_GENERAL;Generale PREFERENCES_TAB_IMPROC;Elaborazione immagine PREFERENCES_TAB_SOUND;Suoni PREFERENCES_TP_LABEL;Pannello Strumenti: -PREFERENCES_TP_USEICONORTEXT;Utilizza le icone delle schede anziché il testo PREFERENCES_TP_VSCROLLBAR;Nascondi la barra di scorrimento verticale PREFERENCES_USEBUNDLEDPROFILES;Usa profili inclusi PREFERENCES_VIEW;Bilanciamento del bianco del dispositivo di uscita (monitor, TV, proiettore...) diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index 2615eccb3..bf0de5028 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -1238,7 +1238,6 @@ PREFERENCES_THUMBNAIL_INSPECTOR_MODE;表示する画像 PREFERENCES_THUMBNAIL_INSPECTOR_RAW;ニュートラルなrawレンダリング PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;埋め込まれているJPEGがフルサイズの場合、指定がなければニュートラルなrawレンダリングで表示 PREFERENCES_TP_LABEL;ツール パネル: -PREFERENCES_TP_USEICONORTEXT;テキストの代わりにタブアイコンを使用 PREFERENCES_TP_VSCROLLBAR;ツールパネルの垂直スクロールバーを隠す PREFERENCES_TUNNELMETADATA;Exif/IPTC/XMPを変更を加えずに出力ファイルにコピー PREFERENCES_USEBUNDLEDPROFILES;付属のプロファイルを使用 diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index 212330c9c..d664e5ceb 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1337,7 +1337,6 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 00dc4d800..700d7d0be 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -570,7 +570,6 @@ PREFERENCES_TAB_GENERAL;Általános PREFERENCES_TAB_IMPROC;Képfeldolgozás PREFERENCES_TAB_SOUND;Hangok PREFERENCES_TP_LABEL;Eszközök panel: -PREFERENCES_TP_USEICONORTEXT;Ikonok használata szöveg helyett a füleken PREFERENCES_TP_VSCROLLBAR;Függőleges görgetősáv elrejtése PREFERENCES_WORKFLOW;Munkamenet PROFILEPANEL_COPYPPASTE;Másolandó paraméterek diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index d002263bc..12b502c6a 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -1076,7 +1076,6 @@ PREFERENCES_TAB_GENERAL;Algemeen PREFERENCES_TAB_IMPROC;Beeldverwerking PREFERENCES_TAB_SOUND;Geluiden PREFERENCES_TP_LABEL;Gereedschapspaneel: -PREFERENCES_TP_USEICONORTEXT;Gebruik iconen ipv. tekst voor de tabbladen PREFERENCES_TP_VSCROLLBAR;Verberg de schuifbalk van het gereedschapspaneel PREFERENCES_TUNNELMETADATA;Kopieer Exif/IPTC/XMP-data onveranderd naar uitvoerbestand PREFERENCES_USEBUNDLEDPROFILES;Gebruik gebundelde profielen diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index f61fa7a88..7af97dd4e 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -1336,7 +1336,6 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 3558870b8..7af6fad6e 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -797,7 +797,6 @@ PREFERENCES_TAB_GENERAL;Ogólne PREFERENCES_TAB_IMPROC;Przetwarzanie obrazu PREFERENCES_TAB_SOUND;Dźwięki PREFERENCES_TP_LABEL;Panel narzędzi: -PREFERENCES_TP_USEICONORTEXT;Uzyj ikon w zakładkach zamiast tekstowych etykiet PREFERENCES_TP_VSCROLLBAR;Ukry pionowy pasek przesuwania PREFERENCES_USEBUNDLEDPROFILES;Użyj załączone profile przetwarzania PREFERENCES_VIEW;Balans bieli urządzenia wyjściowego (monitora, TV, projektora, widowni, etc.) diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 27740a48c..4601472eb 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -797,7 +797,6 @@ PREFERENCES_TAB_GENERAL;Ogolne PREFERENCES_TAB_IMPROC;Przetwarzanie obrazu PREFERENCES_TAB_SOUND;Dzwieki PREFERENCES_TP_LABEL;Panel narzedzi: -PREFERENCES_TP_USEICONORTEXT;Uzyj ikon w zakladkach zamiast tekstowych etykiet PREFERENCES_TP_VSCROLLBAR;Ukry pionowy pasek przesuwania PREFERENCES_USEBUNDLEDPROFILES;Uzyj zalaczone profile przetwarzania PREFERENCES_VIEW;Balans bieli urzadzenia wyjsciowego (monitora, TV, projektora, widowni, etc.) diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index ba33f8228..471c07c1c 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -1199,7 +1199,6 @@ PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Imagem para mostrar PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Renderização raw neutra PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;JPEG incorporado se tamanho completo, raw neutro caso contrário PREFERENCES_TP_LABEL;Painel de ferramentas: -PREFERENCES_TP_USEICONORTEXT;Use ícones de guias em vez de texto PREFERENCES_TP_VSCROLLBAR;Ocultar barra de rolagem vertical PREFERENCES_TUNNELMETADATA;Copiar Exif/IPTC/XMP inalterado para o arquivo de saída PREFERENCES_USEBUNDLEDPROFILES;Use perfis agrupados diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index 774e2d580..e00c6fc7a 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -803,7 +803,6 @@ PREFERENCES_TAB_IMPROC;Обработка изображения PREFERENCES_TAB_SOUND;Звуки PREFERENCES_THEME;Тема PREFERENCES_TP_LABEL;Панель инструментов: -PREFERENCES_TP_USEICONORTEXT;Использовать иконки вместо текста PREFERENCES_TP_VSCROLLBAR;Спрятать вертикальную полосу прокрутки PREFERENCES_USEBUNDLEDPROFILES;Использовать предустановленный профиль PREFERENCES_VIEW;ББ устройства вывода (монитор, проектор и т.д.) diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 675e710aa..35d7925dc 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -714,7 +714,6 @@ PREFERENCES_TAB_GENERAL;Опште PREFERENCES_TAB_IMPROC;Обрада сликe PREFERENCES_TAB_SOUND;Звуци PREFERENCES_TP_LABEL;Површ алата: -PREFERENCES_TP_USEICONORTEXT;Користи иконице језичка уместо текста PREFERENCES_TP_VSCROLLBAR;Сакриј клизаче у области са алаткама PREFERENCES_TUNNELMETADATA;Копирај неизмењене IPTC/XMP (када је слика означена другим програмом) PREFERENCES_USEBUNDLEDPROFILES;Користи профиле који долазе уз програм diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index f41d7e36e..e9ab107d9 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -714,7 +714,6 @@ PREFERENCES_TAB_GENERAL;Opšte PREFERENCES_TAB_IMPROC;Obrada slike PREFERENCES_TAB_SOUND;Zvuci PREFERENCES_TP_LABEL;Površ alata: -PREFERENCES_TP_USEICONORTEXT;Koristi ikonice jezička umesto teksta PREFERENCES_TP_VSCROLLBAR;Sakrij klizače u oblasti sa alatkama PREFERENCES_TUNNELMETADATA;Kopiraj neizmenjene IPTC/XMP (kada je slika označena drugim programom) PREFERENCES_USEBUNDLEDPROFILES;Koristi profile koji dolaze uz program diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index b5ff03253..1ee8bf093 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1380,7 +1380,6 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index e0ca416d0..4c2f08850 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1338,7 +1338,6 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index 049162e68..b22c72d17 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -970,7 +970,6 @@ PREFERENCES_TAB_GENERAL;Allmän PREFERENCES_TAB_IMPROC;Bildbehandling PREFERENCES_TAB_SOUND;Ljud PREFERENCES_TP_LABEL;Verktygspanel: -PREFERENCES_TP_USEICONORTEXT;Använd ikoner istället för text PREFERENCES_TP_VSCROLLBAR;Göm verktygpanelens vertikala skrollist PREFERENCES_TUNNELMETADATA;Kopiera Exif/IPTC/XMP till utfilen oförändrat PREFERENCES_USEBUNDLEDPROFILES;Visa förinstallerade profiler diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index bae5f69de..a8d986a5f 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1337,7 +1337,6 @@ TP_WBALANCE_TEMPERATURE;Isı !PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering !PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise !PREFERENCES_TP_LABEL;Tool panel: -!PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text !PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar !PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file !PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles diff --git a/rtdata/languages/default b/rtdata/languages/default index 7cf0a48cb..dd84d51a2 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1206,7 +1206,6 @@ PREFERENCES_THUMBNAIL_INSPECTOR_MODE;Image to show PREFERENCES_THUMBNAIL_INSPECTOR_RAW;Neutral raw rendering PREFERENCES_THUMBNAIL_INSPECTOR_RAW_IF_NO_JPEG_FULLSIZE;Embedded JPEG if fullsize, neutral raw otherwise PREFERENCES_TP_LABEL;Tool panel: -PREFERENCES_TP_USEICONORTEXT;Use tab icons instead of text PREFERENCES_TP_VSCROLLBAR;Hide vertical scrollbar PREFERENCES_TUNNELMETADATA;Copy Exif/IPTC/XMP unchanged to output file PREFERENCES_USEBUNDLEDPROFILES;Use bundled profiles From 1ae01f40b984091738d6ff7c5f977f7da3687f85 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 18 Sep 2018 13:09:58 +0200 Subject: [PATCH 20/52] Verbose console output is jumbled, fixes #4558 --- rtengine/init.cc | 2 +- rtgui/lensprofile.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rtengine/init.cc b/rtengine/init.cc index 0d4560c6b..7d944fc0b 100644 --- a/rtengine/init.cc +++ b/rtengine/init.cc @@ -49,7 +49,7 @@ int init (const Settings* s, Glib::ustring baseDir, Glib::ustring userSettingsDi RawImageSource::init(); #ifdef _OPENMP -#pragma omp parallel sections +#pragma omp parallel sections if (!settings->verbose) #endif { #ifdef _OPENMP diff --git a/rtgui/lensprofile.cc b/rtgui/lensprofile.cc index a89fdb51e..a725ae9f8 100644 --- a/rtgui/lensprofile.cc +++ b/rtgui/lensprofile.cc @@ -604,7 +604,7 @@ bool LensProfilePanel::checkLensfunCanCorrect(bool automatch) LensProfilePanel::LFDbHelper::LFDbHelper() { #ifdef _OPENMP -#pragma omp parallel sections +#pragma omp parallel sections if (!options.rtSettings.verbose) #endif { #ifdef _OPENMP From 260d7fadf99fa26d6e265fb4fec1e819d8bf7ba6 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 18 Sep 2018 14:28:39 +0200 Subject: [PATCH 21/52] Adjustments in Batch Edit sometimes clear the HaldCLUT combo box, fixes #4720 --- rtgui/filmsimulation.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rtgui/filmsimulation.cc b/rtgui/filmsimulation.cc index ba8f6740b..73e35b2f8 100644 --- a/rtgui/filmsimulation.cc +++ b/rtgui/filmsimulation.cc @@ -135,6 +135,8 @@ void FilmSimulation::read( const rtengine::procparams::ProcParams* pp, const Par : pp->filmSimulation.clutFilename ); m_oldClutFilename = m_clutComboBox->getSelectedClut(); + } else { + m_clutComboBox->set_active(-1); } m_strength->setValue(pp->filmSimulation.strength); @@ -249,7 +251,7 @@ void ClutComboBox::setBatchMode(bool yes) if (batchMode != yes) { batchMode = yes; set_model(m_model()); - if (batchMode && options.multiDisplayMode) { + if (batchMode) { updateUnchangedEntry(); } } @@ -270,7 +272,6 @@ void ClutComboBox::updateUnchangedEntry() if (c.size() > 0) { Gtk::TreeModel::Row row = c[c.size()-1]; if (row[m_columns().clutFilename] == "NULL") { - std::cout << " removing " << ((void *)this) << std::endl; m_model()->erase(row); } } From bf13654a67320a73ef778b047c5f44fcb3f6927e Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 18 Sep 2018 19:19:39 +0200 Subject: [PATCH 22/52] Finally fix covertiy issues 185774 and 185779 / Uninitialized pointer read --- rtengine/FTblockDN.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index ce3b3ac9b..8f90be744 100644 --- a/rtengine/FTblockDN.cc +++ b/rtengine/FTblockDN.cc @@ -805,8 +805,8 @@ BENCHFUN } #endif - float *LbloxArray[denoiseNestedLevels * numthreads]; - float *fLbloxArray[denoiseNestedLevels * numthreads]; + float *LbloxArray[denoiseNestedLevels * numthreads] = {}; + float *fLbloxArray[denoiseNestedLevels * numthreads] = {}; if (numtiles > 1 && denoiseLuminance) { for (int i = 0; i < denoiseNestedLevels * numthreads; ++i) { @@ -1741,9 +1741,11 @@ BENCHFUN } - if (denoiseLuminance && numtiles >= 1) { - for (int i = 0; i < denoiseNestedLevels * numthreads; ++i) { + for (int i = 0; i < denoiseNestedLevels * numthreads; ++i) { + if (LbloxArray[i]) { fftwf_free(LbloxArray[i]); + } + if (fLbloxArray[i]) { fftwf_free(fLbloxArray[i]); } } From c8bcbb89a20f718649504813349eefb3418e6459 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fl=C3=B6ssie?= Date: Tue, 18 Sep 2018 20:19:03 +0200 Subject: [PATCH 23/52] Say a few words about `weight` in `SaveFormatPanel::init()` --- rtgui/saveformatpanel.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/rtgui/saveformatpanel.cc b/rtgui/saveformatpanel.cc index d5654241d..b147c5d70 100644 --- a/rtgui/saveformatpanel.cc +++ b/rtgui/saveformatpanel.cc @@ -130,11 +130,23 @@ void SaveFormatPanel::init (SaveFormat &sf) std::pair index; for (std::size_t i = 0; i < sf_templates.size(); ++i) { + // Without relating the other SaveFormat fields to the + // SaveFormat::format by additional logic the best + // way is computing a weight for fitting the input + // to one of the sf_templates. + // The format field must match exactly, tiffBits, + // tiffFloat, and pngBits fields all weigh the same. + // By providing sane sets of parameters in getFormat() + // we have perfect matches. If the parameters were + // tampered with, some entry within SaveFormat::format + // will be selected, which will be consistent again. + const int weight = 10 * (sf.format == sf_templates[i].second.format) + (sf.tiffBits == sf_templates[i].second.tiffBits) + (sf.tiffFloat == sf_templates[i].second.tiffFloat) + (sf.pngBits == sf_templates[i].second.pngBits); + if (weight > index.first) { index = {weight, i}; } From c36533704a540095d6fa8dd539e77459e968861e Mon Sep 17 00:00:00 2001 From: Roel Baars <6567747+Thanatomanic@users.noreply.github.com> Date: Thu, 20 Sep 2018 07:53:10 +0200 Subject: [PATCH 24/52] Fix for coverity issue 10721 --- rtgui/options.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rtgui/options.cc b/rtgui/options.cc index a032626b4..d20e1c198 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -422,6 +422,9 @@ void Options::setDefaults() histogramRed = true; histogramGreen = true; histogramBlue = true; + histogramLuma = false; + histogramChroma = false; + histogramRAW = false; histogramBar = true; histogramHeight = 200; histogramDrawMode = 0; From 401f6fa8e43de95afa3fcc26d05ff3ae68e71358 Mon Sep 17 00:00:00 2001 From: Roel Baars <6567747+Thanatomanic@users.noreply.github.com> Date: Thu, 20 Sep 2018 07:58:54 +0200 Subject: [PATCH 25/52] Should fix coverity issue 191811 - and a little extra --- rtgui/histogrampanel.cc | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/rtgui/histogrampanel.cc b/rtgui/histogrampanel.cc index 5293c6c00..e50a4a72a 100644 --- a/rtgui/histogrampanel.cc +++ b/rtgui/histogrampanel.cc @@ -820,14 +820,14 @@ void HistogramArea::updateBackBuffer () // draw vertical gridlines if (options.histogramDrawMode < 2) { for (int i = 1; i < nrOfVGridPartitions; i++) { - cr->move_to ((pow(2.0,i) - 1) / 255 * w + 0.5, 1.5); - cr->line_to ((pow(2.0,i) - 1) / 255 * w + 0.5, h - 2); + cr->move_to ((pow(2.0,i) - 1) / 255.0 * w + 0.5, 1.5); + cr->line_to ((pow(2.0,i) - 1) / 255.0 * w + 0.5, h - 2); cr->stroke (); } } else { for (int i = 1; i < nrOfVGridPartitions; i++) { - cr->move_to (HistogramScaling::log (255, pow(2.0,i) - 1) / 255 * w + 0.5, 1.5); - cr->line_to (HistogramScaling::log (255, pow(2.0,i) - 1) / 255 * w + 0.5, h - 2); + cr->move_to (HistogramScaling::log (255, pow(2.0,i) - 1) / 255.0 * w + 0.5, 1.5); + cr->line_to (HistogramScaling::log (255, pow(2.0,i) - 1) / 255.0 * w + 0.5, h - 2); cr->stroke (); } } @@ -835,14 +835,14 @@ void HistogramArea::updateBackBuffer () // draw horizontal gridlines if (options.histogramDrawMode == 0) { for (int i = 1; i < nrOfHGridPartitions; i++) { - cr->move_to (1.5, i * h / nrOfHGridPartitions + 0.5); - cr->line_to (w - 2, i * h / nrOfHGridPartitions + 0.5); + cr->move_to (1.5, i * (double)h / nrOfHGridPartitions + 0.5); + cr->line_to (w - 2, i * (double)h / nrOfHGridPartitions + 0.5); cr->stroke (); } } else { for (int i = 1; i < nrOfHGridPartitions; i++) { - cr->move_to (1.5, h - HistogramScaling::log (h, i * h / nrOfHGridPartitions) + 0.5); - cr->line_to (w - 2, h - HistogramScaling::log (h, i * h / nrOfHGridPartitions) + 0.5); + cr->move_to (1.5, h - HistogramScaling::log (h, i * (double)h / nrOfHGridPartitions) + 0.5); + cr->line_to (w - 2, h - HistogramScaling::log (h, i * (double)h / nrOfHGridPartitions) + 0.5); cr->stroke (); } } @@ -1086,4 +1086,4 @@ bool HistogramArea::on_motion_notify_event (GdkEventMotion* event) HistogramArea::type_signal_factor_changed HistogramArea::signal_factor_changed() { return sigFactorChanged; -} \ No newline at end of file +} From 11e7739a557365f726e40712f0a33fc1924a5309 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Thu, 20 Sep 2018 14:41:29 +0200 Subject: [PATCH 26/52] Added option to use a non-linear response for Adjuster sliders Some of the RT parameters that are currently associated to Adjusters are very hard to edit precisely by dragging the sliders, because small changes to the default produce quite visible results. Prominent examples include black level, WB tint, raw black and white points, and lens correction parameters (distortion, CA, vignetting, perspective). The problem is made worse for those settings in which not only small changes are significant, but also the associated Adjusters have a very large range (again, think of black point and WB tint). This is due to the fact that the current Adjusters have a linear response. This commit adds an option to use a non-linear (specifically logarithmic) response, which causes the sliders to move "slowly" around a designated pivot point, and progressively faster the further you move away from the pivot. Besides adding the functionality to the Adjuster class, this changeset also enables this behaviour for the following adjusters: - exposure compensation - black point - lightness/contrast/saturation/chromaticity (both in exposure and in L*a*b*) - WB tint - channel mixer - lens corrections (perspective, distortion, CA) - rotation - raw black and white points - raw CA correction --- rtgui/adjuster.cc | 97 +++++++++++++++++++++++++++++++++++--- rtgui/adjuster.h | 9 ++++ rtgui/bayerrawexposure.cc | 5 ++ rtgui/cacorrection.cc | 3 ++ rtgui/chmixer.cc | 4 ++ rtgui/distortion.cc | 3 ++ rtgui/labcurve.cc | 4 ++ rtgui/perspective.cc | 3 ++ rtgui/rawcacorrection.cc | 3 ++ rtgui/rawexposure.cc | 2 + rtgui/rotate.cc | 2 + rtgui/tonecurve.cc | 6 +++ rtgui/whitebalance.cc | 5 ++ rtgui/xtransrawexposure.cc | 4 ++ 14 files changed, 143 insertions(+), 7 deletions(-) diff --git a/rtgui/adjuster.cc b/rtgui/adjuster.cc index 6260314b1..e0eb62a1f 100644 --- a/rtgui/adjuster.cc +++ b/rtgui/adjuster.cc @@ -46,6 +46,10 @@ Adjuster::Adjuster (Glib::ustring vlabel, double vmin, double vmax, double vstep grid = NULL; imageIcon1 = imgIcon1; + logBase = 0; + logPivot = 0; + logAnchorMiddle = false; + if (imageIcon1) { setExpandAlignProperties(imageIcon1, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); } @@ -289,13 +293,13 @@ void Adjuster::resetValue (bool toInitial) if (toInitial) { // resetting to the initial editing value, when the image has been loaded - slider->set_value (addMode ? defaultVal : value2slider(defaultVal)); + setSliderValue(addMode ? defaultVal : value2slider(defaultVal)); } else { // resetting to the slider default value if (addMode) { - slider->set_value (0.); + setSliderValue(0.); } else { - slider->set_value (value2slider(ctorDefaultVal)); + setSliderValue(value2slider(ctorDefaultVal)); } } } @@ -333,7 +337,7 @@ void Adjuster::setLimits (double vmin, double vmax, double vstep, double vdefaul slider->set_digits (digits); slider->set_increments (vstep, 2.0 * vstep); slider->set_range (addMode ? vmin : value2slider(vmin), addMode ? vmax : value2slider(vmax)); - slider->set_value (addMode ? shapeValue(vdefault) : value2slider(shapeValue(vdefault))); + setSliderValue(addMode ? shapeValue(vdefault) : value2slider(shapeValue(vdefault))); //defaultVal = shapeValue (vdefault); sliderChange.block (false); spinChange.block (false); @@ -369,7 +373,7 @@ void Adjuster::spinChanged () } sliderChange.block (true); - slider->set_value (addMode ? spin->get_value () : value2slider(spin->get_value ())); + setSliderValue(addMode ? spin->get_value () : value2slider(spin->get_value ())); sliderChange.block (false); if (delay == 0) { @@ -409,7 +413,8 @@ void Adjuster::sliderChanged () } spinChange.block (true); - spin->set_value (addMode ? slider->get_value () : slider2value(slider->get_value ())); + double v = getSliderValue(); + spin->set_value (addMode ? v : slider2value(v)); spinChange.block (false); if (delay == 0 || afterReset) { @@ -447,7 +452,7 @@ void Adjuster::setValue (double a) spinChange.block (true); sliderChange.block (true); spin->set_value (shapeValue (a)); - slider->set_value (addMode ? shapeValue(a) : value2slider(shapeValue (a))); + setSliderValue(addMode ? shapeValue(a) : value2slider(shapeValue (a))); sliderChange.block (false); spinChange.block (false); afterReset = false; @@ -608,3 +613,81 @@ void Adjuster::trimValue (float &val) val = rtengine::LIM(val, static_cast(vMin), static_cast(vMax)); } + + +inline double Adjuster::getSliderValue() +{ + double val = slider->get_value(); + if (logBase) { + if (logAnchorMiddle) { + double mid = (vMax - vMin) / 2; + double mmid = vMin + mid; + if (val >= mmid) { + double range = vMax - mmid; + double x = (val - mmid) / range; + val = logPivot + (pow(logBase, x) - 1.0) / (logBase - 1.0) * (vMax - logPivot); + } else { + double range = mmid - vMin; + double x = (mmid - val) / range; + val = logPivot - (pow(logBase, x) - 1.0) / (logBase - 1.0) * (logPivot - vMin); + } + } else { + if (val >= logPivot) { + double range = vMax - logPivot; + double x = (val - logPivot) / range; + val = logPivot + (pow(logBase, x) - 1.0) / (logBase - 1.0) * range; + } else { + double range = logPivot - vMin; + double x = (logPivot - val) / range; + val = logPivot - (pow(logBase, x) - 1.0) / (logBase - 1.0) * range; + } + } + } + return val; +} + + +inline void Adjuster::setSliderValue(double val) +{ + if (logBase) { + if (logAnchorMiddle) { + double mid = (vMax - vMin) / 2; + if (val >= logPivot) { + double range = vMax - logPivot; + double x = (val - logPivot) / range; + val = (vMin + mid) + log(x * (logBase - 1.0) + 1.0) / log(logBase) * mid; + } else { + double range = logPivot - vMin; + double x = (logPivot - val) / range; + val = (vMin + mid) - log(x * (logBase - 1.0) + 1.0) / log(logBase) * mid; + } + } else { + if (val >= logPivot) { + double range = vMax - logPivot; + double x = (val - logPivot) / range; + val = logPivot + log(x * (logBase - 1.0) + 1.0) / log(logBase) * range; + } else { + double range = logPivot - vMin; + double x = (logPivot - val) / range; + val = logPivot - log(x * (logBase - 1.0) + 1.0) / log(logBase) * range; + } + } + } + slider->set_value(val); +} + + +void Adjuster::setLogScale(double base, double pivot, bool anchorMiddle) +{ + spinChange.block (true); + sliderChange.block (true); + + double cur = getSliderValue(); + logBase = base; + logPivot = pivot; + logAnchorMiddle = anchorMiddle; + setSliderValue(cur); + + sliderChange.block (false); + spinChange.block (false); +} diff --git a/rtgui/adjuster.h b/rtgui/adjuster.h index 768406a33..5b4d6f46d 100644 --- a/rtgui/adjuster.h +++ b/rtgui/adjuster.h @@ -71,10 +71,17 @@ protected: double vMax; double vStep; + double logBase; + double logPivot; + bool logAnchorMiddle; + double shapeValue (double a); void refreshLabelStyle (); double2double_fun value2slider, slider2value; + double getSliderValue(); + void setSliderValue(double val); + public: int delay; @@ -173,6 +180,8 @@ public: void trimValue (double &val); void trimValue (float &val); void trimValue (int &val); + + void setLogScale(double base, double pivot, bool anchorMiddle=false); }; #endif diff --git a/rtgui/bayerrawexposure.cc b/rtgui/bayerrawexposure.cc index 2194d1639..7a8f32389 100644 --- a/rtgui/bayerrawexposure.cc +++ b/rtgui/bayerrawexposure.cc @@ -65,6 +65,11 @@ BayerRAWExposure::BayerRAWExposure () : FoldableToolPanel(this, "bayerrawexposur pack_start( *PexBlack3, Gtk::PACK_SHRINK, 0);//black G2 pack_start( *PexBlack2, Gtk::PACK_SHRINK, 0);//black B pack_start( *PextwoGreen, Gtk::PACK_SHRINK, 0);//black 2 green + + PexBlack0->setLogScale(100, 0); + PexBlack1->setLogScale(100, 0); + PexBlack2->setLogScale(100, 0); + PexBlack3->setLogScale(100, 0); } void BayerRAWExposure::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) diff --git a/rtgui/cacorrection.cc b/rtgui/cacorrection.cc index ffaa57c34..485a5e1cf 100644 --- a/rtgui/cacorrection.cc +++ b/rtgui/cacorrection.cc @@ -40,6 +40,9 @@ CACorrection::CACorrection () : FoldableToolPanel(this, "cacorrection", M("TP_CA pack_start (*red); pack_start (*blue); + red->setLogScale(10, 0); + blue->setLogScale(10, 0); + show_all(); } diff --git a/rtgui/chmixer.cc b/rtgui/chmixer.cc index 1e3bb395e..1a122ef6f 100644 --- a/rtgui/chmixer.cc +++ b/rtgui/chmixer.cc @@ -84,6 +84,10 @@ ChMixer::ChMixer (): FoldableToolPanel(this, "chmixer", M("TP_CHMIXER_LABEL"), f red[i]->setAdjusterListener (this); green[i]->setAdjusterListener (this); blue[i]->setAdjusterListener (this); + + red[i]->setLogScale(10, red[i]->getValue()); + green[i]->setLogScale(10, green[i]->getValue()); + blue[i]->setLogScale(10, blue[i]->getValue()); } pack_start (*blabel); diff --git a/rtgui/distortion.cc b/rtgui/distortion.cc index c181ed479..b6ad7cc03 100644 --- a/rtgui/distortion.cc +++ b/rtgui/distortion.cc @@ -41,6 +41,9 @@ Distortion::Distortion (): FoldableToolPanel(this, "distortion", M("TP_DISTORTIO distor = Gtk::manage (new Adjuster (M("TP_DISTORTION_AMOUNT"), -0.5, 0.5, 0.001, 0, idistL, idistR)); distor->setAdjusterListener (this); + + distor->setLogScale(2, 0); + distor->show(); pack_start (*distor); } diff --git a/rtgui/labcurve.cc b/rtgui/labcurve.cc index 1cde4262d..2669079ab 100644 --- a/rtgui/labcurve.cc +++ b/rtgui/labcurve.cc @@ -47,6 +47,10 @@ LCurve::LCurve () : FoldableToolPanel(this, "labcurves", M("TP_LABCURVE_LABEL"), contrast->setAdjusterListener (this); chromaticity->setAdjusterListener (this); + brightness->setLogScale(2, 0, true); + contrast->setLogScale(2, 0, true); + chromaticity->setLogScale(2, 0, true); + //%%%%%%%%%%%%%%%%%% Gtk::HSeparator *hsep2 = Gtk::manage (new Gtk::HSeparator()); hsep2->show (); diff --git a/rtgui/perspective.cc b/rtgui/perspective.cc index 1ca6e54b6..4bfcc1d7b 100644 --- a/rtgui/perspective.cc +++ b/rtgui/perspective.cc @@ -39,6 +39,9 @@ PerspCorrection::PerspCorrection () : FoldableToolPanel(this, "perspective", M(" pack_start (*horiz); pack_start (*vert); + horiz->setLogScale(2, 0); + vert->setLogScale(2, 0); + show_all(); } diff --git a/rtgui/rawcacorrection.cc b/rtgui/rawcacorrection.cc index bdcc13442..fd338a445 100644 --- a/rtgui/rawcacorrection.cc +++ b/rtgui/rawcacorrection.cc @@ -63,6 +63,9 @@ RAWCACorr::RAWCACorr () : FoldableToolPanel(this, "rawcacorrection", M("TP_CHROM caBlue->show(); + caRed->setLogScale(10, 0); + caBlue->setLogScale(10, 0); + pack_start( *caAutocorrect, Gtk::PACK_SHRINK, 4); pack_start( *caAutoiterations, Gtk::PACK_SHRINK, 4); pack_start( *caRed, Gtk::PACK_SHRINK, 4); diff --git a/rtgui/rawexposure.cc b/rtgui/rawexposure.cc index 56fcf7ec9..a705ed4ca 100644 --- a/rtgui/rawexposure.cc +++ b/rtgui/rawexposure.cc @@ -45,6 +45,8 @@ RAWExposure::RAWExposure () : FoldableToolPanel(this, "rawexposure", M("TP_EXPOS pack_start( *PexPos, Gtk::PACK_SHRINK, 4);//exposi // raw highlight exposure setting is obsolete, removing from GUI //pack_start( *PexPreser, Gtk::PACK_SHRINK, 4); + + PexPos->setLogScale(100, 0); } void RAWExposure::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) diff --git a/rtgui/rotate.cc b/rtgui/rotate.cc index 802519d8d..481b65139 100644 --- a/rtgui/rotate.cc +++ b/rtgui/rotate.cc @@ -44,6 +44,8 @@ Rotate::Rotate () : FoldableToolPanel(this, "rotate", M("TP_ROTATE_LABEL")) selectStraight->signal_pressed().connect( sigc::mem_fun(*this, &Rotate::selectStraightPressed) ); + degree->setLogScale(2, 0); + show_all (); } diff --git a/rtgui/tonecurve.cc b/rtgui/tonecurve.cc index 5205d6f18..19326be26 100644 --- a/rtgui/tonecurve.cc +++ b/rtgui/tonecurve.cc @@ -106,6 +106,7 @@ ToneCurve::ToneCurve () : FoldableToolPanel(this, "tonecurve", M("TP_EXPOSURE_LA pack_start (*Gtk::manage (new Gtk::HSeparator())); expcomp = Gtk::manage (new Adjuster (M("TP_EXPOSURE_EXPCOMP"), -5, 12, 0.05, 0)); + expcomp->setLogScale(2, 0, true); pack_start (*expcomp); //----------- Highlight recovery & threshold ------------- @@ -116,6 +117,7 @@ ToneCurve::ToneCurve () : FoldableToolPanel(this, "tonecurve", M("TP_EXPOSURE_LA //----------- Black Level & Compression ------------------- black = Gtk::manage (new Adjuster (M("TP_EXPOSURE_BLACKLEVEL"), -16384, 32768, 50, 0)); + black->setLogScale(10, 0, true); pack_start (*black); shcompr = Gtk::manage (new Adjuster (M("TP_EXPOSURE_COMPRSHADOWS"), 0, 100, 1, 50)); pack_start (*shcompr); @@ -130,6 +132,10 @@ ToneCurve::ToneCurve () : FoldableToolPanel(this, "tonecurve", M("TP_EXPOSURE_LA saturation = Gtk::manage (new Adjuster (M("TP_EXPOSURE_SATURATION"), -100, 100, 1, 0)); pack_start (*saturation); + brightness->setLogScale(2, 0, true); + contrast->setLogScale(2, 0, true); + saturation->setLogScale(2, 0, true); + //----------- Curve 1 ------------------------------ pack_start (*Gtk::manage (new Gtk::HSeparator())); diff --git a/rtgui/whitebalance.cc b/rtgui/whitebalance.cc index 99a564a85..681ac16c2 100644 --- a/rtgui/whitebalance.cc +++ b/rtgui/whitebalance.cc @@ -315,6 +315,7 @@ WhiteBalance::WhiteBalance () : FoldableToolPanel(this, "whitebalance", M("TP_WB temp = Gtk::manage (new Adjuster (M("TP_WBALANCE_TEMPERATURE"), MINTEMP, MAXTEMP, 5, CENTERTEMP, itempL, itempR, &wbSlider2Temp, &wbTemp2Slider)); green = Gtk::manage (new Adjuster (M("TP_WBALANCE_GREEN"), MINGREEN, MAXGREEN, 0.001, 1.0, igreenL, igreenR)); + green->setLogScale(10, 1, true); equal = Gtk::manage (new Adjuster (M("TP_WBALANCE_EQBLUERED"), MINEQUAL, MAXEQUAL, 0.001, 1.0, iblueredL, iblueredR)); tempBias = Gtk::manage (new Adjuster(M("TP_WBALANCE_TEMPBIAS"), -0.5, 0.5, 0.01, 0.0, itempbiasL, itempbiasR)); cache_customTemp (0); @@ -689,6 +690,8 @@ void WhiteBalance::read (const ProcParams* pp, const ParamsEdited* pedited) set_inconsistent(multiImage && !pedited->wb.enabled); } + green->setLogScale(10, green->getValue(), true); + methconn.block (false); enableListener (); } @@ -794,6 +797,8 @@ void WhiteBalance::setWB (int vtemp, double vgreen) if (listener) { listener->panelChanged (EvWBTemp, Glib::ustring::compose("%1, %2", (int)temp->getValue(), Glib::ustring::format (std::setw(4), std::fixed, std::setprecision(3), green->getValue()))); } + + green->setLogScale(10, vgreen, true); } void WhiteBalance::setAdjusterBehavior (bool tempadd, bool greenadd, bool equaladd, bool tempbiasadd) diff --git a/rtgui/xtransrawexposure.cc b/rtgui/xtransrawexposure.cc index 84fae9032..480112537 100644 --- a/rtgui/xtransrawexposure.cc +++ b/rtgui/xtransrawexposure.cc @@ -53,6 +53,10 @@ XTransRAWExposure::XTransRAWExposure () : FoldableToolPanel(this, "xtransrawexpo pack_start( *PexBlackRed, Gtk::PACK_SHRINK, 0);//black pack_start( *PexBlackGreen, Gtk::PACK_SHRINK, 0);//black pack_start( *PexBlackBlue, Gtk::PACK_SHRINK, 0);//black + + PexBlackRed->setLogScale(100, 0); + PexBlackGreen->setLogScale(100, 0); + PexBlackBlue->setLogScale(100, 0); } void XTransRAWExposure::read(const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited) From 7fd276ba359e1563b630292b180fa74264015c62 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 21 Sep 2018 14:10:59 +0200 Subject: [PATCH 27/52] use 16-bit integer TIFF in "save reference image" Fixes #4824 --- rtengine/improccoordinator.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 3e9d7ab8f..4df2a9ce3 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -1353,7 +1353,7 @@ void ImProcCoordinator::saveInputICCReference(const Glib::ustring& fname, bool a im->setMetadata(imgsrc->getMetaData()->getRootExifData()); - im->saveTIFF(fname, 16, true); + im->saveTIFF(fname, 16, false, true); delete im; if (plistener) { From 6e6c0b8235de0d154a336d70fb64c07160373025 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 21 Sep 2018 14:17:57 +0200 Subject: [PATCH 28/52] Fix empty spinbox bug, #4823 --- rtgui/adjuster.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rtgui/adjuster.cc b/rtgui/adjuster.cc index e0eb62a1f..3f12b0cfb 100644 --- a/rtgui/adjuster.cc +++ b/rtgui/adjuster.cc @@ -317,8 +317,8 @@ void Adjuster::resetPressed (GdkEventButton* event) double Adjuster::shapeValue (double a) { - - return round(a * pow(double(10), digits)) / pow(double(10), digits); + double val = round(a * pow(double(10), digits)) / pow(double(10), digits); + return val == -0.0 ? 0.0 : val; } void Adjuster::setLimits (double vmin, double vmax, double vstep, double vdefault) @@ -413,7 +413,7 @@ void Adjuster::sliderChanged () } spinChange.block (true); - double v = getSliderValue(); + double v = shapeValue(getSliderValue()); spin->set_value (addMode ? v : slider2value(v)); spinChange.block (false); From 82707ecd5271509fad7d07353dd47387608800ab Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 21 Sep 2018 16:35:32 +0200 Subject: [PATCH 29/52] add missing rows to Fuji X-T3 raw files Fixes #4825 --- rtengine/dcraw.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index d302eb425..e7958f7f8 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -9082,6 +9082,9 @@ void CLASS identify() parse_tiff (thumb_offset+12); /*RT*/ exif_base = thumb_offset+12; apply_tiff(); + if (!strcmp(model, "X-T3")) { + height = raw_height - 2; + } if (!load_raw) { load_raw = &CLASS unpacked_load_raw; tiff_bps = 14; From 3f77159da3373cfe01fbc4dcc71d23f0830b9030 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 21 Sep 2018 16:59:14 +0200 Subject: [PATCH 30/52] camconst: merged multiple entries for SONY ILCE-7M3 --- rtengine/camconst.json | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index fd7b4bf0f..1f0f4e6e7 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -2298,18 +2298,6 @@ Camera constants: "pdaf_offset" : 3 }, - { // Quality C, only pdaf data - "make_model": "Sony ILCE-7M3", - // A7III, from https://www.dpreview.com/forums/post/60843139 - // in the original post: - // P 5 P 17 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11 - // - // rotated to match the start of the frame - // P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11 P 5 P 17 P 11 P 11 P 17 P 11 P 5 - "pdaf_pattern" : [ 0,12,24,36,54,66,72,84,96,114,120,132,150,156,174,180,192,204,216,234,240,252,264,276,282,300,306,324,336,342,360,372,384,402,414,420], - "pdaf_offset" : 9 - }, - { // Quality A, correction for frame width "make_model": "Sony ILCE-7R", "dcraw_matrix": [ 4913,-541,-202,-6130,13513,2906,-1564,2151,7183 ], @@ -2351,8 +2339,15 @@ Camera constants: { "iso": [ 64000, 80000, 102400 ], "levels": 16100 }, // g16340 , nc 16330, LongExp 16210 { "iso": [ 128000, 160000, 204800 ], "levels": 16000 } // r16275, g16340, nc 16330, LongExp 16330-16370 ] - } - + }, + // A7III, from https://www.dpreview.com/forums/post/60843139 + // in the original post: + // P 5 P 17 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11 + // + // rotated to match the start of the frame + // P 11 P 11 P 11 P 17 P 11 P 5 P 11 P 11 P 17 P 5 P 11 P 17 P 5 P 17 P 5 P 11 P 11 P 11 P 17 P 5 P 11 P 11 P 11 P 5 P 17 P 5 P 17 P 11 P 5 P 17 P 11 P 11 P 17 P 11 P 5 + "pdaf_pattern" : [ 0,12,24,36,54,66,72,84,96,114,120,132,150,156,174,180,192,204,216,234,240,252,264,276,282,300,306,324,336,342,360,372,384,402,414,420], + "pdaf_offset" : 9 }, { // Quality C, From efbcf5242db2595be9b3ba1b13e51a071b1b7ad9 Mon Sep 17 00:00:00 2001 From: Alberto Griggio Date: Fri, 21 Sep 2018 17:00:38 +0200 Subject: [PATCH 31/52] added basic camconst entry for Fuji X-T3 (only raw crop) --- rtengine/camconst.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index 1f0f4e6e7..309b364b3 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -1300,6 +1300,11 @@ Camera constants: "ranges": { "white": 16100 } }, + { // Quality C, only raw crop + "make_model": [ "FUJIFILM X-T3" ], + "raw_crop": [ 0, 0, 6254, 0] + }, + { // Quality B "make_model": "FUJIFILM X30", "dcraw_matrix": [ 12328,-5256,-1144,-4469,12927,1675,-87,1291,4351 ], // DNG_v8.7 D65 From bb5e6ef234dd08de9f86f7ef64a3d29e83a566f9 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 21 Sep 2018 17:32:41 +0200 Subject: [PATCH 32/52] Define raw crop for Sony ILCE-7M2 arw and dng files in camconst.json, fixes #4585 --- rtengine/camconst.json | 1 + rtengine/dcraw.cc | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index fd7b4bf0f..13b0117da 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -2319,6 +2319,7 @@ Camera constants: { // Quality A "make_model": "Sony ILCE-7M2", + "raw_crop": [ 0, 0, 6024, 4024 ], "dcraw_matrix": [ 5271,-712,-347,-6153,13653,2763,-1601,2366,7242 ], // DNGv8.7.1 "ranges": { "black": 512, "white": 16300 } }, diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index d302eb425..3c4e2d40f 100644 --- a/rtengine/dcraw.cc +++ b/rtengine/dcraw.cc @@ -9874,7 +9874,8 @@ konica_400z: width -= height > 3664 ? 8 : 32; if (!strncmp(model,"DSC",3)) black = 200 << (tiff_bps - 12); - } else if (!strcmp(make,"Sony") && raw_width == 6048) { + } else if (!strcmp(make,"Sony") && strcmp(model,"ILCE-7M2") && raw_width == 6048) { + // for Sony ILCE-7M2 the raw crop is defined in camconst.json width -= 24; if (strstr(model,"RX1") || strstr(model,"A99")) width -= 6; From c77a4876963b33ddd25ab1375bf5c6ba48df8a4f Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 21 Sep 2018 20:16:46 +0200 Subject: [PATCH 33/52] Don't use gamma for calculation of raw histogram values, #4667 --- rtengine/rawimagesource.cc | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index da89810c4..a1c720dbe 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -4720,10 +4720,10 @@ void RawImageSource::getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LU histRedRaw.clear(); histGreenRaw.clear(); histBlueRaw.clear(); - const float mult[4] = { 255.0f / Color::gamma(ri->get_white(0) - cblacksom[0]), - 255.0f / Color::gamma(ri->get_white(1) - cblacksom[1]), - 255.0f / Color::gamma(ri->get_white(2) - cblacksom[2]), - 255.0f / Color::gamma(ri->get_white(3) - cblacksom[3]) + const float mult[4] = { 255.f / (ri->get_white(0) - cblacksom[0]), + 255.f / (ri->get_white(1) - cblacksom[1]), + 255.f / (ri->get_white(2) - cblacksom[2]), + 255.f / (ri->get_white(3) - cblacksom[3]) }; const bool fourColours = ri->getSensorType() == ST_BAYER && ((mult[1] != mult[3] || cblacksom[1] != cblacksom[3]) || FC(0, 0) == 3 || FC(0, 1) == 3 || FC(1, 0) == 3 || FC(1, 1) == 3); @@ -4829,21 +4829,20 @@ void RawImageSource::getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LU } // end of critical region } // end of parallel region - for(int i = 0; i < 65536; i++) { - int idx; - idx = (int)std::min(255.0f, mult[0] * Color::gamma(std::max(0.0f, i - cblacksom[0]))); + for(int i = 0; i < histoSize; i++) { + int idx = std::min(255.f, mult[0] * std::max(0.f, i - cblacksom[0])); histRedRaw[idx] += hist[0][i]; if (ri->get_colors() > 1) { - idx = (int)std::min(255.0f, mult[1] * Color::gamma(std::max(0.0f, i - cblacksom[1]))); + idx = std::min(255.f, mult[1] * std::max(0.f, i - cblacksom[1])); histGreenRaw[idx] += hist[1][i]; if (fourColours) { - idx = (int)std::min(255.0f, mult[3] * Color::gamma(std::max(0.0f, i - cblacksom[3]))); + idx = std::min(255.f, mult[3] * std::max(0.f, i - cblacksom[3])); histGreenRaw[idx] += hist[3][i]; } - idx = (int)std::min(255.0f, mult[2] * Color::gamma(std::max(0.0f, i - cblacksom[2]))); + idx = std::min(255.f, mult[2] * std::max(0.f, i - cblacksom[2])); histBlueRaw[idx] += hist[2][i]; } } From f886ea355b374f23b3ddf79d48298696cfa77ff6 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 22 Sep 2018 11:14:00 +0200 Subject: [PATCH 34/52] Fix raw histogram for float dng files in [0.0;1.0] range, #4667 --- rtengine/rawimagesource.cc | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index a1c720dbe..1f84cad54 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -4720,10 +4720,14 @@ void RawImageSource::getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LU histRedRaw.clear(); histGreenRaw.clear(); histBlueRaw.clear(); - const float mult[4] = { 255.f / (ri->get_white(0) - cblacksom[0]), - 255.f / (ri->get_white(1) - cblacksom[1]), - 255.f / (ri->get_white(2) - cblacksom[2]), - 255.f / (ri->get_white(3) - cblacksom[3]) + + const float maxWhite = rtengine::max(ri->get_white(0), ri->get_white(1), ri->get_white(2), ri->get_white(3)); + const float scale = maxWhite <= 1.f ? 65535.f : 1.f; // special case for float raw images in [0.0;1.0] range + const float multScale = maxWhite <= 1.f ? 1.f / 255.f : 255.f; + const float mult[4] = { multScale / (ri->get_white(0) - cblacksom[0]), + multScale / (ri->get_white(1) - cblacksom[1]), + multScale / (ri->get_white(2) - cblacksom[2]), + multScale / (ri->get_white(3) - cblacksom[3]) }; const bool fourColours = ri->getSensorType() == ST_BAYER && ((mult[1] != mult[3] || cblacksom[1] != cblacksom[3]) || FC(0, 0) == 3 || FC(0, 1) == 3 || FC(1, 0) == 3 || FC(1, 1) == 3); @@ -4787,26 +4791,26 @@ void RawImageSource::getRAWHistogram (LUTu & histRedRaw, LUTu & histGreenRaw, LU c2 = ( fourColours && c2 == 1 && !(i & 1) ) ? 3 : c2; for (j = start; j < end - 1; j += 2) { - tmphist[c1][(int)ri->data[i][j]]++; - tmphist[c2][(int)ri->data[i][j + 1]]++; + tmphist[c1][(int)(ri->data[i][j] * scale)]++; + tmphist[c2][(int)(ri->data[i][j + 1] * scale)]++; } if(j < end) { // last pixel of row if width is odd - tmphist[c1][(int)ri->data[i][j]]++; + tmphist[c1][(int)(ri->data[i][j] * scale)]++; } } else if (ri->get_colors() == 1) { for (int j = start; j < end; j++) { - tmphist[0][(int)ri->data[i][j]]++; + tmphist[0][(int)(ri->data[i][j] * scale)]++; } } else if(ri->getSensorType() == ST_FUJI_XTRANS) { for (int j = start; j < end - 1; j += 2) { int c = ri->XTRANSFC(i, j); - tmphist[c][(int)ri->data[i][j]]++; + tmphist[c][(int)(ri->data[i][j] * scale)]++; } } else { for (int j = start; j < end; j++) { for (int c = 0; c < 3; c++) { - tmphist[c][(int)ri->data[i][3 * j + c]]++; + tmphist[c][(int)(ri->data[i][3 * j + c] * scale)]++; } } } From 10d671a93a6e32c4a8c3379c715330a64a0d795e Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 22 Sep 2018 12:00:37 +0200 Subject: [PATCH 35/52] CAAvoidColourshift saved unconditionally on pp3's, fixes #4827 --- rtdata/languages/default | 1 + rtgui/partialpastedlg.cc | 9 +++++++++ rtgui/partialpastedlg.h | 3 ++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index dd84d51a2..de87abe17 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -990,6 +990,7 @@ PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter PARTIALPASTE_PRSHARPENING;Post-resize sharpening PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue +PARTIALPASTE_RAWCACORR_AVOIDCOLOURSHIFT;CA avoid color shift PARTIALPASTE_RAWEXPOS_BLACK;Black levels PARTIALPASTE_RAWEXPOS_LINEAR;White point correction PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation diff --git a/rtgui/partialpastedlg.cc b/rtgui/partialpastedlg.cc index 556360bda..7b985bda9 100644 --- a/rtgui/partialpastedlg.cc +++ b/rtgui/partialpastedlg.cc @@ -133,6 +133,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren //--- raw_ca_autocorrect = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_AUTO"))); raw_caredblue = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_CAREDBLUE"))); + raw_ca_avoid_colourshift = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_AVOIDCOLOURSHIFT"))); Gtk::VBox* vboxes[8]; Gtk::HSeparator* hseps[8]; @@ -247,6 +248,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren vboxes[7]->pack_start (*Gtk::manage (new Gtk::HSeparator ()), Gtk::PACK_SHRINK, 0); vboxes[7]->pack_start (*raw_ca_autocorrect, Gtk::PACK_SHRINK, 2); vboxes[7]->pack_start (*raw_caredblue, Gtk::PACK_SHRINK, 2); + vboxes[7]->pack_start (*raw_ca_avoid_colourshift, Gtk::PACK_SHRINK, 2); Gtk::VBox* vbCol1 = Gtk::manage (new Gtk::VBox ()); Gtk::VBox* vbCol2 = Gtk::manage (new Gtk::VBox ()); @@ -393,6 +395,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren //--- raw_ca_autocorrectConn = raw_ca_autocorrect->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); raw_caredblueConn = raw_caredblue->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); + raw_ca_avoid_colourshiftconn = raw_ca_avoid_colourshift->signal_toggled().connect (sigc::bind (sigc::mem_fun(*raw, &Gtk::CheckButton::set_inconsistent), true)); add_button (M("GENERAL_OK"), Gtk::RESPONSE_OK); add_button (M("GENERAL_CANCEL"), Gtk::RESPONSE_CANCEL); @@ -464,6 +467,7 @@ void PartialPasteDlg::rawToggled () ConnectionBlocker ff_ClipControlBlocker(ff_ClipControlConn); ConnectionBlocker raw_ca_autocorrectBlocker(raw_ca_autocorrectConn); ConnectionBlocker raw_caredblueBlocker(raw_caredblueConn); + ConnectionBlocker raw_ca_avoid_colourshiftBlocker(raw_ca_avoid_colourshiftconn); raw->set_inconsistent (false); @@ -492,6 +496,7 @@ void PartialPasteDlg::rawToggled () ff_ClipControl->set_active (raw->get_active ()); raw_ca_autocorrect->set_active (raw->get_active ()); raw_caredblue->set_active (raw->get_active ()); + raw_ca_avoid_colourshift->set_active (raw->get_active ()); } void PartialPasteDlg::basicToggled () @@ -909,6 +914,10 @@ void PartialPasteDlg::applyPaste (rtengine::procparams::ProcParams* dstPP, Param filterPE.raw.cablue = falsePE.raw.cablue; } + if (!raw_ca_avoid_colourshift->get_active ()) { + filterPE.raw.ca_avoidcolourshift = falsePE.raw.ca_avoidcolourshift; + } + if (!raw_hotpix_filt->get_active ()) { filterPE.raw.hotPixelFilter = falsePE.raw.hotPixelFilter; } diff --git a/rtgui/partialpastedlg.h b/rtgui/partialpastedlg.h index 7f903730b..5195d0756 100644 --- a/rtgui/partialpastedlg.h +++ b/rtgui/partialpastedlg.h @@ -105,6 +105,7 @@ public: Gtk::CheckButton* raw_black; Gtk::CheckButton* raw_ca_autocorrect; Gtk::CheckButton* raw_caredblue; + Gtk::CheckButton* raw_ca_avoid_colourshift; Gtk::CheckButton* raw_hotpix_filt; Gtk::CheckButton* raw_deadpix_filt; Gtk::CheckButton* raw_pdaf_lines_filter; @@ -136,7 +137,7 @@ public: sigc::connection coarserotConn, finerotConn, cropConn, resizeConn, prsharpeningConn, perspectiveConn, commonTransConn; sigc::connection metadataConn, exifchConn, iptcConn, icmConn; sigc::connection df_fileConn, df_AutoSelectConn, ff_fileConn, ff_AutoSelectConn, ff_BlurRadiusConn, ff_BlurTypeConn, ff_ClipControlConn; - sigc::connection raw_caredblueConn, raw_ca_autocorrectConn, raw_hotpix_filtConn, raw_deadpix_filtConn, raw_pdaf_lines_filterConn, raw_linenoiseConn, raw_greenthreshConn, raw_ccStepsConn, raw_methodConn, raw_borderConn, raw_imagenumConn, raw_dcb_iterationsConn, raw_lmmse_iterationsConn, raw_pixelshiftConn, raw_dcb_enhanceConn, raw_exposConn, raw_preserConn, raw_blackConn; + sigc::connection raw_caredblueConn, raw_ca_autocorrectConn, raw_ca_avoid_colourshiftconn, raw_hotpix_filtConn, raw_deadpix_filtConn, raw_pdaf_lines_filterConn, raw_linenoiseConn, raw_greenthreshConn, raw_ccStepsConn, raw_methodConn, raw_borderConn, raw_imagenumConn, raw_dcb_iterationsConn, raw_lmmse_iterationsConn, raw_pixelshiftConn, raw_dcb_enhanceConn, raw_exposConn, raw_preserConn, raw_blackConn; public: PartialPasteDlg (const Glib::ustring &title, Gtk::Window* parent); From 2756fe9e35f5faef85870fb0b41d7ae4838be85f Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Sat, 22 Sep 2018 17:52:06 +0200 Subject: [PATCH 36/52] Americanized spelling of language key --- rtdata/languages/Catala | 3 ++- rtdata/languages/Chinese (Simplified) | 3 ++- rtdata/languages/Chinese (Traditional) | 3 ++- rtdata/languages/Czech | 3 ++- rtdata/languages/Dansk | 3 ++- rtdata/languages/Deutsch | 3 ++- rtdata/languages/English (UK) | 3 ++- rtdata/languages/English (US) | 3 ++- rtdata/languages/Espanol | 3 ++- rtdata/languages/Euskara | 3 ++- rtdata/languages/Francais | 3 ++- rtdata/languages/Greek | 3 ++- rtdata/languages/Hebrew | 3 ++- rtdata/languages/Italiano | 3 ++- rtdata/languages/Japanese | 7 ++++++- rtdata/languages/Latvian | 3 ++- rtdata/languages/Magyar | 3 ++- rtdata/languages/Nederlands | 3 ++- rtdata/languages/Norsk BM | 3 ++- rtdata/languages/Polish | 3 ++- rtdata/languages/Polish (Latin Characters) | 3 ++- rtdata/languages/Portugues (Brasil) | 3 ++- rtdata/languages/Russian | 3 ++- rtdata/languages/Serbian (Cyrilic Characters) | 3 ++- rtdata/languages/Serbian (Latin Characters) | 3 ++- rtdata/languages/Slovak | 3 ++- rtdata/languages/Suomi | 3 ++- rtdata/languages/Swedish | 3 ++- rtdata/languages/Turkish | 3 ++- rtdata/languages/default | 4 ++-- rtgui/partialpastedlg.cc | 2 +- rtgui/rawcacorrection.cc | 4 ++-- 32 files changed, 67 insertions(+), 34 deletions(-) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index f0288ac52..c3a7ea1d0 100644 --- a/rtdata/languages/Catala +++ b/rtdata/languages/Catala @@ -1342,7 +1342,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1464,6 +1464,7 @@ ZOOMPANEL_ZOOMOUT;Allunya\nDrecera: - !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image diff --git a/rtdata/languages/Chinese (Simplified) b/rtdata/languages/Chinese (Simplified) index c3ae44124..077da51c0 100644 --- a/rtdata/languages/Chinese (Simplified) +++ b/rtdata/languages/Chinese (Simplified) @@ -1419,7 +1419,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1525,6 +1525,7 @@ ZOOMPANEL_ZOOMOUT;缩放拉远\n快捷键: - !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression diff --git a/rtdata/languages/Chinese (Traditional) b/rtdata/languages/Chinese (Traditional) index d60d772e0..2b2477748 100644 --- a/rtdata/languages/Chinese (Traditional) +++ b/rtdata/languages/Chinese (Traditional) @@ -1004,7 +1004,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1182,6 +1182,7 @@ TP_WBALANCE_TEMPERATURE;色溫 !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAWEXPOS_BLACK;Black levels !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction diff --git a/rtdata/languages/Czech b/rtdata/languages/Czech index 0d05c24d5..18af7bf65 100644 --- a/rtdata/languages/Czech +++ b/rtdata/languages/Czech @@ -2215,7 +2215,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !HISTORY_MSG_PIXELSHIFT_DEMOSAIC;PS - Demosaic method for motion !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -2266,6 +2266,7 @@ ZOOMPANEL_ZOOMOUT;Oddálit\nZkratka: - !MAIN_BUTTON_ICCPROFCREATOR;ICC Profile Creator !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression diff --git a/rtdata/languages/Dansk b/rtdata/languages/Dansk index df5a815fa..547c5a6e6 100644 --- a/rtdata/languages/Dansk +++ b/rtdata/languages/Dansk @@ -999,7 +999,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1179,6 +1179,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAWEXPOS_BLACK;Black levels !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 0e3634683..d3c4b0150 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -2352,7 +2352,8 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - !!!!!!!!!!!!!!!!!!!!!!!!! !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_TAB_PERFORMANCE;Performance diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 11f5571e2..800e23527 100644 --- a/rtdata/languages/English (UK) +++ b/rtdata/languages/English (UK) @@ -26,7 +26,7 @@ HISTORY_MSG_392;W - Residual - Colour Balance HISTORY_MSG_419;Retinex - Colour space HISTORY_MSG_CLAMPOOG;Clip out-of-gamut colours HISTORY_MSG_COLORTONING_LABGRID_VALUE;CT - Colour correction -HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid colour shift +HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid colour shift MAIN_TAB_COLOR;Colour MAIN_TOOLTIP_BACKCOLOR0;Background colour of the preview: Theme-based\nShortcut: 9 MAIN_TOOLTIP_BACKCOLOR1;Background colour of the preview: Black\nShortcut: 9 @@ -35,6 +35,7 @@ MAIN_TOOLTIP_BACKCOLOR3;Background colour of the preview: Middle grey\nSh PARTIALPASTE_COLORGROUP;Colour Related Settings PARTIALPASTE_COLORTONING;Colour toning PARTIALPASTE_ICMSETTINGS;Colour management settings +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid colour shift PARTIALPASTE_RAW_FALSECOLOR;False colour suppression PREFERENCES_AUTOMONPROFILE;Use operating system's main monitor colour profile PREFERENCES_BEHAVIOR;Behaviour diff --git a/rtdata/languages/English (US) b/rtdata/languages/English (US) index a3c535277..fc2fa83dd 100644 --- a/rtdata/languages/English (US) +++ b/rtdata/languages/English (US) @@ -749,7 +749,7 @@ !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -990,6 +990,7 @@ !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAWEXPOS_BLACK;Black levels !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction diff --git a/rtdata/languages/Espanol b/rtdata/languages/Espanol index 3919c34be..5402f6579 100644 --- a/rtdata/languages/Espanol +++ b/rtdata/languages/Espanol @@ -1726,7 +1726,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1830,6 +1830,7 @@ ZOOMPANEL_ZOOMOUT;Reducir Zoom\nAtajo: - !PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image diff --git a/rtdata/languages/Euskara b/rtdata/languages/Euskara index 32d063a57..851536a29 100644 --- a/rtdata/languages/Euskara +++ b/rtdata/languages/Euskara @@ -1000,7 +1000,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1180,6 +1180,7 @@ TP_WBALANCE_TEMPERATURE;Tenperatura !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAWEXPOS_BLACK;Black levels !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction diff --git a/rtdata/languages/Francais b/rtdata/languages/Francais index e07c41922..9c1fcce59 100644 --- a/rtdata/languages/Francais +++ b/rtdata/languages/Francais @@ -2238,7 +2238,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -2249,6 +2249,7 @@ ZOOMPANEL_ZOOMOUT;Zoom Arrière\nRaccourci: - !ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description !MAIN_TOOLTIP_PREVIEWSHARPMASK;Preview the Sharpening Contrast Mask.\nShortcut: None\n\nOnly works when sharpening is enabled and zoom >= 100%. !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression diff --git a/rtdata/languages/Greek b/rtdata/languages/Greek index 4a406444b..086710b52 100644 --- a/rtdata/languages/Greek +++ b/rtdata/languages/Greek @@ -999,7 +999,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1179,6 +1179,7 @@ TP_WBALANCE_TEMPERATURE;Θερμοκρασία !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAWEXPOS_BLACK;Black levels !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction diff --git a/rtdata/languages/Hebrew b/rtdata/languages/Hebrew index 2f67763f2..c7477fd09 100644 --- a/rtdata/languages/Hebrew +++ b/rtdata/languages/Hebrew @@ -1000,7 +1000,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1180,6 +1180,7 @@ TP_WBALANCE_TEMPERATURE;מידת חום !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAWEXPOS_BLACK;Black levels !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction diff --git a/rtdata/languages/Italiano b/rtdata/languages/Italiano index 8e012742d..ca048d956 100644 --- a/rtdata/languages/Italiano +++ b/rtdata/languages/Italiano @@ -1601,7 +1601,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1701,6 +1701,7 @@ ZOOMPANEL_ZOOMOUT;Rimpicciolisci.\nScorciatoia: - !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image diff --git a/rtdata/languages/Japanese b/rtdata/languages/Japanese index bf0de5028..fe8b79022 100644 --- a/rtdata/languages/Japanese +++ b/rtdata/languages/Japanese @@ -780,7 +780,7 @@ HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;ラインノイズフィルタの HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAFラインフィルタ HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - コントラストのしきい値 HISTORY_MSG_RAWCACORR_AUTOIT;Rawの色収差補正 - 繰り返し -HISTORY_MSG_RAWCACORR_COLOURSHIFT;Rawの色収差補正 - 色ずれを回避 +HISTORY_MSG_RAWCACORR_COLORSHIFT;Rawの色収差補正 - 色ずれを回避 HISTORY_MSG_RAW_BORDER;Rawの境界 HISTORY_MSG_RESIZE_ALLOWUPSCALING;リサイズ - アップスケーリングを可能にする HISTORY_MSG_SHARPENING_CONTRAST;シャープ化 - コントラストのしきい値 @@ -2286,3 +2286,8 @@ ZOOMPANEL_ZOOMFITSCREEN;画像全体を画面に合わせる\nショートカッ ZOOMPANEL_ZOOMIN;ズームイン\nショートカット: + ZOOMPANEL_ZOOMOUT;ズームアウト\nショートカット: - +!!!!!!!!!!!!!!!!!!!!!!!!! +! Untranslated keys follow; remove the ! prefix after an entry is translated. +!!!!!!!!!!!!!!!!!!!!!!!!! + +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift diff --git a/rtdata/languages/Latvian b/rtdata/languages/Latvian index d664e5ceb..6689e4f95 100644 --- a/rtdata/languages/Latvian +++ b/rtdata/languages/Latvian @@ -1000,7 +1000,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1180,6 +1180,7 @@ TP_WBALANCE_TEMPERATURE;Temperatūra !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAWEXPOS_BLACK;Black levels !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction diff --git a/rtdata/languages/Magyar b/rtdata/languages/Magyar index 700d7d0be..d0f806fea 100644 --- a/rtdata/languages/Magyar +++ b/rtdata/languages/Magyar @@ -1272,7 +1272,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1399,6 +1399,7 @@ ZOOMPANEL_ZOOMOUT;Kicsinyítés - !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image diff --git a/rtdata/languages/Nederlands b/rtdata/languages/Nederlands index 12b502c6a..f5948ef26 100644 --- a/rtdata/languages/Nederlands +++ b/rtdata/languages/Nederlands @@ -2135,7 +2135,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -2200,6 +2200,7 @@ ZOOMPANEL_ZOOMOUT;Zoom uit\nSneltoets: - !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_SOFTLIGHT;Soft light !PARTIALPASTE_TM_FATTAL;Dynamic range compression diff --git a/rtdata/languages/Norsk BM b/rtdata/languages/Norsk BM index 7af97dd4e..4a76fdcda 100644 --- a/rtdata/languages/Norsk BM +++ b/rtdata/languages/Norsk BM @@ -999,7 +999,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1179,6 +1179,7 @@ TP_WBALANCE_TEMPERATURE;Temperatur !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAWEXPOS_BLACK;Black levels !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction diff --git a/rtdata/languages/Polish b/rtdata/languages/Polish index 7af6fad6e..f54de5593 100644 --- a/rtdata/languages/Polish +++ b/rtdata/languages/Polish @@ -1683,7 +1683,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1778,6 +1778,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrót: - !PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image diff --git a/rtdata/languages/Polish (Latin Characters) b/rtdata/languages/Polish (Latin Characters) index 4601472eb..d3e62a777 100644 --- a/rtdata/languages/Polish (Latin Characters) +++ b/rtdata/languages/Polish (Latin Characters) @@ -1683,7 +1683,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1778,6 +1778,7 @@ ZOOMPANEL_ZOOMOUT;Oddal\nSkrot: - !PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image diff --git a/rtdata/languages/Portugues (Brasil) b/rtdata/languages/Portugues (Brasil) index 471c07c1c..7acb91cce 100644 --- a/rtdata/languages/Portugues (Brasil) +++ b/rtdata/languages/Portugues (Brasil) @@ -2256,8 +2256,9 @@ ZOOMPANEL_ZOOMOUT;Menos Zoom\nAtalho: - !HISTOGRAM_TOOLTIP_MODE;Toggle between linear, log-linear and log-log scaling of the histogram. !HISTORY_MSG_ICM_OUTPUT_PRIMARIES;Output - Primaries !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !ICCPROFCREATOR_DESCRIPTION_ADDPARAM;Append gamma and slope values to the description +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PREFERENCES_PERFORMANCE_THREADS;Threads !PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) !PREFERENCES_TAB_PERFORMANCE;Performance diff --git a/rtdata/languages/Russian b/rtdata/languages/Russian index e00c6fc7a..36b63772e 100644 --- a/rtdata/languages/Russian +++ b/rtdata/languages/Russian @@ -1655,7 +1655,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1744,6 +1744,7 @@ ZOOMPANEL_ZOOMOUT;Отдалить\nГорячая клавиша: - !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image diff --git a/rtdata/languages/Serbian (Cyrilic Characters) b/rtdata/languages/Serbian (Cyrilic Characters) index 35d7925dc..e69c9b874 100644 --- a/rtdata/languages/Serbian (Cyrilic Characters) +++ b/rtdata/languages/Serbian (Cyrilic Characters) @@ -1577,7 +1577,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1687,6 +1687,7 @@ ZOOMPANEL_ZOOMOUT;Умањује приказ слике - !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image diff --git a/rtdata/languages/Serbian (Latin Characters) b/rtdata/languages/Serbian (Latin Characters) index e9ab107d9..727cdeb9a 100644 --- a/rtdata/languages/Serbian (Latin Characters) +++ b/rtdata/languages/Serbian (Latin Characters) @@ -1577,7 +1577,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1687,6 +1687,7 @@ ZOOMPANEL_ZOOMOUT;Umanjuje prikaz slike - !PARTIALPASTE_PREPROCESS_HOTPIXFILT;Hot pixel filter !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image diff --git a/rtdata/languages/Slovak b/rtdata/languages/Slovak index 1ee8bf093..022c715e3 100644 --- a/rtdata/languages/Slovak +++ b/rtdata/languages/Slovak @@ -1062,7 +1062,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1233,6 +1233,7 @@ ZOOMPANEL_ZOOMOUT;Oddialiť - !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAWEXPOS_BLACK;Black levels !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction diff --git a/rtdata/languages/Suomi b/rtdata/languages/Suomi index 4c2f08850..722bf1b0b 100644 --- a/rtdata/languages/Suomi +++ b/rtdata/languages/Suomi @@ -1001,7 +1001,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1181,6 +1181,7 @@ TP_WBALANCE_TEMPERATURE;Lämpötila [K] !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAWEXPOS_BLACK;Black levels !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction diff --git a/rtdata/languages/Swedish b/rtdata/languages/Swedish index b22c72d17..44c5dd475 100644 --- a/rtdata/languages/Swedish +++ b/rtdata/languages/Swedish @@ -1938,7 +1938,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -2030,6 +2030,7 @@ ZOOMPANEL_ZOOMOUT;Förminska.\nKortkommando: - !PARTIALPASTE_LOCALCONTRAST;Local contrast !PARTIALPASTE_METADATA;Metadata mode !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAW_BORDER;Raw border !PARTIALPASTE_RAW_IMAGENUM;Sub-image diff --git a/rtdata/languages/Turkish b/rtdata/languages/Turkish index a8d986a5f..a3dd1d5ea 100644 --- a/rtdata/languages/Turkish +++ b/rtdata/languages/Turkish @@ -1000,7 +1000,7 @@ TP_WBALANCE_TEMPERATURE;Isı !HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold !HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift !HISTORY_MSG_RAW_BORDER;Raw border !HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling !HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -1180,6 +1180,7 @@ TP_WBALANCE_TEMPERATURE;Isı !PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter !PARTIALPASTE_PRSHARPENING;Post-resize sharpening !PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift !PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue !PARTIALPASTE_RAWEXPOS_BLACK;Black levels !PARTIALPASTE_RAWEXPOS_LINEAR;White point correction diff --git a/rtdata/languages/default b/rtdata/languages/default index de87abe17..4ac12a093 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -748,7 +748,7 @@ HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;Line noise filter direction HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;PDAF lines filter HISTORY_MSG_PRSHARPEN_CONTRAST;PRS - Contrast threshold HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - Avoid color shift +HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift HISTORY_MSG_RAW_BORDER;Raw border HISTORY_MSG_RESIZE_ALLOWUPSCALING;Resize - Allow upscaling HISTORY_MSG_SHARPENING_CONTRAST;Sharpening - Contrast threshold @@ -989,8 +989,8 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Line noise filter PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;PDAF lines filter PARTIALPASTE_PRSHARPENING;Post-resize sharpening PARTIALPASTE_RAWCACORR_AUTO;CA auto-correction +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift PARTIALPASTE_RAWCACORR_CAREDBLUE;CA red & blue -PARTIALPASTE_RAWCACORR_AVOIDCOLOURSHIFT;CA avoid color shift PARTIALPASTE_RAWEXPOS_BLACK;Black levels PARTIALPASTE_RAWEXPOS_LINEAR;White point correction PARTIALPASTE_RAWEXPOS_PRESER;Highlight preservation diff --git a/rtgui/partialpastedlg.cc b/rtgui/partialpastedlg.cc index 7b985bda9..6b192dba9 100644 --- a/rtgui/partialpastedlg.cc +++ b/rtgui/partialpastedlg.cc @@ -133,7 +133,7 @@ PartialPasteDlg::PartialPasteDlg (const Glib::ustring &title, Gtk::Window* paren //--- raw_ca_autocorrect = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_AUTO"))); raw_caredblue = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_CAREDBLUE"))); - raw_ca_avoid_colourshift = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_AVOIDCOLOURSHIFT"))); + raw_ca_avoid_colourshift = Gtk::manage (new Gtk::CheckButton (M("PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT"))); Gtk::VBox* vboxes[8]; Gtk::HSeparator* hseps[8]; diff --git a/rtgui/rawcacorrection.cc b/rtgui/rawcacorrection.cc index fd338a445..44186bc70 100644 --- a/rtgui/rawcacorrection.cc +++ b/rtgui/rawcacorrection.cc @@ -28,8 +28,8 @@ RAWCACorr::RAWCACorr () : FoldableToolPanel(this, "rawcacorrection", M("TP_CHROM { auto m = ProcEventMapper::getInstance(); EvPreProcessCAAutoiterations = m->newEvent(DARKFRAME, "HISTORY_MSG_RAWCACORR_AUTOIT"); - EvPreProcessCAColourshift = m->newEvent(DARKFRAME, "HISTORY_MSG_RAWCACORR_COLOURSHIFT"); - EvPreProcessCAColourshiftHistory = m->newEvent(M_VOID, "HISTORY_MSG_RAWCACORR_COLOURSHIFT"); + EvPreProcessCAColourshift = m->newEvent(DARKFRAME, "HISTORY_MSG_RAWCACORR_COLORSHIFT"); + EvPreProcessCAColourshiftHistory = m->newEvent(M_VOID, "HISTORY_MSG_RAWCACORR_COLORSHIFT"); Gtk::Image* icaredL = Gtk::manage (new RTImage ("circle-red-cyan-small.png")); Gtk::Image* icaredR = Gtk::manage (new RTImage ("circle-cyan-red-small.png")); From 82187ae60e760127b818fa2fc5d75fc7995c6ab6 Mon Sep 17 00:00:00 2001 From: Roel Baars <6567747+Thanatomanic@users.noreply.github.com> Date: Sun, 23 Sep 2018 16:21:46 +0200 Subject: [PATCH 37/52] Fix for #4829 - RGB bar shows when it shouldn't --- rtgui/histogrampanel.cc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/rtgui/histogrampanel.cc b/rtgui/histogrampanel.cc index e50a4a72a..0205920d5 100644 --- a/rtgui/histogrampanel.cc +++ b/rtgui/histogrampanel.cc @@ -443,7 +443,7 @@ bool HistogramRGBArea::getShow() void HistogramRGBArea::updateBackBuffer (int r, int g, int b, const Glib::ustring &profile, const Glib::ustring &profileW) { - if (!get_realized () || !showMode) { + if (!get_realized () || !showMode || rawmode) { return; } @@ -606,10 +606,6 @@ void HistogramRGBArea::updateOptions (bool r, bool g, bool b, bool l, bool c, bo barDisplayed = false; } - // Disable (but don't hide it) the bar button when RAW histogram is displayed - if (rawMode) { - showMode = false; - } } void HistogramRGBArea::on_realize () From 7e36e86dfb49fa781be8d721c93daa16881c0b40 Mon Sep 17 00:00:00 2001 From: Roel Baars <6567747+Thanatomanic@users.noreply.github.com> Date: Sun, 23 Sep 2018 17:10:54 +0200 Subject: [PATCH 38/52] Fixed a stupid typo --- rtgui/histogrampanel.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtgui/histogrampanel.cc b/rtgui/histogrampanel.cc index 0205920d5..6ff48a9fd 100644 --- a/rtgui/histogrampanel.cc +++ b/rtgui/histogrampanel.cc @@ -443,7 +443,7 @@ bool HistogramRGBArea::getShow() void HistogramRGBArea::updateBackBuffer (int r, int g, int b, const Glib::ustring &profile, const Glib::ustring &profileW) { - if (!get_realized () || !showMode || rawmode) { + if (!get_realized () || !showMode || rawMode) { return; } From 4a28b185b9ca157984a2d2a329f1c81759d1fee4 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 24 Sep 2018 11:03:48 +0200 Subject: [PATCH 39/52] Fixes vertical displacement of Before|After views Added the 'smallbuttonbox' style to the container and removed relief to make it flat as all other header buttons. Fixes #4778 --- rtgui/editorpanel.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 8fd76d212..9100eb180 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -2184,9 +2184,11 @@ void EditorPanel::beforeAfterToggled () beforeLabel = Gtk::manage (new Gtk::Label ()); beforeLabel->set_markup (Glib::ustring ("") + M ("GENERAL_BEFORE") + ""); tbBeforeLock = Gtk::manage (new Gtk::ToggleButton ()); + tbBeforeLock->set_relief(Gtk::RELIEF_NONE); tbBeforeLock->set_tooltip_markup (M ("MAIN_TOOLTIP_BEFOREAFTERLOCK")); tbBeforeLock->signal_toggled().connect ( sigc::mem_fun (*this, &EditorPanel::tbBeforeLock_toggled) ); beforeHeaderBox = Gtk::manage (new Gtk::Box (Gtk::ORIENTATION_HORIZONTAL)); + beforeHeaderBox->get_style_context()->add_class("smallbuttonbox"); beforeHeaderBox->pack_end (*tbBeforeLock, Gtk::PACK_SHRINK, 2); beforeHeaderBox->pack_end (*beforeLabel, Gtk::PACK_SHRINK, 2); beforeHeaderBox->set_size_request (0, HeaderBoxHeight); From d758202ea86a61cb80a646a2868c414528894e39 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 24 Sep 2018 13:18:46 +0200 Subject: [PATCH 40/52] Button and progress bar style improvements - The buttons in the main notebook (ICC Profile Creator, Preferences, Fullscreen) and the buttons in the bottom-left corner under the preview (Save, Sent to queue, Send to GIMP) are now consistently flat to match all other toolbar buttons. - Progress bar thicker and more centered in their containers. --- rtdata/themes/RawTherapee-GTK3-20_.css | 57 +++++++++++++++----------- rtgui/editorpanel.cc | 3 ++ rtgui/rtwindow.cc | 3 ++ 3 files changed, 40 insertions(+), 23 deletions(-) diff --git a/rtdata/themes/RawTherapee-GTK3-20_.css b/rtdata/themes/RawTherapee-GTK3-20_.css index 91aff9a99..d87de8235 100644 --- a/rtdata/themes/RawTherapee-GTK3-20_.css +++ b/rtdata/themes/RawTherapee-GTK3-20_.css @@ -368,29 +368,7 @@ separator { margin: 5px; } -progressbar.vertical trough { - min-width: 6px; -} -progressbar.vertical trough progress { - min-width: 6px; -} - -progressbar.horizontal trough { - min-height: 6px; -} -progressbar.horizontal trough progress { - min-height: 6px; -} - -progressbar trough { - background-color: #2A2A2A; - border-color: #202020; -} - -notebook header progressbar trough { - background-color: #202020; - border-color: #181818; -} +/* */ .drawingarea { border-radius: 0; @@ -1016,3 +994,36 @@ button.combo, .image-combo .toggle, #MyFileChooserButton { padding-right: 4px; } + +/* Progress bars */ + +progressbar.horizontal { + min-width: 100px; + margin-bottom: 4px; +} + +progressbar.vertical { + min-height: 100px; +/* margin: 8px 8px 8px 0;*/ +} + +progressbar trough { + background-color: #383838; + border: none; +} + +progressbar progress { + border-color: #363636; + background-color: #FFCC00; + background-color: #215d9c; +} + +progressbar.horizontal trough, progressbar.horizontal progress { + min-height: 8px; +} + +progressbar.vertical trough, progressbar.vertical progress { + min-width: 8px; +} + +/* */ diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 9100eb180..392d12a2c 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -657,18 +657,21 @@ EditorPanel::EditorPanel (FilePanel* filePanel) Gtk::Image *saveButtonImage = Gtk::manage (new RTImage ("save.png")); saveimgas = Gtk::manage (new Gtk::Button ()); + saveimgas->set_relief(Gtk::RELIEF_NONE); saveimgas->add (*saveButtonImage); saveimgas->set_tooltip_markup (M ("MAIN_BUTTON_SAVE_TOOLTIP")); setExpandAlignProperties (saveimgas, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); Gtk::Image *queueButtonImage = Gtk::manage (new RTImage ("gears.png")); queueimg = Gtk::manage (new Gtk::Button ()); + queueimg->set_relief(Gtk::RELIEF_NONE); queueimg->add (*queueButtonImage); queueimg->set_tooltip_markup (M ("MAIN_BUTTON_PUTTOQUEUE_TOOLTIP")); setExpandAlignProperties (queueimg, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); Gtk::Image *sendToEditorButtonImage = Gtk::manage (new RTImage ("palette-brush.png")); sendtogimp = Gtk::manage (new Gtk::Button ()); + sendtogimp->set_relief(Gtk::RELIEF_NONE); sendtogimp->add (*sendToEditorButtonImage); sendtogimp->set_tooltip_markup (M ("MAIN_BUTTON_SENDTOEDITOR_TOOLTIP")); setExpandAlignProperties (sendtogimp, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_FILL); diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index a4fee1070..a52fd1ba5 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -232,6 +232,7 @@ RTWindow::RTWindow () Gtk::Button* iccProfileCreator = Gtk::manage (new Gtk::Button ()); setExpandAlignProperties (iccProfileCreator, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + iccProfileCreator->set_relief(Gtk::RELIEF_NONE); iccProfileCreator->set_image (*Gtk::manage (new RTImage ("gamut-plus.png"))); iccProfileCreator->set_tooltip_markup (M ("MAIN_BUTTON_ICCPROFCREATOR")); iccProfileCreator->signal_clicked().connect ( sigc::mem_fun (*this, &RTWindow::showICCProfileCreator) ); @@ -240,6 +241,7 @@ RTWindow::RTWindow () //Gtk::Button* preferences = Gtk::manage (new Gtk::Button (M("MAIN_BUTTON_PREFERENCES")+"...")); Gtk::Button* preferences = Gtk::manage (new Gtk::Button ()); setExpandAlignProperties (preferences, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + preferences->set_relief(Gtk::RELIEF_NONE); preferences->set_image (*Gtk::manage (new RTImage ("preferences.png"))); preferences->set_tooltip_markup (M ("MAIN_BUTTON_PREFERENCES")); preferences->signal_clicked().connect ( sigc::mem_fun (*this, &RTWindow::showPreferences) ); @@ -247,6 +249,7 @@ RTWindow::RTWindow () //btn_fullscreen = Gtk::manage( new Gtk::Button(M("MAIN_BUTTON_FULLSCREEN"))); btn_fullscreen = Gtk::manage ( new Gtk::Button()); setExpandAlignProperties (btn_fullscreen, false, false, Gtk::ALIGN_CENTER, Gtk::ALIGN_CENTER); + btn_fullscreen->set_relief(Gtk::RELIEF_NONE); btn_fullscreen->set_tooltip_markup (M ("MAIN_BUTTON_FULLSCREEN")); btn_fullscreen->set_image (*iFullscreen); btn_fullscreen->signal_clicked().connect ( sigc::mem_fun (*this, &RTWindow::toggle_fullscreen) ); From 5202a351e4f869d4f9c49ffb507eae4e94ad6b77 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 24 Sep 2018 16:50:34 +0200 Subject: [PATCH 41/52] Raw crop for Canon PowerShot SX220 HS, fixes #4831 --- rtengine/camconst.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rtengine/camconst.json b/rtengine/camconst.json index 9b44bac42..fdaaeef92 100644 --- a/rtengine/camconst.json +++ b/rtengine/camconst.json @@ -1213,6 +1213,11 @@ Camera constants: "ranges": { "white": 4050 } // nominal 4080-4093 }, + { // Quality C + "make_model": "Canon PowerShot SX220 HS", + "raw_crop": [ 92, 16, 4072, 3042 ] // Cut 2pix at lower border because of too high values in blue channel + }, + { // Quality C "make_model": [ "DJI FC2103" ], "ranges": { From 52644cd7f3dfb79ae1e2c948a020dc80e3da34ad Mon Sep 17 00:00:00 2001 From: heckflosse Date: Mon, 24 Sep 2018 16:52:03 +0200 Subject: [PATCH 42/52] Fix colour tint when using raw ca correction avoid colour shift on images with (height % 2) == 1 --- rtengine/CA_correct_RT.cc | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index a27ee7998..851c502c7 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -1232,18 +1232,18 @@ float* RawImageSource::CA_correct_RT( #pragma omp parallel { - #ifdef __SSE2__ +#ifdef __SSE2__ const vfloat onev = F2V(1.f); const vfloat twov = F2V(2.f); const vfloat zd5v = F2V(0.5f); - #endif +#endif #pragma omp for for (int i = 0; i < H; ++i) { const int firstCol = FC(i, 0) & 1; const int colour = FC(i, firstCol); const array2D* nonGreen = colour == 0 ? redFactor : blueFactor; int j = firstCol; - #ifdef __SSE2__ +#ifdef __SSE2__ for (; j < W - 7; j += 8) { const vfloat newvals = LC2VFU(rawData[i][j]); const vfloat oldvals = LVFU((*oldraw)[i][j / 2]); @@ -1252,7 +1252,7 @@ float* RawImageSource::CA_correct_RT( factors = vself(vmaskf_le(oldvals, onev), onev, factors); STVFU((*nonGreen)[i/2][j/2], LIMV(factors, zd5v, twov)); } - #endif +#endif for (; j < W; j += 2) { (*nonGreen)[i/2][j/2] = (rawData[i][j] <= 1.f || (*oldraw)[i][j / 2] <= 1.f) ? 1.f : rtengine::LIM((*oldraw)[i][j / 2] / rawData[i][j], 0.5f, 2.f); } @@ -1261,12 +1261,10 @@ float* RawImageSource::CA_correct_RT( #pragma omp single { if (H % 2) { - // odd height => factors for one channel are not set in last row => use values of preceding row - const int firstCol = FC(0, 0) & 1; - const int colour = FC(0, firstCol); - const array2D* nonGreen = colour == 0 ? blueFactor : redFactor; + // odd height => factors are not set in last row => use values of preceding row for (int j = 0; j < (W + 1) / 2; ++j) { - (*nonGreen)[(H + 1) / 2 - 1][j] = (*nonGreen)[(H + 1) / 2 - 2][j]; + (*redFactor)[(H + 1) / 2 - 1][j] = (*redFactor)[(H + 1) / 2 - 2][j]; + (*blueFactor)[(H + 1) / 2 - 1][j] = (*blueFactor)[(H + 1) / 2 - 2][j]; } } From 373ad5f12fd6768fb578746a64f3766d90d26bdb Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Mon, 24 Sep 2018 18:35:16 +0200 Subject: [PATCH 43/52] Progress bar border tweak and cleanup --- rtdata/themes/RawTherapee-GTK3-20_.css | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/rtdata/themes/RawTherapee-GTK3-20_.css b/rtdata/themes/RawTherapee-GTK3-20_.css index d87de8235..1224e3ce9 100644 --- a/rtdata/themes/RawTherapee-GTK3-20_.css +++ b/rtdata/themes/RawTherapee-GTK3-20_.css @@ -994,17 +994,16 @@ button.combo, .image-combo .toggle, #MyFileChooserButton { padding-right: 4px; } - /* Progress bars */ progressbar.horizontal { min-width: 100px; - margin-bottom: 4px; + margin-bottom: 2px; } progressbar.vertical { min-height: 100px; -/* margin: 8px 8px 8px 0;*/ + margin: 8px 0; } progressbar trough { @@ -1014,16 +1013,16 @@ progressbar trough { progressbar progress { border-color: #363636; - background-color: #FFCC00; + border-radius: 3px; background-color: #215d9c; } progressbar.horizontal trough, progressbar.horizontal progress { - min-height: 8px; + min-height: 10px; } progressbar.vertical trough, progressbar.vertical progress { - min-width: 8px; + min-width: 10px; } /* */ From 0415ee979e2ad966548d2a75e1fd4de2a76e57ba Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Tue, 25 Sep 2018 11:22:49 +0200 Subject: [PATCH 44/52] Removed [Version] section from bundled PP3 files This allows RawTherapee to use the latest defaults when applying our bundled profiles. Closes #4805 --- rtdata/profiles/Auto-Matched Curve - ISO High.pp3 | 4 ---- rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 | 4 ---- rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 | 4 ---- rtdata/profiles/Black-and-White/Black-and-White 1.pp3 | 4 ---- rtdata/profiles/Black-and-White/Black-and-White 2.pp3 | 4 ---- rtdata/profiles/Black-and-White/Black-and-White 3.pp3 | 4 ---- rtdata/profiles/Black-and-White/Black-and-White 4.pp3 | 4 ---- rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 | 4 ---- rtdata/profiles/Faded/Faded Amber 1 TM.pp3 | 4 ---- rtdata/profiles/Faded/Faded Amber 1.pp3 | 4 ---- rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 | 4 ---- rtdata/profiles/Faded/Faded Blue 1 TM.pp3 | 4 ---- rtdata/profiles/Faded/Faded Blue 1.pp3 | 4 ---- rtdata/profiles/Faded/Faded Blue Pink TM.pp3 | 4 ---- rtdata/profiles/Faded/Faded Blue Pink.pp3 | 4 ---- rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 | 4 ---- rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 | 4 ---- rtdata/profiles/Faded/Faded Golden 1.pp3 | 4 ---- rtdata/profiles/Faded/Faded Golden 2.pp3 | 4 ---- rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 | 4 ---- rtdata/profiles/Faded/Faded Green 1 TM.pp3 | 4 ---- rtdata/profiles/Faded/Faded Green 1.pp3 | 4 ---- rtdata/profiles/Faded/Faded Green 2.pp3 | 4 ---- rtdata/profiles/Faded/Faded Green 3.pp3 | 4 ---- rtdata/profiles/Faded/Faded Neutral TM.pp3 | 4 ---- rtdata/profiles/Faded/Faded Neutral.pp3 | 4 ---- rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 | 4 ---- rtdata/profiles/Faded/Faded Purple 1 TM.pp3 | 4 ---- rtdata/profiles/Faded/Faded Purple 1.pp3 | 4 ---- rtdata/profiles/Faded/Faded Purple 2 TM.pp3 | 4 ---- rtdata/profiles/Faded/Faded Purple 2.pp3 | 4 ---- rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 | 4 ---- rtdata/profiles/Faded/Faded Teal Orange TM.pp3 | 4 ---- rtdata/profiles/Faded/Faded Teal Orange.pp3 | 4 ---- rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 | 4 ---- rtdata/profiles/Faded/Faded Warm 1 TM.pp3 | 4 ---- rtdata/profiles/Faded/Faded Warm 1.pp3 | 4 ---- rtdata/profiles/Faded/Faded Warm 2.pp3 | 4 ---- rtdata/profiles/Faded/Faded Warm 3.pp3 | 4 ---- rtdata/profiles/Generic/Deep Shadows.pp3 | 4 ---- rtdata/profiles/Generic/Equilibrated.pp3 | 4 ---- rtdata/profiles/Generic/High-Key.pp3 | 4 ---- rtdata/profiles/Generic/Natural 1.pp3 | 4 ---- rtdata/profiles/Generic/Natural 2.pp3 | 4 ---- rtdata/profiles/Generic/Punchy 1.pp3 | 4 ---- rtdata/profiles/Generic/Punchy 2.pp3 | 4 ---- rtdata/profiles/Non-raw/Brighten.pp3 | 4 ---- rtdata/profiles/Pixel Shift/PS ISO High.pp3 | 4 ---- rtdata/profiles/Pixel Shift/PS ISO Low.pp3 | 4 ---- rtdata/profiles/Pixel Shift/PS ISO Medium.pp3 | 4 ---- rtdata/profiles/Pixel Shift/PS No Motion.pp3 | 4 ---- rtdata/profiles/Pop/Pop 1.pp3 | 4 ---- rtdata/profiles/Pop/Pop 2 L.pp3 | 4 ---- rtdata/profiles/Pop/Pop 3 Skin.pp3 | 4 ---- rtdata/profiles/Pop/Pop 4 BW.pp3 | 4 ---- rtdata/profiles/Portrait/Portrait Lejto.pp3 | 4 ---- rtdata/profiles/Portrait/Portrait Smooth.pp3 | 4 ---- rtdata/profiles/Skintones/Skintones - Natural TM.pp3 | 4 ---- rtdata/profiles/Skintones/Skintones - Natural.pp3 | 4 ---- rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 | 4 ---- rtdata/profiles/Skintones/Skintones - Pale TM.pp3 | 4 ---- rtdata/profiles/Skintones/Skintones - Pale.pp3 | 4 ---- rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 | 4 ---- rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 | 4 ---- rtdata/profiles/Skintones/Skintones - Studio TM.pp3 | 4 ---- rtdata/profiles/Skintones/Skintones - Studio.pp3 | 4 ---- rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 | 4 ---- rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 | 4 ---- rtdata/profiles/Standard Film Curve - ISO High.pp3 | 4 ---- rtdata/profiles/Standard Film Curve - ISO Low.pp3 | 4 ---- rtdata/profiles/Standard Film Curve - ISO Medium.pp3 | 4 ---- 71 files changed, 284 deletions(-) diff --git a/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 index c3f286ae3..36dd66908 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO High.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=5.3-544-gc2e7d924 -Version=330 - [HLRecovery] Enabled=true Method=Blend diff --git a/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 index 0e9827677..7af720c4d 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO Low.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=5.3-544-gc2e7d924 -Version=330 - [HLRecovery] Enabled=true Method=Blend diff --git a/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 b/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 index 02487a9cd..a391a7d2c 100644 --- a/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 +++ b/rtdata/profiles/Auto-Matched Curve - ISO Medium.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=5.3-544-gc2e7d924 -Version=330 - [HLRecovery] Enabled=true Method=Blend diff --git a/rtdata/profiles/Black-and-White/Black-and-White 1.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 1.pp3 index 8ee75890b..871cc7289 100644 --- a/rtdata/profiles/Black-and-White/Black-and-White 1.pp3 +++ b/rtdata/profiles/Black-and-White/Black-and-White 1.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=true Clip=0.02 diff --git a/rtdata/profiles/Black-and-White/Black-and-White 2.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 2.pp3 index f45ce9eb8..20579d56a 100644 --- a/rtdata/profiles/Black-and-White/Black-and-White 2.pp3 +++ b/rtdata/profiles/Black-and-White/Black-and-White 2.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=true Clip=0.02 diff --git a/rtdata/profiles/Black-and-White/Black-and-White 3.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 3.pp3 index ae512281a..0e62f7a0b 100644 --- a/rtdata/profiles/Black-and-White/Black-and-White 3.pp3 +++ b/rtdata/profiles/Black-and-White/Black-and-White 3.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=true Clip=0.02 diff --git a/rtdata/profiles/Black-and-White/Black-and-White 4.pp3 b/rtdata/profiles/Black-and-White/Black-and-White 4.pp3 index 630b5bafc..679630c4c 100644 --- a/rtdata/profiles/Black-and-White/Black-and-White 4.pp3 +++ b/rtdata/profiles/Black-and-White/Black-and-White 4.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=true Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 index dc602e9f8..b636f3a8d 100644 --- a/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Amber 1 TM Bright.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 b/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 index 9841feaf6..781ed1380 100644 --- a/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Amber 1 TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Amber 1.pp3 b/rtdata/profiles/Faded/Faded Amber 1.pp3 index f446ddfde..068fb369c 100644 --- a/rtdata/profiles/Faded/Faded Amber 1.pp3 +++ b/rtdata/profiles/Faded/Faded Amber 1.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 index ca5cd1608..43a1f72bd 100644 --- a/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Blue 1 TM Bright.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 b/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 index 121969069..a0931ff2c 100644 --- a/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Blue 1 TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Blue 1.pp3 b/rtdata/profiles/Faded/Faded Blue 1.pp3 index 55cdb7493..a25670c0f 100644 --- a/rtdata/profiles/Faded/Faded Blue 1.pp3 +++ b/rtdata/profiles/Faded/Faded Blue 1.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 b/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 index 571d11611..6950325f1 100644 --- a/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 +++ b/rtdata/profiles/Faded/Faded Blue Pink TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Blue Pink.pp3 b/rtdata/profiles/Faded/Faded Blue Pink.pp3 index c60fe23d2..ac426a671 100644 --- a/rtdata/profiles/Faded/Faded Blue Pink.pp3 +++ b/rtdata/profiles/Faded/Faded Blue Pink.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 index 3ae99186e..ec0b45cf8 100644 --- a/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Chocolate 1 TM Bright.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 index 3eb53a151..e60da1e22 100644 --- a/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Chocolate 2 TM Bright.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Golden 1.pp3 b/rtdata/profiles/Faded/Faded Golden 1.pp3 index c8f5d26a4..68e7d163c 100644 --- a/rtdata/profiles/Faded/Faded Golden 1.pp3 +++ b/rtdata/profiles/Faded/Faded Golden 1.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Golden 2.pp3 b/rtdata/profiles/Faded/Faded Golden 2.pp3 index 1e7bb927d..ffb688403 100644 --- a/rtdata/profiles/Faded/Faded Golden 2.pp3 +++ b/rtdata/profiles/Faded/Faded Golden 2.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 index 036c58fdc..6e5786bda 100644 --- a/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Green 1 TM Bright.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Green 1 TM.pp3 b/rtdata/profiles/Faded/Faded Green 1 TM.pp3 index d3f7c6adc..d3a8b3919 100644 --- a/rtdata/profiles/Faded/Faded Green 1 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Green 1 TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Green 1.pp3 b/rtdata/profiles/Faded/Faded Green 1.pp3 index 7ee20b51a..89a0b1afa 100644 --- a/rtdata/profiles/Faded/Faded Green 1.pp3 +++ b/rtdata/profiles/Faded/Faded Green 1.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Green 2.pp3 b/rtdata/profiles/Faded/Faded Green 2.pp3 index 2c908cf2e..1d25d36cf 100644 --- a/rtdata/profiles/Faded/Faded Green 2.pp3 +++ b/rtdata/profiles/Faded/Faded Green 2.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Green 3.pp3 b/rtdata/profiles/Faded/Faded Green 3.pp3 index 570e4f291..4353eaa1c 100644 --- a/rtdata/profiles/Faded/Faded Green 3.pp3 +++ b/rtdata/profiles/Faded/Faded Green 3.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Neutral TM.pp3 b/rtdata/profiles/Faded/Faded Neutral TM.pp3 index 2f2e856ed..8b5beb761 100644 --- a/rtdata/profiles/Faded/Faded Neutral TM.pp3 +++ b/rtdata/profiles/Faded/Faded Neutral TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Neutral.pp3 b/rtdata/profiles/Faded/Faded Neutral.pp3 index c01e7c09f..adf5069c1 100644 --- a/rtdata/profiles/Faded/Faded Neutral.pp3 +++ b/rtdata/profiles/Faded/Faded Neutral.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 index 75250f299..dc686e332 100644 --- a/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Purple 1 TM Bright.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 b/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 index 24496dc67..71b0b780e 100644 --- a/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Purple 1 TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Purple 1.pp3 b/rtdata/profiles/Faded/Faded Purple 1.pp3 index a77d52afd..9224db874 100644 --- a/rtdata/profiles/Faded/Faded Purple 1.pp3 +++ b/rtdata/profiles/Faded/Faded Purple 1.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 b/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 index 93017a0b1..12c1d4275 100644 --- a/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Purple 2 TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Purple 2.pp3 b/rtdata/profiles/Faded/Faded Purple 2.pp3 index 650d38da6..39f401ca7 100644 --- a/rtdata/profiles/Faded/Faded Purple 2.pp3 +++ b/rtdata/profiles/Faded/Faded Purple 2.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 b/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 index c9d2eaf7a..fba0dc024 100644 --- a/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Teal Orange TM Bright.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 b/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 index 2e4b33b10..34302c02e 100644 --- a/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 +++ b/rtdata/profiles/Faded/Faded Teal Orange TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Teal Orange.pp3 b/rtdata/profiles/Faded/Faded Teal Orange.pp3 index a2f4cf765..946812758 100644 --- a/rtdata/profiles/Faded/Faded Teal Orange.pp3 +++ b/rtdata/profiles/Faded/Faded Teal Orange.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 b/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 index b742b71be..18a5898f2 100644 --- a/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 +++ b/rtdata/profiles/Faded/Faded Warm 1 TM Bright.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 b/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 index 3bea604e0..9f8157139 100644 --- a/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 +++ b/rtdata/profiles/Faded/Faded Warm 1 TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Warm 1.pp3 b/rtdata/profiles/Faded/Faded Warm 1.pp3 index 3f7e67442..8fa907460 100644 --- a/rtdata/profiles/Faded/Faded Warm 1.pp3 +++ b/rtdata/profiles/Faded/Faded Warm 1.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Warm 2.pp3 b/rtdata/profiles/Faded/Faded Warm 2.pp3 index ab60ddb4e..567e235f4 100644 --- a/rtdata/profiles/Faded/Faded Warm 2.pp3 +++ b/rtdata/profiles/Faded/Faded Warm 2.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Faded/Faded Warm 3.pp3 b/rtdata/profiles/Faded/Faded Warm 3.pp3 index 4a53330e8..873f01f35 100644 --- a/rtdata/profiles/Faded/Faded Warm 3.pp3 +++ b/rtdata/profiles/Faded/Faded Warm 3.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Generic/Deep Shadows.pp3 b/rtdata/profiles/Generic/Deep Shadows.pp3 index 4fe3b95cb..cfee29587 100644 --- a/rtdata/profiles/Generic/Deep Shadows.pp3 +++ b/rtdata/profiles/Generic/Deep Shadows.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Generic/Equilibrated.pp3 b/rtdata/profiles/Generic/Equilibrated.pp3 index 744f3032e..3194ca5ff 100644 --- a/rtdata/profiles/Generic/Equilibrated.pp3 +++ b/rtdata/profiles/Generic/Equilibrated.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Generic/High-Key.pp3 b/rtdata/profiles/Generic/High-Key.pp3 index 3046dd460..9714151a0 100644 --- a/rtdata/profiles/Generic/High-Key.pp3 +++ b/rtdata/profiles/Generic/High-Key.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=true Clip=0.02 diff --git a/rtdata/profiles/Generic/Natural 1.pp3 b/rtdata/profiles/Generic/Natural 1.pp3 index 8bfd2ffb0..4a21f7a05 100644 --- a/rtdata/profiles/Generic/Natural 1.pp3 +++ b/rtdata/profiles/Generic/Natural 1.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=true Clip=0.02 diff --git a/rtdata/profiles/Generic/Natural 2.pp3 b/rtdata/profiles/Generic/Natural 2.pp3 index 940cab16e..c1bf8a832 100644 --- a/rtdata/profiles/Generic/Natural 2.pp3 +++ b/rtdata/profiles/Generic/Natural 2.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=true Clip=0.02 diff --git a/rtdata/profiles/Generic/Punchy 1.pp3 b/rtdata/profiles/Generic/Punchy 1.pp3 index ae6cdbb7e..370862258 100644 --- a/rtdata/profiles/Generic/Punchy 1.pp3 +++ b/rtdata/profiles/Generic/Punchy 1.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=true Clip=0.02 diff --git a/rtdata/profiles/Generic/Punchy 2.pp3 b/rtdata/profiles/Generic/Punchy 2.pp3 index 750b01565..c98f8e87f 100644 --- a/rtdata/profiles/Generic/Punchy 2.pp3 +++ b/rtdata/profiles/Generic/Punchy 2.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=true Clip=0.02 diff --git a/rtdata/profiles/Non-raw/Brighten.pp3 b/rtdata/profiles/Non-raw/Brighten.pp3 index 267aa4e0b..863102ae0 100644 --- a/rtdata/profiles/Non-raw/Brighten.pp3 +++ b/rtdata/profiles/Non-raw/Brighten.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.2 -Version=322 - [Luminance Curve] Brightness=0 Contrast=0 diff --git a/rtdata/profiles/Pixel Shift/PS ISO High.pp3 b/rtdata/profiles/Pixel Shift/PS ISO High.pp3 index 87af3febd..02cd7047c 100644 --- a/rtdata/profiles/Pixel Shift/PS ISO High.pp3 +++ b/rtdata/profiles/Pixel Shift/PS ISO High.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=5.4 -Version=332 - [RAW] CA=true diff --git a/rtdata/profiles/Pixel Shift/PS ISO Low.pp3 b/rtdata/profiles/Pixel Shift/PS ISO Low.pp3 index 3f907a117..afd3b762c 100644 --- a/rtdata/profiles/Pixel Shift/PS ISO Low.pp3 +++ b/rtdata/profiles/Pixel Shift/PS ISO Low.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=5.4 -Version=332 - [Sharpening] Enabled=true Contrast=5 diff --git a/rtdata/profiles/Pixel Shift/PS ISO Medium.pp3 b/rtdata/profiles/Pixel Shift/PS ISO Medium.pp3 index 16463b1b0..71e9c3919 100644 --- a/rtdata/profiles/Pixel Shift/PS ISO Medium.pp3 +++ b/rtdata/profiles/Pixel Shift/PS ISO Medium.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=5.4 -Version=332 - [RAW] CA=true diff --git a/rtdata/profiles/Pixel Shift/PS No Motion.pp3 b/rtdata/profiles/Pixel Shift/PS No Motion.pp3 index 948c98a3a..af624912e 100644 --- a/rtdata/profiles/Pixel Shift/PS No Motion.pp3 +++ b/rtdata/profiles/Pixel Shift/PS No Motion.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=5.4 -Version=332 - [Sharpening] Enabled=true Contrast=5 diff --git a/rtdata/profiles/Pop/Pop 1.pp3 b/rtdata/profiles/Pop/Pop 1.pp3 index 61685727e..c86b146a8 100644 --- a/rtdata/profiles/Pop/Pop 1.pp3 +++ b/rtdata/profiles/Pop/Pop 1.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Pop/Pop 2 L.pp3 b/rtdata/profiles/Pop/Pop 2 L.pp3 index 13fe80293..854bd3eb5 100644 --- a/rtdata/profiles/Pop/Pop 2 L.pp3 +++ b/rtdata/profiles/Pop/Pop 2 L.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Pop/Pop 3 Skin.pp3 b/rtdata/profiles/Pop/Pop 3 Skin.pp3 index 90ce7e346..ec50418b1 100644 --- a/rtdata/profiles/Pop/Pop 3 Skin.pp3 +++ b/rtdata/profiles/Pop/Pop 3 Skin.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Pop/Pop 4 BW.pp3 b/rtdata/profiles/Pop/Pop 4 BW.pp3 index 4277869a4..b26a9d8a7 100644 --- a/rtdata/profiles/Pop/Pop 4 BW.pp3 +++ b/rtdata/profiles/Pop/Pop 4 BW.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Portrait/Portrait Lejto.pp3 b/rtdata/profiles/Portrait/Portrait Lejto.pp3 index 0fe9d68ad..085915ad4 100644 --- a/rtdata/profiles/Portrait/Portrait Lejto.pp3 +++ b/rtdata/profiles/Portrait/Portrait Lejto.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Portrait/Portrait Smooth.pp3 b/rtdata/profiles/Portrait/Portrait Smooth.pp3 index 26bb855dd..8079c050d 100644 --- a/rtdata/profiles/Portrait/Portrait Smooth.pp3 +++ b/rtdata/profiles/Portrait/Portrait Smooth.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 b/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 index ba2ff3be4..d2cd3bb77 100644 --- a/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Natural TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Skintones/Skintones - Natural.pp3 b/rtdata/profiles/Skintones/Skintones - Natural.pp3 index fb05ab00f..0fcdbfbfa 100644 --- a/rtdata/profiles/Skintones/Skintones - Natural.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Natural.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 index 7ed909f89..f2d2add0e 100644 --- a/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Pale TM Bright.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 b/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 index 3e3476e92..d1eefc4c8 100644 --- a/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Pale TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Skintones/Skintones - Pale.pp3 b/rtdata/profiles/Skintones/Skintones - Pale.pp3 index 7f6aa9c99..b22470758 100644 --- a/rtdata/profiles/Skintones/Skintones - Pale.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Pale.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 b/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 index 26815da33..65a8ea742 100644 --- a/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Soft Texture.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 b/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 index 691cc118d..23ae9feac 100644 --- a/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Strong Texture.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 b/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 index 944670a23..7d9482169 100644 --- a/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Studio TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Skintones/Skintones - Studio.pp3 b/rtdata/profiles/Skintones/Skintones - Studio.pp3 index d58c7be11..f23d6dbfd 100644 --- a/rtdata/profiles/Skintones/Skintones - Studio.pp3 +++ b/rtdata/profiles/Skintones/Skintones - Studio.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 index 227cf09f9..a04141050 100644 --- a/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 +++ b/rtdata/profiles/Skintones/Skintones - StudioBase 1 TM.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 b/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 index e0d38aefc..64f284261 100644 --- a/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 +++ b/rtdata/profiles/Skintones/Skintones - StudioBase 1.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=4.2.84 -Version=322 - [Exposure] Auto=false Clip=0.02 diff --git a/rtdata/profiles/Standard Film Curve - ISO High.pp3 b/rtdata/profiles/Standard Film Curve - ISO High.pp3 index fddcd74a8..bedc931ee 100644 --- a/rtdata/profiles/Standard Film Curve - ISO High.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO High.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=5.3-544-gc2e7d924 -Version=330 - [HLRecovery] Enabled=true Method=Blend diff --git a/rtdata/profiles/Standard Film Curve - ISO Low.pp3 b/rtdata/profiles/Standard Film Curve - ISO Low.pp3 index 9db0b3da8..d403119b9 100644 --- a/rtdata/profiles/Standard Film Curve - ISO Low.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO Low.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=5.3-544-gc2e7d924 -Version=330 - [HLRecovery] Enabled=true Method=Blend diff --git a/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 b/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 index 47bcdb0de..6e00d6705 100644 --- a/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 +++ b/rtdata/profiles/Standard Film Curve - ISO Medium.pp3 @@ -1,7 +1,3 @@ -[Version] -AppVersion=5.3-544-gc2e7d924 -Version=330 - [HLRecovery] Enabled=true Method=Blend From 5ece07861d1ec1399f0a6c158b921673f940a2b4 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Tue, 25 Sep 2018 22:21:02 +0200 Subject: [PATCH 45/52] Don't trigger color toning listener when color toning is disabled --- rtengine/improccoordinator.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 4df2a9ce3..298c3fc58 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -648,7 +648,7 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) abwListener->BWChanged((float) rrm, (float) ggm, (float) bbm); } - if (params.colorToning.autosat && actListener) { + if (params.colorToning.enabled && params.colorToning.autosat && actListener) { if (settings->verbose) { printf("ImProcCoordinator / Auto CT: indi=%d satH=%d satPR=%d\n", indi, (int)colourToningSatLimit, (int) colourToningSatLimitOpacity); } From 80530d47d4786c56a563e2bdbab4ad7b01074ca5 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 27 Sep 2018 10:53:32 +0200 Subject: [PATCH 46/52] Raw chromatic aberration correction's Avoid Color Shift causes purple halo, fixes #4838 --- rtengine/CA_correct_RT.cc | 43 ++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index 851c502c7..6a36ca88a 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -141,18 +141,19 @@ float* RawImageSource::CA_correct_RT( } } + constexpr int cb = 4; // 4 pixels border will be excluded from 'Avoid Colour Shift' array2D* redFactor = nullptr; array2D* blueFactor = nullptr; array2D* oldraw = nullptr; if (avoidColourshift) { - redFactor = new array2D((W+1)/2, (H+1)/2); - blueFactor = new array2D((W+1)/2, (H+1)/2); - oldraw = new array2D((W + 1) / 2, H); + redFactor = new array2D((W + 1 - 2 * cb) / 2, (H + 1 - 2 * cb) / 2); + blueFactor = new array2D((W + 1 - 2 * cb) / 2, (H + 1 - 2 * cb) / 2); + oldraw = new array2D((W + 1- 2 * cb) / 2, H- 2 * cb); // copy raw values before ca correction #pragma omp parallel for - for (int i = 0; i < H; ++i) { - for (int j = FC(i, 0) & 1; j < W; j += 2) { - (*oldraw)[i][j / 2] = rawData[i][j]; + for (int i = cb; i < H - cb; ++i) { + for (int j = cb + (FC(i, 0) & 1); j < W - cb; j += 2) { + (*oldraw)[i - cb][(j - cb) / 2] = rawData[i][j]; } } } @@ -1238,14 +1239,14 @@ float* RawImageSource::CA_correct_RT( const vfloat zd5v = F2V(0.5f); #endif #pragma omp for - for (int i = 0; i < H; ++i) { + for (int i = 0; i < H - 2 * cb; ++i) { const int firstCol = FC(i, 0) & 1; const int colour = FC(i, firstCol); const array2D* nonGreen = colour == 0 ? redFactor : blueFactor; int j = firstCol; #ifdef __SSE2__ - for (; j < W - 7; j += 8) { - const vfloat newvals = LC2VFU(rawData[i][j]); + for (; j < W - 7 - 2 * cb; j += 8) { + const vfloat newvals = LC2VFU(rawData[i + cb][j + cb]); const vfloat oldvals = LVFU((*oldraw)[i][j / 2]); vfloat factors = oldvals / newvals; factors = vself(vmaskf_le(newvals, onev), onev, factors); @@ -1253,8 +1254,8 @@ float* RawImageSource::CA_correct_RT( STVFU((*nonGreen)[i/2][j/2], LIMV(factors, zd5v, twov)); } #endif - for (; j < W; j += 2) { - (*nonGreen)[i/2][j/2] = (rawData[i][j] <= 1.f || (*oldraw)[i][j / 2] <= 1.f) ? 1.f : rtengine::LIM((*oldraw)[i][j / 2] / rawData[i][j], 0.5f, 2.f); + for (; j < W - 2 * cb; j += 2) { + (*nonGreen)[i/2][j/2] = (rawData[i + cb][j + cb] <= 1.f || (*oldraw)[i][j / 2] <= 1.f) ? 1.f : rtengine::LIM((*oldraw)[i][j / 2] / rawData[i + cb][j + cb], 0.5f, 2.f); } } @@ -1262,9 +1263,9 @@ float* RawImageSource::CA_correct_RT( { if (H % 2) { // odd height => factors are not set in last row => use values of preceding row - for (int j = 0; j < (W + 1) / 2; ++j) { - (*redFactor)[(H + 1) / 2 - 1][j] = (*redFactor)[(H + 1) / 2 - 2][j]; - (*blueFactor)[(H + 1) / 2 - 1][j] = (*blueFactor)[(H + 1) / 2 - 2][j]; + for (int j = 0; j < (W + 1 - 2 * cb) / 2; ++j) { + (*redFactor)[(H - 2 * cb + 1) / 2 - 1][j] = (*redFactor)[(H - 2 * cb + 1) / 2 - 2][j]; + (*blueFactor)[(H - 2 * cb + 1) / 2 - 1][j] = (*blueFactor)[(H - 2 * cb + 1) / 2 - 2][j]; } } @@ -1274,24 +1275,24 @@ float* RawImageSource::CA_correct_RT( const int ngCol = FC(ngRow, 0) & 1; const int colour = FC(ngRow, ngCol); const array2D* nonGreen = colour == 0 ? redFactor : blueFactor; - for (int i = 0; i < (H + 1) / 2; ++i) { - (*nonGreen)[i][(W + 1) / 2 - 1] = (*nonGreen)[i][(W + 1) / 2 - 2]; + for (int i = 0; i < (H + 1 - 2 * cb) / 2; ++i) { + (*nonGreen)[i][(W - 2 * cb + 1) / 2 - 1] = (*nonGreen)[i][(W - 2* cb + 1) / 2 - 2]; } } } // blur correction factors - gaussianBlur(*redFactor, *redFactor, (W+1)/2, (H+1)/2, 30.0); - gaussianBlur(*blueFactor, *blueFactor, (W+1)/2, (H+1)/2, 30.0); + gaussianBlur(*redFactor, *redFactor, (W+1 - 2 * cb)/2, (H+1 - 2 * cb)/2, 30.0); + gaussianBlur(*blueFactor, *blueFactor, (W+1 - 2 * cb)/2, (H+1 - 2 * cb)/2, 30.0); // apply correction factors to avoid (reduce) colour shift #pragma omp for - for (int i = 0; i < H; ++i) { + for (int i = 0; i < H - 2 * cb; ++i) { const int firstCol = FC(i, 0) & 1; const int colour = FC(i, firstCol); const array2D* nonGreen = colour == 0 ? redFactor : blueFactor; - for (int j = firstCol; j < W; j += 2) { - rawData[i][j] *= (*nonGreen)[i/2][j/2]; + for (int j = firstCol; j < W - 2 * cb; j += 2) { + rawData[i + cb][j + cb] *= (*nonGreen)[i/2][j/2]; } } } From 080033765cc066f0a1296c28d342179e551b970b Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 27 Sep 2018 14:13:04 +0200 Subject: [PATCH 47/52] Exclude 2pix border from raw ca correction --- rtengine/CA_correct_RT.cc | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index 6a36ca88a..22ad77e63 100644 --- a/rtengine/CA_correct_RT.cc +++ b/rtengine/CA_correct_RT.cc @@ -125,9 +125,11 @@ float* RawImageSource::CA_correct_RT( ) { BENCHFUN -// multithreaded and vectorized by Ingo Weyrich + // multithreaded and vectorized by Ingo Weyrich constexpr int ts = 128; constexpr int tsh = ts / 2; + constexpr int cb = 2; // 2 pixels border will be excluded from correction + //shifts to location of vertical and diagonal neighbours constexpr int v1 = ts, v2 = 2 * ts, v3 = 3 * ts, v4 = 4 * ts; //, p1=-ts+1, p2=-2*ts+2, p3=-3*ts+3, m1=ts+1, m2=2*ts+2, m3=3*ts+3; @@ -141,7 +143,6 @@ float* RawImageSource::CA_correct_RT( } } - constexpr int cb = 4; // 4 pixels border will be excluded from 'Avoid Colour Shift' array2D* redFactor = nullptr; array2D* blueFactor = nullptr; array2D* oldraw = nullptr; @@ -1209,15 +1210,15 @@ float* RawImageSource::CA_correct_RT( // copy temporary image matrix back to image matrix #pragma omp for - for (int row = 0; row < height; row++) { - int col = FC(row, 0) & 1; + for (int row = cb; row < height - cb; row++) { + int col = cb + (FC(row, 0) & 1); int indx = (row * width + col) >> 1; #ifdef __SSE2__ - for (; col < width - 7 - (3 * (W & 1)); col += 8, indx += 4) { + for (; col < width - 7 - cb; col += 8, indx += 4) { STC2VFU(rawData[row][col], LVFU(RawDataTmp[indx])); } #endif - for (; col < width - (3 * (W & 1)); col += 2, indx++) { + for (; col < width - cb; col += 2, indx++) { rawData[row][col] = RawDataTmp[indx]; } } @@ -1282,8 +1283,8 @@ float* RawImageSource::CA_correct_RT( } // blur correction factors - gaussianBlur(*redFactor, *redFactor, (W+1 - 2 * cb)/2, (H+1 - 2 * cb)/2, 30.0); - gaussianBlur(*blueFactor, *blueFactor, (W+1 - 2 * cb)/2, (H+1 - 2 * cb)/2, 30.0); + gaussianBlur(*redFactor, *redFactor, (W + 1 - 2 * cb) / 2, (H + 1 - 2 * cb) / 2, 30.0); + gaussianBlur(*blueFactor, *blueFactor, (W + 1 - 2 * cb) / 2, (H + 1 - 2 * cb) / 2, 30.0); // apply correction factors to avoid (reduce) colour shift #pragma omp for @@ -1292,7 +1293,7 @@ float* RawImageSource::CA_correct_RT( const int colour = FC(i, firstCol); const array2D* nonGreen = colour == 0 ? redFactor : blueFactor; for (int j = firstCol; j < W - 2 * cb; j += 2) { - rawData[i + cb][j + cb] *= (*nonGreen)[i/2][j/2]; + rawData[i + cb][j + cb] *= (*nonGreen)[i / 2][j / 2]; } } } From 095cb010e52dabdfd751e2ea1e400fe54b7e8cfe Mon Sep 17 00:00:00 2001 From: heckflosse Date: Thu, 27 Sep 2018 18:16:29 +0200 Subject: [PATCH 48/52] reduce updates to preview, panning background, navigator and thumbs, fixes #4834 --- rtengine/improccoordinator.cc | 1431 ++++++++++++++++----------------- rtengine/improccoordinator.h | 2 +- rtengine/procparams.cc | 71 +- rtengine/procparams.h | 3 + rtgui/thumbnail.cc | 50 +- rtgui/thumbnail.h | 31 +- 6 files changed, 824 insertions(+), 764 deletions(-) diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 298c3fc58..52a1d10bc 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -140,809 +140,805 @@ DetailedCrop* ImProcCoordinator::createCrop(::EditDataProvider *editDataProvider // todo: bitmask containing desired actions, taken from changesSinceLast -// cropCall: calling crop, used to prevent self-updates ...doesn't seem to be used -void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) +void ImProcCoordinator::updatePreviewImage(int todo, bool panningRelatedChange) { MyMutex::MyLock processingLock(mProcessing); - int numofphases = 14; + + constexpr int numofphases = 14; int readyphase = 0; - bwAutoR = bwAutoG = bwAutoB = -9000.f; - - if (todo == CROP && ipf.needsPCVignetting()) { - todo |= TRANSFORM; // Change about Crop does affect TRANSFORM - } - - bool highDetailNeeded = false; - - if (options.prevdemo == PD_Sidecar) { - highDetailNeeded = true; //i#2664 - } else { - highDetailNeeded = (todo & M_HIGHQUAL); - } + bool highDetailNeeded = options.prevdemo == PD_Sidecar ? true : (todo & M_HIGHQUAL); // Check if any detail crops need high detail. If not, take a fast path short cut if (!highDetailNeeded) { - for (size_t i = 0; i < crops.size(); i++) + for (size_t i = 0; i < crops.size(); i++) { if (crops[i]->get_skip() == 1) { // skip=1 -> full resolution highDetailNeeded = true; break; } - } - - RAWParams rp = params.raw; - ColorManagementParams cmp = params.icm; - LCurveParams lcur = params.labCurve; - - if (!highDetailNeeded) { - // if below 100% magnification, take a fast path - if (rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE) && rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE)) { - rp.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); - } - - //bayerrp.all_enhance = false; - - if (rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE) && rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE)) { - rp.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); - } - - rp.bayersensor.ccSteps = 0; - rp.xtranssensor.ccSteps = 0; - //rp.deadPixelFilter = rp.hotPixelFilter = false; - } - - progress("Applying white balance, color correction & sRGB conversion...", 100 * readyphase / numofphases); - - if (frameCountListener) { - frameCountListener->FrameCountChanged(imgsrc->getFrameCount(), params.raw.bayersensor.imageNum); - } - - // raw auto CA is bypassed if no high detail is needed, so we have to compute it when high detail is needed - if ((todo & M_PREPROC) || (!highDetailPreprocessComputed && highDetailNeeded)) { - imgsrc->setCurrentFrame(params.raw.bayersensor.imageNum); - - imgsrc->preprocess(rp, params.lensProf, params.coarse); - imgsrc->getRAWHistogram(histRedRaw, histGreenRaw, histBlueRaw); - - highDetailPreprocessComputed = highDetailNeeded; - } - - /* - Demosaic is kicked off only when - Detail considerations: - accurate detail is not displayed yet needed based on preview specifics (driven via highDetailNeeded flag) - OR - HLR considerations: - Color HLR alters rgb output of demosaic, so re-demosaic is needed when Color HLR is being turned off; - if HLR is enabled and changing method *from* Color to any other method - OR HLR gets disabled when Color method was selected - */ - // If high detail (=100%) is newly selected, do a demosaic update, since the last was just with FAST - - if (imageTypeListener) { - imageTypeListener->imageTypeChanged(imgsrc->isRAW(), imgsrc->getSensorType() == ST_BAYER, imgsrc->getSensorType() == ST_FUJI_XTRANS, imgsrc->isMono()); - } - - if ((todo & M_RAW) - || (!highDetailRawComputed && highDetailNeeded) - || (params.toneCurve.hrenabled && params.toneCurve.method != "Color" && imgsrc->isRGBSourceModified()) - || (!params.toneCurve.hrenabled && params.toneCurve.method == "Color" && imgsrc->isRGBSourceModified())) { - - if (settings->verbose) { - if (imgsrc->getSensorType() == ST_BAYER) { - printf("Demosaic Bayer image n.%d using method: %s\n", rp.bayersensor.imageNum + 1, rp.bayersensor.method.c_str()); - } else if (imgsrc->getSensorType() == ST_FUJI_XTRANS) { - printf("Demosaic X-Trans image with using method: %s\n", rp.xtranssensor.method.c_str()); - } - } - if(imgsrc->getSensorType() == ST_BAYER) { - if(params.raw.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::PIXELSHIFT)) { - imgsrc->setBorder(params.raw.bayersensor.border); - } else { - imgsrc->setBorder(std::max(params.raw.bayersensor.border, 2)); - } - } - bool autoContrast = false; - double contrastThreshold = 0.f; - imgsrc->demosaic(rp, autoContrast, contrastThreshold); //enabled demosaic - - // if a demosaic happened we should also call getimage later, so we need to set the M_INIT flag - todo |= M_INIT; - - if (highDetailNeeded) { - highDetailRawComputed = true; - } else { - highDetailRawComputed = false; - } - - if (params.retinex.enabled) { - lhist16RETI(32768); - lhist16RETI.clear(); - - imgsrc->retinexPrepareBuffers(params.icm, params.retinex, conversionBuffer, lhist16RETI); } } - if ((todo & (M_RETINEX | M_INIT)) && params.retinex.enabled) { - bool dehacontlutili = false; - bool mapcontlutili = false; - bool useHsl = false; - LUTf cdcurve(65536, 0); - LUTf mapcurve(65536, 0); + if (((todo & ALL) == ALL) || panningRelatedChange || (highDetailNeeded && options.prevdemo != PD_Sidecar)) { + bwAutoR = bwAutoG = bwAutoB = -9000.f; - imgsrc->retinexPrepareCurves(params.retinex, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, dehacontlutili, mapcontlutili, useHsl, lhist16RETI, histLRETI); - float minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax; - imgsrc->retinex(params.icm, params.retinex, params.toneCurve, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, conversionBuffer, dehacontlutili, mapcontlutili, useHsl, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax, histLRETI); //enabled Retinex - - if (dehaListener) { - dehaListener->minmaxChanged(maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); - } - } - - if (todo & (M_INIT | M_LINDENOISE | M_HDR)) { - MyMutex::MyLock initLock(minit); // Also used in crop window - - imgsrc->HLRecovery_Global(params.toneCurve); // this handles Color HLRecovery - - - if (settings->verbose) { - printf("Applying white balance, color correction & sRBG conversion...\n"); + if (todo == CROP && ipf.needsPCVignetting()) { + todo |= TRANSFORM; // Change about Crop does affect TRANSFORM } - currWB = ColorTemp(params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method); + RAWParams rp = params.raw; + ColorManagementParams cmp = params.icm; + LCurveParams lcur = params.labCurve; - if (!params.wb.enabled) { - currWB = ColorTemp(); - } else if (params.wb.method == "Camera") { - currWB = imgsrc->getWB(); - } else if (params.wb.method == "Auto") { - if (lastAwbEqual != params.wb.equal || lastAwbTempBias != params.wb.tempBias) { - double rm, gm, bm; - imgsrc->getAutoWBMultipliers(rm, gm, bm); - - if (rm != -1.) { - autoWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias); - lastAwbEqual = params.wb.equal; - lastAwbTempBias = params.wb.tempBias; - } else { - lastAwbEqual = -1.; - lastAwbTempBias = 0.0; - autoWB.useDefaults(params.wb.equal); - } - - //double rr,gg,bb; - //autoWB.getMultipliers(rr,gg,bb); + if (!highDetailNeeded) { + // if below 100% magnification, take a fast path + if (rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE) && rp.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::NONE)) { + rp.bayersensor.method = RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::FAST); } - currWB = autoWB; + //bayerrp.all_enhance = false; + + if (rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE) && rp.xtranssensor.method != RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::NONE)) { + rp.xtranssensor.method = RAWParams::XTransSensor::getMethodString(RAWParams::XTransSensor::Method::FAST); + } + + rp.bayersensor.ccSteps = 0; + rp.xtranssensor.ccSteps = 0; + //rp.deadPixelFilter = rp.hotPixelFilter = false; } - if (params.wb.enabled) { - params.wb.temperature = currWB.getTemp(); - params.wb.green = currWB.getGreen(); + progress("Applying white balance, color correction & sRGB conversion...", 100 * readyphase / numofphases); + + if (frameCountListener) { + frameCountListener->FrameCountChanged(imgsrc->getFrameCount(), params.raw.bayersensor.imageNum); } - if (params.wb.method == "Auto" && awbListener && params.wb.enabled) { - awbListener->WBChanged(params.wb.temperature, params.wb.green); + // raw auto CA is bypassed if no high detail is needed, so we have to compute it when high detail is needed + if ((todo & M_PREPROC) || (!highDetailPreprocessComputed && highDetailNeeded)) { + imgsrc->setCurrentFrame(params.raw.bayersensor.imageNum); + + imgsrc->preprocess(rp, params.lensProf, params.coarse); + imgsrc->getRAWHistogram(histRedRaw, histGreenRaw, histBlueRaw); + + highDetailPreprocessComputed = highDetailNeeded; } /* - GammaValues g_a; - double pwr = 1.0 / params.icm.gampos; - double ts = params.icm.slpos; - - - int mode = 0; - Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope - printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", g_a[0],g_a[1],g_a[2],g_a[3],g_a[4]); - - Glib::ustring datal; - datal = "lutsrgb.txt"; - ofstream fou(datal, ios::out | ios::trunc); - - for(int i=0; i < 212; i++) { - //printf("igamma2=%i\n", (int) 65535.f*Color::igamma2(i/212.0)); - float gam = Color::igamma2(i/211.0); - int lutga = nearbyint(65535.f* gam); - // fou << 65535*(int)Color::igamma2(i/212.0) << endl; - fou << i << " " << lutga << endl; - - } - fou.close(); + Demosaic is kicked off only when + Detail considerations: + accurate detail is not displayed yet needed based on preview specifics (driven via highDetailNeeded flag) + OR + HLR considerations: + Color HLR alters rgb output of demosaic, so re-demosaic is needed when Color HLR is being turned off; + if HLR is enabled and changing method *from* Color to any other method + OR HLR gets disabled when Color method was selected */ - int tr = getCoarseBitMask(params.coarse); + // If high detail (=100%) is newly selected, do a demosaic update, since the last was just with FAST - imgsrc->getFullSize(fw, fh, tr); + if (imageTypeListener) { + imageTypeListener->imageTypeChanged(imgsrc->isRAW(), imgsrc->getSensorType() == ST_BAYER, imgsrc->getSensorType() == ST_FUJI_XTRANS, imgsrc->isMono()); + } - // Will (re)allocate the preview's buffers - setScale(scale); - PreviewProps pp(0, 0, fw, fh, scale); - // Tells to the ImProcFunctions' tools what is the preview scale, which may lead to some simplifications - ipf.setScale(scale); + if ((todo & M_RAW) + || (!highDetailRawComputed && highDetailNeeded) + || (params.toneCurve.hrenabled && params.toneCurve.method != "Color" && imgsrc->isRGBSourceModified()) + || (!params.toneCurve.hrenabled && params.toneCurve.method == "Color" && imgsrc->isRGBSourceModified())) { - imgsrc->getImage(currWB, tr, orig_prev, pp, params.toneCurve, params.raw); - denoiseInfoStore.valid = false; - //ColorTemp::CAT02 (orig_prev, ¶ms) ; - // printf("orig_prevW=%d\n scale=%d",orig_prev->width, scale); - /* Issue 2785, disabled some 1:1 tools - if (todo & M_LINDENOISE) { - DirPyrDenoiseParams denoiseParams = params.dirpyrDenoise; - if (denoiseParams.enabled && (scale==1)) { - Imagefloat *calclum = NULL ; - - denoiseParams.getCurves(noiseLCurve,noiseCCurve); - int nbw=6;//nb tile W - int nbh=4;// - - float ch_M[nbw*nbh]; - float max_r[nbw*nbh]; - float max_b[nbw*nbh]; - - if(denoiseParams.Lmethod == "CUR") { - if(noiseLCurve) - denoiseParams.luma = 0.5f; - else - denoiseParams.luma = 0.0f; - } else if(denoiseParams.Lmethod == "SLI") - noiseLCurve.Reset(); - - - if(noiseLCurve || noiseCCurve){//only allocate memory if enabled and scale=1 - // we only need image reduced to 1/4 here - calclum = new Imagefloat ((pW+1)/2, (pH+1)/2);//for luminance denoise curve - for(int ii=0;iir(ii>>1,jj>>1) = orig_prev->r(ii,jj); - calclum->g(ii>>1,jj>>1) = orig_prev->g(ii,jj); - calclum->b(ii>>1,jj>>1) = orig_prev->b(ii,jj); - } - } - imgsrc->convertColorSpace(calclum, params.icm, currWB);//calculate values after colorspace conversion - } - - int kall=1; - ipf.RGB_denoise(kall, orig_prev, orig_prev, calclum, ch_M, max_r, max_b, imgsrc->isRAW(), denoiseParams, imgsrc->getDirPyrDenoiseExpComp(), noiseLCurve, noiseCCurve, chaut, redaut, blueaut, maxredaut, maxblueaut, nresi, highresi); - } + if (settings->verbose) { + if (imgsrc->getSensorType() == ST_BAYER) { + printf("Demosaic Bayer image n.%d using method: %s\n", rp.bayersensor.imageNum + 1, rp.bayersensor.method.c_str()); + } else if (imgsrc->getSensorType() == ST_FUJI_XTRANS) { + printf("Demosaic X-Trans image with using method: %s\n", rp.xtranssensor.method.c_str()); } - */ - imgsrc->convertColorSpace(orig_prev, params.icm, currWB); - - ipf.firstAnalysis(orig_prev, params, vhist16); - } - - readyphase++; - - if ((todo & M_HDR) && params.fattal.enabled) { - if (fattal_11_dcrop_cache) { - delete fattal_11_dcrop_cache; - fattal_11_dcrop_cache = nullptr; - } - - ipf.ToneMapFattal02(orig_prev); - - if (oprevi != orig_prev) { - delete oprevi; - } - } - - oprevi = orig_prev; - - progress("Rotate / Distortion...", 100 * readyphase / numofphases); - // Remove transformation if unneeded - bool needstransform = ipf.needsTransform(); - - if ((needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled))) { - assert(oprevi); - Imagefloat *op = oprevi; - oprevi = new Imagefloat(pW, pH); - - if (needstransform) - ipf.transform(op, oprevi, 0, 0, 0, 0, pW, pH, fw, fh, - imgsrc->getMetaData(), imgsrc->getRotateDegree(), false); - else { - op->copyData(oprevi); - } - } - - if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) { - const int W = oprevi->getWidth(); - const int H = oprevi->getHeight(); - LabImage labcbdl(W, H); - ipf.rgb2lab(*oprevi, labcbdl, params.icm.workingProfile); - ipf.dirpyrequalizer(&labcbdl, scale); - ipf.lab2rgb(labcbdl, *oprevi, params.icm.workingProfile); - } - - readyphase++; - progress("Preparing shadow/highlight map...", 100 * readyphase / numofphases); - - readyphase++; - - if (todo & M_AUTOEXP) { - if (params.toneCurve.autoexp) { - LUTu aehist; - int aehistcompr; - imgsrc->getAutoExpHistogram(aehist, aehistcompr); - ipf.getAutoExp(aehist, aehistcompr, params.toneCurve.clip, params.toneCurve.expcomp, - params.toneCurve.brightness, params.toneCurve.contrast, params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh); - - if (aeListener) - aeListener->autoExpChanged(params.toneCurve.expcomp, params.toneCurve.brightness, params.toneCurve.contrast, - params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, params.toneCurve.hrenabled); - } - - if (params.toneCurve.histmatching) { - if (!params.toneCurve.fromHistMatching) { - imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve); } - - if (params.toneCurve.autoexp) { - params.toneCurve.expcomp = 0.0; - } - - params.toneCurve.autoexp = false; - params.toneCurve.curveMode = ToneCurveParams::TcMode::FILMLIKE; - params.toneCurve.curve2 = { 0 }; - params.toneCurve.brightness = 0; - params.toneCurve.contrast = 0; - params.toneCurve.black = 0; - params.toneCurve.fromHistMatching = true; - - if (aeListener) { - aeListener->autoMatchedToneCurveChanged(params.toneCurve.curveMode, params.toneCurve.curve); - } - } - } - - progress("Exposure curve & CIELAB conversion...", 100 * readyphase / numofphases); - - if (todo & (M_AUTOEXP | M_RGBCURVE)) { - if (params.icm.workingTRC == "Custom") { //exec TRC IN free - Glib::ustring profile; - profile = params.icm.workingProfile; - - if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { - int cw = oprevi->getWidth(); - int ch = oprevi->getHeight(); - // put gamma TRC to 1 - Imagefloat* readyImg0 = NULL; - readyImg0 = ipf.workingtrc(oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); - #pragma omp parallel for - - for (int row = 0; row < ch; row++) { - for (int col = 0; col < cw; col++) { - oprevi->r(row, col) = (float)readyImg0->r(row, col); - oprevi->g(row, col) = (float)readyImg0->g(row, col); - oprevi->b(row, col) = (float)readyImg0->b(row, col); - } + if(imgsrc->getSensorType() == ST_BAYER) { + if(params.raw.bayersensor.method != RAWParams::BayerSensor::getMethodString(RAWParams::BayerSensor::Method::PIXELSHIFT)) { + imgsrc->setBorder(params.raw.bayersensor.border); + } else { + imgsrc->setBorder(std::max(params.raw.bayersensor.border, 2)); } - - delete readyImg0; - //adjust TRC - Imagefloat* readyImg = NULL; - readyImg = ipf.workingtrc(oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); - #pragma omp parallel for - - for (int row = 0; row < ch; row++) { - for (int col = 0; col < cw; col++) { - oprevi->r(row, col) = (float)readyImg->r(row, col); - oprevi->g(row, col) = (float)readyImg->g(row, col); - oprevi->b(row, col) = (float)readyImg->b(row, col); - } - } - - delete readyImg; - } - } - } + bool autoContrast = false; + double contrastThreshold = 0.f; + imgsrc->demosaic(rp, autoContrast, contrastThreshold); //enabled demosaic + // if a demosaic happened we should also call getimage later, so we need to set the M_INIT flag + todo |= M_INIT; - if ((todo & M_RGBCURVE) || (todo & M_CROP)) { -// if (hListener) oprevi->calcCroppedHistogram(params, scale, histCropped); - - //complexCurve also calculated pre-curves histogram depending on crop - CurveFactory::complexCurve(params.toneCurve.expcomp, params.toneCurve.black / 65535.0, - params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, - params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, - params.toneCurve.curve, params.toneCurve.curve2, - vhist16, hltonecurve, shtonecurve, tonecurve, histToneCurve, customToneCurve1, customToneCurve2, 1); - - CurveFactory::RGBCurve(params.rgbCurves.rcurve, rCurve, 1); - CurveFactory::RGBCurve(params.rgbCurves.gcurve, gCurve, 1); - CurveFactory::RGBCurve(params.rgbCurves.bcurve, bCurve, 1); - - - opautili = false; - - if (params.colorToning.enabled) { - TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params.icm.workingProfile); - double wp[3][3] = { - {wprof[0][0], wprof[0][1], wprof[0][2]}, - {wprof[1][0], wprof[1][1], wprof[1][2]}, - {wprof[2][0], wprof[2][1], wprof[2][2]} - }; - params.colorToning.getCurves(ctColorCurve, ctOpacityCurve, wp, opautili); - CurveFactory::curveToning(params.colorToning.clcurve, clToningcurve, scale == 1 ? 1 : 16); - CurveFactory::curveToning(params.colorToning.cl2curve, cl2Toningcurve, scale == 1 ? 1 : 16); - } - - if (params.blackwhite.enabled) { - CurveFactory::curveBW(params.blackwhite.beforeCurve, params.blackwhite.afterCurve, vhist16bw, histToneCurveBW, beforeToneCurveBW, afterToneCurveBW, 1); - } - - colourToningSatLimit = float (params.colorToning.satProtectionThreshold) / 100.f * 0.7f + 0.3f; - colourToningSatLimitOpacity = 1.f - (float (params.colorToning.saturatedOpacity) / 100.f); - - int satTH = 80; - int satPR = 30; - int indi = 0; - - if (params.colorToning.enabled && params.colorToning.autosat && params.colorToning.method != "LabGrid") { //for colortoning evaluation of saturation settings - float moyS = 0.f; - float eqty = 0.f; - ipf.moyeqt(oprevi, moyS, eqty); //return image : mean saturation and standard dev of saturation - //printf("moy=%f ET=%f\n", moyS,eqty); - float satp = ((moyS + 1.5f * eqty) - 0.3f) / 0.7f; //1.5 sigma ==> 93% pixels with high saturation -0.3 / 0.7 convert to Hombre scale - - if (satp >= 0.92f) { - satp = 0.92f; //avoid values too high (out of gamut) - } - - if (satp <= 0.15f) { - satp = 0.15f; //avoid too low values - } - - //satTH=(int) 100.f*satp; - //satPR=(int) 100.f*(moyS-0.85f*eqty);//-0.85 sigma==>20% pixels with low saturation - colourToningSatLimit = 100.f * satp; - satTH = (int) 100.f * satp; - - colourToningSatLimitOpacity = 100.f * (moyS - 0.85f * eqty); //-0.85 sigma==>20% pixels with low saturation - satPR = (int) 100.f * (moyS - 0.85f * eqty); - } - - if (actListener) { - //if(params.blackwhite.enabled) {actListener->autoColorTonChanged(0, satTH, satPR);} - if (params.blackwhite.enabled && params.colorToning.autosat) { - actListener->autoColorTonChanged(0, satTH, satPR); //hide sliders only if autosat - indi = 0; + if (highDetailNeeded) { + highDetailRawComputed = true; } else { - if (params.colorToning.autosat) { - if (params.colorToning.method == "Lab") { - indi = 1; - } else if (params.colorToning.method == "RGBCurves") { - indi = 1; - } else if (params.colorToning.method == "RGBSliders") { - indi = 1; - } else if (params.colorToning.method == "Splico") { - indi = 2; - } else if (params.colorToning.method == "Splitlr") { - indi = 2; + highDetailRawComputed = false; + } + + if (params.retinex.enabled) { + lhist16RETI(32768); + lhist16RETI.clear(); + + imgsrc->retinexPrepareBuffers(params.icm, params.retinex, conversionBuffer, lhist16RETI); + } + } + + if ((todo & (M_RETINEX | M_INIT)) && params.retinex.enabled) { + bool dehacontlutili = false; + bool mapcontlutili = false; + bool useHsl = false; + LUTf cdcurve(65536, 0); + LUTf mapcurve(65536, 0); + + imgsrc->retinexPrepareCurves(params.retinex, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, dehacontlutili, mapcontlutili, useHsl, lhist16RETI, histLRETI); + float minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax; + imgsrc->retinex(params.icm, params.retinex, params.toneCurve, cdcurve, mapcurve, dehatransmissionCurve, dehagaintransmissionCurve, conversionBuffer, dehacontlutili, mapcontlutili, useHsl, minCD, maxCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax, histLRETI); //enabled Retinex + + if (dehaListener) { + dehaListener->minmaxChanged(maxCD, minCD, mini, maxi, Tmean, Tsigma, Tmin, Tmax); + } + } + + if (todo & (M_INIT | M_LINDENOISE | M_HDR)) { + MyMutex::MyLock initLock(minit); // Also used in crop window + + imgsrc->HLRecovery_Global(params.toneCurve); // this handles Color HLRecovery + + + if (settings->verbose) { + printf("Applying white balance, color correction & sRBG conversion...\n"); + } + + currWB = ColorTemp(params.wb.temperature, params.wb.green, params.wb.equal, params.wb.method); + + if (!params.wb.enabled) { + currWB = ColorTemp(); + } else if (params.wb.method == "Camera") { + currWB = imgsrc->getWB(); + } else if (params.wb.method == "Auto") { + if (lastAwbEqual != params.wb.equal || lastAwbTempBias != params.wb.tempBias) { + double rm, gm, bm; + imgsrc->getAutoWBMultipliers(rm, gm, bm); + + if (rm != -1.) { + autoWB.update(rm, gm, bm, params.wb.equal, params.wb.tempBias); + lastAwbEqual = params.wb.equal; + lastAwbTempBias = params.wb.tempBias; + } else { + lastAwbEqual = -1.; + lastAwbTempBias = 0.0; + autoWB.useDefaults(params.wb.equal); } - //actListener->autoColorTonChanged(indi, satTH, satPR); - } - } - } - - // if it's just crop we just need the histogram, no image updates - if (todo & M_RGBCURVE) { - //initialize rrm bbm ggm different from zero to avoid black screen in some cases - double rrm = 33.; - double ggm = 33.; - double bbm = 33.; - - DCPProfile::ApplyState as; - DCPProfile *dcpProf = imgsrc->getDCP(params.icm, as); - - ipf.rgbProc (oprevi, oprevl, nullptr, hltonecurve, shtonecurve, tonecurve, params.toneCurve.saturation, - rCurve, gCurve, bCurve, colourToningSatLimit, colourToningSatLimitOpacity, ctColorCurve, ctOpacityCurve, opautili, clToningcurve, cl2Toningcurve, customToneCurve1, customToneCurve2, beforeToneCurveBW, afterToneCurveBW, rrm, ggm, bbm, bwAutoR, bwAutoG, bwAutoB, params.toneCurve.expcomp, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, dcpProf, as, histToneCurve); - - if (params.blackwhite.enabled && params.blackwhite.autoc && abwListener) { - if (settings->verbose) { - printf("ImProcCoordinator / Auto B&W coefs: R=%.2f G=%.2f B=%.2f\n", bwAutoR, bwAutoG, bwAutoB); + //double rr,gg,bb; + //autoWB.getMultipliers(rr,gg,bb); } - abwListener->BWChanged((float) rrm, (float) ggm, (float) bbm); + currWB = autoWB; } - if (params.colorToning.enabled && params.colorToning.autosat && actListener) { - if (settings->verbose) { - printf("ImProcCoordinator / Auto CT: indi=%d satH=%d satPR=%d\n", indi, (int)colourToningSatLimit, (int) colourToningSatLimitOpacity); - } - - actListener->autoColorTonChanged(indi, (int) colourToningSatLimit, (int)colourToningSatLimitOpacity); //change sliders autosat + if (params.wb.enabled) { + params.wb.temperature = currWB.getTemp(); + params.wb.green = currWB.getGreen(); } - // correct GUI black and white with value + if (params.wb.method == "Auto" && awbListener && params.wb.enabled) { + awbListener->WBChanged(params.wb.temperature, params.wb.green); + } + + /* + GammaValues g_a; + double pwr = 1.0 / params.icm.gampos; + double ts = params.icm.slpos; + + + int mode = 0; + Color::calcGamma(pwr, ts, mode, g_a); // call to calcGamma with selected gamma and slope + printf("ga[0]=%f ga[1]=%f ga[2]=%f ga[3]=%f ga[4]=%f\n", g_a[0],g_a[1],g_a[2],g_a[3],g_a[4]); + + Glib::ustring datal; + datal = "lutsrgb.txt"; + ofstream fou(datal, ios::out | ios::trunc); + + for(int i=0; i < 212; i++) { + //printf("igamma2=%i\n", (int) 65535.f*Color::igamma2(i/212.0)); + float gam = Color::igamma2(i/211.0); + int lutga = nearbyint(65535.f* gam); + // fou << 65535*(int)Color::igamma2(i/212.0) << endl; + fou << i << " " << lutga << endl; + + } + fou.close(); + */ + int tr = getCoarseBitMask(params.coarse); + + imgsrc->getFullSize(fw, fh, tr); + + // Will (re)allocate the preview's buffers + setScale(scale); + PreviewProps pp(0, 0, fw, fh, scale); + // Tells to the ImProcFunctions' tools what is the preview scale, which may lead to some simplifications + ipf.setScale(scale); + + imgsrc->getImage(currWB, tr, orig_prev, pp, params.toneCurve, params.raw); + denoiseInfoStore.valid = false; + //ColorTemp::CAT02 (orig_prev, ¶ms) ; + // printf("orig_prevW=%d\n scale=%d",orig_prev->width, scale); + /* Issue 2785, disabled some 1:1 tools + if (todo & M_LINDENOISE) { + DirPyrDenoiseParams denoiseParams = params.dirpyrDenoise; + if (denoiseParams.enabled && (scale==1)) { + Imagefloat *calclum = NULL ; + + denoiseParams.getCurves(noiseLCurve,noiseCCurve); + int nbw=6;//nb tile W + int nbh=4;// + + float ch_M[nbw*nbh]; + float max_r[nbw*nbh]; + float max_b[nbw*nbh]; + + if(denoiseParams.Lmethod == "CUR") { + if(noiseLCurve) + denoiseParams.luma = 0.5f; + else + denoiseParams.luma = 0.0f; + } else if(denoiseParams.Lmethod == "SLI") + noiseLCurve.Reset(); + + + if(noiseLCurve || noiseCCurve){//only allocate memory if enabled and scale=1 + // we only need image reduced to 1/4 here + calclum = new Imagefloat ((pW+1)/2, (pH+1)/2);//for luminance denoise curve + for(int ii=0;iir(ii>>1,jj>>1) = orig_prev->r(ii,jj); + calclum->g(ii>>1,jj>>1) = orig_prev->g(ii,jj); + calclum->b(ii>>1,jj>>1) = orig_prev->b(ii,jj); + } + } + imgsrc->convertColorSpace(calclum, params.icm, currWB);//calculate values after colorspace conversion + } + + int kall=1; + ipf.RGB_denoise(kall, orig_prev, orig_prev, calclum, ch_M, max_r, max_b, imgsrc->isRAW(), denoiseParams, imgsrc->getDirPyrDenoiseExpComp(), noiseLCurve, noiseCCurve, chaut, redaut, blueaut, maxredaut, maxblueaut, nresi, highresi); + } + } + */ + imgsrc->convertColorSpace(orig_prev, params.icm, currWB); + + ipf.firstAnalysis(orig_prev, params, vhist16); } - // compute L channel histogram - int x1, y1, x2, y2; - params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2); - } - - readyphase++; - - if (todo & (M_LUMACURVE | M_CROP)) { - LUTu lhist16(32768); - lhist16.clear(); -#ifdef _OPENMP - const int numThreads = min(max(pW * pH / (int)lhist16.getSize(), 1), omp_get_max_threads()); - #pragma omp parallel num_threads(numThreads) if(numThreads>1) -#endif - { - LUTu lhist16thr(lhist16.getSize()); - lhist16thr.clear(); -#ifdef _OPENMP - #pragma omp for nowait -#endif - - for (int x = 0; x < pH; x++) - for (int y = 0; y < pW; y++) { - int pos = (int)(oprevl->L[x][y]); - lhist16thr[pos]++; - } - -#ifdef _OPENMP - #pragma omp critical -#endif - lhist16 += lhist16thr; - } -#ifdef _OPENMP - static_cast(numThreads); // to silence cppcheck warning -#endif - CurveFactory::complexLCurve(params.labCurve.brightness, params.labCurve.contrast, params.labCurve.lcurve, lhist16, lumacurve, histLCurve, scale == 1 ? 1 : 16, utili); - } - - if (todo & M_LUMACURVE) { - - CurveFactory::curveCL(clcutili, params.labCurve.clcurve, clcurve, scale == 1 ? 1 : 16); - - CurveFactory::complexsgnCurve(autili, butili, ccutili, cclutili, params.labCurve.acurve, params.labCurve.bcurve, params.labCurve.cccurve, - params.labCurve.lccurve, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, scale == 1 ? 1 : 16); - } - - if (todo & (M_LUMINANCE + M_COLOR)) { - nprevl->CopyFrom(oprevl); - - progress("Applying Color Boost...", 100 * readyphase / numofphases); - // ipf.MSR(nprevl, nprevl->W, nprevl->H, 1); - histCCurve.clear(); - histLCurve.clear(); - ipf.chromiLuminanceCurve(nullptr, pW, nprevl, nprevl, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, histCCurve, histLCurve); - ipf.vibrance(nprevl); - - if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { - ipf.EPDToneMap(nprevl, 5, scale); - } - - // for all treatments Defringe, Sharpening, Contrast detail , Microcontrast they are activated if "CIECAM" function are disabled readyphase++; - /* Issue 2785, disabled some 1:1 tools - if (scale==1) { - if((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)){ - progress ("Denoising luminance impulse...",100*readyphase/numofphases); - ipf.impulsedenoise (nprevl); - readyphase++; + if ((todo & M_HDR) && params.fattal.enabled) { + if (fattal_11_dcrop_cache) { + delete fattal_11_dcrop_cache; + fattal_11_dcrop_cache = nullptr; + } + + ipf.ToneMapFattal02(orig_prev); + + if (oprevi != orig_prev) { + delete oprevi; + } + } + + oprevi = orig_prev; + + progress("Rotate / Distortion...", 100 * readyphase / numofphases); + // Remove transformation if unneeded + bool needstransform = ipf.needsTransform(); + + if ((needstransform || ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled))) { + assert(oprevi); + Imagefloat *op = oprevi; + oprevi = new Imagefloat(pW, pH); + + if (needstransform) + ipf.transform(op, oprevi, 0, 0, 0, 0, pW, pH, fw, fh, + imgsrc->getMetaData(), imgsrc->getRotateDegree(), false); + else { + op->copyData(oprevi); + } + } + + if ((todo & (M_TRANSFORM | M_RGBCURVE)) && params.dirpyrequalizer.cbdlMethod == "bef" && params.dirpyrequalizer.enabled && !params.colorappearance.enabled) { + const int W = oprevi->getWidth(); + const int H = oprevi->getHeight(); + LabImage labcbdl(W, H); + ipf.rgb2lab(*oprevi, labcbdl, params.icm.workingProfile); + ipf.dirpyrequalizer(&labcbdl, scale); + ipf.lab2rgb(labcbdl, *oprevi, params.icm.workingProfile); + } + + readyphase++; + progress("Preparing shadow/highlight map...", 100 * readyphase / numofphases); + + readyphase++; + + if (todo & M_AUTOEXP) { + if (params.toneCurve.autoexp) { + LUTu aehist; + int aehistcompr; + imgsrc->getAutoExpHistogram(aehist, aehistcompr); + ipf.getAutoExp(aehist, aehistcompr, params.toneCurve.clip, params.toneCurve.expcomp, + params.toneCurve.brightness, params.toneCurve.contrast, params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh); + + if (aeListener) + aeListener->autoExpChanged(params.toneCurve.expcomp, params.toneCurve.brightness, params.toneCurve.contrast, + params.toneCurve.black, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, params.toneCurve.hrenabled); + } + + if (params.toneCurve.histmatching) { + if (!params.toneCurve.fromHistMatching) { + imgsrc->getAutoMatchedToneCurve(params.icm, params.toneCurve.curve); + } + + if (params.toneCurve.autoexp) { + params.toneCurve.expcomp = 0.0; + } + + params.toneCurve.autoexp = false; + params.toneCurve.curveMode = ToneCurveParams::TcMode::FILMLIKE; + params.toneCurve.curve2 = { 0 }; + params.toneCurve.brightness = 0; + params.toneCurve.contrast = 0; + params.toneCurve.black = 0; + params.toneCurve.fromHistMatching = true; + + if (aeListener) { + aeListener->autoMatchedToneCurveChanged(params.toneCurve.curveMode, params.toneCurve.curve); + } + } + } + + progress("Exposure curve & CIELAB conversion...", 100 * readyphase / numofphases); + + if (todo & (M_AUTOEXP | M_RGBCURVE)) { + if (params.icm.workingTRC == "Custom") { //exec TRC IN free + Glib::ustring profile; + profile = params.icm.workingProfile; + + if (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { + int cw = oprevi->getWidth(); + int ch = oprevi->getHeight(); + // put gamma TRC to 1 + Imagefloat* readyImg0 = NULL; + readyImg0 = ipf.workingtrc(oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); + #pragma omp parallel for + + for (int row = 0; row < ch; row++) { + for (int col = 0; col < cw; col++) { + oprevi->r(row, col) = (float)readyImg0->r(row, col); + oprevi->g(row, col) = (float)readyImg0->g(row, col); + oprevi->b(row, col) = (float)readyImg0->b(row, col); + } } - if((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)){ - progress ("Defringing...",100*readyphase/numofphases); - ipf.defringe (nprevl); - readyphase++; + + delete readyImg0; + //adjust TRC + Imagefloat* readyImg = NULL; + readyImg = ipf.workingtrc(oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); + #pragma omp parallel for + + for (int row = 0; row < ch; row++) { + for (int col = 0; col < cw; col++) { + oprevi->r(row, col) = (float)readyImg->r(row, col); + oprevi->g(row, col) = (float)readyImg->g(row, col); + oprevi->b(row, col) = (float)readyImg->b(row, col); + } } - if (params.sharpenEdge.enabled) { - progress ("Edge sharpening...",100*readyphase/numofphases); - ipf.MLsharpen (nprevl); - readyphase++; + + delete readyImg; + + } + } + } + + + if ((todo & M_RGBCURVE) || (todo & M_CROP)) { + // if (hListener) oprevi->calcCroppedHistogram(params, scale, histCropped); + + //complexCurve also calculated pre-curves histogram depending on crop + CurveFactory::complexCurve(params.toneCurve.expcomp, params.toneCurve.black / 65535.0, + params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, + params.toneCurve.shcompr, params.toneCurve.brightness, params.toneCurve.contrast, + params.toneCurve.curve, params.toneCurve.curve2, + vhist16, hltonecurve, shtonecurve, tonecurve, histToneCurve, customToneCurve1, customToneCurve2, 1); + + CurveFactory::RGBCurve(params.rgbCurves.rcurve, rCurve, 1); + CurveFactory::RGBCurve(params.rgbCurves.gcurve, gCurve, 1); + CurveFactory::RGBCurve(params.rgbCurves.bcurve, bCurve, 1); + + + opautili = false; + + if (params.colorToning.enabled) { + TMatrix wprof = ICCStore::getInstance()->workingSpaceMatrix(params.icm.workingProfile); + double wp[3][3] = { + {wprof[0][0], wprof[0][1], wprof[0][2]}, + {wprof[1][0], wprof[1][1], wprof[1][2]}, + {wprof[2][0], wprof[2][1], wprof[2][2]} + }; + params.colorToning.getCurves(ctColorCurve, ctOpacityCurve, wp, opautili); + CurveFactory::curveToning(params.colorToning.clcurve, clToningcurve, scale == 1 ? 1 : 16); + CurveFactory::curveToning(params.colorToning.cl2curve, cl2Toningcurve, scale == 1 ? 1 : 16); + } + + if (params.blackwhite.enabled) { + CurveFactory::curveBW(params.blackwhite.beforeCurve, params.blackwhite.afterCurve, vhist16bw, histToneCurveBW, beforeToneCurveBW, afterToneCurveBW, 1); + } + + colourToningSatLimit = float (params.colorToning.satProtectionThreshold) / 100.f * 0.7f + 0.3f; + colourToningSatLimitOpacity = 1.f - (float (params.colorToning.saturatedOpacity) / 100.f); + + int satTH = 80; + int satPR = 30; + int indi = 0; + + if (params.colorToning.enabled && params.colorToning.autosat && params.colorToning.method != "LabGrid") { //for colortoning evaluation of saturation settings + float moyS = 0.f; + float eqty = 0.f; + ipf.moyeqt(oprevi, moyS, eqty); //return image : mean saturation and standard dev of saturation + //printf("moy=%f ET=%f\n", moyS,eqty); + float satp = ((moyS + 1.5f * eqty) - 0.3f) / 0.7f; //1.5 sigma ==> 93% pixels with high saturation -0.3 / 0.7 convert to Hombre scale + + if (satp >= 0.92f) { + satp = 0.92f; //avoid values too high (out of gamut) + } + + if (satp <= 0.15f) { + satp = 0.15f; //avoid too low values + } + + //satTH=(int) 100.f*satp; + //satPR=(int) 100.f*(moyS-0.85f*eqty);//-0.85 sigma==>20% pixels with low saturation + colourToningSatLimit = 100.f * satp; + satTH = (int) 100.f * satp; + + colourToningSatLimitOpacity = 100.f * (moyS - 0.85f * eqty); //-0.85 sigma==>20% pixels with low saturation + satPR = (int) 100.f * (moyS - 0.85f * eqty); + } + + if (actListener && params.colorToning.enabled) { + if (params.blackwhite.enabled && params.colorToning.autosat) { + actListener->autoColorTonChanged(0, satTH, satPR); //hide sliders only if autosat + indi = 0; + } else { + if (params.colorToning.autosat) { + if (params.colorToning.method == "Lab") { + indi = 1; + } else if (params.colorToning.method == "RGBCurves") { + indi = 1; + } else if (params.colorToning.method == "RGBSliders") { + indi = 1; + } else if (params.colorToning.method == "Splico") { + indi = 2; + } else if (params.colorToning.method == "Splitlr") { + indi = 2; + } } - if (params.sharpenMicro.enabled) { - if(( params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)){ - progress ("Microcontrast...",100*readyphase/numofphases); - ipf.MLmicrocontrast (nprevl); + } + } + + // if it's just crop we just need the histogram, no image updates + if (todo & M_RGBCURVE) { + //initialize rrm bbm ggm different from zero to avoid black screen in some cases + double rrm = 33.; + double ggm = 33.; + double bbm = 33.; + + DCPProfile::ApplyState as; + DCPProfile *dcpProf = imgsrc->getDCP(params.icm, as); + + ipf.rgbProc (oprevi, oprevl, nullptr, hltonecurve, shtonecurve, tonecurve, params.toneCurve.saturation, + rCurve, gCurve, bCurve, colourToningSatLimit, colourToningSatLimitOpacity, ctColorCurve, ctOpacityCurve, opautili, clToningcurve, cl2Toningcurve, customToneCurve1, customToneCurve2, beforeToneCurveBW, afterToneCurveBW, rrm, ggm, bbm, bwAutoR, bwAutoG, bwAutoB, params.toneCurve.expcomp, params.toneCurve.hlcompr, params.toneCurve.hlcomprthresh, dcpProf, as, histToneCurve); + + if (params.blackwhite.enabled && params.blackwhite.autoc && abwListener) { + if (settings->verbose) { + printf("ImProcCoordinator / Auto B&W coefs: R=%.2f G=%.2f B=%.2f\n", bwAutoR, bwAutoG, bwAutoB); + } + + abwListener->BWChanged((float) rrm, (float) ggm, (float) bbm); + } + + if (params.colorToning.enabled && params.colorToning.autosat && actListener) { + if (settings->verbose) { + printf("ImProcCoordinator / Auto CT: indi=%d satH=%d satPR=%d\n", indi, (int)colourToningSatLimit, (int) colourToningSatLimitOpacity); + } + + actListener->autoColorTonChanged(indi, (int) colourToningSatLimit, (int)colourToningSatLimitOpacity); //change sliders autosat + } + + // correct GUI black and white with value + } + + // compute L channel histogram + int x1, y1, x2, y2; + params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2); + } + + readyphase++; + + if (todo & (M_LUMACURVE | M_CROP)) { + LUTu lhist16(32768); + lhist16.clear(); +#ifdef _OPENMP + const int numThreads = min(max(pW * pH / (int)lhist16.getSize(), 1), omp_get_max_threads()); + #pragma omp parallel num_threads(numThreads) if(numThreads>1) +#endif + { + LUTu lhist16thr(lhist16.getSize()); + lhist16thr.clear(); +#ifdef _OPENMP + #pragma omp for nowait +#endif + + for (int x = 0; x < pH; x++) + for (int y = 0; y < pW; y++) { + int pos = (int)(oprevl->L[x][y]); + lhist16thr[pos]++; + } + +#ifdef _OPENMP + #pragma omp critical +#endif + lhist16 += lhist16thr; + } +#ifdef _OPENMP + static_cast(numThreads); // to silence cppcheck warning +#endif + CurveFactory::complexLCurve(params.labCurve.brightness, params.labCurve.contrast, params.labCurve.lcurve, lhist16, lumacurve, histLCurve, scale == 1 ? 1 : 16, utili); + } + + if (todo & M_LUMACURVE) { + + CurveFactory::curveCL(clcutili, params.labCurve.clcurve, clcurve, scale == 1 ? 1 : 16); + + CurveFactory::complexsgnCurve(autili, butili, ccutili, cclutili, params.labCurve.acurve, params.labCurve.bcurve, params.labCurve.cccurve, + params.labCurve.lccurve, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, scale == 1 ? 1 : 16); + } + + if (todo & (M_LUMINANCE + M_COLOR)) { + nprevl->CopyFrom(oprevl); + + progress("Applying Color Boost...", 100 * readyphase / numofphases); + // ipf.MSR(nprevl, nprevl->W, nprevl->H, 1); + histCCurve.clear(); + histLCurve.clear(); + ipf.chromiLuminanceCurve(nullptr, pW, nprevl, nprevl, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, clcurve, lumacurve, utili, autili, butili, ccutili, cclutili, clcutili, histCCurve, histLCurve); + ipf.vibrance(nprevl); + + if ((params.colorappearance.enabled && !params.colorappearance.tonecie) || (!params.colorappearance.enabled)) { + ipf.EPDToneMap(nprevl, 5, scale); + } + + // for all treatments Defringe, Sharpening, Contrast detail , Microcontrast they are activated if "CIECAM" function are disabled + readyphase++; + + /* Issue 2785, disabled some 1:1 tools + if (scale==1) { + if((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)){ + progress ("Denoising luminance impulse...",100*readyphase/numofphases); + ipf.impulsedenoise (nprevl); + readyphase++; + } + if((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)){ + progress ("Defringing...",100*readyphase/numofphases); + ipf.defringe (nprevl); + readyphase++; + } + if (params.sharpenEdge.enabled) { + progress ("Edge sharpening...",100*readyphase/numofphases); + ipf.MLsharpen (nprevl); + readyphase++; + } + if (params.sharpenMicro.enabled) { + if(( params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)){ + progress ("Microcontrast...",100*readyphase/numofphases); + ipf.MLmicrocontrast (nprevl); + readyphase++; + } + } + if(((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled)) && params.sharpening.enabled) { + progress ("Sharpening...",100*readyphase/numofphases); + + float **buffer = new float*[pH]; + for (int i=0; iautocielab) || (!params.colorappearance.enabled)) && params.sharpening.enabled) { - progress ("Sharpening...",100*readyphase/numofphases); + */ + if (params.dirpyrequalizer.cbdlMethod == "aft") { + if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled))) { + progress("Pyramid wavelet...", 100 * readyphase / numofphases); + ipf.dirpyrequalizer(nprevl, scale); + //ipf.Lanczoslab (ip_wavelet(LabImage * lab, LabImage * dst, const procparams::EqualizerParams & eqparams), nprevl, 1.f/scale); + readyphase++; + } + } - float **buffer = new float*[pH]; - for (int i=0; iL[x][y])); + int posc = CLIP((int)sqrt(nprevl->a[x][y] * nprevl->a[x][y] + nprevl->b[x][y] * nprevl->b[x][y])); + lhist16CAM[pos]++; + lhist16CCAM[posc]++; + } + } + + CurveFactory::curveLightBrightColor(params.colorappearance.curve, params.colorappearance.curve2, params.colorappearance.curve3, + lhist16CAM, histLCAM, lhist16CCAM, histCCAM, + customColCurve1, customColCurve2, customColCurve3, 1); + + const FramesMetaData* metaData = imgsrc->getMetaData(); + int imgNum = 0; + + if (imgsrc->isRAW()) { + if (imgsrc->getSensorType() == ST_BAYER) { + imgNum = rtengine::LIM(params.raw.bayersensor.imageNum, 0, metaData->getFrameCount() - 1); + } else if (imgsrc->getSensorType() == ST_FUJI_XTRANS) { + //imgNum = rtengine::LIM(params.raw.xtranssensor.imageNum, 0, metaData->getFrameCount() - 1); } } - */ - if (params.dirpyrequalizer.cbdlMethod == "aft") { - if (((params.colorappearance.enabled && !settings->autocielab) || (!params.colorappearance.enabled))) { - progress("Pyramid wavelet...", 100 * readyphase / numofphases); - ipf.dirpyrequalizer(nprevl, scale); - //ipf.Lanczoslab (ip_wavelet(LabImage * lab, LabImage * dst, const procparams::EqualizerParams & eqparams), nprevl, 1.f/scale); + + float fnum = metaData->getFNumber(imgNum); // F number + float fiso = metaData->getISOSpeed(imgNum) ; // ISO + float fspeed = metaData->getShutterSpeed(imgNum) ; // Speed + double fcomp = metaData->getExpComp(imgNum); // Compensation +/- + double adap; + + if (fnum < 0.3f || fiso < 5.f || fspeed < 0.00001f) { //if no exif data or wrong + adap = 2000.; + } else { + double E_V = fcomp + log2(double ((fnum * fnum) / fspeed / (fiso / 100.f))); + E_V += params.toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV + E_V += log2(params.raw.expos); // exposure raw white point ; log2 ==> linear to EV + adap = powf(2.f, E_V - 3.f); // cd / m2 + // end calculation adaptation scene luminosity + } + + float d, dj, yb; + bool execsharp = false; + + if (!ncie) { + ncie = new CieImage(pW, pH); + } + + if (!CAMBrightCurveJ && (params.colorappearance.algo == "JC" || params.colorappearance.algo == "JS" || params.colorappearance.algo == "ALL")) { + CAMBrightCurveJ(32768, 0); + } + + if (!CAMBrightCurveQ && (params.colorappearance.algo == "QM" || params.colorappearance.algo == "ALL")) { + CAMBrightCurveQ(32768, 0); + } + + // Issue 2785, only float version of ciecam02 for navigator and pan background + CAMMean = NAN; + CAMBrightCurveJ.dirty = true; + CAMBrightCurveQ.dirty = true; + + ipf.ciecam_02float(ncie, float (adap), pW, 2, nprevl, ¶ms, customColCurve1, customColCurve2, customColCurve3, histLCAM, histCCAM, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, scale, execsharp, d, dj, yb, 1); + + if ((params.colorappearance.autodegree || params.colorappearance.autodegreeout) && acListener && params.colorappearance.enabled) { + acListener->autoCamChanged(100.* (double)d, 100.* (double)dj); + } + + if (params.colorappearance.autoadapscen && acListener && params.colorappearance.enabled) { + acListener->adapCamChanged(adap); //real value of adapt scene + } + + if (params.colorappearance.autoybscen && acListener && params.colorappearance.enabled) { + acListener->ybCamChanged((int) yb); //real value Yb scene + } + readyphase++; - } - } + } else { + // CIECAM is disabled, we free up its image buffer to save some space + if (ncie) { + delete ncie; + } + ncie = nullptr; - wavcontlutili = false; - //CurveFactory::curveWavContL ( wavcontlutili,params.wavelet.lcurve, wavclCurve, LUTu & histogramwavcl, LUTu & outBeforeWavCLurveHistogram,int skip); - CurveFactory::curveWavContL(wavcontlutili, params.wavelet.wavclCurve, wavclCurve, scale == 1 ? 1 : 16); + if (CAMBrightCurveJ) { + CAMBrightCurveJ.reset(); + } - - if ((params.wavelet.enabled)) { - WaveletParams WaveParams = params.wavelet; - // WaveParams.getCurves(wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY); - WaveParams.getCurves(wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL); - - int kall = 0; - progress("Wavelet...", 100 * readyphase / numofphases); - // ipf.ip_wavelet(nprevl, nprevl, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, scale); - ipf.ip_wavelet(nprevl, nprevl, kall, WaveParams, wavCLVCurve, waOpacityCurveRG, waOpacityCurveBY, waOpacityCurveW, waOpacityCurveWL, wavclCurve, scale); - - } - - - if (params.colorappearance.enabled) { - //L histo and Chroma histo for ciecam - // histogram well be for Lab (Lch) values, because very difficult to do with J,Q, M, s, C - int x1, y1, x2, y2; - params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2); - lhist16CAM.clear(); - lhist16CCAM.clear(); - - if (!params.colorappearance.datacie) { - for (int x = 0; x < pH; x++) - for (int y = 0; y < pW; y++) { - int pos = CLIP((int)(nprevl->L[x][y])); - int posc = CLIP((int)sqrt(nprevl->a[x][y] * nprevl->a[x][y] + nprevl->b[x][y] * nprevl->b[x][y])); - lhist16CAM[pos]++; - lhist16CCAM[posc]++; - } - } - - CurveFactory::curveLightBrightColor(params.colorappearance.curve, params.colorappearance.curve2, params.colorappearance.curve3, - lhist16CAM, histLCAM, lhist16CCAM, histCCAM, - customColCurve1, customColCurve2, customColCurve3, 1); - - const FramesMetaData* metaData = imgsrc->getMetaData(); - int imgNum = 0; - - if (imgsrc->isRAW()) { - if (imgsrc->getSensorType() == ST_BAYER) { - imgNum = rtengine::LIM(params.raw.bayersensor.imageNum, 0, metaData->getFrameCount() - 1); - } else if (imgsrc->getSensorType() == ST_FUJI_XTRANS) { - //imgNum = rtengine::LIM(params.raw.xtranssensor.imageNum, 0, metaData->getFrameCount() - 1); + if (CAMBrightCurveQ) { + CAMBrightCurveQ.reset(); } } - - float fnum = metaData->getFNumber(imgNum); // F number - float fiso = metaData->getISOSpeed(imgNum) ; // ISO - float fspeed = metaData->getShutterSpeed(imgNum) ; // Speed - double fcomp = metaData->getExpComp(imgNum); // Compensation +/- - double adap; - - if (fnum < 0.3f || fiso < 5.f || fspeed < 0.00001f) { //if no exif data or wrong - adap = 2000.; - } else { - double E_V = fcomp + log2(double ((fnum * fnum) / fspeed / (fiso / 100.f))); - E_V += params.toneCurve.expcomp;// exposure compensation in tonecurve ==> direct EV - E_V += log2(params.raw.expos); // exposure raw white point ; log2 ==> linear to EV - adap = powf(2.f, E_V - 3.f); // cd / m2 - // end calculation adaptation scene luminosity - } - - float d, dj, yb; - bool execsharp = false; - - if (!ncie) { - ncie = new CieImage(pW, pH); - } - - if (!CAMBrightCurveJ && (params.colorappearance.algo == "JC" || params.colorappearance.algo == "JS" || params.colorappearance.algo == "ALL")) { - CAMBrightCurveJ(32768, 0); - } - - if (!CAMBrightCurveQ && (params.colorappearance.algo == "QM" || params.colorappearance.algo == "ALL")) { - CAMBrightCurveQ(32768, 0); - } - - // Issue 2785, only float version of ciecam02 for navigator and pan background - CAMMean = NAN; - CAMBrightCurveJ.dirty = true; - CAMBrightCurveQ.dirty = true; - - ipf.ciecam_02float(ncie, float (adap), pW, 2, nprevl, ¶ms, customColCurve1, customColCurve2, customColCurve3, histLCAM, histCCAM, CAMBrightCurveJ, CAMBrightCurveQ, CAMMean, 5, scale, execsharp, d, dj, yb, 1); - - if ((params.colorappearance.autodegree || params.colorappearance.autodegreeout) && acListener && params.colorappearance.enabled) { - acListener->autoCamChanged(100.* (double)d, 100.* (double)dj); - } - - if (params.colorappearance.autoadapscen && acListener && params.colorappearance.enabled) { - acListener->adapCamChanged(adap); //real value of adapt scene - } - - if (params.colorappearance.autoybscen && acListener && params.colorappearance.enabled) { - acListener->ybCamChanged((int) yb); //real value Yb scene - } - - readyphase++; - } else { - // CIECAM is disabled, we free up its image buffer to save some space - if (ncie) { - delete ncie; - } - - ncie = nullptr; - - if (CAMBrightCurveJ) { - CAMBrightCurveJ.reset(); - } - - if (CAMBrightCurveQ) { - CAMBrightCurveQ.reset(); - } } - } - // Update the monitor color transform if necessary - if ((todo & M_MONITOR) || (lastOutputProfile != params.icm.outputProfile) || lastOutputIntent != params.icm.outputIntent || lastOutputBPC != params.icm.outputBPC) { - lastOutputProfile = params.icm.outputProfile; - lastOutputIntent = params.icm.outputIntent; - lastOutputBPC = params.icm.outputBPC; - ipf.updateColorProfiles(monitorProfile, monitorIntent, softProof, gamutCheck); + // Update the monitor color transform if necessary + if ((todo & M_MONITOR) || (lastOutputProfile != params.icm.outputProfile) || lastOutputIntent != params.icm.outputIntent || lastOutputBPC != params.icm.outputBPC) { + lastOutputProfile = params.icm.outputProfile; + lastOutputIntent = params.icm.outputIntent; + lastOutputBPC = params.icm.outputBPC; + ipf.updateColorProfiles(monitorProfile, monitorIntent, softProof, gamutCheck); + } } // process crop, if needed for (size_t i = 0; i < crops.size(); i++) - if (crops[i]->hasListener() && cropCall != crops[i]) { + if (crops[i]->hasListener() && (panningRelatedChange || crops[i]->get_skip() == 1)) { crops[i]->update(todo); // may call ourselves } - progress("Conversion to RGB...", 100 * readyphase / numofphases); + if (panningRelatedChange) { + progress("Conversion to RGB...", 100 * readyphase / numofphases); - if ((todo != CROP && todo != MINUPDATE) || (todo & M_MONITOR)) { - MyMutex::MyLock prevImgLock(previmg->getMutex()); + if ((todo != CROP && todo != MINUPDATE) || (todo & M_MONITOR)) { + MyMutex::MyLock prevImgLock(previmg->getMutex()); - try { - // Computing the preview image, i.e. converting from WCS->Monitor color space (soft-proofing disabled) or WCS->Printer profile->Monitor color space (soft-proofing enabled) - ipf.lab2monitorRgb(nprevl, previmg); + try { + // Computing the preview image, i.e. converting from WCS->Monitor color space (soft-proofing disabled) or WCS->Printer profile->Monitor color space (soft-proofing enabled) + ipf.lab2monitorRgb(nprevl, previmg); - // Computing the internal image for analysis, i.e. conversion from WCS->Output profile - delete workimg; - workimg = ipf.lab2rgb(nprevl, 0, 0, pW, pH, params.icm); - } catch (char * str) { - progress("Error converting file...", 0); - return; + // Computing the internal image for analysis, i.e. conversion from WCS->Output profile + delete workimg; + workimg = ipf.lab2rgb(nprevl, 0, 0, pW, pH, params.icm); + } catch (char * str) { + progress("Error converting file...", 0); + return; + } } - } - if (!resultValid) { - resultValid = true; + if (!resultValid) { + resultValid = true; - if (imageListener) { - imageListener->setImage(previmg, scale, params.crop); + if (imageListener) { + imageListener->setImage(previmg, scale, params.crop); + } } - } - if (imageListener) - // TODO: The WB tool should be advertised too in order to get the AutoWB's temp and green values - { - imageListener->imageReady(params.crop); - } + if (imageListener) + // TODO: The WB tool should be advertised too in order to get the AutoWB's temp and green values + { + imageListener->imageReady(params.crop); + } - readyphase++; + readyphase++; - if (hListener) { - updateLRGBHistograms(); - hListener->histogramChanged(histRed, histGreen, histBlue, histLuma, histToneCurve, histLCurve, histCCurve, /*histCLurve, histLLCurve,*/ histLCAM, histCCAM, histRedRaw, histGreenRaw, histBlueRaw, histChroma, histLRETI); + if (hListener) { + updateLRGBHistograms(); + hListener->histogramChanged(histRed, histGreen, histBlue, histLuma, histToneCurve, histLCurve, histCCurve, /*histCLurve, histLLCurve,*/ histLCAM, histCCAM, histRedRaw, histGreenRaw, histBlueRaw, histChroma, histLRETI); + } } } @@ -1414,6 +1410,7 @@ void ImProcCoordinator::process() paramsUpdateMutex.lock(); while (changeSinceLast) { + const bool panningRelatedChange = params.isPanningRelatedChange(nextParams); params = nextParams; int change = changeSinceLast; changeSinceLast = 0; @@ -1421,7 +1418,7 @@ void ImProcCoordinator::process() // M_VOID means no update, and is a bit higher that the rest if (change & (M_VOID - 1)) { - updatePreviewImage(change); + updatePreviewImage(change, panningRelatedChange); } paramsUpdateMutex.lock(); diff --git a/rtengine/improccoordinator.h b/rtengine/improccoordinator.h index aabc9000b..dba12cdd7 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -179,7 +179,7 @@ protected: void reallocAll (); void updateLRGBHistograms (); void setScale (int prevscale); - void updatePreviewImage (int todo, Crop* cropCall = nullptr); + void updatePreviewImage (int todo, bool panningRelatedChange); MyMutex mProcessing; ProcParams params; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index aebc8c047..bee556b27 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -1646,7 +1646,9 @@ bool LensProfParams::operator ==(const LensProfParams& other) const && useCA == other.useCA && lfCameraMake == other.lfCameraMake && lfCameraModel == other.lfCameraModel - && lfLens == other.lfLens; + && lfLens == other.lfLens + && useDist == other.useDist + && useVign == other.useVign; } bool LensProfParams::operator !=(const LensProfParams& other) const @@ -5046,6 +5048,73 @@ int ProcParams::write(const Glib::ustring& fname, const Glib::ustring& content) return error; } +bool ProcParams::isThumbRelatedChange(const ProcParams &newParams) const +{ + return toneCurve != newParams.toneCurve + || labCurve != newParams.labCurve + || localContrast != newParams.localContrast + || rgbCurves != newParams.rgbCurves + || colorToning != newParams.colorToning + || vibrance != newParams.vibrance + || wb != newParams.wb + || colorappearance != newParams.colorappearance + || epd != newParams.epd + || fattal != newParams.fattal + || sh != newParams.sh + || crop != newParams.crop + || coarse != newParams.coarse + || commonTrans != newParams.commonTrans + || rotate != newParams.rotate + || distortion != newParams.distortion + || lensProf != newParams.lensProf + || perspective != newParams.perspective + || gradient != newParams.gradient + || pcvignette != newParams.pcvignette + || cacorrection != newParams.cacorrection + || vignetting != newParams.vignetting + || chmixer != newParams.chmixer + || blackwhite != newParams.blackwhite + || icm != newParams.icm + || hsvequalizer != newParams.hsvequalizer + || filmSimulation != newParams.filmSimulation + || softlight != newParams.softlight; +} + +bool ProcParams::isPanningRelatedChange(const ProcParams &newParams) const +{ + return toneCurve != newParams.toneCurve + || labCurve != newParams.labCurve + || localContrast != newParams.localContrast + || rgbCurves != newParams.rgbCurves + || colorToning != newParams.colorToning + || vibrance != newParams.vibrance + || wb != newParams.wb + || colorappearance != newParams.colorappearance + || epd != newParams.epd + || fattal != newParams.fattal + || sh != newParams.sh + || crop != newParams.crop + || coarse != newParams.coarse + || commonTrans != newParams.commonTrans + || rotate != newParams.rotate + || distortion != newParams.distortion + || lensProf != newParams.lensProf + || perspective != newParams.perspective + || gradient != newParams.gradient + || pcvignette != newParams.pcvignette + || cacorrection != newParams.cacorrection + || vignetting != newParams.vignetting + || chmixer != newParams.chmixer + || blackwhite != newParams.blackwhite + || icm != newParams.icm + || hsvequalizer != newParams.hsvequalizer + || filmSimulation != newParams.filmSimulation + || softlight != newParams.softlight + || raw != newParams.raw + || retinex != newParams.retinex + || dirpyrequalizer != newParams.dirpyrequalizer; +} + PartialProfile::PartialProfile(bool createInstance, bool paramsEditedValue) { if (createInstance) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index 0b8b5ba56..db89754a7 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1488,6 +1488,9 @@ public: bool operator ==(const ProcParams& other) const; bool operator !=(const ProcParams& other) const; + bool isThumbRelatedChange(const ProcParams &newParams) const; + bool isPanningRelatedChange(const ProcParams &newParams) const; + private: /** Write the ProcParams's text in the file of the given name. * @param fname the name of the file diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index bfb1b8797..88cabe19d 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -37,7 +37,7 @@ using namespace rtengine::procparams; Thumbnail::Thumbnail (CacheManager* cm, const Glib::ustring& fname, CacheImageData* cf) : fname(fname), cfs(*cf), cachemgr(cm), ref(1), enqueueNumber(0), tpp(nullptr), - pparamsValid(false), needsReProcessing(true), imageLoading(false), lastImg(nullptr), + pparamsValid(false), imageLoading(false), lastImg(nullptr), lastW(0), lastH(0), lastScale(0), initial_(false) { @@ -65,7 +65,7 @@ Thumbnail::Thumbnail (CacheManager* cm, const Glib::ustring& fname, CacheImageDa Thumbnail::Thumbnail (CacheManager* cm, const Glib::ustring& fname, const std::string& md5) : fname(fname), cachemgr(cm), ref(1), enqueueNumber(0), tpp(nullptr), pparamsValid(false), - needsReProcessing(true), imageLoading(false), lastImg(nullptr), + imageLoading(false), lastImg(nullptr), lastW(0), lastH(0), lastScale(0.0), initial_(true) { @@ -155,7 +155,6 @@ void Thumbnail::_generateThumbnailImage () tpp->getAutoWBMultipliers(cfs.redAWBMul, cfs.greenAWBMul, cfs.blueAWBMul); _saveThumbnail (); cfs.supported = true; - needsReProcessing = true; cfs.save (getCacheFileName ("data", ".txt")); @@ -368,7 +367,6 @@ void Thumbnail::clearProcParams (int whoClearedIt) cfs.recentlySaved = false; pparamsValid = false; - needsReProcessing = true; //TODO: run though customprofilebuilder? // probably not as this is the only option to set param values to default @@ -413,7 +411,7 @@ void Thumbnail::clearProcParams (int whoClearedIt) } } -bool Thumbnail::hasProcParams () +bool Thumbnail::hasProcParams () const { return pparamsValid; @@ -421,26 +419,21 @@ bool Thumbnail::hasProcParams () void Thumbnail::setProcParams (const ProcParams& pp, ParamsEdited* pe, int whoChangedIt, bool updateCacheNow) { - + const bool needsReprocessing = pparams.isThumbRelatedChange(pp); { MyMutex::MyLock lock(mutex); - if (pparams.sharpening.threshold.isDouble() != pp.sharpening.threshold.isDouble()) { - printf("WARNING: Sharpening different!\n"); - } - - if (pparams.vibrance.psthreshold.isDouble() != pp.vibrance.psthreshold.isDouble()) { - printf("WARNING: Vibrance different!\n"); - } - if (pparams != pp) { cfs.recentlySaved = false; + } else if (pparamsValid && !updateCacheNow) { + // nothing to do + return; } // do not update rank, colorlabel and inTrash - int rank = getRank(); - int colorlabel = getColorLabel(); - int inTrash = getStage(); + const int rank = getRank(); + const int colorlabel = getColorLabel(); + const int inTrash = getStage(); if (pe) { pe->combine(pparams, pp, true); @@ -449,24 +442,24 @@ void Thumbnail::setProcParams (const ProcParams& pp, ParamsEdited* pe, int whoCh } pparamsValid = true; - needsReProcessing = true; setRank(rank); setColorLabel(colorlabel); setStage(inTrash); if (updateCacheNow) { - updateCache (); + updateCache(); } - } // end of mutex lock - for (size_t i = 0; i < listeners.size(); i++) { - listeners[i]->procParamsChanged (this, whoChangedIt); + if (needsReprocessing) { + for (size_t i = 0; i < listeners.size(); i++) { + listeners[i]->procParamsChanged (this, whoChangedIt); + } } } -bool Thumbnail::isRecentlySaved () +bool Thumbnail::isRecentlySaved () const { return cfs.recentlySaved; @@ -495,17 +488,17 @@ void Thumbnail::imageRemovedFromQueue () enqueueNumber--; } -bool Thumbnail::isEnqueued () +bool Thumbnail::isEnqueued () const { return enqueueNumber > 0; } -bool Thumbnail::isPixelShift () +bool Thumbnail::isPixelShift () const { return cfs.isPixelShift; } -bool Thumbnail::isHDR () +bool Thumbnail::isHDR () const { return cfs.isHDR; } @@ -694,13 +687,13 @@ void Thumbnail::generateExifDateTimeStrings () dateTimeString = ostr.str (); } -const Glib::ustring& Thumbnail::getExifString () +const Glib::ustring& Thumbnail::getExifString () const { return exifString; } -const Glib::ustring& Thumbnail::getDateTimeString () +const Glib::ustring& Thumbnail::getDateTimeString () const { return dateTimeString; @@ -798,7 +791,6 @@ int Thumbnail::infoFromImage (const Glib::ustring& fname, std::unique_ptrgetCamWB (temp, green); @@ -143,7 +142,7 @@ public: } ThFileType getType (); - Glib::ustring getFileName () + Glib::ustring getFileName () const { return fname; } @@ -155,12 +154,12 @@ public: { return &cfs; } - std::string getMD5 () + std::string getMD5 () const { return cfs.md5; } - int getRank () + int getRank () const { return pparams.rank; } @@ -172,7 +171,7 @@ public: } } - int getColorLabel () + int getColorLabel () const { return pparams.colorlabel; } @@ -184,7 +183,7 @@ public: } } - int getStage () + int getStage () const { return pparams.inTrash; } From 73b688f098d35eb4118d563df2a8b44727643e64 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Fri, 28 Sep 2018 00:48:58 +0200 Subject: [PATCH 49/52] Update Deutsch locale --- rtdata/languages/Deutsch | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index d3c4b0150..32d090ce7 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -69,6 +69,7 @@ #68 05.07.2018 Erweiterung (TooWaBoo) RT 5.4 #69 25.07.2018 Erweiterung (TooWaBoo) RT 5.4 #70 25.07.2018 Korrekturen (TooWaBoo) RT 5.4 +#71 28.09.2018 Korrekturen (TooWaBoo) RT 5.5 ABOUT_TAB_BUILD;Version ABOUT_TAB_CREDITS;Danksagungen @@ -2351,12 +2352,12 @@ ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - ! Untranslated keys follow; remove the ! prefix after an entry is translated. !!!!!!!!!!!!!!!!!!!!!!!!! -!HISTORY_MSG_RAWCACORR_AUTOIT;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLORSHIFT;Raw CA Correction - Avoid color shift -!PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;CA avoid color shift -!PREFERENCES_PERFORMANCE_THREADS;Threads -!PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximum number of threads for Noise Reduction and Wavelet Levels (0 = Automatic) -!PREFERENCES_TAB_PERFORMANCE;Performance -!SAVEDLG_FILEFORMAT_FLOAT; floating-point -!TP_RAWCACORR_AUTOIT;Iterations -!TP_RAWCACORR_AVOIDCOLORSHIFT;Avoid color shift +HISTORY_MSG_RAWCACORR_AUTOIT;(Sensor-Matrix)\nChromatische Aberration\nIterationen +HISTORY_MSG_RAWCACORR_COLORSHIFT;(Sensor-Matrix)\nChromatische Aberration\nFarbverschiebungen\nvermeiden +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;Chromatische Aberration: Farbverschiebungen vermeiden +PREFERENCES_PERFORMANCE_THREADS;Threads +PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximale Anzahl Threads der Rauschreduzierung und Wavelet (0 = Automatik) +PREFERENCES_TAB_PERFORMANCE;Performance +SAVEDLG_FILEFORMAT_FLOAT; Fließkomma +TP_RAWCACORR_AUTOIT;Iterationen +TP_RAWCACORR_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden From 5021164721ecf0269d904e5405ebb328ef4ee694 Mon Sep 17 00:00:00 2001 From: Morgan Hardwood Date: Fri, 28 Sep 2018 07:24:59 +0200 Subject: [PATCH 50/52] generateTranslationDiffs --- rtdata/languages/Deutsch | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/rtdata/languages/Deutsch b/rtdata/languages/Deutsch index 32d090ce7..ef518868d 100644 --- a/rtdata/languages/Deutsch +++ b/rtdata/languages/Deutsch @@ -817,6 +817,8 @@ HISTORY_MSG_PIXELSHIFT_DEMOSAIC;(Sensor-Matrix)\nFarbinterpolation - PS\nBewegun HISTORY_MSG_PREPROCESS_LINEDENOISE_DIRECTION;(Sensor-Matrix)\nVorverarbeitung\nRichtung HISTORY_MSG_PREPROCESS_PDAFLINESFILTER;(Sensor-Matrix)\nVorverarbeitung\nPDAF-Zeilenfilter HISTORY_MSG_PRSHARPEN_CONTRAST;(Skalieren) - Schärfen\nKontrastschwelle +HISTORY_MSG_RAWCACORR_AUTOIT;(Sensor-Matrix)\nChromatische Aberration\nIterationen +HISTORY_MSG_RAWCACORR_COLORSHIFT;(Sensor-Matrix)\nChromatische Aberration\nFarbverschiebungen\nvermeiden HISTORY_MSG_RAW_BORDER;(Sensor-Matrix)\nFarbinterpolation\nBildrand HISTORY_MSG_RESIZE_ALLOWUPSCALING;(Skalieren)\nHochskalieren zulassen HISTORY_MSG_SHARPENING_CONTRAST;(Schärfung)\nKontrastschwelle @@ -1059,6 +1061,7 @@ PARTIALPASTE_PREPROCESS_LINEDENOISE;Vorverarbeitung: Zeilenrauschfilter PARTIALPASTE_PREPROCESS_PDAFLINESFILTER;Vorverarbeitung: PDAF-Zeilenfilter PARTIALPASTE_PRSHARPENING;Schärfung nach Größenänderung PARTIALPASTE_RAWCACORR_AUTO;Chromatische Aberration: Automatische Korrektur +PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;Chromatische Aberration: Farbverschiebungen vermeiden PARTIALPASTE_RAWCACORR_CAREDBLUE;Chromatische Aberration: Rot & Blau PARTIALPASTE_RAWEXPOS_BLACK;Weißpunkt: Schwarzpegel PARTIALPASTE_RAWEXPOS_LINEAR;Weißpunkt: Korrekturfaktor @@ -1225,6 +1228,8 @@ PREFERENCES_PARSEDEXTADDHINT;Dateityp zur Liste hinzufügen PREFERENCES_PARSEDEXTDELHINT;Ausgewählten Dateityp aus Liste entfernen PREFERENCES_PARSEDEXTDOWNHINT;Ausgewählten Dateityp nach unten verschieben. PREFERENCES_PARSEDEXTUPHINT;Ausgewählten Dateityp nach oben verschieben. +PREFERENCES_PERFORMANCE_THREADS;Threads +PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximale Anzahl Threads der Rauschreduzierung und Wavelet (0 = Automatik) PREFERENCES_PREVDEMO;Farbinterpolation PREFERENCES_PREVDEMO_FAST;Schnell PREFERENCES_PREVDEMO_LABEL;Demosaikmethode für 100%-Ansicht @@ -1271,6 +1276,7 @@ PREFERENCES_TAB_COLORMGR;Farbmanagement PREFERENCES_TAB_DYNAMICPROFILE;Dynamisches Profil PREFERENCES_TAB_GENERAL;Allgemein PREFERENCES_TAB_IMPROC;Bildbearbeitung +PREFERENCES_TAB_PERFORMANCE;Performance PREFERENCES_TAB_SOUND;Klänge PREFERENCES_THEME;Oberflächendesign PREFERENCES_THUMBNAIL_INSPECTOR_JPEG;Eingebundenes JPEG @@ -1331,6 +1337,7 @@ SAMPLEFORMAT_32;24 Bit Gleitkomma SAMPLEFORMAT_64;32 Bit Gleitkomma SAVEDLG_AUTOSUFFIX;Suffix anfügen, wenn die Datei bereits existiert SAVEDLG_FILEFORMAT;Dateiformat +SAVEDLG_FILEFORMAT_FLOAT; Fließkomma SAVEDLG_FORCEFORMATOPTS;Erzwinge Speicheroptionen SAVEDLG_JPEGQUAL;JPEG-Qualität SAVEDLG_PNGCOMPR;PNG-Kompression @@ -1858,6 +1865,8 @@ TP_PREPROCESS_PDAFLINESFILTER_TOOLTIP;Minimiert Streifenrauschen, das bei Gegenl TP_PRSHARPENING_LABEL;Nach Skalierung schärfen TP_PRSHARPENING_TOOLTIP;Schärft das Bild nach der Größenänderung.\nFunktioniert nur mit der Methode “Lanczos“.\nDas Ergebnis wird nicht in RawTherapee\nangezeigt.\n\nWeitere Informationen finden Sie auf “RawPedia“. TP_RAWCACORR_AUTO;Automatische Korrektur +TP_RAWCACORR_AUTOIT;Iterationen +TP_RAWCACORR_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden TP_RAWCACORR_CABLUE;Blau TP_RAWCACORR_CARED;Rot TP_RAWCACORR_CASTR;Intensität @@ -2348,16 +2357,3 @@ ZOOMPANEL_ZOOMFITSCREEN;An Bildschirm anpassen\nTaste: Alt + f ZOOMPANEL_ZOOMIN;Hineinzoomen\nTaste: + ZOOMPANEL_ZOOMOUT;Herauszoomen\nTaste: - -!!!!!!!!!!!!!!!!!!!!!!!!! -! Untranslated keys follow; remove the ! prefix after an entry is translated. -!!!!!!!!!!!!!!!!!!!!!!!!! - -HISTORY_MSG_RAWCACORR_AUTOIT;(Sensor-Matrix)\nChromatische Aberration\nIterationen -HISTORY_MSG_RAWCACORR_COLORSHIFT;(Sensor-Matrix)\nChromatische Aberration\nFarbverschiebungen\nvermeiden -PARTIALPASTE_RAWCACORR_AVOIDCOLORSHIFT;Chromatische Aberration: Farbverschiebungen vermeiden -PREFERENCES_PERFORMANCE_THREADS;Threads -PREFERENCES_PERFORMANCE_THREADS_LABEL;Maximale Anzahl Threads der Rauschreduzierung und Wavelet (0 = Automatik) -PREFERENCES_TAB_PERFORMANCE;Performance -SAVEDLG_FILEFORMAT_FLOAT; Fließkomma -TP_RAWCACORR_AUTOIT;Iterationen -TP_RAWCACORR_AVOIDCOLORSHIFT;Farbverschiebungen vermeiden From aad03829108503f32f5ac8556eaa9c2713a24ab3 Mon Sep 17 00:00:00 2001 From: TooWaBoo Date: Sat, 29 Sep 2018 13:18:49 +0200 Subject: [PATCH 51/52] Update TooWaBlue theme v2.80 Many optimizations and improvments --- rtdata/themes/TooWaBlue-GTK3-20_.css | 1116 ++++++++++++++------------ 1 file changed, 618 insertions(+), 498 deletions(-) diff --git a/rtdata/themes/TooWaBlue-GTK3-20_.css b/rtdata/themes/TooWaBlue-GTK3-20_.css index af0173441..3f2165592 100644 --- a/rtdata/themes/TooWaBlue-GTK3-20_.css +++ b/rtdata/themes/TooWaBlue-GTK3-20_.css @@ -2,7 +2,7 @@ This file is part of RawTherapee. Copyright (c) 2016-2018 TooWaBoo - Version 2.74 + Version 2.80 RawTherapee is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -71,26 +71,33 @@ text-shadow: none; outline-style: none; /* removes the ugly dashed focus line */ border-image: none; + background-image: none; + background-color: transparent; transition: none; -gtk-icon-shadow: none; + -gtk-icon-style: symbolic; + min-width: 0; + min-height: 0; + padding: 0; + margin: 0; + opacity: 1; + border: none; + box-shadow: none; } -#ToolBarPanelFileBrowser button:not(.smallbutton) image, -#EditorTopPanel button:not(.narrowbutton) image, -#IopsPanel button:not(.Right) image, -#ProfilePanel button image, -#MainNotebook > stack > :nth-child(2) > box:nth-child(3) image, -#MainNotebook > header button:not(#CloseButton) image { - -gtk-icon-transform: scale(calc(22/24)); -} - +/*GTK+4 now supports a more versatile -gtk-icon-filter instead. Replace +-gtk-icon-effect: dim; with -gtk-icon-filter: opacity(0.5); and +-gtk-icon-effect: highlight; with -gtk-icon-filter: brightness(1.2);.*/ *:disabled { color: @fg-disabled; -gtk-icon-effect: dim; } +*:hover { + -gtk-icon-effect: highlight; +} #ToolPanelNotebook { - min-width: 22.25em; + min-width: 24em; } #HistoryPanel { min-width: 17.5em; @@ -101,7 +108,7 @@ window.background { } /* Single Window */ window > box { - padding: 0.4167em; + padding: 0.416666666666666666em; } /**/ dialog { @@ -113,7 +120,7 @@ dialog { -GtkDialog-action-area-border: 0; } dialog > box { - padding: 0.6667em; + padding: 0.666666666666666666em; } messagedialog { background-color: @bg-light-grey; @@ -121,11 +128,10 @@ messagedialog { } tooltip { background-color: @bg-tooltip; - border: 0.0834em solid @border-tooltip; - border-radius: 0.3334em; + border: 0.083333333333333333em solid @border-tooltip; + border-radius: 0.333333333333333333em; padding: 0; margin: 0; - box-shadow: none; } tooltip label { color: @text-tooltip; @@ -135,11 +141,21 @@ paned { background-color: @bg-light-grey; } +arrow { + min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em; +} + +text { + background-color: @bg-dark-grey; +} + /*?win*/ #PlacesPaned { margin: 0; } +overshoot, undershoot { background-image: none; /* removes the dashed scrollbar line */ } @@ -150,6 +166,7 @@ label { } /*** Frames ************************************************************************************/ +border, frame { border: none; padding: 0; @@ -158,17 +175,15 @@ frame { min-height: 0; min-width: 0; border-radius: 0; - box-shadow: none; } #BatchQueueButtonsMainContainer frame, #MyExpander frame, dialog frame { - margin: 0.1667em 0.5em; + margin: 0.166666666666666666em 0.5em; } /* affects selection list*/ -entry > window > frame, -filechooser frame { +entry > window > frame { margin: 0; } @@ -184,7 +199,6 @@ frame > border { margin: 0; min-height: 0; min-width: 0; - box-shadow: none; } #BatchQueueButtonsMainContainer > frame > border, @@ -192,39 +206,35 @@ frame > border { dialog frame > border { padding: 0.5em; border-radius: 0; - border: 0.0834em solid @border-color; + border: 0.083333333333333333em solid @border-color; background-color: transparent; margin: 0 -0.5em; } -/* affects selection list*/ -entry > window > frame> border, -filechooser > frame > border { - padding: 0; - border: none; - background-color: transparent; - margin: 0; -} + #PrefNotebook box > frame > border { padding-top: 0; padding-bottom: 0.25em; } +#PrefNotebook scrolledwindow scrolledwindow { + border: 0.083333333333333333em solid @bg-dark-grey; +} #BatchQueueButtonsMainContainer frame > label, #ToolPanelNotebook frame > label, dialog frame > label { margin: 0; - padding: 0.1667em 0.5em; + padding: 0.166666666666666666em 0.5em; } #BatchQueueButtonsMainContainer frame > border { - margin-bottom: 0.8334em; + margin-bottom: 0.833333333333333333em; } #BatchQueueButtonsMainContainer frame:nth-child(3) > border { - padding-left: 0.9167em; + padding-left: 0.916666666666666666em; } frame > label { margin: 0; - padding: 0.4167em 0 0.3334em 0.0834em; + padding: 0.416666666666666666em 0 0.333333333333333333em 0.083333333333333333em; color: @headline-frame; } frame > checkbutton label{ @@ -236,9 +246,12 @@ frame > checkbutton label{ textview.view, treeview.view { background-color: @bg-dark-grey; border-color: @view-grid-border; - padding: 0.1667em; + padding: 0.166666666666666666em; margin: 0; } +treeview header { + background-color: @bg-dark-grey; +} textview:hover, treeview:hover { background-color: @bg-list-hover; } @@ -248,28 +261,32 @@ textview:selected, treeview:selected { border-top-color: transparent; } -#RightNotebook > stack > :nth-child(1) treeview { - border: 0.0834em solid @bg-dark-grey; - border-bottom: none; +/* Filter treeview */ +#RightNotebook > stack > :nth-child(1) checkbutton + scrolledwindow { + min-height: calc(6em + 43px); + border: 0.083333333333333333em solid @bg-dark-grey; +} +#RightNotebook > stack > :nth-child(1) checkbutton + scrolledwindow treeview { + border-bottom: 0.083333333333333333em solid @bg-dark-grey; } -#PlacesPaned > box:nth-child(1) treeview { - padding: 0.0834em 0 0.0834em 0.41667em; - -gtk-icon-style: symbolic; + +#PlacesPaned > box:nth-child(3) treeview { + padding: 0.25em 0.333333333333333333em 0.25em 0.333333333333333333em; } #HistoryPanel { margin-top: 0.25em; } #RightNotebook #HistoryPanel { - margin-top: 0.3334em; + margin-top: 0.333333333333333333em; } #HistoryPanel > border { margin-top: 1.75em; } #HistoryPanel > label { margin: 0 0 -1.5em 0; - padding: 0 0 0 0.0834em; + padding: 0 0 0 0.083333333333333333em; } #Snapshots > border { @@ -278,29 +295,47 @@ textview:selected, treeview:selected { #Snapshots > label { margin-bottom: -4px; } -#Snapshots button { - margin-top: -8px; - margin-bottom: -4px; +#Snapshots scrolledwindow + box { + background-color: @bg-dark-grey; + margin: -8px 0 -4px ; + border-top: 0.083333333333333333em solid @view-grid-border; } -#Snapshots button image{ - min-height: 24px; - min-width: 24px; -} -#Snapshots > box > :nth-child(1) { - margin-bottom: 0.4167em; +#PlacesPaned > box:nth-child(1) scrolledwindow + grid { + background-color:@bg-dark-grey; + margin: -2px 0 -2px 0; + border-top: 0.083333333333333333em solid @view-grid-border; } -#PlacesPaned > box:nth-child(3) > box:nth-child(2), -#PlacesPaned > box:nth-child(1) > :nth-child(1), +#Snapshots button, +#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button { + margin: 0; + padding: 0; + background-color: transparent; + background-image: none; + border: 0.083333333333333333em solid @bg-dark-grey; + border-radius: 0; + box-shadow: none; +} + +#Snapshots button:hover, +#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button:hover { +background-color: @bg-list-hover; +} +#Snapshots button:active, +#PlacesPaned > box:nth-child(1) scrolledwindow + grid > button:active { +background-color: shade(@bg-list-hover, 1.15); +} + +#PlacesPaned scrolledwindow, #HistoryPanel > border, -#Snapshots > box > :nth-child(1) { +#Snapshots scrolledwindow { background-color: @bg-dark-grey; - border: 0.0834em solid @bg-dark-grey; + border: 0.083333333333333333em solid @bg-dark-grey; } /*Corrects the space of the snapshot view to the paned separator*/ #Snapshots { - margin-top: 0.1667em; + margin-top: 0.166666666666666666em; } /**/ @@ -313,7 +348,7 @@ textview:selected, treeview:selected { background-color: @bg-dark-grey; } #Navigator box label { - padding: 0.1667em 0; + padding: 0.166666666666666666em 0; } #Navigator > label:nth-child(2) { margin-top: 0.5em; @@ -322,52 +357,61 @@ textview:selected, treeview:selected { /*** end ***************************************************************************************/ /*** Load - Save dialog ************************************************************************/ -filechooser * { - box-shadow: none; + +filechooser box > box box > button { +margin-top: 0.5em; } + +filechooser list { + background-color: @bg-dark-grey; +} + filechooser #pathbarbox { border: none; background-color: @bg-dark-grey; padding: 0.5em; } -filechooser box { - border-color: transparent; -} - -filechooser > box > paned > box { - border: 0.0834em solid @bg-dark-grey; +/* Right side */ +filechooser > box > paned > box:nth-child(3) { + border: 0.083333333333333333em solid @bg-dark-grey; background-color: @bg-dark-grey; -} -filechooser placessidebar { - padding: 0 0.0834em; - background-color: @bg-dark-grey; -} - -filechooser list { - background-color: @bg-dark-grey; - border: none; - box-shadow: none; padding: 0; - margin: -3px 0 0; -} -filechooser list row { margin: 0; - padding: 0; - min-height: calc(1.4166em + 8px); } -filechooser list row label{ - margin: 0; +filechooser > box > paned > box:nth-child(3) > box > * > * > * > frame { padding: 0; + margin: -8px -1px; + background-color: @bg-dark-grey; +} +/**/ +filechooser placessidebar viewport.frame { + background-color: @bg-dark-grey; + padding: 0; + margin: -4px 0 -1px; + border: 0.083333333333333333em solid @bg-dark-grey; +} +filechooser placessidebar list row image { + min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em; +} +filechooser placessidebar list row { + margin: 0; + padding: 0 0.5em 0 0.83333333333333333em; + min-height: calc(1.416666666666666666em + 8px); +} +filechooser placessidebar list row label{ + margin: 0 0 0 0.58333333333333333em; } filechooser list row:hover { background-color: @bg-list-hover; } -filechooser list row:selected label, -filechooser list row:selected { +filechooser placessidebar list row:selected label, +filechooser placessidebar list row:selected { background-color: @accent-color; color: @text-hl-color; } + /*** end ***************************************************************************************/ /*** Histogram *********************************************************************************/ @@ -381,7 +425,7 @@ filechooser list row:selected { #HistogramPanel > :nth-child(2) { border: none; - border-left: 0.0834em solid @bg-light-grey; + border-left: 0.083333333333333333em solid @bg-light-grey; background-color: @bg-dark-grey; } @@ -392,7 +436,7 @@ filechooser list row:selected { #EditorLeftPaned #HistogramPanel > :nth-child(1) { border: none; - border-right: 0.0834em solid @bg-light-grey; + border-right: 0.083333333333333333em solid @bg-light-grey; background-color: @bg-dark-grey; } @@ -403,40 +447,37 @@ filechooser list row:selected { #HistogramArea, #HistogramRGBArea { - border: 0.0834em solid @bg-dark-grey; + border: 0.083333333333333333em solid @bg-dark-grey; background-color: @bg-dark-grey; } #histButton { - padding: 0; - margin: 0; + padding: 0.25em 0.25em 0; + margin: 0 0 -1px 0; border: none; - background-color: @bg-dark-grey; + background-color: transparent; background-image: none; - box-shadow: none; - min-height: 1.4166em; - min-width: calc(1.3333em + 6px); + min-height: 1.333333333333333333em; + min-width: 1.333333333333333333em; border-radius: 0; -} - -#histButton:first-child { - margin-top: 3px; + box-shadow: none; } #histButton:last-child { - margin-bottom: 3px; + padding-bottom: 0.25em; + margin: 0; } -#HistogramPanel image { - -gtk-icon-transform: scale(calc(14/16)); -} /*** end ***************************************************************************************/ /*** Separator *********************************************************************************/ -separator { +separator, +.separator { + min-width: 0.083333333333333333em; + min-height: 0.083333333333333333em; background-color: transparent; } grid separator.horizontal, box separator.horizontal { - margin: 0.1667em 0; + margin: 0.166666666666666666em 0; padding: 0; } grid separator.vertical, box separator.vertical { @@ -444,8 +485,15 @@ grid separator.vertical, box separator.vertical { padding: 0; } -#PlacesPaned .view.separator, -filechooser separator, +#PlacesPaned .view.separator { + min-height: 0.5em; +} + +filechooser separator { + background-color: @view-grid-border; +} + +.view.separator, dialog separator { background-color: @border-color; } @@ -457,31 +505,37 @@ popover separator:not(:only-child) { paned.horizontal > separator { background-color: transparent; background-image: none; - min-width: 0.4166em; + min-width: 0; border: none; - margin: 0 -0.25em; + margin: 0 -0.25em 0 -3px; padding: 0 0.25em; } - +/* Double line separator */ paned.vertical > separator { - background-image: image(@bg-dark-grey); + background-image: none; background-color: @bg-light-grey; - min-height: 0.5em; - border-top: 1px solid @bg-light-grey; - border-bottom: 1px solid @bg-light-grey; - margin: 0.25em 0 -0.5em; + min-height: 0.416666666666666666em; + border-top: 0.083333333333333333em solid @bg-dark-grey; + border-bottom: none; + margin: 0.416666666666666666em 0 -0.5em; padding: 0.2em 0 0; } -/*Filmstrip*/ -#EditorRightPaned > paned.horizontal > paned.vertical > separator { - margin-bottom: 0; - min-height: 0.4167em; + +#EditorLeftPaned > paned.vertical:last-child > separator { + margin-bottom: 1px; } +/**/ +/* Remove hard coded pixel from tool button */ +#EditorLeftPaned > paned.vertical:last-child > box { + margin-top: -2px; + padding: 0; +} +/**/ dialog paned.horizontal > separator { background-color: @bg-grey; - border-color: @bg-grey; - min-width: 0.3333em; + border-color: @bg-grey; + min-width: 0.333333333333333333em; } menu separator { @@ -499,13 +553,13 @@ menu separator { #IopsPanel separator, #FileBrowser separator { background-color: shade(@bg-light-grey,.75); - margin-top: 0.1667em; - margin-bottom: 0.1667em; + margin-top: 0.166666666666666666em; + margin-bottom: 0.166666666666666666em; } #MyExpander separator { background-color: @view-grid-border; - margin: 0.3334em 0; + margin: 0.333333333333333333em 0; } #MyFileChooserButton separator { background-color: transparent; @@ -518,34 +572,31 @@ menu separator { /*** PartialPaste ******************************************************************************/ #PartialPaste { - border-bottom: 0.0834em solid @border-color; - border-top: 0.0834em solid @border-color; + border-bottom: 0.083333333333333333em solid @border-color; + border-top: 0.083333333333333333em solid @border-color; padding-top: 0.5em; padding-bottom: 0.5em; } #PartialPaste separator.vertical { - margin: 0 0.3334em; + margin: 0 0.333333333333333333em; padding: 0; } #PartialPaste separator { /* Struggles with #PartialPasteHeaderSep */ background-color: @border-color; - margin: 0.1667em 0.5em 0.1667em 1.1667em; + margin: 0.166666666666666666em 0.5em 0.166666666666666666em 1.166666666666666666em; } #PartialPasteHeaderSep.horizontal { background-color: rgb(192,192,192); - margin: 0.1667em 0.5em; + margin: 0.166666666666666666em 0.5em; } #PartialPasteHeader label { color: @headline-big; font-weight: bold; } -#PartialPasteHeader { - margin: 0.5em 0 0 0; - padding: 0; -} + /*** end ***************************************************************************************/ /*** Scrollbar *********************************************************************************/ @@ -554,6 +605,7 @@ scrollbar { border: none; margin: 0; padding: 0; + border-radius: 0; } scrollbar slider { background-color: @text-color; @@ -561,7 +613,13 @@ scrollbar slider { margin: 0; border-color: transparent; border-style: solid; - border-radius: 1em; + border-radius: 0.5em; +} +scrollbar.overlay-indicator { + opacity: 0.8; +} +scrollbar.overlay-indicator:not(.hovering) { + opacity: 0.5; } scrollbar:not(.overlay-indicator) { @@ -570,10 +628,10 @@ scrollbar:not(.overlay-indicator) { background-color: rgba(0,0,0,.30); } scrollbar:not(.overlay-indicator).horizontal { - border-width: 0 0.0834em 0.0834em 0.0834em; + border-width: 0 0.083333333333333333em 0.083333333333333333em 0.083333333333333333em; } scrollbar:not(.overlay-indicator).vertical { - border-width: 0.0834em 0.0834em 0.0834em 0; + border-width: 0.083333333333333333em 0.083333333333333333em 0.083333333333333333em 0; } scrollbar:not(.overlay-indicator) slider { background-color: shade(@text-color, .9); @@ -594,9 +652,9 @@ scrollbar.horizontal.hovering.fine-tune slider { scrollbar.horizontal.overlay-indicator:not(.hovering) slider { min-width: 2em; min-height: 0.25em; - border-width: 0.0834em; + border-width: 0; border-radius: 0.25em; - margin: 0 0.1667em; + margin: 0.166666666666666666em 0.25em; } scrollbar:not(.overlay-indicator).vertical slider, @@ -614,13 +672,13 @@ scrollbar.vertical.hovering.fine-tune slider { scrollbar.vertical.overlay-indicator:not(.hovering) slider { min-width: 0.25em; min-height: 2em; - border-width: 0.0834em; - border-radius: 0.5em; - margin: 0.1667em 0; + border-width: 0; + border-radius: 0.25em; + margin: 0.25em 0.166666666666666666em; } scrollbar:not(.overlay-indicator) slider:hover, -scrollbar slider:hover { +scrollbar.hovering slider:hover { background-color: shade(@accent-color2,1.12); } @@ -628,62 +686,73 @@ scrollbar slider:hover { scrollbar:not(.overlay-indicator):hover { min-width: 1px; } +/**/ /*** end ***************************************************************************************/ /*** Scale**************************************************************************************/ scale { padding: 0; - min-height: 1.8333em; - margin: 0 0.25em; + min-height: 1.833333333333333333em; + margin: 0; } scale slider { - /* Slider size is min-width x min-height; margin have to be half of those values, but negative */ - min-width: 1em; - min-height: 1em; - margin: calc(-0.166em - 4px); - border-radius: 0.8334em; + min-width: 0; + min-height: 0; + margin: -0.583333333333333333em; + padding: 0.583333333333333333em; + border-radius: 1.166666666666666666em; background-image: linear-gradient(to bottom, shade (@accent-color4,1.15), shade (@accent-color4,.85)); - border: 0.0834em solid @bg-button-border; - box-shadow: none; + border: 0.083333333333333333em solid shade(@bg-dark-grey,0.9); } scale slider:hover { background-image: linear-gradient(to bottom, shade (@accent-color4,1.25), shade (@accent-color4,.95)); } scale trough { - margin: 0.5em; /* has to be half of "scale slider / min-width min-height*/ - background-color: @bg-scale-entry; - border: 0.0834em solid @bg-button-border; - box-shadow: inset 0 0.0834em rgba(255, 255, 255, 0.11), 0 0.0834em rgba(242, 242, 242, 0.11); - border-radius: 0.5em; + margin: 0.583333333333333333em; + background-color: shade(@bg-grey,.83); + border-radius: 0.333333333333333333em; + min-height: 0; + min-width: 0; + padding: 0 0.583333333333333333em; + border: none; } -scale:not(:disabled) trough highlight { - background-color: @accent-color2; - border: 0.0834em solid @bg-dark-grey; - box-shadow: inset 0 0.1667em shade(@accent-color2, 1.25); - border-radius: 0.5em; +scale.color trough { + border: 0.083333333333333333em solid shade(@bg-dark-grey,0.9); + min-height: 0.333333333333333333em; + min-width: 0.333333333333333333em; + border-radius: 0; + padding: 0; } -scale.fine-tune trough { - margin: calc(0.5em - 1px); - padding: 1px; +scale trough highlight { + background-color: transparent; + background-image: linear-gradient(to bottom, shade (@accent-color2,1.22), shade(@accent-color2,.88)); + border: 0.083333333333333333em solid shade(@bg-dark-grey,0.9); + margin: 0 -0.583333333333333333em; + border-radius: 0.333333333333333333em; + min-height: 0; + min-width: 0; + padding: 0.333333333333333333em 0.333333333333333333em 0 0; /*height of trough */ } + scale.fine-tune trough highlight { - margin: -2px; + padding: 0.5em 0.5em 0 0; + border-radius: 0.5em; } - scale:disabled slider, -scale:disabled trough { - background-color: shade(@bg-grey,.9); - box-shadow: none; +scale:disabled trough highlight { + background-color: shade(@bg-grey,.83); background-image: none; + border-color: transparent; } +#BatchQueueButtonsMainContainer scale trough, #BatchQueueButtonsMainContainer scale:disabled slider, -#BatchQueueButtonsMainContainer scale:disabled trough { - background-color: shade(@bg-light-grey,.85); +#BatchQueueButtonsMainContainer scale:disabled trough highlight { + background-color: @bg-grey; } /*** end ***************************************************************************************/ @@ -693,50 +762,60 @@ progressbar.vertical { min-width: 0; min-height: 9em; } +progressbar text { + background-color: transparent; +} progressbar.vertical text { color: transparent; } -progressbar.vertical trough { - min-width: 0.5em; +progressbar trough { + background-color: alpha(@bg-grey, .45); + border: 0.083333333333333333em solid transparent; + border-radius: 0.416666666666666666em; +} +#IopsPanel progressbar trough { + background-color: @bg-grey; +} + +progressbar trough progress { background-color: transparent; - border-width: 0; + border-radius: 0.416666666666666666em; + border: 0.083333333333333333em solid @bg-button-border; +} + +progressbar.vertical trough { + min-width: 0.416666666666666666em; } progressbar.vertical trough progress { - min-width: 0.5em; - margin: 0 -1px; - background-color: @accent-color2; - border-width: 0; - border-radius: 0.5em; + min-width: 0.416666666666666666em; + margin: -1px 0; + background-image: linear-gradient(to right, shade (@accent-color2,1.2), shade(@accent-color2,.85)); } + progressbar.horizontal trough { - min-height: 0.4166em; - background-color: transparent; - border: none; - border-radius: 0.5em; - margin-top: 0.5834em; + min-height: 0.416666666666666666em; + margin-top: 0.416666666666666666em; } -progressbar.horizontal trough progress { - min-height: 0.4166em; - margin: -1px 0; - background-color: @accent-color2; - border: none; - border-radius: 0.5em; +#IopsPanel progressbar.horizontal trough { + margin-top: 0; } -#IopsPanel progressbar.horizontal trough { - min-height: 0.5em; - background-color: @bg-scale-entry; - border: 0.0834em solid @bg-button-border; - margin-top: 0.25em; +progressbar.horizontal trough progress { + min-height: 0.416666666666666666em; + margin: 0 -1px; + background-image: linear-gradient(to bottom, shade (@accent-color2,1.2), shade(@accent-color2,.85)); } -#IopsPanel progressbar.horizontal trough progress { - min-height: 0.5em; - margin: -1px 0; - background-color: @accent-color2; - border: none; - border-radius: 0.5em; + +/* #IopsPanel progressbar trough.empty, */ +progressbar.horizontal trough.empty, +progressbar.vertical trough.empty { + background-color: transparent; +} +progressbar trough.empty progress { + border-color: transparent; + background-image: none; } /*** end ***************************************************************************************/ @@ -749,64 +828,54 @@ notebook tab, notebook stack { border-radius: 0; border: none; - box-shadow: none; padding: 0; margin: 0; min-width: 0; min-height: 0; } -notebook header { +notebook > header { background-color: @bg-dark-grey; - padding: 0 0.4167em; + padding: 0 0.416666666666666666em; } -notebook header.left { - padding: 0.4167em 0; +notebook > header.left { + padding: 0.416666666666666666em 0; } notebook tabs { background-color: transparent; } -notebook header tab { +notebook > header tab { background-color: transparent; - margin: 0.4167em 0.25em; - padding: 0 0.3334em; + margin: 0.416666666666666666em 0.25em; + padding: 0 0.333333333333333333em; } -notebook header.left tab { - margin: 0.25em 0.4167em; - padding: 0.3334em 0; +notebook > header.left tab { + margin: 0.25em 0.416666666666666666em; + padding: 0.333333333333333333em 0; } -notebook header tab > grid > image { - min-height: 2.5em; - min-width: 0; - padding: 0 0.25em 0 0; +notebook > header tab > grid > image { + min-height: 2em; + min-width: 2em; + padding: 0.25em; margin: 0; } -notebook header.left tab > grid > image { - min-height: 0; - min-width: 2.5em; - padding: 0.25em 0 0; -} -notebook header tab label { - margin: 0.0834em; -} -notebook header tab:hover label { + +notebook > header tab:hover label { color: @headline-hl; } -notebook header tab:checked { +notebook > header tab:checked { box-shadow: 0 0.25em @accent-color2; } -notebook header.left tab:checked { +notebook > header.left tab:checked { box-shadow: 0.25em 0 @accent-color2; } notebook > header > tabs > arrow { background-color: transparent; border-radius: 0.2em; - min-width: 0; - min-height: 0; - padding: 0 0.1667em; + padding: 0 0.166666666666666666em; margin: 0.5em 0; } notebook > header.left > tabs > arrow { - padding: 0.1667em 0; + padding: 0.166666666666666666em 0; margin: 0 0.5em; } notebook > header > tabs > arrow:hover { @@ -825,11 +894,11 @@ dialog notebook stack { /*?win*/ #MainNotebook > stack { - padding: 0.4167em; + padding: 0.416666666666666666em; } #MainNotebook > stack > :nth-child(2) > box:nth-child(3) { - margin-top: 0.4167em; + margin-top: 0.416666666666666666em; } @@ -837,78 +906,83 @@ dialog notebook stack { dialog.csd #PrefNotebook > header, dialog.csd #AboutNotebook > header, window.csd:not(.fullscreen) #MainNotebook > header.top { - border-top: 0.08334em solid rgba(200,200,200,.18); + border-top: 0.083333333333333333em solid rgba(200,200,200,.18); } /**/ + +#RightNotebook > stack > scrolledwindow > viewport > box > box:last-child > image, +#ToolPanelNotebook > stack > scrolledwindow > viewport > box > box:last-child > image { + min-height: 5em; +} + #ToolPanelNotebook > header tabs { - margin-bottom: 0.3334em; + margin-bottom: 0.333333333333333333em; } - -#ToolPanelNotebook > header tab { - margin-left: 0; - margin-right: 0; - padding: 0 0.3334em; -} -#ToolPanelNotebook > header tab + tab { - margin-left: 0.25em; -} - -#ToolPanelNotebook > header tab #TextOrIcon image{ - min-height: 2.3333em; - min-width: calc(2em + 4px); - padding: 2px 0; +#ToolPanelNotebook > header tab > box > image{ + min-height: 2em; + min-width: 2em; + padding-top: 0.25em; + padding-bottom: 0.333333333333333333em; margin: 0; } #RightNotebook > header { - margin: 0 0.4167em 0 0; + margin: 0 0.416666666666666666em 0 0; } #RightNotebook > stack { background-color: @bg-grey; padding: 0; } -#RightNotebook header tab label { - padding-left: 0.1667em; - padding-right: 0.1667em; +#RightNotebook > header tab label { + padding-left: 0.25em; + padding-right: 0.25em; } #RightNotebook > stack > :nth-child(1) > * > box, #RightNotebook > stack > :nth-child(4) > * > box { padding: 0.5em; - border: 0.0834em solid @bg-entry-border; + border: 0.083333333333333333em solid @bg-entry-border; } -#PrefNotebook header { - margin: -0.6667em -0.6667em 0.3334em; +#PrefNotebook > header { + margin: -0.666666666666666666em -0.666666666666666666em 0.333333333333333333em; } -#PrefNotebook header tab label { - padding-top: 0.1667em; - padding-bottom: 0.1667em; +#PrefNotebook > header tab label { + padding-top: 0.25em; + padding-bottom: 0.25em; +} +#PrefNotebook > stack { + margin: 0 -0.666666666666666666em; +} +#PrefNotebook > stack > scrolledwindow > viewport { + padding: 0 0.666666666666666666em; } -#AboutNotebook header { - margin: -0.6667em -0.6667em 0.6667em; +#AboutNotebook > header { + margin: -0.666666666666666666em -0.666666666666666666em 0.666666666666666666em; } -#AboutNotebook stack text { +#AboutNotebook > stack text, +#AboutNotebook > stack textview { background-color: @bg-dark-grey; + padding: 0.75em 0; } /* All tool panels have a frame except for Meta which unlike the rest is a notebook itself. * So we use CSS to make it look like a frame. */ -#MetaPanelNotebook header { +#MetaPanelNotebook > header { background-color: @bg-grey; - padding: 0.3334em; + padding: 0.333333333333333333em; margin: 0 0.5em 0; } #MetaPanelNotebook > header > tabs { background-color: @bg-dark-grey; - padding-left: 0.3334em; + padding-left: 0.333333333333333333em; } #MetaPanelNotebook > header tab label{ - margin: 0.0834em; + margin: 0.083333333333333333em; } #MetaPanelNotebook > stack > box { @@ -916,37 +990,37 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { background-color: @bg-grey; border-radius: 0; border-top-style: none; - padding: 0 0.3334em 0.25em; + padding: 0 0.333333333333333333em 0.25em; margin: 0 0.5em -0.5em; } #MetaPanelNotebook > stack > box:nth-child(1) > scrolledwindow { - margin: 0 0 0.3334em; + margin: 0 0 0.333333333333333333em; padding: 0; } #MetaPanelNotebook > stack > box:nth-child(2) > scrolledwindow > viewport.frame { - padding: 0 0 0 1em; + padding: 0 0 0 1.166666666666666666em; } #MetaPanelNotebook separator { background-color: @border-color; - margin: 0.1667em 0; + margin: 0.166666666666666666em 0; } #MetaPanelNotebook entry, #MetaPanelNotebook button, #MetaPanelNotebook combobox button { margin-top: 0; margin-bottom: 0; - min-height: 1.6666em; - min-width: 0.8333em; + min-height: 1.666666666666666666em; + min-width: 0; } #MetaPanelNotebook entry { - padding: 0 0.3334em; + padding: 0 0.333333333333333333em; background-color: @bg-dark-grey; margin: 0; border-radius: 0; } #MetaPanelNotebook > stack > box:nth-child(1) > :nth-child(1) { - border: 0.0834em solid @bg-dark-grey; + border: 0.083333333333333333em solid @bg-dark-grey; } #MetaPanelNotebook > stack > box:nth-child(2) > scrolledwindow scrolledwindow { background-color: @bg-dark-grey; @@ -954,13 +1028,13 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { margin: 0; } #MetaPanelNotebook > stack > box:nth-child(2) .view { - border: 0.0834em solid @bg-dark-grey; - padding: 0.1667em; + border: 0.083333333333333333em solid @bg-dark-grey; + padding: 0.166666666666666666em; margin: 0; } #MetaPanelNotebook textview.view { background-color: @bg-dark-grey; - padding: 0.0834em 0.3334em; + padding: 0.083333333333333333em 0.333333333333333333em; margin: 0; } #MetaPanelNotebook text { @@ -976,17 +1050,17 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { } #MetaPanelNotebook combobox + button, #MetaPanelNotebook combobox + button + button { - margin-left: 0.1667em; - min-width: 1.6666em; + margin-left: 0.166666666666666666em; + min-width: 1.666666666666666666em; } #MetaPanelNotebook > stack > box > grid > button { - margin-top: 0.0834em; - margin-bottom: 0.0834em; - min-height: 2.1666em; + margin-top: 0.083333333333333333em; + margin-bottom: 0.083333333333333333em; + min-height: 2.5em; } #MetaPanelNotebook label { - padding: 0.0834em 0; + padding: 0.083333333333333333em 0; } /*** end ***************************************************************************************/ @@ -994,7 +1068,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { /*** File Browser ******************************************************************************/ #FileCatalog { background-color: @bg-image; - border: 0.0834em solid @bg-dark-grey; + border: 0.083333333333333333em solid @bg-dark-grey; } #FileCatalog:selected { background-color: @accent-color3; @@ -1008,7 +1082,7 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { } #ToolBarPanelFileBrowser { - margin: 0.4167em -1px; + margin: 0.416666666666666666em -1px; min-height: 0; min-width: 0; padding: 0; @@ -1016,56 +1090,68 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #ToolBarPanelFileBrowser > box > button, #ToolBarPanelFileBrowser > button { - margin: 0 0.0834em; + margin: 0 0.083333333333333333em; } /* Filter */ #ToolBarPanelFileBrowser .smallbuttonbox { - min-height: 1.0834em; + min-height: 1.333333333333333333em; padding: 0; margin: 0; } #ToolBarPanelFileBrowser .smallbuttonbox:nth-child(2) { - margin: 1px 0 -1px 0; + margin: 0.083333333333333333em 0 -0.166666666666666666em; +} +#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton image { + margin: -0.166666666666666666em; + min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em; } #ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton { min-height: 0; - min-width: 1.0834em; + min-width: 1.333333333333333333em; padding: 0; - margin: 0 2px; + margin: 0 0.25em; border: none; border-radius: 0; background-color: transparent; background-image: none; box-shadow: none; } -#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton:checked { - background-color: @bg-dark-grey; -} -#ToolBarPanelFileBrowser .smallbuttonbox button.smallbutton image{ - -gtk-icon-transform: scale(calc(14/16)); - margin: -2px +#FileBrowser #ToolBarPanelFileBrowser box:nth-child(7) > box.smallbuttonbox > button.smallbutton:checked, +#EditorLeftPaned #ToolBarPanelFileBrowser box:nth-child(5) > box.smallbuttonbox > button.smallbutton:checked { + background-image: image(rgba(30,30,30,.3)); + background-color: @bg-button-active; } /**/ -#ToolBarPanelFileBrowser entry + button.flat, -#FileBrowser entry + button.flat { - min-height: 1.6666em; - min-width: 1.6666em; - margin: 0 0 0 -1.6667em; +#FileBrowserQueryToolbar entry + button.flat, +#FileBrowserIconToolbar entry + button.flat { + min-height: 1.666666666666666666em; + min-width: 1.666666666666666666em; + margin: 0; border-radius: 0 0.2em 0.2em 0; - border: 0.0834em solid transparent; + box-shadow: inset 0 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + border: 0.083333333333333333em solid @bg-entry-border; + background-color: @bg-scale-entry; padding: 0; } -#ToolBarPanelFileBrowser entry, -#FileBrowser entry { - min-height: 1.6666em; - min-width: 12em; - margin: 0 -2px 0 0; - padding: 0 2em 0 0.3334em; +#FileBrowserQueryToolbar entry + button.flat:not(:hover):not(:active), +#FileBrowserIconToolbar entry + button.flat:not(:hover):not(:active) { + border-left: none; + padding-left: 0.083333333333333333em; } -#ToolBarPanelFileBrowser label, -#FileBrowser label { - margin: 0 0.3334em 0 0.5em; +#FileBrowserQueryToolbar entry, +#FileBrowserIconToolbar entry { + min-height: 1.666666666666666666em; + min-width: 0; + margin: 0; + padding: 0 0.333333333333333333em; + border-right: none; + border-radius: 0.2em 0 0 0.2em; +} +#FileBrowserQueryToolbar label, +#FileBrowserIconToolbar label { + margin: 0 0.333333333333333333em 0 0.5em; } /*** end ***************************************************************************************/ @@ -1076,21 +1162,21 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { #BeforeAfterContainer { background-color: @bg-grey; - border: 0.0834em solid @bg-dark-grey; + border: 0.083333333333333333em solid @bg-dark-grey; border-radius: 0; padding: 0; - margin: -2px 0 0.4167em; + margin: calc(0.416666666666666666em - 2px) 0 0.416666666666666666em; } #BeforeAfterContainer > box:nth-child(2) > box:nth-child(2), #BeforeAfterContainer > box:nth-child(1) > box:nth-child(2){ - border-top: 0.0834em solid @bg-dark-grey; + border-top: 0.083333333333333333em solid @bg-dark-grey; } #BeforeAfterContainer > box:nth-child(2){ - border-left: 0.0834em solid @bg-dark-grey; + border-left: 0.083333333333333333em solid @bg-dark-grey; } #BeforeAfterContainer label { - min-height: 2.6666em; + min-height: 2.666666666666666666em; padding: 0 0.5em; } /* Small Lock Button */ @@ -1099,34 +1185,30 @@ window.csd:not(.fullscreen) #MainNotebook > header.top { min-width: 2em; margin: 0.25em 0.25em 0.25em 0; padding: 0; + border-radius: 0.2em; + border: 0.083333333333333333em solid @bg-button-border; + background-color: transparent; + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); } #BeforeAfterContainer button image{ - margin: 0 0 0 1px; + margin: 0 0 0 0.083333333333333333em; } #BeforeAfterContainer button:checked image{ - margin: 0 -2px 0 3px; + margin: 0.083333333333333333em -0.166666666666666666em 0.083333333333333333em 0.25em; } /**/ #EditorToolbarTop { - margin: -2px -2px 0.4167em; + margin: 0 -2px 0; padding: 0; min-height: 0; } -/* Single Window */ -window > box > #EditorRightPaned > paned > paned > box { - margin-top: -2px; - padding: 0; -} -window > box > #EditorRightPaned > paned > paned > box > #EditorToolbarTop { - margin-top: 0; -} -/**/ #EditorTopPanel button { - margin: 0 0.0834em; - min-height: 2.1666em; - min-width: 2.1666em; + margin: 0 0.083333333333333333em; + min-height: 2.5em; + min-width: 2.5em; } /* Removes margin from the last button. Otherwise the filmstrip will cut of the right border. */ #EditorTopPanel :last-child > button:last-child { @@ -1134,8 +1216,8 @@ window > box > #EditorRightPaned > paned > paned > box > #EditorToolbarTop { } #EditorTopPanel button.narrowbutton { - min-width: 1em; - padding: 0; + min-width: 0.833333333333333333em; + padding: 0 0.166666666666666666em; } /*Button editor bottom*/ @@ -1147,8 +1229,8 @@ window > box > #EditorRightPaned > paned > paned > box > #EditorToolbarTop { padding: 0 2px 0 3px; } #EditorZoomPanel button { - margin-left: 0.0834em; - margin-right: 0.0834em; + margin-left: 0.083333333333333333em; + margin-right: 0.083333333333333333em; } /*** end ***************************************************************************************/ @@ -1157,20 +1239,26 @@ window > box > #EditorRightPaned > paned > paned > box > #EditorToolbarTop { background-color: @bg-dark-grey; padding: 0 0 0.5em 0; } + +#MyExpander image { + min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em +} + /*Curve spinbutton background */ #MyExpander flowbox > flowboxchild { background-color: transparent; } /**/ #MyExpander .drawingarea:not(.slider) { - border: 0.0834em solid @bg-light-grey; + border: 0.083333333333333333em solid @bg-light-grey; background-color: @bg-dark-grey; } #MyExpander .slider, #MyExpander #CurveSHCSelector { background-image: linear-gradient(to bottom, shade (@accent-color4,1.15), shade (@accent-color4,.85)); background-color: @accent-color4; - border: 0.0834em solid rgb(15,15,15); + border: 0.083333333333333333em solid rgb(15,15,15); } #MyExpander .drawingarea:disabled { background-color: shade(@bg-grey,.85); @@ -1178,11 +1266,11 @@ window > box > #EditorRightPaned > paned > paned > box > #EditorToolbarTop { background-image: none; } #ThresholdAdjuster { - margin: 0.0834em 0 0.1667em 0; + margin: 0.083333333333333333em 0 0.166666666666666666em 0; } #ToolPanelNotebook scrolledwindow viewport.frame { - padding: 0 0.56em; + padding: 0 0.5em; } #MyExpander { @@ -1200,7 +1288,7 @@ window > box > #EditorRightPaned > paned > paned > box > #EditorToolbarTop { /* Sub-tool (MyExpander) */ #ExpanderBox2 > box, #ExpanderBox2 > grid { background-color: transparent; - border: 0.0834em solid @border-color; + border: 0.083333333333333333em solid @border-color; border-radius: 0; margin: 0; padding: 0.5em; @@ -1214,7 +1302,7 @@ window > box > #EditorRightPaned > paned > paned > box > #EditorToolbarTop { #MyExpanderTitle label { color: @headline-big; padding: 0; - margin: 0.0834em 0.25em 0 0.5em; + margin: 0.083333333333333333em 0.25em 0 0.5em; } #MyExpanderTitle:hover label { @@ -1229,19 +1317,19 @@ window > box > #EditorRightPaned > paned > paned > box > #EditorToolbarTop { border: none; padding: 0; margin: 0; - box-shadow: 0 0.25em 0.75em 0.0834em rgba(0, 0, 0, 0.50), 0 0 0 0.0834em @bg-dark-grey; + box-shadow: 0 0.25em 0.75em 0.083333333333333333em rgba(0, 0, 0, 0.50), 0 0 0 0.083333333333333333em @bg-dark-grey; } menu { background-color: @bg-dark-grey; - border: 0.0834em solid @accent-color; - padding: 0.0834em; + border: 0.083333333333333333em solid @accent-color; + padding: 0.083333333333333333em; margin: 0; } -menu > .top, -menu > .top:hover, -menu > .bottom, -menu > .bottom:hover { +menu > arrow.top, +menu > arrow.top:hover, +menu > arrow.bottom, +menu > arrow.bottom:hover { background-color: transparent; border: none; padding: 0.5em; @@ -1249,10 +1337,17 @@ menu > .bottom:hover { } menuitem { - padding: 0 0.3334em; - margin: 0.0834em; + padding: 0 0.333333333333333333em; + margin: 0.083333333333333333em; min-height: 2em; } + +menu arrow { + min-width: 1.333333333333333333em; + margin: 0 -0.166666666666666666em; + padding: 0; + margin: 0 -0.25em 0 0; +} menuitem:hover { background-color: @accent-color; } @@ -1263,8 +1358,9 @@ menuitem:hover > * { menu image { min-height: 2em; + min-width: 1.333333333333333333em; padding: 0; - margin: 0 0.3334em 0 0; + margin: 0 0.25em 0 -1.166666666666666666em; } /*** Selection popup list (used in filechooser) ***/ @@ -1273,11 +1369,11 @@ entry > window > frame { } entry > window > frame > border { background-color: @bg-dark-grey; - padding: 0.0834em; - border: 0.0834em solid @accent-color; + padding: 0.083333333333333333em; + border: 0.083333333333333333em solid @accent-color; } entry > window > frame > border { - margin: 0.0834em; + margin: 0.083333333333333333em; } /* end */ @@ -1287,7 +1383,7 @@ entry > window > frame > border { popover.background { background-color: @bg-dark-grey; - border: 0.0834em solid @accent-color; + border: 0.083333333333333333em solid @accent-color; border-radius: 0; padding: 0; margin: 0; @@ -1299,7 +1395,7 @@ popover.background > box { } popover.background modelbutton { min-height: 2em; - padding: 0 0.4167em; + padding: 0 0.416666666666666666em; margin: 0; border-radius: 0; } @@ -1316,25 +1412,28 @@ popover.background modelbutton:hover { /*** Switch ***********************************************************************************/ switch { - min-height: 2.1666em; + min-height: 2.5em; min-width: 11em; margin: 0; padding: 0; border-radius: 0.2em; background-image: none; - box-shadow: inset 0.0834em 0.0834em rgba(0, 0, 0, 0.08), 0 0.0834em rgba(242, 242, 242, 0.1); - border: 0.0834em solid @bg-entry-border; + box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + border: 0.083333333333333333em solid @bg-entry-border; background-color: @bg-scale-entry; margin-bottom: 0.5em; } switch slider { - border: 0.0834em solid @bg-entry-border; background-color: shade (@bg-light-grey, .85); background-image: linear-gradient(to bottom, rgba(125,125,125,.4), rgba(60,60,60,.4)); - border: 0.0834em solid @bg-entry-border; - box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.1); + border: 0.083333333333333333em solid @bg-entry-border; + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); border-radius: 0.2em 0 0 0.2em; + + /* Needed to cover the total switch */ + margin: -0.083333333333333333em; + padding: 0.083333333333333333em; } switch:checked slider{ border-radius: 0 0.2em 0.2em 0; @@ -1361,14 +1460,14 @@ switch:disabled:not(:checked) { /*** Buttons ***********************************************************************************/ button { - min-height: 2.1666em; - min-width: 2.1666em; + min-height: 2.5em; + min-width: 2.5em; margin: 0; padding: 0; /* x */ border-radius: 0.2em; - border: 0.0834em solid @bg-button-border; + border: 0.083333333333333333em solid @bg-button-border; background-color: transparent; - box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.1); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); } button.flat { @@ -1379,23 +1478,24 @@ button.text-button label { } #PrefNotebook > stack > :nth-child(5) combobox { - /* margin: 0.1667em 0; */ + /* margin: 0.166666666666666666em 0; */ margin: 2px 0; } #PrefNotebook > stack > :nth-child(2) #MyFileChooserButton { - /* margin: 0.25em 0.3334em; */ + /* margin: 0.25em 0.333333333333333333em; */ margin: 3px 5px; } filechooser button image, #MyFileChooserButton image { - opacity: .70; - -gtk-icon-style: symbolic; + min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em; + opacity: .85; } #MainNotebook > header > grid > button, button.flat { - border: 0.0834em solid transparent; + border: 0.083333333333333333em solid transparent; box-shadow: none; background-image: none; background-color: transparent; @@ -1407,18 +1507,18 @@ button.flat { dialog scale + button.flat, #MainNotebook > stack > :nth-child(2) > box:nth-child(1) scale + button.flat, entry + button.flat { - min-height: 1.1666em; + min-height: 1.166666666666666666em; min-width: 1.5em; - margin: 0.0834em 0 0.0834em 0.1667em; - padding: 0 0 0 0.1667em; + margin: 0.083333333333333333em 0 0.083333333333333333em 0.166666666666666666em; + padding: 0 0 0 0.166666666666666666em; } dialog entry + button:last-child.flat { - min-height: 1.6666em; + min-height: 1.666666666666666666em; } #MyExpander scale + button:last-child.flat, #MyExpander spinbutton + button:last-child.flat { - margin: 0 0 0 0.1667em; + margin: 0 0 0 0.166666666666666666em; } #MyExpander image + button:last-child.flat { margin: 0 0 0 0.25em; @@ -1426,30 +1526,27 @@ dialog entry + button:last-child.flat { /**/ /* Buttons Curve drawingarea*/ -#MyExpander button.flat + button.flat, -#MyExpander button.flat:first-child { - min-height: 2em; - min-width: 2em; - margin: 0.1667em 0.1667em 0 0; +#MyExpander grid > grid > grid > button.flat + button.flat, +#MyExpander grid > grid > grid > button.flat:first-child { + min-height: 2.5em; + min-width: 2.5em; + margin: 0.166666666666666666em 0.166666666666666666em 0 0; padding: 0; } -#MyExpander button.flat + button.flat image, -#MyExpander button.flat:first-child image{ - -gtk-icon-transform: scale(calc(20/24)); - margin: -2px; -} /**/ +#BeforeAfterContainer button:hover, #ToolBarPanelFileBrowser entry + button:hover, #FileBrowser entry + button:hover, button.flat:hover, button:hover { border-color: @bg-button-border; - box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.1); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.1); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-hover; } +#BeforeAfterContainer button:checked, #ToolBarPanelFileBrowser entry + button:active, #FileBrowser entry + button:active, button.flat:active, @@ -1457,7 +1554,7 @@ button.flat:checked, button:active, button:checked { border-color: @bg-button-border; - box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.08); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.08); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: @bg-button-active; } @@ -1465,22 +1562,22 @@ button:checked { /* Add space between connected buttons */ button.Right, button.MiddleH { - margin-left: 0.1667em; - border: 0.0834em solid @bg-button-border; + margin-left: 0.166666666666666666em; + border: 0.083333333333333333em solid @bg-button-border; } /**/ /* Applies special styles in main notebook */ #ProfilePanel { margin-bottom: -2px; - padding-bottom: 0.4167em; + padding-bottom: 0.416666666666666666em; } #ProfilePanel > label { - margin-bottom: 0.0834em; + margin-bottom: 0.083333333333333333em; } #ProfilePanel combobox { - margin-left: 0.1667em; - margin-right: 0.1667em; + margin-left: 0.166666666666666666em; + margin-right: 0.166666666666666666em; } #ProfilePanel button.Left { margin-left: -2px; @@ -1500,40 +1597,34 @@ button.MiddleH { dialog button, #MyExpander button, #BatchQueueButtonsMainContainer button { - min-height: 1.6666em; + min-height: 1.666666666666666666em; min-width: 0; - padding: 0 0.375em; - margin: 0.0834em 0; + padding: 0 0.416666666666666666em; + margin: 0.083333333333333333em 0; } #MyExpander #MyFileChooserButton + button.image-button{ - min-width: 1.6666em; + min-width: 1.666666666666666666em; padding: 0; } +combobox button.combo, #ToolPanelNotebook > stack > box > box > combobox button.combo, -dialog button.combo, -#MyExpander button.combo, -#BatchQueueButtonsMainContainer button.combo { - padding: 0; +dialog combobox button.combo, +#MyExpander combobox button.combo, +#BatchQueueButtonsMainContainer combobox button.combo { + padding: 0 0.166666666666666666em 0 0.25em; } + #ToolPanelNotebook > stack > box > box > combobox { margin-right: 0.25em; } -combobox button cellview { - padding: 0 0 0 0.1667em; -} -combobox arrow { - padding: 0 0.1667em 0 0; - margin: 0; -} -#MetaPanelNotebook combobox arrow { + +combobox entry + button { padding: 0; - min-width: 1.25em; } -.popupbutton-arrow { - min-width: 0; +combobox entry + button arrow{ + margin: 0 -0.166666666666666666em 0 -0.25em; } -/**/ /* Add/remove space between buttons and labels in toolbox*/ #ToolPanelNotebook > stack > box > box > label { @@ -1547,25 +1638,21 @@ combobox arrow { #MyExpander combobox + combobox, #MyExpander button + label, #MyExpander combobox + label { - margin-left: 0.1667em; + margin-left: 0.166666666666666666em; } #MyExpander label + * > button:not(.flat).Left, #MyExpander label + combobox:not(:first-child):not(:only-child), #MyExpander label + button:not(.flat):not(spinbutton) { - margin-left: 0.3334em; + margin-left: 0.333333333333333333em; } buttonbox:not(.dialog-action-area) button{ - margin: 0.0834em 0 0.3334em 0.1667em; + margin: 0.083333333333333333em 0 0.333333333333333333em 0.166666666666666666em; } #PrefNotebook buttonbox:not(.dialog-action-area) { margin-right: -5px; } -#PrefNotebook radiobutton + entry + button:last-child image { - -gtk-icon-transform: scale(calc(17/24)); - margin: -5px; -} /* Arrow toggle combo button */ #IopsPanel .image-combo button.Right, @@ -1576,13 +1663,13 @@ buttonbox:not(.dialog-action-area) button{ padding-right: 0; border-top-left-radius: 0; border-bottom-left-radius: 0; - min-width: 1.3333em; + min-width: 1.333333333333333333em; } #IopsPanel .image-combo button.Left, #MyExpander .image-combo button.Left { border-top-right-radius: 0; border-bottom-right-radius: 0; - min-width: 2.1666em; + min-width: 2.5em; } /**/ @@ -1591,36 +1678,38 @@ buttonbox:not(.dialog-action-area) button{ margin: 0;/* x */ } /* Graduated filter big button */ -#MyExpander button:not(.image-button).independent:first-child:not(.flat):only-child { - min-height: 2em; - min-width: 2em; +#MyExpander button.independent:not(.image-button):not(.text-button):first-child:only-child { + min-height: 2.5em; + min-width: 2.5em; padding: 0; - margin: 0 0 0.3334em; + margin: 0.25em 0; } -#MyExpander button:not(.image-button).independent:first-child:not(.flat):only-child image { - -gtk-icon-transform: scale(calc(20/24)); - margin: -2px; +/**/ +/* Pipette */ +#MyExpander button.independent.image-button { + min-height: 2.5em; } -/* WB pipete big button*/ -#MyExpander button.image-button.independent:first-child:not(.flat):not(:only-child) image { - -gtk-icon-transform: scale(calc(18/24)); - margin: -4px; +#MyExpander button.independent.image-button + label + combobox button { + margin: 0.5em 0; +} +#MyExpander button.independent.image-button + label { + margin-left: 2em ; } /**/ button.color { - min-height: 1.1666em; + min-height: 1.166666666666666666em; padding: 0.25em; } /* Save, Cancel, OK ... buttons */ .dialog-action-area button { - min-height: 2.1666em; - margin-top: 0.3334em; + min-height: 2.5em; + margin-top: 0.333333333333333333em; } messagedialog .dialog-action-area button { - margin: 0 0.6667em 0.6667em 0.6667em; - min-height: 1.8333em; + margin: 0 0.666666666666666666em 0.666666666666666666em 0.666666666666666666em; + min-height: 2.166666666666666666em;; } messagedialog .dialog-action-area button:not(:only-child):nth-child(1) { margin-right: 0.25em; @@ -1637,20 +1726,24 @@ window .view button { background-image: none; box-shadow: none; min-height: 2em; - min-width: 1.3333em; - padding: 0 0.3334em; + min-width: 1.333333333333333333em; + padding: 0 0.166666666666666666em 0 0.333333333333333333em; margin: 0; } +window treeview > header image { + min-width: 1.333333333333333333em; +} + dialog .view button.text-button label, window .view button.text-button label { margin: 0; } window .view button { border: none; - border-bottom: 0.0834em solid @border-color; + border-bottom: 0.083333333333333333em solid @border-color; } dialog .view button { - border: 0.0834em solid @border-color; + border: 0.083333333333333333em solid @border-color; } .view button:checked, @@ -1696,7 +1789,7 @@ window .view header button, } .path-bar button label { margin: 0; - padding: 0 0.3334em; + padding: 0 0.333333333333333333em; } /**/ @@ -1704,12 +1797,12 @@ window .view header button, popover button.text-button { background-color: @bg-dark-grey; background-image: none; - border: 0.0834em solid @border-color; + border: 0.083333333333333333em solid @border-color; box-shadow: none; background-image: none; - margin: 0.08334em 0; - min-height: 1.6666em; - padding: 0 0.6667em; + margin: 0.083333333333333333em 0; + min-height: 1.666666666666666666em; + padding: 0 0.666666666666666666em; } popover button.text-button label { padding: 0; @@ -1733,10 +1826,10 @@ popover button.text-button:active { /* Titlebar & Notebook buttons */ #MainNotebook > header.top > grid > button { - margin: 0 0 0 0.4167em; + margin: 0 0 0 0.416666666666666666em; } #MainNotebook > header.left > grid > button { - margin: 0.4167em 0 0; + margin: 0.416666666666666666em 0 0; } headerbar button.titlebutton image { @@ -1744,13 +1837,13 @@ headerbar button.titlebutton image { margin: 0; } headerbar button.titlebutton { - margin: 0 0 0 0.3334em; + margin: 0 0 0 0.333333333333333333em; background-image: none; - border: 0.0834em solid transparent; + border: 0.083333333333333333em solid transparent; background-color: transparent; box-shadow: none; - min-width: 1.55em; - min-height: 1.55em; + min-width: 1.5em; + min-height: 1.5em; padding: 0; } messagedialog headerbar button.titlebutton { @@ -1761,22 +1854,26 @@ messagedialog headerbar button.titlebutton { #MainNotebook tab #CloseButton { padding: 0; - margin: 0.3334em -2px 0.5em 0.25em; + margin: 0.333333333333333333em 0 0.416666666666666666em 0.25em; min-width: 1.5em; - min-height: 1.5em; + min-height: 0; +} +#MainNotebook tab #CloseButton image{ + min-width: 1.333333333333333333em; + min-height: 1.333333333333333333em; } #MainNotebook > header > grid > button:hover, #MainNotebook tab #CloseButton:hover, headerbar button.titlebutton:hover{ border-color: rgba(0,0,0,.8); - box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.11); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.11); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: rgba(128, 128, 128,.20); } #MainNotebook > header > grid > button:active, headerbar button.titlebutton:active{ border-color: rgba(0,0,0,.8); - box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.15); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.15); background-image: linear-gradient(to bottom, rgba(100,100,100,.3), rgba(30,30,30,.3)); background-color: rgba(128, 128, 128,.40); } @@ -1784,13 +1881,13 @@ headerbar button.titlebutton:active{ headerbar button.titlebutton.close:hover{ border-color: rgba(0,0,0,.8); background-image: linear-gradient(to bottom, rgb(180,0,0), rgb(160,0,0) 40%, rgb(130,0,0)); - box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.32); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.32); } #MainNotebook tab #CloseButton:active, headerbar button.titlebutton.close:active{ border-color: rgba(0,0,0,.8); background-image: linear-gradient(to bottom, rgb(215,0,0), rgb(185,0,0) 40%, rgb(150,0,0)); - box-shadow: inset 0 0.0834em rgba(242, 242, 242, 0.4); + box-shadow: inset 0 0.083333333333333333em rgba(242, 242, 242, 0.4); } /**/ @@ -1806,18 +1903,18 @@ radiobutton { } #PrefNotebook checkbox, #PrefNotebook checkbutton { - min-height: 1.6666em; + min-height: 1.666666666666666666em; } check, radio { - border: calc(0.08334em + 0.18px) solid shade(@text-color, 0.95); + border: 0.105em solid shade(@text-color, 0.95); background-image: none; background-color: transparent; margin: 0; padding: 0; - min-height: 1.1666em; - min-width: 1.1666em; + min-height: 1.166666666666666666em; + min-width: 1.166666666666666666em; box-shadow: none; background-repeat: no-repeat; color: shade(@text-color, 0.95); @@ -1828,11 +1925,11 @@ checkbutton label { padding: 0; } check { - border-radius: 0.1667em; + border-radius: 0.166666666666666666em; } radio{ - border-radius: 1.1667em; + border-radius: 1.166666666666666666em; } check:disabled, radio:disabled { @@ -1843,17 +1940,22 @@ frame > checkbutton check{ margin-left: 0.5em; } +#PartialPaste checkbutton/* :not(#PartialPasteHeader) */ { + min-height: 1.166666666666666666em; + margin-top: calc(0.416666666666666666em - 4px); + margin-bottom: calc(0.416666666666666666em - 4px) +} #PartialPaste checkbutton:not(#PartialPasteHeader) { - min-height: 1.4em; - margin-left: 1.1667em; + margin-left: 1.166666666666666666em; } #PartialPasteHeader { - min-height: 1.4em; margin-left: 0.5em; + padding-top: 0.333333333333333333em; + padding-top: calc(0.666666666666666666em - 5px) } #MyExpander button + checkbutton:last-child { - margin-left: 0.3334em; + margin-left: 0.333333333333333333em; } /*** end ***************************************************************************************/ @@ -1861,44 +1963,44 @@ frame > checkbutton check{ /*** Entry & Spinbutton ************************************************************************/ #MyExpander entry, entry { - margin: 0.0834em 0; - padding: 0 0.3334em; - min-height: 1.6666em; + margin: 0.083333333333333333em 0; + padding: 0 0.333333333333333333em; + min-height: 1.666666666666666666em; min-width: 0; border-radius: 0.2em; - box-shadow: inset 0.0834em 0.0834em rgba(0, 0, 0, 0.08), 0 0.0834em rgba(242, 242, 242, 0.1); - border: 0.0834em solid @bg-entry-border; + box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); + border: 0.083333333333333333em solid @bg-entry-border; background-color: @bg-scale-entry; } spinbutton { - margin: 0.0834em 0; + margin: 0.083333333333333333em 0; padding: 0; - min-height: 1.6666em; + min-height: 1.666666666666666666em; min-width: 0; border-radius: 0.2em; background-color: @bg-scale-entry; - border: 0.0834em solid @bg-entry-border; - box-shadow: inset 0.0834em 0.0834em rgba(0, 0, 0, 0.08), 0 0.0834em rgba(242, 242, 242, 0.1); + border: 0.083333333333333333em solid @bg-entry-border; + box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, 0.08), 0 0.083333333333333333em rgba(242, 242, 242, 0.1); } #MyExpander spinbutton { - margin: 0.1667em 0; + margin: 0.166666666666666666em 0; padding: 0; - min-height: 1.3333em; + min-height: 1.333333333333333333em; min-width: 0; - border-top-left-radius: 1.8334em; - border-bottom-left-radius: 1.8334em; + border-top-left-radius: 1.833333333333333333em; + border-bottom-left-radius: 1.833333333333333333em; background-color: @bg-tb-spinbutton; - border: 0.0834em solid @bg-button-border; + border: 0.083333333333333333em solid @bg-button-border; color: @text-tbEntry; - box-shadow: inset 0.0834em 0.0834em rgba(0, 0, 0, .12), 0 0.0834em rgba(255, 255, 255, 0.12); + box-shadow: inset 0.083333333333333333em 0.083333333333333333em rgba(0, 0, 0, .12), 0 0.083333333333333333em rgba(255, 255, 255, 0.12); } #MyExpander button + label + spinbutton { margin: 0.25em 0; /* Needed for Reset & and Auto button height*/ } #MyExpander checkbutton + label + spinbutton { - margin: 0.3334em 0; /* Needed for Reset & and Auto checkbox button height*/ + margin: 0.333333333333333333em 0; /* Needed for Reset & and Auto checkbox button height*/ } #MyExpander image + spinbutton { @@ -1911,7 +2013,7 @@ spinbutton button { padding: 0; margin: 0; min-height: 0; - min-width: 1.3333em; + min-width: 1.333333333333333333em; background-image: none; background-color: transparent; border: none; @@ -1920,7 +2022,7 @@ spinbutton button { } #MyExpander spinbutton entry, spinbutton entry { - padding: 0 0.3334em; + padding: 0 0.333333333333333333em; margin: 0; min-height: 0; min-width: 0; @@ -1929,7 +2031,7 @@ spinbutton entry { background-color: transparent; } #MyExpander spinbutton entry { - padding: 0 0.3334em 0 0.8334em; + padding: 0 0.333333333333333333em 0 0.833333333333333333em; } #BatchQueueButtonsMainContainer spinbutton button:hover, @@ -1977,7 +2079,7 @@ entry:focus > selection { .view entry { background-color: @bg-dark-grey; margin: 0 -2px; - border: 0.0834em solid @accent-color; + border: 0.083333333333333333em solid @accent-color; box-shadow: none; } /* end*/ @@ -1988,20 +2090,20 @@ entry:focus > selection { :not(.popup):not(tooltip) > decoration { background-color: @winHeaderbar; background-image: none; - border-radius: 0.4167em 0.4167em 0 0; + border-radius: 0.416666666666666666em 0.416666666666666666em 0 0; border: none; padding: 0; - box-shadow: 0 0.25em 0.75em 0.0834em rgba(0, 0, 0, 0.5), 0 0 0 0.0834em @bg-dark-grey; - margin: 0.8334em; + box-shadow: 0 0.25em 0.75em 0.083333333333333333em rgba(0, 0, 0, 0.5), 0 0 0 0.083333333333333333em @bg-dark-grey; + margin: 0.833333333333333333em; } headerbar { background-color: shade(@winHeaderbar,1.12); - box-shadow: inset 0 0.0834em rgba(200,200,200,.13); + box-shadow: inset 0 0.083333333333333333em rgba(200,200,200,.13); background-image: linear-gradient(shade(@winHeaderbar,1.14), shade(@winHeaderbar,.86)); - border-bottom: 0.0834em solid @bg-dark-grey; - border-radius: 0.4167em 0.4167em 0 0; - min-height: 2.1666em; - padding: 0.0834em 0.4167em 0; + border-bottom: 0.083333333333333333em solid @bg-dark-grey; + border-radius: 0.416666666666666666em 0.416666666666666666em 0 0; + min-height: 2.333333333333333333em; + padding: 0.083333333333333333em 0.416666666666666666em 0; margin: 0; } messagedialog headerbar { @@ -2020,7 +2122,7 @@ headerbar .title{ /* Window in background */ :not(.popup):not(tooltip) > decoration:backdrop { - box-shadow: 0 0.25em 0.75em 0.0834em rgba(0, 0, 0, 0.3), 0 0 0 0.0834em @bg-dark-grey; + box-shadow: 0 0.25em 0.75em 0.083333333333333333em rgba(0, 0, 0, 0.3), 0 0 0 0.083333333333333333em @bg-dark-grey; } headerbar:backdrop { box-shadow: none; @@ -2030,3 +2132,21 @@ headerbar .title:backdrop { color: alpha(@winTitle,.60); } /*** end ***************************************************************************************/ +/* Toolbar stuck workaround */ + +/* .scrollableToolbar scrollbar:not(.overlay-indicator) slider:not(.dummy) { + padding: 0; + margin: 0; + min-height: 0; + min-width: 0; + border: none; +} */ + + + +/* .view:not(check):not(radio), image:not(check):not(radio), spinbutton button, cellview { + -gtk-icon-transform: scale(1.5); +} +* {-gtk-dpi: 144;} */ + + From b641fdaba799888d9e8bc92ff45f554fc8910d06 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Sat, 6 Oct 2018 22:17:33 +0200 Subject: [PATCH 52/52] some code movements for #4834 --- rtengine/improccoordinator.cc | 34 +++++++++++++++++- rtengine/procparams.cc | 67 ----------------------------------- rtengine/procparams.h | 3 -- rtgui/thumbnail.cc | 31 +++++++++++++++- 4 files changed, 63 insertions(+), 72 deletions(-) diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 52a1d10bc..4bd1f2f48 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -1410,7 +1410,39 @@ void ImProcCoordinator::process() paramsUpdateMutex.lock(); while (changeSinceLast) { - const bool panningRelatedChange = params.isPanningRelatedChange(nextParams); + const bool panningRelatedChange = + params.toneCurve != nextParams.toneCurve + || params.labCurve != nextParams.labCurve + || params.localContrast != nextParams.localContrast + || params.rgbCurves != nextParams.rgbCurves + || params.colorToning != nextParams.colorToning + || params.vibrance != nextParams.vibrance + || params.wb != nextParams.wb + || params.colorappearance != nextParams.colorappearance + || params.epd != nextParams.epd + || params.fattal != nextParams.fattal + || params.sh != nextParams.sh + || params.crop != nextParams.crop + || params.coarse != nextParams.coarse + || params.commonTrans != nextParams.commonTrans + || params.rotate != nextParams.rotate + || params.distortion != nextParams.distortion + || params.lensProf != nextParams.lensProf + || params.perspective != nextParams.perspective + || params.gradient != nextParams.gradient + || params.pcvignette != nextParams.pcvignette + || params.cacorrection != nextParams.cacorrection + || params.vignetting != nextParams.vignetting + || params.chmixer != nextParams.chmixer + || params.blackwhite != nextParams.blackwhite + || params.icm != nextParams.icm + || params.hsvequalizer != nextParams.hsvequalizer + || params.filmSimulation != nextParams.filmSimulation + || params.softlight != nextParams.softlight + || params.raw != nextParams.raw + || params.retinex != nextParams.retinex + || params.dirpyrequalizer != nextParams.dirpyrequalizer; + params = nextParams; int change = changeSinceLast; changeSinceLast = 0; diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index bee556b27..d8d6aee33 100644 --- a/rtengine/procparams.cc +++ b/rtengine/procparams.cc @@ -5048,73 +5048,6 @@ int ProcParams::write(const Glib::ustring& fname, const Glib::ustring& content) return error; } -bool ProcParams::isThumbRelatedChange(const ProcParams &newParams) const -{ - return toneCurve != newParams.toneCurve - || labCurve != newParams.labCurve - || localContrast != newParams.localContrast - || rgbCurves != newParams.rgbCurves - || colorToning != newParams.colorToning - || vibrance != newParams.vibrance - || wb != newParams.wb - || colorappearance != newParams.colorappearance - || epd != newParams.epd - || fattal != newParams.fattal - || sh != newParams.sh - || crop != newParams.crop - || coarse != newParams.coarse - || commonTrans != newParams.commonTrans - || rotate != newParams.rotate - || distortion != newParams.distortion - || lensProf != newParams.lensProf - || perspective != newParams.perspective - || gradient != newParams.gradient - || pcvignette != newParams.pcvignette - || cacorrection != newParams.cacorrection - || vignetting != newParams.vignetting - || chmixer != newParams.chmixer - || blackwhite != newParams.blackwhite - || icm != newParams.icm - || hsvequalizer != newParams.hsvequalizer - || filmSimulation != newParams.filmSimulation - || softlight != newParams.softlight; -} - -bool ProcParams::isPanningRelatedChange(const ProcParams &newParams) const -{ - return toneCurve != newParams.toneCurve - || labCurve != newParams.labCurve - || localContrast != newParams.localContrast - || rgbCurves != newParams.rgbCurves - || colorToning != newParams.colorToning - || vibrance != newParams.vibrance - || wb != newParams.wb - || colorappearance != newParams.colorappearance - || epd != newParams.epd - || fattal != newParams.fattal - || sh != newParams.sh - || crop != newParams.crop - || coarse != newParams.coarse - || commonTrans != newParams.commonTrans - || rotate != newParams.rotate - || distortion != newParams.distortion - || lensProf != newParams.lensProf - || perspective != newParams.perspective - || gradient != newParams.gradient - || pcvignette != newParams.pcvignette - || cacorrection != newParams.cacorrection - || vignetting != newParams.vignetting - || chmixer != newParams.chmixer - || blackwhite != newParams.blackwhite - || icm != newParams.icm - || hsvequalizer != newParams.hsvequalizer - || filmSimulation != newParams.filmSimulation - || softlight != newParams.softlight - || raw != newParams.raw - || retinex != newParams.retinex - || dirpyrequalizer != newParams.dirpyrequalizer; -} - PartialProfile::PartialProfile(bool createInstance, bool paramsEditedValue) { if (createInstance) { diff --git a/rtengine/procparams.h b/rtengine/procparams.h index db89754a7..0b8b5ba56 100644 --- a/rtengine/procparams.h +++ b/rtengine/procparams.h @@ -1488,9 +1488,6 @@ public: bool operator ==(const ProcParams& other) const; bool operator !=(const ProcParams& other) const; - bool isThumbRelatedChange(const ProcParams &newParams) const; - bool isPanningRelatedChange(const ProcParams &newParams) const; - private: /** Write the ProcParams's text in the file of the given name. * @param fname the name of the file diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 88cabe19d..0f0433878 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -419,7 +419,36 @@ bool Thumbnail::hasProcParams () const void Thumbnail::setProcParams (const ProcParams& pp, ParamsEdited* pe, int whoChangedIt, bool updateCacheNow) { - const bool needsReprocessing = pparams.isThumbRelatedChange(pp); + const bool needsReprocessing = + pparams.toneCurve != pp.toneCurve + || pparams.labCurve != pp.labCurve + || pparams.localContrast != pp.localContrast + || pparams.rgbCurves != pp.rgbCurves + || pparams.colorToning != pp.colorToning + || pparams.vibrance != pp.vibrance + || pparams.wb != pp.wb + || pparams.colorappearance != pp.colorappearance + || pparams.epd != pp.epd + || pparams.fattal != pp.fattal + || pparams.sh != pp.sh + || pparams.crop != pp.crop + || pparams.coarse != pp.coarse + || pparams.commonTrans != pp.commonTrans + || pparams.rotate != pp.rotate + || pparams.distortion != pp.distortion + || pparams.lensProf != pp.lensProf + || pparams.perspective != pp.perspective + || pparams.gradient != pp.gradient + || pparams.pcvignette != pp.pcvignette + || pparams.cacorrection != pp.cacorrection + || pparams.vignetting != pp.vignetting + || pparams.chmixer != pp.chmixer + || pparams.blackwhite != pp.blackwhite + || pparams.icm != pp.icm + || pparams.hsvequalizer != pp.hsvequalizer + || pparams.filmSimulation != pp.filmSimulation + || pparams.softlight != pp.softlight; + { MyMutex::MyLock lock(mutex);