def testBasic(self): item = QgsAnnotationLineItem( QgsLineString( [QgsPoint(12, 13), QgsPoint(14, 13), QgsPoint(14, 15)])) self.assertEqual(item.geometry().asWkt(), 'LineString (12 13, 14 13, 14 15)') item.setGeometry( QgsLineString( [QgsPoint(22, 23), QgsPoint(24, 23), QgsPoint(24, 25)])) item.setZIndex(11) self.assertEqual(item.geometry().asWkt(), 'LineString (22 23, 24 23, 24 25)') self.assertEqual(item.zIndex(), 11) item.setSymbol( QgsLineSymbol.createSimple({ 'color': '#ffff00', 'line_width': '3' })) self.assertEqual(item.symbol()[0].color(), QColor(255, 255, 0))
def testRenderCurve(self): item = QgsAnnotationLineItem( QgsCircularString(QgsPoint(12, 13.2), QgsPoint(14, 13.4), QgsPoint(14, 15))) item.setSymbol( QgsLineSymbol.createSimple({ 'color': '#ffff00', 'line_width': '3' })) settings = QgsMapSettings() settings.setDestinationCrs(QgsCoordinateReferenceSystem('EPSG:4326')) settings.setExtent(QgsRectangle(10, 10, 18, 18)) settings.setOutputSize(QSize(300, 300)) settings.setFlag(QgsMapSettings.Antialiasing, False) rc = QgsRenderContext.fromMapSettings(settings) image = QImage(200, 200, QImage.Format_ARGB32) image.setDotsPerMeterX(int(96 / 25.4 * 1000)) image.setDotsPerMeterY(int(96 / 25.4 * 1000)) image.fill(QColor(255, 255, 255)) painter = QPainter(image) rc.setPainter(painter) try: item.render(rc, None) finally: painter.end() self.assertTrue( self.imageCheck('line_circularstring', 'line_circularstring', image))
def testReadWriteXml(self): doc = QDomDocument("testdoc") elem = doc.createElement('test') item = QgsAnnotationLineItem( QgsLineString( [QgsPoint(12, 13), QgsPoint(14, 13), QgsPoint(14, 15)])) item.setSymbol( QgsLineSymbol.createSimple({ 'color': '#ffff00', 'line_width': '3' })) item.setZIndex(11) item.setUseSymbologyReferenceScale(True) item.setSymbologyReferenceScale(5000) self.assertTrue(item.writeXml(elem, doc, QgsReadWriteContext())) s2 = QgsAnnotationLineItem.create() self.assertTrue(s2.readXml(elem, QgsReadWriteContext())) self.assertEqual(s2.geometry().asWkt(), 'LineString (12 13, 14 13, 14 15)') self.assertEqual(s2.symbol()[0].color(), QColor(255, 255, 0)) self.assertEqual(s2.zIndex(), 11) self.assertTrue(s2.useSymbologyReferenceScale()) self.assertEqual(s2.symbologyReferenceScale(), 5000)
def testRenderWithTransform(self): item = QgsAnnotationLineItem(QgsLineString([QgsPoint(11, 13), QgsPoint(12, 13), QgsPoint(12, 15)])) item.setSymbol(QgsLineSymbol.createSimple({'color': '#ffff00', 'line_width': '3'})) settings = QgsMapSettings() settings.setDestinationCrs(QgsCoordinateReferenceSystem('EPSG:3857')) settings.setExtent(QgsRectangle(1250958, 1386945, 1420709, 1532518)) settings.setOutputSize(QSize(300, 300)) settings.setFlag(QgsMapSettings.Antialiasing, False) rc = QgsRenderContext.fromMapSettings(settings) rc.setCoordinateTransform(QgsCoordinateTransform(QgsCoordinateReferenceSystem('EPSG:4326'), settings.destinationCrs(), QgsProject.instance())) image = QImage(200, 200, QImage.Format_ARGB32) image.setDotsPerMeterX(96 / 25.4 * 1000) image.setDotsPerMeterY(96 / 25.4 * 1000) image.fill(QColor(255, 255, 255)) painter = QPainter(image) rc.setPainter(painter) try: item.render(rc, None) finally: painter.end() self.assertTrue(self.imageCheck('linestring_item_transform', 'linestring_item_transform', image))
def testClone(self): item = QgsAnnotationLineItem( QgsLineString( [QgsPoint(12, 13), QgsPoint(14, 13), QgsPoint(14, 15)])) item.setSymbol( QgsLineSymbol.createSimple({ 'color': '#ffff00', 'line_width': '3' })) item.setZIndex(11) item.setUseSymbologyReferenceScale(True) item.setSymbologyReferenceScale(5000) item2 = item.clone() self.assertEqual(item2.geometry().asWkt(), 'LineString (12 13, 14 13, 14 15)') self.assertEqual(item2.symbol()[0].color(), QColor(255, 255, 0)) self.assertEqual(item2.zIndex(), 11) self.assertTrue(item2.useSymbologyReferenceScale()) self.assertEqual(item2.symbologyReferenceScale(), 5000)