Issue #123: Final bugfixing

This commit is contained in:
Jakub Melka 2024-02-25 15:19:35 +01:00
parent 89cfd1dd1f
commit 03cbde9690
9 changed files with 20 additions and 15 deletions

View File

@ -35,7 +35,7 @@ PageItemDelegate::PageItemDelegate(PageItemModel* model, QObject* parent) :
m_rasterizer(nullptr)
{
m_rasterizer = new pdf::PDFRasterizer(this);
m_rasterizer->reset(pdf::RendererEngine::Blend2D);
m_rasterizer->reset(pdf::RendererEngine::Blend2D_SingleThread);
}
PageItemDelegate::~PageItemDelegate()

View File

@ -588,12 +588,11 @@ void PDFBLPaintEngine::drawPathImpl(const QPainterPath& path, bool enableStroke,
QPainterPath transformedStrokedPath = m_currentTransform.map(strokedPath);
QPainterPath finalTransformedStrokedPath = transformedStrokedPath.intersected(m_finalClipPath.value());
BLVarCore strokeStyle;
if (!finalTransformedStrokedPath.isEmpty() && m_blContext->getStrokeStyle(strokeStyle) == BL_SUCCESS)
if (!finalTransformedStrokedPath.isEmpty())
{
m_blContext->save();
m_blContext->resetMatrix();
m_blContext->setFillStyle(strokeStyle);
setBLBrush(m_blContext.value(), m_currentPen.brush());
m_blContext->fillPath(getBLPath(finalTransformedStrokedPath));
m_blContext->restore();
}

View File

@ -187,7 +187,8 @@ private:
enum class RendererEngine
{
Blend2D,
Blend2D_MultiThread,
Blend2D_SingleThread,
QPainter,
};

View File

@ -220,7 +220,7 @@ void PDFRenderer::compile(PDFPrecompiledPage* precompiledPage, size_t pageIndex)
PDFRasterizer::PDFRasterizer(QObject* parent) :
BaseClass(parent),
m_rendererEngine(RendererEngine::Blend2D)
m_rendererEngine(RendererEngine::Blend2D_SingleThread)
{
}
@ -247,7 +247,8 @@ QImage PDFRasterizer::render(PDFInteger pageIndex,
QTransform matrix = PDFRenderer::createPagePointToDevicePointMatrix(page, QRect(QPoint(0, 0), size), extraRotation);
if (m_rendererEngine == RendererEngine::Blend2D)
if (m_rendererEngine == RendererEngine::Blend2D_MultiThread ||
m_rendererEngine == RendererEngine::Blend2D_SingleThread)
{
PDFBLPaintDevice blPaintDevice(image, false);

View File

@ -470,7 +470,7 @@ PDFDrawWidgetProxy::PDFDrawWidgetProxy(QObject* parent) :
m_rasterizer(new PDFRasterizer(this)),
m_progress(nullptr),
m_cacheClearTimer(new QTimer(this)),
m_rendererEngine(RendererEngine::Blend2D)
m_rendererEngine(RendererEngine::Blend2D_MultiThread)
{
m_controller = new PDFDrawSpaceController(this);
connect(m_controller, &PDFDrawSpaceController::drawSpaceChanged, this, &PDFDrawWidgetProxy::update);

View File

@ -578,9 +578,11 @@ void PDFDrawWidget::paintEvent(QPaintEvent* event)
{
Q_UNUSED(event);
switch (getPDFWidget()->getDrawWidgetProxy()->getRendererEngine())
RendererEngine rendererEngine = getPDFWidget()->getDrawWidgetProxy()->getRendererEngine();
switch (rendererEngine)
{
case RendererEngine::Blend2D:
case RendererEngine::Blend2D_MultiThread:
case RendererEngine::Blend2D_SingleThread:
{
QRect rect = this->rect();
@ -598,7 +600,8 @@ void PDFDrawWidget::paintEvent(QPaintEvent* event)
m_blend2DframeBuffer = QImage(requiredSize, QImage::Format_ARGB32_Premultiplied);
}
PDFBLPaintDevice blPaintDevice(m_blend2DframeBuffer, true);
const bool multithreaded = rendererEngine == RendererEngine::Blend2D_MultiThread;
PDFBLPaintDevice blPaintDevice(m_blend2DframeBuffer, multithreaded);
QPainter blPainter;
if (blPainter.begin(&blPaintDevice))

View File

@ -43,7 +43,7 @@ void PDFViewerSettings::readSettings(QSettings& settings, const pdf::PDFCMSSetti
settings.beginGroup("ViewerSettings");
m_settings.m_directory = settings.value("defaultDirectory", QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)).toString();
m_settings.m_features = static_cast<pdf::PDFRenderer::Features>(settings.value("rendererFeaturesv2", static_cast<int>(pdf::PDFRenderer::getDefaultFeatures())).toInt());
m_settings.m_rendererEngine = static_cast<pdf::RendererEngine>(settings.value("renderingEngine", static_cast<int>(pdf::RendererEngine::Blend2D)).toInt());
m_settings.m_rendererEngine = static_cast<pdf::RendererEngine>(settings.value("renderingEngine", static_cast<int>(pdf::RendererEngine::Blend2D_MultiThread)).toInt());
m_settings.m_prefetchPages = settings.value("prefetchPages", defaultSettings.m_prefetchPages).toBool();
m_settings.m_preferredMeshResolutionRatio = settings.value("preferredMeshResolutionRatio", defaultSettings.m_preferredMeshResolutionRatio).toDouble();
m_settings.m_minimalMeshResolutionRatio = settings.value("minimalMeshResolutionRatio", defaultSettings.m_minimalMeshResolutionRatio).toDouble();
@ -253,7 +253,7 @@ void PDFViewerSettings::setColorTolerance(pdf::PDFReal colorTolerance)
PDFViewerSettings::Settings::Settings() :
m_features(pdf::PDFRenderer::getDefaultFeatures()),
m_rendererEngine(pdf::RendererEngine::Blend2D),
m_rendererEngine(pdf::RendererEngine::Blend2D_MultiThread),
m_prefetchPages(true),
m_preferredMeshResolutionRatio(0.02),
m_minimalMeshResolutionRatio(0.005),

View File

@ -103,7 +103,8 @@ PDFViewerSettingsDialog::PDFViewerSettingsDialog(const PDFViewerSettings::Settin
ui->optionsPagesWidget->setFont(font);
ui->renderingEngineComboBox->addItem(tr("Software | QPainter"), static_cast<int>(pdf::RendererEngine::QPainter));
ui->renderingEngineComboBox->addItem(tr("Software | Blend2D | Multithreaded"), static_cast<int>(pdf::RendererEngine::Blend2D));
ui->renderingEngineComboBox->addItem(tr("Software | Blend2D | Parallel"), static_cast<int>(pdf::RendererEngine::Blend2D_MultiThread));
ui->renderingEngineComboBox->addItem(tr("Software | Blend2D | Sequential"), static_cast<int>(pdf::RendererEngine::Blend2D_SingleThread));
ui->multithreadingComboBox->addItem(tr("Single thread"), static_cast<int>(pdf::PDFExecutionPolicy::Strategy::SingleThreaded));
ui->multithreadingComboBox->addItem(tr("Multithreading (load balanced)"), static_cast<int>(pdf::PDFExecutionPolicy::Strategy::PageMultithreaded));

View File

@ -184,7 +184,7 @@ int PDFToolRenderBase::execute(const PDFToolOptions& options)
pdf::PDFRasterizerPool rasterizerPool(&document, &fontCache, &cmsManager,
&optionalContentActivity, options.renderFeatures, meshQualitySettings,
pdf::PDFRasterizerPool::getCorrectedRasterizerCount(options.renderRasterizerCount),
options.renderUseSoftwareRendering ? pdf::RendererEngine::QPainter : pdf::RendererEngine::Blend2D, nullptr);
options.renderUseSoftwareRendering ? pdf::RendererEngine::QPainter : pdf::RendererEngine::Blend2D_SingleThread, nullptr);
auto onRenderError = [this](pdf::PDFInteger pageIndex, pdf::PDFRenderError error)
{