Renderer engine selection

This commit is contained in:
Jakub Melka
2019-09-08 11:13:59 +02:00
parent 8d53bc81eb
commit 320633d003
8 changed files with 86 additions and 14 deletions

View File

@ -86,7 +86,9 @@ PDFViewerMainWindow::PDFViewerMainWindow(QWidget *parent) :
createGoToAction(ui->menuGoTo, tr("Go to next line"), QKeySequence::MoveToNextLine, pdf::PDFDrawWidgetProxy::NavigateNextStep);
createGoToAction(ui->menuGoTo, tr("Go to previous line"), QKeySequence::MoveToPreviousLine, pdf::PDFDrawWidgetProxy::NavigatePreviousStep);
m_pdfWidget = new pdf::PDFWidget(this);
readSettings();
m_pdfWidget = new pdf::PDFWidget(m_settings->getRendererEngine(), m_settings->isMultisampleAntialiasingEnabled() ? m_settings->getRendererSamples() : -1, this);
setCentralWidget(m_pdfWidget);
setFocusProxy(m_pdfWidget);
@ -118,7 +120,6 @@ PDFViewerMainWindow::PDFViewerMainWindow(QWidget *parent) :
connect(m_pdfWidget, &pdf::PDFWidget::pageRenderingErrorsChanged, this, &PDFViewerMainWindow::onPageRenderingErrorsChanged, Qt::QueuedConnection);
connect(m_settings, &PDFViewerSettings::settingsChanged, this, &PDFViewerMainWindow::onViewerSettingsChanged);
readSettings();
updatePageLayoutActions();
}
@ -252,6 +253,7 @@ void PDFViewerMainWindow::updateRenderingOptionActions()
void PDFViewerMainWindow::onViewerSettingsChanged()
{
m_pdfWidget->updateRenderer(m_settings->getRendererEngine(), m_settings->isMultisampleAntialiasingEnabled() ? m_settings->getRendererSamples() : -1);
m_pdfWidget->getDrawWidgetProxy()->setFeatures(m_settings->getFeatures());
updateRenderingOptionActions();
}

View File

@ -15,6 +15,7 @@ void PDFViewerSettings::readSettings(QSettings& settings)
m_settings.m_directory = settings.value("defaultDirectory", QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)).toString();
m_settings.m_features = static_cast<pdf::PDFRenderer::Features>(settings.value("rendererFeatures", static_cast<int>(pdf::PDFRenderer::getDefaultFeatures())).toInt());
m_settings.m_rendererEngine = static_cast<pdf::RendererEngine>(settings.value("renderingEngine", static_cast<int>(pdf::RendererEngine::OpenGL)).toInt());
m_settings.m_multisampleAntialiasing = settings.value("msaa", true).toBool();
m_settings.m_rendererSamples = settings.value("rendererSamples", 16).toInt();
settings.endGroup();
@ -27,6 +28,7 @@ void PDFViewerSettings::writeSettings(QSettings& settings)
settings.setValue("defaultDirectory", m_settings.m_directory);
settings.setValue("rendererFeatures", static_cast<int>(m_settings.m_features));
settings.setValue("renderingEngine", static_cast<int>(m_settings.m_rendererEngine));
settings.setValue("msaa", m_settings.m_multisampleAntialiasing);
settings.setValue("rendererSamples", m_settings.m_rendererSamples);
settings.endGroup();
}

View File

@ -55,6 +55,8 @@ public:
int getRendererSamples() const;
void setRendererSamples(int rendererSamples);
bool isMultisampleAntialiasingEnabled() const { return m_settings.m_multisampleAntialiasing; }
signals:
void settingsChanged();

View File

@ -86,8 +86,17 @@ void PDFViewerSettingsDialog::loadData()
{
ui->multisampleAntialiasingCheckBox->setEnabled(true);
ui->multisampleAntialiasingCheckBox->setChecked(m_settings.m_multisampleAntialiasing);
ui->multisampleAntialiasingSamplesCountComboBox->setEnabled(true);
ui->multisampleAntialiasingSamplesCountComboBox->setCurrentIndex(ui->multisampleAntialiasingSamplesCountComboBox->findData(m_settings.m_rendererSamples));
if (m_settings.m_multisampleAntialiasing)
{
ui->multisampleAntialiasingSamplesCountComboBox->setEnabled(true);
ui->multisampleAntialiasingSamplesCountComboBox->setCurrentIndex(ui->multisampleAntialiasingSamplesCountComboBox->findData(m_settings.m_rendererSamples));
}
else
{
ui->multisampleAntialiasingSamplesCountComboBox->setEnabled(false);
ui->multisampleAntialiasingSamplesCountComboBox->setCurrentIndex(-1);
}
}
else
{