@@ -90,6 +90,82 @@ def testSimpleLineWithOffset(self):
90
90
91
91
self .assertTrue (self .imageCheck ('symbol_layer' , 'simpleline_offset' , image ))
92
92
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
+
93
169
94
170
if __name__ == '__main__' :
95
171
unittest .main ()
0 commit comments