Fix export to geopdf skips raster and mesh layers

Fixes #32148
This commit is contained in:
Nyall Dawson 2019-10-08 11:09:29 +10:00
parent dadb90312f
commit f45540d175
9 changed files with 34 additions and 3 deletions

View File

@ -62,6 +62,13 @@ Returns list of errors (problems) that happened during the rendering
QString layerId() const;
%Docstring
Gets access to the ID of the layer rendered by this class
%End
virtual void setPainter( QPainter *painter );
%Docstring
Resets the painter to use for the job to a new ``painter``.
.. versionadded:: 3.10
%End
protected:

View File

@ -57,6 +57,11 @@ QgsMeshLayerRenderer::QgsMeshLayerRenderer( QgsMeshLayer *layer, QgsRenderContex
calculateOutputSize();
}
void QgsMeshLayerRenderer::setPainter( QPainter *painter )
{
mContext.setPainter( painter );
}
QgsFeedback *QgsMeshLayerRenderer::feedback() const
{
return mFeedback.get();

View File

@ -88,6 +88,7 @@ class QgsMeshLayerRenderer : public QgsMapLayerRenderer
//! Ctor
QgsMeshLayerRenderer( QgsMeshLayer *layer, QgsRenderContext &context );
~QgsMeshLayerRenderer() override = default;
void setPainter( QPainter *painter ) override;
QgsFeedback *feedback() const override;
bool render() override;

View File

@ -21,6 +21,7 @@
#include "qgis_core.h"
class QgsFeedback;
class QPainter;
/**
* \ingroup core
@ -66,6 +67,13 @@ class CORE_EXPORT QgsMapLayerRenderer
//! Gets access to the ID of the layer rendered by this class
QString layerId() const { return mLayerID; }
/**
* Resets the painter to use for the job to a new \a painter.
*
* \since QGIS 3.10
*/
virtual void setPainter( QPainter *painter ) { Q_UNUSED( painter ) }
protected:
QStringList mErrors;
QString mLayerID;

View File

@ -102,7 +102,7 @@ bool QgsMapRendererStagedRenderJob::renderCurrentPart( QPainter *painter )
if ( mJobIt != mLayerJobs.end() )
{
LayerRenderJob &job = *mJobIt;
job.context.setPainter( painter );
job.renderer->setPainter( painter );
if ( job.context.useAdvancedEffects() )
{

View File

@ -131,6 +131,11 @@ QgsFeedback *QgsVectorLayerRenderer::feedback() const
return mInterruptionChecker.get();
}
void QgsVectorLayerRenderer::setPainter( QPainter *painter )
{
mContext.setPainter( painter );
}
bool QgsVectorLayerRenderer::render()
{
if ( mGeometryType == QgsWkbTypes::NullGeometry || mGeometryType == QgsWkbTypes::UnknownGeometry )

View File

@ -77,7 +77,7 @@ class QgsVectorLayerRenderer : public QgsMapLayerRenderer
QgsVectorLayerRenderer( QgsVectorLayer *layer, QgsRenderContext &context );
~QgsVectorLayerRenderer() override;
QgsFeedback *feedback() const override;
void setPainter( QPainter *painter ) override;
bool render() override;
private:

View File

@ -238,6 +238,11 @@ QgsRasterLayerRenderer::~QgsRasterLayerRenderer()
delete mPipe;
}
void QgsRasterLayerRenderer::setPainter( QPainter *painter )
{
mPainter = painter;
}
bool QgsRasterLayerRenderer::render()
{
if ( !mRasterViewPort )

View File

@ -71,8 +71,8 @@ class CORE_EXPORT QgsRasterLayerRenderer : public QgsMapLayerRenderer
QgsRasterLayerRenderer( QgsRasterLayer *layer, QgsRenderContext &rendererContext );
~QgsRasterLayerRenderer() override;
void setPainter( QPainter *painter ) override;
bool render() override;
QgsFeedback *feedback() const override;
private: