diff options
author | Shawn Rutledge <shawn.rutledge@theqtcompany.com> | 2014-12-15 22:23:09 +0100 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@theqtcompany.com> | 2014-12-16 00:45:47 +0100 |
commit | 5359a1473bf5c2310c50dbe239c28084cf7ae81f (patch) | |
tree | 8c3838930c9697b2646adbc415a7a63c0009c9a1 | |
parent | 8b2ae6c796cf56bce34f3d3cb355d13646fd0cb1 (diff) |
pdfviewer example: stop creating placeholder images in PageCache
-rw-r--r-- | examples/widgets/pdfviewer/pagecache.cpp | 17 | ||||
-rw-r--r-- | examples/widgets/pdfviewer/pagecache.h | 2 | ||||
-rw-r--r-- | examples/widgets/pdfviewer/sequentialpagewidget.cpp | 11 | ||||
-rw-r--r-- | examples/widgets/pdfviewer/sequentialpagewidget.h | 2 |
4 files changed, 14 insertions, 18 deletions
diff --git a/examples/widgets/pdfviewer/pagecache.cpp b/examples/widgets/pdfviewer/pagecache.cpp index 589a7b0..293b2d4 100644 --- a/examples/widgets/pdfviewer/pagecache.cpp +++ b/examples/widgets/pdfviewer/pagecache.cpp @@ -10,8 +10,6 @@ PageCache::PageCache(QPdfDocument *doc, qreal zoom) : QThread(Q_NULLPTR) , m_doc(doc) , m_zoom(zoom) - , m_placeholderIcon(":icons/images/busy.png") - , m_placeholderBackground(Qt::white) , m_minRenderTime(1000000000.) , m_maxRenderTime(0.) , m_totalRenderTime(0.) @@ -25,7 +23,7 @@ PageCache::~PageCache() /*! Get the result from the cache, - or a placeholder pixmap if unavailable. + or an invalid pixmap if unavailable. */ QPixmap PageCache::get(int page) { @@ -34,18 +32,7 @@ QPixmap PageCache::get(int page) return m_pageCache[page]; if (!isRunning()) start(QThread::LowestPriority); - QSizeF sizeF = m_doc->pageSize(page); - if (!sizeF.isValid()) - return QPixmap(); - QSize size = QSizeF(sizeF * m_zoom).toSize(); - QPixmap placeholder(size); - { - QPainter painter(&placeholder); - painter.fillRect(QRect(QPoint(), size), m_placeholderBackground); - painter.drawPixmap((size.width() - m_placeholderIcon.width()) / 2, - (size.height() - m_placeholderIcon.height()) / 2, m_placeholderIcon); - } - return placeholder; + return QPixmap(); } void PageCache::run() diff --git a/examples/widgets/pdfviewer/pagecache.h b/examples/widgets/pdfviewer/pagecache.h index b1a1a93..b2c063f 100644 --- a/examples/widgets/pdfviewer/pagecache.h +++ b/examples/widgets/pdfviewer/pagecache.h @@ -32,8 +32,6 @@ private: QHash<int, QPixmap> m_pageCache; qreal m_zoom; int m_lastPageRequested; - QPixmap m_placeholderIcon; - QBrush m_placeholderBackground; // performance statistics qreal m_minRenderTime; diff --git a/examples/widgets/pdfviewer/sequentialpagewidget.cpp b/examples/widgets/pdfviewer/sequentialpagewidget.cpp index 6b84015..da880be 100644 --- a/examples/widgets/pdfviewer/sequentialpagewidget.cpp +++ b/examples/widgets/pdfviewer/sequentialpagewidget.cpp @@ -16,6 +16,8 @@ SequentialPageWidget::SequentialPageWidget(QWidget *parent) , m_pageCache(Q_NULLPTR) , m_background(Qt::darkGray) , m_pageSpacing(3) + , m_placeholderIcon(":icons/images/busy.png") + , m_placeholderBackground(Qt::white) , m_topPageShowing(0) , m_zoom(1.) , m_screenResolution(QGuiApplication::primaryScreen()->logicalDotsPerInch() / 72.0) @@ -99,7 +101,14 @@ void SequentialPageWidget::paintEvent(QPaintEvent * event) // Actually render pages while (y < event->rect().bottom() && page < m_doc->pageCount()) { const QPixmap &pm = m_pageCache->get(page); - painter.drawPixmap((width() - pm.width()) / 2, y, pm); + if (pm.isNull()) { + QSizeF size = pageSize(page); + painter.fillRect((width() - size.width()) / 2, y, size.width(), size.height(), m_placeholderBackground); + painter.drawPixmap((size.width() - m_placeholderIcon.width()) / 2, + (size.height() - m_placeholderIcon.height()) / 2, m_placeholderIcon); + } else { + painter.drawPixmap((width() - pm.width()) / 2, y, pm); + } y += pm.height() + m_pageSpacing; ++page; } diff --git a/examples/widgets/pdfviewer/sequentialpagewidget.h b/examples/widgets/pdfviewer/sequentialpagewidget.h index 23dfe7f..3d2c70d 100644 --- a/examples/widgets/pdfviewer/sequentialpagewidget.h +++ b/examples/widgets/pdfviewer/sequentialpagewidget.h @@ -36,6 +36,8 @@ private: QPdfDocument *m_doc; PageCache *m_pageCache; QBrush m_background; + QPixmap m_placeholderIcon; + QBrush m_placeholderBackground; int m_pageSpacing; int m_topPageShowing; int m_bottomPageShowing; |