hpdf/src/pdf_preview_widget.cpp
2014-12-17 15:53:30 +00:00

54 lines
1.3 KiB
C++

#include <QtWidgets>
#include "pdf_preview_widget.h"
int test;
PDFPreviewWidget::PDFPreviewWidget(QWidget* parent) : QWidget(parent) {
pPage = NULL;
}
void PDFPreviewWidget::setImage(QImage image) {
previewImage = image;
update();
}
void PDFPreviewWidget::regenImage(void) {
if(pPage != NULL) {
double dpi;
double dpi2;
QSize targetSize = this->size();
QSizeF oriSize = pPage->pageSizeF();
double oriDpi = 72;
dpi = targetSize.height() / (float)oriSize.height()*72;
dpi2 = targetSize.width() / (float)oriSize.width()*72;
dpi = dpi<dpi2?dpi:dpi2;
previewImage = pPage->renderToImage(dpi, dpi);
}
}
void PDFPreviewWidget::previewUpdate(Poppler::Page* pp) {
pPage = pp;
regenImage();
update();
}
void PDFPreviewWidget::pageClicked(QMouseEvent* mouseEvent, QImage image) {
/*setImage(image);*/
}
void PDFPreviewWidget::resizeEvent(QResizeEvent* event) {
regenImage();
}
void PDFPreviewWidget::paintEvent(QPaintEvent* event) {
if(pPage != NULL) {
QPainter painter(this);
QPixmap pixmap = QPixmap::fromImage(previewImage);
pixmap = pixmap.scaled(size(), Qt::KeepAspectRatio);
painter.drawPixmap(QRect((size().width() - pixmap.width()) / 2,
(size().height() - pixmap.height()) / 2,
pixmap.width(), pixmap.height()), pixmap);
}
}