QGIS API Documentation 3.41.0-Master (af5edcb665c)
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,
500
502
503 // static stuff
504
506 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
507 static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
508
513 static void resolvePaths( QVariantMap &properties, const QgsPathResolver &pathResolver, bool saving );
514
515 // implemented from base classes
516
517 QString layerType() const override;
518 Qgis::SymbolLayerFlags flags() const override;
519 void startRender( QgsSymbolRenderContext &context ) override;
520 void stopRender( QgsSymbolRenderContext &context ) override;
521 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
522 QVariantMap properties() const override;
523 bool usesMapUnits() const override;
524 QgsSvgMarkerSymbolLayer *clone() const override SIP_FACTORY;
525 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
526
531 QString path() const { return mPath; }
532
538 void setPath( const QString &path );
539
544 double defaultAspectRatio() const { return mDefaultAspectRatio; }
545
551 double updateDefaultAspectRatio();
552
557 bool preservedAspectRatio() const { return mFixedAspectRatio <= 0.0; }
558
565 bool setPreservedAspectRatio( bool par );
566
573 double fixedAspectRatio() const { return mFixedAspectRatio; }
574
582 void setFixedAspectRatio( double ratio ) { mFixedAspectRatio = ratio; }
583
584 QColor fillColor() const override { return color(); }
585 void setFillColor( const QColor &color ) override { setColor( color ); }
586
587 QColor strokeColor() const override { return mStrokeColor; }
588 void setStrokeColor( const QColor &c ) override { mStrokeColor = c; }
589
590 double strokeWidth() const { return mStrokeWidth; }
591 void setStrokeWidth( double w ) { mStrokeWidth = w; }
592
597 QMap<QString, QgsProperty> parameters() const { return mParameters; }
598
603 void setParameters( const QMap<QString, QgsProperty> &parameters );
604
610 void setStrokeWidthUnit( Qgis::RenderUnit unit ) { mStrokeWidthUnit = unit; }
611
616 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
617
618 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
619 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
620
621 void setOutputUnit( Qgis::RenderUnit unit ) override;
622 Qgis::RenderUnit outputUnit() const override;
623
624 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
625 QgsMapUnitScale mapUnitScale() const override;
626
627 bool writeDxf( QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) ) const override;
628
629 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
630
631 void prepareExpressions( const QgsSymbolRenderContext &context ) override;
632
633 QSet<QString> usedAttributes( const QgsRenderContext &context ) const override;
634
635 protected:
636
643 double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
644
645 QString mPath;
646
648 double mDefaultAspectRatio = 0.0;
650 double mFixedAspectRatio = 0.0;
651 //param(fill), param(stroke), param(stroke-width) are going
652 //to be replaced in memory
653 bool mHasFillParam = false;
656 QMap<QString, QgsProperty> mParameters;
657
660
661 private:
662 double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
663 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledWidth, double scaledHeight, QPointF &offset, double &angle ) const;
664
665};
666
667
669
670#define DEFAULT_RASTERMARKER_SIZE 2*DEFAULT_POINT_SIZE
671#define DEFAULT_RASTERMARKER_ANGLE 0
672
680{
681 public:
683 QgsRasterMarkerSymbolLayer( const QString &path = QString(),
684 double size = DEFAULT_SVGMARKER_SIZE,
685 double angle = DEFAULT_SVGMARKER_ANGLE,
687
689
690 // static stuff
691
696 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
697
702 static void resolvePaths( QVariantMap &properties, const QgsPathResolver &pathResolver, bool saving );
703
704 // implemented from base classes
705
706 QString layerType() const override;
707 Qgis::SymbolLayerFlags flags() const override;
708 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
709 QVariantMap properties() const override;
710 QgsRasterMarkerSymbolLayer *clone() const override SIP_FACTORY;
711 bool usesMapUnits() const override;
712 QColor color() const override;
713
720 double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
721
726 QString path() const { return mPath; }
727
733 void setPath( const QString &path );
734
740 double opacity() const { return mOpacity; }
741
747 void setOpacity( double opacity ) { mOpacity = opacity; }
748
753 double defaultAspectRatio() const { return mDefaultAspectRatio; }
754
760 double updateDefaultAspectRatio();
761
766 bool preservedAspectRatio() const { return mFixedAspectRatio <= 0.0; }
767
774 bool setPreservedAspectRatio( bool par );
775
782 double fixedAspectRatio() const { return mFixedAspectRatio; }
783
791 void setFixedAspectRatio( double ratio ) { mFixedAspectRatio = ratio; }
792
793 void setMapUnitScale( const QgsMapUnitScale &scale ) override;
794 QgsMapUnitScale mapUnitScale() const override;
795
796 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
797
798 protected:
799
805 void setCommonProperties( const QVariantMap &properties );
806
812 void copyCommonProperties( QgsRasterMarkerSymbolLayer *other ) const;
813
819 virtual QImage fetchImage( QgsRenderContext &context, const QString &path, QSize size, bool preserveAspectRatio, double opacity ) const SIP_SKIP;
820
821 QString mPath;
823 double mOpacity = 1.0;
825 double mDefaultAspectRatio = 0.0;
827 double mFixedAspectRatio = 0.0;
828
829 private:
830 double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
831 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledWidth, double scaledHeight, QPointF &offset, double &angle ) const;
832
833};
834
835
837
838#define POINT2MM(x) ( (x) * 25.4 / 72 ) // point is 1/72 of inch
839#define MM2POINT(x) ( (x) * 72 / 25.4 )
840
841#define DEFAULT_FONTMARKER_FONT "Dingbats"
842#define DEFAULT_FONTMARKER_CHR QChar('A')
843#define DEFAULT_FONTMARKER_SIZE POINT2MM(12)
844#define DEFAULT_FONTMARKER_COLOR QColor( 35, 35, 35 )
845#define DEFAULT_FONTMARKER_BORDERCOLOR QColor(Qt::white)
846#define DEFAULT_FONTMARKER_JOINSTYLE Qt::MiterJoin
847#define DEFAULT_FONTMARKER_ANGLE 0
848
854{
855 public:
856
858 QgsFontMarkerSymbolLayer( const QString &fontFamily = DEFAULT_FONTMARKER_FONT,
859 QString chr = DEFAULT_FONTMARKER_CHR,
860 double pointSize = DEFAULT_FONTMARKER_SIZE,
861 const QColor &color = DEFAULT_FONTMARKER_COLOR,
862 double angle = DEFAULT_FONTMARKER_ANGLE );
863
865
866 // static stuff
867
871 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
872
876 static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
877
884 static void resolveFonts( const QVariantMap &properties, const QgsReadWriteContext &context );
885
886 // implemented from base classes
887
888 QString layerType() const override;
889 Qgis::SymbolLayerFlags flags() const override;
890
891 void startRender( QgsSymbolRenderContext &context ) override;
892
893 void stopRender( QgsSymbolRenderContext &context ) override;
894
895 void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
896
897 QVariantMap properties() const override;
898
899 QgsFontMarkerSymbolLayer *clone() const override SIP_FACTORY;
900
901 void writeSldMarker( QDomDocument &doc, QDomElement &element, const QVariantMap &props ) const override;
902 bool usesMapUnits() const override;
903 void setOutputUnit( Qgis::RenderUnit unit ) override;
904
905 // new methods
906
912 QString fontFamily() const { return mFontFamily; }
913
919 void setFontFamily( const QString &family ) { mFontFamily = family; }
920
927 QString fontStyle() const { return mFontStyle; }
928
935 void setFontStyle( const QString &style ) { mFontStyle = style; }
936
942 QString character() const { return mString; }
943
949 void setCharacter( QString chr ) { mString = chr; }
950
951 QColor strokeColor() const override { return mStrokeColor; }
952 void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
953
962 double strokeWidth() const { return mStrokeWidth; }
963
972 void setStrokeWidth( double width ) { mStrokeWidth = width; }
973
982 Qgis::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
983
991 void setStrokeWidthUnit( Qgis::RenderUnit unit ) { mStrokeWidthUnit = unit; }
992
1001 const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
1002
1011 void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
1012
1019 Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
1020
1027 void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
1028
1029 QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
1030
1031 private:
1032
1033 QString mFontFamily;
1034 QString mFontStyle;
1035 QFont mFont;
1036 std::unique_ptr< QFontMetrics >mFontMetrics;
1037
1038 QString mString;
1039
1040 double mChrWidth = 0;
1041 QPointF mChrOffset;
1043 double mFontSizeScale = 1.0;
1044 double mOrigSize;
1045
1046 QColor mStrokeColor;
1047 double mStrokeWidth;
1048 Qgis::RenderUnit mStrokeWidthUnit;
1049 QgsMapUnitScale mStrokeWidthMapUnitScale;
1050 Qt::PenJoinStyle mPenJoinStyle;
1051
1052 QPen mPen;
1053 QBrush mBrush;
1054
1055 bool mUseCachedPath = false;
1056 QPainterPath mCachedPath;
1057
1058 // If font has a zero (or nearly zero) size, we skip rendering altogether..
1059 bool mNonZeroFontSize = true;
1060
1061 QString characterToRender( QgsSymbolRenderContext &context, QPointF &charOffset, double &charWidth );
1062 void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedRotation, QPointF &offset, double &angle ) const;
1063 double calculateSize( QgsSymbolRenderContext &context );
1064};
1065
1066
1078{
1079 public:
1080
1084 QgsAnimatedMarkerSymbolLayer( const QString &path = QString(),
1085 double size = DEFAULT_RASTERMARKER_SIZE,
1086 double angle = DEFAULT_RASTERMARKER_ANGLE );
1087
1089
1090 // static stuff
1091
1095 static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY; // cppcheck-suppress duplInheritedMember
1096
1097 // implemented from base classes
1098
1099 QString layerType() const override;
1100 QVariantMap properties() const override;
1101 QgsAnimatedMarkerSymbolLayer *clone() const override SIP_FACTORY;
1102
1108 void setFrameRate( double rate ) { mFrameRateFps = rate; }
1109
1115 double frameRate() const { return mFrameRateFps; }
1116
1117 void startRender( QgsSymbolRenderContext &context ) override;
1118
1119 protected:
1120 QImage fetchImage( QgsRenderContext &context, const QString &path, QSize size, bool preserveAspectRatio, double opacity ) const override SIP_SKIP;
1121
1122 private:
1123 double mFrameRateFps = 10;
1124 bool mStaticPath = false;
1125 mutable QSet< QString > mPreparedPaths;
1126
1127};
1128
1129// clazy:excludeall=qstring-allocations
1130
1131#endif
1132
1133
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:2920
RenderUnit
Rendering size units.
Definition qgis.h:4910
@ 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