Modify feature request extent based on max extent buffer

This commit is contained in:
JuhoErvasti 2024-12-04 09:32:49 +02:00 committed by Nyall Dawson
parent d95ce12e8f
commit e4c1598720

View File

@ -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 )