mirror of
https://github.com/JakubMelka/PDF4QT.git
synced 2025-06-05 21:59:17 +02:00
Asynchronous page rendering (compilig of pages)
This commit is contained in:
@ -51,6 +51,7 @@ PDFWidget::PDFWidget(RendererEngine engine, int samplesCount, QWidget* parent) :
|
||||
m_proxy->init(this);
|
||||
connect(m_proxy, &PDFDrawWidgetProxy::renderingError, this, &PDFWidget::onRenderingError);
|
||||
connect(m_proxy, &PDFDrawWidgetProxy::repaintNeeded, m_drawWidget->getWidget(), QOverload<>::of(&QWidget::update));
|
||||
connect(m_proxy, &PDFDrawWidgetProxy::pageImageChanged, this, &PDFWidget::onPageImageChanged);
|
||||
}
|
||||
|
||||
PDFWidget::~PDFWidget()
|
||||
@ -111,6 +112,28 @@ void PDFWidget::onRenderingError(PDFInteger pageIndex, const QList<PDFRenderErro
|
||||
emit pageRenderingErrorsChanged(pageIndex, errors.size());
|
||||
}
|
||||
|
||||
void PDFWidget::onPageImageChanged(bool all, const std::vector<PDFInteger>& pages)
|
||||
{
|
||||
if (all)
|
||||
{
|
||||
m_drawWidget->getWidget()->update();
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<PDFInteger> currentPages = m_drawWidget->getCurrentPages();
|
||||
|
||||
Q_ASSERT(std::is_sorted(pages.cbegin(), pages.cend()));
|
||||
for (PDFInteger pageIndex : currentPages)
|
||||
{
|
||||
if (std::binary_search(pages.cbegin(), pages.cend(), pageIndex))
|
||||
{
|
||||
m_drawWidget->getWidget()->update();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IDrawWidget* PDFWidget::createDrawWidget(RendererEngine rendererEngine, int samplesCount)
|
||||
{
|
||||
switch (rendererEngine)
|
||||
|
Reference in New Issue
Block a user