Skip to content

Commit 15b6043

Browse files
committed
Fix scale dependant rendering of diagrams (fix #10700)
1 parent d371824 commit 15b6043

File tree

2 files changed

+21
-9
lines changed

2 files changed

+21
-9
lines changed

src/core/diagram/qgstextdiagram.cpp

-7
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,6 @@ void QgsTextDiagram::renderDiagram( const QgsFeature& feature, QgsRenderContext&
109109
return;
110110
}
111111

112-
double scaleDenominator = c.rendererScale();
113-
if (( s.minScaleDenominator != -1 && scaleDenominator < s.minScaleDenominator )
114-
|| ( s.maxScaleDenominator != -1 && scaleDenominator > s.maxScaleDenominator ) )
115-
{
116-
return;
117-
}
118-
119112
//convert from mm / map units to painter units
120113
QSizeF spu = sizePainterUnits( s.size, s, c );
121114
double w = spu.width();

src/core/qgspallabeling.cpp

+21-2
Original file line numberDiff line numberDiff line change
@@ -3418,6 +3418,26 @@ void QgsPalLabeling::registerDiagramFeature( const QString& layerID, QgsFeature&
34183418
return;
34193419
}
34203420

3421+
QgsDiagramRendererV2* dr = layerIt.value().renderer;
3422+
if ( dr )
3423+
{
3424+
QList<QgsDiagramSettings> settingList = dr->diagramSettings();
3425+
if ( settingList.size() > 0 )
3426+
{
3427+
double minScale = settingList.at( 0 ).minScaleDenominator;
3428+
if ( minScale > 0 && context.rendererScale() < minScale )
3429+
{
3430+
return;
3431+
}
3432+
3433+
double maxScale = settingList.at( 0 ).maxScaleDenominator;
3434+
if ( maxScale > 0 && context.rendererScale() > maxScale )
3435+
{
3436+
return;
3437+
}
3438+
}
3439+
}
3440+
34213441
//convert geom to geos
34223442
QgsGeometry* geom = feat.geometry();
34233443

@@ -3456,7 +3476,6 @@ void QgsPalLabeling::registerDiagramFeature( const QString& layerID, QgsFeature&
34563476

34573477
double diagramWidth = 0;
34583478
double diagramHeight = 0;
3459-
QgsDiagramRendererV2* dr = layerIt.value().renderer;
34603479
if ( dr )
34613480
{
34623481
QSizeF diagSize = dr->sizeMapUnits( feat, context );
@@ -4004,7 +4023,7 @@ void QgsPalLabeling::drawLabeling( QgsRenderContext& context )
40044023
feature.setFields( &dit.value().fields );
40054024
palGeometry->feature( feature );
40064025
QgsPoint outPt = xform.transform(( *it )->getX(), ( *it )->getY() );
4007-
dit.value().renderer->renderDiagram( feature, context, QPointF( outPt.x(), outPt.y() ) );
4026+
dit.value().renderer->renderDiagram( feature, context, outPt.toQPointF() );
40084027
}
40094028
}
40104029

0 commit comments

Comments
 (0)