Skip to content

Commit 8897a42

Browse files
author
mhugent
committedNov 27, 2009
better test for 0 objects when using pal diagram placement
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@12267 c8812cc2-4d05-0410-92ff-de0c093fc19c

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed
 

‎src/core/qgspalobjectpositionmanager.cpp

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,22 @@ void QgsPALObjectPositionManager::findObjectPositions( const QgsRenderContext& r
142142
//pal geometry that the current label object refers to
143143
QgsPALGeometry* referredGeometry = 0;
144144
QgsOverlayObject* referredOverlayObject = 0;
145+
pal::FeaturePart* referredPart = 0;
145146

146147
std::list<pal::LabelPosition*>::iterator labelIt = resultLabelList->begin();
147148
for ( ; labelIt != resultLabelList->end(); ++labelIt )
148149
{
149-
referredGeometry = dynamic_cast<QgsPALGeometry*>(( *labelIt )->getFeaturePart()->getUserGeometry() );
150+
if ( !*labelIt )
151+
{
152+
continue;
153+
}
154+
155+
referredPart = ( *labelIt )->getFeaturePart();
156+
if ( !referredPart )
157+
{
158+
continue;
159+
}
160+
referredGeometry = dynamic_cast<QgsPALGeometry*>( referredPart->getUserGeometry() );
150161
if ( !referredGeometry )
151162
{
152163
continue;
@@ -160,8 +171,8 @@ void QgsPALObjectPositionManager::findObjectPositions( const QgsRenderContext& r
160171
pal::LabelPosition* lp = *labelIt;
161172

162173
//QGIS takes the coordinates of the middle points
163-
double x = (lp->getX( 0 ) + lp->getX( 1 ) + lp->getX( 2 ) + lp->getX( 3 ) ) / 4;
164-
double y = (lp->getY( 0 ) + lp->getY( 1 ) + lp->getY( 2 ) + lp->getY( 3 ) ) / 4;
174+
double x = ( lp->getX( 0 ) + lp->getX( 1 ) + lp->getX( 2 ) + lp->getX( 3 ) ) / 4;
175+
double y = ( lp->getY( 0 ) + lp->getY( 1 ) + lp->getY( 2 ) + lp->getY( 3 ) ) / 4;
165176
referredOverlayObject->addPosition( QgsPoint( x, y ) );
166177
}
167178

0 commit comments

Comments
 (0)
Please sign in to comment.