QGIS API Documentation
3.16.0-Hannover (43b64b13f3)
|
Go to the documentation of this file.
41 void QgsSymbolLayer::initPropertyDefinitions()
43 if ( !sPropertyDefinitions.isEmpty() )
46 QString origin = QStringLiteral(
"symbol" );
131 Q_UNUSED( mmMapUnitScaleFactor )
132 Q_UNUSED( layerName )
167 return QVector<qreal>();
172 return Qt::SolidLine;
223 QgsSymbolLayer::initPropertyDefinitions();
224 return sPropertyDefinitions;
259 if ( !baseName.isEmpty() )
261 prefix.append( QStringLiteral(
"%1_dd_" ).arg( baseName ) );
264 if ( !map.contains( QStringLiteral(
"%1expression" ).arg( prefix ) ) )
270 bool active = ( map.value( QStringLiteral(
"%1active" ).arg( prefix ), QStringLiteral(
"1" ) ) != QLatin1String(
"0" ) );
271 QString expression = map.value( QStringLiteral(
"%1expression" ).arg( prefix ) );
272 bool useExpression = ( map.value( QStringLiteral(
"%1useexpr" ).arg( prefix ), QStringLiteral(
"1" ) ) != QLatin1String(
"0" ) );
273 QString
field = map.value( QStringLiteral(
"%1field" ).arg( prefix ), QString() );
284 static const QMap< QString, QgsSymbolLayer::Property > OLD_PROPS
359 QgsStringMap::const_iterator propIt = stringMap.constBegin();
360 for ( ; propIt != stringMap.constEnd(); ++propIt )
363 QString propertyName;
365 if ( propIt.key().endsWith( QLatin1String(
"_dd_expression" ) ) )
370 propertyName = propIt.key().left( propIt.key().length() - 14 );
374 else if ( propIt.key().endsWith( QLatin1String(
"_expression" ) ) )
379 propertyName = propIt.key().left( propIt.key().length() - 11 );
384 if ( !prop || !OLD_PROPS.contains( propertyName ) )
392 if ( propertyName == QLatin1String(
"width" ) )
394 else if ( propertyName == QLatin1String(
"color" ) )
465 std::unique_ptr< QgsEffectPainter > effectPainter;
466 if ( effect && effect->
enabled() )
467 effectPainter = qgis::make_unique< QgsEffectPainter >( context.
renderContext(), effect );
469 for ( QPointF point : qgis::as_const( points ) )
472 effectPainter.reset();
515 if ( exprVal.isValid() )
523 if ( exprVal.isValid() )
553 offsetX += anchorPointCorrectionX;
557 offsetX -= anchorPointCorrectionX;
563 offsetY += anchorPointCorrectionY;
567 offsetY -= anchorPointCorrectionY;
574 double c = std::cos(
angle ), s = std::sin(
angle );
580 if ( str.compare( QLatin1String(
"left" ), Qt::CaseInsensitive ) == 0 )
584 else if ( str.compare( QLatin1String(
"right" ), Qt::CaseInsensitive ) == 0 )
596 if ( str.compare( QLatin1String(
"top" ), Qt::CaseInsensitive ) == 0 )
600 else if ( str.compare( QLatin1String(
"bottom" ), Qt::CaseInsensitive ) == 0 )
668 std::unique_ptr< QgsEffectPainter > effectPainter;
669 if ( effect && effect->
enabled() )
670 effectPainter = qgis::make_unique< QgsEffectPainter >( context.
renderContext(), effect );
672 for (
const QList< QPolygonF > &line : points )
675 effectPainter.reset();
699 for (
const QPolygonF &ring : qgis::as_const( *rings ) )
729 std::unique_ptr< QgsEffectPainter > effectPainter;
730 if ( effect && effect->
enabled() )
731 effectPainter = qgis::make_unique< QgsEffectPainter >( context.
renderContext(), effect );
733 for (
const QList< QPolygonF > &poly : polys )
735 QVector< QPolygonF > rings;
736 for (
int i = 1; i < poly.size(); ++i )
737 rings << poly.at( i );
741 effectPainter.reset();
754 if ( points.size() <= 5 &&
757 ( p->renderHints() & QPainter::Antialiasing ) )
759 p->setRenderHint( QPainter::Antialiasing,
false );
760 p->drawRect( points.boundingRect() );
761 p->setRenderHint( QPainter::Antialiasing,
true );
767 if ( !rings && p->pen().style() == Qt::NoPen )
770 p->drawPolygon( points );
776 path.addPolygon( points );
780 for (
auto it = rings->constBegin(); it != rings->constEnd(); ++it )
782 QPolygonF ring = *it;
783 path.addPolygon( ring );
793 QDomElement symbolizerElem = doc.createElement( QStringLiteral(
"se:PointSymbolizer" ) );
794 if ( !props.value( QStringLiteral(
"uom" ), QString() ).isEmpty() )
795 symbolizerElem.setAttribute( QStringLiteral(
"uom" ), props.value( QStringLiteral(
"uom" ), QString() ) );
796 element.appendChild( symbolizerElem );
@ PropertyDashPatternOffset
Dash pattern offset.
@ PropertyArrowHeadType
Arrow head type.
void setOriginalValueVariable(const QVariant &value)
Sets the original value variable value for data defined symbology.
@ Right
Align to right side of symbol.
@ PropertyHorizontalAnchor
Horizontal anchor point.
bool prepare(const QgsExpressionContext &context=QgsExpressionContext()) const override
Prepares the collection against a specified expression context.
static QgsProperty fromField(const QString &fieldName, bool isActive=true)
Returns a new FieldBasedProperty created from the specified field name.
QList< QList< QPolygonF > > toQPolygonF(QgsSymbol::SymbolType type, QSizeF size) const
Converts the patch shape to a set of QPolygonF objects representing how the patch should be drawn for...
@ PropertyBlurRadius
Shapeburst blur radius.
VerticalAnchorPoint
Symbol vertical anchor points.
@ PropertyArrowHeadThickness
Arrow head thickness.
RenderRingFilter
Options for filtering rings when the line symbol layer is being used to render a polygon's rings.
@ PropertyLineDistance
Distance between lines, or length of lines for hash line symbols.
double convertToPainterUnits(double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale()) const
Converts a size from the specified units to painter units (pixels).
@ PropertyShapeburstUseWholeShape
Shapeburst use whole shape.
virtual void startFeatureRender(const QgsFeature &feature, QgsRenderContext &context)
Called before the layer will be rendered for a particular feature.
const QgsMapToPixel & mapToPixel() const
Returns the context's map to pixel transform, which transforms between map coordinates and device coo...
virtual double dxfAngle(QgsSymbolRenderContext &context) const
Gets angle.
double size() const
Returns the symbol size.
QgsPropertyCollection & dataDefinedProperties()
Returns a reference to the symbol layer's property collection, used for data defined overrides.
A store for object properties.
@ PropertyClipPoints
Whether markers should be clipped to polygon boundaries.
@ PropertyGradientReference2IsCentroid
Gradient reference point 2 is centroid.
RenderUnit
Rendering size units.
QgsMapUnitScale mSizeMapUnitScale
Marker size map unit scale.
virtual void renderPolyline(const QPolygonF &points, QgsSymbolRenderContext &context)=0
Renders the line symbol layer along the line joining points, using the given render context.
@ HorizontalAnchor
Horizontal anchor point.
QgsExpressionContext & expressionContext()
Gets the expression context.
@ AntialiasingSimplification
The geometries can be rendered with 'AntiAliasing' disabled because of it is '1-pixel size'.
void drawPreviewIcon(QgsSymbolRenderContext &context, QSize size) override
double mapUnitsPerPixel() const
Returns current map units per pixel.
@ PropertyAverageAngleLength
Length to average symbol angles over.
void setRingFilter(QgsLineSymbolLayer::RenderRingFilter filter)
Sets the line symbol layer's ring filter, which controls which rings are rendered when the line symbo...
virtual Qt::PenStyle dxfPenStyle() const
Gets pen style.
virtual bool isCompatibleWithSymbol(QgsSymbol *symbol) const
Returns if the layer can be used below the specified symbol.
virtual double width() const
Returns the estimated width for the line symbol layer.
QgsMapUnitScale mapUnitScale() const override
@ PropertyArrowStartWidth
Arrow tail start width.
QgsMarkerSymbolLayer(const QgsMarkerSymbolLayer &other)=delete
QgsMarkerSymbolLayer cannot be copied.
bool isEmpty() const
Checks whether the container is empty.
virtual QVector< qreal > dxfCustomDashPattern(QgsUnitTypes::RenderUnit &unit) const
Gets dash pattern.
virtual void prepareExpressions(const QgsSymbolRenderContext &context)
Prepares all data defined property expressions for evaluation.
@ DataTypeString
Property requires a string value.
QgsSymbol::SymbolType mType
@ PropertyFontFamily
Font family.
@ PropertyFillStyle
Fill style (eg solid, dots)
@ PropertyGradientReference2Y
Gradient reference point 2 y.
virtual QColor color() const
The fill color.
@ PropertyFillColor
Fill color.
QgsMapUnitScale mWidthMapUnitScale
RenderRingFilter mRingFilter
std::unique_ptr< QgsPaintEffect > mPaintEffect
void setRenderingPass(int renderingPass)
Specifies the rendering pass in which this symbol layer should be rendered.
virtual bool hasDataDefinedProperties() const
Returns true if the symbol layer (or any of its sub-symbols) contains data defined properties.
@ PropertyGradientReference1IsCentroid
Gradient reference point 1 is centroid.
QgsSymbolLayer(const QgsSymbolLayer &other)=delete
QgsSymbolLayer cannot be copied.
void startRender(QgsSymbolRenderContext &context) override
Called before a set of rendering operations commences on the supplied render context.
@ PropertyDisplacementX
Horizontal displacement.
void _renderPolygon(QPainter *p, const QPolygonF &points, const QVector< QPolygonF > *rings, QgsSymbolRenderContext &context)
Default method to render polygon.
@ FillStyle
Fill style (eg solid, lines)
Contains information about the context of a rendering operation.
@ DataTypeNumeric
Property requires a numeric value.
@ Double
Double value (including negative values)
@ RenderMillimeters
Millimeters.
@ PenJoinStyle
Pen join style.
@ PropertyInterval
Line marker interval.
virtual ~QgsSymbolLayer()
QgsUnitTypes::RenderUnit outputUnit() const override
Returns the units to use for sizes and widths within the symbol layer.
@ PropertyCapStyle
Line cap style.
Abstract base class for all rendered symbols.
void setMapUnitScale(const QgsMapUnitScale &scale) override
static QgsProperty fromExpression(const QString &expression, bool isActive=true)
Returns a new ExpressionBasedProperty created from the specified expression.
QgsUnitTypes::RenderUnit mSizeUnit
Marker size unit.
@ PropertyStrokeColor
Stroke color.
void drawPreviewIcon(QgsSymbolRenderContext &context, QSize size) override
VerticalAnchorPoint mVerticalAnchorPoint
Vertical anchor point.
static double mapUnitScaleFactor(double scale, QgsUnitTypes::RenderUnit symbolUnits, QgsUnitTypes::DistanceUnit mapUnits, double mapUnitsPerPixel=1.0)
Returns scale factor for conversion to map units.
QgsMapUnitScale mapUnitScale() const override
virtual void renderPolygon(const QPolygonF &points, const QVector< QPolygonF > *rings, QgsSymbolRenderContext &context)=0
Renders the fill symbol layer for the polygon whose outer ring is defined by points,...
const QgsLegendPatchShape * patchShape() const
Returns the symbol patch shape, to use if rendering symbol preview icons.
static void createGeometryElement(QDomDocument &doc, QDomElement &element, const QString &geomFunc)
@ String
Any string value.
@ PropertyFontStyle
Font style.
QgsUnitTypes::RenderUnit mOffsetUnit
Offset units.
static QgsStyle * defaultStyle()
Returns default application-wide style.
@ PropertyArrowHeadLength
Arrow head length.
@ PropertyGradientSpread
Gradient spread mode.
void drawPreviewIcon(QgsSymbolRenderContext &context, QSize size) override
HorizontalAnchorPoint
Symbol horizontal anchor points.
@ Rotation
Rotation (value between 0-360 degrees)
void setOutputUnit(QgsUnitTypes::RenderUnit unit) override
Sets the units to use for sizes and widths within the symbol layer.
static QPointF toPoint(const QVariant &value, bool *ok=nullptr)
Converts a value to a point.
static const QgsPropertiesDefinition & propertyDefinitions()
Returns the symbol layer property definitions.
virtual bool writeDxf(QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift=QPointF(0.0, 0.0)) const
write as DXF
void markerOffset(QgsSymbolRenderContext &context, double &offsetX, double &offsetY) const
Calculates the required marker offset, including both the symbol offset and any displacement required...
QMap< int, QgsPropertyDefinition > QgsPropertiesDefinition
Definition of available properties.
@ PropertyOffset
Symbol offset.
static bool isDefaultStack(QgsPaintEffect *effect)
Tests whether a paint effect matches the default effects stack.
@ PropertyCharacter
Character, eg for font marker symbol layers.
@ PropertyGradientType
Gradient fill type.
QgsUnitTypes::DistanceUnit mapUnits() const
Retrieve map units.
virtual double dxfOffset(const QgsDxfExport &e, QgsSymbolRenderContext &context) const
Gets offset.
@ PropertyArrowWidth
Arrow tail width.
QgsFillSymbolLayer(const QgsFillSymbolLayer &other)=delete
QgsFillSymbolLayer cannot be copied.
@ Top
Align to top of symbol.
int renderingPass() const
Specifies the rendering pass in which this symbol layer should be rendered.
@ PropertyRandomSeed
Random number seed.
QgsFields fields() const
Fields of the layer.
bool hasActiveProperties() const override
Returns true if the collection has any active properties, or false if all properties within the colle...
@ VerticalAnchor
Vertical anchor point.
virtual void stopFeatureRender(const QgsFeature &feature, QgsRenderContext &context)
Called after the layer has been rendered for a particular feature.
@ HCenter
Align to horizontal center of symbol.
@ ColorWithAlpha
Color with alpha channel.
@ PropertyVerticalAnchor
Vertical anchor point.
@ PropertyGradientReference1Y
Gradient reference point 1 y.
void toSld(QDomDocument &doc, QDomElement &element, const QgsStringMap &props) const override
@ PropertySize
Symbol size.
QgsUnitTypes::RenderUnit mWidthUnit
double dxfWidth(const QgsDxfExport &e, QgsSymbolRenderContext &context) const override
Gets line width.
void copyPaintEffect(QgsSymbolLayer *destLayer) const
Copies paint effect of this layer to another symbol layer.
virtual void renderPolygonStroke(const QPolygonF &points, const QVector< QPolygonF > *rings, QgsSymbolRenderContext &context)
Renders the line symbol layer along the outline of polygon, using the given render context.
@ PropertyStrokeStyle
Stroke style (eg solid, dashed)
QgsUnitTypes::RenderUnit outputUnit() const override
Returns the units to use for sizes and widths within the symbol layer.
QgsProperty propertyFromMap(const QgsStringMap &map, const QString &baseName)
VerticalAnchorPoint verticalAnchorPoint() const
Returns the vertical anchor point for positioning the symbol.
@ CapStyle
Line cap style (eg round)
Definition for a property.
@ Bottom
Align to bottom of symbol.
float threshold() const
Gets the simplification threshold of the vector layer managed.
void setPaintEffect(QgsPaintEffect *effect)
Sets the current paint effect for the layer.
@ Left
Align to left side of symbol.
@ PropertyName
Name, eg shape name for simple markers.
Struct for storing maximum and minimum scales for measurements in map units.
@ PropertyPointCount
Point count.
QgsPaintEffect * paintEffect() const
Returns the current paint effect for the layer.
QSet< QString > referencedFields(const QgsExpressionContext &context=QgsExpressionContext(), bool ignoreContext=false) const override
Returns the set of any fields referenced by the active properties from the collection.
QgsPropertyCollection mDataDefinedProperties
@ PropertyStrokeWidth
Stroke width.
@ PropertyShapeburstIgnoreRings
Shapeburst ignore rings.
static QString encodePoint(QPointF point)
Encodes a QPointF to a string.
@ VCenter
Align to vertical center of symbol.
@ InteriorRingsOnly
Render the interior rings only.
const QgsVectorSimplifyMethod & vectorSimplifyMethod() const
Returns the simplification settings to use when rendering vector layers.
virtual QSet< QString > usedAttributes(const QgsRenderContext &context) const
Returns the set of attributes referenced by the layer.
@ Double0To1
Double value between 0-1 (inclusive)
@ PropertyLayerEnabled
Whether symbol layer is enabled.
@ PropertyOffsetAlongLine
Offset along line.
@ PropertyOffsetY
Vertical offset.
@ IntegerPositive
Positive integer values (including 0)
virtual Qt::BrushStyle dxfBrushStyle() const
Gets brush/fill style.
@ Size
1D size (eg marker radius, or square marker height/width)
QMap< QString, QString > QgsStringMap
QPointF mOffset
Marker offset.
virtual QgsSymbolLayerReferenceList masks() const
Returns masks defined by this symbol layer.
QList< QList< QPolygonF > > defaultPatchAsQPolygonF(QgsSymbol::SymbolType type, QSizeF size) const
Returns the default patch geometry for the given symbol type and size as a set of QPolygonF objects (...
void setDataDefinedProperties(const QgsPropertyCollection &collection)
Sets the symbol layer's property collection, used for data defined overrides.
@ PropertyGradientReference2X
Gradient reference point 2 x.
HorizontalAnchorPoint mHorizontalAnchorPoint
Horizontal anchor point.
QgsLineSymbolLayer(const QgsLineSymbolLayer &other)=delete
QgsLineSymbolLayer cannot be copied.
@ PropertyCoordinateMode
Gradient coordinate mode.
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.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
QList< QgsSymbolLayerReference > QgsSymbolLayerReferenceList
@ LineStyle
Line style (eg solid/dashed)
@ PropertyDistanceY
Vertical distance between points.
RenderRingFilter ringFilter() const
Returns the line symbol layer's ring filter, which controls which rings are rendered when the line sy...
@ PropertyDistanceX
Horizontal distance between points.
@ PropertyFile
Filename, eg for svg files.
@ PropertyCustomDash
Custom dash pattern.
Base class for visual effects which can be applied to QPicture drawings.
@ PropertyAngle
Symbol angle.
virtual void renderPoint(QPointF point, QgsSymbolRenderContext &context)=0
Renders a marker at the specified point.
@ RenderMetersInMapUnits
Meters value as Map units.
@ PropertyArrowType
Arrow type.
@ RenderUnknownUnit
Mixed or unknown units.
void setOutputUnit(QgsUnitTypes::RenderUnit unit) override
Sets the units to use for sizes and widths within the symbol layer.
@ AllRings
Render both exterior and interior rings.
virtual void stopRender(QgsSymbolRenderContext &context)=0
Called after a set of rendering operations has finished on the supplied render context.
@ PropertyShapeburstMaxDistance
Shapeburst fill from edge distance.
HorizontalAnchorPoint horizontalAnchorPoint() const
Returns the horizontal anchor point for positioning the symbol.
SymbolType type() const
Returns the symbol's type.
virtual void writeSldMarker(QDomDocument &doc, QDomElement &element, const QgsStringMap &props) const
Writes the symbol layer definition as a SLD XML element.
void restoreOldDataDefinedProperties(const QgsStringMap &stringMap)
Restores older data defined properties from string map.
Property
Data definable properties.
virtual QColor dxfColor(QgsSymbolRenderContext &context) const
Gets color.
static QPointF _rotatedOffset(QPointF offset, double angle)
Adjusts a marker offset to account for rotation.
QPointF offset() const
Returns the marker's offset, which is the horizontal and vertical displacement which the rendered mar...
SimplifyHints simplifyHints() const
Gets the simplification hints of the vector layer managed.
QgsSymbol::SymbolType type() const
@ PropertyGradientReference1X
Gradient reference point 1 x.
@ RenderSymbolPreview
The render is for a symbol preview only and map based properties may not be available,...
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
void setProperty(int key, const QgsProperty &property)
Adds a property to the collection and takes ownership of it.
@ PropertyOpacity
Opacity.
QgsRenderContext & renderContext()
Returns a reference to the context's render context.
double symbologyScale() const
Returns the reference scale for output.
SymbolType
Type of the symbol.
@ PropertyHeight
Symbol height.
virtual void startRender(QgsSymbolRenderContext &context)=0
Called before a set of rendering operations commences on the supplied render context.
QgsUnitTypes::RenderUnit widthUnit() const
Returns the units for the line's width.
@ ExteriorRingOnly
Render the exterior ring only.
@ PropertyOffsetX
Horizontal offset.
bool enabled() const
Returns whether the effect is enabled.
bool isActive(int key) const override
Returns true if the collection contains an active property with the specified key.
virtual double dxfWidth(const QgsDxfExport &e, QgsSymbolRenderContext &context) const
Gets line width.
QgsMapUnitScale mOffsetMapUnitScale
Offset map unit scale.
@ PropertyDisplacementY
Vertical displacement.
double ANALYSIS_EXPORT angle(QgsPoint *p1, QgsPoint *p2, QgsPoint *p3, QgsPoint *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
void stopRender(QgsSymbolRenderContext &context) override
Called after a set of rendering operations has finished on the supplied render context.
void copyDataDefinedProperties(QgsSymbolLayer *destLayer) const
Copies all data defined properties of this layer to another symbol layer.
@ PropertyPlacement
Line marker placement.
@ PropertyPreserveAspectRatio
Preserve aspect ratio between width and height.
@ StrokeWidth
Line stroke width.
@ PropertyLineAngle
Line angle, or angle of hash lines for hash line symbols.
void setMapUnitScale(const QgsMapUnitScale &scale) override
double angle() const
Returns the rotation angle for the marker, in degrees clockwise from north.
@ PropertySecondaryColor
Secondary color (eg for gradient fills)
virtual QColor dxfBrushColor(QgsSymbolRenderContext &context) const
Gets brush/fill color.
static bool isGeneralizableByDeviceBoundingBox(const QgsRectangle &envelope, float mapToPixelTol=1.0f)
Returns whether the device-envelope can be replaced by its BBOX when is applied the specified toleran...
virtual void setDataDefinedProperty(Property key, const QgsProperty &property)
Sets a data defined property for the layer.
@ PropertyJoinStyle
Line join style.
Flags flags() const
Returns combination of flags used for rendering.
@ PropertyWidth
Symbol width.
@ DoublePositive
Positive double value (including 0)