Skip to content

Commit fd00cd5

Browse files
authoredJan 10, 2019
Merge pull request #8705 from arnaud-morvan/server_diagrams_filter
Apply featureFilterProvider in QgsVectorLayerDiagramProvider
2 parents 29ad9d7 + a222906 commit fd00cd5

File tree

6 files changed

+24
-13
lines changed

6 files changed

+24
-13
lines changed
 

‎python/core/auto_generated/qgsmaprendererjob.sip.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ emitted when asynchronous rendering is finished (or canceled).
183183

184184

185185

186+
186187
};
187188

188189

‎src/core/qgsmaprenderercustompainterjob.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -295,12 +295,12 @@ void QgsMapRendererCustomPainterJob::doRender()
295295
mLabelJob.img->fill( 0 );
296296
painter.begin( mLabelJob.img );
297297
mLabelJob.context.setPainter( &painter );
298-
drawLabeling( mSettings, mLabelJob.context, mLabelingEngineV2.get(), &painter );
298+
drawLabeling( mLabelJob.context, mLabelingEngineV2.get(), &painter );
299299
painter.end();
300300
}
301301
else
302302
{
303-
drawLabeling( mSettings, mLabelJob.context, mLabelingEngineV2.get(), mPainter );
303+
drawLabeling( mLabelJob.context, mLabelingEngineV2.get(), mPainter );
304304
}
305305

306306
mLabelJob.complete = true;
@@ -318,8 +318,7 @@ void QgsMapRendererCustomPainterJob::doRender()
318318
QgsDebugMsgLevel( "Rendering completed in (seconds): " + QString( "%1" ).arg( renderTime.elapsed() / 1000.0 ), 2 );
319319
}
320320

321-
322-
void QgsMapRendererJob::drawLabeling( const QgsMapSettings &settings, QgsRenderContext &renderContext, QgsLabelingEngine *labelingEngine2, QPainter *painter )
321+
void QgsMapRendererJob::drawLabeling( QgsRenderContext &renderContext, QgsLabelingEngine *labelingEngine2, QPainter *painter )
323322
{
324323
QgsDebugMsgLevel( QStringLiteral( "Draw labeling start" ), 5 );
325324

@@ -329,22 +328,22 @@ void QgsMapRendererJob::drawLabeling( const QgsMapSettings &settings, QgsRenderC
329328
// Reset the composition mode before rendering the labels
330329
painter->setCompositionMode( QPainter::CompositionMode_SourceOver );
331330

332-
// TODO: this is not ideal - we could override rendering stopped flag that has been set in meanwhile
333-
renderContext = QgsRenderContext::fromMapSettings( settings );
334331
renderContext.setPainter( painter );
335332

336333
if ( labelingEngine2 )
337334
{
338-
// set correct extent
339-
renderContext.setExtent( settings.visibleExtent() );
340-
renderContext.setCoordinateTransform( QgsCoordinateTransform() );
341-
342335
labelingEngine2->run( renderContext );
343336
}
344337

345338
QgsDebugMsg( QStringLiteral( "Draw labeling took (seconds): %1" ).arg( t.elapsed() / 1000. ) );
346339
}
347340

341+
void QgsMapRendererJob::drawLabeling( const QgsMapSettings &settings, QgsRenderContext &renderContext, QgsLabelingEngine *labelingEngine2, QPainter *painter )
342+
{
343+
Q_UNUSED( settings );
344+
345+
drawLabeling( renderContext, labelingEngine2, painter );
346+
}
348347

349348
bool QgsMapRendererJob::needTemporaryImage( QgsMapLayer *ml )
350349
{

‎src/core/qgsmaprendererjob.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,7 @@ LabelRenderJob QgsMapRendererJob::prepareLabelingJob( QPainter *painter, QgsLabe
358358
job.context.setPainter( painter );
359359
job.context.setLabelingEngine( labelingEngine2 );
360360
job.context.setExtent( mSettings.visibleExtent() );
361+
job.context.setFeatureFilterProvider( mFeatureFilterProvider );
361362

362363
// if we can use the cache, let's do it and avoid rendering!
363364
bool hasCache = canUseLabelCache && mCache && mCache->hasCacheImage( LABEL_CACHE_ID );

‎src/core/qgsmaprendererjob.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,8 +286,14 @@ class CORE_EXPORT QgsMapRendererJob : public QObject
286286
*/
287287
void cleanupLabelJob( LabelRenderJob &job ) SIP_SKIP;
288288

289+
/**
290+
* \note not available in Python bindings
291+
* \deprecated Will be removed in QGIS 4.0
292+
*/
293+
Q_DECL_DEPRECATED static void drawLabeling( const QgsMapSettings &settings, QgsRenderContext &renderContext, QgsLabelingEngine *labelingEngine2, QPainter *painter ) SIP_SKIP;
294+
289295
//! \note not available in Python bindings
290-
static void drawLabeling( const QgsMapSettings &settings, QgsRenderContext &renderContext, QgsLabelingEngine *labelingEngine2, QPainter *painter ) SIP_SKIP;
296+
static void drawLabeling( QgsRenderContext &renderContext, QgsLabelingEngine *labelingEngine2, QPainter *painter ) SIP_SKIP;
291297

292298
private:
293299

‎src/core/qgsmaprendererparalleljob.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ void QgsMapRendererParallelJob::renderLabelsStatic( QgsMapRendererParallelJob *s
297297
// draw the labels!
298298
try
299299
{
300-
drawLabeling( self->mSettings, job.context, self->mLabelingEngineV2.get(), &painter );
300+
drawLabeling( job.context, self->mLabelingEngineV2.get(), &painter );
301301
}
302302
catch ( QgsException &e )
303303
{

‎src/core/qgsvectorlayerdiagramprovider.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,13 @@ QList<QgsLabelFeature *> QgsVectorLayerDiagramProvider::labelFeatures( QgsRender
7878
QgsFeatureRequest request;
7979
request.setFilterRect( layerExtent );
8080
request.setSubsetOfAttributes( attributeNames, mFields );
81+
const QgsFeatureFilterProvider *featureFilterProvider = context.featureFilterProvider();
82+
if ( featureFilterProvider )
83+
{
84+
featureFilterProvider->filterFeatures( qobject_cast<QgsVectorLayer *>( mLayer ), request );
85+
}
8186
QgsFeatureIterator fit = mSource->getFeatures( request );
8287

83-
8488
QgsFeature fet;
8589
while ( fit.nextFeature( fet ) )
8690
{

0 commit comments

Comments
 (0)
Please sign in to comment.