From 5c44437a879e37dfb311354603756f9436d1bfb8 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Wed, 19 Dec 2018 22:54:51 +0100 Subject: hidpi support --- src/gui/previewwindow.cpp | 21 ++++++++++++++++----- tikzit.pro | 8 ++++++-- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/gui/previewwindow.cpp b/src/gui/previewwindow.cpp index 5452a7e..724a951 100644 --- a/src/gui/previewwindow.cpp +++ b/src/gui/previewwindow.cpp @@ -46,7 +46,14 @@ PreviewWindow::~PreviewWindow() void PreviewWindow::setPdf(QString file) { Poppler::Document *oldDoc = _doc; - Poppler::Document *newDoc = Poppler::Document::load(file); + + // use loadFromData to avoid holding a lock on the PDF file in windows + QFile f(file); + f.open(QFile::ReadOnly); + QByteArray data = f.readAll(); + f.close(); + Poppler::Document *newDoc = Poppler::Document::loadFromData(data); + if (!newDoc) { QMessageBox::warning(nullptr, "Could not read PDF", @@ -90,11 +97,14 @@ void PreviewWindow::render() { QSizeF size = _page->pageSizeF(); + qreal ratio = devicePixelRatioF(); QRect rect = ui->scrollArea->visibleRegion().boundingRect(); - int w = rect.width() - 20; - int h = rect.height() - 20; + int w = static_cast(ratio * (rect.width() - 20)); + int h = static_cast(ratio * (rect.height() - 20)); qreal scale = fmin(static_cast(w) / size.width(), static_cast(h) / size.height()); + + int dpi = static_cast(scale * 72.0); int w1 = static_cast(scale * size.width()); int h1 = static_cast(scale * size.height()); @@ -106,6 +116,7 @@ void PreviewWindow::render() { // qDebug() << "scale:" << scale; // qDebug() << "dpi:" << dpi; - QImage img = _page->renderToImage(dpi, dpi, (w1 - w)/2, (h1 - h)/2, w, h); - ui->pdf->setPixmap(QPixmap::fromImage(img)); + QPixmap pm = QPixmap::fromImage(_page->renderToImage(dpi, dpi, (w1 - w)/2, (h1 - h)/2, w, h)); + pm.setDevicePixelRatio(ratio); + ui->pdf->setPixmap(pm); } diff --git a/tikzit.pro b/tikzit.pro index b026511..3fa4d5a 100644 --- a/tikzit.pro +++ b/tikzit.pro @@ -110,9 +110,13 @@ FORMS += src/gui/mainwindow.ui \ src/gui/styleeditor.ui \ src/gui/previewwindow.ui -INCLUDEPATH += src src/gui src/data extra +INCLUDEPATH += src src/gui src/data -LIBS += -L"$$PWD/extra" -lpoppler-qt5 +# link to pre-compiled poppler libs on windows +win32:INCLUDEPATH += win32-deps/include +win32:LIBS += -L"$$PWD/win32-deps/bin" + +LIBS += -lpoppler-qt5 DISTFILES += -- cgit v1.2.3