blob: bca28e385068b6fdd40c25f4c53f2d64d5c00279 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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));
}
|