def testDataDefinedIconRotate(self): """ Test icon-rotate property that depends on a data attribute """ context = QgsMapBoxGlStyleConversionContext() image = QImage(QSize(1, 1), QImage.Format_ARGB32) context.setSprites(image, { "foo": { "x": 0, "y": 0, "width": 1, "height": 1, "pixelRatio": 1 } }) style = { "layout": { "icon-image": "{foo}", "icon-rotate": ["get", "ROTATION"], "text-size": 11, "icon-size": 1 }, "type": "symbol", "id": "poi_label", "source-layer": "poi_label" } renderer, has_renderer, labeling, has_labeling = QgsMapBoxGlStyleConverter.parseSymbolLayer( style, context) self.assertTrue(has_renderer) self.assertFalse(has_labeling) dd_props = renderer.symbol().symbolLayers()[0].dataDefinedProperties() prop = dd_props.property(QgsSymbolLayer.PropertyAngle) self.assertEqual(prop.asExpression(), '"ROTATION"')
def testLinePattern(self): """ Test line-pattern property """ context = QgsMapBoxGlStyleConversionContext() image = QImage(QSize(1, 1), QImage.Format_ARGB32) context.setSprites(image, { "foo": { "x": 0, "y": 0, "width": 1, "height": 1, "pixelRatio": 1 } }) style = { "id": "mountain range/ridge", "type": "line", "source": "esri", "source-layer": "mountain range", "filter": ["==", "_symbol", 1], "minzoom": 13, "layout": { "line-join": "round" }, "paint": { "line-pattern": { "stops": [[13, "foo"], [15, "foo"]] }, "line-width": { "stops": [[14, 20], [15, 40]] } } } has_renderer, rendererStyle = QgsMapBoxGlStyleConverter.parseLineLayer( style, context) self.assertTrue(has_renderer) self.assertEqual(rendererStyle.geometryType(), QgsWkbTypes.LineGeometry) self.assertEqual(rendererStyle.symbol().symbolLayers()[0].layerType(), 'RasterLine') dd_props = rendererStyle.symbol().symbolLayers( )[0].dataDefinedProperties() prop = dd_props.property(QgsSymbolLayer.PropertyFile) self.assertTrue(prop.isActive())