@@ -315,12 +315,26 @@ void QgsVectorLayer::drawLabels( QgsRenderContext& rendererContext )
315
315
{
316
316
QgsDebugMsg ( " Starting draw of labels" );
317
317
318
- if ( mRenderer && mLabelOn &&
318
+ if ( ( mRenderer || mRendererV2 ) && mLabelOn &&
319
319
( !label ()->scaleBasedVisibility () ||
320
320
( label ()->minScale () <= rendererContext.rendererScale () &&
321
321
rendererContext.rendererScale () <= label ()->maxScale () ) ) )
322
322
{
323
- QgsAttributeList attributes = mRenderer ->classificationAttributes ();
323
+ QgsAttributeList attributes;
324
+ if ( mRenderer )
325
+ {
326
+ attributes = mRenderer ->classificationAttributes ();
327
+ }
328
+ else if ( mRendererV2 )
329
+ {
330
+ foreach ( QString attrName, mRendererV2 ->usedAttributes () )
331
+ {
332
+ int attrNum = QgsFeatureRendererV2::fieldNameIndex ( pendingFields (), attrName );
333
+ attributes.append ( attrNum );
334
+ }
335
+ // make sure the renderer is ready for classification ("symbolForFeature")
336
+ mRendererV2 ->startRender ( rendererContext, pendingFields () );
337
+ }
324
338
325
339
// Add fields required for labels
326
340
mLabel ->addRequiredFields ( attributes );
@@ -338,7 +352,8 @@ void QgsVectorLayer::drawLabels( QgsRenderContext& rendererContext )
338
352
QgsFeature fet;
339
353
while ( nextFeature ( fet ) )
340
354
{
341
- if ( mRenderer ->willRenderFeature ( &fet ) )
355
+ if ( ( mRenderer && mRenderer ->willRenderFeature ( &fet ) )
356
+ || ( mRendererV2 && mRendererV2 ->symbolForFeature ( fet ) != NULL ) )
342
357
{
343
358
bool sel = mSelectedFeatureIds .contains ( fet.id () );
344
359
mLabel ->renderLabel ( rendererContext, fet, sel, 0 );
@@ -352,6 +367,11 @@ void QgsVectorLayer::drawLabels( QgsRenderContext& rendererContext )
352
367
QgsLogger::critical ( " Error projecting label locations, caught in " + QString ( __FILE__ ) + " , line " + QString ( __LINE__ ) );
353
368
}
354
369
370
+ if ( mRendererV2 )
371
+ {
372
+ mRendererV2 ->stopRender ( rendererContext );
373
+ }
374
+
355
375
#ifdef QGISDEBUG
356
376
QgsLogger::debug ( " Total features processed" , featureCount, 1 , __FILE__, __FUNCTION__, __LINE__ );
357
377
#endif
0 commit comments