From 5a5c13f18a85ca02ce96e403a2729726460f5023 Mon Sep 17 00:00:00 2001 From: Philipp Knechtges Date: Mon, 7 Sep 2015 23:22:10 +0200 Subject: [PATCH] qt{4,5}/demos: add text hinting setting The qt4 and qt5 poppler demos get a new menu entry which allows to toggle between the different hinting settings. --- qt4/demos/viewer.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ qt4/demos/viewer.h | 2 ++ qt5/demos/viewer.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ qt5/demos/viewer.h | 2 ++ 4 files changed, 114 insertions(+) diff --git a/qt4/demos/viewer.cpp b/qt4/demos/viewer.cpp index c34af23..bdb0704 100644 --- a/qt4/demos/viewer.cpp +++ b/qt4/demos/viewer.cpp @@ -69,6 +69,24 @@ PdfViewer::PdfViewer() m_settingsGfxAAAct = settingsMenu->addAction(tr("Graphics Antialias")); m_settingsGfxAAAct->setCheckable(true); connect(m_settingsGfxAAAct, SIGNAL(toggled(bool)), this, SLOT(slotToggleGfxAA(bool))); + QMenu *settingsTextHintingMenu = settingsMenu->addMenu(tr("Text Hinting")); + m_settingsTextHintingGrp = new QActionGroup(settingsTextHintingMenu); + m_settingsTextHintingGrp->setExclusive(true); + act = settingsTextHintingMenu->addAction(tr("No Hinting")); + act->setCheckable(true); + act->setChecked(true); + act->setData(qVariantFromValue(0)); + m_settingsTextHintingGrp->addAction(act); + act = settingsTextHintingMenu->addAction(tr("Slight Hinting")); + act->setCheckable(true); + act->setData(qVariantFromValue(1)); + m_settingsTextHintingGrp->addAction(act); + act = settingsTextHintingMenu->addAction(tr("Full Hinting")); + act->setCheckable(true); + act->setData(qVariantFromValue(2)); + m_settingsTextHintingGrp->addAction(act); + connect(m_settingsTextHintingGrp, SIGNAL(triggered(QAction*)), + this, SLOT(slotTextHinting(QAction*))); QMenu *settingsRenderMenu = settingsMenu->addMenu(tr("Render Backend")); m_settingsRenderBackendGrp = new QActionGroup(settingsRenderMenu); m_settingsRenderBackendGrp->setExclusive(true); @@ -196,6 +214,19 @@ void PdfViewer::loadDocument(const QString &file) m_doc->setRenderHint(Poppler::Document::Antialiasing, m_settingsGfxAAAct->isChecked()); m_doc->setRenderBackend((Poppler::Document::RenderBackend)m_settingsRenderBackendGrp->checkedAction()->data().toInt()); + int hinting = m_settingsTextHintingGrp->checkedAction()->data().toInt(); + if (hinting==0) { + m_doc->setRenderHint(Poppler::Document::TextHinting, false); + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, false); + } else { + m_doc->setRenderHint(Poppler::Document::TextHinting, true); + if (hinting == 1) { + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, true); + } else { + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, false); + } + } + Q_FOREACH(DocumentObserver *obs, m_observers) { obs->documentLoaded(); obs->pageChanged(0); @@ -289,6 +320,30 @@ void PdfViewer::slotToggleGfxAA(bool value) } } +void PdfViewer::slotTextHinting(QAction *act) +{ + if (!m_doc) { + return; + } + + int hinting = act->data().toInt(); + if (hinting==0) { + m_doc->setRenderHint(Poppler::Document::TextHinting, false); + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, false); + } else { + m_doc->setRenderHint(Poppler::Document::TextHinting, true); + if (hinting == 1) { + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, true); + } else { + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, false); + } + } + + Q_FOREACH(DocumentObserver *obs, m_observers) { + obs->pageChanged(m_currentPage); + } +} + void PdfViewer::slotRenderBackend(QAction *act) { if (!m_doc || !act) { diff --git a/qt4/demos/viewer.h b/qt4/demos/viewer.h index 5e0eaaf..c68fdeb 100644 --- a/qt4/demos/viewer.h +++ b/qt4/demos/viewer.h @@ -51,6 +51,7 @@ private Q_SLOTS: void slotAboutQt(); void slotToggleTextAA(bool value); void slotToggleGfxAA(bool value); + void slotTextHinting(QAction *act); void slotRenderBackend(QAction *act); private: @@ -63,6 +64,7 @@ private: QAction *m_fileSaveCopyAct; QAction *m_settingsTextAAAct; QAction *m_settingsGfxAAAct; + QActionGroup *m_settingsTextHintingGrp; QActionGroup *m_settingsRenderBackendGrp; QList m_observers; diff --git a/qt5/demos/viewer.cpp b/qt5/demos/viewer.cpp index a95d7f3..db32f38 100644 --- a/qt5/demos/viewer.cpp +++ b/qt5/demos/viewer.cpp @@ -69,6 +69,24 @@ PdfViewer::PdfViewer() m_settingsGfxAAAct = settingsMenu->addAction(tr("Graphics Antialias")); m_settingsGfxAAAct->setCheckable(true); connect(m_settingsGfxAAAct, SIGNAL(toggled(bool)), this, SLOT(slotToggleGfxAA(bool))); + QMenu *settingsTextHintingMenu = settingsMenu->addMenu(tr("Text Hinting")); + m_settingsTextHintingGrp = new QActionGroup(settingsTextHintingMenu); + m_settingsTextHintingGrp->setExclusive(true); + act = settingsTextHintingMenu->addAction(tr("No Hinting")); + act->setCheckable(true); + act->setChecked(true); + act->setData(qVariantFromValue(0)); + m_settingsTextHintingGrp->addAction(act); + act = settingsTextHintingMenu->addAction(tr("Slight Hinting")); + act->setCheckable(true); + act->setData(qVariantFromValue(1)); + m_settingsTextHintingGrp->addAction(act); + act = settingsTextHintingMenu->addAction(tr("Full Hinting")); + act->setCheckable(true); + act->setData(qVariantFromValue(2)); + m_settingsTextHintingGrp->addAction(act); + connect(m_settingsTextHintingGrp, SIGNAL(triggered(QAction*)), + this, SLOT(slotTextHinting(QAction*))); QMenu *settingsRenderMenu = settingsMenu->addMenu(tr("Render Backend")); m_settingsRenderBackendGrp = new QActionGroup(settingsRenderMenu); m_settingsRenderBackendGrp->setExclusive(true); @@ -196,6 +214,19 @@ void PdfViewer::loadDocument(const QString &file) m_doc->setRenderHint(Poppler::Document::Antialiasing, m_settingsGfxAAAct->isChecked()); m_doc->setRenderBackend((Poppler::Document::RenderBackend)m_settingsRenderBackendGrp->checkedAction()->data().toInt()); + int hinting = m_settingsTextHintingGrp->checkedAction()->data().toInt(); + if (hinting==0) { + m_doc->setRenderHint(Poppler::Document::TextHinting, false); + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, false); + } else { + m_doc->setRenderHint(Poppler::Document::TextHinting, true); + if (hinting == 1) { + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, true); + } else { + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, false); + } + } + Q_FOREACH(DocumentObserver *obs, m_observers) { obs->documentLoaded(); obs->pageChanged(0); @@ -289,6 +320,30 @@ void PdfViewer::slotToggleGfxAA(bool value) } } +void PdfViewer::slotTextHinting(QAction *act) +{ + if (!m_doc) { + return; + } + + int hinting = act->data().toInt(); + if (hinting==0) { + m_doc->setRenderHint(Poppler::Document::TextHinting, false); + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, false); + } else { + m_doc->setRenderHint(Poppler::Document::TextHinting, true); + if (hinting == 1) { + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, true); + } else { + m_doc->setRenderHint(Poppler::Document::TextSlightHinting, false); + } + } + + Q_FOREACH(DocumentObserver *obs, m_observers) { + obs->pageChanged(m_currentPage); + } +} + void PdfViewer::slotRenderBackend(QAction *act) { if (!m_doc || !act) { diff --git a/qt5/demos/viewer.h b/qt5/demos/viewer.h index e1485b7..247dbc6 100644 --- a/qt5/demos/viewer.h +++ b/qt5/demos/viewer.h @@ -51,6 +51,7 @@ private Q_SLOTS: void slotAboutQt(); void slotToggleTextAA(bool value); void slotToggleGfxAA(bool value); + void slotTextHinting(QAction *act); void slotRenderBackend(QAction *act); private: @@ -63,6 +64,7 @@ private: QAction *m_fileSaveCopyAct; QAction *m_settingsTextAAAct; QAction *m_settingsGfxAAAct; + QActionGroup *m_settingsTextHintingGrp; QActionGroup *m_settingsRenderBackendGrp; QList m_observers; -- 2.4.3