[Add] Wheel event for scaling. (forgot to commit this while at work).
This commit is contained in:
parent
60b34f9beb
commit
66a81ca6e7
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user