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 | |
parent | 9ad4adf9207d3cbda6b92802b91f0435b74d2029 (diff) |
added dummy preview window, linked to poppler
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/previewwindow.cpp | 61 | ||||
-rw-r--r-- | src/gui/previewwindow.h | 7 | ||||
-rw-r--r-- | src/gui/previewwindow.ui | 63 |
3 files changed, 129 insertions, 2 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)); +} diff --git a/src/gui/previewwindow.h b/src/gui/previewwindow.h index 5c4a384..f2366d6 100644 --- a/src/gui/previewwindow.h +++ b/src/gui/previewwindow.h @@ -2,6 +2,7 @@ #define PREVIEWWINDOW_H #include <QDialog> +#include <poppler/qt5/poppler-qt5.h> namespace Ui { class PreviewWindow; @@ -14,9 +15,15 @@ class PreviewWindow : public QDialog public: explicit PreviewWindow(QWidget *parent = nullptr); ~PreviewWindow(); + void resizeEvent(QResizeEvent *e); + void showEvent(QShowEvent *e); + void closeEvent(QCloseEvent *e); private: Ui::PreviewWindow *ui; + void render(); + Poppler::Document *_doc; + Poppler::Page *_page; }; #endif // PREVIEWWINDOW_H diff --git a/src/gui/previewwindow.ui b/src/gui/previewwindow.ui index 59224aa..6bb993a 100644 --- a/src/gui/previewwindow.ui +++ b/src/gui/previewwindow.ui @@ -1,6 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>PreviewWindow</class> - <widget name="PreviewWindow" class="QDialog"> + <widget class="QDialog" name="PreviewWindow"> <property name="geometry"> <rect> <x>0</x> @@ -10,8 +11,66 @@ </rect> </property> <property name="windowTitle"> - <string>Dialog</string> + <string>Preview</string> </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QTabWidget" name="tabWidget"> + <property name="currentIndex"> + <number>0</number> + </property> + <widget class="QWidget" name="pdfTab"> + <attribute name="title"> + <string>PDF</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QScrollArea" name="scrollArea"> + <property name="verticalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOff</enum> + </property> + <property name="horizontalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOff</enum> + </property> + <property name="widgetResizable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="scrollAreaWidgetContents"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>358</width> + <height>233</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QLabel" name="pdf"> + <property name="text"> + <string/> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="outputTab"> + <attribute name="title"> + <string>Output</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QPlainTextEdit" name="output"/> + </item> + </layout> + </widget> + </widget> + </item> + </layout> </widget> <resources/> <connections/> |