diff --git a/YACReader/configuration.h b/YACReader/configuration.h index 23cc5348..10d49938 100644 --- a/YACReader/configuration.h +++ b/YACReader/configuration.h @@ -10,6 +10,7 @@ #include #include "yacreader_global_gui.h" +#include "resize_image.h" #define CONF_FILE_PATH "." #define SLIDE_ASPECT_RATIO 1.585 @@ -117,6 +118,9 @@ public: MouseMode getMouseMode() { return static_cast(settings->value(MOUSE_MODE, MouseMode::Normal).toInt()); } void setMouseMode(MouseMode mouseMode) { settings->setValue(MOUSE_MODE, static_cast(mouseMode)); } + + ScaleMethod getScalingMethod() { return static_cast(settings->value(SCALING_METHOD, static_cast(ScaleMethod::Lanczos)).toInt()); } + void setScalingMethod(ScaleMethod method) { settings->setValue(SCALING_METHOD, static_cast(method)); } }; } diff --git a/YACReader/options_dialog.cpp b/YACReader/options_dialog.cpp index 43f50e67..497553c0 100644 --- a/YACReader/options_dialog.cpp +++ b/YACReader/options_dialog.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include "theme_manager.h" #include "theme_factory.h" @@ -198,6 +199,23 @@ OptionsDialog::OptionsDialog(QWidget *parent) doublePageBoxLayout->addWidget(coverSPCheckBox); doublePageBox->setLayout(doublePageBoxLayout); layoutImageV->addWidget(doublePageBox); + + auto scalingBox = new QGroupBox(tr("Scaling")); + auto scalingLayout = new QHBoxLayout(); + scalingLayout->addWidget(new QLabel(tr("Scaling method"))); + scalingMethodCombo = new QComboBox(); + scalingMethodCombo->addItem(tr("Nearest (fast, low quality)")); + scalingMethodCombo->addItem(tr("Bilinear")); + scalingMethodCombo->addItem(tr("Lanczos (better quality)")); + connect(scalingMethodCombo, &QComboBox::currentIndexChanged, this, [this](int index) { + Configuration::getConfiguration().setScalingMethod(static_cast(index)); + emit changedImageOptions(); + }); + scalingLayout->addWidget(scalingMethodCombo); + scalingLayout->addStretch(); + scalingBox->setLayout(scalingLayout); + layoutImageV->addWidget(scalingBox); + layoutImageV->addStretch(); // IMAGE ADJUSTMENTS END ----------------------------- @@ -294,6 +312,9 @@ void OptionsDialog::saveOptions() } Configuration::getConfiguration().setMouseMode(mouseMode); + Configuration::getConfiguration().setScalingMethod(static_cast(scalingMethodCombo->currentIndex())); + emit changedImageOptions(); + YACReaderOptionsDialog::saveOptions(); } @@ -330,6 +351,11 @@ void OptionsDialog::restoreOptions(QSettings *settings) #endif disableScrollAnimations->setChecked(settings->value(DISABLE_SCROLL_ANIMATION, defaultDisableScrollAnimationsValue).toBool()); + { + QSignalBlocker blocker(scalingMethodCombo); + scalingMethodCombo->setCurrentIndex(static_cast(Configuration::getConfiguration().getScalingMethod())); + } + auto mouseMode = Configuration::getConfiguration().getMouseMode(); switch (mouseMode) { diff --git a/YACReader/options_dialog.h b/YACReader/options_dialog.h index 20467f77..65653695 100644 --- a/YACReader/options_dialog.h +++ b/YACReader/options_dialog.h @@ -6,6 +6,7 @@ #include +class QComboBox; class QDialog; class QLabel; class QLineEdit; @@ -62,6 +63,8 @@ private: QColor currentColor; + QComboBox *scalingMethodCombo; + QRadioButton *normalMouseModeRadioButton; QRadioButton *leftRightNavigationMouseModeRadioButton; QRadioButton *hotAreasMouseModeRadioButton; diff --git a/common/yacreader_global_gui.h b/common/yacreader_global_gui.h index 60d45545..2065bd2d 100644 --- a/common/yacreader_global_gui.h +++ b/common/yacreader_global_gui.h @@ -39,6 +39,7 @@ #define USE_SINGLE_SCROLL_STEP_TO_TURN_PAGE "USE_SINGLE_SCROLL_STEP_TO_TURN_PAGE" #define DISABLE_SCROLL_ANIMATION "DISABLE_SCROLL_ANIMATION" #define MOUSE_MODE "MOUSE_MODE" +#define SCALING_METHOD "SCALING_METHOD" #define FLOW_TYPE_GL "FLOW_TYPE_GL" #define Y_POSITION "Y_POSITION"