QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsmarkersymbollayer.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmarkersymbollayer.h
3 ---------------------
4 begin : November 2009
5 copyright : (C) 2009 by Martin Dobias
6 email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSMARKERSYMBOLLAYER_H
17#define QGSMARKERSYMBOLLAYER_H
18
19#include "qgis_core.h"
20#include "qgis_sip.h"
21#include "qgssymbollayer.h"
22
23#define DEFAULT_SIMPLEMARKER_NAME "circle"
24#define DEFAULT_SIMPLEMARKER_COLOR QColor(255,0,0)
25#define DEFAULT_SIMPLEMARKER_BORDERCOLOR QColor( 35, 35, 35 )
26#define DEFAULT_SIMPLEMARKER_JOINSTYLE Qt::BevelJoin
27#define DEFAULT_SIMPLEMARKER_SIZE DEFAULT_POINT_SIZE
28#define DEFAULT_SIMPLEMARKER_ANGLE 0
29
30#include <QPen>
31#include <QBrush>
32#include <QPicture>
33#include <QPolygonF>
34#include <QFont>
35
36class QgsFillSymbol;
37class QgsPathResolver;
38
46{
47
48 public:
49
51 static QList< Qgis::MarkerShape > availableShapes();
52
58 static bool shapeIsFilled( Qgis::MarkerShape shape );
59
68 double size = DEFAULT_SIMPLEMARKER_SIZE,
71
73
78 Qgis::MarkerShape shape() const { return mShape; }
79
85 void setShape( Qgis::MarkerShape shape ) { mShape = shape; }
86
95 static Qgis::MarkerShape decodeShape( const QString &name, bool *ok = nullptr );
96
103 static QString encodeShape( Qgis::MarkerShape shape );
104
105 void startRender( QgsSymbolRenderContext &context ) override;
106 void stopRender( QgsSymbolRenderContext &context ) override;
107 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
108 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
109
110 protected:
111
115 bool prepareMarkerShape( Qgis::MarkerShape shape );
116
120 bool prepareMarkerPath( Qgis::MarkerShape symbol );
121
128 bool shapeToPolygon( Qgis::MarkerShape shape, QPolygonF &polygon ) const;
129
136 double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
137
146 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedRotation, QPointF &offset, double &angle ) const;
147
149 QPolygonF mPolygon;
150
152 QPainterPath mPath;
153
156
157 private:
158
167 virtual void draw( QgsSymbolRenderContext &context, Qgis::MarkerShape shape, const QPolygonF &polygon, const QPainterPath &path ) = 0 SIP_FORCE;
168};
169
176{
177 public:
178
190 double size = DEFAULT_SIMPLEMARKER_SIZE,
193 const QColor &color = DEFAULT_SIMPLEMARKER_COLOR,
194 const QColor &strokeColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR,
195 Qt::PenJoinStyle penJoinStyle = DEFAULT_SIMPLEMARKER_JOINSTYLE );
196
198
199 // static methods
200
206 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
207
213 static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
214
215 // reimplemented from base classes
216
217 QString layerType() const override;
218 void startRender( QgsSymbolRenderContext &context ) override;
219 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
220 QVariantMap properties() const override;
221 QgsSimpleMarkerSymbolLayer *clone() const override SIP_FACTORY;
222 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
223 QString ogrFeatureStyle( double mmScaleFactor, double mapUnitScaleFactor ) const override;
224 bool writeDxf( QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) ) const override;
225 void setOutputUnit( Qgis::RenderUnit unit ) override;
226 Qgis::RenderUnit outputUnit() const override;
227 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
228 QgsMapUnitScale mapUnitScale() const override;
229 bool usesMapUnits() const override;
230 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
231 QColor fillColor() const override { return mColor; }
232 void setFillColor( const QColor &color ) override { mColor = color; }
233 void setColor( const QColor &color ) override;
234 QColor color() const override;
235
236 // new methods
237
244 QColor strokeColor() const override { return mStrokeColor; }
245
253 void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
254
261 Qt::PenStyle strokeStyle() const { return mStrokeStyle; }
262
270 void setStrokeStyle( Qt::PenStyle strokeStyle ) { mStrokeStyle = strokeStyle; }
271
279 Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
280
289 void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
290
299 Qt::PenCapStyle penCapStyle() const { return mPenCapStyle; }
300
309 void setPenCapStyle( Qt::PenCapStyle style ) { mPenCapStyle = style; }
310
317 double strokeWidth() const { return mStrokeWidth; }
318
326 void setStrokeWidth( double w ) { mStrokeWidth = w; }
327
335 void setStrokeWidthUnit( Qgis::RenderUnit u ) { mStrokeWidthUnit = u; }
336
343 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
344
352 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
353
360 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
361
362 protected:
363
370 void drawMarker( QPainter *p, QgsSymbolRenderContext &context );
371
376 bool prepareCache( QgsSymbolRenderContext &context );
377
381 Qt::PenStyle mStrokeStyle = Qt::SolidLine;
383 double mStrokeWidth = 0;
389 Qt::PenJoinStyle mPenJoinStyle;
391 Qt::PenCapStyle mPenCapStyle = Qt::SquareCap;
393 QPen mPen;
395 QBrush mBrush;
396
398 QImage mCache;
402 QBrush mSelBrush;
404 QImage mSelCache;
405
410 bool mUsingCache = false;
411
413 static const int MAXIMUM_CACHE_WIDTH = 3000;
414
415 private:
416 // cppcheck-suppress unusedPrivateFunction
417 void draw( QgsSymbolRenderContext &context, Qgis::MarkerShape shape, const QPolygonF &polygon, const QPainterPath &path ) override SIP_FORCE;
418
419 double mCachedOpacity = 1.0;
420
421};
422
430{
431 public:
432
441 double size = DEFAULT_SIMPLEMARKER_SIZE,
444
446
452 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
453
454 QString layerType() const override;
455 void startRender( QgsSymbolRenderContext &context ) override;
456 void stopRender( QgsSymbolRenderContext &context ) override;
457 QVariantMap properties() const override;
458 QgsFilledMarkerSymbolLayer *clone() const override SIP_FACTORY;
459 QgsSymbol *subSymbol() override;
460 bool setSubSymbol( QgsSymbol *symbol SIP_TRANSFER ) override;
461 double estimateMaxBleed( const QgsRenderContext &context ) const override;
462 QSet<QString> usedAttributes( const QgsRenderContext &context ) const override;
463 bool hasDataDefinedProperties() const override;
464 void setColor( const QColor &c ) override;
465 QColor color() const override;
466 bool usesMapUnits() const override;
467 void setOutputUnit( Qgis::RenderUnit unit ) override;
468
469 private:
470#ifdef SIP_RUN
472#endif
473
474 // cppcheck-suppress unusedPrivateFunction
475 void draw( QgsSymbolRenderContext &context, Qgis::MarkerShape shape, const QPolygonF &polygon, const QPainterPath &path ) override SIP_FORCE;
476
478 std::unique_ptr< QgsFillSymbol > mFill;
479};
480
482
483#define DEFAULT_SVGMARKER_SIZE 2*DEFAULT_POINT_SIZE
484#define DEFAULT_SVGMARKER_ANGLE 0
485
491{
492 public:
494 QgsSvgMarkerSymbolLayer( const QString &path,
495 double size = DEFAULT_SVGMARKER_SIZE,
498
500
501 // static stuff
502
504 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
505 static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
506
511 static void resolvePaths( QVariantMap &properties, const QgsPathResolver &pathResolver, bool saving );
512
513 // implemented from base classes
514
515 QString layerType() const override;
516
517 void startRender( QgsSymbolRenderContext &context ) override;
518
519 void stopRender( QgsSymbolRenderContext &context ) override;
520
521 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
522
523 QVariantMap properties() const override;
524 bool usesMapUnits() const override;
525
526 QgsSvgMarkerSymbolLayer *clone() const override SIP_FACTORY;
527
528 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
529
534 QString path() const { return mPath; }
535
541 void setPath( const QString &path );
542
547 double defaultAspectRatio() const { return mDefaultAspectRatio; }
548
554 double updateDefaultAspectRatio();
555
560 bool preservedAspectRatio() const { return mFixedAspectRatio <= 0.0; }
561
568 bool setPreservedAspectRatio( bool par );
569
575 double fixedAspectRatio() const { return mFixedAspectRatio; }
576
583 void setFixedAspectRatio( double ratio ) { mFixedAspectRatio = ratio; }
584
585 QColor fillColor() const override { return color(); }
586 void setFillColor( const QColor &color ) override { setColor( color ); }
587
588 QColor strokeColor() const override { return mStrokeColor; }
589 void setStrokeColor( const QColor &c ) override { mStrokeColor = c; }
590
591 double strokeWidth() const { return mStrokeWidth; }
592 void setStrokeWidth( double w ) { mStrokeWidth = w; }
593
598 QMap<QString, QgsProperty> parameters() const { return mParameters; }
599
604 void setParameters( const QMap<QString, QgsProperty> &parameters );
605
611 void setStrokeWidthUnit( Qgis::RenderUnit unit ) { mStrokeWidthUnit = unit; }
612
617 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
618
619 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
620 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
621
622 void setOutputUnit( Qgis::RenderUnit unit ) override;
623 Qgis::RenderUnit outputUnit() const override;
624
625 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
626 QgsMapUnitScale mapUnitScale() const override;
627
628 bool writeDxf( QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) ) const override;
629
630 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
631
632 void prepareExpressions( const QgsSymbolRenderContext &context ) override;
633
634 QSet<QString> usedAttributes( const QgsRenderContext &context ) const override;
635
636 protected:
637
644 double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
645
646 QString mPath;
647
649 double mDefaultAspectRatio = 0.0;
651 double mFixedAspectRatio = 0.0;
652 //param(fill), param(stroke), param(stroke-width) are going
653 //to be replaced in memory
654 bool mHasFillParam = false;
657 QMap<QString, QgsProperty> mParameters;
658
661
662 private:
663 double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
664 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledWidth, double scaledHeight, QPointF &offset, double &angle ) const;
665
666};
667
668
670
671#define DEFAULT_RASTERMARKER_SIZE 2*DEFAULT_POINT_SIZE
672#define DEFAULT_RASTERMARKER_ANGLE 0
673
681{
682 public:
684 QgsRasterMarkerSymbolLayer( const QString &path = QString(),
685 double size = DEFAULT_SVGMARKER_SIZE,
688
690
691 // static stuff
692
697 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
698
703 static void resolvePaths( QVariantMap &properties, const QgsPathResolver &pathResolver, bool saving );
704
705 // implemented from base classes
706
707 QString layerType() const override;
708
709 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
710 QVariantMap properties() const override;
711 QgsRasterMarkerSymbolLayer *clone() const override SIP_FACTORY;
712 bool usesMapUnits() const override;
713 QColor color() const override;
714
721 double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
722
727 QString path() const { return mPath; }
728
734 void setPath( const QString &path );
735
741 double opacity() const { return mOpacity; }
742
748 void setOpacity( double opacity ) { mOpacity = opacity; }
749
754 double defaultAspectRatio() const { return mDefaultAspectRatio; }
755
761 double updateDefaultAspectRatio();
762
767 bool preservedAspectRatio() const { return mFixedAspectRatio <= 0.0; }
768
775 bool setPreservedAspectRatio( bool par );
776
782 double fixedAspectRatio() const { return mFixedAspectRatio; }
783
790 void setFixedAspectRatio( double ratio ) { mFixedAspectRatio = ratio; }
791
792 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
793 QgsMapUnitScale mapUnitScale() const override;
794
795 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
796
797 protected:
798
804 void setCommonProperties( const QVariantMap &properties );
805
811 void copyCommonProperties( QgsRasterMarkerSymbolLayer *other ) const;
812
818 virtual QImage fetchImage( QgsRenderContext &context, const QString &path, QSize size, bool preserveAspectRatio, double opacity ) const SIP_SKIP;
819
820 QString mPath;
822 double mOpacity = 1.0;
824 double mDefaultAspectRatio = 0.0;
826 double mFixedAspectRatio = 0.0;
827
828 private:
829 double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
830 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledWidth, double scaledHeight, QPointF &offset, double &angle ) const;
831
832};
833
834
836
837#define POINT2MM(x) ( (x) * 25.4 / 72 ) // point is 1/72 of inch
838#define MM2POINT(x) ( (x) * 72 / 25.4 )
839
840#define DEFAULT_FONTMARKER_FONT "Dingbats"
841#define DEFAULT_FONTMARKER_CHR QChar('A')
842#define DEFAULT_FONTMARKER_SIZE POINT2MM(12)
843#define DEFAULT_FONTMARKER_COLOR QColor( 35, 35, 35 )
844#define DEFAULT_FONTMARKER_BORDERCOLOR QColor(Qt::white)
845#define DEFAULT_FONTMARKER_JOINSTYLE Qt::MiterJoin
846#define DEFAULT_FONTMARKER_ANGLE 0
847
853{
854 public:
855
857 QgsFontMarkerSymbolLayer( const QString &fontFamily = DEFAULT_FONTMARKER_FONT,
858 QString chr = DEFAULT_FONTMARKER_CHR,
859 double pointSize = DEFAULT_FONTMARKER_SIZE,
860 const QColor &color = DEFAULT_FONTMARKER_COLOR,
862
864
865 // static stuff
866
870 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
871
875 static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
876
883 static void resolveFonts( const QVariantMap &properties, const QgsReadWriteContext &context );
884
885 // implemented from base classes
886
887 QString layerType() const override;
888
889 void startRender( QgsSymbolRenderContext &context ) override;
890
891 void stopRender( QgsSymbolRenderContext &context ) override;
892
893 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
894
895 QVariantMap properties() const override;
896
897 QgsFontMarkerSymbolLayer *clone() const override SIP_FACTORY;
898
899 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
900 bool usesMapUnits() const override;
901 void setOutputUnit( Qgis::RenderUnit unit ) override;
902
903 // new methods
904
910 QString fontFamily() const { return mFontFamily; }
911
917 void setFontFamily( const QString &family ) { mFontFamily = family; }
918
925 QString fontStyle() const { return mFontStyle; }
926
933 void setFontStyle( const QString &style ) { mFontStyle = style; }
934
940 QString character() const { return mString; }
941
947 void setCharacter( QString chr ) { mString = chr; }
948
949 QColor strokeColor() const override { return mStrokeColor; }
950 void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
951
960 double strokeWidth() const { return mStrokeWidth; }
961
970 void setStrokeWidth( double width ) { mStrokeWidth = width; }
971
980 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
981
989 void setStrokeWidthUnit( Qgis::RenderUnit unit ) { mStrokeWidthUnit = unit; }
990
999 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
1000
1009 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
1010
1017 Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
1018
1025 void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
1026
1027 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
1028
1029 private:
1030
1031 QString mFontFamily;
1032 QString mFontStyle;
1033 QFont mFont;
1034 std::unique_ptr< QFontMetrics >mFontMetrics;
1035
1036 QString mString;
1037
1038 double mChrWidth = 0;
1039 QPointF mChrOffset;
1041 double mFontSizeScale = 1.0;
1042 double mOrigSize;
1043
1044 QColor mStrokeColor;
1045 double mStrokeWidth;
1046 Qgis::RenderUnit mStrokeWidthUnit;
1047 QgsMapUnitScale mStrokeWidthMapUnitScale;
1048 Qt::PenJoinStyle mPenJoinStyle;
1049
1050 QPen mPen;
1051 QBrush mBrush;
1052
1053 bool mUseCachedPath = false;
1054 QPainterPath mCachedPath;
1055
1056 // If font has a zero (or nearly zero) size, we skip rendering altogether..
1057 bool mNonZeroFontSize = true;
1058
1059 QString characterToRender( QgsSymbolRenderContext &context, QPointF &charOffset, double &charWidth );
1060 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedRotation, QPointF &offset, double &angle ) const;
1061 double calculateSize( QgsSymbolRenderContext &context );
1062};
1063
1064
1076{
1077 public:
1078
1082 QgsAnimatedMarkerSymbolLayer( const QString &path = QString(),
1083 double size = DEFAULT_RASTERMARKER_SIZE,
1085
1087
1088 // static stuff
1089
1093 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
1094
1095 // implemented from base classes
1096
1097 QString layerType() const override;
1098 QVariantMap properties() const override;
1099 QgsAnimatedMarkerSymbolLayer *clone() const override SIP_FACTORY;
1100
1106 void setFrameRate( double rate ) { mFrameRateFps = rate; }
1107
1113 double frameRate() const { return mFrameRateFps; }
1114
1115 void startRender( QgsSymbolRenderContext &context ) override;
1116
1117 protected:
1118 QImage fetchImage( QgsRenderContext &context, const QString &path, QSize size, bool preserveAspectRatio, double opacity ) const override SIP_SKIP;
1119
1120 private:
1121 double mFrameRateFps = 10;
1122 bool mStaticPath = false;
1123 mutable QSet< QString > mPreparedPaths;
1124
1125};
1126
1127// clazy:excludeall=qstring-allocations
1128
1129#endif
1130
1131
The Qgis class provides global constants for use throughout the application.
Definition: qgis.h:54
ScaleMethod
Scale methods.
Definition: qgis.h:415
MarkerShape
Marker shapes.
Definition: qgis.h:2491
RenderUnit
Rendering size units.
Definition: qgis.h:4255
@ Millimeters
Millimeters.
Animated marker symbol layer class.
~QgsAnimatedMarkerSymbolLayer() override
double frameRate() const
Returns the marker frame rate in frame per second.
Exports QGIS layers to the DXF format.
Definition: qgsdxfexport.h:66
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
Definition: qgsfillsymbol.h:30
Filled marker symbol layer, consisting of a shape which is rendered using a QgsFillSymbol.
~QgsFilledMarkerSymbolLayer() override
void setStrokeWidthUnit(Qgis::RenderUnit unit)
Sets the stroke width unit.
~QgsFontMarkerSymbolLayer() override
void setStrokeColor(const QColor &color) override
Sets the stroke color for the symbol layer.
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
Sets the stroke width map unit scale.
Qgis::RenderUnit strokeWidthUnit() const
Returns the stroke width unit.
double strokeWidth() const
Returns the marker's stroke width.
void setFontStyle(const QString &style)
Sets the font style for the font which will be used to render the point.
QString fontStyle() const
Returns the font style for the associated font which will be used to render the point.
QColor strokeColor() const override
Returns the stroke color for the symbol layer.
void setCharacter(QString chr)
Sets the character(s) used when rendering points.
void setFontFamily(const QString &family)
Sets the font family for the font which will be used to render the point.
void setStrokeWidth(double width)
Set's the marker's stroke width.
void setPenJoinStyle(Qt::PenJoinStyle style)
Sets the stroke join style.
const QgsMapUnitScale & strokeWidthMapUnitScale() const
Returns the stroke width map unit scale.
Qt::PenJoinStyle penJoinStyle() const
Returns the stroke join style.
QString character() const
Returns the character(s) used when rendering points.
Struct for storing maximum and minimum scales for measurements in map units.
Abstract base class for marker symbol layers.
virtual QRectF bounds(QPointF point, QgsSymbolRenderContext &context)=0
Returns the approximate bounding box of the marker symbol layer, taking into account any data defined...
Qgis::RenderUnit outputUnit() const override
Returns the units to use for sizes and widths within the symbol layer.
virtual void renderPoint(QPointF point, QgsSymbolRenderContext &context)=0
Renders a marker at the specified point.
QgsMapUnitScale mapUnitScale() const override
void stopRender(QgsSymbolRenderContext &context) override
Called after a set of rendering operations has finished on the supplied render context.
void setOutputUnit(Qgis::RenderUnit unit) override
Sets the units to use for sizes and widths within the symbol layer.
void startRender(QgsSymbolRenderContext &context) override
Called before a set of rendering operations commences on the supplied render context.
void setMapUnitScale(const QgsMapUnitScale &scale) override
Resolves relative paths into absolute paths and vice versa.
Raster marker symbol layer class.
void setOpacity(double opacity)
Set the marker opacity.
double defaultAspectRatio() const
Returns the default marker aspect ratio between width and height, 0 if not yet calculated.
void setFixedAspectRatio(double ratio)
Set the marker aspect ratio between width and height to be used in rendering, if the value set is low...
bool preservedAspectRatio() const
Returns the preserved aspect ratio value, true if fixed aspect ratio has been lower or equal to 0.
~QgsRasterMarkerSymbolLayer() override
double fixedAspectRatio() const
Returns the marker aspect ratio between width and height to be used in rendering, if the value set is...
double opacity() const
Returns the marker opacity.
The class is used as a container of context for various read/write operations on other objects.
Contains information about the context of a rendering operation.
Abstract base class for simple marker symbol layers.
Qgis::MarkerShape mShape
Symbol shape.
QPainterPath mPath
Painter path representing shape. If mPolygon is empty then the shape is stored in mPath.
~QgsSimpleMarkerSymbolLayerBase() override
QPolygonF mPolygon
Polygon of points in shape. If polygon is empty then shape is using mPath.
Qgis::MarkerShape shape() const
Returns the shape for the rendered marker symbol.
void setShape(Qgis::MarkerShape shape)
Sets the rendered marker shape.
Simple marker symbol layer, consisting of a rendered shape with solid fill color and an stroke.
QPen mSelPen
QPen to use as stroke of selected symbols.
QColor mStrokeColor
Stroke color.
QImage mSelCache
Cached image of selected marker, if using cached version.
QImage mCache
Cached image of marker, if using cached version.
QBrush mSelBrush
QBrush to use as fill of selected symbols.
void setFillColor(const QColor &color) override
Sets the fill color for the symbol layer.
Qt::PenJoinStyle penJoinStyle() const
Returns the marker's stroke join style (e.g., miter, bevel, etc).
QPen mPen
QPen corresponding to marker's stroke style.
void setStrokeWidthUnit(Qgis::RenderUnit u)
Sets the unit for the width of the marker's stroke.
~QgsSimpleMarkerSymbolLayer() override
Qt::PenCapStyle penCapStyle() const
Returns the marker's stroke cap style (e.g., flat, round, etc).
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
Sets the map scale for the width of the marker's stroke.
void setStrokeStyle(Qt::PenStyle strokeStyle)
Sets the marker's stroke style (e.g., solid, dashed, etc)
const QgsMapUnitScale & strokeWidthMapUnitScale() const
Returns the map scale for the width of the marker's stroke.
void setPenJoinStyle(Qt::PenJoinStyle style)
Sets the marker's stroke join style (e.g., miter, bevel, etc).
QColor strokeColor() const override
Returns the marker's stroke color.
QBrush mBrush
QBrush corresponding to marker's fill style.
void setStrokeWidth(double w)
Sets the width of the marker's stroke.
void setStrokeColor(const QColor &color) override
Sets the marker's stroke color.
Qt::PenStyle strokeStyle() const
Returns the marker's stroke style (e.g., solid, dashed, etc)
Qgis::RenderUnit strokeWidthUnit() const
Returns the unit for the width of the marker's stroke.
void setPenCapStyle(Qt::PenCapStyle style)
Sets the marker's stroke cap style (e.g., flat, round, etc).
QgsMapUnitScale mStrokeWidthMapUnitScale
Stroke width map unit scale.
double strokeWidth() const
Returns the width of the marker's stroke.
Qt::PenJoinStyle mPenJoinStyle
Stroke pen join style.
QColor fillColor() const override
Returns the fill color for the symbol layer.
const QgsMapUnitScale & strokeWidthMapUnitScale() const
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
bool preservedAspectRatio() const
Returns the preserved aspect ratio value, true if fixed aspect ratio has been lower or equal to 0.
QMap< QString, QgsProperty > mParameters
void setStrokeWidthUnit(Qgis::RenderUnit unit)
Sets the units for the stroke width.
double fixedAspectRatio() const
Returns the marker aspect ratio between width and height to be used in rendering, if the value set is...
void setStrokeColor(const QColor &c) override
Sets the stroke color for the symbol layer.
QColor strokeColor() const override
Returns the stroke color for the symbol layer.
void setFillColor(const QColor &color) override
Sets the fill color for the symbol layer.
Qgis::RenderUnit strokeWidthUnit() const
Returns the units for the stroke width.
~QgsSvgMarkerSymbolLayer() override
QMap< QString, QgsProperty > parameters() const
Returns the dynamic SVG parameters.
QgsMapUnitScale mStrokeWidthMapUnitScale
Qgis::RenderUnit mStrokeWidthUnit
void setFixedAspectRatio(double ratio)
Set the marker aspect ratio between width and height to be used in rendering, if the value set is low...
double defaultAspectRatio() const
Returns the default marker aspect ratio between width and height, 0 if not yet calculated.
virtual QSet< QString > usedAttributes(const QgsRenderContext &context) const
Returns the set of attributes referenced by the layer.
virtual void prepareExpressions(const QgsSymbolRenderContext &context)
Prepares all data defined property expressions for evaluation.
virtual void setColor(const QColor &color)
Sets the "representative" color for the symbol layer.
virtual QColor color() const
Returns the "representative" color of the symbol layer.
virtual bool writeDxf(QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift=QPointF(0.0, 0.0)) const
write as DXF
Abstract base class for all rendered symbols.
Definition: qgssymbol.h:94
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)
Definition: MathUtils.cpp:716
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
#define SIP_FORCE
Definition: qgis_sip.h:131
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_FACTORY
Definition: qgis_sip.h:76
#define DEFAULT_RASTERMARKER_ANGLE
#define DEFAULT_RASTERMARKER_SIZE
#define DEFAULT_SVGMARKER_ANGLE
#define DEFAULT_SIMPLEMARKER_JOINSTYLE
#define DEFAULT_FONTMARKER_CHR
#define DEFAULT_SIMPLEMARKER_BORDERCOLOR
#define DEFAULT_SIMPLEMARKER_SIZE
#define DEFAULT_SIMPLEMARKER_ANGLE
#define DEFAULT_SVGMARKER_SIZE
#define DEFAULT_FONTMARKER_FONT
#define DEFAULT_FONTMARKER_ANGLE
#define DEFAULT_FONTMARKER_COLOR
#define DEFAULT_FONTMARKER_SIZE
#define DEFAULT_SIMPLEMARKER_COLOR
#define DEFAULT_SCALE_METHOD