QGIS API Documentation  3.14.0-Pi (9f7028fd23)
qgsshadoweffect.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsshadoweffect.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 QGSSHADOWEFFECT_H
18 #define QGSSHADOWEFFECT_H
19 
20 #include "qgis_core.h"
21 #include "qgspainteffect.h"
22 #include "qgis_sip.h"
23 #include "qgssymbol.h"
24 #include <QPainter>
25 
35 {
36 
37  public:
38 
40 
41  QgsStringMap properties() const override;
42  void readProperties( const QgsStringMap &props ) override;
43 
52  void setBlurLevel( const double level ) { mBlurLevel = level; }
53 
62  double blurLevel() const { return mBlurLevel; }
63 
72  void setBlurUnit( const QgsUnitTypes::RenderUnit unit ) { mBlurUnit = unit; }
73 
82  QgsUnitTypes::RenderUnit blurUnit() const { return mBlurUnit; }
83 
92  void setBlurMapUnitScale( const QgsMapUnitScale &scale ) { mBlurMapUnitScale = scale; }
93 
102  const QgsMapUnitScale &blurMapUnitScale() const { return mBlurMapUnitScale; }
103 
110  void setOffsetAngle( const int angle ) { mOffsetAngle = angle; }
111 
118  int offsetAngle() const { return mOffsetAngle; }
119 
127  void setOffsetDistance( const double distance ) { mOffsetDist = distance; }
128 
136  double offsetDistance() const { return mOffsetDist; }
137 
145  void setOffsetUnit( const QgsUnitTypes::RenderUnit unit ) { mOffsetUnit = unit; }
146 
154  QgsUnitTypes::RenderUnit offsetUnit() const { return mOffsetUnit; }
155 
163  void setOffsetMapUnitScale( const QgsMapUnitScale &scale ) { mOffsetMapUnitScale = scale; }
164 
172  const QgsMapUnitScale &offsetMapUnitScale() const { return mOffsetMapUnitScale; }
173 
179  void setColor( const QColor &color ) { mColor = color; }
180 
186  QColor color() const { return mColor; }
187 
194  void setOpacity( const double opacity ) { mOpacity = opacity; }
195 
202  double opacity() const { return mOpacity; }
203 
210  void setBlendMode( const QPainter::CompositionMode mode ) { mBlendMode = mode; }
211 
218  QPainter::CompositionMode blendMode() const { return mBlendMode; }
219 
220  protected:
221 
222  QRectF boundingRect( const QRectF &rect, const QgsRenderContext &context ) const override;
223  void draw( QgsRenderContext &context ) override;
224 
231  virtual bool exteriorShadow() const = 0;
232 
233  double mBlurLevel = 2.645;
236  int mOffsetAngle = 135;
237  double mOffsetDist = 2.0;
240  double mOpacity = 1.0;
241  QColor mColor;
242  QPainter::CompositionMode mBlendMode = QPainter::CompositionMode_Multiply;
243 
244 };
245 
246 
255 {
256 
257  public:
258 
264  static QgsPaintEffect *create( const QgsStringMap &map ) SIP_FACTORY;
265 
267 
268  QString type() const override;
269  QgsDropShadowEffect *clone() const override SIP_FACTORY;
270 
271  protected:
272 
273  bool exteriorShadow() const override;
274 
275 };
276 
286 {
287 
288  public:
289 
295  static QgsPaintEffect *create( const QgsStringMap &map ) SIP_FACTORY;
296 
298 
299  QString type() const override;
300  QgsInnerShadowEffect *clone() const override SIP_FACTORY;
301 
302  protected:
303 
304  bool exteriorShadow() const override;
305 
306 };
307 
308 #endif // QGSSHADOWEFFECT_H
309 
QgsShadowEffect::setBlurUnit
void setBlurUnit(const QgsUnitTypes::RenderUnit unit)
Sets the units used for the shadow blur level (radius).
Definition: qgsshadoweffect.h:72
QgsUnitTypes::RenderUnit
RenderUnit
Rendering size units.
Definition: qgsunittypes.h:166
QgsInnerShadowEffect
A paint effect which draws an offset and optionally blurred drop shadow within a picture.
Definition: qgsshadoweffect.h:285
QgsShadowEffect::mColor
QColor mColor
Definition: qgsshadoweffect.h:241
QgsPaintEffect::properties
virtual QgsStringMap properties() const =0
Returns the properties describing the paint effect encoded in a string format.
QgsShadowEffect::setColor
void setColor(const QColor &color)
Sets the color for the shadow.
Definition: qgsshadoweffect.h:179
QgsShadowEffect::color
QColor color() const
Returns the color used for the shadow.
Definition: qgsshadoweffect.h:186
QgsRenderContext
Definition: qgsrendercontext.h:57
QgsUnitTypes::RenderMillimeters
@ RenderMillimeters
Millimeters.
Definition: qgsunittypes.h:168
QgsShadowEffect::offsetMapUnitScale
const QgsMapUnitScale & offsetMapUnitScale() const
Returns the map unit scale used for the shadow offset distance.
Definition: qgsshadoweffect.h:172
QgsShadowEffect::offsetDistance
double offsetDistance() const
Returns the distance used for offsetting the shadow.
Definition: qgsshadoweffect.h:136
qgspainteffect.h
SIP_FACTORY
#define SIP_FACTORY
Definition: qgis_sip.h:76
QgsShadowEffect::opacity
double opacity() const
Returns the opacity for the effect.
Definition: qgsshadoweffect.h:202
QgsShadowEffect::setOpacity
void setOpacity(const double opacity)
Sets the opacity for the effect.
Definition: qgsshadoweffect.h:194
QgsShadowEffect::mOffsetMapUnitScale
QgsMapUnitScale mOffsetMapUnitScale
Definition: qgsshadoweffect.h:239
QgsShadowEffect::blurMapUnitScale
const QgsMapUnitScale & blurMapUnitScale() const
Returns the map unit scale used for the shadow blur strength (radius).
Definition: qgsshadoweffect.h:102
QgsDropShadowEffect
A paint effect which draws an offset and optionally blurred drop shadow.
Definition: qgsshadoweffect.h:254
QgsShadowEffect::offsetUnit
QgsUnitTypes::RenderUnit offsetUnit() const
Returns the units used for the shadow offset distance.
Definition: qgsshadoweffect.h:154
QgsShadowEffect::setOffsetUnit
void setOffsetUnit(const QgsUnitTypes::RenderUnit unit)
Sets the units used for the shadow offset distance.
Definition: qgsshadoweffect.h:145
QgsPaintEffect::clone
virtual QgsPaintEffect * clone() const =0
Duplicates an effect by creating a deep copy of the effect.
qgis_sip.h
QgsPaintEffect::readProperties
virtual void readProperties(const QgsStringMap &props)=0
Reads a string map of an effect's properties and restores the effect to the state described by the pr...
QgsPaintEffect::boundingRect
virtual QRectF boundingRect(const QRectF &rect, const QgsRenderContext &context) const
Returns the bounding rect required for drawing the effect.
Definition: qgspainteffect.cpp:203
QgsShadowEffect::exteriorShadow
virtual bool exteriorShadow() const =0
Specifies whether the shadow is drawn outside the picture or within the picture.
QgsMapUnitScale
Struct for storing maximum and minimum scales for measurements in map units.
Definition: qgsmapunitscale.h:37
QgsShadowEffect::blurLevel
double blurLevel() const
Returns the blur level (radius) for the shadow.
Definition: qgsshadoweffect.h:62
QgsShadowEffect::offsetAngle
int offsetAngle() const
Returns the angle used for offsetting the shadow.
Definition: qgsshadoweffect.h:118
SIP_NODEFAULTCTORS
#define SIP_NODEFAULTCTORS
Definition: qgis_sip.h:101
QgsShadowEffect::setBlendMode
void setBlendMode(const QPainter::CompositionMode mode)
Sets the blend mode for the effect.
Definition: qgsshadoweffect.h:210
QgsStringMap
QMap< QString, QString > QgsStringMap
Definition: qgis.h:714
QgsShadowEffect::setBlurLevel
void setBlurLevel(const double level)
Sets blur level (radius) for the shadow.
Definition: qgsshadoweffect.h:52
QgsPaintEffect
Base class for visual effects which can be applied to QPicture drawings.
Definition: qgspainteffect.h:53
QgsShadowEffect::mBlurMapUnitScale
QgsMapUnitScale mBlurMapUnitScale
Definition: qgsshadoweffect.h:235
QgsShadowEffect::blurUnit
QgsUnitTypes::RenderUnit blurUnit() const
Returns the units used for the shadow blur level (radius).
Definition: qgsshadoweffect.h:82
QgsShadowEffect::setOffsetAngle
void setOffsetAngle(const int angle)
Sets the angle for offsetting the shadow.
Definition: qgsshadoweffect.h:110
QgsShadowEffect::blendMode
QPainter::CompositionMode blendMode() const
Returns the blend mode for the effect.
Definition: qgsshadoweffect.h:218
QgsPaintEffect::type
virtual QString type() const =0
Returns the effect type.
MathUtils::angle
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
QgsShadowEffect::setOffsetMapUnitScale
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale used for the shadow offset distance.
Definition: qgsshadoweffect.h:163
qgssymbol.h
QgsShadowEffect::setBlurMapUnitScale
void setBlurMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale used for the shadow blur strength (radius).
Definition: qgsshadoweffect.h:92
QgsShadowEffect
Base class for paint effects which offset, blurred shadows.
Definition: qgsshadoweffect.h:34
QgsShadowEffect::setOffsetDistance
void setOffsetDistance(const double distance)
Sets the distance for offsetting the shadow.
Definition: qgsshadoweffect.h:127
QgsPaintEffect::draw
virtual void draw(QgsRenderContext &context)=0
Handles drawing of the effect's result on to the specified render context.