From a991943e59bc4341ceef55313642b85565454d86 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Sun, 16 Dec 2018 16:04:02 +0100 Subject: added dummy preview window, linked to poppler --- src/gui/previewwindow.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'src/gui/previewwindow.cpp') diff --git a/src/gui/previewwindow.cpp b/src/gui/previewwindow.cpp index 945c77e..bca28e3 100644 --- a/src/gui/previewwindow.cpp +++ b/src/gui/previewwindow.cpp @@ -1,14 +1,75 @@ #include "previewwindow.h" #include "ui_previewwindow.h" +#include +#include +#include +#include +#include +#include +#include + PreviewWindow::PreviewWindow(QWidget *parent) : QDialog(parent), ui(new Ui::PreviewWindow) { + QSettings settings("tikzit", "tikzit"); ui->setupUi(this); + + QVariant geom = settings.value("geometry-preview"); + + if (geom.isValid()) { + restoreGeometry(geom.toByteArray()); + } + + _doc = Poppler::Document::load("/home/aleks/ak-algebras.pdf"); + _doc->setRenderHint(Poppler::Document::Antialiasing); + _doc->setRenderHint(Poppler::Document::TextAntialiasing); + _doc->setRenderHint(Poppler::Document::TextHinting ); + _page = _doc->page(0); + + render(); } PreviewWindow::~PreviewWindow() { delete ui; } + +void PreviewWindow::closeEvent(QCloseEvent *e) { + QSettings settings("tikzit", "tikzit"); + settings.setValue("geometry-preview", saveGeometry()); +} + +void PreviewWindow::resizeEvent(QResizeEvent *e) { + render(); + QDialog::resizeEvent(e); +} + +void PreviewWindow::showEvent(QShowEvent *e) { + render(); + QDialog::showEvent(e); +} + +void PreviewWindow::render() { + QSizeF size = _page->pageSizeF(); + + QRect rect = ui->scrollArea->visibleRegion().boundingRect(); + int w = rect.width(); + int h = rect.height(); + 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()); + + // qDebug() << "visible width:" << w; + // qDebug() << "visible height:" << h; + // qDebug() << "doc width:" << size.width(); + // qDebug() << "doc height:" << size.height(); + // 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)); +} -- cgit v1.2.3