Hi,

I was trying to use python to add 3 identical points to a QgsRubberBand using 
.addPoint(point) and was wondering why I got a core dump when I was trying to 
move the third point to a new position. Looking into the code I found the 
following (line 172 in qgsrubberband.cpp):

  if ( mPoints.at<http://doc.qt.io/qt-4.8/qlist.html#at>( geometryIndex 
).size() == 2 &&
       mPoints.at<http://doc.qt.io/qt-4.8/qlist.html#at>( geometryIndex ).at( 0 
) == mPoints.at<http://doc.qt.io/qt-4.8/qlist.html#at>( geometryIndex ).at( 1 ) 
)
  {
       mPoints[geometryIndex].last<http://doc.qt.io/qt-4.8/qlist.html#last>() = 
p;
  }
  else
  {
      mPoints[geometryIndex] << p;
  }

I was wondering why this special check is made?

I wanted to just add 3 points to the rubber band to initialize it with the 
points that I needed. It was easy to just copy the same "addPoint" line 2 
times, but a workaround is simply adding 3 different dummy points and then 
later move them to where I want them. The .movePoint don't check for the above 
and doesn't care if the three points are identical.

My reason for asking is that this is not stated in the API [1] and a core dump 
is pretty difficult to debug if you're writing python plugins.


Regards, Casper


1.       
https://qgis.org/api/classQgsRubberBand.html#a146d5efca562e8c12a02be5662c111d7
_______________________________________________
Qgis-developer mailing list
[email protected]
List info: http://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: http://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to