[Add] Wheel event for scaling. (forgot to commit this while at work).

This commit is contained in:
Rtch90 2014-12-18 20:59:09 +00:00
parent 60b34f9beb
commit 66a81ca6e7
2 changed files with 29 additions and 14 deletions

View File

@ -3,21 +3,22 @@
PDFPreviewWidget::PDFPreviewWidget(QWidget* parent) : QWidget(parent) {
pPage = NULL;
}
void PDFPreviewWidget::setImage(QImage image) {
previewImage = image;
update();
currentPixmapSize = QSize(0,0);
}
void PDFPreviewWidget::regenImage(void) {
double dpi;
double dpi2;
QSize targetSize = this->size();
QSize targetSize;
if(currentPixmapSize == QSize(0,0))
currentPixmapSize = this->size();
targetSize = currentPixmapSize;
QSizeF oriSize = pPage->pageSizeF();
double oriDpi = 72;
dpi = targetSize.height() / (float)oriSize.height()*72;
dpi2 = targetSize.width() / (float)oriSize.width()*72;
dpi = targetSize.height() / (float)oriSize.height()*oriDpi;
dpi2 = targetSize.width() / (float)oriSize.width()*oriDpi;
dpi = dpi<dpi2?dpi:dpi2;
previewImage = pPage->renderToImage(dpi, dpi);
}
@ -28,8 +29,20 @@ void PDFPreviewWidget::previewUpdate(Poppler::Page* pp) {
update();
}
void PDFPreviewWidget::resizeEvent(QResizeEvent* event) {
if(pPage != NULL) regenImage();
void PDFPreviewWidget::wheelEvent(QWheelEvent* event) {
if(pPage != NULL) {
if(event->delta() > 0)
currentPixmapSize += QSize(30, 30);
else if(event->delta() < 0)
currentPixmapSize -= QSize(30, 30);
if(currentPixmapSize.width() < 150 || currentPixmapSize.height() < 150) {
currentPixmapSize = QSize(150, 150);
}
regenImage();
update();
}
}
void PDFPreviewWidget::paintEvent(QPaintEvent* event) {
@ -37,7 +50,8 @@ void PDFPreviewWidget::paintEvent(QPaintEvent* event) {
QPainter painter(this);
QPixmap pixmap = QPixmap::fromImage(previewImage);
pixmap = pixmap.scaled(size(), Qt::KeepAspectRatio);
pixmap = pixmap.scaled(currentPixmapSize, Qt::KeepAspectRatio);
currentPixmapSize = pixmap.size();
painter.drawPixmap(QRect((size().width() - pixmap.width()) / 2,
(size().height() - pixmap.height()) / 2,
pixmap.width(), pixmap.height()), pixmap);

View File

@ -4,7 +4,8 @@
class QImage;
class QSize;
class QResizeEvent;
class QPoint;
class QWheelEvent;
class QPaintEvent;
class QMouseEvent;
@ -14,12 +15,11 @@ public:
explicit PDFPreviewWidget(QWidget* parent = 0);
public slots:
void setImage(QImage image);
void regenImage(void);
void previewUpdate(Poppler::Page*);
protected:
void resizeEvent(QResizeEvent* event);
void wheelEvent(QWheelEvent* event);
void paintEvent(QPaintEvent* event);
private:
@ -27,6 +27,7 @@ private:
Poppler::Page* pPage;
QSize currentPixmapSize;
QPoint currentPixmapPos;
signals:
void updatePreview(QImage);