28   d = 
new QgsTextBackgroundSettingsPrivate();
 
   62   if ( !d->enabled == other.
enabled()
 
   63        || d->type != other.
type()
 
   64        || d->svgFile != other.
svgFile()
 
   66        || d->size != other.
size()
 
   71        || d->offset != other.
offset()
 
   74        || d->radii != other.
radii()
 
   80        || d->opacity != other.
opacity()
 
   87   if ( 
static_cast< bool >( d->paintEffect ) != 
static_cast< bool >( other.
paintEffect() )
 
   91   if ( 
static_cast< bool >( d->markerSymbol ) != 
static_cast< bool >( other.
markerSymbol() )
 
   95   if ( 
static_cast< bool >( d->fillSymbol ) != 
static_cast< bool >( other.
fillSymbol() )
 
  104   return !( *
this == other );
 
  139   return d->markerSymbol.get();
 
  144   d->markerSymbol.reset( symbol );
 
  149   return d->fillSymbol.get();
 
  154   d->fillSymbol.reset( symbol );
 
  189   return d->sizeMapUnitScale;
 
  194   d->sizeMapUnitScale = scale;
 
  199   return d->rotationType;
 
  204   d->rotationType = 
type;
 
  229   return d->offsetUnits;
 
  234   d->offsetUnits = units;
 
  239   return d->offsetMapUnitScale;
 
  244   d->offsetMapUnitScale = scale;
 
  259   return d->radiiUnits;
 
  264   d->radiiUnits = units;
 
  269   return d->radiiMapUnitScale;
 
  274   d->radiiMapUnitScale = scale;
 
  304   d->fillColor = color;
 
  305   if ( d->fillSymbol && d->fillSymbol->symbolLayers().at( 0 )->layerType() == QLatin1String( 
"SimpleFill" ) )
 
  307     qgis::down_cast< QgsSimpleFillSymbolLayer * >( d->fillSymbol->symbolLayers().at( 0 ) )->setColor( color );
 
  313   return d->strokeColor;
 
  318   d->strokeColor = color;
 
  319   if ( d->fillSymbol && d->fillSymbol->symbolLayers().at( 0 )->layerType() == QLatin1String( 
"SimpleFill" ) )
 
  321     qgis::down_cast< QgsSimpleFillSymbolLayer * >( d->fillSymbol->symbolLayers().at( 0 ) )->setStrokeColor( color );
 
  327   return d->strokeWidth;
 
  332   d->strokeWidth = width;
 
  333   if ( d->fillSymbol && d->fillSymbol->symbolLayers().at( 0 )->layerType() == QLatin1String( 
"SimpleFill" ) )
 
  335     QgsSimpleFillSymbolLayer *fill = qgis::down_cast< QgsSimpleFillSymbolLayer * >( d->fillSymbol->symbolLayers().at( 0 ) );
 
  343   return d->strokeWidthUnits;
 
  348   d->strokeWidthUnits = units;
 
  349   if ( d->fillSymbol && d->fillSymbol->symbolLayers().at( 0 )->layerType() == QLatin1String( 
"SimpleFill" ) )
 
  351     qgis::down_cast< QgsSimpleFillSymbolLayer * >( d->fillSymbol->symbolLayers().at( 0 ) )->setStrokeWidthUnit( units );
 
  357   return d->strokeWidthMapUnitScale;
 
  362   d->strokeWidthMapUnitScale = scale;
 
  363   if ( d->fillSymbol && d->fillSymbol->symbolLayers().at( 0 )->layerType() == QLatin1String( 
"SimpleFill" ) )
 
  365     qgis::down_cast< QgsSimpleFillSymbolLayer * >( d->fillSymbol->symbolLayers().at( 0 ) )->setStrokeWidthMapUnitScale( scale );
 
  376   d->joinStyle = style;
 
  377   if ( d->fillSymbol && d->fillSymbol->symbolLayers().at( 0 )->layerType() == QLatin1String( 
"SimpleFill" ) )
 
  379     qgis::down_cast< QgsSimpleFillSymbolLayer * >( d->fillSymbol->symbolLayers().at( 0 ) )->setPenJoinStyle( style );
 
  385   return d->paintEffect.get();
 
  390   d->paintEffect.reset( effect );
 
  395   d->enabled = layer->
customProperty( QStringLiteral( 
"labeling/shapeDraw" ), QVariant( 
false ) ).toBool();
 
  397   d->svgFile = layer->
customProperty( QStringLiteral( 
"labeling/shapeSVGFile" ), QVariant( 
"" ) ).toString();
 
  399   d->size = QSizeF( layer->
customProperty( QStringLiteral( 
"labeling/shapeSizeX" ), QVariant( 0.0 ) ).toDouble(),
 
  400                     layer->
customProperty( QStringLiteral( 
"labeling/shapeSizeY" ), QVariant( 0.0 ) ).toDouble() );
 
  402   if ( layer->
customProperty( QStringLiteral( 
"labeling/shapeSizeUnit" ) ).toString().isEmpty() )
 
  411   if ( layer->
customProperty( QStringLiteral( 
"labeling/shapeSizeMapUnitScale" ) ).toString().isEmpty() )
 
  414     double oldMin = layer->
customProperty( QStringLiteral( 
"labeling/shapeSizeMapUnitMinScale" ), 0.0 ).toDouble();
 
  415     d->sizeMapUnitScale.minScale = oldMin != 0 ? 1.0 / oldMin : 0;
 
  416     double oldMax = layer->
customProperty( QStringLiteral( 
"labeling/shapeSizeMapUnitMaxScale" ), 0.0 ).toDouble();
 
  417     d->sizeMapUnitScale.maxScale = oldMax != 0 ? 1.0 / oldMax : 0;
 
  424   d->rotation = layer->
customProperty( QStringLiteral( 
"labeling/shapeRotation" ), QVariant( 0.0 ) ).toDouble();
 
  425   d->offset = QPointF( layer->
customProperty( QStringLiteral( 
"labeling/shapeOffsetX" ), QVariant( 0.0 ) ).toDouble(),
 
  426                        layer->
customProperty( QStringLiteral( 
"labeling/shapeOffsetY" ), QVariant( 0.0 ) ).toDouble() );
 
  428   if ( layer->
customProperty( QStringLiteral( 
"labeling/shapeOffsetUnit" ) ).toString().isEmpty() )
 
  437   if ( layer->
customProperty( QStringLiteral( 
"labeling/shapeOffsetMapUnitScale" ) ).toString().isEmpty() )
 
  440     double oldMin = layer->
customProperty( QStringLiteral( 
"labeling/shapeOffsetMapUnitMinScale" ), 0.0 ).toDouble();
 
  441     d->offsetMapUnitScale.minScale = oldMin != 0 ? 1.0 / oldMin : 0;
 
  442     double oldMax = layer->
customProperty( QStringLiteral( 
"labeling/shapeOffsetMapUnitMaxScale" ), 0.0 ).toDouble();
 
  443     d->offsetMapUnitScale.maxScale = oldMax != 0 ? 1.0 / oldMax : 0;
 
  449   d->radii = QSizeF( layer->
customProperty( QStringLiteral( 
"labeling/shapeRadiiX" ), QVariant( 0.0 ) ).toDouble(),
 
  450                      layer->
customProperty( QStringLiteral( 
"labeling/shapeRadiiY" ), QVariant( 0.0 ) ).toDouble() );
 
  453   if ( layer->
customProperty( QStringLiteral( 
"labeling/shapeRadiiUnit" ) ).toString().isEmpty() )
 
  462   if ( layer->
customProperty( QStringLiteral( 
"labeling/shapeRadiiMapUnitScale" ) ).toString().isEmpty() )
 
  465     double oldMin = layer->
customProperty( QStringLiteral( 
"labeling/shapeRadiiMapUnitMinScale" ), 0.0 ).toDouble();
 
  466     d->radiiMapUnitScale.minScale = oldMin != 0 ? 1.0 / oldMin : 0;
 
  467     double oldMax = layer->
customProperty( QStringLiteral( 
"labeling/shapeRadiiMapUnitMaxScale" ), 0.0 ).toDouble();
 
  468     d->radiiMapUnitScale.maxScale = oldMax != 0 ? 1.0 / oldMax : 0;
 
  476   d->strokeWidth = layer->
customProperty( QStringLiteral( 
"labeling/shapeBorderWidth" ), QVariant( .0 ) ).toDouble();
 
  477   if ( layer->
customProperty( QStringLiteral( 
"labeling/shapeBorderWidthUnit" ) ).toString().isEmpty() )
 
  485   if ( layer->
customProperty( QStringLiteral( 
"labeling/shapeBorderWidthMapUnitScale" ) ).toString().isEmpty() )
 
  488     double oldMin = layer->
customProperty( QStringLiteral( 
"labeling/shapeBorderWidthMapUnitMinScale" ), 0.0 ).toDouble();
 
  489     d->strokeWidthMapUnitScale.minScale = oldMin != 0 ? 1.0 / oldMin : 0;
 
  490     double oldMax = layer->
customProperty( QStringLiteral( 
"labeling/shapeBorderWidthMapUnitMaxScale" ), 0.0 ).toDouble();
 
  491     d->strokeWidthMapUnitScale.maxScale = oldMax != 0 ? 1.0 / oldMax : 0;
 
  497   d->joinStyle = 
static_cast< Qt::PenJoinStyle 
>( layer->
customProperty( QStringLiteral( 
"labeling/shapeJoinStyle" ), QVariant( Qt::BevelJoin ) ).toUInt() );
 
  499   if ( layer->
customProperty( QStringLiteral( 
"labeling/shapeOpacity" ) ).toString().isEmpty() )
 
  501     d->opacity = ( 1 - layer->
customProperty( QStringLiteral( 
"labeling/shapeTransparency" ) ).toInt() / 100.0 ); 
 
  505     d->opacity = ( layer->
customProperty( QStringLiteral( 
"labeling/shapeOpacity" ) ).toDouble() );
 
  510   if ( layer->
customProperty( QStringLiteral( 
"labeling/shapeEffect" ) ).isValid() )
 
  512     QDomDocument doc( QStringLiteral( 
"effect" ) );
 
  513     doc.setContent( layer->
customProperty( QStringLiteral( 
"labeling/shapeEffect" ) ).toString() );
 
  514     QDomElement effectElem = doc.firstChildElement( QStringLiteral( 
"effect" ) ).firstChildElement( QStringLiteral( 
"effect" ) );
 
  523   QDomElement backgroundElem = elem.firstChildElement( QStringLiteral( 
"background" ) );
 
  524   d->enabled = backgroundElem.attribute( QStringLiteral( 
"shapeDraw" ), QStringLiteral( 
"0" ) ).toInt();
 
  525   d->type = 
static_cast< ShapeType >( backgroundElem.attribute( QStringLiteral( 
"shapeType" ), QString::number( 
ShapeRectangle ) ).toUInt() );
 
  527   d->sizeType = 
static_cast< SizeType >( backgroundElem.attribute( QStringLiteral( 
"shapeSizeType" ), QString::number( 
SizeBuffer ) ).toUInt() );
 
  528   d->size = QSizeF( backgroundElem.attribute( QStringLiteral( 
"shapeSizeX" ), QStringLiteral( 
"0" ) ).toDouble(),
 
  529                     backgroundElem.attribute( QStringLiteral( 
"shapeSizeY" ), QStringLiteral( 
"0" ) ).toDouble() );
 
  531   if ( !backgroundElem.hasAttribute( QStringLiteral( 
"shapeSizeUnit" ) ) )
 
  540   if ( !backgroundElem.hasAttribute( QStringLiteral( 
"shapeSizeMapUnitScale" ) ) )
 
  543     double oldMin = backgroundElem.attribute( QStringLiteral( 
"shapeSizeMapUnitMinScale" ), QStringLiteral( 
"0" ) ).toDouble();
 
  544     d->sizeMapUnitScale.minScale = oldMin != 0 ? 1.0 / oldMin : 0;
 
  545     double oldMax = backgroundElem.attribute( QStringLiteral( 
"shapeSizeMapUnitMaxScale" ), QStringLiteral( 
"0" ) ).toDouble();
 
  546     d->sizeMapUnitScale.maxScale = oldMax != 0 ? 1.0 / oldMax : 0;
 
  552   d->rotationType = 
static_cast< RotationType >( backgroundElem.attribute( QStringLiteral( 
"shapeRotationType" ), QString::number( 
RotationSync ) ).toUInt() );
 
  553   d->rotation = backgroundElem.attribute( QStringLiteral( 
"shapeRotation" ), QStringLiteral( 
"0" ) ).toDouble();
 
  554   d->offset = QPointF( backgroundElem.attribute( QStringLiteral( 
"shapeOffsetX" ), QStringLiteral( 
"0" ) ).toDouble(),
 
  555                        backgroundElem.attribute( QStringLiteral( 
"shapeOffsetY" ), QStringLiteral( 
"0" ) ).toDouble() );
 
  557   if ( !backgroundElem.hasAttribute( QStringLiteral( 
"shapeOffsetUnit" ) ) )
 
  566   if ( !backgroundElem.hasAttribute( QStringLiteral( 
"shapeOffsetMapUnitScale" ) ) )
 
  569     double oldMin = backgroundElem.attribute( QStringLiteral( 
"shapeOffsetMapUnitMinScale" ), QStringLiteral( 
"0" ) ).toDouble();
 
  570     d->offsetMapUnitScale.minScale = oldMin != 0 ? 1.0 / oldMin : 0;
 
  571     double oldMax = backgroundElem.attribute( QStringLiteral( 
"shapeOffsetMapUnitMaxScale" ), QStringLiteral( 
"0" ) ).toDouble();
 
  572     d->offsetMapUnitScale.maxScale = oldMax != 0 ? 1.0 / oldMax : 0;
 
  578   d->radii = QSizeF( backgroundElem.attribute( QStringLiteral( 
"shapeRadiiX" ), QStringLiteral( 
"0" ) ).toDouble(),
 
  579                      backgroundElem.attribute( QStringLiteral( 
"shapeRadiiY" ), QStringLiteral( 
"0" ) ).toDouble() );
 
  581   if ( !backgroundElem.hasAttribute( QStringLiteral( 
"shapeRadiiUnit" ) ) )
 
  589   if ( !backgroundElem.hasAttribute( QStringLiteral( 
"shapeRadiiMapUnitScale" ) ) )
 
  592     double oldMin = backgroundElem.attribute( QStringLiteral( 
"shapeRadiiMapUnitMinScale" ), QStringLiteral( 
"0" ) ).toDouble();
 
  593     d->radiiMapUnitScale.minScale = oldMin != 0 ? 1.0 / oldMin : 0;
 
  594     double oldMax = backgroundElem.attribute( QStringLiteral( 
"shapeRadiiMapUnitMaxScale" ), QStringLiteral( 
"0" ) ).toDouble();
 
  595     d->radiiMapUnitScale.maxScale = oldMax != 0 ? 1.0 / oldMax : 0;
 
  603   d->strokeWidth = backgroundElem.attribute( QStringLiteral( 
"shapeBorderWidth" ), QStringLiteral( 
"0" ) ).toDouble();
 
  605   if ( !backgroundElem.hasAttribute( QStringLiteral( 
"shapeBorderWidthUnit" ) ) )
 
  613   if ( !backgroundElem.hasAttribute( QStringLiteral( 
"shapeBorderWidthMapUnitScale" ) ) )
 
  616     double oldMin = backgroundElem.attribute( QStringLiteral( 
"shapeBorderWidthMapUnitMinScale" ), QStringLiteral( 
"0" ) ).toDouble();
 
  617     d->strokeWidthMapUnitScale.minScale = oldMin != 0 ? 1.0 / oldMin : 0;
 
  618     double oldMax = backgroundElem.attribute( QStringLiteral( 
"shapeBorderWidthMapUnitMaxScale" ), QStringLiteral( 
"0" ) ).toDouble();
 
  619     d->strokeWidthMapUnitScale.maxScale = oldMax != 0 ? 1.0 / oldMax : 0;
 
  625   d->joinStyle = 
static_cast< Qt::PenJoinStyle 
>( backgroundElem.attribute( QStringLiteral( 
"shapeJoinStyle" ), QString::number( Qt::BevelJoin ) ).toUInt() );
 
  627   if ( !backgroundElem.hasAttribute( QStringLiteral( 
"shapeOpacity" ) ) )
 
  629     d->opacity = ( 1 - backgroundElem.attribute( QStringLiteral( 
"shapeTransparency" ) ).toInt() / 100.0 ); 
 
  633     d->opacity = ( backgroundElem.attribute( QStringLiteral( 
"shapeOpacity" ) ).toDouble() );
 
  639   QDomElement effectElem = backgroundElem.firstChildElement( QStringLiteral( 
"effect" ) );
 
  640   if ( !effectElem.isNull() )
 
  647   const QDomNodeList symbols = backgroundElem.elementsByTagName( QStringLiteral( 
"symbol" ) );
 
  648   for ( 
int i = 0; i < symbols.size(); ++i )
 
  650     if ( symbols.at( i ).isElement() )
 
  652       const QDomElement symbolElement = symbols.at( i ).toElement();
 
  653       const QString symbolElementName = symbolElement.attribute( QStringLiteral( 
"name" ) );
 
  654       if ( symbolElementName == QLatin1String( 
"markerSymbol" ) )
 
  656         setMarkerSymbol( QgsSymbolLayerUtils::loadSymbol< QgsMarkerSymbol >( symbolElement, context ) );
 
  658       else if ( symbolElementName == QLatin1String( 
"fillSymbol" ) )
 
  660         setFillSymbol( QgsSymbolLayerUtils::loadSymbol< QgsFillSymbol >( symbolElement, context ) );
 
  665   if ( !d->fillSymbol )
 
  682   QDomElement backgroundElem = doc.createElement( QStringLiteral( 
"background" ) );
 
  683   backgroundElem.setAttribute( QStringLiteral( 
"shapeDraw" ), d->enabled );
 
  684   backgroundElem.setAttribute( QStringLiteral( 
"shapeType" ), 
static_cast< unsigned int >( d->type ) );
 
  686   backgroundElem.setAttribute( QStringLiteral( 
"shapeSizeType" ), 
static_cast< unsigned int >( d->sizeType ) );
 
  687   backgroundElem.setAttribute( QStringLiteral( 
"shapeSizeX" ), d->size.width() );
 
  688   backgroundElem.setAttribute( QStringLiteral( 
"shapeSizeY" ), d->size.height() );
 
  691   backgroundElem.setAttribute( QStringLiteral( 
"shapeRotationType" ), 
static_cast< unsigned int >( d->rotationType ) );
 
  692   backgroundElem.setAttribute( QStringLiteral( 
"shapeRotation" ), d->rotation );
 
  693   backgroundElem.setAttribute( QStringLiteral( 
"shapeOffsetX" ), d->offset.x() );
 
  694   backgroundElem.setAttribute( QStringLiteral( 
"shapeOffsetY" ), d->offset.y() );
 
  697   backgroundElem.setAttribute( QStringLiteral( 
"shapeRadiiX" ), d->radii.width() );
 
  698   backgroundElem.setAttribute( QStringLiteral( 
"shapeRadiiY" ), d->radii.height() );
 
  703   backgroundElem.setAttribute( QStringLiteral( 
"shapeBorderWidth" ), d->strokeWidth );
 
  704   backgroundElem.setAttribute( QStringLiteral( 
"shapeBorderWidthUnit" ), 
QgsUnitTypes::encodeUnit( d->strokeWidthUnits ) );
 
  706   backgroundElem.setAttribute( QStringLiteral( 
"shapeJoinStyle" ), 
static_cast< unsigned int >( d->joinStyle ) );
 
  707   backgroundElem.setAttribute( QStringLiteral( 
"shapeOpacity" ), d->opacity );
 
  710     d->paintEffect->saveProperties( doc, backgroundElem );
 
  712   if ( d->markerSymbol )
 
  718   return backgroundElem;
 
  723   if ( !d->fillSymbol || d->fillSymbol->symbolLayers().at( 0 )->layerType() != QLatin1String( 
"SimpleFill" ) )
 
  725   QgsSimpleFillSymbolLayer *fill = qgis::down_cast< QgsSimpleFillSymbolLayer * >( d->fillSymbol->symbolLayers().at( 0 ) );
 
  779   if ( !exprVal.isNull() )
 
  781     QString units = exprVal.toString();
 
  782     if ( !units.isEmpty() )
 
  792   if ( !exprVal.isNull() )
 
  794     const QString skind = exprVal.toString().trimmed();
 
  795     if ( !skind.isEmpty() )
 
  802   if ( !exprVal.isNull() )
 
  804     QString stype = exprVal.toString().trimmed();
 
  805     if ( !stype.isEmpty() )
 
  814   if ( !exprVal.isNull() )
 
  816     QString svgfile = exprVal.toString().trimmed();
 
  826   if ( !exprVal.isNull() )
 
  828     QString rotstr = exprVal.toString().trimmed();
 
  829     if ( !rotstr.isEmpty() )
 
  836   if ( !exprVal.isNull() )
 
  846   if ( !exprVal.isNull() )
 
  848     QString units = exprVal.toString();
 
  849     if ( !units.isEmpty() )
 
  854         d->offsetUnits = res;
 
  859   if ( !exprVal.isNull() )
 
  870   if ( !exprVal.isNull() )
 
  872     QString units = exprVal.toString();
 
  873     if ( !units.isEmpty() )
 
  888       d->opacity = val.toDouble() / 100.0;
 
  911   if ( !exprVal.isNull() )
 
  913     QString units = exprVal.toString();
 
  914     if ( !units.isEmpty() )
 
  919         d->strokeWidthUnits = res;
 
  926     QString blendstr = exprVal.toString().trimmed();
 
  927     if ( !blendstr.isEmpty() )
 
  934     QString joinstr = exprVal.toString().trimmed();
 
  935     if ( !joinstr.isEmpty() )
 
  944   QSet< QString > fields;
 
  945   if ( d->markerSymbol )
 
  947     fields.unite( d->markerSymbol->usedAttributes( context ) );
 
  951     fields.unite( d->fillSymbol->usedAttributes( context ) );
 
QColor valueAsColor(int key, const QgsExpressionContext &context, const QColor &defaultColor=QColor(), bool *ok=nullptr) const
Calculates the current value of the property with the specified key and interprets it as a color.
bool valueAsBool(int key, const QgsExpressionContext &context, bool defaultValue=false, bool *ok=nullptr) const
Calculates the current value of the property with the specified key and interprets it as an boolean.
double valueAsDouble(int key, const QgsExpressionContext &context, double defaultValue=0.0, bool *ok=nullptr) const
Calculates the current value of the property with the specified key and interprets it as a double.
static QgsPaintEffectRegistry * paintEffectRegistry()
Returns the application's paint effect registry, used for managing paint effects.
void setOriginalValueVariable(const QVariant &value)
Sets the original value variable value for the context.
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
Q_INVOKABLE QVariant customProperty(const QString &value, const QVariant &defaultValue=QVariant()) const
Read a custom property from layer.
Struct for storing maximum and minimum scales for measurements in map units.
A marker symbol type, for rendering Point and MultiPoint geometries.
static bool isDefaultStack(QgsPaintEffect *effect)
Tests whether a paint effect matches the default effects stack.
Base class for visual effects which can be applied to QPicture drawings.
virtual QVariantMap properties() const =0
Returns the properties describing the paint effect encoded in a string format.
static QgsPainting::BlendMode getBlendModeEnum(QPainter::CompositionMode blendMode)
Returns a BlendMode corresponding to a QPainter::CompositionMode.
static QPainter::CompositionMode getCompositionMode(QgsPainting::BlendMode blendMode)
Returns a QPainter::CompositionMode corresponding to a BlendMode.
BlendMode
Blending modes enum defining the available composition modes that can be used when rendering a layer.
@ ShapeOpacity
Shape opacity.
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
bool hasProperty(int key) const override
Returns true if the collection contains a property with the specified key.
QgsProperty property(int key) const override
Returns a matching property from the collection, if one exists.
QVariant value(int key, const QgsExpressionContext &context, const QVariant &defaultValue=QVariant()) const override
Returns the calculated value of the property with the specified key from within the collection.
void setProperty(int key, const QgsProperty &property)
Adds a property to the collection and takes ownership of it.
bool isActive(int key) const override
Returns true if the collection contains an active property with the specified key.
A store for object properties.
The class is used as a container of context for various read/write operations on other objects.
const QgsPathResolver & pathResolver() const
Returns path resolver for conversion between relative and absolute paths.
Contains information about the context of a rendering operation.
QgsExpressionContext & expressionContext()
Gets the expression context.
const QgsPathResolver & pathResolver() const
Returns the path resolver for conversion between relative and absolute paths during rendering operati...
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
void setPenJoinStyle(Qt::PenJoinStyle style)
void setStrokeWidth(double strokeWidth)
void setStrokeStyle(Qt::PenStyle strokeStyle)
void setStrokeWidthUnit(QgsUnitTypes::RenderUnit unit)
Sets the units for the width of the fill's stroke.
static Qt::PenJoinStyle decodePenJoinStyle(const QString &str)
static QString encodeMapUnitScale(const QgsMapUnitScale &mapUnitScale)
static QColor decodeColor(const QString &str)
static QString svgSymbolPathToName(const QString &path, const QgsPathResolver &pathResolver)
Determines an SVG symbol's name from its path.
static QPointF toPoint(const QVariant &value, bool *ok=nullptr)
Converts a value to a point.
static QgsMapUnitScale decodeMapUnitScale(const QString &str)
static QSizeF toSize(const QVariant &value, bool *ok=nullptr)
Converts a value to a size.
static QPainter::CompositionMode decodeBlendMode(const QString &s)
static QString svgSymbolNameToPath(const QString &name, const QgsPathResolver &pathResolver)
Determines an SVG symbol's path from its name.
static QString encodeColor(const QColor &color)
static QDomElement saveSymbol(const QString &symbolName, const QgsSymbol *symbol, QDomDocument &doc, const QgsReadWriteContext &context)
Writes a symbol definition to XML.
static QString symbolProperties(QgsSymbol *symbol)
Returns a string representing the symbol.
@ PropertyJoinStyle
Line join style.
@ PropertyStrokeWidth
Stroke width.
@ PropertyFillColor
Fill color.
@ PropertyStrokeColor
Stroke color.
QgsPropertyCollection & dataDefinedProperties()
Returns a reference to the symbol layer's property collection, used for data defined overrides.
bool changeSymbolLayer(int index, QgsSymbolLayer *layer)
Deletes the current layer at the specified index and replaces it with layer.
Container for settings relating to a text background object.
QgsMapUnitScale strokeWidthMapUnitScale() const
Returns the map unit scale object for the shape stroke width.
void setFillSymbol(QgsFillSymbol *symbol)
Sets the current fill symbol for the background shape.
RotationType rotationType() const
Returns the method used for rotating the background shape.
QString svgFile() const
Returns the absolute path to the background SVG file, if set.
QSizeF size() const
Returns the size of the background shape.
QSizeF radii() const
Returns the radii used for rounding the corners of shapes.
QSet< QString > referencedFields(const QgsRenderContext &context) const
Returns all field names referenced by the configuration (e.g.
QgsMapUnitScale radiiMapUnitScale() const
Returns the map unit scale object for the shape radii.
void upgradeDataDefinedProperties(QgsPropertyCollection &properties)
Upgrade data defined properties when reading a project file saved in QGIS prior to version 3....
void setOpacity(double opacity)
Sets the background shape's opacity.
void setStrokeColor(const QColor &color)
Sets the color used for outlining the background shape.
QgsUnitTypes::RenderUnit strokeWidthUnit() const
Returns the units used for the shape's stroke width.
void setSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape size.
QPainter::CompositionMode blendMode() const
Returns the blending mode used for drawing the background shape.
Qt::PenJoinStyle joinStyle() const
Returns the join style used for drawing the background shape.
SizeType
Methods for determining the background shape size.
@ SizeBuffer
Shape size is determined by adding a buffer margin around text.
bool enabled() const
Returns whether the background is enabled.
QgsTextBackgroundSettings()
void readXml(const QDomElement &elem, const QgsReadWriteContext &context)
Read settings from a DOM element.
void setJoinStyle(Qt::PenJoinStyle style)
Sets the join style used for drawing the background shape.
void setRadiiUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shape's radii.
double opacity() const
Returns the background shape's opacity.
bool operator!=(const QgsTextBackgroundSettings &other) const
void updateDataDefinedProperties(QgsRenderContext &context, const QgsPropertyCollection &properties)
Updates the format by evaluating current values of data defined properties.
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape stroke width.
QgsUnitTypes::RenderUnit offsetUnit() const
Returns the units used for the shape's offset.
double rotation() const
Returns the rotation for the background shape, in degrees clockwise.
QColor fillColor() const
Returns the color used for filing the background shape.
void setMarkerSymbol(QgsMarkerSymbol *symbol)
Sets the current marker symbol for the background shape.
void setRadii(QSizeF radii)
Sets the radii used for rounding the corners of shapes.
SizeType sizeType() const
Returns the method used to determine the size of the background shape (e.g., fixed size or buffer aro...
QgsTextBackgroundSettings & operator=(const QgsTextBackgroundSettings &other)
~QgsTextBackgroundSettings()
ShapeType type() const
Returns the type of background shape (e.g., square, ellipse, SVG).
double strokeWidth() const
Returns the width of the shape's stroke (stroke).
void setSizeType(SizeType type)
Sets the method used to determine the size of the background shape (e.g., fixed size or buffer around...
ShapeType
Background shape types.
@ ShapeRectangle
Rectangle.
void setFillColor(const QColor &color)
Sets the color used for filing the background shape.
void setPaintEffect(QgsPaintEffect *effect)
Sets the current paint effect for the background shape.
void setStrokeWidthUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shape's stroke width.
QColor strokeColor() const
Returns the color used for outlining the background shape.
QDomElement writeXml(QDomDocument &doc, const QgsReadWriteContext &context) const
Write settings into a DOM element.
void setRotationType(RotationType type)
Sets the method used for rotating the background shape.
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape offset.
QgsFillSymbol * fillSymbol() const
Returns the fill symbol to be rendered in the background.
void setBlendMode(QPainter::CompositionMode mode)
Sets the blending mode used for drawing the background shape.
void readFromLayer(QgsVectorLayer *layer)
Reads settings from a layer's custom properties (for QGIS 2.x projects).
QgsMapUnitScale sizeMapUnitScale() const
Returns the map unit scale object for the shape size.
void setType(ShapeType type)
Sets the type of background shape to draw (e.g., square, ellipse, SVG).
QgsUnitTypes::RenderUnit sizeUnit() const
Returns the units used for the shape's size.
RotationType
Methods for determining the rotation of the background shape.
@ RotationSync
Shape rotation is synced with text rotation.
bool operator==(const QgsTextBackgroundSettings &other) const
QgsUnitTypes::RenderUnit radiiUnit() const
Returns the units used for the shape's radii.
void setEnabled(bool enabled)
Sets whether the text background will be drawn.
QgsMarkerSymbol * markerSymbol() const
Returns the marker symbol to be rendered in the background.
void setRadiiMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the shape radii.
void setRotation(double rotation)
Sets the rotation for the background shape, in degrees clockwise.
void setOffset(QPointF offset)
Sets the offset used for drawing the background shape.
void setSize(QSizeF size)
Sets the size of the background shape.
void setSizeUnit(QgsUnitTypes::RenderUnit unit)
Sets the units used for the shape's size.
const QgsPaintEffect * paintEffect() const
Returns the current paint effect for the background shape.
void setSvgFile(const QString &file)
Sets the path to the background SVG file.
QgsMapUnitScale offsetMapUnitScale() const
Returns the map unit scale object for the shape offset.
void setStrokeWidth(double width)
Sets the width of the shape's stroke (stroke).
QPointF offset() const
Returns the offset used for drawing the background shape.
void setOffsetUnit(QgsUnitTypes::RenderUnit units)
Sets the units used for the shape's offset.
static QgsTextBackgroundSettings::ShapeType decodeShapeType(const QString &string)
Decodes a string representation of a background shape type to a type.
static QColor readColor(QgsVectorLayer *layer, const QString &property, const QColor &defaultColor=Qt::black, bool withAlpha=true)
Converts an encoded color value from a layer property.
static QgsTextBackgroundSettings::RotationType decodeBackgroundRotationType(const QString &string)
Decodes a string representation of a background rotation type to a type.
static QgsTextBackgroundSettings::SizeType decodeBackgroundSizeType(const QString &string)
Decodes a string representation of a background size type to a type.
static QgsUnitTypes::RenderUnit convertFromOldLabelUnit(int val)
Converts a unit from an old (pre 3.0) label unit.
static Q_INVOKABLE QString encodeUnit(QgsUnitTypes::DistanceUnit unit)
Encodes a distance unit to a string.
static Q_INVOKABLE QgsUnitTypes::RenderUnit decodeRenderUnit(const QString &string, bool *ok=nullptr)
Decodes a render unit from a string.
RenderUnit
Rendering size units.
Represents a vector layer which manages a vector based data sets.
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)