-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmetaview.cpp
51 lines (38 loc) · 1.46 KB
/
metaview.cpp
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
#include "metaview.h"
MetaView::MetaView(const QString& path, QWidget *parent) : QWidget(parent)
{
QImage metapostImage;
metapostImage = loadImage(path);
QPixmap metapostPixmap;
metapostPixmap.convertFromImage(metapostImage);
metapostScene = new QGraphicsScene(this);
pixmapItem = metapostScene->addPixmap(metapostPixmap);
metapostView = new QGraphicsView(metapostScene);
layout = new QVBoxLayout(this);
layout->addWidget(metapostView);
}
void MetaView::updateMetaView(const QString& path)
{
QImage metapostImage;
metapostImage = loadImage(path);
int horizontalScrollBarPos;
horizontalScrollBarPos = metapostView->horizontalScrollBar()->value();
int verticalScrollBarPos;
verticalScrollBarPos = metapostView->verticalScrollBar()->value();
pixmapItem->setPixmap(QPixmap::fromImage(metapostImage));
metapostScene->setSceneRect(pixmapItem->sceneBoundingRect());
metapostView->horizontalScrollBar()->setValue(horizontalScrollBarPos);
metapostView->verticalScrollBar()->setValue(verticalScrollBarPos);
}
QImage MetaView::loadImage(const QString& path)
{
Poppler::Document *pdfDocument;
pdfDocument = Poppler::Document::load(path);
pdfDocument->setRenderHint(Poppler::Document::Antialiasing);
pdfDocument->setRenderHint(Poppler::Document::TextAntialiasing);
Poppler::Page *pdfPage;
pdfPage = pdfDocument->page(0);
QImage metapostImage;
metapostImage = pdfPage->renderToImage(144.0, 144.0, -1, -1, -1, -1);
return metapostImage;
}