QGIS API Documentation 3.39.0-Master (bca3cdb6021)
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
QgsMarkerSymbol Class Reference

A marker symbol type, for rendering Point and MultiPoint geometries. More...

#include <qgsmarkersymbol.h>

Inheritance diagram for QgsMarkerSymbol:
Inheritance graph
[legend]

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.
 
QgsMarkerSymbolclone () 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 ()
 
QgsSymbolAnimationSettingsanimationSettings ()
 Returns a reference to the symbol animation settings.
 
const QgsSymbolAnimationSettingsanimationSettings () 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.
 
QgsSymbolBufferSettingsbufferSettings ()
 Returns the symbol buffer settings, which control an optional "halo" effect around the symbol.
 
const QgsSymbolBufferSettingsbufferSettings () 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.
 
QgsPropertyCollectiondataDefinedProperties ()
 Returns a reference to the symbol's property collection, used for data defined overrides.
 
const QgsPropertyCollectiondataDefinedProperties () 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 QgsVectorLayerlayer () 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.
 
QgsSymbolLayersymbolLayer (int layer)
 Returns the symbol layer at the specified index.
 
const QgsSymbolLayersymbolLayer (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.
 
QgsSymbolRenderContextsymbolRenderContext ()
 Returns the symbol render context.
 
QgsSymbolLayertakeSymbolLayer (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 QgsMarkerSymbolcreateSimple (const QVariantMap &properties)
 Create a marker symbol with one symbol layer: SimpleMarker with specified properties.
 
- Static Public Member Functions inherited from QgsSymbol
static QgsSymboldefaultSymbol (Qgis::GeometryType geomType)
 Returns a new default symbol for the specified geometry type.
 
static const QgsPropertiesDefinitionpropertyDefinitions ()
 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< QgsSymbolBufferSettingsmBufferSettings
 
bool mClipFeaturesToExtent = true
 
bool mForceRHR = false
 
Q_DECL_DEPRECATED const QgsVectorLayermLayer = 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
 

Detailed Description

A marker symbol type, for rendering Point and MultiPoint geometries.

Definition at line 30 of file qgsmarkersymbol.h.

Constructor & Destructor Documentation

◆ QgsMarkerSymbol()

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.

Member Function Documentation

◆ angle()

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.

See also
setAngle()

Definition at line 56 of file qgsmarkersymbol.cpp.

◆ bounds()

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.

Parameters
pointlocation of rendered point in painter units
contextrender context
featurefeature being rendered at point (optional). If not specified, the bounds calculation will not include data defined parameters such as offset and rotation
Returns
approximate symbol bounds, in painter units

Definition at line 586 of file qgsmarkersymbol.cpp.

◆ clone()

QgsMarkerSymbol * QgsMarkerSymbol::clone ( ) const
overridevirtual

Returns a deep copy of this symbol.

Ownership is transferred to the caller.

Implements QgsSymbol.

Definition at line 610 of file qgsmarkersymbol.cpp.

◆ createSimple()

QgsMarkerSymbol * QgsMarkerSymbol::createSimple ( const QVariantMap &  properties)
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.

◆ dataDefinedAngle()

QgsProperty QgsMarkerSymbol::dataDefinedAngle ( ) const

Returns data defined angle for whole symbol (including all symbol layers).

Returns
data defined angle, or invalid property if angle is not set at the marker level.
See also
setDataDefinedAngle()

Definition at line 109 of file qgsmarkersymbol.cpp.

◆ dataDefinedSize()

QgsProperty QgsMarkerSymbol::dataDefinedSize ( ) const

Returns data defined size for whole symbol (including all symbol layers).

Returns
data defined size, or invalid property if size is not set at the marker level.
See also
setDataDefinedSize

Definition at line 346 of file qgsmarkersymbol.cpp.

◆ renderPoint()

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.

◆ scaleMethod()

Qgis::ScaleMethod QgsMarkerSymbol::scaleMethod ( ) const

Returns the method to use for scaling the marker's size.

See also
setScaleMethod()

Definition at line 414 of file qgsmarkersymbol.cpp.

◆ setAngle()

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.

Parameters
symbolAnglenew symbol angle
See also
angle()

Definition at line 43 of file qgsmarkersymbol.cpp.

◆ setDataDefinedAngle()

void QgsMarkerSymbol::setDataDefinedAngle ( const QgsProperty property)

Set data defined angle for whole symbol (including all symbol layers).

See also
dataDefinedAngle()

Definition at line 80 of file qgsmarkersymbol.cpp.

◆ setDataDefinedSize()

void QgsMarkerSymbol::setDataDefinedSize ( const QgsProperty property) const

Set data defined size for whole symbol (including all symbol layers).

See also
dataDefinedSize()

Definition at line 309 of file qgsmarkersymbol.cpp.

◆ setLineAngle()

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.

Parameters
lineAngleAngle in degrees, valid values are between 0 and 360

Definition at line 68 of file qgsmarkersymbol.cpp.

◆ setScaleMethod()

void QgsMarkerSymbol::setScaleMethod ( Qgis::ScaleMethod  scaleMethod) const

Sets the method to use for scaling the marker's size.

Parameters
scaleMethodscale method
See also
scaleMethod()

Definition at line 402 of file qgsmarkersymbol.cpp.

◆ setSize()

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.

Parameters
sizenew symbol size
See also
size()
setSizeUnit()
setSizeMapUnitScale()

Definition at line 156 of file qgsmarkersymbol.cpp.

◆ setSizeMapUnitScale()

void QgsMarkerSymbol::setSizeMapUnitScale ( const QgsMapUnitScale scale) const

Sets the size map unit scale for the whole symbol (including all symbol layers).

Parameters
scalemap unit scale
See also
sizeMapUnitScale()
setSizeUnit()
setSize()

Definition at line 282 of file qgsmarkersymbol.cpp.

◆ setSizeUnit()

void QgsMarkerSymbol::setSizeUnit ( Qgis::RenderUnit  unit) const

Sets the size units for the whole symbol (including all symbol layers).

Parameters
unitsize units
See also
sizeUnit()
setSizeMapUnitScale()
setSize()

Definition at line 244 of file qgsmarkersymbol.cpp.

◆ size() [1/2]

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.

Warning
This returned value is inaccurate if the symbol consists of multiple symbol layers with different size units. Use the overload accepting a QgsRenderContext argument instead for accurate sizes in this case.
See also
setSize()
sizeUnit()
sizeMapUnitScale()

Definition at line 200 of file qgsmarkersymbol.cpp.

◆ size() [2/2]

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.

See also
setSize()
sizeUnit()
sizeMapUnitScale()
Since
QGIS 3.4.5

Definition at line 229 of file qgsmarkersymbol.cpp.

◆ sizeMapUnitScale()

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.

See also
setSizeMapUnitScale()
sizeUnit()
size()

Definition at line 295 of file qgsmarkersymbol.cpp.

◆ sizeUnit()

Qgis::RenderUnit QgsMarkerSymbol::sizeUnit ( ) const

Returns the size units for the whole symbol (including all symbol layers).

Returns
size units, or mixed units if symbol layers have different units
See also
setSizeUnit()
sizeMapUnitScale()
size()

Definition at line 257 of file qgsmarkersymbol.cpp.


The documentation for this class was generated from the following files: