QGIS API Documentation  3.8.0-Zanzibar (11aff65)
qgsgloweffect.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsgloweffect.h
3  ---------------
4  begin : December 2014
5  copyright : (C) 2014 Nyall Dawson
6  email : nyall dot dawson at gmail dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 #ifndef QGSGLOWEFFECT_H
18 #define QGSGLOWEFFECT_H
19 
20 #include "qgis_core.h"
21 #include "qgis.h"
22 #include "qgspainteffect.h"
23 #include "qgssymbol.h"
24 #include "qgscolorramp.h"
25 
26 #include <QPainter>
27 
28 
38 class CORE_EXPORT QgsGlowEffect : public QgsPaintEffect
39 {
40 
41  public:
42 
45  {
47  ColorRamp
48  };
49 
50  QgsGlowEffect();
51  QgsGlowEffect( const QgsGlowEffect &other );
52  ~QgsGlowEffect() override;
53 
54  QgsStringMap properties() const override;
55  void readProperties( const QgsStringMap &props ) override;
56 
64  void setSpread( const double spread ) { mSpread = spread; }
65 
73  double spread() const { return mSpread; }
74 
82  void setSpreadUnit( const QgsUnitTypes::RenderUnit unit ) { mSpreadUnit = unit; }
83 
91  QgsUnitTypes::RenderUnit spreadUnit() const { return mSpreadUnit; }
92 
100  void setSpreadMapUnitScale( const QgsMapUnitScale &scale ) { mSpreadMapUnitScale = scale; }
101 
109  const QgsMapUnitScale &spreadMapUnitScale() const { return mSpreadMapUnitScale; }
110 
119  void setBlurLevel( const double level ) { mBlurLevel = level; }
120 
128  double blurLevel() const { return mBlurLevel; }
129 
138  void setBlurUnit( const QgsUnitTypes::RenderUnit unit ) { mBlurUnit = unit; }
139 
148  QgsUnitTypes::RenderUnit blurUnit() const { return mBlurUnit; }
149 
158  void setBlurMapUnitScale( const QgsMapUnitScale &scale ) { mBlurMapUnitScale = scale; }
159 
168  const QgsMapUnitScale &blurMapUnitScale() const { return mBlurMapUnitScale; }
169 
176  void setOpacity( const double opacity ) { mOpacity = opacity; }
177 
184  double opacity() const { return mOpacity; }
185 
194  void setColor( const QColor &color ) { mColor = color; }
195 
204  QColor color() const { return mColor; }
205 
213  void setRamp( QgsColorRamp *ramp SIP_TRANSFER );
214 
222  QgsColorRamp *ramp() const { return mRamp; }
223 
230  void setBlendMode( const QPainter::CompositionMode mode ) { mBlendMode = mode; }
231 
238  QPainter::CompositionMode blendMode() const { return mBlendMode; }
239 
249  void setColorType( GlowColorType colorType ) { mColorType = colorType; }
250 
259  GlowColorType colorType() const { return mColorType; }
260 
261  QgsGlowEffect &operator=( const QgsGlowEffect &rhs );
262 
263  protected:
264 
265  QRectF boundingRect( const QRectF &rect, const QgsRenderContext &context ) const override;
266  void draw( QgsRenderContext &context ) override;
267 
274  virtual bool shadeExterior() const = 0;
275 
276  double mSpread = 2.0;
279  QgsColorRamp *mRamp = nullptr;
280  double mBlurLevel = 2.645;
283  double mOpacity = 0.5;
284  QColor mColor;
285  QPainter::CompositionMode mBlendMode = QPainter::CompositionMode_SourceOver;
286  GlowColorType mColorType = SingleColor;
287 
288 };
289 
290 
299 class CORE_EXPORT QgsOuterGlowEffect : public QgsGlowEffect
300 {
301 
302  public:
303 
309  static QgsPaintEffect *create( const QgsStringMap &map ) SIP_FACTORY;
310 
312 
313  QString type() const override { return QStringLiteral( "outerGlow" ); }
314  QgsOuterGlowEffect *clone() const override SIP_FACTORY;
315 
316  protected:
317 
318  bool shadeExterior() const override { return true; }
319 
320 };
321 
322 
331 class CORE_EXPORT QgsInnerGlowEffect : public QgsGlowEffect
332 {
333 
334  public:
335 
341  static QgsPaintEffect *create( const QgsStringMap &map ) SIP_FACTORY;
342 
344 
345  QString type() const override { return QStringLiteral( "innerGlow" ); }
346  QgsInnerGlowEffect *clone() const override SIP_FACTORY;
347 
348  protected:
349 
350  bool shadeExterior() const override { return false; }
351 
352 };
353 
354 #endif // QGSGLOWEFFECT_H
355 
virtual QgsStringMap properties() const =0
Returns the properties describing the paint effect encoded in a string format.
double opacity() const
Returns the opacity for the effect.
const QgsMapUnitScale & blurMapUnitScale() const
Returns the map unit scale used for the glow blur strength (radius).
bool shadeExterior() const override
Specifies whether the glow is drawn outside the picture or within the picture.
Abstract base class for color ramps.
Definition: qgscolorramp.h:31
Base class for visual effects which can be applied to QPicture drawings.
void setBlurUnit(const QgsUnitTypes::RenderUnit unit)
Sets the units used for the glow blur level (radius).
QMap< QString, QString > QgsStringMap
Definition: qgis.h:587
void setBlendMode(const QPainter::CompositionMode mode)
Sets the blend mode for the effect.
Base class for paint effect which draw a glow inside or outside a picture.
Definition: qgsgloweffect.h:38
virtual QgsPaintEffect * clone() const =0
Duplicates an effect by creating a deep copy of the effect.
void setSpreadMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale used for the spread distance.
QString type() const override
Returns the effect type.
QgsUnitTypes::RenderUnit spreadUnit() const
Returns the units used for the glow spread distance.
Definition: qgsgloweffect.h:91
void setSpreadUnit(const QgsUnitTypes::RenderUnit unit)
Sets the units used for the glow spread distance.
Definition: qgsgloweffect.h:82
void setColorType(GlowColorType colorType)
Sets the color mode to use for the glow.
const QgsMapUnitScale & spreadMapUnitScale() const
Returns the map unit scale used for the spread distance.
#define SIP_TRANSFER
Definition: qgis_sip.h:36
void setBlurLevel(const double level)
Sets blur level (radius) for the glow.
QString type() const override
Returns the effect type.
#define SIP_FACTORY
Definition: qgis_sip.h:69
GlowColorType
Color sources for the glow.
Definition: qgsgloweffect.h:44
double blurLevel() const
Returns the blur level (radius) for the glow.
void setSpread(const double spread)
Sets the spread distance for drawing the glow effect.
Definition: qgsgloweffect.h:64
GlowColorType colorType() const
Returns the color mode used for the glow.
A paint effect which draws a glow outside of a picture.
virtual void readProperties(const QgsStringMap &props)=0
Reads a string map of an effect&#39;s properties and restores the effect to the state described by the pr...
void setOpacity(const double opacity)
Sets the opacity for the effect.
Use a single color and fade the color to totally transparent.
Definition: qgsgloweffect.h:46
Contains information about the context of a rendering operation.
virtual QRectF boundingRect(const QRectF &rect, const QgsRenderContext &context) const
Returns the bounding rect required for drawing the effect.
double spread() const
Returns the spread distance used for drawing the glow effect.
Definition: qgsgloweffect.h:73
QPainter::CompositionMode blendMode() const
Returns the blend mode for the effect.
Struct for storing maximum and minimum scales for measurements in map units.
QgsMapUnitScale mSpreadMapUnitScale
QgsMapUnitScale mBlurMapUnitScale
QgsColorRamp * ramp() const
Returns the color ramp used for the glow.
QgsUnitTypes::RenderUnit blurUnit() const
Returns the units used for the glow blur level (radius).
virtual void draw(QgsRenderContext &context)=0
Handles drawing of the effect&#39;s result on to the specified render context.
A paint effect which draws a glow within a picture.
void setColor(const QColor &color)
Sets the color for the glow.
void setBlurMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale used for the glow blur strength (radius).
RenderUnit
Rendering size units.
Definition: qgsunittypes.h:111
bool shadeExterior() const override
Specifies whether the glow is drawn outside the picture or within the picture.
QColor color() const
Returns the color for the glow.