QGIS API Documentation
3.16.0-Hannover (43b64b13f3)
|
Go to the documentation of this file.
15 #ifndef QGSSYMBOLLAYER_H
16 #define QGSSYMBOLLAYER_H
18 #define DEG2RAD(x) ((x)*M_PI/180)
19 #define DEFAULT_SCALE_METHOD QgsSymbol::ScaleDiameter
21 #include "qgis_core.h"
27 #include <QDomDocument>
28 #include <QDomElement>
29 #include <QPainterPath>
61 switch ( sipCpp->type() )
64 if ( sipCpp->layerType() ==
"EllipseMarker" )
65 sipType = sipType_QgsEllipseSymbolLayer;
66 else if ( sipCpp->layerType() ==
"FontMarker" )
67 sipType = sipType_QgsFontMarkerSymbolLayer;
68 else if ( sipCpp->layerType() ==
"SimpleMarker" )
69 sipType = sipType_QgsSimpleMarkerSymbolLayer;
70 else if ( sipCpp->layerType() ==
"FilledMarker" )
71 sipType = sipType_QgsFilledMarkerSymbolLayer;
72 else if ( sipCpp->layerType() ==
"SvgMarker" )
73 sipType = sipType_QgsSvgMarkerSymbolLayer;
74 else if ( sipCpp->layerType() ==
"RasterMarker" )
75 sipType = sipType_QgsRasterMarkerSymbolLayer;
76 else if ( sipCpp->layerType() ==
"VectorField" )
77 sipType = sipType_QgsVectorFieldSymbolLayer;
78 else if ( sipCpp->layerType() ==
"MaskMarker" )
79 sipType = sipType_QgsMaskMarkerSymbolLayer;
81 sipType = sipType_QgsMarkerSymbolLayer;
85 if ( sipCpp->layerType() ==
"MarkerLine" )
86 sipType = sipType_QgsMarkerLineSymbolLayer;
87 else if ( sipCpp->layerType() ==
"SimpleLine" )
88 sipType = sipType_QgsSimpleLineSymbolLayer;
89 else if ( sipCpp->layerType() ==
"ArrowLine" )
90 sipType = sipType_QgsArrowSymbolLayer;
92 sipType = sipType_QgsLineSymbolLayer;
96 if ( sipCpp->layerType() ==
"SimpleFill" )
97 sipType = sipType_QgsSimpleFillSymbolLayer;
98 else if ( sipCpp->layerType() ==
"LinePatternFill" )
99 sipType = sipType_QgsLinePatternFillSymbolLayer;
100 else if ( sipCpp->layerType() ==
"PointPatternFill" )
101 sipType = sipType_QgsPointPatternFillSymbolLayer;
102 else if ( sipCpp->layerType() ==
"SVGFill" )
103 sipType = sipType_QgsSVGFillSymbolLayer;
104 else if ( sipCpp->layerType() ==
"RasterFill" )
105 sipType = sipType_QgsRasterFillSymbolLayer;
106 else if ( sipCpp->layerType() ==
"CentroidFill" )
107 sipType = sipType_QgsCentroidFillSymbolLayer;
108 else if ( sipCpp->layerType() ==
"GradientFill" )
109 sipType = sipType_QgsGradientFillSymbolLayer;
110 else if ( sipCpp->layerType() ==
"ShapeburstFill" )
111 sipType = sipType_QgsShapeburstFillSymbolLayer;
112 else if ( sipCpp->layerType() ==
"RandomMarkerFill" )
113 sipType = sipType_QgsRandomMarkerFillSymbolLayer;
115 sipType = sipType_QgsFillSymbolLayer;
119 sipType = sipType_QgsGeometryGeneratorSymbolLayer;
227 virtual QColor
color()
const {
return mColor; }
232 virtual void setColor(
const QColor &color ) { mColor = color; }
337 { Q_UNUSED( props ) element.appendChild( doc.createComment( QStringLiteral(
"SymbolLayerV2 %1 not implemented yet" ).arg( layerType() ) ) ); }
339 virtual QString
ogrFeatureStyle(
double mmScaleFactor,
double mapUnitScaleFactor )
const { Q_UNUSED( mmScaleFactor ) Q_UNUSED( mapUnitScaleFactor );
return QString(); }
361 virtual bool isCompatibleWithSymbol(
QgsSymbol *symbol )
const;
404 void setRenderingPass(
int renderingPass );
412 int renderingPass()
const;
418 virtual QSet<QString> usedAttributes(
const QgsRenderContext &context )
const;
427 virtual void setDataDefinedProperty( Property key,
const QgsProperty &property );
430 virtual bool writeDxf(
QgsDxfExport &e,
double mmMapUnitScaleFactor,
const QString &layerName,
QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) )
const;
448 virtual Qt::PenStyle dxfPenStyle()
const;
454 virtual Qt::BrushStyle dxfBrushStyle()
const;
508 virtual bool hasDataDefinedProperties()
const;
524 bool mEnabled =
true;
526 bool mLocked =
false;
528 int mRenderingPass = 0;
537 static const bool SELECTION_IS_OPAQUE =
true;
539 static const bool SELECT_FILL_BORDER =
false;
541 static const bool SELECT_FILL_STYLE =
false;
547 void restoreOldDataDefinedProperties(
const QgsStringMap &stringMap );
553 void copyDataDefinedProperties(
QgsSymbolLayer *destLayer )
const;
563 static void initPropertyDefinitions();
633 double angle()
const {
return mAngle; }
653 virtual void setSize(
double size ) { mSize = size; }
661 double size()
const {
return mSize; }
727 QPointF
offset()
const {
return mOffset; }
797 void toSld( QDomDocument &doc, QDomElement &element,
const QgsStringMap &props )
const override;
806 { Q_UNUSED( props ) element.appendChild( doc.createComment( QStringLiteral(
"QgsMarkerSymbolLayer %1 not implemented yet" ).arg(
layerType() ) ) ); }
848 void markerOffset(
QgsSymbolRenderContext &context,
double width,
double height,
double &offsetX,
double &offsetY )
const SIP_PYNAME( markerOffsetWithWidthAndHeight );
853 double &offsetX,
double &offsetY,
862 static QPointF _rotatedOffset( QPointF offset,
double angle );
867 double mLineAngle = 0;
939 virtual void renderPolygonStroke(
const QPolygonF &points,
const QVector<QPolygonF> *rings,
QgsSymbolRenderContext &context );
954 virtual void setWidth(
double width ) { mWidth = width; }
965 virtual double width()
const {
return mWidth; }
988 double offset()
const {
return mOffset; }
1062 RenderRingFilter ringFilter()
const;
1123 void _renderPolygon( QPainter *p,
const QPolygonF &points,
const QVector<QPolygonF> *rings,
QgsSymbolRenderContext &context );
1125 double mAngle = 0.0;
@ PropertyDashPatternOffset
Dash pattern offset.
@ PropertyArrowHeadType
Arrow head type.
void setEnabled(bool enabled)
Sets whether symbol layer is enabled and should be drawn.
virtual QgsMapUnitScale mapUnitScale() const
bool enabled() const
Returns true if symbol layer is enabled and will be drawn.
@ Right
Align to right side of symbol.
@ PropertyHorizontalAnchor
Horizontal anchor point.
void setSizeUnit(QgsUnitTypes::RenderUnit unit)
Sets the units for the symbol's size.
virtual bool setSubSymbol(QgsSymbol *symbol)
Sets layer's subsymbol. takes ownership of the passed symbol.
void setWidthUnit(QgsUnitTypes::RenderUnit unit)
Sets the units for the line's width.
@ PropertyBlurRadius
Shapeburst blur radius.
void setHorizontalAnchorPoint(HorizontalAnchorPoint h)
Sets the horizontal anchor point for positioning the symbol.
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.
@ PropertyShapeburstUseWholeShape
Shapeburst use whole shape.
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.
const QgsMapUnitScale & widthMapUnitScale() const
@ PropertyAverageAngleLength
Length to average symbol angles over.
virtual double width() const
Returns the estimated width for the line symbol layer.
@ PropertyArrowStartWidth
Arrow tail start width.
QgsMarkerSymbolLayer(const QgsMarkerSymbolLayer &other)=delete
QgsMarkerSymbolLayer cannot be copied.
QgsSymbol::SymbolType mType
@ PropertyFontFamily
Font family.
virtual void setColor(const QColor &color)
The fill color.
@ PropertyFillStyle
Fill style (eg solid, dots)
@ PropertyGradientReference2Y
Gradient reference point 2 y.
virtual QColor color() const
The fill color.
@ PropertyFillColor
Fill color.
virtual void setWidth(double width)
Sets the width of the line symbol layer.
QgsMapUnitScale mWidthMapUnitScale
void setAngle(double angle)
Sets the rotation angle for the marker.
Container of fields for a vector layer.
std::unique_ptr< QgsPaintEffect > mPaintEffect
QgsSymbol::ScaleMethod scaleMethod() const
Returns the method to use for scaling the marker's size.
@ PropertyGradientReference1IsCentroid
Gradient reference point 1 is centroid.
QgsSymbolLayer(const QgsSymbolLayer &other)=delete
QgsSymbolLayer cannot be copied.
@ PropertyDisplacementX
Horizontal displacement.
QgsUnitTypes::RenderUnit offsetUnit() const
Returns the units for the line's offset.
@ ScaleDiameter
Calculate scale by the diameter.
Contains information about the context of a rendering operation.
@ RenderMillimeters
Millimeters.
Abstract base class for marker symbol layers.
virtual void drawPreviewIcon(QgsSymbolRenderContext &context, QSize size)=0
@ PropertyInterval
Line marker interval.
virtual ~QgsSymbolLayer()
virtual double estimateMaxBleed(const QgsRenderContext &context) const
Returns the estimated maximum distance which the layer style will bleed outside the drawn shape when ...
@ PropertyCapStyle
Line cap style.
Abstract base class for all rendered symbols.
@ PropertyStrokeColor
Stroke color.
virtual QString ogrFeatureStyle(double mmScaleFactor, double mapUnitScaleFactor) const
QMap< QString, QString > QgsStringMap
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,...
void setOffset(double offset)
Sets the line's offset.
virtual QgsStringMap properties() const =0
Should be reimplemented by subclasses to return a string map that contains the configuration informat...
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale for the line's offset.
@ PropertyFontStyle
Font style.
QgsUnitTypes::RenderUnit sizeUnit() const
Returns the units for the symbol's size.
@ PropertyArrowHeadLength
Arrow head length.
@ PropertyGradientSpread
Gradient spread mode.
HorizontalAnchorPoint
Symbol horizontal anchor points.
virtual void setFillColor(const QColor &color)
Set fill color.
virtual QgsSymbolLayer * clone() const =0
Shall be reimplemented by subclasses to create a deep copy of the instance.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
QMap< int, QgsPropertyDefinition > QgsPropertiesDefinition
Definition of available properties.
@ PropertyOffset
Symbol offset.
@ PropertyCharacter
Character, eg for font marker symbol layers.
@ PropertyGradientType
Gradient fill type.
@ PropertyArrowWidth
Arrow tail width.
QgsFillSymbolLayer(const QgsFillSymbolLayer &other)=delete
QgsFillSymbolLayer cannot be copied.
@ Top
Align to top of symbol.
@ PropertyRandomSeed
Random number seed.
@ HCenter
Align to horizontal center of symbol.
@ PropertyVerticalAnchor
Vertical anchor point.
void setOffsetUnit(QgsUnitTypes::RenderUnit unit)
Sets the unit for the line's offset.
@ PropertyGradientReference1Y
Gradient reference point 1 y.
const QgsPropertyCollection & dataDefinedProperties() const
Returns a reference to the symbol layer's property collection, used for data defined overrides.
@ PropertyStrokeStyle
Stroke style (eg solid, dashed)
virtual void setOutputUnit(QgsUnitTypes::RenderUnit unit)
Sets the units to use for sizes and widths within the symbol layer.
VerticalAnchorPoint verticalAnchorPoint() const
Returns the vertical anchor point for positioning the symbol.
@ Bottom
Align to bottom of symbol.
@ PropertyDensityArea
Density area.
@ Left
Align to left side of symbol.
@ PropertyName
Name, eg shape name for simple markers.
void setOffset(QPointF offset)
Sets the marker's offset, which is the horizontal and vertical displacement which the rendered marker...
Struct for storing maximum and minimum scales for measurements in map units.
@ PropertyPointCount
Point count.
QgsPropertyCollection mDataDefinedProperties
@ PropertyStrokeWidth
Stroke width.
void setOffsetUnit(QgsUnitTypes::RenderUnit unit)
Sets the units for the symbol's offset.
@ PropertyShapeburstIgnoreRings
Shapeburst ignore rings.
virtual QColor fillColor() const
Gets fill color.
@ VCenter
Align to vertical center of symbol.
void setLineAngle(double lineAngle)
Sets the line angle modification for the symbol's angle.
virtual QgsSymbol * subSymbol()
Returns the symbol's sub symbol, if present.
@ InteriorRingsOnly
Render the interior rings only.
@ PropertyLayerEnabled
Whether symbol layer is enabled.
@ PropertyOffsetY
Vertical offset.
@ PropertyOffsetAlongLine
Offset along line.
virtual QgsUnitTypes::RenderUnit outputUnit() const
Returns the units to use for sizes and widths within the symbol layer.
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
QgsMarkerSymbolLayer & operator=(const QgsMarkerSymbolLayer &other)=delete
QgsMarkerSymbolLayer cannot be copied.
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale for the symbol's offset.
QMap< QString, QString > QgsStringMap
QPointF mOffset
Marker offset.
void setDataDefinedProperties(const QgsPropertyCollection &collection)
Sets the symbol layer's property collection, used for data defined overrides.
@ PropertyGradientReference2X
Gradient reference point 2 x.
const QgsMapUnitScale & offsetMapUnitScale() const
Returns the map unit scale for the line's offset.
QgsLineSymbolLayer(const QgsLineSymbolLayer &other)=delete
QgsLineSymbolLayer cannot be copied.
@ PropertyCoordinateMode
Gradient coordinate mode.
virtual void setStrokeColor(const QColor &color)
Set stroke color.
QList< QgsSymbolLayerReference > QgsSymbolLayerReferenceList
QgsFillSymbolLayer & operator=(const QgsFillSymbolLayer &other)=delete
QgsFillSymbolLayer cannot be copied.
@ PropertyDistanceY
Vertical distance between points.
QgsMapUnitScale mOffsetMapUnitScale
@ PropertyDistanceX
Horizontal distance between points.
QgsSymbolLayer & operator=(const QgsSymbolLayer &other)=delete
QgsSymbolLayer cannot be copied.
@ 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.
void setLocked(bool locked)
@ PropertyArrowType
Arrow type.
@ RenderUnknownUnit
Mixed or unknown units.
@ 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.
virtual void writeSldMarker(QDomDocument &doc, QDomElement &element, const QgsStringMap &props) const
Writes the symbol layer definition as a SLD XML element.
virtual void setMapUnitScale(const QgsMapUnitScale &scale)
Property
Data definable properties.
virtual QRectF bounds(QPointF point, QgsSymbolRenderContext &context)=0
Returns the approximate bounding box of the marker symbol layer, taking into account any data defined...
virtual void setSize(double size)
Sets the symbol size.
QPointF offset() const
Returns the marker's offset, which is the horizontal and vertical displacement which the rendered mar...
void setSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale for the symbol's size.
void setVerticalAnchorPoint(VerticalAnchorPoint v)
Sets the vertical anchor point for positioning the symbol.
QgsSymbol::SymbolType type() const
virtual QString layerType() const =0
Returns a string that represents this layer type.
@ PropertyGradientReference1X
Gradient reference point 1 x.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
@ PropertyOpacity
Opacity.
void setWidthMapUnitScale(const QgsMapUnitScale &scale)
double offset() const
Returns the line's offset.
const QgsMapUnitScale & offsetMapUnitScale() const
Returns the map unit scale for the symbol's offset.
SymbolType
Type of the symbol.
@ PropertyHeight
Symbol height.
virtual void toSld(QDomDocument &doc, QDomElement &element, const QgsStringMap &props) const
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.
Class for parsing and evaluation of expressions (formerly called "search strings").
virtual double dxfWidth(const QgsDxfExport &e, QgsSymbolRenderContext &context) const
Gets line width.
QgsMapUnitScale mOffsetMapUnitScale
Offset map unit scale.
@ PropertyDisplacementY
Vertical displacement.
QgsLineSymbolLayer & operator=(const QgsLineSymbolLayer &other)=delete
QgsLineSymbolLayer cannot be copied.
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 setAngle(double angle)
@ PropertyPlacement
Line marker placement.
@ PropertyPreserveAspectRatio
Preserve aspect ratio between width and height.
virtual QColor strokeColor() const
Gets stroke color.
@ PropertyLineAngle
Line angle, or angle of hash lines for hash line symbols.
QgsUnitTypes::RenderUnit offsetUnit() const
Returns the units for the symbol's offset.
double angle() const
Returns the rotation angle for the marker, in degrees clockwise from north.
@ PropertySecondaryColor
Secondary color (eg for gradient fills)
void setScaleMethod(QgsSymbol::ScaleMethod scaleMethod)
Sets the method to use for scaling the marker's size.
@ PropertyJoinStyle
Line join style.
@ PropertyWidth
Symbol width.
const QgsMapUnitScale & sizeMapUnitScale() const
Returns the map unit scale for the symbol's size.