def append_CartographicLineSymbolLayer(symbol, layer: CartographicLineSymbolLayer): """ Appends a CartographicLineSymbolLayer to a symbol """ color = symbol_color_to_qcolor(layer.color) out = QgsSimpleLineSymbolLayer(color) out.setEnabled(layer.enabled) out.setLocked(layer.locked) out.setWidth(layer.width) out.setWidthUnit(QgsUnitTypes.RenderPoints) out.setPenJoinStyle(symbol_pen_to_qpenjoinstyle(layer.join)) out.setPenCapStyle(symbol_pen_to_qpencapstyle(layer.cap)) if layer.template is not None: apply_template_to_LineSymbolLayer_custom_dash(layer.template, out) # better matching of null stroke color to QGIS symbology if out.color().alpha() == 0: out.setPenStyle(Qt.NoPen) out.setOffset(layer.offset) out.setOffsetUnit(QgsUnitTypes.RenderPoints) symbol.appendSymbolLayer(out) if layer.decoration is not None: append_Decorations(symbol, layer.decoration)
def append_CartographicLineSymbolLayer(symbol, layer): """ Appends a CartographicLineSymbolLayer to a symbol """ color = symbol_color_to_qcolor(layer.color) out = QgsSimpleLineSymbolLayer(color) out.setEnabled(layer.enabled) out.setLocked(layer.locked) out.setWidth(points_to_mm(layer.width)) out.setPenJoinStyle(symbol_pen_to_qpenjoinstyle(layer.join)) out.setPenCapStyle(symbol_pen_to_qpencapstyle(layer.cap)) if layer.pattern_parts: interval = layer.pattern_interval dash_vector = [] for part in layer.pattern_parts: dash_vector.append(points_to_mm(part[0] * interval)) dash_vector.append(points_to_mm(part[1] * interval)) out.setCustomDashVector(dash_vector) out.setUseCustomDashPattern(True) # better matching of null stroke color to QGIS symbology if out.color().alpha() == 0: out.setPenStyle(Qt.NoPen) if layer.marker_positions or layer.marker: raise NotImplementedException( 'Cartographic line start/end markers are not yet supported') # todo - change to new symbol layer if outline offset set symbol.appendSymbolLayer(out)
def append_CartographicLineSymbolLayer(symbol, layer: CartographicLineSymbolLayer, context: Context): """ Appends a CartographicLineSymbolLayer to a symbol """ color = symbol_color_to_qcolor(layer.color) out = QgsSimpleLineSymbolLayer(color) out.setEnabled(layer.enabled) out.setLocked(layer.locked) out.setWidth(context.convert_size(max( 0, layer.width))) # sometimes lines have negative width? out.setWidthUnit(context.units) out.setPenJoinStyle(symbol_pen_to_qpenjoinstyle(layer.join)) out.setPenCapStyle(symbol_pen_to_qpencapstyle(layer.cap)) if layer.template is not None: apply_template_to_LineSymbolLayer_custom_dash(layer.template, out, context) # better matching of null stroke color to QGIS symbology if out.color().alpha() == 0: out.setPenStyle(Qt.NoPen) out.setOffset(context.convert_size(layer.offset)) out.setOffsetUnit(context.units) symbol.appendSymbolLayer(out) if layer.decoration is not None: append_Decorations(symbol, layer.decoration, context)
def append_SimpleLineSymbolLayer(symbol, layer): """ Appends a SimpleLineSymbolLayer to a symbol """ color = symbol_color_to_qcolor(layer.color) out = QgsSimpleLineSymbolLayer(color) out.setEnabled(layer.enabled) out.setLocked(layer.locked) out.setWidth(points_to_mm(layer.width)) out.setPenStyle(symbol_pen_to_qpenstyle(layer.line_type)) # out.setPenJoinStyle(symbol_pen_to_qpenjoinstyle(layer.join)) # better matching of null stroke color to QGIS symbology if out.color().alpha() == 0: out.setPenStyle(Qt.NoPen) # todo - change to new symbol layer if outline offset set symbol.appendSymbolLayer(out)
def append_SimpleLineSymbolLayer(symbol, layer, context: Context): """ Appends a SimpleLineSymbolLayer to a symbol """ color = symbol_color_to_qcolor(layer.color) out = QgsSimpleLineSymbolLayer(color) out.setEnabled(layer.enabled) out.setLocked(layer.locked) out.setWidth(context.convert_size(max( 0, layer.width))) # sometimes lines have negative width? out.setWidthUnit(context.units) out.setPenStyle(symbol_pen_to_qpenstyle(layer.line_type)) # better matching of null stroke color to QGIS symbology if out.color().alpha() == 0: out.setPenStyle(Qt.NoPen) symbol.appendSymbolLayer(out)