Make smooth pixmap scaling optional

This commit is contained in:
G.K.MacGregor
2021-06-07 21:58:14 +01:00
parent c8e57150eb
commit a3d4783796
2 changed files with 27 additions and 2 deletions

View File

@@ -147,7 +147,7 @@ void MainWindow::exportPNG()
QPainter interPainter(&interImage);
m_textScene->render(&interPainter);
// Now we're extracted the image we can put the GUI things back
// Now we've extracted the image we can put the GUI things back
m_textScene->hideGUIElements(false);
if (reshowCodes)
m_textWidget->pageRender()->setShowCodes(true);
@@ -218,7 +218,8 @@ void MainWindow::init()
m_textView = new QGraphicsView(this);
m_textView->setScene(m_textScene);
m_textView->setRenderHints(QPainter::SmoothPixmapTransform);
if (m_viewSmoothTransform)
m_textView->setRenderHints(QPainter::SmoothPixmapTransform);
m_textView->setBackgroundBrush(QBrush(QColor(32, 48, 96)));
setSceneDimensions();
setCentralWidget(m_textView);
@@ -474,6 +475,13 @@ void MainWindow::createActions()
borderGroup->addAction(m_borderActs[i]);
}
viewMenu->addSeparator();
m_smoothTransformAction = viewMenu->addAction(tr("Smooth font scaling"));
m_smoothTransformAction->setCheckable(true);
m_smoothTransformAction->setStatusTip(tr("Toggle smooth font scaling"));
connect(m_smoothTransformAction, &QAction::toggled, this, &MainWindow::setSmoothTransform);
QAction *zoomInAct = viewMenu->addAction(tr("Zoom In"));
zoomInAct->setShortcuts(QKeySequence::ZoomIn);
zoomInAct->setStatusTip(tr("Zoom in"));
@@ -667,6 +675,15 @@ void MainWindow::setAspectRatio(int newViewAspectRatio)
setSceneDimensions();
}
void MainWindow::setSmoothTransform(bool smoothTransform)
{
m_viewSmoothTransform = smoothTransform;
if (smoothTransform)
m_textView->setRenderHints(QPainter::SmoothPixmapTransform);
else
m_textView->setRenderHints({ });
}
void MainWindow::zoomIn()
{
if (m_viewZoom < 4)
@@ -760,6 +777,10 @@ void MainWindow::readSettings()
m_viewAspectRatio = settings.value("aspectratio", 0).toInt();
m_viewAspectRatio = (m_viewAspectRatio < 0 || m_viewAspectRatio > 2) ? 0 : m_viewAspectRatio;
m_aspectRatioActs[m_viewAspectRatio]->setChecked(true);
m_viewSmoothTransform = settings.value("smoothTransform", 0).toBool();
m_smoothTransformAction->blockSignals(true);
m_smoothTransformAction->setChecked(m_viewSmoothTransform);
m_smoothTransformAction->blockSignals(false);
m_viewZoom = settings.value("zoom", 2).toInt();
m_viewZoom = (m_viewZoom < 0 || m_viewZoom > 4) ? 2 : m_viewZoom;
@@ -798,6 +819,7 @@ void MainWindow::writeSettings()
settings.setValue("windowState", saveState());
settings.setValue("border", m_viewBorder);
settings.setValue("aspectratio", m_viewAspectRatio);
settings.setValue("smoothTransform", m_viewSmoothTransform);
settings.setValue("zoom", m_viewZoom);
}

View File

@@ -75,6 +75,7 @@ private slots:
void setSceneDimensions();
void setBorder(int);
void setAspectRatio(int);
void setSmoothTransform(bool);
void zoomIn();
void zoomOut();
void zoomReset();
@@ -106,6 +107,7 @@ private:
QGraphicsView *m_textView;
int m_viewBorder, m_viewAspectRatio, m_viewZoom;
bool m_viewSmoothTransform;
PageOptionsDockWidget *m_pageOptionsDockWidget;
PageEnhancementsDockWidget *m_pageEnhancementsDockWidget;
X26DockWidget *m_x26DockWidget;
@@ -117,6 +119,7 @@ private:
QAction *m_deleteSubPageAction;
QAction *m_borderActs[3];
QAction *m_aspectRatioActs[4];
QAction *m_smoothTransformAction;
QLabel *m_subPageLabel, *m_cursorPositionLabel;
QToolButton *m_previousSubPageButton, *m_nextSubPageButton;