QGIS API Documentation  3.9.0-Master (224899f119)
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 
44 {
45  public:
46 
48  enum Shape
49  {
56  Star,
62  Line,
73  };
74 
76  static QList< QgsSimpleMarkerSymbolLayerBase::Shape > availableShapes();
77 
83  static bool shapeIsFilled( QgsSimpleMarkerSymbolLayerBase::Shape shape );
84 
93  double size = DEFAULT_SIMPLEMARKER_SIZE,
96 
101  QgsSimpleMarkerSymbolLayerBase::Shape shape() const { return mShape; }
102 
108  void setShape( QgsSimpleMarkerSymbolLayerBase::Shape shape ) { mShape = shape; }
109 
118  static QgsSimpleMarkerSymbolLayerBase::Shape decodeShape( const QString &name, bool *ok = nullptr );
119 
126  static QString encodeShape( QgsSimpleMarkerSymbolLayerBase::Shape shape );
127 
128  void startRender( QgsSymbolRenderContext &context ) override;
129  void stopRender( QgsSymbolRenderContext &context ) override;
130  void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
131  QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
132 
133  protected:
134 
138  bool prepareMarkerShape( Shape shape );
139 
143  bool prepareMarkerPath( Shape symbol );
144 
151  bool shapeToPolygon( Shape shape, QPolygonF &polygon ) const;
152 
159  double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
160 
169  void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedRotation, QPointF &offset, double &angle ) const;
170 
172  QPolygonF mPolygon;
173 
175  QPainterPath mPath;
176 
179 
180  private:
181 
190  virtual void draw( QgsSymbolRenderContext &context, QgsSimpleMarkerSymbolLayerBase::Shape shape, const QPolygonF &polygon, const QPainterPath &path ) = 0 SIP_FORCE;
191 };
192 
199 {
200  public:
201 
213  double size = DEFAULT_SIMPLEMARKER_SIZE,
216  const QColor &color = DEFAULT_SIMPLEMARKER_COLOR,
217  const QColor &strokeColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR,
218  Qt::PenJoinStyle penJoinStyle = DEFAULT_SIMPLEMARKER_JOINSTYLE );
219 
220  // static methods
221 
227  static QgsSymbolLayer *create( const QgsStringMap &properties = QgsStringMap() ) SIP_FACTORY;
228 
234  static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
235 
236  // reimplemented from base classes
237 
238  QString layerType() const override;
239  void startRender( QgsSymbolRenderContext &context ) override;
240  void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
241  QgsStringMap properties() const override;
242  QgsSimpleMarkerSymbolLayer *clone() const override SIP_FACTORY;
243  void writeSldMarker( QDomDocument &doc, QDomElement &element, const QgsStringMap &props ) const override;
244  QString ogrFeatureStyle( double mmScaleFactor, double mapUnitScaleFactor ) const override;
245  bool writeDxf( QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) ) const override;
246  void setOutputUnit( QgsUnitTypes::RenderUnit unit ) override;
247  QgsUnitTypes::RenderUnit outputUnit() const override;
248  void setMapUnitScale( const QgsMapUnitScale &scale ) override;
249  QgsMapUnitScale mapUnitScale() const override;
250  QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
251  QColor fillColor() const override { return mColor; }
252  void setFillColor( const QColor &color ) override { mColor = color; }
253  void setColor( const QColor &color ) override;
254  QColor color() const override;
255 
256  // new methods
257 
264  QColor strokeColor() const override { return mStrokeColor; }
265 
273  void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
274 
282  Qt::PenStyle strokeStyle() const { return mStrokeStyle; }
283 
292  void setStrokeStyle( Qt::PenStyle strokeStyle ) { mStrokeStyle = strokeStyle; }
293 
301  Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
302 
311  void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
312 
319  double strokeWidth() const { return mStrokeWidth; }
320 
328  void setStrokeWidth( double w ) { mStrokeWidth = w; }
329 
337  void setStrokeWidthUnit( QgsUnitTypes::RenderUnit u ) { mStrokeWidthUnit = u; }
338 
345  QgsUnitTypes::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
346 
354  void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
355 
362  const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
363 
364  protected:
365 
372  void drawMarker( QPainter *p, QgsSymbolRenderContext &context );
373 
378  bool prepareCache( QgsSymbolRenderContext &context );
379 
381  QColor mStrokeColor;
383  Qt::PenStyle mStrokeStyle = Qt::SolidLine;
385  double mStrokeWidth = 0;
391  Qt::PenJoinStyle mPenJoinStyle;
393  QPen mPen;
395  QBrush mBrush;
396 
398  QImage mCache;
400  QPen mSelPen;
402  QBrush mSelBrush;
404  QImage mSelCache;
405 
410  bool mUsingCache = false;
412  static const int MAXIMUM_CACHE_WIDTH = 3000;
413 
414  private:
415 
416  void draw( QgsSymbolRenderContext &context, QgsSimpleMarkerSymbolLayerBase::Shape shape, const QPolygonF &polygon, const QPainterPath &path ) override SIP_FORCE;
417 };
418 
427 {
428  public:
429 
438  double size = DEFAULT_SIMPLEMARKER_SIZE,
441 
447  static QgsSymbolLayer *create( const QgsStringMap &properties = QgsStringMap() ) SIP_FACTORY;
448 
449  QString layerType() const override;
450  void startRender( QgsSymbolRenderContext &context ) override;
451  void stopRender( QgsSymbolRenderContext &context ) override;
452  QgsStringMap properties() const override;
453  QgsFilledMarkerSymbolLayer *clone() const override SIP_FACTORY;
454  QgsSymbol *subSymbol() override;
455  bool setSubSymbol( QgsSymbol *symbol SIP_TRANSFER ) override;
456  double estimateMaxBleed( const QgsRenderContext &context ) const override;
457  QSet<QString> usedAttributes( const QgsRenderContext &context ) const override;
458  bool hasDataDefinedProperties() const override;
459  void setColor( const QColor &c ) override;
460  QColor color() const override;
461 
462  private:
463 #ifdef SIP_RUN
465 #endif
466 
467  void draw( QgsSymbolRenderContext &context, QgsSimpleMarkerSymbolLayerBase::Shape shape, const QPolygonF &polygon, const QPainterPath &path ) override SIP_FORCE;
468 
470  std::unique_ptr< QgsFillSymbol > mFill;
471 };
472 
474 
475 #define DEFAULT_SVGMARKER_SIZE 2*DEFAULT_POINT_SIZE
476 #define DEFAULT_SVGMARKER_ANGLE 0
477 
483 {
484  public:
486  QgsSvgMarkerSymbolLayer( const QString &path,
487  double size = DEFAULT_SVGMARKER_SIZE,
490 
491  // static stuff
492 
493  static QgsSymbolLayer *create( const QgsStringMap &properties = QgsStringMap() ) SIP_FACTORY;
494  static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
495 
501  static void resolvePaths( QgsStringMap &properties, const QgsPathResolver &pathResolver, bool saving );
502 
503  // implemented from base classes
504 
505  QString layerType() const override;
506 
507  void startRender( QgsSymbolRenderContext &context ) override;
508 
509  void stopRender( QgsSymbolRenderContext &context ) override;
510 
511  void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
512 
513  QgsStringMap properties() const override;
514 
515  QgsSvgMarkerSymbolLayer *clone() const override SIP_FACTORY;
516 
517  void writeSldMarker( QDomDocument &doc, QDomElement &element, const QgsStringMap &props ) const override;
518 
523  QString path() const { return mPath; }
524 
530  void setPath( const QString &path );
531 
536  double defaultAspectRatio() const { return mDefaultAspectRatio; }
537 
543  double updateDefaultAspectRatio();
544 
549  bool preservedAspectRatio() const { return mFixedAspectRatio <= 0.0; }
550 
557  bool setPreservedAspectRatio( bool par );
558 
564  double fixedAspectRatio() const { return mFixedAspectRatio; }
565 
572  void setFixedAspectRatio( double ratio ) { mFixedAspectRatio = ratio; }
573 
574  QColor fillColor() const override { return color(); }
575  void setFillColor( const QColor &color ) override { setColor( color ); }
576 
577  QColor strokeColor() const override { return mStrokeColor; }
578  void setStrokeColor( const QColor &c ) override { mStrokeColor = c; }
579 
580  double strokeWidth() const { return mStrokeWidth; }
581  void setStrokeWidth( double w ) { mStrokeWidth = w; }
582 
588  void setStrokeWidthUnit( QgsUnitTypes::RenderUnit unit ) { mStrokeWidthUnit = unit; }
589 
594  QgsUnitTypes::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
595 
596  void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
597  const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
598 
599  void setOutputUnit( QgsUnitTypes::RenderUnit unit ) override;
600  QgsUnitTypes::RenderUnit outputUnit() const override;
601 
602  void setMapUnitScale( const QgsMapUnitScale &scale ) override;
603  QgsMapUnitScale mapUnitScale() const override;
604 
605  bool writeDxf( QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) ) const override;
606 
607  QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
608 
609  protected:
610 
617  double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
618 
619  QString mPath;
620 
622  double mDefaultAspectRatio = 0.0;
624  double mFixedAspectRatio = 0.0;
625  //param(fill), param(stroke), param(stroke-width) are going
626  //to be replaced in memory
627  QColor mStrokeColor;
628  double mStrokeWidth;
631 
632  private:
633  double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
634  void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, QPointF &offset, double &angle ) const;
635 
636 };
637 
638 
640 
641 #define DEFAULT_RASTERMARKER_SIZE 2*DEFAULT_POINT_SIZE
642 #define DEFAULT_RASTERMARKER_ANGLE 0
643 
651 {
652  public:
654  QgsRasterMarkerSymbolLayer( const QString &path = QString(),
655  double size = DEFAULT_SVGMARKER_SIZE,
658 
659  // static stuff
660 
665  static QgsSymbolLayer *create( const QgsStringMap &properties = QgsStringMap() ) SIP_FACTORY;
666 
672  static void resolvePaths( QgsStringMap &properties, const QgsPathResolver &pathResolver, bool saving );
673 
674  // implemented from base classes
675 
676  QString layerType() const override;
677 
678  void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
679 
680  QgsStringMap properties() const override;
681 
682  QgsRasterMarkerSymbolLayer *clone() const override SIP_FACTORY;
683 
690  double calculateAspectRatio( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedAspectRatio ) const;
691 
696  QString path() const { return mPath; }
697 
703  void setPath( const QString &path );
704 
710  double opacity() const { return mOpacity; }
711 
717  void setOpacity( double opacity ) { mOpacity = opacity; }
718 
723  double defaultAspectRatio() const { return mDefaultAspectRatio; }
724 
730  double updateDefaultAspectRatio();
731 
736  bool preservedAspectRatio() const { return mFixedAspectRatio <= 0.0; }
737 
744  bool setPreservedAspectRatio( bool par );
745 
751  double fixedAspectRatio() const { return mFixedAspectRatio; }
752 
759  void setFixedAspectRatio( double ratio ) { mFixedAspectRatio = ratio; }
760 
761  void setMapUnitScale( const QgsMapUnitScale &scale ) override;
762  QgsMapUnitScale mapUnitScale() const override;
763 
764  QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
765 
766  protected:
767 
768  QString mPath;
770  double mOpacity = 1.0;
772  double mDefaultAspectRatio = 0.0;
774  double mFixedAspectRatio = 0.0;
775 
776  private:
777  double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
778  void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledWidth, double scaledHeight, QPointF &offset, double &angle ) const;
779 
780 };
781 
782 
784 
785 #define POINT2MM(x) ( (x) * 25.4 / 72 ) // point is 1/72 of inch
786 #define MM2POINT(x) ( (x) * 72 / 25.4 )
787 
788 #define DEFAULT_FONTMARKER_FONT "Dingbats"
789 #define DEFAULT_FONTMARKER_CHR QChar('A')
790 #define DEFAULT_FONTMARKER_SIZE POINT2MM(12)
791 #define DEFAULT_FONTMARKER_COLOR QColor( 35, 35, 35 )
792 #define DEFAULT_FONTMARKER_BORDERCOLOR QColor(Qt::white)
793 #define DEFAULT_FONTMARKER_JOINSTYLE Qt::MiterJoin
794 #define DEFAULT_FONTMARKER_ANGLE 0
795 
801 {
802  public:
803 
805  QgsFontMarkerSymbolLayer( const QString &fontFamily = DEFAULT_FONTMARKER_FONT,
806  QString chr = DEFAULT_FONTMARKER_CHR,
807  double pointSize = DEFAULT_FONTMARKER_SIZE,
808  const QColor &color = DEFAULT_FONTMARKER_COLOR,
809  double angle = DEFAULT_FONTMARKER_ANGLE );
810 
811  ~QgsFontMarkerSymbolLayer() override;
812 
813  // static stuff
814 
818  static QgsSymbolLayer *create( const QgsStringMap &properties = QgsStringMap() ) SIP_FACTORY;
819 
823  static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
824 
825  // implemented from base classes
826 
827  QString layerType() const override;
828 
829  void startRender( QgsSymbolRenderContext &context ) override;
830 
831  void stopRender( QgsSymbolRenderContext &context ) override;
832 
833  void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
834 
835  QgsStringMap properties() const override;
836 
837  QgsFontMarkerSymbolLayer *clone() const override SIP_FACTORY;
838 
839  void writeSldMarker( QDomDocument &doc, QDomElement &element, const QgsStringMap &props ) const override;
840 
841  // new methods
842 
848  QString fontFamily() const { return mFontFamily; }
849 
855  void setFontFamily( const QString &family ) { mFontFamily = family; }
856 
862  QString character() const { return mString; }
863 
869  void setCharacter( QString chr ) { mString = chr; }
870 
871  QColor strokeColor() const override { return mStrokeColor; }
872  void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
873 
883  double strokeWidth() const { return mStrokeWidth; }
884 
894  void setStrokeWidth( double width ) { mStrokeWidth = width; }
895 
905  QgsUnitTypes::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
906 
915  void setStrokeWidthUnit( QgsUnitTypes::RenderUnit unit ) { mStrokeWidthUnit = unit; }
916 
926  const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
927 
937  void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
938 
946  Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
947 
955  void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
956 
957  QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
958 
959  protected:
960 
961  QString mFontFamily;
962  QFontMetrics *mFontMetrics = nullptr;
963  QString mString;
964 
965  double mChrWidth = 0;
966  QPointF mChrOffset;
967  QFont mFont;
968  double mOrigSize;
969 
970  private:
971 
972  QColor mStrokeColor;
973  double mStrokeWidth;
974  QgsUnitTypes::RenderUnit mStrokeWidthUnit;
975  QgsMapUnitScale mStrokeWidthMapUnitScale;
976  Qt::PenJoinStyle mPenJoinStyle;
977 
978  QPen mPen;
979  QBrush mBrush;
980 
981  bool mUseCachedPath = false;
982  QPainterPath mCachedPath;
983 
984  // If font has a zero (or nearly zero) size, we skip rendering altogether..
985  bool mNonZeroFontSize = true;
986 
987  QString characterToRender( QgsSymbolRenderContext &context, QPointF &charOffset, double &charWidth );
988  void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedRotation, QPointF &offset, double &angle ) const;
989  double calculateSize( QgsSymbolRenderContext &context );
990 };
991 
992 // clazy:excludeall=qstring-allocations
993 
994 #endif
995 
996 
#define DEFAULT_SIMPLEMARKER_SIZE
QgsMapUnitScale mapUnitScale() const override
QRectF bounds(QPointF point, QgsSymbolRenderContext &context) override
Returns the approximate bounding box of the marker symbol layer, taking into account any data defined...
double fixedAspectRatio() const
Returns the marker aspect ratio between width and height to be used in rendering, if the value set is...
void setPenJoinStyle(Qt::PenJoinStyle style)
Sets the marker&#39;s stroke join style (e.g., miter, bevel, etc).
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
Sets the stroke width map unit scale.
double defaultAspectRatio() const
Returns the default marker aspect ratio between width and height, 0 if not yet calculated.
virtual QString ogrFeatureStyle(double mmScaleFactor, double mapUnitScaleFactor) const
QColor mStrokeColor
Stroke color.
QgsUnitTypes::RenderUnit outputUnit() const override
Returns the units to use for sizes and widths within the symbol layer.
Abstract base class for all rendered symbols.
Definition: qgssymbol.h:61
QString fontFamily() const
Returns the font family name for the associated font which will be used to render the point...
virtual QgsSymbol * subSymbol()
Returns the symbol&#39;s sub symbol, if present.
void setStrokeWidthUnit(QgsUnitTypes::RenderUnit u)
Sets the unit for the width of the marker&#39;s stroke.
void setStrokeStyle(Qt::PenStyle strokeStyle)
Sets the marker&#39;s stroke style (e.g., solid, dashed, etc)
Simple marker symbol layer, consisting of a rendered shape with solid fill color and an stroke...
Abstract base class for simple marker symbol layers.
Right facing arrow head (unfilled, lines only)
void startRender(QgsSymbolRenderContext &context) override
QgsMapUnitScale mStrokeWidthMapUnitScale
Stroke width map unit scale.
void setStrokeColor(const QColor &color) override
Sets the marker&#39;s stroke color.
void setStrokeColor(const QColor &c) override
Set stroke color.
void setStrokeWidth(double w)
Sets the width of the marker&#39;s stroke.
#define DEFAULT_FONTMARKER_COLOR
QBrush mSelBrush
QBrush to use as fill of selected symbols.
void setStrokeWidth(double width)
Set&#39;s the marker&#39;s stroke width.
QColor strokeColor() const override
Returns the marker&#39;s stroke color.
#define DEFAULT_SIMPLEMARKER_JOINSTYLE
virtual QgsStringMap properties() const =0
Should be reimplemented by subclasses to return a string map that contains the configuration informat...
Qt::PenJoinStyle penJoinStyle() const
Returns the stroke join style.
QMap< QString, QString > QgsStringMap
Definition: qgis.h:597
double ANALYSIS_EXPORT angle(QgsPoint *p1, QgsPoint *p2, QgsPoint *p3, QgsPoint *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
Definition: MathUtils.cpp:786
void renderPoint(QPointF point, QgsSymbolRenderContext &context) override
Renders a marker at the specified point.
QString path() const
Returns the marker SVG path.
#define DEFAULT_FONTMARKER_SIZE
QColor strokeColor() const override
Gets stroke color.
void setPenJoinStyle(Qt::PenJoinStyle style)
Sets the stroke join style.
double strokeWidth() const
Returns the width of the marker&#39;s stroke.
QPainterPath mPath
Painter path representing shape. If mPolygon is empty then the shape is stored in mPath...
Diagonal half square (bottom left half)
virtual bool hasDataDefinedProperties() const
Returns true if the symbol layer (or any of its sub-symbols) contains data defined properties...
virtual void setColor(const QColor &color)
The fill color.
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
QgsUnitTypes::RenderUnit strokeWidthUnit() const
Returns the stroke width unit.
virtual void writeSldMarker(QDomDocument &doc, QDomElement &element, const QgsStringMap &props) const
Writes the symbol layer definition as a SLD XML element.
virtual QRectF bounds(QPointF point, QgsSymbolRenderContext &context)=0
Returns the approximate bounding box of the marker symbol layer, taking into account any data defined...
One third circle (top left third)
void setStrokeWidthUnit(QgsUnitTypes::RenderUnit unit)
Sets the units for the stroke width.
Raster marker symbol layer class.
virtual bool setSubSymbol(QgsSymbol *symbol)
Sets layer&#39;s subsymbol. takes ownership of the passed symbol.
void setStrokeColor(const QColor &color) override
Set stroke color.
double opacity() const
Returns the marker opacity.
void setFixedAspectRatio(double ratio)
Set the marker aspect ratio between width and height to be used in rendering, if the value set is low...
QPen mPen
QPen corresponding to marker&#39;s stroke style.
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
Sets the map scale for the width of the marker&#39;s stroke.
#define DEFAULT_SCALE_METHOD
const QgsMapUnitScale & strokeWidthMapUnitScale() const
Returns the stroke width map unit scale.
virtual void renderPoint(QPointF point, QgsSymbolRenderContext &context)=0
Renders a marker at the specified point.
bool preservedAspectRatio() const
Returns the preserved aspect ratio value, true if fixed aspect ratio has been lower or equal to 0...
const QgsMapUnitScale & strokeWidthMapUnitScale() const
Returns the map scale for the width of the marker&#39;s stroke.
QBrush mBrush
QBrush corresponding to marker&#39;s fill style.
QgsMapUnitScale mStrokeWidthMapUnitScale
#define SIP_FORCE
Definition: qgis_sip.h:131
virtual QgsSymbolLayer * clone() const =0
Shall be reimplemented by subclasses to create a deep copy of the instance.
#define SIP_TRANSFER
Definition: qgis_sip.h:36
virtual QColor color() const
The fill color.
void setFillColor(const QColor &color) override
Set fill color.
QColor fillColor() const override
Gets fill color.
#define DEFAULT_FONTMARKER_ANGLE
void setStrokeWidthUnit(QgsUnitTypes::RenderUnit unit)
Sets the stroke width unit.
#define SIP_FACTORY
Definition: qgis_sip.h:76
Qt::PenJoinStyle penJoinStyle() const
Returns the marker&#39;s stroke join style (e.g., miter, bevel, etc).
ScaleMethod
Scale method.
Definition: qgssymbol.h:94
QgsSimpleMarkerSymbolLayerBase::Shape shape() const
Returns the shape for the rendered marker symbol.
void setOpacity(double opacity)
Set the marker opacity.
QPen mSelPen
QPen to use as stroke of selected symbols.
QString path() const
Returns the marker raster image path.
virtual double estimateMaxBleed(const QgsRenderContext &context) const
Returns the estimated maximum distance which the layer style will bleed outside the drawn shape when ...
Qt::PenStyle strokeStyle() const
Returns the marker&#39;s stroke style (e.g., solid, dashed, etc)
QString character() const
Returns the character(s) used when rendering points.
void startRender(QgsSymbolRenderContext &context) override
void stopRender(QgsSymbolRenderContext &context) override
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.
QgsUnitTypes::RenderUnit strokeWidthUnit() const
Returns the unit for the width of the marker&#39;s stroke.
#define DEFAULT_SIMPLEMARKER_BORDERCOLOR
virtual QSet< QString > usedAttributes(const QgsRenderContext &context) const
Returns the set of attributes referenced by the layer.
Contains information about the context of a rendering operation.
Abstract base class for marker symbol layers.
void setShape(QgsSimpleMarkerSymbolLayerBase::Shape shape)
Sets the rendered marker shape.
QgsUnitTypes::RenderUnit mStrokeWidthUnit
bool preservedAspectRatio() const
Returns the preserved aspect ratio value, true if fixed aspect ratio has been lower or equal to 0...
QImage mCache
Cached image of marker, if using cached version.
Struct for storing maximum and minimum scales for measurements in map units.
void setMapUnitScale(const QgsMapUnitScale &scale) override
#define DEFAULT_SIMPLEMARKER_ANGLE
#define DEFAULT_SIMPLEMARKER_COLOR
Qt::PenJoinStyle mPenJoinStyle
Stroke pen join style.
double strokeWidth() const
Returns the marker&#39;s stroke width.
QColor fillColor() const override
Gets fill color.
QImage mSelCache
Cached image of selected marker, if using cached version.
#define DEFAULT_FONTMARKER_CHR
void setStrokeWidthMapUnitScale(const QgsMapUnitScale &scale)
QgsUnitTypes::RenderUnit strokeWidthUnit() const
Returns the units for the stroke width.
void setFontFamily(const QString &family)
Sets the font family for the font which will be used to render the point.
void setCharacter(QString chr)
Sets the character(s) used when rendering points.
void stopRender(QgsSymbolRenderContext &context) override
void setFillColor(const QColor &color) override
Set fill color.
QColor strokeColor() const override
Gets stroke color.
const QgsMapUnitScale & strokeWidthMapUnitScale() const
virtual bool writeDxf(QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift=QPointF(0.0, 0.0)) const
write as DXF
Resolves relative paths into absolute paths and vice versa.
double fixedAspectRatio() const
Returns the marker aspect ratio between width and height to be used in rendering, if the value set is...
#define DEFAULT_SVGMARKER_SIZE
Filled marker symbol layer, consisting of a shape which is rendered using a QgsFillSymbol.
#define DEFAULT_SVGMARKER_ANGLE
Rotated cross (lines only), "x" shape.
void setOutputUnit(QgsUnitTypes::RenderUnit unit) override
Sets the units to use for sizes and widths within the symbol layer.
QPolygonF mPolygon
Polygon of points in shape. If polygon is empty then shape is using mPath.
#define DEFAULT_FONTMARKER_FONT
RenderUnit
Rendering size units.
Definition: qgsunittypes.h:113
virtual QString layerType() const =0
Returns a string that represents this layer type.