QGIS API Documentation 3.43.0-Master (32433f7016e)
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 Qgis::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
48{
49
50 public:
51
53 static QList< Qgis::MarkerShape > availableShapes();
54
60 static bool shapeIsFilled( Qgis::MarkerShape shape );
61
70 double size = DEFAULT_SIMPLEMARKER_SIZE,
71 double angle = DEFAULT_SIMPLEMARKER_ANGLE,
73
75
80 Qgis::MarkerShape shape() const { return mShape; }
81
87 void setShape( Qgis::MarkerShape shape ) { mShape = shape; }
88
97 static Qgis::MarkerShape decodeShape( const QString &name, bool *ok = nullptr );
98
105 static QString encodeShape( Qgis::MarkerShape shape );
106
107 void startRender( QgsSymbolRenderContext &context ) override;
108 void stopRender( QgsSymbolRenderContext &context ) override;
109 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
110 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
111
112 protected:
113
117 bool prepareMarkerShape( Qgis::MarkerShape shape );
118
122 bool prepareMarkerPath( Qgis::MarkerShape symbol );
123
130 bool shapeToPolygon( Qgis::MarkerShape shape, QPolygonF &polygon ) const;
131
138 double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
139
148 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedRotation, QPointF &offset, double &angle ) const;
149
151 QPolygonF mPolygon;
152
154 QPainterPath mPath;
155
158
159 private:
160
169 virtual void draw( QgsSymbolRenderContext &context, Qgis::MarkerShape shape, const QPolygonF &polygon, const QPainterPath &path ) = 0 SIP_FORCE;
170};
171
178{
179 public:
180
192 double size = DEFAULT_SIMPLEMARKER_SIZE,
193 double angle = DEFAULT_SIMPLEMARKER_ANGLE,
195 const QColor &color = DEFAULT_SIMPLEMARKER_COLOR,
196 const QColor &strokeColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR,
197 Qt::PenJoinStyle penJoinStyle = DEFAULT_SIMPLEMARKER_JOINSTYLE );
198
200
201 // static methods
202
208 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
209
215 static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
216
217 // reimplemented from base classes
218
219 QString layerType() const override;
220 Qgis::SymbolLayerFlags flags() const override;
221 void startRender( QgsSymbolRenderContext &context ) override;
222 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
223 QVariantMap properties() const override;
224 QgsSimpleMarkerSymbolLayer *clone() const override SIP_FACTORY;
225 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
226 QString ogrFeatureStyle( double mmScaleFactor, double mapUnitScaleFactor ) const override;
227 bool writeDxf( QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) ) const override;
228 void setOutputUnit( Qgis::RenderUnit unit ) override;
229 Qgis::RenderUnit outputUnit() const override;
230 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
231 QgsMapUnitScale mapUnitScale() const override;
232 bool usesMapUnits() const override;
233 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
234 QColor fillColor() const override { return mColor; }
235 void setFillColor( const QColor &color ) override { mColor = color; }
236 void setColor( const QColor &color ) override;
237 QColor color() const override;
238
239 // new methods
240
247 QColor strokeColor() const override { return mStrokeColor; }
248
256 void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
257
264 Qt::PenStyle strokeStyle() const { return mStrokeStyle; }
265
273 void setStrokeStyle( Qt::PenStyle strokeStyle ) { mStrokeStyle = strokeStyle; }
274
282 Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
283
292 void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
293
302 Qt::PenCapStyle penCapStyle() const { return mPenCapStyle; }
303
312 void setPenCapStyle( Qt::PenCapStyle style ) { mPenCapStyle = style; }
313
320 double strokeWidth() const { return mStrokeWidth; }
321
329 void setStrokeWidth( double w ) { mStrokeWidth = w; }
330
338 void setStrokeWidthUnit( Qgis::RenderUnit u ) { mStrokeWidthUnit = u; }
339
346 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
347
355 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
356
363 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
364
365 protected:
366
373 void drawMarker( QPainter *p, QgsSymbolRenderContext &context );
374
379 bool prepareCache( QgsSymbolRenderContext &context );
380
384 Qt::PenStyle mStrokeStyle = Qt::SolidLine;
386 double mStrokeWidth = 0;
392 Qt::PenJoinStyle mPenJoinStyle;
394 Qt::PenCapStyle mPenCapStyle = Qt::SquareCap;
396 QPen mPen;
398 QBrush mBrush;
399
401 QImage mCache;
405 QBrush mSelBrush;
407 QImage mSelCache;
408
413 bool mUsingCache = false;
414
416 static const int MAXIMUM_CACHE_WIDTH = 3000;
417
418 private:
419 // cppcheck-suppress unusedPrivateFunction
420 void draw( QgsSymbolRenderContext &context, Qgis::MarkerShape shape, const QPolygonF &polygon, const QPainterPath &path ) override SIP_FORCE;
421
422 double mCachedOpacity = 1.0;
423
424};
425
433{
434 public:
435
444 double size = DEFAULT_SIMPLEMARKER_SIZE,
445 double angle = DEFAULT_SIMPLEMARKER_ANGLE,
447
449
455 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
456
457 QString layerType() const override;
458 void startRender( QgsSymbolRenderContext &context ) override;
459 void stopRender( QgsSymbolRenderContext &context ) override;
460 void startFeatureRender( const QgsFeature &feature, QgsRenderContext &context ) override;
461 void stopFeatureRender( const QgsFeature &feature, QgsRenderContext &context ) override;
462 QVariantMap properties() const override;
463 QgsFilledMarkerSymbolLayer *clone() const override SIP_FACTORY;
464 QgsSymbol *subSymbol() override;
465 bool setSubSymbol( QgsSymbol *symbol SIP_TRANSFER ) override;
466 double estimateMaxBleed( const QgsRenderContext &context ) const override;
467 QSet<QString> usedAttributes( const QgsRenderContext &context ) const override;
468 bool hasDataDefinedProperties() const override;
469 void setColor( const QColor &c ) override;
470 QColor color() const override;
471 bool usesMapUnits() const override;
472 void setOutputUnit( Qgis::RenderUnit unit ) override;
473
474 private:
475#ifdef SIP_RUN
477#endif
478
479 // cppcheck-suppress unusedPrivateFunction
480 void draw( QgsSymbolRenderContext &context, Qgis::MarkerShape shape, const QPolygonF &polygon, const QPainterPath &path ) override SIP_FORCE;
481
483 std::unique_ptr< QgsFillSymbol > mFill;
484};
485
487
488#define DEFAULT_SVGMARKER_SIZE ( 2 * Qgis::DEFAULT_POINT_SIZE )
489#define DEFAULT_SVGMARKER_ANGLE 0
490
497{
498 public:
500 QgsSvgMarkerSymbolLayer( const QString &path,
501 double size = DEFAULT_SVGMARKER_SIZE,
502 double angle = DEFAULT_SVGMARKER_ANGLE,
505
507
508 // static stuff
509
511 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
512 static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
513
518 static void resolvePaths( QVariantMap &properties, const QgsPathResolver &pathResolver, bool saving );
519
520 // implemented from base classes
521
522 QString layerType() const override;
523 Qgis::SymbolLayerFlags flags() const override;
524 void startRender( QgsSymbolRenderContext &context ) override;
525 void stopRender( QgsSymbolRenderContext &context ) override;
526 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
527 QVariantMap properties() const override;
528 bool usesMapUnits() const override;
529 QgsSvgMarkerSymbolLayer *clone() const override SIP_FACTORY;
530 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
531
536 QString path() const { return mPath; }
537
543 void setPath( const QString &path );
544
549 double defaultAspectRatio() const { return mDefaultAspectRatio; }
550
556 double updateDefaultAspectRatio();
557
562 bool preservedAspectRatio() const { return mFixedAspectRatio <= 0.0; }
563
570 bool setPreservedAspectRatio( bool par );
571
578 double fixedAspectRatio() const { return mFixedAspectRatio; }
579
587 void setFixedAspectRatio( double ratio ) { mFixedAspectRatio = ratio; }
588
589 QColor fillColor() const override { return color(); }
590 void setFillColor( const QColor &color ) override { setColor( color ); }
591
592 QColor strokeColor() const override { return mStrokeColor; }
593 void setStrokeColor( const QColor &c ) override { mStrokeColor = c; }
594
595 double strokeWidth() const { return mStrokeWidth; }
596 void setStrokeWidth( double w ) { mStrokeWidth = w; }
597
602 QMap<QString, QgsProperty> parameters() const { return mParameters; }
603
608 void setParameters( const QMap<QString, QgsProperty> &parameters );
609
615 void setStrokeWidthUnit( Qgis::RenderUnit unit ) { mStrokeWidthUnit = unit; }
616
621 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
622
623 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
624 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
625
626 void setOutputUnit( Qgis::RenderUnit unit ) override;
627 Qgis::RenderUnit outputUnit() const override;
628
629 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
630 QgsMapUnitScale mapUnitScale() const override;
631
632 bool writeDxf( QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) ) const override;
633
634 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
635
636 void prepareExpressions( const QgsSymbolRenderContext &context ) override;
637
638 QSet<QString> usedAttributes( const QgsRenderContext &context ) const override;
639
640 protected:
641
648 double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
649
650 QString mPath;
651
653 double mDefaultAspectRatio = 0.0;
655 double mFixedAspectRatio = 0.0;
656 //param(fill), param(stroke), param(stroke-width) are going
657 //to be replaced in memory
658 bool mHasFillParam = false;
661 QMap<QString, QgsProperty> mParameters;
662
665
666 private:
667 double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
668 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledWidth, double scaledHeight, QPointF &offset, double &angle ) const;
669
670};
671
672
674
675#define DEFAULT_RASTERMARKER_SIZE ( 2 * Qgis::DEFAULT_POINT_SIZE )
676#define DEFAULT_RASTERMARKER_ANGLE 0
677
685{
686 public:
688 QgsRasterMarkerSymbolLayer( const QString &path = QString(),
689 double size = DEFAULT_SVGMARKER_SIZE,
690 double angle = DEFAULT_SVGMARKER_ANGLE,
692
694
695 // static stuff
696
701 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
702
707 static void resolvePaths( QVariantMap &properties, const QgsPathResolver &pathResolver, bool saving );
708
709 // implemented from base classes
710
711 QString layerType() const override;
712 Qgis::SymbolLayerFlags flags() const override;
713 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
714 QVariantMap properties() const override;
715 QgsRasterMarkerSymbolLayer *clone() const override SIP_FACTORY;
716 bool usesMapUnits() const override;
717 QColor color() const override;
718
725 double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
726
731 QString path() const { return mPath; }
732
738 void setPath( const QString &path );
739
745 double opacity() const { return mOpacity; }
746
752 void setOpacity( double opacity ) { mOpacity = opacity; }
753
758 double defaultAspectRatio() const { return mDefaultAspectRatio; }
759
765 double updateDefaultAspectRatio();
766
771 bool preservedAspectRatio() const { return mFixedAspectRatio <= 0.0; }
772
779 bool setPreservedAspectRatio( bool par );
780
787 double fixedAspectRatio() const { return mFixedAspectRatio; }
788
796 void setFixedAspectRatio( double ratio ) { mFixedAspectRatio = ratio; }
797
798 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
799 QgsMapUnitScale mapUnitScale() const override;
800
801 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
802
803 protected:
804
810 void setCommonProperties( const QVariantMap &properties );
811
817 void copyCommonProperties( QgsRasterMarkerSymbolLayer *other ) const;
818
824 virtual QImage fetchImage( QgsRenderContext &context, const QString &path, QSize size, bool preserveAspectRatio, double opacity ) const SIP_SKIP;
825
826 QString mPath;
828 double mOpacity = 1.0;
830 double mDefaultAspectRatio = 0.0;
832 double mFixedAspectRatio = 0.0;
833
834 private:
835 double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
836 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledWidth, double scaledHeight, QPointF &offset, double &angle ) const;
837
838};
839
840
842
843#define POINT2MM(x) ( (x) * 25.4 / 72 ) // point is 1/72 of inch
844#define MM2POINT(x) ( (x) * 72 / 25.4 )
845
846#define DEFAULT_FONTMARKER_FONT "Dingbats"
847#define DEFAULT_FONTMARKER_CHR QChar('A')
848#define DEFAULT_FONTMARKER_SIZE POINT2MM(12)
849#define DEFAULT_FONTMARKER_COLOR QColor( 35, 35, 35 )
850#define DEFAULT_FONTMARKER_BORDERCOLOR QColor(Qt::white)
851#define DEFAULT_FONTMARKER_JOINSTYLE Qt::MiterJoin
852#define DEFAULT_FONTMARKER_ANGLE 0
853
860{
861 public:
862
864 QgsFontMarkerSymbolLayer( const QString &fontFamily = DEFAULT_FONTMARKER_FONT,
865 QString chr = DEFAULT_FONTMARKER_CHR,
866 double pointSize = DEFAULT_FONTMARKER_SIZE,
867 const QColor &color = DEFAULT_FONTMARKER_COLOR,
868 double angle = DEFAULT_FONTMARKER_ANGLE );
869
871
872 // static stuff
873
877 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
878
882 static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
883
890 static void resolveFonts( const QVariantMap &properties, const QgsReadWriteContext &context );
891
892 // implemented from base classes
893
894 QString layerType() const override;
895 Qgis::SymbolLayerFlags flags() const override;
896
897 void startRender( QgsSymbolRenderContext &context ) override;
898
899 void stopRender( QgsSymbolRenderContext &context ) override;
900
901 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
902
903 QVariantMap properties() const override;
904
905 QgsFontMarkerSymbolLayer *clone() const override SIP_FACTORY;
906
907 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
908 bool usesMapUnits() const override;
909 void setOutputUnit( Qgis::RenderUnit unit ) override;
910
911 // new methods
912
918 QString fontFamily() const { return mFontFamily; }
919
925 void setFontFamily( const QString &family ) { mFontFamily = family; }
926
933 QString fontStyle() const { return mFontStyle; }
934
941 void setFontStyle( const QString &style ) { mFontStyle = style; }
942
948 QString character() const { return mString; }
949
955 void setCharacter( QString chr ) { mString = chr; }
956
957 QColor strokeColor() const override { return mStrokeColor; }
958 void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
959
968 double strokeWidth() const { return mStrokeWidth; }
969
978 void setStrokeWidth( double width ) { mStrokeWidth = width; }
979
988 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
989
997 void setStrokeWidthUnit( Qgis::RenderUnit unit ) { mStrokeWidthUnit = unit; }
998
1007 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
1008
1017 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
1018
1025 Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
1026
1033 void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
1034
1035 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
1036
1037 private:
1038
1039 QString mFontFamily;
1040 QString mFontStyle;
1041 QFont mFont;
1042 std::unique_ptr< QFontMetrics >mFontMetrics;
1043
1044 QString mString;
1045
1046 double mChrWidth = 0;
1047 QPointF mChrOffset;
1049 double mFontSizeScale = 1.0;
1050 double mOrigSize;
1051
1052 QColor mStrokeColor;
1053 double mStrokeWidth;
1054 Qgis::RenderUnit mStrokeWidthUnit;
1055 QgsMapUnitScale mStrokeWidthMapUnitScale;
1056 Qt::PenJoinStyle mPenJoinStyle;
1057
1058 QPen mPen;
1059 QBrush mBrush;
1060
1061 bool mUseCachedPath = false;
1062 QPainterPath mCachedPath;
1063
1064 // If font has a zero (or nearly zero) size, we skip rendering altogether..
1065 bool mNonZeroFontSize = true;
1066
1067 QString characterToRender( QgsSymbolRenderContext &context, QPointF &charOffset, double &charWidth );
1068 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedRotation, QPointF &offset, double &angle ) const;
1069 double calculateSize( QgsSymbolRenderContext &context );
1070};
1071
1072
1084{
1085 public:
1086
1090 QgsAnimatedMarkerSymbolLayer( const QString &path = QString(),
1091 double size = DEFAULT_RASTERMARKER_SIZE,
1092 double angle = DEFAULT_RASTERMARKER_ANGLE );
1093
1095
1096 // static stuff
1097
1101 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY; // cppcheck-suppress duplInheritedMember
1102
1103 // implemented from base classes
1104
1105 QString layerType() const override;
1106 QVariantMap properties() const override;
1107 QgsAnimatedMarkerSymbolLayer *clone() const override SIP_FACTORY;
1108
1114 void setFrameRate( double rate ) { mFrameRateFps = rate; }
1115
1121 double frameRate() const { return mFrameRateFps; }
1122
1123 void startRender( QgsSymbolRenderContext &context ) override;
1124
1125 protected:
1126 QImage fetchImage( QgsRenderContext &context, const QString &path, QSize size, bool preserveAspectRatio, double opacity ) const override SIP_SKIP;
1127
1128 private:
1129 double mFrameRateFps = 10;
1130 bool mStaticPath = false;
1131 mutable QSet< QString > mPreparedPaths;
1132
1133};
1134
1135// clazy:excludeall=qstring-allocations
1136
1137#endif
1138
1139
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:54
ScaleMethod
Scale methods.
Definition qgis.h:588
MarkerShape
Marker shapes.
Definition qgis.h:2974
RenderUnit
Rendering size units.
Definition qgis.h:5013
@ 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.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:58
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
Filled marker symbol layer, consisting of a shape which is rendered using a QgsFillSymbol.
~QgsFilledMarkerSymbolLayer() override
A marker symbol layer which displays characters rendered using a font.
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.
A container for the context for various read/write operations on 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 a stroke.
QPen mSelPen
QPen to use as stroke of selected symbols.
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.
A marker symbol layer which renders an SVG graphic.
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
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.
Abstract base class for symbol layers.
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
Encapsulates the context in which a symbol is being rendered.
Abstract base class for all rendered symbols.
Definition qgssymbol.h:231
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