Skip to content

Commit 58116a2

Browse files
committed
only render when in extent
1 parent 11645ac commit 58116a2

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

src/core/mesh/qgsmeshlayerinterpolator.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ QgsRasterBlock *QgsMeshLayerInterpolator::block( int, const QgsRectangle &extent
7878
if ( feedback && feedback->isCanceled() )
7979
break;
8080

81+
if ( mContext.renderingStopped() )
82+
break;
83+
8184
const QgsMeshFace &face = triangles[i];
8285

8386
const int v1 = face[0], v2 = face[1], v3 = face[2];

src/core/mesh/qgsmeshlayerrenderer.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ void QgsMeshLayerRenderer::renderMesh( const std::unique_ptr<QgsSymbol> &symbol,
240240
QgsFields fields;
241241
QgsSingleSymbolRenderer renderer( symbol->clone() );
242242
renderer.startRender( mContext, fields );
243+
const QVector<QgsMeshVertex> &vertices = mTriangularMesh.vertices(); //Triangular mesh vertices contains also native mesh vertices
243244

244245
for ( int i = 0; i < faces.size(); ++i )
245246
{
@@ -249,7 +250,11 @@ void QgsMeshLayerRenderer::renderMesh( const std::unique_ptr<QgsSymbol> &symbol,
249250
const QgsMeshFace &face = faces[i];
250251
QgsFeature feat;
251252
feat.setFields( fields );
252-
QgsGeometry geom = QgsMeshUtils::toGeometry( face, mTriangularMesh.vertices() ); //Triangular mesh vertices contains also native mesh vertices
253+
QgsGeometry geom = QgsMeshUtils::toGeometry( face, vertices );
254+
const QgsRectangle bbox = geom.boundingBox();
255+
if ( !mContext.extent().intersects( bbox ) )
256+
continue;
257+
253258
feat.setGeometry( geom );
254259
renderer.renderFeature( feat, mContext );
255260
}

src/core/mesh/qgsmeshvectorrenderer.cpp

+13-4
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,12 @@ void QgsMeshVectorRenderer::drawVectorDataOnVertices()
199199

200200
for ( int i = 0; i < vertices.size(); ++i )
201201
{
202+
if ( mContext.renderingStopped() )
203+
break;
204+
202205
const QgsMeshVertex &vertex = vertices.at( i );
203-
//if (!nodeInsideView(nodeIndex))
204-
// continue;
206+
if ( !mContext.extent().contains( vertex ) )
207+
continue;
205208

206209
double xVal = mDatasetValuesX[i];
207210
double yVal = mDatasetValuesY[i];
@@ -221,10 +224,13 @@ void QgsMeshVectorRenderer::drawVectorDataOnFaces()
221224

222225
for ( int i = 0; i < centroids.count(); i++ )
223226
{
224-
//if (elemOutsideView(elemIndex))
225-
// continue;
227+
if ( mContext.renderingStopped() )
228+
break;
226229

227230
QgsPointXY center = centroids.at( i );
231+
if ( !mContext.extent().contains( center ) )
232+
continue;
233+
228234
double xVal = mDatasetValuesX[i];
229235
double yVal = mDatasetValuesY[i];
230236
if ( nodataValue( xVal, yVal ) )
@@ -247,6 +253,9 @@ void QgsMeshVectorRenderer::drawVectorDataOnGrid()
247253

248254
for ( int i = 0; i < triangles.size(); i++ )
249255
{
256+
if ( mContext.renderingStopped() )
257+
break;
258+
250259
const QgsMeshFace &face = triangles[i];
251260

252261
const int v1 = face[0], v2 = face[1], v3 = face[2];

0 commit comments

Comments
 (0)