Skip to content

Commit 5fa9e2f

Browse files
committed
Add simple line custom dash pattern tests
1 parent 4d2a8dd commit 5fa9e2f

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed

tests/src/python/test_qgslinesymbollayers.py

+76
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,82 @@ def testSimpleLineWithOffset(self):
9090

9191
self.assertTrue(self.imageCheck('symbol_layer', 'simpleline_offset', image))
9292

93+
def testSimpleLineWithCustomDashPattern(self):
94+
""" test that rendering a simple line symbol with custom dash pattern"""
95+
layer = QgsSimpleLineSymbolLayer(QColor(0, 0, 0))
96+
layer.setWidth(0.5)
97+
layer.setCustomDashVector([2, 5])
98+
layer.setUseCustomDashPattern(True)
99+
100+
symbol = QgsLineSymbol()
101+
symbol.changeSymbolLayer(0, layer)
102+
103+
image = QImage(200, 200, QImage.Format_RGB32)
104+
painter = QPainter()
105+
ms = QgsMapSettings()
106+
107+
geom = QgsGeometry.fromWkt('LineString (0 0, 10 0, 10 10, 0 10, 0 0)')
108+
f = QgsFeature()
109+
f.setGeometry(geom)
110+
111+
extent = geom.constGet().boundingBox()
112+
# buffer extent by 10%
113+
extent = extent.buffered((extent.height() + extent.width()) / 20.0)
114+
115+
ms.setExtent(extent)
116+
ms.setOutputSize(image.size())
117+
context = QgsRenderContext.fromMapSettings(ms)
118+
context.setPainter(painter)
119+
context.setScaleFactor(96 / 25.4) # 96 DPI
120+
121+
painter.begin(image)
122+
image.fill(QColor(255, 255, 255))
123+
124+
symbol.startRender(context)
125+
symbol.renderFeature(f, context)
126+
symbol.stopRender(context)
127+
painter.end()
128+
129+
self.assertTrue(self.imageCheck('symbol_layer_simpleline_customdashpattern', 'simpleline_customdashpattern', image))
130+
131+
def testSimpleLineWithCustomDashPatternHairline(self):
132+
""" test that rendering a simple line symbol with custom dash pattern"""
133+
layer = QgsSimpleLineSymbolLayer(QColor(0, 0, 0))
134+
layer.setWidth(0)
135+
layer.setCustomDashVector([3, 3, 2, 2])
136+
layer.setUseCustomDashPattern(True)
137+
138+
symbol = QgsLineSymbol()
139+
symbol.changeSymbolLayer(0, layer)
140+
141+
image = QImage(200, 200, QImage.Format_RGB32)
142+
painter = QPainter()
143+
ms = QgsMapSettings()
144+
145+
geom = QgsGeometry.fromWkt('LineString (0 0, 10 0, 10 10, 0 10, 0 0)')
146+
f = QgsFeature()
147+
f.setGeometry(geom)
148+
149+
extent = geom.constGet().boundingBox()
150+
# buffer extent by 10%
151+
extent = extent.buffered((extent.height() + extent.width()) / 20.0)
152+
153+
ms.setExtent(extent)
154+
ms.setOutputSize(image.size())
155+
context = QgsRenderContext.fromMapSettings(ms)
156+
context.setPainter(painter)
157+
context.setScaleFactor(96 / 25.4) # 96 DPI
158+
159+
painter.begin(image)
160+
image.fill(QColor(255, 255, 255))
161+
162+
symbol.startRender(context)
163+
symbol.renderFeature(f, context)
164+
symbol.stopRender(context)
165+
painter.end()
166+
167+
self.assertTrue(self.imageCheck('symbol_layer_simpleline_customdashpattern_hairline', 'simpleline_customdashpattern_hairline', image))
168+
93169

94170
if __name__ == '__main__':
95171
unittest.main()

0 commit comments

Comments
 (0)