QGIS API Documentation 3.39.0-Master (bca3cdb6021)
|
A marker symbol type, for rendering Point and MultiPoint geometries. More...
#include <qgsmarkersymbol.h>
Public Member Functions | |
QgsMarkerSymbol (const QgsSymbolLayerList &layers=QgsSymbolLayerList()) | |
Constructor for QgsMarkerSymbol, with the specified list of initial symbol layers. | |
double | angle () const |
Returns the marker angle for the whole symbol. | |
QRectF | bounds (QPointF point, QgsRenderContext &context, const QgsFeature &feature=QgsFeature()) const |
Returns the approximate bounding box of the marker symbol, which includes the bounding box of all symbol layers for the symbol. | |
QgsMarkerSymbol * | clone () const override |
Returns a deep copy of this symbol. | |
QgsProperty | dataDefinedAngle () const |
Returns data defined angle for whole symbol (including all symbol layers). | |
QgsProperty | dataDefinedSize () const |
Returns data defined size for whole symbol (including all symbol layers). | |
void | renderPoint (QPointF point, const QgsFeature *f, QgsRenderContext &context, int layer=-1, bool selected=false) |
Renders the symbol at the specified point, using the given render context. | |
Qgis::ScaleMethod | scaleMethod () const |
Returns the method to use for scaling the marker's size. | |
void | setAngle (double symbolAngle) const |
Sets the angle for the whole symbol. | |
void | setDataDefinedAngle (const QgsProperty &property) |
Set data defined angle for whole symbol (including all symbol layers). | |
void | setDataDefinedSize (const QgsProperty &property) const |
Set data defined size for whole symbol (including all symbol layers). | |
void | setLineAngle (double lineAngle) const |
Sets the line angle modification for the symbol's angle. | |
void | setScaleMethod (Qgis::ScaleMethod scaleMethod) const |
Sets the method to use for scaling the marker's size. | |
void | setSize (double size) const |
Sets the size for the whole symbol. | |
void | setSizeMapUnitScale (const QgsMapUnitScale &scale) const |
Sets the size map unit scale for the whole symbol (including all symbol layers). | |
void | setSizeUnit (Qgis::RenderUnit unit) const |
Sets the size units for the whole symbol (including all symbol layers). | |
double | size () const |
Returns the estimated size for the whole symbol, which is the maximum size of all marker symbol layers in the symbol. | |
double | size (const QgsRenderContext &context) const |
Returns the symbol size, in painter units. | |
QgsMapUnitScale | sizeMapUnitScale () const |
Returns the size map unit scale for the whole symbol. | |
Qgis::RenderUnit | sizeUnit () const |
Returns the size units for the whole symbol (including all symbol layers). | |
Public Member Functions inherited from QgsSymbol | |
virtual | ~QgsSymbol () |
QgsSymbolAnimationSettings & | animationSettings () |
Returns a reference to the symbol animation settings. | |
const QgsSymbolAnimationSettings & | animationSettings () const |
Returns a reference to the symbol animation settings. | |
bool | appendSymbolLayer (QgsSymbolLayer *layer) |
Appends a symbol layer at the end of the current symbol layer list. | |
QImage | asImage (QSize size, QgsRenderContext *customContext=nullptr) |
Returns an image of the symbol at the specified size. | |
Q_DECL_DEPRECATED QImage | bigSymbolPreviewImage (QgsExpressionContext *expressionContext=nullptr, int flags=static_cast< int >(Qgis::SymbolPreviewFlag::FlagIncludeCrosshairsForMarkerSymbols)) |
QImage | bigSymbolPreviewImage (QgsExpressionContext *expressionContext=nullptr, Qgis::SymbolPreviewFlags flags=Qgis::SymbolPreviewFlag::FlagIncludeCrosshairsForMarkerSymbols, const QgsScreenProperties &screen=QgsScreenProperties()) |
Returns a large (roughly 100x100 pixel) preview image for the symbol. | |
QgsSymbolBufferSettings * | bufferSettings () |
Returns the symbol buffer settings, which control an optional "halo" effect around the symbol. | |
const QgsSymbolBufferSettings * | bufferSettings () const |
Returns the symbol buffer settings, which control an optional "halo" effect around the symbol. | |
bool | canCauseArtifactsBetweenAdjacentTiles () const |
Returns true if the symbol rendering can cause visible artifacts across a single feature when the feature is rendered as a series of adjacent map tiles each containing a portion of the feature's geometry. | |
bool | changeSymbolLayer (int index, QgsSymbolLayer *layer) |
Deletes the current layer at the specified index and replaces it with layer. | |
bool | clipFeaturesToExtent () const |
Returns whether features drawn by the symbol will be clipped to the render context's extent. | |
QColor | color () const |
Returns the symbol's color. | |
QgsPropertyCollection & | dataDefinedProperties () |
Returns a reference to the symbol's property collection, used for data defined overrides. | |
const QgsPropertyCollection & | dataDefinedProperties () const |
Returns a reference to the symbol's property collection, used for data defined overrides. | |
bool | deleteSymbolLayer (int index) |
Removes and deletes the symbol layer at the specified index. | |
void | drawPreviewIcon (QPainter *painter, QSize size, QgsRenderContext *customContext=nullptr, bool selected=false, const QgsExpressionContext *expressionContext=nullptr, const QgsLegendPatchShape *patchShape=nullptr, const QgsScreenProperties &screen=QgsScreenProperties()) |
Draws an icon of the symbol that occupies an area given by size using the specified painter. | |
QString | dump () const |
Returns a string dump of the symbol's properties. | |
void | exportImage (const QString &path, const QString &format, QSize size) |
Export the symbol as an image format, to the specified path and with the given size. | |
Qgis::SymbolFlags | flags () const |
Returns flags for the symbol. | |
bool | forceRHR () const |
Returns true if polygon features drawn by the symbol will be reoriented to follow the standard right-hand-rule orientation, in which the area that is bounded by the polygon is to the right of the boundary. | |
bool | hasDataDefinedProperties () const |
Returns whether the symbol utilizes any data defined properties. | |
bool | insertSymbolLayer (int index, QgsSymbolLayer *layer) |
Inserts a symbol layer to specified index. | |
Q_DECL_DEPRECATED const QgsVectorLayer * | layer () const |
QgsMapUnitScale | mapUnitScale () const |
Returns the map unit scale for the symbol. | |
qreal | opacity () const |
Returns the opacity for the symbol. | |
Qgis::RenderUnit | outputUnit () const |
Returns the units to use for sizes and widths within the symbol. | |
void | renderFeature (const QgsFeature &feature, QgsRenderContext &context, int layer=-1, bool selected=false, bool drawVertexMarker=false, Qgis::VertexMarkerType currentVertexMarkerType=Qgis::VertexMarkerType::SemiTransparentCircle, double currentVertexMarkerSize=0.0) |
Render a feature. | |
Qgis::SymbolRenderHints | renderHints () const |
Returns the rendering hint flags for the symbol. | |
void | setAnimationSettings (const QgsSymbolAnimationSettings &settings) |
Sets a the symbol animation settings. | |
void | setBufferSettings (QgsSymbolBufferSettings *settings) |
Sets a the symbol buffer settings, which control an optional "halo" effect around the symbol. | |
void | setClipFeaturesToExtent (bool clipFeaturesToExtent) |
Sets whether features drawn by the symbol should be clipped to the render context's extent. | |
void | setColor (const QColor &color) const |
Sets the color for the symbol. | |
void | setDataDefinedProperties (const QgsPropertyCollection &collection) |
Sets the symbol's property collection, used for data defined overrides. | |
void | setDataDefinedProperty (Property key, const QgsProperty &property) |
Sets a data defined property for the symbol. | |
void | setFlags (Qgis::SymbolFlags flags) |
Sets flags for the symbol. | |
void | setForceRHR (bool force) |
Sets whether polygon features drawn by the symbol should be reoriented to follow the standard right-hand-rule orientation, in which the area that is bounded by the polygon is to the right of the boundary. | |
Q_DECL_DEPRECATED void | setLayer (const QgsVectorLayer *layer) |
void | setMapUnitScale (const QgsMapUnitScale &scale) const |
Sets the map unit scale for the symbol. | |
void | setOpacity (qreal opacity) |
Sets the opacity for the symbol. | |
void | setOutputUnit (Qgis::RenderUnit unit) const |
Sets the units to use for sizes and widths within the symbol. | |
void | setRenderHints (Qgis::SymbolRenderHints hints) |
Sets rendering hint flags for the symbol. | |
void | startFeatureRender (const QgsFeature &feature, QgsRenderContext &context, int layer=-1) |
Called before symbol layers will be rendered for a particular feature. | |
void | startRender (QgsRenderContext &context, const QgsFields &fields=QgsFields()) |
Begins the rendering process for the symbol. | |
void | stopFeatureRender (const QgsFeature &feature, QgsRenderContext &context, int layer=-1) |
Called after symbol layers have been rendered for a particular feature. | |
void | stopRender (QgsRenderContext &context) |
Ends the rendering process. | |
QgsSymbolLayer * | symbolLayer (int layer) |
Returns the symbol layer at the specified index. | |
const QgsSymbolLayer * | symbolLayer (int layer) const |
Returns the symbol layer at the specified index, const variant. | |
int | symbolLayerCount () const |
Returns the total number of symbol layers contained in the symbol. | |
QgsSymbolLayerList | symbolLayers () const |
Returns the list of symbol layers contained in the symbol. | |
QgsSymbolRenderContext * | symbolRenderContext () |
Returns the symbol render context. | |
QgsSymbolLayer * | takeSymbolLayer (int index) |
Removes a symbol layer from the list and returns a pointer to it. | |
void | toSld (QDomDocument &doc, QDomElement &element, QVariantMap props) const |
Converts the symbol to a SLD representation. | |
Qgis::SymbolType | type () const |
Returns the symbol's type. | |
QSet< QString > | usedAttributes (const QgsRenderContext &context) const |
Returns a list of attributes required to render this feature. | |
bool | usesMapUnits () const |
Returns true if the symbol has any components which use map unit based sizes. | |
Static Public Member Functions | |
static QgsMarkerSymbol * | createSimple (const QVariantMap &properties) |
Create a marker symbol with one symbol layer: SimpleMarker with specified properties. | |
Static Public Member Functions inherited from QgsSymbol | |
static QgsSymbol * | defaultSymbol (Qgis::GeometryType geomType) |
Returns a new default symbol for the specified geometry type. | |
static const QgsPropertiesDefinition & | propertyDefinitions () |
Returns the symbol property definitions. | |
static Qgis::SymbolType | symbolTypeForGeometryType (Qgis::GeometryType type) |
Returns the default symbol type required for the specified geometry type. | |
static QString | symbolTypeToString (Qgis::SymbolType type) |
Returns a translated string version of the specified symbol type. | |
Additional Inherited Members | |
Public Types inherited from QgsSymbol | |
enum class | Property : int { Opacity } |
Data definable properties. More... | |
Protected Member Functions inherited from QgsSymbol | |
QgsSymbol (Qgis::SymbolType type, const QgsSymbolLayerList &layers) | |
Constructor for a QgsSymbol of the specified type. | |
QgsSymbolLayerList | cloneLayers () const |
Retrieve a cloned list of all layers that make up this symbol. | |
void | copyCommonProperties (const QgsSymbol *other) |
Copies common properties from an other symbol to this symbol. | |
void | renderUsingLayer (QgsSymbolLayer *layer, QgsSymbolRenderContext &context, Qgis::GeometryType geometryType=Qgis::GeometryType::Unknown, const QPolygonF *points=nullptr, const QVector< QPolygonF > *rings=nullptr) |
Renders a context using a particular symbol layer without passing in a geometry. | |
void | renderVertexMarker (QPointF pt, QgsRenderContext &context, Qgis::VertexMarkerType currentVertexMarkerType, double currentVertexMarkerSize) |
Render editing vertex marker at specified point. | |
Static Protected Member Functions inherited from QgsSymbol | |
static QPolygonF | _getLineString (QgsRenderContext &context, const QgsCurve &curve, bool clipToExtent=true) |
Creates a line string in screen coordinates from a QgsCurve in map coordinates. | |
static QPointF | _getPoint (QgsRenderContext &context, const QgsPoint &point) |
Creates a point in screen coordinates from a QgsPoint in map coordinates. | |
static void | _getPolygon (QPolygonF &pts, QVector< QPolygonF > &holes, QgsRenderContext &context, const QgsPolygon &polygon, bool clipToExtent=true, bool correctRingOrientation=false) |
Creates a polygon in screen coordinates from a QgsPolygonXYin map coordinates. | |
static QPolygonF | _getPolygonRing (QgsRenderContext &context, const QgsCurve &curve, bool clipToExtent, bool isExteriorRing=false, bool correctRingOrientation=false) |
Creates a polygon ring in screen coordinates from a QgsCurve in map coordinates. | |
Protected Attributes inherited from QgsSymbol | |
QgsSymbolAnimationSettings | mAnimationSettings |
std::unique_ptr< QgsSymbolBufferSettings > | mBufferSettings |
bool | mClipFeaturesToExtent = true |
bool | mForceRHR = false |
Q_DECL_DEPRECATED const QgsVectorLayer * | mLayer = nullptr |
QgsSymbolLayerList | mLayers |
qreal | mOpacity = 1.0 |
Symbol opacity (in the range 0 - 1) | |
Qgis::SymbolRenderHints | mRenderHints |
Qgis::SymbolFlags | mSymbolFlags = Qgis::SymbolFlags() |
Symbol flags. | |
Qgis::SymbolType | mType |
A marker symbol type, for rendering Point and MultiPoint geometries.
Definition at line 30 of file qgsmarkersymbol.h.
QgsMarkerSymbol::QgsMarkerSymbol | ( | const QgsSymbolLayerList & | layers = QgsSymbolLayerList() | ) |
Constructor for QgsMarkerSymbol, with the specified list of initial symbol layers.
Ownership of the layers are transferred to the symbol.
Definition at line 36 of file qgsmarkersymbol.cpp.
double QgsMarkerSymbol::angle | ( | ) | const |
Returns the marker angle for the whole symbol.
Note that for symbols with multiple symbol layers, this will correspond just to the angle of the first symbol layer.
Definition at line 56 of file qgsmarkersymbol.cpp.
QRectF QgsMarkerSymbol::bounds | ( | QPointF | point, |
QgsRenderContext & | context, | ||
const QgsFeature & | feature = QgsFeature() |
||
) | const |
Returns the approximate bounding box of the marker symbol, which includes the bounding box of all symbol layers for the symbol.
It is recommended to use this method only between startRender() and stopRender() calls, or data defined rotation and offset will not be correctly calculated.
point | location of rendered point in painter units |
context | render context |
feature | feature being rendered at point (optional). If not specified, the bounds calculation will not include data defined parameters such as offset and rotation |
Definition at line 586 of file qgsmarkersymbol.cpp.
|
overridevirtual |
Returns a deep copy of this symbol.
Ownership is transferred to the caller.
Implements QgsSymbol.
Definition at line 610 of file qgsmarkersymbol.cpp.
|
static |
Create a marker symbol with one symbol layer: SimpleMarker with specified properties.
This is a convenience method for easier creation of marker symbols.
Definition at line 25 of file qgsmarkersymbol.cpp.
QgsProperty QgsMarkerSymbol::dataDefinedAngle | ( | ) | const |
Returns data defined angle for whole symbol (including all symbol layers).
Definition at line 109 of file qgsmarkersymbol.cpp.
QgsProperty QgsMarkerSymbol::dataDefinedSize | ( | ) | const |
Returns data defined size for whole symbol (including all symbol layers).
Definition at line 346 of file qgsmarkersymbol.cpp.
void QgsMarkerSymbol::renderPoint | ( | QPointF | point, |
const QgsFeature * | f, | ||
QgsRenderContext & | context, | ||
int | layer = -1 , |
||
bool | selected = false |
||
) |
Renders the symbol at the specified point, using the given render context.
The f argument is used to pass the feature currently being rendered (when available).
If only a single symbol layer from the symbol should be rendered, it should be specified in the layer argument. A layer of -1 indicates that all symbol layers should be rendered.
If selected is true
then the symbol will be drawn using the "selected feature" style and colors instead of the symbol's normal style.
Definition at line 450 of file qgsmarkersymbol.cpp.
Qgis::ScaleMethod QgsMarkerSymbol::scaleMethod | ( | ) | const |
Returns the method to use for scaling the marker's size.
Definition at line 414 of file qgsmarkersymbol.cpp.
void QgsMarkerSymbol::setAngle | ( | double | symbolAngle | ) | const |
Sets the angle for the whole symbol.
Individual symbol layer sizes will be rotated to maintain their current relative angle to the whole symbol angle.
symbolAngle | new symbol angle |
Definition at line 43 of file qgsmarkersymbol.cpp.
void QgsMarkerSymbol::setDataDefinedAngle | ( | const QgsProperty & | property | ) |
Set data defined angle for whole symbol (including all symbol layers).
Definition at line 80 of file qgsmarkersymbol.cpp.
void QgsMarkerSymbol::setDataDefinedSize | ( | const QgsProperty & | property | ) | const |
Set data defined size for whole symbol (including all symbol layers).
Definition at line 309 of file qgsmarkersymbol.cpp.
void QgsMarkerSymbol::setLineAngle | ( | double | lineAngle | ) | const |
Sets the line angle modification for the symbol's angle.
This angle is added to the marker's rotation and data defined rotation before rendering the symbol, and is usually used for orienting symbols to match a line's angle.
lineAngle | Angle in degrees, valid values are between 0 and 360 |
Definition at line 68 of file qgsmarkersymbol.cpp.
void QgsMarkerSymbol::setScaleMethod | ( | Qgis::ScaleMethod | scaleMethod | ) | const |
Sets the method to use for scaling the marker's size.
scaleMethod | scale method |
Definition at line 402 of file qgsmarkersymbol.cpp.
void QgsMarkerSymbol::setSize | ( | double | size | ) | const |
Sets the size for the whole symbol.
Individual symbol layer sizes will be scaled to maintain their current relative size to the whole symbol size.
size | new symbol size |
Definition at line 156 of file qgsmarkersymbol.cpp.
void QgsMarkerSymbol::setSizeMapUnitScale | ( | const QgsMapUnitScale & | scale | ) | const |
Sets the size map unit scale for the whole symbol (including all symbol layers).
scale | map unit scale |
Definition at line 282 of file qgsmarkersymbol.cpp.
void QgsMarkerSymbol::setSizeUnit | ( | Qgis::RenderUnit | unit | ) | const |
Sets the size units for the whole symbol (including all symbol layers).
unit | size units |
Definition at line 244 of file qgsmarkersymbol.cpp.
double QgsMarkerSymbol::size | ( | ) | const |
Returns the estimated size for the whole symbol, which is the maximum size of all marker symbol layers in the symbol.
Definition at line 200 of file qgsmarkersymbol.cpp.
double QgsMarkerSymbol::size | ( | const QgsRenderContext & | context | ) | const |
Returns the symbol size, in painter units.
This is the maximum size of all marker symbol layers in the symbol.
This method returns an accurate size by calculating the actual rendered size of each symbol layer using the provided render context.
Definition at line 229 of file qgsmarkersymbol.cpp.
QgsMapUnitScale QgsMarkerSymbol::sizeMapUnitScale | ( | ) | const |
Returns the size map unit scale for the whole symbol.
Note that for symbols with multiple symbol layers, this will correspond just to the map unit scale for the first symbol layer.
Definition at line 295 of file qgsmarkersymbol.cpp.
Qgis::RenderUnit QgsMarkerSymbol::sizeUnit | ( | ) | const |
Returns the size units for the whole symbol (including all symbol layers).
Definition at line 257 of file qgsmarkersymbol.cpp.