From e4c1598720f041754cf692bd84e1498f1a272017 Mon Sep 17 00:00:00 2001 From: JuhoErvasti Date: Wed, 4 Dec 2024 09:32:49 +0200 Subject: [PATCH] Modify feature request extent based on max extent buffer --- src/core/vector/qgsvectorlayerrenderer.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/core/vector/qgsvectorlayerrenderer.cpp b/src/core/vector/qgsvectorlayerrenderer.cpp index 4cf56ac980e..69048c0f0c2 100644 --- a/src/core/vector/qgsvectorlayerrenderer.cpp +++ b/src/core/vector/qgsvectorlayerrenderer.cpp @@ -17,6 +17,7 @@ #include "qgsmessagelog.h" #include "qgspallabeling.h" +#include "qgsrectangle.h" #include "qgsrenderer.h" #include "qgsrendercontext.h" #include "qgssinglesymbolrenderer.h" @@ -354,8 +355,26 @@ bool QgsVectorLayerRenderer::renderInternal( QgsFeatureRenderer *renderer, int r if ( mDiagramProvider ) mDiagramProvider->setClipFeatureGeometry( mLabelClipFeatureGeom ); } + + renderer->modifyRequestExtent( requestExtent, context ); + double maximumExtentBuffer = renderer->maximumExtentBuffer( context ); + + if ( maximumExtentBuffer != 0 ) + { + bool bufferDisappearsExtent = maximumExtentBuffer < 0 && ( requestExtent.width() + ( maximumExtentBuffer * 2 ) < 0 || requestExtent.height() + ( maximumExtentBuffer * 2 ) < 0 ); + + // nothing to draw + if ( bufferDisappearsExtent ) + { + renderer->stopRender( context ); + return true; + } + + requestExtent = requestExtent.buffered( maximumExtentBuffer ); + } + QgsFeatureRequest featureRequest = QgsFeatureRequest() .setFilterRect( requestExtent ) .setSubsetOfAttributes( mAttrNames, mFields )