summaryrefslogtreecommitdiffstats
path: root/examples/widgets/pdfviewer/pagecache.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/pdfviewer/pagecache.h')
-rw-r--r--examples/widgets/pdfviewer/pagecache.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/examples/widgets/pdfviewer/pagecache.h b/examples/widgets/pdfviewer/pagecache.h
new file mode 100644
index 0000000..49d8bf8
--- /dev/null
+++ b/examples/widgets/pdfviewer/pagecache.h
@@ -0,0 +1,46 @@
+#ifndef PAGECACHE_H
+#define PAGECACHE_H
+
+#include <QBrush>
+#include <QHash>
+#include <QPixmap>
+#include <QRunnable>
+
+class QPdfDocument;
+
+class PageCache : public QObject
+{
+ Q_OBJECT
+public:
+ PageCache(QPdfDocument *doc, qreal zoom);
+ ~PageCache();
+
+ QPixmap get(int page);
+
+public slots:
+ void run();
+
+signals:
+ void pagesNeeded();
+ void pageReady(int page);
+
+private:
+ void insertPage(int page);
+
+private:
+ QThread *m_thread;
+ QPdfDocument *m_doc;
+ QHash<int, QPixmap> m_pageCache;
+ qreal m_zoom;
+ int m_lastPageRequested;
+ QPixmap m_placeholderIcon;
+ QBrush m_placeholderBackground;
+
+ // performance statistics
+ qreal m_minRenderTime;
+ qreal m_maxRenderTime;
+ qreal m_totalRenderTime;
+ int m_totalPagesRendered;
+};
+
+#endif // PAGECACHE_H