summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2018-12-19 22:54:51 +0100
committerAleks Kissinger <aleks0@gmail.com>2018-12-19 22:54:51 +0100
commit5c44437a879e37dfb311354603756f9436d1bfb8 (patch)
treed0fa3c50d3db59fd789a59d006983347cfc367c7
parenta923245a1151ffc36da25702a50a508d43094cd0 (diff)
hidpi support
-rw-r--r--src/gui/previewwindow.cpp21
-rw-r--r--tikzit.pro8
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<int>(ratio * (rect.width() - 20));
+ int h = static_cast<int>(ratio * (rect.height() - 20));
qreal scale = fmin(static_cast<qreal>(w) / size.width(),
static_cast<qreal>(h) / size.height());
+
+
int dpi = static_cast<int>(scale * 72.0);
int w1 = static_cast<int>(scale * size.width());
int h1 = static_cast<int>(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 +=