diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2018-12-16 16:04:02 +0100 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2018-12-16 16:04:02 +0100 |
commit | a991943e59bc4341ceef55313642b85565454d86 (patch) | |
tree | d53b92cb346488963a130156e069156bb1984abb /src/gui/previewwindow.cpp | |
parent | 9ad4adf9207d3cbda6b92802b91f0435b74d2029 (diff) |
added dummy preview window, linked to poppler
Diffstat (limited to 'src/gui/previewwindow.cpp')
-rw-r--r-- | src/gui/previewwindow.cpp | 61 |
1 files changed, 61 insertions, 0 deletions
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 <QLabel> +#include <QImage> +#include <QPixmap> +#include <QDebug> +#include <QRegion> +#include <QSettings> +#include <cmath> + 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<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()); + + // 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)); +} |