From 0cee4c9c53f86950e3df80d6e27a9cdd0f410f4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Poizl?= Date: Thu, 1 Feb 2024 23:03:21 +0100 Subject: [PATCH] Add thumbnail quality to settings --- libXISF | 2 +- loadrunable.cpp | 4 +++- rawimage.cpp | 1 + rawimage.h | 1 + settingsdialog.cpp | 8 ++++++++ settingsdialog.h | 1 + 6 files changed, 15 insertions(+), 2 deletions(-) diff --git a/libXISF b/libXISF index aa35644..033a34e 160000 --- a/libXISF +++ b/libXISF @@ -1 +1 @@ -Subproject commit aa356443d308e848fcaa35d0470095f7a293aa76 +Subproject commit 033a34e2486223c358f60f7f7d532890e7afb9b4 diff --git a/loadrunable.cpp b/loadrunable.cpp index 5372a10..27ab28d 100644 --- a/loadrunable.cpp +++ b/loadrunable.cpp @@ -489,7 +489,9 @@ void LoadRunable::run() { if(rawImage && rawImage->valid()) { - rawImage->resize(THUMB_SIZE, THUMB_SIZE); + if(QUALITY_RESIZE) + rawImage->resize(THUMB_SIZE, THUMB_SIZE); + rawImage->convertToThumbnail(); } QMetaObject::invokeMethod(m_receiver, "thumbnailLoadFinish", Qt::QueuedConnection, Q_ARG(std::shared_ptr, rawImage)); diff --git a/rawimage.cpp b/rawimage.cpp index 744e0a2..c35e08c 100644 --- a/rawimage.cpp +++ b/rawimage.cpp @@ -7,6 +7,7 @@ int THUMB_SIZE = 128; int THUMB_SIZE_BORDER = 138; int THUMB_SIZE_BORDER_Y = 158; double SATURATION = 0.95; +bool QUALITY_RESIZE = true; #ifdef __SSE2__ template diff --git a/rawimage.h b/rawimage.h index a133011..518ec01 100644 --- a/rawimage.h +++ b/rawimage.h @@ -12,6 +12,7 @@ extern int THUMB_SIZE; extern int THUMB_SIZE_BORDER; extern int THUMB_SIZE_BORDER_Y; +extern bool QUALITY_RESIZE; class Peak { diff --git a/settingsdialog.cpp b/settingsdialog.cpp index 112c1b1..8db4fcb 100644 --- a/settingsdialog.cpp +++ b/settingsdialog.cpp @@ -71,11 +71,16 @@ SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) m_filtering->addItems({tr("Nearest"), tr("Linear"), tr("Cubic")}); m_filtering->setCurrentIndex(FILTERING); + m_qualityThumbnail = new QCheckBox(tr("Smooth thumbnails"), this); + m_qualityThumbnail->setChecked(QUALITY_RESIZE); + m_qualityThumbnail->setToolTip(tr("Use box filter when downsampling thumbnails instead of nearest. Slightly slower.")); + layout->addRow(tr("Image preload count"), m_preloadImages); layout->addRow(tr("Thumbnails size"), m_thumSize); layout->addRow(tr("Saturation"), m_saturation); layout->addRow(tr("Slideshow interval"), m_slideShowTime); layout->addRow(tr("Image filtering"), m_filtering); + layout->addRow(m_qualityThumbnail); layout->addRow(m_useNativeDialog); //layout->addRow(new QLabel(tr("Changes in settings will take effect after program restart."))); @@ -97,6 +102,7 @@ void SettingsDialog::loadSettings() DEFAULT_WIDTH = settings.value("settings/preloadimagecount", DEFAULT_WIDTH).toInt(); SATURATION = settings.value("settings/saturation", 95.0).toDouble() / 100.0; FILTERING = settings.value("settings/filtering", FILTERING).toInt(); + QUALITY_RESIZE = settings.value("settings/qualitythumbnail").toBool(); QApplication::setAttribute(Qt::AA_DontUseNativeDialogs, settings.value("settings/dontusenativedialogs", false).toBool()); } @@ -118,6 +124,8 @@ void SettingsDialog::saveSettings() settings.setValue("settings/dontusenativedialogs", m_useNativeDialog->isChecked()); settings.setValue("settings/saturation", m_saturation->value()); settings.setValue("settings/slideshowtime", m_slideShowTime->value()); + settings.setValue("settings/qualitythumbnail", m_qualityThumbnail->isChecked()); + QUALITY_RESIZE = m_qualityThumbnail->isChecked(); FILTERING = m_filtering->currentIndex(); settings.setValue("settings/filtering", FILTERING); SATURATION = m_saturation->value() / 100.0; diff --git a/settingsdialog.h b/settingsdialog.h index 972536e..6e23d6f 100644 --- a/settingsdialog.h +++ b/settingsdialog.h @@ -23,6 +23,7 @@ private: QDoubleSpinBox *m_slideShowTime; QDoubleSpinBox *m_saturation; QCheckBox *m_useNativeDialog; + QCheckBox *m_qualityThumbnail; QComboBox *m_filtering; };