[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) {
|
PDFPreviewWidget::PDFPreviewWidget(QWidget* parent) : QWidget(parent) {
|
||||||
pPage = NULL;
|
pPage = NULL;
|
||||||
}
|
currentPixmapSize = QSize(0,0);
|
||||||
|
|
||||||
void PDFPreviewWidget::setImage(QImage image) {
|
|
||||||
previewImage = image;
|
|
||||||
update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PDFPreviewWidget::regenImage(void) {
|
void PDFPreviewWidget::regenImage(void) {
|
||||||
double dpi;
|
double dpi;
|
||||||
double dpi2;
|
double dpi2;
|
||||||
QSize targetSize = this->size();
|
QSize targetSize;
|
||||||
|
|
||||||
|
if(currentPixmapSize == QSize(0,0))
|
||||||
|
currentPixmapSize = this->size();
|
||||||
|
|
||||||
|
targetSize = currentPixmapSize;
|
||||||
QSizeF oriSize = pPage->pageSizeF();
|
QSizeF oriSize = pPage->pageSizeF();
|
||||||
double oriDpi = 72;
|
double oriDpi = 72;
|
||||||
dpi = targetSize.height() / (float)oriSize.height()*72;
|
dpi = targetSize.height() / (float)oriSize.height()*oriDpi;
|
||||||
dpi2 = targetSize.width() / (float)oriSize.width()*72;
|
dpi2 = targetSize.width() / (float)oriSize.width()*oriDpi;
|
||||||
dpi = dpi<dpi2?dpi:dpi2;
|
dpi = dpi<dpi2?dpi:dpi2;
|
||||||
previewImage = pPage->renderToImage(dpi, dpi);
|
previewImage = pPage->renderToImage(dpi, dpi);
|
||||||
}
|
}
|
||||||
@ -28,8 +29,20 @@ void PDFPreviewWidget::previewUpdate(Poppler::Page* pp) {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PDFPreviewWidget::resizeEvent(QResizeEvent* event) {
|
void PDFPreviewWidget::wheelEvent(QWheelEvent* event) {
|
||||||
if(pPage != NULL) regenImage();
|
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) {
|
void PDFPreviewWidget::paintEvent(QPaintEvent* event) {
|
||||||
@ -37,7 +50,8 @@ void PDFPreviewWidget::paintEvent(QPaintEvent* event) {
|
|||||||
|
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
QPixmap pixmap = QPixmap::fromImage(previewImage);
|
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,
|
painter.drawPixmap(QRect((size().width() - pixmap.width()) / 2,
|
||||||
(size().height() - pixmap.height()) / 2,
|
(size().height() - pixmap.height()) / 2,
|
||||||
pixmap.width(), pixmap.height()), pixmap);
|
pixmap.width(), pixmap.height()), pixmap);
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
class QImage;
|
class QImage;
|
||||||
class QSize;
|
class QSize;
|
||||||
class QResizeEvent;
|
class QPoint;
|
||||||
|
class QWheelEvent;
|
||||||
class QPaintEvent;
|
class QPaintEvent;
|
||||||
class QMouseEvent;
|
class QMouseEvent;
|
||||||
|
|
||||||
@ -14,12 +15,11 @@ public:
|
|||||||
explicit PDFPreviewWidget(QWidget* parent = 0);
|
explicit PDFPreviewWidget(QWidget* parent = 0);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setImage(QImage image);
|
|
||||||
void regenImage(void);
|
void regenImage(void);
|
||||||
void previewUpdate(Poppler::Page*);
|
void previewUpdate(Poppler::Page*);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void resizeEvent(QResizeEvent* event);
|
void wheelEvent(QWheelEvent* event);
|
||||||
void paintEvent(QPaintEvent* event);
|
void paintEvent(QPaintEvent* event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -27,6 +27,7 @@ private:
|
|||||||
Poppler::Page* pPage;
|
Poppler::Page* pPage;
|
||||||
|
|
||||||
QSize currentPixmapSize;
|
QSize currentPixmapSize;
|
||||||
|
QPoint currentPixmapPos;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void updatePreview(QImage);
|
void updatePreview(QImage);
|
||||||
|
Loading…
Reference in New Issue
Block a user