summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@theqtcompany.com>2014-12-15 22:23:09 +0100
committerShawn Rutledge <shawn.rutledge@theqtcompany.com>2014-12-16 00:45:47 +0100
commit5359a1473bf5c2310c50dbe239c28084cf7ae81f (patch)
tree8c3838930c9697b2646adbc415a7a63c0009c9a1
parent8b2ae6c796cf56bce34f3d3cb355d13646fd0cb1 (diff)
pdfviewer example: stop creating placeholder images in PageCache
-rw-r--r--examples/widgets/pdfviewer/pagecache.cpp17
-rw-r--r--examples/widgets/pdfviewer/pagecache.h2
-rw-r--r--examples/widgets/pdfviewer/sequentialpagewidget.cpp11
-rw-r--r--examples/widgets/pdfviewer/sequentialpagewidget.h2
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;