QGIS API Documentation  3.18.1-Zürich (202f1bf7e5)
qgsmasksymbollayer.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmasksymbollayer.h
3  ---------------------
4  begin : July 2019
5  copyright : (C) 2019 by Hugo Mercier
6  email : hugo dot mercier at oslandia 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 QGSMASKSYMBOLLAYER_H
17 #define QGSMASKSYMBOLLAYER_H
18 
19 #include "qgis_core.h"
20 #include "qgis.h"
21 #include "qgssymbollayer.h"
23 
24 class QgsPaintEffect;
25 
34 {
35  public:
38 
46  static QgsSymbolLayer *create( const QVariantMap &properties = QVariantMap() ) SIP_FACTORY;
47 
48  QgsMaskMarkerSymbolLayer *clone() const override SIP_FACTORY;
49  QgsSymbol *subSymbol() override { return mSymbol.get(); }
50  bool setSubSymbol( QgsSymbol *symbol SIP_TRANSFER ) override;
51  QSet<QString> usedAttributes( const QgsRenderContext &context ) const override;
52  bool hasDataDefinedProperties() const override;
53 
54  QVariantMap properties() const override;
55 
56  QString layerType() const override;
57  void startRender( QgsSymbolRenderContext &context ) override;
58  void stopRender( QgsSymbolRenderContext &context ) override;
59  void renderPoint( QPointF point, QgsSymbolRenderContext &context ) override;
60  QRectF bounds( QPointF point, QgsSymbolRenderContext &context ) override;
61  bool usesMapUnits() const override;
62 
63  virtual void drawPreviewIcon( QgsSymbolRenderContext &context, QSize size ) override;
64 
66  bool enabled() const { return ! mMaskedSymbolLayers.isEmpty(); }
67 
73  QgsSymbolLayerReferenceList masks() const override { return mMaskedSymbolLayers; }
74 
80  void setMasks( QgsSymbolLayerReferenceList maskedLayers ) { mMaskedSymbolLayers = maskedLayers; }
81 
82  private:
83 #ifdef SIP_RUN
85 #endif
86 
88  std::unique_ptr<QgsMarkerSymbol> mSymbol;
89 
91  QgsSymbolLayerReferenceList mMaskedSymbolLayers;
92 
93  std::unique_ptr<QgsPaintEffect> mEffect;
94 };
95 
96 #endif
97 
98 
Abstract base class for marker symbol layers.
void drawPreviewIcon(QgsSymbolRenderContext &context, QSize size) override
virtual QRectF bounds(QPointF point, QgsSymbolRenderContext &context)=0
Returns the approximate bounding box of the marker symbol layer, taking into account any data defined...
virtual void renderPoint(QPointF point, QgsSymbolRenderContext &context)=0
Renders a marker at the specified point.
void stopRender(QgsSymbolRenderContext &context) override
Called after a set of rendering operations has finished on the supplied render context.
void startRender(QgsSymbolRenderContext &context) override
Called before a set of rendering operations commences on the supplied render context.
Special symbol layer that uses its sub symbol as a selective mask.
QgsSymbol * subSymbol() override
Returns the symbol's sub symbol, if present.
bool enabled() const
Whether some masked symbol layers are defined.
QgsSymbolLayerReferenceList masks() const override
Returns a list of references to symbol layers that are masked by the sub symbol's shape.
void setMasks(QgsSymbolLayerReferenceList maskedLayers)
Sets the symbol layers that will be masked by the sub symbol's shape.
Base class for visual effects which can be applied to QPicture drawings.
Contains information about the context of a rendering operation.
virtual QSet< QString > usedAttributes(const QgsRenderContext &context) const
Returns the set of attributes referenced by the layer.
virtual QgsSymbolLayer * clone() const =0
Shall be reimplemented by subclasses to create a deep copy of the instance.
virtual QVariantMap properties() const =0
Should be reimplemented by subclasses to return a string map that contains the configuration informat...
virtual QString layerType() const =0
Returns a string that represents this layer type.
virtual bool usesMapUnits() const
Returns true if the symbol layer has any components which use map unit based sizes.
virtual bool hasDataDefinedProperties() const
Returns true if the symbol layer (or any of its sub-symbols) contains data defined properties.
virtual bool setSubSymbol(QgsSymbol *symbol)
Sets layer's subsymbol. takes ownership of the passed symbol.
Abstract base class for all rendered symbols.
Definition: qgssymbol.h:65
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_FACTORY
Definition: qgis_sip.h:76
QList< QgsSymbolLayerReference > QgsSymbolLayerReferenceList