diff options
Diffstat (limited to 'examples/widgets/pdfviewer/pagerenderer.h')
| -rw-r--r-- | examples/widgets/pdfviewer/pagerenderer.h | 30 |
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; |
