Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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