Skip to content

Commit 412fa54

Browse files
author
wonder
committed
Make symbology-ng work with (old) labeling.
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@12190 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 2f71b9b commit 412fa54

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

src/core/qgsvectorlayer.cpp

+23-3
Original file line numberDiff line numberDiff line change
@@ -315,12 +315,26 @@ void QgsVectorLayer::drawLabels( QgsRenderContext& rendererContext )
315315
{
316316
QgsDebugMsg( "Starting draw of labels" );
317317

318-
if ( mRenderer && mLabelOn &&
318+
if ( ( mRenderer || mRendererV2 ) && mLabelOn &&
319319
( !label()->scaleBasedVisibility() ||
320320
( label()->minScale() <= rendererContext.rendererScale() &&
321321
rendererContext.rendererScale() <= label()->maxScale() ) ) )
322322
{
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+
}
324338

325339
// Add fields required for labels
326340
mLabel->addRequiredFields( attributes );
@@ -338,7 +352,8 @@ void QgsVectorLayer::drawLabels( QgsRenderContext& rendererContext )
338352
QgsFeature fet;
339353
while ( nextFeature( fet ) )
340354
{
341-
if ( mRenderer->willRenderFeature( &fet ) )
355+
if ( ( mRenderer && mRenderer->willRenderFeature( &fet ) )
356+
|| ( mRendererV2 && mRendererV2->symbolForFeature( fet ) != NULL ) )
342357
{
343358
bool sel = mSelectedFeatureIds.contains( fet.id() );
344359
mLabel->renderLabel( rendererContext, fet, sel, 0 );
@@ -352,6 +367,11 @@ void QgsVectorLayer::drawLabels( QgsRenderContext& rendererContext )
352367
QgsLogger::critical( "Error projecting label locations, caught in " + QString( __FILE__ ) + ", line " + QString( __LINE__ ) );
353368
}
354369

370+
if ( mRendererV2 )
371+
{
372+
mRendererV2->stopRender( rendererContext );
373+
}
374+
355375
#ifdef QGISDEBUG
356376
QgsLogger::debug( "Total features processed", featureCount, 1, __FILE__, __FUNCTION__, __LINE__ );
357377
#endif

0 commit comments

Comments
 (0)