@@ -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
94170if __name__ == '__main__' :
95171 unittest .main ()
0 commit comments