Skip to content

Commit 97a5427

Browse files
committed
PieDiagram: draw empty circle if all attribute values == 0
1 parent e0f38d0 commit 97a5427

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

src/core/diagram/qgspiediagram.cpp

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -114,14 +114,24 @@ void QgsPieDiagram::renderDiagram( const QgsAttributeMap& att, QgsRenderContext&
114114
setPenWidth( mPen, s, c );
115115
p->setPen( mPen );
116116

117-
QList<double>::const_iterator valIt = values.constBegin();
118-
QList< QColor >::const_iterator colIt = s.categoryColors.constBegin();
119-
for ( ; valIt != values.constEnd(); ++valIt, ++colIt )
117+
// draw empty circle if no values are defined at all
118+
if ( valSum > 0 )
120119
{
121-
currentAngle = *valIt / valSum * 360 * 16;
122-
mCategoryBrush.setColor( *colIt );
120+
QList<double>::const_iterator valIt = values.constBegin();
121+
QList< QColor >::const_iterator colIt = s.categoryColors.constBegin();
122+
for ( ; valIt != values.constEnd(); ++valIt, ++colIt )
123+
{
124+
currentAngle = *valIt / valSum * 360 * 16;
125+
mCategoryBrush.setColor( *colIt );
126+
p->setBrush( mCategoryBrush );
127+
p->drawPie( baseX, baseY, w, h, totalAngle, currentAngle );
128+
totalAngle += currentAngle;
129+
}
130+
}
131+
else // valSum > 0
132+
{
133+
mCategoryBrush.setColor( Qt::transparent );
123134
p->setBrush( mCategoryBrush );
124-
p->drawPie( baseX, baseY, w, h, totalAngle, currentAngle );
125-
totalAngle += currentAngle;
135+
p->drawEllipse( baseX, baseY, w, h );
126136
}
127137
}

0 commit comments

Comments
 (0)