Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
apply pixel size conversion factor to line width if style does not
define "line-width" property
  • Loading branch information
alexbruy authored and nyalldawson committed May 19, 2023
1 parent e2fa27e commit 68fa66d
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/core/vectortile/qgsmapboxglstyleconverter.cpp
Expand Up @@ -572,6 +572,10 @@ bool QgsMapBoxGlStyleConverter::parseLineLayer( const QVariantMap &jsonLayer, Qg
break;
}
}
else
{
lineWidth *= context.pixelSizeConversionFactor();
}

double lineOffset = 0.0;
if ( jsonPaint.contains( QStringLiteral( "line-offset" ) ) )
Expand Down
27 changes: 27 additions & 0 deletions tests/src/python/test_qgsmapboxglconverter.py
Expand Up @@ -849,6 +849,33 @@ def testParseLineDashArraySingleNumber(self):
'CASE WHEN @vector_tile_zoom >= 10 AND @vector_tile_zoom <= 11 THEN scale_exp(@vector_tile_zoom,10,11,1.5,2,1.2) WHEN @vector_tile_zoom > 11 AND @vector_tile_zoom <= 12 THEN scale_exp(@vector_tile_zoom,11,12,2,3,1.2) WHEN @vector_tile_zoom > 12 AND @vector_tile_zoom <= 13 THEN scale_exp(@vector_tile_zoom,12,13,3,5,1.2) WHEN @vector_tile_zoom > 13 AND @vector_tile_zoom <= 14 THEN scale_exp(@vector_tile_zoom,13,14,5,6,1.2) WHEN @vector_tile_zoom > 14 AND @vector_tile_zoom <= 16 THEN scale_exp(@vector_tile_zoom,14,16,6,10,1.2) WHEN @vector_tile_zoom > 16 AND @vector_tile_zoom <= 17 THEN scale_exp(@vector_tile_zoom,16,17,10,12,1.2) WHEN @vector_tile_zoom > 17 THEN 12 END')
self.assertFalse(dd_properties.property(QgsSymbolLayer.PropertyCustomDash).isActive())

def testParseLineDashArrayNoWidth(self):
conversion_context = QgsMapBoxGlStyleConversionContext()
conversion_context.setPixelSizeConversionFactor(0.5)
style = {
"id": "water line (intermittent)/river",
"type": "line",
"source": "esri",
"source-layer": "water line (intermittent)",
"filter": ["==", "_symbol", 3],
"minzoom": 10,
"layout": {
"line-join": "round"
},
"paint": {
"line-color": "#aad3df",
"line-dasharray": [2, 1],
}
}
has_renderer, rendererStyle = QgsMapBoxGlStyleConverter.parseLineLayer(style, conversion_context)
self.assertTrue(has_renderer)
self.assertEqual(rendererStyle.geometryType(), QgsWkbTypes.LineGeometry)
self.assertTrue(rendererStyle.symbol()[0].useCustomDashPattern())
self.assertEqual(rendererStyle.symbol()[0].customDashVector(), [1.0, 0.5])
dd_properties = rendererStyle.symbol().symbolLayers()[0].dataDefinedProperties()
self.assertEqual(dd_properties.property(QgsSymbolLayer.PropertyStrokeWidth).asExpression(), '')
self.assertEqual(dd_properties.property(QgsSymbolLayer.PropertyCustomDash).asExpression(), '')

def testLinePattern(self):
""" Test line-pattern property """
context = QgsMapBoxGlStyleConversionContext()
Expand Down

0 comments on commit 68fa66d

Please sign in to comment.