QGIS API Documentation 3.39.0-Master (8f4da32b6b8)
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
572 double fixedAspectRatio() const { return mFixedAspectRatio; }
573
581 void setFixedAspectRatio( double ratio ) { mFixedAspectRatio = ratio; }
582
583 QColor fillColor() const override { return color(); }
584 void setFillColor( const QColor &color ) override { setColor( color ); }
585
586 QColor strokeColor() const override { return mStrokeColor; }
587 void setStrokeColor( const QColor &c ) override { mStrokeColor = c; }
588
589 double strokeWidth() const { return mStrokeWidth; }
590 void setStrokeWidth( double w ) { mStrokeWidth = w; }
591
596 QMap<QString, QgsProperty> parameters() const { return mParameters; }
597
602 void setParameters( const QMap<QString, QgsProperty> &parameters );
603
609 void setStrokeWidthUnit( Qgis::RenderUnit unit ) { mStrokeWidthUnit = unit; }
610
615 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
616
617 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
618 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
619
620 void setOutputUnit( Qgis::RenderUnit unit ) override;
621 Qgis::RenderUnit outputUnit() const override;
622
623 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
624 QgsMapUnitScale mapUnitScale() const override;
625
626 bool writeDxf( QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) ) const override;
627
628 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
629
630 void prepareExpressions( const QgsSymbolRenderContext &context ) override;
631
632 QSet<QString> usedAttributes( const QgsRenderContext &context ) const override;
633
634 protected:
635
642 double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
643
644 QString mPath;
645
647 double mDefaultAspectRatio = 0.0;
649 double mFixedAspectRatio = 0.0;
650 //param(fill), param(stroke), param(stroke-width) are going
651 //to be replaced in memory
652 bool mHasFillParam = false;
655 QMap<QString, QgsProperty> mParameters;
656
659
660 private:
661 double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
662 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledWidth, double scaledHeight, QPointF &offset, double &angle ) const;
663
664};
665
666
668
669#define DEFAULT_RASTERMARKER_SIZE 2*DEFAULT_POINT_SIZE
670#define DEFAULT_RASTERMARKER_ANGLE 0
671
679{
680 public:
682 QgsRasterMarkerSymbolLayer( const QString &path = QString(),
683 double size = DEFAULT_SVGMARKER_SIZE,
684 double angle = DEFAULT_SVGMARKER_ANGLE,
686
688
689 // static stuff
690
695 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
696
701 static void resolvePaths( QVariantMap &properties, const QgsPathResolver &pathResolver, bool saving );
702
703 // implemented from base classes
704
705 QString layerType() const override;
706 Qgis::SymbolLayerFlags flags() const override;
707 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
708 QVariantMap properties() const override;
709 QgsRasterMarkerSymbolLayer *clone() const override SIP_FACTORY;
710 bool usesMapUnits() const override;
711 QColor color() const override;
712
719 double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
720
725 QString path() const { return mPath; }
726
732 void setPath( const QString &path );
733
739 double opacity() const { return mOpacity; }
740
746 void setOpacity( double opacity ) { mOpacity = opacity; }
747
752 double defaultAspectRatio() const { return mDefaultAspectRatio; }
753
759 double updateDefaultAspectRatio();
760
765 bool preservedAspectRatio() const { return mFixedAspectRatio <= 0.0; }
766
773 bool setPreservedAspectRatio( bool par );
774
781 double fixedAspectRatio() const { return mFixedAspectRatio; }
782
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,
861 double angle = DEFAULT_FONTMARKER_ANGLE );
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 Qgis::SymbolLayerFlags flags() const override;
889
890 void startRender( QgsSymbolRenderContext &context ) override;
891
892 void stopRender( QgsSymbolRenderContext &context ) override;
893
894 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
895
896 QVariantMap properties() const override;
897
898 QgsFontMarkerSymbolLayer *clone() const override SIP_FACTORY;
899
900 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
901 bool usesMapUnits() const override;
902 void setOutputUnit( Qgis::RenderUnit unit ) override;
903
904 // new methods
905
911 QString fontFamily() const { return mFontFamily; }
912
918 void setFontFamily( const QString &family ) { mFontFamily = family; }
919
926 QString fontStyle() const { return mFontStyle; }
927
934 void setFontStyle( const QString &style ) { mFontStyle = style; }
935
941 QString character() const { return mString; }
942
948 void setCharacter( QString chr ) { mString = chr; }
949
950 QColor strokeColor() const override { return mStrokeColor; }
951 void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
952
961 double strokeWidth() const { return mStrokeWidth; }
962
971 void setStrokeWidth( double width ) { mStrokeWidth = width; }
972
981 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
982
990 void setStrokeWidthUnit( Qgis::RenderUnit unit ) { mStrokeWidthUnit = unit; }
991
1000 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
1001
1010 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
1011
1018 Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
1019
1026 void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
1027
1028 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
1029
1030 private:
1031
1032 QString mFontFamily;
1033 QString mFontStyle;
1034 QFont mFont;
1035 std::unique_ptr< QFontMetrics >mFontMetrics;
1036
1037 QString mString;
1038
1039 double mChrWidth = 0;
1040 QPointF mChrOffset;
1042 double mFontSizeScale = 1.0;
1043 double mOrigSize;
1044
1045 QColor mStrokeColor;
1046 double mStrokeWidth;
1047 Qgis::RenderUnit mStrokeWidthUnit;
1048 QgsMapUnitScale mStrokeWidthMapUnitScale;
1049 Qt::PenJoinStyle mPenJoinStyle;
1050
1051 QPen mPen;
1052 QBrush mBrush;
1053
1054 bool mUseCachedPath = false;
1055 QPainterPath mCachedPath;
1056
1057 // If font has a zero (or nearly zero) size, we skip rendering altogether..
1058 bool mNonZeroFontSize = true;
1059
1060 QString characterToRender( QgsSymbolRenderContext &context, QPointF &charOffset, double &charWidth );
1061 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedRotation, QPointF &offset, double &angle ) const;
1062 double calculateSize( QgsSymbolRenderContext &context );
1063};
1064
1065
1077{
1078 public:
1079
1083 QgsAnimatedMarkerSymbolLayer( const QString &path = QString(),
1084 double size = DEFAULT_RASTERMARKER_SIZE,
1085 double angle = DEFAULT_RASTERMARKER_ANGLE );
1086
1088
1089 // static stuff
1090
1094 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
1095
1096 // implemented from base classes
1097
1098 QString layerType() const override;
1099 QVariantMap properties() const override;
1100 QgsAnimatedMarkerSymbolLayer *clone() const override SIP_FACTORY;
1101
1107 void setFrameRate( double rate ) { mFrameRateFps = rate; }
1108
1114 double frameRate() const { return mFrameRateFps; }
1115
1116 void startRender( QgsSymbolRenderContext &context ) override;
1117
1118 protected:
1119 QImage fetchImage( QgsRenderContext &context, const QString &path, QSize size, bool preserveAspectRatio, double opacity ) const override SIP_SKIP;
1120
1121 private:
1122 double mFrameRateFps = 10;
1123 bool mStaticPath = false;
1124 mutable QSet< QString > mPreparedPaths;
1125
1126};
1127
1128// clazy:excludeall=qstring-allocations
1129
1130#endif
1131
1132
The Qgis class provides global constants for use throughout the application.
Definition qgis.h:54
ScaleMethod
Scale methods.
Definition qgis.h:588
MarkerShape
Marker shapes.
Definition qgis.h:2847
RenderUnit
Rendering size units.
Definition qgis.h:4818
@ 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: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