def createBackgroundSettings(self): s = QgsTextBackgroundSettings() s.setEnabled(True) s.setType(QgsTextBackgroundSettings.ShapeEllipse) s.setSvgFile('svg.svg') s.setSizeType(QgsTextBackgroundSettings.SizeFixed) s.setSize(QSizeF(1, 2)) s.setSizeUnit(QgsUnitTypes.RenderPixels) s.setSizeMapUnitScale(QgsMapUnitScale(1, 2)) s.setRotationType(QgsTextBackgroundSettings.RotationFixed) s.setRotation(45) s.setOffset(QPointF(3, 4)) s.setOffsetUnit(QgsUnitTypes.RenderMapUnits) s.setOffsetMapUnitScale(QgsMapUnitScale(5, 6)) s.setRadii(QSizeF(11, 12)) s.setRadiiUnit(QgsUnitTypes.RenderPixels) s.setRadiiMapUnitScale(QgsMapUnitScale(15, 16)) s.setFillColor(QColor(255, 0, 0)) s.setBorderColor(QColor(0, 255, 0)) s.setOpacity(0.5) s.setJoinStyle(Qt.RoundJoin) s.setBlendMode(QPainter.CompositionMode_Difference) s.setBorderWidth(7) s.setBorderWidthUnit(QgsUnitTypes.RenderMapUnits) s.setBorderWidthMapUnitScale(QgsMapUnitScale(QgsMapUnitScale(25, 26))) return s
def createBackgroundSettings(self): s = QgsTextBackgroundSettings() s.setEnabled(True) s.setType(QgsTextBackgroundSettings.ShapeEllipse) s.setSvgFile('svg.svg') s.setSizeType(QgsTextBackgroundSettings.SizeFixed) s.setSize(QSizeF(1, 2)) s.setSizeUnit(QgsUnitTypes.RenderPixels) s.setSizeMapUnitScale(QgsMapUnitScale(1, 2)) s.setRotationType(QgsTextBackgroundSettings.RotationFixed) s.setRotation(45) s.setOffset(QPointF(3, 4)) s.setOffsetUnit(QgsUnitTypes.RenderMapUnits) s.setOffsetMapUnitScale(QgsMapUnitScale(5, 6)) s.setRadii(QSizeF(11, 12)) s.setRadiiUnit(QgsUnitTypes.RenderPixels) s.setRadiiMapUnitScale(QgsMapUnitScale(15, 16)) s.setFillColor(QColor(255, 0, 0)) s.setStrokeColor(QColor(0, 255, 0)) s.setOpacity(0.5) s.setJoinStyle(Qt.RoundJoin) s.setBlendMode(QPainter.CompositionMode_Difference) s.setStrokeWidth(7) s.setStrokeWidthUnit(QgsUnitTypes.RenderMapUnits) s.setStrokeWidthMapUnitScale(QgsMapUnitScale(QgsMapUnitScale(25, 26))) s.setPaintEffect(QgsBlurEffect.create({'blur_level': '6', 'enabled': '1'})) return s
def convert_marker_text_background( marker_text_background: MarkerTextBackground, context) -> QgsTextBackgroundSettings: """ Converts a MarkerTextBackground to QgsTextBackgroundSettings """ if not hasattr(QgsTextBackgroundSettings, 'ShapeMarkerSymbol'): # raise NotImplementedException('Marker Text Background conversion requires QGIS 3.10 or later') return None from .symbols import SymbolConverter # pylint: disable=import-outside-toplevel symbol = SymbolConverter.Symbol_to_QgsSymbol( marker_text_background.marker_symbol, context) settings = QgsTextBackgroundSettings() settings.setEnabled(True) settings.setType(QgsTextBackgroundSettings.ShapeMarkerSymbol) settings.setMarkerSymbol(symbol) if marker_text_background.scale_to_fit_text: settings.setSizeType(QgsTextBackgroundSettings.SizeBuffer) else: settings.setSizeType(QgsTextBackgroundSettings.SizeFixed) settings.setSize(QSizeF(symbol.size(), symbol.size())) settings.setSizeUnit(symbol.sizeUnit()) return settings
def convert_fill_symbol_background( background_symbol, # pylint: disable=too-many-branches,too-many-statements context, reference_scale=None): """ Converts a fill symbol background to QgsTextBackgroundSettings """ settings = QgsTextBackgroundSettings() settings.setEnabled(True) settings.setType(QgsTextBackgroundSettings.ShapeRectangle) if isinstance(background_symbol, BalloonCallout): fill_symbol = background_symbol.fill_symbol if background_symbol.style == BalloonCallout.STYLE_ROUNDED_RECTANGLE: # TODO - confirm actual size rendering on Arc settings.setRadii(QSizeF(1, 1)) elif background_symbol.style == BalloonCallout.STYLE_OVAL: # TODO - verify comparitive rendering settings.setType(QgsTextBackgroundSettings.ShapeEllipse) else: fill_symbol = background_symbol.border_symbol from .symbols import SymbolConverter # pylint: disable=import-outside-toplevel # can't use the fill itself - we can only use the fill color and outline if isinstance(fill_symbol, SimpleFillSymbol): if not fill_symbol.color.is_null: fill_color = ColorConverter.color_to_qcolor(fill_symbol.color) settings.setFillColor(fill_color) else: settings.setFillColor(QColor()) if isinstance(fill_symbol.outline, SimpleLineSymbol): if not fill_symbol.outline.color.is_null: settings.setStrokeColor( ColorConverter.color_to_qcolor( fill_symbol.outline.color)) if reference_scale is None: settings.setStrokeWidth( context.convert_size(fill_symbol.outline.width)) settings.setStrokeWidthUnit(context.units) else: settings.setStrokeWidth(fill_symbol.outline.width * reference_scale * 0.000352778) settings.setStrokeWidthUnit( QgsUnitTypes.RenderMetersInMapUnits) else: stroke = SymbolConverter.Symbol_to_QgsSymbol( fill_symbol, context) if stroke: settings.setStrokeColor(stroke.color()) if reference_scale is None: settings.setStrokeWidth(0.2) settings.setStrokeWidthUnit( QgsUnitTypes.RenderMillimeters) else: settings.setStrokeWidth(0.2 * reference_scale * 0.001) settings.setStrokeWidthUnit( QgsUnitTypes.RenderMetersInMapUnits) else: symbol = SymbolConverter.Symbol_to_QgsSymbol(fill_symbol, context) settings.setFillColor(symbol.color()) settings.setSizeType(QgsTextBackgroundSettings.SizeBuffer) # TODO: margin x_margin = (background_symbol.margin_left + background_symbol.margin_right) / 2 y_margin = (background_symbol.margin_top + background_symbol.margin_bottom) / 2 x_delta = (background_symbol.margin_right - background_symbol.margin_left) / 2 y_delta = (background_symbol.margin_bottom - background_symbol.margin_top) / 2 if reference_scale is None: settings.setSize( QSizeF(context.convert_size(x_margin), context.convert_size(y_margin))) settings.setSizeUnit(context.units) else: settings.setSize( QSizeF(x_margin * reference_scale * 0.000352778, y_margin * reference_scale * 0.000352778)) settings.setSizeUnit(QgsUnitTypes.RenderMetersInMapUnits) if reference_scale is None: settings.setOffset( QPointF(context.convert_size(x_delta), context.convert_size(y_delta))) settings.setOffsetUnit(context.units) else: settings.setOffset( QPointF(x_delta * reference_scale * 0.000352778, y_delta * reference_scale * 0.000352778)) settings.setOffsetUnit(QgsUnitTypes.RenderMetersInMapUnits) return settings
def createBackgroundSettings(self): s = QgsTextBackgroundSettings() s.setEnabled(True) s.setType(QgsTextBackgroundSettings.ShapeEllipse) s.setSvgFile('svg.svg') s.setSizeType(QgsTextBackgroundSettings.SizeFixed) s.setSize(QSizeF(1, 2)) s.setSizeUnit(QgsUnitTypes.RenderPixels) s.setSizeMapUnitScale(QgsMapUnitScale(1, 2)) s.setRotationType(QgsTextBackgroundSettings.RotationFixed) s.setRotation(45) s.setOffset(QPointF(3, 4)) s.setOffsetUnit(QgsUnitTypes.RenderMapUnits) s.setOffsetMapUnitScale(QgsMapUnitScale(5, 6)) s.setRadii(QSizeF(11, 12)) s.setRadiiUnit(QgsUnitTypes.RenderPixels) s.setRadiiMapUnitScale(QgsMapUnitScale(15, 16)) s.setFillColor(QColor(255, 0, 0)) s.setStrokeColor(QColor(0, 255, 0)) s.setOpacity(0.5) s.setJoinStyle(Qt.RoundJoin) s.setBlendMode(QPainter.CompositionMode_Difference) s.setStrokeWidth(7) s.setStrokeWidthUnit(QgsUnitTypes.RenderMapUnits) s.setStrokeWidthMapUnitScale(QgsMapUnitScale(QgsMapUnitScale(25, 26))) s.setPaintEffect( QgsBlurEffect.create({ 'blur_level': '6.0', 'blur_unit': QgsUnitTypes.encodeUnit(QgsUnitTypes.RenderMillimeters), 'enabled': '1' })) marker = QgsMarkerSymbol() marker.setColor(QColor(100, 112, 134)) s.setMarkerSymbol(marker) return s