QGIS API Documentation  3.2.0-Bonn (bc43194)
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 QGSMARKERSYMBOLLAYERV2_H
17 #define QGSMARKERSYMBOLLAYERV2_H
18 
19 #include "qgis_core.h"
20 #include "qgis_sip.h"
21 #include "qgis.h"
22 #include "qgssymbollayer.h"
23 
24 #define DEFAULT_SIMPLEMARKER_NAME "circle"
25 #define DEFAULT_SIMPLEMARKER_COLOR QColor(255,0,0)
26 #define DEFAULT_SIMPLEMARKER_BORDERCOLOR QColor( 35, 35, 35 )
27 #define DEFAULT_SIMPLEMARKER_JOINSTYLE Qt::BevelJoin
28 #define DEFAULT_SIMPLEMARKER_SIZE DEFAULT_POINT_SIZE
29 #define DEFAULT_SIMPLEMARKER_ANGLE 0
30 
31 #include <QPen>
32 #include <QBrush>
33 #include <QPicture>
34 #include <QPolygonF>
35 #include <QFont>
36 
45 {
46  public:
47 
49  enum Shape
50  {
57  Star,
63  Line,
74  };
75 
77  static QList< QgsSimpleMarkerSymbolLayerBase::Shape > availableShapes();
78 
84  static bool shapeIsFilled( QgsSimpleMarkerSymbolLayerBase::Shape shape );
85 
94  double size = DEFAULT_SIMPLEMARKER_SIZE,
97 
102  QgsSimpleMarkerSymbolLayerBase::Shape shape() const { return mShape; }
103 
109  void setShape( QgsSimpleMarkerSymbolLayerBase::Shape shape ) { mShape = shape; }
110 
119  static QgsSimpleMarkerSymbolLayerBase::Shape decodeShape( const QString &name, bool *ok = nullptr );
120 
127  static QString encodeShape( QgsSimpleMarkerSymbolLayerBase::Shape shape );
128 
129  void startRender( QgsSymbolRenderContext &context ) override;
130  void stopRender( QgsSymbolRenderContext &context ) override;
131  void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
132  QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
133 
134  protected:
135 
139  bool prepareMarkerShape( Shape shape );
140 
144  bool prepareMarkerPath( Shape symbol );
145 
152  bool shapeToPolygon( Shape shape, QPolygonF &polygon ) const;
153 
160  double calculateSize( QgsSymbolRenderContext &context, bool &hasDataDefinedSize ) const;
161 
170  void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedRotation, QPointF &offset, double &angle ) const;
171 
173  QPolygonF mPolygon;
174 
176  QPainterPath mPath;
177 
180 
181  private:
182 
191  virtual void draw( QgsSymbolRenderContext &context, QgsSimpleMarkerSymbolLayerBase::Shape shape, const QPolygonF &polygon, const QPainterPath &path ) = 0 SIP_FORCE;
192 };
193 
200 {
201  public:
202 
214  double size = DEFAULT_SIMPLEMARKER_SIZE,
217  const QColor &color = DEFAULT_SIMPLEMARKER_COLOR,
218  const QColor &strokeColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR,
219  Qt::PenJoinStyle penJoinStyle = DEFAULT_SIMPLEMARKER_JOINSTYLE );
220 
221  // static methods
222 
228  static QgsSymbolLayer *create( const QgsStringMap &properties = QgsStringMap() ) SIP_FACTORY;
229 
235  static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
236 
237  // reimplemented from base classes
238 
239  QString layerType() const override;
240  void startRender( QgsSymbolRenderContext &context ) override;
241  void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
242  QgsStringMap properties() const override;
243  QgsSimpleMarkerSymbolLayer *clone() const override SIP_FACTORY;
244  void writeSldMarker( QDomDocument &doc, QDomElement &element, const QgsStringMap &props ) const override;
245  QString ogrFeatureStyle( double mmScaleFactor, double mapUnitScaleFactor ) const override;
246  bool writeDxf( QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, QgsSymbolRenderContext &context, QPointF shift = QPointF( 0.0, 0.0 ) ) const override;
247  void setOutputUnit( QgsUnitTypes::RenderUnit unit ) override;
248  QgsUnitTypes::RenderUnit outputUnit() const override;
249  void setMapUnitScale( const QgsMapUnitScale &scale ) override;
250  QgsMapUnitScale mapUnitScale() const override;
251  QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
252  QColor fillColor() const override { return mColor; }
253  void setFillColor( const QColor &color ) override { mColor = color; }
254  void setColor( const QColor &color ) override;
255  QColor color() const override;
256 
257  // new methods
258 
265  QColor strokeColor() const override { return mStrokeColor; }
266 
274  void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
275 
283  Qt::PenStyle strokeStyle() const { return mStrokeStyle; }
284 
293  void setStrokeStyle( Qt::PenStyle strokeStyle ) { mStrokeStyle = strokeStyle; }
294 
302  Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
303 
312  void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
313 
320  double strokeWidth() const { return mStrokeWidth; }
321 
329  void setStrokeWidth( double w ) { mStrokeWidth = w; }
330 
338  void setStrokeWidthUnit( QgsUnitTypes::RenderUnit u ) { mStrokeWidthUnit = u; }
339 
346  QgsUnitTypes::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
347 
355  void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
356 
363  const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
364 
365  protected:
366 
373  void drawMarker( QPainter *p, QgsSymbolRenderContext &context );
374 
379  bool prepareCache( QgsSymbolRenderContext &context );
380 
382  QColor mStrokeColor;
384  Qt::PenStyle mStrokeStyle = Qt::SolidLine;
386  double mStrokeWidth = 0;
392  Qt::PenJoinStyle mPenJoinStyle;
394  QPen mPen;
396  QBrush mBrush;
397 
399  QImage mCache;
401  QPen mSelPen;
403  QBrush mSelBrush;
405  QImage mSelCache;
406 
411  bool mUsingCache = false;
413  static const int MAXIMUM_CACHE_WIDTH = 3000;
414 
415  private:
416 
417  void draw( QgsSymbolRenderContext &context, QgsSimpleMarkerSymbolLayerBase::Shape shape, const QPolygonF &polygon, const QPainterPath &path ) override SIP_FORCE;
418 };
419 
428 {
429  public:
430 
439  double size = DEFAULT_SIMPLEMARKER_SIZE,
442 
448  static QgsSymbolLayer *create( const QgsStringMap &properties = QgsStringMap() ) SIP_FACTORY;
449 
450  QString layerType() const override;
451  void startRender( QgsSymbolRenderContext &context ) override;
452  void stopRender( QgsSymbolRenderContext &context ) override;
453  QgsStringMap properties() const override;
454  QgsFilledMarkerSymbolLayer *clone() const override SIP_FACTORY;
455  QgsSymbol *subSymbol() override;
456  bool setSubSymbol( QgsSymbol *symbol SIP_TRANSFER ) override;
457  double estimateMaxBleed( const QgsRenderContext &context ) const override;
458  QSet<QString> usedAttributes( const QgsRenderContext &context ) 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 POINT2MM(x) ( (x) * 25.4 / 72 ) // point is 1/72 of inch
642 #define MM2POINT(x) ( (x) * 72 / 25.4 )
643 
644 #define DEFAULT_FONTMARKER_FONT "Dingbats"
645 #define DEFAULT_FONTMARKER_CHR QChar('A')
646 #define DEFAULT_FONTMARKER_SIZE POINT2MM(12)
647 #define DEFAULT_FONTMARKER_COLOR QColor( 35, 35, 35 )
648 #define DEFAULT_FONTMARKER_BORDERCOLOR QColor(Qt::white)
649 #define DEFAULT_FONTMARKER_JOINSTYLE Qt::MiterJoin
650 #define DEFAULT_FONTMARKER_ANGLE 0
651 
657 {
658  public:
659  QgsFontMarkerSymbolLayer( const QString &fontFamily = DEFAULT_FONTMARKER_FONT,
660  QChar chr = DEFAULT_FONTMARKER_CHR,
661  double pointSize = DEFAULT_FONTMARKER_SIZE,
662  const QColor &color = DEFAULT_FONTMARKER_COLOR,
663  double angle = DEFAULT_FONTMARKER_ANGLE );
664 
665  ~QgsFontMarkerSymbolLayer() override;
666 
667  // static stuff
668 
669  static QgsSymbolLayer *create( const QgsStringMap &properties = QgsStringMap() ) SIP_FACTORY;
670  static QgsSymbolLayer *createFromSld( QDomElement &element ) SIP_FACTORY;
671 
672  // implemented from base classes
673 
674  QString layerType() const override;
675 
676  void startRender( QgsSymbolRenderContext &context ) override;
677 
678  void stopRender( QgsSymbolRenderContext &context ) override;
679 
680  void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
681 
682  QgsStringMap properties() const override;
683 
684  QgsFontMarkerSymbolLayer *clone() const override SIP_FACTORY;
685 
686  void writeSldMarker( QDomDocument &doc, QDomElement &element, const QgsStringMap &props ) const override;
687 
688  // new methods
689 
690  QString fontFamily() const { return mFontFamily; }
691  void setFontFamily( const QString &family ) { mFontFamily = family; }
692 
693  QChar character() const { return mChr; }
694  void setCharacter( QChar ch ) { mChr = ch; }
695 
696  QColor strokeColor() const override { return mStrokeColor; }
697  void setStrokeColor( const QColor &color ) override { mStrokeColor = color; }
698 
702  double strokeWidth() const { return mStrokeWidth; }
703 
707  void setStrokeWidth( double width ) { mStrokeWidth = width; }
708 
712  QgsUnitTypes::RenderUnit strokeWidthUnit() const { return mStrokeWidthUnit; }
713 
717  void setStrokeWidthUnit( QgsUnitTypes::RenderUnit unit ) { mStrokeWidthUnit = unit; }
718 
722  const QgsMapUnitScale &strokeWidthMapUnitScale() const { return mStrokeWidthMapUnitScale; }
723 
727  void setStrokeWidthMapUnitScale( const QgsMapUnitScale &scale ) { mStrokeWidthMapUnitScale = scale; }
728 
732  Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
733 
737  void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
738 
739  QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
740 
741  protected:
742 
743  QString mFontFamily;
744  QFontMetrics *mFontMetrics = nullptr;
745  QChar mChr;
746 
747  double mChrWidth = 0;
748  QPointF mChrOffset;
749  QFont mFont;
750  double mOrigSize;
751 
752  private:
753 
754  QColor mStrokeColor;
755  double mStrokeWidth;
756  QgsUnitTypes::RenderUnit mStrokeWidthUnit;
757  QgsMapUnitScale mStrokeWidthMapUnitScale;
758  Qt::PenJoinStyle mPenJoinStyle;
759 
760  QPen mPen;
761  QBrush mBrush;
762 
763  QString characterToRender( QgsSymbolRenderContext &context, QPointF &charOffset, double &charWidth );
764  void calculateOffsetAndRotation( QgsSymbolRenderContext &context, double scaledSize, bool &hasDataDefinedRotation, QPointF &offset, double &angle ) const;
765  double calculateSize( QgsSymbolRenderContext &context );
766 };
767 
768 // clazy:excludeall=qstring-allocations
769 
770 #endif
771 
772 
#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)
Set stroke width map unit scale.
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.
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 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
Gets stroke join style.
QMap< QString, QString > QgsStringMap
Definition: qgis.h:501
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)
Set 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 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
Gets 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.
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.
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
Gets stroke width map unit scale.
virtual void renderPoint(QPointF point, QgsSymbolRenderContext &context)=0
Renders a marker at the specified point.
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:124
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)
Set stroke width unit.
#define SIP_FACTORY
Definition: qgis_sip.h:69
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.
QPen mSelPen
QPen to use as stroke of selected symbols.
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)
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.
virtual void stopRender(QgsSymbolRenderContext &context)=0
void setMapUnitScale(const QgsMapUnitScale &scale) override
#define DEFAULT_SIMPLEMARKER_ANGLE
#define DEFAULT_SIMPLEMARKER_COLOR
Qt::PenJoinStyle mPenJoinStyle
Stroke pen join style.
double strokeWidth() const
Gets 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)
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.
#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:100
virtual QString layerType() const =0
Returns a string that represents this layer type.