Skip to content

Commit 5ba1e91

Browse files
committed
[map themes] fix map renderer ignore theme blend and transparency layer settings
1 parent ce6ea18 commit 5ba1e91

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

src/core/qgsmaprendererjob.cpp

+17-11
Original file line numberDiff line numberDiff line change
@@ -285,12 +285,6 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
285285
LayerRenderJob &job = layerJobs.last();
286286
job.cached = false;
287287
job.img = nullptr;
288-
job.blendMode = ml->blendMode();
289-
job.opacity = 1.0;
290-
if ( QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( ml ) )
291-
{
292-
job.opacity = vl->opacity();
293-
}
294288
job.layer = ml;
295289
job.renderingTime = -1;
296290

@@ -304,9 +298,23 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
304298
if ( mFeatureFilterProvider )
305299
job.context.setFeatureFilterProvider( mFeatureFilterProvider );
306300

301+
bool hasStyleOverride = mSettings.layerStyleOverrides().contains( ml->id() );
302+
if ( hasStyleOverride )
303+
ml->styleManager()->setOverrideStyle( mSettings.layerStyleOverrides().value( ml->id() ) );
304+
305+
job.blendMode = ml->blendMode();
306+
job.opacity = 1.0;
307+
if ( QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( ml ) )
308+
{
309+
job.opacity = vl->opacity();
310+
}
311+
307312
// if we can use the cache, let's do it and avoid rendering!
308313
if ( mCache && mCache->hasCacheImage( ml->id() ) )
309314
{
315+
if ( hasStyleOverride )
316+
ml->styleManager()->restoreOverrideStyle();
317+
310318
job.cached = true;
311319
job.imageInitialized = true;
312320
job.img = new QImage( mCache->cacheImage( ml->id() ) );
@@ -327,6 +335,9 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
327335
mSettings.outputImageFormat() );
328336
if ( mypFlattenedImage->isNull() )
329337
{
338+
if ( hasStyleOverride )
339+
ml->styleManager()->restoreOverrideStyle();
340+
330341
mErrors.append( Error( ml->id(), tr( "Insufficient memory for image %1x%2" ).arg( mSettings.outputSize().width() ).arg( mSettings.outputSize().height() ) ) );
331342
delete mypFlattenedImage;
332343
layerJobs.removeLast();
@@ -339,18 +350,13 @@ LayerRenderJobs QgsMapRendererJob::prepareJobs( QPainter *painter, QgsLabelingEn
339350
job.context.setPainter( mypPainter );
340351
}
341352

342-
bool hasStyleOverride = mSettings.layerStyleOverrides().contains( ml->id() );
343-
if ( hasStyleOverride )
344-
ml->styleManager()->setOverrideStyle( mSettings.layerStyleOverrides().value( ml->id() ) );
345-
346353
QTime layerTime;
347354
layerTime.start();
348355
job.renderer = ml->createMapRenderer( job.context );
349356
job.renderingTime = layerTime.elapsed(); // include job preparation time in layer rendering time
350357

351358
if ( hasStyleOverride )
352359
ml->styleManager()->restoreOverrideStyle();
353-
354360
} // while (li.hasPrevious())
355361

356362
return layerJobs;

0 commit comments

Comments
 (0)