summaryrefslogtreecommitdiffstats
path: root/examples/widgets/pdfviewer/pagerenderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/pdfviewer/pagerenderer.h')
-rw-r--r--examples/widgets/pdfviewer/pagerenderer.h30
1 files changed, 19 insertions, 11 deletions
diff --git a/examples/widgets/pdfviewer/pagerenderer.h b/examples/widgets/pdfviewer/pagerenderer.h
index 35c8939..a35bc74 100644
--- a/examples/widgets/pdfviewer/pagerenderer.h
+++ b/examples/widgets/pdfviewer/pagerenderer.h
@@ -7,10 +7,11 @@
#include <QRunnable>
#include <QThread>
#include <QPdfDocument>
+#include <QNetworkAccessManager>
class QPdfDocument;
-class PageRenderer : public QThread
+class PageRenderer : public QObject
{
Q_OBJECT
public:
@@ -18,24 +19,31 @@ public:
~PageRenderer();
public slots:
- QVector<QSizeF> openDocument(const QUrl &location);
- void requestPage(int page, qreal zoom, Priority priority = QThread::NormalPriority);
+ void openDocument(const QUrl &location);
+ void requestPage(int page, qreal zoom);
signals:
+ void pageSizesAvailable(const QVector<QSizeF> &sizes);
void pageReady(int page, qreal zoom, QImage image);
-protected:
- void run() Q_DECL_OVERRIDE;
-
-private:
- void renderPage(int page, qreal zoom);
+private slots:
+ void reportPageSizes();
+ void loadDocumentImpl(const QUrl &url);
+ void requestPageImpl(int page, qreal zoom);
+ void renderPages();
+ void renderPageIfRequested(int page);
+ void handleNetworkRequestError();
private:
+ QThread m_workerThread;
QPdfDocument m_doc;
- // current request only
- int m_page;
- qreal m_zoom;
+ struct RenderRequest {
+ int page;
+ qreal zoom;
+ };
+ QVector<RenderRequest> m_renderRequests;
+ QNetworkAccessManager *m_networkAccessManager;
// performance statistics
qreal m_minRenderTime;