mirror of https://github.com/JakubMelka/PDF4QT.git
Issue #123: Final bugfixing
This commit is contained in:
parent
89cfd1dd1f
commit
03cbde9690
|
@ -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()
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -187,7 +187,8 @@ private:
|
|||
|
||||
enum class RendererEngine
|
||||
{
|
||||
Blend2D,
|
||||
Blend2D_MultiThread,
|
||||
Blend2D_SingleThread,
|
||||
QPainter,
|
||||
};
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue