From 7d461a6d71b380e6d09ea4a9ec2fc89aab1a414e Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Mon, 27 Jun 2011 09:06:00 +0200 Subject: [PATCH] Fixed a zoom factor issue related to the PDF display on the board --- src/pdf/XPDFRenderer.cpp | 22 ++++++++++++++++------ src/pdf/XPDFRenderer.h | 2 ++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/pdf/XPDFRenderer.cpp b/src/pdf/XPDFRenderer.cpp index e90f71ed..86ad687c 100644 --- a/src/pdf/XPDFRenderer.cpp +++ b/src/pdf/XPDFRenderer.cpp @@ -28,6 +28,8 @@ XPDFRenderer::XPDFRenderer(const QString &filename) mPagesMap.clear(); mThumbs.clear(); mThumbMap.clear(); + mScaleX = 0.0; + mScaleY = 0.0; } XPDFRenderer::~XPDFRenderer() @@ -122,11 +124,21 @@ void XPDFRenderer::render(QPainter *p, int pageNumber, const QRectF &bounds) { if (isValid()) { + qreal xscale = p->worldTransform().m11(); + qreal yscale = p->worldTransform().m22(); + bool bZoomChanged = false; + + if(mScaleX != xscale || mScaleY != yscale) + { + mScaleX = xscale; + mScaleY = yscale; + bZoomChanged = true; + } + // First verify if the thumbnails and the pages are generated if(!bThumbGenerated) { - qreal xscale = p->worldTransform().m11(); - qreal yscale = p->worldTransform().m22(); + if(!mThumbMap[pageNumber - 1]) { // Generate the thumbnail @@ -138,11 +150,9 @@ void XPDFRenderer::render(QPainter *p, int pageNumber, const QRectF &bounds) } } } - else if(!bPagesGenerated) + else if(!bPagesGenerated || bZoomChanged) { - qreal xscale = p->worldTransform().m11(); - qreal yscale = p->worldTransform().m22(); - if(!mPagesMap[pageNumber - 1]) + if(!mPagesMap[pageNumber - 1] || bZoomChanged) { // Generate the page mNumPageToPageMap[pageNumber] = *createPDFImage(pageNumber, xscale, yscale, bounds); diff --git a/src/pdf/XPDFRenderer.h b/src/pdf/XPDFRenderer.h index 0782f9fd..8c10ea49 100644 --- a/src/pdf/XPDFRenderer.h +++ b/src/pdf/XPDFRenderer.h @@ -49,6 +49,8 @@ class XPDFRenderer : public PDFRenderer bool bPagesGenerated; SplashBitmap* mpSplashBitmap; SplashOutputDev* mSplash; + qreal mScaleX; + qreal mScaleY; }; #endif // XPDFRENDERER_H