Skip to content

Commit

Permalink
Add a test covering data defined angle for polygon outline marker lin…
Browse files Browse the repository at this point in the history
…e, update one control image
  • Loading branch information
nirvn committed Apr 19, 2021
1 parent 34ae29f commit 925b827
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
44 changes: 43 additions & 1 deletion tests/src/python/test_qgsmarkerlinesymbollayer.py
Expand Up @@ -510,7 +510,7 @@ def testCenterSegment(self):
rendered_image = self.renderGeometry(s, g)
assert self.imageCheck('markerline_segmentcenter', 'markerline_segmentcenter', rendered_image)

def testMarkerAngleDD(self):
def testMarkerDataDefinedAngleLine(self):
"""Test issue https://github.com/qgis/QGIS/issues/38716"""

s = QgsLineSymbol()
Expand Down Expand Up @@ -562,6 +562,48 @@ def testMarkerAngleDD(self):
rendered_image = self.renderGeometry(s, g)
assert self.imageCheck('markerline_center_angle_dd', 'markerline_center_angle_dd', rendered_image)

def testDataDefinedAnglePolygon(self):
# test rendering curve polygon with markers at vertices and curve points
s = QgsFillSymbol()

marker_line = QgsMarkerLineSymbolLayer(True)
marker_line.setPlacement(QgsMarkerLineSymbolLayer.SegmentCenter)
marker = QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayer.Triangle, 4)
marker.setColor(QColor(255, 0, 0))
marker.setStrokeStyle(Qt.NoPen)
marker.setAngle(90)
marker_symbol = QgsMarkerSymbol()
marker_symbol.changeSymbolLayer(0, marker)
marker_line.setSubSymbol(marker_symbol)

s.appendSymbolLayer(marker_line.clone())

g = QgsGeometry.fromWkt('Polygon (LineString (0 5, 5 0, 10 5, 5 10, 0 5))')
self.assertFalse(g.isNull())

# rendering test with non data-defined angle
rendered_image = self.renderGeometry(s, g)
self.assertTrue(self.imageCheck('markerline_datadefinedanglepolygon', 'markerline_datadefinedanglepolygon', rendered_image))

s = QgsFillSymbol()

marker_line = QgsMarkerLineSymbolLayer(True)
marker_line.setPlacement(QgsMarkerLineSymbolLayer.SegmentCenter)
marker = QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayer.Triangle, 4)
marker.setColor(QColor(255, 0, 0))
marker.setStrokeStyle(Qt.NoPen)
marker.setAngle(38)
marker_symbol = QgsMarkerSymbol()
marker_symbol.changeSymbolLayer(0, marker)
marker_symbol.setDataDefinedAngle(QgsProperty.fromExpression('90'))
marker_line.setSubSymbol(marker_symbol)

s.appendSymbolLayer(marker_line.clone())

# rendering test with data-defined angle
rendered_image = self.renderGeometry(s, g)
self.assertTrue(self.imageCheck('markerline_datadefinedanglepolygon', 'markerline_datadefinedanglepolygon', rendered_image))

def testOpacityWithDataDefinedColor(self):
line_shp = os.path.join(TEST_DATA_DIR, 'lines.shp')
line_layer = QgsVectorLayer(line_shp, 'Lines', 'ogr')
Expand Down
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 925b827

Please sign in to comment.