QGIS API Documentation 3.39.0-Master (47f7b3a4989)
Loading...
Searching...
No Matches
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,
69 double angle = DEFAULT_SIMPLEMARKER_ANGLE,
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,
191 double angle = DEFAULT_SIMPLEMARKER_ANGLE,
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 Qgis::SymbolLayerFlags flags() const override;
219 void startRender( QgsSymbolRenderContext &context ) override;
220 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
221 QVariantMap properties() const override;
222 QgsSimpleMarkerSymbolLayer *clone() const override SIP_FACTORY;
223 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
224 QString ogrFeatureStyle( double mmScaleFactor, double mapUnitScaleFactor ) const override;
225 bool writeDxf( QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) ) const override;
226 void setOutputUnit( Qgis::RenderUnit unit ) override;
227 Qgis::RenderUnit outputUnit() const override;
228 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
229 QgsMapUnitScale mapUnitScale() const override;
230 bool usesMapUnits() const override;
231 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
232 QColor fillColor() const override { return mColor; }
233 void setFillColor( const QColor &color ) override { mColor = color; }
234 void setColor( const QColor &color ) override;
235 QColor color() const override;
236
237 // new methods
238
245 QColor strokeColor() const override { return mStrokeColor; }
246
254 void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
255
262 Qt::PenStyle strokeStyle() const { return mStrokeStyle; }
263
271 void setStrokeStyle( Qt::PenStyle strokeStyle ) { mStrokeStyle = strokeStyle; }
272
280 Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
281
290 void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
291
300 Qt::PenCapStyle penCapStyle() const { return mPenCapStyle; }
301
310 void setPenCapStyle( Qt::PenCapStyle style ) { mPenCapStyle = style; }
311
318 double strokeWidth() const { return mStrokeWidth; }
319
327 void setStrokeWidth( double w ) { mStrokeWidth = w; }
328
336 void setStrokeWidthUnit( Qgis::RenderUnit u ) { mStrokeWidthUnit = u; }
337
344 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
345
353 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
354
361 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
362
363 protected:
364
371 void drawMarker( QPainter *p, QgsSymbolRenderContext &context );
372
377 bool prepareCache( QgsSymbolRenderContext &context );
378
382 Qt::PenStyle mStrokeStyle = Qt::SolidLine;
384 double mStrokeWidth = 0;
390 Qt::PenJoinStyle mPenJoinStyle;
392 Qt::PenCapStyle mPenCapStyle = Qt::SquareCap;
394 QPen mPen;
396 QBrush mBrush;
397
399 QImage mCache;
403 QBrush mSelBrush;
405 QImage mSelCache;
406
411 bool mUsingCache = false;
412
414 static const int MAXIMUM_CACHE_WIDTH = 3000;
415
416 private:
417 // cppcheck-suppress unusedPrivateFunction
418 void draw( QgsSymbolRenderContext &context, Qgis::MarkerShape shape, const QPolygonF &polygon, const QPainterPath &path ) override SIP_FORCE;
419
420 double mCachedOpacity = 1.0;
421
422};
423
431{
432 public:
433
442 double size = DEFAULT_SIMPLEMARKER_SIZE,
443 double angle = DEFAULT_SIMPLEMARKER_ANGLE,
445
447
453 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
454
455 QString layerType() const override;
456 void startRender( QgsSymbolRenderContext &context ) override;
457 void stopRender( QgsSymbolRenderContext &context ) override;
458 QVariantMap properties() const override;
459 QgsFilledMarkerSymbolLayer *clone() const override SIP_FACTORY;
460 QgsSymbol *subSymbol() override;
461 bool setSubSymbol( QgsSymbol *symbol SIP_TRANSFER ) override;
462 double estimateMaxBleed( const QgsRenderContext &context ) const override;
463 QSet<QString> usedAttributes( const QgsRenderContext &context ) const override;
464 bool hasDataDefinedProperties() const override;
465 void setColor( const QColor &c ) override;
466 QColor color() const override;
467 bool usesMapUnits() const override;
468 void setOutputUnit( Qgis::RenderUnit unit ) override;
469
470 private:
471#ifdef SIP_RUN
473#endif
474
475 // cppcheck-suppress unusedPrivateFunction
476 void draw( QgsSymbolRenderContext &context, Qgis::MarkerShape shape, const QPolygonF &polygon, const QPainterPath &path ) override SIP_FORCE;
477
479 std::unique_ptr< QgsFillSymbol > mFill;
480};
481
483
484#define DEFAULT_SVGMARKER_SIZE 2*DEFAULT_POINT_SIZE
485#define DEFAULT_SVGMARKER_ANGLE 0
486
492{
493 public:
495 QgsSvgMarkerSymbolLayer( const QString &path,
496 double size = DEFAULT_SVGMARKER_SIZE,
497 double angle = DEFAULT_SVGMARKER_ANGLE,
499
501
502 // static stuff
503
505 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
506 static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
507
512 static void resolvePaths( QVariantMap &properties, const QgsPathResolver &pathResolver, bool saving );
513
514 // implemented from base classes
515
516 QString layerType() const override;
517 Qgis::SymbolLayerFlags flags() const override;
518 void startRender( QgsSymbolRenderContext &context ) override;
519 void stopRender( QgsSymbolRenderContext &context ) override;
520 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
521 QVariantMap properties() const override;
522 bool usesMapUnits() const override;
523 QgsSvgMarkerSymbolLayer *clone() const override SIP_FACTORY;
524 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
525
530 QString path() const { return mPath; }
531
537 void setPath( const QString &path );
538
543 double defaultAspectRatio() const { return mDefaultAspectRatio; }
544
550 double updateDefaultAspectRatio();
551
556 bool preservedAspectRatio() const { return mFixedAspectRatio <= 0.0; }
557
564 bool setPreservedAspectRatio( bool par );
565
571 double fixedAspectRatio() const { return mFixedAspectRatio; }
572
579 void setFixedAspectRatio( double ratio ) { mFixedAspectRatio = ratio; }
580
581 QColor fillColor() const override { return color(); }
582 void setFillColor( const QColor &color ) override { setColor( color ); }
583
584 QColor strokeColor() const override { return mStrokeColor; }
585 void setStrokeColor( const QColor &c ) override { mStrokeColor = c; }
586
587 double strokeWidth() const { return mStrokeWidth; }
588 void setStrokeWidth( double w ) { mStrokeWidth = w; }
589
594 QMap<QString, QgsProperty> parameters() const { return mParameters; }
595
600 void setParameters( const QMap<QString, QgsProperty> &parameters );
601
607 void setStrokeWidthUnit( Qgis::RenderUnit unit ) { mStrokeWidthUnit = unit; }
608
613 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
614
615 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
616 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
617
618 void setOutputUnit( Qgis::RenderUnit unit ) override;
619 Qgis::RenderUnit outputUnit() const override;
620
621 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
622 QgsMapUnitScale mapUnitScale() const override;
623
624 bool writeDxf( QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) ) const override;
625
626 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
627
628 void prepareExpressions( const QgsSymbolRenderContext &context ) override;
629
630 QSet<QString> usedAttributes( const QgsRenderContext &context ) const override;
631
632 protected:
633
640 double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
641
642 QString mPath;
643
645 double mDefaultAspectRatio = 0.0;
647 double mFixedAspectRatio = 0.0;
648 //param(fill), param(stroke), param(stroke-width) are going
649 //to be replaced in memory
650 bool mHasFillParam = false;
653 QMap<QString, QgsProperty> mParameters;
654
657
658 private:
659 double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
660 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledWidth, double scaledHeight, QPointF &offset, double &angle ) const;
661
662};
663
664
666
667#define DEFAULT_RASTERMARKER_SIZE 2*DEFAULT_POINT_SIZE
668#define DEFAULT_RASTERMARKER_ANGLE 0
669
677{
678 public:
680 QgsRasterMarkerSymbolLayer( const QString &path = QString(),
681 double size = DEFAULT_SVGMARKER_SIZE,
682 double angle = DEFAULT_SVGMARKER_ANGLE,
684
686
687 // static stuff
688
693 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
694
699 static void resolvePaths( QVariantMap &properties, const QgsPathResolver &pathResolver, bool saving );
700
701 // implemented from base classes
702
703 QString layerType() const override;
704 Qgis::SymbolLayerFlags flags() const override;
705 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
706 QVariantMap properties() const override;
707 QgsRasterMarkerSymbolLayer *clone() const override SIP_FACTORY;
708 bool usesMapUnits() const override;
709 QColor color() const override;
710
717 double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
718
723 QString path() const { return mPath; }
724
730 void setPath( const QString &path );
731
737 double opacity() const { return mOpacity; }
738
744 void setOpacity( double opacity ) { mOpacity = opacity; }
745
750 double defaultAspectRatio() const { return mDefaultAspectRatio; }
751
757 double updateDefaultAspectRatio();
758
763 bool preservedAspectRatio() const { return mFixedAspectRatio <= 0.0; }
764
771 bool setPreservedAspectRatio( bool par );
772
778 double fixedAspectRatio() const { return mFixedAspectRatio; }
779
786 void setFixedAspectRatio( double ratio ) { mFixedAspectRatio = ratio; }
787
788 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
789 QgsMapUnitScale mapUnitScale() const override;
790
791 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
792
793 protected:
794
800 void setCommonProperties( const QVariantMap &properties );
801
807 void copyCommonProperties( QgsRasterMarkerSymbolLayer *other ) const;
808
814 virtual QImage fetchImage( QgsRenderContext &context, const QString &path, QSize size, bool preserveAspectRatio, double opacity ) const SIP_SKIP;
815
816 QString mPath;
818 double mOpacity = 1.0;
820 double mDefaultAspectRatio = 0.0;
822 double mFixedAspectRatio = 0.0;
823
824 private:
825 double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
826 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledWidth, double scaledHeight, QPointF &offset, double &angle ) const;
827
828};
829
830
832
833#define POINT2MM(x) ( (x) * 25.4 / 72 ) // point is 1/72 of inch
834#define MM2POINT(x) ( (x) * 72 / 25.4 )
835
836#define DEFAULT_FONTMARKER_FONT "Dingbats"
837#define DEFAULT_FONTMARKER_CHR QChar('A')
838#define DEFAULT_FONTMARKER_SIZE POINT2MM(12)
839#define DEFAULT_FONTMARKER_COLOR QColor( 35, 35, 35 )
840#define DEFAULT_FONTMARKER_BORDERCOLOR QColor(Qt::white)
841#define DEFAULT_FONTMARKER_JOINSTYLE Qt::MiterJoin
842#define DEFAULT_FONTMARKER_ANGLE 0
843
849{
850 public:
851
853 QgsFontMarkerSymbolLayer( const QString &fontFamily = DEFAULT_FONTMARKER_FONT,
854 QString chr = DEFAULT_FONTMARKER_CHR,
855 double pointSize = DEFAULT_FONTMARKER_SIZE,
856 const QColor &color = DEFAULT_FONTMARKER_COLOR,
857 double angle = DEFAULT_FONTMARKER_ANGLE );
858
860
861 // static stuff
862
866 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
867
871 static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
872
879 static void resolveFonts( const QVariantMap &properties, const QgsReadWriteContext &context );
880
881 // implemented from base classes
882
883 QString layerType() const override;
884 Qgis::SymbolLayerFlags flags() const override;
885
886 void startRender( QgsSymbolRenderContext &context ) override;
887
888 void stopRender( QgsSymbolRenderContext &context ) override;
889
890 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
891
892 QVariantMap properties() const override;
893
894 QgsFontMarkerSymbolLayer *clone() const override SIP_FACTORY;
895
896 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
897 bool usesMapUnits() const override;
898 void setOutputUnit( Qgis::RenderUnit unit ) override;
899
900 // new methods
901
907 QString fontFamily() const { return mFontFamily; }
908
914 void setFontFamily( const QString &family ) { mFontFamily = family; }
915
922 QString fontStyle() const { return mFontStyle; }
923
930 void setFontStyle( const QString &style ) { mFontStyle = style; }
931
937 QString character() const { return mString; }
938
944 void setCharacter( QString chr ) { mString = chr; }
945
946 QColor strokeColor() const override { return mStrokeColor; }
947 void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
948
957 double strokeWidth() const { return mStrokeWidth; }
958
967 void setStrokeWidth( double width ) { mStrokeWidth = width; }
968
977 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
978
986 void setStrokeWidthUnit( Qgis::RenderUnit unit ) { mStrokeWidthUnit = unit; }
987
996 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
997
1006 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
1007
1014 Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
1015
1022 void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
1023
1024 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
1025
1026 private:
1027
1028 QString mFontFamily;
1029 QString mFontStyle;
1030 QFont mFont;
1031 std::unique_ptr< QFontMetrics >mFontMetrics;
1032
1033 QString mString;
1034
1035 double mChrWidth = 0;
1036 QPointF mChrOffset;
1038 double mFontSizeScale = 1.0;
1039 double mOrigSize;
1040
1041 QColor mStrokeColor;
1042 double mStrokeWidth;
1043 Qgis::RenderUnit mStrokeWidthUnit;
1044 QgsMapUnitScale mStrokeWidthMapUnitScale;
1045 Qt::PenJoinStyle mPenJoinStyle;
1046
1047 QPen mPen;
1048 QBrush mBrush;
1049
1050 bool mUseCachedPath = false;
1051 QPainterPath mCachedPath;
1052
1053 // If font has a zero (or nearly zero) size, we skip rendering altogether..
1054 bool mNonZeroFontSize = true;
1055
1056 QString characterToRender( QgsSymbolRenderContext &context, QPointF &charOffset, double &charWidth );
1057 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedRotation, QPointF &offset, double &angle ) const;
1058 double calculateSize( QgsSymbolRenderContext &context );
1059};
1060
1061
1073{
1074 public:
1075
1079 QgsAnimatedMarkerSymbolLayer( const QString &path = QString(),
1080 double size = DEFAULT_RASTERMARKER_SIZE,
1081 double angle = DEFAULT_RASTERMARKER_ANGLE );
1082
1084
1085 // static stuff
1086
1090 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
1091
1092 // implemented from base classes
1093
1094 QString layerType() const override;
1095 QVariantMap properties() const override;
1096 QgsAnimatedMarkerSymbolLayer *clone() const override SIP_FACTORY;
1097
1103 void setFrameRate( double rate ) { mFrameRateFps = rate; }
1104
1110 double frameRate() const { return mFrameRateFps; }
1111
1112 void startRender( QgsSymbolRenderContext &context ) override;
1113
1114 protected:
1115 QImage fetchImage( QgsRenderContext &context, const QString &path, QSize size, bool preserveAspectRatio, double opacity ) const override SIP_SKIP;
1116
1117 private:
1118 double mFrameRateFps = 10;
1119 bool mStaticPath = false;
1120 mutable QSet< QString > mPreparedPaths;
1121
1122};
1123
1124// clazy:excludeall=qstring-allocations
1125
1126#endif
1127
1128
The Qgis class provides global constants for use throughout the application.
Definition qgis.h:54
ScaleMethod
Scale methods.
Definition qgis.h:434
MarkerShape
Marker shapes.
Definition qgis.h:2633
RenderUnit
Rendering size units.
Definition qgis.h:4494
@ 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.
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
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.
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
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
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