diff --git a/CMakeLists.txt b/CMakeLists.txt index ea95d818c..f2739c4da 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}" CACHE STRING "Codesigning Identity") + endif() +endif() + # Enforce absolute paths for non-bundle builds: if(NOT BUILD_BUNDLE) foreach(path BINDIR DATADIR LIBDIR DOCDIR CREDITSDIR LICENCEDIR) diff --git a/rtdata/languages/Catala b/rtdata/languages/Catala index a8d381a8e..c3a7ea1d0 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 @@ -1343,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 @@ -1465,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 78667ee02..077da51c0 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;启用内置预设 @@ -1420,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 @@ -1526,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 6e7698f9a..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 @@ -1339,7 +1340,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..18af7bf65 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 @@ -2216,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 @@ -2267,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 9e1d79191..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 @@ -1336,7 +1337,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..ef518868d 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 @@ -816,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 @@ -1058,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 @@ -1224,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 @@ -1270,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 @@ -1277,7 +1284,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 @@ -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,15 +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;Raw CA Correction - Iterations -!HISTORY_MSG_RAWCACORR_COLOURSHIFT;Raw CA Correction - 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 diff --git a/rtdata/languages/English (UK) b/rtdata/languages/English (UK) index 9fdef1914..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 @@ -1273,7 +1274,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..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 @@ -1207,7 +1208,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..5402f6579 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...) @@ -1727,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 @@ -1831,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 e3559ff98..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 @@ -1337,7 +1338,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..9c1fcce59 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 @@ -2239,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 @@ -2250,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 9c7c024f9..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 @@ -1336,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/Hebrew b/rtdata/languages/Hebrew index 85bc43c05..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 @@ -1337,7 +1338,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..ca048d956 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...) @@ -1602,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 @@ -1702,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 038548deb..fe8b79022 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_COLORSHIFT;Rawの色収差補正 - 色ずれを回避 HISTORY_MSG_RAW_BORDER;Rawの境界 HISTORY_MSG_RESIZE_ALLOWUPSCALING;リサイズ - アップスケーリングを可能にする HISTORY_MSG_SHARPENING_CONTRAST;シャープ化 - コントラストのしきい値 @@ -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;付属のプロファイルを使用 @@ -2287,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 212330c9c..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 @@ -1337,7 +1338,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..d0f806fea 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 @@ -1273,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 @@ -1400,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 d002263bc..f5948ef26 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 @@ -2136,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 @@ -2201,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 f61fa7a88..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 @@ -1336,7 +1337,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..f54de5593 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.) @@ -1684,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 @@ -1779,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 27740a48c..d3e62a777 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.) @@ -1684,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 @@ -1779,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 ba33f8228..7acb91cce 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 @@ -2257,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 774e2d580..36b63772e 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;ББ устройства вывода (монитор, проектор и т.д.) @@ -1656,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 @@ -1745,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 675e710aa..e69c9b874 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;Користи профиле који долазе уз програм @@ -1578,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 @@ -1688,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 f41d7e36e..727cdeb9a 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 @@ -1578,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 @@ -1688,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 b5ff03253..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 @@ -1380,7 +1381,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..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 @@ -1338,7 +1339,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..44c5dd475 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 @@ -1939,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 @@ -2031,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 bae5f69de..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 @@ -1337,7 +1338,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 2b525a260..00bdf0675 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -870,7 +870,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 @@ -1115,6 +1115,7 @@ 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_RAWEXPOS_BLACK;Black levels PARTIALPASTE_RAWEXPOS_LINEAR;White point correction @@ -1344,7 +1345,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 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 diff --git a/rtdata/themes/RawTherapee-GTK3-20_.css b/rtdata/themes/RawTherapee-GTK3-20_.css index 91aff9a99..1224e3ce9 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,35 @@ button.combo, .image-combo .toggle, #MyFileChooserButton { padding-right: 4px; } +/* Progress bars */ + +progressbar.horizontal { + min-width: 100px; + margin-bottom: 2px; +} + +progressbar.vertical { + min-height: 100px; + margin: 8px 0; +} + +progressbar trough { + background-color: #383838; + border: none; +} + +progressbar progress { + border-color: #363636; + border-radius: 3px; + background-color: #215d9c; +} + +progressbar.horizontal trough, progressbar.horizontal progress { + min-height: 10px; +} + +progressbar.vertical trough, progressbar.vertical progress { + min-width: 10px; +} + +/* */ 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;} */ + + diff --git a/rtengine/CA_correct_RT.cc b/rtengine/CA_correct_RT.cc index a27ee7998..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; @@ -145,14 +147,14 @@ float* RawImageSource::CA_correct_RT( 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]; } } } @@ -1208,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]; } } @@ -1232,41 +1234,39 @@ 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) { + 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]); +#ifdef __SSE2__ + 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); factors = vself(vmaskf_le(oldvals, onev), onev, factors); 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); +#endif + 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); } } #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; - for (int j = 0; j < (W + 1) / 2; ++j) { - (*nonGreen)[(H + 1) / 2 - 1][j] = (*nonGreen)[(H + 1) / 2 - 2][j]; + // odd height => factors are not set in last row => use values of preceding row + 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]; } } @@ -1276,24 +1276,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]; } } } diff --git a/rtengine/FTblockDN.cc b/rtengine/FTblockDN.cc index 43985ea2a..b25eb7229 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) { @@ -1742,9 +1742,11 @@ BENCHFUN } - if (denoiseLuminance) { - 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]); } } diff --git a/rtengine/camconst.json b/rtengine/camconst.json index fd7b4bf0f..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": { @@ -1300,6 +1305,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 @@ -2298,18 +2308,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 ], @@ -2319,6 +2317,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 } }, @@ -2351,8 +2350,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, diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc index bd9fa4b47..73f9c948f 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: @@ -9074,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; @@ -9866,7 +9877,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; diff --git a/rtengine/dcrop.cc b/rtengine/dcrop.cc index b3f883803..24149ff59 100644 --- a/rtengine/dcrop.cc +++ b/rtengine/dcrop.cc @@ -1887,9 +1887,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; } diff --git a/rtengine/improccoordinator.cc b/rtengine/improccoordinator.cc index 6aad21631..26616fadc 100644 --- a/rtengine/improccoordinator.cc +++ b/rtengine/improccoordinator.cc @@ -282,582 +282,577 @@ 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); - 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); - } + RAWParams rp = params.raw; + ColorManagementParams cmp = params.icm; + LCurveParams lcur = params.labCurve; - //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); + //double rr,gg,bb; + //autoWB.getMultipliers(rr,gg,bb); + } + + currWB = autoWB; + } + + if (params.wb.enabled) { + params.wb.temperature = currWB.getTemp(); + params.wb.green = currWB.getGreen(); + } + + if (params.wb.method == "Auto" && awbListener && params.wb.enabled) { + awbListener->WBChanged(params.wb.temperature, params.wb.green); + } + + /* + 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); + } + + 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); } } } - // 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.; + progress("Exposure curve & CIELAB conversion...", 100 * readyphase / numofphases); - DCPProfile::ApplyState as; - DCPProfile *dcpProf = imgsrc->getDCP(params.icm, as); + if (todo & (M_AUTOEXP | M_RGBCURVE)) { + if (params.icm.workingTRC == "Custom") { //exec TRC IN free + Glib::ustring profile; + profile = params.icm.workingProfile; - 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 (profile == "sRGB" || profile == "Adobe RGB" || profile == "ProPhoto" || profile == "WideGamut" || profile == "BruceRGB" || profile == "Beta RGB" || profile == "BestRGB" || profile == "Rec2020" || profile == "ACESp0" || profile == "ACESp1") { + int cw = oprevi->getWidth(); + int ch = oprevi->getHeight(); + // put gamma TRC to 1 + Imagefloat* readyImg0 = NULL; + readyImg0 = ipf.workingtrc(oprevi, cw, ch, -5, params.icm.workingProfile, 2.4, 12.92310); + #pragma omp parallel for + + for (int row = 0; row < ch; row++) { + for (int col = 0; col < cw; col++) { + oprevi->r(row, col) = (float)readyImg0->r(row, col); + oprevi->g(row, col) = (float)readyImg0->g(row, col); + oprevi->b(row, col) = (float)readyImg0->b(row, col); + } + } + + delete readyImg0; + //adjust TRC + Imagefloat* readyImg = NULL; + readyImg = ipf.workingtrc(oprevi, cw, ch, 5, params.icm.workingProfile, params.icm.workingTRCGamma, params.icm.workingTRCSlope); + #pragma omp parallel for + + for (int row = 0; row < ch; row++) { + for (int col = 0; col < cw; col++) { + oprevi->r(row, col) = (float)readyImg->r(row, col); + oprevi->g(row, col) = (float)readyImg->g(row, col); + oprevi->b(row, col) = (float)readyImg->b(row, col); + } + } + + delete readyImg; - if (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.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 } + + 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 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 + } + // ipf.Lab_Tile(oprevl, oprevl, scale); - // compute L channel histogram - int x1, y1, x2, y2; - params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2); - } + // compute L channel histogram + int x1, y1, x2, y2; + params.crop.mapToResized(pW, pH, scale, x1, x2, y1, y2); + } - readyphase++; + readyphase++; lhist16(32768); - if (todo & (M_LUMACURVE | M_CROP)) { - LUTu lhist16(32768); - lhist16.clear(); + 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) + 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(); + { + LUTu lhist16thr(lhist16.getSize()); + lhist16thr.clear(); #ifdef _OPENMP - #pragma omp for nowait + #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]++; - } + 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 + #pragma omp critical #endif - lhist16 += lhist16thr; + 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); } -#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) { + if (todo & M_LUMACURVE) { - CurveFactory::curveCL(clcutili, params.labCurve.clcurve, clcurve, scale == 1 ? 1 : 16); + CurveFactory::curveCL(clcutili, params.labCurve.clcurve, clcurve, scale == 1 ? 1 : 16); - CurveFactory::complexsgnCurve(autili, butili, ccutili, cclutili, params.labCurve.acurve, params.labCurve.bcurve, params.labCurve.cccurve, - params.labCurve.lccurve, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, scale == 1 ? 1 : 16); - } + CurveFactory::complexsgnCurve(autili, butili, ccutili, cclutili, params.labCurve.acurve, params.labCurve.bcurve, params.labCurve.cccurve, + params.labCurve.lccurve, chroma_acurve, chroma_bcurve, satcurve, lhskcurve, scale == 1 ? 1 : 16); + } //scale = 1; - if (todo & (M_LUMINANCE + M_COLOR)) { - nprevl->CopyFrom(oprevl); + if (todo & (M_LUMINANCE + M_COLOR)) { + nprevl->CopyFrom(oprevl); reserv->CopyFrom(oprevl); int maxspot = settings->nspot + 1; - progress("Applying Color Boost...", 100 * readyphase / numofphases); - + progress("Applying Color Boost...", 100 * readyphase / numofphases); + // ipf.MSR(nprevl, nprevl->W, nprevl->H, 1); if (params.locallab.enabled) { /* @@ -3740,244 +3735,247 @@ void ImProcCoordinator::updatePreviewImage(int todo, Crop* cropCall) delete [] exstr; } - + //************************************************************* // end locallab //************************************************************* - 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); + 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); - } + 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++; + // 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); + /* 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); + } } } @@ -4393,7 +4391,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) { @@ -4454,6 +4452,41 @@ void ImProcCoordinator::process() paramsUpdateMutex.lock(); while (changeSinceLast) { + const bool panningRelatedChange = + params.toneCurve != nextParams.toneCurve + || params.labCurve != nextParams.labCurve + || params.localContrast != nextParams.localContrast + || params.locallab != nextParams.locallab + + || 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; @@ -4461,7 +4494,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 32fb398c0..49de3090b 100644 --- a/rtengine/improccoordinator.h +++ b/rtengine/improccoordinator.h @@ -204,7 +204,8 @@ protected: void reallocAll(); void updateLRGBHistograms(); void setScale(int prevscale); - void updatePreviewImage(int todo, Crop* cropCall = nullptr); + void updatePreviewImage (int todo, bool panningRelatedChange); +// void updatePreviewImage(int todo, Crop* cropCall = nullptr); MyMutex mProcessing; ProcParams params; diff --git a/rtengine/improcfun.h b/rtengine/improcfun.h index 31fa027f1..5197540c1 100644 --- a/rtengine/improcfun.h +++ b/rtengine/improcfun.h @@ -270,9 +270,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 EPDToneMaplocal(LabImage *lab, LabImage *tmp1, unsigned int Iterates, int skip); 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/rtengine/ipwavelet.cc b/rtengine/ipwavelet.cc index fdb13f197..568ff3683 100644 --- a/rtengine/ipwavelet.cc +++ b/rtengine/ipwavelet.cc @@ -1424,115 +1424,48 @@ void ImProcFunctions::Eval2 (float ** WavCoeffs_L, int level, MaxN[level] = maxLN; } -float *ImProcFunctions::ContrastDR(float *Source, int W_L, int H_L, float *Contrast) +void ImProcFunctions::CompressDR(float *Source, int W_L, int H_L, float Compression, float DetailBoost) { - int n = W_L * H_L; + const 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) -{ - - 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; - } - - 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 { + exponent = (Compression - 1.0f) / 20.f; } - else { - temp = (Compression - 1.0f) / 20.f; - } + exponent += 1.f; + // now calculate Source = pow(Source, exponent) #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 exponentv = F2V(exponent); #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])) * exponentv)); } } 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]) * exponent); } #else @@ -1541,21 +1474,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]) * exponent); } #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) @@ -1588,7 +1511,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 diff --git a/rtengine/procparams.cc b/rtengine/procparams.cc index b86ca2ae9..ea82663aa 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 diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 7f5826a85..1f967c90b 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -4730,10 +4730,14 @@ void RawImageSource::getRAWHistogram(LUTu & histRedRaw, LUTu & histGreenRaw, LUT 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 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); @@ -4797,26 +4801,26 @@ void RawImageSource::getRAWHistogram(LUTu & histRedRaw, LUTu & histGreenRaw, LUT 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)]++; } } } @@ -4839,21 +4843,20 @@ void RawImageSource::getRAWHistogram(LUTu & histRedRaw, LUTu & histGreenRaw, LUT } // 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]; } } diff --git a/rtgui/adjuster.cc b/rtgui/adjuster.cc index 6260314b1..3f12b0cfb 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)); } } } @@ -313,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) @@ -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 = shapeValue(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/editorpanel.cc b/rtgui/editorpanel.cc index e7fd11a26..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); @@ -2184,9 +2187,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); @@ -2315,11 +2320,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/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); } } 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/histogrampanel.cc b/rtgui/histogrampanel.cc index 5293c6c00..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) { + 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 () @@ -820,14 +816,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 +831,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 +1082,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 +} 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) { 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/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 diff --git a/rtgui/options.cc b/rtgui/options.cc index bad998a3b..dfe7252b1 100644 --- a/rtgui/options.cc +++ b/rtgui/options.cc @@ -426,6 +426,9 @@ void Options::setDefaults() histogramRed = true; histogramGreen = true; histogramBlue = true; + histogramLuma = false; + histogramChroma = false; + histogramRAW = false; histogramBar = true; histogramHeight = 200; histogramDrawMode = 0; @@ -447,7 +450,6 @@ void Options::setDefaults() FileBrowserToolbarSingleRow = false; hideTPVScrollbar = false; - UseIconNoText = true; whiteBalanceSpotSize = 8; showFilmStripToolBar = false; showdelimspot = false; @@ -1389,10 +1391,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"); } @@ -2096,7 +2094,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 c7d38a302..24e97e243 100644 --- a/rtgui/options.h +++ b/rtgui/options.h @@ -44,15 +44,46 @@ #define DEFPROFILE_DYNAMIC "Dynamic" struct SaveFormat { + 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) + { + } + 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() : - format ("jpg"), - pngBits (8), - jpegQuality (90), - jpegSubSamp (2), - tiffBits (8), - tiffFloat(false), - tiffUncompressed (true), - saveParams (true) + SaveFormat("jpg", 8, 8, false) { } @@ -265,7 +296,6 @@ public: int histogramDrawMode; bool FileBrowserToolbarSingleRow; bool hideTPVScrollbar; - bool UseIconNoText; int whiteBalanceSpotSize; int curvebboxpos; // 0=above, 1=right, 2=below, 3=left @@ -276,7 +306,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/partialpastedlg.cc b/rtgui/partialpastedlg.cc index 556360bda..6b192dba9 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_AVOIDCOLORSHIFT"))); 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); 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/preferences.cc b/rtgui/preferences.cc index 2f8341494..8a387e6fd 100644 --- a/rtgui/preferences.cc +++ b/rtgui/preferences.cc @@ -952,11 +952,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"))); @@ -1783,7 +1780,6 @@ void Preferences::storePreferences() moptions.showdelimspot = ckbShowdelimspot->get_active(); moptions.hideTPVScrollbar = ckbHideTPVScrollbar->get_active(); moptions.overwriteOutputFile = chOverwriteOutputFile->get_active(); - moptions.UseIconNoText = ckbUseIconNoText->get_active(); moptions.autoSaveTpOpen = ckbAutoSaveTpOpen->get_active(); @@ -1990,7 +1986,6 @@ void Preferences::fillPreferences() ckbShowFilmStripToolBar->set_active(moptions.showFilmStripToolBar); ckbShowdelimspot->set_active(moptions.showdelimspot); ckbHideTPVScrollbar->set_active(moptions.hideTPVScrollbar); - ckbUseIconNoText->set_active(moptions.UseIconNoText); ckbAutoSaveTpOpen->set_active(moptions.autoSaveTpOpen); @@ -2373,11 +2368,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 c2ed34817..9b5c84b8d 100644 --- a/rtgui/preferences.h +++ b/rtgui/preferences.h @@ -201,7 +201,6 @@ class Preferences : public Gtk::Dialog, public ProfileStoreListener Gtk::CheckButton* ckbShowFilmStripToolBar; Gtk::CheckButton* ckbShowdelimspot; Gtk::CheckButton* ckbHideTPVScrollbar; - Gtk::CheckButton* ckbUseIconNoText; Gtk::CheckButton* ckbAutoSaveTpOpen; Gtk::Button* btnSaveTpOpenNow; diff --git a/rtgui/rawcacorrection.cc b/rtgui/rawcacorrection.cc index 37f01cfcf..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")); @@ -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) { @@ -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/rtwindow.cc b/rtgui/rtwindow.cc index 8541504f8..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) ); @@ -901,19 +904,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/saveformatpanel.cc b/rtgui/saveformatpanel.cc index 755cb9239..b147c5d70 100644 --- a/rtgui/saveformatpanel.cc +++ b/rtgui/saveformatpanel.cc @@ -16,10 +16,28 @@ * You should have received a copy of the GNU General Public License * along with RawTherapee. If not, see . */ +#include +#include + #include "saveformatpanel.h" #include "multilangmgr.h" #include "guiutils.h" +namespace +{ + +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)} +}}; + +} + SaveFormatPanel::SaveFormatPanel () : listener (nullptr) { @@ -37,21 +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)"); - - fstr[0] = "jpg"; - fstr[1] = "tif"; - fstr[2] = "tif"; - fstr[3] = "tif"; - fstr[4] = "tif"; - fstr[5] = "png"; - fstr[6] = "png"; + 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); @@ -118,75 +124,71 @@ 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) { + // 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}; + } } - 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; } 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].second; } - 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].second.format; if (fr == "jpg") { jpegOpts->show_all(); @@ -206,14 +208,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].second.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; diff --git a/rtgui/thumbnail.cc b/rtgui/thumbnail.cc index 46c34e284..68bd8987f 100644 --- a/rtgui/thumbnail.cc +++ b/rtgui/thumbnail.cc @@ -38,7 +38,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) { @@ -66,7 +66,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) { @@ -156,7 +156,6 @@ void Thumbnail::_generateThumbnailImage () tpp->getAutoWBMultipliers(cfs.redAWBMul, cfs.greenAWBMul, cfs.blueAWBMul); _saveThumbnail (); cfs.supported = true; - needsReProcessing = true; cfs.save (getCacheFileName ("data", ".txt")); @@ -369,7 +368,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 @@ -414,7 +412,7 @@ void Thumbnail::clearProcParams (int whoClearedIt) } } -bool Thumbnail::hasProcParams () +bool Thumbnail::hasProcParams () const { return pparamsValid; @@ -422,26 +420,50 @@ bool Thumbnail::hasProcParams () void Thumbnail::setProcParams (const ProcParams& pp, ParamsEdited* pe, int whoChangedIt, bool updateCacheNow) { + 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); - 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); @@ -450,24 +472,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; @@ -496,17 +518,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; } @@ -695,13 +717,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; @@ -799,7 +821,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; } 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/toolpanelcoord.cc b/rtgui/toolpanelcoord.cc index 138512674..015f633d0 100644 --- a/rtgui/toolpanelcoord.cc +++ b/rtgui/toolpanelcoord.cc @@ -209,18 +209,16 @@ ToolPanelCoordinator::ToolPanelCoordinator(bool batch) : ipc(nullptr), hasChange rawPanel->pack_start(*Gtk::manage(new Gtk::HSeparator), Gtk::PACK_SHRINK, 0); rawPanel->pack_start(*vbPanelEnd[4], Gtk::PACK_SHRINK, 0); + 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"))); + toiL = Gtk::manage(new TextOrIcon("hand-open.png", M("MAIN_TAB_LOCALLAB"), M("MAIN_TAB_LOCALLAB_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"))); - 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)); - toiL = Gtk::manage(new TextOrIcon("hand-open.png", M("MAIN_TAB_LOCALLAB"), M("MAIN_TAB_LOCALLAB_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)); toolPanelNotebook->append_page(*exposurePanelSW, *toiE); toolPanelNotebook->append_page(*detailsPanelSW, *toiD); @@ -916,33 +914,12 @@ 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); - toiL->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 987fdbad2..9b7ef6088 100644 --- a/rtgui/toolpanelcoord.h +++ b/rtgui/toolpanelcoord.h @@ -195,7 +195,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: @@ -301,7 +300,6 @@ public: } void updateTPVScrollbar(bool hide); - void updateTabsUsesIcons(bool useIcons); bool handleShortcutKey(GdkEventKey* event); // ToolBarListener interface 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) diff --git a/tools/osx/macosx_bundle.sh b/tools/osx/macosx_bundle.sh index 20a140ce5..e5c9d0bd3 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" @@ -201,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 $$)" @@ -229,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" diff --git a/tools/win/InnoSetup/WindowsInnoSetup.iss.in b/tools/win/InnoSetup/WindowsInnoSetup.iss.in index 11601a53d..b9b3aa8ec 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 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] 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